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

【计算机组成原理】 Cache存储器

一、Cache概述

1.1 什么是Cache

Cache(高速缓冲存储器)是位于CPU和主存之间的一种高速小容量存储器,用于解决CPU与主存之间速度不匹配的问题。

由于CPU速度远快于主存,如果CPU每次都要等待主存响应,会造成大量时间浪费。Cache通过存储最近使用过的数据和指令,使CPU能够以接近自身速度访问存储器。

1.2 程序访问的局部性原理

Cache的设计基于程序访问的局部性原理,包括:

  1. 时间局部性:最近被访问的数据很可能在不久的将来再次被访问。
  2. 空间局部性:与最近被访问数据相邻的数据很可能被访问。

例如:循环体内的变量会被反复访问(时间局部性),数组元素通常按顺序访问(空间局部性)。

二、Cache的基本结构

2.1 Cache的组成

Cache主要由以下部分组成:

  • 存储体:存放从主存调入的数据块
  • 地址映射机构:将主存地址转换为Cache地址
  • 替换机构:Cache满时决定替换哪个块
  • 写操作机构:处理写命中和写不命中的策略

2.2 基本概念

块(Block/Line):Cache和主存之间数据交换的基本单位。主存和Cache都被划分为大小相等的块。

标记(Tag):用于标识Cache中存放的是主存中哪个块的数据。

有效位(Valid Bit):表示该Cache行是否有效。

三、地址映射方式(重点)

地址映射是指主存块如何放置到Cache行中,主要有三种方式:

3.1 直接映射(Direct Mapped)

原理:每个主存块只能映射到Cache中唯一确定的位置。

映射公式:Cache行号 = 主存块号 mod Cache行数

地址结构:

