文章目录
在计算机体系结构中, cache是提升系统性能的重要组件。对于基础小白来说,理解cache的工作原理和相关概念至关重要。本文将以简洁明了的方式,详细介绍cache的基本原理、工作机制和优化方法,帮助读者快速掌握这一关键知识点。
一. 为什么要使用cache(什么是cache)?
cache是一种位于cpu和主存之间的小容量、高速度的存储器。其主要作用是弥补cpu与主存之间的速度差异,从而提高系统整体性能。
- 原因:cpu主频提升会带动系统性能的改善,但内存存取速度较低会导致cpu等待,降低处理速度,浪费cpu能力。
- 解决方法:在慢速的dram和快速的cpu之间插入一至多级的速度较快、容量较小的sram起到缓冲作用,使cpu能够快速存取主存中的数据,而不使系统成本上升过高,这就是cache的作用。
二. cache采用的程序访问的局部性原理
程序访问的局部性是指在一个较短的时间间隔内,程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。
- 局部性原理:对局部范围的存储器地址频繁访问,而对其他范围的访问甚少。
- cache利用局部性原理:将常用的数据和指令从主存调入cache,供cpu在一段时间内使用,从而提高访问速度。
三. cache的工作原理
1. 主存地址的划分
为了方便比较和快速查找,cache和主存都被分成了若干大小相同的块,每块包含若干个字。
- 主存块地址:标识cpu访问的主存单元所在的主存块号。
- 块内偏移地址:表示要访问的单元在某块的偏移值。
- 索引:指示cpu访问cache存储体的范围。
- 标记:用于判断内容是否在cache中。
2. cache的基本结构
cache的结构主要包括三部分:
- 数据存储体:存放主存数据的副本。
- 标记存储体:存放标记,不同映射方式标记位数不同。
- 有效位:标识存放在cache中的数据是否有效。
3. cache的组织及cpu访问cache的流程
cache命中:
- 对cpu访问存储器的地址进行逻辑划分,得到标记、索引、块内地址。
- 按索引字段的值从cache标记存储体的特定单元读出标记值,并比较。
- 若命中,则形成cache地址。
- 访问cache数据存储体,读取数据送至cpu。
cache不命中:
- 对cpu访问存储器的地址进行逻辑划分,得到标记、索引、块内地址。
- 按索引字段的值从cache标记存储体的特定单元读出标记值,并比较。
- 若不命中,则进入cache替换策略。
- 调入数据块,更新标记存储体,送数据至cpu。
四. cache的命中率计算详解
命中率 h:
h=nc/(nc+nm)
- 命中率:cache命中的次数占总访问次数的比例。
- 丢失率:1−h
- 平均访问时间 ta:
ta=h⋅tc+(1−h)⋅tm
举例说明:
假设一个程序访问内存100次,其中70次命中cache,30次不命中。cache的访问时间为10纳秒,主存的访问时间为50纳秒。
- 命中率 h:
h=70/100=0.7 - 平均访问时间 ta:
ta=0.7⋅10+(1−0.7)⋅50=7+15=22 纳秒
五. cache的地址映射及变换方法
1. 什么是cache的地址映射?
地址映射是指将主存地址空间映射到cache的地址空间,即将存放在主存中的程序或数据按照某种规则装入cache,并建立两者之间地址的对应关系。
2. 什么是cache的地址变换?
地址变换是指在程序运行时,根据地址映像函数将主存地址变换成cache地址。
3. 三种地址映射方法:
- 全相联映射:主存中的任何一个块都可以映射到cache中的任何一个位置。这种方式灵活性高,但查找速度慢。
- 直接映射:主存中的每一个块固定映射到cache中的某一个位置,查找速度快,但灵活性差。
- 组相联映射:综合了全相联映射和直接映射的优点,将cache分成若干组,每组内采用全相联映射,组间采用直接映射,既有一定的灵活性,又能保持较高的查找速度。
六. cache的三种替换算法
1. 为什么需要三种替换算法?
不同的替换算法在实现复杂度、命中率提升和硬件开销等方面各有优劣。通过选择合适的替换算法,可以在不同应用场景下优化cache性能。
2. 三种替换算法
-
先进先出(fifo)
- 原理:选择最早调入cache的字块进行替换。
- 优点:实现简单,开销小。
- 缺点:未考虑数据的访问频率,命中率较低。
-
近期最少使用(lru)和最不经常使用(lfu)
- lru:将长时间未被访问的行换出,能有效提高命中率。
- lfu:将一段时间内被访问次数最少的行换出,但无法严格反映近期访问情况。
-
随机法
- 原理:随机确定被替换的块。
- 优点:实现容易。
- 缺点:命中率不稳定,有时会降低命中率。
结论
通过详细分析cache的工作原理、地址映射方法和替换算法,本文帮助读者深入理解了cache在计算机系统中的重要作用及其实现机制。cache通过利用程序访问的局部性原理,有效提高了cpu访问存储系统的速度,从而提升了计算机系统的整体性能。
发表评论