(57)【要約】      （修正有）【課題】  回路内の障害を発見するための方法を提供すること。【解決手段】  当該方法には、あるオペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成することが含まれ、選択した関数はマスクを採用する。関数が実行されるとマスクのアンチマスクが作成され、アンチマスクのモジュロが計算される。選択した関数の第１の結果のモジュロ関数が計算され、第３の結果が取得される。次にオペランドのモジュロが計算されて第４の結果が取得され、次に第２の結果および第３の結果に対して第２の関数が実行され、第５の結果が取得される。第５の結果と第４の結果との比較に応答して、回路内の障害を示す信号が伝播される。【選択図】      図３
2005339562.tif 000002
【特許請求の範囲】
【請求項１】
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するステップであって、前記選択した関数はマスクを採用する、生成するステップと、
前記マスクのアンチマスクを作成するステップと、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算するステップと、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算するステップと、
第４の結果を取得するために前記オペランドのモジュロ関数を計算するステップと、
第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行するステップと、
前記第５の結果と前記第４の結果の比較に応答して、回路内の障害を示す信号を伝播するステップと、
を有する、回路内の障害を発見する方法。
【請求項２】
前記選択した関数の前記第１の結果を生成する前記ステップが、回転演算およびシフト演算からなるグループのうちの少なくとも１つを実行するステップをさらに有する、請求項１に記載の方法。
【請求項３】
前記アンチマスクのモジュロ関数を計算する前記ステップが前記アンチマスクのモジュロ３関数を計算するステップをさらに有し、前記選択した関数の前記第１の結果のモジュロ関数を計算する前記ステップが前記選択した関数の前記第１の結果のモジュロ３関数を計算するステップをさらに有し、前記オペランドのモジュロ関数を計算する前記ステップが前記オペランドのモジュロ３関数を計算するステップをさらに有する、請求項１に記載の方法。
【請求項４】
前記生成するステップが、シミュレートされたハードウェア・プラットフォーム上で前記選択した関数の前記結果を生成するステップをさらに有する、請求項１に記載の方法。
【請求項５】
前記生成するステップが、ハードウェア・プラットフォーム内の回路上で前記選択した関数の前記結果を生成するステップをさらに有する、請求項１に記載の方法。
【請求項６】
前記第４の結果を取得するために前記オペランドの前記モジュロ関数を計算する前記ステップが、
前記オペランドのモジュロ３を計算するステップと、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの前記モジュロ３を反転させるステップと、
をさらに有する、請求項１に記載の方法。
【請求項７】
前記第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行する前記ステップが、第５の結果を取得するために前記第２の結果と前記第３の結果との合計を生成するステップをさらに有する、請求項１に記載の方法。
【請求項８】
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するステップであって、前記選択した関数はマスクを採用し、前記選択した関数は回転演算およびシフト演算からなるグループのうちの少なくとも１つである、生成するステップと、
前記マスクのアンチマスクを作成するステップと、
第２の結果を取得するために前記アンチマスクのモジュロ３関数を計算するステップと、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ３関数を計算するステップと、
偶数のシフト長さおよび偶数の回転長さを有するセットのうちの少なくとも１つに応答して、第４の結果を生成するために前記オペランドのモジュロ３関数を計算するステップと、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの反転モジュロ３関数を計算するステップと、
第５の結果を取得するために前記第２の結果と前記第３の結果との合計を計算するステップと、
前記第５の結果と前記第４の結果の比較、および前記第５の結果が前記第４の結果に等しくないことに応答して、前記回路内の障害を示す信号を伝播するステップと、
を有する、回路内の障害を発見する方法。
【請求項９】
オペランドに対して前記選択した関数を実行することによって選択した関数の第１の結果を生成するステップであって、前記選択した関数はマスクを採用する、生成するステップが、
第１のオペランド値および第２のオペランド値を有する前記オペランドに対してマージ付き回転関数を実行することによって、マージ付き回転関数の第１の結果を生成するステップをさらに有し、
前記マージ付き回転関数が、前記第１のオペランド値に対応する第１のマスク値と前記第２のオペランド値に対応する第２のマスク値とを有し、
前記第１の結果が、最終の第１結果と、第１のオペランド値に対応する第１の中間結果と、第２のオペランド値に対応する第２の中間結果とをさらに有し、
前記マスクのアンチマスクを作成する前記ステップが、前記第１のマスク値の第１のアンチマスクを作成するステップと、前記第２のマスク値の第２のアンチマスクを作成するステップとをさらに有し、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算する前記ステップが、第２のマスクのモジュロ３関数と第１のアンチマスクのモジュロ３関数とを有する第２の結果を取得するために、前記第１のアンチマスクのモジュロ３関数を計算するステップと、前記第２のアンチマスクのモジュロ３関数を計算するステップとをさらに有し、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算する前記ステップが、前記第１の中間結果に対してモジュロ３関数を実行することによって第１の中間モジュロを計算するステップと、前記第１の中間結果に対してモジュロ３関数を実行することによって第２の中間モジュロを計算するステップと、前記第１の中間モジュロと前記第２の中間モジュロとを有する第３の結果を作成するステップとをさらに有し、
第４の結果を取得するために前記オペランドのモジュロ関数を計算する前記ステップが、
第４の中間モジュロを取得するために前記第２のオペランド値のモジュロ３関数を計算するステップと、
前記第１のオペランド値のモジュロ３関数を計算するステップと、奇数の回転長さに応答して第３の中間モジュロを生成するために前記オペランドの前記モジュロ３を反転させるステップと、
第４の結果を取得するために前記第３の中間モジュロと前記第２の中間モジュロを合計するステップと、
を有し、
第５の結果を取得するために前記第２の結果および前記第３の結果に対して第２の関数を実行する前記ステップが、前記第１のアンチマスクの前記モジュロ３関数と、前記第２のアンチマスクの前記モジュロ３関数と、前記第１の中間モジュロと、前記第２の中間モジュロとの合計を生成するステップをさらに有する、
請求項８に記載の方法。
【請求項１０】
マージ付き回転関数の第１の結果を生成する前記ステップが、符号拡張付き回転関数の第１の結果を生成するステップをさらに有する、請求項９に記載の方法。
【請求項１１】
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するための手段であって、前記選択した関数はマスクを採用する、生成するための手段と、
前記マスクのアンチマスクを作成するための手段と、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算するための手段と、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算するための手段と、
第４の結果を取得するために前記オペランドのモジュロ関数を計算するための手段と、
第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行するための手段と、
前記第５の結果と前記第４の結果の比較に応答して、回路内の障害を示す信号を伝播するための手段と、
を有する、回路内の障害を発見するためのシステム。
【請求項１２】
前記選択した関数の前記第１の結果を生成するための前記手段が、回転演算およびシフト演算からなるグループのうちの少なくとも１つを実行するための手段をさらに有する、請求項１１に記載のシステム。
【請求項１３】
前記アンチマスクのモジュロ関数を計算するための前記手段が前記アンチマスクのモジュロ３関数を計算するための手段をさらに有し、前記選択した関数の前記第１の結果のモジュロ関数を計算するための前記手段が前記選択した関数の前記第１の結果のモジュロ３関数を計算するための手段をさらに有し、前記オペランドのモジュロ関数を計算するための前記手段が前記オペランドのモジュロ３関数を計算するための手段をさらに有する、請求項１１に記載のシステム。
【請求項１４】
前記生成するための手段が、シミュレートされたハードウェア・プラットフォーム上で前記選択した関数の前記結果を生成するための手段をさらに有する、請求項１１に記載のシステム。
【請求項１５】
前記生成するための手段が、ハードウェア・プラットフォーム内の回路上で前記選択した関数の前記結果を生成するための手段をさらに有する、請求項１１に記載のシステム。
【請求項１６】
前記第４の結果を取得するために前記オペランドの前記モジュロ関数を計算するための前記手段が、
前記オペランドのモジュロ３を計算するための手段と、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの前記モジュロ３を反転させるための手段と、
をさらに有する、請求項１１に記載のシステム。
【請求項１７】
前記第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行するための前記手段が、第５の結果を取得するために前記第２の結果と前記第３の結果との合計を生成するための手段をさらに有する、請求項１１に記載のシステム。
【請求項１８】
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するための手段であって、前記選択した関数はマスクを採用し、前記選択した関数は回転演算およびシフト演算からなるグループのうちの少なくとも１つである、生成するための手段と、
前記マスクのアンチマスクを作成するための手段と、
第２の結果を取得するために前記アンチマスクのモジュロ３関数を計算するための手段と、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ３関数を計算するための手段と、
偶数のシフト長さおよび偶数の回転長さを有するセットのうちの少なくとも１つに応答して、第４の結果を生成するために前記オペランドのモジュロ３関数を計算するための手段と、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの反転モジュロ３関数を計算するための手段と、
第５の結果を取得するために前記第２の結果と前記第３の結果との合計を計算するための手段と、
前記第５の結果と前記第４の結果の比較、および前記第５の結果が前記第４の結果に等しくないことに応答して、前記回路内の障害を示す信号を伝播するための手段と、
を有する、回路内の障害を発見するシステム。
【請求項１９】
オペランドに対して前記選択した関数を実行することによって選択した関数の第１の結果を生成するための手段であって、前記選択した関数はマスクを採用する、生成するための手段が、
第１のオペランド値および第２のオペランド値を有する前記オペランドに対してマージ付き回転関数を実行することによって、マージ付き回転関数の第１の結果を生成するための手段をさらに有し、
前記マージ付き回転関数が、前記第１のオペランド値に対応する第１のマスク値と前記第２のオペランド値に対応する第２のマスク値とを有し、
前記第１の結果が、最終の第１結果と、第１のオペランド値に対応する第１の中間結果と、第２のオペランド値に対応する第２の中間結果とをさらに有し、
前記マスクのアンチマスクを作成するための前記手段が、前記第１のマスク値の第１のアンチマスクを作成するための手段と、前記第２のマスク値の第２のアンチマスクを作成するための手段とをさらに有し、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算するための前記手段が、第２のマスクのモジュロ３関数と第１のアンチマスクのモジュロ３関数とを有する第２の結果を取得するために、前記第１のアンチマスクのモジュロ３関数を計算するための手段と、前記第２のアンチマスクのモジュロ３関数を計算するための手段とをさらに有し、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算するための前記手段が、前記第１の中間結果に対してモジュロ３関数を実行することによって第１の中間モジュロを計算するための手段と、前記第１の中間結果に対してモジュロ３関数を実行することによって第２の中間モジュロを計算するための手段と、前記第１の中間モジュロと前記第２の中間モジュロとを有する第３の結果を作成するための手段とをさらに有し、
第４の結果を取得するために前記オペランドのモジュロ関数を計算するための前記手段が、
第４の中間モジュロを取得するために前記第２のオペランド値のモジュロ３関数を計算するための手段と、
前記第１のオペランド値のモジュロ３関数を計算するための手段と、奇数の回転長さに応答して第３の中間モジュロを生成するために前記オペランドの前記モジュロ３を反転させるための手段と、
第４の結果を取得するために前記第３の中間モジュロと前記第２の中間モジュロを合計するための手段と、
を有し、
第５の結果を取得するために前記第２の結果および前記第３の結果に対して第２の関数を実行するための前記手段が、前記第１のアンチマスクの前記モジュロ３関数と、前記第２のアンチマスクの前記モジュロ３関数と、前記第１の中間モジュロと、前記第２の中間モジュロとの合計を生成するための手段をさらに有する、
請求項１８に記載のシステム。
【請求項２０】
マージ付き回転関数の第１の結果を生成するための前記手段が、符号拡張付き回転関数の第１の結果を生成するための手段をさらに有する、請求項１９に記載のシステム。
【請求項２１】
コンピュータに、
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するための命令であって、前記選択した関数はマスクを採用する、生成するための命令と、
前記マスクのアンチマスクを作成するための命令と、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算するための命令と、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算するための命令と、
第４の結果を取得するために前記オペランドのモジュロ関数を計算するための命令と、
第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行するための命令と、
前記第５の結果と前記第４の結果の比較に応答して、回路内の障害を示す信号を伝播するための命令と、
を実行させて、回路内の障害を発見するためのコンピュータ・プログラム。
【請求項２２】
前記選択した関数の前記第１の結果を生成するための前記命令が、回転演算およびシフト演算からなるグループのうちの少なくとも１つを実行するための命令をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記アンチマスクのモジュロ関数を計算するための前記命令が前記アンチマスクのモジュロ３関数を計算するための命令をさらに有し、前記選択した関数の前記第１の結果のモジュロ関数を計算するための前記命令が前記選択した関数の前記第１の結果のモジュロ３関数を計算するための命令をさらに有し、前記オペランドのモジュロ関数を計算するための前記命令が前記オペランドのモジュロ３関数を計算するための命令をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２４】
前記生成するための命令が、シミュレートされたハードウェア・プラットフォーム上で前記選択した関数の前記結果を生成するための命令をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２５】
前記生成するための命令が、ハードウェア・プラットフォーム内の回路上で前記選択した関数の前記結果を生成するための命令をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２６】
前記第４の結果を取得するために前記オペランドの前記モジュロ関数を計算するための前記命令が、
前記オペランドのモジュロ３を計算するための命令と、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの前記モジュロ３を反転させるための命令と、
をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２７】
前記第５の結果を取得するために前記第２の結果および第３の結果に対して第２の関数を実行するための前記命令が、第５の結果を取得するために前記第２の結果と前記第３の結果との合計を生成するための命令をさらに有する、請求項２１に記載のコンピュータ・プログラム。
【請求項２８】
コンピュータに、
オペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成するための命令であって、前記選択した関数はマスクを採用し、前記選択した関数は回転演算およびシフト演算からなるグループのうちの少なくとも１つである、生成命令と、
前記マスクのアンチマスクを作成するための命令と、
第２の結果を取得するために前記アンチマスクのモジュロ３関数を計算するための命令と、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ３関数を計算するための命令と、
偶数のシフト長さおよび偶数の回転長さを有するセットのうちの少なくとも１つに応答して、第４の結果を生成するために前記オペランドのモジュロ３関数を計算するための命令と、
奇数のシフト長さおよび奇数の回転長さを有するセットのうちの少なくとも１つに応答して、前記第４の結果を生成するために前記オペランドの反転モジュロ３関数を計算するための命令と、
第５の結果を取得するために前記第２の結果と前記第３の結果との合計を計算するための命令と、
前記第５の結果と前記第４の結果の比較、および前記第５の結果が前記第４の結果に等しくないことの発見に応答して、前記回路内の障害を示す信号を伝播するための命令と、
を実行させて、回路内の障害を発見するためのコンピュータ・プログラム。
【請求項２９】
オペランドに対して前記選択した関数を実行することによって選択した関数の第１の結果を生成するための命令であって、前記選択した関数はマスクを採用する、前記生成するための命令が、
第１のオペランド値および第２のオペランド値を有する前記オペランドに対してマージ付き回転関数を実行することによって、マージ付き回転関数の第１の結果を生成するための命令をさらに有し、
前記マージ付き回転関数が、前記第１のオペランド値に対応する第１のマスク値と前記第２のオペランド値に対応する第２のマスク値とを有し、
前記第１の結果が、最終の第１結果と、第１のオペランド値に対応する第１の中間結果と、第２のオペランド値に対応する第２の中間結果とをさらに有し、
前記マスクのアンチマスクを作成するための前記命令が、前記第１のマスク値の第１のアンチマスクを作成するための命令と、前記第２のマスク値の第２のアンチマスクを作成するための命令とをさらに有し、
第２の結果を取得するために前記アンチマスクのモジュロ関数を計算するための前記命令が、第２のマスクのモジュロ３関数と第１のアンチマスクのモジュロ３関数とを有する第２の結果を取得するために、前記第１のアンチマスクのモジュロ３関数を計算するための命令と、前記第２のアンチマスクのモジュロ３関数を計算するための命令とをさらに有し、
第３の結果を取得するために前記選択した関数の前記第１の結果のモジュロ関数を計算するための前記命令が、前記第１の中間結果に対してモジュロ３関数を実行することによって第１の中間モジュロを計算するための命令と、前記第１の中間結果に対してモジュロ３関数を実行することによって第２の中間モジュロを計算するための命令と、前記第１の中間モジュロと前記第２の中間モジュロとを有する第３の結果を作成するための命令とをさらに有し、
第４の結果を取得するために前記オペランドのモジュロ関数を計算するための前記命令が、
第４の中間モジュロを取得するために前記第２のオペランド値のモジュロ３関数を計算するための命令と、
前記第１のオペランド値のモジュロ３関数を計算するための命令と、奇数の回転長さに応答して第３の中間モジュロを生成するために前記オペランドの前記モジュロ３を反転させるための命令と、
第４の結果を取得するために前記第３の中間モジュロと前記第２の中間モジュロを合計するための命令と、
を有し、
第５の結果を取得するために前記第２の結果および前記第３の結果に対して第２の関数を実行するための前記命令が、前記第１のアンチマスクの前記モジュロ３関数と、前記第２のアンチマスクの前記モジュロ３関数と、前記第１の中間モジュロと、前記第２の中間モジュロとの合計を生成するための命令をさらに有する、
請求項２８に記載のコンピュータ・プログラム。
【請求項３０】
マージ付き回転関数の第１の結果を生成するための前記命令が、符号拡張付き回転関数の第１の結果を生成するための命令をさらに有する、請求項２９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、エラー検出の改良型方法に関し、具体的に言えば、論理関数におけるエラー発見の改良型方法に関する。さらにより具体的に言えば、本発明はシフト、回転、および符号拡張関数においてエラーを発見するための改良型方法に関する。
【背景技術】
【０００２】
マイクロプロセッサ・ベースのシステムが人間の活動のあらゆる面に浸透するにつれて、マイクロプロセッサの開発および製造業界に対してデータが破損しないシステムを製造するようにという要求が高まってきた。マイクロプロセッサは莫大な数の重要な機能の性能に関わりつつあり、日常生活の重要な仕事にマイクロプロセッサが関わることによって、計算結果の信頼性に対する期待が強くなっている。人間の生活や単なる金銭上におけるエラーの影響が判断されるかどうかに関わらず、マイクロプロセッサの消費者はエラーを起こしやすい結果を許さなくなってきている。たとえば消費者は、証券取引所のフロア、人間の命を支える医療機器、または自動車を制御するコンピュータでの計算ミスを許さないであろう。これらの活動はすべて、信頼できるマイクロプロセッサ結果の必要性がきわめて重要な問題にまで高まっている分野を表している。
【０００３】
信頼性が最優先事項とみなされる分野では、設計者は一般に重複論理を採用して計算を２回（並行して）行い、この重複関数の結果を比較する。これにより、マイクロプロセッサ・システムは回路障害を検出し、内部エラーが計算結果を損なわないようにすることができる。容易に推測できるように、関数を重複させることには効率の悪さがつきものである。簡単に言えば、関数を重複させると所与の計算を実行するのに必要な回路も２倍になり、その結果、設計の複雑さおよびチップのサイズも増大する。製作コスト、設計時間、消費電力、およびエラーの可能性のすべてが、チップ上の回路の量と共に増加する。
【０００４】
従来のエラー・チェック技法に関連する複雑さ、消費電力、およびコストが、より安い代替品を使用する動機となってきた。たとえば、論理を重複させる必要なしに回路障害および数学的計算のエラーをチェックする代替方法の１つが、モジュラス（ｍｏｄｕｌｕｓ）または剰余チェックである。モジュロ関数は、エラー・チェック動作を合理化するのに有用であることが証明されているが、従来、その適用性はその計算に一般的に使用される方法によって制限される。
【０００５】
モジュロ演算子（ｍｏｄ）は、第１の引数を第２の引数で割った整数除算の剰余を返す。ａが任意の整数でｎが正の整数とすると、ａ  ｍｏｄ  ｎはａをｎで割った場合に生じる｛０，・・・，ｎ−１｝の剰余を算出する式である。たとえば、２３  ｍｏｄ  １２＝１１である。他の例として、２４時間形式の時間を１２時間形式に変換するためにａ  ｍｏｄ  １２が実行される。
【０００６】
実際には、ｘ  ｍｏｄ  ｙは他の関数の観点から計算することができる。変数の範囲によって相違が生じ、定義が与えられている場合よりも通常の実施の方が広義である。フロア（ｆｌｏｏｒ）関数ｆｌｏｏｒ（ｚ）で表すと、ｚに等しいかまたはこれよりも小さい最大の整数は、ｘ  ｍｏｄ  ｙ＝ｘ−ｙ*ｆｌｏｏｒ（ｘ／ｙ）となる。整数部分までの切り捨て（いくつかの計算器ではｒｅｍａｉｎ（）として知られ、常に正であり、Ｃの組み込み％演算子によって実行される）で表すと、ｘ  ｍｏｄ  ｙ＝ｘ−ｙ*ｉＰａｒｔ（ｘ／ｙ）となる。フロアの場合、除数が負であれば負のモジュラスとなる（たとえばこの定義の下では、１  ｍｏｄ  −２＝−１である）。結果として生じる関数は計算器ではｍｏｄ（）として知られ、Ｐｅｒｌを含む一部の高水準言語で実施されている。Ｐｅｒｌでは／除算演算子に言及し、モジュラス演算を示す際に％演算子も使用する。どちらの定義も、ｘおよびｙを整数または有理数に分類することができる。これらの定義はそれぞれ、チェックの対象となる元の関数のオペランドを保持する必要がある。
【０００７】
実際問題として、モジュロ関数は、計算中にオペランドが切り捨てられない関数に対して関数の重複なしにエラー・チェックする際に有用であることが証明されている。しかしながら従来のモジュロ／剰余チェックは、関数が完了した後に関数の入力と関数の結果がどちらも使用できる場合にのみ使用可能である。したがって、回転、符号拡張、またはシフトの関数では基礎となる演算の過程でオペランドが切り捨てまたは変更されるため、これらをチェックするために従来のモジュロ／剰余チェックを使用することはできない。後でモジュロ・チェックを計算するために関数のオペランドを格納しておくということは、複雑さ、消費電力、およびコストの面においても資源の浪費となる。したがってオペランドの格納は、関数の重複および２つの結果の比較によって提示される問題と同様に、受け入れ難い問題を生じさせることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
シフト、回転、および符号拡張関数を実行するプロセッサにおいてモジュロ関数を使用してエラーを検出する際に使用される、エラーを検出するための方法が求められている。
【課題を解決するための手段】
【０００９】
回路内の障害を検出する方法が開示される。この方法は、あるオペランドに対して選択した関数を実行することによって選択した関数の第１の結果を生成することを含み、選択した関数はマスクを採用する。関数が実行されると、マスクのアンチマスクが作成され、アンチマスクの採用によって作成された結果のモジュロが計算される。選択した関数の第１の結果のモジュロ関数を計算して、第３の結果を取得する。次にオペランドのモジュロを計算して第４の結果を取得し、その後、第２の結果および第３の結果に対して第２の関数を実行し、第５の結果を取得する。第５の結果と第４の結果の比較に応答して、回路内の障害の有無を示す信号が伝播される。
【００１０】
本発明のすべての目的、特徴、および利点は、以下の詳細な説明で明らかとなるであろう。
【００１１】
本発明の特徴であると考えられる新規な特徴は、添付の特許請求の範囲に示される。しかしながら、本発明それ自体ならびに好ましい使用方法、さらにはその目的および利点は、例示的な実施形態の以下の詳細な説明を参照しながら添付の図面と共に読むことで最も良く理解されるであろう。
【発明を実施するための最良の形態】
【００１２】
本発明の好ましい一実施形態は、剰余の数学的関係を採用することによって２進（ｂｉｎａｒｙ）プロセッサ内で回転、符号拡張、およびシフト関数を実行するための回路のエラー・チェックを提供する。好ましい実施形態の利点には、関数の重複および結果の比較を用いることなしに、回路または回路構成要素の障害を明らかにする機能が含まれる。
【００１３】
好ましい実施形態のチェック方法にはアンチマスク項の計算が含まれる。アンチマスク値は、関数の結果を生成する際には不要であるが、リソースをより多く使用するオペランド・ストレージを用いることなしに、命令を実行したすべてのデータが確実に保持されるようにするために必要な情報を含む。従来のモジュロ・ベースのエラー・チェックはエラー・チェックを行うまでオペランドを保持する必要があるため、このアンチマスク項を使用しない従来のモジュロ・ベースのエラー・チェックは回転、符号拡張、およびシフト関数には好適でない。
【００１４】
以下に示される本発明の好ましい一実施形態では、モジュロ３関数を使用して論理関数をチェックする。この好ましい実施形態ではモジュロ３関数を採用するが、本発明の範囲および趣旨を逸脱することなく、異なる除数値のモジュロ関数を使用する他の実施形態を使用して論理関数をチェックすることも可能であることが理解されるであろう。
【００１５】
次に図面を参照すると、具体的には図１を参照すると、本発明の好ましい一実施形態に従って、エラー検出装置を備えたデータ処理システムを示すブロック図が示されている。説明を簡単にするために、図１からはデータ処理システムの多くの構成要素が省略されており、本発明を理解するのに役立つ部分のみが含まれている。図１から省略されたデータ処理システムのすべての構成要素は、本発明の範囲を逸脱することなしに他の代用構成要素が後に開発および置き換えられる可能性はあるが、本発明の時点ではデータ処理分野の当業者には周知である。
【００１６】
図１は、本発明の好ましい一実施形態に従って情報を処理するためのデータ処理システム１００を示すブロック図である。図１に示された好ましい実施形態では、プロセッサ１０２は、ニューヨーク州アーモンクにあるＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＰｏｗｅｒプロセッサ系列の１つなどの、単一集積回路のスーパースカラ・マイクロプロセッサである。したがって以下でさらに論じるように、プロセッサ１０２は様々なユニット、レジスタ、バッファ、メモリ、および他のセクションを含み、それらはすべて集積回路によって形成される。またこの好ましい実施形態では、プロセッサ１０２は縮小命令セット・コンピューティング（「ＲＩＳＣ」）技法に従って動作する。図１に示されるように、システム・バス１０４がプロセッサ１０２のバス・インターフェース・ユニット（「ＢＩＵ」）１０６に接続される。ＢＩＵ１０６は、プロセッサ１０２とシステム・バス１０４との間での情報の転送を制御する。
【００１７】
ＢＩＵ１０６は、プロセッサ１０２の命令キャッシュ（「Ｉキャッシュ」）１０８およびデータ・キャッシュ（「Ｄキャッシュ」）１１０に接続される。命令キャッシュ１０８は命令シーケンサ・ユニット（「ＩＳＵ」）１１２に命令を出力し、命令メモリ管理ユニット（「ＩＭＭＵ」）１１３を介してＩＳＵ１１２から命令を受け取る。ＩＭＭＵ１１３は、ＩＳＵ１１２から着信する命令に対して論理メモリ・アドレスと実際のメモリ・アドレスとの間のマッピングを提供する。命令キャッシュ１０８からのこうした命令に応答して、命令シーケンサ・ユニット１１２はプロセッサ１０２の他の実行回路に選択的に命令を出力する。
【００１８】
命令シーケンサ・ユニット１１２に加えて、プロセッサ１０２の実行回路には複数の実行ユニット、すなわち固定小数点演算命令を実行するための固定小数点ユニット（「ＦＸＵ」）１１４、ロードおよびストア命令を実行するためのロード／ストア・ユニット（「ＬＳＵ」）１１６、ならびに浮動小数点演算および論理命令を実行するための浮動小数点ユニット（「ＦＰＵ」）１１８が含まれる。ＦＸＵ１１４およびＬＳＵ１１６は、体系的汎用レジスタ（「ＧＰＲ」）１２０および固定小数点名前変更バッファ（「ＦＰＲ」）１２２からそれらのソース・オペランド情報を入力する。ＦＸＵ１１４およびＬＳＵ１１６は、それらの演算結果（宛先オペランド情報）をＦＰＲ１２２の選択されたエントリに格納するために出力する。さらにＬＳＵ１１６は、ＬＳＵ１１６からの出力がＤキャッシュ１１０によって受け取られる前に論理メモリ・アドレスと実際のメモリ・アドレスとの間のマッピングを提供するデータ・メモリ管理ユニット（「ＤＭＭＵ」）１１７へも、結果を出力する。
【００１９】
固定小数点演算命令を実行するＦＸＵ１１４内では、いくつかの構成要素が、剰余の数学的関係を採用することによって２進プロセッサ内で回転、符号拡張、およびシフト関数を実行するための回路のエラー・チェックを提供する。ＦＸＵ１１４の追加の構成要素は、当業者は周知であり、本発明の好ましい実施形態の動作を理解するために必要でないため、話を簡単にするために図１には示されていない。
【００２０】
シフタ１２４は、ＧＰＲ１２０から受け取ったオペランドに対してシフト関数を実行する。シフタ１２４は、シフト関数の結果ならびに該当する場合はマスク項を、ＧＰＲ１２０と、モジュロ・ベースの関数チェッカ（「ＭＯＤチェッカ」）１２８と、コンパレータ１３０とに出力する。コンパレータ１３０によって生成された結果はリカバリ論理１３２に出力される。図１に示されるような好ましい実施形態では、リカバリ論理１３２はＦＸＵ１１４の構成要素として示されるが、代替実施形態ではリカバリ論理１３２をプロセッサ１０２の他の構成要素に配置する場合もある。
【００２１】
同様に、ローテータ１２６はＧＰＲ１２０から受け取ったオペランドに対して回転関数を実行する。ローテータ１２６は、回転関数の結果ならびに該当する場合はマスク項を、ＧＰＲ１２０と、モジュロ・ベースの関数チェッカ（「ＭＯＤチェッカ」）１３４と、コンパレータ１３６とに出力する。コンパレータ１３６によって生成された結果はリカバリ論理１３２に出力される。
【００２２】
データ処理システム１００は、処理ストレージ・ユニットまたはＲＡＭ１３８も含む。ＲＡＭ１３８内では、データ処理システム１００が本発明の好ましい一実施形態に従って動作しながらデータおよび命令を格納する。たとえばＲＡＭ１３８は、オペレーティング・システム１５０およびアプリケーション・プログラム１５２を格納することができる。データ処理システム１００は、ハード・ディスク・ドライブまたは他の直接アクセス・ストレージ・デバイスなどの不揮発性ストレージ１４０も含む。入力／出力（Ｉ／Ｏ）コントロール・ユニット１４２は、たとえばネットワーク・ケーブル１４６などの接続デバイスを介して、ネットワーク１４４への無線または有線接続を提供する。Ｉ／Ｏコントローラ１４２は、有線または無線リンク１５４を介して、キーボード、マウス、ディスプレイ、またはプリンタなどの１つまたは複数のＩ／Ｏデバイス１４８にも接続される。システム・バス１０４は、プロセッサ１０２、ＲＡＭ１３８、ストレージ１４０、およびＩ／Ｏコントロール・ユニット１４２を通信のために結合する。
【００２３】
プロセッサ１０２は本発明を実行する過程でプログラムを実行する。プロセッサ１０２内のＦＸＵ１１４は、２進シフト、２進マージ、２進回転の関数、および他の関連関数を含む、延々と続く数学計算を実行する。ＦＸＵ１１４は、本発明の好ましい一実施形態におけるモジュロおよび剰余関数も実行する。
【００２４】
図１に示されるような本発明の好ましい一実施形態では、本発明の方法はプロセッサ１０２内で実行される。本発明の方法を要約すると、ローテータ１２６はオペランドに対して回転、シフト、または符号拡張命令によって実施される選択した関数、あるいは、回転、シフト、または符号拡張のうちの１つまたは複数の命令の導関数を採用する選択した関数を実行する。選択した関数を実施するコマンドは、通常、ＩＳＵ１１２からローテータ１２６によって受け取られる。選択した関数はマスクを採用する。選択した関数の結果をチェックするために、ＦＸＵ１１４は選択した関数で使用されるマスクのアンチマスクを生成し、アンチマスクのモジュロが計算される。選択した関数の結果のモジュロ３関数が計算され、第３の結果が取得される。次にオペランドのモジュロ３が計算されて第４の結果が取得され、その後、通常は合計を含む第２の関数が第２の結果および第３の結果に対して実行され、第５の結果が取得される。この第５の結果と第４の結果との比較に応答して、回路内の障害を示す信号が伝播される。
【００２５】
次に図２を見ると、本発明の好ましい一実施形態に従って、データ処理システムをモデル化するために動作（ｂｅｈａｖｉｏｒ）シミュレーション環境プログラムを備えエラー検出装置を含むデータ処理システムの、ブロック図が示されている。データ処理システム２００は、処理ストレージ・ユニット（たとえばＲＡＭ２０２）およびプロセッサ２０４を含む。データ処理システム２００は、ハード・ディスク・ドライブまたは他の直接アクセス・ストレージ・デバイスなどの不揮発性ストレージ２０６も含む。入力／出力（Ｉ／Ｏ）コントローラ（「Ｉ／Ｏコントローラ」）２０８は、ネットワーク・ケーブル２１２などの有線または無線リンクを介したネットワーク２１０への接続を提供する。Ｉ／Ｏコントローラ２０８は、ケーブルまたは無線周波接続などの有線または無線リンク２１６を介して、キーボード、ディスプレイ・デバイス、マウス、またはプリンタなどのユーザＩ／Ｏデバイス２１４に接続する。システム・バス２１８は、プロセッサ２０４、ＲＡＭ２０２、ストレージ２０６、およびＩ／Ｏコントローラ２０８を接続する。
【００２６】
ＲＡＭ２０２内では、データ処理システム２００が本発明の好ましい一実施形態に従って動作しながらいくつかのデータ項目および命令を格納する。これらには、モジュロ・チェッカ２２５を含むシミュレータ２２４と対話するためのテスト・ケース２２０、ハードウェア・モデル（「ＨＷモデル」）２２６、およびプロセス・ログ２２２が含まれる。他のアプリケーション２２８およびシミュレータ２２４は、オペレーティング・システム２１７を介してプロセッサ２０４、ＲＡＭ２０２、Ｉ／Ｏコントローラ２０８、およびストレージ２０６とインターフェースする。データ処理分野の当業者であれば、本発明の範囲を逸脱することなく、データ処理システム２００の図示された構成要素に追加の構成要素を追加または置き換えることができることを、即時に理解されるであろう。
【００２７】
プロセッサ２０４は、本発明を実行する過程でＲＡＭ２０２に格納されることの多いプログラムからの命令を実行する。本発明の好ましい一実施形態では、プロセッサ２０４はシミュレータ２２４を実行する。シミュレータ２２４は、シミュレートされたプロセッサをモデル化するための命令を含むハードウェア・モデル２２６に格納された命令の実行を要求する。
【００２８】
シミュレータ２２４は、動作シミュレーション・テストのための一連のツールを提供する、ＲＡＭ１０２に格納されプロセッサ２０４で実行されるコンピュータ・プログラムを含む。一般的に言えば、シミュレータ２２４は、ハードウェアおよびソフトウェアの論理的または数学的にモデル化された項目の動作を予測するための規則ベースの命令を含む。シミュレータ２２４は、ハードウェア・モデル２２６と共にそれ自体の命令に含まれた一連の規則を使用して、エラー・コードおよびデバッグ命令を含む、テスト・ケース２２０に含まれる外部および内部刺激（ｓｔｉｍｕｌｉ）に対するハードウェア・モデル２２６の応答を予測する。
【００２９】
ハードウェアのどの項目をテストするかに応じて、ハードウェア・モデル２２６は多くの異なる種類のハードウェアの設計をモデル化することができるが、好ましくはマイクロプロセッサおよび特定用途向け集積回路（ＡＳＩＣ）などの構成要素のソフトウェア表現を提供する。図２に示された好ましい実施形態では、ハードウェア・モデル２２６はシミュレートされたプロセッサを含むが、当業者であればこれが図１に関して説明した構成要素と同様のシミュレートされた構成要素を含むことができることを理解するであろう。
【００３０】
シミュレータ２２４は、テスト・ケース２２０に含まれた外部および内部刺激とハードウェア・モデル２２６との対話の結果をプロセス・ログ２２２の結果記録ファイルに記録する。シミュレータ２２４は、プロセス・ログ２２２のコンテンツまたはハードウェア・モデル２２６の状況の状況選択インジケータをユーザＩ／Ｏ２１４に報告することもできる。さらに、時にはシミュレータ２２４、オペレーティング・システム２１７、テスト・ケース２２０、ハードウェア・モデル２２６、およびプロセス・ログ２２２のすべてまたは一部を、ストレージ２０６またはＲＡＭ２０２に格納することもできる。
【００３１】
図２に示されるような本発明の好ましい一実施形態では、本発明の方法は主にプロセッサ２０４で実行される。図２に示された本発明の方法を要約すると、ハードウェア・モデル２２６内でシミュレートされたプロセッサは、オペランドに対する選択した関数の実行をモデル化する。選択した関数は、回転、シフト、または符号拡張命令、あるいは、テスト・ケース２２０から受け取ったコマンドに基づいて回転、シフト、または符号拡張命令のうちの１つまたは複数の導関数を採用する命令を含むことになる。選択した関数はマスクを採用する。選択した関数の結果をチェックするために、プロセッサ２０４は選択した関数で使用されるマスクのアンチマスクを生成し、アンチマスクのモジュロ３がプロセッサ２０４によって計算される。選択した関数の結果のモジュロ３関数がプロセッサ２０４によって計算され、第３の結果が取得される。次にオペランドのモジュロ３がプロセッサ２０４によって計算されて第４の結果が取得され、その後、通常は合計を含む第２の関数が第２の結果および第３の結果に対してプロセッサ２０４によって実行され、第５の結果が取得される。このプロセッサ２０４による第５の結果と第４の結果との比較に応答して、ハードウェア・モデル２２６のシミュレートされたハードウェア内の障害を示すように、プロセッサ２０４によってプロセス・ログ２２２またはユーザＩ／Ｏ２１４に信号が伝播される。
【００３２】
好ましい実施形態は回転関数をチェックすることができる。他のいかなる関数も実行されずに偶数ビットのオペランドが回転されると、その結果でオペランドに提供されたすべてのデータが使用できる。一般に、回転値が０より大きくオペランド・ビット幅よりも小さいと仮定すると、ビット位置は変わるがデータの損失はない。したがって本発明の好ましい一実施形態は、回転中にデータが失われなかったことを保証するために、残余３（Ｒｅｓｉｄｕｅ  ３）を使用する以下の式で回転のチェックを実行する。
*R3Ra = R3Result +R3Antimask
【００３３】
好ましい一実施形態では、R3Raはオペランドのモジュロ３であり、R3Resultは回転された出力のモジュロ３である。好ましい一実施形態でモジュロ３が使用されるため、通常、データはビット・ペアとみなされることになる。回転量が偶数である限り、結果中でのオペランドの各ビット・ペアは同じ相対２ビット２進位置に常駐することになる。
【００３４】
しかしながらこの好ましい実施形態では、他の可能性が考慮される。回転量が奇数である場合、結果中でのビット・ペアの相対２ビット２進位置は、オペランド内の同じビット・ペアの位置と反対になる。したがって好ましい実施形態は、回転量が奇数の場合R3Ra値を反転（ｉｎｖｅｒｔ）させることになる。奇数の回転量に応答してR3Ra値を反転させる機能は、上記の数式および下記の後続の式でR3Raの横の「*」によって識別される。好ましい一実施形態では、マスクをオペランドとＡＮＤ演算して回転の結果を生成し、マスクの反転をオペランドとＡＮＤ演算してアンチマスクを生成する。アンチマスク項は通常の回転では不要であり、好ましい実施形態では回転関数へのすべてのデータ入力が結果で使用できることに留意されたい。
【００３５】
次に、８ビットのオペランドを５ビットだけ回転させる好ましい実施形態の一例を示すが、回転関数の障害検出式は偶数のオペランドおよび回転に等しく適用することができる。本発明の好ましい一実施形態を説明するために与えられた例では、値または変数の前に示された表記「~」は、値または変数の２進反転を示す。したがって、「~Mask」はマスク項の反転を表す。以下の例では、オペランド「10110011」が回転される。
10110011 R3Ra = 2               10110011 R3Ra =2
10011101 rotate right 5         10011101 rotateright 5
11111111 Mask                   00000000 ~ Mask
10011101 R3Result = 1          00000000 R3antimask = 0
【００３６】
上記の例ではシフトの長さが奇数であるため、好ましい実施形態はR3Raを反転させることになる。したがって、*R3Ra = ~２ = 1となる。R3Result+R3antimask = 1+0 =1である。実際のマイクロプロセッサ・システムでは、数式*R3Ra = R3Result +R3Antimaskが数式の両側で同じ結果を生成するということは、*R3Ra= R3Result + R3Antimask式によって検証された回路が正しく実行され破損していないことを示す。
【００３７】
好ましい実施形態はシフト関数をチェックすることができる。本発明に従ってオペランドのシフトが実行されると、オペランド内に存在したデータはシフトされ、結果の中には存在しない。剰余を使用してシフトが正しく実行されたことをチェックするためには、オペランド全体をチェックに使用できる必要がある。この要件に対処するために、本発明の好ましい一実施形態では真のシフタではなくローテータを使用してシフトを実行し、望ましくないデータを隠す（ｍａｓｋ  ｏｆｆ）。隠されたデータはアンチマスク結果として格納され、これはシフトの際に通常はドロップされるオペランドの部分である。好ましい一実施形態は、反転されたマスクを使用してアンチマスク値を作成する。本発明の好ましい一実施形態は、アンチマスクを格納し、これをエラー・チェック計算で使用することによって、シフト中に何らかのデータが失われたかどうかを剰余を使用して判定することができる。前述の回転の例と同様に、データの損失を検出することができる。
【００３８】
次に、８ビットのオペランドを５ビットだけシフトさせる好ましい実施形態の一例を示すが、回転関数の障害検出式は偶数のオペランドおよび回転に等しく適用することができる。以下の例では、オペランド「10110011」がシフトされる。
*R3Ra = R3Result + R3antimask
10110011 R3Ra = 2                10110011 R3Ra =2
10011101rotate right 5          10011101 rotate right 5
00000111 Mask                    11111000 ~ Mask
00000101 R3Result = 2           10011000 R3antimask = 2
【００３９】
上記の例ではシフトの長さが奇数であるため、好ましい実施形態はR3Raを反転させることになる。したがって*R3a = ~２ = 1となる。R3Result+R3antimask = 1+0 =1である。したがって*R3Ra = ~２ = 1となる。R3Result+R3antimask= 2+2 = 4 = 1である。実際のマイクロプロセッサ・システムでは、数式*R3Ra = R3Result + R3Antimaskが数式の両側で同じ結果を生成するということは、*R3Ra = R3Result + R3Antimask式によって検証された回路が正しく実行され破損していないことを示す。
【００４０】
本発明の好ましい一実施形態は、「マージ付き回転（ｒｏｔａｔｅ  ｗｉｔｈ  ｍｅｒｇｅ）」関数のチェックをサポートする。「マージ付き回転」命令は、２つのオペランドからのデータからなる結果を生成する。一方のオペランドは回転された後マージされ、他方のオペランドはこのマージを調節するためにマスクを採用する手順である。本発明の好ましい一実施形態は、両方のオペランドを剰余／モジュロ関数によって表すように規定することによってこの関数をチェックすることができる。本発明の好ましい一実施形態は、結果の一部ではなくマージで使用されない両方のオペランドからのデータを最後のチェック式で表すように規定することによって、この関数をチェックすることができる。本発明の好ましい一実施形態は、各オペランドについてアンチマスク値を作成する。アンチマスク値の剰余は、チェック式への入力としても使用される。
【００４１】
次に、８ビットのオペランドを５ビットだけ回転させ８ビットとマージする好ましい実施形態の一例を示すが、回転関数の障害検出式は偶数のオペランドおよび回転に等しく適用することができる。以下の例では、オペランド「10110011」が回転されオペランド「11100010」とマージされる。
【００４２】
*R3RaA + R3Rb = R3RaResult + R3RbResult +R3Raantimask+ R3Rbantimask
10110011 R3OpA = 211100010 R3Rb = 1
10011101 rotate Ra right 5 11100010 Rb not rotated
11100000 Mask00011111 ~ Mask
10000000 RaResult00000010 RbResult = 2
【００４３】
Merging OpA and OpB = 100000010 =R3RaResult + R3RbResult = 2+2 = 1
10110011 R3Ra = 2              11100010 R3Rb = 1
10011101 rotate Ra right 5 11100010 Rb not rotated
00011111 ~Mask11100000 Mask
00011101 R3Raantimask = 211100000 R3Rbantimask = 2
【００４４】
したがって、~ R3Ra + R3Rb =~2+1 = 2である。
【００４５】
R3RaResult + R3RbResult + R3Raantimask+R3Rbantimask = 2+2+2+2 = 8 = 2である。
【００４６】
実際のマイクロプロセッサ・システムでは、数式*R3RaA+ R3Rb = R3RaResult + R3RbResult + R3Raantimask+ R3Rbantimaskが数式の両側で同じ結果を生成するということは、*R3RaA + R3Rb =R3RaResult + R3RbResult + R3Raantimask+ R3Rbantimask式によって検証された回路が正しく実行され破損していないことを示す。
【００４７】
本発明の好ましい一実施形態は、「符号拡張付き回転またはシフト」関数をチェックすることができる。本発明の好ましい一実施形態では、符号拡張がマージ付き回転またはマージ付きシフトとして実行される。好ましい一実施形態では、マージング・オペランドは符号拡張値として働く。したがってマージング・オペランドは、ビット幅全体を横切って符号ビットを複製することによって作成される。オペランドが偶数ビットである限り、マージング・オペランドの剰余は常に０である。アンチマスクを再度利用した数式*R3RaA + R3Se = R3RaResult + R3SeResult + R3Raantimask+ R3Rbantimaskが使用可能であり、この式でSeは符号拡張を表し、マージ付き回転式のRbと置き換えられる。
【００４８】
次に、８ビットのオペランドを５ビットだけ回転させる好ましい実施形態の一例を示すが、偶数長さの２進文字列は本発明の好ましい一実施形態に準拠する。以下の例では、オペランド「10110011」が回転される。
10110011 R3OpA = 2              11111111 R3Se = 0
10011101 rotate Ra right 5 Se not Rotated
00000111 Mask                 11111000~ Mask
00000101 RaResult = 211111000 SeResult = 2
【００４９】
Merging Ra AND Se = 11111101 = R3RaResult +R3SeResult = 2+2 = 1
10110011 R3Ra = 2              11111111 R3Se = 1
10011101 rotate Ra right 5      Se notRotated
11111000 ~Mask                 00000111 Mask
10011000 R3RaAntimask = 2     00000111 R3Seantimask = 1
【００５０】
したがって、~ R3Ra + R3Se =~2+0 = 1である。
【００５１】
R3RaResult + R3SeResult + R3Raantimask+R3Seantimask = 2+2+2+1 = 7 = 1である。
【００５２】
実際のマイクロプロセッサ・システムでは、数式*R3RaA+ R3Se = R3RaResult + R3SeResult + R3Raantimask+ R3Seantimaskが数式の両側で同じ結果を生成するということは、*R3RaA + R3Se =R3RaResult + R3SeResult + R3Raantimask+ R3Rbantimask式によって検証された回路が正しく実行され破損していないことを示す。
【００５３】
次に図３を参照すると、本発明の好ましい一実施形態に従って、エラー検出を実行するためのプロセスを示す高水準流れ図が示されている。
【００５４】
図３は、図１のデータ処理システムが前述の第１の例のように回転関数を実行およびチェックする例に関して以下で説明する、高水準かつ一般化された流れ図を示すが、当業者であれば、図２に示されたようなデータ処理システム環境での本発明の好ましい一実施形態に必要であり、本開示で説明される後続の例によって表される関数を実行およびチェックするために使用される、修正形態を即時に見極めるであろう。
【００５５】
プロセスは、エラー検出ルーチンの起動を示すステップ３００で開始される。通常このステップは、プロセッサ１０２のＦＸＵ１１４が回転関数、シフト関数、マージ付き回転関数、あるいは符号拡張付き回転またはシフト関数を実行するための命令を受け取ると発生する。次にプロセスは、ＦＸＵ１１４がオペランドおよび大きさ（ｍａｇｎｉｔｕｄｅ）を受け取るステップ３０２へ進む。単純な回転またはシフト関数では、オペランドは選択した関数が実行されることになる数からなり、大きさはシフトまたは回転が実行されることになるビット位置の数からなる。
【００５６】
次にプロセスは、ＦＸＵ１１４がマスクを作成することを示すステップ３０４に移る。マスクの作成は基礎となる数学的演算の実行において、さらに本発明の好ましい実施形態でエラー検出の方法を実行する際に使用される。次にプロセスは２つに分岐し、２本の経路に沿って進む。ブロック３０６を含む第１の経路は、通常はシフタ１２４またはローテータ１２６で実行されることになる。ステップ３０８〜３１２を含む第２の経路は、シフタ１２４、ローテータ１２６、またはｍｏｄチェッカ１２８およびｍｏｄチェッカ１３４環境のセットのうちの１つで実行することができる。図２のデータ処理システム２００などの環境では、第１の経路はハードウェア・モデル２２６のシミュレートされたプロセッサ内にあるシミュレートされたＦＸＵによって実行可能であり、第２の経路はシミュレータ２２４内で実行可能である。
【００５７】
次にステップ３０６を参照すると、ＦＸＵ１１４またはシミュレートされたプロセッサが選択した関数の結果を生成する。それと同時に、ステップ３０８で前述のようにアンチマスクが作成される。マージ付きシフト関数などの２オペランド演算の場合、多値オペランドを使用することができる。多値オペランドを使用する場合、ステップ３１０に示されるように各オペランド値のモジュロ３が計算されることになる。さらに、ステップ３０４および３０８でマスクおよびアンチマスクが作成され、それぞれ多値オペランドの各オペランド値に対して作成することができる。この多値オペランドが使用される場合、オペランド、マスク、およびアンチマスクは、配列値またはベクトル値変数として表すことができる。次にステップはステップ３１０から、プロセッサ１０２またはシミュレータ２２４が１つまたは複数の値を含むことができるアンチマスクのモジュロ３を計算することを示すステップ３１２へと進む。
【００５８】
次にプロセスの２本の経路はステップ３１４で再度結合される。ステップ３１４は、ステップ３０６で生成された選択した関数の結果のモジュロ３を計算する本発明の好ましい一実施形態を示す。次にプロセスは、選択した関数の結果のモジュロ３とアンチマスクのモジュロ３を合計する、本発明の好ましい実施形態を示すステップ３１６に進む。前述の例に記載されるように、これらはベクトル値または配列値変数とするか、単純な算術和よりも複雑な関数を含むことができる。
【００５９】
次にプロセスは、シフトまたは回転演算の大きさが奇数であるかどうかの判定を示すステップ３１８に進む。シフトまたは回転演算の大きさが奇数である場合、次にプロセスは、ステップ３０２で受け取ったオペランドのモジュロ３の反転を示すステップ３２４に進む。
【００６０】
次にプロセスは、ステップ３１６で計算された合計がオペランドのモジュロ３の反転に等しいかどうかを示す、ステップ３２６に移る。等しい場合、エラーが検出または報告されずにプロセスはステップ３２８で終了する。しかしながら、ステップ３１６の合計がオペランドのモジュロ３の反転に等しくない場合、プロセスはステップ３２６から、ステップ３０６で計算された結果でエラーが報告されることを示すステップ３２２に進む。ステップ３２２の後、プロセスはステップ３２８で終了する。
【００６１】
ステップ３１８に戻り、シフトまたは回転関数の大きさが偶数の場合、次にプロセスは、ステップ３１６で計算された合計がオペランドのモジュロ３に等しいかどうかを判定するステップ３２０に進む。等しくない場合、次にプロセスはエラーを報告するステップ３２２に進み、その後ステップ３２８で終了する。他方で、ステップ３１６で取得した合計がオペランドのモジュロ３に等しいことがブロック３２０で判定された場合、プロセスは直接ステップ３２８に進み、エラーの報告なしに終了する。
【００６２】
本発明の好ましい実施形態の説明でわかりやすくするために、図３はエラー検出を実行するためのプロセスを一般化された相対的に直線的な表現で表している。図３は論理的なステップの順序を表しているが、本発明の好ましい実施形態の効率的な並列処理またはパイプライン化された実施を容易にするために、好ましい実施形態でステップが実際に実行される順序は図３とはかなり異なるものであってもよいことを、当業者であれば理解されるであろう。本発明の様々な実施は、他の順序で示されたステップを実行すること、および本発明の範囲を逸脱することなく並列またはパイプライン化された配置構成でステップの一部を実行することができる。こうした特定の実施形態の１つが図４に示されている。
【００６３】
次に図４を参照すると、本発明の好ましい一実施形態に従って、並列処理環境でエラー検出を実行するためのプロセスの高水準流れ図が示されている。プロセスはブロック４００で開始され、次にプロセスは２つに分岐して２本の経路に沿って進む。第１の経路は、オペランドを受け取りオペランドの剰余（モジュロ）値を計算するブロック４０２および４１８を含む。好ましい実施形態はブロック４０２でオペランドを受け取る。次にプロセスは、好ましい実施形態が各オペランドについて剰余値を生成するブロック４１８に移る。
【００６４】
プロセスは並行する経路に沿って、プロセスが開始されるブロック４００から、本発明の好ましい実施形態が命令を受け取るブロック４０４に移る。次にプロセスのこの分岐が２つに分岐し、同時に実行される２本の従属経路に沿って移動する。第１の従属経路はブロック４０６、４１０、および４１４を含み、命令の結果を生成するブロック４１４で終わる。第２の従属経路はブロック４０８、４１２、および４１６を含み、アンチマスク結果の剰余を生成するブロック４１６で終わる。その後、すべての経路はチェック式の実行を示すブロック４２０に集束する。
【００６５】
以上、本発明について好ましい実施形態を参照しながら具体的に説明してきたが、当業者であれば本発明の趣旨および範囲を逸脱することなく形式および細部における様々な変更が可能であることを理解されよう。たとえば、本発明について完全に機能するコンピュータ・システムとの関連において説明してきたが、当業者であれば、本発明の機構が様々な形のプログラムとして配布可能であること、および実際に配布を実行するために使用される特定タイプの信号伝達媒体の如何に関わらず本発明が等しく適用されることを理解されよう。信号伝達媒体の例には、フロッピィ・ディスクまたはＣＤ−ＲＯＭなどの書き込み可能タイプの媒体、およびアナログまたはデジタル通信などの伝送タイプの媒体が含まれるが、これらに限定されるものではない。
【図面の簡単な説明】
【００６６】
【図１】本発明の好ましい一実施形態に従って、エラー検出装置を備えたデータ処理システムを示すブロック図である。
【図２】本発明の好ましい一実施形態に従って、データ処理システムをモデル化するための動作シミュレーション・プログラムおよびエラー検出装置を備えたデータ処理システムを示すブロック図である。
【図３】本発明の好ましい一実施形態に従って、エラー検出を実行するためのプロセスを示す高水準流れ図である。
【図４】本発明の好ましい一実施形態に従って、並列処理環境でエラー検出を実行するためのプロセスを示す高水準流れ図である。
【符号の説明】
【００６７】
１０２    プロセッサ
１０４    システム・バス
１０６    ＢＩＵ
１０８    Ｉキャッシュ
１１０    Ｄキャッシュ
１１２    ＩＳＵ
１１４    ＦＸＵ
１１６    ＬＳＵ
１１７    ＤＭＭＵ
１１８    ＦＰＵ
１２０    ＧＰＲ
１２２    ＦＰＲ
１２４    シフタ
１２６    ローテータ
１２８    ＭＯＤチェッカ
１３０    コンパレータ
１３２    リカバリ論理
１３４    ＭＯＤチェッカ
１３６    コンパレータ
１３８    ＲＡＭ
１４０    ストレージ
１４２    Ｉ／Ｏコントローラ
１４４    ネットワーク
１４６    ネットワーク・ケーブル
１４８    Ｉ／Ｏデバイス
１５０    オペレーティング・システム
１５２    アプリケーション
１５４    有線または無線リンク
【図１】
2005339562.tif 000003
【図２】
2005339562.tif 000004
【図３】
2005339562.tif 000005
【図４】
2005339562.tif 000006