第三章 存储器层次结构

存储器的基本概念

存储器的分类

按存储介质分类

半导体存储器

  • 随机存储器
  • 只读存储器
    磁盘表面存储器
  • 磁盘
  • 磁带

磁芯存储器:磁芯存储器由各种磁芯制成,目前已被半导体存储器多取代,其实质是用导线外套磁环组成,控制电流的两种流向,形成两种磁场以便记录信息

光盘存储器:也叫光存储器,一般指光盘

按存取方式分类

随机存取存储器:随机存储器(Random Acess Memory,RAM),在随机存取存储器中存取信息,存取时间和存储位置没有关系,其优点是读写方便,使用灵活;缺点是断点信息丢失

只读存储器:只读存储器额内容只能随机读出而不能写入,并且其内容断电之后仍可保留,所以一般把固定的、不变的的程序存放在这里。只读存储器ROM与随机存取存储器RAM一起构成了主存

  • 掩模型只读存储器MROM
  • 可编程只读存储器PROM
  • 可擦出可编程只读存储器EPROM
  • 电可擦除可编程只读存储器EEPROM
  • 快擦除读写存储器(Flash Memory)

串行访问存储器:串行访问存储器对存储单元进行读/写操作时,需要按照物理位置的先后顺序依次访问

  • 顺序存取存储器(磁带)
  • 直接存取存储器(磁盘):磁盘是属于半串行的,因为在磁盘寻找数据时,先要寻道,这个寻道是直接找磁道,不需要顺序寻找,所以寻道属于随机访问,寻道之后需要在磁道旋转,顺序寻找需要的信息,因此又是串行访问
按在计算机中的作用分类
  • 主存储器(主存)
  • 辅助存储器(辅存)
  • 缓冲存储器
    在这里插入图片描述

存储器的性能指标

存储器主要有三个性能指标: 存储容量、单位成本和存储速度。 一般来说,速度越高,价格就越高;容量越大,价格就越低,且容量越大,速度必定越低。理想存储器:大容量、高速度、低价格

存储容量=存储字数*字长。存储字数表示存储器的地址空间大小,即存储器的存储单位数目,字长即存储成本,表示依次存取操作的数据量

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

存储速度: 数据传输率=数据的宽度/存储周期。存储周期又称为读写周期或访问周期,指连续两次独立地访问存储器操作之间所需的最小时间间隔

存储器的层次结构

在这里插入图片描述

寄存器是有限存储容量的高速存储部件,可用来暂存指令、数据等,通常都是制作在CPU芯片内,寄存器中的数直接在CPU内部参与运算,CPU内可以有十几或几十个寄存器,它们速度最快、价格最贵、容量最小

在这里插入图片描述

存储系统的层次结构主要体现在缓存-主存和主存-辅存这两个存储层次上

  • 缓存-主存层次主要解决CPU和主存速度不匹配的问题。主存和缓存之间的数据是由硬件自动完成的,对程序员是透明的
  • 主存-辅存层次主要解决存储系统的容量问题。主存和辅存之间的数据交换是由硬件和操作系统共同完成的

在这里插入图片描述

半导体随机存储器

半导体随机存储器的基本概念

半导体存储芯片的基本结构

在这里插入图片描述

半导体存储芯片主要由存储矩阵、译码驱动电路和读/写电路组成。地址线是单向的,数据线是双向的,剩下的属于控制线,控制线有读/写控制线和片选线两种。读/写控制线用来进行读/写操作,片选线用来选择存储芯片,由于一般半导体都是由很多的芯片组成的,因此需要片选信号来选择要读或写哪一个芯片

半导体存储芯片的译码驱动方式

线选法
在这里插入图片描述

重合法
在这里插入图片描述

SRAM存储器

保持存储信息

SRAM主要使用六管静态MOS存储单元电路,利用触发器(即能够存储一位信号的基本单元电路)来保存信息。规定:T1通,T2止,存“0”;T1止,T2通,存“1”

