CPU的结构

CPU的功能

  1. 控制器的功能
    1. 取指令
    2. 分析指令
    3. 执行指令,发出各种操作命令
    4. 控制程序输入以及结果输出
    5. 总线管理
    6. 处理异常情况
  2. 运算器的功能
    1. 算数运算
    2. 逻辑运算

CPU结构框图

CPU与系统总线

截屏2024-05-13 14.11.15

CPU的内部结构

截屏2024-05-13 14.14.00

CPU的寄存器

用户可见寄存器

截屏2024-05-13 14.16.34

控制和状态寄存器

控制寄存器

$PC \rightarrow M\rightarrow M\rightarrow MDR \rightarrow IR$

MAR MDR IR用户不可见

PC用户可见 一般也不修改

状态寄存器

状态寄存器存放的是条件码

PSW寄存器存放的时候程序状态字

控制单元CU和中断系统

CU产生全部指令的微操作命令序列

中断系统…

ALU

第六章

指令周期

取出并执行一条指令所需的全部时间

截屏2024-05-13 14.36.59

每条指令的周期是不同的

截屏2024-05-13 14.37.36

截屏2024-05-28 14.43.42

截屏2024-05-28 15.04.36

截屏2024-05-28 14.50.18

指令流水

在提高硬件速度之外的基础上

提高整机处理能力 ,改进系统结构,开发系统的并行性

并行是指:并发和同时

并发指两个或以上事件在同一时间段发送

同时指两个或以上事件在同一时刻发生

并行性的等级

过程级 粗粒度 软件实现

指令级 细粒度 硬件实现

指令流水很容易理解,如果是串行执行,那么取指令和执行指令的过程总有一个部件是空闲的

事实上完全可以在取指令后,执行指令的阶段,同时读取第二个指令,这样子做就是指令的二级流水

若取指和执行在阶段时间上完全重叠,那么指令周期减半,速度提高一倍

image-20240529152930234

影响指令流水效率加倍的因素

  1. 执行时间>取指时间

    image-20240529153117793

  2. 条件转移指令对指令流水的影响

    必须等上调指令结束,才能确定下条指令的地址

    这样造成的时间损失 可以用猜测法弥补

指令的六级流水

完成一条指令需要六个时间单位,需要执行9次

若串行执行,则需要54个时间单位

若采用六级流水,则只需要14个时间单位

截屏2024-05-29 15.35.00

影响指令流水线性能的因素

程序相近指令之间出现某种关联,使得指令流水出现停顿,影响流水线效率

若结构相关 即不同指令争用同一功能部件产生资源冲突 解决办法是停顿指令存储器和数据存储器分开指令预取技术

数据相关的

比如两条指令都需要用同一个数据

截屏2024-05-29 15.41.36

或者用后推法

控制相关的由转移指令引起的

image-20240529154319356

image-20240529154411327

流水线的性能

  1. 吞吐率

    单位时间内流水线所完成指令或输出结果的数量 设m段流水线各段时间为$\Delta t$

    • 最大吞吐率 $T_{pmax}= \frac{1}{\Delta t}$
    • 实际吞吐率 连续处理n条指令的吞吐率为$T_p=\frac{n}{m \cdot \Delta t+ (n-1) \cdot \Delta t}$
  2. 加速比 $S_p$

    m段的流水线的速度与等功能的非流水线的速度之比,设各段流水线为$\Delta t$

    完成n条指令在m段流水线上共需 $T=m \cdot \Delta t + (n-1) \cdot \Delta t$

    完成n条指令在等效的非流水线上共需

    $T^{‘}=nm \cdot \Delta t$

    则$S_p = \frac{nm \cdot \Delta t}{m \Delta t + (n-1) \cdot \Delta t }=\frac{nm}{m+n-1} $

超流水线技术

在一个时钟周期内再分段

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

不能调整指令的执行顺序

靠编译程序优化

image-20240529192438742

超长指令字技术

由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条,具有多个操作码字段的超长指令字

采用多个处理部件

image-20240529192825799

流水线结构

完成一条指令分为七段,每段一个时钟周期

截屏2024-05-29 19.38.44

若流水线不出现断流 一个时钟周期出一个结果

不采用流水技术 七个时钟周期出一个结果

理想情况下面速度是7倍

运算流水线

完成浮点运算加减可分:

对阶、尾数求和、规格化三段

image-20240602192247752

分段原则是让每段操作时间尽量一致