【问题标题】:Good hash function for cache memory?缓存内存的好散列函数?
【发布时间】:2013-06-13 18:31:15
【问题描述】:

我想实现一个进入高速缓存的哈希函数。最初,我有 20 位输入,我需要将此输入散列为 7 位。

我的缓存是 128x4。

我尝试了不同的哈希函数,但结果不是很好(我得到了 60% 的命中率)。我正在考虑使用 MD5 算法,但也许有更好的方法。我在网上阅读了一个MD5的实现,但我没有得到它。

【问题讨论】:

  • 这个不清楚,你说的“进入缓存的哈希函数”是什么意思?
  • 哈希函数的输出是缓存的索引。
  • 查看@Mdlg 中的答案 SO“可以使用 CRC32C 作为基础构造一个“好的”哈希函数吗?”。我在使用 CRC 进行哈希方面取得了相当大的成功。
  • MD5 不是一个好主意,你想要一个可以快速计算的哈希函数,计算 MD5 非常复杂,并且需要在加密上下文中使用。
  • 你能发布更多参数吗?我认为x4 是四路组关联的,但是缓存线有多大?你会在硬件中实现这个吗?你使用什么样的测试模式?这个缓存是用于特殊应用还是通用 CPU 缓存?

标签: c algorithm caching hash hashcode


【解决方案1】:

在这里,看起来完美分布的哈希实际上可能是不可取的。它提供了将附近地址映射到同一组的可能性。

也许您想要做的是将 17 位向下哈希为 4,并将三个低位直接映射,以保证同一集合的实例之间的最小距离。

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 2021-02-15
    • 2013-09-17
    • 2020-05-29
    • 1970-01-01
    • 2010-10-14
    • 2011-11-07
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多