我是菜鸟,很抱歉,我了解哈希表和转换后备缓冲区(TLB)是什么,但似乎它们适用于相似的主体。我在这里想念什么?
哈希表使用哈希函数,该函数将原始值的特定空间映射到较小的结果值空间。想法是,如果通常不完全使用原始空间,则最好使用映射的空间,例如用于表查找。由于在此映射中,一个以上的原始值被映射到相同的结果值,因此会出现需要解决冲突的冲突,这没有问题。另一方面,TLB用于将较大的虚拟内存空间映射到较小的物理内存空间。为此,它缓存虚拟地址,即,它将虚拟地址映射到物理地址。有很多方法可以做到这一点。最简单的(用于解释)是直接映射的缓存。它使用虚拟地址的上部作为高速缓存的地址。存储在其中的是虚拟地址的下部以及相应的物理地址。因此,可以将其视为具有哈希函数的哈希表,该哈希函数将具有相同高位的所有虚拟地址映射到相同的缓存地址。但是,这里的冲突(在直接映射的缓存中)通过用新条目替换旧条目来解决。如果缓存组织更为复杂,即作为多路关联缓存,则可以通过在可用的关联存储位置之间分配新条目来处理冲突。因此,您是对的,哈希表和TLB之间没有本质区别。