解读《深入理解计算机系统(CSAPP)》第6章存储器层次结构

前言

📫作者简介小明Java问道之路,专注于研究计算机底层/Java/Liunx 内核,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫 

🏆CSDN专家博主/Java领域优质创作者、阿里云专家/签约博主、InfoQ签约博主、华为云专家、51CTO专家🏆

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~

导读

存储器系统(memory system)是一个具有不用容量、成本和访问时间的存储设备的层次结构。本章我们了解存储器层次结构、基本的存储技术(磁盘结构、固态硬盘结构、高速缓存存储器)等。

如果程序需要的数据在寄存器中,指令可以立即使用这些数据;如果数据存储在cache中,那么获取这些数据4~75个时钟周期;当数据存储在内存中,需要几百个时钟周期;如果数据存储在磁盘中,需要大约几千万个时钟周期。

重点解读:

一、机械磁盘

二、固态硬盘

三、存储器层次结构

存储技术和计算机软件基本稳定特性:一、高速存储器技术成本高、容量下、耗电大、易发热;二、CPU和主存之间的速度差距越来越大;三、一个编写良好的程序倾向于展示出良好的局部性

局部性原理:程序倾向于使用距离最近用过的指令/数据地址相近或相等的指令/数据。

局部性的两种形式:时间局部性:最近访问过的信息,很可能在近期还会被再次访问。重复引用相同变量的程序有良好的时间局部性。空间局部性:地址接近的数据项,被使用的时间也倾向于接近。对于具有步长为kk的引用模式的程序,步长越小,空间局部性越好。

这些特性互相补充,下图给出一条组织存储器系统的途径——存储器层次结构

四、高速缓存存储器

高速缓存存储器是小型的、快速的基于SRAM的存储器,是在硬件中自动管理的。下图为高速缓存存储器的总线结构图

书中介绍三类高速缓存结构:一、通用的高速缓存存储器组织结构(机器的高速缓存被组织成一个有S=2^s个高速缓存组的数组。每个组包含E个高速缓存行。每个行是由一个B=2b字节的数据块组成的,一个有效位指明这个行是否包含有意义的信息,还有t=m−(b+s)个标记位,它们唯一地标识存储在这个高速缓存行中的块) ;二、直接映射高速缓存(每个组只有一行的高速缓存称为直接映射高速缓存);三、组相联高速缓存(组相联高速缓存中的每个组都保存有多于一个的高速缓存行)

高速缓存参数的性能影响:(一)不命中率:不命中数量/引用数量;(二)命中率:1−1−不命中率;(三)命中时间:从高速缓存传送一个字到CPU所需的时间;(四)不命中处罚:由于不命中所需要的额外的时间。

五、编写高速缓存友好的代码

1、让常见的情况运行得快(专注在核心函数和内循环上)
2、尽量减少每个循环内部的缓存不命中数量(对局部变量的反复引用(时间局部性)、步长为1的引用模式(存储器所有缓存都是将数据存储为连续的块(空间局部性))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值