[toc]

# 中央处理器

# CPU 的功能和基本结构

# CPU 的功能

  1. 指令控制
    完成取指令、分析指令、执行指令的操作,即程序的顺序控制
  2. 操作控制
    控制部件按指令的要求进行动作
  3. 时间控制
    为每条指令按时间顺序提供应有的控制信号
  4. 数据加工
    对数据进行算术和逻辑运算
  5. 中断加工
    对计算机运行过程中出现的异常情况特殊请求进行处理

# CPU 的基本结构

# 运算器

  1. 算术逻辑单元
    进行算术 / 逻辑运算
  2. 暂存寄存器
    暂存从主存读来的数据,该数据通常不能存放在通用寄存器
  3. 累加寄存器
    属于通用寄存器,暂时存放算术逻辑单元运算的结果信息,可以作为加法运算的一个输入端
  4. 通用寄存器组
    • 存放操作数(源操作数,目的操作数,中间结果)和各种地址信息
    • 可编程指定多种功能的寄存器
    • 位数与机器字长相等
    • 不可代替指令寄存器
  5. 程序状态字寄存器
    • 保留算术逻辑运算指令或测试指令的结果而建立的各种状态信息
    • 表征程序和机器运行状态
    • 对用户不透明
  6. 移位器
    对操作数或运算结果进行移位运算
  7. 计数器
    控制乘除运算的操作步数

# 控制器

# 控制器的基本功能

从主存中取出指令、分析指令并产生有关得到操作控制信号

# 控制器的类型
  1. 硬布线控制器
  2. 微程序控制器
# 控制器的构成
  1. 程序计数器
    • 指出下一条指令在主存中的存放地址
    • PC 的值会根据 CPU 在执行指令的过程中修改(取指周期末)或自增,或转移到程序的某处
    • 在无条件跳转指令的指令周期内,PC 的值 被修改 2 次 (取指周期结束自增 1,执行周期修改为要跳转的地址)
  2. 指令寄存器
    保存当前正在执行的指令,对用户透明
  3. 指令译码器
    仅对操作码字段译码,向控制器提供特定的操作信号
  4. 存储器地址寄存器
    存放所要访问的主存单元地址
  5. 存储器数据寄存器
    存放向主存写入的信息或从主存读出的信息
  6. 时序系统
    产生时序信号
  7. 微操作信号发生器

# Note

  • 条件转移指令执行时的依据标志寄存器的内容,判断是否满足转移条件

# 指令执行过程

# 指令周期

指令周期:CPU 从主存取出并执行一条指令所需的全部时间

机器周期:指令执行中每步操作(取指令、存储器读、存储器写)所需要的时间,若指令字长等于存储器字长,则取指周期等于机器周期

一个完整的指令周期包括:取指、间址、执行、中断

# 指令周期的数据流

# 取指周期

任务:根据 PC 的内容从主存中取出指令代码并存放在 IR 中

  1. PCMAR(地址寄存器)地址总线主存PC→MAR(地址寄存器)→地址总线→主存
  2. 控制单元(CU)发出控制信号控制总线主存控制单元(CU)发出控制信号→控制总线→主存
  3. 主存数据总线MDR(数据寄存器)IR主存→数据总线→ MDR(数据寄存器)→IR
  4. CU发出读命令PC的内容加1CU发出读命令→ PC 的内容加 1

# 间址周期

任务:取操作数的有效地址,将指令中的地址码送到 MAR 并送至地址总线,CU 向存储器发出读命令,获取有效地址并存至 MDR

  1. Ad(IR)(MDR)MAR地址总线主存Ad(IR)(或MDR)→MAR→地址总线→主存
  2. CU发出读命令控制总线主存CU发出读命令→控制总线→主存
  3. 主存数据总线MDR(存放有效地址)主存→数据总线→ MDR(存放有效地址)

# 执行周期

任务:根据 IR 中的指令字的操作码和操作数通过算术逻辑单元(ALU)操作产生执行结果

# 中断周期

任务:处理中断请求

