5.5.25 · D5Embedded Systems & Real-Time Software

Question bank — Redundancy — TMR (triple modular redundancy), voting logic

2,388 words11 min readBack to topic

This is the Hinglish parent's companion trap bank. It builds directly on the parent topic and leans on Fault Tolerance Fundamentals, Common-Cause Failures, Byzantine Fault Tolerance, and Redundancy vs. Diversity. Every item targets a misconception the topic quietly invites.


True or false — justify

TMR always makes a system more reliable than a single module.
False. Only when each module's reliability ; below that, two flaky modules outvote the one good one more often than all three succeed, so .
At exactly, TMR reliability equals single-module reliability.
True. , so the crossover point is precisely — the grey and blue curves in Figure 2 cross there, they don't just touch.
A TMR system can survive two simultaneous module failures.
False. Two failures leave only one working module, which cannot form a majority; the voter has no 2-out-of-3 agreement and the system fails or halts.
TMR tells you which module failed.
False. It only tells you a minority disagreed; you know someone is wrong but not who without extra diagnostics like Watchdog Timers or comparison logic.
The voter itself is a single point of failure in classic TMR.
True. If the voter is a plain unreplicated circuit, its failure defeats all three modules at once — which is why voters are hardened or themselves replicated.
Independent failure of modules is a guaranteed property of TMR.
False. It is an assumption. Shared power supplies, clocks, or identical software bugs cause Common-Cause Failures that hit all three at once, breaking the independence the math relies on.
Running the same software on three identical processors protects against a software bug.
False. Identical software has identical bugs; all three produce the same wrong answer and the voter happily passes it. This needs design diversity, not mere replication.
A median voter and a Boolean majority voter implement the same idea for their respective data types.
True. Both discard the disagreeing minority: majority for binary values, median for continuous values — the median is the "middle vote" that outliers can't drag away.

Spot the error

"The voter is basically an OR gate — if any module outputs 1, we output 1."
Wrong. OR passes through a single faulty 1; the voter output must be a majority gate (products = AND, bind first; = OR) so is 1 only when at least two agree.
"We should average the three sensor readings to get the best estimate."
Wrong for fault masking. Averaging lets one wild outlier skew the result (100,100,1000 → 400); the median (→100) ignores the faulty value entirely.
"TMR handles a module that outputs plausible-but-wrong values just fine."
Only partly. That's a fail-incorrect fault; the voter masks it as long as just one module lies, but if two independently produce different wrong values, majority breaks — harder than fail-silent behaviour.
"Since two sensors agree, the third is definitely the broken one."
Not certain. The two agreeing modules could share a common-cause fault and be wrong together while the lone module is right — agreement is not proof of correctness.
"Use exact equality to vote analog sensor readings for maximum strictness."
Wrong. Analog noise means good sensors never match to the last bit; you need approximate voting within a tolerance window, else valid readings falsely "disagree".
"Setting the voting tolerance very large is the safe choice — it avoids false disagreements."
Wrong. Too-large tolerance masks real faults by treating genuinely diverged values as agreement; tolerance must balance sensor noise against fault magnitude.
"With three modules all disagreeing, the voter just picks the first one."
Wrong. Three-way disagreement is a consensus failure; a correct voter returns no-decision (or halts), because there is no majority to trust.
"TMR gives 3× the reliability because you have 3 modules."
Wrong. Reliability is , not . At you get , not — reliability is a probability capped at 1, and the gain is far smaller than "3×".

Why questions

Why does TMR need an odd number of modules?
An even count can tie (e.g. 2 vs 2), giving the voter no majority; an odd count guarantees one side always outnumbers the other for a single-value comparison.
Why can't TMR detect faults, only mask them?
The voter's output reveals only the majority value, not which inputs disagreed; without recording the minority you lose the information needed to diagnose the culprit.
Why is a fail-silent module easier to tolerate than a fail-incorrect one?
A fail-silent module simply drops out, leaving a clean 2-out-of-2 majority; a fail-incorrect module actively injects a wrong value the voter must out-vote, and coordinated wrong values can defeat it — the essence of Byzantine Fault Tolerance.
Why do hardware voters often compare bit-by-bit instead of using numeric equality?
Bit comparison is a fixed, fast, gate-level operation with predictable delay; floating-point equality is slower and subject to representation quirks unsuitable for tight real-time deadlines.
Why does the reliability formula fail to help when modules are correlated?
The derivation multiplies assuming independent failures; correlation means one event knocks out several modules together, so the true reliability is far lower than the formula predicts.
Why does the middle term carry a factor of 3 while the "all correct" term does not?
There are different modules that could be the single failing one, so three distinct scenarios share that probability; "all correct" is a single scenario, so it needs no such count.
Why is diversity (different implementations) sometimes preferred over plain triplication?
Identical copies share identical design flaws; diverse implementations fail differently, so they attack the common-cause and common-bug weaknesses that plain redundancy leaves wide open — see Redundancy vs. Diversity.
Why does TMR trade space and power for reliability rather than getting reliability for free?
You physically run three copies of the computation, so hardware area, energy, and cost roughly triple; the reliability gain is bought with those resources, not conjured.

Edge cases

What does the voter do when exactly two modules produce output and both agree?
It outputs their agreed value as — a fail-silent third module still leaves a valid 2-of-2 majority, which is exactly the single-fault case TMR is built to survive.
What does the voter do when two modules are silent and only one produces output?
Treat it as insufficient quorum — a lone survivor cannot form a 2-out-of-3 majority, so the voter must NOT blindly accept it; it should signal loss of redundancy and (in safety-critical use) halt or hand off to a safe state.
What happens if all three modules are healthy but a transient makes one glitch for a single cycle?
The voter masks that cycle instantly; the healthy pair carries the output, and the glitching module recovers next cycle — masking a transient is TMR's everyday job.
What breaks when module failures are correlated rather than independent?
A single root event (shared power dip, common clock fault, identical software bug) can flip two or three modules the same way at once; the voter then sees a false "majority" of wrong values and confidently outputs garbage — the math no longer applies because it assumed independence, so real reliability collapses toward that of the shared component. This is why Common-Cause Failures must be engineered out, not just voted around.
At the boundary , how do single-module and TMR reliability compare?
Both approach 1, and the gap shrinks to zero — near-perfect modules gain almost nothing from voting, since there is little failure left to mask.
At , what does approach and why?
It approaches 0 (dominated by ), and does so faster than the single module's , confirming TMR is strictly worse for very unreliable parts.
What is the correct voter response when three analog readings are mutually far apart beyond tolerance?
Report no-consensus and raise an alarm; fabricating a "middle" value would hide a genuine multi-fault condition the operator must know about.
If the voter is itself triplicated, what new problem must you now solve?
You need a way to combine the three voter outputs — pushing the single-point-of-failure question up one level — often resolved by driving separate actuators or a final hardened comparator.
Recall One-line self-test

If someone says "we added TMR so the system is now three times safer," what single sentence corrects them? ::: Reliability follows and only helps when ; the gain is bounded and can even be negative for unreliable modules.