存储系统

120 阅读15分钟

大纲

(一)存储器的分类

(二)存储器的层次化结构

(三)半导体随机存取存储器

1.SRAM存储器

2.DRAM存储器

3.只读存储器

4.Flash存储器

(四)主存储器与CPU的连接

(五)双口RAM和多模块存储器

(六)高速缓冲存储器(Cache)

1.Cache的基本工作原理

2.Cache和主存之间的映射方式

3.Cache中主存块的替换算法

4.Cache写策略

(七)虚拟存储器

1.虚拟存储器的基本概念

2.页式虚拟存储器

3.段式虚拟存储器

4.段页式虚拟存储器

5.TLB(快表)

一、基本概念

1.高速缓冲存储器

位于CPU和主存储器之间的一个高速小容量存储器,用来存放主存中正在使用的程序和数据的部分副本,以提高CPU访问内存的速度。

2.主存储器

即内存、用来存放计算机运行期间所需要的程序和数据,CPU可直接随机地对它进行读/写访问。

3.辅助存储器

用来存放当前暂不会与运行的程序和数据以及一些需要永久性保存的信息。CPU不能直接访问它。

4.虚拟存储器

一种将大的存储空间映射到比它小得多的物理空间的机制。由CPU中的存储管理模块和操作系统中的相应模块共同支持。它使得应用程序员可以用比实际内存容量大的虚拟存储器空间编程,从而解决了内存容量不足的问题。

5.随机存储器RAM

RAM单元的内容可以随机地读/写。CPU对任何一个RAM存储单元的读/写时间相同,且存取时间与存储单元的地址无关。

6.只读存储器ROM

ROM存储器的内容只能随机读出而不能写入。

7.顺序存取存储器SAM

SAM的内容只能按某种顺序存取,存取时间与信息在存储体上的物理位置有关。

8.直接存取存储器DAM

信息的存取需要两步逻辑操作,第一步直接指向整个存储器中的某个小区域(如磁盘上的磁道),第二步在小区域内顺序检索或等待,直至找到目标后再进行读/写操作。

9.存储容量

指主存所能容纳的二进制信息总量。

10.存取时间Ta

指从启动一次存储器操作到完成该操作所经历的时间。

11.存储周期Tm

连续两次访间存储器操作之间所需要的最短时间。一般情况下,Tm>Ta

12.数据传输率BM

BM=W/Tm,其中W为数据宽度,Tm为存储周期。

  1. SRAM

利用双稳态触发器的两个稳定状态来保存信息,只要不断电,信息不会丢失。

  1. DRAM

利用MOS电容存储电荷来保存信息,使用时需不断给电容补充电荷才能使信息保持。

15.刷新

为了维持动态RAM存储的信息,每隔一定时间必须对存储体中所有记忆单元的栅极电容补充电荷,这个过程就是刷新。

16.页表

页表是在虚拟存储器中,为了实现虚实地址的转换而建立的。其内容记录了虚页号和实页号的对应关系。

17.快表(TLB)

为了提高页表中常用项的访问速度,采用快速硬件构成的比全表小得多的部分表格。

18.慢表

存放在内存中的整个页表。

二、存储器的分类

1.按存储介质分类

半导体存储器(易失型)

磁表面存储器(非易失型)

磁芯存储器(非易失型)

光盘存储器(非易失型)

磁芯存储器

2.按照存取方式分类

3.按在计算机中的作用分类

闪存的例子有U盘,闪存属于半导体存储器。

Cache是由静态RAM做的。

总结

三、存储器的层次结构(存储模型)

四、主存储器

主存的基本组成

存储器的性能指标

主存中存储单元地址的分配

半导体存储器芯片

半导体芯片基本结构

1.存储矩阵:由大量相同的位存储单元阵列构成。

2.译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。

3.读写电路:包括读出放大器和写入电路,用来完成读/写操作。

4.读/写控制线:决定芯片进行读/写操作。

5.片选线:确定哪个存储芯片被选中。可用于容量扩充。

6.地址线:是单向输入的,其位数与存储字的个数有关。

7.数据线:是双向的,其位数与读出或写入的数据位数有关。

8.数据线数和地址线数共同反映存储芯片容量的大小。

