在存储器的层次结构里,谁最快,谁最贵,谁最大?

来源 | 小林coding

责编 | 寇雪芹

头图 | 下载于视觉中国


前言

大家如果想自己组装电脑的话,肯定需要购买一个 CPU,但是存储器方面的设备,分类比较多,那我们肯定不能只买一种存储器,比如你除了要买内存,还要买硬盘,而针对硬盘我们还可以选择是固态硬盘还是机械硬盘。

相信大家都知道内存和硬盘都属于计算机的存储设备,断电后内存的数据是会丢失的,而硬盘则不会,因为硬盘是持久化存储设备,同时也是一个 I/O 设备。

但其实 CPU 内部也有存储数据的组件,这个应该比较少人注意到,比如寄存器、CPU L1/L2/L3 Cache 也都是属于存储设备,只不过它们能存储的数据非常小,但是它们因为靠近 CPU 核心,所以访问速度都非常快,快过硬盘好几个数量级别。

问题来了,那机械硬盘、固态硬盘、内存这三个存储器,到底和 CPU L1 Cache 相比速度差多少倍呢?

在回答这个问题之前,我们先来看看「存储器的层次结构」,好让我们对存储器设备有一个整体的认识。


存储器的层次结构

我们想象中一个场景,大学期末准备考试了,你前去图书馆临时抱佛脚。那么,在看书的时候,我们的大脑会思考问题,也会记忆知识点,另外我们通常也会把常用的书放在自己的桌子上,当我们要找一本不常用的书,则会去图书馆的书架找。

就是这么一个小小的场景,已经把计算机的存储结构基本都涵盖了。

我们可以把 CPU 比喻成我们的大脑,大脑正在思考的东西,就好比 CPU 中的寄存器,处理速度是最快的,但是能存储的数据也是最少的,毕竟我们也不能一下同时思考太多的事情,除非你练过。

我们大脑中的记忆,就好比 CPU Cache,中文称为 CPU 高速缓存,处理速度相比寄存器慢了一点,但是能存储的数据也稍微多了一些。

CPU Cache 通常会分为 L1、L2、L3 三层,其中 L1 Cache 通常分成「数据缓存」和「指令缓存」,L1 是距离 CPU 最近的,因此它比 L2、L3 的读写速度都快、存储空间都小。我们大脑中短期记忆,就好比 L1 Cache,而长期记忆就好比 L2/L3 Cache。

寄存器和 CPU Cache 都是在 CPU 内部,跟 CPU 挨着很近,因此它们的读写速度都相当的快,但是能存储的数据很少,毕竟 CPU 就这么丁点大。

知道 CPU 内部的存储器的层次分布,我们放眼看看 CPU 外部的存储器。

当我们大脑记忆中没有资料的时候,可以从书桌或书架上拿书来阅读,那我们桌子上的书,就好比内存,我们虽然可以一伸手就可以拿到,但读写速度肯定远慢于寄存器,那图书馆书架上的书,就好比硬盘,能存储的数据非常大,但是读写速度相比内存差好几个数量级,更别说跟寄存器的差距了。

我们从图书馆书架取书,把书放到桌子上,再阅读书,我们大脑就会记忆知识点,然后再经过大脑思考,这一系列过程相当于,数据从硬盘加载到内存,再从内存加载到 CPU 的寄存器和 Cache 中,然后再通过 CPU 进行处理和计算。

对于存储器,它的速度越快、能耗会越高、而且材料的成本也是越贵的,以至于速度快的存储器的容量都比较小。

CPU 里的寄存器和 Cache,是整个计算机存储器中价格最贵的,虽然存储空间很小,但是读写速度是极快的,而相对比较便宜的内存和硬盘,速度肯定比不上 CPU 内部的存储器,但是能弥补存储空间的不足。

