MIPS流水线以及分支延迟和加载延迟概念(一)

MIPS每条指令(如汇编指令andi t0,t1)的执行分为5个阶段,称为5级流水线,分别的IF,ID,EX,MEM,WB。每个阶段详解为:

IF: Instruction Fetch,取指,根据PC(程序计数器)指示的地址从存储器中取指令并装入到指令寄存器(IR)中,同时PC加4(MIPS每个指令都是定长的4个字节)以获取下一条指令的地址。

ID:Instruction Decode,对IF阶段取的指令译码并读取该指令的源寄存器域(rs)指定的寄存器的内容,MIPS指令结构如下(R-type指令)


EX:Execute,执行或者计算有效地址,根据指令类型分为3中情况:

       (1)如果指令是load/store指令的话,ALU把寄存器内容和偏移量相加得到访存的有效地址,该地址在MEM阶段用

        (2)如果是ALU指令,ALU根据操作码对从寄存器堆中读取的数据进行运

        (3)如果是分支指令,ALU把偏移量和PC指针相加形成转移目标的地址,同时判断分支是否成功

MEM:访存,如果是load指令,将根据前一个cycle计算得到的有效地址从存储器中读取数据。如果是store指令,根据有效地址将那个第二个寄存器中的数据写入存储器中。如果是条件分支指令,如果条件为真,将EX阶段的形成的转移目标地址赋给PC,分支指令执行完毕;否则不进行任何操作。如果指令是运算指令(ALU指令),MEM阶段空闲。

WB:Write Back,数据写回到通用寄存器中,将结果写入寄存器堆,结果可能来自存储器(对于load指令)或者来自ALU(对于ALU指令)。

综合5级流水线的运行如下(实际上ID和WB阶段个需要半个时钟周期即可完成,即MIPS一条指令4个时钟周期完成):

MIPS流水线以及分支延迟和加载延迟概念(一)_第1张图片 
MIPS 5级流水线

参考:《see mips run》

             http://book.51cto.com/art/201112/306476.htm

             http://blog.sina.com.cn/s/blog_696b8a5a0100njbq.html

你可能感兴趣的:(MIPS)