Performance 流行的CPU/CPU指令集是否支持快速数据访问?

Performance 流行的CPU/CPU指令集是否支持快速数据访问?,performance,cpu,memcpy,stride,Performance,Cpu,Memcpy,Stride,假设我有两个结构数组(结构具有相同的类型、大小、字段偏移等),我想将第一个数组中所有结构的第一个字段复制到第二个数组中结构的第一个字段上 现代Intel、AMD、ARM和其他CPU是否支持这种操作,而不是通过每个对应结构对的一系列加载和存储指令 如果答案为“是”,那么目标结构的类型、大小和字段不相同(即,当源数据跨距与目标数据跨距不同,但两者都已知时)的情况如何?没有特殊的跨距加载/存储指令,但硬件预取机制将检测到跨步访问,并在检测到模式(并假设有备用带宽)后启动自动预取。好吧,如果我的阵列有一

假设我有两个结构数组(结构具有相同的类型、大小、字段偏移等),我想将第一个数组中所有结构的第一个字段复制到第二个数组中结构的第一个字段上

现代Intel、AMD、ARM和其他CPU是否支持这种操作,而不是通过每个对应结构对的一系列加载和存储指令


如果答案为“是”,那么目标结构的类型、大小和字段不相同(即,当源数据跨距与目标数据跨距不同,但两者都已知时)的情况如何?

没有特殊的跨距加载/存储指令,但硬件预取机制将检测到跨步访问,并在检测到模式(并假设有备用带宽)后启动自动预取。

好吧,如果我的阵列有一百万个元素长,我仍然需要循环一百万个元素。无序执行和预取可能会对我有所帮助,但仅此而已。AVX-512对分散/聚集的支持可能允许将其矢量化,但加载/存储端口计数仍会限制吞吐量。如果AoS可以在不干扰普通操作的情况下被重铸为阵列结构,那么这样的复制将很简单;但据推测,OP已经知道了这一点。