26考研——中央处理器_指令流水线_指令流水线的基本概念 流水线的基本实现(5)

408答疑


文章目录

  • 六、指令流水线
    • 指令流水线的基本概念
    • 流水线的基本实现
      • 流水线设计的原则
      • 流水线的逻辑结构
      • 流水线的时空图表示
  • 八、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


六、指令流水线

  • 前面介绍的指令都是在单周期处理机中采用串行方法执行的,同一时刻 CPU 中只有一条指令在执行,因此各功能部件的使用率不高。
  • 现代计算机普遍采用指令流水线技术,同一时刻有多条指令在 CPU 的不同功能部件中并发执行,大大提高了功能部件的并行性和程序的执行效率。

指令流水线的基本概念

  • 可以从两方面提高处理机的并行性:

    1. 时间上的并行技术:将一个任务分解为几个不同的子阶段,每个子阶段在不同的功能部件上并行执行,以便在同一时刻能够同时执行多个任务,进而提升系统性能,这种方法被称为流水线技术。
    2. 空间上的并行技术:在一个处理机内设置多个执行相同任务的功能部件,并让这些功能部件并行工作,这样的处理机被称为超标量处理机。
  • 一条指令的执行过程可分解为若干阶段,每个阶段由相应的功能部件完成。若将各阶段视为相应的流水段,则指令的执行过程就构成了一条指令流水线。

    • 假设一条指令的执行过程分为如下 5 个阶段(也称功能段或流水段):

      • 取指(IF):从指令存储器或 Cache 中取指令。
      • 译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数。
      • 执行/计算地址(EX):执行运算操作或计算地址。
      • 访存(MEM):对存储器进行读/写操作。
      • 写回(WB):将指令执行结果写回寄存器堆。
    • k + 1 k+1 k+1 条指令的取指阶段提前到第 k k k 条指令的译码阶段,从而将第 k + 1 k+1 k+1 条指令的译码阶段与第 k k k 条指令的执行阶段同时进行,如下图所示。
      在这里插入图片描述

    • 理想情况下,每个时钟周期都有一条指令进入流水线,每个时钟周期都有一条指令完成,每条指令的时钟周期数(CPI)都为 1。

  • 为了利于实现指令流水线,指令集应具有如下特征:

    1. 指令长度应尽量一致:有利于简化取指令和指令译码操作。否则,取指令所花的时间长短不一,使得取指部件极其复杂,并且也不利于指令译码。
    2. 指令格式应尽量规整:尽量保证源寄存器的位置相同,有利于在指令未知时就可取寄存器操作数,否则须译码后才能确定指令中各寄存器编号的位置。
    3. 采用 LOAD/STORE 型指令:其他指令都不能访问存储器,这样可把 LOAD/STORE 指令的地址计算和运算指令的执行步骤规整在同一个周期中,有利于减少操作步骤。
    4. 数据和指令在存储器中“按边界对齐”存放:这样,有利于减少访存次数,使所需数据在一个流水段内就能从存储器中得到。

流水线的基本实现

流水线设计的原则

  • 在单周期实现中,虽然不是所有指令都必须经历完整的 5 个阶段,但只能以执行速度最慢的指令作为设计其时钟周期的依据,单周期 CPU 的时钟频率取决于数据通路中的最长路径。

  • 流水线设计的原则:

    1. 指令流水线段个数以最复杂指令所用的功能段个数为准;
    2. 流水段的长度以最复杂的操作所花的时间为准。
  • 假设某条指令的 5 个阶段所花的时间分别如下:① 取指:200 ps;② 译码:100 ps;③ 执行:150 ps;④ 访存:200 ps;⑤ 写回:100 ps。

    • 该指令的总执行时间为 750 ps。
    • 按照流水线设计原则,每个流水段的长度为 200 ps,所以每条指令的执行时间为 1ns,反而比串行执行时增加了 250 ps。
    • 假设某程序有 N N N 条指令,单周期处理机所用的时间为 N × 750 p s N \times 750ps N×750ps,而流水线处理机所用的时间为 ( N + 4 ) × 200 p s (N + 4) \times 200ps (N+4)×200ps
    • 由此可见,流水线方式并不能缩短单条指令的执行时间,但对于整个程序来说,执行效率得到了大幅提高。

