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

受到这个答案的启发

沙桥和haswell SSE2 / AVX / AVX2每个周期FLOPS

在Sandy / Ivy Bridge,Broad / Haswell,Sky / Kaby Lake这些核心上可以发布的正负载/负载和存储的数量是多少? AMD Bulldozer,Jaguar和Zen的数量也很有趣。

PS - 我知道这可能不是一个可持续的速度,因为缓存/内存带宽,我只是在问一些问题。


基于以下信息:

  • http://users.atw.hu/instlatx64/
  • http://www.agner.org/optimize/
  • http://www.agner.org/optimize/blog/read.php?i=423
  • https://en.wikichip.org/wiki/amd/microarchitectures/zen
  • 桑迪/常春藤:每个周期,2个负载,或1个负载和1个商店。 256位的加载和存储数量是双倍的,但是仅限于加载或存储本身 - 它仍然只有一个地址,所以AGU在下一个周期再次可用。 通过混合一些256b操作,您仍然可以获得每个周期2个128b负载和1x 128b存储。

    Haswell / Broadwell:2个负载和一个商店,以及256位负载/商店不计算两倍。 端口7(store AGU)只能处理简单的地址计算(base + const,没有索引),复杂的情况会转到p2 / p3并与负载竞争,简单的情况可能会竞争,但至少不必。

    Sky / Kaby:和Broadwell一样

    推土机:2个负载,或1个负载和1个商店。 256位加载和存储数量增加一倍。

    捷豹:1个负载或1个商店,256位的加载和存储数量增加一倍。 这是迄今为止最差的一个,因为它是列表中唯一的低功耗μarch。

    Ryzen:2个负载,或1个负载和1个商店。 256位加载和存储数量增加一倍。

    链接地址: http://www.djcxy.com/p/85663.html

    上一篇: Load/stores per cycle for recent CPU architecture generations

    下一篇: Understanding FMA instructions performance