存储系统1125¶
存储层次结构
存储系统的层次结构
目的 希望能同时满足容量大,速度快,价格低的存储器
解决方法 采用多种存储器技术,构成多级存储层次结构
- 程序的局部性原理 程序访问的局部性原理: 对于绝大多数程序来说,程序所访问的指令和数据在地址上是不均匀分布的,是相对簇聚的。 ·时间局部性
·空间局部性程序马上将要用到的信息很可能是现在正在使用的信息
程序马上将要用到的信息很可能是与现在正在使用的信息在存储空间是相邻的
- 放置和替换算法的巧妙
存储系统性能参数
通过简单参数来说明使用层次结构有助于实现容量大,价格低,访问速度块存储器的目标 ·t:访问时间 ·s:存储容量 ·一般来说,整个存储系统的容量即最低级别的存储器所占有的容量 ·c:平均每位价格 ·当s2>>s1时平均每位价格趋近于c2
重要参数 命中率h(hit) 不命中率f(false) 平均访问时间 TA=T1+FTM TM=T2+TB TB为一级存储体系传送到二级存储体系中传送一个信息块所需要的时间
三级存储系统
三级存储系统两个层次 cache-主存层次
- 主要弥补主存速度的不足
- 主要由专用硬件实现
- 访问速度的比值是几比一
- cpu可以直接访问第二级别(内存)
- 不命中时不切换进程,去主存里找对应数据 主存-辅存层次
- 主要弥补主存容量的不足
- 主要由软件实现
- 几万比一
- 只能通过主存来访问辅存
- 不命中会缺页异常,中断,切换到其他进程
四个主要问题 映像规则 查找算法 替换算法 写策略
Cache基本知识
基本结构和原理
注意
- Cache和主存均被分割成大小相同的块
基本概念
- 内存块=cache块(大小上)
- 主存地址,块地址 主存地址=块地址+块内位移(偏移量)
- 块地址/块号/主存块地址: 用于查找该块在cache中的位置
- 块内位移: 用于确定所访问的数据在该块的位置
- 块地址,标识(tag),索引(index) 块地址=标识(tag)+索引(index)
先用块地址去在cache中查找是否命中,若命中,则块地址和块内位移组合形成新的Cache地址(不是主存地址,块地址有了变化),去cache存储体内找相应的cache块。如果没有命中则去主存中调入相应的块
映像规则
- 全相联映像
主存中任意一块内存块可以被放置到Cache块中的任意一个cache块中 特点 空间利用率最高,冲突概率最低,实现最复杂 疑问冲突概率低?
全相联映射的优点是块冲突概率最低,只有当Cache全部装满后,才有可能出现块冲突。
- 直接映像
主存中的每一个块只能被分配到Cache中的唯一一个位置。
(地址找到cache块的选择采用循环分配)
若cache有M个块,则如果有主存块地址,其低m位对应的数字j可以标识其在cache块的第j块 整体块地址imodM即为j,而j所占的位数m为log2(M)
特点 空间利用率最低,冲突概率最高,实现最简单。
- 组相联映像
主存中的每一个块可以被放在Cache中对应的唯一一个组中的任意一个块中. 组
组的选择采用位选择法
·块地址的低g位,(g是对G(Cache的组数)取log2对数)
·意思用地址块号低几位(叫索引),索引只能用来进行选择组,位选择指的是通过低位组成的索引来选择组
n路组相联 n个内存块组成一个组,n称为相联度。 g个组 M=n * g为cache块的数量
全相联映像 路数为M一组内包括所有的块数量,只有一个组,可以说是m路组相联 直接映像 一个组内为1个cache块,即一个路,有M个组 组相联映像,有n个cache块组成一个组,有g个组组成了整个cache中的所有空间,n * g=m
映像规则
注意
- 通过查找目录表实现
- 并行与顺序查找
- 并行查找的方法
cpu给出地址后对cache中的操作
预先知识 主存地址=(标识(tag)+索引(index))块地址+块内位移 访存地址=tag标识+索引index=块地址 目录项=有效位+标识tag 有效位标识是否有效 主存块的块地址高位部分叫标识,低位部分叫索引。 每个主存块在cache中能唯一地由其标识来确定,原因是索引只是找到对应的组(而不是页表项,页表项对应的cache块,而一个组可以对应多个cache块也即多个页表项),而组内真正的对应的内存或cache块实际上还是由主存决定的。
过程 给出主存地址,首先用高位(访存地址)块地址中的索引找到相应的一组页表项,此时可以用串行或者并行的手段来通过访存地址(块地址)中的标识tag验证其中是否有本次访存所找的块,如果有则命中,如果没有则没有命中