页偏移量由在页内寻址且不由 TLB 转换的位组成。对于 16 KiB 页面,页面偏移量为 14 位。
对于 35 位的虚拟地址,这会留下 21 位来索引 TLB 中的集合并标记该集合中的条目。由于 TLB 有 256 个条目,每个集合有 8 个条目(8 路关联),因此有 32 个集合,需要 5 位来索引一个集合。这为标签留下了 16 位。
物理页号的大小等于物理地址的大小减去页偏移量的大小:32 - 14 = 18 位。
说明既不是直接映射也不是完全关联的 TLB 比示例完全关联的 TLB 更复杂,因为这样会增加集合索引的维度。这可以通过覆盖方式来处理,以便一种方式(索引维度)完全可见。这是一个 4 路结构的 ASCII 艺术版本,每路 8 个条目:
+----------+----------+
+----------+----------+ |
+----------+----------+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+
| | |-+
+----------+----------+
对于 32 个集合,可能希望使用省略号 (...) 来表示其中的大部分。类似地,省略号可用于暗示某个方式内的条目(而不是必须绘制数百个条目)。
对于高速缓存,假设访问 4 字节,字节偏移量将是 2 位。块偏移用于索引缓存块内的 4 字节块。对于 128 字节缓存块,索引特定字节需要 7 位,因此索引 4 字节块只需要 5 位。
2-way associative 64 KiB 将有 32 KiB 在每一路。对于 128 字节的缓存块,这意味着每路将有 256 个块,因此需要 8 位物理地址(超出块和字节偏移量)来索引特定集(每路内的缓存块)。这是缓存索引。
给定一个 32 位物理地址、8 位缓存索引、5 位块偏移和 2 位字节偏移,标签将是 17 位 (32 - 8 - 5 - 2)。