主存储器
主存储器是整个存储系统的核心, 它用来存放计算机运行期间所需要的程序和数据。
主存储器的基本结构
主存通常由存储体、地址译码(address decoding)驱动电路、I/O和读写电路组成。 组成框图如图5.2-1所示。

图5.2-1 主存组成框图
主存储器的核心是存储体。程序和数据都放在存储体中。
存储体是由若干存储单元组成的, 存储单元的编号称为地址, 地址和存储单元之间有一对一的对应关系。
位是二进制数的最基本单位, 也是存储器存储信息的最小单位。 一个二进制数由若干位组成, 当这个二进制作为一个整体存入或取出时, 这个数称为存储字。
存放存储字或存储字节的主存空间称为存储单元或主存单元,大量存储单元的集合构成一个存储体。
为了区别存储体中各个存储单元, 必须将它们逐一编号。 存储单元的编号称为存储单元的地址。
存储单元的地址和存储单元之间有一对一的对应关系。
一个存储单元可能存放一个字,也可能存放一个字节,这是由计算机的结构确定的,对于字节编址的计算机,最小寻址单元是一个字节,相邻的存储单元地址指向相邻的存储字节;对于字编制的计算机,最小寻址单位是一个字,相邻的存储单元地址指向相邻的存储字,所以存储单元是CPU对主存可访问操作的最小存储单位。
地址译码驱动电路:包含译码器和驱动器两部分。译码器将地址总线输入的地址码转换成与之对应的译码输出线上的有效电平,以表示选中了某一存储单元,然后由驱动器提供驱动电路去驱动相应的短些电路,完成对被选中存储单元的读写操作。
I/O和读写电路:包括放大器、写入电路和读写控制电路,用以完成被选中的存储单元中各位的读出和写入操作。
动态随机存储器DRAM
四管动态存储元
在六管静态存储元电路中,信息暂存于T1,T2管的栅极,这是因为管子总是存在着一定的电容。负载管T3,T4是为了给这些存储电荷补充电荷用的。由于MOS的栅极电阻很高,故泄漏电流很小,在一定的时间内这些信息电荷可以维持住。为了减少管子以提高集成度,把负载管T3,T4去掉,这样变成了四管的动态存储电路。
图5.2-8 4管DRAM记忆单元电路
单管动态存储元
它由一个管子T1和一个电容C构成,写入时,字选择线为“1”,T1管导通,定入信息由位线(数据线)存入电荷C上的电荷,通过T1输出到数据线上,通过读出放大器即可得到存储信息。

图5.2-9 单管DRAM记忆单元电路
当字线为高电平时,该电路被选中。
写入时,若写入“1”,位线为高电平,对电容C充电;若写入“0”,位线为低电平,C上的电荷经位线泄放。
读出时,若原存“1”,C上有电荷,经T1管在位线上产生读电流,完成读“1”操作。若原存“0”,C上无电荷,在位线上不产生读电流,完成读“0”操作。当读操作完毕,存储电容C上的电荷已被泄放完,故是破坏性读出,必须采取重写(再生)的措施。
存储电容C的容量不可能做得很大,一般比位线上的寄生电容Cd 间分配,就会使读出信息减少,所以,用单管记忆单元组成的存储器中,读出放大器应有较高的灵敏度。因为信息是存储在一个很小电容C上,也只能保留几毫秒的时间,所以必须定时第进行刷新操作。
刷新

动态RAM的存储元件依靠电容上的电荷表示所存储的数据信息,而电容的绝缘电阻不可能无限大,因此漏电不可避免。每隔一定的时间就对存储体中全部的存储电进行充电,以补充所消失的电荷,维持原存信息不变,这个过程称为“刷新”。
刷新的时间间隔取决与存储电容上的电荷释放速度。应在规定的时间内对全部存储体刷新一遍。
设电容为C,电压为u,电荷Q=Cu,则泄放电流为:

如果取C=0.2pF, △u=1V,I=0.1nA,则: 泄放时间△t=2ms

刷新方式:
(1)集中式刷新
在整个的2MS的时间内集中对每一行进行刷新,刷新时读/写操作停止,每行的刷新一般与一次 的读/写周期相等。
刷新时间=存储矩阵行数╳刷新周期
刷新周期是刷新一行所需要的时间。由于刷新过程就是“假读”的过程,所以刷新周期等于存 取周期。
对128*128矩阵存储器进行刷新时,刷新的时间相当于128个读周期,假如读写周期为0.5us,刷新 周期为2ms,那么共有2ms/0.5us=4000个周期.其中4000-128=3872个周期用来读写或维持,然后用 128个周期,相当于128*0.5=64us用来刷新操作.由于在这64us中不进行读写操作,故称其为死时间.

