gpt4 book ai didi

gcc - RDSEED 和 RDRAND 之间的性能差异可以忽略不计

转载 作者:行者123 更新时间:2023-12-04 19:08:50 30 4
gpt4 key购买 nike

最近的英特尔芯片(Ivy Bridge 及更高版本)具有生成(伪)随机位的指令。 RDSEED输出从芯片上传感器收集的熵生成的“真实”随机位。 RDRAND输出由真随机数生成器播种的伪随机数生成器生成的比特。根据 Intel's documentation , RDSEED速度较慢,因为收集熵的成本很高。因此,RDRAND作为一种更便宜的替代方案提供,并且其输出对于大多数加密应用程序来说是足够安全的。 (这类似于 Unix 系统上的 /dev/random/dev/urandom。)

我很好奇这两条指令的性能差异,所以我写了一些代码来比较它们。令我惊讶的是,我发现有 几乎没有区别在性能上。有人可以提供解释吗?代码和系统详细信息如下。

基准

/* Compare the performance of RDSEED and RDRAND.
*
* Compute the CPU time used to fill a buffer with (pseudo) random bits
* using each instruction.
*
* Compile with: gcc -mdrnd -mdseed
*/
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <x86intrin.h>

#define BUFSIZE (1<<24)

int main() {

unsigned int ok, i;
unsigned long long *rand = malloc(BUFSIZE*sizeof(unsigned long long)),
*seed = malloc(BUFSIZE*sizeof(unsigned long long));

clock_t start, end, bm;

// RDRAND (the benchmark)
start = clock();
for (i = 0; i < BUFSIZE; i++) {
ok = _rdrand64_step(&rand[i]);
}
bm = clock() - start;
printf("RDRAND: %li\n", bm);

// RDSEED
start = clock();
for (i = 0; i < BUFSIZE; i++) {
ok = _rdseed64_step(&seed[i]);
}
end = clock();
printf("RDSEED: %li, %.2lf\n", end - start, (double)(end-start)/bm);

free(rand);
free(seed);
return 0;
}

系统详情
  • 英特尔酷睿 i7-6700 CPU @ 3.40GHz
  • Ubuntu 16.04
  • gcc 5.4.0
  • 最佳答案

    您没有检查返回值,因此您不知道生成了多少实际随机数。重试,如弗洛里安 suggested RDSEED版本慢了 3 倍以上:

    RDRAND: 1989817
    RDSEED: 6636792, 3.34

    在幕后,硬件熵源可能仅以有限的速率生成,这导致 RDSEED当以比熵可以再生的速度更快的速度调用时失败。 RDRAND ,另一方面,只是基于定期重新播种生成伪随机序列,因此不太可能失败。

    这是修改后的代码摘录:
      // RDRAND (the benchmark)
    start = clock();
    for (i = 0; i < BUFSIZE; i++) {
    while (!_rdrand64_step(&rand[i]))
    ;
    }
    bm = clock() - start;
    printf("RDRAND: %li\n", bm);

    // RDSEED
    start = clock();
    for (i = 0; i < BUFSIZE; i++) {
    while (!_rdseed64_step(&seed[i]))
    ;
    }
    end = clock();

    关于gcc - RDSEED 和 RDRAND 之间的性能差异可以忽略不计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336283/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com