存储器的基本概念
存储器的分类
按存储介质分类
半导体存储器
- 随机存储器
- 只读存储器
磁盘表面存储器 - 磁盘
- 磁带
磁芯存储器:磁芯存储器由各种磁芯制成,目前已被半导体存储器多取代,其实质是用导线外套磁环组成,控制电流的两种流向,形成两种磁场以便记录信息
光盘存储器:也叫光存储器,一般指光盘
按存取方式分类
随机存取存储器:随机存储器(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。
- 只写一次光盘:只写一次型光盘允许用户写入信息,写入后可多次读出,但不能再修改,故称其为“写一次型”。
- 可擦写型光盘:可擦写型光盘由于是激光照射在磁性介质上进行读/写,因为这种光盘类似于磁盘,可以重复读写。