存储系统及存储器

1.存储器概述

分类

  • 按在计算机中的层次分类
  1. 主存储器:主存,又称内存。用来存放计算机运行期间所需的大量程序和数据,CPU可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)及辅助存储器交换数据。特点为容量较小、存取速度较快、每位价格较高。
  2. 辅助存储器:辅存,又称外存。用来存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息。它不能与CPU直接交换信息。其特点是容量极大、存取速度较慢、单位成本低。
  3. 高速缓冲存储器:简称Cache,位于主存与CPU之间,用来存放正在执行的程序段和数据,以便CPU可以高速地使用它们。Cache的存取速度可与CPU的速度相匹配,但存储容量小、价格高。
  • 按存储介质分类
    按存储介质,存储器可分为磁表面存储器(磁盘、磁带),磁心存储器半导体存储器(MOS型存储器、双极型存储器)和光存储器(光盘)。

  • 按存取方式分类

  1. 随机存储器(RAM):存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。优点是读写方便、使用灵活,主要用作主存或高速缓冲存储器。RAM又分为静态RAM(以触发器原理寄存信息)和动态RAM(以电容充电原理寄存信息)。
  2. 只读存储器(ROM):存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变,即使断电,内容也不会丢失。因此,通常用它存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。
  3. 串行访问存储器:对存储单元进行读写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)与直接存取存储器(如磁盘)。
  • 按信息的可保存性分类
    断电后,存储信息即消失的存储器,称为易失性存储器,如RAM。
    断电后,信息仍然保持的存储器,称为非易失性存储器,如ROM、磁表面存储器和光存储器。
    若某个存储单元所存储的信息被读出时原存储信息被破坏,则称为破坏性读出;如读出时,被读单元原存储信息不被破坏,则称为非破坏性读出。
    具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。

性能指标

存储器有三个主要的性能指标:存储容量、单位成本和存储速度。这三个指标相互制约,设计存储器系统所追求的目标就是大容量、低成本和高速度。

  • 存储容量 = 存储字数 x 字长(如1M x 8位)。单位换算:1B(Byte,字节)= 8b(bit,位)。
    存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量。

  • 单位成本:每位价格 = 总成本/总容量。

  • 存储速度:数据传输率 = 数据的宽度/存储周期。

    1. 存取时间:存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
    2. 存取周期:存取周期又称读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
    3. 主存带宽:主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量。

    存取时间不等于存储周期,通常存储周期大于存取时间。因为对任何一种存储器,在读写操作后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,因为存储器中的信息读出后需要马上进行再生。
    存取时间与存取周期的关系如下图所示:
    在这里插入图片描述

2.存储器的层次结构

  • 为了解决存储系统大容量、高速度和低成本三个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,如下图所示,由上至下,价位越来越低,速度越来越慢,容量越来越大,CPU访问的频率也越来越低。
    在这里插入图片描述

  • 存储系统层次结构主要体现在“Cache—主存”层次和“主存—辅存”层次。前者主要解决CPU和主存速度不匹配的问题,后者主要解决存储系统的容量问题。在存储体系中,Cache、主存能与CPU直接交换信息,辅存则要通过主存与CPU交换信息,主存与CPU、Cache、辅存都能交换信息,如下图所示。

在这里插入图片描述

  • 存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。从CPU的角度看,“Cache—主存”层次速度接近于Cache,容量和价位却接近于主存。从“主存—辅存”层次看,其速度接近于主存,容量和价位却接近于辅存。这样也就解决了速度、容量、成本这三者之间的矛盾。
    1.需要注意的是,主存和Cache之间的数据调动是硬件自动完成的,对所有程序员均是透明的;而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,对应用程序员是透明的。
    2. 在“主存—辅存”这一层次的不断发展中,逐渐形成了虚拟存储系统,在这个系统中程序员编程的地址范围与虚拟存储器的地址空间相对应。对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远大于主存空间。
    3. 在“Cache—主存”和“主存—辅存”层次中,上一层中的内容都只是下一层中内容的副本,也即Cache(或主存)中的内容只是主存(或辅存)中内容的一部分。

3.半导体随机存储器

