(57)【要約】【課題】  データ暗号化及び復号化処理速度の高速化及び／又は効率化を実現するシステム及び方法を提供する。【解決手段】  マイクロプロセッサは、第一の処理コアと、第一の暗号コプロセッサと、第一の処理コアと第一の暗号コプロセッサとに接続された整数乗算部とを含む。第一の処理コアは、命令デコード部と、命令実行部と、ロード／ストア部とを含む。第一の暗号コプロセッサは、第一の処理コアと共に第一のダイ上に配置される。第一の暗号コプロセッサは、暗号制御レジスタと、第一の処理コアにおいてロード／ストア部に接続されているダイレクトメモリアクセスエンジンと、暗号メモリとを含む。
2005532604.tif 000002
【特許請求の範囲】
【請求項１】
命令デコード部と、命令実行部と、ロード／ストア部と、を含む第一の処理コアと、
第一の処理コアと共に第一のダイ上に配置された第一の暗号コプロセッサと、
前記整数実行部と前記第一の暗号コプロセッサとに接続された整数乗算部と、
を備えたマイクロプロセッサ。
【請求項２】
前記整数乗算部が、前記第一の処理コア内に含まれる、請求項１記載のマイクロプロセッサ。
【請求項３】
前記整数乗算部が、前記第一の暗号コプロセッサ内に含まれる、請求項１記載のマイクロプロセッサ。
【請求項４】
前記整数乗算部が、６４ビット×６４ビット乗算部である、請求項１記載のマイクロプロセッサ。
【請求項５】
前記ロード／ストア部が、メインメモリシステム階層に接続されている、請求項１記載のマイクロプロセッサ。
【請求項６】
前記第一の処理コアが、プロセッサクロスバーにより第二の処理コアに接続されている、請求項１記載のマイクロプロセッサ。
【請求項７】
前記第二の処理コアが、前記第二の処理コアと共に第二の第一ダイ上に配置された第二の暗号コプロセッサに接続されている、請求項６記載のマイクロプロセッサ。
【請求項８】
前記第二の処理コア及び前記第二の暗号コプロセッサが、前記第一のダイ上に配置されている、請求項６記載のマイクロプロセッサ。
【請求項９】
前記第一の暗号コプロセッサが、前記ロードストア部に接続されている、請求項１記載のマイクロプロセッサ。
【請求項１０】
前記第一の暗号コプロセッサと前記第一の処理コアとが、前記整数乗算部を共有する、請求項１記載のマイクロプロセッサ。
【請求項１１】
前記第一の暗号コプロセッサが、
暗号制御レジスタと、
前記ロード／ストア部に接続されているダイレクトメモリアクセスエンジンと、
暗号メモリと、
を含む、請求項１記載のマイクロプロセッサ。
【請求項１２】
前記暗号メモリが、少なくとも、モンゴメリ乗算関数を実行するのに十分な大きさである、請求項１１記載のマイクロプロセッサ。
【請求項１３】
前記ダイレクトメモリアクセスエンジンが、６４ビットデータバスによって前記ロード／ストア部に接続されている、請求項１１記載のマイクロプロセッサ。
【請求項１４】
前記暗号制御レジスタが、前記第一の暗号コプロセッサにおいて受領された暗号コマンドのタイプを特定するデータを含む、請求項１１記載のマイクロプロセッサ。
【請求項１５】
暗号コマンドを実行する方法であって、
第一のダイ上の処理コア内のロードストア部において暗号命令を受領するステップと、
前記暗号命令が暗号ストア命令であるかどうかを判断するステップと、
前記暗号命令が暗号ストア命令である場合に、前記暗号ストア命令のソースオペランドが、前記第一のダイ上の暗号コプロセッサ内の暗号制御レジスタに格納されるステップと、
前記ソースオペランドが、対応する暗号コマンドを特定するかどうかを判断するステップと、
前記ソースオペランドが対応する暗号コマンドを特定する場合に、前記対応する暗号コマンドを実行するステップと、
を備えた方法。
【請求項１６】
前記暗号コプロセッサから、前記処理コアに含まれる命令実行部に、割り込みを送信するステップを更に備える、請求項１５記載の方法。
【請求項１７】
前記処理コアに含まれるロードストア部を使用して、前記暗号命令の結果をメモリシステムに出力するステップを更に備える、請求項１５記載の方法。
【請求項１８】
前記暗号コプロセッサにおいて前記暗号命令を実行するステップが、
前記ロードストア部を通じてデータにアクセスするステップを含む、請求項１５記載の方法。
【請求項１９】
前記暗号コプロセッサが、ダイレクトメモリアクセスエンジンを含む、請求項１８記載の方法。
【請求項２０】
前記暗号コプロセッサが、整数乗算部を含む、請求項１９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、特に、マイクロプロセッサダイ内に暗号コプロセッサを含むマイクロプロセッサに関する。
【背景技術】
【０００２】
サーバコンピュータ（即ち、サーバ）は、あらゆる種類のデータトランザクションを処理する。一般的なタイプのデータトランザクションは、通常、サーバが暗号化機能及び復号化機能の少なくとも一方を実行する必要がある暗号化データトランザクションである。図１は、インターネット又はその他のネットワーク等のネットワーク１０４によってつながれた通常のサーバ１０２とクライアントコンピュータ１１０とを示している。
【０００３】
図２は、通常のサーバ１０２の高レベルブロック図である。表示のように、サーバ１０２は、プロセッサ２０２と、ＲＯＭ２０４と、ＲＡＭ２０６とを含み、それぞれは周辺バスシステム２０８によって接続されている。周辺バスシステム２０８は、この技術において知られているような、様々なブリッジ、コントローラ、及び／又はアダプタを通じて互いに接続された、一つ以上のバスを含んでもよい。例えば、周辺バスシステム２０８は、アダプタを通じて、周辺装置相互接続（ＰＣＩ）バス等の一つ以上の拡張バスに接続される「システムバス」を含んでもよい。更に、周辺バスシステム２０８には、大容量記憶デバイス２１０と、ネットワークインタフェース２１２と、多数（Ｎ個）の入出力（Ｉ／Ｏ）デバイス２１６−１乃至２１６−Ｎと、周辺暗号プロセッサ２２０とが接続されている。
【０００４】
Ｉ／Ｏデバイス２１６−１乃至２１６−Ｎは、例えば、キーボード、ポインティングデバイス、ディスプレイデバイス、及び／又はその他の従来型のＩ／Ｏデバイスを含んでもよい。大容量記憶デバイス２１０は、磁気ディスク又はテープ、光磁気（ＭＯ）記憶デバイス、或いは様々なタイプのデジタル多用途ディスク（ＤＶＤ）又はコンパクトディスク（ＣＤ）に基づくストレージのいずれかといった、大量のデータを格納するのに適切な任意のデバイスを含んでもよい。
【０００５】
周辺暗号プロセッサ２２０（即ち、暗号プロセッサ）は、周辺バスシステム２０８によって、プロセッサ２０２につながれる。暗号プロセッサ２２０は、サーバ１０２とクライアント１１０との間などでの暗号化データトランザクションに関して必要となる得る暗号化及び復号化動作を提供する。一部のサーバでは、暗号プロセッサ２２０をサーバ１０２の外部に置き、Ｉ／Ｏデバイス２１６−１乃至２１６−Ｎの一つによってプロセッサ２０２とつなぐこともできる。
【０００６】
ネットワークインタフェース２１２は、コンピュータシステムとネットワーク１０４上の他のコンピュータシステムとの間でのデータ通信を提供する。したがって、ネットワークインタフェース２１２は、サーバ１０２がデータ通信リンク上でリモート処理システム（例えば、クライアントコンピュータ１１０）とデータ通信するのに最適な、或いはこれを可能にする、従来の電話モデム、統合サービスデジタルネットワーク（ＩＳＤＮ）アダプタ、デジタル加入者回線（ＤＳＬ）アダプタ、ケーブルモデム、衛星トランシーバ、イーサネット（登録商標）アダプタ、又はその他といった任意のデバイスにすることができる。
【０００７】
通常、プロセッサ２０２は、１ＧＨｚまで又はこれを上回るクロック速度で動作できる。反対に、周辺バスシステム２０８は、通常、約１６６ＭＨｚ程度といった大幅に遅い速度で動作する。更に、暗号プロセッサ２２０は、通常、周辺バスシステム２０８と同様の速度で動作する。これは、周辺バスシステム２０８を通じてデータを輸送可能な速度を上回る速度で、暗号プロセッサ２２０がデータを処理できないためである。更に、暗号プロセッサ２２０は、通常、最新の最高性能の製造技術で作成できない場合があるカスタマイズされた専用プロセッサ（即ち、特定用途向け集積回路（ＡＳＩＣ））であり、そのため、暗号プロセッサ２２０の最大処理速度（即ち、暗号プロセッサのクロック速度）は、プロセッサ２０２の最大処理速度を大幅に下回る。
【０００８】
図３は、サーバ１０２内での通常の暗号化データトランザクションの方法の動作３００のフローチャートである。この暗号化データトランザクションは、サーバ１０２とクライアントコンピュータ１１０との間でのｅコマーストランザクションのような、暗号化、復号化、又は暗号化及び復号化の両方を必要とする任意のデータトランザクションにすることができる。動作３０５において、データは、クライアントコンピュータ１１０から、或いはクライアントコンピュータ１１０の要求等により、サーバ１０２において受領される。
【０００９】
動作３１０において、受領データは、分析され、この受領データが暗号化されているかが判断される。例えば、データは、そのデータがユーザの個人データ及び／又は財務データ、或いはＳＳＬ（セキュアソケットレイヤ）又はその他の暗号化方法といった暗号化セッション中に輸送されるその他のデータを含むことから暗号化される場合がある。
【００１０】
動作３１０において、受領データが暗号化データではないと判明した場合、受領データは、下の動作３３０において説明されるように処理される。代替として、動作３１０において、受領データが暗号化データであると判断された場合は、動作３１５において、暗号化データは、周辺バスシステム２０８を介して、周辺暗号プロセッサ２２０へ送信される。
【００１１】
動作３２０において、暗号プロセッサ２２０は、暗号化データを復号化する。動作３２５において、暗号プロセッサ２２０は、周辺バスシステム２０８を介して、復号化データをプロセッサ２０２に出力する。動作３３０において、プロセッサ２０２は、データを処理し、結果データを生成する。
【００１２】
動作３３５において、結果データが分析され、結果データを暗号化するべきかが判断される。結果データが暗号化を必要としない場合、プロセッサは、動作３４０において、結果データをクライアント１１０に出力し、この方法の動作は終了する。代替として、動作３３５において、結果データが暗号化を必要とする場合は、動作３４５において、プロセッサは、周辺バスシステム２０８を介して、結果データを暗号プロセッサに出力する。
【００１３】
動作３５０において、暗号プロセッサ２２０は、結果データを暗号化する。動作３５５において、暗号プロセッサ２２０は、周辺バスシステム２０８を介して、暗号化結果データをプロセッサ２０２に出力する。動作３６０において、プロセッサは、暗号化結果データをクライアント１１０に出力し、この方法の動作は終了する。
【００１４】
暗号化、復号化、又は処理するデータの暗号プロセッサ２２０とプロセッサ２０２との間での転送は、非常に低速である。更に、暗号プロセッサ２２０の低速な処理速度も、データが暗号化又は復号化される速度を制限する。更に、ストリーミングデータ（例えば、ストリーミングオーディオ、ストリーミングビデオ、その他）等の大量のデータが暗号化及び／又は復号化される場合、サーバ１０２がストリーミングデータを供給できる速度は、ストリーミングデータを暗号化及び／又は復号化できる速度によって制限される。更に、暗号プロセッサ２２０とプロセッサ２０２との間でのストリーミングデータの多数の転送は、暗号プロセッサ２２０及びプロセッサ２０２内部の周辺バスシステム２０８及びＩ／Ｏシステムの使用を支配する可能性があり、これにより、暗号プロセッサ２２０との間でデータを転送する以外の任意の機能をプロセッサ２０２が実行する能力は更に制限される。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記を考慮すると、データ暗号化及び復号化処理速度の高速化及び／又は効率化を実現したシステム及び方法についての必要性が存在する。
【課題を解決するための手段】
【００１６】
大まかに言って、本発明は、データ暗号化及び復号化処理速度の高速化及び／又は効率化を実現したシステム及び方法によって、こうした必要性を満たす。本発明は、処理、装置、システム、コンピュータ読取可能な媒体、又はデバイスを含め、多数の方法で実施し得ると理解するべきである。本発明のいくつかの発明実施形態について、下で説明する。
【００１７】
一実施形態は、マイクロプロセッサを含み、このマイクロプロセッサは、第一の処理コアと、第一の暗号コプロセッサと、第一の処理コア及び暗号コプロセッサに接続された整数乗算部とを含む。第一の処理コアは、命令デコード部と、命令実行部と、ロード／ストア部とを含む。第一の暗号コプロセッサは、第一の処理コアと共に第一のダイ上に配置される。暗号コプロセッサは、暗号制御レジスタと、第一の処理コアにおいてロード／ストア部に接続されているダイレクトメモリアクセスエンジンと、暗号メモリとを含む。
【００１８】
整数乗算部は、第一の処理コア内又は第一の暗号コプロセッサ内に含めることができる。
【００１９】
暗号メモリは、少なくとも、モンゴメリ乗算関数を実行するのに十分な大きさである。
【００２０】
一実施形態において、整数乗算部は、６４ビット×６４ビット乗算部である。
【００２１】
ロード／ストア部は、メインメモリシステム階層に接続し得る。
【００２２】
第一の処理コアは、プロセッサクロスバーにより第二の処理コアに接続されている。第二の処理コアは、第二の処理コアと共に第二のダイ上に配置される第二の暗号コプロセッサに接続されている。代替として、第二の処理コア及び第二の暗号コプロセッサは、第一のダイ上に配置することができる。
【００２３】
第一の暗号コプロセッサは、命令デコーダ部に接続し得る。
【００２４】
第一の暗号コプロセッサ及び第一の処理コアは、整数乗算部を共有する。
【００２５】
ダイレクトメモリアクセスエンジンは、６４ビットデータバスによってロード／ストア部に接続し得る。
【００２６】
暗号制御レジスタは、第一の暗号コプロセッサにおいて受領された暗号命令のタイプを特定するデータを含み得る。
【００２７】
他の実施形態は、暗号コマンドを実行する方法を含む。暗号命令は、第一のダイ上の処理コア内のロードストア部において受領される。暗号命令は、分析され、この暗号命令が暗号ストア命令であるかが判断される。暗号命令が暗号ストア命令である場合、暗号ストア命令のソースオペランドは、第一のダイ上の暗号コプロセッサ内の暗号制御レジスタに格納される。ソースオペランドは、分析され、このソースオペランドが対応する暗号コマンドを特定するかが判断される。ソースオペランドが対応する暗号コマンドを特定する場合、この対応する暗号コマンドが実行される。
【００２８】
暗号コプロセッサは、更に、暗号コマンドの実行が完了した時等に、処理コアに含まれる命令実行部に割り込みを送信し得る。
【００２９】
暗号命令の結果は、更に、処理コアに含まれるロードストア部を使用して、メモリシステムに出力し得る。
【００３０】
暗号コプロセッサにおいて暗号命令を実行するステップは、更に、ロードストア部を通じてデータにアクセスするステップを包含し得る。
【００３１】
暗号コプロセッサは、更に、ダイレクトメモリアクセスエンジンを包含し得る。データにアクセスするステップは、更に、メインメモリにおいてデータをロード及び格納するステップを包含し得る。
【００３２】
暗号コプロセッサにおいて暗号命令を実行するステップは、更に、乗算関数を実行するステップを包含し得る。暗号コプロセッサは、乗算関数を実行するために、整数乗算部を包含し得る。
【００３３】
本発明の様々な実施形態は、暗号プロセッサがストリーミングデータ等のデータを、従来技術のプロセッサによって可能なものより大幅に高い速度で、迅速に暗号化及び／又は復号化する能力を提供する。
【００３４】
本発明のその他の態様及び利点は、本発明の原理を例示的に示す添付図面と併せて、以下の詳細な説明から明らかとなろう。
【発明を実施するための最良の形態】
【００３５】
本発明は、添付図面と併せて、以下の詳細な説明により容易に理解されよう。同様の参照符号は同様の構造要素を示す。
【００３６】
次に、データ暗号化及び復号化処理速度の高速化及び／又は効率化を実現するシステム及び方法についてのいくつかの例示的な実施形態を説明する。なお、本明細書に記載する具体的な詳細の一部又は全部を伴うことなく本発明を実施し得ることは当業者には明らかであろう。
【００３７】
図４は、本発明の一実施形態による、単一のＣＰＵダイ（チップ）４００を示している。ＣＰＵチップ４００は、処理コア４１０を含む。処理コア４１０は、暗号コプロセッサ４２０とペアになる。暗号コプロセッサ４２０は、ＣＰＵダイ４００に追加されるハードウェアの量を最小化するように最適化される。ＣＰＵダイ４００は、更に、追加処理コア４１０ｎを包含でき、追加処理コア４１０ｎのそれぞれも、暗号コプロセッサ４２０ｎとペアになる。処理コア４１０、４１０ｎは、プロセッサクロスバー４３０によって電気的に接続されている。プロセッサクロスバー４３０は、処理コア４１０、４１０ｎと、メモリシステム及び入出力（Ｉ／Ｏ）システムのように処理コア４１０、４１０ｎによってアクセスされ得るその他の共通デバイスとの間に、共通データ通信リンクを提供するデータバスシステムである。
【００３８】
図５は、本発明の一実施形態による、プロセッサコア４１０及び暗号コプロセッサ４２０の詳細図を示している。処理コア４１０は、命令デコード／トラップハンドラ部５０４と、命令実行部５０６と、ロードストア部５０８と、整数乗算部５１４とを含む。命令キャッシュ５０２は、命令デコード／トラップハンドラ部５０４の入力に接続されている。データキャッシュ５２０は、ロードストア部５０８に接続されている。データキャッシュ５２０及び命令キャッシュ５０２は、更に、プロセッサクロスバー４３０に接続されている。データキャッシュ５２０は、レベル１キャッシュにすることが可能であり、約４ｋｂ乃至約６４ｋｂのサイズにすることができる。
【００３９】
暗号コプロセッサ４２０は、暗号制御レジスタ５１０と、暗号メモリ５１６と、ＤＭＡエンジン５１８と、暗号コプロセッサコア５１２とを含む。暗号制御レジスタ５１０は、暗号コプロセッサ４２０の設定を格納する。この設定は、暗号化又は復号化コマンドのタイプ、或いは実行される動作を特定することを包含し得る。暗号化又は復号化コマンドのタイプは、この技術で知られている任意の暗号化及び復号化方式を包含し得る。暗号制御レジスタ５１０は、更に、現在の暗号動作の状態を格納し、プロセッサ４１０によってアクセス可能であり、プロセッサ４１０は、現在の暗号動作の状態をチェックできるようになる。暗号制御レジスタ５１０は、論理リンク５３０によってロードストア部５０８にリンクされ、論理リンク５３０は、ロードストア部５０８と暗号制御レジスタ５１０との間でのデータの双方向交換を意味する。
【００４０】
ＤＮＡエンジン５１８は、暗号バス５２２によってロードストア部５０８に接続されている。メインメモリや、データキャッシュ５２０、レベル２キャッシュといったメモリシステム階層は、ロードストア部５０８を介して、また必要な場合にはプロセッサクロスバー４３０を介してアクセス可能であるが、ＤＭＡエンジン５１８はこのメモリシステム階層に対するより直接的なアクセスを提供する。暗号バス５２２は、暗号コプロセッサ４２０と処理コア４１０との間での迅速なデータ転送を可能にするために、可能な限り幅を拡大し得る。一実施形態において、暗号バス５２２は、６４ビットバスである。
【００４１】
暗号メモリ５１６は、特定の暗号動作に関するオペランド及び結果を保持するのに十分な大きさとする。一例として、ＲＳＡ復号化用途において、暗号メモリ５１６は、約１．３ＫＢであり、２０４８ビットキーでのモジュラ指数化に十分な大きさである。
【００４２】
図５に示すように、整数乗算部５１４は、暗号プロセッサコア５１２に含まれるが、論理リンク５３２により、プロセッサコア４１０から直接的にアクセスできる。代替として、整数乗算部５１４は、暗号プロセッサコア５１２が整数乗算部５１４に直接的にアクセスできる限り、プロセッサコア４１０の一部にできる。これにより、暗号プロセッサコア５１２とプロセッサコア４１０とは、整数乗算部５１４を共有可能となり、ダイ上で使用されるスペース（即ち、必要なデバイス数）を低減できるようになる。暗号プロセッサは、プロセッサコアによってより必要とされるダイ上の貴重なスペースを消費し過ぎるため、通常、従来技術の暗号プロセッサがプロセッサコアと共にダイ４００上に含まれることはない。
【００４３】
いくつかの構成要素を共有することで、暗号プロセッサの「専有面積」は大幅に低減され、暗号プロセッサをプロセッサコアと同じダイ４００上に配置できるようになる。整数乗算部５１４は、モジュラ乗算及び指数関数を実行する。プロセッサコア４１０は、約２乃至５％の時間のみ、整数乗算部５１４を使用する。そのため、暗号プロセッサ４２０は、プロセッサコア４１０内の動作に影響を与えることなく、約９５乃至９８％の時間、整数乗算部５１４を使用できる。整数乗算部５１４を暗号プロセッサ４２０内に移動させることで、整数乗算部５１４の暗号機能は更に能率化される。
【００４４】
整数乗算部５１４は、モンゴメリ乗算関数及び指数化といったモジュラ演算を実行できる。モンゴメリ乗算関数は、乗算と除算とではなく、二つの乗算を使用して、大きな整数（例えば、２０４８ビット数）でモジュラ乗算を実行する手法である。整数乗算部５１４は、６４ビット×６４ビット整数乗算部にすることができる。６４ビット×６４ビット整数乗算部は、暗号バス５２２及びロードストア部５０８をクロックサイクル毎にフラッドさせるのではなく、暗号メモリ５１６に格納されたオペランドに直接的にアクセスできる。ロードストア部５０８は暗号プロセッサ４２０の要求に対処することのみが可能であるため、暗号バス５２２及びロードストア部５０８をクロックサイクル毎にフラッドさせるようにすると、プロセッサコア４１０は、事実上、機能停止することになる。完全なモジュラ指数化を実行するのに十分な大きさの暗号メモリ５１６を設けることによって、暗号バス５２２及びロードストア部５０８でのデータスループット負荷が軽減され、これにより、プロセッサコア４１０及び暗号プロセッサ４２０は、多数のクロックサイクルに渡って異なる動作及び機能を同時に行うことが可能となる。
【００４５】
図６は、本発明の一実施形態による、ペアになったプロセッサ４１０及び暗号コプロセッサ４２０の動作方法のフローチャート６００である。命令キャッシュ５０２は、プロセッサコア４１０において実行される次の命令を一時的に格納する。動作６０５において、こうした次の命令は、命令デコード／トラップハンドラ部５０４において、命令キャッシュ５０２から受領される。
【００４６】
受領した命令は、動作６１０において、命令実行部５０６へ実行のために転送される。命令実行部５０６は、受領した命令を分析し、動作６１５において、受領した命令がロード又はストア命令かを判断する。
【００４７】
上の動作６１５において、受領した命令がロード又はストア命令ではない場合は、動作６２０において、この非ロード／非ストア命令の実行を完了するのに必要なプロセッサコア４１０の様々な段階５０４、５０６、５０８で、要求に応じて実行され、実行された命令に関する方法の動作は終了となる。
【００４８】
上の動作６１５において、受領した命令がロード命令又はストア命令である場合は、動作６３０において、受領した命令は、ロードストア部５０８に転送される。
【００４９】
動作６３５において、ロードストア部５０８は、受領した命令を分析し、受領した命令が暗号ロード命令又は暗号ストア命令であるかを判断する。
【００５０】
動作６３５において、受領した命令が暗号ロード命令又は暗号ストア命令ではない場合は、動作６４０において、この非暗号ストア命令／非暗号ロード命令がロードストア部５０８で実行され（即ち、所定のロード又はストア命令が実行される）、その命令に関する方法の動作は終了する。
【００５１】
動作６３５において、受領した命令が暗号ロード命令又は暗号ストア命令である場合は、動作６５０において、この暗号ロード又は暗号ストア命令が分析される。
【００５２】
動作６５０において、暗号ロード又は暗号ストア命令が暗号ロード命令である場合、ロード／ストア部５０８は、動作６５５において、データを暗号コプロセッサ４２０からプロセッサ４１０へ再び転送し、この命令に関する方法の動作は終了する。
【００５３】
動作６５０において、暗号ロード又は暗号ストア命令が暗号ストア命令である（即ち、暗号ロード命令ではない）場合、ロード／ストア部５０８は、動作６６０において、この暗号ストア命令のソースオペランドを、暗号制御レジスタ５１０へ転送する。動作６６５において、暗号コプロセッサ４２０は、暗号制御レジスタ５１０内のデータを分析し、格納したデータが、対応する暗号コマンドを特定するかを判断する。このデータが対応する暗号コマンドを特定しない場合、この命令に関する方法の動作は終了する。
【００５４】
動作６５５において、このデータが対応する暗号コマンドを特定する場合は、動作６７０において、対応する暗号コマンドが実行される。
【００５５】
暗号コマンドの実行が完了した時、暗号コプロセッサ４２０は、動作６７０において、論理リンク５３４を介して、処理コア４１０内の命令実行部５０６へ割り込みを送信することが可能となり、この暗号コマンドに関する方法の動作は終了する。一部の暗号コマンドは、ロードストア部５０８を介して、暗号メモリ５１６内のデータをメモリシステムに出力させることも可能である。反対に、一部の暗号コマンドは、ロードストア部５０８を介して、メモリシステム内のデータを、暗号メモリへロードさせることになる。
【００５６】
暗号コプロセッサ４２０は、多数の、何千ものクロックサイクルに渡って、プロセッサコア４１０から独立してデータを処理できる。暗号プロセッサ４２０を同じダイ４００上で処理コア４１０とペアにすると、暗号プロセッサ４２０と処理コア４１０とを同じクロック速度で動作させることにより、暗号化及び／又は復号化処理の速度が増大する。暗号化及び／又は復号化されるデータ（例えば、データストリーム）を、暗号プロセッサ２２０とプロセッサ２０２との間の相対的に長い距離で、上の図２において説明したような周辺バス２０８上での大幅に遅い速度で伝送する必要がないため、暗号化及び／又は復号化処理の速度は、更に増大する。更に、暗号プロセッサ４２０を処理コア４１０とペアにすることで、暗号プロセッサ４２０は、暗号プロセッサ４２０のＤＭＡエンジン５１８とロードストア部５０８とを通じて、メモリシステム階層に直接的にアクセスできる。この直接的なメモリアクセスにより、暗号プロセッサ４２０は、上の図２に示した周辺暗号プロセッサによって可能なものより大幅に高い速度で、ストリーミングデータを迅速に暗号化及び／又は復号化できる。
【００５７】
本明細書での使用において、「約」という用語は、＋／−１０％を意味する。一例として、「約２５０」という語句は、２２５乃至２７５の範囲を示す。
【００５８】
上記の実施形態を考慮すると、本発明では、コンピュータシステムに格納されたデータが関与する様々なコンピュータ実施動作を利用してもよいと理解するべきである。こうした動作は、物理量の物理的操作を必要とするものである。通常は、必須ではないものの、こうした量は、格納と、転送と、結合と、比較と、その他の操作とが可能な電気又は磁気信号の形態を取る。更に、実行される操作は、生成、特定、決定、又は比較といった用語で呼ばれることが多い。
【００５９】
更に、図６における動作によって表される命令が例示の順序で実行される必要はなく、また、本発明を実施する上でこれらの動作により表される全ての処理が必ずしも必要ではないことは理解されよう。
【００６０】
以上、本発明について明確に理解する目的からある程度詳細に説明してきたが、添付特許請求の範囲内で、特定の変更及び変形を実施し得ることは明らかであろう。したがって、本発明は、制限的ではなく例示的なものと做されるべきであり、本発明は、本明細書に記載の詳細によって制限されず、添付特許請求項の範囲及びその等価物の範囲内で修正し得よう。
【図面の簡単な説明】
【００６１】
【図１】インターネット又はその他のネットワーク等のネットワークによりつながれた通常のサーバ及びクライアントコンピュータを示す図である。
【図２】通常のサーバの高レベルブロック図である。
【図３】サーバ内での通常の暗号化データトランザクションの方法の動作のフローチャートである。
【図４】本発明の一実施形態による、単一のＣＰＵダイ（チップ）を示す図である。
【図５】本発明の一実施形態による、プロセッサコア及び暗号コプロセッサの詳細図である。
【図６】本発明の一実施形態による、ペアになったプロセッサ４１０及び暗号コプロセッサ４２０の方法の動作のフローチャート６００である。
【図１】
2005532604.tif 000003
【図２】
2005532604.tif 000004
【図３】
2005532604.tif 000005
【図４】
2005532604.tif 000006
【図５】
2005532604.tif 000007
【図６】
2005532604.tif 000008
【手続補正書】
【提出日】平成16年10月25日(2004.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
命令デコード部と、命令実行部と、ロード／ストア部と、を含む第一の処理コアと、
第一の処理コアと共に第一のダイ上に配置された第一の暗号コプロセッサと、
前記命令実行部と前記第一の暗号コプロセッサとに接続された整数乗算部と、
を備えたマイクロプロセッサ。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記第二の処理コアが、前記第二の処理コアと共に第二のダイ上に配置された第二の暗号コプロセッサに接続されている、請求項６記載のマイクロプロセッサ。
【手続補正書】
【提出日】平成17年6月21日(2005.6.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
命令デコード部と、命令実行部と、ロード／ストア部と、を含む第一の処理コアと、
第一の処理コアと共に第一のダイ上に配置された第一の暗号コプロセッサであって、暗号化されたデータトランザクションに関する暗号化処理と復号化処理とを行うことが可能な第一の暗号コプロセッサと、
前記命令実行部と前記第一の暗号コプロセッサとに接続された整数乗算部と、
を備えたマイクロプロセッサ。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１５
【補正方法】変更
【補正の内容】
【請求項１５】
暗号コマンドを実行する方法であって、
第一のダイ上の処理コア内のロードストア部において暗号命令を受領するステップと、
前記暗号命令が暗号ストア命令であるかどうかを判断するステップと、
前記暗号命令が暗号ストア命令である場合に、前記暗号ストア命令のソースオペランドが、前記第一のダイ上の暗号コプロセッサであって暗号化されたデータトランザクションに関する暗号化処理と復号化処理とを行うことが可能な暗号コプロセッサ内の暗号制御レジスタに格納されるステップと、
前記ソースオペランドが、対応する暗号コマンドを特定するかどうかを判断するステップと、
前記ソースオペランドが対応する暗号コマンドを特定する場合に、前記対応する暗号コマンドを実行するステップと、
を備えた方法。
【国際調査報告】
2005532604.tif 000009
2005532604.tif 000010
2005532604.tif 000011