第五章:中央处理器

一、CPU的功能和基本结构

1. CPU的功能

  • 指令控制
    • 操作控制
      • 时间控制
        • 数据加工
          • 中断处理

2. CPU的基本结构

  • 组成
    • 运算器
      • 算数逻辑单元
        • 进行算术逻辑运算
      • 暂存寄存器
        • 用于暂存从主存读来的数据
      • 累加寄存器
        • 暂存ALU运算的结果,可以作为加法运算的一个输入端
      • 通用寄存器组
        • 存放操作数和各种地址信息(不存放指令)
      • 程序状态字寄存器
        • 保存各种运行过程中产生的状态信息
      • 移位器
        • 对操作数或者运算结果进行移位运算
      • 计数器
        • 控制乘除运算的操作步数
    • 控制器
      • 程序计数器PC
        • 取指阶段(PC)–>(MAR)后便能+1
        • 执行转移指令时PC值不一定修改(条件不满足)
        • 在执行无条件转移指令过程中,PC值改变两次
        • PC+1可以自己完成,也可以通过ALU完成
      • 指令寄存器
        • 保存当前正在执行的指令
      • 指令译码器
        • 对操作码字段进行译码并向控制器提供特定的操作信号
      • 存储器地址寄存器
        • 存放要访问的主存单元的地址
      • 存储器数据寄存器
        • 存放要写入主存或读出主存的信息
      • 时序系统
        • 用于产生各种信号,它们都由统一时钟(CLOCK)分频得到
      • 微操作信号发生器
        • 根据IR、PSW和时序信号产生各种控制信号

二、指令执行过程

1. 各种周期的关系

  • image
  • 机器周期通常以存取周期为基准,存储字长等于指令字长时取指周期也可视为机器周期
  • CPU周期也就是机器周期,各个机器周期的长度不一定相等

2. 指令周期的数据流

  • 取指周期
    • (PC)–>MAR; M(MAR)–>MDR; (MDR)–>IR; (PC)+1–>PC
  • 间指周期
    • Ad(IR)–>MAR; M(MAR)–>MDR(不需要经过PC)
  • 执行周期
    • 数据在ALU运算的表示:(X)+(Y)–>Z; (Z)–>某个寄存器
  • 中断周期
    • 保存断点((PC)–>M(SP-1)),中断向量–>PC
  • (书写标准) image

3. 指令执行方案

  • 单周期CPU
    • 所有指令采用相同的时钟周期完成,以花费时间最长的指令的时间为准,因此处理器时钟频率较低(2016)
    • 每条指令执行过程中控制信号不变(2016)
    • 同一个功能部件不能被重复使用(2016)
    • 不能使用单总线结构数据通路(2016)
    • CPI=1(2020)
    • 指令串型执行,不需添加临时寄存器存放中间结果
    • (袁春风课本上的结构图,了解即可) image
  • 多周期CPU
    • 可以选用不同个数的时钟周期来完成不同指令的执行过程
    • 每条指令分成多个阶段
    • 需要添加临时寄存器存放指令执行的中间结果
    • 同一个部件可以在不同的阶段被重复使用

4. 大题

  • 注意存储器控制信号(MemR、MemW)、算术逻辑单元控制信号(ALUop、add)
  • 操作码+源操作数+目的操作数,目的操作数用来存放运算结果
  • ADD (R1),R2:R1寄存器间接寻址,R2寄存器直接寻址
  • 书写指令功能时,一般为B<–(A),即A的内容存放到B中
  • 自增型寄存器间接寻址,意思是寻址完了后,把寄存器中的数值+1
  • 加法器和ALU不是一个东西,2015年考察了MUX(多路选择器)和ALU输出端的三态门

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

1. CPU组成(袁春风书补充)

  • 数据通路
    • 定义:指令执行过程中数据所经过的路径以及部件
    • 包括:ALU、通用寄存器、状态寄存器、Cache、MMU、浮点运算逻辑、异常和中断处理逻辑(2017、2021)
    • 元件分类
      • 组合逻辑元件
        • 定义:输出只取决于当前的输入
        • 包括:多路选择器、加法器、算术逻辑部件、译码器等
      • (时序)状态元件
        • 定义:具有存储功能
        • 包括:暂存寄存器、通用寄存器组等
  • 控制部件
    • 主要是指令译码器

2. 数据通路的基本结构

  • CPU内单总线
    • 图示
      • 经常考 image
    • 特点
      • 一个时钟周期只能执行一个操作,一个时钟周期内控制信号不会发生改变(2016)
      • 所有寄存器输入端、输出端都接到一条公共通路上
      • ALU一端与总线直接连接,另一端必须通过暂存器与总线连接
  • CPU内三多总线
    • 几乎不会考,略过
  • 专用数据通路
    • 几乎不会考,略过