图5.2-10 集中式方式示意图
(2)分散式刷新
是把每行存储元件的刷新分散安排在各个读写周期内即把读写周期分为两段,前段表示读写,后段 表示刷新时间.
这种刷新方式增加了系统的存取周期。
这种刷新方式没有死区,明显的缺点:一是加长了系统的存取周期 ,降低了整机的速度;二是 刷新过于频繁,尤其是在当存储容量比较小的情况下, 没有充分利用所允许的最大刷新间隔(2ms)
例如:对32*32的存储器,假如存储器的读写周期为0.5us,那么刷新的时间也为0.5us,则整个存储系 统周期为1us.只需32us就能对全部的存储单元刷新一遍.

图5.2-11 分散式方式示意图
(3)异步式刷新
这种刷新方式可以看成前两种方式的结合,它充分利用了最大刷新间隔时间,把刷新操作平均 分配到整个最大刷新间隔时间内进行。
相邻两行的刷新时间=最大刷新间隔时间÷行数
对于32╳32矩阵,在2ms内需要将32行刷新一遍,所以相邻两行的刷新时间间隔 =2ms÷32=62.5μs,即每隔62.5μs安排一个刷新周期。在刷新是封锁读写。

图5.2-12 异步式方式示意图
只读存储器
即使电源断电,ROM中存储的信息也不会丢失。
ROM的类型
ROM工作是只能读出,不能写入。 把向ROM写入的过程称为对ROM进行编程,根据编程方法的不同,通常可分为以下几类:
(1)掩膜式ROM(MROM)
它的内容是由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入的。写入之后任何都无法改变。
(2)一次可编程ROM(PROM)
PROM允许用户利用专门的设备(编程器)写入自己的程序,一旦写入,其内容将无法改变。
(3)可擦除可编程ROM(EPROM)
EPROM不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次修改。
EPROM又可分为两种:紫外线擦除(UVEPROM)和电擦除(EEPROM).
(4)闪速存储器
闪速存储器(Flash Memory,简称闪存)是一种允许在操作中被多次擦除或重写的只读存储器,它的主要特点是既可在不加电的情况长期保存信息,又能在线进行快速擦除与重写。兼备了EEPROM和RAM的有点。
主存储器和CPU的连接
位扩展法:
说明:当芯片的容量和主存容量相同,而位数不足时,就要对位数进行扩展。
方法:将多片存储芯片的地址端、片选端和读/写控制端各自并联在一起,而他们的数据端分别引出,连到存储器不同位的数据总线上。
例1:用Intel2114芯片,组成1024*8的存储器。
解:2114的规格为1024*4,所以需要两片

图4.2-13 位扩展存储器和CPU的连接
字扩展法:
说明:当芯片字长与主存相同,而容量不足时,就需要用几片存储器芯片组成合起来对存储空间即地址空间进行扩展,称为字扩展。
方法:将各芯片的地址线,数据线、读/写线分别并联在一起,片选信号单独连接,用来区分各片地址,用高位地址经过译码而产生的输出信号作为各个芯片的片选信号,用低位地址作为各芯片的片内地址。
例2:用Intel2114芯片,组成4096*4的存储器
解:系统地址线:12条,数据线4条
芯片地址线:10条,数据线4条

图4.2-14 字扩展存储器和CPU的连接
字位同时扩展
一个存储器的容量假定为M×N位,若使用l×k位的芯片(l<M,k<N)需要在字向和位向同时进行扩展。此时共需要(M/l)×(N/k)个存储器芯片。
其中,M/l表示把M×N的空间分成(M/l)个部分(称为页或区),每页(N/k)个芯片。
地址分配:
①用log2 l位表示低位地址:用来选择访问页内的l个字
②用log2(M/l)位表示高位地址:用来经片选译码器产生片选信号。
例3:用Intel 2114芯片1K*4构成4K*8的存储系统。

图4.2-14 字位扩展存储器和CPU的连接
3.CPU的地址总线16根,双向数据总线8根,控制总线中与主存有关的信号MERQ,R/W。主存地址空间分配如下:0—8191为系统程序区,由只读存储芯片组成,8192—32767为用户程序区,最后2K地址空间为系统工作区。
现有芯片:
EPROM 8K*8
SRAM 16K*1,2K*8,4K*8,8K*8

图4.2-15
根据条件选用
ROM:8k*8位,1片
RAM:8K*8,3片,2K*8 1片

