小编Har*_*per的帖子

英特尔AVX2中XOR指令“ VPXORD”,“ VXORPS”和“ VXORPD”之间有什么区别

我在AVX2指令集中看到,英特尔用不同的指令来区分整数,双精度和浮点的XOR操作。对于整数,为“ VPXORD”,对于双精度为“ VXORPD”,为浮点数“ VXORPS”

但是,根据我的理解,它们都应该对二进制数据进行相同的XOR操作。例如,两个256位寄存器的XOR,与实际数据类型无关。为什么我们需要对不同的数据类型使用不同的指令?

x86 cpu-architecture avx avx2 avx512

8
推荐指数
1
解决办法
196
查看次数

英特尔Sandy Bridge CPU中的TLB大小是如何确定的?

维基网页(https://en.wikipedia.org/wiki/Sandy_Bridge)提到Data TLB分别有4个,2个和1GB页面的64,32和4个条目.

我发现这些数字很难理解.Sandy Bridge的虚拟地址为48位,对于4K页面,可以有2 ^ 36页,对于2MB和1GB页面,应该有2 ^ 27和2 ^ 18页.如果TLB有4K页面的64个条目,则每个条目的大小应不小于6 + 36 = 42位.为什么2M页面只有32个条目,而不是2 ^ 15(42-27)个条目?

我知道在TLB条目中会有额外的位用于控制目的.但对于不同的页面大小,该空间不应该是常量吗?

architecture cpu tlb

2
推荐指数
1
解决办法
3547
查看次数

如何强制谷歌基准测试运行多次迭代?

我使用 google benchmark 来测试两个 C++ 函数。一个运行约 630,000,000 ns,另一个运行约 1,000,000,000 ns。但两者都只运行一次迭代。如何强制基准测试运行更多迭代?我希望它至少运行 10 次。

c++ microbenchmark google-benchmark

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