读数据

在这里插入图片描述

写数据

写数据肯定要分为两部分:一部分是写在哪里;另一部分是写什么。此时,不但需要传输地址信号,还需要传输数据信号。以写“1”信号为例,首先传送地址,Z线变成高电平,此时,T5和T6,就导通了,W是读“1”写“1”线,应该将待写数据“1”送到W线,W线就变成低电平。由于T6是导通的,因此B点就为低电平,B点低电平使得Tr低电平,使T截止;由于w没有数据送入,因此一直是高电平。w是高电平,且T5导通,就使得A点是高电平,A点高电平就使得T2高电平,使T2导通。T1止、T2通,就将“1”存进去了。

DRAM存储器

保持存储信息

常见的DRAM的基本存储电路分为多管型和单管型,它们共同特点是遵循电容存储电荷的原理

存储电荷的原理。电容上有电荷表示存“1”;电容上无电荷表示存“0”。由于电容上的电荷基本只能维持1~2ms,因此即使电源不掉电,信息也会自动消失。因此,在电荷消失之前必须对其恢复,该过程被称为刷新或再生。由于z线初始状态为低电平,因此T为低电平,即T截止。存储信息和读/写线路隔离了,即信息保持了。

读数据

仍然先送地址,此时Z线为高电平,T导通。怎么判断读出的是“O”还是“1”﹖如果存储的是“1”信号,则表示电容有电荷,有电荷应该会产生电流。因此,如果W线有电流读出,则说明读出的是“1”信号;如果没有电流,则说明读出的是“0”信号。

写数据

假设此时存储信号“0”,需要写入“1”。首先送地址,Z线为高电平,T导通,然后送数据。那么,W应该是高电平写“1”,还是低电平写“1”?那就只能用代入法试试了。假设传送数据给W之后,W为高电平,说明A点就是高电平,而此时C存储信号“0”,也就是没有电荷,A点和C形成电势差,即可以给C充电,有电C就存储了“1”。因此,当存储信号“0”时,W为高电平写“1”,W为低电平写“0”。

读周期是指对芯片两次连续读操作的最小时间间隔,读时间表示进行一次存储器读操作的时间,显然读时间小于读周期。
写周期是指对芯片两次连续写操作的最小时间间隔 ; 写时间表示进行一次存储器写操作的时间,显然写时间小于写周期。

DRAM存储器的刷新

电容中存储的电荷不能永久保留,随时间的消逝会消失,默认每个基本存储单元在每2ms内不需要刷新一次,否则电荷流式,进而导致存储信息出错,通常有3种刷新方式:集中剧新、分散剧新和异步刷新。

  • 集中刷新:把刷新操作集中到一段时间内集中进行
  • 分散刷新:把刷新操作分散进行,周期性地进行
  • 异步刷新:有计划地刷新,时间分配十分合理

只读存储器ROM:通过对地址进行译码,选择某个单元进行读写

  • 掩模型只读存储器MROM: MROM由芯片制造时写入内容,以后只能读而不能写入,其基本存储原理是以元件的“有/无”来表示该存储单元的信息("1"或“0”)
  • 可编程只读存储器PROM: 用户可根据自己的需要来对其填入内容,属于一次性写入的存储器。部分的PROM在出厂时数据全为0,用户可以将其中的部分单元写入1,以实现对其“编程”的目的
  • 可擦除可编程只读存储器EPROM: EPROM使用高压写入数据,当需要修改时,可使用紫外线将其内容擦除。
  • 电可擦除可编程只读存储器EEPROM: 原理与EPROM一样,不但写入数据也是使用高压,而且擦除数据页使用了高压,既可以局部擦除,又可以全部擦除
  • 快擦除读写存储器(Flash Memory): 详见Flash存储器

Flash存储器

在这里插入图片描述

主存储器与CPU的连接

存储器容量扩充的概念