四、控制器的功能和工作原理

1. 硬布线

  • 别名:组合逻辑电路、有限状态机。电路原理几乎不考,了解即可
  • CU的输入
    • 指令译码、时钟信号、状态标志 image

2. 微程序

  • 每个时钟执行一条微指令;每个指令周期执行一条微程序 image
  • image
  • 微指令
    • 微指令组成
      • 微操作码字段:产生各种操作控制信号
      • 微地址码字段:控制下一条要执行的微指令的地址
    • 编码方式
      • 直接编码
        • 一位对应一个微命令,微操作码的长度与所有微命令的个数相当,无需译码
      • 字段直接编码
        • 微操作之间存在两种关系:相容(能同时进行)个互斥(不能同时进行)
        • 将微指令分为若干字段,互斥的在同一段,相容的在不同段(2012)
        • 每段还要留出一个状态表示不发出微命令(2012)
        • 一条微指令中最多可同时发出的微操作数就是微命令字段的个数
      • 间接编码
        • 一个字段的微命令需要另一个字段的微命令解释(了解即可)
    • 后继地址形成(按袁春风书)
      • 计数器法
        • 使用一个专门的微程序计数器uPC
        • 顺序执行时,uPC+1–>uPC;转移执行时在当前微指令后添加一条转移微指令
      • 断定法
        • 在微指令中明确指定下一条微指令地址(2014)
        • 增加了微指令的长度,影响控制存储器的有效利用
    • 微指令的格式
      • 水平型
        • 微指令长,微程序短、执行速度快、编写麻烦、一条指令对应几种并行操作
      • 垂直型
        • 微指令短、微程序长、执行速度慢、编写简单、一条指令对应一种基本操作
      • 混合型

3. 硬布线和微程序的比较

  • (2009) image

五、中断和中断机制(按袁春风书)

1. 中断(极其重要)

  • 分类
    • 内部异常
      • 根据发生原因分
        • 硬故障中断
          • 电源掉电、存储器线路错误(硬件线路出现异常)
        • 程序性异常
          • 溢出、地址越界、整数除零、非法指令、时间片中断、单步跟踪(CPU执行某个指令引起)
      • 根据异常的报告和返回方式
        • 故障
          • 非法操作码、缺段缺页、整数除零(不能回到原断点执行必须终止)、保护错
        • 陷入
          • 程序调试断点、系统调用(用户程序的I/O请求)、条件自陷指令(返回到自陷指令的下一条指令执行)
        • 终止
          • 电源掉电、线路故障等(程序无法执行只能终止,不是由特定指令引起而是随机发生的)
    • 中断(外中断)
      • I/O设备中断、定时器到时、时钟中断、打印机缺纸、键盘缓冲满(这些事件与执行的指令无关)
  • 其它
    • 内部异常的产生与当前指令的执行有关,而外部中断的产生与当前指令的执行无关
    • 内部异常的检测发生在指令执行过程中,外部中断的检测发生在每条指令执行结束时
    • 内部异常是由CPU发现和识别的,外部中断必须经过CPU对中断请求线采样并获取设备信息才能识别
    • 缺页发生在CPU外(内存)但却是内部异常,且缺页中断结束后必须回到当前指令执行
    • Cache缺失不是内部异常也不是外部中断
    • 不可屏蔽中断(全部内中断、突然掉电);可屏蔽中断(外设请求)

2. 响应处理过程

  • 中断响应
    • 关中断
      • 改变中断允许触发器
    • 保存断点(PC和PSW)
    • 识别中断源
      • 取得中断服务程序首地址和初始 PSW分别送PC和PSWR
  • 中断处理
    • 保护现场(寄存器信息)和屏蔽字
    • 开中断
    • 执行中断服务程序
    • 关中断—-恢复现场和屏蔽字—-开中断—-中断返回

六、指令流水线

1. 流水线设计

  • 设计原则
    • 流水段个数以最复杂指令所用的功能段个数为准,流水段长度以最复杂的操作所花时间为准(2009、2018)
    • 流水段有自己的寄存器,长度可能不同,存储的是下一阶段用到的控制信息和下面所有阶段的控制信息
  • 指令集特征
    • 指令长度尽量一致,格式尽量规整
    • 使用Load/Store指令
    • 数据和指令在存储器中对齐存放

2. 流水线的性能指标

  • 功能段:一个指令执行过程分为几个功能段,理想情况下一个功能段需要一个时钟周期
  • 吞吐率=处理指令数n/所用时间t
  • 加速比=不使用流水线所用时间/使用流水线所用时间
  • 效率=有效面积/总面积

