acautomaton
acautomaton
发布于 2024-09-22 / 4 阅读
0
0

Chapter 5. 中央处理器

Chapter 5. 中央处理器

公式与性质

  • CPU 的基本结构

    • 运算器:包括算术逻辑单元 ALU、暂存寄存器、累加寄存器 ACC、通用寄存器组 GPRs、程序状态字寄存器 PSW、移位寄存器、计数器 CT 等。
    • 控制器:包括程序计数器 PC、指令寄存器 IR、指令译码器 ID、存储器地址寄存器 MAR、存储器数据寄存器 MAR、时序电路和微操作信号发生器等。
  • CPU 取出并执行一条指令所需的全部时间称为指令周期,通常包括取值周期(取指令)、间址周期(取操作数的地址)、执行周期(取操作数,并根据 IR 中的指令字的操作码通过 ALU 操作产生结果)、中断周期(若采用中断实现与 I/O 设备的交换);指令周期通常可以用若干机器周期表示。

  • 计算机中的堆栈向低地址方向增长。

  • 数据通路(数据在指令执行过程中所经过的路径,包括路径上的部件)主要分为组合逻辑元件和时序逻辑元件两类。

    • 组合逻辑元件:任何时刻产生的输出只取决于当前的输入,故不含记忆单元,也不受时钟信号的控制。主要包括加法器、ALU 、译码器、多路选择器、三态门等。
    • 时序逻辑元件:任何时刻产生的输出不仅取决于当前的输入,还与以前的输入有关。主要包含 GPRsPC、状态/移位/暂存/锁存寄存器等。
  • 内部总线:同一部件,如 CPU 内部连接各寄存器及运算部件之间的总线;系统总线:同一台计算机系统的各部件,如 CPU、内存和各类 I/O 接口间互相连接的总线。

  • 微程序控制的基本概念

    • 微程序的设计思想:将每一条机器指令编写成一个微程序,每个微程序包含若干微指令、每条微指令对应一个或几个微操作命令。
    • 控制部件向执行部件发出的各种控制命令称为微命令,是构成控制序列的最小单位。执行部件收到微命令后所进行的操作称为微操作,微命令和微操作是一一对应的。
    • 微指令是若干微命令的集合。微周期是从控制存储器中取出并执行一条微指令所需的全部时间,通常为一个时钟周期。
    • 控制存储器 CM 用于存放微程序,在 CPU 内部,ROMPROMEPROM、闪存等)实现不属于高速缓存,。
  • 异常(内中断):由 CPU 内部产生的意外事件。

    1. 故障 Fault :指令启动后、执行结束前被检测到的异常事件。如:
      • 缺段、缺页等:处理后返回到当前指令执行。
      • 非法操作码、除数为 0 等:无法处理,终止执行。
    2. 自陷 Trap :预先安排的异常。用于断点调试与单步跟踪。自陷指令通常处理后返回到下一条指令执行;但当自陷指令是转移指令时,返回到转移目标指令执行,如系统调用指令、条件自陷指令:无条件或有条件地自动调出操作系统内核程序进行执行。
    • 故障异常和自陷异常都属于程序性异常(软件中断)。
    1. 终止 Abort :硬件故障,如控制器出错、存储器校验错、总线错误等:无法处理,只能终止。
    • 终止异常与外中断都属于硬件中断。
  • 流水段通常分为五个阶段:

    1. 取址 Instruction Fetch, IF
    2. 译码/读寄存器 Instruction Decode, ID
    3. 执行/计算地址 Execute, EX
    4. 访存 Memory, MEM
    5. 写回 Write Back, WB
  • 流水线的冒险

    1. 结构冒险:不同指令在同一时刻征用同一功能部件,也称资源冲突
      • 解决办法:
        1. 前一指令访存时,后一相关指令(及其后续指令)暂停一个时钟周期。
        2. 设置多个独立部件。如对于寄存器访问冲突,分离寄存器读口和写口;对于访存冲突,单独设置数据寄存器和指令寄存器。
    2. 数据冒险:后面指令用到前面指令的结果时,前面指令的结果还没有产生(写后读 Read After Write, RAW
      • 解决办法:
        1. 延迟执行相关指令
        2. 转发(旁路)技术,直接将数据通路生成的中间数据转发到 ALU 的输入端。
        3. 进行编译优化以避免 load-useload 指令与其后紧邻的运算类指令数据相关)现象。
    3. 控制冒险:改变指令执行顺序(执行转移或返回类指令、发生中断或异常(包括 Cache 缺失))时,造成断流。
      • 解决办法:
        1. 延迟执行跳转后的指令。
        2. 对转移指令进行分支预测(静态预测或动态预测),尽早生成转移目标地址。
        3. 预取转移成功/不成功两个控制流方向上的目标指令。
        4. 加快和提前形成条件码。
  • 流水线的吞吐率 TP :单位时间内流水线所完成的任务数量。设处理 n 个任务,流水段段数为 k , 时钟周期为 \Delta t ,则 TP = \frac n {(k+n-1)\Delta t} ,当 n \rightarrow \infin 时,{TP}_{max} = \frac 1 {\Delta t}

  • 流水线的加速比 S :完成同样一批任务,不使用流水线与使用流水线所用的时间之比。设处理 n 个任务,流水段段数为 k , 时钟周期为 \Delta t ,则 S=\frac {kn\Delta t}{(k+n-1)\Delta t}=\frac {kn}{k+n-1} ,当 n \rightarrow \infin 时,{S}_{max} = k

  • 硬件多线程

    • 细粒度多线程:多个线程之间轮流交叉执行指令。
    • 粗粒度多线程:连续几个时钟周期都执行同一线程的指令序列,仅在当前线程出现了较大开销的阻塞时,才切换线程,如 Cache 缺失。
    • 同时多线程 Simultaneous MultiThreading, SMT :在同一个时间周期中,发射多个不同线程的多条指令执行(如 Intel 超线程)。

