CPU Cache 知识详解之Cache_Miss与替换策略(中)
文章目录
- 引语
- 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与替换策略(中)相关推荐
- 计算机主板与检测,主板知识详解:CPU自动检测和硬件错误的侦测
主板知识详解:CPU自动检测和硬件错误的侦测 1.CPU 的自动检测 以前的老式主板,需要用户自己设定 CPU 的外频.倍频以及电压等参数(一般都是通过跳线来设定).现在生产的主板,都能自动检测到这 ...
- linux服务器怎么查看cpu配置信息,linux服务器cpu信息查看详解
在linux系统中,提供了/proc目录下文件,显示系统的软硬件信息.如果想了解系统中CPU的提供商和相关配置信息,则可以查/proc/cpuinfo.但是此文件输出项较多,不易理解.例如我们想获取, ...
- 网络知识详解之:网络攻击与安全防护
网络知识详解之:网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名 ...
- 计算机缓存Cache以及Cache Line详解
转载: 计算机缓存Cache以及Cache Line详解 - 围城的文章 - 知乎 https://zhuanlan.zhihu.com/p/37749443 L1,L2,L3 Cache究竟在哪里? ...
- 计算机基础知识及其详解,计算机基础知识详解:计算机入门基础知识
能力训练网权威发布计算机基础知识详解,更多计算机基础知识详解相关信息请访问少儿综合素质训练网. [导语]以下是大范文网整理的计算机基础知识详解,欢迎阅读! 1.第一台计算机-ENIAC 大家只要知道第 ...
- x86 - CPU架构/寄存器详解 (三) 保护模式
系列文章 x86 - CPU架构/寄存器详解 (一)x86.8086.i386.IA-32 是什么? x86 - CPU架构/寄存器详解 (二) 实模式(8086模式) x86 - CPU架构/寄存器 ...
- cpu中计算机的主要功能,cpu主要功能详解介绍
cpu即中央处理器,是计算机的运算核心和控制核心.下面是学习啦小编为大家介绍cpu的主要功能详解,欢迎大家阅读. cpu的基本介绍 cpu中央处理器(CPU,Central Processing Un ...
- 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解
原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...
- 计算机组织与结构poc,CPU漏洞原理详解以及POC代码分享
原标题:CPU漏洞原理详解以及POC代码分享 首先,这个漏洞已经公布近一周时间了,看到各大媒体.公众号到处在宣传,本打算不再发布类似信息,但是发现很多媒体的报道达到了一个目的--几乎所有的CPU都有漏 ...
最新文章
- websocket心跳链接代码_Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送
- SWIFT入门 Dictionary
- 2014/School_C_C++_A/5/勾股定理
- 【Python基础知识-pycharm版】第五节-字典\集合
- java static final关键字_Java的static与final关键字
- 为AI芯片铺路?原三星半导体周军加盟Rokid
- CO1 Introduction
- [转载] 柯受良-柯受良飞跃黄河
- SpringMVC核心
- uni-app请求后台接口方法封装
- Vue select默认选中第一个
- Linux以百万兆字节显示内存大小
- 巧谈自动化测试面试技巧,面试中会问到的技术点讲解!
- narwal机器人_Narwal云鲸扫地机器人自清洗加压拖,省心省力省时
- iPhone XS 陷“充电门”:待机状态拒绝充电
- Android 8.0 SystemUI下拉状态栏快捷开关
- 微信页面触发返回按钮回到聊天界面
- 【CentOS8】网卡重启
- Inno Setup中文语言包下载
- 报错:mysqld: [ERROR] Found option without preceding group in config file D:\software\mysql-5.7.19-winx