计组实验3 mips冒险之流水线冒险

前言

之前都在准备蓝桥杯,天天嗯刷leetcode,故咕了好久 。。。 蓝桥杯总结也咕了

彳亍

今天还是来更一下实验。这次的实验虽然操作简单,但是其背后的思想却值得回味,让我们对流水线处理的理解更进一步。

流水线处理思想

以洗衣服为例,假设我们有三个步骤:

  1. 浸泡
  2. 冲洗
  3. 烘干

同时我们有三台不同的设备(浸泡桶,洗衣机,干衣机)负责上述的三个步骤。

假设今天有很多件衣服要洗,那么一般的思路是这样的,我们按照顺序一步一步处理每一件衣服:

在这里插入图片描述
但是这样顺序执行,有一个缺陷,你看 1 时刻我们进行浸泡操作,而直到 4 时刻 才有新的衣服进来,这意味着浸泡桶摸鱼摸了三个时刻。

要尽量地压榨计算性能,就意味着每个时刻不能有器件在摸鱼!(虽然这很不人道但是二极管是这个世界上最纯粹的打工人,并且缺乏把我们吊路灯的风险。我们只管压榨就完事了。。。)

对于每个器件,我们按照步骤顺序,一但其执行完工作,马上塞新工作给它:

在这里插入图片描述

你看:对于浸泡桶来说,在整个洗衣服的流程中,从 1 时刻到 3 时刻,它一直在工作。 这是我们希望看到的!

因为一刻不停的忙活,老板开上了法拉利 我们洗三件衣服的时间开销,由 9 个时刻降低为 5 个时刻,这便是流水线思想的威力!

mips指令之五步走

mips指令为了实现并行地流水线结构,严格地将指令拆分为5个抽象的步骤,他们分别是:

  1. IF
  2. ID
  3. EX
  4. MEM
  5. WB

下面给表格,解释一下:

缩写 全称 解释
IF instruction fetch 从内存中取指令
ID instruction decode 指令解码读寄存器
EX execute 指令执行
MEM memory 内存访问操作
WB write back 将结果写回寄存器

流水线冒险

一条完美的流水线就像上文中图片展示的那样,大家各司其职一刻不停。可是实际上并不是这么回事,因为计算机执行指令,不像洗衣服那般简单,因为洗衣服流水线中,衣服之间没有相互的依赖关系!

指令的执行往往依赖于其之前的指令的执行结果!

  • 21
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值