首页 > 其他分享 >35 | 存储器层次结构全景:数据存储的大金字塔长什么样?

35 | 存储器层次结构全景:数据存储的大金字塔长什么样?

时间:2023-01-16 10:38:48浏览次数:43  
标签:存储器 Cache 35 层次结构 内存 L1 CPU 硬盘


今天开始,我们要进入到计算机另一个重要的组成部分,存储器。


如果你自己组装过 PC 机,你肯定知道,想要 CPU,我们只要买一个就好了,但是存储器,却有不同的设备要买。比方说,我们要买内存,还要买硬盘。买硬盘的时候,不少人会买一块 SSD 硬盘作为系统盘,还会买上一块大容量的 HDD 机械硬盘作为数据盘。内存和硬盘都是我们的存储设备。而且,像硬盘这样的持久化存储设备,同时也是一个 I/O 设备。


在实际的软件开发过程中,我们常常会遇到服务端的请求响应时间长,吞吐率不够的情况。在分析对应问题的时候,相信你没少听过类似“主要瓶颈不在 CPU,而在 I/O”的论断。可见,存储在计算机中扮演着多么重要的角色。那接下来这一整个章节,我会为你梳理和讲解整个存储器系统。


这一讲,我们先从存储器的层次结构说起,让你对各种存储器设备有一个整体的了解。


理解存储器的层次结构


在有计算机之前,我们通常把信息和数据存储在书、文件这样的物理介质里面。有了计算机之后,我们通常把数据存储在计算机的存储器里面。而存储器系统是一个通过各种不同的方法和设备,一层一层组合起来的系统。下面,我们把计算机的存储器层次结构和我们日常生活里处理信息、阅读书籍做个对照,好让你更容易理解、记忆存储器的层次结构。


就好比 CPU 中的 寄存器 (Register)。寄存器与其说是存储器,其实它更像是 CPU 本身的一部分,只能存放极其有限的信息,但是速度非常快,和 CPU 同步。


CPU Cache (CPU 高速缓存,我们常常简称为“缓存”)。CPU Cache 用的是一种叫作 SRAM


SRAM


在 SRAM 里面,一个比特的数据,需要 6~8 个晶体管。所以 SRAM 的存储密度不高。同样的物理空间下,能够存储的数据有限。不过,因为 SRAM 的电路简单,所以访问速度非常快。



35 | 存储器层次结构全景:数据存储的大金字塔长什么样?_计算机原理


图片来源


6 个晶体管组成 SRAM 的一个比特


在 CPU 里,通常会有 L1、L2、L3 这样三层高速缓存。每个 CPU 核心都有一块属于自己的 L1 高速缓存,通常分成 指令缓存 和 数据缓存 ,分开存放 CPU 使用的指令和数据。


第 22 讲


L2 的 Cache 同样是每个 CPU 核心都有的,不过它往往不在 CPU 核心的内部。所以,L2 Cache 的访问速度会比 L1 稍微慢一些。而 L3 Cache,则通常是多个 CPU 核心共用的,尺寸会更大一些,访问速度自然也就更慢一些。


你可以把 CPU 中的 L1 Cache 理解为我们的短期记忆,把 L2/L3 Cache 理解成长期记忆,把内存当成我们拥有的书架或者书桌。


DRAM


DRAM


DRAM 被称为“动态”存储器,是因为 DRAM 需要靠不断地“刷新”,才能保持数据被存储起来。DRAM 的一个比特,只需要一个晶体管和一个电容就能存储。所以,DRAM 在同样的物理空间下,能够存储的数据也就更多,也就是存储的“密度”更大。但是,因为数据是存储在电容里的,电容会不断漏电,所以需要定时刷新充电,才能保持数据不丢失。DRAM 的数据访问电路和刷新电路都比 SRAM 更复杂,所以访问延时也就更长。



35 | 存储器层次结构全景:数据存储的大金字塔长什么样?_层次结构_02


存储器的层级结构


整个存储器的层次结构,其实都类似于 SRAM 和 DRAM 在性能和价格上的差异。SRAM 更贵,速度更快。DRAM 更便宜,容量更大。SRAM 好像我们的大脑中的记忆,而 DRAM 就好像属于我们自己的书桌。


