三、存储器
1、存储器的分类
按存储器介质份分类
半导体存储器(TTL(集成度低、功耗高、速度快)、MOS(功耗低,集成度高))。U盘等;易失
磁表面存储器(磁头、载磁体)。如磁盘、磁带等;非易失
磁芯存储器(硬磁材料、环状元件);非易失
光盘存储器(激光、磁光材料);非易失
按存取方式分类
存取时间与物理地址无关(随机访问)
随机存储器 在程序的执行过程中可读可写
只读存储器 在程序的执行过程中只读
存取时间与物理地址有关(串行访问)
顺序存取存储器 磁带
直接存取存储器 磁盘
在计算机中的作用分类
主存储器
RAM(可读可写);静态RAM、动态RAM
ROM(只读);MROM、PROM、EPROM、EEPROM
辅助存储器 磁盘、磁带、光盘
Flash Memory
高速缓冲存储器(Cache)
2、存储器的层次结构
存储器三个主要特性:速度 容量 价格/位
缓存用来解决主存与CPU速度差距太大的问题,辅存用来解决主存容量问题
3、主存储器
主存的基本组成
主存与CPU的联系
分类
随机存储器 RAM(可读可写);静态RAM、动态RAM
只读存储器 ROM;MROM、PROM、EPROM、EEPROM
提高访存速度的措施
采用高速器件
采用层次结构 Cache-主存
调整主存结构
4、高速缓冲存储器
为了避免CPU出现空等现象,用在CPU与主存之间。
4.1、缓存的工作原理
主存和缓存中都有字块,通过字块号主存与缓存想和关联,关联的字块中存放相同数据。CPU想读写主存某字块时,实际去读写缓存中与之对应的字块。缓存的结构如下图:
读操作过程:
写操作过程: CPU直接写到缓存中,关键点在于保证缓存与主存的一致性。
写直达法:
写操作时数据既写入cache又写入主存
写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现
写回法(Write-back)
写操作时只把数据写入Cache而不写入主存,当Cache数据被替换出去时才写回主存
写操作时间就是访问Cache的时间,Cache块退出时,被替换的块需写回主存增加了Cache的复杂性
缓存的改机
增加Cache的级数,片载(片内)Cache,现在系统中基本都是三级缓存。
统一缓存和分立缓存,指令Cache 数据Cache,与指令执行的控制方式有关(是否是流水线)。
4.2、缓存与主存的地址映射
直接映射(离CPU近就采用这种方式)某一主存块只能固定映射到某一缓存块 不灵活、速度快
全相连映射 某一主存块能映射到任一缓存块 成本高、速度低
组相连映射 速度快、cache的命中率高
Cache中主存块的替换算法
随机算法(RAND):随机地确定替换的 Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入 Cache的块替换掉。
近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FFO要高,是堆栈类算法。
LRU算法对每行设置一个计数器, Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。