存储系统
存储器概述
计算机的存储部件,用于存放程序和数据。
计算机发展的重要问题之一,就是如何设计容量大、速度快、价格低的存储器。
分类
-
作用层次
高速缓冲存储器(cache) 可与cpu直接交换数据 使用SRAM
主存储器(主存,内存) 可与cpu直接交换数据 使用DRAM和ROM
辅助存储器(辅存、外存)
-
存储介质(不同特性)
磁表面存储器:磁盘直接存取、磁带 顺序存取 DAM
皆为串行访问的存储器,必须按照物理位置
磁芯存储器
半导体存储器
随机存取 随机存取其 RAM 只读存取器 ROM
光存储器
-
易失性
RAM 易失
-
破坏性读出
DRAM 动态随机存储器 读出后跟再生
性能指标
存储容量:存储字数X字长(1mX8bit)
带宽:带宽是指存储器单位时间内所存取的二进制信息的位数。
带宽也称存储器数据传输率、频宽 Bm
带宽等于存储器总线宽度除以存取周期。
W:存储器总线的宽度,对于单体存储器,W就是数据总线的根数。
带宽的单位:兆字节/秒
单位成本:每位价格 = 总成本/总容量
存储速度:数据传输率 = 数据的宽度/存储周期
存储周期(存取周期) = 存取时间+恢复时间
- 存取时间(Ta):存取时间指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
- 存取周期™:存取周期由称为读写周期或访问周期。是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间的最小时间间隔。两次独立访问操作之间所需要的最小时间间隔
- 主存带宽(Bm):主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量。单位为 字/秒,字节/秒(B/s),位/秒(b/s)。
可靠性
存储器的刷新可能会影响可靠性。
-
存储器可靠性的衡量指标——主存的平均无故障时间MTBF。
MTBF越长,可靠性越高。
提高存储器速度的途径
- 采用高速器件
- 减少存取周期TM,如引入Cache。
- 提高总线宽度 W,如采用多体交叉存储方式。
- 采用双端口存储器。
- 加长存储器字长。
层次结构
CPU和Cache 解决CPU和主存速度不匹配 硬件自动完成
主存和辅存解决成本与容量不匹配的问题 硬件+操作系统共同完成 虚拟存储器
cache 和 主存 可直接交换信息
半导体存储器
存储芯片的基本结构
- 存储矩阵:由大量相同的位存储单元阵列构成
- 译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。
- 读写电路:包括读出放大器和写入电路,用来完成读/写操作。
- 读/写控制线:决定芯片进行读/写操作。
地址线和数据线同时决定芯片容量
地址线:与CPU进行信息交换,单向线路,其位数与芯片容量有关
数据线:用来输入输出数据,双向,其位数与芯片进行输入输出位数有关
有杠表示低电平有效
片选线
读写控制线 一根或两根
CE芯片使能信号,表示哪块芯片有效
CS芯片选择
SRAM、DRAM的工作原理
都以电信号形式存储0/1,断电就丢失信息:易失性存储器
RAM存储器中任何单元的内容均可按其地址随机地读取或写入,且存取时间与单元的物理位置无关。
RAM主要用于组成主存。
DRAM的刷新
刷新周期:
一般为2ms
刷新数目:
以行为单位,每次刷新一行存储单元
使用行列地址的原因:
2n数量级选通线难以忍受,将地址拆分为行列地址(DRAM行,列地址等长),减少了选通线数目,使得制造更加简便。
刷新方法:有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
刷新时刻:
-
分散刷新
每次读写完都刷新一行,存取周期翻倍,降低整机速度
无死时间
-
集中刷新
留出专门部分进行刷新,死时间多
-
异步刷新
少量死时间
刷新放于译码阶段,无需访存时,不产生死时间,不增加存取周期
-
透明式刷新
利用CPU不访存操作时主存的空闲时间进行刷新
透明式刷新方式的优点:完全消除了“死区”。
透明式刷新方式的缺点:较难控制何时能够进行刷新,刷新控制电路极其复杂。
RAM的读写周期
以SRAM为例:
读周期
写周期
ROM的特点和基本类型
非易失性存储器,为了固定保存信息
ROM存储器中任何单元的内容只能随机地读出而不能随便写入和修改。
ROM可以作为主存的一部分,用于存放不变的程序和数据,与RAM分享相同的主存空间。ROM还可以用作其它固定存储器,如存放微程序的控制存储器、存放字符点阵图案的字符发生器等。
分类
只读存储器MROM | 内容由半导体制造厂按用户需求在芯片产生过程中直接写入,无法修改 |
---|---|
一次可编程只读存储器PROM | 存储内容由用户用专门的设备(编程器)一次性写入,之后无法修改 |
可擦除可编程只读存储器EPROM | 紫外线擦除(UVEPROM);电擦除(EEPROM);修改次数有限,写入时间很长 |
闪速存储器Flash Memory | 写入速度快 |
固态硬盘 Solid State Drives | 控制单元+Flash芯片 |
RAM和ROM共同组成主存
主存储器模型与CPU的连接
主存简单模型与CPU联系
主存简单模型
主存与CPU联系
主存与CPU通过数据总线、地址总线和控制总线3个相连
概念们:
-
存储元件(存储元、存储位)
能够存储一位二进制信息的物理器件。如一个双稳态半导体电路、一个CMOS晶体管或一个磁性材料的存储元等。存储元是存储器中最小的存储单位。
作为存储元的条件:
有两个稳定状态。即可以存储“0”、“1” 。
在外界的激励下,能够进入要求的状态。即可以写入“0”、“1”。
能够识别器件当前的状态。即可以读出所存的“0”、“1”。
-
存储单元:由一组存储元件组成,可以同时进行读写。
-
存储体(存储阵列):把大量存储单元电路按一定形式排列起来,即构成存储体。存储体一般都排列成阵列形式,所以又称存储阵列。
存储单元的地址:存储体中每个存储单元被赋予的一个唯一的编号。
存储单元的地址用于区别不同的存储单元。要对某一存储单元进行存取操作,必须首先给出被访问的存储单元的地址。
因为地址是用二进制进行编码的,所以又称为地址码。
存储单元的编址
编址单位:存储器中可寻址的最小单位。
① 按字节编址:相邻的两个单元是两个字节。
② 按字编址:相邻的两个单元是两个字。 -
地址寄存器:用于存放所要访问的存储单元的地址。要对某一单元进行存取操作,首先应通过地址总线将被访问单元地址存放到地址寄存器中。
-
地址译码与驱动电路:用于对地址寄存器中的地址进行译码,通过对应的地址选择线到存储阵列中找到所要访问的存储单元,并提供驱动信号驱动其完成指定的存取操作。
-
读写电路:根据CPU发出的读写控制命令,控制对存储单元的读写。
-
数据寄存器:暂存需要写入或读出的数据。数据寄存器是存储器与计算机其它功能部件联系的桥梁。
-
时序控制电路:用于接收来自CPU的读写控制信号,产生存储器操作所需的各种时序控制信号,控制存储器完成指定的操作。如果存储器采用异步控制方式,当一个存取操作完成后,该控制电路还应给出存储器操作完成(MFC)信号。
主存地址分配
求单元位数 注意按字寻址,还是按字节寻址,查看每个字长是多少位
CPU与主存之间的数据传送控制方式
同步控制方式
数据传送在固定的时间间隔内完成,即在一个存取周期内完成。
异步控制方式
数据传送的时间不固定,存储器在完成读/写操作后,需向CPU回送“存储器功能完成”信号(MFC),表示一次数据传送完成。
目前多数计算机采用同步方式控制CPU与主存之间的数据传送。
由于异步控制方式允许不同速度的设备进行信息交换,所以多用于CPU与外设的数据传送中。
主存容量扩展
位扩展法
扩展数据线
地址线,读写控制线,片选线并联,数据线分别引出。
CS上加杠,是低电平有效
字扩展法
扩展地址线
地址线,读写控制线,数据线并联,片选线对应引出,使用译码器与cpu地址线相连。
线选法
译码片选法
高电平有效
低电平有效
自扩展样例
位扩展案例
例:用16K×8位的存储器芯片构成64K×8位的存储器。
16K×8位的芯片,可以满足64K×8位的存储器数据位的要求,但不满足单元数的要求需要4片16K×8位的芯片采用字扩充方式来构成存储器。
分析:64K×8位的存储器需要16位地址线A15~A0,而16K×8位的芯片的片内地址线为14根,所以用16位地址线中的低14位A13~A0进行片内寻址,高两位地址A15、A14用于选择芯片,即选片寻址。
线选法和译码片选法比较
线选法 | 译码片选法 |
---|---|
n条线->n个片选信号 | n条线->2n个选片信号 |
电路简单 | 电路复杂 |
地址空间不连续 01 或者10 | 地址空间可连续,可以增加逻辑设计 |
字位同时扩展
例题
系统程序区用ROM,用户程序区用RAM
-
确认地址线、数据线、选择存储芯片
数据线:CPU数据线8根->存储器尾数应扩展为8位
地址分配:
ROM
ROM地址线11根
RAM
RAM地址线10根
-
地址线
选取11位的前面的3位进行片选地址线的选择
最前2位进行使能信号控制
双端口RAM和多模块存储器(不重要)
提高存储器工作速度
双端口RAM
对不同时间流入流出的信息进行并行
两个端口对同一主存操作有以下4种情况:
- 两个端口不同时对同一地址单元取出数据 无事
- 两个端口同时对同一地址单元读出数据 无事
- 两个端口同时对同一地址单元写入数据 写入错误
- 两个端口同时对同一地址单元,一个写入数据,一个写出数据 读出错误
多模块存储器
普通存储器
每行为1个存储单元
单体多字存储器
每个存储单元存储m个字
总线宽度为m个字
一次并行读出m个字
指令和数据必须连续存放才能一次读出
多体并行存储器
每个模块都有相同容量和存取速度
高位交叉编址的多体存储器
相当于扩容
连续取n个存储字
耗时nT
低位交叉编址的多体存储器
连续存取n个存储字->耗时T+(n-1)t
每个存储体周期为T
高速缓冲存储器CACHE
提高存储系统工作速度,硬件直接实现对操作系统透明
高速缓冲存储器是位于主存与CPU之间的高速小容量存储器,用来存放程序中当前最活跃的程序和数据。
Cache的存在对程序员是透明的。在处理机每次访问存储器时,系统自动将地址转换成Cache中的地址。
基本概述
目的:避免CPU"空等"现象,提高主存利用率
解决CPU和主存之间的速度匹配问题。提高整个存储系统的平均访问速度,进而提高CPU的效率。
Cache基本结构
-
Cache存储阵列
由高速存储器构成,用于存放主存信息的副本。容量小于主存,但编址方式、物理单元长度均与主存相同。
分为内容Cache和标识Cache
标识(tag)又叫标记。
标识Cache一般由相联存储器组成,用以记录主存内容存入Cache时两者地址的对应关系。每个Cache块(行)有一个标识。
-
地址映像变换机构
用于实现主存地址与Cache地址转换的部件。 -
替换策略实现机构
根据一定的算法,用硬件实现块的替换。
局部性原理
时间局部性:在最近的未来要用到的信息,可能是现在正在使用的信息。
空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是临近的。
如果把这一局部区域的程序和数据从主存复制到Cache中,使CPU能够高速地在Cache中读取指令和数据,就可大大提高CPU的访存速度。
Cache工作原理
Cache将数据和指令分开的原因:减少指令流水线冲突
cache 与主存对应情况
M>>C
主存和缓存按块存储 块的大小相同 B为块长
有些资料中将主存中的数据块称为“块”,而将Cache中数据块称为“行”。
Cache总体结构与工作原理
命中与未命中
缓存共有C块
主存共有M>>C块
命中
主存块调入缓存
主存块与缓存块建立对应关系
用标记记录与缓存块建立了对应关系的主存块号
未命中
主存块未调入缓存
主存块与缓存块未建立对应关系
命中率
CPU欲访问的信息在Cache中的比率
命中率影响因素
容量与块长
块长过小,未能充分利用局部性原理
块长过大,容量有限,块数小,信息有用部分少
容量足够大,命中率高
一般每块 4-8个字
块长取一个存取周期内从主存调出的信息长
性能分析
Cache 效率 e
最小值 H为0
最大值 H为1
例题
同时访问
先访问cache,再访问主存
工作原理
通常使用静态RAM构成
工作原理总结
提高Cache访问速度方法
- Cache的地址变换和数据块的替换算法均用硬件实现。
- 在物理位置上让Cache尽量靠近CPU,以减少CPU与Cache之间的传输延迟。如将Cache集成在CPU芯片内。
- 为了加速调块,一般将每个数据块的容量规定为并行主存系统一个存储周期所能访问到的字数。
地址映射方式
直接映射
对号入座,主存中数据块只有在cache中仅有唯一位置可存放
速度快
将主存储体划分为若干个区,每个区域Cache大小与Cache大小一致。每个区大小为2c-1
每个缓存块i可以和若干个主存块对应
每个主存块j只能和一个缓存块对应
直接映射地址划分
直接映像的快表(标识Cache)
特点
- 硬件线路简单;
- 地址变换速度快;
- 因为主存块在Cache中的位置固定,一个主存块只能对应一个Cache块,所以没有替换策略问题;
- 块的冲突率高,若程序往返访问两个相互冲突的块,将会使命中率急剧下降。
- Cache利用率低。
全相连映射
空位随意放
利用率高,速度慢,电路复杂
主存中的任一块可以映射到缓存中的任一块
地址变换方式
- 全相联映像的块表共有2m个单元,每个单元共有主存块号和Cache块号两项,每个单元长n+m位。
- 块表中的主存块号用于记录当前存放在Cache中的主存块的块号,占n位;Cache块号用于记录相应的主存块存放在Cache中的Cache块号,占m位。
- 在全相联映像中,主存块号称为标识,块内偏移量称为索引。
全相联映像的标识Cache
特点
- 块冲突概率小,Cache命中率高
全相联方法只有在Cache中的块全部装满后才会出现块冲突,所以块冲突概率小。 - Cache利用率高。
- 由于需要相联存储器实现相联访问和实现替换策略的硬件,故硬件复杂,成本高。
- 相联访问影响访问速度。
组相连映射
组内随意放,组相连映射
一个主存块可以放到唯一一个cache组中,可以放于组内任意一个位置
主存某个块映像到Cache对应组的公式:Cache组号=主存块号 MOD Cache组数
如果一个组里有k块,则这种组相联映像方式称为k路组相联。
组间采用直接映射,组内采用全相连映射
现先Cache分组,使得主存块在cache组直接映射
组相连映射地址存放
多级cache,最高级为直接映射,次级为组相连,最后级为全相连映射。
组相联映像的标识Cache
组相联映像的标识Cache
例题
一个Cache行就是一个Cache块。
全相连前22位作为标记,最后6位为字块内地址
直接映射前19位作为标记,后3位与Cache一一对应,最后6位为块内地址
组相连前19位作为主存标记,3位作为Cache地址,最后6位为块内地址
替换算法
在Cache满后,对应位置被占用的处理方法
RAND 随机算法
随机地确定替换的Cache块。实现简单,没有依据程序访问的局部性原理,故可能命中率低。
FIFO 先进先出算法
选择最早调入的行进行替换。容易实现,但也没有一句程序访问的局部性原理,可能呢个会把一些需要经常使用的程序块(循环程序)也作为最早进入Cache的块替换掉。
LRU 最近最少使用
依据程序访问的局部性原理选择近期内长久未访问的存储行作为替换的行,平均命中率比FIFO要高,是堆栈类算法。
LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值的最大行换出。
LFU 最不常使用
将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
例题
相联存储器:并行比较标记,若有标记与将要访问的地址的标记相同,且有效位为1,则命中
既可以按照地址寻址也可以按照内容寻址(通常是某些字段),为了与传统寄存器作区别,称为按内容寻址的存储器。
全相连映射
直接映射
二路组相连
考试方法
命中次数和替换算法和映射方式有关
写策略
保存主存与Cache中的内容一致性
命中时
全写法(write-through)
对Cache进行修改的话,主存同时进行修改。
CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲
*优点:*保持了主存的一致性,正确性。
*缺点:*增加了访存的次数
频繁写的时候·,出现溢出
写回法(write-back)
CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。
未命中:
写分配法(wirte-allocate)
先加载主存中,再更新Cache块。
把主存中的块调入Cache,在Cache中修改。搭配写回法。
*优点:*有了就直接用。
*缺点:*每次不命中都要从主存中读块
非写分配法(not-write-allocate)
只写入主存,不调用cache
小结
多级Cache
通常为3级别
离CPU越远则,容量越大,速度越慢
虚拟存储器
用于提高系统存储容量的逻辑模型
*逻辑模型:*只关注其功能,不关注其如何实现
对于系统程序员不透明。
功能:用户给出一个地址,叫做虚地址或逻辑地址,虚拟存储器要给出该地址对应的数据
实现:由辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址或物理地址
*实地址:*主存地址空间或实地址空间
相连存储器
相联存储器(Associative Memory)
又称为联想存储器。相联存储器是根据所存信息的全部特征或部分特征进行存取的,是一种按内容寻址的存储器。
相连存储器结构
页式虚拟存储器
虚拟空间与主存空间被划分为同样大小的页,主存的页称为实页,虚存的页称为虚页
内碎片
页表:存放于主存当中,将虚页号与实页号对应的对照表
页表基址寄存器:存放页表起始位置。
装入位:为1,则页面已经在内存中
CPU访问时,先访问一次页表 则访问一次主存
未命中,则进行页面替换和页表修改
优点
- 页表简单,调入方便
- 长度固定
缺点
- 最后一页零头会浪费
- 页不是逻辑上独立的实体,处理保护和共享都不甚方便。
段式存储器
段式存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。
虚拟地址分为两部分:段号和段内地址
外碎片
*段表:*每一行记录了与某个段相对应的段号、装入位、段起点和段长等信息。
由于段的长度可变,所以段表中要给出各段的其实地址与段的长度。
优点:
- 划分以程序逻辑对应,易于管理,修改,保护和共享
缺点
- 分配不连续可能产生碎片
段页式虚拟存储器
将程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分大小相等的页,程序对主存的调入,调出仍以页为基本传送单位。
每个程序对应一个段表,每段对应一个页表。段长为页长的整数倍
内碎片
虚拟地址:段号+段内页号+页内地址
快表TLB
页表、段表都存放在主存中,收到虚拟地址后要先访问主存,查询页表、段表,进行虚实地址转换。放在主存中的页称为慢表(Page)
提高变换速度=》用高速缓冲存储器存放常用的页表项=》快表(TLB)
快表是慢表的副本,只保存慢表中很少的一部分。
访问过程:
慢表中无的快表中也无
例题
*标记:*虚页号
*页框号:*实页号