Home

splitlock

Splitlock is a term used in computer architecture to describe a condition in which an atomic operation that uses a lock prefix cannot complete atomically because the memory system must service the request with multiple bus transactions. In x86 architectures, the LOCK prefix is intended to serialize access to a memory operand for the duration of the instruction, ensuring exclusive ownership. However, under certain hardware configurations—such as accesses to memory-mapped I/O, non-cache-coherent memory, or complex cache/memory scenarios—the lock may be distributed across more than one bus transaction. When this occurs, the operation is effectively split into segments, potentially compromising the intended atomicity of the instruction and introducing performance penalties.

Detection and handling of split locks vary by processor and platform. Some CPUs can detect split-lock conditions

Impact and mitigation center on performance and correctness. Split locks can significantly slow down systems and,

See also: LOCK prefix, atomic operation, memory ordering, x86 architecture, cache coherence.

and
may
stall
the
issuing
core
or
expose
signals
to
performance
monitoring
features.
In
some
environments,
the
operating
system
or
hypervisor
may
treat
repetitive
split-lock
behavior
as
a
fault
to
avoid
data
corruption
or
severe
performance
degradation,
potentially
terminating
the
offending
thread
or
applying
mitigations.
in
some
cases,
obscure
race
conditions
by
failing
to
provide
the
guaranteed
atomicity
of
an
operation.
Mitigation
strategies
include
keeping
critical
sections
short,
avoiding
atomic
operations
that
involve
I/O
or
non-cache-coherent
memory,
using
lock-free
data
structures
or
higher-level
synchronization
primitives,
and
ensuring
memory
involved
in
locked
operations
remains
cache-resident
and
coherent.
Profiling
tools
can
help
identify
excessive
split-lock
events.