计组与微机控制
4.6 并行主存系统与 8086 CPU
4.6 并行主存系统与 8086 CPU

这三个概念主要解决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)接管总线进行数据传输。