3. 五段式指令流水线

  • 图示
    • image
  • 各阶段功能
    • 取指令(IF)
      • 从Cache或主存取指令
    • 指令译码(ID)
      • 产生指令执行所需要的控制信号
    • 取操作数(OF)
      • 读取存储器操作数或寄存器操作数
    • 执行(EX)
      • 对操作数完成制定操作
    • 写回(WB)
      • 将操作数写回存储器或寄存器

4. 高级流水线技术

  • 超流水线技术
    • 特点
      • 增加流水线级数,配置多个功能部件,以空间换时间
    • 图示
      • image
  • 多发射流水线技术
    • 静态多发射处理器(超长指令字)
      • 特点
        • 一条指令包含多个操作并行执行,能减少访存次数
      • 图示
        • image
    • 动态多发射处理器(超标量流水)
      • 特点
        • CPU中有一条以上的流水线,每个时钟周期可以完成一条以上的指令,以空间换时间(2017)
        • 能结合动态调度技术提高指令流水线的并行性(2017)
        • 支持指令级并行,每个周期可以发射多条指令,由硬件完成指令调度
      • 图示
        • image

5. 流水线的冒险与处理

  • 结构冒险(资源冲突)
    • 含义
      • 同一个部件同时被不同指令使用(尤其是存储器、寄存器、ALU)
    • 解决措施
      • 指令存储器和数据存储器分开
      • 规定功能部件在一条指令中只能使用一次
  • 数据冒险(数据冲突)
    • 含义
      • 前面指令的结果是后面指令的操作数(2016、2019)
      • 在正常执行的基本流水线中,所有数据冒险都属于写后读数据冒险
    • 解决措施
      • 软件NOP、气泡
      • 数据旁路技术(转发技术)(2010)
      • 编译优化,调整指令顺序
  • 控制冒险(控制冲突)
    • 含义
      • 指令执行顺序改变(调用、转移、异常、中断)而引起流水线阻塞
    • 解决措施
      • 分支预测,尽早生成转移目标地址
      • 预取转移成功和不成功两个控制流方向上的目标指令
      • 提高转移方向的猜准率
      • 加快和提前形成条件码

七、多处理器的基本概念

1. 基本分类

  • SISD(单指令流,单数据流)
    • 平常学的计算机结构,可采用流水线CPU和交叉编址存储器
  • SIMD(单指令流,多数据流)
    • 不同的处理单元执行同一条指令处理不同的数据,用在for循环、图像处理(数据级并行)
  • MISD(多指令流,单数据流)
    • 同时执行多条指令来处理同一个数据,实际中不存在
  • MIMD(多指令流,多数据流)
    • 多处理器系统
      • 多处理器一主存,可通过访存指令互相传送数据
    • 多计算机系统
      • 多处理器多主存,可通过消息传递互相传送数据
    • 向量处理机
      • 擅长向量运算和浮点计算

2. 硬件多线程

  • 概念
    • 目的:为了减小线程切换的开销
    • 方法:为每个线程提供单独的通用寄存器朱、程序计数器等
  • 分类
    • 细粒度多线程
      • 多个线程之间轮流交叉执行指令,每个时钟周期切换线程
    • 粗粒度多线程
      • 只在一个线程出现较大开销的阻塞才切换线程,切换开销较大
    • 同时多线程
      • 同一时钟周期发射多条指令执行,实现指令级并行和线程级并行
  • 超线程技术
    • 在一个CPU内提供两套线程处理单元,能够同时执行两个线程,但可能出现争抢资源的现象
    • 超线程的性能要弱于两个CPU的性能
    • 需要芯片组、操作系统和应用软件的支持

3. 多核处理器

  • 将多个处理单元集成到单个CPU中,每个处理单元称为1个核
  • 可以有自己的Cache也可以共享Cache,共享内存
  • 若要发挥硬件性能,必须采用多线程或多进程技术
  • 一般采用偶数路CPU
  • 双核技术是指将两个CPU集成到一个封装,主板上有两个CPU属于多处理器

4. 共享内存多处理器(SMP)

  • UMA(统一存储访问)
    • 需要解决的重要问题是Cache一致性
    • 每个处理器对所有存储单元的访问时间是大致相同的
  • NUMA(非统一存储访问)
    • 访存请求快慢不同
    • 相比之下运算扩展性更好

八、习题

通用寄存器可以存放指令和数据

指令包括操作码和地址码,指令译码只对操作码解释

取指周期取的是指令,间指周期取的是操作数的有效地址,而不是操作数

取指操作是机器自动完成的,不需要指令控制

微程序控制器的时序系统比较简单

指令系统有n种机器指令,则微程序至少n+1个(公共取指微程序和中断微程序)

取指操作是控制器固有的功能,不需要在操作码控制下完成

指令周期一定大于等于一个时钟周期(2011)

主存储器由RAM和ROM实现(2017)