首页 > 系统相关 >每个程序员都应该了解的内存知识(二): CPU Cache

每个程序员都应该了解的内存知识(二): CPU Cache

时间:2024-03-29 20:00:15浏览次数:22  
标签:缓存 每个 Cache 程序员 内存 L1 CPU

CPU Cache

架构

每个程序员都应该了解的内存知识.pdf - p22 - 每个程序员都应该了解的内存知识-P22-20240328112647

每个程序员都应该了解的内存知识.pdf - p23 - 每个程序员都应该了解的内存知识-P23-20240328112807

每个程序员都应该了解的内存知识.pdf - p23 - 每个程序员都应该了解的内存知识-P23-20240328112841

cpu core -> l1 cache -> l2 cache -> l3 cache -> main memory

  1. L1缓存:几乎所有的现代多核CPU都会为每个核心提供独立的L1缓存,这是因为L1缓存设计用于提供极低的访问延迟。每个核心的L1缓存通常分为两部分:L1数据缓存(L1-D)和L1指令缓存(L1-I)。
  2. L2缓存:多核处理器中的L2缓存可能是每个核心独立的,也可能是部分或完全共享的。这取决于具体的CPU设计和制造商。共享L2缓存可以提高多核心之间的数据共享效率,但也可能增加核心之间的竞争。
  3. L3缓存:许多现代多核处理器都采用了共享的L3缓存,它是位于CPU核心和主内存之间的最后一级缓存。共享L3缓存可以大幅度提高不同核心之间的数据共享效率和降低访问主内存的延迟。所有核心都可以访问这个缓存层次来检索数据。

缓存操作

  • 一个脏缓存线不存在于任何其他处理器的缓存之中。
  • 同一缓存线中的干净拷贝可以驻留在任意多个其他缓存之中

BTW, 这也会直接影响到程序的设计, 例如经典的 volatile 关键字, 其实就会涉及到cpu cache的使用位置, 即此变量每次都从内存中获取, 而不是直接使用cache中的数据.

缓存写入策略

写通(write-through)

写通比较简单。当修改缓存线时,处理器立即将它写入主存。这样可以保证主存与缓存的内容永远保持一致。当缓存线被替代时,只需要简单地将它丢弃即可。这种策略很简单,但是速度比较慢。如果某个程序反复修改一个本地变量,可能导致 FSB 上产生大量数据流,而不管这个变量是不是有人在用,或者是不是短期变量.

写回(write-back)

写回比较复杂。当修改缓存线时,处理器不再马上将它写入主存,而是打上已弄脏(dirty)的标记。当以后某个时间点缓存线被丢弃时,这个已弄脏标记会通知处理器把数据写回到主存中,而不是简单地扔掉。

标签:缓存,每个,Cache,程序员,内存,L1,CPU
From: https://www.cnblogs.com/pDJJq/p/18104512/cpu-cache-1p0jie

相关文章

  • 程序员35岁会失业吗?
    程序员35岁会失业吗?年龄并不是决定程序员就业机会的唯一因素。尽管年龄可能会对就业产生一定影响,但仍然有很多因素会影响一个程序员是否会失业。以下是一些需要考虑的因素:技能水平:技能和经验是程序员就业的关键因素。如果一个程序员保持学习和更新技能,掌握最新的技术和工......
  • Android数据库升级,阿里程序员的Android之路
    publicsynchronizedstaticDBHelpergetInstance(Contextcontext){if(instance==null){instance=newDBHelper(context);}returninstance;}@OverridepublicvoidonCreate(SQLiteDatabasedb){db.execSQL(SQL.CREATE_TABLE_FAVORITE);//若不是第一个......
  • 转:cpu性能和功耗相关的内核子系统
    http://arthurchiao.art/blog/linux-cpu-2-zh/ 1.1调度器:时分复用+任务调度——sched1.3有任务:用哪个频率执行任务?——cpufreq1.4无任务:执行轻量级占坑程序——idletask从原理来说,非常简单。产品经理:什么都不做。从实现来说,非常模糊。程序员:“什么都不做”的代......
  • 程序员转行做什么比较可行?
    ​前言现阶段互联网发展迎来新机遇和新挑战,随着时代的发展网络安全已成刚需,也成为了社会治理现代化的重要一环。也是目前互联网行业的未来发展重点方向。而目前,网络安全人才极度匮乏,门槛也相对较低,对于求职者来说发展空间相当之大。根据《互联网安全报告》显示,我国网络......
  • mysql数据库cpu高导致微服务假死问题排查解决
    今天早上发现如下task微服务假死了没有响应,然后发现如下日志 2024-03-2901:06:17.089[Thread-152587]ERRORcom.alibaba.druid.pool.DruidPooledStatement.errorCheck[370]:CommunicationsException,druidversion1.2.11,jdbcUrl:jdbc:mysql://15.99.72.154:3306/no......
  • 8、.NET Core 实践 2024-03-29 11:44 CPU过高
    Windbg指令记录0:008>!runawayUserModeTimeThreadTime7:35c00days0:03:04.9538:111c0days0:03:01.6406:4d300days0:02:57.2815:84240days0:02:52.6400:6fe80days0:00:00.0312:6c280......
  • MybatisPlus多参数分页查询,黑马程序员SpringBoot3+Vue3教程第22集使用MP代替pagehelpe
    前言:视频来源1:黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关视频来源2:黑马程序员最新MybatisPlus全套视频教程,4小时快速精通mybatis-plus框架创作理由:网上MP实现分页查询功能的帖子易读性太差,具体实现看下面。根据视频完成......
  • 程序员35岁会失业吗?
      在当今快速发展的科技时代,程序员这个职业无疑备受瞩目。然而,关于程序员在35岁时是否会失业的疑问,也时常在人们的脑海中浮现。那么,程序员35岁会失业吗?答案并非绝对,这取决于诸多因素的综合影响。  首先,我们要明确的是,年龄并不是决定程序员职业发展的唯一因素。虽然在......
  • 程序员常用的几种算法
    程序员常用的几种算法:排序算法:如快速排序、归并排序、冒泡排序等。这些算法用于对数据进行排序,以便于后续的搜索、查找等操作。搜索算法:如线性搜索、二分搜索等。这些算法用于在数据结构中查找特定的元素。图算法:如深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra算法......
  • 硬件组成-CPU-编码-浮点数
    计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。存储器是计算机系统中的记忆设备,分为内部存储器和......