大脑(CPU)中的记忆(L1 Cache),不仅受成本层面的限制,更受物理层面的限制。这就好比 L1 Cache 不仅昂贵,其访问速度和它到 CPU 的物理距离有关。芯片造得越大,总有部分离 CPU 的距离会变远。电信号的传输速度又受物理原理的限制,没法超过光速。所以想要快,并不是靠多花钱就能解决的。


我们自己的书房和书桌(也就是内存)空间一般是有限的,没有办法放下所有书(也就是数据)。如果想要扩大空间的话,就相当于要多买几平方米的房子,成本就会很高。于是,想要放下更多的书,我们就要寻找更加廉价的解决方案。


SSD (Solid-state drive 或 Solid-state disk,固态硬盘)、 HDD (Hard Disk Drive,硬盘)这些被称为 硬盘


你应该也在自己的个人电脑上用过 SSD 硬盘。过去几年,SSD 这种基于 NAND 芯片的高速硬盘,价格已经大幅度下降。


而 HDD 硬盘则是一种完全符合“磁盘”这个名字的传统硬件。“磁盘”的硬件结构,决定了它的访问速度受限于它的物理结构,是最慢的。


这些我们后面都会详细说,你可以对照下面这幅图了解一下,对存储器层次之间的作用和关联有个大致印象就可以了。



35 | 存储器层次结构全景:数据存储的大金字塔长什么样?_硬件架构_03


存储器的层次关系图


CPU 并不是直接和每一种存储器设备打交道,而是每一种存储器设备,只和它相邻的存储设备打交道。比如,CPU Cache 是从内存里加载而来的,或者需要写回内存,并不会直接写回数据到硬盘,也不会直接从硬盘加载数据到 CPU Cache 中,而是先加载到内存,再从内存加载到 Cache 中。


这样,各个存储器只和相邻的一层存储器打交道,并且随着一层层向下,存储器的容量逐层增大,访问速度逐层变慢,而单位存储成本也逐层下降,也就构成了我们日常所说的存储器层次结构。


使用存储器的时候,该如何权衡价格和性能?


存储器在不同层级之间的性能差异和价格差异,都至少在一个数量级以上。L1 Cache 的访问延时是 1 纳秒(ns),而内存就已经是 100 纳秒了。在价格上,这两者也差出了 400 倍。


链接



35 | 存储器层次结构全景:数据存储的大金字塔长什么样?_硬件架构_04


因为这个价格和性能的差异,你会看到,我们实际在进行电脑硬件配置的时候,会去组合配置各种存储设备。


我们可以找一台现在主流的笔记本电脑来看看,比如,一款入门级的惠普战 66 的笔记本电脑。今天在京东上的价格是 4999 人民币。它的配置是下面这样的。



Intle i5-8265U 的 CPU(这是一块 4 核的 CPU)


这块 CPU 每个核有 32KB,一共 128KB 的 L1 指令 Cache。


同样,每个核还有 32KB,一共 128KB 的 L1 数据 Cache,指令 Cache 和数据 Cache 都是采用 8 路组相连的放置策略。


每个核有 256KB,一共 1MB 的 L2 Cache。L2 Cache 是用 4 路组相连的放置策略。


最后还有一块多个核心共用的 12MB 的 L3 Cache,采用的是 12 路组相连的放置策略。



8GB 的内存



一块 128G 的 SSD 硬盘



一块 1T 的 HDD 硬盘


你可以看到,在一台实际的计算机里面,越是速度快的设备,容量就越小。这里一共十多兆的 Cache,成本只是几十美元。而 8GB 的内存、128G 的 SSD 以及 1T 的 HDD,大概零售价格加在一起,也就和我们的高速缓存的价格差不多。


总结延伸


这节的内容不知道你掌握了多少呢?为了帮助你记忆,我这里再带你复习一下本节的重点。


我们常常把 CPU 比喻成高速运转的大脑,那么和大脑同步的寄存器(Register),就存放着我们当下正在思考和处理的数据。而 L1-L3 的 CPU Cache,好比存放在我们大脑中的短期到长期的记忆。我们需要小小花费一点时间,就能调取并进行处理。


我们自己的书桌书架就好比计算机的内存,能放下更多的书也就是数据,但是找起来和看起来就要慢上不少。而图书馆更像硬盘这个外存,能够放下更多的数据,找起来也更费时间。从寄存器、CPU Cache,到内存、硬盘,这样一层层下来的存储器,速度越来越慢,空间越来越大,价格也越来越便宜。


