存储系统
一、基本概念
-
Cache主存系统的效率e=访问Cache的时间/平均访存时间
-
DRAM:利用存储元电路中的栅极电容上的电荷来存储信息
- 采用地址复用技术,地址线是原来的1/2,地址信号分行、列两次传送
- 容易集成,价位低,容量大,功耗低,速度慢于SRAM
- 电容电荷必须刷新保持信息,有三种刷新方式:
- 集中刷新:固定时间(通常2ms)对存储器所有行进行逐一再生,并停止对存储器的所以读写操作,有死区
- 分散刷新:将刷新分散在各个工作周期中,加长了系统的存取周期,降低整机的速度
- 异步刷新:结合两者,但没有消除死区
- 刷新对于CPU透明,不依赖外部访问
- 提高刷新存储器的带宽,可以采用的技术:
- 采用高速DRAM芯片
- 采用多体交叉存储结构
- 刷新存储器至显示控制器的内部总线宽度加倍
- 采用双端口存储器将刷新端口和更新端口分开
-
SRAM与DRAM特点
-
只读存储器:结构简单,非易失性,可靠性
- MROM:掩模式只读存储器,厂商在生产过程中写入
- PROM:一次可编程只读存储器,利用专门设备下入自己的程序,只能写一次
- EPROM:可擦除可编程只读存储器,编写次数有限,写入时间过长
- UVEPROM:紫外线擦除
- E 2 E^2 E2PROM:电擦除
- Flash Memory:闪速存储器,不加电长期保存信息,在线可以快速擦除和重写
- SSD:固态硬盘,固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成
-
常见信号(低电平有效)
- CS:地址片选信号
- WE:写命令信号
- RD:读命令信号
- MREQ:访存控制信号
-
对于双端口RAM,两个端口对同一主存操作有以下4种情况:
- 不同时对同一地址单元存取数据(不出错)
- 同时对同一地址段单元读出数据(不出错)
- 同时对同一地址单元写入数据(写入错误)
- 同时的操作,一个写数据,一个读数据(读出错误)
- 可以通过置“忙”信号来暂时关闭端口
-
直接映射、全相联映射、N路组相联映射对比:
- 直接映射命中率最低,全相联映射命中率最高
- 直接映射判断开销最小、时间最短,全相联映射的判断开销最大、所需时间最长
- 直接映射标记的额外空间开销最少,全相联映射标记占用额外空间最大
-
Cache写策略:非写分配发与全写法合用、写分配发与写回法合用
-
写命中
-
全写法:数据同时写入Cache和主存
-
写回法:只修改Cache,通过给Cache行添加‘脏位’来判断是否修改过
-
-
写不命中
-
写分配法:加载主存中的块到Cache中,然后更新Cache块
-
非写分配法:值写入主存,不调块
-
-
-
虚地址、逻辑地址: 用户编程允许涉及的地址 ; 虚拟空间、程序空间:虚地址对应的存储空间
实地址、实地址空间:主存地址空间 ;
二、理解的思想
-
对于任何存储器,在读写操作后,都需要一段恢复内部状态的复原时间
-
主存和Cache之间的数据调动由硬件自动完成,对所有程序员都透明;主存和辅存之间的数据调动则是由硬件和操作系统共同完成,对应用程序员透明。
-
数据线的宽度与MDR的宽度相同,地址线的宽度与MAR的宽度相同
-
芯片的引脚一般包括数据线、地址线、片选先、读/写控制线
-
位扩展法一次选中所有的芯片,字扩展法选中部分芯片
-
考虑到存储器扩展的需要,MAR应该保证能访问整个主存地址空间,即MAR位数决定了主存地址空间的大小
-
时间局部性是指最近的未来要用的信息
-
CPU与Cache、主存之间的数据交换以字为单位,而Cache与主存之间的数据交换以Cache块为单位
-
各层次的存储系统不是孤立工作的,三级结构的存储系统是围绕主存储器来组织、管理和调度的存储器系统,它们既是一个整体,又要遵循系统运行的原理,包括包含性原则。
-
CPU访存先到Cache中查看主存地址是否存在,所以发送的是主存的物理地址。只有在虚拟存储器中,CPU发送的才是虚拟地址。
-
磁盘地址是外存地址,外出中程序由操作系统调用至主存中执行,因此CPU不可能直接访问磁盘。
-
Cache缺失只需要访问主存,缺页需要访问磁盘,后者开销大。
-
直写策略需要同时写快速存储器和慢速存储器,但写磁盘比写主存慢很多,所以在Cache-主存层次,Cache可以采用直写策略,而主存-外存(磁盘)层次,修改页面内容总是采用回写策略。
-
虚拟存储器由主存和联机工作的辅存共同组成,对于应用程序员透明。Cache全由硬件实现,对所有程序员透明
-
实际物理存储层次上,所编程序和数据在操作系统的管理下,先送入磁盘,然后操作系统将当前运行需要的部分调入主存,供CPU使用,其余部分留在磁盘中
-
物理地址由实页号和页内地址拼接;虚地址分为虚页号、页内地址
-
页面太小会导致页表增大,不能充分利用访存的空间局部性来提高命中率;页面设置太大会导致页面剩余空间较大,浪费较多的存储空间,还使页面调入调出的时间增加。
-
Cache行太大导致失效损失变大,如果未命中会导致需要话更多时间从主存读块,而且Cache的项数变少,命中可能性变少
三、易错点
-
磁带和磁盘的存储方式
- 磁带:顺序存储
- 磁盘:直接存储,先搜寻某个区域,再在该区域中顺序查找
-
SARM和DRAM都是断电内容消失,但只有DRAM需要刷新
-
随机存储和随机存储器(RAM)不同,只读存储器(ROM)也是随机存储,支持随机存储的不一定是RAM
-
高位交叉编址时,CPU按顺序访问存储模块,即不能并行访问,不能提高存储器的吞吐率;低位交叉编址又可以称作交叉存储器,可以并行访问,带宽被提高
-
Cache中存放的是主存中部分信息的副本,不能认为存储系统的总容量是Cache与主存的相加
-
写回式中标记项加一个一致性控制位
-
页表长久存放在主存中,用来将虚拟地址转换到物理地址,记录程序虚页调入主存时被安排在主存中的位置
-
带TLB虚拟存储器的CPU访存过程
序号1:无需访问主存
序号2:访问一次主存
序号3:访问一次主存
序号4:访问两次主存
序号5:至少访问两次主存,并且访问磁盘
-
Cache缺失处理由硬件完成;缺页处理由软件完成,即“缺页异常处理程序“;TLB缺失则两者都可能
-
虚拟存储器系统不命中对系统性能影响更大
-
Cache缺失首先程序计数器会恢复当前指令的值,然后对主存进行读操作。将读入的指令写入Cache,更改有效位和标记位,最后重新执行当前指令。
四、冷知识
- 主存储器由DRAM实现,靠处理器的Cache由SRAM实现,都是易失性
- DRAM的成本低于SRAM,因为它用了更多的硅
- 全写法又叫直通法,write-through
- TLB使用可静态存储器(SRAM)实现,Cache有SRAM组成。DRAM肯定不用于两者
五、经典题目
(异步刷新与集中刷新)
(交叉存储的访问)
(物理地址和逻辑地址的有效位数)
(Cache的结构)
(全写法与写回法的选择)
(综合考察)
(虚拟存储器与物理存储器)