假设您调用 _mm512_mask_store_ps ,从CPU的写缓冲区的角度来看,它是作为大小为64字节的存储区执行(带有某种掩码)还是在内部作为大小为4字节的多个存储区执行? ?
为了防止存储到负载转发停顿,必须使存储的粒度(大小)与后续到同一内存位置的负载的粒度相匹配。
希望这个问题有意义,我不是CPU体系结构专家。
最佳答案
正如Iwillnotexist所提到的:
因此,除了掩码为全1(行为类似于常规存储)或全为零(平凡)的情况之外,没有对掩码存储进行存储到负载转发。
屏蔽存储区后的加载通常等待数据发送到缓存,因此它应该非常昂贵。
关于performance - AVX512中 “masked”存储的粒度是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63731437/