中央处理器
第五章_中央处理器
5.1 CPU 的功能和基本结构
本小节思维导图如下(挺杂乱的):
CPU 内部分为运算器和控制器:
- 运算器:

- 控制器:
注意别把微操作信号发生器当做 CU 了,CU 比它大得多。

最后贴出一张 CPU 总的结构图:
注意,三态门可以用 MUX(多路选择器)进行替代。
5.2 指令执行过程
本小节思维导图如下:

5.2.1 指令周期概念补充
早期计算机采用“机器周期-节拍-脉冲”三级时序系统。指令周期、机器周期和时钟周期 的区别如下图所示:
值得注意的是,不同指令的机器周期数是可以不等的,每个机器周期内的节拍数也可以是不相等的。如下图所示:
现代处理器已经大幅度简化时序结构,“机器周期”这一概念逐渐淡化。CPU 内部由统一的系统时钟直接驱动,一个时钟周期即对应一个节拍,绝大多数指令可在若干时钟周期内高效完成。(不知道什么意思就按照老的时序系统记)
5.2.2 指令周期流程
不难看出,指令周期其实不止取指周期和执行周期,可能含有四个周期,将其用流程图表示如下:
关于指令周期的每个机器周期执行的具体过程需要掌握,如下所示:
- 取指周期:

- 间址周期:

- 执行周期: 每条指令的执行过程不同,不方便讲述。
- 中断周期:
注意:中断周期是CPU响应外部中断时在指令周期末尾插入的控制过程,用于保存断点并转入中断服务程序,与汇编语言中的函数调用(call / ret)机制无关。

5.2.3 指令执行方案

5.3 数据通路的功能和基本结构
数据通路分为:
- CPU 内部总线:单总线、多总线。
- 专用数据通路。
5.3.1 单总线结构
单总线数据通路结构简洁,所有数据传输共享一条内部总线,同一时刻仅允许一个部件向总线输出数据,导致操作需要分步进行。
本小节在考研中就主要考察一个指令的具体操作,CPU 内部的数据传输一般就分为三种,如下图所示:
通过一个例题来具体熟悉:

5.3.2 专用数据通路
专用数据通路是 CPU 中各功能部件之间采用固定的、专门的数据传送线路进行连接的数据通路结构。如下图所示:
通过一个例题来具体熟悉:

5.4 控制器的功能和基本结构
说一句话,在考研中,所有的底层硬件其实只需要知道控制流程,不用知道电路如何真正驱动控制流程。 例如:
- 门级电路如何实现
- 控制信号具体时序
- 晶体管级实现
- 电平变化传播
- setup/hold
- 时钟树
这些已经偏 CPU设计 / 数字IC / 体系结构了。
5.4.1 硬布线控制器
硬布线控制器由复杂的组合逻辑电路和触发器构成,也称 组合逻辑控制器。
首先我们需要知道,按照老版本的时序系统,一个指令分为多个机器周期(取指、间址、执行、中断),而每一个机器周期又分为多个节拍对应的微操作。如下图所示:
注意:一个节拍内可以并行完成多个“相容”的微操作。
而 控制单元 CU 总观如图所示:
有了上面的基础,我们显然能够想出,在 CU 内部,通过对 指令操作码、目前的机器周期、节拍信号、机器状态条件 进行逻辑电路设计,CU 就能判断现在应该执行什么微命令。如下图所示:

接下来当然面临的就是 硬布线控制器的设计问题: 设计步骤:
- 分析每个阶段的微操作序列(取值、间址、执行、中断 四个阶段)。(即确定哪些指令在什么阶段、在什么条件下会使用到的微操作)。
- 选择 CPU 的控制方式,(即采用定长机器周期还是不定长机器周期?每个机器周期安排几个节拍?),这里讲述假设采用同步控制方式(定长机器周期),一个机器周期内安排 3 个节拍。
- 安排微操作时序,(即如何用 3 个节拍完成整个机器周期内的所有微操作?)。
- 电路设计,(即确定每个微操作命令的逻辑表达式,并用电路实现)。
- 列出操作时间表
- 写出微操作命令的最简表达式
- 画出逻辑图
关于 步骤一:
关于 步骤三:
关于 步骤四:
理解步骤四,基本就能理解整个设计思路:
由于不同指令的执行周期对应不同的微命令,每个机器周期每个节拍也不同,所以将其列成了一张很长的表。
根据上面这张表,我们就能轻松的设计出微命令对应的逻辑表达式,从而设计出逻辑电路啦!
画逻辑图参考上面那张图。
5.4.2 微程序控制器
本节思维导图如下:

5.4.2.1 微程序控制器基本原理
本小节思维导图如下:
首先明确一下 微程序、微指令、微命令/微操作 这之间的区别,如下图所示:
微程序控制器的基本结构 如下图所示,其实可以看成是一个 CPU 内部又套了一个更小、更简单的 CPU:
特别注意控制存储器 CM,微程序就存储在其中。
关于微程序控制器的工作原理如下图所示:
关于微程序控制器的一些选择题常考点需要进行说明:

5.4.2.2 微指令的设计
本小节思维导图如下:

微指令的编码方式 也叫做微指令的控制方式,是指对 操作控制字段进行组织和表示的方法。微指令有三种编码方式,如下图所示:
而 微指令的格式 也有如下三种:
- 水平型微指令:从编码方式上看,直接编码、字符直接编码、字符间接编码都属于水平型微指令,每一位(或每一字段)直接对应一个微指令。
- 垂直型微指令:在微指令中设置 微操作码字段,通过译码产生控制信号,一条垂直型微指令通常显示定义 一个 微操作。
- 混合型微指令

