局部性
理论
程序执行,会不均匀访问主存,有些被频繁访问,有些很少被访问
时间局部性
被用到指令,不久可能又被用到
产生原因是大量循环操作
空间局部性
某个数据和指令被使用,附近数据也可能使用
主要原因是顺序存放,数据一般以数组,向量,表形式存储
存储分类
作用分类
主存
辅存
高速缓冲存储器(Cache),位于主存和CPU之间,现代计算机常将其放于CPU
存取方式分类
随机存储器(RAM)
存储单元可以随机存取,存取时间与存储单元物理位置无关,主要用于主存或高速缓冲器
只读存储器(ROM)
只能读不能写,断电内容不丢,存放固定不变程序,与RAM共同作为主存
广义上只读可以通过电擦除写入,写入速度比读取慢的多
ROM和RAM都是随机存取
串行访问存储器:按其物理位置先后顺序寻址,包括顺序存取存储器(磁带)和直接存取存储器(磁带,光盘)
顺序存储器只能按循序访问,存取时间长短与物理位置有关,存取速度慢
直接存取存储器是介于顺序访问和随机访问之间,先进行大区域查找,后再小区域顺序访问
按信息可保存分类
易失性存储器:RAM,断电后消失
非易失性存储器:ROM
破坏性读出:存储信息读出后,原存储信息破坏
非破坏读出
破坏性读出存储器,必须紧接一个再生操作,以便恢复破坏信息
性能指标
存储容量=存储字数*字长(如1M*8位)
存储字数表示存储器的地址空间,字长是一次存取操作数据量
单位成本:每位价格=总成本/总容量
存储速度:数据传输率=数据宽度/存取周期(存储周期)
存取时间=启动一次存储器操作到完成该操作经历时间,分为读出时间和写入时间
存取周期=读写周期或访问周期,完整读写一次的事件,即连续两次访问操作之间最小时间间隔
主存带宽:数据传输率,表示每秒从主存进出信息最大数量
多级层次存储系统
虚拟存储系统使编程可用地址远大于主存空间
主存
主存有DRAM实现,Cache由SRAM实现
DRAM价格低于SRAM,速度慢于SRAM,都是易失性
SRAM(静态随机存储器)
DRAM(动态随机存储器)
栅极电容的电荷存储
其电荷只能维持1-2ms,电源不断电,信息会自动消失,每隔一段时间需要刷新,通常取2ms,称为刷新周期
重合法地址译码
重合法将M位地址分成接近两段
一段用于水平作X地址线
一段用于垂直作y地址线
刷新一般按行刷新,为减少刷新开销,行数要少一些
三种刷新方法
1.集中刷新:利用固定时间,一次对存储器所有行逐一再生
存在“死时间”
2.分散刷新:把每行是刷新散到各个工作周期。
一个周期分为两个,前半用于读写,后半用于刷新
加长了存取时间
3.异步刷新:前两种方法结合
刷新周期除以行数,得到两次刷新时间间隔
缩短了死时间,充分利用间隔2ms
注意问题
1.刷新对CPU透明的,刷新不依赖与外部访问
2.动态RAM刷新单位为行,由芯片内部自行生成行地址
3.刷新不需要选片,整个存储器所有芯片同时刷新
DRAM读写周期
SRAM和DRAM比较
SRAM | DRAM | |
存储 | 双稳态触发器 | 栅极电容 |
破坏性读出 | 非 | 是 |
需要刷新 | 不用 | 用 |
送行列地址 | 同时送 | 两次送(地址复用技术) |
运行速度 | 块 | 慢 |
集成度 | 低 | 高 |
存储成本 | 高 | 低 |
用途 | Cache | 内存 |
存储器芯片的内部结构
由存储体,IO读写电路,地址移码和控制电路等组成
存储体(存储矩阵):是存储单元集合,有行选择线(X)和列选择线(Y)来选择访问单元,存储器同一行和同一列上的位同时读出
地址译码器:将地址转换成输出线的高电平
IO控制电路:控制被选中的单位的读出和写入,有放大信息作用
片选控制信号:访问某个字,必须选中该存储字所在芯片,而其他芯片不被选中
读写控制信号:根据CPU读写命令进行读写
ROM(只读存储器)
非易失
随机访问
类型
掩模式只读存储器(MROM)
厂家直接写入,无法改变
一次可编程只读存储器(PROM)
用户写入,写入后无法改变
可擦除可编程只读存储器(EPROM)
可改且可写,不能作为RAM
Flash存储器(闪存)
由MOS管组成,是半导体,非易失存储器,随机访问,可代替外存
可在不加电保存信息
可读且可写,读速度快于写
固态硬盘(SSD)
控制单元和存储单元组成
长期保存信息,可改和可写
主存组成
存储单元(存储0或1记忆单元)构成的存储矩阵(存储体)是存储器的核心部分
记忆单元是具有两种稳态的表示0或1的物理器件
为了获取存储器信息,需要对存储单元编号
指令执行过程
1.访问主存时,CPU把访问单元的地址送到MAR
2.通过地址线将主存地址送到地址寄存器,以便地址译码器进行译码选中单元
3.同时CPU将读写信号通过控制线送到主存的读写控制电路
如果是写操作,CPU将写的信息送到MDR,在读写控制电路控制下,经数据线将信号写入选定单元
如果是读操作,主存读出选中单元数据送到MDR
地址线与MAR宽度相同,数据线和MAR宽度相同
DMAR芯片容量大,地址位数多,行地址和列地址通过相同引脚先后两次输入,地址引脚数可减少一半
RAM和ROM区别
ROM | RAM | |
易失性 | 非易失 | 易失 |
访问 | 随机访问 | 随机访问 |
位置 | 主存 | Cache |
存取 | 只读 | 存取 |
例题
读写控制线也可以是一根
多模块存储器
单体多字存储器
多体并行存储器
高位交叉编址(顺序方式)
低位交叉编址(交叉方式)
主存与CPU连接
连接原理
主存通过数据总线,地址总线,控制总线与CPU连接
数据总线位数与工作频率乘积正比于数据传输率
地址总线位数决定可寻址最大内存空间
芯片扩展技术
多个芯片集成到内存条
主存容量的扩展
位扩展法
字扩展法
字位同时扩展法
画法
外存
硬盘设备(随机访问)组成
硬盘存储器
由磁盘驱动器,磁盘控制器和盘片组成
存储区域
一个硬盘由若干记录面,每个记录面有若干个磁道,磁道又划分成若干扇区
扇区(块)是磁盘读写最小单位,磁盘按块存取
磁头数:记录面数,表示硬盘有多少个磁头
柱面数:每面盘面有多少磁道
扇区数:每条磁道有多少扇区
位密度
单位长度磁道能记录二进制位数
在磁盘各磁道记录信息量相同,固位密度从外向内地址,所以最内磁道位密度最大
一般泛指位密度,指最内圈磁道位密度
磁记录原理
原理:磁头和磁性记录介质相对运动,通过电磁转换完成读写操作
磁记录方式:调频制(FM)和改进型调频制(MFM)记录方式
磁盘地址
磁盘阵列
RAID是将多个独立物理磁盘组成逻辑磁盘
固态硬盘(SSD)
基于闪存技术
随机读写不需要机械操作,速度明显高于磁盘,随机写比较慢
由一个或多个闪存芯片和闪存翻译器组成
容易磨损
访问一个扇区平均存取时间
访问一个扇区的平均延迟时间(旋转半周的时间=1/转速/2)
+传输时间(1/转速/磁道包含扇区数)
+寻道时间(一般题目给出)
(+磁盘延迟器延迟)
rpm为转/分,一般要除以60用转/秒计算
高速缓冲存储器(Cache)
高速缓冲存储器利用局部性原理,把程序中正在使用的部分数据存放在Cache中,使CPU访存操作大多针对Cache
与CPU和主存数据交换
CPU和Cache以字为单位进行数据交换
Cache和主存用块为单位进行数据交换
基本工作原理
CPU访问主存,Cache硬件判断是否命中Cache(组相联)
Cache发出访问请求,访问主存组地址对应的Cache,然后比较Tag(标记)
若匹配且有效位为1,将地址转换成Cache地址,与主存无关
否则,则访问主存,并把块全部从主存调入Cache
若Cache已满,就用替换算法进行替换
Cache和主存之间地址映射
Cache有一个有效位
直接映射
主存的每一块只能装入Cache的唯一位置,若该位置有内容,产生块冲突,原先的块无条件替换出去(无须使用替换算法)
如果相等,且有效位为1,则访问Cache命中
如果不相等或有效位为0,则不命中,从主存取一块送到对应Cache行中,并将有效位置1,并将标记设置为地址高t位,同时将地址内容送到CPU
全相联映射
组相联映射
每组Cache行数量越大,发生块冲突概率越低
三种映射之间关系
直接映射
块冲突概率高,空间利用率最低
不断替换,降低命中率
全相联映射
块冲突概率低,空间利用率高,命中率高
地址变换速度慢,实现成本高
组相联映射
组间用直接映射,组内用全相联映射
命中率高,电路简单
Cache主存块的替换算法
采用全相联和组相联映射方法,从主存向Cache传送新块,当Cache满了,用替换算法置换行
随机算法
先进先出算法
近期最少适应算法(LRU)
与局部性原理有关
Cache映射需要添加一个LRU位来作为附加位
最不经常使用算法
Cache写策略
因为Cache内容是主存块副本,对Cache内容进行更新时,需选用写操作使Cache和主存内容保持一致
全写法
CPU对Cache命中时,必须将Cache和主存同时写入,某一块需要替换,不必把这一块写回主存,用新调入块直接覆盖即可
回写法
CPU对Cache命中时,只把数据写入Cache,而不立即写入主存,只有此块被换出时才写入主存
Cache需要添加脏位
脏位有两个状态
清:表示未修改过
浊:表示修改过
与内存不一致时,将Cache块写会主存并设置脏位为“清”
虚拟存储器
主存和辅存共同构成虚拟存储器,二者在硬件和系统软件共同管理下工作
对于应用程序员,虚拟存储器是透明的,由主存的速度和辅存容量
对于系统程序员,虚拟存储器不透明
基本概念
将主存和辅存地址空间同一编址,形成庞大地址空间,在该空间,用户可以自由编程,不必在乎实际内存容量和程序位置
用户编程涉及地址为虚地址或逻辑地址
虚地址对应虚拟空间或程序空间
实际主存单元地址称为实地址或物理地址
虚地址比实地址大得多
CPU使用虚地址时,用辅助硬件找出虚地址和实地址关系,并判断该虚地址是否已装入主存
若在主存中,通过地址变换,CPU可直接访问内存指示的实际单元
不在,则把包括这个字的一页或一段调入主存后由CPU访问。若主存已满,进行替换
虚拟存储器也采用Cache类似技术,将辅存常访问的数据副本存放到主存
虚拟存储记住采用全相联映射,每个虚页面可以存放到对应主存区域任何空闲页位置
进行写操作时,不能每次写操作都同时写回磁盘
处理一致性问题,要写回写法
页式虚拟存储器
以页为基本单位
虚拟空间和内存空间被划分成同样大小页,主存页称为实页,页框,虚存页为虚页
虚拟地址:虚页号和页内地址
页表(慢表)
脏位来表示是否被修改过(回写法)
引用位来配合页面替换策略使用
快表和慢表
快表速度来源于硬件本身
慢表速度来源于查找算法
快表和慢表命中率之间没有联系
快表式慢表部分拷贝,不能够得到比慢表更多结果
具有TLB(全相联映射方式)和Cache的多级存储系统
TLB由组相联存储器组成,也可以由SRAM组成
Cache机构根据映射方式将物理地址划分成多个字段
根据映射规则找到对应Cache行中的标记与物理地址高位比较
若相等且有效位为1,则Cache命中,并将块内地址送CPU
比较器位数=Tag
查找过程
进行查找时,快表和慢表可以同时进行
若快表有虚页号,找到,则将慢表查找作废