原来机械硬盘比内存慢10万倍

我们都知道机械硬盘的速度很慢,内存的速度很快,那么不同存储器之间的差距到底有多大呢?

我们先来看一幅图:

CPU访问寄存器的时间是0.3纳秒,访问L1高速缓存的时间是1纳秒,访问L2高速缓存的时间是4纳秒...

秒、毫秒、微妙、纳秒的计算公式如下:

1s(秒) = 1000 ms(毫秒) = 1000 000 μs(微秒) = 1000 000 000 ns(纳秒)

我们单单这样看可能没什么感觉,我把上面的参数都摘录下来,为了更直观的比较,我把0.3纳秒放大成1秒,其他数据同比例放大,对比一下:

类型 容量 访问时间 相对时间
寄存器 1k 0.3ns 1秒
L1高速缓存 32K 1ns 3秒
L2高速缓存 256k 4ns 12秒
L3高速缓存 8M 40ns 2分钟
内存 16G 100ns 5分钟
固态硬盘 1T 100μs 3.5天
机械硬盘 1T 10ms 1年
网络(北京到上海) - 30ms 3年

在各种存储器操作的耗时被量化之后,我们就有了很直观的感觉。

下面我们切换到人类的视觉来比较一下:

CPU访问寄存器和高速缓存,基本都是几秒钟,最多两分钟就够了,如果访问内存的话需要5分钟,这都算比较快的速度了。

如果CPU要访问硬盘就很慢了,CUP访问固体硬盘(SSD)需要3.5天时间,如果访问机械硬盘,就需要1年的时间。

最慢的是网络,从北京到上海需要3年,如果距离再远点,那就更慢了...

这和我们的体感就对应上了,平时我们打开一个文件的时候感觉很慢,就是因为在读机械硬盘(固态硬盘就快多了),最慢的是打开网页,半天才刷出来。

你可能会问:既然高速缓存那么快,那我们把所有的存储器都换成高速缓存不就行了吗?

答案是不行,有以下几个原因:

  • 成本: 高速缓存是一种非常昂贵的存储器,其制造成本远高于其他存储器类型,所以将所有存储器都设计成高速缓存会显著增加整个系统的成本。
  • 容量: 高速缓存的容量通常较小,如果把所有的存储器都换成高速缓存,就存不下这么多数据了。
  • 特性: 也是最重要的一点,高速缓存是一种易失性存储器,存储的内容在断电时会丢失,如果要长期保存数据,还是要保存到硬盘中。

存储器的层次关系是这样的:

(图片来源:https://xiaolincoding.com/os/1_hardware/storage.html#cpu-cache)

存储器层次结构是为了在性能、容量和成本之间取得平衡,存储容量越大,速度就越慢,成本也就越低,价格就越便宜。

相关推荐
小李飞刀李寻欢6 天前
vm.max_map_count 表示啥意思啊?通俗易懂点,有单位么?262144表示啥意思?
jvm·elasticsearch·内存·map·es·服务
矛取矛求17 天前
C++ 中 new 和 delete 详解,以及与 C 中 malloc 和 free 的区别
c语言·开发语言·数据结构·c++·缓存·内存·cplusplus
Mundaneman1 个月前
cuda内存种类
内存·cuda
网络研究院1 个月前
Android 安卓内存安全漏洞数量大幅下降的原因
android·安全·编程·安卓·内存·漏洞·技术
Projectsauron1 个月前
ROM、RAM 和 Flash 的区别
内存·flash·ram·存储器·rom
寅双木1 个月前
如何选购笔记本电脑?要看哪些参数?
笔记·笔记本电脑·cpu·显卡·内存条·固态硬盘·机械硬盘
俊哥V2 个月前
[备忘]测算.net中对象所占用的内存
c#·.net·内存
螺蛳粉只吃炸蛋的走风2 个月前
面试题总结(三) -- 内存管理篇
c语言·c++·面试·内存·堆栈·raii
威迪斯特2 个月前
Linux服务器CPU和IO的监控利器-iostat简介
linux·运维·服务器·内存·性能分析
天然1293 个月前
深入理解linux 内存cache
linux·内存·cache