【发布时间】:2020-06-24 20:03:20
【问题描述】:
我是个菜鸟,很抱歉,我了解什么是哈希表和什么是翻译后备缓冲区 (TLB),但它们似乎在相似的原则上工作。我在这里错过了什么?
【问题讨论】:
-
硬件与软件?
我是个菜鸟,很抱歉,我了解什么是哈希表和什么是翻译后备缓冲区 (TLB),但它们似乎在相似的原则上工作。我在这里错过了什么?
【问题讨论】:
散列表使用散列函数将原始值的某个空间映射到结果值的较小空间。这个想法是,如果原始空间通常没有完全使用,最好使用映射空间,例如用于表查找。由于在此映射中,不止一个原始值被映射到相同的结果值,因此可能会出现需要解决冲突的冲突,这没有问题。
另一方面,TLB 用于将大的虚拟内存空间映射到小的物理内存空间。为此,它会缓存虚拟地址,即将虚拟地址映射到物理地址。有很多方法可以做到这一点。最简单的(用于解释)是直接映射缓存。它使用虚拟地址的上半部分作为高速缓冲存储器的地址。存储的还有低位的虚拟地址和对应的物理地址。因此,可以将其视为具有哈希函数的哈希表,该哈希函数将具有相同高位的所有虚拟地址映射到相同的高速缓存地址。但是,这里(在直接映射缓存中)通过用新条目替换旧条目来解决冲突。如果缓存组织更复杂,即作为多路关联缓存,则通过在可用关联存储位置之间分配新条目来处理冲突。
所以,你是对的,哈希表和 TLB 没有本质区别。
【讨论】: