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

cache和主存的映射方式

cache和主存的映射方式

全相联映射

主存块可以放在cache的任意位置

假设某个计算机的主存地址空间大小为256MB,按字节编址。

其数据cache有8个cache行,行长64B

由此可知,我们想要求出主存被分为多少块,就用256MB/64B =228/26=2^22

由于主存有28位,那么它就有22位用来表示主存块号,还有剩下6位用来表示块内地址

cache命中判定:

要访问1011010110.....001110

1.主存地址前22位,对比cache中所有块的标记
2.若标记匹配,且有效位=1,则cache命中,访问块内地址位=001110的单元
3.若没有命中,或者有效位=0,那么正常访问主存即可

直接映射

每个主存块只能放到一个特定的位置,cache块号=主存块号%cache总块数

%是取余操作,比如说cache块有8块,他映射主存的10号块的位置,那么10%8=2

假设某个计算机的主存地址空间大小为256MB,按字节编址。

其数据cache有8个cache行,行长64B

此时cache有8个块,当主存块号(二进制)对2^3进行取余 ,那么这个运算结果就相当于我们保留了末尾3位

此时如果主存地址可以映射到cache的0号位置,那么它的末尾三位一定是0

这时候相比全相联映射我们可以把表示主存块号的22位分割成19位标记+3位行号

块内地址依然是6位

此时如果想要访问101.....110001110

1.先根据主存块好找到后3位确定cache行

2.在看如果主存块号的前19位与cache标记匹配且有效位=1,那么cache命中,访问地址为001110的单元

3.若没有命中,或者有效位=0,那么正常访问主存即可

组相联映射

把cache块分组,cache块分为若干块,每个主存块可放到特定分组中任意一个位置,组号=主存块号%分组数

比如说,我们分了4组(0~3),我们要把主存15位置的数据映射到cache,那么就15%4=3,就放到第3组

假设某个计算机的主存地址空间大小为256MB,按字节编址。

其数据cache有8个cache行,行长64B

cache2路组相联映射,2块为1组,分4组

组的数量为22个,那么当主存块号(二进制)对22进行取余,相当于保留了后2位

此时也可以和直接映射一样把主存块号分为22位的标记,和2位的组号

此时如果想要访问101.....10001110

1.根据主存块号后2位,找到cache中的01组

2.如果前20位与分组哪某个标识匹配,且有效位=1,则cache命中,访问地址为001110的单元

3.若没有命中,或者有效位=0,那么正常访问主存即可

标记

为了区分主存块在cache上映射的地址,每个cache块都需要有一个标记,对应它所映射的主存块的位置
标记位如果没有指向,就让它指向0,这时候问题就来了,如果没有另外一个标识,那他们就会默认指向内存块0的位置,这样是不妥的

那么光是有标记还不够,还需要有一个有效位,来辨别这个标记是否有效。

好处和坏处

1.直接映射命中率最低,全相联映射命中率最高

2.直接映射的判断开销最小,所需时间最短,全相联映射的判断开销最大,所需时间最长

3.直接映射标记所占的额外空间开销最少,全相联映射所占空间开销最大

替换算法

全相联映射

cache满了才需要替换,在全局选择替换哪一块

直接映射(无需考虑替换算法)

如果对应位置非空,则毫无选择的直接替换

组相联映射

只有分组满了才需要替换,在分组内选择替换哪一块

随机算法(RAND)

如果cache已满,则随机选择一块替换

随机算法的实现很简单,但是没有考虑到局部性原理,因此命中率很低,实际效果不稳定

如图:随机算法在释放的时候都是随机的

![image-20250912092117802](/Users/tusier/Library/Application Support/typora-user-images/image-20250912092117802.png)

先进先出算法(FIFO)

若cache已满,替换最先被掉入cache的块。

实现简单,最开始按#0#1#2放入cache,之后轮流替换#0#1#2

FIFO依然没有考虑到局部性原理,原先被掉入cache的块也可能是被频繁访问的

![image-20250912092827801](/Users/tusier/Library/Application Support/typora-user-images/image-20250912092827801.png)

近期最少使用(LRU)

