计算机组成原理之处理器(流水线)

编程入门 行业动态 更新时间:2024-10-28 19:22:16

计算机组成原理之处理器(<a href=https://www.elefans.com/category/jswz/34/1765763.html style=流水线)"/>

计算机组成原理之处理器(流水线)

引言

为什么不采用单周期实现,硬件比较简单?

主要是因为效率太低,处理器中最长的路径(一般是ld指令)决定了时钟周期

流水线概述

流水线是一种能使多条指令重叠执行的技术。

流水线更快的原因是所有的工作都在并行执行,所以单位时间能够完成更多的工作,流水线提高了吞吐率。

RISC-V是五级流水线 约等于五倍加速比

  • 从存储器中取出指令IF
  • 读寄存器并译码指令ID
  • 执行操作或计算地址EX
  • 访问数据存储器的操作数MEM
  • 将结果写入寄存器WB


流水线冒险

当讲到流水线型的处理器的时候,冒险是绝对不能忽视的。

结构冒险

即硬件不支持多条指令在同一时钟周期执行。但是RIscv是面向流水线设计的,一些结构冒险早已经考虑到了。比如IM与DM的硬件分离。

数据冒险

由于一个步骤必须等待另一个步骤完成而导致的流水线停顿加Data Hazard

一种基本的解决方案是前递法,后面再详细介绍,这里提一下。

例子:

add x19, x0, x1

sub x2, x19 ,x3

sub指令x19使用的是add指令的rd也就是19号寄存器,这里会产生冒险。

前递解决图示:


但是请注意,前递不能解决所有的数据冒险,比如有ld use型指令。ld指令的rd被下一条指令进行使用,这个时候必须要停顿一个周期才能用前递解决。

控制冒险

出现在需要根据一条指令的结果后做决定,而其他指令在执行。

控制冒险的解决,可以采用停顿法或者预测法。停顿法这种保守的方法固然有效,但是太慢了。但是预测也有时候会出错,总之这个是个有优化空间的方案。

预测其实有种动态预测的方法来处理分支。就是比如:上一次预测失败了,这次改变预测的策略。

流水线的通路与控制

概览图


流水线:


WB阶段问题

考虑:

ld x10 0(x11)    A
add x1 x2 x3    B
add x4 x5 x6    C
add x7 x8 x9    D

ld运行到WB阶段,将DM中的值写回寄存器但是由于D号指令此时正读,表示X7为writeReg,那么值就会写错!解决这个问题要添加额外的数据通路

如图:

时钟周期切片

如图

控制的添加

既然添加了额外的器件,为了实现流水线,还要添加控制

完整的数据通路

看图看图!


关于冒险进一步说明

关于数据冒险

数据冒险实际上有两对条件。

EX/MEM.RegisterRd = ID/EX.RegisterRs1

EX/MEM.RegisterRd = ID/EX.RegisterRs2

MEM/WB.RegisterRd = ID/EX.RegisterRs1

MEM/WB.RegisterRd = ID/EX.RegisterRs2

下一条要用到上一条的结果。

前递法解决

检测冒险的条件以及解决相应冒险的控制信号

EX冒险


ME冒险

更复杂的


数据冒险与停顿

载入使用型指令必要阻塞(停顿)stall


完整图示

本文由博客一文多发平台 OpenWrite 发布!

更多推荐

计算机组成原理之处理器(流水线)

本文发布于:2023-11-15 05:18:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1594343.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:流水线   处理器   原理   计算机

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!