首页 > 系统相关 >Linux之CPU缓存

Linux之CPU缓存

时间:2024-11-25 17:16:32浏览次数:5  
标签:缓存 L1 主存 L2 处理器 Linux CPU

CPU 缓存

系统中最快的存储是处理器中的寄存器。但寄存器由于造价比较昂贵,提供的空间也非常有限。因此系统中必须使用存储量大但速度慢的主存(内存)。

高速缓存的速度都比主存快。主存的访问时间是8纳秒以上,而缓存的访问时间只有几个CPU时钟周期。在标准的 X86 平台下,一般有L1 L2 L3 三级缓存。
L1 是速度最快的但容量极小,一般位于 CPU 里面。L2比L1速度慢,但容量稍大一些,L3 是容量最大的般会有几 M,一般位于主板上,速度最慢。但依然比主存要快。

通过使用 lscpu 可以查看到 CPU 的缓存情况。

缓存架构

缓存被组织成缓存线(cacheline)。可以缓存特定的位置。一般都会有指令缓存和数据缓存。
在多核处理器系统中,每个CPU 都有独立的缓存并且有独立的缓存控制器,当处理器引用缓存时,缓存控制器先检查请求的地址是否存在于缓存中。

  • Cache-hit:缓存命中。

  • Cache-miss:请求的内存不在cache中,需要从主存中读取。

  • Cache line fill:处理器将数据存储在高速缓存的过程。

多处理器系统中,需要保持缓存一致性。如果一个处理器更新了缓存。它必须让系统中其他处理器知道缓存的更新,这种被称为 cache-snoop。

缓存写回策略

Wirte-through:立刻同步到主存。
Wirte-back:在重新分配缓存之前,缓存不会被立刻写入主存中。效率更高

缓存关联

  • 直接映射:最便宜的缓存类型,缓存的每一行只能缓存主存中的特定位置。

  • 全关联映射:最昂贵的缓存类型,可以缓存主存中的任意位置,这需要更多电路来实现。

  • 组关联映射:是前两者的折中。也被称为N路关联。其中N是2的幂。

使用 Valgrind 分析 CPU 缓存
Valgrind 提供了一组用于内存调试和分析的工具,其中提供了 cachegrind 工具,它是进行缓存模拟。此工具记录一下内容:

  • L1:指令缓存的读和丢失(misses)

  • L2:数据缓存的读加载,读丢失,写加载和写丢失

  • L2:缓存的读加载和读丢失,以及写加载和写丢失

使用 valgrind 命令时,追加--tool=cachegrind 选项。

标签:缓存,L1,主存,L2,处理器,Linux,CPU
From: https://www.cnblogs.com/OpenSourceSite/p/18567926

相关文章

  • Linux:fdisk指令
    学习自:fdisk命令详解-知乎Linuxfdisk命令详解:给硬盘分区_fdisk-l-CSDN博客初始化Linux数据盘(fdisk)|华为云_fdisk华为云初始化云盘-CSDN博客1、说明新添加硬盘之后,需要用fdisk指令来完成分区。不要在当前硬盘上使用fdisk,这会删除整个系统。2、用法输入fdisk分区,再输......
  • archlinux 触摸板手势配置
    目录libinput-gestures安装libinput-gestures加入input组创建配置文件可用手势启动libinput-gestures停止libinput-gestures自启动libinput-gesturesTouchpadSynapticssynaptics.4在/etc/X11/xorg.conf.d/目录下会有默认的触摸板配置文件,如果用的libinput,配置文......
  • No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-
    一、报错信息二、解决方法1、打开SDKManager,卸载本地NDK。2、然后点击Apply——>OK,重新启动Android工程,成功运行。思想成体系,培养成意识,自律成习惯。我强烈推荐4本可以改变命运的经典著作:《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅......
  • Linux下二维码识别库Zbar的安装与使用
    1.安装Zbarsudoapt-getinstalllibzbar-dev2.识别流程读取图像并转换为Zbar内建图像类型创建Zbar扫描器设置扫描参数扫描图像并获取结果#include<zbar.h>//仅能包含该头文件,其他头文件宏定义中写了不可用于使用#include<opencv2/opencv.hpp>usingnamespace......
  • 【北京迅为】itop-3562开发板在Linux系统中使用NPU
     3.1在Linux系统中使用NPU下载rknpu2并拷贝到虚拟机Ubuntu,如下图所示,RKNPU2提供了访问RK3562芯片NPU的高级接口。   下载地址为“iTOP-RK3562开发板\02_【iTOP-RK3562开发板】开发资料\12_NPU使用配套资料\01_rknpu2工具”对于RK3562来说,Linux平......
  • Linux常用命令之groupdel命令详解
    groupdel命令详解groupdel是一个用于删除用户组的命令行工具,常见于类Unix操作系统(如Linux和macOS)。通过groupdel命令,可以从系统中移除一个用户组。删除用户组时,需要注意一些重要的事项,以确保不会影响系统的正常运行。基本语法groupdel命令的基本语法如下:group......
  • Linux常用命令之chmod命令详解
    chmod命令详解chmod(changemode)是Unix和Linux操作系统中用于改变文件或目录的访问权限的命令。通过chmod,用户可以设置文件或目录的所有者、所属组以及其他用户(即非所有者且不属于文件所属组的用户)的读取、写入和执行权限。基本语法chmod命令的基本语法如下:chmod......
  • 【Linux定时自动备份脚本】
    流程清单创建备份用的用户back_up,只给需要被备份文件夹的读取权限,和备份存放目录的写权限创建备份脚本,创建清除备份的脚本使用back_up用户,赋予脚本权限,修改crontab定时任务创建备份用户分配权限创建用户sudoadduserback_uppasswdback_up分配只读文件和可读写文......
  • 记录一个Linux代码移植到Windows平台下的Visual Studio 2022的代码编码格式的问题
    一、前言工作上与公司的前辈对接,他给了我一份在linux下面编写的代码压缩包,按照道理来说使用条件宏编译不同的windows和linux的API即可实现代码的通用。但是我在VisualStudio2022下面编译的时候缺发生了非常奇怪的事情。随便编译就出现很多报错,但实际上这些报错并不是真正的报错......
  • CPU使用率和负载区别及分析
    当我们使用top命令查看系统的资源使用情况时会看到loadaverage,如下图所示。它表示系统在1、5、15分钟的平均工作负载。那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢?loadaverage:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处......