流水线的逻辑结构

  • 每个流水段后面都要增加一个流水段寄存器,用于锁存本段处理完的所有数据,以保证本段的执行结果能在下个时钟周期给下一流水段使用,如下图所示。

在这里插入图片描述

  • 各种寄存器和数据存储器均采用统一时钟 CLK 进行同步,每来一个时钟,各段处理完的数据都将锁存到段尾的流水段寄存器中,作为后段的输入。同时,当前段也会收到前段通过流水段寄存器传递过来的数据。
  • 一条指令会依次进入 IF、ID、EX、MEM、WB 五个功能段进行处理,第一条指令进入 WB 段后,各流水段都包含一条不同的指令,流水线中将同时存在 5 条不同的指令并行执行。

在考试中,若没有明确说明,则可以不用考虑流水寄存器的时延。

流水线的时空图表示

  • 通常用时空图来直观地描述流水线的执行情况,如下图所示。
    在这里插入图片描述

    • 在时空图中,横坐标表示时间,它被分割成长度相等的时间段 T T T
    • 纵坐标为空间,表示当前指令所处的功能部件。
  • 在上图中,

    • 第一条指令 I 1 I_1 I1 在时刻 0 进入流水线,在时刻 5T 流出流水线。
    • 第二条指令 I 2 I_2 I2 在时刻 T T T 进入流水线,在时刻 6T 流出流水线。
    • 以此类推,每隔一个时间 T T T 就有一条指令进入流水线,从时刻 5T 开始每隔一个时间 T T T 就有一条指令流出流水线。
  • 从上图中可看出,在时刻 10T 时,流水线上便有 6 条指令流出。若采用串行方式执行,在时刻 10T 时,只能执行 2 条指令,可见使用流水线方式成倍地提高了计算机的速度。

只有大量连续任务不断输入流水线,才能充分发挥流水线的性能,而指令的执行正好是连续不断的,非常适合采用流水线技术。对于其他部件级流水线,如浮点运算流水线,同样也仅适合于提升浮点运算密集型应用的性能,对于单个运算是无法提升性能的。

八、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置集群(yarn)

在配置 YARN 集群前,要先完成以下准备工作: 集群环境规划:明确各节点的角色,如 ResourceManager、NodeManager 等。网络环境搭建:保证各个节点之间能够通过网络互通。时间同步设置:安装 NTP 服务&#xff0…

vue实现与后台springboot传递数据【传值/取值 Axios 】

vue实现与后台springboot传递数据【传值/取值】 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每…

二叉树路径总和

一、给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 112. 路径总和 - 力扣&…

Matlab 模糊控制平行侧边自动泊车

1、内容简介 Matlab 233-模糊控制平行侧边自动泊车 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

M0G3507完美移植江科大软件IIC MPU6050

经过两天两夜的查阅文献资料、整理学习,成功的把江科大的软件IIC读写MPU6050移植到MSPM0G3507,亲测有效!!包的,为了让大家直观地感受下,先上图。记得点个赞哦! 学过江科大的STM32的小伙伴是不是…

CI/CD与DevOps流程流程简述(提供思路)

一 CI/CD流程详解:代码集成、测试与发布部署 引言 在软件开发的世界里,CI/CD(持续集成/持续交付)就像是一套精密的流水线,确保代码从开发到上线的整个过程高效、稳定。我作为一名资深的软件工程师,接下来…

大数据基础——Ubuntu 安装

文章目录 Ubuntu 安装一、配置电脑二、安装系统 Ubuntu 安装 一、配置电脑 1、进入VMware 2、选择配置类型 3、选择硬件兼容性版本 4、当前虚拟机的操作系统 选择“稍后安装操作系统”(修改) 5、选择虚拟机将来需要安装的系统 选中“Linux”和选择…

LeetCode百题刷003(449周赛一二题)

遇到的问题都有解决的方案,希望我的博客可以为你提供一些帮助 一、不同字符数量最多为 K 时的最少删除数 (哈希表空间换时间) 不同字符数量最多为 K 时的最少删除数 - 力扣 (LeetCode) 竞赛https://leetcode.cn/contest/weekly-contest-449/…

