概述
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 5级流水线 |
参考:《see mips run》
http://book.51cto.com/art/201112/306476.htm
http://blog.sina.com.cn/s/blog_696b8a5a0100njbq.html
最后
以上就是拼搏店员为你收集整理的MIPS流水线以及分支延迟和加载延迟概念(一)的全部内容,希望文章能够帮你解决MIPS流水线以及分支延迟和加载延迟概念(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复