如何学习TLB的关联性(路数)?

时间:2011-12-25 19:22:55

标签: tlb cpu-cache

我有一项任务是了解TLB缓存中的方法数量。我应该使用哪种算法?

1 个答案:

答案 0 :(得分:0)

关于您需要帮助的问题有点不清楚,所以这是与您提到的主题相关的信息摘要。

有两种“方式”到达内存 - 直接映射,其中页表保存在内存中并由虚拟页码索引。要从虚拟页码转换为实际页码,操作系统将转到页表的基地址并添加虚拟页码。此位置的值提供页面的真实地址。

另一种方式是关联映射。关联映射将页表保持在内容寻址的内存中,因此当查找虚拟地址时,将并行搜索所有进程的页面,从而产生O(1)查找时间复杂度。另一个优点是,它只存储实际分配的页面。

问题在于关联映射需要特殊的硬件来完成内容寻址的内存。

所以权衡是使用少量的内容寻址内存(TLB =您在问题中引用的转换后备缓冲区),大多数使用直接映射。

然后,最重要的考虑因素是何时在TLB中放置一个地址,哪个旧地址从TLB中逐出。为此,有许多选择:最有可能是最近最少使用(LRU)来利用时间局部性。其他选择可能是Least Frequently Used,Round Robin(这里可能不太好),WS_Clock等。