而 下一条微指令形成的方式 有如下几种方法:

通过两道例题来分别熟悉 微指令的编码方式 和 下一条微指令形成的方式的考察方式:

5.4.2.3 微程序控制器的设计
微程序控制器的设计步骤总览如下:
其实和硬布线控制器差不多还更加简单。
记得微程序控制器在每个伪指令之间会有 特有操作!用取指周期示例如下:
微程序设计分类 如下:
- 静态微程序设计和动态微程序设计:
- 静态 微程序无需改变,采用 ROM
- 动态 通过 改变微指令 和 微程序 改变机器指令,有利于仿真,采用 EPROM(电可擦除)
- 毫微程序设计基本概念(了解即可)
- 微程序设计 用 微程序解释机器指令
- 毫微程序设计 用 毫微程序解释微程序
5.4.3 硬布线和微程序的比较

5.5 指令流水线
在指令执行方案那一小节介绍过三种执行方案,前面介绍的单周期处理器采用串行的方式执行命令,而这个小节介绍的就是流水线这个方案。思维导图如下图所示:

5.5.1 指令流水线的基本概念和性能指标
提升处理器并行性的主要途径有两类:
- 时间上的并行:将一个任务分解成多个子阶段,各阶段由专用功能部件依次处理,并允许多个任务在不同阶段推进,即 流水线技术。
- 空间上的并行:在一个处理器内配置多个相同的功能部件,使其并行工作,称为 超量处理器。
典型的五段流水线将指令执行划分为以下阶段(前面的周期划分是逻辑上的划分,这里是硬件上的划分,是如何把一条指令拆成更小步骤,让多条指令同时执行):
- 取指(IF):从指令存储器或缓存中读取指令。
- 译码 / 读寄存器(ID):对指令进行译码,并从寄存器堆中读取操作数。
- 执行 / 计算地址(EX):执行算术逻辑运算或计算有效地址。
- 访存(MEM):访问主存储器,完成数据的读或写操作。
- 写回(WB):将执行结果写回寄存器堆。
而流水线的表示方法通常使用下面两张图进行表示:

指令流水线的性能指标主要有三个:吞吐率、加速比 和 效率,如下图所示:
注意:下面这些情况都是在理想情况下讨论(完美衔接)。
计算总时间还可以这么看:
第一个任务执行完要 k t,执行完第一个任务后后面 n - 1 个任务每隔 t 执行完一个。
5.5.2 指令流水线的影响因素和分类
前面说的指令分为了五个阶段,具体如下图所示:
而 影响指令流水线的因素 具体有如下三种:
- 结构相关(资源冲突,类似操作系统中的互斥):

- 数据相关(数据冲突,类似操作系统中的同步):

- 控制相关(控制冲突):

注意结构相关和数据相关的区别: 数据相关是指令之间存在依赖关系,等别人用完才能用;结构相关和指令之间的依赖关系无关,纯纯是去争硬件。
关于指令流水线的分类如下图所示:

5.5.3 多发技术(高级流水线技术)
有两种策略能够提升指令级的并行度:
- 多发射技术:通过配置多个内部功能部件,使流水线在每个时钟周期能够处理多条指令,处理器一次能够发射多条指令进入流水线执行。
- 超流水线技术:通过增加流水线级数,使更多的指令在流水线中重叠执行。
具体有以下三种,如图所示:

5.5.4 五段式指令流水线
前面已经提过五段式指令流水线,本节是对各指令在五段式指令流水线更具体的分析。 考研中常考的指令有五种(指令系统-指令的基本格式小节,有具体的分类):
- 运算类指令
- LOAD 指令
- STORE 指令
- 条件转移指令
- 无条件转移指令
分别如下图所示:
通过一个例题来理解要学习这些指令在流水线中的具体过程干什么:

5.6 多处理器的基本概念
本节考研只考选择题
5.6.1 计算机体系结构分类
根据指令流和数据流的数量,计算机体系结构 可以分为四类:
- SISD(Single Instruction, Single Data):截止当前,前面学的所有都是这个结构。常规的单处理器属于 SISD。
- SIMD(Single Instruction, Multiple Data)
- MISD(Multiple Instruction, Single Data)
- MIMD(Multiple Instruction, Multiple Data): 常规的多处理器属于 MIMD。
一张思维导图总体说明:
对于 SIMD 可能有些不清晰,用一张不太严谨的图形象化一下:

5.6.2 一些特别的处理器
有些不那么特别符合标准规范的处理器:
- 向量处理机:
其实就是 SIMD 的一种延伸,专门用于向量的运算(处理的对象是向量),比如矩阵:

- 共享存储多处理器系统:
共享单一物理地址存储空间的多处理器系统被称为共享存储多处理器系统。只是多处理器系统命名角度不同而已!
GPT 说可以是单节点多核,也可以是多节点。

- 多核处理器: 也是 MIMD 中的多处理器系统,只是命名角度的不同。 一个 CPU 芯片中包含多个处理器,即多个核(core),因此通常也称为片级多处理器(Chip-Level MultiProcessing, CMP)。意思是:一块芯片上集成了多个处理器 所有核共享一个 LLC(Last-Level Cache),并共享主存储器
5.6.3 硬件多线程
首先需要了解什么是硬件支不支持多线程,如下图所示:
而关于硬件多线程的分类用一张图就能说明,不用深究:
