首页 > 试题广场 >

回答下面问题

[问答题]

 某程序中有有如下循环代码段 “for(i=0;i<N;i++)sum+=A[i];”。假设编译时变量sum和i分别分配在寄存器R1和R2中。常量N在寄存器R6中,数组A的首地址在寄存器R3中,程序段P起始地址为0804 8100H,对应的汇编代码和机器代码如题44表所示

编号

地址

机器代码

汇编代码

注释

1

08048100H

00022080H

Loop: all  R4;R2,2

(R2)<<2   R4

2

08048104H

00083020H

Add  R4;R4,R3

(R4)+( R3)  R4

3

08048108H

8C850000H

Load    R4;0(R4)

((R4)+0)( R3)  R5

4

0804810CH

00250820H

Add  R1;R1,R5

(R1)+( R5)  R1

5

08048110CH

2042000H

Addi  R2;R2,1

(R2)+2   R4

6

08048114CH

1446FFFAH

Bne   R2;R2,loop

if(R2)!= (R6)go to loop

执行上述代码的计算机M采用32位定长指令字,其中分支指令Bne采用如下格式,


Op为操作码:Rs和Rd为寄存器编号:OFFSET为偏移量,用补码表示。请回答下列问题,并说明理由。

(1)M的存储器编址单位是什么?

(2)已知sll指令实现左移功能,数组A中每个元素占多少位?

(3)题44表中bne指令的OFFSET字段的值是多少?已知bne指令采用相对寻址方式,当前PC内容为bne指令地址,通过分析题44表中指令地址和bne指令内容,推断出bne指令的转移目标地址计算公式。

(4)若M采用如下“按序发射、按序完成”的5级指令流水线:IF(取指)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起3个时钟周期阻塞,则P中那些指令的执行会由于数据相关而发生流水线阻塞?哪条指令的执行会发生控制冒险?为什么指令1的执行不会因为与指令5的数据相关而发生阻塞?

(1) 字节;
解析:由题可知每条指令的长度为32 位,占 4 个字节,而从表中我们得知相邻的两条指令的地址相差 4 个单位,所以存储器编址单位是字节。

(2) 32 位;
解析:R2 里面存放的是数组元素的下标 i,将 R2 中的内容左移两位,相当于乘以 4,然后加上 R3 当中存放的数组的首地址,得到元素所在的地址,然后每循环一次, R2 中内容自增 1。因为计算机按字节编址,每计算一次移动 4 个位置,故每个数组元素占 4 个字节,即32 位。

(3) -6;指令 bne 所在地址为 0804 8114H,转移目标地址为 0804 8100H,因为08048100H=08048100H+4+( -6)×4;所以,指令 bne 的转移目标地址计算公式为( PC)+4+OFFSET×4。

解析:由指令bne 的机器代码 1446FFFAH 加上 OFFSET 的字段位数很容易知道OFFSET=FFFAH,值为-6(这里的偏移量 6 是以 4 个字节为单位); 指令 bne 所在地址为 0804 8114H,执行完 bne 指令之后, PC 的内容加 1(这里的 1 是 4 个字节的单位), goto loop 转移目标地址为 0804 8100H,于是 0804 8100H=0804 8114H+4+(-6)*4;所以,指令 bne 的转移目标地址计算公式为:( PC) +4+OFFSET×4。

(4) 第 2、 3、 4、 6 条指令会因为数据相关而发生阻塞;( 3 分)第 6 条指令会发生控制冒险;( 1 分)当前循环的第 5 条指令虽然与下次循环的第 1 条指令存在数据相关,但题干告诉我们第 6 条指令会引起 3 个时钟周期的阻塞,这样就延迟了下一条指令对 R2 的访问,因而消除了该数据相关。

解析:1. 从 44 表中的注释我们可以看到第 2 条指令有赖于第 1 条指令的结果( R4),第 3 条指令有赖于第 2 条指令的结果( R4) ,第 4 条指令有赖于第 3 条指令的结果( R5),第6 条指令有赖于第 5 条指令的结果( R2);

2. 控制冒险也称为控制相关,见《组原笔记》P180,控制相关冲突是由转移指令引起的,当执行转移指令时,依据转移条件的产生结果,可能顺序执行下一条指令;也可能转移到新的目标地址取指令,从而使流水线发送断流。

3. 程序的指令流水示意图如下:

从图中我们可以看出正因为有了这三个时钟周期的阻塞,延迟了下一条指令对R2 的访问, 所以不会出现阻塞。

发表于 2016-11-19 17:29:10 回复(0)