【网安等保】OpenEuler 24.03系统主机安全加固及配置优化实践指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 📢 大家好,我是 WeiyiGeek,一个正在向全栈工程师(SecDevOps)前进的计算机技术爱好者,欢迎各位道友一起学习交流、一起进步 🚀&#xff0…

大模型赋能:2D 写实数字人开启实时交互新时代

在数字化浪潮席卷全球的当下,人工智能技术不断突破创新,其中大模型驱动的 2D 写实数字人正成为实时交互领域的一颗新星,引领着行业变革,为人们带来前所未有的交互体验。 一、2D 写实数字人概述 2D 写实数字人是通过计算机图形学…

Dockers部署oscarfonts/geoserver镜像的Geoserver

Dockers部署oscarfonts/geoserver镜像的Geoserver 说实话,最后发现要选择合适的Geoserver镜像才是关键,所以所以所以…🐷 推荐oscarfonts/geoserver的镜像! 一开始用kartoza/geoserver镜像一直提示内存不足,不过还好…

关于解决MySQL的常见问题

一:MySQL输入密码时闪退 这有可能是因为MySQL服务没有开启。 打开系统配置(直接搜索即可),查看MySQL服务是否开启。 此时显示的是已停止。确定是这个问题。 现在打开计算机管理(直接搜索即可)。 找到MyS…

LeetCode 热题 100 101. 对称二叉树

LeetCode 热题 100 | 101. 对称二叉树 大家好,今天我们来解决一道经典的二叉树问题——对称二叉树。这道题在 LeetCode 上被标记为简单难度,要求检查给定的二叉树是否轴对称。 问题描述 给你一个二叉树的根节点 root,检查它是否轴对称。 示…

图形化编程革命:iVX携手AI 原生开发范式

一、技术核心:图形化编程的底层架构解析 1. 图形化开发的效率优势:代码量减少 72% 的秘密 传统文本编程存在显著的信息密度瓶颈。以 "按钮点击→条件判断→调用接口→弹窗反馈" 流程为例,Python 实现需定义函数、处理缩进并编写 …

uniapp跨平台开发HarmonyOS NEXT应用初体验

之前写过使用uniapp开发鸿蒙应用的教程,简单介绍了如何配置开发环境和运行项目。那时候的HbuilderX还是4.22版本,小一年过去了HbuilderX的正式版本已经来到4.64,历经了多个版本的更新后,跨平台开发鸿蒙应用的体验大幅提升。今天再…

windows怎么修改DNS

好的,在 Windows 操作系统中修改 DNS 设置有几种方法,最常用的是通过“网络和 Internet 设置”。以下是详细步骤: 方法一:通过设置应用修改 DNS (适用于 Windows 10/11) 打开设置: 点击屏幕左下角的 Windows 开始按钮…

Java基本数据类型缓存池解析-源码剖析

抛出问题:new Integer(18) 与 Integer.valueOf(18) 的区别是什么? new Integer(18) 每次都会新建一个对象;Integer.valueOf(18) 会使⽤用缓存池中的对象,多次调用只会取同⼀一个对象的引用 Integer x new Integer(18); Integer y new Int…

WORD压缩两个免费方法

日常办公和学习中,Word文档常常因为包含大量图片、图表或复杂格式而导致文件体积过大,带来诸多不便,比如 邮件发送受限:许多邮箱附件限制在10-25MB,大文件无法直接发送 存储空间占用:大量文档占用硬盘或云…

罗技无线鼠标的配对方法

罗技鼠标的配对方法: 重新连接鼠标 请按照以下步骤将鼠标与 USB 接收器重新配对。 1.将USB接收器插入计算机。 2.将鼠标关闭电源。 3.按住并持续按住向右按钮,直到操作结束。 4.切换鼠标电源。 5. 单击一次左侧按钮。 6. 单击一次中间按钮。 7.全部松开&…

四、Hadoop 2.X vs 3.X:特性、架构与性能全解析

Hadoop 2.X 与 Hadoop 3.X 深度对比:版本特性、架构与性能剖析 在大数据处理的浪潮中,Hadoop 凭借其分布式存储与计算的强大能力,成为了业界的核心框架之一。随着技术的不断演进,Hadoop 也经历了多个重要版本的迭代。其中&#x…