提高主存速度的技术
概述
传统的DRAM是通过分页技术进行访问的。 在存取数据时,需要分别输入一个行地址和一个列地址,这会耗费时间。 快速页模式随机存储器(Fast Page Mode DRAM)是传统DRAM的改进型产品,通过保持行地址不变而改变列地址,可以对给定的行的所有数据进行更快的访问。
FPM DRAM还支持突发模式访问。所谓如噶模式是指对一个给定的访问在建立行和列地址之后,可以访问后面3个相邻的地址,而不需要额外的延迟和等待状态。
扩展数据输出(Extended Data Output DRAM, EDO DRAM)是在FPM DRAM基础上加以改进的存储器控制技术。 EDO 输出数据在整个CAS周期都是有效的,EDO不必等待当前的读写周期完成即可启动下一个读写周期 ,即可以在输出一个数据的过程中准备下一个数据的输出。 EDO DRAM采用一种特殊的主存读出控制逻辑, 在读写一个存储单元时, 同时启动下一个(连续)存储单元的读写周期,从而节省了重选地址的时间,提高了读写速度。
同步动态随机存储器(Synchromous DRAM, SDRAM)是一种与主存运行同步的DRAM. SDRAM在同步脉冲的控制下工作,取消了主存等待时间,减少了数据传送的延迟时间,因而加快了系统速度。
双数据传输率同步动态随机存储器(Double Data Rate SDRAM, DDR SDRAM)也可以说是SDRAM的升级版本,不仅能再时钟脉冲上升沿读出数据而且还能在下降沿读出数据,不需要提高时钟频率就能加倍提高SDRAM的速度。
双端口存储器
双端口存储器由于同一个存储器具有两组相互独立的读写控制电路而得名。
1. 无冲突读写控制
当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一个端口被选中驱动时,就可对整个存储器进行存取,每一个端口有自己的片选控制和输出驱动控制。 读操作时, 端口的 打开输出驱动器,有存储矩阵读出的数据就出现在I/O线上。
2. 有冲突读写控制
当两个端口同时存取存储器同一存储单元时, 变发生读写冲突。为了解决此问题,特设置了
标志。在这种情况下, 片上的判断逻辑可以决定对哪个端口优先进行读写操作,而对另一个被延迟的端口置
标志(
变为低电平),即暂时关闭此端口。换句话说,读写操作对
变为低电平的端口是不起作用的。 一旦优先端口完成读写操作,才将被延迟端口的
标志复位(
变为高电平),开放此端口,允许延迟端口进行存取。
交叉存储器
一个由若干个模块组成的主存储器是线性编址的。这些地址在各模块中如何安排,有两种方式:一种是顺序方式,一种是交叉方式。
1. 顺序方式
设存储器容量为32个字,分成M0、M1、M2、M3四个模块,每个模块存储8个字,访问地址按顺序分配给一个模块后,接着又按顺序为下一个模块分配访问地址,这样,存储器的32个字可由5位地址寄存器指示,其中高2位选择4个模块中的一个,低3位选择每个模块中的8个字。
2. 交叉方式
将4个线性地址0,1,2,3依次分配给M0、M1、M2、M3四个模块,再将线性地址4,5,6,7依次分配给M0、M1、M2、M3四个模块……直到全部线性地址分配完毕为止。当存储器寻址时,用地址寄存器的低2位选择4个模块中的一个,而 用高3位选择模块中的8个字。
3. 基本结构
主存被分为4个相互独立、容量相同的M0、M1、M2、M3四个模块。每个模块都有自己的读写控制电路、地址寄存器和数据寄存器,各自以等同的方式与CPU传送信息。
CPU同时方位四个模块,由存储器控制部件控制他们分时使用数据总线进行信息传送。这样,对每一个存储模块来说,从CPU给出访存命令知道读出信息仍然使用了一个存储周期时间,而对CPU来说,它可以在一个存取周期内连续访问四个模块。各个模块的读写将重叠进行,所以多模块交叉存储器是一种并行存储器结构。
图5.3-2 顺序方式和交叉方式的存储
假设模块自称等于数据总线宽度,模块存取一个字的存储周期为T,总线传送周期为
,存储器的交叉模块数为m,那么为了实现流水线方式存取,应当满足:

即成块传送可按
间隔流水方式进行,也就是每经
时间延迟后启动下一个模块。
称为交叉存取度。交叉存储器要求其模块数必须大于或等于m,以保证启动某模块后经
时间再次启动该模块是,他的上次存取操作已经完成。 这样,连续读取m个字所需的时间为:

而顺序方式存储器连续读取m个字的时间为:

相联存储器
是按内容访问存储器。相联存储器的基本原理是把存储单元所存内容的某一部分作为检索项(即关键字项),去检索存储器,并将存储器中该检索项符合的存储单元内容进行读出或写入。
采用相联存储器可以极大地简化查找的形式和改进查找时间。
相联存储器的组成: 检索寄存器、屏蔽寄存器、符合寄存器、比较线路、代码寄存器、存储体。

图5.3-3 相联存储器逻辑图