为每一个cache块设置一个计数器,用于记录每个cache块已经多久么有被访问了,当cache满后,替换计数器最大的

如果cache块的总数为2^n ,那么就需要n位的计数器

1.命中时,所命中的计数器清零,比其低的计数器+1,其余不变

2.未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1

3.未命中且无空闲行时,计数器最大的行信息块被淘汰,新装行的块计数器置0,其余全+1

基于局部性原理,近期被访问过的主存块,在不久的将来可能会被再次访问,因此淘汰醉酒没有被访问过的块是合理的,lru算法的实际运行效果优秀,cache命中率高,但是如果被频繁访问的主存块的数量大于cache行的数量,则有可能发生抖动

最近不经常使用(LFU)

为每个cache块设置一个计数器,用于记录每个cache块被访问了几次,cache满后,替换计数器最小的

新掉入的块计数器为=0 之后每次被访问都会让那个计数器+1,需要替换是,选择计数器最小的那一行

如果需要替换的时候遇到两个计数器值相等的,那么就根据fifo策略,替换掉最先进入的行

曾经被警察访问的主存块不一定在未来被用到,并没有很好的尊循局部性原理,因此运行效率不如LRU

相关文章:

cache和主存的映射方式

cache和主存的映射方式 全相联映射 主存块可以放在cache的任意位置 假设某个计算机的主存地址空间大小为256MB,按字节编址。 其数据cache有8个cache行,行长64B 由此可知,我们想要求出主存被分为多少块,就用256MB/64B =228/26=2^22 由于主存有28位,那么它就有22位用来表示主…...

PHP数组去重和集合有什么关系

PHP数组去重与集合:不止是简单的去重你可能会觉得PHP数组去重很简单,array_unique()不就搞定了吗? 但事情远没有那么简单。深入理解PHP数组去重,其实就触及到了集合论的一些核心概念,这能帮你写出更高效、更优雅的代码,避免一些常见的坑。这篇文章,咱们不玩虚的,直接深…...

kkFileView4.4.0 安装与使用

