Meta-stability
Meta-stability refers to a situation in which a digital circuit element (usually one involving feedback - i.e. outputs are connected back to inputs) which is theoretically binary is actually in a state which is neither '0' nor '1'. (This is an instance of Vonada's Maxim #2 that 'digital circuits are made from analog parts'.)
Generally, if the output is 'toward' one of those two values, the circuit moves quickly (through feedback) all the way to that value. However, if it is balanced precisely in the middle, it may take a while before it fluctuates to one side or the other, and then rapidly moves to that value.
This situation may resolve itself quickly (i.e. considerably faster than the speed of the overall circuit), in which case it is generally not an issue; or it may persist for some time (in theory, for an un-bounded period), in which case it can be a significant problem.
Note that there is no way to avoid this situation (and considerable theoretical work has gone into studying it, and 'proves' that there is no solution). The best one can do is create circuits that ask 'is it still trying to decide', and if so, wait.
Latches and arbiters
The most common circuit to display this issue is the latch, which is a circuit with feedback. In line with the axiom above, this feedback is not digital (i.e. restricted to '0' or '1'), but may be any intermediate voltage.
As long as only one input to a latch changes at a time, there is no problem; the output will change as expected, after the usual propagation delay. However, if several inputs change at the same time (i.e. a race condition), if the timing in the race is perfect (sic), it can cause meta-stability.
One class of circuit in which meta-stability issues are a particular concern are synchronizers of all kinds, particularly arbiters. These are often constructed using latches, and their inputs may contain races (indeed, the function of an arbiter is precisely to resolve races). Unfortunately, it is precisely races which can cause a latch to go meta-stable.
A designer cannot avoid all races (some are inherent in what a particular circuit is trying to do), but they can try and move them to places (in time and/or the logic) where the meta-stability which may ensue isn't harmful.
History
The problem was independently re-discovered several times, without gathering significant attention, before the LINC group at WUSTL came across it, and after studying it intensively, was able to interest the rest of the electrical engineering profession in it.
It is thought that meta-stability issues may have caused many computer 'crashes' early on, but since meta-stability failures are very hard to reproduce outside of carefully controlled laboratory situations, likely most such crashes went un-recognized for what they were.
See also
- M7821 Interrupt Control - a DEC arbiter card which likely had meta-stability issues
Further reading
- Severo M. Ornstein, Computing in the Middle Ages", AuthorHouse, 2002 - An autobiography which describes early WUSTL work with meta-stability
- Warren Mackie Littlefield, Thomas J. Chaney, "The Glitch Phenomenon", Technical Memo No. 10, Washington University in St. Louis, 1966 - An extensive look at early WUSTL work on meta-stability
- Thomas J. Chaney, Charles E. Molnar, Anomalous Behavior of Synchronizer and Arbiter Circuits, IEEE Transactions on Computers, Vol. C-22, pp 421-422, 1973 - One of the earliest papers in the literature once meta-stability had been accepted in the field as a real issue
- Thomas J. Chaney, My Work on All Things Metastable: Me and My Glitch, 2012 - Extensive notes about work on meta-stability during a professional career