文章目录

  • 前言
  • 数据冲突的形式
  • 数据前推
  • 增加流水线宽度

系列目录

前言

上一讲 简单五级流水线设计与性能 讲到了流水线相比于多周期实现的优势, 同时也提到了流水化带来的3种冲突:控制冲突,数据冲突,结构冲突。这一讲我们主要会关注:

  • 数据冲突以及如何降低它的影响。
  • 增加流水线宽度以提升指令级并行性(ILP)

这一章及往后将会开始会涉及到乱序执行,长度会较长所以将分成上下两节。

数据冲突的形式

这其实就是数据相关性可能有哪些表现形式,在这里我们用指令编码顺序来命名这些相关性(dependency):

  • RAW: 在 Ix 写某寄存器后有指令 Iy 读取该寄存器
    如果 Iy 提前执行,Iy会读不到正确数据
  • WAR: 在 Ix 读某寄存器后有指令 Iy 写该寄存器
    如果 Iy 提前执行, Ix 会读不到正确数据
  • WAW: 在 Ix 写某寄存器后有指令 Iy 写该寄存器
    如果 Iy 提前执行执行结束,后面指令不能获得正确数据

例子

指令 冲突1 冲突2 冲突3
1 ADD R1 R2 R3 WAW with 3
2 ADD R4 R1 R5 RAW with 1
3 ADD R1 R5 R3 WAW with 1 WAR with 2

当然,如果使用之前将的简单五级流水线自然是不会有WAW WAR 这两种相关性的。因为每条指令的执行时间都是5个周期,不可能后面的指令跑到前面去。当我们想要去掉这个限制的时候问题就出来了,我们会在后面一点的地方讨论这两种冲突。

RAW 相关性也叫做真数据相关,是无论如何也避免不了的问题。这种相关性来源于本身代码逻辑上的因果性。虽然这个相关性无法解决,但是可以尽可能的减小它带来的停顿损失:通过数据前推。

数据前推

它的思想很朴素:因为不是所有指令得出结果都需要5个周期,很有可能结果已经算出来但是还没有被写回RF中罢了。我们只需要提供通路,将中间结果引到ID级就可以了。

1 2 3 这些通路同时要提供数据,寄存器地址以及寄存器写使能 3种信号。在ID级中匹配选择地址相同的路径,如果有多个相同地址,选最靠近ID级的数据注意,对于Load 指令,数据只可能出现于通路2 3。所以RAW并没有完全消除,流水线依然会停顿如果有指令依赖于它的话。

当然,实现数据前推的比较还有一种替代方法。因为所有指令都必然会经过ID级,我们也知道每条指令实际出结果可能在哪一级。我们完全可以在ID级建一个储存结果位置的表:

Reg Address Time Left To be in Register
1 R1 0
2 R2 2
3 R3 3

通过Time Left To be in Register 这一项来控制选择前推通路。0代表已经在寄存器了,直接读就好。这个表项具体的实现是使用移位寄存器,而不是直接使用计数器。 如果有指令写比如R2时,R2会重置为3(初始值)。

这种方法最大的问题就是会使用到大量的连接线,而且在ID级的MUX(通路选择)会非常的大。如果有多条流水线,这些线的数量与宽度是很可怕的。

增加流水线宽度

虽然之前讲的5级流水线很简单,效果也还不错,但是我们总想要更高的速度,更好的性能。增加性能的好方法是增加并行性,所以我们想把流水线做宽以便塞进更多执行单元。我们甚至可以把流水线做的不一样长,这样就可以减小数据前推的负担。但是这样一来,指令的顺序就很有可能与编码的时候不一致,而出现乱序执行。同时也出现了新的结构冲突:WB级可能同时需要写回3条指令!!

这很明显代价很大,需要检测的冲突变多了很多。为了解决日益增长的检测负担,我们另加了一级流水线 Issue (I)。 这里将放置我们的冲突检测模块: 计分板(Score Board),同时我们将RF的位置也移动到这一级里。

有人可能会问,假如说一个单发射流水线也有必要这么做吗?毕竟Write Back的时候只能一条一条写回,有必要让运算单元并行吗?我认为是有的,比如说Load/Store指令可能会花相当长的时间来执行(miss)。这时候让其他无关指令同时执行,有利于减小损失,提高CPU利用率。

