Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CPU Cache学习

CPU Cache学习

作者头像
用户4700054
发布于 2022-08-11 09:53:43
发布于 2022-08-11 09:53:43
6940
举报

CPU Cache学习

为什么需要Cache?
  • CPU要从内存中直接读取数据都要花费几百个时间周期,在这几百个时间周期内,处理器除了等待什么都做不了,为了解决这个问题才提出Cache这个概念
Cache种类
  • Cache是有三级组成,L1 Cache、L2 Cache、L3 Cache。L1 Cache最快,但是容量最小,一般都在几十KB。L2 Cache性能其次,容量也是其次,一般都在上百KB几MM左右;L3 Cache最慢,容量最大,一般都在几M几十M左右
  • Cache 系统架构图
  • L1 Cache,一般分为数据和指令Cache.数据 Cache用于存储数据,而指令Cache用于存储指令。L1 Cache一般处理器值需要3~5个指令周期就能访问到数据。在多核处理器内部,每个处理器核心都拥有属于自己的L1 Cache
  • L2 Cache,和L1 Cache一样分为指令和数据,但是L2 Cache的数据和指令都无差别的放在一起,速度相比L1 Cache要慢一些,处理器大约需要十几个处理器周期才能访问到数据,容量也相对L1 Cache大一些,一般是几百KB到几MB左右,在多核处理器内部,每个处理器核心都有属于自己的L2 Cache
  • L3 Cache,速度更慢,处理器需要需要几十个CPU周期才能访问到数据,容量更大,一般都在几MB到几十MB左右。在多核处理器中,L3 Cache是所有处理器核心共享所有。
  • 各级Cache的访问时间,在英特尔处理器上一直保持比较稳定,L1 Cache访问是4个指令周期,L2 Cache是12个指令周期,L3 Cache则是26~31个指令周期。
