我可能会被迫编写一些涉及多个输入数组和结果数组的性能关键C/C++代码(不必介意确切的类型)。由于某些原因,我想在我的输出数组的小块上工作,根据输入对它们进行修改 - 但是没有经常读写它们回到内存,因为我不相信缓存(也就是说,我担心输入数组会覆盖它,最终我会做内存读写操作,这真是太可怕了......)所以,我正在考虑安全地使用它,并试图留在寄存器中。我可以在寄存器中获取一个小的本地数组吗?
- 我可以得到一个小的,本地的,固定长度的数组只能存储在寄存器中吗?
- 我该如何做到这一点?
- 这样的阵列可以有多大(比如,在Haswell或Skylake核心上)?
你不能使用非缓存污染读取等?无论如何,除非所有索引都是恒定的,否则你无法合理地做到这一点(它可以完成,只是不合理,你不会喜欢它),然后它真的不是一个“在寄存器中的数组”,而只是照常工作,保持在你操作它时寄存器中的东西。 – harold