关于非时间写入和写入组合技术,我有以下代码
void setbytes(char *p, int c)
{
__m128i i = _mm_set_epi8(c, c, c, c,
c, c, c, c,
c, c, c, c,
c, c, c, c);
_mm_stream_si128((__m128i *)&p[0], i);
_mm_stream_si128((__m128i *)&p[16], i);
_mm_stream_si128((__m128i *)&p[32], i);
_mm_stream_si128((__m128i *)&p[48], i);
}
取自这里
上面写着
总而言之,这个代码序列不仅避免了在写入之前读取缓存行,还避免了可能很快不需要的数据污染缓存。在某些情况下,这可以带来巨大的好处。
我的问题是:避免写入哪个缓存行?存储 i 变量内容的缓存行还是 p 指针指向的缓存行(之后会被修改)?