计算机组成原理(下)
一、指令与程序的基本表示
- 纸带程序:有孔为 1,无孔为 0,由传感器读取。
- 电机滚动纸带 → 连续输出程序,每行代表一条指令。
- 指令读入 IR(指令寄存器),送入 ALU 执行运算。
指令结构
一条指令分为三部分:
- 操作码:决定 ALU 执行何种操作。
- 立即数/寄存器编号:作为操作数输入。
- 寻址方式:区分寄存器、内存、立即数等地址类型。
指令格式分类
- 三地址指令:地址1 op 地址2 → 地址3
- 二地址指令:地址1 op 地址2 → 地址1
- 单地址指令:仅一个操作数(取反、移位等)
- 零地址指令:无操作数(空指令、停机、栈指令等)
扩展操作码
- 利用地址字段空余位扩展操作码数量。
- 类似文件夹嵌套:一级操作码 → 前缀 → 多级扩展。
- 充分利用指令比特位,避免浪费。
二、汇编指令与机器指令
- 机器指令是二进制串,对人不友好。
- 汇编指令是机器指令的符号表示,便于阅读与编写。
数据传输类指令
mov:数据复制push:压栈,SP 减 1,写入内存pop:弹栈,读出数据,SP 加 1movsx/movzx:符号扩展 / 零扩展,用于不同位数赋值
算术运算类指令
add、sub:加减法,影响标志位 CF/ZF/SF/OFmul、div:乘除法,单地址形式,使用隐含寄存器(AX/DX)
跳转与控制指令
jmp:无条件跳转,直接修改 PC- 条件跳转(je/jz/jne 等):根据标志位判断
call:函数调用,将返回地址入栈ret:从栈弹出返回地址,回到调用处
函数调用与栈帧
call将下条指令地址压栈保存push ebp保存旧栈基址mov ebp, esp建立栈帧- 通过
ebp+偏移访问参数 - 函数结束:
pop ebp→ret恢复现场
三、寻址方式(共 9 种)
- 立即寻址:数值直接在指令中
- 寄存器寻址:操作数在寄存器中
- 直接寻址:指令给出内存地址
- 间接寻址:指令给出地址,地址里存放真正地址
- 寄存器间接寻址:寄存器中存放内存地址
- 相对寻址(PC 相对):目标地址 = PC + 偏移量
- 基址寻址:地址 = 基址寄存器 + 偏移
- 变址寻址:地址 = SI/DI + 偏移,用于数组/字符串
- 堆栈寻址:由 SP 指向栈顶,push 减、pop 增
四、CPU 内部数据通路
单总线结构
- 所有部件共用一条总线。
- 同一时刻只能一个部件输出,避免冲突。
- 使用 X、Z 寄存器暂存数据,完成多步运算。
典型执行流程(以加法为例)
- PC 送出指令地址
- 指令从内存读入 MDR → IR
- IR 译码,读取操作数
- 操作数送入 ALU 运算
- 结果写回寄存器或内存
- PC + 1 取下一条指令
五、控制器
硬布线控制器
- 纯组合逻辑电路实现,速度快。
- 控制信号由指令、时序、状态直接生成。
微程序控制器
- 用“微指令”实现控制逻辑,存储在控制存储器。
- 每条机器指令对应一段微程序。
- 易扩展、易修改、速度略低。
微指令格式
- 操作控制字段:每一位对应一个控制信号。
- 判别字段:指示指令是否结束、是否取指。
- 下地址字段:指示下一条微指令地址。
六、指令流水线
一条指令分为 5 阶段:
- 取指
- 译码
- 执行
- 访存
- 写回
流水线并行执行多条指令,每个时钟周期流入一条新指令。
流水线冲突
- 结构冲突:指令与数据同时访问内存
- 解决:哈佛结构、分离 I-cache/D-cache
- 数据冲突:指令未写回就被读取
- 解决:数据旁路(forwarding)
- 控制冲突:分支指令导致 PC 不确定
- 解决:静态/动态分支预测、延迟槽
七、总线与输入输出系统
总线分类
- 片内总线:CPU 内部使用
- 系统总线:连接 CPU、内存、外设
- 分为地址总线、数据总线、控制总线
总线仲裁
- 链式查询:简单、易产生“饥饿”
- 独立请求:速度快、线路多
- 分布式仲裁:按权重竞争
定时方式
- 同步定时:统一时钟,近距离高效
- 异步定时:请求/应答握手,远距离可靠
I/O 编址
- 统一编址:I/O 与内存共用地址空间
- 独立编址:I/O 有独立地址,使用专门指令
I/O 数据传输方式
- 程序查询:CPU 轮询状态,效率低
- 程序中断:设备主动发信号,CPU 响应
- DMA:直接内存访问,不占用 CPU
八、中断系统
中断处理流程
- 设备发出中断请求
- 中断屏蔽与优先级判断
- 保存断点 PC
- 查中断向量表,跳转到中断服务程序
- 保护现场 → 执行服务程序 → 恢复现场
- 开中断 → 返回断点
多重中断
- 中断处理过程中可响应更高优先级中断。
- 通过设置中断屏蔽字控制允许/禁止。
九、DMA 直接内存访问
- 分担 CPU 访存工作,批量高速传输。
- 传输期间 CPU 可继续执行其他指令。
DMA 访存冲突解决
- 停止 CPU:DMA 期间 CPU 暂停
- 交替访存:单双周期分用
- 周期挪用:DMA 按需占用周期,效率最高
如果你需要,我可以再帮你生成一份精简背诵版(适合考试)或者PPT 大纲版」。当前文件内容过长,豆包只阅读了前 43%。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Frite的个人博客!