Linux内存从0到1学习笔记(3,高速缓存)
写在前面
我们先来看一张图表,如下:
深入理解计算机系统一书将寄存器划分为L0级缓存,接着依次是L1,L2,L3,ARMv8最多可以支持7级的高速缓存,即L1级~L7级。接着是内存,本地磁盘。越往上的缓存存储空间越小,速度越快,成本也更高;越往下的存储空间越大,速度更慢,成本也更低。从上至下,每一层都可以看做是更下一层的缓存,即:L0寄存器是L1一级缓存的缓存,L1是L2的缓存,依次类推;每一层的数据都是来至它的下一层,所以每一层的数据是下一层的数据的子集。
一、高速缓存存在的意义
由于程序访问的局部性(包括时间局部性,某个内存单元在短时间内可能被再次访问;空间局部性,某个内存单元被访问后,相邻的内存单元在短时间内有可能被访问)。由于CPU和主存在性能上巨大的差异,我们在CPU和主存之间引入了高速缓存。在CPU访问数据时,如果缓存中存在该数据,则直接从缓存中读取,如果缓存中不存在,再从内存中读取数据。
二、高速缓存的原理
高速缓存Cache是非常小容量的存储器,它集
Linux内存从0到1学习笔记(3,高速缓存)相关推荐
- Linux内存从0到1学习笔记(4,TLB)
一.TLB简介 Kernel初始化的时候,会在初始化内存中创建页表:而处理器读取指令和数据的时候需要首先通过MMU查表得到物理地址,然后在访问物理地址读取指令或数据.MMU查表过程汇中需要4次访问内存 ...
- Linux内存从0到1学习笔记(11.2 内存优化方案之内存压缩zram)
写在前面 zram是Linux内核提供的一种虚拟内存压缩功能,通过在将一部分内存模拟成块设备,并将压缩后的内存写到这部分模拟的块设备中,直到必须使用硬盘上的交换空间,zram 本质是就是一个块设备. ...
- Linux内存从0到1学习笔记(6.6,物理内存初始化之预留内存)
写在前面 前面的章节中有提到过,memblock分配器会将内存划分为动态管理的内存(保存在memblock的memory type的数组)和静态预留的内存(保存在memblock的reserved t ...
- Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)
写在前面 CMA (contiguous memory allocator)连续内存分配器,被开发用于分配大的.物理连续的内存块,其底层还是依赖内核伙伴系统这样的内存管理机制.通过这套机制,在设备驱动 ...
- Linux内存从0到1学习笔记(9.1,内存优化调试之kswapd0触发原理)
写在前面 Linux内核中有一个非常重要的内核线程kswapd,它负责在内存不足时回收页面.kswapd内核线程初始化时会为系统中每个内存结点创建一个名为"kswapd%"内核线程 ...
- Linux内存从0到1学习笔记(8.5,CMA内存分配)
CMA是通过cma_alloc分配的.cma_alloc() --> alloc_contig_range(..., MIGRATE_CMA,...),向刚才释放给buddy system的MI ...
- Linux与C++11多线程编程(学习笔记)
多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...
- 【C#8.0 and .NET Core 3.0 高级编程学习笔记】
@C#8.0 and .NET Core 3.0 高级编程学习笔记 前言 为了能精细地完成对C#语言的学习,我决定选择一本书,精读它,理解它,记录它.我想选择什么书并不是最重要的,最重要的是持之以恒的 ...
- 《嵌入式Linux内存使用与性能优化》笔记
<嵌入式Linux内存使用与性能优化>笔记 这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相 ...
- 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单
2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...
最新文章
- 自动驾驶解决方案架构
- FSWD_BootStrap
- 究竟应该怎么调用WCF服务?
- c监控进程发现未启动就启动进程_非常有用的16个Linux 服务器监控命令
- Redis java API ——Jedis的使用
- Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
- javaone_JavaOne 2012:JavaOne技术主题演讲
- Spring框架中的控制反转和依赖注入
- (8)Linux内核中的hash与bucket
- CXF 生成Web Service Client(将WSDl 转化成 Java代码)
- 从对象创建和引用小议解耦
- [转]Microsoft SQL Server Management Studio Express 使用SQL验证登录sa
- Small game written by Python 2021/1/7
- Python数据分析与机器学习42-Python库分析科比生涯数据
- 使用OpenCV将一个三角形图形扭曲到另一个三角形
- [转载]千古真人张三丰
- 读《霍乱时期的爱情》第一章有感
- java代理模式教你中间商赚差价
- new Date在safair浏览器中不兼容
- 积分商城开发及小程序积分商城功能介绍
热门文章
- 企业支付宝 异名网银u盾快速充值功能开通方式(支付宝企业商户资金充值方法)
- android win8 磁贴效果第三方库,Win8巧用动态磁贴让浏览更轻松
- 语音合成 g2p 字典设计
- 什么是嵌入式操作系统?
- php图片颤抖,PHP-使用jquery 怎么做出图片的震荡效果
- C/C++中各类数值型数据间的混合运算法则
- SpringBoot整合WebSocket实现聊天室系统
- 在windows如何操控一些屌炸天的linux命令[利刃篇]
- android逻辑分辨率,移动端web页面知识小结之手机分辨率与手机像素
- 求大神帮助,感激不尽