In computers, sequential consistency is best defined by its inventor, Leslie Lamport, who declared that a multiprocessing system had sequential consistency if:
"...the results of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program."This definition was one of the first statements on what constituted "correct" behavior for a symmetric multiprocessing ( SMP ) system. It has been restated in various forms, among them the following:
Sequential consistency requires that a shared memory multiprocessor appear to be a multiprogramming uniprocessor system to any program running on it.Sequential consistency requires that:
1. All instructions are executed in order.
2. Every write operation becomes instantaneously visible throughout the system.
Implicit in the definition of sequential consistency was the acknowledgement that SMP systems could fail to be sequentially consistent. Should machines be sequentially consistent? From the vantage point of almost twenty years later, the answers are mixed. Some say "yes", that machines should conceal implementation complexities in order to make the machines as easy to use as possible. Others say "no", that violating SC allows machines to increase performance considerably while at the same time inconveniencing only a vanishingly small number of programmers.