当前位置:
文档之家› MIPS16e指令执行步骤20100409 二
MIPS16e指令执行步骤20100409 二
PC←(PC) + 1
A ←reg [rx] B ←reg [ry] A ←reg [rx] B ←reg [ry]
PC←? (PC)+imm (rx)比较 比较(ry) 比较 或比较 imm, 设置T的值 设置 的值 IH ← (rx) 数据计算、传送、 数据计算、传送、 移位并保存结果 到C 数据计算、传送、 数据计算、传送、 移位等 并保存结果到 C 写内存 或 读内存内容到 D REG ← C
扩展 Immediate 三态门
3
IH
数据总线 Clock
A、B IR_op sa
001
011
010
Sif
Sid
Sexe
其他指令
100
101
Swb lw,lw_sp
cmp,cmpi b, bteqz stl,stlu,slti btnez, jrra sltui,jr,jrjr beqz,bnez
Smem sw,sw_sp,sw_ra
MIPS16e 多周期 CPU 指令执行步骤
reg[rx]←reg[rx] or reg[ry]
RR型指令 (OR):取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型指令 :取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、B 内容送 执行计算并暂存结果: 、 内容送ALU输入端,ALU执行或运算,结果送 C; 输入端, 执行或 执行计算并暂存结果 输入端 执行 运算, ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
典型指令的格式、 典型指令的格式、编码与功能汇总表
序号 指令格式 指令编码 指令功能 寄存器类型的指令, 寄存器类型的指令,有3地址、有2地址、有1地址这样3种不同的格式 地址、 地址、 地址这样3 1 2 3 4 5 ADDU rx ry rz OR rx ry 15~11=1c, 1~0=01 15~11=1d, 4~0=0c 15~11=1d, 4~0=0A 15~11=1d, 7~0=40 15~11=06, 1~0=00, 4-2是 sa 是 rz←rx + ry rx← rx | ry if (rx= ry) T=0, 否则 =1 0 1 rx← PC rx← ry<<8 if sa=0 否则 rx← ry<< sa (L)
各类指令在不同周期需要完成的功能
周期 指令类型 转移指令_1 转移指令 取指周期 Sif IR←MEM [PC] 译码周期 Sid
(PC)+imm PC←? 或 RA
执行周期 Sexe
访存周期 Smem
写回周期 Wb
转移指令_2 转移指令 设置T值的 设置 值的 指令 MTIH 指令 R型指令 型指令
MIPS16e 多周期 CPU 系统硬件组成
控制器由程序计数器PC、指令寄存器 、节拍发生器Timing、控制单元 组成,还用 组成, 控制器由程序计数器 、指令寄存器IR、节拍发生器 、控制单元CU组成 保存程序断点) 控制器选用硬连线的、多指令周期方案实现。 到 RA (保存程序断点 。控制器选用硬连线的、多指令周期方案实现。 保存程序断点 运算器由寄存器组REG、算逻单元 组成, 个专用寄存器A、 、 、 、 , 运算器由寄存器组 、算逻单元ALU组成,还用到 个专用寄存器 、B、D、C、H, 组成 还用到4个专用寄存器 分别用于存从REG、MEM取出的数据、 ALU结果、中断编码;SP:堆栈指针,T: 触发器。 取出的数据、 结果、 堆栈指针, 触发器。 分别用于存从 、 取出的数据 结果 中断编码; 堆栈指针 整机有主存储器 串口,其地址来自PC 或 C,写入数据来自寄存器 、A 或 RA,读出 主存储器和 整机有主存储器和串口,其地址来自 ,写入数据来自寄存器B、 , 采用与主存统一编址方式处理, 的指令存IR,数据存DR;串口采用与主存统一编址方式处理 需要用到片选、读写命令。 的指令存 ,数据存 ;串口采用与主存统一编址方式处理,需要用到片选、读写命令。 系统中还有完成数据来源选择、数据长度扩展、数据移位和三态输出控制功能的电路。 系统中还有完成数据来源选择、数据长度扩展、数据移位和三态输出控制功能的电路。
MIPS16e ]+reg[ry]
RRR型指令 (ADDU):取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型指令 :取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、B 内容送 执行计算并暂存结果: 、 内容送ALU输入端,ALU执行加法运算,结果送 C; 输入端, 执行加法运算, 执行计算并暂存结果 输入端 执行加法运算 ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
把指令的执行过程划分成5 把指令的执行过程划分成5 个步骤,分别是: 个步骤,分别是:取指周期 Sif, 译码周期 Sid, 执行周期 Sexe, 存储器读写周期 Smem, 数据写 回周期Swb。不同类型的指令 。 回周期 个步骤中完成 在2-5个步骤中完成。 个步骤中完成。
部件之间的信号传递关系 左侧大虚线框内部分在FPGA芯片内部实现, 芯片内部实现, 左侧大虚线框内部分在 芯片内部实现 右侧的3个电路在印制电路板上 个电路在印制电路板上。 右侧的 个电路在印制电路板上。
BNEZ rx immed JR JRRA rx
JRLR rx
MIPS16e 多周期 CPU 系统指令执行步骤
指令地址 节拍发生器 Timing
WritePC ALUop IODR 译码器 电路 WriteIR ALUsrcB
是否转移的条件信号Z
控制部件 CU
WriteREG MEM toREG SE REGds A 寄 存 器
MIPS16e 多周期 CPU 指令执行步骤
reg[ry]←reg[rx] + S-e(immed)
RRI型 (ADDIU3)指令:取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型 指令: 指令 取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、S-e(immed) 送ALU输入端,ALU执行加法运算,结果送 C; 执行计算并暂存结果: 、 输入端, 执行加法运算, 执行计算并暂存结果 输入端 执行加法运算 ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
I型指令 型指令
访存指令
计算内存地址并 保存到 C
REG ←D
MIPS16e 多周期 CPU 指令执行步骤
在Sif周期完成读取指令的功能 Sif周期完成读取指令的功能
1、欲读指令的地址在PC中,PC的内容送存储器地址引脚,读主存,读出的指令内容送 ; 、欲读指令的地址在 中 的内容送存储器地址引脚, 的内容送存储器地址引脚 读主存,读出的指令内容送IR; 2、PC的内容加 ,得到顺序执行时的下一条指令的地址,这是经过 、 的内容加 的内容加1,得到顺序执行时的下一条指令的地址,这是经过ALU部件完成的,计算的 部件完成的, 部件完成的 结果保存回PC中 结果保存回 中。
ALUsrcA
T
IO、MEM 、 控制命令
A
RA 0 1 2
串 行 口
IR
指 令 内 容
PC
1
rx ry
A A L U B
Z C 寄 存 器 R
rz
选 择
寄 存 N2 器 堆 ND REG N1 REGin
0
0
PC
1
存 A 储 D 器
D 寄 存 器
B 寄 存 器
0 1 0 2 1 移 位 电 路
1 2 0
CMP rx ry MFPC rx SLL rx ry sa
立即数类型的指令, 含存储器读写) 立即数类型的指令,有2个寄存器和立即数运算、传送 (含存储器读写 的指令, 个寄存器和立即数运算、 含存储器读写 的指令, 个寄存器和立即数运算、 和1个寄存器和立即数运算、比较的指令 6 7 8 9 10 11 12 13 14 ADDIU3 rx ry immed ADDIU rx immed CMPI rx immed LW rx ry immed 15~11=08, 4~0=0 immed 15~11=09, 7~0=immed 15~11=1e, 7~0=immed 15~11=13, 4~0=immed ry← rx + S_e(immed) rx← rx + S_e(immed) if (rx=immed) T=1,否=0 , ry←Mem(rx+S_eimmed)