学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

news/2025/1/16 1:35:36/

什么是CPU缓存利用率(命中率),我们首先要把内存搞清楚。

硬盘是什么,内存是什么,高速缓存是什么,寄存器又是什么?

我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的,而后面的内存、缓存、寄存器都是有电存储的。无电存储就是不需要通电,有电就是需要持续通电才能将我们的数据存储到对应的存储器上面。

但是我们的从硬盘里面读取数据时间就相对较慢,但是我们从内存里面读取就相对较快一些,其次是缓存,再是寄存器。

因为我们CPU的算率是十分快的,一秒是亿的单位级。如果我们直接让CPU从硬盘里面找要计算的东西,肯定就不行的。相当于我们长跑的时候停下来去场外取一杯水一样慢。所以我们要把水放“近”一点,所以我们的是CPU从内存里面取数据的吗?也不是,还是比较慢,所以我们还有一个叫高速缓存的东西。CPU就从高速缓存里面取我们要的数据。

如果CPU在缓存里面找到了需要的数据,就叫缓存命中,那么就直接拿取这个数据;如果我们的CPU在缓存里面没有找到所需要的数据,就叫缓存不命中,那么就要从内存里面加载相应的数据。具体加载会只调用一个,它是调用连续一段的内存,将其全部加载过去。而这个加载的长度。而加载与CPU的字长(地址线的数量)有关,现在CPU字长一般是32位或者64位。

例如有一个数组:

那么不会只加载1,而是可能将10111001所有的全部加载到高速缓存里面。然后我们的CPU会读取第一个数据,如果命中了就继续往下一个高速缓存位置进行读取。如果没有命中就重复上述操作。

缓存命中率(利用率)

那么CPU的缓存命中率/利用率就是这个。当加载一组的数据然后进行读取时,如果是数组,那么它的缓存命中率就会很高,因为它的内存是连续的,加载到高速缓存上面也是连续的,所以第一个数据命中后,后面的数据会继续命中。但是如果是链表的话,它的内存是分散的,那么就会出现第一个内存命中了,但是后续的内存不会命中的情况,那么我们就要进行多次的内存加载。那么时间就会大打折扣。

这里提一下寄存器,寄存器的内存很小,一般只能存储一个数据,用来对一个数据进行操作。例如我们返回函数值就是返回寄存器里面的值,我们进行数据的加减也是基于寄存器的。它和CPU之间的读取速率是最快的。


http://www.ppmy.cn/news/1457252.html

相关文章

欧式聚类提取-------PCL

欧式聚类 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> PclTool::euclideanClustering(const pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud) {std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> clustered_clouds;// 下采样pcl::Vox…

【系统架构师】-选择题(十五)

1、实时操作系统&#xff08;RTOS&#xff09;内核与应用程序之间的接口称为&#xff08;API&#xff09; PCI是外设部件互连标准 GUI&#xff0c;图形用户界面&#xff0c;是用户与操作系统之间的接口 2、基于网络的数据库&#xff08;Netware Database&#xff0c;NDB&#x…

PyRun_SimpleString(“import cv2“); 报错解决

#include <Python.h> #include <iostream>using namespace std;int main() {Py_Initialize();if (!Py_IsInitialized()){printf("初始化失败&#xff01;");return 0;}PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.ap…

【go项目01_学习记录03】

学习记录 1 路由http.ServeMux1.1 查看HandleFunc方法源码1.2 查看ListenAndServe方法源码1.3 重构&#xff1a;使用自定义的 ServeMux1.4 http.ServeMux 的局限性1.4.1 URI 路径参数1.4.2 请求方法过滤1.4.3 不支持路由命名 1.5 http.ServeMux 的优缺点 1 路由http.ServeMux …

无线通信基础

这里写目录标题 通信概述什么是无线通信无线通信电磁波 通信概述 什么是无线通信 无线通信 : 是指利用电磁波信号可以在自由空间中传播的特性进行信息交换的一种通信方式 无线通信的关键技术包括调制技术、解调技术、信道编码技术、信号处理技术、天线技术等。这些技术的不断…

编程新伙伴:如何利用ChatGPT提升代码编写效率

编程是一项既需要逻辑思维又需要创造性的技术活动。而现在&#xff0c;ChatGPT&#xff0c;一款由OpenAI研发的人工智能&#xff0c;可以帮助你更高效地编写代码。这款AI工具被设计成理解和产生人类的自然语言&#xff0c;现在也得以应用于编程领域。那么&#xff0c;ChatGPT如…

3GPP官网下载协议步骤

1.打开官网 https://www.3gpp.org/ 2.点击 3.在界面选择要找的series&#xff0c;跳转到查找界面 以V2X通信协议为例&#xff0c;论文中通常会看到许多应用&#xff1a; [7] “Study on evaluation methodology of new Vehicle-to-Everything (V2X) use cases for LTE and NR…

【西瓜书机器学习】第五章 神经网络

一起啃西瓜书(5)-神经网络《机器学习-周志华》 - 知乎 (zhihu.com)参考进行自我复习整理&#xff0c;侵删&#xff01; 1、神经元模型 神经网络定义&#xff1a;神经网络是由 具有适应性 的 简单单元 组成的广泛 并行互连 的网络。M-P神经元模型&#xff1a;输入、处理、输出 …