计算机组成与体系结构:缓存设计概述(Cache Design Overview)

目录

Block Placement(块放置)

 Block Identification(块识别)

Block Replacement(块替换)

Write Strategy(写策略)

总结:


高速缓存设计包括四个基础核心概念,它们分别是:Block Placement(块放置)、Block Identification(块识别)、Block Replacement(块替换)以及Write Strategy(写策略)。这四者共同构成了高速缓存的基本工作机制,理解它们是深入学习缓存设计 的前提。

Block Placement(块放置)

这是指主存中的数据块应该被放置到 Cache 的哪个位置。

核心问题:

一个主存块可以放在 Cache 的哪些位置? 

📚 三种主要的映射方式:

直接映射(Direct-Mapped)

  • 每个主存块只能映射到 Cache 中的一个特定位置。

  • 优点:实现简单,访问速度快

  • 缺点:冲突率高,多个主存块可能争用同一个位置

全相联映射(Fully Associative)

  • 主存中的任意数据块都可以放入 Cache 的任意位置。

  • 优点:冲突最小化

  • 缺点:硬件复杂,查找开销大

组相联映射(Set-Associative)

  • Cache 分成多个集合(Set),每个集合中有多个行(Way)。

  • 每个主存块映射到一个集合,再在集合中任意位置放置。

  • 常见形式如:2-way, 4-way 等

  • 折中方案:在冲突率和复杂度之间取得平衡

 Block Identification(块识别)

当我们访问某个内存地址时,Cache 必须判断这个地址是否在 Cache 中。

核心问题:

如何在 Cache 中识别这个块是否存在?如果存在,是哪一块?

🧱 Cache 的地址划分:

  • Tag(标记位):用于识别主存块是否和 Cache 中的块匹配

  • Index(索引位):用于定位块应该在哪个集合或位置

  • Block Offset:用于在块内部定位具体的字节

 匹配流程:

对于一个内存访问,系统会从地址中提取出:

  1. Index:找到对应的 Set(或直接映射的位置)

  2. Tag:与 Set 中每个块的 Tag 比较(比较命中即是命中)

  3. 若命中,使用 Offset 访问数据;否则触发缺失(Miss)

直接映射 

组相联映射

全相联映射

Block Replacement(块替换)

当 Cache 中的目标位置已经被占用,而新的主存块又必须装入 Cache 时,我们需要替换掉某个已经存在的块。

核心问题:

如果缓存满了,哪一个块应该被替换掉?

⚙️ 替换动作的标准流程:

  1. 判断是否命中(如果命中则直接访问);

  2. 如果不命中,判断 Cache 是否有空位(组或全相联中);

  3. 若无空位 → 触发 Block Replacement 策略:

    • 找到最“合适”被淘汰的块;

    • 若该块为“脏块” → 写回到主存;

    • 装载新的主存块进入该位置。

🤖 替换策略:

  1. LRU(Least Recently Used):替换最近最少使用的数据块(常用)

  2. FIFO(First-In First-Out):替换最早进入缓存的块(简单但可能非最优)

  3. Random Replacement:随机选择一个块替换(实现简单)

  4. Pseudo-LRU:近似 LRU,用于减少硬件实现的复杂性

 策略选择的影响:

  • 替换策略直接影响 命中率(Hit Rate) 和 系统性能

  • LRU 在局部性较强的访问模式中表现良好,但实现开销高

Write Strategy(写策略)

在计算机系统中,CPU 与 Cache 通信非常快,而与主存通信相对较慢。Cache 作为主存的“高速中介”,用于加速数据访问。但当 CPU 向内存写数据时,如果写入 cache 后主存中数据不更新,就可能出现 一致性问题。

为了保证数据的一致性和性能,写策略定义了“数据何时从 cache 写入主存”的规则。

两大类策略:

✅ 写命中策略(Write Hit Policy):

Write Through(直写)

  • 定义:数据在写入 cache 的同时,也立即写入主存。

  • 优点:主存与 cache 保持一致,简单可靠。

  • 缺点:写操作较慢(因为每次都涉及主存写入);可能带来写放大。

  • 适合场景:对数据一致性要求高的系统。

CPU -> Cache(写入) -> Memory(立即也写入)

Write Back(回写)

  • 定义:数据只写入 cache,不立即写入主存,直到该 cache 块被替换(evict)时,才写回主存。

  • 优点:写操作延迟小、性能好,减少对主存访问。

  • 缺点:主存与 cache 不总是一致;系统复杂度更高,需要“脏位”(Dirty Bit)追踪是否修改过。

  • 适合场景:高性能计算,对延迟敏感但一致性可以稍后维护的系统。

CPU -> Cache(写入)
↓
稍后被替换时 -> Memory(回写)

 

❌ 写缺失策略(Write Miss Policy):

发生未命中时(cache 中没有对应数据)该怎么处理,有两个选项: 

  1. Write Allocate(写分配)

    • 缺失时先将块读入 Cache,然后写入 Cache(常用于 Write-Back)

  2. No Write Allocate(非写分配)

    • 缺失时直接写主存,不将数据加载到 Cache(常用于 Write-Through)

总结:

这四部分实际上是一个闭环的机制:

  1. 块放置决定了一个主存块被映射到 Cache 的哪个位置;

  2. 块识别决定我们如何判断一个内存访问是否命中 Cache;

  3. 块替换决定当位置冲突时该替换谁;

  4. 写策略决定了写入数据时 Cache 和主存的一致性如何维护。

它们密切关联,共同定义了 Cache 的工作行为和性能表现。

 有了以上四个基础组成部分的理解,我们就可以正式迈入 Cache Design 的大门了。Cache