1、码云搜索kkfileview项目,下载项目源码(https://gitee.com/kekingcn/file-online-preview),或者直clone也可以,使用idea打开项目,使用maven加载项目所需要的依赖包2、使用maven进行打包 mvn package,然后 linux环境使用kkFileView.xx.tar.gz, windows使用kkFileView.…...

ubuntu22挂载windows server2019的共享文件夹

本文实现以下目标 1、win 2019 共享一个文件夹 2、ubuntu22访问win2019共享文件夹 ================== 在win2019文件上-右键-属性-共享 选择共享用户和密码。完成,此方法为20世界80年代的经典共享。今年2025年9月,建议寻找更好的共享方法,比如云盘、nas等等。在ubuntu22上…...

PHP数组去重适用于哪些场景

PHP数组去重:不止是array_unique()那么简单你可能觉得PHP数组去重很简单,array_unique()函数一用就完事了。但实际上,这只是冰山一角。 不同的场景下,对数组去重的需求和最佳方案大相径庭,盲目使用array_unique()可能会导致性能问题甚至结果错误。这篇文章,咱们就深入探讨…...

下载视频

1.下载ffmpeg放在电脑上,并设置成环境变量 2.下载yt-dlp,并设置成环境变量 3.下载脚本@echo off chcp 65001 >nul title YouTube Batch Downloader (Best Quality)setlocal enabledelayedexpansion:: 检查 yt-dlp.exe 是否存在 if not exist yt-dlp.exe (echo ERROR: yt-d…...

常用Linux配置

允许上下查看命令历史: vi ~/.bashrc添加 HISTFILESIZE=500 HISTSIZE=500 set -o history退出,输入 source ~/.bashrc 生效本文来自博客园,作者:mariocanfly,转载请注明原文链接:https://www.cnblogs.com/mariocanfly/p/19087376...

m1max可以装windows系统很卡吗

m1max可以装Windows系统很卡吗? 一、M1 Max芯片简介 M1 Max是苹果公司推出的一款高性能集成芯片,主要应用于MacBook Pro等高端产品中。它拥有强大的计算能力、图形处理能力和能效比,专为专业用户设计。M1 Max采用了先进的5纳米工艺制造,集成了高达10核的CPU、32核的GPU以及…...

1 | 移动语义:浅拷贝,深拷贝和引用拷贝,左值和右值

1、浅拷贝和深拷贝(和引用拷贝) ​ 浅拷贝&深拷贝&引用拷贝?浅拷贝就是把表面的数据都拷贝一遍,但是指针指向的地址不会被拷贝。深拷贝就是所有的全部拷贝一遍。引用拷贝就是换个名字,指向的地址还是和原来一样。 2、左值和右值(和右值引用) ​ 左值就是有具体…...

macbook air和windows系统区别

如何选择:MacBook Air与Windows系统的区别 一、引言 在当今这个数字化时代,个人电脑已经成为我们工作、学习和娱乐不可或缺的工具。面对市场上琳琅满目的电脑产品,如何选择一款适合自己的设备成为许多人关心的问题。其中,MacBook Air 和搭载 Windows 系统的电脑是两大主流选…...

Gitee:国产代码托管的领军者,助力企业应对CODING停服挑战

Gitee:国产代码托管的领军者,助力企业应对CODING停服挑战 在数字化转型浪潮中,软件开发效率成为企业核心竞争力的关键。近日,腾讯云旗下CODING DevOps系列产品宣布将于2028年9月30日全面停止服务,这一消息在开发者社区引发广泛关注。作为国产代码托管平台的标杆,Gitee凭借…...

锂电池外围均衡电路仿真

面对当前严峻的能源危机、环境污染等问题,开发研究电动汽车已成为汽车行业的主流方向,而目前高效稳定的动力电池是电动汽车研究领域的核心问题。因此,本项目研究电动汽车电池管理系统(BMS)的关键技术,探究准确估测电池的荷电状态(SOC)以及锂电池的外围均衡电路的设计方…...

Wireshark 学习笔记(一)

Wireshark 学习笔记 (一) 基础 图形界面和数据工具栏 主工具栏包含多个用于数据包嗅探和处理的菜单和快捷方式,包括过滤、排序、摘要、导出和合并。显示过滤栏 主要查询和过滤区域。近期文件 最近调查的文件列表。您可以通过双击调出列出的文件。捕获过滤器和接口 捕获过滤器以…...

ELF 文件结构与加载流程介绍

概述 ELF(Executable and Linkable Format)是一种在类 Unix 系统中广泛使用的文件格式,用于存储可执行文件、目标文件、共享库以及核心转储文件。它为操作系统提供了一种标准化的方式来表示程序的结构,使得操作系统能够正确加载、执行和调试程序。ELF 文件格式在 Linux 系统…...

灵码产品演示:Maven 示例工程生成

作者:轻眉 演示主题:由 AI 自动生成 0 到 1 的电商订单 Java 项目 演示目的 面向 Java 零基础的用户,通过灵码的产品能力(如提示词、编码智能体、项目 Rules 和 SQLite MCP 服务、单元测试)自动生成 0 到 1 的电商订单 Java 项目,使用 Maven 作为构建工具。 演示准备 1. …...

NocoBase 本周更新汇总:优化及缺陷修复

本周更新包括:邮件管理支持分批同步,工作流审批支持审批时退回到任意节点等。原文链接:https://www.nocobase.com/cn/blog/weekly-updates-20250912。 汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和…...

CF1265E题解

题目。 设 $f_i$ 表示问完了前 $i-1$ 面镜子,还期望要多少天。 有 $f_i=p_i f_{i+1}+(1-p_i)f_1 +1,f_{n+1}=0$ ,答案即为 $f_1$ 。 将递推式变形,有 $f_i-f_1=p_i(f_{i+1}-f_1)+1$。 记 $g_i=f_i-f_1$,则 $g_i=p_i g_{i+1}+1,g_{i+1}=\frac{g_i-1}{p_i},g_1=f_1-f_1=0$。 …...

数组中的第K大元素

题目描述:给一个整数数组和一个正整数K,返回数组中第K大的元素。 思路1:堆排序(优先队列) 维护一个小顶堆,堆的大小限制为K,堆里面装的元素就是当前数组中前K大的元素。 这个思路非常简单,用STL的priority_queue直接就解决了,不需要过多阐述。 注意:priority_queue默…...

Gitee:本土开发者生态的崛起与数字化转型新范式

Gitee:本土开发者生态的崛起与数字化转型新范式 在数字经济加速发展的当下,代码托管平台已成为企业数字化转型的基础设施。作为国内领先的一站式DevOps平台,Gitee正通过其独特的本土化优势和技术创新,重塑着中国开发者的协作方式与效率标准。 Gitee的崛起并非偶然,而是中国…...

从本土化优势到全场景覆盖:Gitee如何重塑中国开发者的DevOps体验

从本土化优势到全场景覆盖:Gitee如何重塑中国开发者的DevOps体验 在数字化转型浪潮中,企业技术团队正面临前所未有的效率挑战。作为国内领先的代码托管与DevOps平台,Gitee通过深度适配本土生态的解决方案,正在重新定义中国企业的研发效能边界。最新数据显示,该平台已服务超…...

【2025-09-11】脆弱的睡眠

20:00日日行,不怕千万里。常常做,不怕千万事。——金缨《格言联璧》我发现现在每晚回到家,都要对着二宝的刷牙态度大吼几遍。她现在很不喜欢刷牙,各种借口,名种拖沓。我又想着能早点睡觉,有时不得不爆发点脾气,我知道对二宝是不起效的,但是累了一整天我也是没那个耐心去…...

即时通讯管理平台(后台管理)介绍文档

一、平台概述信贸通即时通讯管理平台(后台管理)是一款为企业及组织打造的全权限控制后台系统,旨在提供对用户、群组、消息及客户端配置的完全掌控能力。通过直观的操作界面与强大的底层架构,为业务运营提供坚实的数据支撑与高效的管理工具,助力企业实现内部沟通的安全化、…...

HC32F460串口重定向printf

HC32F460串口printf使用的是旧版官方库2.2.0,如果用的是新版库的话需修改,应该差不多 01 确认使用的引脚 需要通过F460数据手册的2.2章节【引脚功能表】确认引脚在功能组里,最后一列不为空的引脚就是可使用的根据分组自行确认使用的是UARTx02 初始化串口 通过官方的串口轮询…...

一个我很喜欢的故事

很久很久以前,有一位善良的少年。他的朋友被恶咒所噬,从此陷入了沉眠。 “你要寻找解开恶咒的方法,因为沉睡的人没有痛苦,但也无从感受到幸福。” 于是少年捡起勇气做出箭,抽出心脏做成枪。为了不被割裂开,穿上和朋友一样,石头所制的铠甲。 他背起石棺走在路上,脚下踩着…...

paraview将所有时间步下的数据导入到同一个文件中

[*********通义千问回答版本*********] 步骤如下:加载你的数据点击 File → Open 打开你的数据文件(如 .vtk, .vtu, .pvd, .h5, .nc 等支持多时间步的格式)。 确保时间信息已正确读取:在左上角的 "Pipeline Browser" 中选中你的数据源,查看 "Information&q…...

代码托管新视野:打造本土化研发协作平台,赋能企业敏捷开发新范式

Gitee:打造本土化研发协作平台,赋能企业敏捷开发新范式 在数字化转型的浪潮中,代码托管平台已成为现代企业研发效能的核心基础设施。作为国内领先的代码托管与协作平台,Gitee凭借其本土化优势与技术创新,正在重新定义企业级研发协作模式。该平台不仅解决了跨国平台在国内使…...

202312_DASCTF_找找找

snow雪花隐写,文件分离Tags:snow雪花隐写,文件分离 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202312_DASCTF_找找找的附件.zip 0x01. WP 01 十六进制编辑器查看文件 文件发现末尾有flag特征码,Base64解…...

浅谈博弈论

Bash游戏 这很简单,手玩两组样例就找到规律了。只有一堆石子,个数为 \(n\) 个,两名玩家轮流在石子堆中拿石子,每次至少取 \(1\) 个,至多取 \(m\) 个,最后一个取走石子的玩家为胜者。实际上,\((m+1)\ |\ n\) 时必胜。 Nim游戏\(n\) 堆物品,每堆 \(a_i\) 个,两个玩家轮流…...

pyinstaller 打包

# app.spec from PyInstaller.utils.hooks import collect_data_files, collect_submodulesdatas = [(templates/*, templates), # 递归包含 templates 下所有文件和子目录(front/dist/*, static), # 递归包含 static 下所有内容(front/dist/assets/*, static/assets),…...

基于STM32单片机与OV2640摄像头实现边缘检测

基于STM32单片机与OV2640摄像头实现边缘检测一、硬件配置方案 1. 接口连接(以STM32F407为例) OV2640 STM32F407 ---------------------- XCLK → HCLK(系统时钟) PCLK → DCMI_PIXCLK HSYNC → DCMI_HSYNC VSYNC → DC…...

替代FTP的国产传输软件哪个好?国产化文件传输工具推荐

在数字化转型浪潮中,文件传输已成为企业日常运营的核心环节。然而,传统FTP协议因存在三大致命缺陷,已难以满足现代企业的安全与效率需求,所以很多行业和机构都在寻找替代FTP的国产传输软件。首先我们来看看传统FTP有何不足,为什么需要替代FTP的国产传输软件? 1、安全漏洞…...

模拟运输振动试验台:保障产品运输安全的关键设备

在现代产品生产和供应链管理中,运输是产品从制造商到消费者的重要环节。然而,产品在运输过程中可能遭遇到各种不可控的振动和冲击,这些外力会导致产品的损坏、质量下降,甚至直接影响其使用性能。因此,为了确保产品在运输过程中的安全性,模拟运输振动试验台应运而生,成为…...

数据结构与算法-29.图-广度优先搜索

1、广度优先搜索概述 2、以上仅供参考,如有疑问,留言联系...

政务外网和互联网啥关系

政务外网不是互联网,它跟互联网是**“物理隔离”或“逻辑隔离”**的关系,一句话: 政务外网是政府自己建的“专用公路”,互联网是公共大马路,两者平时各跑各的车,只在指定检查站才能换乘。...

什么是文件摆渡系统?从应用到优势全面解读!

在数字化转型深入推进的当下,企业为保护核心数据资产,普遍采用网络隔离技术,将内部网络(如研发网、办公网、生产网)与外部互联网或不同安全级别的子网分隔开来。什么是文件摆渡系统?它正是一种能在隔离网络环境中,实现安全、可靠、高效数据传输与交换的专用系统,如同在…...

wpf xaml数据绑定时,寻找数据源的几种方式 (RelativeSource)

wpf xaml数据绑定时,寻找数据源的几种方式 (RelativeSource)RelativeSource 类在 WPF 中提供了以下几种模式: RelativeSource Self:指定当前元素作为相对源。可以在当前元素的属性中绑定到自身的属性。示例: <TextBlock Text="{Binding Text, RelativeSource={Re…...

背负冲击试验机的设计原理与性能优化

背负冲击试验机是一种用于测试各种产品或包装材料在遭受背负冲击时的性能表现的设备,广泛应用于包装、运输、航空航天、汽车和电子等多个领域。通过模拟物品在运输、搬运等过程中可能遇到的冲击情况,评估其抗冲击性、耐压性及稳定性,帮助企业改进产品设计和包装方案,以确保…...

钢球落球试验机对汽车玻璃的测试应用

在汽车行业中,钢球落球试验机主要用于测试材料的抗冲击性能、耐久性以及安全性,确保零部件在制造、使用过程中能够承受外力冲击,符合行业标准和法规要求。行驶中的汽车玻璃要经受严格的冲击考验。(1)确保挡风玻璃/侧窗玻璃飞石撞击的安全性 汽车高速行驶过程中,挡风玻璃、…...

基于STM32F047的ADS1299数据采集与低通滤波系统实现

基于STM32F047的ADS1299数据采集与低通滤波系统实现:一、硬件设计要点 1. 核心电路连接 STM32F047 ADS1299 ---------------------- SPI1_SCK (PA5) → SCLK SPI1_MOSI (PA7) → DIN SPI1_MISO (PA6) → DOUT PA4 (GPIO) → CS PB0 (GPIO) → DRDY 3.3V …...

军工企业涉密网文件导出用什么系统?答案在这里

军工企业涉密网文件导出,还是有很严格的要求的。首先基本都是物理隔离状态,而且很多时候又不允许随意的添加软硬件设备。所以军工企业涉密网文件导出是面临不少挑战的。1、文件合规导出管理 军工企业必须保证从保密网导出的文件严格遵循国家法律法规及保密规定。导出的所有文…...

Gateway 网关坑我! 被这个404 问题折腾了一年?

大家好,我是小富~ 最近同事找我帮忙排查一个"诡异"的 Bug,说困扰了他们一年多一直没解决。我接手后花了一些时间定位到了问题根源,今天就来跟大家分享一下这个问题的排查过程和解决方案。 问题描述 同事使用的是 SpringCloud Gateway 3.0.1 + JDK8,整合了 Nacos…...

KUKA 机器人型号含义解析

KR 210 R 2700 - 2 C KR: Kuka Robot 210:最大负载 R 2700: 工作半径 -2:QUANTEC 系列第二代 C:Ceiling(顶装) CR: Cleaning Room(洁净) EX: 防爆区域 F: Foundry(铸造) F exclusive:(铸造专用) HA:高精度 HI:高惯量 HM: Hygienic Machine (用于副食品行业) HC: He…...

LangChain DIfy区别

LangChain DIfy区别2...

tricks

多总结一下 tricks 吧。思考方式 如何思考。向哪个方向思考。数学这启示我们在数学类 dp 优化不了,且组合意义不会的时候,要改改状态尽量把 dp 转移式写得简单点,然后瞪眼找通项。- MX 炼石 2025 NOIP #5 T1 题 [解]() 题trick 见过的一眼了,没见过的懵了。 杂项在求类似于…...

英语_阅读_water in our body_待读

Water is one of the most important things we need to stay alive, even though we dont call it a nutrient. 水是我们维持生命所需最重要的物质之一,尽管我们并不把它称为营养素。 Did you know that water makes up more than half of our body weight? 你知道吗?水占我…...

2008-2025年各省高考真题含解析

网上的真题格式凌乱,难以使用,笔者找到一份PDF和Word版的题目,置于此方便大家使用 各省近17年高考真题|百度网盘-分享无限制 各省近17年高考真题|UC网盘-分享无限制 各省近17年高考真题|夸克网盘-分享无限制...

allure报告中allure.title 如何去掉后方的参数化显示

问题:用例标题后展示请求参数处理方法 找到lib/site-packages/allure_pytest/listener.py文件,找到test_result.parameters.extend,更新内容如下结果...

听歌体验直接拉满!推荐一款高颜值音乐播放器!

SPlayer —— 一个简约的音乐播放器,基于 Vue3 + TypeScript + Nave UI + Electron 技术栈打造,兼顾了美观的界面和流畅的体验。大家好,我是 Java陈序员。 你是否也曾遇到过这样的困扰:喜欢的音乐播放器要么颜值不够能打,界面好看的功能又太过简陋;在线听歌得忍受满屏广告…...

IoT设备

“IoT设备”指的是物联网设备(Internet of Things devices),这些设备通过传感器、软件、网络连接等技术,能够感知环境、收集数据、与其他设备或云端通信,从而实现智能化控制与自动化操作。✅ 一句话理解: IoT设备就是“能上网、能感知、能交互”的物理设备。 🔍 常见I…...

前端岗、测试岗即将消亡!阿里菜鸟国际后端研发全员转全栈……

大家好,我是R哥。 最近看到一个非常炸裂的消息,阿里菜鸟国际后端研发,居然全员被要求转型全栈了。作为一个混迹了 10 多年的程序员,我看过太多的架构调整、组织优化,从单体到 SOA 再到微服务,从前后端分离,再到现在全栈工程师的崛起。。 如果说之前还有人幻想着一招鲜吃…...