ロックステップシステムは、同じ一連の操作を同時に並列に実行する耐障害性コンピュータシステムです。[ 1 ]冗長性(重複)により、エラー検出とエラー訂正が可能になります。少なくとも 2 つのシステム (デュアル モジュラー冗長DMR) がある場合、ロックステップ操作の出力を比較して障害が発生したかどうかを判断でき、少なくとも 3 つのシステム (トリプル モジュラー冗長TMR)がある場合は、多数決によりエラーを自動的に訂正できます。「ロックステップ」という用語は、軍隊での使用法に由来し、行進者が物理的に可能な限り接近して歩く同期歩行を指します。
各システムが同期して動作するために、明確に定義された状態から次の明確に定義された状態へと移行するように設定されています。新しい入力セットがシステムに到達すると、システムはそれらを処理し、新しい出力を生成して状態を更新します。この一連の変化(新しい入力、新しい出力、新しい状態)がそのステップを定義するものとみなされ、アトミックなトランザクションとして扱われる必要があります。つまり、すべてが発生するか、何も発生しないかのどちらかであり、その中間はありません。システム間にタイムシフト(遅延)が設定されている場合があり、これにより、外部からの影響(電圧スパイク、電離放射線、または現場でのリバースエンジニアリングなど)によって引き起こされるエラーの検出確率が高まります。
Intel を含む一部のベンダーは、キャッシュ ラインが2 つのメモリ チャネルに分散されるマルチ チャネルメモリ レイアウトを説明するためにロック ステップ メモリという用語を使用しています。つまり、キャッシュ ラインの半分は最初のチャネルのDIMMに格納され、残りの半分は 2 番目のチャネルの DIMM に格納されます。ロック ステップ レイアウトで2 つのECC対応 DIMM の単一エラー訂正と二重エラー検出(SECDED) 機能を組み合わせることで、単一デバイス データ訂正(SDDC) の性質を二重デバイス データ訂正(DDDC)に拡張でき、単一のメモリ チップの障害に対する保護が提供されます。[ 2 ] [ 3 ] [ 4 ] [ 5 ]
Intelのロックステップメモリレイアウトの欠点は、実際に使用可能なRAMの量が減少すること(トリプルチャネルメモリレイアウトの場合、最大メモリ量は物理的に使用可能な最大量の3分の1に減少する)、およびメモリサブシステムのパフォーマンスが低下することである。[ 2 ] [ 4 ]
計算システムが複製されていて、両方が各ステップを能動的に処理する場合、ステップ終了時に出力が異なると、両者の間で判断を下すのは困難です。そのため、DMRシステムは、同期ではなく、スレーブをマスターの「ホットスタンバイ」とする「マスター/スレーブ」構成で運用するのが一般的です。スレーブユニットが各ステップを能動的に処理することにメリットがないため、マスターが各ステップの処理終了時に自身の状態をスレーブにコピーするという方法が一般的です。マスターが途中で故障した場合でも、スレーブは正常に完了した直前のステップから処理を再開できます。
ロックステップ方式またはDMR方式(マスターのエラー検出手段と組み合わせた場合)は、マスターのハードウェア障害に対する冗長性を提供できますが、ソフトウェアエラーに対する保護は提供しません。マスターがソフトウェアエラーによって故障した場合、スレーブは失敗したステップの実行を繰り返そうとして、同じエラーを繰り返して同じように故障する可能性が非常に高く、これは共通モード障害の一例です。
計算システムが3重化されている場合、それらを「投票」システムとして扱うことが可能になります。1つのユニットの出力が他の2つのユニットの出力と一致しない場合、そのユニットは故障したと判断されます。一致した他の2つのユニットの出力が正しいものとして扱われます。
この概念はフォールトトレラントコンピューティングで生まれたものですが、NVIDIAは後にこの用語をGPUコンピューティングにおけるワープ実行の説明に採用し、ワープ内のすべてのスレッドの同時実行と定義しました。NVIDIAのCUDAプログラミングモデルとSIMT(単一命令複数スレッド)アーキテクチャのコンテキストでは、ロックステップ実行により、ワープ内のすべてのスレッドが同じカーネル命令を同時に実行することが保証されます。[ 6 ]