- 一 相关基本概念
1.1地址映像:为了把信息存放到cache中,必须应用某种函数把主存地址映像到cache
1.2地址变换:在信息按照这种映像关系装入cache之后,执行程序时,应将主存地址变换成cache地址,这个变换过程叫做地址变换、
1.3字块 : Cache和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和Cache的数据交换是以块为单位,1个字块包含n个字(n≥1),字块是主存与cache交换的最小单位。
1.4标记 :cache中存放的主存块地址称为标记。指明了它是主存哪一块副本,内容相当于主存块中的编号。
1.5有效位:每个标记还应至少设置一个有效位,来判断cache块中确实没有包含有效信息。例如,当一个处理器启动时,cache中没有数据,标记域中的值就没有意义,甚至在执行了一些指令后,cache中的一些块依然为空。因此需要增加一个有效位来标识一个块是否含有一个有效地址。
1.6组 :多个字块组成的一个逻辑整体称为组。
二 直接映像
2.1 把主存分成若干区,每区与Cache大小相同。区内分块,主存每个区中块的大小和Cache中块的大小相等,主存中每个区包含的块的个数与Cache中块的个数相等。任意一个主存块只能映像到Cache中唯一指定的块中,即相同块号的位置。例如,主存的第0块、第2c块、……、第2c+1块,只能映射到Cache的第0块;而主存的第1块、第2c+ 1块、……、第2c+1+1块,只能映射到Cache的第1块……
2.2 主存地址与cache地址
(1)主存地址:
包括块标记、字块地址、字块内地址三部分。其中,块标记为字块在主存中的地址,字块地址为字块在cache中的地址;字块内地址为字在字块中的地址。
主存地址结构划分:
主存块号 | 块内地址 |
主存字块标记(t位) + cache行号(c位) | b位 |
(2)cache地址:
包括字块地址、字块内地址两部分:其中,字块地址为字块在cache中的地址,字块内地址为字在字块中的地址。
注意:cache地址中的字块地址和字块内地址和主存地址中的相同。
2.3 映像函数
直接映像:函数j=i mod 2c,其中,i为Cache块地址,j为主存块地址, mod表示求余运算。
Eg:一个块数为8的Cache,取模运算之后得到的就是主存块地址中的第三位。例如存储器地址11101被映射到Cache中的101位置,如下图:
从图中可以看出一个CPU给出的地址的地位是用来检索到Cache中的位置
2.4 直接映像方式主存-Cache的读出过程:
1. 寻找Cache页号 :CPU访问时,送来主存地址和读/写命令,首先根据主存地址中的c位,即cache字块地址,作为cache地址,从而找到cache字块。
2. 检查:找到Cache字块后,检查它的标记和主存的高t位(即主存字块标记)是否一致。并判断其有效位为0还是1。
3.- 一致(符合且有效位为1):一致则命中,再根据b位块地址(即字块内地址),从Cache中取得所需指令或数据。
- 不一致(不符合或者有效位为0):不一致则未命中,就从主存读入新的字块来代替cache中的旧字块,并将块中CPU所需数据送往CPU,同时修改cache标记,假如原来有效位为0,还要将有效位改置为1。
2.5直接映像优缺点
优点:
1)映像函数简单,实现硬件简单,无需相联存储器,实现成本较全相联映像方式低;
(2)地址变换速度快且简单,可直接由主存地址提取出Cache地址。(如果命中且字块有效,那么主存地址去掉区号后的低位部分就是cache地址)
缺点:
(1)不够灵活且块冲突率高,每个主存块只能固定的对应某个缓存块,即使缓存内还空着许多位置也不能占用,使缓存的存储空间得不到充分的利用。
(2)如果程序恰好要重复访问对应同一缓存位置的不同主存块,就要不停的进行替换,且降低命中率。
三 全相联映像
3.1基本思路:允许主存中的每个字块映像到cache的任何一个字块位置上,也允许从确实已被占满的cache中替换出任何一个旧字块。
3.2
主存地址格式:主存块号+块内偏移地址
cache地址格式: cache行号+行内偏移地址
cache标记tag:主存块号
3.3 特点
(1)与直接映像相比,它的标记位数从t位增加到t+c位使得cache标记容量加大
(2)在访问cache时需要和cache的全部标记进行比较,才能判断出所访主存地址的内容是否已经存在cache中,由于cache速度要求过高,故所需要的逻辑电路过多,以至于无法应用于cache中。且成本太高不能采用
四.组相联映像
4.1 基本概念
(1)组相联映像方式为前两种方式的折衷。其主存按Cache容量分区,每个区分为若干组,每组包含若干块。Cache也进行同样的分组和分块。
(2)主存中一个组内的块数与Cache中一个组内的块数相等。
(3)组间采用直接映像方式,组内采用全相联方式。当组的容量=1时,即直接映像,组的容量=整个Cache的容量时,即全相联映像。
4.2 主存地址和cache地址
主存地址:
主存地址包括主存字块标记、组号和字块内地址三部分。其中主存字块标记为字块在主存中的地址,组号为cache分的组的组号,字块内地址为字在字块中的地址。
cache地址:
cache地址包括组号、字块号和字块内地址三部分组成。其中,组号为cache分组的组号,字块号为每组内字块的地址,字块内地址为字在字块中的地址。
注意:主存地址和cache地址中的组号和字块内地址相同。
4.3 一次内存访问示意图
注意事项:
- TLB采用组相联
- 页表采用两级页表
- cache采用组相联
- cache仅考虑L1 d-cache,不考虑L1 i-cache、L2 cache和L3 cache
- 未考虑页表缺页
- 简化了cache未命中情况
4.特点:
(1)该映射方式实现较为容易,块的冲突概率比较低,块的利用率大幅度提高,命中率介于直接映射方式与全相联映射方式之间。被普遍采用
(2)因为是两种映像方式的折衷,因此地址结构较为复杂,比较的情况较多,需要引入相联存储器;
(3) 兼顾了映像的灵活性和操作的复杂程度
(4)实现难度和造价要比直接映象方式高。
图片均来自网上,侵权删