1.7
某台主频为400MHz的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:
指令类型 指令执行数量 平均时钟周期数 整数 45000 1 数据传送 75000 2 浮点 8000 4 分支 1500 2
求该计算机的有效CPI、MIPS和程序执行时间。 解:
CPI??(CPIi?ICi/IC)
i?1n(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
T11Sn?0???1.5625FeTn(1?0.4)?0.4/10根据 ?1?Fe??Se 1.10 计算机系统中有三个部件可以改进,这三个部件的部件加速比为: 部件加速比1=30; 部件加速比2=20; 部件加速比3=10 (1) 如果部件1和部件2的可改进比例均为30%,那么当部件3的可改进比例为多少时,系统加速比才可以达到10?
(2) 如果三个部件的可改进比例分别为30%、30%和20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少? 解:(1)在多个部件可改进情况下,Amdahl定理的扩展:
T1Sn?0?Fe1Fe2Fe3Tn ??1?Fe1?Fe2?Fe3???Se1Se2Se3已知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,不可改进部分的执行时间为?1?Fe1?Fe2?Fe3?=0.2T。
已知3个部件改进后的加速比分别为S1=30,S2=20,S3=10,因此3个部件改进后的执行时间为:
Fe1Fe2Fe3 改进后整个系统的执行时间为:Tn =?1?Fe1?Fe2?Fe3?? ??Se1Se2Se3= 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。 解:
CPI??(CPIi?ICi/IC)
i?1n改进前: 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 解: 1 0 1 1 0.57 0.35 1 0 0.22 1 0 0.09 1 0 0.04 1 0.13 0.02 1 0 1 0 0 0 0.01 SHR
0.01 STP
0.02 CIL
0.05 STO
0.06 JOM
0.07 JMP
0.13 SUB
0.22 CLA 043 ADD 指令 ADD
CLA SUB JMP JOM STO CIL SHR STP 9频度pi 操作码使用哈夫曼编码 0.43 0.22 0.13 0.07 0.06 0.05 0.02 0.01 0.01 0 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 操作码长度li 1 2 3 5 5 5 6 7 7 L=?Plii=0.43x1+0.22x2+0.13x3+0.07x5+0.06x5+0.05x5+0.02x6+0.01x7+0.01x7
i?1 =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个时钟周期。 空间 存数 K存数 K+1存数 K+2存数 运二 K+1运二 运一 K+1运一 K+2运一 取数 K取数 K+1取数 K+2取数 译码 K译码 K+1译码 K+2译码 取指 K取指 K+1取指 K+2取指 时间 0 1 2 3 4 5 6 7 8 9
3.6有一指令流水线如下所示
入 1 2 3 4 出 50ns 50ns 100ns 200ns
(1) 求连续输入10条指令,该流水线的实际吞吐率和效率;
(2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶
颈”。对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?
解:(1)
Tk???ti?(n?1)?tmaxi?1k?(50?50?100?200)?9?200
?2200(ns)TP?nTk?1220(ns?1)