# 指令的执行方案

# 单指令周期

  • 所有指令选用相同的执行时间来完成
  • 指令之间串行执行
  • 指令周期取决于执行时间最长的指令执行时间

# 多指令周期

  • 不同类型的指令选用不同的执行步骤
  • 指令之间串行执行
  • 不再要求所有指令占用相同的执行时间

# 流水线方案

  • 指令间可以并行执行
  • 力争在时钟脉冲周期完成一条指令的执行过程

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

# 数据通路的功能

  • 数据通路:数据在功能部件之间传送的路径
  • 描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器
  • 建立数据通路由 “操作控制部件” 完成

# 数据通路的基本结构

  1. CPU 内部单总线方式
    将所有寄存器的输入端和输出端连接到一条公共通路
    • 结构简单
    • 数据传输存在较多的冲突现象,性能低
  2. CPU 内部三总线方式
    将所有寄存器的输入端和输出端连接到多条公共通路上
    • 同时在多个总线上传送不同的数据,提高效率
  3. 专用数据通路方式
    根据指令执行过程中的数据和地址流动方向安排连接线路,避免使用共享的线路
    • 性能较高
    • 硬件量大

# 寄存器之间的数据传送

寄存器之间的数据传送可通过 CPU 内部总线完成,
以 PC 寄存器为例,把 PC 内容送入 MAR,实现传送操作的流程和控制信号为:

PC→BusPCout 有效,PC 内容送总线
Bus→MARMARin 有效,总线内容送 MAR

# 主存与 CPU 之间的数据传送

以 CPU 从主存读取指令为例:

PC→Bus→MARPCout、MARin 有效,现行指令地址→ MAR
1→RCU 发出读命令
MEM(MAR)→MDRMDRin 有效
MDR→Bus→IRMDRout 和 IRin 有效,现行指令→ IR

# 执行算数或逻辑运算

ALU 本身没有内部存储功能的组合电路,要执行加法操作,相加的两个数必须在 ALU 两个输入端同时有效

向将一个操作数经过 CPU 内部总线送入暂存器 Y 保存,Y 的内容在 ALU 的左输入端始终有效,再将另一个操作数经总线直接送到 ALU 右输入端,运算结果暂存在暂存器 Z 中

Ad(IR)→Bus→MARMDRout 和 MARin 有效
1→RCU 发出读命令
MEM→ 数据线→ MDR操作数从存储器→数据线→ MDR
MDR→Bus→YMDRout 和 Yin 有效,操作数→ Y
(ACC)+(Y)→ZACCout 和 ALUin 有效,CU 向 ALU 发出加命令,结果→ Z
Z→ACCZout 和 ACCin 有效,结果→ ACC

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

# 控制器的结构和功能

  1. 运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据
  2. 输入设备和输出设备通过接口电路与总线相连接
  3. 内存储器、输入设备和输出设备从地址总线接受地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据
  4. 控制器部件从数据总线接受指令信息,从运算部件接收指令转移地址,送出指令地址到地址总线,还需要向系统中的部件提供运行所需要的控制信号

# 控制器的主要功能

  1. 从主存取出一条指令,并指出下一条指令在主存中的位置
  2. 对指令译码或测试,产生相应的操作控制信号,以便启动规定的动作
  3. 指挥并控制 CPU、主存、输入和输出设备之间的数据流动方向

# 硬布线控制器

基本原理: 根据指令的要求、当前时序以及外部和内部的状态,按时间顺序发送一系列微操作控制信号,又称组合逻辑控制器

指令的操作码决定控制单元发出不同操作命令

# CU 的信号来源

  1. 经指令译码器产生的指令信息
  2. 时序系统产生的机器周期信号和节拍信号
  3. 来自执行单元的反馈信号即标志(次要)

# 硬布线控制器的时序系统及微操作

  1. 时钟周期
    时钟信号控制节拍发生器,每个节拍宽度正好对应一个时钟周期
  2. 机器周期
    可视为所有指令执行过程的一个基准时间,通常以存取周期为基准时间
  3. 指令周期
  4. 微操作命令分析

