计算机系统结构_作业02

  • 格式:doc
  • 大小:90.50 KB
  • 文档页数:6

计算机系统结构第二次作业
1. 现有如下C 语言源代码:
for (i=0;i<=100,i++)
{
A[i]=B[i]+C;
}
其中,A 和B 是两个32 位整数的数组,C 和i 均是32 位整数。

假设所有数据的值及其地址
均保存在存储器中,A 和B 的起始地址分别是0 和5000。

C 和i 的地址分别是1500 和2000。

在循环的两次迭代之间不将任何数据保存在寄存器中。

(1)请写出该C 语言源程序的DLX 实现代码。

ADDI R1,R0,#1
SW 2000(R0),R1
loop :
LW R1, 2000(R0)
MULT R2,R1,#4
ADDI R3,R2,#5000
LW R4,0(R3)
LW R5,1500(R0)
ADD R6,R4,R5
LW R1, 2000(R0)
MULT R2,R1,#4
ADDI R7, R2,#0
SW 0(R7),R6
LW R1, 2000(R0)
ADDI R1,R1,#1
SW 2000(R0),R1
LW R1, 2000(R0)
ADDI R8, R1,#-101
BNEZ R8, loop
(2)该程序段共执行了多少条指令。

2+(16*101)=1618
(3)程序对存储器中的数据访问了多少次?
1+8*101=809
(4)DLX 代码的大小是多少?
4*18=72
2. 设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所需的时间分别为t、t 和2t,分别求出下列各种情况下,连续执行N 条指令所需的时间。

(1)顺序执行方式;
(t+t+2t)*N =4Nt
(2)只有取指令和执行指令重叠执行;
4t+(N-1)*3t=3Nt+t
(3)取指令、分析指令和执行指令重叠执行;
4*t+(N-1)*2t=2Nt+2t
3.在改进的DLX 流水线上运行如下代码序列:
LOOP: LW R1, 0(R2)
ADDI R1, R1, #1
SW 0(R2), R1
ADDI R2, R2, #4
SUB R4, R3, R2
BNEZ R4, LOOP
其中,R3 的初始值是R2+396。

假设:在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器“定向”。

问:
(1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时空图。

假设采用排空流水线的策略处理分支指令,且所有的存储器访问都可以命中Cache,那么执行上述循环需要多少个时钟周期?
(2)假设该DLX 流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。

假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可以命中Cache,那么执行上述循环需要多少个时钟周期?
(3)假设该DLX 流水线有正常的定向路径,请对该循环中的指令进行调度。

注意可以重新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的
条数。

请画出该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟
周期数?
1 2 3 4 5 6 7 8 9 10 11 12
1
3
14 15 16 17 18 19
I F I
D
EX
ME
M
W
B
I
F
ID stall
sta
ll
EX
ME
M
W
B
IF stall
sta
ll
ID stall
sta
ll
EX
ME
M
WB
IF stall
sta
ll
ID EX
ME
M
W
B
IF ID stall
sta
ll
E
X
MEM
W
B
IF stall
sta
ll
ID stall
sta
ll
EX
ME
M
W
B
IF idle
idl
e
idl
e
idle
idl
e
IF ID
18+(99-1)*(18-1)=1684
(2)假设该DLX 流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。

假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可以命中Cache,那么执行上述循环需要多少个时钟周期?
11+(99-1)*(11-3)=795
(3)假设该DLX 流水线有正常的定向路径,请对该循环中的指令进行调度。

注意可以重新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的条数。

请画出该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟周期数?
LOOP :LW R1,0(R2)
1 2 3 4 5 6 7 8 9 10 11 12 13 IF ID EX MEM WB
IF ID stall EX MEM WB
IF stall ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF idle idle idle idle
IF ID EX MEM
DAADIU R2,R2,#4
DAADIU R1,R1,#1
SDUB R4,R3,R2
BNEZ R4,LOOP
sw R1,-4(R2)
1 2 3 4 5 6 7 8 9 10 11
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM W 10+(99-1)*(10-4)=598。