将若干个循序芯片连接在一起才能组成足够容量的存储器
位扩充:增加存储器存储的字数,可更好利用CPU寻址能力;增加存储字长

在这里插入图片描述
在这里插入图片描述

字扩充:使存储器字长变得更长,数据总线的传输能力;增加存储单元的个数

线选法(了解)
在这里插入图片描述
译码片选法(熟悉)
译码器的使用在这里插入图片描述

前面3根线有8种不同情况,010表示第二根(从上到下)输出线

在这里插入图片描述
在这里插入图片描述
分析地址空间
在这里插入图片描述
地址输入线A13和A15控制着输出线,不需要管A14如何变化
在这里插入图片描述

字位扩充:既增加了存储单元的个数,又增加了存储字长

现在的计算机的一般结构

在这里插入图片描述

存储芯片的输入输出信号

在这里插入图片描述

双口RAM和多模块存储器

双口RAM

具有两组相互独立的地址线、数据线和读/写控制线,可以进行并行操作,是一种告诉工作的存储器

双端口存储器可以同时对同一区间、同一单元进行操作。另外,以防读一方写页不能同一区间、同一单元进行操作,否则将发生冲突
在这里插入图片描述

多模块存储器

要使单体多字系统能很好地发挥其与其的作用,前提是指令和数据在主存内必须连续存放。单体多字存储器把存储器的存储字字长增加n倍,以存放n个指令字或数据字,于是单体多字存储器的最大带宽比单体单字存储器的最大带宽提高n倍。因为程序使用指令字和数据字也存在一定的随机性,所以一次读取的n个字很有可能是最近不需要的,正常情况下不可能达到最大带宽。

单体多字存储器的缺点由于单体多字存储器必须是凑齐了n个数据字之后才能作为一个存储字一次写入存储器,因此需要先把属于一个存储字的n个数据字读到数据寄存器中等数据寄存器达到了一个存储字的长度,再将其写入存储器。

多体并行存储器

多体并行存储器就是采用多个模块组成的存储器,每个模块有着相同的容量和存取速度,各模块都有独立的地址寄存器、数据寄存器、地址译码器和读/写电路。每个模块都可以看作一个独立的存储器。

  • 高位交叉编址的多体存储器: 每个模块内的体内地址顺序是连续的,又称为顺序存储,这种安排存储单元的顺序和进位很像。高位地址代表体号,低位地址来定位体内地址,可以在同一时间使得不同的请求源同时访问不同的体,进而实现个体 并行工作

  • 高位交叉编址的优点: 非常有利于存储器的扩充,只需将存储单元的编号往后加即可。

  • 高位交叉编址的缺点: 由于各个模块一个接一个地串行工作,因此存储器的带宽受到了限制

  • 低位交叉编址的多体存储器: 由于程序存放在相邻的体中,因此又称为交叉存储。低位地址可用来表示体号,高位地址可用来定位体内地址。连续地址分布在相邻的不同模块内,而同一个模块的地址都是不连续的

总结:要特别注意高位交叉编址和低位交叉编址中并行的概念。高位交叉编址中的并行体现在不同的请求源并行地访问不同的体;低位交叉编址中的并行体现在同一请求源并行地访问不同的体。

高速缓冲存储器(Cache)

Cache的基本工作原理

Cache的背景

场景:与家人微信视频聊天,CPU首先从辅存中找到微信并启动它,将微信相关的内容放在内存中,调取视频聊天的代码,这个过程很漫长

局部性原理

在这里插入图片描述

主存和Cache的编址

前提:若主存和Cache的映射,那么至少要保证主存中每块的大小应与Cache中每块的大小相同

主存:主存由一个个的字块组成,当然每个字块包含N个字。主存地址应该分为两部分:一部分用来寻找某个字块;另一部分用来寻找该字块中的字或字节
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Cache的性能分析

  • 命中率的概念:CPU要访问的信息在Cache中的比例
  • Cache-主存系统效率的概念:命中时访问Cache的时间/Cache-主存系统的平均访问时间
