(57)【要約】  冗長マルチスレッド環境でのチェッカ命令の方法及び装置が記載される。一実施形態では、ＲＭＴが要求すると、プロセッサはチェッカ命令を先端スレッド及び後端スレッドの両方において発することができる。チェッカ命令は、各パイプラインの終わりにあるバッファに達するまで、各スレッドの個々のパイプラインを独立して移行することができる。次いで、チェッカ命令をコミットする前に、チェッカ命令が相手方を探し、命令の比較を行う。チェッカ命令が一致する場合、チェッカ命令はコミットしてリタイアし、その他の場合にはエラーが宣言される。【選択図】なし
2008515064.tif 000002
【特許請求の範囲】
【請求項１】
先端スレッド及び後端スレッドにおいてチェッカ命令を生成すること、
前記先端スレッド及び前記後端スレッドからピアチェッカ命令を待つこと、及び
前記先端スレッド及び前記後端スレッドからの前記ピアチェッカ命令を比較すること
を含む方法。
【請求項２】
前記先端スレッドは前記チェッカ命令及び選択された命令を含み、前記後端スレッドは該チェッカ命令を含む、請求項１に記載の方法。
【請求項３】
前記先端スレッドにおいてチェッカ命令を生成することは、前記選択された命令の前に前記チェッカ命令を挿入することをさらに含む、請求項２に記載の方法。
【請求項４】
前記チェッカ命令は前記先端スレッド及び前記後端スレッドの対応するパイプラインを通って移行する、請求項１に記載の方法。
【請求項５】
チェッカ命令を生成することをさらに含む、請求項１に記載の方法。
【請求項６】
前記チェッカ命令をコミットすることをさらに含む、請求項２に記載の方法。
【請求項７】
前記先端スレッド及び前記後端スレッドからの前記対応するチェッカ命令の比較が一致する場合、前記先端スレッドの前記選択された命令を記憶することをさらに含む、請求項６に記載の方法。
【請求項８】
前記先端スレッド及び前記後端スレッドは単一のプロセッサによって実行される、請求項１に記載の方法。
【請求項９】
前記先端スレッド及び前記後端スレッドは複数のプロセッサによって実行される、請求項１に記載の方法。
【請求項１０】
先端命令スレッドを実行する先端スレッド回路と、
後端命令スレッドを実行する後端スレッド回路と、
前記先端スレッド及び前記後端スレッドからの対応するチェッカ命令をコミットするコミットユニットと
を備える装置。
【請求項１１】
前記先端命令スレッドはチェッカ命令及び選択された命令を含む、請求項１０に記載の装置。
【請求項１２】
前記後端命令スレッドはチェッカ命令を含む、請求項１１に記載の装置。
【請求項１３】
前記先端スレッド回路及び前記後端スレッド回路はパイプラインを含む、請求項１０に記載の装置。
【請求項１４】
前記先端スレッド及び前記後端スレッドは単一のプロセッサによって実行される、請求項１３に記載の装置。
【請求項１５】
前記先端スレッド及び前記後端スレッドは複数のプロセッサによって実行される、請求項１３に記載の装置。
【請求項１６】
前記先端スレッド回路及び前記後端スレッド回路に結合されるバッファをさらに備える、請求項１２に記載の装置。
【請求項１７】
前記先端スレッドの前記チェッカ命令及び前記後端スレッドの前記チェッカ命令は、前記バッファにおいて対応するチェッカ命令を待つ、請求項１６に記載の装置。
【請求項１８】
前記選択された命令は、前記対応するチェッカ命令が一致する場合に記憶される、請求項２に記載の装置。
【請求項１９】
前記コミットユニットは、前記対応するチェッカ命令が一致しない場合にエラーを生成する、請求項２に記載の装置。
【請求項２０】
前記チェッカ命令は、バイナリトランスレータにより前記選択された命令の前に配置される、請求項１１に記載の装置。
【請求項２１】
前記選択された命令はストア命令である、請求項１１に記載の装置。
【請求項２２】
第１のプロセッサであって、
チェッカ命令の先端スレッドを実行する先端スレッド回路、
前記チェッカ命令の後端スレッドを実行する後端スレッド回路、及び
前記先端スレッド及び前記後端スレッドからの対応するチェッカ命令をリタイアさせるリタイアユニット
を備える第１のプロセッサと、
第２のプロセッサへの第１のインタフェースと、
入／出力装置への第２のインタフェースと、
該第２のインタフェースに結合されるオーディオ入出力装置と
を備えるシステム。
【請求項２３】
前記先端命令スレッドはチェッカ命令及び選択された命令を含む、請求項２２に記載のシステム。
【請求項２４】
前記後端命令スレッドはチェッカ命令を含む、請求項２３に記載のシステム。
【請求項２５】
前記先端スレッド回路及び前記後端スレッド回路はパイプラインを含む、請求項２２に記載のシステム。
【請求項２６】
前記選択された命令は、前記先端スレッド及び前記後端スレッドからの前記対応するチェッカ命令が一致する場合に記憶される、請求項２４に記載のシステム。
【請求項２７】
前記先端スレッド回路及び前記後端スレッド回路に結合されるバッファをさらに備える、請求項２６に記載のシステム。
【請求項２８】
前記リタイアユニットは、前記対応するチェッカ命令が一致しない場合にエラーを生成する、請求項２６に記載のシステム。
【請求項２９】
前記チェッカ命令は、バイナリトランスレータにより前記選択された命令の前に配置される、請求項２３に記載のシステム。
【請求項３０】
前記選択された命令はストア命令である、請求項２３に記載のシステム。
【請求項３１】
前記第１のインタフェース及び前記第２のインタフェースはポイントツーポイントインタフェースである、請求項２２に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
現在の冗長実行システムは一般に、自己検査式であり且つハードウェアで実装されるチェッカ回路を採用している。チェッカ回路に類似するのは、２つのスレッド（たとえば、ストアアドレス及びデータ）からの結果を比較する比較命令である。両方のスレッドで比較命令を複製し、複製を介して自己検査の効果を得ることが可能であり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
不都合なことに、比較命令を複製することにより、アーキテクチャは冗長マルチスレッド（ＲＭＴ）の性能利点を失うことになる。ＲＭＴの性能利点は、先端スレッドが後端スレッドのキャッシュミス及び分岐予測をプリフェッチできるように十分に離れた先端スレッド及び後端スレッドを有することから生じる。比較命令が複製される場合、キューの追加が必要なだけでなく（より高いオーバーヘッドを招く）、アーキテクチャは、両方向で求められる同期により２つのスレッドを十分離れた状態で保持することができなくなり得る。したがって、必要なのは、ＲＭＴの性能利点を犠牲にすることなくより低い故障率を実現できる命令である。
【課題を解決するための手段】
【０００３】
本発明の各種特徴が、同様の参照番号が概して全図面を通して同じパーツを指す添付図面に示す好ましい実施形態の以下の説明から明らかになろう。図面は必ずしも一定の縮尺で描かれておらず、それに代えて本発明の原理を示すことに重点が置かれている。
【発明を実施するための最良の形態】
【０００４】
以下の説明では、限定ではなく説明のために、特定の構造、アーキテクチャ、インタフェース、技法等の特定の詳細を記して、本発明の各種態様の完全な理解を提供する。しかし、本発明の各種態様を他の例ではこれら特定の詳細から離れて実施可能なことが、本開示の恩恵を受ける当業者には明白であろう。特定の場合では、本発明の説明を不必要な詳細で曖昧にしないように、既知の装置、回路、及び方法についての説明を省いている。
【０００５】
冗長マルチスレッド環境でのチェッカ命令の方法及び装置について記載する。以下の説明では、説明のために、多くの特定の詳細を記して本発明の完全な理解を提供する。しかし、本発明をこれら特定の詳細なしで実施可能なことが当業者には明白であろう。
【０００６】
図１は、冗長マルチスレッドアーキテクチャの一実施形態のブロック図である。冗長マルチスレッドアーキテクチャでは、故障は、プログラムの２つのコピーを別個のスレッドとして実行することによって検出することができる。
【０００７】
各スレッドには同一の入力が提供され、出力が比較されて、エラーが発生したか否かが判断される。冗長マルチスレッドは、本明細書では「複製範囲（sphere of replication）」と呼ぶ概念に関連して説明することができる。複製範囲とは、論理的又は物理的な冗長動作の境界である。
【０００８】
複製範囲１００内の構成要素（たとえば、先端スレッド１０５を実行しているプロセッサ及び後端スレッド１１０を実行しているプロセッサ）が冗長実行の対象である。これとは対照的に、複製範囲１００外の構成要素（たとえば、メモリ１１５）は冗長実行の対象ではない。故障保護は他の技法、たとえばメモリ１１５の誤り修正符号によって提供される。他の装置は複製範囲１００外であってもよく、且つ／又は他の技法を使用して故障保護を複製範囲１００外の装置に提供することができる。
【０００９】
複製範囲１００に入るデータは、データを複製し且つデータのコピーを先端スレッド１０５及び後端スレッド１１０に送る入力複製エージェント１２０を通して入る。同様に、複製範囲１００を出るデータは、データを比較し且つエラーが発生したか否かを判断する出力比較エージェント１２５を通って出る。複製範囲１００の境界の変更は、性能とハードウェア量との間のトレードオフである。たとえば、メモリ１１５を複製すると、ストア命令の出力比較を避けることによりメモリへのより高速でのアクセスが可能になるが、システムでのメモリ量を２倍にすることによってシステムコストが増大する。
【００１０】
本発明の一実施形態は、ＲＭＴのソフトウェア実装でのチェッカ回路を検査するメカニズムを提案する。ＲＭＴはコミットされた命令の出力を比較する（命令毎の比較を必要とする）ため、これはソフトウェアで実装することもできる。ＲＭＴのソフトウェア実装があらゆる命令を比較する場合、相当なオーバーヘッドが発生する。しかしそれに代えて、ＲＭＴは、ストア命令のみの比較及びロード命令のみの複製を可能にし、これはＲＭＴ実装のソフトウェアオーバーヘッドを大幅に低減することができる。
【００１１】
図２は、チェッカ命令を生成する一方法を示す。まず、大半のコンピュータでのようにコンパイラが命令を生成する。コンパイラから、コンピュータはここで、一連のストア命令であり得るがこれに限定されないバイナリプログラムを有する（２００）。次に、バイナリトランスレータがバイナリプログラム中の各ストア命令の前にチェッカ命令を挿入することができる（２０５）。バイナリトランスレータは当該技術分野において既知の任意のバイナリトランスレータであってもよい。バイナリプログラムの変換後、システムは先端スレッド及び後端スレッドの両方にバイナリプログラムを作成する。先端スレッドのバイナリプログラムは、チェッカ命令をストア命令に追加する（２１０）。後端スレッドのバイナリプログラムは、ストア命令を先端スレッドのピアチェッカ命令で置き換える（２１５）。
【００１２】
図３は、チェッカ命令の一実施態様を示す。ＲＭＴが比較を要求すると、プロセッサはチェッカ命令を先端スレッド及び後端スレッドの両方において発することができる（３００）。各チェッカ命令は各スレッドから６４ビット量を伝達することができる。チェッカ命令は、各パイプラインの終わりにあるバッファに達するまで各スレッドの個々のパイプラインを独立して移行することができる（３０５）。チェッカ命令は、ピアチェッカ命令をバッファで待つ（３１０）。これら２つのチェッカ命令は次いで、伝達している６４ビット量の比較を行うことができる（３１５）。一致しない場合、両方がエラーを報告することができる。一致する場合、プロセッサにチェッカ命令をコミットさせることができる（３２０）。パイプラインは、ＣＭＰ中の異なるプロセッサからであっても、又はＳＭＴプロセッサと同じマルチスレッドプロセッサからであってもよい。
【００１３】
この実施態様では、チェッカ命令は、命令キューからの処理命令からの先端命令を中断しない。むしろ、リタイアポインタのみを、後端スレッドからの対応するチェッカ命令が現れるまで中断するだけである。また、環境がＲＭＴ環境ではない場合、チェッカ命令はＮＯＰとして扱われることができる。
【００１４】
図４は、２つのパイプラインを通って流れるチェッカ命令の一例のブロック図である。ストア命令Ｒ１→［Ｒ２］が、レジスタＲ１中の値をレジスタＲ２中のアドレスによってポイントされるメモリロケーションに記憶するものと仮定する。このストア命令は、チェッカ命令と共に先端スレッド及び後端スレッドの両方で複製することができる。先端スレッドのストア命令は、チェッカ命令及びストア命令の両方を以下に示すように含むことができる。
Checkerinst R1
Checkerinst R2
Store: R1→[R2]
したがって、先端スレッドは、パイプライン４００を移行する時にストア命令とともにチェッカ命令を含むことができる。
【００１５】
後端スレッドのストア命令は、以下に示すようにチェッカ命令のみを含むことができる。
Checkerinst R1
Checkerinst R2
したがって、後端スレッドはパイプライン４０５を通って移行するストア命令を有さない。
【００１６】
パイプライン４００中の先端スレッドからのcheckerinst R1は、バッファ４１０においてピアチェッカ命令を待つ。パイプライン４０５中の後端スレッドからのcheckerinst R１は、バッファ４１５においてピアチェッカ命令を待つ。チェッカ命令は常にその相手方すなわちピアを探すか、又は待つ。ミラースレッドがある場合、チェッカ命令はバッファ４１０、４０５においてそのスレッドを探すか、又は待ち、ミラースレッドがそこにあることを確認してから、チェッカ命令を比較する。
【００１７】
先端スレッドからのcheckerinst R1及び後端スレッドからのcheckerinst R1は、コミット順によりペアになることができ、レジスタ指示子とＲ１の値を比較して、レジスタがいずれのエラーも有さなかったことを保証する。エラーが見つからない場合、チェッカ命令はコミットされる（４２０）。チェッカ命令がコミットされると、Ｒ１の値が記憶される。Ｒ１の値は、コミットポイントを通ってから記憶される。したがって、システムは、従来のように検査をストア毎に行うのではなくすべてのストアを同時に検査することができる。
【００１８】
図５は、マルチスレッドプロセッサ用の環境を提供することができるシステムのブロック図である。図５に示すシステムは或る範囲のシステムを表すことを意図される。代替のシステムは、より多数、より少数、且つ／又は異なる構成要素を備えることができる。
【００１９】
システム５００は、情報を伝達するバス５１０又は他の通信装置、及びバス５１０に結合されて情報を処理するプロセッサ（複数可）５２０を備える。システム５００は、メモリコントローラ５３０を介してバス５１０に結合されて、情報及びプロセッサ（複数可）５２０が実行する命令を記憶するランダムアクセスメモリ（ＲＡＭ）又は他のダイナミックメモリ並びにスタティックメモリ、たとえばハードディスク又は他の記憶装置５３５（メモリと呼ぶ）をさらに備える。メモリ５３５はまた、プロセッサ（複数可）５２０による命令の実行中に一時変数又は他の中間情報を記憶するためにも使用することができる。メモリコントローラ５３０は、１つ又は複数の種類のメモリ及び／又は関連するメモリ装置を制御する１つ又は複数の構成要素を備えることができる。システム５００は、バス５１０に結合されてプロセッサ（複数可）５２０のためにスタティックな情報及び命令を記憶する読み取り専用メモリ（ＲＯＭ）及び／又は他のスタティック記憶装置５４０も備える。
【００２０】
システム５００はまた、バス５１０を介して入／出力（Ｉ／Ｏ）インタフェース５５０にも結合することができる。Ｉ／Ｏインタフェース５５０はＩ／Ｏ装置５５５へのインタフェースを提供し、Ｉ／Ｏ装置５５５はたとえば、コンピュータユーザに情報を表示する陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）、英数字及び他のキーを含む英数字入力装置、並びに／或いはマウス、トラックボール、又はカーソル方向キー等のカーソル制御装置を含むことができる。システム５００は、ローカルエリアネットワーク等のネットワークへのアクセスを有無線で提供するネットワークインタフェース５６０をさらに備える。
【００２１】
命令は、メモリ５３５に磁気ディスク、読み取り専用メモリ（ＲＯＭ）集積回路、ＣＤ−ＲＯＭ、ＤＶＤ等の記憶装置から、有無線のリモート接続（たとえば、ネットワークインタフェース８６０を介してネットワーク経由で）等を介して提供される。
【００２２】
これより図６を参照すると、システム６００は概して、プロセッサ、メモリ、及び入／出力装置が複数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。システム６００はいくつかのプロセッサも備えることができ、明瞭にするために、そのうちの２つプロセッサ６０５、６１０のみを示す。プロセッサ６０５、６１０はそれぞれ、ローカルメモリコントローラハブ（ＭＣＨ）６１５、６２０を備えてメモリ６２５、６３０と接続することができる。プロセッサ６０５、６１０は、ポイントツーポイントインタフェース回路６４０、６４５を使用して、ポイントツーポイントインタフェース６３５を介してデータを交換することができる。プロセッサ６０５、６１０はそれぞれ、ポイントツーポイントインタフェース回路６６５、６７０、６７５、６８０を使用して、個々のポイントツーポイントインタフェース６５５、６６０を介してチップセット６５０とデータを交換することができる。チップセット６５０はまた、高性能グラフィックスインタフェース６９０を介して高性能グラフィックス回路６８５とデータを交換することもできる。
【００２３】
チップセット６５０は、バスインタフェース６９５を介してバス６１６とデータを交換することができる。いずれのシステムでも、いくつかの実施形態では低性能グラフィックスコントローラ、ビデオコントローラ、及びネットワーキングコントローラを含む様々な入／出力Ｉ／Ｏ装置６１４がバス６１６上にあり得る。いくつかの実施形態では、別のバスブリッジ６１８を使用して、バス６１６とバス６２０との間でデータを交換できるようにすることができる。いくつかの実施形態では、バス６２０は、小型コンピュータシステムインタフェース（ＳＣＳＩ）バス、統合ドライブエレクトロニクス（ＩＤＥ）バス、又はユニバーサルシリアルバス（ＵＳＢ）バスであることができる。追加のＩ／Ｏ装置をバス６２０に接続することができる。これらは、キーボード、マウスを含むカーソル制御装置６２２、オーディオＩ／Ｏ６２４、モデム及びネットワークインタフェースを含む通信装置６２６、及びデータ記憶装置６２８を含むことができる。ソフトウェアコード６３０は、データ記憶装置６２８に記憶することができる。いくつかの実施形態では、データ記憶装置６２８は、固定磁気ディスク、フロッピーディスクドライブ、光学ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリであることができる。
【００２４】
本明細書全体を通して、「命令」という語は、命令、マクロ命令、命令バンドル、又はプロセッサ動作を符号化するために使用される任意の数の他のメカニズムを全体的に指すために使用される。
【００２５】
以下の説明では、限定ではなく説明のために、特定の構造、アーキテクチャ、インタフェース、技法等の特定の詳細を記して、本発明の各種態様の完全な理解を提供する。しかし、本発明の各種態様を他の例ではこれら特定の詳細から離れて実施可能なことが、本開示の恩恵を受ける当業者には明白であろう。特定の場合では、本発明の説明を不必要な詳細で曖昧にしないように、既知の装置、回路、及び方法についての説明を省いている。
【図面の簡単な説明】
【００２６】
【図１】マルチスレッドアーキテクチャの一実施形態のブロック図である。
【図２】チェッカ命令を生成する一方法を示すフローチャートである。
【図３】いずれかのスレッドでのチェッカ命令の一実施態様を示すフローチャートである。
【図４】チェッカ命令の一実施形態のブロック図である。
【図５】マルチスレッドプロセッサの環境を提供することができるシステムのブロック図である。
【図６】マルチスレッドプロセッサの環境を提供することができる代替のシステムのブロック図である。
【図１】
2008515064.tif 000003
【図２】
2008515064.tif 000004
【図３】
2008515064.tif 000005
【図４】
2008515064.tif 000006
【図５】
2008515064.tif 000007
【図６】
2008515064.tif 000008
【国際調査報告】
2008515064.tif 000009
2008515064.tif 000010
2008515064.tif 000011