原来机械硬盘比内存慢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)

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

相关推荐
Serene_Dream3 天前
OS 内存小结
操作系统·内存
七夜zippoe4 天前
NumPy高级:结构化数组与内存布局优化实战指南
python·架构·numpy·内存·视图
星火开发设计7 天前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
福赖7 天前
《堆 / 栈 / 静态区区别、内存泄漏原因及排查》
c++·内存··
星火开发设计8 天前
动态内存分配:new 与 delete 的基本用法
开发语言·c++·算法·内存·delete·知识·new
深念Y14 天前
JMS583主控硬盘盒刷新版固件,修复无法使用傲腾或者频繁休眠增加硬盘不安全关机次数BUG
ssd·固态硬盘·主控·固件·jms583·硬盘盒·傲腾
bu_shuo17 天前
机械硬盘写入速度
机械硬盘·写入速度
存储国产化前线20 天前
天硕工业级SSD如何设定物理窃密下的安全底线?
ssd·国产化·固态硬盘·工业级固态硬盘
OpsEye1 个月前
Redis 内存碎片的隐形消耗——如何用 memory purge 命令释放空间?
运维·网络·数据库·redis·缓存·内存·监控
seasonsyy1 个月前
为虚拟机分配内存和磁盘容量
windows·操作系统·内存·vmware·磁盘空间