存储器层次结构

news2024/11/25 4:57:53

实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。
分析对应问题时,你肯定听过“主要瓶颈不在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中不仅总结了这些数字,还有大量的硬件故障、高可用和系统架构的血泪经验。

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

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

相关文章

人肝HepG2细胞膜

人肝HepG2细胞膜 主要组成:细胞膜组分(真核或原代细胞)、高分子内核材料、功能因子 制备方法:薄膜包覆法 粒径控制:100-150 nm 平均电位:~ -20 mV 包载因子:影像分子、免疫分子等功能因子 包装…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给单…

论文投稿指南——中文核心期刊推荐(机械、仪表工业3)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

pikachu靶场-3 跨站请求伪造(CSRF)

跨站请求伪造(CSRF) Cross-site request forgery简称为”CSRF“ 在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接) 然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成…

Java基于springboot+vue+elementUI某高校学院资产管理系统

项目介绍 独立学院资产管理系统主要设计的用户范围是:注册用户、管理员。每一个角色在系统中即可看作是不同的子系统,其所拥有的功能权限是不一致的。系统架构包括后台数据库的建立和维护以及应用程序。系统的主要功能模块主要有登录功能模块&#xff0c…

01_01_Go语言基础知识

01_01_Go语言基础知识定义变量内建变量类型强制类型转换常量与枚举要点总结条件语句if 举例switch 举例for 循环函数指针数组定义变量 使用 var 关键字 使用 var 关键字, 可以放在函数内, 或直接放在包内均可 // 定义 a, b, c 三个变量 类型都是 bool 变量可以不赋初始值 v…

别搞错了,nonTransitiveRClass 不能解决资源冲突!

前言 nonTransitiveRClass:非传递性 R 类的属性,在 gradle.properties 文件里使用。 不少开发者可能听过它,但了解可能仅限于是对 R 文件做了优化,甚至以为它可以解决资源冲突!但它到底做了什么优化、能否解决资源冲突…

【序列召回推荐】(task2)序列召回GRU4Rec模型

学习总结: 一般的RNN模型我们的输入和输出是什么,我们对RNN输入一个序列 X[x1,x2,...,xn]X [x^1,x^2,...,x^n]X[x1,x2,...,xn] ,注意我们序列中的每一个节点都是一个向量,那么我们的RNN会给我们的输出也是一个序列 Y[y1,y2,...,…

【python黑帽子】——(一)搭建扫描器入门介绍

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

Python安装教程

Python安装 1.浏览器打开网址:www.python.org 2.根据电脑系统选择下载 3.确定电脑系统属性,此处我们以win10的64位操作系统为例 4.安装python 3.6.3 双击下载的安装包 python-3.6.3.exe 注意要勾选:Add Python 3.6 to PATH 点击 Customize installat…

4 种经典方法IB 数学证明题分享给大家

学习数学时感觉最有意思的题目就是证明题了,证明题能练习一种能力: 你知道一件事情时对的,怎么说清楚它是对的;你认为一件事情时错的,怎么说清楚它是错的。 这和生活中的辩论有点像,要有理有据地说清楚原因…

[附源码]Node.js计算机毕业设计蛋糕店会员系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Servlet的生命周期

servlet 1.servlet是什么 2.servlet生命周期 3. servlet 工作原理 4 .ServletContextListener 什么是Servlet? Servlet是JavaWeb的 三大组件之一 ,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理&…

基于RSS和TOA两种方法的无线传感器网络定位测量算法matlab仿真

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传感器。WSN中的传感器通过无线方式通信,因此网络设置灵活,设备位…

去哪儿旅行微服务架构实践,全文带图加详细解析,带你多方面了解

文章目录一、背景介绍二、微服务架构模式的最佳实践三、微服务开发效率提升实践四、服务治理实践五、ServiceMesh 尝试六、总结今天我带来的主题是去哪儿旅行 微服务架构实践。我将从以下几个方面进行介绍:背景介绍微服务架构模式的最佳实践微服务开发效率的提升实践…

前台用户注册_发送邮件配置

在用户注册成功后,要向用户的邮箱发送一封激活邮件,发送邮件需要在系统中配置发件人,同学们使用自己的邮箱作为发件人即可。 配置邮箱第三方登录。 我们在系统中使用邮箱发送邮件属于第三方登录,而市面上的邮箱默认是不能第三方…

自监督学习系列(四):基于蒸馏的图片掩码学习

前文 好久不见!自监督系列文章继续更新啦!在前几期的文章我们介绍了基于辅助任务,对比学习,和图片掩码学习的自监督学习范式 (对比学习,图片掩码学习其实也可以归属于基于辅助任务的自监督学习,由于这两类…

百度安全怎么查询,怎么彻底解决百度安全弹出的风险提示

当我们在百度搜索自己的网站时,搜索结果中出现各种风险提示,比如安全联盟提醒您:该网站可能存在安全风险,请谨慎访问! 别慌!今天我们就来解决百度安全弹出的风险提示的问题。 第一步:查询网站…

Python 自动化测试框架unittest与pytest的区别

这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。 Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较…

传奇GOM引擎微端架设教程

传奇GOM引擎微端架设教程 GOM引擎架设微端需要准备好微端程序,用网站下载在服务器的版本 (注:本文章图有打码处因平台GZ原因需打码望读者理解) Mirserver文件一般都是自带微端程序的,偶尔也有版本没有微端程序那我们…