Cache的基本结构

在这里插入图片描述

Cache和主存之间的映射方式:针对如何区分Cache与主存的数据块对应关系

直接映射

优点:实现简单。只需要利用主存地址的某些位直接判断,即可确定所需字块是否在Cache中

缺点:
(1)不够灵活。因为每个主存块只能固定地对应某个Cache块,即使Cache内还空着许多位置也不能占用,所以导致Cache的存储空间得不到充分利用。
(2)冲突概率高(抖动)。抖动就是某个块频繁地进行交换,例如,生活场景助解提到的3号位置,13、23、33、43等都要坐在3号位置,如果某个时刻都是个位数为3的同学上来,则需要不断地换人。

应用场合:适合大容量Cache
在这里插入图片描述
在这里插入图片描述

全联映射

优点
(1)由于全相联映射匀速主存的每一字块映射到Cache中任何一个字块,因此Cache的命中率可以提高全相联映射就是有位置就可以坐,减小了块的冲突率,进而提高了Cache的利用率
(2)全相联映射就是有位置就可以坐,减小了块的冲突率,进而提高了Cache的利用率

缺点:tag的位数增加了,访问Cache时主存字块标记需要和Cache的全部“标记”进行比较,才能判断所访问主存地址的内容是否已在Cache内。这种比较通常采用“按内容寻址”的相联存储器来完成

应用场合:使用于小容量的Cache
在这里插入图片描述
组相联映射
主存块可以放到特定分组中的任意位置,所属组号=主存块号%总组数

主存地址结构:标记(主存块号前几位)+组号(主存块号末几位)块内地址

优点:另外两种方式的这种,综合效果较好
术语:n路组相联映射——每n个Cache行为一组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Cache中主存块的替换算法:针对Cache很小,主存很大。如果Cache满了怎么办的情况

替换算法解决的问题

在这里插入图片描述

随机算法(RAND)

随便选一个主存块替换,过于Freestyle,效果很差
在这里插入图片描述

先进先出算法(FIFO)

优先替换最先被调入Cache的主存块,不遵循局部性原理,效果差
在这里插入图片描述

近期最少使用(LRU)

将最久没有被访问过的主存块替换。每个Cache行设置一个“计数器”,用于记录多久没被访问,Cache块的总数=2的n次方,则计数器只需n位

基于“局部性原理”,近期被访问过的主存块,在不就的将来也有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高
在这里插入图片描述
在这里插入图片描述

最不经常使用(LFU)

将被访问次数最少的主存块替换。每个Cache行设置一个“计数器”,用于记录被访问过多少次

曾经被经常访问的主存块在未来不一定用到,LFU实际运行效果不好
在这里插入图片描述
在这里插入图片描述

Cache写操作策略:针对CPU修改了Cache中的数据副本,如何确保主存中数据母本的一致性

写命中

全写法(写直通法,write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)

写回法(write-allocate):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写不命中

写分配法(write-allocate):当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用

非写分配法(not-write-allocate):当CPU对Cache写不命中时只写入主存,不调入Cache。通常搭配全写法使用
在这里插入图片描述

在这里插入图片描述

多级Cache

现代计算机通常采用多级Cache结构,各级Cache间常采用“全写法+非分配法”,Cache和主存间采用“写回法+写分配法”
在这里插入图片描述

虚拟存储器

虚拟存储器的基本概念

能看起来比实际内存大很多的容量效果,是因为它借用外存的存储空间,把当前不需要访问的数据存放在外存,用内外存数据倒换的时间消耗换区更大的逻辑存储空间

