2016-第3章-3-增加内容流水线处理器设计教程.ppt
文本预览下载声明
二、流水线转移指令控制;31 26;转移指令在ID级由专用加法器计算转移地址;条件转移指令同时判断转移条件。;向前转移和向后转移
100:load r1,0(r2)
……
227:bne 11111111111111111110000000
偏移量为-128,不为零转向100
……
444:branch 00000000000000000011111111
偏移量为255,转向700
……
700:add r4,r5,r6;无条件转移指令和条件转移指令的流水线操作;* 空操作指令(nop):占用一个时钟周期的位置,而不对处理机状态产生任何影响。* 条件转移指令:需要EXE级结束产生的Z标志,故需要插入2条nop,如图1.23(a)。* 无条件转移指令:不需判断Z标志,只需要插入1条nop,如图1.23(b)。* 延迟指令:转移指令的下一条指令。模型机结构只有1条延迟指令(如果目标地址计算在EXE级,延迟指令有2条)。;1、无条件转移指令流水线执行过程
……
branch t1
nop
……
t1: add r1, r1, 1 ;无条件转移指令的流水线操作——计算转移地址
ID级:计算转移目标地址,从IR获取偏移量进行符号扩展;
IF级:nop被取出;
BTAKEN=1,选择符号扩展偏移量disp;地址加法器计算转移目标地址,等时钟上升沿(本周期结束)将目标地址打入PC。;无条件转移指令的流水线操作——转向目标地址;无条件转移指令branch在ID级计算转移地址,所需要的控制信号:
BTAKEN为1,转移地址= (PC)+ disp
;2、条件转移指令流水线执行过程:
无论是否转移延迟指令nop都要执行
Loop:add
……
sub r1, r1, 1
nop
bne/beq loop
nop
or
……
;图1.26 条件转移指令的流水线操作-——ALU计算条件Z(转移时);图1.27 条件转移指令的流水线操作一一使用Z判断是否转移; bne或beq指令判断Z,以确定是否转移。
如果条件满足,BTAKEN为1,转移地址= (PC)+ disp
否则,BTAKEN为0,PC加1计算nop下一条顺序指令的地址。
在时钟上升沿到来时,计算出的地址被打人PC。若是转移目标地址,则从目标地址取出指令;否则取nop后的顺序指令。
综上所述,转移发生的条件(BTAKEN为1)为:
BTAKEN=branch + bne + beqZ
BTAKEN在ID级产生,但要注意,产生Z的指令要早它两个周期。;三、流水线各级信号的产生;流水线处理机的数据路径和控制信号; BTAKEN = branch+bne +beqZ
SST = store
SIMM = andi+ori+addi+subi+load+store
WZ = andi+ori+addi+subi+and+or+add+sub
WMEM = store
SLD = load
WREG = andi+ori+addi+subi+and+or+add
+sub+load;指令;;; BTAKEN = branch+bne +beqZ
SST = store
SIMM = andi+ori+addi+subi+load+store
WZ = andi+ori+addi+subi+and+or+add+sub
WMEM = store
SLD = load
WREG = andi+ori+addi+subi+and+or+add
+sub+load
ALUOP1 = add+addi+sub+subi+load+store
ALUOP0 = or+ori+sub+subi
;思考题:各流水级存放控制信号的流水线寄存器有何异同?;*;A.3.4 结构相关及解决方法;相关(冒险)分类;相关总是可以用停顿解决;结构相关:流水段竞争;多重访问寄存器堆;在一
显示全部