Messages in this thread | | | From | Linus Torvalds <> | Date | Wed, 4 Oct 2023 13:19:54 -0700 | Subject | Re: [PATCH v2 4/4] x86/percpu: Use C for percpu read/write accessors |
| |
On Wed, 4 Oct 2023 at 13:12, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > On Wed, 4 Oct 2023 at 13:08, Uros Bizjak <ubizjak@gmail.com> wrote: > > > > You get a store forwarding stall when you write a bigger operand to > > memory and then read part of it, if the smaller part doesn't start at > > the same address. > > I don't think that has been true for over a decade now. > > Afaik, any half-way modern Intel and AMD cores will forward any fully > contained load.
https://www.agner.org/optimize/microarchitecture.pdf
See for example pg 136 (Sandy Bridge / Ivy Bridge):
"Store forwarding works in the following cases: .. • When a write of 64 bits or less is followed by a read of a smaller size which is fully contained in the write address range, regardless of alignment"
and for AMD Zen cores:
"Store forwarding of a write to a subsequent read works very well in all cases, including reads from a part of the written data"
So forget the whole "same address" rule. It's simply not true or relevant any more.
Linus
| |