TLB Cache
  • 现代计算机使用的是虚拟内存地址和分段分页的技术来保护脆弱的软件系统,软件使用虚拟地址访问内存,而处理器负责将虚拟内存地址到物理地址的映射工作,为了完成映射工作,处理器采用多级页表来进行多次查找最终找到物理内存,当处理器发现页面中找不到真正对应的物理地址时,就会发出一个异常,挂起寻址错误的进程,但是其他进程依然可以正常工作。
  • 页表是存储在内存中,处理器虽然可以利用L3 Cache系统来缓存页表内容,但是基于如下两点原因不能这样么做。第一,处理器每当进行寻址操作都要进行一次映射工作,这使得处理器访问页表的频率非常高,有可能一秒钟需要访问几万次,因此即使Cache命中率都能达到99以上,不命中率达到1%,不命中的访问频率每秒也有几百次,这会导致处理器在单位时间内访问内存的次数多,降低了系统的性能
  • TLB Cache是专门用来存储内存中的页表项。TLB一般采用相连存储器或者按内容访问存储器。相连存储器使用虚拟地址进行搜索,直接返回对应物理地址,相对内存中的多级页表需要多次访问才得到最终的物理地址,TLB查找无疑大大减少了处理器的开销,这也是上面提到的第二个原因。
  • 如果需要的地址在TLB Cache中,相连存储器迅速返回结果,然后处理器用该物理地址访问内存,这样的查找操作叫TLB Cache 命中;如果需要的地址不在TLB Cache中,那叫命中,处理器就需要到内存中访问多级页表,才能得到最终的物理地址
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 存储内核技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你也许还不知道的 CPU Cache
Gallery of Processor Cache Effects 用 7 个源码示例生动的介绍 cache 原理,深入浅出!但是可能因操作系统的差异、编译器是否优化,以及近些年 cache 性能的提升,第 3 个样例在 Mac 的效果与原文相差较大。另外 Berkeley 公开课 CS162 图文并茂,非常推荐。本文充当搬运工的角色,集二者之精华科普 CPU cache 知识。
架构师修行之路
2020/06/04
1.2K0
如何利用CPU Cache写出高性能代码,看这些图就够了!
我们平时编写的代码最后都会交给CPU来执行,如何能巧妙利用CPU写出性能比较高的代码呢?看完这篇文章您可能会有所收获。
GorgonMeducer 傻孩子
2020/11/17
2.8K0
如何利用CPU Cache写出高性能代码,看这些图就够了!
打开操作系统的大门,这篇就够了
图灵机主要由数据存储单元,控制单元,运算单元和一个可读写外部数据的读写头几部分构成。
会玩code
2022/04/24
7520
打开操作系统的大门,这篇就够了
CPU如何与内存交互?
点个关注👆跟腾讯工程师学技术 导语 | 本文主要整理了计算机中的内存结构,以及CPU是如何读写内存中的数据的,如何维护CPU缓存中的数据一致性。什么是虚拟内存,以及它存在的必要性。如有不当之处请多多指教。 概述 目前在计算机中,主要有两大存储器SRAM和DRAM。主存储器是由DRAM 实现的,也就是我们常说的内存,在CPU里通常会有L1、L2、L3这样三层高速缓存是用SRAM实现的。 SRAM被称为“静态”存储器,是因为只要处在通电状态,里面的数据就可以保持存在。而一旦断电,里面的数据就会丢失了。 目
腾讯云开发者
2022/11/02
2.1K0
CPU如何与内存交互?
甄建勇:五分钟搞定Cache(下)
甄建勇,高级架构师(某国际大厂),十年以上半导体从业经验。主要研究领域:CPU/GPU/NPU架构与微架构设计。感兴趣领域:经济学、心理学、哲学。
Linux阅码场
2021/11/23
1.1K0
MIPS架构深入理解4-Cache机制
现代CPU中,为了提高CPU的执行效率,高速缓存必不可少。关于Cache工作原理可以参考我之前的文章
Tupelo
2022/08/15
2.7K1
MIPS架构深入理解4-Cache机制
深入剖析虚拟内存工作原理
作者:allanpan,腾讯 IEG 后台开发工程师 导言 虚拟内存是当今计算机系统中最重要的抽象概念之一,它的提出是为了更加有效地管理内存并且降低内存出错的概率。虚拟内存影响着计算机的方方面面,包括硬件设计、文件系统、共享对象和进程/线程调度等等,每一个致力于编写高效且出错概率低的程序的程序员都应该深入学习虚拟内存。 本文全面而深入地剖析了虚拟内存的工作原理,帮助读者快速而深刻地理解这个重要的概念。 计算机存储器 存储器是计算机的核心部件之一,在完全理想的状态下,存储器应该要同时具备以下三种特性:
腾讯技术工程官方号
2021/05/08
3.4K0
深度解析:cache的基本概念原理扫盲
本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,secureboot,资深安全架构专家,11年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。
鸽芷咕
2024/05/26
1.1K0
深度解析:cache的基本概念原理扫盲
存储器体系结构学习笔记
存储器的性能直接影响到CPU的性能评价,定义存储器停顿周期数为CPU等待存储器访问而停顿的时钟周期数,由此有CPU执行时间有:
月见樽
2020/01/15
2.1K0
存储器体系结构学习笔记
(笔记)CPU & Memory, Part 2: CPU caches
原文:What every programmer should know about memory, Part 2: CPU caches
颇忒脱
2019/04/19
1.9K0
(笔记)CPU & Memory, Part 2: CPU caches
内存系列学习(一):万字长文带你搞定MMU&TLB&TWU
最近一直在学习内存管理,也知道MMU是管理内存的映射的逻辑IP,还知道里面有个TLB。
刘盼
2023/08/22
2.6K0
内存系列学习(一):万字长文带你搞定MMU&TLB&TWU
cpu架构知识
存取速度比较:L1缓分成两种,一种是指令缓存,一种是数据缓存。L2缓存和L3缓存不分指令和数据。L1和L2缓存在第一个CPU核中,L3则是所有CPU核心共享的内存。L1、L2、L3的越离CPU近就越小,速度也越快,越离CPU远,速度也越慢。再往后面就是内存,内存的后面就是硬盘。我们来看一些他们的速度:
没有故事的陈师傅
2021/07/21
7840
【底层原理】深入理解Cache (上)
存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。
233333
2018/10/15
1K0
TLB缓存是个神马鬼,如何查看TLB miss?
在用户的视角里,每个进程都有自己独立的地址空间,A进程的4GB和B进程4GB是完全独立不相关的,他们看到的都是操作系统虚拟出来的地址空间。但是呢,虚拟地址最终还是要落在实际内存的物理地址上进行操作的。操作系统就会通过页表的机制来实现进程的虚拟地址到物理地址的翻译工作。其中每一页的大小都是固定的。这一段我不想介绍的太过于详细,对这个概念不熟悉的同学回去翻一下操作系统的教材。
开发内功修炼
2022/03/24
1.1K0
TLB缓存是个神马鬼,如何查看TLB miss?
天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍
大家如果想自己组装电脑的话,肯定需要购买一个 CPU,但是存储器方面的设备,分类比较多,那我们肯定不能只买一种存储器,比如你除了要买内存,还要买硬盘,而针对硬盘我们还可以选择是固态硬盘还是机械硬盘。
小林coding
2020/10/30
8990
天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍
多图详解CPU Cache Memory
今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么?
Linux阅码场
2019/08/29
3.8K0
多图详解CPU Cache Memory
虚拟内存 & I/O & 零拷贝
作者:mosun,腾讯 PCG 后台开发工程师 一、虚拟内存 1.1 虚拟内存引入 我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下: CPU 运行速度很快,在完全理想的状态下,存储器应该要同时具备以下三种特性: 速度足够快:这样 CPU 的效率才不会受限于存储器; 容量足够大:容量能够存储计算机所需的全部数据; 价格足够便宜:价格低廉,所有类型的计算机都能配备; 然而,出于成本考虑,当前计算机体系中,存储都是采用分层设计的,常见层次如下: 上图分别为寄存器、高速缓存、主存和磁盘,
腾讯技术工程官方号
2022/09/28
2.1K0
虚拟内存 & I/O & 零拷贝
《拉钩课程 - 重学操作系统 - 计算机组成原理》
1、芯片是怎么工作的呢?电能供给给芯片,芯片中的一种电子元件晶振(也就是石英晶体)通电后产生震荡,震荡会产生频率稳定的脉冲信号。通常这是一种高频的脉冲信号,每秒可达百万次。然后,我们通过谐振效应发放这个信号,形成方波。再通过电子元件调整这种脉冲的频率,把脉冲信号转换为我们需要的频率,这就形成了驱动芯片工作的时钟信号。这种信号的频率,我们也称作芯片的时钟频率。最后,时钟信号驱动着芯片工作,就像人体的脉搏一样,每一次脉冲到来,都让芯片的状态发生一次变化,用这种方法,最终存储器中的指令被一行行执行。
JMCui
2022/03/10
7210
《拉钩课程 - 重学操作系统 - 计算机组成原理》
CPU高速缓存与内存屏障
最后,关于写作内存相关的原因是为了更好地理解同步关键字synchronized的内存语义(下一篇哈)
小坤探游架构笔记
2020/03/10
1.8K0
CPU高速缓存与内存屏障
什么是TLB?
根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内 存地址,而CPU寻址时会优先在TLB中进行寻址。处理器的性能就和寻址的命中率有很大的关系。
233333
2019/05/25
4.6K0
相关推荐
你也许还不知道的 CPU Cache
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档