# 5.4.1 主存容量的扩展
要组成一个主存,首先要考虑选片的问题,然后就是如何把芯片连接起来的问题。根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出总的芯片数,即
1.位扩展
位扩展指只在位数方向扩展(加大字长),而芯片的字数和存储器的字数是一致的。
如用64K×1的SRAM芯片组成64K×8的存储器,需要8个芯片。
2.字扩展
- 字扩展是指仅在字数方向扩展,而位数丌变。
- 如用16K×8的SRAM组成64K×8的存储器,需要4个芯片。
在同一时间内四个芯片中只能有一个芯片被选中。四个芯片的地址分配如下:
第一片 : 最低地址 0000H; 最高地址 3FFFH
第二片 : 最低地址 4000H; 最高地址 7FFFH
第三片 : 最低地址 8000H; 最高地址 BFFFH
第四片 : 最低地址 C000H; 最高地址 FFFFH
3.字和位同时扩展
- 当构成一个容量较大的存储器时,往往需要在字数方向和位数方向上同时扩展。
- 如用16K×4的SRAM组成64K×8的存储器,需要8个芯片。
# 5.4.2 存储芯片的地址分配和片选
片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端(N由片内存储容量2的N次方 决定),而片选信号则是通过高位地址得到的。
实现片选的方法:− 线选法; 全译码法; 部分译码法
1.线选法
线选法就是用除片内寻址外的高位地址线直接分别接至各个存储芯片的片选端,当某地址线信息为“0”时,就选中不之对应的存储芯片。
假设4片2K×8的芯片,构成8K×8的存储器
2.全译码法
全译码法将片内寻址外的全部高位地址线作为地址译码器的输入,把经译码器译码后的输出作为各芯片的片选信号,将它们分别接到存储芯片的片选端,以实现对存储芯片的选择。
假设4片2K×8的芯片,构成8K×8的存储器,若CPU地址总线20位。
3.部分译码
所谓部分译码即用片内寻址外的高位地址的一部分来译码产生片选信号。
如用4片2K×8的存储芯片组成8K×8存储器,需要四个片选信号,因此只要用两位地址线来译码产生。
设地址总线有20位(A19~A0),则寻址8K×8存储器时,无论A19 ~A13取何值,只要A12 =A11 =0,而均选中第一片,只要A12 =0,A11 =1,均选中第二片,……。
也就是说,8K RAM中的任一个存储单元,都对应有2 (20-13) =27 个地址,这种一个存储单元出现多个地址的现象称地址重叠。从地址分布来看,这8KB存储器实际上占用了CPU全部的空间(1MB)。每片2K×8的存储芯片有1/4M=256K的地址重叠区。
# 5.4.3 主存储器和CPU的连接
1.主存和CPU之间的硬连接
主存不CPU的硬连接有三组连线:地址总线(AB)、数据总线(DB)和控制总线(CB)。
2.CPU对主存的基本操作
CPU不主存的硬连接是两个部件之间联系的物理基础,而两个部件之间还有软连接,即CPU向主存发出的读或写命令,这才是两个部件之间有效工作的关键。
(1) 读
读操作是指从CPU送来的地址所指定的存储单元中取出信息,再送给CPU,其操作过程是:
- 地址→MAR→AB : CPU将地址信号送至地址总线
- Read : CPU发读命令
- Wait for MFC : 等待存储器工作完成信号
- ((MAR))→DB→MDR : 读出信息经数据总线送至CPU
(2) 写
写操作是指将要写入的信息存入CPU所指定的存储单元中,操作过程是:
- 地址→MAR→AB : CPU将地址信号送至地址总线
- 数据→MDR→DB : CPU将要写入的数据送至数据总线
- Write : CPU发写命令
- Wait for MFC : 等待存储器工作完成信号
# 5.4.4 PC系列微机的存储器接口
数据总线一次能并行传送的位数,称为总线的数据通路宽度,常见的有8位、16位、32位、64位几种。但大多数主存储器常采取字节编址,每次访存允许读/写8位,以适应对字符类信息的处理。
1.8位存储器接口
如果数据总线为8位(如微机系统中的PC总线),而主存按字节编址,则匹配关系比较简单。一个总线周期中读/写8位
2.16位存储器接口
对于16位的微处理器8086(或80286),在一个总线周期内可读/写两个字节,即先送出偶地址,然后同时读/写这个偶地址单元和随后的奇地址单元,用低8位数据总线传送偶地址单元的数据,用高8位数据总线传送奇地址单元的数据,这样读/写的字(16位)被称为规则字。
如果读/写的是非规则字,即是从奇地址开始的字,这时需要安排两个总线周期才能实现。
8086微处理器的地址线A19 ~A1同时送至两个存储体,BHE(高位存储体)和最低位地址线A0用来选择一个或两个存储体进行数据传送。
8086微处理器的地址线A19~A1同时送至两个存储体,BHE(高位存储体)和最低位地址线A0用来选择一个或两个存储体进行数据传送。