TLB 设计
加入 TLB 和 Cache
TLB 的设计
#问题
书中说:TLB 利用的是时间相关性,空间相关性没有明显的规律
揣测原因:
- 跨 4KB 页的连续数据访问不多
- Cache 的空间相关性是 cache line 之间,block 之间,block 之内
现代处理器经常采用二级 TLB
- 第一级 TLB 采用哈佛结构,I-TLB 和 D-TLB
- 第二级 TLB 采用全组连,指令和数据共用的方式
TLB 只会修改 Dirty (Store 指令) 和 Use (访问过) 位
注:TLB 访问和 Cache 访问的区别
- Cache 是组相联,TLB 是全相连,需要和所有项比较 Tag(所以 TLB 的大小小,否则访问延迟很大)
- TLB 访问是索引 tag,找到对应的 PFN
- Cache 访问是索引 index,拿出 Tag 去比对,再找到对应的数据
页面大小修改
如果采用 1MB 大小的页时,只需要比较 VA[31:20]作为 Tag 索引即可