题目
若机器 M1.和 M2 具有相同的指令集,其时钟频率分别为 1GHz 和 1.5GHz。在指令集中有五种不同类型的指令 A~E。下表给出了在 M1 和 M2 上每类指令的平均时钟周期数 CPI。机器ABCDEM112234M222456请回答下列问题:⏺(1)M1 和 M2 的峰值 MIPS 各是多少?(2)假定某程序 P 的指令序列中,五类指令具有完全相同的指令条数,则程序 P 在 M1 和 M2 上运行时,哪台机器更快?快多少?在 M1 和 M2 上执行程序 P 时的平均时钟周期数 CPI 各是多少?
若机器 M
1.和 M2 具有相同的指令集,其时钟频率分别为 1GHz 和 1.5GHz。在指令集中有五种不同类型的指令 A~E。下表给出了在 M1 和 M2 上每类指令的平均时钟周期数 CPI。机器ABCDEM112234M222456请回答下列问题:⏺(1)M1 和 M2 的峰值 MIPS 各是多少?(2)假定某程序 P 的指令序列中,五类指令具有完全相同的指令条数,则程序 P 在 M1 和 M2 上运行时,哪台机器更快?快多少?在 M1 和 M2 上执行程序 P 时的平均时钟周期数 CPI 各是多少?
1.和 M2 具有相同的指令集,其时钟频率分别为 1GHz 和 1.5GHz。在指令集中有五种不同类型的指令 A~E。下表给出了在 M1 和 M2 上每类指令的平均时钟周期数 CPI。机器ABCDEM112234M222456请回答下列问题:⏺(1)M1 和 M2 的峰值 MIPS 各是多少?(2)假定某程序 P 的指令序列中,五类指令具有完全相同的指令条数,则程序 P 在 M1 和 M2 上运行时,哪台机器更快?快多少?在 M1 和 M2 上执行程序 P 时的平均时钟周期数 CPI 各是多少?
题目解答
答案
参考答案:
(1)M1 上可以选择一段都是 A 类指令组成的程序,其峰值 MIPS 为 1000MIPS。
M2 上可以选择一段 A 和 B 类指令组成的程序,其峰值 MIPS 为 1500/2=750MIPS。
(2)5 类指令具有完全相同的指令条数,所以各占 20%。
在 M1 和 M2 上执行程序 P 时的平均时钟周期数 CPI 分别为: M1:20%×(1+2+2+3+4)= 0.2×12 = 2.4
M2:20%×(2+2+4+5+6)= 0.2×19 = 3.8
假设程序 P 的指令条数为 N,则在 M1 和 M2 上的执行时间分别为: M1:2.4× N×1/1G = 2.4N (ns)
M2:3.8×N×1/1.5G = 2.53 N (ns)
M1 执行 P 的速度更快,每条指令平均快 0.13ns,也即 M1 比 M2 快 0.13/2.53×100%≈5%。
(思考:如果说程序 P 在 M1 上执行比 M2 上快 (3.8–2.4)/3.8×100%= 36.8%,那么,这个结论显然是错误的。请问错在什么地方?)
解析
步骤 1:计算峰值 MIPS
峰值 MIPS 是指在最佳情况下,机器每秒可以执行的百万条指令数。对于机器 M1 和 M2,峰值 MIPS 可以通过选择具有最小 CPI 的指令来计算。对于 M1,选择 A 类指令,其 CPI 为 1,因此峰值 MIPS 为 1GHz。对于 M2,选择 A 和 B 类指令,其 CPI 为 2,因此峰值 MIPS 为 1.5GHz/2 = 0.75GHz。
步骤 2:计算平均 CPI
平均 CPI 是指在执行程序 P 时,每条指令平均需要的时钟周期数。由于五类指令具有完全相同的指令条数,因此每类指令占 20%。对于 M1,平均 CPI 为 20%×(1+2+2+3+4) = 2.4。对于 M2,平均 CPI 为 20%×(2+2+4+5+6) = 3.8。
步骤 3:计算执行时间
执行时间是指程序 P 在 M1 和 M2 上运行时所需的时间。假设程序 P 的指令条数为 N,则在 M1 上的执行时间为 2.4×N×1/1G = 2.4N (ns),在 M2 上的执行时间为 3.8×N×1/1.5G = 2.53N (ns)。因此,M1 执行 P 的速度更快,每条指令平均快 0.13ns,也即 M1 比 M2 快 0.13/2.53×100%≈5%。
峰值 MIPS 是指在最佳情况下,机器每秒可以执行的百万条指令数。对于机器 M1 和 M2,峰值 MIPS 可以通过选择具有最小 CPI 的指令来计算。对于 M1,选择 A 类指令,其 CPI 为 1,因此峰值 MIPS 为 1GHz。对于 M2,选择 A 和 B 类指令,其 CPI 为 2,因此峰值 MIPS 为 1.5GHz/2 = 0.75GHz。
步骤 2:计算平均 CPI
平均 CPI 是指在执行程序 P 时,每条指令平均需要的时钟周期数。由于五类指令具有完全相同的指令条数,因此每类指令占 20%。对于 M1,平均 CPI 为 20%×(1+2+2+3+4) = 2.4。对于 M2,平均 CPI 为 20%×(2+2+4+5+6) = 3.8。
步骤 3:计算执行时间
执行时间是指程序 P 在 M1 和 M2 上运行时所需的时间。假设程序 P 的指令条数为 N,则在 M1 上的执行时间为 2.4×N×1/1G = 2.4N (ns),在 M2 上的执行时间为 3.8×N×1/1.5G = 2.53N (ns)。因此,M1 执行 P 的速度更快,每条指令平均快 0.13ns,也即 M1 比 M2 快 0.13/2.53×100%≈5%。