Mips 计算CPU中每个指令的总时钟周期

Mips 计算CPU中每个指令的总时钟周期,mips,cpu,pipeline,Mips,Cpu,Pipeline,我在读一些大学资料,发现要计算CPU的CPI(每条指令的时钟周期),我们使用以下公式: CPI=总执行周期/执行指令计数 这很清楚,也很有意义,但在本例中,它表示已执行n指令: instruction type frequency relative CPI 1 50% 3 2 20% 4 3 30%

我在读一些大学资料,发现要计算CPU的CPI(每条指令的时钟周期),我们使用以下公式:

CPI=总执行周期/执行指令计数

这很清楚,也很有意义,但在本例中,它表示已执行
n
指令:

instruction type   frequency     relative CPI
1                      50%            3
2                      20%            4
3                      30%            5

为什么总CPI等于
3*0.5+4*0.2+5*0.3=3.8
而不是
3.8/3=1.26
,因为按照上面的公式,总共执行了3条指令,或者我对公式的理解是错误的?

公式是正确的,但你没有正确阅读表格

instruction type   frequency     relative CPI
1                      50%            3
2                      20%            4
3                      30%            5
第一行表示您有一条使用3CPI的指令,该指令的频率为50%,这基本上意味着您程序中的每一条指令都是该指令

指令2需要执行4个CPI,但在程序中仅发生20%。 指令3需要5个CPI,但发生率为30%

因此,计算
0.5*3+0.2*4+0.3+5=3.8
基本上是平均CPI。


假设您有以下程序:

INS_1   3 CPI
INS_3   5 CPI
INS_1   3 CPI
INS_3   5 CPI
INS_2   4 CPI
INS_1   3 CPI
INS_3   5 CPI
INS_2   4 CPI
INS_1   3 CPI
INS_1   3 CPI 
--------------
       38 CPI / 10 (Instructions) = 3.8

如果经过一些优化后,类型1指令的频率现在仅为
40%
,那么另一个
10%
指令会去哪里呢?这意味着您可以删除10%的指令。在我的回答中的示例中,这意味着您能够删除5个INS_1中的1个,这将得到总共9条指令。通过重新调整指令,在不改变程序功能的情况下,这10%不再需要了。@aniani2020如果您进行优化,您将获得40%-25%-35%。这是基本的百分比计算,因为您的所有指令始终为100%。@OFFREDY1404为什么要在其他两个指令中分别添加5%?为什么不举个例子:40%-30%-30%,有什么规则可以遵循吗?@aniani2020这里有两种(通用)优化方法,要么扔掉指令,要么将一条慢指令转换为两条快指令。两者都会改变百分比。上面我只是举了一个可能的例子。精确的数值符合数学规则。