我在AVX2指令集中看到,英特尔用不同的指令来区分整数,双精度和浮点的XOR操作。对于整数,为“ VPXORD”,对于双精度为“ VXORPD”,为浮点数“ VXORPS”
但是,根据我的理解,它们都应该对二进制数据进行相同的XOR操作。例如,两个256位寄存器的XOR,与实际数据类型无关。为什么我们需要对不同的数据类型使用不同的指令?
维基网页(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条目中会有额外的位用于控制目的.但对于不同的页面大小,该空间不应该是常量吗?
我使用 google benchmark 来测试两个 C++ 函数。一个运行约 630,000,000 ns,另一个运行约 1,000,000,000 ns。但两者都只运行一次迭代。如何强制基准测试运行更多迭代?我希望它至少运行 10 次。