文章目录

  • 前言
  • 五级流水线
  • 冒险/冲突(Hazards/Conflict)
  • 控制单元
  • 模块调度

系列目录

前言

上一章 单周期设计与多周期设计 一章中提到了两种微架构模型。这一章主要会讲解基本流水线的工作原理,控制电路的形式以及功能模块的调度。

在开始这一章之前有必要复习一下计算机性能的指标。指标很简单:对应程序的长度除以执行所花的时间。这里程序的长度定义不是很明确,所以我们通常不会直接使用这个公式。事实上,我们会找一个基准机器和基准程序作为参考,让新机器也运行这个基准程序以获得新机器的执行时间,把这两者之比作为相对指标。这种方法能比较准确的反映出机器的实际性能,但是不适合引导我们进行设计,因为我们至少先得把样机/模拟器做出之后才能做这个测试。通常我们使用Instruction Per Cycle(IPC)来近似表现机器的理想工作性能。

五级流水线

在上一章的末尾的多周期设计中,我们发现了最长一条指令是由5个不一样的小任务顺序执行得来的。这几个任务的名字分别是:取指,译码,计算,访存,写回。在理想状态下,任何两条指令都是独立的互不影响的,可以发现这五个步骤刚好也是互不相关的。这样一来,我们没有必要让一条指令占用所有的功能单元,反而可以让5条不同的指令分别占用所需要的模块以达到加速的效果。

这里有一个误区:在五级流水线里,每条指令都会执行5个周期,而多周期机器里却只有最长的指令才执行5个周期,这样岂不是更慢?我们考虑指令n结束到指令n+1结束的时间,可以发现多周期机器至少花3周期,而流水线机器只用了一个周期。


当然这里的时钟周期就是最长任务花费的时间。

冒险/冲突(Hazards/Conflict)

在实际的程序中,指令是不可能完全不相关的比如:

  • 跳转指令前后的指令
  • 利用共同数据的指令
  • 利用共同结构的指令。

这三种情况分别对应:

  • 控制冲突 (Control Hazards/Conflict)
  • 数据冲突 (Data Hazards/Conflict)
  • 结构冲突 (Structrual Hazards/Conflict)

这三种情况的出现直接导致了指令不能一定一个接一个地存在在流水线里。后面的所有章节都是来减小这三种问题带来的影响。

控制单元

流水线与多周期设计里面有一个很大的不同:流水线里指令间的距离是空间上的,而多周期设计里的是时间上的。换句话说,流水线的控制信号是每隔一级就会发生变化(空间上),而多周期的控制信号是每隔一段时间就会变化(时间上)。

可以发现流水线每一级都会产生控制信号。有一个比较巧妙的做法就是将所有与指令操作有关的信号都在译码的时候生成,只向下一级传递还没有用过的信号。

除了控制操作的信号以外,由于流水线中存在各种冲突,控制指令流动的信号也需要产生。这需要一个能跨过不同级检查冲突的逻辑电路,他会去控制流水线寄存器中数据的行为:暂停 (Stall),冲刷 (Flush)还是正常流动

模块调度

除了刚才讲的全局控制电路会跨模块,还有一些电路也会跨越不同流水线级(Stage)比如:

  • 寄存器堆 (Register File)
  • 内存 (memory)

在这里我们就会看到 Structural Hazard 了。
寄存器堆会在译码级读,写回级写。内存会在取指级读,访存级读写

Name of module IF ID EX MEM WB
Register File - R - - W
Data Memory R - - W/R -

可以发现,对内存的访问会与指令的读取发生冲突。除了可以让取指暂停,优先访存这种解决方法以外,还可以复制一份端口/内存增加内存模块的吞吐量以达到要求。

计算机组成原理笔记--简单五级流水线设计与性能相关推荐

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

    文章目录 前言 数据冲突的形式 数据前推 增加流水线宽度 系列目录 前言 上一讲 简单五级流水线设计与性能 讲到了流水线相比于多周期实现的优势, 同时也提到了流水化带来的3种冲突:控制冲突,数据冲突, ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. 计算机组成原理笔记(王道考研) 第六章:总线

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

  9. 超流水线计算机原理,6计算机组成原理第6章流水线原理.ppt

    文档介绍: 第6章流水线原理及其§1重叠方式通常提高指令执行速度的途径有如下三种:提高处理机的工作主频.采用更好的算法和设计更好的功能部件.多条指令并行执行,称为指令级并行技术.狼畜痔隶嘿拾冈候裸腺绘 ...

最新文章

  1. SAP MM MB5L 报表里的差异金额如何调整?
  2. JavaScript语言精粹JSON解析器源码阅读
  3. 我为什么要这么功利?
  4. [7]对话框控件的变量绑定
  5. Jfinal的七牛云存储插件:qiniuPlugin for jfinal.
  6. Matlab2017a/b激活license.lic文件
  7. 计算机3d相册代码,CSS3实现3D旋转相册(示例代码)
  8. Java生成圆角图标
  9. 百度搜索开户竞价推广如何写出优质创意?
  10. 初步观察UE蓝图的“Branch节点”,这个最简单的K2Node的代码
  11. 码力十足学量化|macd 指标详解
  12. jieba分词增加自定义词表
  13. 抖音直播带货怎么开通?最新政策及直播带货话术技巧!
  14. Oracle误删除表空间的恢复
  15. Oracle安装和配置
  16. 3.7 广域网(ppp协议、HDLC协议)
  17. 支付宝php支付接口说明
  18. 签名不对,请检查签名是否与开放平台上填写的一致。
  19. oracle em 控制台,EM控制台SOA-INFRA访问角色
  20. java double类型判空,简单封装JAVA空判断

热门文章

  1. 解决安装Oracle时检查监视器不通过的问题
  2. 华为交换机flaping_交换上的FLAPPING事件 (zhuan)
  3. js正则 6-20位只能包含 字母 或者字母+数字 必须字母开头
  4. FastStone Capture 注册码
  5. Adobe Acrobat DC详细安装
  6. 环评3c语言编写多河段bod-do耦合矩阵模型源程序,《环境质量评价学》PPT课件.ppt...
  7. 2022CCPC威海 E. Python Will be Faster than C++ (gym104023E)
  8. bootstrap之affix
  9. 基于朴素贝叶斯和预训练Bert模型的中文句子情感分类实践
  10. 【Diary】2023·July