指令流水线——数据通路和控制逻辑

单周期处理器模型: link.


上图是我们介绍过的单周期处理器模型,想一想有什么缺点??指令是one-by-one执行的,吞吐率并不是很高,能不能设计一个具有更高吞吐率的模型呢??这就是我们要介绍的指令流水线。

我们先来分析对比一下单周期与流水线的性能,假设有N条指令,指令分为5个阶段,每个阶段耗时2ns,那么单周期执行时间为10Nns,流水线执行时间(N-1+5)*2=(N+4)*2ns,可见,流水线的执行速度是单周期的5倍!!!

下面我们详细分析流水线咯

先来看执行时间最长的 Load指令



观察可见,每个周期都有一条指令进入流水线,每个周期都有一条指令完成,每条指令的有效周期CPI=1

再来看 R-Type指令



问题来了,在Cycle7,Load指令和R-Type指令共同向Register写数据,产生冲突,我们把一个功能部件在同一周期同时被多条指令使用的现象称为 结构冒险 ,规定每个功能部件每条指令只使用一次且每个功能部件必须在相同的阶段被使用就可以解决此问题。(如下图所示)

Store 指令

Beq 指令

A Pipelined Datapath

  • Ifetch阶段



PC+4(beq 时用得到) 和PC指令一同送入 IF/ID 流水段寄存器

  • Reg/Dec 阶段


将PC+4 ,imm,R[rs] ,R[rt] ,rt ,rd 送入 ID/ IE 流水段寄存器

  • Exec阶段



将 PC+4 ,zero ,ALU运算结果 , rt ,筛选出的目的寄存器地址送入Ex/Mem 流水段寄存器

  • Mem 阶段


将ALU运算结果,Do内容 ,目的寄存器地址送到Mem/Wr 流水段寄存器

只有 lw sw 指令会在Mem阶段进行访存操作 ,若是Load指令,会将ALU运算结果送入RA(Read Address),并从Do(Data Out)读取数据; 若是Store指令,会将ALU运算结果送入WA(Write Address),同时将 R[rt] 写入Di ;

在Mem阶段 如果是beq指令,还可能会进行跳转,跳转地址已经保存在Ex/Mem流水段寄存器。

  • Wr阶段


Wr阶段的MUX会选择写入寄存器的源数,是来自ALU还是来自DM,Mem/Wr 流水段寄存器中保存着目的寄存器的地址,在控制信号的作用下,写入正确的位置。

至此,我们已经介绍完毕流水线的数据通路了,下面介绍流水线的“指挥官”——控制信号



控制逻辑分为两个部分——主控生成ALUop和其他控制信号,局控根据ALUop和func字段生成ALUctrl





想一想可能产生什么问题??

(1)竞争问题

如果写入控制信号先于目的寄存器地址或Data的到达,那么会写入错误的地址或错的数据!!!怎么办呢???


那么可以让WrEn“等一等”

(2)Branch引起的“延迟现象”


beq指令在Cycle4取出,目标地址在Cycle7计算得出送入PC的输入端,Cycle8才能取出目标地址处的指令执行,在取目标指令之前,已经有三条指令被取出,取错了三条!!!!!这种现象称为 控制冒险/分支冒险/转移冒险

(3)Load引起的延迟

尽管Load指令在Cycle1就被取出,数据在Cycle5才能写入寄存器,如果要使用寄存器的内容,只用从Cycle6开始才能使用,所以如果Load后面紧跟的三条指令要使用目标寄存器的数据的话是不会得到正确值的!!!这种现象被称为 数据冒险/数据相关

