《超越顺序:揭秘CPU如何用流水线与多核“加速”思考》

本篇技术博文摘要 🌟

  • 本章"中央处理器"深入探讨了计算机的运算与控制核心。
  • 首先阐述CPU的功能、基本结构(运算器、控制器)及指令执行的全周期过程。
  • 核心在于数据通路 的构建(单总线/专用通路)与控制器 的实现原理------既包括直接由硬件逻辑实现的硬布线控制器 ,也包含依靠微程序存储的微程序控制器,并比较了二者特点。
  • 为提高性能,本章重点讲解了指令流水线技术,分析其影响因素(结构、数据、控制相关)与分类,并介绍了超标量等先进流水线设计。
  • 此外,还涵盖了异常中断处理机制,以及多处理器、硬件多线程等提升并行处理能力的基本概念。全章系统揭示了CPU从基础运行到高效并行的工作机理。

引言 📘

  • 在这个变幻莫测、快速发展的技术时代,与时俱进是每个IT工程师的必修课。
  • 我是盛透侧视攻城狮,一名什么都会一丢丢的网络安全工程师,也是众多技术社区的活跃成员以及多家大厂官方认可人员,希望能够与各位在此共同成长。

上节回顾

目录

[本篇技术博文摘要 🌟](#本篇技术博文摘要 🌟)

[引言 📘](#引言 📘)

上节回顾

5.1CPU的功能和基本结构

运算器的基本结构​

控制器的基本结构​

CPU的基本结构​

本节主要问题解答

本小节回顾​

[5.2 指令执行过程](#5.2 指令执行过程)

[5.2.1 指令周期](#5.2.1 指令周期)

[5.2.2 指令周期的数据流](#5.2.2 指令周期的数据流)

取指周期​

间址周期​

执行周期

中断周期​

本小节主要问题解答

[5.2.3 指令执行方案​](#5.2.3 指令执行方案)

本节回顾​

5.3数据通路的功能和基本结构

[5.3.1 数据通路-单总线结构](#5.3.1 数据通路-单总线结构)

数据通路-CPU内部单总线方式

CPU内部总线方式-例题

[5.3.2 数据通路-专用通路结构](#5.3.2 数据通路-专用通路结构)

专用数据通路方式-取值周期​

[5.4 控制器的功能和工作原理](#5.4 控制器的功能和工作原理)

5.4.1硬布线控制器的设计​

硬布线控制器​

硬布线控制器的设计(理解即可)​

分析每个阶段的微操作序列​

安排微操作时序的原则-取值周期​

安排微操作时序的原则-间值周期​

安排微操作时序的原则-执行周期​

电路设计-组合逻辑设计​

[5.4.2 微程序控制器的基本原理](#5.4.2 微程序控制器的基本原理)

微程序控制器的基本结构​

微程序控制器的工作原理​

本小节回顾​

[5.4.3 微指令的设计](#5.4.3 微指令的设计)

微指令的编码方式​

微指令的地址形成方式​

例题-断定方式​

本节主要问题答疑

本小节回顾​

[5.4.4 微程序控制单元的设计​](#5.4.4 微程序控制单元的设计)

微程序设计的分类

硬布线与微程序的比较​

本小节回顾​

5.5异常与中断机制​

5.6指令流水线

[5.6.1 指令流水线的基本概念](#5.6.1 指令流水线的基本概念)

指令流水线的定义

指令流水线的表示方式

流水线的性能指标​

本节主要问题解答

[5.6.2 指令流水线的影响因素和分类](#5.6.2 指令流水线的影响因素和分类)

机器周期的设置​

影响流水线的因素​

结构相关​

数据相关​

控制相关​

流水线的分类

流水线的多发技术

1.超标量技术​

[2. 超流水技术​](#2. 超流水技术)

[3. 超长指令字​](#3. 超长指令字)

本小节主要问题解答

本小节回顾​

[5.6.3 五段式指令流水线](#5.6.3 五段式指令流水线)

运算类指令的执行过程​

LOAD指令的执行过程​

STORE指令的执行过程​

条件转移指令的执行过程​

无条件转移指令的执行过程​

5.7多处理器的基本概念

SISD单指令流单数据流

SIMD单指令流多数据流​

MIMD​

向量处理器

本小回顾​

[5.7.2 硬件多线程的基本概念​](#5.7.2 硬件多线程的基本概念)

三种硬件多线程​

本小节回顾

欢迎各位彦祖与热巴畅游本人专栏与技术博客

你的三连是我最大的动力

点击➡️指向的专栏名即可闪现

➡️计算机组成原理

➡️操作系统

➡️渗透终极之红队攻击行动

➡️动画可视化数据结构与算法

[➡️ 永恒之心蓝队联纵合横防御](#➡️ 永恒之心蓝队联纵合横防御)

➡️华为高级网络工程师

➡️华为高级防火墙防御集成部署

[➡️ 未授权访问漏洞横向渗透利用](#➡️ 未授权访问漏洞横向渗透利用)

➡️逆向软件破解工程

[➡️MYSQL REDIS 进阶实操](#➡️MYSQL REDIS 进阶实操)

➡️红帽高级工程师​

➡️红帽系统管理员

[➡️HVV 全国各地面试题汇总](#➡️HVV 全国各地面试题汇总)


5.1CPU的功能和基本结构

  • 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。

  • 操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。

  • 时间控制。对各种操作加以时间上的控制。时间控制为每条指令按时间顺序提供应有的控制信号。

  • 数据加工。对数据进行算数和逻辑运算。

  • 中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。

  • 存储器容量:决定了计算机需要用来进行寻址的比特数,决定了地址的长度。

运算器的基本结构

  • CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共的通路上。

    • 如:两个操作数分别来自主存和R0,最后结果存回R0,那么从主存中取来的操作数直接放入暂存器,就不会破坏运算前R0的内容。
  • 在R0给的信号不稳定之前,ALU会产生一个输出信号送到内部总线上,就会与R0送到内部总线上的信号冲突,从而导致运算的错误。在ALU的输出端加一个暂存寄存器,等R0送到总线上的信号稳定之后,ALU把运算的结果放到暂存寄存器中,在ALU的输出稳定之后,让三态门导通,把运算结果送到内部总线上,给R0的输入端加上有效的电信号,就会把运算的结果输入到R0寄存器中。

控制器的基本结构

  • 注意:
    • CPU内部寄存器大致可分为两类:
      • 一类是用户可见的寄存器 可对这类寄存器编程,如通用寄存器组、程序状态字寄存器;
      • 另一类是用户不可见的寄存器,对用户是透明的,不可对这类寄存器编程,如存储器地址寄存器MAR、存储器数据寄存器MDR、指令寄存器IR。

CPU的基本结构

本节主要问题解答

  • CPU分为哪几部分?分别实现什么功能?
    • CPU分为运算器和控制器。其中运算器主要负责数据的加工,即对数据进行算术和逻辑运算控制器是整个系统的指挥中枢,对整个计算机系统进行有效的控制,包括指令控制、操作控制、时间控制和中断处理。
  • 指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
    • 从时间上讲,取指令事件发生在"取指周期",取数据事件发生在"执行周期"。
    • 从空间上讲,从内存读出的指令流流向控制器(指令寄存器),从内存读出的数据流流向运算器(通用寄存器)

本小节回顾

5.2 指令执行过程

5.2.1 指令周期

5.2.2 指令周期的数据流

取指周期

间址周期

  • 补充
    • 间址周期的作用是取操作数的有效地址,因此间址周期结束后,MDR的内容为操作数地址。

执行周期

  • 根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行操作不同,因此没有统一的数据流向。

中断周期

本小节主要问题解答

  • 指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
    • 从时间上讲,取指令事件发生在"取指周期",取数据事件发生在"执行周期"。
    • 从空间上讲,从内存读出的指令流流向控制器(指令寄存器),从内存读出的数据流流向运算器(通用寄存器)。
  • 什么是指令周期、机器周期和时钟周期?它们之间有何关系?
    • CPU每取出并执行一条指令所需的全部时间称为指令周期;
    • 机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需的时间,通常安排机器周期长度=主存周期;
    • 时钟周期是指计算机主时钟的周期时间,它是计算机运行时最基本的时序单位,对应完成一个微操作所需的时间,通常时钟周期=计算机主频的倒数
  • 指令周期是否有一个固定值?为什么?
    • 由于计算机中各种指令执行所需的时间差异很大,因此为了提高CPU的运行效率,即使在同步控制的机器中,不同指令的指令周期长度都是不一致的,即指令周期对不同的指令来说不是个固定值。

5.2.3 指令执行方案

本节回顾

5.3数据通路的功能和基本结构

5.3.1 数据通路-单总线结构

  • 数据通路通常指指令执行过程中数据经过的路径以及路径上的部件。
  • 数据通路=电路+部件(组合+时序),并且由控制信号进行控制。
  • 组合逻辑元件(操作元件):不能存储,如多路选择器MUX、ALU、译码器。
  • 时序逻辑元件(状态元件):能存储,如寄存器。

数据通路-CPU内部单总线方式

  • 以下内容结合1.2.2"计算机的工作过程"进行学习
  • 每个时钟周期内,CU都会发出一组相应的控制信号,来完成某一个微操作,到下一个时钟周期,CU又会发出第二个控制信号,完成第二个微操作。

CPU内部总线方式-例题

  • (R0)目的操作数,有括号需要进行一次间接寻址,表示R0中存放的是操作数在主存中的存储地址。
  • R1源操作数,没有括号表示操作数直接存放在R1寄存器中。

5.3.2 数据通路-专用通路结构

专用数据通路方式-取值周期

  • 采用CPU内部总线:结构简单,实现容易,性能较低,存在较多的冲突现象。

  • 专用数据通路:结构复杂,硬件量大,不易实现,性能高,基本不存在数据冲突现象。

  • 数据总线是双向的:CPU-->内存,内存-->CPU

  • 地址总线是单向的:CPU-->内存

  • 考试中,建议把间址周期合并到执行周期,因为每个人对间址周期的理解是不一样的

5.4 控制器的功能和工作原理

5.4.1硬布线控制器的设计

  • CU发出一个微命令,可完成对应微操作。如:微命令 1使得PCout、MARin有效。完成对应的微操作1(PC)->MAR

  • 根据指令操作码、目前的机器周期、节拍信号(T0、T1、T2)、机器状态条件(如PSW中溢出、正负性等)、即可确定现在这个节拍下应该发出哪些微命令。

硬布线控制器

硬布线控制器的设计(理解即可)

分析每个阶段的微操作序列

安排微操作时序的原则-取值周期

安排微操作时序的原则-间值周期

安排微操作时序的原则-执行周期

电路设计-组合逻辑设计

5.4.2 微程序控制器的基本原理

  • 采用"存储程序"的思想,CPU出厂前将所有指令的"微程序"存入"控制器存储器"中。

微程序控制器的基本结构

微程序控制器的工作原理

本小节回顾

5.4.3 微指令的设计

  • 微命令与微操作一一对应,一个微命令对应一根输出线

  • 有的微命令可以并行执行,因此一条微指令可以包含多个微命令

  • 相容性微命令:可以并行完成的微命令。

  • 互斥性微命令:不允许并行完成的微命令。

微指令的编码方式

  • 字段直接编码方式:
    • 优点:可以缩短微指令字长
    • 缺点:要通过移码电路后再发出微命令,因此比直接编码方式慢。

微指令的地址形成方式

例题-断定方式

本节主要问题答疑

  • 什么是微指令?它和第4章谈到的指令有什么关系?
    • 控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令称为微命令,而一组实现一定操作功能的微命令的组合 ,构成一条微指令。许多条微指令组成的序列构成微程序,微程序完成对指令的解释执行。
    • 指令,即指机器指令。 每条指令可以完成一个独立的算术运算或逻辑运算操作**。在采用微程序控制器的CPU中,一条指令对应一个微程序,一个微程序由许多微指令构成,一条微指令会发出很多不同的微命令**

本小节回顾

5.4.4 微程序控制单元的设计

微程序设计的分类

  • 静态微程序设计和动态微程序设计
    • 静态:微程序无需改变,采用ROM
    • 动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM
  • 豪微程序设计
    • 豪微程序设计的基本概念
    • 微程序设计用微程序解释机器指令
    • 豪微程序设计用豪微程序解释微程序

硬布线与微程序的比较

本小节回顾

5.5异常与中断机制

5.6指令流水线

5.6.1 指令流水线的基本概念

指令流水线的定义

  • 一条指令的执行过程可以分成多个阶段(或过程)。根据计算机的不同,具体的分法也不同。

  • 取指:根据PC内容访问主存储器,取出一条指令送到IR中。

  • 分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。

  • 执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。

    设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间:

指令流水线的表示方式

  • 主要用于分析流水线的性能

流水线的性能指标

  • 一条指令的执行分为k个阶段,每个阶段耗时△t,一般取△t=一个时钟周期

本节主要问题解答

  • 什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比?
    • 指令流水线是把指令分解为若干子过程,通过将每个子过程与其他子过程并行执行,来提高计算机的吞吐率的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍使用的一种并行处理技术,通过在同一个时间段使用各功能部件,使得利用率明显提高。
    • 流水线的加速比指的是完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。一条k段流水线理论上的最大加速比为Smax=k。因此,在现代计算机中提高流水线段数有利于提高计算机的吞吐量。具体的加速比要使用时空图来计算。

5.6.2 指令流水线的影响因素和分类

机器周期的设置

  • IF:取指阶段;
  • ID:指令译码阶段(指令译码,从通用寄存器中取出当前指令所需要的操作数),imm立即数;
  • EX:执行阶段;
  • M:访存阶段;
  • WB:写回通用寄存器组
  • cache:data cache和insrtuction cache,将数据和指令放在两个独立的模块中,对这两个模块的访问可以并行进行。

影响流水线的因素

  • 结构相关(资源冲突--"互斥")
  • 数据相关(数据冲突-"同步")
  • 控制相关(控制冲突)
结构相关
数据相关
  • 如果有后续的指令可以提前执行,不需要依赖前序指令的执行结果,可以通过编译器调整指令顺序来解决数据相关。(类似于插入空操作)
控制相关

流水线的分类

  • 部件功能级、处理机级和处理机间级流水线

    • 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。

    • 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。

    • 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。

    • 处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。

  • 单功能流水线和多功能流水线

    • 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。
    • 单功能流水线指只能实现一种固定的专门功能的流水线;
    • 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流永线。
  • 动态流水线和静态流水线

    • 按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
    • 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
    • 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
  • 线性流水线和非线性流水线

    • 按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
    • 线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
    • 非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

流水线的多发技术

1.超标量技术
2. 超流水技术
3. 超长指令字

本小节主要问题解答

  • 流水线越多,并行度就越高。是否流水段越多,指令执行越快?
    • 错误,因为如下:
      • **流水段缓冲之间的额外开销增大。**每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大。
      • **流水段间控制逻辑变多、变复杂。**用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
  • 有关指令相关、数据相关的几个概念
    1. 两条连续的指令读取相同的寄存器时,会产生读后读( Read After Read,RAR)相关,这种相关不会影响流水线。
    2. 某条指令要读取上一条指令所写入的寄存器时,会产生写后读( Read After Write,RAW)相关,它称数据相关或真相关,影响流水线。按序流动的流水线只可能出现RAW相关。
    3. 某条指令的上条指令要读/写该指令的输出寄存器时,会产生读后写( Write After Read,WAR)和写后写( Write After Write,WAW)相关。在非按序流动的流水线中,既可能发生RAW相关,又可能发生WAR相关和WAW相关。
    4. 对流水线影响最严重的指令相关是数据相关。

本小节回顾

5.6.3 五段式指令流水线

运算类指令的执行过程

LOAD指令的执行过程

STORE指令的执行过程

条件转移指令的执行过程

无条件转移指令的执行过程

5.7多处理器的基本概念

SISD单指令流单数据流

SIMD单指令流多数据流

MIMD

  • 多计算机系统

向量处理器

  • 例如:
    • 向量处理机的LOAD指令,可以将一个向量取到向量寄存器中;加法指令,可以实现两个向量相加应用于:向量计算、大量浮点数计算,空气动力学、核物理学、巨型矩阵计算问题很多超级计算机如中国的"银河"就是向量外理器

本小回顾

  • 单指令流单数据流SISD结构:一个指令流对应一个数据流
  • 单指令流多数据流SIMD结构:一个指令流对应多个数据流
  • 多指令流单数据流MISD结构:多个指令流对应一个数据流(事实上不存在)
  • 多指令流多数据流MIMD结构:多个指令流对应多个数据流
  • M:Multiple
  • S:Single
  • l:Instruction
  • D:Data
  • UMA:统一存储访问
  • NUMA:非统一存储访问

5.7.2 硬件多线程的基本概念

三种硬件多线程

本小节回顾

欢迎各位彦祖与热巴畅游本人专栏与技术博客

你的三连是我最大的动力

点击➡️指向的专栏名即可闪现

➡️计算机组成原理****
➡️操作系统
➡️****渗透终极之红队攻击行动********
➡️ 动画可视化数据结构与算法
➡️ 永恒之心蓝队联纵合横防御
➡️****华为高级网络工程师********
➡️****华为高级防火墙防御集成部署********
➡️ 未授权访问漏洞横向渗透利用
➡️****逆向软件破解工程********
➡️****MYSQL REDIS 进阶实操********
➡️****红帽高级工程师****
➡️****红帽系统管理员********
➡️****HVV 全国各地面试题汇总********