Re: [x86] Fix prefetch instruction
From: Christoph Lameter
Date: Fri Aug 05 2011 - 17:11:13 EST
On Fri, 5 Aug 2011, H. Peter Anvin wrote:
> On 08/05/2011 09:18 AM, Christoph Lameter wrote:
> > The prefetchnta instruction used for prefetching on x86 is a special instruction
> > used for streaming that is usually used to avoid polluting the l2 and l3 caches.
> > The cacheline will be evicted rapidly.
> >
> > What we need is a prefetch that puts the cacheline in all levels of the cache hierachy instead.
> > Change the instruction to do that.
> >
> > Acked-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> > Signed-off-by: Christoph Lameter <cl@xxxxxxxxx>
> >
>
> Have you done any performance analysis on this versus the null case? I
> know there are some workloads where it helps, but if it hurts as many as
> it helps...
No I have not. prefetch IMHO means that the cacheline is fetched early so
that the cacheline is fully available like any other to the code.
prefetchnta does fetch the cacheline too but its not treated like the other cacheline but
preferably thrown out again. Its a "streamfetch" designed for apps that
scan over large amounts of memory and want to avoid cache pollution.
This is surprising to the end user as far as I can tell.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/