【发布时间】:2012-05-16 02:00:44
【问题描述】:
【问题讨论】:
-
我不知道答案,没有运行基准测试,但作为感兴趣的一方,我可以问“你希望它有多快?” IE。哪些应用需要大量 RDRAND?顺便说一句,这里有两个单独的问题:(a)指令在延迟和吞吐量方面有多快,以及(b)它的读取速度是否比熵池累积的速度更快? IE。你能用尽熵池,只用伪随机数吗?
-
我能想到为什么有人会关心的唯一原因是决定是直接使用
RDRAND还是通过PRNG。在这两种情况下,您都会得到相同的可观察行为,但其中一种可能比另一种要快得多,而且还不能立即看出会是哪一种。 (KrazyGlew:你的b有点无关紧要。这就像问你在转换成水之前得到了多少圣水。两者之间没有可察觉的区别,在这种情况下,这种区别基本上没有意义。) -
@KrazyGlew 一个用例正在为 GPU 上的统计采样生成随机数。
-
相关:Is there any legitimate use for Intel's RDRAND? 具有针对
std::mt19937PRNG 的基准。如果有的话,RDRAND 可能比那个测试慢,因为他们不使用结果(正如大卫的回答所解释的那样,这在 asm 中是有问题的)。 -
Agner 的测试现在包括 RDRAND 号码。 IvB 吞吐量:每 104-117 个时钟一个。 SKL 吞吐量:每 ~460 个时钟一个。 (但大概这取决于核心时钟速度,如果 DRNG 以恒定时钟运行。不过,Agner 在 i7-3770k 上进行了测试,因此 IvB 的时钟不应该非常低,使得 RDRAND 看起来很快。除非它处于空闲状态时钟速度?或者也许他的测试也没有使用结果,并且 IvB 比 SKL 更好地压扁了“死”微指令。)