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

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的同时也写入主存。

http://www.lryc.cn/news/450330.html

相关文章:

  • 数据结构-栈(理解版)
  • NAND Flash虚拟层初始化
  • zabbix7.0监控linux主机案例详解
  • 2024重生之回溯数据结构与算法系列学习(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
  • django drf 过滤器
  • 蓝桥杯—STM32G431RBT6(RTC时钟获取时间和日期)
  • DriveVLM 论文学习
  • Unity3D 客户端多开
  • 使用代理IP数据采集都需要注意那些?
  • 城市大脑:智慧城市的神经中枢——典型实践与经验启示
  • 嵌入式中CW32多功能测试笔实现
  • Python 时间占位符:毫秒的使用
  • 深度学习:(七)梯度下降法在神经网络中的应用
  • HarmonyOS---权限和http/Axios网络请求
  • 信号量SEM
  • 828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)
  • 从零预训练一个tiny-llama#Datawhale组队学习Task2
  • 【Linux探索学习】第二弹——Linux的基础指令(中)——夯实基础第二篇
  • Python和QT哪个更适合嵌入式方向的上位机开发?
  • Unity实战案例全解析:RTS游戏的框选和阵型功能(5)阵型功能 优化
  • Android compose 的基本环境搭建
  • git | 合并 commit 的两种方法
  • Grafana链接iframe嵌入Web前端一直跳登录页面的问题记录
  • 后端Java-SpringBoot整合MyBatisPlus步骤(超详细)
  • 8609 哈夫曼树
  • docker的harbor仓库登录问题
  • ENV | docker 安装使用(简单实操版)
  • 【Golang】深入解读Go语言中的错误(error)与异常(panic)
  • DMDSC更换DCR和VOTE磁盘
  • 国产化框架PaddleYOLO结合Swanlab进行作物检测