一. 全相联映射
二. 直接相连映射
:::info
在cache中为主存中每个字分配一个位置的最简单方法就是根据这个字的主存地址进行分配,这种cache结构称为直接映射。其中,每个存储器地址对应到cache中一个确定的地址。
直接映射cache都采用以下映射方法:
i=j mod C,其中,i为Cache块地址,j为主存块地址,C为Cache中的块数,mod表示求余运算。
:::
上图中Cache的块数为8,又块数是2的幂,取模计算就很简单,只需要取地址的低log2(8)位即块地址中最低的三位,例如存储器地址(00001)2被映射到(001)2的位置,(11101)2被映射到(101)2的位置。
主存一共32块, 5位二进制地址编址 , 直接相联的映射方式是 主存块号 r % cache的块数 即可, 其实就是取 5位二进制地址的后三位即可, 标记位就是 前二位, **由于cache中每个位置可能对应于存储器中多个位置,因此需要引入一组标记,标记中包含了地址信息。标记只需包含地址的高位,也就是没有用来检索cache的那些位。如上图标记位只需使用5位地址中的高两位。
主存块 : 32 cache块 8
计算方式 :
1.主存字块标记 =>
cache编址需要 3位二进制 , 32 / 8 = 4 , 有四个相同地址映射的主存块 这四个需要标记为来区分每个块 , 需要两位 所以 主存字块标记为 2位
2.Cache字块标记 => 8位
3.字块内地址 : **假设 一个块是 2KB 那么 对应的字块内地址是 11 位
**