CaChe的基本原理
目录
一、Cache的定义与结构
二、Cache的工作原理
三、Cache的映射与替换策略
四、Cache的写操作处理
Cache,即高速缓冲存储器,是计算机系统中位于CPU与主存之间的一种高速存储设备。它的主要作用是提高CPU对存储器的访问速度,从而优化系统性能。
一、Cache的定义与结构
Cache由静态存储芯片(SRAM)组成,其容量相对较小但速度远高于主存,接近于CPU的速度。Cache的功能是存放那些近期需要运行的指令与数据,以便CPU能够更快地访问到这些数据。Cache与主存都分成块,每块由多个字节组成,且块大小相等。在一个时间段内,Cache的某块中放着主存某块的全部信息,即Cache的某一块是主存某块的副本(或叫映像)。
Cache主要由存储体、地址转换部件和替换部件三部分组成:
- 存储体:存放由主存调入的指令与数据块。
- 地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
- 替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。
二、Cache的工作原理
Cache的工作原理基于局部性原理,即程序在执行过程中,经常访问的数据往往集中在某个局部范围内。因此,Cache将这部分数据存储在高速缓存中,以便处理器能够更快地访问到这些数据。
当CPU需要访问数据时,首先会检查Cache中是否存在所需数据。这个检查过程称为Cache访问。Cache访问的结果有两种可能:
- 命中:如果数据在Cache中,则CPU直接从Cache中读取数据,无需访问主存,从而大大提高了数据访问速度。
- 未命中:如果数据不在Cache中,则CPU需要从主存中读取数据,并将其存储到Cache中,以便下次访问时能够更快地获取。这个过程称为Cache缺失处理。
三、Cache的映射与替换策略
Cache的映射方式决定了主存块在Cache中的存放位置。常见的映射方式有直接映射、全相联映射和组相联映射三种:
- 直接映射:一个主存块只能映射到Cache中的一个特定位置。这种映射方式简单且成本低,但不够灵活,可能导致Cache利用率不高。
- 全相联映射:一个主存块可以映射到Cache中的任意位置。这种映射方式灵活且Cache利用率高,但实现复杂且成本较高。
- 组相联映射:介于直接映射和全相联映射之间的一种折中方案。Cache被分成多个组,每个组内的块可以全相联映射,而组间则采用直接映射。

