目录
一. 存储系统基本概念
(1)存储系统的层次结构
(2)分类
(3)存储器的性能指标
二. 主存储器的基本组成
三. SRAM和DRAM
四. 只读存储器ROM
五. 提升主存速度的方法
(1)双端口RAM
(2)多体并行存储器
六. 主存储器与CPU的连接
(1)位扩展
(2)字扩展
(3)字-位同时扩展
一. 存储系统基本概念
(1)存储系统的层次结构
注:有的教材把安装在电脑内部的磁盘称为“辅存”,把U盘、光盘等称为“外存”。也有的教材把磁盘、U盘、光盘等统称为“辅存”或“外存”。
辅存中的数据要调入主存后才能被CPU访问。主存―辅存:实现虚拟存储系统,解决了主存容量不够的问题。Cache—主存:解决了主存与CPU速度不匹配的问题。
(2)分类
按层次分类:
按存储介质分类:半导体存储器,磁表面存储器,光存储器。
按存取方式:随机存取存储器(RandomAccess Memory,RAM):读写任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关。顺序存取存储器(SequentialAccess Memory,SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置。直接存取存储器(Direct AccessMemory,DAM):既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取。SAM和DAM都是串行访问存储器,读写某个存储单元所需时间与存储单元的物理位置有关。相联存储器(Associative Memory):即可以按内容访问的存储器(ContentAddressesd Memory,CAM),可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器。
按信息的可更改性:读写存储器(Read/Write Memory)——即可读、也可写(如:磁盘、内存、Cache)。只读存储器(Read Only Memory)——只能读,不能写(如:实体音乐专辑通常采用CD-ROM,实体电影采用蓝光光碟,BIOS通常写在ROM中)。
按信息的可保存性:断电后,存储信息消失的存储器―—易失性存储器(主存、Cache)
断电后,存储信息依然保持的存储器――非易失性存储器(磁盘、光盘)
信息读出后,原存储信息被破坏――破坏性读出(如DRAM芯片,读出数据后要进行重写)信息读出后,原存储信息不被破坏――非破坏性读出(如SRAM芯片、磁盘、光盘)
(3)存储器的性能指标
1.存储容量:存储字数×字长(如1M×8位)。MDR位数反映存储字长。
2.单位成本:每位价格=总成本/总容量。
3.存储速度:数据传输率=数据的宽度/存储周期。数据的宽度即存储字长。
①存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
②存取周期(Tm):存取周期又称为读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽(Bm):(主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。
二. 主存储器的基本组成
存储器由存储体,MAR和MDR组成。存储体又由存储元构成。
每一个存储元由MOS管和电容组成。MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通。
- 存储0/1:电容器有电荷则为1,没有电荷则为0;
- 读0/1:MOS管接高于阈值的电压,使得MOS管导通,此时在右面检测,有电荷则为读出1,没有电荷则为读出0;
- 写0/1:MOS管接高于阈值的电压,使得MOS管导通,右面为高电平则向电容写入1,为低电平则向电容写入0;
多个存储单元可以组成一个存储体。除了存储体之外,还有译码器(输入地址总线,n位地址,对应个存储单元)。控制电路,片选线(划线表示低电平有效)。
简化图里面有一个译码驱动,作用是稳定的输出选择存储单元的红线(字选择线)信号。上图的每根线都会对应一个金属引脚。另外还有供电引脚,接地引脚等。由于n位地址→个存储单元,总容量=存储单元个数×存储字长。例如8K×8位,即bit,8K×1位,即bit。
最后介绍一下寻址。总容量为1KB。关于字节地址向字地址的转换,算术左移两位即可。
- 按字节寻址: 1K个单元(需要10根地址线,),每个单元1B。
- 按字寻址:256个单元,每个单元4B
- 按半字寻址:512个单元,每个单元2B
- 按双字寻址:128个单元,每个单元8B
三. SRAM和DRAM
顺序存取存储器(SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置。直接存取存储器(DAM):既有随机存取特性,也有顺序存取特性。DRAM用于主存、SRAM用于Cache。现在的主存通常采用SDRAM芯片。
DRAM芯片:就是上一节介绍的,利用电容+MOS管制造。
SRAM芯片:使用双稳态触发器存储信息。双稳态:1:A高B低;0:A低B高。
电容放电信息被破坏,是破坏性读出。读出后应有重写操作,也称“再生”。每个存储元制造成本更低,集成度高,功耗低,读取速度慢。
双稳态触发器读出数据,触发器状态保持稳定,是非破坏性读出,无需重写。每个存储元制造成本更高,集成度低,功耗大,读取速度快。
初学者应当注意区分“破坏性读出”和“易失性”的区别。
最后补充一下DRAM的刷新问题。电容内的电荷只能维持2ms,即便不断电,2ms后信息也会消失。因此2ms内必须“刷新”一次(给电容充电)。通常,每次刷新一行存储单元。这就引出另一个问题—―为什么要用行列地址?答案是减少译码器的选通线数量:
刷新有硬件支持,由存储器独立完成,不需要CPU控制。读出一行的信息后重新写入,占用1个读/写周期。至于刷新的方式,有三种刷新方式:分散刷新,集中刷新,异步刷新。假设DRAM内部结构排列成128×128的形式,读/写周期(也称存取周期)。这样2ms就是4000个读写周期。
关于DRAM的地址线复用技术:行、列地址分两次送,可使地址线更少芯片引脚更少。原本需要n个,现在只需要n/2个。
四. 只读存储器ROM
RAM芯片一一易失性,断电后数据消失。ROM芯片——非易失性,断电后数据不会丢失。
ROM芯片虽然名字是“Read-Only”,但很多ROM也可以“写”闪存的写速度一般比读速度更慢,因为写入前要先擦除。很多ROM也具有“随机存取”的特性。
MROM (Mask Read-Only Memory) 一一掩模式只读存储器,厂家按照客户需求,在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)可靠性高、灵活性差、生产周期长、只适合批量定制。
PROM (Programmable Read-Only Memory) ——可编程只读存储器用户可用专门的PROM写入器写入信息,写一次之后就不可更改。
EPROM (Erasable Programmable Read-Only Memory)——可擦除可编程只读存储器允许用户写入信息,之后用某种方法擦除数据,可进行多次重写。
UVEPROM (ultraviolet rays)——用紫外线照射8~20分钟,擦除所有信息。
EEPROM(也常记为E2PROM,第一个E是Electrically)——可用“电擦除”的方式,擦除特定的字
每个存储元只需单个MOS管,位密度比RAM高。
Flash Memory ——闪速存储器(注:U盘、SD卡就是闪存)。在EEPROM基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写注意:由于闪存需要先擦除在写入,因此闪存的“写”速度要比“读”速度更慢。手机辅存也使用Flash芯片,但相比SSD使用的芯片集成度高、功耗低、价格贵。
SSD (Solid State Drives) ——固态硬盘,由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。SSD速度快、功耗低、价格高。目前个人电脑上常用SSD取代传统的机械硬盘。
主板上的BIOS芯片(ROM),存储了“自举装入程序”,负责引导装入操作系统(开机)。但注意:我们常说“内存条”就是“主存”,但事实上,主板上的ROM芯片也是“主存”的一部分。逻辑上主存由RAM+ROM组成,它们统一编址。
五. 提升主存速度的方法
分别是两种主存优化技术。DRAM芯片的恢复时间比较长,有可能是存取时间的几倍(SRAM的恢复时间较短)。多核CPU都要访存,怎么办? CPU的读写速度比主存快很多,主存恢复时间太长怎么办?
(1)双端口RAM
双端口RAM解决多核CPU都要访存的问题,优化多核CPU访问一根内存条的速度。图示两个CPU1和CPU2,需要有两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更复杂的控制电路。两个端口对同一主存操作有以下4种情况:
1.两个端口同时对不同的地址单元存取数据。
2.两个端口同时对同一地址单元读出数据。
3.两个端口同时对同一地址单元写入数据,此时发生写入错误。
4.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。此时发生读出错误。
解决方法:置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。
(2)多体并行存储器
多体并行存储器每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。可以理解为“多根内存条”。首先介绍什么是高位交叉编址和低位交叉编址。高位交叉编址就是高位表示存储体编号,低位交叉编址就是低位表示存储体编号。
现在考虑连续读取n个存储字。如果使用高位编址,因为这几个地址对应的存储单元都在M0,所以必须等其恢复之后在进行访问,而如果采用低位编址,我们可以访问M0,然后在M0的恢复时间去访问M1...以此类推,到M3读取完,M0的恢复时间也刚好结束。宏观上低位编址读写一个字的时间接近r。
所以,低位编址可以采用“流水线”的方式并行存取(宏观上并行,微观上串行)。宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。存取周期为T,存取时间(总线传输时间)为r,为了使流水线不间断,应保证模块数m≥T/r。
与多模块存储器对应的还有单体多字存储器,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字。每次只能同时取m个字,不能单独取其中某个字。
六. 主存储器与CPU的连接
(1)位扩展
(2)字扩展
线选法:把地址位直接接CS,此时地址不连续。
译码片选法:n条线,个选片信号。