所以我被告知在这里问这个而不是StackExchage:
如果我有一个程序P,它在30秒内在2GHz机器M上运行,并通过替换所有'提升到电源4'来优化。有3个乘以x乘以的指令。这个优化的程序将是P'。乘法的CPI为2,功率的CPI为12.如果优化了10 ^ 9个这样的操作,总执行时间的百分比是多少?
这是我到目前为止所推断的内容。 对于P,我们有:
time (30s)
CPI: 12
Frequency (2GHz)
对于P',我们有:
CPI (6) [2*3]
Frequency (2GHz)
所以我需要弄清楚如何计算P'为了比较时间。但我不知道如何实现这一目标。有人可以帮帮我吗?
答案 0 :(得分:0)
程序P,在30秒内在2GHz机器M上运行,并通过用3乘以x乘以3的指令替换所有“上升到4”的实例进行优化。这个优化的程序将是P'。乘法的CPI为2,功率的CPI为12.如果有10 ^ 9个这样的操作被优化,
根据这些信息,我们可以计算执行所有POWER4(“上升到电源4”)指令所需的时间,我们有这些指令的总数(所有POWER4都被替换,计数是10 ^ 9或1 G)。每个POWER4指令需要12个时钟周期(CPI =每条指令的时钟),因此所有POWER4都以1G * 12 = 12G周期执行。
2GHz机器每秒有2G周期,执行时间为30秒。总P程序执行是2G * 30 = 60 G循环(60 * 10 ^ 9)。我们可以得出结论,P程序有一些其他指令。我们不知道有什么指示,他们有多少次执行,也没有关于他们的平均CPI的信息。但我们知道执行其他指令所需的时间是60 G - 12 G = 48 G(程序运行总时间减去POWER4运行时间 - 对于简单处理器来说是真的)。有一些X执行指令,Y均值为CPI,因此X * Y = 48 G.
因此,为程序P执行的总周期为
Freq * seconds = POWER4_count * POWER4_CPI + OTHER_count * OTHER_mean_CPI
2G * 30 = 1G * 12 + X * Y
P的总运行时间:
30s =(1G * 12 + X * Y)/ 2GHz
总执行时间的百分比是多少?
用3倍多的MUL指令替换1G POWER4操作(乘以)后,我们有3G MUL操作,它们所需的周期现在是CPI *计数,其中MUL CPI是2:2 * 3G = 6G周期。 P'的X * Y部分没有变化,我们可以解决这个问题。
P'时间秒数=(MUL_count * MUL_CPI + OTHER_count * OTHER_mean_CPI)/频率
P'时间=(3G * 2 + X * Y)/ 2GHz
改进不是那么大,因为P中的POWER4指令只占用了运行时间的一部分:12G / 60G;并且优化将12G转换为6G,而不更改剩余的48 G循环部分。通过将部分时间减半,我们得到的时间不到一半。