文章目录

  • 引语
  • Cache Miss(缓存未命中)
    • Compulsory Miss(Cold Miss)强制性未命中
    • Conflict Miss 冲突性未命中
    • Capacity Miss 容量性未命中
    • 其他的 Miss 种类
      • Coherence Miss
      • Communication Miss
  • 行替换策略(算法)
    • 最不常使用(Least-Frequently-Used, LFU)
    • 最近最少使用(LeastRecently-Used, LRU)
    • 随机替换

引语

本文是 CPU Cache 相关知识的中篇,上篇中介绍 CPU Cache 的基础概念和三种映射方式,本文会介绍高速缓存不命中(即 Cache Miss )和 Cache Line 的替换策略,将会涉及到到上文相关知识。

上文:CPU Cache 知识详解之基础概念与映射方式(上)

Cache Miss(缓存未命中)

当查找的数据不在高速缓存中或在但是不可用(有效位为0)

主要有三种 Compulsory Miss(Cold Miss) 强制性未命中, Conflict Miss 冲突性未命中,Capacity Miss 容量性未命中

Compulsory Miss(Cold Miss)强制性未命中

即在程序刚刚启动的时候,数据都是不在缓存中的,所以第一次访问数据必定发生 Miss ,这是不可避免的,由于该 Miss 发生在程序第一次读取数据中,所以也叫 Cold Miss,冷缺失

Conflict Miss 冲突性未命中

该 Miss 是由于**不同的内存块映射到同一个 Cache Set **导致的

这里的映射方式我拿直接映射举例,如图所示主存中地址 0 和 4 都映射到了同一个 Cache Set 1 中,注意是同一个 Cache Set ,只是由于直接映射导致看起来像映射到 Cache Line 导致的,这种 Miss 发生在直接映射和组相联中,因为只有这两类映射方式才具有多个 Cache Set ,而全相联只有一个 Cache Set (当然要说全相联全都映射到该 Cache Set 所以也有 Conflict Miss,这也没问题,重点理解概念即可)

该 Miss 是可以避免并且也应该避免的,因为仍然有空闲的空间可以存放数据

Capacity Miss 容量性未命中

该 Miss 是由于程序运行所需的 Set 的数量要大于缓存的 Set 的数量,导致不能把所有数据都装入缓存中,同样我们以直接映射来举例

假设程序需要读入地址 0 到 5 的数据,缓存中只有 4 个 Cache Set ,所以必然会导致 Miss ,所以这种 Miss 也是不好避免的

其他的 Miss 种类

在查阅资料的过程中,笔者发现除以上几种 Miss 外还存在一些 Miss,由于涉及的资料较少,加之笔者的能力有限,这里不过多讲述(读者若有了解的评论中说明)

Coherence Miss

It is also known as Invalidation. These misses occur when other external processors, i.e., I/O updates memory.

由于只查询到这句解释,个人理解是由于其他的 IO 读主存中数据进行修改,导致缓存中数据不可用引发的 Miss

Communication Miss

笔者在某个视频中得知该名词,没有找到任何资料

行替换策略(算法)

出现 Miss 后,就需要在下一级的内存中读取数据,那么就有可能涉及 Cache Line 的替换,就涉及到了 CPU Cache 中的替换策略;由于替换策略不是我们可以随意更改的,并且这里介绍的算法都是一些十分通用的算法,在操作系统,Redis 等中都有应用,网上资料相对丰富,所以这部分不会详细介绍算法流程,读者了解到高速缓存存在哪些替换策略即可

首先由于直接映射中每个地址映射到缓存中的位置都是唯一的,所以从下一级的内存中读取内存块到缓存中的策略就是直接替换

而组相联和全相联中一个内存块被映射到哪个 Cache Line 是不确定的,所以才存在替换策略将缓存中的一些 Cache Line 替换出去

最不常使用(Least-Frequently-Used, LFU)

该策略会替换在过去某个时间窗口内引用次数最少的那一行。容易把新加入的块替换掉,且容易让前期频繁访问,后期较少访问的块长期驻留。

最近最少使用(LeastRecently-Used, LRU)

策略会替换最后一次访问时间最久远的那一行。有较高命中率。

随机替换

随机选择一个 Cache Line 替换出去。随机替换算法在硬件上容易实现,且速度也比前两种算法快。缺点则是降低了命中率和Cache工作效率。