计算机组成原理笔记--流水线的扩展(1):数据前推与增加宽度相关推荐

  1. 计算机组成原理笔记--流水线的扩展(2):计分板

    文章目录 前言 宽流水线是如何引入问题的 Score Board 结构 如何操作ScoreBoard 总结 系列目录 前言 上一篇文章 我们尝试着将5级流水线扩展以提升性能.首先我们尝试着加入数据前推 ...

  2. 计算机组成原理笔记之字位扩展

    1.字扩展 对于字扩展来说,增加的是存储单元的个数,如何选中某一存储单元是需要考虑的. 解决方法即是将存储单元的地址分为高位地址和低位地址(片内地址). 高位地址(片选信号)由高位地址线和访存信号产生 ...

  3. 计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1

    内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记. 感谢LY,他帮我做了一部分笔记.由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些. 西电的计算机组织与体系 ...

  4. 计算机组成原理笔记(王道考研) 第二章:数据的表示和运算2

    内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记. 感谢LY,他帮我做了一部分笔记.由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些. 西电的计算机组织与体系 ...

  5. 24考研王道计算机组成原理笔记

    24考研王道计算机组成原理笔记 文章目录 24考研王道计算机组成原理笔记 前言 一.计算机系统概述 1.1 计算机的发展 1.2 计算机硬件 1.2.1 计算机硬件的基本组成 1.2.2 各个硬件的工 ...

  6. 计算机组成原理笔记(王道考研) 第四章:指令系统

    内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记. 感谢LY,他帮我做了一部分笔记.由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些. 西电的计算机组织与体系 ...

  7. 计算机组成原理笔记(王道考研) 第七章:输入输出系统

    内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记. 感谢LY,他帮我做了一部分笔记.由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些. 西电的计算机组织与体系 ...

  8. 计算机组成原理笔记(王道考研) 第五章:中央处理器

    内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记. 感谢LY,他帮我做了一部分笔记.由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些. 西电的计算机组织与体系 ...

  9. 计算机组成原理笔记——存储器分类、层次结构、技术指标、存储单元地址分配

    计算机组成原理笔记--存储器分类.层次结构.技术指标.存储单元地址分配 一. 概述 存储器的分类 按存储介质划分: (1)半导体存储器 双极型(TTL).MOS (2)磁表面存储器 磁头.载磁体 (3 ...

最新文章

  1. 专题 11 IPC之管道
  2. 【EventBus】事件通信框架 ( 取消注册 | 获取事件参数类型 | 根据事件类型获取订阅者 | 移除相关订阅者 )
  3. iOS开发多线程篇—多线程简单介绍
  4. scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解
  5. mysql 序号_脚本搭建Nginx、Redis、MySql、Maven
  6. java 性能调优_Java性能调优调查结果(第一部分)
  7. 赢在CSDN —— 我们一起向前
  8. Python多进程中多参数问题
  9. vhg电路是什么意思_值得珍藏的经典模拟电路
  10. 关于钩子(Hook)的使用
  11. 面向对象设计模式纵横谈:Prototype 原型模式(笔记记录)
  12. Linux系统下的RZSZ(文件传输工具)
  13. Java命令注入之防护
  14. C++轻量级Json解析工具—TinyJson
  15. Mac安装PL2303驱动
  16. 按键--找色找图基础
  17. Linux CentOs7 ping网址 未知的名称或服务
  18. 计算机相关扩展活动战队名字,2020最新战队名字大全
  19. GreenPlum中性能调优之shared_buffers修改
  20. RESTful – 移动互联网时代的高效API架构风格

热门文章

  1. 再获2亿元A+轮融资,乐生智能能否“扫出”舒适区?
  2. Ubuntu18 网速显示 插件 显示在状态栏
  3. 网络栈主要结构介绍(socket、sock、sk_buff,etc)
  4. iframe标签中写html,html页面中嵌套iframe标签,我们可以用html中的iframe标签搞定
  5. java模拟抛物线_小tips:用java模拟小球做抛物线运动
  6. mysql infile ignore_mysql导入数据load data infile用法
  7. 软件测试工程师岗位个人简历怎么写
  8. 手把手教你做短视频去水印微信小程序(2-首页)
  9. 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)
  10. python猫眼电影分析_Python数据分析之猫眼电影TOP100