考虑条件分支指令的以下两种不同设计方法。 ①CPUA:通过比较指令设置条件码 然后测试条件码
问题详情
考虑条件分支指令的以下两种不同设计方法。 ①CPUA:通过比较指令设置条件码,然后测试条件码进行分支。 ②CPUB:在分支指令中包括比较过程。 在这两种CPU中,条件分支指令都占用2个时钟周期,而所有其他指令占用1个时钟周期。 对于CPUA,执行的指令中分支指令占20%;而每条分支指令之前都需要有比较指令,因此比较指令也占20%。由于CPUA在分支时不需要比较,因此CPUB的时钟周期时间是CPUA的1.25倍。问:哪一个CPU更快?如果CPUB的时钟周期时间只是CPUA的1.1倍,哪一个CPU更快呢?
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:×
解:因不考虑所有系统问题,所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%,剩下的指令占用1个时钟周期。所以CPIA=0.2×2+0.80×1=1.2则CPUA性能为总CPU时间A=ICA×1.2×时钟周期A根据假设,有时钟周期B=1.25×时钟周期A在CPUB中没有独立的比较指令,所以CPUB的程序量为CPUA的80%,分支指令的比例为20%/80%=25%这些分支指令占用2个时钟周期,而剩下的75%的指令占用1个时钟周期,因此CPIB=0.25×2+0.75×1=1.25因为CPUB不执行比较,故ICB=0.8×ICA因此CPUB性能为总CPU时间B=ICB×CPIB×时钟周期B=0.8×ICA×1.25×(1.25×时钟周期A)=1.25×ICA×时钟周期A在这些假设之下,尽管CPUB执行指令条数较少,CPUA因为有着更短的时钟周期,所以比CPUB快。如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则时钟周期B=1.10×时钟周期ACPVB的性能为总CPU时间B=ICB×CPIB×时钟周期B=0.8×ICA×1.25×(1.10×时钟周期A)=1.10×ICA×时钟周期A因此CPUB由于执行更少指令条数,比CPUA运行更快。