当前位置: 首页 > article >正文

CPU缓存学习

参考资料

内存架构

Memory Hierarchy · GitBook

程序的时间局部性和空间局部性

程序表现出两种主要的局部性形式:

  1. 时间局部性:程序倾向于随着时间的推移重复访问相同的数据。也就是说,如果程序最近使用过某个变量,那么它很可能很快会再次使用该变量。

  2. 空间局部性:程序倾向于访问位于其他先前访问过的数据附近的数据。这里的“附近”是指数据的内存地址。例如,如果程序访问地址N和 N+4处的数据,则很可能很快就会访问N+8

缓存架构和设计

需要访问一个数据的时候,会同时发送需要的数据的内存地址到cache和主存,如果能直接从cache拿到数据,就不等待从主存返回的数据。

如果没有命中,主存的数据也会给cache发一份,以便后续的空间时间局部性访问

Cache Architecture and Design · GitBook

问题

1

  • Capacity misses: Caches store a subset of main memory. Ideally, a cache will store exactly the subset of memory that a program is actively using. However, if a program is actively using more memory than fits in the cache, it can't possibly find all of the data it wants in the cache, leading to misses.

  • 容量未命中:缓存存储主内存的一个子集。理想情况下,缓存将准确存储程序正在使用的内存子集。但是,如果程序正在使用的内存多于缓存可容纳的内存,则它可能无法在缓存中找到所需的所有数据,从而导致未命中。

那么其实有一个可能的问题,就是假如有一个数组,索引分别是0到10000,那我的cache可能只能存到0到5000,发现访存到4000了,主存就把4000到9000的数据做替换到cache


http://www.kler.cn/a/505930.html

相关文章:

  • 计算机网络 (45)动态主机配置协议DHCP
  • 计算机网络的五层协议
  • 【dockerros2】ROS2节点通信:docker容器之间/docker容器与宿主机之间
  • Windows 环境下安装和启动 Redis 服务
  • 【EI 会议征稿】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)
  • 【Rust自学】12.6. 使用TDD(测试驱动开发)开发库功能
  • 关于Profinet 从站转 EtherNet/IP 从站网关详细说明
  • 3. Flink 窗口
  • Mysql--重点篇--索引(索引分类,Hash和B-tree索引,聚簇和非聚簇索引,回表查询,覆盖索引,索引工作原理,索引失效,索引创建原则等)
  • 计算机网络_重点梳理
  • 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
  • 金融项目实战 05|Python实现接口自动化——登录接口
  • VMWARE linux LVM 扩容磁盘分区
  • lqb.key按键全套
  • 如果 iPhone 丢失或被盗,如何远程擦除 iPhone?
  • .NET 内存管理释放的两种方式
  • 力扣经典练习题之70.爬楼梯
  • 类型安全与代码复用的C# 泛型
  • Hypium UIViewer 让 MacOS 与鸿蒙NEXT手机实现多屏协同
  • 硬件设计-齐纳管
  • ESXi 切换硬盘直通后无法恢复的解决办法
  • Git文件夹提交错了,怎么撤销?
  • R语言的数据库交互
  • 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测
  • Windows图形界面(GUI)-QT-C/C++ - QT信号与槽机制详解
  • Flutter中Get.snackbar和Get.dialog关闭冲突问题记录