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

简介: 本章我们了解存储器层次结构、基本的存储技术(磁盘结构、固态硬盘结构、高速缓存存储器)等

image.png

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

🏆 Java领域优质创作者、阿里云专家博主、华为云享专家🏆

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

本文导读

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

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

image.png

重点解读:

一、机械磁盘

image.png

二、固态硬盘

image.png

三、存储器层次结构

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

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

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

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

image.png

四、高速缓存存储器

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

image.png

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

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

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

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

小结

计算机中存储器是根据成本、作用、特性等等因素分层的,作为程序员需要了解存储器的结构以及如何编写对存储器友好的代码。

目录
打赏
0
0
0
0
85
分享
相关文章
|
11月前
|
计算机系统结构
【1月更文挑战第5天】计算机系统结构。
120 2
计算机操作系统学习笔记(2)——存储器结构
计算机操作系统学习笔记(2)——存储器结构
244 0
存储器层次结构
实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。 分析对应问题时,你肯定听过“主要瓶颈不在CPU,而在I/O”,存储很重要。
248 0
【计算机体系结构】并行性等级
【计算机体系结构】并行性等级
386 0
【计算机体系结构】相关
【计算机体系结构】相关
347 0
【计算机体系结构】相关
现代操作系统的存储器结构
现代操作系统的存储器结构
115 0
现代操作系统的存储器结构
《数字逻辑设计与计算机组成》一 1.4 计算机体系结构
本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第1章,第1.4节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1705 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等