最近几代 CPU 架构的每个周期加载/存储

问题描述 投票:0回答:1

受到这个答案的启发

sandy-bridge 和 haswell SSE2/AVX/AVX2 每个周期的 FLOPS

对于 Sandy/Ivy Bridge、Broad/Haswell、Sky/Kaby Lake,可以在核心上发出的仅加载/加载和存储的数量是多少?同样有趣的是 AMD Bulldozer、Jaguar 和 Zen 的数量。

PS - 我知道由于缓存/内存带宽的原因,这可能不是一个可持续的速率,我只是询问问题。

performance x86 cpu cpu-architecture memory-bandwidth
1个回答
5
投票

基于以下信息:

建筑 负载 商店 256 位算作 2?
桑迪/常春藤桥 1 1 是的
桑迪/常春藤桥 2 0 是的
哈斯韦尔/布罗德韦尔 2 1 没有
天湖/卡比湖 2 1 没有
冰/虎湖 2 2 否(仅针对同一高速缓存行维持 2 个存储/时钟)
桤木湖/蓝宝石 3 1 不,但吞吐量可能“有点少”
桤木湖/蓝宝石 2 2 不,但吞吐量可能“有点少”
推土机 1 1 是的
推土机 2 0 是的
捷豹 1 1 是的
禅1 1 1 是的
禅1 2 0 是的
禅2 2 1 没有
禅宗3/4 3 2 整数寄存器
禅宗3/4 2 1 不,但是处理任意宽度向量的管道更少

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

Haswell/Broadwell:2 次加载 一个存储,以及 256 位加载/存储不要算双倍。端口 7(存储 AGU)只能处理简单地址计算(基址+const,无索引),复杂情况将转到 p2/p3 并与负载竞争,简单情况无论如何可能会竞争,但至少不会到.

Sky/Kaby:与Broadwell相同

Ice/Tiger Lake:每个时钟 2 次加载和 2 次存储,每个时钟具有完全独立的执行单元(存储地址 uops 不在加载端口上运行。)仅当存储到相同的缓存行。即 1/时钟写入 L1d 缓存,但写入可以提交两个存储缓冲区条目(如果它们位于同一行)。出于内存排序的原因,两个存储缓冲区条目必须是两个最旧的条目,因此交替存储到两个单独的数组无法从中受益,除非您可以展开。

Alder Lake / Sapphire Rapids:3 个装载和 1 个商店,或 2 个装载和 2 个商店。 Agner Fog 报告了高达 128 位大小的吞吐量,但 256 和 512 位加载/存储的吞吐量“略低”。对 L1d 的承诺可能会像 Ice Lake 一样受到每个时钟超过 1 个商店的限制。

推土机:2 次装载,或 1 次装载和 1 次储存。 256 位加载和存储计数加倍。

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

Zen 1(第一代 Ryzen):2 次加载,或 1 次加载和 1 次存储。 256 位加载和存储计数加倍。

Zen 2(大多数 Ryzen 3xxx 和 4xxx,但也有一些 3xxx 型号只有 Zen+ 而不是 Zen 2)。
3 个 AGU(2 个加载/存储,1 个仅存储)。每个周期最多两次 256 位加载操作和一次 256 位存储操作。

Zen 3:标量整数 GPR 的负载吞吐量从 2 增加到 3。
对于标量整数 GPR,存储吞吐量从 1 增加到 2。 (Wikichip 错误地将其表述为“如果不是 256 位”,但是 https://uops.info/ 测试 仅确认 1/clock 向量存储,即使使用 128 位

vmovaps [mem], xmm

Zen 4:与 Zen 3 相比没有变化。AVX-512 512 位操作是单微操作,但占用加载和存储数据单元各 2 个周期,就像 Sandy/Ivy Bridge 处理 256 位加载的方式一样/店铺。 (与 512 位 ALU uop 相同,单个 uop 与 Zen 1 处理 256 位的方式不同。)

© www.soinside.com 2019 - 2024. All rights reserved.