半导体随机存储器的分类

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。

ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

RAM有两大类,一种称为静态RAM(StaticRAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲Cache。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。 DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。

RAM随机存取存储器

静态RAM和动态RAM

DRAM的刷新

读写时序过程

静态RAM与动态RAM对比

只读存储器ROM

存储器与CPU连接

存储器的扩展方法有:字扩展、位扩展

位扩展

字扩展

字扩展-线选法

字扩展-片选法

字位同时扩展

译码器

五、提高访存速度的措施

双端口RAM

双端口存储器的有冲突读写控制。

如果左右端口同时访问双口RAM的同一存储单元,势必造成数据访问冲突。实现访问的竞争控制通常可采用以下方法:

①采用Busy逻辑控制:也称硬件地址仲裁逻辑。设置了Busy标志,Busy为高电平的端口为开放状态。由片上的判断逻辑决定哪个端口Busy有效,而暂时关闭另一个端口。仲裁控制不会同时向两个CPU发Busy闭锁信号,只允许一个CPU访问该地址单元。

②存储单元数据块的访问权限分配:存储单元数据块的访问权限分配只允许在某一时间段内由1个CPU对自定义的某一数据块进行读/写操作,这将有助于存储数据的保护,更有效地避免地址冲突。

多模块存储器

单体多字系统

多体并行系统

(1)构成:多体交叉存储器由多个存储体构成,而且每个存储体都有独立的地址寄存器和控制逻辑。或者说多体交叉存储器由多个可以独立访问的存储模块构成。

(2)编址方式:各模块采用低位交叉方式编址。所谓低位交叉编址指使用存储器地址的低位来指明存储器模块,高位是每个模块内的字地址。连续的地址分布在相邻的模块中,同一模块内的地址是不连续的。

编址方式分为高位交叉编址低位交叉编址两种,高位交叉编址优先解决的是容量问题,低位交叉编址才显著提升了内存读写速度。

高速缓冲存储器(Cache)

Cache基本原理

局部性原理

(1)空间局部性原理:在一个较短的时间内,取指令代码的操作往往集中在存储器逻辑地址空间的很小范围内。
(2)时间局部性原理:现在被访问的存储单元在不久的将来还会被访问。
(3)产生原因:指令在内存中是顺序存放和执行的;程序中存在大量循环程序段和需要重复多次执行的子程序段;存在数组的存储和访问操作。

Cache工作原理

当以主存地址访问存储器时,如果Cache不命中,则把正在访问的存储单元及其附近单元的指令代码或数据从主存装人Cache中,由于存储器访问的局部性,在以后的一段时间内,CPU要访问的指令或者数据在Cache 中的可能性较大,使CPU大部分存储器访问都在 Cache 中命中,而不需访问主存,从而提高程序的运行速度。

Cache效率分析

使用Cache读写需要考虑的问题:

Cache与主存的映射方式

所谓地址映射是指主存信息块调入Cache时,按照一定规则被装入Cache的某一位置。由于Cache的存储空间较小,因此Cache中的一个存储块要与主存中的若干个存储块相对应。

所谓地址变换是指当以主存地址访问Cache时,地址变换机构会将主存地址变换为Cache地址,以便从Cache访问该数据,这个变换过程称为地址变换。

直接映射

直接映射:直接映射相当于将主存空间按Cache的大小进行分区,区内某一块只能映射到与它区内块号相同的Cache块,即某一个主存块在Cache中只有一个可用位置,对于块号为i的主存块、其可以装人到的Cache块号为j=i mod Cache块数。直接映射的优点是实现简单,缺点是不够灵活,尤其是当程序往返访问两个相互冲突的块时,Cache的命中率将急剧下降。

1.直接映射主存地址格式;主存区号+区内块号+块内偏移地址。

2.直接映射Cache地址格式:Cache块号+块内偏移地址。

3.直接映射Cache 标记Tag的内容:是映射到该位置的主存块的主存地址中的区号。

4.直接映射地址变换过程:根据主存地址的块号s,在目录表中查找Cache块s所对应的表项,查有该Cache块的标记是否与主存地址区号部分相同,如相同,说明要访同的主存单元在Cache 中,以块号s+块内地址t访问Cache。否则说明请求的内容不在Cache中。

全相联映射

全相联映射:它允许主存中的每一个字块陕射到Cache存储器的任何一个字块位置上,一个主存块在Cache中有多个可用位置。全相联方式块冲突的概率低,Cache 的利用率高,但硬件控制复杂,实现起来比较困难。

1.主存地址格式:主存块号+块内偏移地址

2.Cache 地址格式:Cache 块号+块内偏移地址

3.Cache标记 Tag内容:主存块号。因为全相联映射时,某一个Cache 块的信息可能来自任意一个主存块,利用标记表明该 Cache块来自主存的哪一块。

4.地址变换过程:主存块号与所有Cache块的标记进行比较,如果有相同的,说明访问的主存单元在Cache 中命中,则读出Cache 块号拼接块内地址访问 Cache。否则不命中。

组相联映射

组相联映射:映射规则是将Cache存储空间分成若干组,组内包含若干块,将主存按照Cache的大小划分为区,区内分组,主存中一个组内的块数与Cache中的组内块数相同,主存组到Cache组之间采用直接映射,组内块采用全相联映射。即主存组只能映射到Cache的特定组,主存组内各块可以映射到Cache组内任意一块。主存某块可装入Cache中一个指定组内的任意块中,主存块在Cache 中有多个可用位置(一组内的任意位置)。组相联映射方法实现比全相联映射方法简单,块冲突的既率比直接映射方法低,其命中率介于直接映射和全相联映射方法之间。

1.主存地址格式:主存区号+区内组号+组内块号+块内偏移。

2.Cache地址格式:Cache组号+组内块号+块内偏移。

3.Cache块的标记Tag内容:主存区号和组内块号。因为某一个Cache块中的内容可能来自主存任何一个区、而区内组到组是直接映射,所以区内组号是一定的,组内是全相联映射,需要表明是组内哪一块。

4.地址变换过程:根据主存地址中的区内组号找到Cache组,并将主存地址中的区号+组内块号与该组内各个字块的标记进行比较,如果有相同的,说明命中。

注意:为了加快组相联映射地址变换速度,对于n路组相联映射,使用n个比较器同时将主存地址的相关字段与组内a各Cache块的标记进行比较,比较器的位数等于标记的位数。

Cache替换策略

随机算法(RAND)

先进先出算法(FIFO)

近期最少使用算法(LRU)

最不经常使用算法(LFU)

LFU算法——曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块),并没有很好地遵循局部性原理,因此实际运行效果不如LRU。

