体系结构 | 五段流水线 | 流水线技术

一条经典的5段流水线

  • 介绍一条经典的5段RISC流水线
  • 每一个周期作为一个流水段;
  • 在各段之间加上锁存器(流水寄存器)

 

一条指令的执行过程分为以下5个周期:

  • 取指令周期(IF)

以程序计数器PC中的内容作为地址,从存储器中取出指令并放入指令寄存器IR;

同时PC值加4(假设每条指令占4个字节),指向顺序的下一条指令;

  • 指令译码/读寄存器周期(ID)

对指令进行译码,并用IR中的寄存器地址去访问通用寄存器组,读出所需的操作数;

  • 执行/有效地址计算周期(EX)

不同指令所进行的操作不同:

load和store指令:ALU把指令中所指定的寄存器的内容与偏移量相加,形成访存有效地址;

寄存器-寄存器ALU指令:ALU按照操作码指定的操作对从通用寄存器组中读出的数据进行运算;

寄存器-立即数ALU指令:ALU按照操作码指定的操作对从通用寄存器组中读出的操作数和指令中给出的立即数进行运算;

分支指令:ALU把指令中给出的偏移量与PC值相加,形成转移目标的地址。同时,对在前一个周期读出的操作数进行判断,确定分支是否成功;

  • 存储器访问/分支完成周期(MEM)

该周期处理的指令只有load、store和分支指令;

其它类型的指令在此周期不做任何操作;

  • load和store指令

load指令:用上一个周期计算出的有效地址从存储器中读出相应的数据;

store指令:把指定的数据写入这个有效地址所指出的存储器单元;

  • 分支指令

分支“成功”,就把转移目标地址送入PC,分支指令执行完成;
 

  • 写回周期(WB)

ALU运算指令和load指令在这个周期把结果数据写入通用寄存器组。

ALU运算指令:结果数据来自ALU。

load指令:结果数据来自存储器。

在这个实现方案中:
分支指令需要4个时钟周期(如果把分支指令的执行    提前到ID周期,则只需要2个周期);

store指令需要4个周期;

其它指令需要5个周期才能完成; 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值