本文共 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分成多个组,每个组内采用直接映像方式,组间采用全相联镜像。
- 这是一个折中方案,成本比全相联镜像低。
通过选择合适的镜像方式,可以在实现复杂度和命中率之间取得最佳平衡。
转载地址:http://jmvzz.baihongyu.com/