「这是我参与2022首次更文挑战的第32天,活动详情查看:2022首次更文挑战」。
存储系统按层次分可以分为:cache,主存,辅存。
按存储介质可以分为:磁表面存储器,磁芯存储器,半导体存储器,光存储器等等。
cache
cache就是高速缓存,提高读取访问速度,满足程序的局部性原理。
cache满了就替换,cache和主存的数据同步,用cache写。
cache和主存的映射方式
直接映射
主存对cache大小取余,每个快=块只能放到固定位置。
直接映射的灵活性差,利用率低。
cache内标记字段保存的是主存中应对块号。
全相连
cache内标记字段保存的是主存中对应块的完整块号,所以其想放哪放哪。
组相连
组间直接映射,组内全相连。
n路组相连就是n个cache行为一组。
替换策略
随机替换(RAND)
随机选一个替换
先进先出(FIFO)
频繁的换入换出称为抖动。
近期最少使用(LRU)
记录cache块多久没被访问过。 同时这也是效率最高的替换策略。
最近不经常使用(LFU)
记录cache块被访问过几次,其不遵守局部性原理。
cache写策略
主要有四种方法:写回法、全写法、写分配法、非写分配法。
写回法是块被换出时写回内存,其有数据不一致的隐患。
全写法用写缓冲暂存改动,控制电路同步,适合写操作不频繁的情况。
写分配法把内存块调入cache,搭配写回法使用。
非写分配法在写不命中时,搭配全写法。
cache快都有一个标记字段,标记该块是否存有内存副本。
虚拟存储器
其主要目的就是将内存与外存结合,虚地址就是用户编制程序时使用的地址,也叫逻辑地址,实地址就是计算机物理内存的访问地址,真实地址。
页表
虚地址到主存实地址的变换表,物理逻辑地址转换,有内页表和外页表两种。
快表
类似于cache,快表放在cache内,未命中时把慢表内容调入快表,加快地址变换的速度。
调度
页式、段式、段页式三种调度方法。
存储系统拥有局部性,程序对数据引用的局部性:
int main(int a[n])
{
int i=0,sum=0;
for(int i=0; i
{
sum+=a[i];
}
return sum;
}
sum在每次循环中都被调用一次,有时间局部性,而数组i中的元素顺序存储在存储器中,依次被读取,有空间局部性。