虚拟存储器的相关概念
  • 虚拟存储器是一个逻辑模型,并不是一个实际的物理存储器
  • 虚拟存储器必须建立子啊主存-辅存结构基础上,但两者是有差别的:虚拟存储器允许使用比主存容量大得多的地址空间,并不是虚拟存储器最多值允许使用主存空间;虚拟存储器每次访问时,必须进行虚实地址交换,而非虚拟存储器不必
  • 虚拟存储器的作用是分隔地址空间,解决主存的容量问题和实现程序的重定向
  • 虚拟存储器和Cache都是基于程序局部性原理
  • 两者相同点: 把程序中最近常用的部分主流咋告诉的存储器中,一旦这部分程序不再常用,把它们送回低俗存储器中;
    这种换入、换出操作室友硬件或操作系统完成的,对用户透明;力图使存储系统的性能接近高速存储器,而价格却接近低速存储器
  • 两者不同点: Cache用硬件实现,对操作系统透明,而虚拟存储器用操作系统与硬件相结合的方式实现;
    Cache是一个物理存储器,而虚拟存储器仅是一个逻辑存储器,其物理结构建立在主存-辅存结构基础上

页式虚拟存储器

概念: 页式虚拟存储器就是将其基本单位划分为页,且将主存的物理空间划分为与虚拟存储器等长的页。划分的页称为页面,主存的页称为实页,虚拟存储器的页称为虚页。
系统基本信息的传送单位是定长的页,需要通过地址变换机构实现访存过程,当访问页面不在主存时,通过页面置换算法将需要的页面调入主存。
优点: 由于页面的起点、终点地址是固定的,因此页表简单,调入方便,主存空间浪费小。
缺点: 由于页面不是逻辑上的独立实体,因此处理、保护和共享都不如段式虚拟存储器方便。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于页面不是逻辑上的独立实体,因此处理、保护和共享都不如段式虚拟存储器方便。

段氏虚拟存储器

概念: 段式虚拟存储器是一种将主存按段分配的存储管理方式,各段的长度因程序而异。段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立部分。系统的基本信息传送单位为段,并通过地址变换机构实现访存过程。

优点: 段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享;某些类型的段(堆栈、队列)具有动态可变长度,允许自由调度以便有效利用主存空间。
缺点: 段的长度各不相同,段的起点和终点不定,给主存空间的分配带来麻烦,而且容易在段间留下许多空余的不易利用的零碎存储空间,造成浪费。
在这里插入图片描述

页式虚拟存储器与段氏虚拟存储器的对比

在这里插入图片描述

段页式虚拟存储器

概念: 段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。在这种方式中,把程序按逻辑单位分段以后,再把每个段分成固定大小的页。程序对主存的调入/调出是按页面进行的,但它又可以按段实现共享和保护。
优点: 兼备页式虚拟存储器和段式虚拟存储器的优点。
缺点: 在地址映射过程中需要多次查表。

在这里插入图片描述

TLB(tanslation look-aside buffer)快表

是一种专用的高速缓冲器(通常用相联存储器实现),用于存放近期经常使用的页表项,快表中的内容是页表部分内容的副本,快表和页表同时查,快表中有,就能很块地找到对应的物理页号送入主存实地址寄存器,从而做到虽然采用虚存,但访问主存的速度几乎没有下降

页表

在这里插入图片描述

地址交换过程

在这里插入图片描述
在这里插入图片描述

虚地址vs实地址

在这里插入图片描述

知识回顾

在这里插入图片描述

外存储器

硬盘存储器(重点)

硬盘存储器记录数据的三种方式(掌握),有6种

在这里插入图片描述

  • 归零制(RZ):记录“1”时,通正向脉冲电流,记录“0”时,通反向脉冲电流。“0”和“1”信息之间驱动电流归零
  • 不归零制(NRZ):记录“1”时,通正向脉冲电流,记录“0”时,通反向脉冲电流。只有当相邻信息代码不同时,电流才改变方向
  • “见1就翻”的不归零制(NRZ1):只有记录“1”时,电流才改变方向
硬盘存储器的技术指标

记录密度

  • 道密度:指单位长度内有多少个同心圆。相邻磁道之间的距离称为道距
  • 位密度/线密度:指单位长度磁道能记录二进制信息的位数

