主存与cache的地址映射
一、概念
地址映射方式有全相联方式、直接方式和组相联方式三种
cache的数据块大小称为行,共有 2 r 2^r 2r行;
主存的数据块大小称为块,共有 2 s 2^s 2s块;
行与块等长(字长),每个行(块)由 2 w = k 2^w=k 2w=k个连续的字组成
1. 全相联映射方式
主存中的一个块的地址(块号)与块内容(字)一起存在cache行中,其中块地址存于cache行的标记tag中
主存地址长度 = s+w位
tag长度 = s位
主存地址格式如下:
标记 | 字地址 |
---|---|
s | w |
2. 直接映射方式
一个主存块只能拷贝到cache的一个特定的位置上去。
主存要分区,每个区的块数与cache的行数m相等
在直接映射方式中,将s位的主存块地址分为两部分:低r位主存区内块号作为cache的行地址,s-r位区号作为标记tag与块数据一起保存在该行。
主存地址长度 = s+w位
tag长度 = s-r位
主存地址格式如下:
标记 | 行 | 字地址 |
---|---|---|
s-r | r | w |
3. 组相联映射方式
将cache分成u组,每组v行,cache总行数 = u × \times × v;
内存地址中,s位块号划分成两部分:低d位( 2 d 2^d 2d = u)主存区内块号用于表示cache组号(而不是行号),高s-d位区号作为标记与块数据一起存于此组的某行中。
主存地址长度 = s+w位
tag长度 = s-d位
cache的组数 u = 2 d 2^d 2d
cache的行数 = u × \times × v
主存地址格式如下:
标记 | 组号 | 字地址 |
---|---|---|
s-d | d | w |