深入理解计算机系统学习笔记

news/2024/4/27 16:45:08

1.存储器层次结构

存储技术:不同存储技术的访问时间差异很大。速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小。CPU和主存之间的速度差距在增大。

计算机软件:一个编写良好的程序倾向于展示出良好的局部性。

硬件和软件的这些基本属性互相补充得很完美。它们这种相互 补充的性质使人想到一种组织存储器系统的方法,称为存储器层次结构(memory hierarchy), 所有的现代计算机系统中都使用了这种方法。

图中展示了一个典型的存储器层次结构。一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。

2.存储器层次结构中的缓存

高速缓存(cache, 读作 “cash”)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存(caching, 读作 “cashing”)。

存储器层次结构的中心思想是,对于每个K,位于K层的更快更小的存储设备作为位于 K+1层的更大更慢的存储设备的缓存。

下图展示了存储器层次结构中缓存的一般性概念。第K+1层的存储器被划分成连续的数据对象组块(chunk),称为块(block)。

每个块都有一个唯一的地址或名字,使之区别于其他的块。块可以是固定大小的,也可以是可变大小的。

数据总是以块大小为传送单元(transfer unit)在第K层和第K+1 层之间来回复制的。 虽然在层次结构中任何一对相邻的层次之间块大小是同定的,但是其他的层次对之间可以有不同的块大小。

一般而言,层次结构中较低层(离 CPU 较远)的设备的访问时间较长,因此为了补偿这些较长的访问时间,倾向于使用较大的块。

(1)缓存命中

当程序需要第K+1层的某个数据对象d时,它首先在当前存储在第K层的一个块中查找d。如果d刚好缓存在第K层中,那么就是我们所说的缓存命中(cache hit)。

(2)缓存不命中

另一方面,如果第K层中没有缓存数据对象那么就是我们所说的缓存不命中 ( cache miss)。当发生缓存不命中时,第K层的缓存从第K+1层缓存中取出包含d的那个块,如果第K层的缓存已经满了,可能就会覆盖现存的一个块。

覆盖一个现存的块的过程称为替换(replacing)或驱逐(evicting)这个块。被驱逐的这个块有时也称为牺牲块(victim block)。决定该替换哪个块是由缓存的替换策略(replacement policy)来控制的。

(3)缓存不命中的种类

如果第K层的缓存是空的,那么对任何数据对象的访问都会不命中。一个空的缓存有时被称为冷缓存(cold cache), 此类不命中称为强制性不命中(compulsory miss)或冷不命中(cold miss)。

只要发生了不命中,第K层的缓存就必须执行某个放置策略(placement policy),确定把它从第K+1层中取出的块放在哪里。

硬件缓存通常使用的是更严格的放置策略,这个策略将第K+1层的某个块限制放置在第K层块的一个小的子集中(有时只是一个块)。这种限制性的放置策略会引起一种不命中,称为冲突不命中(conflict miss),在这种情况中,缓存足够大,能够保存被引用的数据对象,但是因为这些对象会映射到同一个缓存块,缓存会一直不命中。

(4) 缓存管理

存储器层次结构的本质是,每一层存储设备都是较低一层的缓存。在每一层上,某种形式的逻辑必须管理缓存。

3. 存储器层次结构概念小结

存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序倾向于展示局部性:

利用时间局部性:由于时间局部性,同一数据对象可能会被多次使用。一旦一个数 据对象在第一次不命中时被复制到缓存中,我们就会期望后面对该目标有一系列的访问命中。因为缓存比低一层的存储设备更快,对后面的命中的服务会比最开始的不命中快很多。

利用空间局部性:块通常包含有多个数据对象。由于空间局部性,我们会期望后面对该块中其他对象的访问能够补偿不命中后复制该块的花费。

缓存在现在计算机系统运营如下图:

4.高速缓存存储器

早期计算机系统的存储器层次结构只有三层:

CPU寄存器、DRAM主存储器和磁盘存储。

由于CPU和主存之间逐渐增大的差距,系统设计者被迫在CPU寄存器文件和主存之间插入了一个小的SRAM高速缓存存储器,称为 L1 高速缓存(一级缓存),如图6-24 所示。

随着CPU 和主存之间的性能差距不断増大,又设计出了为L2 高速缓存和L3 高速缓存。

5.通用的高速缓存存储器组织结构

考虑一个计算机系统,其中每个存储器地址有m位,形成M=2的m次方个不同的地址。如图6-25a 所示,这样一个机器的高速缓存被组织成一个有S=2的s次方个高速缓存组(cacheset)的数组。每个组包含E个高速缓存行(cache line)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat Seeion 集群

部署:nginx服务器:11-11;tomcat1:11-3; tomcat2:11-6 nginx服务器11-11做搭建: [rootmcb-11 ~]# systemctl stop firewalld [rootmcb-11 ~]# setenforce 0 [rootmcb-11 ~]# yum install epel-release.noarch -y [rootmcb…

2024智建会凝聚科技创新成果,促进建筑低碳发展

在建设中,将一些废弃工业生产废旧料作为混凝土合理掺和料,既可 以节省水泥等装饰建材,又能增加混泥土的使用期。装配式结构和新型墙体材料、屋面防水材料彼此适配,这些材料具有重量轻、施工简单、施工周期时间短、采用肝纤维化、复…

在线疫苗预约小程序|基于微信小程序的在线疫苗预约小程序设计与实现(源码+数据库+文档)

在线疫苗预约小程序目录 目录 基于微信小程序的在线疫苗预约小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、疫苗管理 2、疫苗订单管理 3、论坛管理 4、公告管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源…

3.4 bp,si,di寄存器,寻址方式,寄存器总结

汇编语言 1. [bxidata] 我们可以用[bx]来指明一个内存单元我们也可以用[bxidata]来表示一个内存单元,它的偏移地址为bx中的数值加上idata mount c d:masm c: debug r d 2000:1000 e 2000:1000 12 34 56 78 a mov ax,2000 mov ds,ax mov bx,1000 mov ax,[bx] mov c…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作

原文链接:最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597452&idx1&sn8aa991235ffee89fc76590a90b9005d7&chksmfa823c6bcdf5b57df0cb02ecd1821921f38ea6de34c79e4172e7fa869b2f0bc1f25…

进程学习--02

在C语言中&#xff0c;一般使用fork函数开辟进程&#xff0c;这个函数开辟进程后会返回一个进程号&#xff0c;在子进程中会返回0&#xff0c;在父进程中会返回子进程的进程号。 int main(){int ret fork();if(ret<0){fprintf(stderr, "pid error");exit(-1);}e…