主存储器由DRAM实现,靠处理器的那一层(Cache)则由SRAM实现,它们都属于易失性存储器,只要电源被切断,原来保存的信息便会丢失。DRAM的每比特成本低于SRAM,速度也慢于SRAM,价格差异主要是因为制造DRAM需要更多的硅。而ROM属于非易失性存储器。

SRAM和DRAM

  1. SRAM的工作原理
  • 通常把存放一个二进制位的物理器件称为存储元,它是存储器的最基本的构件。地址码相同的多个存储元构成一个存储单元。若干存储单元的集合构成存储体。
  • 静态随机存储器(SRAM)的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,因此即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出)。
  • SRAM的存取速度快,但集成度低,功耗较大,所以一般用来组成高速缓冲存储器。
  1. DRAM的工作原理
  • 与SRAM的存储原理,动态随机存储器(DRAM)是利用存储元电路中栅极电容上的电荷来存储信息的,DRAM的基本存储元通常只使用一个晶体管,所以它比SRAM的密度要高很多。DRAM采用地址复用技术,地址线是原来的1/2,且地址信号分行、列两次传送。
  • 相比于SRAM来说,DRAM具有容易集成、位价低、容量大和功耗低等优点,但DRAM的存取速度比SRAM慢,一般用来组成大容量主存系统。
  • DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失。为此,每隔一段时间必须刷新,通常取2ms,这个时间称为刷新周期。
  1. 比较
SRAMDRAM
存储信息触发器电容
破坏性读出
需要刷新不需要需要
送行列地址同时送分两次送
运行速度
集成度
发热量(功耗)
存储成本
主要用途高速缓存主机内存

ROM

  1. 特点
    ROM和RAM都是支持随机存取的存储器,其中SRAM和DRAM均为易失性半导体存储器。而ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失,它在计算机系统中是只供读出的存储器。ROM器件的特点为:结构简单,所以位密度比可读写存储器的高;具有非易失性,所以可靠性高。
  2. 类型
  • 掩模式只读存储器(MROM):MROM的内容由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入,写入以后任何人都无法改变其内容。优点是可靠性高,集成度高,价格便宜;缺点是灵活性差。
  • 一次可编程只读存储器(PROM):允许用户利用专门的设备(编程器)写入自己的程序,一旦写入,内容就无法改变。
  • 可擦除可编程只读存储器(EPROM):不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次改写。需要修改EPROM的内容时,先将其全部内容擦除,然后编程。EPROM虽然既可读又可写,但它不能取代RAM,因为EPROM的编程次数有限,且写入时间过长。
  • 闪速存储器(Flash Memory):其主要特点是既可在不加电的情况下长期保存信息,又能在线进行快速擦除与重写。
  • 固态硬盘(SSD):基于闪存的固态硬盘是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(FLASH芯片)组成。保留了Flash Memory长期保存信息、快速擦除与重写的特性。对比传统硬盘也具有读写速度快、低功耗的特性,缺点是价格较高。

4.主存与CPU的连接

连接原理

  • 主存储器通过数据总线、地址总线和控制总线与CPU连接。
  • 数据总线的位数与工作频率的乘积正比于数据传输率。
  • 地址总线的位数决定了可寻址的最大内存空间。
  • 控制总线(读写)指出总线周期的类型和本次输入/输出操作完成的时刻。

主存与CPU的连接如下图所示:
在这里插入图片描述

主存容量的扩展

由于单个存储芯片的容量是有限的,它在字数或字长方面与实际存储器的要求都有差距,因此需要在字和位两方面进行扩充才能满足实际存储器的容量要求。通常采用位扩展法、字扩展法和字位同时扩展法来扩展主存容量。

  • 位扩展的连接方式是将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。各芯片连接地址线的方式相同,但连接数据线的方式不同,在某一时刻选中所有的芯片。
  • 字扩展将芯片的地址线、数据线、读写控制端相应并联,而由片选信号来区分各芯片的地址范围。各芯片连接地址线的方式相同,连接数据线的方式也相同,但在某一时刻只选中部分芯片。
  • 采用字位同时扩展时,各芯片连接地址线的方式相同,但连接数据线的方式不同。

存储芯片的地址分配和片选

CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后为选中的芯片依地址码选择相应的存储单元,以进行数据的存取,即进行字选。片内的字选通常是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端。片选信号的产生分为线选法和译码片选法。