注意:磁盘的所有磁道信息量一定是相等的,并不是圆越大,记录的信息越多(圆越大,代表位密度越小)

存储容量:指外存所能存储的二进制信息总数量,以位或字节为单位

平均寻址时间:寻址需要分两不分,即先找到所在的磁道(寻道时间),然后在此磁道上寻找需要的数据(等待时间)
平均寻址时间=(最大寻道时间+最小寻道时间)/2+(最大等待时间+最小等待时间)/2

数据传输速率:指单位时间内磁表面存储器向主机传输数据的位数或字节数,它与记录密度和磁盘转动的速度有关

误码率:如果从磁盘读出N位数据,有M位出错,那么误码率为M/N。为了减少误码率,硬盘存储器通常采用循环冗余码来校验数据。

概念:硬盘存储器是指记录介质为硬质圆形盘片的磁表面存储设备

组成:硬盘存储器主要由磁记录介质、磁盘控制器和磁盘驱动器三大部分组成
-磁盘控制器包括控制逻辑与时序、数据并-串变换电路和数据串-并变换电路

  • 磁盘驱动器包括写入电路与读出电路、读/写转换开关、读/写磁头与磁头定位伺服系统等

分类
按其是否具有可换性分类:可换盘磁盘存储器、固定磁头磁盘存储器
按磁头的工作方式:固定磁头磁盘存储器、移动磁头磁盘存储器

硬盘存储器的磁道记录格式:定长记录格式、不定长记录格式

磁盘阵列

廉价冗余磁盘阵列 RAID

指多个小容量磁盘代替一个大容量的磁盘
一般来说,RAID分为7级,即RAID 0RAID6。06并不代表技术的差异,仅仅表示RAID的架构方式与提供的功能不一样。RAID 0~RAID6的架构和功能不需要全部都记住,只需要记住RAID0和RAD 1即可。

RAID 0

最简单的磁盘阵列架构。写入时将资料分成数个小块,再同时送到不同的磁盘内存储,读取资料时也需要从不同的磁盘内读取,然后重新组合。正是由于RAID将资料分块存储,使得存储速度大大加快。它的缺点也显而易见,如果某一个磁盘的数据损坏,将会因资料不完整而无法读取,造成系统停止,甚至毁掉所有硬盘资料。

在这里插入图片描述

RAID 1

又称为镜像备份,意思就是可以将资料如镜子里的成像一样,在两个硬盘上各保持一份完全相同的备份,使得资料完全一样。写入时,相同的资料会同时写到磁盘阵列中的每一个磁盘﹔读取时仅从其中一个读取即可。由于每个硬盘都有一个镜像的硬盘,因此当某个硬盘出现损坏,并不会影响整个系统的运行。可以说RAID 1的容错性是相当好的。
在这里插入图片描述

光盘存储器

概念:应用激光在某种介质上写入信息,然后利用激光读出信息,这种技术称为光存储技术。而光盘就是利用这种存储技术进行读/写信息的圆盘。
分类:
分类1:激光照射在非磁性介质上进行读/写信息称为第一代光存储技术,此技术不能把内容抹掉重新写内容;激光照射在磁性介质上进行读/写信息称为第二代光存储技术,此技术的主要特点是可擦除重写。
分类2:根据光存储性能和用途的不同,光盘存储器可分为3类,即只读型光盘、只写一次型光盘和可擦写型光盘。

  • 只读型光盘:只读型光盘内的数据和程序由厂家事先写入,用户只能读出,不能修改或写入新的内容。非常类似于ROM的特性。故又将其称为CD-ROM。
  • 只写一次光盘:只写一次型光盘允许用户写入信息,写入后可多次读出,但不能再修改,故称其为“写一次型”。
  • 可擦写型光盘:可擦写型光盘由于是激光照射在磁性介质上进行读/写,因为这种光盘类似于磁盘,可以重复读写。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值