通过题目来讲一讲计算机系统概述相关知识 3 | 计算机组成与系统结构专题

1,013 阅读2分钟

这是我参与更文挑战的第25天,活动详情查看: 更文挑战

题目1

假设某机器 M 的时钟频率为 4GHz,用户程序 P 在 M 上的指令条数为 8x10^9,其 CPI为 1.25,则 P 在 M 上的执行时间是多少?若在机器 M 上从程序 P 开始启动到执行结束所需的时间是 4 秒,则 P 占用的 CPU 时间的百分比是多少?

题目1 解答

CPI = 所需时钟周期数 / 指令条数 CPU执行时间 = 所需时钟周期数 / 时钟频率 P 在 M 上的执行时间 = CPI * 指令条数 / 时钟频率 = 1.25 * 8*10^9 / 4 * 10^9 =2.5s

从启动 P 执行开始到执行结束的总时间为 4 秒,其中 2.5 秒是 P 在 CPU 上真正 的执行时间,其他事件可能执行操作系统程序或其他用户程序。 所占的百分比为:2.5/4 = 62.5%

题目2

假定某编译器对某段高级语言程序编译生成两种不同的指令序列 S1 和 S2,在时钟频率 为 500MHz 的机器 M 上运行,目标指令序列中用到的指令类型有 A、B、C 和 D 四类。 四类指令在 M 上的 CPI 和两个指令序列所用的各类指令条数如下表所示:

image.png 请问:S1 和 S2 各有多少条指令?CPI 各为多少?所含的时钟周期数各为多少?执行 时间各为多少?

题目2 解答

S1 和 S2 的指令条数分别为:10 和 8

S1 和 S2 的 CPI 分别为:

S1:1x2/10+2x2/10+3x2/10+4x4/10=28/10=2.8

S2:1x4/8+2x1/8+3x2/8+4x1/8=16/8=2

所含时钟周期 = CPI * 指令条数

S1 和 S2 所含的时钟周期数分别为:

所以S1:28;S2:16

CPU执行时间 = 所含时钟周期数 * 时间周期

S1:28x1/500M = 56ns;

S2:16x1/500M = 32ns

题目3

假定机器 M 的时钟频率为 1.2GHz,某程序 P 在机器 M 上的执行时间为 12 秒钟。对 P优化时,将其所有的乘 4 指令都换成了一条左移 2 位的指令,得到优化后的程序 P’。已知在 M 上乘法指令的 CPI 为 5,左移指令的 CPI 为 2,P 的执行时间是 P’执行时间的 1.2倍,则 P 中有多少条乘法指令被替换成了左移指令?

题目3 解答

P’执行时间 = P执行时间 / 1.2 = 10s

CPU执行时间 = 所含时钟周期 * 时钟周期

CPI = 所含时钟周期 / 指令数

CPU执行时间 = 指令数 * CPI / 时钟频率

(12-10)s = n * (5-2) / 1.2G

n = 2 * 1.2G / 3 = 0.8G = 800M