【问题标题】:Calculating the total clock cycles per instruction in a CPU计算 CPU 中每条指令的总时钟周期
【发布时间】:2020-04-09 02:43:24
【问题描述】:

我在阅读一些大学资料,发现要计算 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条指令,还是我对公式的理解有误?

【问题讨论】:

    标签: mips cpu pipeline


    【解决方案1】:

    公式正确,但您没有正确阅读表格。

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

    第一行表示您有一条使用 3 CPI 的指令,并且该指令的频率为 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%。
    • @TheFreddy1404 为什么你在其他两条指令中各增加 5%?为什么不例如:40%-30%-30%,有什么规则可以遵循吗?
    • @aniani2020 这里有两种(通用)优化方法,要么丢弃指令,要么将慢指令转换为例如两条快指令。两者都会更改百分比。上面我只是举了一个可能的例子。确切的值取决于数学规则。
    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2020-06-26
    • 2010-10-16
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多