标记(Tag

Cache行号(Index

块内地址(Offset

优点:实现简单,访问速度快,无需替换算法。

缺点:不够灵活,容易发生冲突(不同块映射到同一行)。

3.2 全相联映射(Fully Associative)

原理:每个主存块可以映射到Cache中任意位置。

地址结构:

标记(Tag

块内地址(Offset

优点:最灵活,冲突最少,Cache利用率高。

缺点:硬件复杂,需要比较所有行的标记,成本高。

3.3 组相联映射(Set Associative)

原理:Cache分成若干组,每组包含若干行。主存块先映射到组(直接映射),再在组内任意放置(全相联)。

映射公式:组号 = 主存块号 mod 组数

地址结构:

标记(Tag

组号(Index

块内地址(Offset

K路组相联:每组有K个Cache行,称为K路组相联。如2路、4路、8路组相联。

优点:兼顾灵活性和实现复杂度,是实际应用最广泛的方式。

3.4 三种映射方式对比

特性

直接映射

全相联映射

组相联映射

灵活性

冲突率

硬件复杂度

访问速度

较快

四、替换算法(重点)

当Cache已满且需要调入新块时,需要选择一个块替换出去。

4.1 随机算法(Random)

随机选择一个块进行替换。实现最简单,但可能替换掉即将使用的块。

4.2 FIFO(先进先出)

替换最早进入Cache的块。实现简单,但没有考虑访问频率,可能替换常用块。

4.3 LRU(最近最少使用)★

替换最久未被访问的块。符合局部性原理,命中率较高,是实际应用最广泛的算法。

实现方式:为每行设置计数器,命中时清零,未命中时计数器+1,替换计数器最大的行。

4.4 LFU(最不经常使用)

替换访问次数最少的块。需要记录访问次数,实现较复杂。

五、写策略(重点)

写策略解决Cache与主存数据一致性问题,分为写命中和写不命中两种情况。

5.1 写命中(Write Hit)

写直达(Write Through):同时写Cache和主存。优点是数据一致性好,缺点是写速度慢。

写回(Write Back):只写Cache,替换时才写回主存。需要设置修改位(Dirty Bit)。优点是写速度快,缺点是数据一致性差。

5.2 写不命中(Write Miss)

写分配(Write Allocate):先将主存块调入Cache,再写入。通常与写回策略配合使用。

非写分配(No Write Allocate):直接写入主存,不调入Cache。通常与写直达策略配合使用。

5.3 常见组合

写直达 +非写分配

写回 +写分配

数据一致性好,实现简单,适合单处理器

写效率高,适合多处理器

六、Cache性能分析(重点)

6.1 命中率与缺失率

命中率(Hit Rate):CPU访问Cache命中的次数占总访问次数的比例。

缺失率(Miss Rate):= 1 - 命中率

6.2 平均访问时间

公式:

平均访问时间=命中时间+缺失率×缺失代价

其中:

  • 命中时间:访问Cache所需时间(通常1-3个时钟周期)
  • 缺失代价:从主存调入块所需时间(通常50-100个时钟周期)

6.3 加速比

加速比=Cache时的访问时间/Cache时的平均访问时间

6.4 影响Cache性能的因素

  1. Cache容量:容量越大,命中率越高,但成本也越高,访问速度可能降低。
  2. 块大小:块太小不能充分利用空间局部性;块太大则块数减少,且调入时间长。
  3. 相联度:相联度越高,冲突越少,但硬件越复杂,访问时间越长。
  4. 替换算法:好的替换算法能提高命中率。
http://www.jsqmd.com/news/890955/

相关文章:

  • qmc-decoder音频解密工具:3分钟解锁QQ音乐加密格式的完整指南
  • 从零开始使用 curl 命令测试 Taotoken 的聊天补全接口
  • 浙江余姚寄快递省钱指南|同城发全国、退货、大件全适配,好用平台一次性整理齐全 - 时讯资讯
  • 长文档推理准确率暴跌42.6%?——基于LLM Benchmark v3.2实测数据,揭示Claude 3.5 Sonnet在>8K上下文中的隐性衰减规律
  • 【计算机组成原理】 指令系统的地址格式
  • 为什么92%的团队批量调用ChatGPT会触发429错误?——基于OpenAI Rate Limit源码级反向工程的紧急避坑手册
  • Hermes Agent框架接入Taotoken自定义供应商的配置步骤
  • 华硕笔记本终极性能优化指南:告别官方臃肿软件,拥抱轻量级控制神器
  • BetterNCM安装器深度解析:Rust跨平台插件管理架构实战指南
  • Unity冰雪PBR着色器:物理真实感雪地渲染原理与实践
  • Outfit字体:面向品牌自动化的几何无衬线字体工程解决方案
  • 收藏!小白程序员必看:现在学习大模型,抢占未来高薪赛道!
  • 使用图像识别和罗技鼠标宏技术实现PUBG自动压枪的完整解决方案
  • 【运筹学】匈牙利法 ( 试指派原理详解 | 打√与直线覆盖的算法逻辑 | 矩阵调整实战 )
  • 旺哥黄金回收——海口连锁品牌,四区黄金安全变现全攻略 - 润富黄金珠宝行
  • 2026杭州名表回收终极指南:选对杭州名表回收的TOP 1,让你的闲置腕表卖出天花板价! - 人间半盏茶
  • 为什么92%的大宗商品企业AI项目卡在POC阶段?——资深架构师亲授4层集成框架(含API治理+实时知识图谱构建)
  • Wine 5.0配置避坑大全:从解决中文乱码到安装Flash插件的那些‘骚操作’
  • 彻底革新:让经典Windows 7系统完美兼容现代硬件的完整解决方案
  • Kohya_SS稳定扩散训练器实战:基于Gradio GUI的AI模型定制深度指南
  • 2026杭州西装定制性价比之王:这5家店铺让每分钱都花在刀刃上 - 西装爱好者
  • 安吉拉烘焙:全周期赋能的成熟烘焙加盟服务商 - 奔跑123
  • 终极指南:如何通过WSC API巧妙禁用Windows Defender与防火墙
  • 抗体改造预测:多模态特征工程如何超越通用预训练模型
  • 用过才敢说!2026年真正好用的专业AI智能降重工具
  • 大语言模型如何自动化构建可解释机器学习模型?基于SHAP的评估实践
  • 机器学习赋能计算流体力学:从湍流建模到实时预测的工程实践
  • 被导师点名推荐的AI搜索工作流(清华本科生实操录屏版):从选题→查文献→写综述→降重,全链路闭环
  • 2026新榜单:长治CMA甲醛检测治理公司及洁净室公共卫生检测报告排行榜(2026版) - 五金回收
  • 余生黄金回收——海口全国连锁品牌,四区全覆盖黄金安全变现全指南 - 润富黄金珠宝行