(57)【要約】【課題】  コンピューティング環境のストレージをダイジェストするための方法を提供することにある。【解決手段】  ダイジェストすべきストレージ・ユニットは命令を介して指定される。次に、データはストレージ・ユニット内でダイジェストされる。
2006526202.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境のストレージをダイジェスト化する方法であって、
ダイジェスト化されるべきストレージ・ユニットを命令を介して指定するステップと、
前記ストレージ・ユニット内のデータをダイジェスト化するステップと、
を有する方法。
【請求項２】
前記指定するステップが、前記ストレージ・ユニットに関連するデータ構造のロケーション情報を提供するステップを有する、請求項１に記載の方法。
【請求項３】
前記ロケーション情報が前記データ構造の起点を有する、請求項２に記載の方法。
【請求項４】
前記ロケーション情報が前記データ構造の項目のインデックスをさらに有し、前記項目が前記ストレージ・ユニットに対応する、請求項３に記載の方法。
【請求項５】
データをダイジェスト化する前記ステップが、セキュア・ハッシュ・アルゴリズムにより前記ストレージ・ユニット内の前記データをハッシュし、それにより前記ストレージ・ユニット内の前記データの圧縮表現を提供するステップを有する、請求項１に記載の方法。
【請求項６】
前記ストレージ・ユニットがストレージ・セグメントおよびストレージ領域のうちの１つを有し、前記ストレージ・ユニットのデータ構造がセグメント・データ構造および領域データ構造のうちの１つを有する、請求項１に記載の方法。
【請求項７】
データをダイジェスト化する前記ステップが前記命令を介して実行される、請求項１に記載の方法。
【請求項８】
前記データ構造が複数の項目を有し、データをダイジェスト化する前記ステップが、ダイジェスト化すべき前記ストレージ・ユニットに関連する項目を入手するためにインデックスを使用するステップをさらに有する、請求項１に記載の方法。
【請求項９】
前記ストレージ・ユニットがストレージ・セグメントを有し、前記ストレージ・セグメントが複数のストレージ・ページを有する、請求項１に記載の方法。
【請求項１０】
前記ストレージ・ユニットがストレージ領域を有し、前記ストレージ領域が複数のストレージ・セグメントを有し、１つのストレージ・セグメントが複数のストレージ・ページを有する、請求項１に記載の方法。
【請求項１１】
前記指定するステップが複数のストレージ・ユニットを指定するステップを有し、データをダイジェスト化する前記ステップが、前記複数のストレージ・ユニットをダイジェスト化するステップと、ダイジェスト化した前記データを第２のより小さいストレージ・ユニットに保管するステップとを有する、請求項１に記載の方法。
【請求項１２】
データをダイジェスト化する前記ステップが、前記複数のストレージ・ユニットをダイジェスト化するためのチェーン動作を有する、請求項１１に記載の方法。
【請求項１３】
ダイジェスト化すべきデータがメッセージであり、前記ストレージ・ユニットがブロック単位になっており、データをダイジェスト化する前記ステップが、完全なブロックを処理するステップと、すべての完全なブロックを処理した後に前記指定されたストレージの残りの部分を埋め込むステップとを有する、請求項１２に記載の方法。
【請求項１４】
前記ストレージが仮想ストレージを有する、請求項１に記載の方法。
【請求項１５】
前記命令が、ハードウェア、ファームウェア、およびソフトウェアのうちの少なくとも１つで実現される、請求項１に記載の方法。
【請求項１６】
前記命令が、前記命令のアーキテクチャをエミュレートする処理ユニットによって実行され、前記命令の前記アーキテクチャが前記処理ユニットのアーキテクチャとは異なる、請求項１に記載の方法。
【請求項１７】
コンピューティング環境のストレージをダイジェスト化するためのシステムであって、請求項１ないし１６のいずれかに記載の前記ステップを実行するための手段を有するシステム。
【請求項１８】
請求項１ないし１６のいずれかに記載の前記方法を実行するためのコンピュータ可読プログラム・コードを有する少なくとも１つのコンピュータ使用可能媒体
を有するコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システム・アーキテクチャに関し、特に、ＩＢＭ（商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（商標）を増強し、他のアーキテクチャによってエミュレート可能な新しい命令の処理に関する。
【背景技術】
【０００２】
本発明の前にＩＢＭは、１９６０年代にＩＢＭのシステム３６０として知られていたマシンから始めて現在までの多くの非常に有能なエンジニアの研究により、コンピュータ・システムに対するその本質的な性質のために「メインフレーム」として知られることになった特別なアーキテクチャを作り出してきた。その動作原理は、ＩＢＭの発明者によって発明されて採用された命令であって「メインフレーム」に実装した時に実行させることができる命令を記述することによってそのマシンのアーキテクチャを示すものである。それらは長年にわたって示された通り、ＩＢＭのＰｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎに含めることによる重大な貢献として、「メインフレーム」によって表されるコンピューティング・マシンの状態の改善に大幅に貢献するものである。２０００年１２月に発行された「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」の第１版は、ＳＡ２２−７８３２−００として標準的な公開解説書になっている。
【特許文献１】米国特許第５５５１０１３号
【特許文献２】米国特許第６００９２６１号
【特許文献３】米国特許第５５７４８７３号
【特許文献４】米国特許第６３０８２５５号
【特許文献５】米国特許第６４６３５８２号
【特許文献６】米国特許第５７９０８２５号
【非特許文献１】２０００年１２月に発行された「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」の第１版（ＳＡ２２−７８３２−００）
【非特許文献２】１９９５年４月１７日にワシントンＤＣのＮａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙより発行された「Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ，  Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ」という資料の１８０−１
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本明細書に記載する通り、他の新しい命令は、当技術分野を支援することになり、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅマシンに含めることができ、より単純なマシンにおいて他のものによりエミュレートすることも可能であると判断した。
【課題を解決するための手段】
【０００４】
本発明は、請求項１に記載の方法を提供する。
本発明の好ましい諸実施形態の特徴は、添付図面に関連して取り上げた以下の詳細な説明により当業者には明らかになるであろう。
【発明を実施するための最良の形態】
【０００５】
本明細書で論ずるメッセージ・ダイジェスト化命令は、メッセージまたはデータ・ファイルの圧縮表現を計算するためのものである。まず、中間メッセージ・ダイジェスト化計算命令および最終メッセージ・ダイジェスト化計算命令について論じ、次にこれらの命令を実行するための好ましいコンピュータ・システムの考察が続くものとする。代替例では、これらの命令を実行するための他のコンピュータ・システムをエミュレートする第２の好ましいコンピュータ・システムについて論ずることにする。
【０００６】
中間メッセージ・ダイジェスト化計算（ＫＩＭＤ：COMPUTEINTERMEDIATE MESSAGE DIGEST）
図１は、ＰＲＥ命令フォーマットの中間メッセージ・ダイジェスト化計算（ＫＩＭＤ）命令の表現である。
【０００７】
最終メッセージ・ダイジェスト化計算（ＫＬＭＤ：COMPUTELAST MESSAGE DIGEST）
図２は、ＰＲＥ命令フォーマットの最終メッセージ・ダイジェスト化計算（ＫＬＭＤ）命令の表現である。
【０００８】
汎用レジスタ０内の機能コードによって指定された機能が実行される。
【０００９】
この命令のビット１６〜２３およびＲ１フィールドは無視される。
【００１０】
汎用レジスタ０のビット位置５７〜６３は機能コードを収容している。図３および図４は、それぞれ中間メッセージ・ダイジェスト化計算および最終メッセージ・ダイジェスト化計算について割り当てられた機能コードを示している。他の機能コードはいずれも未割当てである。汎用レジスタ０のビット５６はゼロでなければならず、そうではない場合、指定例外が認識される。汎用レジスタ０の他のビットはいずれも無視される。汎用レジスタ１は、ストレージ内のパラメータ・ブロックの左端のバイトの論理アドレスを収容している。２４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置４０〜６３の内容はアドレスを構成し、ビット位置０〜３９の内容は無視される。３１ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置３３〜６３の内容はアドレスを構成し、ビット位置０〜３２の内容は無視される。６４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置０〜６３の内容はアドレスを構成する。
【００１１】
中間メッセージ・ダイジェスト化計算用の機能コードは図３に示されている。
【００１２】
最終メッセージ・ダイジェスト化計算用の機能コードは図４に示されている。
【００１３】
他の機能コードはいずれも未割当てである。
【００１４】
照会機能は他の機能の可用性を示す手段を提供する。汎用レジスタＲ２およびＲ２＋１の内容は照会機能の場合は無視される。
【００１５】
他のすべての機能の場合、第２オペランドはパラメータ・ブロック内の初期チェーン値を使用する機能コードによって指定された通りに処理され、その結果はチェーン値に取って代わる。最終メッセージ・ダイジェスト化計算の場合、その動作はパラメータ・ブロック内のメッセージ・ビット長も使用する。その動作は、第２オペランド・ロケーションの末尾に到達するまでまたはＣＰＵが決定したバイト数の処理が完了するまでのいずれか先に発生する時点まで続行される。その結果は条件コードとして示される。
【００１６】
Ｒ２フィールドは、汎用レジスタの奇偶対を指定するものであって、偶数レジスタを指定しなければならず、そうではない場合、指定例外が認識される。
【００１７】
第２オペランドの左端のバイトのロケーションはＲ２汎用レジスタの内容によって指定される。第２オペランド・ロケーションのバイト数は汎用レジスタＲ２＋１に指定される。
【００１８】
動作の一部として、汎用レジスタＲ２内のアドレスは第２オペランドから処理されたバイト数だけ増分され、汎用レジスタＲ２＋１内の長さは同じ数だけ減分される。アドレスおよび長さの構成および更新はアドレッシング・モードに依存する。
【００１９】
２４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置４０〜６３の内容は第２オペランドのアドレスを構成し、ビット位置０〜３９の内容は無視され、更新済みアドレスのビット４０〜６３は汎用レジスタＲ２内の対応ビットに取って代わり、更新済みアドレスのビット位置４０からの桁上げは無視され、汎用レジスタＲ２のビット位置３２〜３９の内容はゼロに設定される。３１ビットのアドレッシング・モードでは、汎用レジスタＲ＿のビット位置３３〜６３の内容は第２オペランドのアドレスを構成し、ビット位置０〜３２の内容は無視され、更新済みアドレスのビット３３〜６３は汎用レジスタＲ２内の対応ビットに取って代わり、更新済みアドレスのビット位置３３からの桁上げは無視され、汎用レジスタＲ２のビット位置３２の内容はゼロに設定される。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置０〜６３の内容は第２オペランドのアドレスを構成し、更新済みアドレスのビット０〜６３は汎用レジスタＲ＿の内容に取って代わり、ビット位置０からの桁上げは無視される。
【００２０】
２４ビットと３１ビットの両方のアドレッシング・モードでは、汎用レジスタＲ２＋１のビット位置３２〜６３の内容は、第２オペランド内のバイト数を指定する３２ビットの符号なし２進整数を形成し、更新済み値は汎用レジスタＲ２＋１のビット位置３２〜６３の内容に取って代わる。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２＋１のビット位置０〜６３の内容は、第２オペランド内のバイト数を指定する６４ビットの符号なし２進整数を形成し、更新済み値は汎用レジスタＲ２＋１の内容に取って代わる。
【００２１】
２４ビットまたは３１ビットのアドレッシング・モードでは、汎用レジスタＲ２およびＲ２＋１のビット位置０〜３１の内容は常に変化しない。
【００２２】
図５は、上述の汎用レジスタの内容を示している。アクセス・レジスタ・モードでは、アクセス・レジスタ１およびＲ２は、それぞれパラメータ・ブロックおよび第２オペランドを収容するアドレス・スペースを指定する。
【００２３】
その結果は、処理が第２オペランドの左端から始まり、１ブロックずつ右に進行した場合と同様に得られる。第２オペランド内のすべてのソース・バイトの処理が完了する（正常完了という）かまたはＣＰＵが決定したブロック数であって第２オペランドの長さより小さいブロック数の処理が完了する（部分完了という）と、動作が終了する。ＣＰＵが決定したブロック数は、モデルによって決まり、命令が実行されるたびに異なる数になる可能性がある。ＣＰＵが決定したブロック数は通常、非ゼロである。特定の異常な状況では、この数はゼロになる可能性があり、進行なしで条件コード３が設定される可能性がある。しかし、ＣＰＵは、この進行なしケースの無限の再発を防止する。
【００２４】
チェーン値フィールドが第２オペランドの任意の部分にオーバラップする場合、チェーン値フィールド内の結果は予測不能である。
【００２５】
中間メッセージ・ダイジェスト化計算の場合、汎用レジスタＲ２＋１に指定された第２オペランド内のバイト数の処理が完了すると、正常完了が発生する。最終メッセージ・ダイジェスト化計算の場合、汎用レジスタＲ２＋１に指定された第２オペランド内のすべてのバイトが処理された後、埋込み動作が実行され、その後、正常完了が発生する。
【００２６】
正常完了により動作が終了すると、条件コード０が設定され、Ｒ２＋１内の結果値はゼロになる。部分完了により動作が終了すると、条件コード３が設定され、Ｒ２＋１内の結果値は非ゼロになる。
【００２７】
第２オペランド長が最初はゼロである場合、第２オペランドはアクセスされず、汎用レジスタＲ２およびＲ２＋１は変更されず、条件コード０が設定される。中間メッセージ・ダイジェスト化計算の場合、パラメータ・ブロックはアクセスされない。しかし、最終メッセージ・ダイジェスト化計算の場合、空ブロック（Ｌ＝０）ケースの埋込み動作が実行され、その結果はパラメータ・ブロックに保管される。
【００２８】
他のＣＰＵおよびチャネル・プログラムが監視する通り、パラメータ・ブロックおよび記憶オペランドへの参照は多重アクセス参照である可能性があり、これらのストレージ・ロケーションへのアクセスは必ずしもブロック並行ではなく、これらのアクセスまたは参照の順序は未定義である。
【００２９】
第２オペランドのうち、命令の単一実行で処理されるものより大きい部分について、アクセス例外が報告される可能性があるが、第２オペランドの長さを超えるロケーションまたは処理中の現行ロケーションを４Ｋバイト以上超えるロケーションについては、アクセス例外は認識されない。
【００３０】
（（機能説明で使用する記号））
図６の記号は、中間メッセージ・ダイジェスト化計算機能および最終メッセージ・ダイジェスト化計算機能の以下の説明で使用する。セキュア・ハッシュ・アルゴリズムの詳細な説明は、１９９５年４月１７日にワシントンＤＣのＮａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙより発行された「Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ，  Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ」という資料の１８０−１に記載されている可能性がある。
【００３１】
ＫＩＭＤ照会（ＫＩＭＤ機能コード０）
この命令によって使用されるオペランドおよびアドレスのロケーションは図５に示されている通りである。
ＫＩＭＤ照会パラメータ・ブロックは図７に示されているフォーマットを有する。
１２８ビットの状況ワードはパラメータ・ブロックに保管される。このフィールドのビット０〜１２７は、それぞれ中間メッセージ・ダイジェスト化計算命令の機能コード０〜１２７に対応する。あるビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。
ＫＩＭＤ照会機能の実行が完了すると、条件コード０が設定され、条件コード３はこの機能には適用不能である。
【００３２】
ＫＩＭＤ−ＳＨＡ−１（ＫＩＭＤ機能コード１）
この命令によって使用されるオペランドおよびアドレスのロケーションは図５に示されている通りである。
ＫＩＭＤ−ＳＨＡ−１機能に使用されるパラメータ・ブロックは図８に示されているフォーマットを有する。
２０バイトの中間メッセージ・ダイジェスト化は、パラメータ・ブロックに２０バイトのチェーン値を指定したＳＨＡ−１ブロック・ダイジェスト化・アルゴリズムを使用して、オペランド２の６４バイトのメッセージ・ブロック用に生成される。生成された中間メッセージ・ダイジェスト化は、出力チェーン値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーン値フィールドに保管される。ＫＩＭＤ−ＳＨＡ−１動作は図９に示されている。
【００３３】
ＫＬＭＤ照会（ＫＬＭＤ機能コード０）
この命令によって使用されるオペランドおよびアドレスのロケーションは図５に示されている通りである。
ＫＬＭＤ照会機能に使用されるパラメータ・ブロックは図１０に示されているフォーマットを有する。
１２８ビットの状況ワードはパラメータ・ブロックに保管される。このフィールドのビット０〜１２７は、それぞれ最終メッセージ・ダイジェスト化計算命令の機能コード０〜１２７に対応する。あるビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。
ＫＬＭＤ照会機能の実行が完了すると、条件コード０が設定され、条件コード３はこの機能には適用不能である。
【００３４】
ＫＬＭＤ−ＳＨＡ−１（ＫＬＭＤ機能コード１）
この命令によって使用されるオペランドおよびアドレスのロケーションは図５に示されている通りである。
ＫＬＭＤ−ＳＨＡ−１機能に使用されるパラメータ・ブロックは図１１に示されているフォーマットを有する。
オペランド２のメッセージ（Ｍ）用のメッセージ・ダイジェスト化は、パラメータ・ブロックにチェーン値およびメッセージ・ビット長情報を指定したＳＨＡ−１アルゴリズムを使用して生成される。
【００３５】
オペランド２のメッセージの長さが６４バイトに等しいかまたはそれより大きい場合、中間メッセージ・ダイジェスト化は、パラメータ・ブロックに２０バイトのチェーン値を指定したＳＨＡ−１ブロック・ダイジェスト化・アルゴリズムを使用して、６４バイトのメッセージ・ブロックごとに生成され、生成された中間メッセージ・ダイジェスト化は、出力チェーン値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーン値フィールドに保管される。この動作は図１２に示されており、残りのメッセージが６４バイト未満になるまで繰り返す。メッセージまたは残りのメッセージの長さが０バイトである場合、図１３の動作が実行される。
【００３６】
メッセージまたは残りのメッセージの長さが１バイトから５５バイトまで（両端を含む）である場合、図１４の動作が実行され、この長さが５６バイトから６３バイトまで（両端を含む）である場合、図１５の動作が実行される。このメッセージ・ダイジェスト化は、出力チェーン値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーン値フィールドに保管される。
【００３７】
（（ＫＬＭＤ機能で使用される追加の記号））
以下の追加の記号は、最終メッセージ・ダイジェスト化計算機能の説明で使用される。
【００３８】
ＫＬＭＤ機能図用の記号の説明
Ｌ ストレージ内のオペランド２のバイト長
ｐ＜ｎ＞ ｎ個の埋込みバイト；左端のバイトは１６進の８０であり、他のバイトはいずれも１６進の００である。
ｚ＜５６＞ ０からなる５６個の埋込みバイトである。
Ｍｂｌ 全メッセージのビット長を指定する８バイトの値
ｑ＜６４＞ ５６バイト分の０とそれに続く８バイトのｍｂｌからなる埋込みブロック
【００３９】
ＫＩＭＤおよびＫＬＭＤに関する特殊条件
以下のいずれかが発生した場合、指定例外が認識され、他のアクションは一切行われない。
１．汎用レジスタ０のビット５６がゼロではない。
２．汎用レジスタ０のビット５７〜６３が未割当ての機能コードまたはアンインストールされた機能コードを指定する。
３．Ｒ２フィールドが奇数レジスタまたは汎用レジスタ０を指定する。
４．中間メッセージ・ダイジェスト化計算の場合、第２オペランド長が指定された機能のデータ・ブロック・サイズの倍数ではない（中間メッセージ・ダイジェスト化計算機能のデータ・ブロック・サイズを決定するためには図３を参照されたい）。この指定例外条件は照会機能には適用されず、最終メッセージ・ダイジェスト化計算にも適用されない。
【００４０】
結果条件コード：
０ 正常完了
１ ――
２ ――
３ 部分完了
【００４１】
プログラム例外：
アクセス（Access）
オペランド２およびメッセージ・ビット長の取出し；
チェーン値の取出しおよび保管
動作（Operation）
メッセージ・セキュリティ支援機能がインストールされていない場合
指定（Specification）
【００４２】
プログラミング上の注意：
１．汎用レジスタ０のビット５６は、将来の拡張のために予約されており、ゼロに設定しなければならない。
２．条件コード３が設定されると、それぞれ汎用レジスタＲ２およびＲ２＋１内の第２オペランド・アドレスおよび長さならびにパラメータ・ブロック内のチェーン値は、通常、プログラムが単純に分岐してその命令に戻り、その動作を継続できるように更新される。
異常な状況では、ＣＰＵは、進行なしケースの場合に無限の再発を防止する。したがって、プログラムは、無限ループに対する露出なしに条件コード３が設定される場合に必ず、安全に分岐してその命令に戻ることができる。
３．第２オペランドの長さが最初に非ゼロであり、条件コード０が設定される場合、レジスタは条件コード３の場合と同様に更新され、このケースのチェーン値は、それらが同じチェーンの一部であった場合と同様に追加のオペランドを処理できるようなものになっている。
４．中間メッセージ・ダイジェスト化計算命令と最終メッセージ・ダイジェスト化計算命令は、セキュリティ・サービス・アプリケーション・プログラミング・インターフェース（ＡＰＩ）によって使用されるように設計されている。これらのＡＰＩは、大きすぎて一度にすべてがストレージ内に収まらないようなものを含む、ほとんど無制限のサイズのメッセージのダイジェスト化を計算するための手段をプログラムに提供する。これは、プログラムがメッセージを部分単位でＡＰＩに渡せるようにすることにより実施される。以下のプログラミング上の注意は、これらのＡＰＩに関して記載されている。
５．メッセージの第１の部分を処理する前に、プログラムはチェーン値フィールド用の初期値を設定しなければならない。ＳＨＡ−１の場合、初期チェーン値は以下のようにリストされる。
Ｈ０＝ｘ‘６７４５  ２３０１’
Ｈ１＝ｘ‘ＥＦＣＤ  ＡＢ８９’
Ｈ２＝ｘ‘９８ＢＡ  ＤＣＦＥ’
Ｈ３＝ｘ‘１０３２  ５４７６’
Ｈ４＝ｘ‘Ｃ３Ｄ２  Ｅ１Ｆ０’
６．最後の部分以外のメッセージ部分を処理する場合、プログラムは５１２ビット（６４バイト）の倍数単位でメッセージ部分を処理し、中間メッセージ・ダイジェスト化計算命令を使用しなければならない。
７．最後のメッセージ部分を処理する場合、プログラムは元のメッセージの長さをビット単位で計算し、この６４ビットの値をパラメータ・ブロックのメッセージ・ビット長フィールドに入れ、最終メッセージ・ダイジェスト化計算命令を使用しなければならない。
８．最終メッセージ・ダイジェスト化計算命令では、第２オペランドがブロック・サイズの倍数である必要はない。その命令は、まず完全なブロックを処理し、すべてのブロックを処理する前に条件コード３を設定することができる。すべての完全なブロックを処理した後、その命令は、第２オペランドの残りの部分を含む、埋込み動作を実行する。これは、ＳＨＡ−１ブロック・ダイジェスト化・アルゴリズムの１回または２回の反復を必要とする可能性がある。
９．最終メッセージ・ダイジェスト化計算命令は、長さが８ビットの倍数であるメッセージに関するＳＨＡ−１埋込みを提供する。８ビットの倍数ではないビット・ストリングにＳＨＡ−１を適用する場合、プログラムは、埋込みを実行し、中間メッセージ・ダイジェスト化計算命令を使用しなければならない。
【００４３】
暗号コプロセッサ：
好ましい実施形態では暗号コプロセッサを提供するが、これは、本明細書に記載した命令とともに使用でき、更に暗号メッセージを実行し、チェーニング及び暗号化の用途のために適切な命令とともに使用することができるタスクを様々なチェーン・メッセージの中で支援するためのものである。
【００４４】
図１７は、複数の実行パイプラインを有する汎用マイクロプロセッサ上のすべての内部実行ユニットに共通のデータ・パスに直接接続される暗号コプロセッサを示している。マイクロプロセッサ内部バス（１）は暗号制御ユニット（２）に接続された他のすべての実行ユニットに共通するものであり、この制御ユニットはそれが実行しなければならないプロセッサ命令用のバスを監視する。
【００４５】
暗号制御ユニットは、中央演算処理装置用の使用可能なハードウェア（Ｅ0・・・Ｅn、または複数の実行パイプラインを有する好ましい実施形態ではその組合せによる）を提供する汎用マイクロプロセッサ上の中央演算処理装置のすべての内部実行ユニットに共通のデータ・パスに直接接続された暗号コプロセッサを提供する。コマンド・レジスタ（３）内で暗号命令に遭遇すると、制御ユニット（２）は、使用可能なハードウェアから適切なアルゴリズムを呼び出す。オペランド・データは、入力ＦＩＦＯレジスタ（４）を介して同じ内部マイクロプロセッサ・バスにより送達される。動作が完了すると、フラグが状況レジスタ（６）内に設定され、その結果は、出力ＦＩＦＯレジスタ（５）から読み出すために使用可能である。
【００４６】
本発明の図示した好ましい実施形態は、システムのパフォーマンス上の目標に応じて特定の実現例が必要とする数のハードウェア・エンジンを含めるために拡張可能になるように設計されている。入出力レジスタ（７）へのデータ・パスはすべてのエンジンに共通するものである。
【００４７】
本発明の暗号機能の好ましい実施形態は、ＣＰＵ上の実行ユニット・ハードウェアで実現され、この実現例により、暗号化動作を呼び出し実行するための待ち時間の低減が可能になり、効率が高まる。
【００４８】
この待ち時間の低減は、特に、少量のデータのみが関連するときに、多くの暗号化動作を頻繁に実行するシステム内の汎用プロセッサの機能を大幅に強化する。これにより、セキュア・オンライン・トランザクションを実行する際に関連するプロセスを著しく加速することができる実現例が可能になる。オンライン・トランザクションを保護する最も一般的な方法は、３つのアルゴリズムからなるセットを必要とする。第１のアルゴリズムはセッション中に１回だけ使用され、ハードウェアまたはソフトウェアで実現することができるが、その他の動作はセッションのすべてのトランザクションで呼び出され、外部ハードウェアを呼び出す待ち時間のコストならびにソフトウェアでアルゴリズムを実行するための時間のコストはいずれも本発明によって解消される。
【００４９】
図１８では、長変位機構コンピュータ（LongDisplacement Facility Computer）で設計された命令フォーマットの商用実現例において、ＩＢＭ内部で実験的に証明した通り、効果的に使用可能な上述のマイクロプロセッサを有するメインフレーム・コンピュータで実現された好ましい実施形態で有するものを実現する方法を概念的に示しており、その命令は、通常、現在は「Ｃ」プログラマであるプログラマによって使用される。ストレージ・メディアに保管されたこれらの命令フォーマットは、本来はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＩＢＭサーバで、または代わって他のアーキテクチャを実行するマシンで実行することができる。その命令は、既存のおよび将来のＩＢＭメインフレーム・サーバ内で、ならびにＩＢＭのその他のマシン（たとえば、ｐＳｅｒｉｅｓ（商標）サーバおよびｘＳｅｒｉｅｓ（商標）サーバ）上でエミュレートすることができる。その命令は、ＩＢＭ、インテル社、ＡＭＤ、サンマイクロシステムズ社、その他によって製造されたハードウェアを使用する多種多様なマシン上でＬｉｎｕｘを実行するマシン内で実行することができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ下でそのハードウェア上で実行することに加えて、Ｌｉｎｕｘ（商標）は、一般に実行がエミュレーション・モードである場合に、ハーキュリーズ、ＵＭＸ、ＦＸＩ、またはプラットフォーム・ソリューションによるエミュレーションを使用するマシンと同様に使用することができる。エミュレーション・モードでは、エミュレート中の特定の命令がデコードされ、「Ｃ」サブルーチンまたはドライバ、あるいは好ましい実施形態の説明を理解した後に当技術分野の技能の範囲内である特定のハードウェア用のドライバを提供するその他の何らかの方法のように、個々の命令を実現するためにサブルーチンが構築される。米国特許第５５５１０１３号、米国特許第６００９２６１号、米国特許第５５７４８７３号、米国特許第６３０８２５５号、米国特許第６４６３５８２号、および米国特許第５７９０８２５号を含むがこれらに限定されない様々なソフトウェアおよびハードウェア・エミュレーション特許は、当業者にとって使用可能なターゲット・マシンのために異なるマシンについて設計された命令フォーマットのエミュレーションを達成するための様々な既知の方法ならびに上記で参照したものによって使用される商用ソフトウェア技法を例示している。
【００５０】
好ましい実施形態では、非スーパースカラ命令用の既存の長変位命令フォーマットは、ベース・レジスタと１２ビットの符号なし変位またはベース・レジスタとインデックス・レジスタと１２ビットの符号なし変位の加算によりオペランド・ストレージ・アドレスを形成し、新しい長変位命令フォーマットは、ベース・レジスタと２０ビットの符号付き変位またはベース・レジスタとインデックス・レジスタと２０ビットの符号付き変位の加算によりオペランド・ストレージ・アドレスを形成する。
【００５１】
図１８によって図示した通り、これらの命令は、プロセッサによってハードウェア内で、または異なるネイティブ命令セットを有するコンピュータ上で実行されるソフトウェアによる前記命令・セットのエミュレーションにより、実行される。
【００５２】
図１８では、＃５０１は、命令およびデータを収容するコンピュータ・メモリ・ストレージを示している。本発明に記載された長変位命令は最初はこのコンピュータ内に保管されるであろう。＃５０２は、コンピュータ・メモリから命令を取り出すためのメカニズムを示し、それが取り出したこれらの命令のローカル・バッファリングも収容することができる。次に生の命令は命令デコーダ＃５０３に転送され、そこでどのタイプの命令が取り出されたかを決定する。＃５０４は、命令を実行するためのメカニズムを示している。これは、メモリ＃５０１からレジスタにデータをロードすること、レジスタからメモリにデータを戻して保管すること、または何らかのタイプの算術演算あるいは論理演算を実行することを含むことができる。この実行すべき動作の正確なタイプは、命令デコーダによってあらかじめ決定されている。本発明に記載されている長変位命令はここで実行されるであろう。長変位命令が本来はコンピュータ・システム上で実行される場合、この図は上述の通りで完成である。しかし、長変位命令を含む命令セット・アーキテクチャが他のコンピュータ上でエミュレートされる場合、上記のプロセスはホスト・コンピュータ＃５０５上のソフトウェアで実現されるであろう。このケースでは、上記のメカニズムは概して、エミュレータ・ソフトウェア内の１つまたは複数のソフトウェア・サブルーチンとして実現されるであろう。いずれのケースでも、命令は取り出され、デコードされ、実行される。
【００５３】
詳細には、これらの設計済み命令は、オペランド・ストレージ・アドレスを形成するために使用される１２ビットの符号なし変位を有する既存の命令フォーマットを備えたコンピュータ・アーキテクチャで使用することができ、また、オペランド・ストレージ・アドレスを形成するために使用される拡張符号付き変位を有する追加の変位ビット、好ましくは２０ビット、を提供する追加の命令フォーマットを備えたコンピュータでも使用することができる。これらのコンピュータ設計済み命令は、コンピュータ・ストレージ・メディアに保管され、自身を使用するプロセッサの実行コードを生成するためのコンピュータ・ソフトウェアを有し、コンピュータ・ストレージ・メディア５０１に保管されたコンパイラまたはエミュレータ／インタープリタによって使用するための命令コードを有し、その命令コードの第１の部分は、実行すべき動作を指定した演算コードと、それが関与するオペランドを指定する第２の部分を有する。長変位命令では、長変位機構命令の使用により追加のアドレスを直接アドレス指定することができる。
【００５４】
図１８によって図示した通り、これらの命令は、プロセッサによってハードウェア内で、または異なるネイティブ命令セットを有するコンピュータ上で実行されるソフトウェアによる前記命令・セットのエミュレーションにより、実行される。
【００５５】
好ましい実施形態のコンピュータ・アーキテクチャにより、変位フィールドは、ＤＬという１２ビットの最下位部分、すなわち、オペランド１用のＤＬ１またはオペランド２用のＤＬ２と、ＤＨという８ビットの最上位部分、すなわち、オペランド１用のＤＨ１またはオペランド２用のＤＨ２という２つの部分になるものとして定義される。
【００５６】
さらに、好ましいコンピュータ・アーキテクチャは、演算コードがビット位置０〜７および４０〜４７になり、Ｒ１というターゲット・レジスタがビット位置８〜１１になり、Ｘ２というインデックス・レジスタがビット位置１２〜１５になり、Ｂ２というベース・レジスタがビット位置１６〜１９になり、２つの部分からなる変位のうちのＤＬ２という第１の部分がビット位置２０〜３１になり、ＤＨ２という第２の部分がビット位置３２〜３９になるような命令フォーマットを有する。
【００５７】
このコンピュータ・アーキテクチャは、演算コードがビット位置０〜７および４０〜４７になり、Ｒ１というターゲット・レジスタがビット位置８〜１１になり、Ｒ３というソース・レジスタがビット位置１２〜１５になり、Ｂ２というベース・レジスタがビット位置１６〜１９になり、２つの部分からなる変位のうちのＤＬ２という第１の部分がビット位置２０〜３１になり、ＤＨ２という第２の部分がビット位置３２〜３９になるような命令フォーマットを有する。
【００５８】
さらに、長変位機構を有するこのコンピュータ・アーキテクチャ命令は、演算コードがビット位置０〜７および４０〜４７になり、Ｒ１というターゲット・レジスタがビット位置８〜１１になり、Ｍ３というマスク値がビット位置１２〜１５になり、Ｂ２というベース・レジスタがビット位置１６〜１９になり、２つの部分からなる変位のうちのＤＬ２という第１の部分がビット位置２０〜３１になり、ＤＨ２という第２の部分がビット位置３２〜３９になるような命令フォーマットを有する。
【００５９】
図示した通り、その長変位機構を有するこの好ましいコンピュータ・アーキテクチャは、演算コードがビット位置０〜７および４０〜４７になり、Ｉ２という即時値がビット位置８〜１５になり、Ｂ２というベース・レジスタがビット位置１６〜１９になり、２つの部分からなる変位のうちのＤＬ１という第１の部分がビット位置２０〜３１になり、ＤＨ１という第２の部分がビット位置３２〜３９になるような命令フォーマットを有する。
【００６０】
この長変位機構コンピュータ・アーキテクチャは、作成された新しい命令のうち、新しい２０ビットの符号なし変位を有する命令フォーマットのみを使用する命令を使用するときに効果的に機能する。
【００６１】
このコンピュータ・アーキテクチャの特定の一実施形態は、１２ビットの符号なし変位のみを有する命令フォーマットを持ち、また現在では、変位の上位８ビットであるＤＨフィールドがすべてゼロであるときに既存の１２ビットの符号なし変位値を有するか、または変位の上位８ビットであるＤＨフィールドが非ゼロであるときに２０ビットの符号付き値を有するような、新しい命令フォーマットであると規定された、既存の命令を使用するものである。
【図面の簡単な説明】
【００６２】
【図１】ＰＲＥ命令フォーマットの中間メッセージ・ダイジェスト化計算（ＫＩＭＤ）命令の表現である。
【図２】ＰＲＥ命令フォーマットの最終メッセージ・ダイジェスト化計算（ＫＬＭＤ）命令の表現である。
【図３】図１のＫＩＭＤ命令の機能コードを示す表である。
【図４】図２のＫＬＭＤ命令の機能コードを示す表である。
【図５】図１および図２のＫＩＭＤ命令およびＫＬＭＤ命令に関する汎用レジスタ割当ての表現である。
【図６】ＳＨＡ−１ブロック・ダイジェスト化・アルゴリズム用の記号を示す図である。
【図７】ＫＩＭＤ照会用のパラメータ・ブロックのフォーマットを示す図である。
【図８】ＫＩＭＤ−ＳＨＡ−１用のパラメータ・ブロックのフォーマットを示す図である。
【図９】ＫＩＭＤ−ＳＨＡ−１動作を示す図である。
【図１０】ＫＬＭＤ照会用のパラメータ・ブロックのフォーマットを示す図である。
【図１１】ＫＬＭＤ−ＳＨＡ−１用のパラメータ・ブロックのフォーマットを示す図である。
【図１２】ＫＬＭＤ−ＳＨＡ−１全ブロック動作を示す図である。
【図１３】ＫＬＭＤ−ＳＨＡ−１空ブロック動作を示す図である。
【図１４】ＫＬＭＤ−ＳＨＡ−１部分ブロック・ケース１動作を示す図である。
【図１５】ＫＬＭＤ−ＳＨＡ−１部分ブロック・ケース２動作を示す図である。
【図１６】ＫＩＭＤ命令とＫＬＭＤ命令の実行の優先順位を示す表である。
【図１７】暗号コプロセッサを示す図である。
【図１８】好ましい実施形態による命令およびデータを収容するコンピュータ・メモリ・ストレージの一般化した好ましい実施形態ならびにこれらの設計済み命令を使用するコンピュータ・システム上でまたは設計済み命令のエミュレーションで使用する通り、これらの命令を取り出し、デコードし、実行するためのメカニズムを示す図である。
【図１】
2006526202.tif 000003
【図２】
2006526202.tif 000004
【図３】
2006526202.tif 000005
【図４】
2006526202.tif 000006
【図５】
2006526202.tif 000007
【図６】
2006526202.tif 000008
【図７】
2006526202.tif 000009
【図８】
2006526202.tif 000010
【図９】
2006526202.tif 000011
【図１０】
2006526202.tif 000012
【図１１】
2006526202.tif 000013
【図１２】
2006526202.tif 000014
【図１３】
2006526202.tif 000015
【図１４】
2006526202.tif 000016
【図１５】
2006526202.tif 000017
【図１６】
2006526202.tif 000018
【図１７】
2006526202.tif 000019
【図１８】
2006526202.tif 000020
【国際調査報告】
2006526202.tif 000021
2006526202.tif 000022
2006526202.tif 000023