【发布时间】:2015-05-02 09:15:37
【问题描述】:
根据http://www.agner.org/optimize/instruction_tables.pdf,POPCNT 指令(返回 32 位或 64 位寄存器中设置的位数)在现代 Intel 和 AMD 处理器上每个时钟周期的吞吐量为 1 条指令。这比任何需要多条指令的软件实现都要快得多 (How to count the number of set bits in a 32-bit integer?)。
POPCNT 是如何在硬件中如此高效地实现的?
【问题讨论】:
-
此操作也称为汉明权重。这可能对您的研究有所帮助。例如,请参阅Digital Hamming Weight and Distance Analyzers for Binary Vectors and Matrices (Sklyarov 2012)。
-
如果某些东西是在硬件中实现的(不是微码),它应该很快。无论如何,如果你有足够的内存和缓存,你可以很容易地在软件中实现高速弹出计数,使用查找表