存储器通常可以分为这么几个级别:

  • 寄存器;

  • CPU Cache;

  1. L1-Cache;

  2. L2-Cache;

  3. L3-Cahce;

  • 内存;

  • SSD/HDD 硬盘

  •   寄存器

    最靠近 CPU 的控制单元和逻辑计算单元的存储器,就是寄存器了,它使用的材料速度也是最快的,因此价格也是最贵的,那么数量不能很多。

    存储器的数量通常在几十到几百之间,每个寄存器可以用来存储一定的字节(byte)的数据。比如:

    • 32 位 CPU 中大多数寄存器可以存储 4 个字节;

    • 64 位 CPU 中大多数寄存器可以存储 8 个字节。

    寄存器的访问速度非常快,一般要求在半个 CPU 时钟周期内完成读写,CPU 时钟周期跟 CPU 主频息息相关,比如 2 GHz 主频的 CPU,那么它的时钟周期就是 1/2G,也就是 0.5ns(纳秒)。

    CPU 处理一条指令的时候,除了读写寄存器,还需要解码指令、控制指令执行和计算。如果寄存器的速度太慢,则会拉长指令的处理周期,从而给用户的感觉,就是电脑「很慢」。

      CPU Cache

    CPU Cache 用的是一种叫 SRAM(Static Random-Access Memory,静态随机存储器) 的芯片。

    SRAM 之所以叫「静态」存储器,是因为只要有电,数据就可以保持存在,而一旦断电,数据就会丢失了。

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

    CPU 的高速缓存,通常可以分为 L1、L2、L3 这样的三层高速缓存,也称为一级缓存、二次缓存、三次缓存。

      L1 高速缓存

    L1 高速缓存的访问速度几乎和寄存器一样快,通常只需要 2~4 个时钟周期,而大小在几十 KB 到几百 KB 不等。

    每个 CPU 核心都有一块属于自己的 L1 高速缓存,指令和数据在 L1 是分开存放的,所以 L1 高速缓存通常分成指令缓存数据缓存

    在 Linux 系统,我们可以通过这条命令,查看 CPU 里的 L1 Cache 「数据」缓存的容量大小:

    $ cat /sys/devices/system/cpu/cpu0/cache/index0/size
    32K

    而查看 L1 Cache 「指令」缓存的容量大小,则是:

    $ cat /sys/devices/system/cpu/cpu0/cache/index1/size
    32K

      L2 高速缓存

    L2 高速缓存同样每个 CPU 核心都有,但是 L2 高速缓存位置比 L1 高速缓存距离 CPU 核心 更远,它大小比 L1 高速缓存更大,CPU 型号不同大小也就不同,通常大小在几百 KB 到几 MB 不等,访问速度则更慢,速度在 10~20 个时钟周期。

    在 Linux 系统,我们可以通过这条命令,查看 CPU 里的 L2 Cache 的容量大小:

    $ cat /sys/devices/system/cpu/cpu0/cache/index2/size
    256K

      L3 高速缓存

    L3 高速缓存通常是多个 CPU 核心共用的,位置比 L2 高速缓存距离 CPU 核心 更远,大小也会更大些,通常大小在几 MB 到几十 MB 不等,具体值根据 CPU 型号而定。

    访问速度相对也比较慢一些,访问速度在 20~60个时钟周期。

    在 Linux 系统,我们可以通过这条命令,查看 CPU 里的 L3 Cache 的容量大小:

    $ cat /sys/devices/system/cpu/cpu0/cache/index3/size 
    3072K

      内存

    内存用的芯片和 CPU Cache 有所不同,它使用的是一种叫作 DRAM (Dynamic Random Access Memory,动态随机存取存储器) 的芯片。

    相比 SRAM,DRAM 的密度更高,功耗更低,有更大的容量,而且造价比 SRAM 芯片便宜很多。

    DRAM 存储一个 bit 数据,只需要一个晶体管和一个电容就能存储,但是因为数据会被存储在电容里,电容会不断漏电,所以需要「定时刷新」电容,才能保证数据不会被丢失,这就是 DRAM 之所以被称为「动态」存储器的原因,只有不断刷新,数据才能被存储起来。

    DRAM 的数据访问电路和刷新电路都比 SRAM 更复杂,所以访问的速度会更慢,内存速度大概在 200~300 个 时钟周期之间。

      SSD/HDD 硬盘

    SSD(Solid-state disk) 就是我们常说的固体硬盘,结构和内存类似,但是它相比内存的优点是断电后数据还是存在的,而内存、寄存器、高速缓存断电后数据都会丢失。内存的读写速度比 SSD 大概快 10~1000 倍。

    当然,还有一款传统的硬盘,也就是机械硬盘(Hard Disk Drive, HDD),它是通过物理读写的方式来访问数据的,因此它访问速度是非常慢的,它的速度比内存慢 10W 倍左右。

    由于 SSD 的价格快接近机械硬盘了,因此机械硬盘已经逐渐被 SSD 替代了。

    存储器的层次关系

    现代的一台计算机,都用上了 CPU Cahce、内存、到 SSD 或 HDD 硬盘这些存储器设备了。

    其中,存储空间越大的存储器设备,其访问速度越慢,所需成本也相对越少。

    CPU 并不会直接和每一种存储器设备直接打交道,而是每一种存储器设备只和它相邻的存储器设备打交道。

    比如,CPU Cache 的数据是从内存加载过来的,写回数据的时候也只写回到内存,CPU Cache 不会直接把数据写到硬盘,也不会直接从硬盘加载数据,而是先加载到内存,再从内存加载到 CPU Cache 中。

    所以,每个存储器只和相邻的一层存储器设备打交道,并且存储设备为了追求更快的速度,所需的材料成本必然也是更高,也正因为成本太高,所以 CPU 内部的寄存器、L1\L2\L3 Cache 只好用较小的容量,相反内存、硬盘则可用更大的容量,这就我们今天所说的存储器层次结构

    另外,当 CPU 需要访问内存中某个数据的时候,如果寄存器有这个数据,CPU 就直接从寄存器取数据即可,如果寄存器没有这个数据,CPU 就会查询 L1 高速缓存,如果 L1 没有,则查询 L2 高速缓存,L2 还是没有的话就查询 L3 高速缓存,L3 依然没有的话,才去内存中取数据。

    所以,存储层次结构也形成了缓存的体系。

    存储器之间的实际价格和性能差距

    前面我们知道了,速度越快的存储器,造价成本往往也越高,那我们就以实际的数据来看看,不同层级的存储器之间的性能和价格差异。

    下面这张表格是不同层级的存储器之间的成本对比图:

    你可以看到 L1 Cache 的访问延时是 1 纳秒,而内存已经是 100 纳秒了,相比 L1 Cache 速度慢了 100 倍。另外,机械硬盘的访问延时更是高达 10 毫秒,相比 L1 Cache 速度慢了 10000000 倍,差了好几个数量级别。

    在价格上,每生产 MB 大小的 L1 Cache 相比内存贵了 466 倍,相比机械硬盘那更是贵了 175000 倍。

    我在某东逛了下各个存储器设备的零售价,8G 内存 + 1T 机械硬盘 + 256G 固态硬盘的总价格,都不及一块 Intle i5-10400 的 CPU 的价格,这款 CPU 的高速缓存的总大小也就十多 MB。

    总结

    各种存储器之间的关系,可以用我们在图书馆学习这个场景来理解。

    CPU 可以比喻成我们的大脑,我们当前正在思考和处理的知识的过程,就好比 CPU 中的寄存器处理数据的过程,速度极快,但是容量很小。而 CPU 中的 L1-L3 Cache 好比我们大脑中的短期记忆和长期记忆,需要小小花费点时间来调取数据并处理。

    我们面前的桌子就相当于内存,能放下更多的书(数据),但是找起来和看起来就要花费一些时间,相比 CPU Cache 慢不少。而图书馆的书架相当于硬盘,能放下比内存更多的数据,但找起来就更费时间了,可以说是最慢的存储器设备了。

    从 寄存器、CPU Cache,到内存、硬盘,这样一层层下来的存储器,访问速度越来越慢,存储容量越来越大,价格也越来越便宜,而且每个存储器只和相邻的一层存储器设备打交道,于是这样就形成了存储器的层次结构。

    再来回答,开头的问题:那机械硬盘、固态硬盘、内存这三个存储器,到底和 CPU L1 Cache 相比速度差多少倍呢?

    CPU L1 Cache 随机访问延时是 1 纳秒,内存则是 100 纳秒,所以 CPU L1 Cache 比内存快 100 倍左右

    SSD 随机访问延时是 150 微秒,所以 CPU L1 Cache 比 SSD 快 150000 倍左右

    最慢的机械硬盘随机访问延时已经高达 10 毫秒,我们来看看机械硬盘到底有多「龟速」:

    • SSD 比机械硬盘快 70 倍左右;

    • 内存比机械硬盘快 100000 倍左右,即 10W 倍;

    • CPU L1 Cache 比机械硬盘快 10000000 倍左右,即 1000W倍;

    我们把上述的时间比例差异放大后,就能非常直观感受到它们的性能差异了。如果 CPU 访问 L1 Cache 的缓存时间是 1 秒,那访问内存则需要大约 2 分钟,随机访问 SSD 里的数据则需要 1.7 天,访问机械硬盘那更久,长达近 4 个月。

    可以发现,不同的存储器之间性能差距很大,构造存储器分级很有意义,分级的目的是要构造缓存体系。

    福 利

    CSDN给大家发压岁钱啦!

    2月4日到2月11日每天上午11点

    价值198元的芒果TV年卡,价值99元的CSDN月卡现金红包,CSDN电子书月卡等奖品大放送!百分百中奖

    电脑端点击链接参与:

    https://t.csdnimg.cn/gAkN

    更多阅读推荐

    • 云原生人物志|Pulsar翟佳:社区的信任最重要

    • 云原生时代的流水线框架 Argo

    • 阿里的 RocketMQ 如何让双十一峰值之下0故障

    • 从 Serverfull 到 Serverless,发生了什

    • 私有云OS赛道,反而越开放越好?

    • 乱中有变,云原生从“大爆发”说起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生存储系列文章:云原生应用的基石

