问题描述
假设您调用 _mm512_mask_store_ps ,从cpu的写缓冲区的角度来看,它是作为 size 64字节的存储区执行的(某种形式的掩码)还是在内部作为多个大小为4个字节的存储区执行?
为了防止存储到负载转发停顿,必须使存储的粒度(大小)与后续到同一内存位置的负载的粒度相匹配。 希望这个问题有意义,我不是cpu架构专家。
解决方法
Iwillnotexist所引用:
如果掩码不是全为1或全为0,则取决于掩码的载荷 存储必须等到将存储数据写入高速缓存。如果 掩码全为1,可以将数据从掩码存储转发到 相关负载。如果掩码全为0,则负载不依赖于 蒙面的商店。
因此,除了掩码为全1(行为类似于常规存储)或全为零(平凡)的情况之外,没有对掩码存储进行存储到加载的转发。 屏蔽存储区通常在等待数据发送到缓存后才加载,因此它应该非常昂贵。