← 返回 计组与微机控制

计组与微机控制

4.1 MIPS 分支流控制和存储器

4.1 MIPS 分支流控制和存储器

条件分支:

MIPS 条件分支通常比较两个寄存器。

典型:

beq $s, $t, label
bne $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, r1

MIPS 的核心特点:

- 指令格式规整;

- load/store 纯粹;

- 寄存器数量多;

- 条件分支简单;

- 非常适合流水线教学。

二.流控制

MIPS提供了一条跳转并链接指令jal $1,Target,Target是一个16位有符号分支偏移。该分支跳转到Target处,返回地址被保存在寄存器$1中。与ARM不同,MIPS没有专门的链接寄存器,而且它也不可能直接访问PC。因此,必须通过过程指令(寄存器跳转)jr $1来实现返回,该指令将$1加载到PC中以完成返回。

4.1 MIPS 分支流控制和存储器 图 1

三存储器系统:

接下来开始存储器的几节讲解:

1. 半导体存储器分类

半导体存储器分为两大类:(计组版)

4.1 MIPS 分支流控制和存储器 图 2

| 类型 | 特点 |

| RAM | 随机存取存储器,可读可写,掉电数据丢失 |

| ROM | 只读存储器,通常掉电不丢失 |

RAM 又分为:

| 类型 | 特点 | 用途 |

| SRAM | 静态 RAM,不需要刷新,速度快,集成度较低 | Cache、高速缓冲 |

| DRAM | 动态 RAM,需要刷新,集成度高,容量大 | 主存 |

ROM/非易失存储器包括:

| 类型 | 特点 |

| Mask ROM | 出厂写死,不能修改 |

| PROM | 可编程一次 |

| EPROM | 可擦除可再编程 |

| EEPROM | 电可擦除 |

| Flash | 块擦除,非易失,现代 MCU 常用 |

4.1 MIPS 分支流控制和存储器 图 3

STM32 中:

- Flash 用来存程序和常量;

- SRAM 用来保存运行时变量、栈、堆;

- 外设寄存器也在统一地址空间中。

微机里面我们来说说具体电路:

4.1 MIPS 分支流控制和存储器 图 4

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 的连接

4.1 MIPS 分支流控制和存储器 图 5

(之前的2.0那一节好像说过)

CPU 与存储器连接涉及三类线:

| 总线 | 作用 |

| 地址线 | CPU 输出地址,选择存储单元 |

| 数据线 | CPU 与存储器双向传输数据 |

| 控制线 | 读、写、片选、准备好等控制信号 |

当存储芯片数据位宽小于 CPU 数据总线宽度时,需要多个芯片并联扩展位宽。

例子:

- CPU 数据总线 16 位;

- 单个存储芯片 8 位;

- 需要两个 8 位芯片并联组成 16 位数据宽度。

4.1 MIPS 分支流控制和存储器 图 64.1 MIPS 分支流控制和存储器 图 7