计算机系统基础21---计算机的基本组成---Cache的地址映射方式

文章目录

不同的映射方式决定了CPU访问内存时,如何查找数据,以及Cache的利用率和命中率。在计算机体系结构中,Cache的映射方式主要有三种经典情况。

1. 直接映射

这是最简单、最直接的映射方式。

原理

主存被划分为许多页(Page),Cache也被划分为同样大小的行(Line)。

主存中的每一块只能固定映射到Cache中的唯一特定行。

映射关系通常由地址计算得出:Cache行号 = 主存块地址 % Cache总行数。

地址结构

CPU地址被划分为三部分:标记(Tag) + 行号(Line Index) + 块内偏移(Offset)。

特点

优点:硬件实现非常简单(比较器少,控制部分逻辑简单),查找速度快。

缺点:冲突率极高。如果程序反复访问两个映射到同一Cache行的不同主存块,就会导致频繁的Cache缺失和替换(即使别的Cache行是空的,也不能用),这种情况称为"抖动"。

类比

就像图书馆里每本书只有一个固定的书架位置(按书名的字母顺序固定摆放)。如果连续借两本都需要放在同一个格子的书,管理员就得来回替换。

2. 全相联映射

这是最灵活、最聪明的映射方式,但硬件代价最大。

原理

主存中的任何一个块,可以映射到Cache中的任何一个行位置。

当需要加载数据时,只要Cache中有空位,就可以放;当需要替换时,可以从所有Cache行中选择一个进行替换。

地址结构

地址被划分为两部分:标记(Tag) + 块内偏移(Offset)。这里没有了"行号"字段,因为数据可以放在任何地方。

特点

优点:空间利用率最高,冲突率最低。只有当Cache完全满时才会发生替换。

缺点:硬件实现极其复杂。每次查找数据时,控制部分需要将地址中的Tag与Cache中所有行的Tag同时进行比较(并行比较),这需要大量的比较器电路,成本高,功耗大,速度也会因此受影响(不适合做大容量的Cache)。

类比

图书馆里没有固定的书架,新书来了可以随便找个空位放。但要找书时,管理员必须翻遍整个图书馆的每一个角落才能找到。

3. 组相联映射

这是前两种方式的折中方案,也是现代CPU(如Intel/AMD)实际采用的主流方式。

原理

将Cache分为若干组(Set),每组包含多个行(称为路,Way)。

主存中的一个块可以映射到某一个特定组中的任意一行(但不能跨组)。

映射关系:Cache组号 = 主存块地址 % 组数。这其实是"直接映射"确定组,然后在组内采用"全相联"放置。

地址结构

地址被划分为三部分:标记(Tag) + 组号(Set Index) + 块内偏移(Offset)。

常用术语

常用术语:通常称为 n路组相联(n-Way Set Associative)。

例如:

2路组相联:每组有2个Cache行。

8路组相联:每组有8个Cache行。

特点

优点:兼具直接映射的快速定位(通过组号直接找到组)和全相联的灵活性(组内任意放)。冲突率比直接映射低,硬件复杂度比全相联低。

缺点:比直接映射复杂一些,且组数决定了冲突的上限。

类比

图书馆分成多个区域(组),每本书按类别只能去某个固定区域,但在该区域内,可以随便放在任何一个书架上。

推荐文章

理解计算机Cache(一):从块到缓存结构,以及逐步推出映射策略

相关推荐
PNP Robotics1 小时前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人
小李不想当小白1 小时前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
那年窗外下的雪.1 小时前
第 02 天:Linux 权限、inode、目录项与链接
学习·http
XGStudio20241 小时前
免费安全的 - 二维码转换工具
学习·ai
邵奈一2 小时前
【紧急处理ZCode事件】ZCode 工作区快照静默上传:检测方法与三层防护实践
人工智能·学习·大模型·国产
那年窗外下的雪.2 小时前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump
秦哈哈2 小时前
【HelloAgents】学习笔记(四)
学习·ai·agent
j7~3 小时前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
日拱一卒的小田3 小时前
ZYNQ学习笔记4-ZYNQ的SD卡控制器2
笔记·学习
外收内放3 小时前
Python与AI应用(项目开发实战:AI智能伴侣第一版)
python·学习·ai编程