三层次存储系统
三层次存储系统指CACHE-主存-辅存存储系统。
目的:解决高速度、大容量和低成本间的矛盾。
主存-辅存层次
解决容量和成本间的矛盾。
CACHE-主存层次
解决速度和成本间的矛盾。
CACHE工作原理
工作原理也就是层次存储系统能发挥效用的原因,如下:
根据程序访问的局部性,如果当前正在执行的程序和数据存放在CACHE中,当程序运行时,不必从主存储器取指令和数据,访问CACHE即可。
程序访问的局部性:
在一个较短的时间间隔内,程序访问的地址(程序、指令的地址和数据的地址)往往集中制存储器逻辑地址空间的很小范围内。
三种地址映像方式
地址映像:主存地址映像到Cache
直接映像
优点
实现简单,只需利用主存地址按某些字段直接判断,即可确定所需字块是否已在cache中
缺点
不够灵活,不能用替换算法
全相联映像
优点
最灵活,可以使用任何替换算法,理论上命中率高
缺点
成本最高,每个Cache块都要用一个运算器
组相联映像
组间直接映像,组内全相联映像。
优缺点
是直接映像和全相联映像的折衷方案,性能处于前两种之间。
替换算法
FIFO
把最先调入cache的字块替换出去
LRU
把近期最少使用的字块替换出去。
这需要一张表来记录cache中各字块的使用情况,把最近使用的字块放到表的最上边,其他的向下顺移。
虚拟存储器
虚拟存储器拥有辅存的容量,接近主存的速度和辅存的单位成本。
存储管理
段式管理
利用程序的模块化形状,把主存按段分配
- 优点
- 段的分界和程序的自然分界相对应
- 段的逻辑独立性使它易于编译、管理、修改和保护,也易于重复调用。
- 缺点
- 容易在段间留下许多零碎的存储空间,造成空间浪费。
页式管理
主存物理空间被划分为等长的页
优点
与段式管理相比,空间浪费要小得多
缺点
处理、保护和共享都不如段式来得方便
段页式管理
程序按模块分段,段内再分页,出入内存仍以页为单位,用段表和页表进行两级管理(每段一个页表)
页式存储器
虚地址高位字段为虚页号,低位字段为页内字地址。
假设页表保存在内存中,那么访问存储器时首先要查页表(需要访问主存),得到实地址后,再次访问主存才能完成读写操作,这样相当于主存速度降低了一半。
解决办法:使用快慢表,快表是慢表(主存中的页表)的小小的副本。
查表时,用虚页号同时去查快表和慢表,如果在快表中找到,就将对应的实页号送入实主存地址寄存器,并使慢表的查找作废;找不到时,就要花费一个访问主存时间查慢表,从中查到实页号送入实存地址寄存器,并将此虚页号和对应的实页号送入快表,替换快表中某一行内容(这也使用替换算法)。
段页式虚拟存储器
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!