了解CPI和缓存访问

时间:2013-11-08 17:49:03

标签: caching computer-science computer-architecture cpu-cycles

这些是之前的作业问题,但我将它们用作考试复习。我正在改变问题中的实际数字。我只是想确保我掌握这些概念。我已经有了答案,只需要澄清我理解它们。这不是作业,而是审查工作。

无论如何,这主要关注CPI的各个方面

第一个问题:

  

在1GHz处理器上运行的应用程序具有30%的加载存储指令,30%的算术运算和40%的分支指令。各个CPI对于加载存储为3,对于算术运算为4,对于分支指令为5。确定给定处理器上该程序的总体CPI。

我的回答:整体消费物价指数是次级消费物价指数的总和乘以它们出现的百分比,即3 * 0.3 + 4 * 0.3 + 5 * 0.4 = 0.9 + 1.2 + 2 = 4.1

  

现在,处理器增强到1.6GHz运行。分支指令的CPI保持不变,但加载存储和算术指令CPI都增加到6个周期。正在使用一个新的编译器,它消除了30%的分支指令和10%的加载存储。确定新的总体CPI以及应用程序更快或更慢的因素。

我的回答:新的CPI再一次只是其各部分的总和。但是,部件已经改变,必须考虑到这一点。分支指令将下降30%(0.4 * 0.7 = 0.28),负载存储将下降10%(0.3 * 0.9 = 0.27);算术指令现在将考虑其余的指令(1-0.28-0.27 = 0.45)或45%。这些将乘以新的次级CPI得到:6 * 0.45 + 6 * 0.27 + 5 * 0.28 = 5.72。

现在,处理器增强速度提高了60%,CPI提高了(5.72-4.1)/4.1 = 39.5%。因此,应用程序的运行速度大约为0.6 * 0.395 = 23.7%。

现在,第二个问题:

  

具有加载/存储架构的新处理器的理想CPI为1.25。该处理器的典型应用包括50%算术和逻辑,25%条件分支和25%加载/存储。通过单独的数据和指令高速缓存访​​问存储器,具有5%的指令高速缓存未命中率和10%的数据未命中率。任何缓存未命中的惩罚是100个周期,命中不会产生任何惩罚。

     

有效CPI是多少?

我的回答:有效CPI是理想的CPI,加上由于缓存访问导致的每条指令的停顿周期。理想的CPI是1.25。每指令停止的周期为(0.1 * 100 * 0.25)+(0.05 * 100 * 1)= 7.5。 0.1 * 100 * 0.25是数据未命中率乘以停滞的周期罚分,它也乘以加载/存储百分比(这是数据访问发生的位置); 0.05 * 100 * 1是指令未命中率,即指令高速缓存未命中率乘以停止的周期惩罚,指令访问发生在100%的程序中,因此将其乘以1.在此之后,有效CPI为1.25 + 7.5 = 8.75。

  

典型应用的每1000条指令的缺失是什么?典型应用的平均存储器访问时间(以时钟周期为单位)是什么?

我的回答:每1000条指令的未命中数等于由于高速缓存访​​问而导致的每条指令停止的周期(如上所述:7.5),除以1000,等于7.5 / 1000 = 0.0075

在讨论平均内存访问时间(AMAT)时,我们首先要讨论这里的访问总数,即数据访问的百分比(25%)加上指令访问的百分比(100%),或125 (%)= 1.25。数据访问是.25 / 1.25,指令访问是1 / 1.25。

AMAT等于数据访问的百分比(.25 / 1.25)乘以命中时间(1)和数据未命中率乘以未命中罚分(0.1 * 100)或(.25 / 1.25)之和)(1 + 0.1 * 100)并将其加到指令访问的百分比(1 / 1.25)乘以命中时间(1)和指令未命中率乘以未命中罚分(0.05 * 100)之和,或(1 / 1.25)(1 + 0.05 * 100)。综上所述,AMAT为(.25 / 1.25)(1 + 0.1 * 100)+(1 / 1.25)(1 + 0.05 * 100)= 7.

再一次,抱歉的文字墙。如果我错了,请尽量帮助我理解 我错了。我试图展示我的所有工作,以使其尽可能容易理解。提前谢谢。

1 个答案:

答案 0 :(得分:0)

问题的lat部分出现错误。当他们问:

What is the misses per 1000 instruction for typical applications and what is the average memory
access time (in clock cycles) for typical applications?

这里需要的是每1000个指令将获得的未命中数,在这种情况下,指令高速缓存未命中为1000 * 1 * 0.05,数据高速缓存未命中为1000 * 0.25 * 0.1。这等于每1000条指令75次未命中。

要计算AMAT,请使用公式AMAT =命中时间+(未命中率*未命中罚分)

在这种情况下,您的未命中率为75/1000,您的未命中罚分为100个周期。命中时间为1.25个周期(理想的CPI!)。

希望这对您的考试有所帮助,并且一切顺利!