2
\$\begingroup\$

I am currently researching triple-modular redundancy implementations and majority-gate voting logic and I'm wondering how the canonical single-bit majority voters found in textbooks are scaled up to large, bus-width implementations.

If we use the TMR voter \$\,\,\mathrm{Maj}(A,B,C) = AB + BC + AC\$, this function always agrees for single-bit input (there is always a 2-way majority output). However, for larger, multi-bit implementations, there is an additional option - the individual bit majority gates may agree 2-of-3 on a per-bit basis, but agree differently as a whole and thus the output of a majority bus is not equal to any of the voting inputs. For example, \$\mathrm{Maj}(\mathtt{0xF32D}, \mathtt{0xA79B}, \mathtt{0xD232}) = \mathtt{0xF33B}\$.

How do actual TMR systems handle this? I've looked through a number of resources, such Koren & Krishna's Fault Tolerant Systems and Shooman's Reliability of Computer Systems and Networks and can't find a treatment of this particular case. From the more general readings, it seems like one of two approaches may be used:

  1. Assume that the system is designed to correct only single faults and thus leave the output as-is, judging the risk of this scenario to be acceptable
  2. Use some sort of additional to flag to indicate "ultimate disagreement", i.e. the voting could not produce a correct output given the inputs

Are there other means to handle this issue or further couple the voting outputs?

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Prologue

You're making the classical mistake to, having learned how to use a hammer, assume that every problem in this world is a problem solved through nailing.

Modelling the Problem You Need to Solve

I think you're modelling isn't useful at all:

Either,

  1. your multi-bit decision problem (in your case, 16 bits) decomposes into independent single-bit decision problems, where you vote individually, and due to an odd number of voters always end up with a majority, no matter what. This problem is already solved. Or,
  2. the bits actually are logically dependent, and you mustn't decide the things on an individual bit level. Then, you mustn't think of the outputs as "collection of bits" but as symbols from a discrete alphabet, and even thinking about making per-bit decisions should occur to be nonsensical to you.

you need to figure out which kind of problem you're looking at.

Example

In general, you have problem 2! Think about it. Say, you have three temperature sensors, giving you temperature in degree celsius

sensor °C binary
1. Sensor 60°C 0b0111100
2. Sensor 65°C 0b1000001
3. Sensor 32°C 0b0100000
per-bit consensus 0b0100000
consensus converted back 32 °C

… which seems unlikely, at least when temperatures around 60°C are as likely as around 30°C.

Estimators

Remember why you do majority votes. You do it to find the most probable value of the underlying phenomenon. Knowing how to do a majority vote is worthless if you don't know in which situation to do a majority vote.

So, what you really want when you do that is an estimate for the most likely explanation for the things you can observer. A maximum likelihood estimator.

Majority Vote as Maximum Likelihood Estimator for Binary Independently Identically Distributed Decision Problems

You use the binary majority vote only for binary outputs \$X_i\$, $$ X_i \in \{ 0, 1\}, \quad i = 1, 2, 3$$ based on some underlying effect \$U\in \{ 0, 1\}\$ which you try to get, but can't directly but only through the fallible systems \$X_1, X_2, X_3\$, where you consider all three systems to be equally likely to make a mistake, $$P(X_1 \ne u | U = u) = P(X_2 \ne u | U = u) = P(X_2 \ne u | U = u) = P_{\text{error}, u},$$ and where you assume these error occur independently, \begin{align} P(X_1 \ne u \wedge X_2 \ne u \wedge X_3 \ne u | U = u) &= P(X_1 \ne u | U = u)P(X_2 \ne u | U = u)P(X_3 \ne u | U = u)\\ &= P_{\text{error}, u}^3 \end{align} it just happens so that the majority vote is the maximum likelihood. (Exercise: write down, compare probability of two observers being wrong to probability of one being wrong. Easy, really do it!)

So, for anything where there's more than one way to be wrong, this is not a Bernoulli experiment, and you will actually have to sit down and do the stochastics modelling to figure out what the most probably right solution is.

Continuous-Value Problems: Modelling Probabilities

Consider the sensor example above: If we assume, indepedently of temperature, the probability of measurement error to be independently Gaussian distributed with a standard deviation > 20 °C, then a value somewhere between 60 °C and 34 °C becomes probable. But if we assumed measurement error to have a standard deviation of 2.9 °C, then it's extremely unlikely that both the first and second sensor are off by this much, and the most probable value will be somewhere between 60°C and 65°C.

Things get more complicated if you know that it's much more likely that your temperature is between 25 °C and 45°C, so that your error probability densities depend on the actual temperature.

Methodology

In all these cases, a designer would:

  1. model the probability distribution of the true value, the probability density functions of each sensor, and if the sensor have correlated errors, joint probability density functions
  2. find a good estimator for the use case based that can convert any triplet of values to a good estimate of the true value, based on the model in 1.
  3. find an implementation of that in digital logic; if that logic ends up being very complete, they might modify the estimator from 2. to be easier but suboptimal.

Applying the Methodology to Binary I.I.D. Decision Problems

Going back to the very beginning of this answer, for your three binary outputs, these three steps would have been:

  1. \$P_{err} = \text{const.}\$ for all three sensors. They are independent, so no crosscorrelation, the joint probability of the error of all three is just the product of the individual error probabilities.
  2. We look for the estimator that is most likely to give the right answer. That's the majority vote.
  3. We implement that with a majority gate. Which is simple enough, and we're done.

Outlook

Where you find that problem all of the time is digital communications! By the very principle of it, all communications is based on noisy observation, and finding the most likely transmitted symbol, considering only what noisy stuff we observed, is the decision problem. We help by building the transmitting system such that we transmit additional redundant data, that a forward error correcting logic at the receiver can use to (approximate) a maximum likelihood observation.

This is sometimes also done in redundancy/reliability engineering, if the problem allows for independent observation which one can use to actually build a error correcting mechanism. It is ubiquitous in quantum computers, where you need so-called quantum stabilizer codes, and apply all your computations to all redundant elements of these redundancy-carrying form of the underlying problem. But quantum computing a) needs that very much by principle of what is "quantum" and b) has the rather rare property that the logic elements that it's made of inherently allow for independent non-destructive modification until an observation of the error-corrected result yields insight on the (most likely) correct answer. That's not as common for a flight computer, or other things where you'd use majority voting methods.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.