Skip to content

(一)CPU的功能和基本结构

1. CPU 的功能

1.1. 控制器 CU 和运算器 ALU

  • CPU 功能的两大组成部件:控制器 CU 和运算器 ALU;
  • 控制器 CU
    • 指令控制:取指令;
    • 操作控制:分析指令;
    • 时间控制:执行指令,发出指令,控制输入输出;
    • 数据加工:管理数据总线;
    • 处理中断:处理异常情况和特殊请求;
  • 运算器 ALU:实现算术运算和逻辑运算;

2. CPU 的基本结构

2.1. 基本结构

image-20250324203423324

  • CPU 基本结构的四大部件

    • 控制器 CU;
    • 运算器 ALU;
    • 寄存器;
    • 中断系统(IO);
  • 各部分的分工表

    功能负责部分
    指令控制PC,IR
    数据加工ALU,寄存器
    操作控制,时间控制CU,时序电路
    中断处理中断系统

3. CPU 内的寄存器

3.1. 程序计数器 PC

  • 指令地址寄存器;用来存放即将要执行的下一条指令地址
    • 将要执行,即当前存放在 PC 中的指令还没被取出和执行
    • 任何指令要被执行,都需要将其地址放到 PC 中;
    • PC 存放的是指令在内存中的地址;
  • 程序地址放入 PC 的情况
    • 1)PC 自增:PC = PC + 1,即顺序执行一串指令;
      • "+1" 表示的是 "1 条指令",即偏移量实际为该条指令的字节数或字数(取决于编址方式);
    • 2)偏移量:通过某些转移指令,将相对于下一指令地址的偏移送给 PC,实现流程控制;
      • 执行 JMP 指令也会导致 PC 自增,所以此处实际上是 PC = PC + 1 + (A)
      • (A) 是 JMP 给出的偏移量,可能直接给出,也可能要通过寻址得到;
      • JMP 指令分为:直接设置 PC,和将 PC 加上一个偏移量 Offset两种;
        • 段内较近地址的转移一般用偏移量形式;
        • 跨段较远地址的转移一般直接覆盖 PC(如 x86 中的 CS:IP);
  • PC 位数决定最多能执行(主存最多存放)的指令条数;

3.2. 指令寄存器 IR

  • 用来存放从存储器中取出的指令
  • 指令执行完之前,指令寄存器的内容不允许发生变化
  • IR 位数 = 指令字长;

3.3. 存储器数据寄存器 MDR

  • 暂时存放从主存中读出的指令/数据,或要向主存写入的指令/数据;
  • 逻辑上属于主存,但是物理上在 CPU 内部
  • MDR 位数 = 存储字长;

3.4. 存储器地址寄存器 MAR

  • 保存当前 CPU 所访间的主存单元的地址;
  • CPU 和主存进行读写数据时,都要用到 MAR 和 MDR
  • 逻辑上属于主存,但是物理上在 CPU 内部
  • MAR 位数决定主存空间大小;
  • 注意:一般意义上认为机器字长 = 指令字长 = 存储字长,与 MAR 位数无关
    • MAR 长度取决于内存总容量和每个存储单元长度,不一定和机器字长一致;

3.5. 程序状态字 PSW

  • 表征程序和机器运行的状态,是参与控制程序执行的重要依据之一

  • 主要包括两部分:状态标志,控制标志

    • 状态标志:如进位,结果零标志等,大多数指令的执行都会影响;
    • 控制标志:如中断,陷阱标志等;
  • 状态标志

    标志名称说明
    N (S)负数计算结果为负数时,N=1,否则 N=0
    Z结果零计算结果为 0 时,Z=1,否则 Z=0
    V溢出计算结果溢出时,V=1,否则 V=0
    C进位加法进位或减法借位时,C=1,否则 C=0
    • 用途:条件转移指令(JZ, JNZ)等会读取状态标志,决定是立即转移还是顺序执行
    • 区分 CF 与 OF 标志
      • CF:无符号数加减法,左移位产生进位时,置 1,否则置 0;
      • OF:有符号数加减溢出,乘法溢出,触发溢出中断时,置 1,否则置 0;
      • 无符号数加减时,与 OF 无关,对应地,有符号数加减时,也与 CF 无关;

3.6. 累加器 ACC

  • 专门用来存放操作数或运算结果
  • 执行运算前,两个操作数中的一个通常应放在 ACC 中,运算完成后,ACC 中存放运算结果

3.7. 寄存器可见性

寄存器系统程序员可见性应用程序员可见性
PCYESNO
IRNONO
MDRNONO
MARNONO
PSW 状态位YESNO
PSW 控制位NONO

习题

    1. 某机器有一个 PSW,有进位标志 CF,结果零 ZF,符号标志 SF,溢出标志 OF。则条件转移指令 BGT(无符号整数比较结果为大于)的转移条件为
    • A. CF+OF=1
    • B. SF+ZF=1
    • C. CF+ZF=1
    • D. CF+SF=1
    • 答案:C
    • 解析:无符号整数 ab 的比较是直接相减,即计算 ab,然后看 PSW 状态位;
      • 此题中,若 a>b,则 ab>0,所以结果零 ZF=0,溢出 CF=0,与 SF, OF 无关
      • 看四个选项,只有 C 符合要求,故选 C;
    • 快速做法:无符号数运算与 OF 无关,排除 A,结果不可能为负数,与 SF 无关,排除 BD,因此选 C;
      • 与 SF 无关:表示不能用 SF 的值作为判断依据,因为 SF 是根据最高位来确定,而无符号数最高位不是符号位
      • 由上还可知,SF 可反应无符号数运算结果最高位的情况;