为最近的CPU架构生成每个周期加载/存储

ein*_*ica 2 cpu performance x86 cpu-architecture memory-bandwidth

灵感来自这个答案

每个循环的FLOPS用于沙桥和haswell SSE2/AVX/AVX2

对于Sandy/Ivy Bridge,Broad/Haswell,Sky/Kaby Lake,可以在核心上发布的正常装载/装载和存储的数量是多少?同样有趣的是AMD Bulldozer,Jaguar和Zen的数量.

PS - 我知道由于缓存/内存带宽可能不是可持续的速率,我只是询问问题.

har*_*old 5

根据以下信息:

桑迪/常春藤:每个周期,2个负载,或1个负载和1个存储.256位加载和存储计数加倍,但仅限于加载或存储本身 - 它仍然只有一个地址,因此AGU在下一个周期再次可用.通过混合大约256b操作,您仍然可以获得每周期2x 128b负载和1x 128b存储.

Haswell的/ Broadwell微架构:2个负荷商店,以及256位加载/存储重复计算.端口7(存储AGU)只能处理简单的地址计算(base + const,没有索引),复杂的情况将转到p2/p3并与负载竞争,简单的情况可能无论如何都要竞争,但至少不必.

Sky/Kaby:和Broadwell一样

推土机:2个负载,或1个负载和1个存储.256位加载和存储计数加倍.

Jaguar:1个装载或1个存储,256位装载和存储计数加倍.到目前为止这个列表中最糟糕的一个,因为它是列表中唯一的低功耗μarch.

Ryzen:2次加载,或1次加载和1次存储.256位加载和存储计数加倍.