Design 是对这些策略的组合与优化,使得 Cache 在访问速度、能效、硬件成本和命中率之间达成

平衡。一个好的设计往往结合特定应用场景,对上述四大机制做出权衡和创新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat多应用部署与静态资源路径问题全解指南

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

Python----目标检测(labelimg和labelme的安装与使用,Pycharm配置教程)

一、labelimg labelimg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用python写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。其注释以 PASCAL VOC格式保存为XML文件,这是I…

Vue项目部署服务器

Vue项目部署服务器 目录 Vue项目部署服务器环境配置nginx开放端口打包vue项目配置nginx 环境 vue 2.6.14 nginx 1.26.0配置nginx 准备一个服务器实例 安装nginx所需依赖 yum -y install pcre* yum -y install openssl*下载wget yum install wget下载nginx到/usr/local cd…

spring框架中的本地缓存:spring cache基本使用

基本概念及原理 处理逻辑 Spring Cache 是 Spring 提供的一整套的缓存解决方案。 虽然它本身并没有提供缓存的实现,但是它提供了一整套的接口和代码规范、配置、注解等,这样它就可以整合各种缓存方案了 处理逻辑:每次调用某方法&#xff…

AI大模型学习二十四、实践QEMU-KVM 虚拟化:ubuntu server 25.04 下云镜像创建Ubuntu 虚拟机

一、说明 虽然说大部分的场合,docker都能解决问题,但是有些大型的软件安装时如果修改配置会很麻烦,比方说前面遇到的code-server和dify 默认都是80和443端口要使用,安装在一起就会端口冲突,通过该端口来解决问题&#…

安卓中0dp和match_parent区别

安卓中的 0dp 和 match_parent 的区别? 第一章 前言 有段时间,看到同事在编写代码的时候,写到的是 0dp 有时候自己写代码的时候,编写的是 match_parent 发现有时候效果很类似。 后来通过一个需求案例,才发现两者有着…

二十、案例特训专题3【系统设计篇】web架构设计

一、前言 二、内容提要 三、单机到应用与数据分离 四、集群与负载均衡 五、集群与有状态无状态服务 六、ORM 七、数据库读写分离 八、数据库缓存Memcache与Redis 九、Redis数据分片 哈希分片如果新增分片会很麻烦,需要把之前数据取出来再哈希除模 一致性哈希分片是…

基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(一)

前置说明 开发语言:Rust Web框架:Rocket 数据库:PostgreSQL 开发步骤 新建项目: cargo new projectname 在Cargo.toml文件里配置如下依赖: [dependencies] rocket {version"0.5.0",features["json&qu…

中国城市间交通驾车距离矩阵(2024)

中国城市间交通驾车距离矩阵(2024) 1852 数据简介 中国城市中心的交通驾车距离,该数据为通过审图号GS(2024)0650的中国城市地图得其城市中心距离,再通过高德地图api计算得出其交通驾车最短距离矩阵,单位为KM,方便大家研究使用。…

MySQL替换瀚高数据库报错: TO_DAYS()不存在(APP)

文章目录 环境症状问题原因解决方案报错编码 环境 系统平台:中标麒麟(海光)7,中标麒麟(飞腾)7 版本:4.5 症状 MySQL替换为瀚高数据库进行应用系统适配报错:TO_DAYS()不…

驱动-Linux定时-timer_list

了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始…

计算机网络概要

⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…

QT 使用QPdfWriter和QPainter绘制PDF文件

QT如何生产pdf文件,网上有许多文章介绍,我也是看了网上的文章,看他们的代码,自己琢磨琢磨,才有了本编博客; 其他什么就不详细说了,本篇博客介绍的QPdfWriter和QPainter绘制PDF文件;…

企业标准信息公共服务平台已开放标准通编辑器访问入口

标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日,企业标准信息公共服务平台已开放标准通编辑器访问入口,可进入官网指定版块使用! 核心功能亮点 解决企业痛点 传统标准编制,需反复核对格式、逐条…

【Hadoop】--HA高可用搭建--3.2.2

修改环境配置文件 hadoop-env.sh # 在文件末尾添加以下内容: # java_home记得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…

【skywalking】index“:“skywalking_metrics-all“},“status“:404}

skywalking 启动报错 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…

【Android】从垂直同步到屏幕刷新机制(一)

【Android】从垂直同步到屏幕刷新机制 本文参考以及部分图片来源: 垂直同步_小科普:“垂直同步”究竟是什么?-CSDN博客 “终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解!-腾讯云开发者社区-腾讯…

ACL完全解析:从权限管理到网络安全的核心防线

访问控制列表(ACL)是一种用于管理资源访问权限的核心安全机制,广泛应用于操作系统和网络设备中。以下是对ACL的详细解析: 1. 基本概念 定义:ACL是由多个访问控制条目(ACE)组成的列表&#xff0…

代码审计-php框架开发,实战tp项目,打击微交易,源码获取,扩大战果

实战,不安全写法引发的注入 这个bc靶场源码没有,看老师演示 打开很明显的tp框架源码 拿到tp框架之后第一步,搜索版本信息5.0.5 两个思路 1.代码的不安全写法 2.版本自身存在的漏洞 全局搜索where看看也没有不安全的 哎?&…

大模型的实践应用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+传统算法的旅游行程规划系统

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+传统算法的旅游行程规划系统。本报告将阐述基于大模型Qwen3(32B)、LangChain框架、MCP协议、RAG技术以及传统算法构建的智能旅游行程规划系统。该系统通过整合多种技术优势,实…