Sergei,

On Sat, 21 Oct 2023 at 14:56, Sergei Golubchik <s...@mariadb.org> wrote:

> Hi, Nikita,
>
> On Oct 21, Nikita Malyavin wrote:
> >
> > > > > Did you think it's expensive or did you benchmark that?
> > > > I did, actually! (in the past). Taking a mutex needs to reserve
> > > > the associated cache line, which is not free. "Expensive" is
> > > > relative, of course.
> > >
> > > I'm sure it's an implementation detail.
> > > But I've just looked on my laptop and the mutex lock was
> > >
> > >   lock cmpxchg
> > >
> > > so, it's a bus lock, indeed, not cheap.
> > >
> > It's never a bus lock on the modern implementations, it rather
> > specifies the operation to execute atomically.
>
>   Causes the processor’s LOCK# signal to be asserted during execution of
>   the accompanying instruction (turns the instruction into an atomic
>   instruction). In a multiprocessor environment, the LOCK# signal
>   insures that the processor has exclusive use of any shared memory
>   while the signal is asserted.
>
> This is from the "IA-32 Intel® Architecture Software Developer’s Manual
> Volume 2A: Instruction Set Reference, A-M", that can be downloaded from
> intel.com.
>

Volume 3A: System Programming Guide, Part 1
<https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf>

> 8.1.4 Effects of a LOCK Operation on Internal Processor Caches
> For the Intel486 and Pentium processors, the LOCK# signal is always
> asserted on the bus during a LOCK operation, even if the area of memory
> being locked is cached in the processor.

For the P6 and more recent processor families, if the area of memory being
> locked during a LOCK operation is cached in the processor that is
> performing the LOCK operation as write-back memory and is completely
> contained in a cache line, the processor may not assert the LOCK# signal on
> the bus. Instead, it will modify the memory location internally and allow
> it’s cache coherency mechanism to ensure that the operation is carried out
> atomically. This operation is called “cache locking.” The cache coherency
> mechanism automatically prevents two or more processors that have cached
> the same area of memory from simultaneously modifying data in that area.
>
-- 
Yours truly,
Nikita Malyavin
_______________________________________________
developers mailing list -- developers@lists.mariadb.org
To unsubscribe send an email to developers-le...@lists.mariadb.org

Reply via email to