相关疑难解决方法(0)

Ivy Bridge上RDRAND指令的延迟和吞吐量是多少?

我在agner.org上找不到有关RDRAND指令的延迟或吞吐量的任何信息.但是,这个处理器存在,所以信息必须在那里.

编辑:实际上最新的优化手册提到了这条指令.它记录为<200个周期,Ivy Bridge上的总带宽至少为500MB/s.但是由于延迟和吞吐量是可变的,因此对该指令的一些更深入的统计将是很好的.

assembly intel rdrand

30
推荐指数
2
解决办法
5021
查看次数

在常春藤桥上RDRAND的耗尽特征是什么?

在查看英特尔数字随机数发生器(DRNG)软件实施指南之后,我对RDRAND调用时生成器的内部状态会发生什么问题提出了一些问题.不幸的是,答案似乎不在指南中.

  1. 根据该指南,在DRNG内部有四个128位缓冲器,用于提供随机位以RDRAND进行漏极.RDRAND本身将提供16位,32位或64位随机数据​​,具体取决于目标寄存器的宽度:

    rdrand ax   ; put 16 random bits in ax
    rdrand eax  ; put 32 random bits in eax
    rdrand rax  ; put 64 random bits in rax
    
    Run Code Online (Sandbox Code Playgroud)

    使用更大的目标寄存器会更快地清空这些128位缓冲区吗?例如,如果我只需要2位随机性,那么我是否应该经历在64位寄存器上使用16位寄存器的麻烦?这会对DRNG的吞吐量产生任何影响吗?我想避免消耗比必要更多的随机性.

  2. 指南说执行后将设置进位标志RDRAND:

    CF = 1   Destination register valid. Non-zero random value
             available at time of execution. Result placed in register.
    CF = 0   Destination register all zeros. Random value not available
             at time of execution. May be retried.
    
    Run Code Online (Sandbox Code Playgroud)

    "不可用"是什么意思?随机数据是否可用,因为RDRAND调用过快地耗尽了这些128位缓冲区?或者不可用意味着DRNG未通过健康检查而无法生成任何新数据?基本上,我试图理解CF …

x86 assembly x86-64 intel rdrand

12
推荐指数
2
解决办法
1436
查看次数

系统调用开销

我刚开始研究系统调用.我想知道在进行系统调用时导致开销的原因.

例如,如果我们考虑getpid(),当对getpid()进行系统调用时,我的猜测是如果控件当前在子进程中,则必须进行上下文切换以进入父进程以获取pid .这会导致开销吗?

此外,当调用getpid()时,将在用户空间边界上进行一些元数据传输并进入和退出内核.那么用户空间和内核之间的常量切换是否也会导致一些开销?

operating-system process system-calls context-switch os161

7
推荐指数
2
解决办法
5700
查看次数

RDRAND和RDSEED内在函数GCC和英特尔C++

英特尔C++编译器和/或GCC是否支持以下内在函数,例如自2012/2013年以来MSVC的内在函数?

int _rdrand16_step(uint16_t*);
int _rdrand32_step(uint32_t*);
int _rdrand64_step(uint64_t*);
int _rdseed16_step(uint16_t*);
int _rdseed32_step(uint32_t*);
int _rdseed64_step(uint64_t*);
Run Code Online (Sandbox Code Playgroud)

如果支持这些内在函数,那么它们支持哪个版本(请使用编译时常量)?

c++ gcc icc intrinsics rdrand

3
推荐指数
2
解决办法
2653
查看次数