Cache写策略

写回法

全写法

写分配法

非写分配法

多级缓存

六、虚拟存储器

页式虚拟存储器

段式虚拟存储器

段页式虚拟存储器

七、外部存储器

1.磁表面存储器、光盘

2.固态硬盘SSD

SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。

优点:读写快速、质量轻、能耗低以及体积小等。

缺点:价格较为昂贵,容量较低,一旦硬件损坏,数据较难恢复,寿命相对较短。

基于闪存的固态硬盘(IDEFLASH DISK、Serial ATA Flash Disk):采用FLASH芯片作为存储介质,这也是通常所说的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。这种SSD固态硬盘最大的优点就是可以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使用。寿命较长,根据不同的闪存介质有所不同。SLC闪存普遍达到上万次的PE,MLC可达到3000次以上,TLC也达到了1000次左右,最新的QLC也能确保300次的寿命,普通用户一年的写入量不超过硬盘的50倍总尺寸,即便最廉价的QLC闪存,也能提供6年的写入寿命。可靠性很高,高品质的家用固态硬盘可轻松达到普通家用机械硬盘十分之一的故障率。

基于DRAM类:基于DRAM的固态硬盘:采用DRAM作为存储介质,应用范围较窄。它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。它是一种高性能的存储器,理论上可以无限写入,美中不足的是需要独立电源来保护数据安全。DRAM固态硬盘属于比较非主流的设备。

基于3D XPoint类基于3D XPoint的固态硬盘:原理上接近DRAM,但是属于非易失存储。读取延时极低,可轻松达到现有固态硬盘的百分之一,并且有接近无限的存储寿命。缺点是密度相对NAND较低,成本极高,多用于发烧级台式机和数据中心。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天,点击查看活动详情