存储器与CPU的连接

  1. 合理选择存储芯片:通常选用ROM存放系统程序、标准子程序和各类常数,RAM则是为用户编程而设置的。在考虑芯片数量时,要尽量使连线简单、方便。
  2. 地址线的连接:存储芯片的容量不同,其地址线数也不同。而CPU的地址线数往往比存储芯片的地址线数要多。通常将CPU地址线的低位与存储芯片的地址线相连,以选择芯片中的某一单元(字选),这部分的译码是由芯片的片内逻辑完成的。而CPU地址线的高位则在扩充存储芯片时使用,用来选择存储芯片(片选),这部分译码由外接译码器逻辑完成。
  3. 数据线的连接:CPU的数据线数与存储芯片的数据线数不一定相等,在相等时可直接相连;在不等时必须对存储芯片扩位,使其数据位数与CPU的数据线数相等。
  4. 读写命令线的连接:CPU读写命令线一般可直接与存储芯片的读写控制端相连,通常高电平为读,低电平为写。
  5. 片选线的连接:片选有效信号与CPU的访存控制信号有关,因为只有当CPU要求访存时,才要求选中存储芯片。

5.双端口RAM与多模块存储器

为了提高CPU访问存储器的速度,可以采用双端口存储器、多模块存储器等技术,它们同属并行技术,前者为空间并行,后者为时间并行。

双端口RAM

双端口RAM是指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元。结构如下图所示:
在这里插入图片描述

多模块存储器

为提高访存速度,可以采用多模块存储器,常见的有单体多字存储器和多体低位交叉存储器。

6.高速缓冲存储器

程序访问的局部性原理

程序访问的局部性原理包括时间局部性和空间局部性。

  • 时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。
  • 空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的。

高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而大大提高程序的执行速度。

Cache的基本工作原理

Cache位于存储器层次结构的顶层,通常由SRAM构成。

  • 由于Cache的容量远小于主存的容量,所以Cache中的块数要远少于主存中的块数,它仅保存主存中最活跃的若干块的副本。因此Cache按照某种策略,预测CPU在未来一段时间欲访存的数据,将其装入Cache。
  • 当CPU发出读请求的时候,若访存地址在Cache中命中,就将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关;若Cache没命中,则仍需访问主存,并把此字所在的块一次性地从主存调入Cache。若此时Cache已满,则需根据某种替换算法,用这个块替换Cache中原来的某种信息。此外,CPU与Cache之间的数据交换以字为单位,而Cache与主存之间的数据交换则以Cache块为单位。
  • 当CPU发出写请求的时候,若Cache命中,有可能会遇到Cache与主存中的内容不一致的问题,需要按照一定的写策略处理。

Cache和主存的映射方式

  • Cache行中的信息是主存中某个块的副本,地址映射是指把主存地址空间映射到Cache地址空间,即把存放在主存中的信息按照某种规则装入Cache。
  • 由于Cache行数比主存块数少得多,因此主存中只有一部分块的信息可放在Cache中,因此在Cache中要为每块加一个标记,指明它是主存中哪一块的副本。该标记的内容相当于主存中块的编号。为了说明Cache行中的信息是否有效,每个Cache行需要一个有效位。
  • 地址映射不同于地址变换。地址变换是指CPU在访存时,将主存地址按映射规则换算成Cache地址的过程。地址映射的方法有直接映射、全相联映射和组相联映射。组相联映射即组间采取直接映射,组内采用全相联映射。

Cache中主存块的替换算法

在采用全相联映射或组相联映射方式时,从主存向Cache传送一个新块,当Cache或Cache组中的空间已被占满时,就需要使用替换算法置换Cache行。
而采用直接映射时,一个给定的主存块只能放到唯一的固定Cache行中,所以在对应Cache行中已有一个主存块的情况下,新的主存块毫无选择地把原先已有的那个主存块替换掉,因而无须考虑替换算法。
常用的替换算法有以下几种:

  • 随机(RAND):随机地确定替换的Cache块。它的实现比较简单,但未依据程序访问的局部性原理,因此可能命中率较低。
  • 先进先出(FIFO):选择最早进入的行进行替换。比较容易实现,但也未依据程序访问的局部性原理,因为最早进入的主存块也可能是目前经常要用的。
  • 近期最少使用(LRU):依据程序访问的局部性原理,选择近期内长久未访问过的Cache行作为替换的行,平均命中率要比FIFO高,是堆栈类算法。
  • 最不经常使用(LFU):将一段时间内被访问次数最少的存储行换出。

