信頼性工学において、二重モジュール冗長(DMR)とは、システムの構成要素を複製することで、いずれかの構成要素が故障した場合に備えて冗長性を確保する仕組みのことです。これは特に、複製された構成要素が並列に動作するシステム、とりわけ耐障害性コンピュータシステムに適用されます。典型的な例としては、ノードが複製された複雑なコンピュータシステムが挙げられます。これにより、いずれかのノードが故障した場合でも、別のノードがその処理を引き継ぐことができます。
DMRは、1つのコンポーネントの故障に対する堅牢性と、同じ結果を出すはずの機器やコンピューターが異なる結果を出す場合のエラー検出を提供しますが、どのコンポーネントが正しく、どのコンポーネントが誤動作しているかを自動的に判断できないため、エラー訂正は提供しません。これに関する古い格言に、「クロノメーターを2つ持って航海に出てはいけない。1つか3つ持っていくべきだ」というものがあります。[ 1 ]つまり、2つのクロノメーターが矛盾している場合、船乗りはどちらが正しい値を示しているのか分からない可能性があるということです。
ロックステップ耐障害性マシンは、並列に動作する複製要素を使用します。どの時点においても、各要素のすべての複製は同じ状態である必要があります。各複製には同じ入力が供給され、同じ出力が期待されます。複製の出力は投票回路を使用して比較されます。各要素の複製が 2 つあるマシンは、デュアル モジュラー冗長 (DMR) と呼ばれます。投票回路は不一致のみを検出でき、復旧は他の方法に依存します。例としては、1ESS スイッチなどがあります。
各要素の複製が3つあるマシンは、トリプルモジュラー冗長(TMR)と呼ばれます。投票回路は、2対1の投票結果が出た場合に、どの複製に誤りがあるかを判断できます。この場合、投票回路は正しい結果を出力し、誤ったバージョンを破棄します。その後、誤りのある複製の内部状態は他の2つの複製とは異なると想定され、投票回路はDMRモードに切り替えることができます。このモデルは、より多くの複製にも適用可能です。