计算机组成原理——指令流水线数据通路和控制逻辑相关推荐

  1. 计算机组成原理——指令流水线

    计算机组成原理--指令流水线 1. 综述 为提高CPU利用率,加快执行速度,将指令分为若干个阶段,可并行执行不同指令的不同阶段,从而多个指令可以同时执行.在有效地控制了流水线阻塞的情况下,流水线可大大 ...

  2. 【建议收藏】计算机组成原理---DMA、中断控制、I/O之间的联系与区别

    [建议收藏] 计算机组成原理-DMA.中断控制.I/O之间的联系与区别 本篇文章主要是记录我对于计算机组成原理中所遇到的一些疑问和疑惑的记录-----主要用于考研的记录 本章一共有几个知识点比较懵: ...

  3. 计算机组成原理——中央处理器-数据通路(课程笔记)

    说明 博客作为笔记备份,不定时更新 参考内容为<计算机组成原理(第3版)>唐朔飞 高等教育出版社:王道考研<计算机组成原理考研复习指导2023> 文中的例题摘自王道考研< ...

  4. 计算机组成原理cpu数据通路(Verilog HDL虚拟实验)

    数据通路的作用 数据在功能部件之间传送的路径称为数据通路,建立数据通路的任务是由"控制部件"来完成的 内部数据通路:CPU内部的数据传送通路,用于在寄存器之间或寄存器ALU之间传送 ...

  5. 计算机组成原理----有关数据通路

    有关数据通路 本篇来自对几道408真题的思考 本篇基于MIPS 资料内容来自<计算机组成与设计:硬件软件接口> 相关题目 首先来看数据通路在书中的定义 数据通路:是处理器中执行算术操作的部 ...

  6. 计算机组成原理——万字详解

    引言 作为还在学习的学生和不断进步的同事,学习计算机组成原理具有以下几个重要的好处:它可以帮助你深入理解计算机系统的工作原理,包括处理器.存储器.输入输出设备等组成部分之间的交互关系.这种深入理解可以 ...

  7. 计算机组成原理中J1J3是什么,计算机组成原理实验指导书.doc

    文档介绍: EvaluationWarning:ThedocumentwascreatedwithSpire..计算机组成原理实验指导书计算机组成原理实验指导书目录实验一8位算术逻辑运算实验 1实验二 ...

  8. 计算机组成原理单周期mips,计算机组成原理CPU单周期数据通路(MIPS)

    计算机组成原理CPU单周期数据通路(MIPS) [计算机组成原理]CPU:单周期数据通路(MIPS) 寄存器传送语言RTL 1)R(r)表示寄存器r的内容 2)M(address)表示主存储器地址ad ...

  9. 【计算机组成原理】CPU:单周期数据通路(MIPS)

    寄存器传送语言RTL 1)R(r)表示寄存器r的内容 2)M(address)表示主存储器地址address的内容 3)传输方向"←"表示,从右向左传输 4)程序计数器PC的内容直 ...

最新文章

  1. pcss评分_GTA5画质设置 N卡画质选项设置指南
  2. 为什么你闻不到自己胳肢窝的味道?
  3. idea ssm打war包_IDEA下从零开始搭建SpringBoot工程
  4. 【LeetCode - 443】压缩字符串(模拟)
  5. mysql设置输出格式_rsyslog 配置mysql输出格式
  6. null === undefined_【英】两个“非值”:undefined 和 null
  7. python监听键盘库_python监听、操作键盘鼠标库pynput详细教程|python基础教程|python入门|python教程...
  8. 用python海龟画图_天呐!python 的乌龟绘图怎么用啊!?
  9. 淘宝前端框架kissyui
  10. matlab 简单低通滤波器,基于MATLAB的理想低通滤波器的设计
  11. 史上最强 Java 学习路线图!
  12. three.js 文本_使用Three-bmfont-text在Three.js中创建文本
  13. html drag 例子,html5 drag事件用法
  14. php 裁剪png图片,解决thinkphp裁剪png图片背景不透明的方法
  15. 科技爱好者周刊:第 75 期
  16. 百度HI QQ,MSN ,阿里旺旺,贸易通,MSN在线客服,线聊天代码
  17. linux skyeye,用skyeye运行uClinux内核
  18. Mac电脑上哪个解压缩软件好用?MAC上好用的解压缩软件分享
  19. 模拟Get、Post请求
  20. 【JVM】Java IDEA 配置项目的JVM运行内存大小

热门文章

  1. linux管道的使用
  2. Python爬虫实战(爬取豆瓣电影)
  3. itoa函数和atoi函数的实现和用法
  4. CrowdHuman数据集转成VOC格式并训练模型
  5. Spring Security详细讲解(JWT+SpringSecurity登入案例)
  6. anchor_free and anchor_based的简单理解
  7. 向《数据科学实战》作者Cathy O'Neil提问!
  8. JVM内存模型及内存分配
  9. CPU占用率百分百原因及解决方法
  10. 数据结构笔记10-图的逻辑结构