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


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

    我们先来看一幅图:

    在这里插入图片描述
    CPU访问寄存器的时间是0.3纳秒,访问L1高速缓存的时间是1纳秒,访问L2高速缓存的时间是4纳秒…

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

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

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

    类型容量访问时间相对时间
    寄存器1k0.3ns1秒
    L1高速缓存32K1ns3秒
    L2高速缓存256k4ns12秒
    L3高速缓存8M40ns2分钟
    内存16G100ns5分钟
    固态硬盘1T100μs3.5天
    机械硬盘1T10ms1年
    网络(北京到上海)-30ms3年

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

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

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

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

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

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

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

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

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

    存储器的层次关系是这样的:
    在这里插入图片描述
    (图片来源:https://xiaolincoding.com/os/1_hardware/storage.html#cpu-cache)

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

  • 相关阅读:
    多线程概述
    Go语言学习日记【三十二】golang代码错误处理【error,defer,recover】
    Spring Boot 请求/actuator/beans 无法访问 返回404
    Nacos学习笔记
    SpringCloud 三种服务调用方式,你学会了吗?
    WSL1 安装 debian xfce 用xrdp 导入远程桌面
    【每日一题】—— C. Yarik and Array(Codeforces Round 909 (Div. 3))(贪心)
    Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第7章 Vue.js高级进阶 7.1 安装vue-cli
    第四次作业
    掌握Vim编辑器,轻松提升编程效率
  • 原文地址:https://blog.csdn.net/zhanyd/article/details/134349601