计算机系统结构教程课后答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.7

某台主频为400MHz 的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:

指令类型 指令执行数量 平均时钟周期数 整数 45000 1 数据传送 75000 2 浮点 8000 4 分支 1500 2

求该计算机的有效CPI 、MIPS 和程序执行时间。 解:

1(/)n

i i i CPI CPI IC IC ==⨯∑

(1)CPI =(45000×1+75000×2+8000×4+1500×2) / 129500=1.776 (2)MIPS 速率=f/ CPI =400/1.776 =225.225MIPS (3)程序执行时间= (45000×1+75000×2+8000×4+1 500×2)/400=575s

1.9 将计算机系统中某一功能的处理速度加快10倍,但该功能的处理时间仅为整个系统运行时间的40%,则采用此增强功能方法后,能使整个系统的性能提高多少?

解:由题可知: 可改进比例Fe=40% = 0.4 部件加速比Se = 10

根据()011 1.5625

(10.4)0.4/101n n T S Fe T Fe Se ====-+-+ 1.10 计算机系统中有三个部件可以改进,这三个部件的部件加速比为: 部件加速比1=30; 部件加速比2=20; 部件加速比3=10 (1) 如果部件1和部件2的可改进比例均为30%,那么当部件3的可改进比例为多少时,系统加速比才可以达到10?

(2) 如果三个部件的可改进比例分别为30%、30%和20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少? 解:(1)在多个部件可改进情况下,Amdahl 定理的扩展:

()011231123123n n

T S Fe Fe Fe T Fe Fe Fe Se Se Se ==

---++

+ 已知S1=30,S2=20,S3=10,Sn =10,F1=0.3,F2=0.3,得: 得F3=0.36,即部件3的可改进比例为36%。

(2)设系统改进前的执行时间为T ,则3个部件改进前的执行时间为:(0.3+0.3+0.2)T = 0.8T ,不可改进部分的执行时间为()1123Fe Fe Fe ---=0.2T 。

已知3个部件改进后的加速比分别为S1=30,S2=20,S3=10,因此3个部件改进后的执行时间为:

改进后整个系统的执行时间为:Tn =()123

1123123

Fe Fe Fe Fe Fe Fe Se Se Se ---+++

= 0.045T+0.2T = 0.245T

那么系统中不可改进部分的执行时间在总执行时间中占的比例是: 0.2/0.245=81.6%

1.11假设浮点数指令FP 指令的比例为30%,其中浮点数平方根FPSQR 占全部指令的比例为4%,FP 操作的CPI 为5,FPSQR 操作的CPI 为20,其他指令的平均CPI 为1.25。 解:

1(/)n

i i i CPI CPI IC IC ==⨯∑

改进前: CPI = 5 × 30% + 1.25 × (1 - 30%) = 2.375

设除FPSQR 外其余指令的平均CPI 为X

则 2.375 = 20 × 4% + (1 - 4%)X ,解出X = 1.640625

方案1: CPI1 = 3 × 4% + 1.640625 × (1 - 4%) = 1.695 方案2: CPI2 = 3 × 30% + 1.25 × (1 - 30%) = 1.775 2.11 解:

SHR

STP

CIL

STO

JOM

JMP

SUB

L=

9

1i i

i

Pl =

∑=0.43x1+0.22x2+0.13x3+0.07x5+0.06x5+0.05x5+0.02x6+0.01x7+0.01x7 =2.42

2.12.

解:

二地址指令的结构是(4位操作码OP),(6位地址码A1),(6位地址码A2)。

一地址指令的结构是(10位操作码OP),(6位地址码A)。

二地址指令,最多共16条二地址指令。

每少一条二地址指令,则多26条一地址指令,

所以一地址指令最多有(16-A)*26条

3.5在一台单流水线多操作部件的处理机上执行下面的程序,每条指令的取指令、指令译码需要一个时钟周期,MOVE、ADD和MUL操作分别需要2个、3个和4个时钟周期,每个操作都在第一个时钟周期从通用寄存器中读操作数,在最后一个时钟周期把运算结果写到通用寄存器中。

k:MOVE R1,R0 ;R1←(R0)

k+1:MUL R0,R2,R1 ;R0←(R2)×(R1)

k+2:ADD R0,R2,R3 ;R0←(R2)+(R3) 画出指令执行过程的流水线时空图,并计算完成这3条指令共需要多少个时钟周期?

解:

在程序实际执行过程中,二种数据相关会引起流水线停顿。一是“先写后读”相关,k指令对R1的写在程序执行开始后的第四个时钟;k+1指令对R1的读对指令本身是第三个时钟,但k+1指令比k指令晚一个时钟进入流水线,则在程序执行开始后的第四个时钟要读R1。不能在同一时钟周期内读写同一寄存器,

因此k+1指令应推迟一个时钟进入流水线,产生了流水线停顿。二是“写—写”相关,k+1指令对R0的写对指令本身是第六个时钟,而要求该指令进入流水线应在程序执行开始后的第三个时钟,所以对R0的写是在程序执行开始后的第八个时钟。k+2指令对R0的写对指令本身是第五个时钟,而k+2指令比k+1指令晚一个时钟进入流水线,则在程序执行开始后的第四个时钟,所以对R0的写是在程序执行开始后的第八个时钟。不能在同一时钟周期内写写同一寄存器,因此k+2指令应推迟一个时钟进入流水线,产生了流水线停顿。另外,可分析“先读后写”相关不会产生流水线的停顿。

该指令流水线由六个功能段取指、译码、取数、运一、运二和存数等组成,则程序指令执行过程的流水线时空图如下图所示。若3条指令顺序流动,共需要9

存数 运二 运一 取数 译码 取指 0 1 2 3 4 5 6 7 8 9

3.6有一指令流水线如下所示

出 50ns 50ns 100ns 200ns

(1) 求连续输入10条指令,该流水线的实际吞吐率和效率;

(2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶

颈”。对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?

解:(1)

i max

k i 1

T t (n 1)t (5050100200)9200

2200(ns)

k

==∆+-∆=++++⨯=∑

1n

1TP (ns )T 220

k

-==

相关文档
最新文档