这三个“越来越”的特性,使得我们在组装计算机的时候,要组合使用各种存储设备。越是快且贵的设备,实际在一台计算机里面的存储空间往往就越小。而越是慢且便宜的设备,在实际组装的计算机里面的存储空间就会越大。


在后面的关于存储器的内容里,我会带着你进一步深入了解,各个层次的存储器是如何运作的,在不同类型的应用和性能要求下,是否可以靠人工添加一层缓存层来解决问题,以及在程序开发层面,如何利用好不同层次的存储器设备的访问原理和特性。


补充阅读


如果你学有余力,关于不同存储器的访问延时数据,有两篇文章推荐给你阅读。


Teach Yourself Programming in Ten Years


Build Software Systems at Google and Lessons Learned


课后思考


最后,给你留一道思考题。在上世纪 80~90 年代,3.5 寸的磁盘大行其道。它的存储空间只有 1.44MB,比起当时 40MB 的硬盘,它却被大家认为是“海量”存储的主要选择。你猜一猜这是为什么?


欢迎把你思考的结果写在留言区。如果觉得有收获,你也可以把这篇文章分享给你的朋友,和他一起讨论和学习。


标签:存储器,Cache,35,层次结构,内存,L1,CPU,硬盘
From: https://blog.51cto.com/u_15202985/6010081

相关文章

  • P3524 [POI2011]IMP-Party 题解
    题目传送门更好的阅读体验前置芝士团设\(V\)为\(G\)子图,当\(V\)中任意两点都有边相连,则\(V\)为\(G\)的一个团。此图为本题样例最大团:\(\{1,3,4,5\}\)......
  • 35岁前应该做好的十件事
    35岁是青春的后期,35岁以后是收获的季节,如果你没有资格说这句话,你将会憎恨自己。所以在35岁以前,在烂漫蓬勃的青春年华里,你最好把下面十件事做好。第一,学会本行业所需要的一切......
  • P3530 [POI2012]FES-Festival
    //题意:详细题意省略,要点是求所有人有多少种不同的取值//思路:差分约束最短路只能够求满足答案的最大解和最小解,但是对于取值却无法求解//可以发现,在一个强量通......
  • S355NL执行标准、S355NL力学性能、S355NL化学成分
    一、S355NL钢板简介:S355NL是欧标合金结构高强钢,正火轧制可焊接细晶粒结构钢板,相当于国标Q345E。S355NL钢板牌号表示:“S”:表示欧标结构钢;“355”:表示该钢板屈服强度不小于35......
  • P235GH化学成分、P235GH欧标、P235GH执行标准
    一、P235GH钢板介绍:P235GH属于锅炉及压力容器专用钢板,是欧标钢碳钢容器钢板,P235GH钢板牌号表示:“P”:表示欧标容器板,P235GH钢板执行标准:EN10028-2-2017 对应国标:Q245R-GB/T7......
  • Visual Studio Code快捷键的使用-RK3568开发
    在VisualStudioCode软件中使用快捷键可以增加自身的效率,一些常用的快捷键如下所示:F1打开可以输入命令F2重命名变量,方便重构F5运行和调试代码F12去到定义的地方shift......
  • luogu P3518 [POI2011]SEJ-Strongbox | loj #2160. 「POI2011 R2 Day0」保险箱 Strong
    代码已在loj上不开O2通过。下文均在\(Z_n\)下考虑。首先,你考虑选出一些数,能组成的数。即ttps://www.cnblogs.com/xugangfan/p/17040634.html那么对于一个不在群......
  • 代码随想录算法训练营第二十二天 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉
    今日内容:●235.二叉搜索树的最近公共祖先●701.二叉搜索树中的插入操作●450.删除二叉搜索树中的节点详细布置235.二叉搜索树的最近公共祖先相对于......
  • 组建计算机2 - 存储器(RAM中的SRAM)
    AND-OR锁存器:门锁[latch]:(能储存一位的数据)寄存器[由多个门锁组成](寄存器能存一个数字,这个数字有多少位,就叫位宽)我的电脑有64位寄存器一般是矩阵的结构以减少导线......
  • leetcode_数据结构_入门_350. 两个数组的交集 II
    350.两个数组的交集II 给两个整数数组 nums1和nums2,请以数组形式返回两数组的交集(其在交集中出现的次数:等于该数字在两个数组中出现次数的最小值)。返......