在Cache已满时,需要按照一定的替换策略将旧块替换出去。常见的替换策略有随机替换策略、最近最少使用(LRU)替换策略和先进先出(FIFO)替换策略等。
四、Cache的写操作处理
当CPU需要写入数据时,也会先写入Cache,然后再由Cache同步更新到主存中。这个过程中有两种处理方式:
- 写回法:暂时只向Cache写入数据,并用标志注明。直到这个块被从Cache中替换出来时,才一次写入主存。
- 写直达法:每次写入Cache的同时也写入主存。
相关文章:
CaChe的基本原理
目录 一、Cache的定义与结构 二、Cache的工作原理 三、Cache的映射与替换策略 四、Cache的写操作处理 Cache,即高速缓冲存储器,是计算机系统中位于CPU与主存之间的一种高速存储设备。它的主要作用是提高CPU对存储器的访问速度,从而优化系…...
数据结构-栈(理解版)
一、栈的定义 相信大家对于栈或多或少有一些了解,可能大多数人会告诉你栈是一种先进后出的数据结构。这其实说了跟没说一样(❁◡❁)!当然(last in,first out)是栈最有特色的性质。 这里可以给大家一些比较好理解的例…...
NAND Flash虚拟层初始化
在整个NAND Flash初始化过程中,其主要过程由NAND_Init()函数来完成的,因此以下以NAND_Init()函数作为入口,对NAND Flash虚拟层初始化进行全面分析: NAND_Init()NAND_PhyInit()FMT_Init()FMT_FormatNand()LML_Init() NAND_Init()函数首先调用NAND_PhyInit()函数…...
zabbix7.0监控linux主机案例详解
前言 服务端配置 链接: rocky9.2部署zabbix服务端的详细过程 环境 主机ip应用zabbix-server192.168.10.11zabbix本体zabbix-client192.168.10.12zabbix-agent zabbix-server(服务端已配置) 具体实现过程 zabbix-client配置 安装zabbix-agent 添加扩展包 dnf -y instal…...
2024重生之回溯数据结构与算法系列学习(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS 专栏跑道三 ➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]…...
django drf 过滤器
排序 代码: from rest_framework.generics import ListAPIView from rest_framework.filters import OrderingFilterclass TestListAPIView(ListAPIView):queryset models.Course.objects.filter(is_deleteFalse).all()serializer_class serializers.TestModelS…...
蓝桥杯—STM32G431RBT6(RTC时钟获取时间和日期)
一、RTC是什么,有什么用? 在 STM32 中,RTC(Real-Time Clock,实时时钟)主要有以下作用: 时间保持:即使在系统断电情况下,也能持续记录时间。(需要纽扣电池供电…...
DriveVLM 论文学习
论文链接:https://arxiv.org/abs/2402.12289 解决了什么问题? 自动驾驶对交通行业有着革命性的作用,实现 FSD 的一个主要障碍就是场景理解。场景理解涉及在复杂且不可预测的环境中进行导航,这些环境可能包括恶劣的天气条件、复杂…...
Unity3D 客户端多开
Unity3D 实现客户端多开 客户端多开 最近在做好友聊天系统,为了方便测试,需要再开一个客户端。 简单的方法,就是直接拷贝一个新的项目,但是需要很多时间和占用空间。 查阅了网络资料,发现有一种软链接,…...
使用代理IP数据采集都需要注意那些?
“在当今大数据时代,数据采集成为了企业决策和个人研究的重要依据。然而频繁访问目标网站往往会引发IP被封锁的风险,这时使用代理IP就显得尤为重要。但代理IP的使用并非毫无风险,以下是使用代理IP进行数据采集时需要注意的几个关键事项。” 一…...
城市大脑:智慧城市的神经中枢——典型实践与经验启示
随着信息技术的飞速发展,智慧城市已成为全球城市转型升级的重要方向。“城市大脑”作为智慧城市的核心引擎,正以其强大的数据处理能力、智能决策支持和跨领域协同优势,引领着城市管理与服务的深刻变革。本文将深入探讨几个具有代表性的“城市…...
嵌入式中CW32多功能测试笔实现
前言 起心动念 在日常的硬件调试工作中,我们最常使用的仪器仪表可能就是万用表了,虽然万用表号称“万用”,但大部分时候,我们需要使用到的功能无非是电压测量和通断测量。 作为调试的“得力干将”,万用表有时候也会存在存在一些缺点和局限性,比如:体积较大不便于携带…...
Python 时间占位符:毫秒的使用
Python 时间占位符:毫秒的使用 在 Python 中,处理时间和日期是一个非常常见的任务。在进行时间格式化时,使用占位符来表示特定的时间单位是非常重要的。特别是毫秒(ms),它在许多应用中扮演着关键角色&…...
深度学习:(七)梯度下降法在神经网络中的应用
梯度下降法在神经网络中的应用 事先规定: 用 n n n 表示个数(维度): n [ 0 ] n x n^{[0]}n_x n[0]nx ,表示单个训练样本 x x x 的元素个数; n [ 1 ] n^{[1]} n[1] 表示隐藏层 1 1 1 的单元(节点&am…...
HarmonyOS---权限和http/Axios网络请求
网络请求(http,axios) 目录 一、应用权限管理1.1权限的等级1.2授权方式1.3声明权限的配置1.4如何向用户进行申请 二、内置http请求使用三、Axios请求使用(建议)3.1 使用方式一3.2 使用方式二(建议) 一、应用权限管理 应用权限保护…...
信号量SEM
前提 1.信号量的本质是一把计数器 2.申请信号本质就是预订资源 3.PV操作是原子的! 将一个公共资源当做整体访问-->锁 如果公共资源不当做整体使用,多进程可以并发的访问公共资源,但不是同一个区域,为了将资源均分,所以有了…...
828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)
🚀对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统??? 【重塑知识边界,华为云Flexus云服务器X引领开源问答新纪元!】 🌟 解锁知识新动力,华为云Flexus云服务器X携…...
从零预训练一个tiny-llama#Datawhale组队学习Task2
完整的教程请参考:datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe (github.com) 这是Task2的学习任务 目录 Qwen-blog Tokenizer(分词器) Embedding(嵌入) RMS …...
【Linux探索学习】第二弹——Linux的基础指令(中)——夯实基础第二篇
Linux基础指令(上):【Linux探索学习】第一弹——Linux的基本指令(上)——开启Linux学习第一篇-CSDN博客 前言: 在前面我们已经讲解了一些常用的Linux的基础指令,那些当然是远远不够的ÿ…...
Python和QT哪个更适合嵌入式方向的上位机开发?
最近因为工作需要,需要做一个上位机用来处理收集到的数据,然后进行分析,最好有图标输出,当然还要考虑开发便捷,毕竟平时主要是嵌入式方向开发,核心技术栈主要是Linux和C语言,对于开始上位机并不…...
Simulink Simscape传感模块实战指南:从基础到高级应用
1. Simscape传感模块基础入门 第一次接触Simulink Simscape的传感模块时,我完全被那些复杂的参数搞晕了。后来才发现,这些模块其实就是物理系统的"眼睛"和"耳朵",专门用来捕捉机械系统中的各种运动状态和力学特性。举个生…...
嵌入式哈希表实现:无malloc线性探测Hash Map
1. 项目概述 hashmap.c 是一个面向嵌入式系统深度优化的纯 C 语言哈希映射(Hash Map)实现,不依赖标准库(如 stdlib.h 、 string.h ),完全可移植于裸机环境、RTOS(FreeRTOS、Zephyr、RT-Thr…...
Edge浏览器专属:B站直播实时字幕插件开发全记录(附源码下载)
Edge浏览器实现B站直播实时字幕的技术解析与实战 作为一名长期关注Web语音技术的开发者,我最近在Edge浏览器上成功实现了一个B站直播实时字幕插件。这个项目的核心价值在于解决了无字幕直播场景下的信息获取难题——根据用户反馈,超过68%的观众会在没有字…...
Logisim音乐盒背后的数字电路:计数器、ROM与蜂鸣器如何奏出《终生误》
Logisim音乐盒背后的数字电路:计数器、ROM与蜂鸣器如何奏出《终生误》 当一段熟悉的旋律从蜂鸣器中流淌而出,很少有人会思考这背后隐藏的数字魔法。本文将带您拆解一个基于Logisim的音乐盒设计,揭示计数器如何像指挥家一样协调时序、ROM怎样扮…...
从‘调不出来’到‘一次过流片’:折叠共源共栅放大器设计中那些没人告诉你的‘坑’与调试技巧
从‘调不出来’到‘一次过流片’:折叠共源共栅放大器设计中那些没人告诉你的‘坑’与调试技巧 在模拟电路设计的江湖里,折叠共源共栅(Folded Cascode)放大器就像一位身怀绝技却性格古怪的武林高手——性能强悍但极难驯服。许多工…...
华为MatePad 11鸿蒙2.0平板变身编程本:保姆级AidLux+VSCode配置避坑指南
华为MatePad 11鸿蒙平板编程环境搭建实战:AidLux与VSCode高效配置指南 在移动办公与碎片化学习成为主流的今天,将华为MatePad 11这样的高性能平板转变为便携式编程工作站,正成为越来越多开发者的现实需求。鸿蒙系统2.0的分布式能力与AidLux的…...
手把手教你用readelf解析DWARF栈信息(含常见错误排查)
深入解析DWARF栈信息:从readelf实战到疑难排查 调试二进制文件时,栈信息的解析往往是定位问题的关键。当程序崩溃或异常时,理解调用栈的状态不仅能帮助我们快速定位问题,还能揭示更深层次的运行机制。本文将带你深入探索如何利用r…...
告别格式转换烦恼!Marker让文档转换效率提升5倍
告别格式转换烦恼!Marker让文档转换效率提升5倍 【免费下载链接】marker 一个高效、准确的工具,能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式,支持多语言和复杂布局处理,可选集成 LLM 提升精度,适用于学术…...
4 种可靠的 OPPO 手机联系人备份到电脑的方法
OPPO 手机的全球出货量常年位居前五,足以见得它已经获得了越来越多用户的认可。对于年轻群体而言,入手一款高性价比的 OPPO Reno4 SE 这类机型是非常不错的选择。但日常使用中,误操作、进水等意外都可能导致数据丢失,为了避免这类…...
百川2-13B模型安全测试:OpenClaw在防御恶意指令方面的表现
百川2-13B模型安全测试:OpenClaw在防御恶意指令方面的表现 1. 为什么需要测试AI助手的安全性 去年我在本地部署了一个自动化助手,本想让它帮我整理文档和收发邮件。结果有次不小心让它执行了一个包含rm -rf的命令,差点把工作目录清空。这次…...
