存储系统

194 阅读2分钟

「这是我参与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中的元素顺序存储在存储器中,依次被读取,有空间局部性。