存储器层次结构

实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。 分析对应问题时,你肯定听过“主要瓶颈不在CPU,而在I/O”,存储很重要。

1 存储器的层次结构

存储器系统是通过各种不同方法和设备,一层层组合起来的系统。

常把CPU比做计算机的“大脑”,思考的东西,好比CPU的寄存器(Register)。寄存器与其说是存储器,更像是CPU本身一部分,只能存放极有限信息,但速度很快,和CPU同步。

大脑中的记忆好比CPU Cache(CPU高速缓存,简称为“缓存”)。CPU Cache用的一种SRAM(Static Random-Access Memory,静态随机存取存储器)芯片。

2 SRAM

“静态”,因为只要处在通电状态,里面数据就能保持存在。一旦断电,里面数据就丢失。 SRAM里,一个比特数据,需6~8个晶体管。所以SRAM存储密度不高。同样物理空间下,能存储数据有限。但SRAM电路简单,所以访问速度很快。

6个晶体管组成SRAM的一个比特:

CPU里通常有L1、L2、L3三层高速缓存。

每个CPU核心都有一块属于自己的L1高速缓存,通常分成:

  • 指令缓存 存放CPU使用的指令
  • 数据缓存 存放CPU使用的数据

这里的指令缓存和数据缓存,就来自哈佛架构。

  • L1 Cache往往嵌在CPU核心内部 理解为我们的短期记忆
  • L2 Cache同样是每个CPU核心都有,往往不在CPU核心内部,访问速度比L1稍慢
  • L3 Cache通常是多个CPU核心共用,更大些,访问速度自然更慢些 L2/L3 Cache理解成长期记忆

把内存当成我们拥有的书架。当我们记忆中没有资料时,可从书架拿书翻阅。这过程相当于,数据从内存中加载到CPU的寄存器和Cache中,然后通过“大脑”(CPU),进行处理和运算。

3 DRAM

内存用的DRAM(Dynamic Random Access Memory,动态随机存取存储器)芯片,比SRAM密度更高,有更大容量,比SRAM芯片便宜。

“动态”,因为需靠不断“刷新”,才能保持数据被存储。DRAM的一个比特,只需一个晶体管、一个电容就能存储。所以,DRAM在同样物理空间下,能存储数据更多,即存储“密度”更大。但数据存在电容,电容会不断漏电,所以需定时刷新充电,才能保持数据不丢失。DRAM的数据访问电路和刷新电路都比SRAM更复杂,访问延时更长。

4 存储器的层级结构

整个存储器的层次结构都类似SRAM和DRAM在性能、价格差异:

  • SRAM更贵,速度更快 像大脑中的记忆
  • DRAM更便宜,容量更大 像属于我们自己的书桌

大脑(CPU)中的记忆(L1 Cache),不仅受成本限制,更受物理限制,好比L1 Cache不仅昂贵,其访问速度和它到CPU的物理距离有关。芯片越大,总有部分离CPU的距离会变远。电信号的传输速度又受物理限制,没法超过光速。所以想要快,并非靠多花钱就能解决。

书房(即内存)空间有限,无法放下所有书(即数据)。若想扩大空间,相当于要多买几平方房子,成本很高。于是,想要放下更多书,就要寻找廉价方案。即公共图书馆,对内存来说:

  • SSD(Solid-state drive或Solid-state disk,固态硬盘)
  • HDD(Hard Disk Drive,硬盘)

这些被称为硬盘的外部存储设备,即公共图书馆。于是,就可去家附近图书馆借书。图书馆有更多空间(存储空间)和更多书(数据)。

而HDD则是一种完全符合“磁盘”名字的传统硬件。“磁盘”硬件结构决定它的访问速度受限于物理结构,最慢。

存储器层次关系图

从Cache、内存,到SSD和HDD硬盘。容量越小的设备速度越快,而且,CPU并不是直接和每一种存储器设备打交道,而是每一种存储器设备,只和它相邻的存储设备打交道。比如,CPU Cache是从内存里加载而来的,或者需要写回内存,并不会直接写回数据到硬盘,也不会直接从硬盘加载数据到CPU Cache中,而是先加载到内存,再从内存加载到Cache中。

这样,各个存储器只和相邻的一层存储器打交道,并且随着一层层向下,存储器的容量逐层增大,访问速度逐层变慢,而单位存储成本也逐层下降,也就构成了我们日常所说的存储器层次结构。

5 权衡价格和性能?

存储器在不同层级之间的性能差异和价格差异,都至少在一个数量级以上。L1 Cache的访问延时是1纳秒(ns),而内存就已经是100纳秒了。在价格上,这两者也差出了400倍。 各种存储器成本的对比表格

实际在进行电脑硬件配置的时候,会去组合配置各种存储设备。 如,一款入门级的惠普战66的笔记本电脑。今天在京东上的价格是4999人民币 Intle i5-8265U的CPU(这是一块4核的CPU) 这块CPU每个核有32KB,一共128KB的L1指令Cache。 同样,每个核还有32KB,一共128KB的L1数据Cache,指令Cache和数据Cache都是采用8路组相连的放置策略。 每个核有256KB,一共1MB的L2 Cache。L2 Cache是用4路组相连的放置策略。 最后还有一块多个核心共用的12MB的L3 Cache,采用的是12路组相连的放置策略。 8GB的内存 一块128G的SSD硬盘 一块1T的HDD硬盘

一台实际的计算机里面,越是速度快的设备,容量就越小。这里一共十多兆的Cache,成本只是几十美元。而8GB的内存、128G的SSD以及1T的HDD,大概零售价格加在一起,也就和我们的高速缓存的价格差不多。

6 总结

CPU比喻成高速运转的大脑,和大脑同步的寄存器(Register),就存放着当下正在思考和处理的数据。 L1-L3的CPU Cache,好比存放在我们大脑中的短期到长期的记忆。需要小小花费一点时间,就能调取并进行处理。

书桌书架就好比计算机的内存,能放下更多的书也就是数据,但是找起来和看起来就要慢上不少。 而图书馆更像硬盘这个外存,能够放下更多的数据,找起来也更费时间。 从寄存器、CPU Cache,到内存、硬盘,这样一层层下来的存储器,速度越来越慢,空间越来越大,价格也越来越便宜。

这三个“越来越”的特性,使得我们在组装计算机的时候,要组合使用各种存储设备。越是快且贵的设备,实际在一台计算机里面的存储空间往往就越小。而越是慢且便宜的设备,在实际组装的计算机里面的存储空间就会越大。

参考

  • Peter Novig的Teach Yourself Programming in Ten Years,这些数字随着摩尔定律的发展在不断缩小,但是在数量级上仍然有着很强的参考价值。
  • Jeff Dean的Build Software Systems at Google and Lessons Learned。这份PPT中不仅总结了这些数字,还有大量的硬件故障、高可用和系统架构的血泪经验。

原文地址:https://cloud.tencent.com/developer/article/2192100

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340