# CPU 的控制方式

  1. 同步控制方式
    系统有一个统一的时钟,所有的控制信号均来自这个时钟信号
    • 优点:控制电路简单
    • 缺点:运行速度慢
  2. 异步控制方式
    各部件按自身固有速度工作,通过应答方式进行联络
    • 优点:运行速度快
    • 缺点:控制电路复杂
  3. 联合控制方式
    对各种不同的指令的微操作采用同步控制,小部分采用异步控制

# 微程序控制器

# 微程序控制的基本概念

  1. 微命令与微操作
    • 微操作:一条机器指令可以分解为一个微操作序列,这些微操作是计算机中最基本的、不可再分的操作(微命令执行的操作
    • 微命令:微程序控制的计算机中,控制部件向执行部件发出的控制命令
  2. 微指令与微周期
    • 微指令:若干微命令的集合
      • 操作控制字段(微操作码字段):产生某一步操作需要的各种操作控制信号
      • 顺序控制字段(微地址码字段):控制产生下一条要执行的微指令地址
    • 微地址:存放微指令的控制存储器的单元地址
  3. 主存储器与控制存储器
    • 微程序控制存储器属于 CPU 的一部分
  4. 程序与微程序
    • 微程序:若干微指令的集合,实现一条对应的指令

# 微程序控制器组成和工作过程

# 微程序控制器的基本组成
  1. 控制存储器
    • 微程序控制器的核心部件
    • 存放个指令对应的微程序
  2. 微指令寄存器
    • 存放从 CM 中取出的微指令
  3. 微地址形成部件
    • 产生初始微地址和后继微地址,保证微指令连续执行
  4. 微地址寄存器
    接受微地址形成部件送来的微地址
# 微程序控制器的工作过程
  1. 执行取微指令公共操作
  2. 由机器指令的操作码字段通过微地址形成不见产生该机器指令对应的微程序入口地址,送入 CMAR
  3. 从 CM 中逐条取出对应的微指令并执行
  4. 重复上述操作

# 微指令的编码方式

# 设计目标
  • 执行速度
  • 灵活性
  • 指令长度
  1. 直接编码(直接控制)方式
    微指令的微命令字段每位都代表一个微命令
    • 优点:简单、直观、执行速度快,操作并行性好
    • 缺点:n 个微命令要求微指令的操作字段由 n 位,造成控制存储器的容量极大
  2. 字段直接编码方式
    微命令分成若干个小段,把互斥性微命令组合在同一字段,相容性微命令组合在不同字段,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义
    • 可以缩短微指令字长,比直接编码慢
    • 分段原则:
      1. 互斥性微命令分在同一段内,相容性微命令分在不同段
      2. 每个小段包含的信息位不能太多,否则增加线路的复杂性和译码时间
      3. 一般每个小段要留出一个状态,表示本字段不发出任何命令
  3. 字段间接编码方式
    一个字段的某些微命令需要由另一个字段中的某些微命令来解释,不是靠字段直接译码发出的命令,又称隐式编码

# 微指令的格式

  1. 水平型微指令
    • 直接编码、字段直接编码、字段间接编码、混合编码都属于水平型编码,能定义并执行几种并行操作
    • 优点:微程序短、执行速度快
    • 缺点:微指令长,编写微程序较麻烦
  2. 垂直型微指令
    • 类似机器指令的操作码方式,一条垂直型微指令只能定义并执行一种基本操作
    • 优点:微指令字短、简单、规整,便于编写微程序
    • 缺点:微程序长,执行速度慢、工作效率低
  3. 混合型微指令
    • 在垂直的基础上增加一些不太复杂的并行操作
    • 指令较短,便于编写,微程序也不长,执行速度加快

# Note

  • 在微程序控制器中,形成微程序入口地址的是微指令的操作码字段
微程序控制器硬布线控制器
工作原理微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可微操作控制信号由组合逻辑电路根据当前指令码、状态和时序,即时产生
执行速度
规整性较规整繁琐、不规整
应用场景CISCRISC
易扩充性易扩充修改困难

# 指令流水线

# 指令流水线的基本概念

# 流水线的定义

# 多条指令在处理器中执行的方式
  1. 顺序执行方式
    指令按顺序执行,前一条执行完成,才启动下一条指令
    • 优点:控制简单,硬件代价小
    • 缺点:执行指令的速度较慢
  2. 一次重叠执行方式
    同时进行第 k 条指令的执行阶段和 k+1 条指令的取指阶段
    • 优点:程序的执行时间缩短了三分之一,各功能部件的利用率明显提高
  3. 二次重叠执行方式
    k+1 条指令的取指阶段提前到分析第 k 条指令的期间完成,分析第 k+1 条指令与执行第 k 条指令同时进行

# 流水线方式的特点

  1. 把一个任务分解成几个有联系的子任务,每个任务由一个专门的功能部件来执行,依靠多个功能部件并行工作来缩短程序的执行时间
  2. 流水线的每个功能部件后面都要有一个缓冲器或锁存器,作用是保存本流水段的执行结果,供下一段流水使用
  3. 流水线中各个功能段时间应尽量相同,否则将引起堵塞、断流
  4. 流水线中处理的必须是连续任务
  5. 流水线由装入时间排空时间

# 流水线的分类

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

  • 部件功能级:将复杂的算术逻辑运算组成刘淑娴工作方式
  • 处理机级:将一条指令的解释过程分成多个子过程
  • 处理机间级:宏流水,每个处理机完成某一专门任务

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

  • 单功能:实现一种固定的专门功能的流水线
  • 多功能:通过各段间的不同的连接方式同时或不同时地实现多种功能

# 动态流水线和静态流水线

  • 静态:同一时间内各段只能按同一种功能的连接方式工作
  • 动态:同一时间内,某些段实现某种运算,另一些正在进行另一种运算

# 线性流水线和非线性流水线

  • 线性:从输入到输出,每个功能段只允许经过一次,不存在反馈回路
  • 非线性:存在反馈回路,适合进行线性递归运算

# 影响流水线的因素

# 结构相关(资源冲突)

多条指令同一时刻争用同一资源

解决方法:

  1. 后一条相关指令暂停一个时钟周期
  2. 单独设置数据存储器和指令存储器

# 数据相关(数据冲突)

必须等前一条指令执行完才能执行后一条指令

解决方法:

  1. 遇到数据相关额指令及其后续指令暂停一个至几个时钟周期
  2. 设置相关专用通路(数据旁路技术)
  3. 指令编译优化,调整指令顺序解决

# 控制相关(控制冲突)

流水线遇到转移指令和其他改变 PC 值的指令造成断流

解决方法:

  1. 对指令进行分支预测
  2. 预取转移成功和不成功两个控制流方向上的目标指令
  3. 加快和提前形成条件码
  4. 提高 转移方向的猜准率

# 流水线的性能指标

# 流水线的吞吐率

TP=nTk=n(k+n1)ΔtTP=\frac{n}{T_k}=\frac{n}{(k+n-1)Δt}

TkT_k:处理完 n 个任务所用的时间

# 流水线的加速比

S=T0Tk=knΔt(k+n1)Δt=knk+n1S=\frac{T_0}{T_k}=\frac{knΔt}{(k+n-1)Δt}=\frac{kn}{k+n-1}

# 流水线的效率

E=n个任务占用的时空区有效面积n个任务所用的时间与k个流水段所围成的时空区总面积=T0kTkE=\frac{n个任务占用的时空区有效面积}{n 个任务所用的时间与 k 个流水段所围成的时空区总面积}=\frac{T_0}{kT_k}

# 超量流水线的基本概念

# 超标量流水线技术

并行操作方式将两条或多条指令编译执行,需配备多个功能部件

# 超流水线技术

一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次

# 超长指令字

将多条能并行操作系统的指令组合成一条具有多个操作码字段的超长指令字(可达几百位),需要采用多个处理部件