【发布时间】:2013-03-12 18:32:36
【问题描述】:
关于非临时写入和写入组合技术,我有以下代码
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);
}
取自here
上面写着
总而言之,这个代码序列不仅避免了读取缓存 在写入之前的行,它也避免了污染缓存 可能很快不需要的数据。这可以带来巨大的好处 某些情况。
我的问题是:避免写入哪个缓存行?存储 i 变量内容的缓存行还是 p 指针指向的缓存行(之后会被修改)?
【问题讨论】:
标签: caching memory x86-64 intrinsics