据我了解,要计算CPI,是指指令类型的百分比乘以周期数,对吗?机器的类型是否包含此计算的任何内容?
我遇到一个问题,问我是否应该建议进行更改。
机器1:在2.5 GHz机器上,40%R-5个周期,30%lw-6个周期,15%sw-6个周期,15%beq 3-周期
机器2:在2.7 GHz机器上,40%R-5个周期,30%lw-6个周期,15%sw-6个周期,15%beq 4-周期
根据我的计算,机器1的CPI为5.15,而机器2的CPI为5.3。是否可以忽略计算机的GHz并说更改不是一个好主意,还是必须将计算机纳入考虑范围?
答案 0 :(得分:1)
我认为重点是评估设计变更,使一条指令占用更多时钟,但允许您提高时钟频率。 (即倾向于奔腾4这样的Speed-demon设计,而不是像苹果公司的A7 / A8 ARM内核那样让人脑筋急转弯。http://www.lighterra.com/papers/modernmicroprocessors/)
因此,您需要每秒计算指令以查看哪个指令可以在相同的实时时间内完成更多的工作。即(clock/sec) / (clocks/insn) = insn/sec
,取消了clocks
从单位。
您的CPI计算看起来不错;我没有检查它,但是是根据指令组合的周期加权平均值。
这些数字显然超级简化了;任何值得在2.5GHz上构建的CPU都将具有某种分支预测,因此分支的成本不仅是3或4指令泡。而且平均每条指令占用约5个周期是可悲的。 (大多数流水线设计的目标是每个时钟至少1条指令。)
高速缓存和超标量CPU还会导致指令之间的复杂交互,这取决于它们是否依赖于较早的结果。
但是,这有点类似于如果考虑将L1d缓存的负载使用延迟增加1个周期(例如)的情况,如果这使它脱离了关键路径并提高了时钟频率,则可能会执行此操作。反之亦然,以降低频率为代价,增加延迟或减少某些事物上的流水线级数。
答案 1 :(得分:0)
每个指令的周期数是一个周期数。就平均水平而言,ghz无关紧要。但是从我们的数字来看,我们可以看到一条指令更多的时钟,但是处理器的速度却不同。
因此,虽然在更快的处理器上花费更多的时间来完成相同的工作,但处理器的速度是否可以弥补这一点,因此看来这显然是关于处理器速度是否占用额外时钟的问题?
5.15个周期/指令/ 2.5(giga)个周期/秒,周期会抵消您的获得 2.06秒/(千兆)指令或(纳米)秒/指令
5.30 / 2.7 = 1.96296(nano)秒/指令
更快的程序花费的时间略少,因此它将更快地运行程序。
查看数学的另一种方法。
在较慢的机器上100个时钟周期,其中15%是beq。因此,这100个时钟中有15个是5个beq指令。相同的5个beq指令在较快的机器上占用20个时钟,因此较快的机器上相同的指令总共需要105个时钟。
2.5 GHz时100个周期,而2.7 GHz时105个周期
我们想要时间
hz是周期/秒,我们希望秒数位于顶部 所以我们想要
周期/(周期/秒)以取消周期并在顶部放置秒数
1 / 2.5 = 0.400(400皮秒) 1 / 2.7 = 0.370
0.400 * 100 = 40.00时间单位 0.370 * 105 = 38.85单位时间
因此,尽管花费了5个以上的周期,但处理器的速度差异仍足以补偿。
2.7 / 2.5 = 1.08
105/100 = 1.05
因此2.5 * 1.05 = 2.625,因此处理器2.625ghz或更快的速度将使该程序运行得更快。
现在更换计算机的规则是什么,是否将较少的时间定义为更换计算机的原因? Better的解释是什么?一个速度越快消耗的功率多少会花费更少的时间,但是功耗可能不是线性的,因此尽管花费的时间也可能会更多。我认为这个问题没有那么详细,这意味着它含糊不清,这本身就是一个写得不好的问题,因此,它取决于将课本或讲义定义为更改其他处理器的阈值。
免责声明,如果您在家庭作业/测试中错过了这个问题,请不要怪我。
在这样的学术活动之外,现实世界充满了流水线处理器(并非所有人,但大多数人都在为程序编写程序),并且基本上您不能以某种方式在每个指令类型的时钟周期上输入数字您可以进行此计算,因为有一系列因素。令您痛苦的是,这是很好的练习,但在现实世界中的处理程序中尝试进行特定的练习既困难又危险。在您辛勤工作的过程中,您可能会错误地测量某些东西,并得出错误的结论,从而提出错误的建议,这是危险的。同时,事实上,更快的ghz确实会提高一定比例的执行力,但另一个比例会受到影响,并且存在净收益或亏损。或者更快或更慢的新处理器设计可能具有比旧处理器性能更好的功能,但并非所有功能都会更好,需要权衡取舍,然后我们才能理解“更好”的含义。