
嵌入式系统设计师学习笔记⑥:存储器的层次架构及Cache详解
发布日期:2021-05-08 22:01:39
浏览次数:13
分类:精选文章
本文共 972 字,大约阅读时间需要 3 分钟。
嵌入式系统设计师学习笔记:存储器的层次架构及Cache详解
存储器被组织成金字塔形的层次结构,自上而下依次变得更慢、访问效率更低、容量更大、每字节的造价更便宜。其所处的层数从高到低分别为:
- CPU寄存器(最快,但容量最少)
- 缓存(速度较快)
- 主存(速度较慢)
- 磁盘(速度较慢,容量大)
- CD-ROM/Disk(速度更慢,容量大)
- 存储设备(速度最慢,容量更大)
Cache概述
Cache是CPU与主存储器之间的缓冲器,主要功能是解决“冯·诺依曼瓶颈”问题,通过提高数据传输效率来优化系统性能。其核心原理解决程序的时间局部性和空间局部性。以下是Cache的基本组成和相关概念:
局部性原理
- 时间局部性:程序运行中,如果某个存储项被访问过,未来一段时间内它很有可能再次被访问。例如:循环变量i在短时间内被多次使用。
- 空间局部性:在程序运行过程中,某个存储项被访问后,其在内存中的相邻区域很有可能在短时间内被访问。例如:数组的元素按物理存储顺序连续排列,相邻元素的访问频率较高。
Cache的命中率直接决定了系统性能。在读操作中,Cache命中时间远小于失效损失时间。因此在设计Cache时,需要尽量减少失效率,而提高命中率。
Cache参数
- 块(Line):Cache数据交换的最小单位。
- 命中(Hit):在Cache中找到所需数据的操作。命中率(Hit Rate) = 命中次数 / 总访问次数。
- 失效(Miss):需要在更慢的级别(如主存)中查找数据。失效率(Miss Rate) = 1 - 命中率。
- 置换算法:根据程序需求动态替换Cache中的数据块,影响命中率。
Cache地址映像
Cache地址映像是通过硬件自动实现的。以下是Cache地址变换的几种常见方式:
常见的地址映像和变换方式
直接映像:
- 主存与Cache按块一一映射,主存的块只能映射到Cache中的特定块。
- 地址变换电路简单,适合小容量Cache。
组相联映像:
- 主存的任意块可以映射到Cache中的任意块地址。
- 适用于大容量Cache,空间利用率高,但实现较为复杂。
全相联映像:
- Cache分成多个组,每个组内采用直接映像方式,组间采用全相联镜像。
- 这是一个折中方案,成本比全相联镜像低。
通过选择合适的镜像方式,可以在实现复杂度和命中率之间取得最佳平衡。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月26日 02时56分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
2021-05-09
P1379 八数码难题 ( A* 算法 与 IDA_star 算法)
2021-05-09
算法学习笔记: 珂朵莉树
2021-05-09
Codeforces Round #664 题解(A ~ C)
2021-05-09
Problem A - Sequence with Digits (数学推导)
2021-05-09
Problem 330A - Cakeminator (思维)
2021-05-09
LeetCode75 颜色分类 (三路快排C++实现与应用)
2021-05-09
docker基础:容器生命周期管理命令
2021-05-09
C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树
2021-05-09
C# 规范建议
2021-05-09
C语言+easyX图形库的推箱子实现
2021-05-09
反汇编-流程控制语句-2-循环控制语句分析
2021-05-09
调试vs2019代码的流程
2021-05-09
游戏外挂基础-概述
2021-05-09
脱壳与加壳-加壳-6-代码实现加密导入表
2021-05-09
Typora配置PicGo时,提示Failed to fetch
2021-05-09
ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
2021-05-09
bcolz的新操作
2021-05-09
Linux的s、t、i、a权限(转)
2021-05-09
zmq的send
2021-05-09