CPU Cache 知识详解之Cache_Miss与替换策略(中)相关推荐

  1. 计算机主板与检测,主板知识详解:CPU自动检测和硬件错误的侦测

    主板知识详解:CPU自动检测和硬件错误的侦测 1.CPU 的自动检测 以前的老式主板,需要用户自己设定 CPU 的外频.倍频以及电压等参数(一般都是通过跳线来设定).现在生产的主板,都能自动检测到这 ...

  2. linux服务器怎么查看cpu配置信息,linux服务器cpu信息查看详解

    在linux系统中,提供了/proc目录下文件,显示系统的软硬件信息.如果想了解系统中CPU的提供商和相关配置信息,则可以查/proc/cpuinfo.但是此文件输出项较多,不易理解.例如我们想获取, ...

  3. 网络知识详解之:网络攻击与安全防护

    网络知识详解之:网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名 ...

  4. 计算机缓存Cache以及Cache Line详解

    转载: 计算机缓存Cache以及Cache Line详解 - 围城的文章 - 知乎 https://zhuanlan.zhihu.com/p/37749443 L1,L2,L3 Cache究竟在哪里? ...

  5. 计算机基础知识及其详解,计算机基础知识详解:计算机入门基础知识

    能力训练网权威发布计算机基础知识详解,更多计算机基础知识详解相关信息请访问少儿综合素质训练网. [导语]以下是大范文网整理的计算机基础知识详解,欢迎阅读! 1.第一台计算机-ENIAC 大家只要知道第 ...

  6. x86 - CPU架构/寄存器详解 (三) 保护模式

    系列文章 x86 - CPU架构/寄存器详解 (一)x86.8086.i386.IA-32 是什么? x86 - CPU架构/寄存器详解 (二) 实模式(8086模式) x86 - CPU架构/寄存器 ...

  7. cpu中计算机的主要功能,cpu主要功能详解介绍

    cpu即中央处理器,是计算机的运算核心和控制核心.下面是学习啦小编为大家介绍cpu的主要功能详解,欢迎大家阅读. cpu的基本介绍 cpu中央处理器(CPU,Central Processing Un ...

  8. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  9. 计算机组织与结构poc,CPU漏洞原理详解以及POC代码分享

    原标题:CPU漏洞原理详解以及POC代码分享 首先,这个漏洞已经公布近一周时间了,看到各大媒体.公众号到处在宣传,本打算不再发布类似信息,但是发现很多媒体的报道达到了一个目的--几乎所有的CPU都有漏 ...

最新文章

  1. websocket心跳链接代码_Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送
  2. SWIFT入门 Dictionary
  3. 2014/School_C_C++_A/5/勾股定理
  4. 【Python基础知识-pycharm版】第五节-字典\集合
  5. java static final关键字_Java的static与final关键字
  6. 为AI芯片铺路?原三星半导体周军加盟Rokid
  7. CO1 Introduction
  8. [转载] 柯受良-柯受良飞跃黄河
  9. SpringMVC核心
  10. uni-app请求后台接口方法封装
  11. Vue select默认选中第一个
  12. Linux以百万兆字节显示内存大小
  13. 巧谈自动化测试面试技巧,面试中会问到的技术点讲解!
  14. narwal机器人_Narwal云鲸扫地机器人自清洗加压拖,省心省力省时
  15. iPhone XS 陷“充电门”:待机状态拒绝充电
  16. Android 8.0 SystemUI下拉状态栏快捷开关
  17. 微信页面触发返回按钮回到聊天界面
  18. 【CentOS8】网卡重启
  19. Inno Setup中文语言包下载
  20. 报错:mysqld: [ERROR] Found option without preceding group in config file D:\software\mysql-5.7.19-winx

热门文章

  1. 【读书笔记】刘擎西方现代思想讲义——一场观念的探险
  2. 政法委社会治安防控平台建设,重点人员联防联控系统开发
  3. springboot设置拦截器的方法
  4. SAP可用性检查Availability_check 转载
  5. 人生与工作——惠普前中国区总裁孙振耀的“退休HP九大感言”
  6. jquery的toFixed方法的正确使用
  7. 怎样更换美国虚拟主机网站空间?
  8. 如何使用MYSQL触发器,备份历史记录?
  9. HTML中的br标签讲解(菜鸟)
  10. 假设检验是单侧还是双侧