- 👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。
- 📝个人公众号:爱敲代码的小黄(回复 “技术书籍” 可获千本电子书籍)
- 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙
- 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
- 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
- 🍂博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人
文章目录
磁盘比内存慢几万倍?
内存和硬盘都属于计算机的存储设备,断电后内存中的数据会丢失的,而硬盘不会,因为硬盘是一个 持久化的存储设备,也是一个 I/O 设备。
我们CPU内部也有存储数据的组件,比如:寄存器、CPU L1、L2、L3 Cache 也属于存储设备。
那问题来了,我们这些存储设备,谁的速度最快,谁的速度又最慢呢?
一、引言
本文参考 小林coding 的《图解操作系统》,也是我十分喜欢的一个公众号博主,为他打 call
老读者知道我之前再写
Kafka
的博文,为什么突然开始写操作系统的呢?
原因在于:
当我看到
Kafka
服务端的一些 IO 操作时,我发现我看不懂了,了解之后发现这里
Netty
的概念。
当我尝试了解 IO 时,我发现一些内存、磁盘的交换,搞的我焦头烂额,于是,想静下心来从头开始。
当我把 小林coding 的 《图解操作系统》看完之后,我发现对操作系统的理解更上一层楼。
用一段话,作为今天的开场白:
读书的根本目的,未必是解决现实问题,它更像一场心灵的抚慰。
一个喜欢读书的人,可能不会记得自己读过哪些书。
但是那些看过的故事、收获的感悟、浸染过的气质,就像一颗种子,会在你的身体里慢慢发芽长大,不断提升你的认知,打开你的视野。
二、存储器的层次结构
大学准备考试了,你去图书馆临时抱佛脚。那么在看书的时候,我们的大脑会思考问题,也会记忆知识点。另外,我们通常也会把常用的书摆在自己的桌子上,当我们找一本不常用的书时,需要去书架进行寻找。
图书馆的例子对比我们的存储结构:
- 大脑思考问题:寄存器
- 记忆知识点:L1、L2、L3 Cache
- 常用的书:内存
- 书架的书:磁盘
对于存储器,它的速度越快、能耗会越高、而且材料的成本也是越贵的,以至于速度快的存储器的容量都比较小。
存储器的级别一般如下:
- 寄存器
- CPU Cache - L1-Cache- L2-Cache- L3-Cache
- 内存
- SSD/HDD 硬盘
1. 寄存器
寄存器的数量通常在几十到几百之间,寄存器的访问速度非常快,一般在半个CPU时钟周期完成读写。
比如 2 GHz 主频的CPU,
时钟周期 = 1 / 2G = 0.5ns(纳秒)
- 32 位的寄存器可以存储 4 个字节
- 64 位的寄存器可以存储 8 个字节
2. CPU Cache
CPU Cache 使用的是一种
SRAM
的芯片,只要有电,数据就可以一直存在,而一旦断电,数据就会丢失。
一个
SRAM
芯片。一个
bit
的数据,通常需要 6 个晶体管。
CPU Cache 可以分 L1、L2、L3 三级高速缓存:
2.1 L1 高速缓存
时间:
2-4
个时钟周期
大小:32KB + 32KB
组成:指令缓存和数据缓存
2.2 L2 高速缓存
时间:
10-20
个时钟周期
大小:256KB
组成:数据缓存
2.3 L3 高速缓存
时间:
20-60
个时钟周期
大小:3M
组成:数据缓存
3. 内存
内存使用的是
DRAM
的芯片,一个
bit
的数据,只需要一个晶体管和一个电容就能存储。内存速度大概在
200-300
时钟周期。
4. SSD/HDD 硬盘
SSD 我们常说的固态硬盘,相对内存最大的优点是:断电后可以保存数据。内存读写速度比SSD快
10-1000
倍。
HDD 我们常说的机械硬盘,内存的读写速度比HDD快
10W
倍。
三、存储器的层级关系
CPU 不会和每一种存储器设备打交道,每一种存储器只会和他们相邻的存储器设备打交道。
比如:CPU Cache 的数据是从内存加载过来的,写回数据的时候也只写回到内存,CPU Cache 不会直接把数据写到硬盘,也不会直接从硬盘加载数据,而是先加载到内存,再从内存加载到 CPU Cache 中。
所以,每个存储器只和相邻的一层存储器设备打交道,并且存储设备为了追求更快的速度,所需的材料成本必然也是更高,也正因为成本太高,所以 CPU 内部的寄存器、L1、L2、L3 Cache 只好用较小的容量,相反内存、硬盘则可用更大的容量,这就我们今天所说的存储器层次结构。
当然,由于存储器的和相邻的存储器打交道,我们的CPU访问内存数据的时候,会先访问寄存器,寄存器找不到会去 L1 Cache 以此类推。
四、存储器之间的实际价格和性能差距
版权归原作者 爱敲代码的小黄 所有, 如有侵权,请联系我们删除。