设计mips五级流水线模拟器中的 cache_流水线简介

本文介绍了计算机指令处理的流水线技术,特别是五级流水线的设计,旨在解决不同步骤时间不一致导致的效率问题。通过引入Cache,减少取指时间,提高处理器性能。五级流水线包括取指、译码、执行、访存和回写阶段,每个阶段都有其特定的任务,以应对执行时间过长的情况,如Load/Store指令的处理。
摘要由CSDN通过智能技术生成

a00443a079009c4c06fcdd2a14b9e7be.png

什么是流水线?

维基百科中的定义是:

​ 将计算机指令处理过程拆分为多个步骤,并通过多个硬件处理单元并行执行来加快执行速度。

这里有两个关键词:

1. 拆分
2. 执行

指令的执行直观有三个步骤:

6aeacc91cc254a07bfa461be4b7a86ef.png

假如这三个步骤都由一个硬件处理单元完成,且假设每个步骤处理时间都是T,那么完成三个操作需要3T的时间。

如果有n条指令,那么就需要3nT的时间来完成。

但是,假如我们有三个硬件处理单元,分别做取指,译码,执行的一个。那么就可以在译码的时候对下一条指令取指,在执行的时候对下一条指令译码。这就是经典的三级流水线。

50706a9cca44318299d0735afa265e6a.png

五级流水线

在三级流水中我们做了一个假设,即每一个步骤的时间都是T,现实往往不是那么完美的。

比如,取指的时间就可能会很长,假设需要2T的时间,那么三级流水线就会变成如下的模样

77cca3db7e6714c79ecf4cc7b787ad69.png

可以看到执行3条指令的时间从5T变成了8T

如何解决取指时间过长的问题?

引入缓存(Cache),处理器从缓存中读取指令只需要一个时钟周期。

但我们还要面临另一种情况:执行时间过程,尤其是Load/Store指令(加载,存储),由于涉及访问存储器。执行时间可能会超过一个时钟周期,导致流水线停滞。

为了解决这种问题,我们的解决方案是:五级流水线

分别是:取指,译码,执行,访存,回写

如图

7659998049f4b338232301d99904458f.png

五级流水线中,每一个阶段的主要工作如下:

  • 取指:从指令存储器独出指令,同时确定下一条指令地址。
  • 译码: 对指令进行译码,从通用寄存器中读出要使用的寄存器的值,如果指令中含有立即数,那么还要将立即数进行符号扩展和无符号扩展。如果是转移指令,并且满足转移条件,那马给出转移目标,作为新的指令地址。
  • 执行:按照译码阶段给出的操作数、运算类型、进行运算,给出运算结果。如果是Load/Store指令,那么还会计算Load/Store的目标地址。
  • 访存:如果是Load/Store指令,那么在此阶段会访问数据存储器,反之,只是将执行阶段结果向下传递到回写阶段。同时,在此阶段还要判断是否有异常需要处理,如果有,那么会清除流水线,如何转移到异常处理例程入口地址处继续执行。
  • 回写:将运算结果保存到目标寄存器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值