CPU 怎么执行程序:PC 与 IR 到底各干什么

软考 · 计算机组成原理 | 2024上·综合知识 #1 | 点「下一步」一步步看,重点看第 5 步和第 26 步

⏱ 30 秒前置知识(忘光了也能看懂)

  1. 内存 = 一长排带编号(地址)的小格子,程序编译后的指令和数据都躺在格子里
  2. CPU 不是一口气运行程序的,而是死循环:取指令 → 译码 → 执行 → 再取下一条
  3. 寄存器 = CPU 肚子里几个小格子,分工固定:PC 管导航(下一条去哪读)、IR 管当前指令、MAR 管报地址、MDR 管转运数据、ACC 是算术工作台
  4. 每条指令 = 操作码(干什么)+ 操作数(对谁干)——页面上寄存器和内存格子里的小框,就按这个拆分着色:绿=地址、橙=操作码、蓝=操作数、白=数据
  5. 内存列的标记:👉 PC 指向这 = 书签当前夹的格子(PC 只有一个格子,值是被覆盖更新的);✓ = 已被取走执行的指令——点"下一步"能看到书签沿内存一格格下移
🚶 一条指令的旅程随动画播放高亮当前位置(每个格子 = 完整英文名 + 中文名)
CPU 内部
PC 程序计数器Program Counter
书签:下一条指令的地址
IR 指令寄存器Instruction Register
当前正在执行的指令本体
MAR 地址寄存器Memory Address Register
对内存喊话:读哪个地址
MDR 数据寄存器Memory Data Register
数据/指令进出的转运站
ACC 累加器Accumulator
ALU 算数的工作台
ALU + 控制单元算数 / 译码 / 发号施令Arithmetic Logic Unit
ID 指令译码器Instruction Decoder
等待译码…
拆操作码 → 翻译成微操作
PSW 状态寄存器Program Status Word
记录结果状态:条件跳转的依据
地址总线Address Bus
CPU → 内存报门牌号
数据总线Data Bus
传数据 / 传指令
内存(每行一个格子)

PC 程序计数器 = 书签(Program Counter)

IR 指令寄存器 = 当前这页(Instruction Register)

本题复盘

寄存器职责考试常见问法
PC
Program Counter
下一条指令的地址"跟踪后继指令地址";顺序执行自动+1;转移指令修改它
IR
Instruction Register
当前执行的指令本体"存放当前正在执行的指令"
MAR/AR
Memory Address Register
CPU 欲访问的内存地址"对内存操作的地址存放于"
MDR/DR
Memory Data Register
与内存交换的数据"读出/写入的数据暂存于"
ACC
Accumulator
ALU 工作台(累加)运算数据/结果的存放处
PSW
Program Status Word
标志位:零/进位/溢出/符号条件转移指令(JE 等)的判断依据