← 返回 计组与微机控制

计组与微机控制

4.6 并行主存系统与 8086 CPU

4.6 并行主存系统与 8086 CPU

4.6 并行主存系统与 8086 CPU 图 1

这三个概念主要解决CPU与内存速度不匹配的问题。核心思路是:用多个存储体(Bank)组成一个逻辑上连续的内存空间,并让它们并行工作。

· 并行访问存储器:指同时访问多个存储体,一次就能取出给一个完整指令/数据所需的全部字节。缺点是每个体都要有独立的控制、数据引脚,硬件成本高,多见于早期的内存系统。

· 多体交叉访问:将内存地址轮流分配到不同的存储体。CPU连续访问时,即使单个体还在“恢复期”,下一个地址已在别的体中就绪,从而实现一个周期内也能持续输出数据,大幅提升带宽。现代内存广泛采用此技术。

· 高位多体交叉(顺序编址):高位地址选体,低位地址选体内偏移。优点是单个程序能利用局部性,在一个体内连续访问(页命中率高);缺点是难以多体并行,不适合多任务或向量运算。

· 低位多体交叉(交叉编址):低位地址选体,高位地址选体内偏移。连续地址分布在所有体中,能实现流水线并行,特别适合向量、数组等批量数据访问。但单任务跨越多个体时,体冲突概率高,且切换任务开销大。

一句话总结:高位交叉为了容量(更像硬盘分区),低位交叉为了速度(像流水线工厂)。

8086CPU

8086 CPU(最小模式)总结

一、引脚功能分组(仅涉及存储器/I/O 连接部分)

· 地址/数据复用总线:AD15 ~ AD0(16 位)。

· 在总线周期的 T1 状态 输出地址(A15 ~ A0)。

· 在 T2/T3/T4 状态传输数据(D15 ~ D0)。

· 地址/状态复用总线:A19/S6 ~ A16/S3(4 位)。

· T1 状态输出高位地址(A19 ~ A16)。

· 其他状态输出状态信号(S6 ~ S3,一般忽略)。

· 控制信号:

· ALE(Address Latch Enable):T1 状态输出高电平,用于锁存地址。

· M/IO:高电平表示访问存储器,低电平表示访问 I/O。

· RD(读):低有效,读存储器或 I/O。

· WR(写):低有效,写存储器或 I/O。

· READY:由慢速存储器或 I/O 输入,低电平时 CPU 插入等待周期。

· BHE(高字节使能):低有效,表示数据总线上高 8 位(D15 ~ D8)有效。

二、地址锁存与总线分离(为什么需要 ALE)

8086 的地址和数据复用同一组引脚,因此必须在 T1 状态将地址锁存起来,供整个总线周期使用。

典型连接:

· AD15 ~ AD0 接到两个 74LS373 锁存器(低 8 位地址 + 高 8 位地址)。

· ALE 接到锁存器的 LE 引脚(锁存使能)。

· 锁存器输出 A15 ~ A0 连接到存储器或 I/O 的地址引脚。

· 数据总线 D15 ~ D0 直接从 AD15 ~ AD0 引出(或经缓冲)到存储器/I/O 的数据引脚。

这样,即使 AD 线上之后变成数据,锁存器输出的地址依然稳定。

三、最小模式读周期(从存储器或 I/O 读数据)

1. T1 状态:

· CPU 将地址放到 AD15 ~ AD0 和 A19/S6 ~ A16/S3 上。

· ALE 输出高电平,锁存器将地址锁存。

· M/IO 输出(高为存储器,低为 I/O)。

· BHE 和 A0 配合指示字节/字访问。

2. T2 状态:

· AD15 ~ AD0 切换为高阻,准备接收数据。

· RD 输出低电平(有效),通知外设将数据放到数据总线上。

3. T3 状态:

· 外设将数据驱动到 AD15 ~ AD0 上。

· CPU 采样 READY 线:

· 若 READY = 1,则 T3 结束后进入 T4。

· 若 READY = 0,则插入 Tw 周期,继续等待,直到 READY = 1。

4. T4 状态:

· CPU 在 T4 上升沿锁存数据。

· RD 变高,总线周期结束。

四、最小模式写周期(向存储器或 I/O 写数据)

1. T1 状态:同读周期,发出地址、ALE 锁存、M/IO、BHE/A0。

2. T2 状态:

· CPU 将要写的数据放到 AD15 ~ AD0 上(不再高阻)。

· WR 输出低电平(有效)。

3. T3 状态:

· 数据保持稳定。

· 外设(或存储器)在 WR 有效期间采样数据并写入。

· 同样检查 READY,必要时插入 Tw。

4. T4 状态:

· WR 变高,数据从总线上撤销,周期结束。

五、存储器与 I/O 的连接要点

· 存储器地址空间:00000H ~ FFFFFH(1MB,20 位地址)。

· I/O 地址空间:0000H ~ FFFFH(64KB,16 位地址),由 M/IO = 0 区分。

地址译码原则:

· 高位地址线(A19 ~ A 某位)通过译码器产生芯片的 片选信号(CE 或 CS)。

· 低位地址线直接连到存储器芯片的地址引脚(如 6264 的 A12 ~ A0)。

16 位数据总线访问:

· 偶地址(A0 = 0)且 BHE = 0 时,同时访问高 8 位和低 8 位(一个字)。

· 奇地址(A0 = 1)且 BHE = 0 时,仅访问高 8 位(奇字节)。

· 偶地址(A0 = 0)且 BHE = 1 时,仅访问低 8 位(偶字节)。

六、与外部芯片的典型连接(以 6264 SRAM 为例)

1. 地址线:

· 8086 锁存后的 A12 ~ A0 → 6264 的 A12 ~ A0。

· 更高的地址线(A19 ~ A13)经译码 → 6264 的 CE(或与其他信号组合)。

2. 数据线:

· 6264 的 I/O7 ~ I/O0 直接接 8086 的 D7 ~ D0(若只用低 8 位数据总线)或分别接高/低位数据线(16 位系统用两片 6264)。

3. 控制线:

· RD → 6264 的 OE。

· WR → 6264 的 WE(可能需要与 BHE/A0 组合以实现字节写入)。

· 片选 CE 由高位地址译码产生,并确保在访问存储器时有效。

七、中断与 DMA(仅概念,不展开细节)

· 可屏蔽中断:INTR 引脚,受 IF 标志控制,响应后从数据总线读取中断向量号。

· 不可屏蔽中断:NMI 引脚,边沿触发,不受 IF 影响。

· DMA:通过 HOLD/HLDA 请求并授予总线控制权,DMA 控制器(如 8237A)接管总线进行数据传输。