操作系统--存储器层次结构

局部性

概念
倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

类别
时间局部性
被引用过一次的内存位置很可能在不远的将来再被多次引用
空间局部性
如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附近的一个内存位置。

好处
有良好局部性的程序比局部性差的程序运行的更快

应用的部分
硬件层:局部性原理允许计算机设计者通过引入称为高速缓存存储器的小而快的存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度
操作系统:局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存。
程序中应用局部性的原则
1.重复引用相同变量的程序有良好的时间局部性
2.对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的应用模式的程序有很好的空间局部性。在内存中以大步跳来跳去的程序空间局部性会很差。
3.对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

存储器层级结构

存储器层级结构图
在这里插入图片描述
图中存储概念
随机访问存储器:
静态的(SRAM):更快,更贵,用于高速缓存存储器,既可以在CPU芯片上,也可以在片下。
动态的(DRAM):用于作为主存以及图形系统的帧缓冲区。
磁盘:
磁盘是广为应用的大量数据的存储设备,存储数量可以有几百到几千千兆字节,RAM的存储器只能有几百到几千兆字节。
但是从磁盘上读信息的时间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了100万倍。

缓存
高速缓存是一个小而快速的存储设备,它作为存储在更大,也更慢的设备中的数据对象的缓冲区域,使用高速缓存的过程称为缓存。
缓存命中
当程序需要k+1层的某个数据对象d,它首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,那么就是缓存命中,该程序直接从第k层读取d,根据存储器层次结构的性质,这要比第k+1层读取d更快。
缓存不命中
如果第k层中没有缓存数据对象d,那么就是我们所说的缓存不明智,当发生不命中,第k层的缓存从第k+1层缓存中去除包含d的块,若第k层的缓存已经满了,可能就会覆盖现存的一个块。
层次结构的中心思想
对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存,层次结构中的每一层都缓存来自较低一层的对象。
每层之间,以块的大小作为传送单元来回复制,在层次结构中任何一对相邻的层次之间块大小固定,但是其他层次对之间可以有不同的块大小。
一般而言,层次结构中较低层的设备访问时间较长,为了补偿这些较长的访问时间,倾向于使用较大的块。
行之有效的原因
1.较慢的存储设备比较快的存储设备更便宜
2.程序倾向于展示局部性
2.1时间局部性:由于时间局部性,统一数据对象可能会被多次使用,一旦一个对象在第一次不命中时被复制到缓存中,我们就会气我后面对该目标友谊西路的访问命中。因为缓存比第一层的存储设备更快,对后面的命中的服务会比最开始的不命中快很多。
2.2空间局部性:块通常包含多个湖熟对虾,由于空间局部性,我们会气我后面对该块中其他对象的访问能够补偿不命中后复制该块的花费。

参考:
深入理解计算机操作系统

发布了212 篇原创文章 · 获赞 33 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/hello_bravo_/article/details/104146890