一、指令与程序的基本表示

  • 纸带程序:有孔为 1,无孔为 0,由传感器读取。
  • 电机滚动纸带 → 连续输出程序,每行代表一条指令。
  • 指令读入 IR(指令寄存器),送入 ALU 执行运算。

指令结构

一条指令分为三部分:

  1. 操作码:决定 ALU 执行何种操作。
  2. 立即数/寄存器编号:作为操作数输入。
  3. 寻址方式:区分寄存器、内存、立即数等地址类型。

指令格式分类

  • 三地址指令:地址1 op 地址2 → 地址3
  • 二地址指令:地址1 op 地址2 → 地址1
  • 单地址指令:仅一个操作数(取反、移位等)
  • 零地址指令:无操作数(空指令、停机、栈指令等)

扩展操作码

  • 利用地址字段空余位扩展操作码数量。
  • 类似文件夹嵌套:一级操作码 → 前缀 → 多级扩展。
  • 充分利用指令比特位,避免浪费。

二、汇编指令与机器指令

  • 机器指令是二进制串,对人不友好。
  • 汇编指令是机器指令的符号表示,便于阅读与编写。

数据传输类指令

  • mov:数据复制
  • push:压栈,SP 减 1,写入内存
  • pop:弹栈,读出数据,SP 加 1
  • movsx / movzx:符号扩展 / 零扩展,用于不同位数赋值

算术运算类指令

  • addsub:加减法,影响标志位 CF/ZF/SF/OF
  • muldiv:乘除法,单地址形式,使用隐含寄存器(AX/DX)

跳转与控制指令

  • jmp:无条件跳转,直接修改 PC
  • 条件跳转(je/jz/jne 等):根据标志位判断
  • call:函数调用,将返回地址入栈
  • ret:从栈弹出返回地址,回到调用处

函数调用与栈帧

  1. call 将下条指令地址压栈保存
  2. push ebp 保存旧栈基址
  3. mov ebp, esp 建立栈帧
  4. 通过 ebp+偏移 访问参数
  5. 函数结束:pop ebpret 恢复现场

三、寻址方式(共 9 种)

  1. 立即寻址:数值直接在指令中
  2. 寄存器寻址:操作数在寄存器中
  3. 直接寻址:指令给出内存地址
  4. 间接寻址:指令给出地址,地址里存放真正地址
  5. 寄存器间接寻址:寄存器中存放内存地址
  6. 相对寻址(PC 相对):目标地址 = PC + 偏移量
  7. 基址寻址:地址 = 基址寄存器 + 偏移
  8. 变址寻址:地址 = SI/DI + 偏移,用于数组/字符串
  9. 堆栈寻址:由 SP 指向栈顶,push 减、pop 增

四、CPU 内部数据通路

单总线结构

  • 所有部件共用一条总线。
  • 同一时刻只能一个部件输出,避免冲突。
  • 使用 X、Z 寄存器暂存数据,完成多步运算。

典型执行流程(以加法为例)

  1. PC 送出指令地址
  2. 指令从内存读入 MDR → IR
  3. IR 译码,读取操作数
  4. 操作数送入 ALU 运算
  5. 结果写回寄存器或内存
  6. PC + 1 取下一条指令

五、控制器

硬布线控制器

  • 纯组合逻辑电路实现,速度快。
  • 控制信号由指令、时序、状态直接生成。

微程序控制器

  • 用“微指令”实现控制逻辑,存储在控制存储器。
  • 每条机器指令对应一段微程序。
  • 易扩展、易修改、速度略低。

微指令格式

  • 操作控制字段:每一位对应一个控制信号。
  • 判别字段:指示指令是否结束、是否取指。
  • 下地址字段:指示下一条微指令地址。

六、指令流水线

一条指令分为 5 阶段:

  1. 取指
  2. 译码
  3. 执行
  4. 访存
  5. 写回

流水线并行执行多条指令,每个时钟周期流入一条新指令。

流水线冲突

  1. 结构冲突:指令与数据同时访问内存
    • 解决:哈佛结构、分离 I-cache/D-cache
  2. 数据冲突:指令未写回就被读取
    • 解决:数据旁路(forwarding)
  3. 控制冲突:分支指令导致 PC 不确定
    • 解决:静态/动态分支预测、延迟槽

七、总线与输入输出系统

总线分类

  • 片内总线:CPU 内部使用
  • 系统总线:连接 CPU、内存、外设
  • 分为地址总线、数据总线、控制总线

总线仲裁

  • 链式查询:简单、易产生“饥饿”
  • 独立请求:速度快、线路多
  • 分布式仲裁:按权重竞争

定时方式

  • 同步定时:统一时钟,近距离高效
  • 异步定时:请求/应答握手,远距离可靠

I/O 编址

  • 统一编址:I/O 与内存共用地址空间
  • 独立编址:I/O 有独立地址,使用专门指令

I/O 数据传输方式

  1. 程序查询:CPU 轮询状态,效率低
  2. 程序中断:设备主动发信号,CPU 响应
  3. DMA:直接内存访问,不占用 CPU

八、中断系统

中断处理流程

  1. 设备发出中断请求
  2. 中断屏蔽与优先级判断
  3. 保存断点 PC
  4. 查中断向量表,跳转到中断服务程序
  5. 保护现场 → 执行服务程序 → 恢复现场
  6. 开中断 → 返回断点

多重中断

  • 中断处理过程中可响应更高优先级中断。
  • 通过设置中断屏蔽字控制允许/禁止。

九、DMA 直接内存访问

  • 分担 CPU 访存工作,批量高速传输。
  • 传输期间 CPU 可继续执行其他指令。

DMA 访存冲突解决

  • 停止 CPU:DMA 期间 CPU 暂停
  • 交替访存:单双周期分用
  • 周期挪用:DMA 按需占用周期,效率最高

如果你需要,我可以再帮你生成一份精简背诵版(适合考试)或者PPT 大纲版」。当前文件内容过长,豆包只阅读了前 43%。