概念

  • 程序计数器 PC 的位数取决于存储器的容量指令字长

    1. 以字节为单位表示指令地址时,存储器字节数 ={PC}_{max}
    2. 以字为单位表示指令地址时,存储器容量 / 指令字长 ={PC}_{max}
  • 在指令长度相同的情况下,所有指令的取址操作都是相同的。

  • 取值周期与机器周期没有必然的联系。

    指令周期 = 取值周期 + 间址周期 + 执行周期 (+ 中断周期)。
    指令周期可用若干机器周期表示。

  • CPU 的数据通路结构主要包括;单总线结构、多总线结构、专用数据通路结构。

  • 水平型微指令控制器需要较长的控制域。

    多个并行操作的微命令 \Rightarrow 较长的控制域。

  • 微指令结构设计追求的目标:

    1. 缩短微指令字的长度
    2. 减少控制存储器的容量
    3. 提高微程序的执行速度
    4. 有利于对微指令的修改
    5. 提高微程序设计的灵活性
  • CPU 响应中断后通过中断隐指令和操作系统来保护现场。

    中断隐指令保护断点,操作系统保护寄存器。

  • 中断隐指令是硬件自动完成的指令。

  • 中断向量的地址是中断服务程序入口地址的地址,中断向量就是中断服务程序入口地址。

  • 分支预测可以同时利用硬件和软件来实现指令级并行。

  • 控制相关不能通过增加计算部件解决或优化。

    转移指令会引起断流。

  • 静态流水线相较动态流水线只能在操作完全结束时切换功能。

  • 超标量流水线性能优于超标量超流水流水线

考点

  • 某计算机的主存储器空间为 4GB ,字长为 32 位,按字节编址,采用 32 位字长指令字格式。若指令按字边界对齐存放,则程序计数器 PC 的位数至少是 30 ,指令寄存器 IR 的位数至少是 32

    \frac {4GB=2^{32}B}{32bit=2^2B}=2^{30}

  • 单周期处理器在指令执行过程中控制信号不变。(一个时钟周期内信号不变)

  • 某微程序控制器,其微指令的控制域采用水平型字段译码法,某字段用来表示 32 个互斥的微命令,则该字段应采用 6 位编码。

    需要一个额外的状态位来表示不做任何操作, \lceil \log _2 (32+1)\rceil=6

  • 内部异常的响应发生在指令执行过程中。

  • 寄存器重命名技术可以解决数据相关,不能解决结构相关和控制相关。

  • m 段流水 CPU 的吞吐能力小于 m 个并行部件 CPU

  • 阵列处理机 Array Processor (并行处理机、向量处理机)对向量同时进行相同操作,属于 SIMD


评论