计算题

某台计算机只有 Load/ Store 指令能对存储器进行读/ 写操作, 其他指令只对寄存器进行操作。 根据程序跟踪试验结果, 已知每条指令所占的比例及 CPI 数, 见表 1-2。
表 1-2 每条指令所占的比例及 CPI 数

指令类型 指令所占比例 指令混合比
算术和逻辑 43%  1
Load 指令  21%  2
Store 指令 12%  2
转移指令 24%  2

求上述情况的平均 CPI。
假设程序由 M 条指令组成。 算术逻辑运算中 25%的指令的两个操作数中的一个已在寄存器中, 另一个必须在算术逻辑指令执行前用 Load 指令从存储器中取到寄存器中。 因此有人建议增加另一种算术逻辑指令, 其特点是一个操作数取自寄存器, 另一个操作数取自存储器, 即寄存器一存储器类型, 假设这种指令的 CPI 等于 2。 同时, 转移指令的 CPI 变为 3。 求新指令系统的平均 CPI。

【正确答案】

(1) 本处理机共包含 4 种指令, 那么 CPI 就是这 4 种指令的数学期望。 即:
CPI=1*43%+2*21%+2*12%+2*24%=1.57
(2) 设原指令总数为 M, 由于新增的算术操作有取操作数的功能, 替代了 Load 的功能, 所以新指令总数为:
M+(0.25*0.43M) -(0.25*0.43M) -(0.25+0.43M) =0.8925M
增加另一种算术逻辑指令后, 每种指令所占的比例及 CPI 数, 见下表:
表 1-3

指令类型 指令所占比例 CPI
算术逻辑指令 (0.43M-0.43M*0.25) / 0.8925M=0.3613 1
算术逻辑指令(新) (0.43M*0.25) / 0.8925M=0.1204  2
Load 指令 (0.21M-0.43M*0.25) / 0.8925M=0.1148 2
Store 指令  0.12M/ 0.8925M=0.1348 2
转移指令 0.24M/ 0.8925M=0.2689  3

所以: CPI′ =1*0.3613+2*0.1204+2* 0.1148+2*0.1348+3*0.2689=1.9076

【答案解析】