Cache写策略

因为Cache中的内容是主存块副本,当对Cache中的内容进行更新时,就需要选用写操作策略使得Cache内容和主存内容保持一致。此时有两种情况:

  • 对于Cache写命中,有两种处理方法:
  1. 全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存。当某一块需要替换时,不必把这一块写回主存,用新调入的块直接覆盖即可。这种方法实现简单,能随时保持主存数据的正确性。缺点是增加了访存次数,降低了Cache的效率。
    写缓冲:为了减少全写法直接写入主存的时间损耗,在Cache和主存之间加一个写缓冲(Write Buffer),如下图所示。
    在这里插入图片描述
    CPU同时写数据到Cache和写缓冲中,写缓冲再控制将内容写入主存。写缓冲是一个FIFO队列,可以解决速度不匹配的问题。但若出现频繁写,会使写缓冲饱和溢出。

  2. 写回法:当CPU对Cache写命中的时候,只修改Cache的内容,而不立即写入主存。只有当此块被换出时才写回主存。这种方法减少了访存次数,但存在不一致的隐患。采用这种策略时,每个Cache行必须设置一个标志位,以反映此块是否被CPU修改过。

全写法和写回法都对应于Cache写命中(要被修改的单元在Cache中)时的情况。

  • 对于Cache写不命中,有两种处理方法:
  1. 写分配法:加载主存中的块到Cache中,然后更新这个Cache块。其试图利用程序的空间局部性,缺点是每次不命中都需要从主存中读取一块。
  2. 非写分配法:只写入主存,不进行调块。

非写分配法通常与全写法合用,写分配法通常和写回法合用。

现代计算机的Cache通常设立多级Cache(通常为三级),假定三级Cache,按离CPU的远近可各自命名为L1 Cache、L2 Cache、L3 Cache,离CPU越远,访问速度越慢,容量越大。指令Cache与数据Cache分离一般在L1级,此时通常为写分配法与写回法合用。
下图为一个含有两级Cache的系统,L1 Cache对L2 Cache使用全写法,L2 Cache对主存使用写回法,由于L2 Cache的存在,其访问速度大于主存,因此避免了因频繁写时造成的写缓冲饱和溢出。
在这里插入图片描述

7.虚拟存储器

主存和联机工作的辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作。

概述

  • 虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。
  • 用户编程允许涉及的地址称为虚地址或逻辑地址,虚地址对应的存储空间称为虚拟空间或程序空间。实际的主存单元地址称为实地址或物理地址,实地址对应的是主存地址空间,也称实地址空间。虚地址比实地址要大很多。
  • CPU使用虚地址时,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址对应的存储单元内容是否已装入主存。若已在主存中,则通过地址变换,CPU可直接访问主存指示的实际单元;若不在主存中,则把包含这个字的一页或一段调入主存后再由CPU访问。若主存已满,则采用替换算法置换主存中的一页或一段。
  • 在实际的物理存储层次上,所编程序和数据在操作系统管理下,先送入磁盘,然后操作系统将当前运行所需要的部分调入主存,供CPU使用,其余暂不运行的部分则留在磁盘中。

虚拟存储器与Cache的比较

相同点不同点
最终目标都是为了提高系统性能,两者都有容量、速度价格的梯度。Cache主要解决系统速度,而虚拟存储器却是为了解决主存容量。
都把数据划分为小信息块,并作为基本的传递单位,虚存系统的信息块更大。Cache由全硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,但对应用程序员透明。
都有地址的映射、替换算法、更新策略等问题。对于不命中性能影响,因为CPU的速度约为Cache的10倍,主存的速度为硬盘的100倍以上,因此虚拟存储器系统不命中时对系统性能影响更大。
依据程序的局部性原理应用“”快速缓存的思想“,将活跃的数据放在相对高速的部件中。CPU与Cache和主存都建立了直接访问的通路,而辅存与CPU没有直接通路。也就是说,在Cache不命中时主存能和CPU直接通信,同时将数据调入Cache;而虚拟存储器系统不命中时,只能先由硬盘调入内存,而不能直接和CPU通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值