计组与微机控制
4.1 MIPS 分支流控制和存储器
4.1 MIPS 分支流控制和存储器
条件分支:
MIPS 条件分支通常比较两个寄存器。
典型:
beq $s, $t, labelbne $s, $t, label含义:- 相等则跳;- 不等则跳。
ARM 常先 `CMP` 设置标志,再 `BEQ/BNE` 跳转。
MIPS 的分支更直接把比较和跳转放在一条指令里。
sll srl sra
分别是:
- 逻辑左移;- 逻辑右移;- 算术右移。
和 ARM:
LSL LSR ASR
对应。
2.MIPS 比较
MIPS 常用 `slt` 实现比较。
slt $d, $s, $t
若 `$s < $t`,则 `$d = 1`,否则 `$d = 0`。
这和 ARM 的条件标志不同。
ARM 通常:
CMP r0, r1MIPS 的核心特点:
- 指令格式规整;
- load/store 纯粹;
- 寄存器数量多;
- 条件分支简单;
- 非常适合流水线教学。
二.流控制
MIPS提供了一条跳转并链接指令jal $1,Target,Target是一个16位有符号分支偏移。该分支跳转到Target处,返回地址被保存在寄存器$1中。与ARM不同,MIPS没有专门的链接寄存器,而且它也不可能直接访问PC。因此,必须通过过程指令(寄存器跳转)jr $1来实现返回,该指令将$1加载到PC中以完成返回。

三存储器系统:
接下来开始存储器的几节讲解:
1. 半导体存储器分类
半导体存储器分为两大类:(计组版)

| 类型 | 特点 |
| RAM | 随机存取存储器,可读可写,掉电数据丢失 |
| ROM | 只读存储器,通常掉电不丢失 |
RAM 又分为:
| 类型 | 特点 | 用途 |
| SRAM | 静态 RAM,不需要刷新,速度快,集成度较低 | Cache、高速缓冲 |
| DRAM | 动态 RAM,需要刷新,集成度高,容量大 | 主存 |
ROM/非易失存储器包括:
| 类型 | 特点 |
| Mask ROM | 出厂写死,不能修改 |
| PROM | 可编程一次 |
| EPROM | 可擦除可再编程 |
| EEPROM | 电可擦除 |
| Flash | 块擦除,非易失,现代 MCU 常用 |

STM32 中:
- Flash 用来存程序和常量;
- SRAM 用来保存运行时变量、栈、堆;
- 外设寄存器也在统一地址空间中。
微机里面我们来说说具体电路:

2. 存储器性能指标
| 指标 | 定义 |
| 存储容量 | 能存放的二进制信息总量 |
| 存取时间 TA | 从发出访问请求到数据有效所需时间 |
| 存储周期 TMC | 两次连续访问之间允许的最小时间间隔 |
| 可靠性 | 常用平均故障间隔时间 MTBF 衡量 |
| 性价比 | 单位成本能获得的容量和性能 |
容量计算:
存储单元数 = 2^地址线条数
容量 = 存储单元数 x 每个单元位数
例如:地址线 20 根、每个单元 8 bit:
容量 = 2^20 x 8 bit = 1 MB(默认是一个字节这样的寻址计数为1MB)
3. 存储器基本结构
典型存储器由以下部分组成:
| 部件 | 作用 |
| 存储体 | 保存 0/1 信息 |
| 地址寄存器 MAR | 保存 CPU 要访问的地址 |
| 地址译码器 | 把地址转换为某个存储单元选择信号 |
| 数据寄存器 MDR | 暂存读写数据 |
| 读写控制电路 | 根据 RD/WR/CS 等信号控制读写 |(后面8086会具体讲片选之类的)
读过程:
1. CPU 给出地址;
2. 地址译码器选中存储单元;
3. CPU 给出读控制信号;
4. 存储器把数据送到数据总线;
5. CPU 读入数据。
写过程:
1. CPU 给出地址和数据;
2. 地址译码器选中存储单元;
3. CPU 给出写控制信号;
4. 存储器把数据写入目标单元。
总的来说就是先片选再位选
4. 存储器与 CPU 的连接

(之前的2.0那一节好像说过)
CPU 与存储器连接涉及三类线:
| 总线 | 作用 |
| 地址线 | CPU 输出地址,选择存储单元 |
| 数据线 | CPU 与存储器双向传输数据 |
| 控制线 | 读、写、片选、准备好等控制信号 |
当存储芯片数据位宽小于 CPU 数据总线宽度时,需要多个芯片并联扩展位宽。
例子:
- CPU 数据总线 16 位;
- 单个存储芯片 8 位;
- 需要两个 8 位芯片并联组成 16 位数据宽度。