作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:存储服务支撑了应用的状态、数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻。在存储…

java 读取jar包中的文件

文章目录项目resource中文件路径和jar包中文件路径的区别正常读取jar包读取完整代码:项目resource中文件路径和jar包中文件路径的区别 打成jar包后,是一个整体的文件。 正常读取 InputStream inputStream new FileInputStream("src/main/resource…

算法真的太重要了!CSDN用动画帮你快速 get 核心原理

无论你是 Java,Python,还是 PHP,面试总逃脱不了一个问题:算法!算法是面试常问的问题,这也是程序员准备面试之前,常刷数据结构与算法的原因之一!算法成为程序员头疼的难题&#xff0c…

开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。

一、背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况下还会影响你的职业生涯。O…

拥抱创新,持续探索——对话阿里云MVP胡逢法

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 胡逢法作为阿里云 MVP,是一名经验丰富的人工智能领域研究专家,谦虚诚恳、精力充沛。…

远程工作和数字鸿沟

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 在全球持续蔓延的冠状病毒疫情的影响下,一场革命正在发生:弹性工作革命。很多企业开始意识到这样一个…

Serverless的初心、现状和未来

作者 | 不瞋 阿里云高级技术专家 导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的未来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的看法,回顾其发展历程,并对 Serverle…

查询每个用户最后一次登录信息

文章目录表结构和数据:方法一:如果只需要用户id和最后一次登陆时间方法二:如果需要携带其他日志信息方法三:oracle数据库 使用row_num() over表结构和数据: CREATE TABLE temp_test (id bigint(20) DEFAULT NULL,user…

存储极简史一幅图你就都懂了

原文链接 本文为云栖社区原创内容,未经允许不得转载。

唐云峰:想当科学家的怪极客

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 跟唐云峰对话的时间比我们预想的都要长很久,却丝毫不觉得疲倦。聊到被奉为电脑神童的经历、中学…

maven导入异常 PKIX path building failed

异常信息: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 解决方案:修改配置 -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.…

网飞是如何利用大数据做出热门电视剧的?

责编 | 寇雪芹来源 | CDA数据分析师头图 | 下载于视觉中国收集更多的数据会就会有更好的决策吗?像亚马逊、谷歌和网飞这样有竞争力、精通数据的公司已经认识到,单靠数据分析并不总能产生最佳结果。在文中,数据科学家塞巴斯蒂安韦尼克分析了当…

软件研发的这些误区,你中了吗?

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 结束了一天的工作,拖着疲惫的身躯,坐在马桶上,回顾一天的工作,发现有那么多的…

linux 部署后,前后端正常访问 点击菜单报:Cannot find module ‘@/views/system/user/index‘

现象: 解决方案: https://pan.baidu.com/s/1E9J52g6uW_VFWY34fHL6zA 提取码: vneh 微服务工具包/基础工具包/node-v14.16.1-x64.msi export const loadView (view) > {return (resolve) > require([/views/${view}], resolve) }参考链接&…

迪士尼自研算法突破百万高清像素用AI换脸来拍电影

AI换脸又一次刷爆了朋友圈 最近云毕业正当时,各家科技公司顺势推出了自己的AI换脸技术,结果又被同学们玩坏了! 换脸这件事绝不能少了业界大佬们! 不得不说,好看是不分性别的,彦宏兄气质满分! …

如何写出让 CPU 跑得更快的代码?

来源 | 小林coding责编 | 寇雪芹头图 | 下载于视觉中国前言代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能。CPU 内部嵌入…

多个域名公用80端口是实现反向代理和负载均衡

文章目录一、快速入门1. 背景2. 案例13. 案例2二、实战2.1. 配置备份2.2. 配置清空2.3. 配置初始化2.4. 配置统一管理2.5. 开发配置2.6. UAT配置2.7. 启动nginx一、快速入门 1. 背景 使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。…

投入20亿,赋能1万家,阿里云正式启动云原生合作伙伴计划

导读:在 2020 阿里云合作伙伴峰会上,阿里巴巴合伙人、阿里云智能基础产品事业部高级研究员蒋江伟发表了《深耕“被集成”,共建新生态》主题演讲,他在演讲中提到,阿里云将继续深耕“被集成”战略,做强生态&a…

全球首发|阿里云正式推出云数据库Redis6.0版本

Redis 6.0更多精彩详情 2020年6月23日,阿里云正式推出云数据库Redis 6.0版本。Redis 6.0版本为Redis开源社区于5月2日发布的全新版本,包含多项重大功能更新和大幅度的性能提升。 依托于阿里云强大的云服务与管控能力,以及团队的快速跟进&…

新春聊一下:技术架构与架构师角色的诸多思考

来源 | 阿里巴巴中间件责编 | 贾凯强头图 | 下载于视觉中国我叫道延, 2014 年加入阿里,在阿里通信工作了近两年。2016 年年底加入业务平台团队,当时 Leader 找我的第一件事就是要解决大促的问题,第二件事就是解决安全生产的问题。…