指出下列指令存在什么冲突?请给后消除冲突的方法及消除冲突后的指令代码? (1)DIV.D F0, F2, F4 (2)ADD.D F6, F0, F8 (3)S.D F6, 0(R1) (4)SUB.D F8, F10, F14 (5)MUL.D F6, F10, F8
ADD和SUB存在反相关,会引起WAR读后写相关 ADD和MUL存在输出相关,会引起WAW写后写相关
Tomasulo算法(托马苏洛算法)可以通过使用寄存器重命名来消除。
DIV.D F0, F2, F4
ADD.D T2, F0, F8 ; 滞后 S.D T2, 0(R1) ; 滞后 SUB.D T1, F10, F14 ; 超前 MUL.D F6, F10, T1 ; 超前 Cache性能分析:
不命中率和平均访问时间都不如 CPU 时间这个指标好:
CPU时间?(CPU执行周期数?存储器停顿周期数)?时钟周期时间 存储器停顿的时钟周期数?访存次数?不命中率?不命中开销
CPU时间?(IC?CPI?访存次数?不命中率?不命中开销)?时钟周期时间 CPU时间?IC(CPI?访存次数?不命中率?不命中开销)?时钟周期时间 IC例7.1:假设Cache不命中开销为50个时钟时期,当不考虑存储器停
顿时,所有的指令的执行时间都是2.0个时钟周期,访问Cache的不命中率为2%,平均每条指令访存1.33次。试分析Cache对性能的影响。
解:直接用公式计算
CPU时间有Cache ?IC?(CPI?每条指令的平均访存次数?不命中率?不命中开销)?时钟周期时间?IC?(2.0?1.33?2%?50)?时钟周期时间?IC?3.33?时钟周期时间例7.2考虑两种不同组织结构的Cache;直接映像Cache和两路组相连Cache。假设:
1. 理想Cache(命中率为100%)情况下CPI为2.0,时钟周期为2ns,平均,平均每条指令访存1.3次
2. 两种Cache容量均为64KB,块大小都是32字节。
3. 在组相连Cache中,由于多路选择器的存在而使CPU的时钟周期增加到原来的1.10倍,这是因为对Cache的访问总是处于关键路径上,对CPU的时钟周期有直接的影响。 4. 这两种结构的不命中开销都是70ns。
5. 命中时间为1个时钟周期(2ns),64kb直接映像cache的不命中率为1.4%。相同容量的两路组相连cache的不命中率为1.0%。试问 它们对CPU的性能有什么影响?先求平均访存时间,然后再计算CPU性能。
对于平均访存时间: =2.98(ns)
平均访存时间2路=命中时间+不命中率x不命中开销=2.0+(0.010x70)
=2.90(ns)
两路组相连的Cache的平均访存时间比较低。 CPU性能为
CPU时间=ICX(CPIx时钟周期时间+每条指令的平均访存次数x不命中率x不命中开销x时钟周期时间)
用70ns代替“不命中开销x时钟周期时间”,并用CPI=2,时钟周期时间=2,每条指令的平均访存时间=1.3带入的 CPU时间1路=ICX[2.0x2+(1.3x0.014x70)]=5.17xIC CPU时间2路=ICX[2.0x2x1.10+(1.3x0.010x70)]=5.31xIC 相对性能比为:
CPU时间2路5.31xIC5.31???1.01
CPU时间1路5.27xIC5.27
和平均访问时间的比较结果相反,直接映像Cache的平均性能稍好一些,这是因为在两路组相连的情况下,虽然不命中次数减少了,但所有指令的时钟周期时间都增加了10%。由于CPU是我们进行评价的标准。而且直接映像Cache更简单,所以本例中直接映像Cache是更好的选择。
7.6组相连Cache的不命中率比相同容量直接映像的不命中率低,由此能否得出结论,采用组相连一定能带来性能上的提高?为什么? 答:不一定。因为组相连命中率的提高是以增加命中时间为代价的,组相连需要增加多路选择开关。
5.10 假设对指令Cache的访问占全部访问的75%;而对数据Cache的
访问占全部访问的25%。Cache的命中时间为1个时钟周期,不命中开销为50 个时钟周期,在混合Cache中一次load或store操作访问Cache的命中时间都要增加一个时钟周期,32KB的指令Cache的不命中率为0.39%,32KB的数据Cache的不命中率为4.82%,64KB的混合Cache的不命中率为1.35%。又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。试问指令Cache和数据Cache容量均为32KB的分离Cache和容量为64KB的混合Cache相比,哪种Cache的不命中率更低?两种情况下平均访存时间各是多少? 解:(1)根据题意,约75%的访存为取指令。 因此, 分离Cache的总体不命中率为: 75%×0.39%+25%×4.82%=1.49%
容量为64KB的混合Cache的失效率略低一些,只有1.35%。 (2)平均访存时间公式可以分为指令访问和数据访问两部分: 平均访存时间=指令所占的百分比×(读命中时间+读不命中率×不命中开销)+数据所占的百分比×(数据命中时间+数据不命中率×不命中开销) 所以,两种结构的平均访存时间分别为:
分离Cache的平均访存时间=75%×(1+0.39%×50)+25%×(1+4.82%×50)=1.745 混合Cache的平均访存时间=
75%×(1+1.35%×50)+25%×(1+1+1.35%×50)=1.925
因此,尽管分离Cache的实际不命中率比混合Cache的高,但其平均访存时间反而较低。分离Cache提供了两个端口,消除了结构相关。
5.11 给定以下的假设,试计算直接映象Cache和两路组相联Cache的平均访问时间以及CPU的性能。由计算结果能得出什么结论? (1) 理想Cache情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.2次;
(2) 两者Cache容量均为64KB,块大小都是32字节;
(3) 组相联Cache中的多路选择器使CPU的时钟周期增加了10%; (4) 这两种Cache的不命中开销都是80ns; (5) 命中时间为1个时钟周期;
(6) 64KB直接映象Cache的不命中率为1.4%,64KB两路组相联Cache的失效率为1.0%。
解: 平均访问时间=命中时间+不命中率×不命中开销 平均访问时间1-路=2.0+1.4% *80=3.12ns 平均访问时间2-路=2.0*(1+10%)+1.0% *80=3.0ns 两路组相联的平均访问时间比较低
CPU时间=ICX(CPIx时钟周期时间+每条指令的平均访存次数x不命中率x不命中开销x时钟周期时间)
用80ns代替“不命中开销x时钟周期时间”,并用CPI=2,时钟周期时间=2,每条指令的平均访存时间=1.3带入的 CPU 时间1路=IC(2.0*2+1.2*0.014*80)=5.344IC CPU 时间2路=IC(2.2*2+1.2*0.01*80)=5.36IC 相对性能比:
CPU时间2路5.31xIC5.36???1.003
CPU时间1路5.27xIC5.344