CPU的功能和结构
运算器
对数据进行加工
算术逻辑单元ALU、暂存寄存器、通用寄存器、累加寄存器ACC、程序状态字寄存器PSW、移位器、计数器
控制器
取指令、分析指令、执行指令、中断处理
程序计数器PC,指令寄存器IR
指令译码器、时序系统、微操作信号发生器
存储器地址寄存器MAR,存储器数据寄存器MDR
用户可见的寄存器:通用寄存器组、程序状态字寄存器PSW、程序计数器PC
用户不可见的寄存器:MDR、MAR、IR、暂存寄存器
CPU
CPU=运算器+控制器+控制单元+寄存器+中断
指令控制:取指令、分析指令、执行指令
操作控制:管理并产生从内存取出的每条指令的操作信号
时间控制:对各种操作信号进行时间上的控制
数据加工:对数据进行算术和逻辑运算
中断处理:对计算机运行中出现的异常情况和特殊请求进行处理
指令执行过程
指令周期
指令周期:CPU从主存中每取出并执行一条指令所需的全部时间
指令周期由若干机器周期来表示,机器周期又叫CPU周期
每个指令周期内机器周期数可以不等,每个机器周期内的时钟周期数也可以不等。
取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点
标志触发器:FE、IND、EX、INT
数据流
取值周期的数据流
间址周期的数据流
执行周期的数据流
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。 不同指令的执行周期操作不同,因此没有统一的数据流向。
中断周期的数据流
执行方案
- 单指令周期:对所有指令都选用相同的执行时间来完成 。 指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。 对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。
- 多指令周期:对不同类型的指令选用不同的执行步骤来完成。 指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程 。 需要更复杂的硬件设计。
- 流水线方案:每隔一段时间启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中 。 指令之间并行执行。
数据通路
数据通路:数据在功能部件之间传送的路径
- CPU内部单总线结构
- CPU内部多总线结构
- 专用数据通路结构
由控制单元产生控制信号建立数据通路
单总线结构
单总线结构中ALU需要配合暂存器使用
专用数据通路
下图是一个简化了的CPU与主存连接结构示意图(图中省略了所有的多路选择器)。其中有一个累加寄存器(ACC)、一个状态数据寄存器和其他4个寄存器:主存地址寄存器(MAR)、主存数据寄存器(MDR)、程序寄存器(PC)和指令寄存器(IR),各部件及其之间的连线表示数据通路,箭头表示信息传递方向。 要求:
(1)请写出图中a、b、c、d 4个寄存器的名称。
(2)简述图中取指令的数据通路。
(3)简述数据在运算器和主存之间进行存/取访问的数据通路。
(4)简述完成指令LDA X的数据通路(X为主存地址,LDA的功能为(X)→ACC)。
(5)简述完成指令ADD Y的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)→ACC)。
(6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)→Z)
解析:
(1) d能自动“+1”,是PC
PC内容是地址,送MAR,故c是MAR
b与微操作信号发生器相连,是IR
与主存相连的寄存器是MAR和MDR,c是MAR, 则a是MDR
(2)(PC)→MAR;M(MAR)→MDR;(MDR)→IR
(3)存/取的数据放到ACC中,设数据地址已放入MAR
取:M(MAR)→MDR;(MDR)→ALU→ACC
存:(ACC)→MDR→M(MAR)
(4)X→MAR;M(MAR)→MDR;(MDR)→ALU→ACC
(5)Y→MAR;M(MAR)→MDR;(MDR)→ALU,(ACC)→ALU;ALU→ACC
(6)Z→MAR;(ACC)→MDR;(MDR)→M(MAR)
硬布线控制器
根据指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些"微命令"
微程序控制器
微程序控制器:利用软件方法来设计硬件的一种技术
一种机器指令对应一个微程序,一个微程序对应多条微指令,一个微指令包含多个微命令(微操作)
CPU出厂前会将所有机器指令的"微程序"存入"控制存储器CM"中
微指令的组成:操作控制位+顺序控制位;顺序控制位是指明下一条微指令的地址
控制存储器CM在控制单元CU(微程序控制器)中,控制单元CU在CPU中
顺序逻辑输入的寻址标志用于判断是否要跳过间址周期;根据CLK中断信号判断是否进入中断周期
取值周期微程序、间址周期微程序、中断周期微程序的操作对每条指令都一样,所以可以共用
微指令的设计
微指令的格式
水平型微指令的编码方式
下一条微指令的形成方式
在断定方式中微指令=操作控制位+顺序控制位(判别测试位+下地址位)
判别测试位用来在出现分支选择微地址
“判别测试”有n位标志,可实现微程序2的n次方路转移,涉及微地址寄存器的n位(修改的位数)
微地址寄存器就是μPC(CMAR),存储微地址形成部件送来的微指令的地址,为在CM中读取微指令做准备
微程序控制器的设计
硬布线与微程序的比较
微程序控制器小结
指令流水线
指令流水线的定义
流水线的表示方法
时空图横坐标:各个任务在流水线中所经过的时间;纵坐标:流水线的每个流水段
流水线的性能指标
影响流水线的因素
流水线的多发技术
超标量流水线技术
超流水技术
超长指令字
小结
常用指令分析
运算类指令(ADD)
取数指令(LOAD)
存数指令(STORE)
条件转移指令(beq,bne)
无条件转移指令(JMP)
流水线阻塞相关例题
习题
1.下图所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器, ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有小圈表示有控制信号,例中yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。
(1)指令“ADD R2,R0”,完成(R0)+(R2)→R0的功能操作,画出其指令周 期流程图,假设该指令的地址已放入PC中。并列出相应的微操作控制信号序列
(2)指令“SUB R1,R3”,完成(R3)-(R1)→R3的操作,画出其指令期流程图 ,并列出相应的微操作控制信号序列
解析:
用方框图语言表示指令周期
- 方框:代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。
- 菱形:表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。
(1)“ADD R2,R0”指令是一条加法指令,参与运算的两个数放在寄存器R2和R0中,指令周期流程图包括取指令阶段和执行指令阶段两部分(为简单起见 ,省去了“→ ” 号左边各寄存器代码上应加的括号)。 根据给定的数据通路图,“ADD R2,R0”指令的详细指令周期流程图如图(a)所示,图的右边部分标注了每一个机器周期中用到的微操作控制信号
(2)“SUB R2,R3”指令是一条减法指令,其指令周期流程图如图(b)所 示。与ADD指令不同的是:在执行指令阶段,微操作控制信号序列有所不同。
PC→AR:将指令地址从程序计数器中送入地址寄存器
M→DR:将指令从主存中读出读出到数据寄存器
DR→IR:将指令从数据寄存器送入指令寄存器
◇:分析指令
2.某计算机字长16位,采用16位定长指令字结构,部分数据通路结构如图所示。图中所有控制信号为1时表示有效、为0时表示无效。例如控制信号MDRinE为1表示允许数据从DB打入MDR,MDRin为1表示允许数据从内总线打入MDR。假设MAR的输出一直处于使能状态。
加法指令“ADD (R1),R0”的功能为
(R0)+((R1))→(R1),将R0中的数据与R1的内容所指主存单元的数据相加,并将结果送入R1的内容所指主存单元中保存。
下表给出了上述指令取值和译码阶段每个节拍(时钟周期) 的功能和有效控制信号,请按表中描述方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。
解析:
注:上图中WR应该为WB
注:上图中PCout应为R1out
3.相对于微程序控制器,硬布线控制器的特点是()
A.指令执行速度慢,指令功能的修改和扩展容易
B.指令执行速度慢,指令功能的修改和扩展难
C.指令执行速度快,指令功能的修改和扩展容易
D.指令执行速度快,指令功能的修改和扩展难
解析:
硬布线控制器是用纯硬件产生控制信号,指令执行速度快;硬件难扩展,指令功能的修改和扩展难
所以答案为D
4.取指周期结束后,程序计数器(PC)中存放的是 。()
A.当前指令地址
B.程序中的指令数量
C.下一条指令地址
D.程序分支时跳转的目标地址
解析:
取指周期结束后,程序计数器PC+“1”,存放的是下一条指令的地址
所以答案为C
5.下列有关指令和微指令之间的关系的描述中,正确的是()
A. 一条指令的功能通过执行一条微指令来实现
B. 一条指令的功能通过执行一个微程序来实现
C. 一条微指令的功能通过执行一条指令来实现
D. 一条微指令的功能通过执行一个微程序来实现
解析:
一条指令对应一个微程序,一个微程序由多个微指令组成,一个微指令由多个微操作组成
所以答案为B
6.(统考2017-18)下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是 ()
A. MM在CPU外,CS在CPU内
B. MM按地址访问,CS按内容访问
C. MM存储指令和数据,CS存储微指令
D. MM用RAM和ROM实现,CS用ROM实现
解析:
MM在CPU外,CS在CPU内,A对
MM和CS都是按地址访问,B错;TLB快表是按内容访问
MM存储指令和数据,CS存储微指令,C对
MM用RAM和ROM实现(主板上的BIOS程序存储在ROM中,也是主存的一部分),CS用ROM实现,出厂前写入微指令,D对
所以答案为B
7.设某计算机运算器框图如图(a)所示,其中ALU为16位的加法器(高电平工作),SA,SB为16位暂存器。4个通用寄存器由D触发器组成,Q端输出, 其读、写控制功能见下表
RA0RA1:读R0-R3的选择控制 ;WA0WA1:写R0-R3的选择控制;R:寄存器读命令;W:寄存器写命令;
LDSA:打入暂存器SA的控制信号 ;LDSB:打入暂存器SB的控制信号 ;SB-ALU:传送SB的控制信号 (作加法) ;/SB-ALU:传送SB的控制信号,并使加法器最低位加1.(作减法) ;Reset:清暂存器SB为零的信号;
~:一段微程序结束,转入取机器指令的控制信号
机器采用串行微程序控制方式,其微指令周期见图(b)。其中读ROM是从控存中读出一条微指令时间,为1μs;ALU工作是加法器做加法运算,为500ns; m1是读寄存器时间,为500ns;m2是写寄存器的工作脉冲宽度,为100ns。 微指令字长12位,微指令格式如下(未考虑顺序控制字段):
要求:用二进制代码写出如下指令的微程序
(1)“ADD R0,R1”指令,即(R0)+(R1)→R1
(2)“SUB R2,R3”指令,即(R3)-(R2)→R3
(3)“MOV R2,R3”指令,即(R2)→(R3)
解析:
先画出三条指令的微指令的微程序流程图,如下图所示
其中未考虑“取指周期”和顺序控制问题,也即微程序仅考虑“ 执行周期”,微指令序列的顺序用数字标号标在每条微指令的右上角 。每一框表示一条微指令。
根据给定的微指令周期时间关系,完成ADD,SUB指令的执行动 作需要3条微指令,MOV指令只需2条微指令。用二进制代码写出的三 条指令的微程序列于下表中,其中*表示代码随意设置(0或1均可)。
8.某计算机的控制器采用微程序控制方式,微命令中的操作控制字段采用字段直接编码法,共有32个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有()
A.5位
B.6位
C.15位
D.33位
解析:
采用字段直接编码法,5个互斥类,5个段。每段留出一个状态,标识不发出任何微操作,故每个段的状态数为:8、4、13、6、7。
因为23=8、22=4、24=16;所以操作控制字段至少3+2+4+3+3=15位
故答案为C
9.(统考2014-18)某计算机采用微程序控制器,共有32条指令,公共的取指令微程序包含2条微指令,各指令对应的微程序平均由4条微指令组成,采用断定法(下址字段法)确定下条微指令的地址,则微指令中下址字段的位数至少是()
A. 5
B. 6
C. 8
D. 9
解析:
本题本质是计算微指令的条数
微指令=操作控制位+顺序控制位(判别测试+下地址)
一条指令对应一个微程序;一个微程序对应多个微指令。下址法是通过微指令的下地址字段指定下条微指令的地址
2+32×4=130
27=128
所以答案为C
10.某微程序控制器采用的微指令字的长度为24位。微命令操作控制字段部分由4段构成,每段所包括的互斥微命令分别为5个、6个、14个和3个。P测试字段能判别条件有3个。该微程序控制器用来表示微地址位数最多为 ()
A.10
B.14
C.16
D.32
解析:
微地址是微指令在CM中的地址,CM用来存储微指令。求微地址位数也就是问所有微指令可以用几位来表示,而微指令的下地址位就可以表示所有微指令,所以也就是问下地址位数。
本题类型同上面第8题,区别是上题求控制字段位数而本题是求下地址字段位数,所以需要用微指令字长度减去控制字段长度和判别测试字段长度得到下地址字段长度。每段留出一个状态,标识不发出任何微操作。
控制字段位数:3+3+4+2=12
判别测试位数:2
下地址位数:24=14=10
所以答案为A
11.微地址寄存器有6位(μA5-μA0),当需要修改其内容时, 可通过某一位触发器的强置端S将其置“1”。现有三种情况:
(1)执行“取指”微指令后,微程序按IR的OP字段**(IR3-IR0)进行16路分支**; –需要修改微地址寄存器中4位
(2)执行条件转移指令微程序时,按进位标志C的状态进行2路分支 ; –需要修改微地址寄存器中1位
(3)执行控制台指令微程序时,按IR4,IR5的状态进行4路分支。
请按多路转移方法设计微地址转移逻辑。
解析:
微地址寄存器就是μPC(CMAR),存储微地址形成部件送来的微指令的地址,为在CM中读取微指令做准备
本题下一条微指令的形成方式是分路转移,微指令=控制字段+判别字段+转移地址
由题干知修改CMAR有三种情况,所以微程序有三种判别测试,分别为P1,P2,P3。 由于修改CMAR的μA5-μA0内容具有很大灵活性,现分配如下:
(1)用P1和IR3-IR0修改μA3-μA0;
(2)用P2和C修改μA0;
(3)用P3和IR5,IR4修改μA5,μA4。
另外还要考虑时间因素T4(最后一个时钟周期更新微地址寄存器),故转移逻辑表达式如下:
μA5=P3* IR5 * T4
μA4=P3* IR4 * T4
μA3=P1* IR3 * T4
μA2=P1* IR2 * T4
μA1=P1* IR1 * T4
μA0=P1 * IR0 * T4+ P2 * C * T4 (P1或P2在一个微指令周期最多一位有效)
* 与逻辑 + 或逻辑
12.某32位机共有微操作控制信号52个,构成5个相斥类的微命令组,各组分别包含4个,5个,8个,15个和20个微命令。已知可判断的外部条件有CY和ZF两个,微指令字长29位。
(1)给出采用水平型微指令的格式。
(2)控制存储器的容量应为多少?
解析
(1)
每段留出一个状态,标识不发出任何微操作
控制字段位数:3+3+4+4+5=19
判别测试位数:2
下地址位数:29-19-2=8
(2)控制存储器存储微指令。下地址8位,所以共有28条微指令,每个微指令29位。
CM容量:28×29=7424b
13.已知某机采用微程序控制方式,其控制存储器容量为512×48位,微程序可在整个控制存储器中实现转移,可控制微程序转移的条件共4个(每个条件需要一位测试位),微指令采用水平型格式,后继微指令地址采用断定格式,如图所示
1.微指令中的三个字段分别应是多少位?
2.画出对应这种微指令格式的微程序控制器逻辑框图。
解析:
(1)默认为直接编码。判别测试字段4位(如采用字段译码只需3位),下地址字段9位,微命令字段48-4-9=35位,
(2)对应上述微指令格式的微程序控制器逻辑框图如图所示, 其中微地址寄存器对应下地址字段,P字段即为判别测试字段,控制字段即为微命令字段,后两部分组成微指令寄存器
地址转移逻辑的输入是指令寄存器的OP码,各种状态条件以及判别测试字段所给的判别标志(某一位为1),其输出修改微地址寄存器的适当位数,从而实现微程序的分支转移。就是说,此处微指令的后继地址采用断定方式。(采用断定方式是通过微指令顺序控制字段控制产生后继微指令地址
14.某计算机的指令流水线由四个功能段组成,指令的流经各功能段的时间(忽略各功能段之间的缓存时间)分别是90ns 、80ns 、70ns 和60ns ,则该计算机的CPU时钟周期至少是()
A. 90ns
B. 80ns
C. 70ns
D. 60ns
解析:
为方便流水线的设计,将没给阶段的耗时取成一样,以最长耗时为准。即此处应将机器周期设置为90ns。
所以答案为A
15.(统考2013)设CPU主频为1.03GHz ,采用4级指令流水线,每个流水段执行需要一个时钟周期。假定CPU执行了100 条指 令,其在执行过程中没有发生任何流水线阻塞,此时流水线的吞吐率为( )
A. 0.25 ×109条指令/ 秒
B. 0.97 ×109条指令/ 秒
C. 1.0 ×109条指令/ 秒
D. 1.03 ×109条指令/ 秒
解析:
吞吐率是指在单位时间内流水线所完成的任务数量。设n为任务数,处理完成n个任务所用的时间为Tk=kt+(n-1)t,吞吐率TP=n/Tk;
本题任务数n为100,k=4,t=1/(1.03×109)s,Tk=kt+(n-1)t=10-7
TP=n/TK=109
所以答案为C
16.(统考2017-17)下列关于超标量流水线特性的描述中,正确的是 I. 能缩短流水线功能段的处理时间 II. 能在一个时钟周期内同时发射多条指令 III. 能结合动态调度技术提高指令执行的并行性
A. 仅II
B. 仅I 、III
C. 仅II 、III
D. I 、II 和III
解析:
超标量流水线每个功能段的处理时间不变,I错
超标量流水线能在一个时钟周期内同时发射多条指令,II对
超标量流水线能结合动态调度技术提高指令执行的并行性,III对
所以答案为C
流水线中有三类数据相关冲突:写后读相关;读后写相关;写后写相关。判断以下三组指令各存在哪种类型的数据相关。 (1) I1: ADD R1 ,R2 ,R3 ; (R2) + (R3)->R1
I2: SUB R4 ,R1 ,R5 ; (R1) - (R5)->R4
(2) I3: STA M(x) ,R3 ; (R3)->M(x) ,M(x) 是存储器单元
I4: ADD R3 ,R4 ,R5 ; ; (R4)+(R5)->R3
(3) I5: MUL R3 ,R1 ,R2 ; ; (R1) ×(R2)->R3
I6: ADD R3 ,R4 ,R5 ; ; (R4) + (R5)->R3
解析:
(1)I1指令运算结果应先写入R1 ,然后在I2指令中读出R1内容。由于I2指令进入流水线,变成I2指令在I1指令写入R1前(WB阶段)就读出R1内容,发生RAW 相关。 写后读 RAW read after write,I2 读出旧数据。
(2)I3指令应先读出R3内容并存入存储单元M(x) ,然后在I4指令中将运算结果写入R3 。但由于I4指令进入流水线,寄存器的读写操作比I3指令中访存操作快得多,变成I4 指令在I3指令读出R3内容前(EX阶段)就写入R3 ,导致了先写后读,实际应该是先读后写,产生了先读后写的相关,发生WAR相关。 读后写 WAR I3,读到新的数据。
(3)I6指令的加法运算完成时间早于I5指令的乘法运算时间,变成指令I6在指令I5写入R3前(WB阶段)就写入R3 ,导致R3的内容错误,发生WAW相关 。 写后写 WAW 寄存器的值不是最新的
18.下列不会引起指令流水阻塞的是()
A. 数据旁路
B. 数据相关
C. 条件转移
D. 资源冲突
解析:
会引起指令流水阻塞的是:资源冲突、数据相关、条件转移
数据旁路是解决数据相关的一种方式
条件转移:执行转移指令时,依据转移条件的产生结果可能为顺序取下条指令,也可能转移到新的目标地址取指令,地址不定,流水线需要暂停、发生断流
所以答案为A
19.(统考)下列给出的指令系统特点中,有利于实现指令流水线的是()
I. 指令格式规整且长度一致
II. 指令和数据按边界对齐存放
III. 只有Load/Store 指令才能对操作数进行存储访问
A. 仅I 、II
B. 仅II 、III
C. 仅I 、III
D. I 、II 、III
解析:
以上三个RISC特征都能有效降低取指令或执行指令的复杂度,从而有利于流水线操作
对于RISC,只有Load/Store 指令才能对操作数进行存储访问,其他指令不能访问存储器,这样可以把Load/Store 指令的地址计算和指令的执行步骤规整的放在一个流水阶段,有利于减少操作步骤(流水阶段个数),III对
所以答案为D
- 某16位计算机中,带符号整数用补码表示,数据Cache 和指令Cache 分离。表中给出了指令系统中部分指令格式,其中RS ,RD 表示寄存器,MEM表示存储器,(X)表示寄存器X或存储单元X的内容。
该计算机采用5段流水方式执行指令,各流水段分别是取指(IF),译码/ 读寄存器(ID ),执行/ 计算有效地址(EX ),访问存储器(M )和结果写回寄存器(WB ),流水线采用“按序发射,按序完成”方式, 没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作不能在同一个时钟周期内完成。 请回答下列问题。
(1)若int 型变量X 的值为-513 ,存放在寄存器R1 中,则执行“SHR R1” 后,R1 中的内容是多少?(用十六进制表示)
(2)在某个时间段中,有连续4条指令进入流水线,在其执行过程中没有发生指令阻塞,则执行这4条指令所需的时钟周期数为多少?
(3)高级语言程序中某赋值语句为X=A+B ,X 、A 和B均为int型变量,它们的存储单元地址分别表示为[X] 、[A] 和 [B] 。该语句对应的指令序列及其在流水线中的执行过程如图所示。
I1: LOAD R1 ,[A]
I2 : LOAD R2 ,[B]
I3 : ADD R1 ,R2
I4 : STORE R2 ,[X ]
则这4 条指令执行过程中,I3 的ID段被阻塞,I4 的IF段被阻塞原因各是什么?
(4)若高级语言程序中,某赋值语句为X=X*2+A ,X和A 均为UNSIGNED INT 类型变量,它们的存储单元地址分别表示为[X] 、[A] ,则执行这条语句至少需要多少时钟周期?要求模仿上图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。
I1 LOAD R1,[X]
I2 LOAD R2,[A]
I3 SHL R1
I4 ADD R1,R2
I5 STORE R2,[X]
解析:
(1)
补码位数扩展(移位):符号位不动,前面补符号位,后面补0
-513=110 0000 0001=101 1111 1111=1111 1101 1111 1111
SHR右移一位,1111 1110 1111 1111=FEFFH
(2)Tk=5t+(4-1)t=8t,即需要8个时钟周期
(3)I3 与I1、I2 存在数据相关, I1、I2 的结果写到寄存器R1、R2 后,I3才能读寄存器R1、R2 ,所以I3 的ID段被 阻塞。先写后读。访存慢,寄存器读写快。 I3 的ID段被阻塞(因为I3占用IF部件, 资源相关 ),I4 不能完成取指,所以I4被阻塞
(4)
21.(统考2016-19)在无转发机制的五段基本流水线( 取指、译码/ 读寄存器、运算、访存、写回寄存器) 中,下列指令序列存在 数据冒险 的指令对是 I1 :add R1 ,R2 ,R3 ;(R2)+(R3)→R1
I2 :add R5 ,R2 ,R4 ;(R2)+(R4)→R5
I3 :add R4 ,R5 ,R3 ;(R5)+(R3)→R4
I4 :add R5 ,R2 ,R6 ;(R2)+(R6)→R5
A.I1 和I2
B.I2 和I3
C.I2 和I4
D.I3 和I4
解析:
B.I2还在ID时,I3进入流水;I3WR时,I2在EX,可能产生写后读
所以答案为B
22.以下是一段MIPS 指令序列:
1 add t1,t0,t1 ; # t1 ← (t0)+(t1)
2 lw t0,0(t1) ; # t0 ← ((t1)) 读后写 读到新的数据
3 bne t0,s5,exit ; # if (t0)≠(s5) then go to exit 写后读 读出旧数据
4 add s3,s5,s4 ; # s3 ← (s5)+(s4)
5 exit:
该指令序列采用流水线方式运行。其中t0 、t1 、t2 、s3 、s4 、s5 均为通用寄存器,符号“# ”后面的为注释,(X) 表示通用寄存器X 的内容,((X)) 表示寄存器X 的内容所指主存单元的数据。则以上5 条指令序列中, 哪几个指令之间可能产生数据相关。
A. 1 和2 、2 和3
B. 1 和2 、2 和3 、3 和4
C. 1 和2 、1 和3
D. 1 和2 、1 和3 、2 和3
解析:
I2要访存比I3慢,写后读,排除C;3和4、1和3无数据冲突,排除BD
所以答案为A