(57)【要約】【課題】プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止するマルチプロセッサ構成の耐タンパマイクロプロセッサを提供する。【解決手段】本発明は、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持ち、同一パッケージ上に複数の命令実行コアを持つマイクロプロセッサパッケージにおいて、暗号鍵を格納する鍵テーブルと、暗号処理機能部をパッケージ上で１箇所に集中することにより、同鍵テーブルおよび暗号処理機能部を分散して設けた場合と比較して、同一規模のハードウェアにおける処理性能の向上を達成できるマルチプロセッサ構成の耐タンパマイクロプロセッサ。【選択図】図１
2005099984.tif 000002
【特許請求の範囲】
【請求項１】
あるプログラムを並列に実行可能な第１のプロセッサおよび第２のプロセッサと、
前記プログラムに対する鍵を格納する鍵テーブルと、
前記第１のプロセッサ、第２のプロセッサ、または、前記第１および第２のプロセッサで実行中のプログラムからのメモリ参照要求に応じて、要求されたメモリデータを外部のメモリから取得する手段と、取得したメモリデータを、前記鍵テーブルから取り出した前記プログラムに対応する鍵で復号する復号処理手段とを有するものであり、前記第１および第２のプロセッサと接続されるバスインタフェースユニット
とを備えることを特徴とするマイクロプロセッサパッケージ。
【請求項２】
あるプログラムを並列に実行可能な第１のプロセッサおよび第２のプロセッサと、
前記プログラムに対する鍵を格納する鍵テーブルと、
前記第１のプロセッサ、第２のプロセッサ、または、前記第１および第２のプロセッサで実行中のプログラムからのメモリ書き込み要求に応じて、前記鍵テーブルから取り出した前記プログラムに対応する鍵でメモリへ書き込むデータを暗号化する暗号化処理手段と、
暗号化されたデータを外部のメモリへ転送する手段とを有するものであって、前記第１および第２のプロセッサと接続されるバスインタフェースユニット
とを備えることを特徴とするマイクロプロセッサパッケージ。
【請求項３】
前記復号処理手段は、パイプライン処理によって復号を行うことを特徴とする請求項１記載のマイクロプロセッサパッケージ。
【請求項４】
前記暗号化処理手段は、パイプライン処理によって暗号化を行うことを特徴とする請求項２記載のマイクロプロセッサパッケージ。
【請求項５】
前記第１および第２のプロセッサから前記バスインタフェースユニットへ発行されるメモリ参照要求に、要求発行元のプロセッサを識別するプロセッサ識別子および前記鍵テーブルのエントリを一意に識別する鍵識別子を含むことを特徴とする請求項１記載のマイクロプロセッサパッケージ。
【請求項６】
前記第１および第２のプロセッサから前記バスインタフェースユニットへ発行されるメモリ書き込み要求に、要求発行元のプロセッサを識別するプロセッサ識別子および前記鍵テーブルのエントリを一意に識別する鍵識別子を含むことを特徴とする請求項２記載のマイクロプロセッサパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止することのできる耐タンパマイクロプロセッサにおいて、同一パッケージ上に複数の命令処理機能を持つマルチプロセッサ構成のものに関する。
【背景技術】
【０００２】
耐タンパプロセッサは、マルチタスクのコンピュータシステムにおいて、マルチベンダのプログラムに対してプログラムの秘密の安全性を確保するメカニズムを備えたプロセッサである(例えば、特許文献１)。
【０００３】
また、実行中の実行制御ユニット（ＥＣＵ  ＩＤ）とは独立に暗号鍵が選択されるキャッシュライトバックの方法は、本発明者らにより詳細に開示されている（例えば、特許文献２）。
【０００４】
一方、暗号／復号処理において、共通のハードウェアを用いる場合には、別途、仕様上の鍵から暗号作業用鍵、及び、復号作業用鍵を作成する必要がある（例えば、特許文献２参照）。たとえば、アドバンスド・エンクリプション・スタンダード（ＡＥＳ）によるＡＥＳ暗号の場合には、暗号作業用鍵が仕様上の鍵として定義されており、復号作業用鍵は、暗号作業用鍵の拡張演算によって求める必要がある（非特許文献１）。
【特許文献１】特開２００１−３１８７８７号公報
【特許文献２】特開２００３−１０８４４２号公報
【特許文献３】特開２０００−６６５８６号公報
【非特許文献１】エヌ・アイ・エス・ティー（NIST）(米国国立標準技術研究所)、コンピュータ・セキュリティー・リソース・センターのホームページ（http://csrc.nist.gov/）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
背景技術のキャッシュ制御方式により、システムのプロセッサが単一(ユニプロセッサ)の時、キャッシュ上データの安全性を保証することができた。また、独立パッケージのマルチプロセッサの場合にも、安全性と同時にキャッシュ一貫性を保証する制御方式が提案されている。
【０００６】
しかしながら、マルチプロセッサ構成には同一パッケージに複数のプロセッサコアを持つオンチップマルチコア型の構成もあるが、従来暗号機能を持つ耐タンパプロセッサについてオンチップマルチコア型の構成例は知られていなかった。
【０００７】
耐タンパプロセッサの実現において、独立パッケージのマルチプロセッサ構成と、オンチップマルチコア型のマルチプロセッサ構成のもっとも大きな違いはプロセッサ間を接続するバスがプロセッサパッケージ外部にあるか内部にあるかが違いとなる。そして、バスがパッケージ内部にある場合、ＬＳＩ解析設備を持たない一般ユーザはパッケージ内部バスに流れる情報を読み取ることは不可能である。
【０００８】
本発明の目的は、同一パッケージ上に複数の命令処理機能を持つマルチプロセッサ構成の耐タンパプロセッサを提供することにある。
【０００９】
又、本発明の目的は、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止することのできる、マルチプロセッサ構成の耐タンパマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の特徴は、（イ）あるプログラムを並列に実行可能な第１のプロセッサおよび第２のプロセッサと、（ロ）プログラムに対する鍵を格納する鍵テーブルと、（ハ）第１のプロセッサ、第２のプロセッサ、または、第１および第２のプロセッサで実行中のプログラムからのメモリ参照要求に応じて、要求されたメモリデータを外部のメモリから取得する手段と、取得したメモリデータを、鍵テーブルから取り出したプログラムに対応する鍵で復号する復号処理手段とを有するものであり、第１および第２のプロセッサと接続されるバスインタフェースユニットとを備えるマイクロプロセッサパッケージであることを要旨とする。
【００１１】
本発明の第２の特徴は、（イ）あるプログラムを並列に実行可能な第１のプロセッサおよび第２のプロセッサと、（ロ）プログラムに対する鍵を格納する鍵テーブルと、（ハ）第１のプロセッサ、第２のプロセッサ、または、第１および第２のプロセッサで実行中のプログラムからのメモリ書き込み要求に応じて、鍵テーブルから取り出したプログラムに対応する鍵でメモリへ書き込むデータを暗号化する暗号化処理手段と、暗号化されたデータを外部のメモリへ転送する手段とを有するものであって、第１および第２のプロセッサと接続されるバスインタフェースユニットとを備えるマイクロプロセッサパッケージであることを要旨とする。
【発明の効果】
【００１２】
本発明によれば、オンチップマルチコア型の耐タンパマイクロプロセッサにおいて、パッケージ上の複数のプロセッサコアに対して、暗号処理部を１箇所に集中することにより、同一規模のハードウェアで各プロセッサコア対応に暗号処理部を設けた場合と比較して、メモリアクセス時の遅延を低減し、処理能力を向上させることができる。すなわち、ハードウェア規模に注目した場合には、平均メモリアクセス遅延の値を一定値以下に押さえるためのハードウェア規模を小さくすることができ、プロセッサパッケージのコストを低減することが可能となる。
【発明を実施するための最良の形態】
【００１３】
本発明の実施の形態に係るオンチップマルチコア型耐タンパプロセッサは、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持ち、同一パッケージ上に複数の命令実行コアを持つマイクロプロセッサパッケージにおいて、暗号鍵を格納する鍵テーブルと、暗号処理機能部をパッケージ上で１箇所に集中することにより、同鍵テーブルおよび暗号処理機能部を分散して設けた場合と比較して、同一規模のハードウェアにおける処理性能の向上を達成できるマルチプロセッサ構成の耐タンパマイクロプロセッサを提供する。その結果、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止する。
【００１４】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１５】
（実施の形態）
（基本技術）
図２に耐タンパプロセッサの基本形を示し、動作を説明する。耐タンパプロセッサは、マルチタスクＯＳの管理下で、プロセッサハードウェアによりマルチベンダのプログラムの秘密を保護する。ＯＳが信用できないことを前提として、耐タンパプロセッサはプロセッサパッケージ単体のハードウェア機能で完結するプログラムの秘密保護機能を提供する。
【００１６】
プログラムは実行時にはプロセスとしてＯＳに管理される。耐タンパプロセッサハードウェアにおけるプログラムの実行は、通常のＯＳの場合と同様プロセスを単位として行われる。大きな違いは、従来ＯＳが管理していたプロセス情報の一部をプロセッサハードウェアが直接管理することおよび、プログラム自身の暗号処理がハードウェアによって処理されることである。
【００１７】
正しいプロセス実行においては、ＯＳとプロセッサによるプロセス情報の管理は一致して行なわれるはずだが、悪意のあるＯＳ、あるいはバグのあるＯＳを前提とした場合、ＯＳとプロセッサが管理するプロセス情報の間に食い違いが生じることを前提としなければならない。以下の説明では、ＯＳによるプロセス情報の管理とプロセッサによる管理を明確に区別して説明するため、耐タンパプロセッサハードウェアが管理するプロセスを、実行制御ユニット（ＥＣＵ）と呼ぶ。
【００１８】
耐タンパプロセッサはマルチタスク環境をサポートするため、複数のＥＣＵを擬似並行的に実行できる。プロセッサ上で、ＥＣＵはＥＣＵ  ＩＤにより一意に識別される。図２において、１１１はプロセッサコアを、１１２は実行中のＥＣＵ  ＩＤを保持するＥＣＵ  ＩＤレジスタをそれぞれ表す。１２１はキャッシュコントローラであり、内部に命令キャッシュ(Ｉキャッシュ)１２２とデータキャッシュ（Ｄキャッシュ）１２４をそれぞれ持つ。命令キャッシュ１２２、データキャッシュ１２４にはそれぞれ命令キャッシュメモリ１２３、データキャッシュメモリ１２５があり、各キャッシュメモリはキャッシュライン１２３−１〜１２３−ｎ,１２５−１〜１２５−ｎで構成されている。各キャッシュラインはタグフィールドとデータフィールドからなる。
【００１９】
図７にデータキャッシュメモリ１２５の詳細を説明する。キャッシュライン１２５−１〜１２５−ｎは大きくタグとコンテンツに分けられる。タグには制御ビットフィールド、ＥＣＵ  ＩＤフィールド,アドレスフィールドがある。キャッシュライン１２５−１について、制御ビットフィールドはキャッシュラインの有効/無効（バリッド／インバリッド）を示す有効フィールド１２５−１−vと、キャッシュ内容の外部メモリ１０２に書き込まれていない更新の有無(ダーティ/クリーン)を示すダーティフィールド１２５−１−ｄと、キャッシュラインの他のプロセッサと共有状態の有無(シェアド／エクスクルーシブ)を示す共有フィールド１２５−１−ｓがある。ＥＣＵ  ＩＤフィールドは１２５−１−ｔ、アドレスフィールドは１２５−１−Ａである。キャッシュ内容は１２５−１−Ｃである。
【００２０】
図２に戻って、１３１はバスインタフェースユニット（ＢＩＵ）であり、プロセッサ外部との入出力を行なう。ＢＩＵ１３１には鍵テーブル１３２、セレクタ１３３,暗号／復号ハードウェア１３４が備えられている。鍵テーブル１３２は１３２−０〜１３２−ｍのｍ＋１個のエントリを持つ。各エントリはＥＣＵ対応にもうけられており、それぞれのエントリにプログラム暗号鍵(以下プログラム鍵)Ｋｘとデータ暗号鍵(以下データ鍵)Ｋｄの２つのフィールドがある。１４１はＥＣＵ状態管理機能部を、１５１は２次キャッシュ、１６１は公開鍵復号機能部をそれぞれ表す。以下、あるプログラムＰをプロセスｐとして実行する例を図２にしたがって説明する。このとき、プロセスｐにはＥＣＵ  ＩＤ＃１を割り当てる。
【００２１】
（暗号化プロセスの実行）
プログラムは外部メモリ１０２上では所定の暗号鍵ＫｘＰで暗号化されている。この鍵は、プログラムの供給者がプログラムごとに個別に設定できる。プログラムをＥＣＵ(プロセス)として実行するときは、ＯＳがプロセスにＥＣＵ  ＩＤを割当てて、ＥＣＵ  ＩＤに対応する鍵テーブル１３２のエントリを一つ割り当てる。一度ＥＣＵ  ＩＤが割当てられたＥＣＵの鍵テーブルエントリは、プロセッサが管理し、たとえＯＳといえども勝手に書き換えることはできない。なお、以下の説明では、共通鍵アルゴリズムの暗号化／復号化においては、そこで使われる鍵は暗号・復号どちらの場合にも暗号鍵という言葉で表す。
【００２２】
ＫｘＰは外部メモリ上ではプロセッサ公開鍵Ｋｐによって暗号化された形Ｘとして配置されている。ＥＣＵ  ＩＤをプロセスに割当てるとき、ＯＳは割当てるＥＣＵ  ＩＤ（ここでは＃１）および上記Ｘのアドレスをパラメータとして、鍵登録特殊命令を発行する。鍵登録命令の実行により、プロセッサハードウェアのＥＣＵ状態管理機能部１４１,公開鍵復号機能部１６１がＸをプロセッサ秘密鍵により復号される。復号結果のＫｘＰはやはりハードウェアによってＥＣＵ  ＩＤ ＃１に対応する鍵テーブル１３２のエントリ１３２−１−１に暗号鍵を書き込む。この過程はＯＳによる鍵登録特殊命令発行を除いて全てプロセッサハードウェアによって処理され、ＯＳがこの過程に干渉することはできない。ＥＣＵ  ＩＤに対応する鍵テーブルエントリへの鍵値書き込みにより，ＥＣＵ ＃１は実行可能な状態となる。
【００２３】
プロセスｐすなわちＥＣＵ  ＩＤ＃１のＥＣＵの実行を開始する時、ＯＳはＥＣＵ  ＩＤ＃１を指定して特殊命令である実行開始命令を発行する。すると、プロセッサコア１１１のカレントタスクレジスタ（ＥＣＵレジスタ）１１２に＃１が書き込まれ、以後、ＥＣＵ＃１のプログラム実行では、外部メモリ１０２に格納されている暗号化された命令ではなく、命令の読込み時に、このカレントタスクレジスタ１１２で指定されるエントリ１３２−１−ｘ内の鍵すなわちＫ０で復号化された命令列がキャッシュメモリに格納され、実行される。
【００２４】
なお、ＯＳを含む非暗号化プロセスには、ＥＣＵ  ＩＤ＃０が割り当てられており、カレントタスクレジスタ１１２の値が＃０の場合は以下の暗号化処理は行なわれない。プロセスｐの開始前、ＯＳが実行されている状態ではカレントタスクＩＤは＃０となる。
【００２５】
暗号化されたプログラムの実行で、ＥＣＵ＃１の実行による命令フェッチでアドレスＸのメモリ内容が読みこまれたとき、ＢＩＵ１３１はＸのアドレスに相当する暗号化された命令列のメモリ内容を読みだす。そして、実行中のＥＣＵ  ＩＤ＃０で指定されるプログラムのエントリ１３２−０−ｘ内の復号鍵Ｋ０によって復号し、キャッシュライン１２３−１に格納する。
【００２６】
プロセッサコア１１１はキャッシュライン１２３−１から復号された命令列を取り込み順次実行する。
【００２７】
（割り込み／再開、被保護ラインへの他タスク参照禁止）
割り込みによりプロセス実行が中断された場合、実行中ＥＣＵのレジスタ情報は暗号化されてメモリに保存された後に、所定の割り込みハンドラへ制御が移される。割り込みハンドラへの制御が移るときには、カレントタスクレジスタ（ＥＣＵ  ＩＤレジスタ）１１２の値は、非暗号化を表す値＃０に戻される。
【００２８】
ＥＣＵ＃１の実行が中断されている間も復号化された命令列はキャッシュライン１２３−１に保持されている。だが、ＯＳまたは他のプロセスが命令フェッチにおいてこのキャッシュラインを参照してもキャッシュヒットの判定においてキャッシュタグのＥＣＵ  ＩＤ値(＃１)と実行中のＥＣＵ  ＩＤ値(≠＃１)が一致しないので、ＯＳや他のプロセスが復号化済みのキャッシュラインの命令を実行することはできず、ＥＣＵ＃１と他のＥＣＵとは隔離される。
【００２９】
割り込み処理が完了し、再度プロセスｐがスケジュールされ、ディスパッチが行なわれるとき、ＥＣＵ＃１の実行再開命令が発行される。実行再開命令の発行によりＥＣＵ  ＩＤが＃１に再設定され、保存されたコンテキスト情報がレジスタに読み込まれてプログラムカウンタが復帰され、制御が実行中断前のアドレスに移り、プロセスが再開される。
【００３０】
（データ暗号化）
プロセッサはプログラムだけでなくデータも暗号化処理できる。データの場合には読みだし時の復号だけでなく、書き込み時の暗号化処理があるところが命令の場合との違いである。以下の説明ではデータ処理に使われる鍵をデータ鍵と呼ぶ。ＥＣＵ＃１のデータ鍵はエントリ１３２−１−ｄに格納されている。データ鍵の値は命令鍵の初期化と同様に、プロセスの開始時に設定する方法と、プロセスが実行中に設定する方法がある。ここでは命令鍵の初期化時に値が設定されているものとする。以下、データ処理について、図８を使用して説明する。
【００３１】
プロセッサコア１１１はキャッシュコントローラ１２１にアドレスＸ２のワード読み出し要求を発行する(シーケンスＳ１００１)。
【００３２】
データキャッシュ１２４はアドレスＸ２のキャッシュ存在判定を行う。ここではアドレスＸ２の内容はキャッシュされていないので、キャッシュコントローラ１２１はＢＩＵ１３１を通じて外部メモリ１０２へアドレスＸ２を含むアドレス範囲Ｘ〜Ｘ＋３１のメモリ読み出し要求を発行する(シーケンスＳ１００２)。
【００３３】
外部メモリ１０２からのＥＣＵ＃１のデータの読み込みは、命令と同様にキャッシュライン単位で行なわれる。プロセッサコア１１１からアドレスＸのメモリに対するデータ読み出し要求があったときには、キャッシュからＢＩＵ１３１へカレントＥＣＵ  ＩＤ＃１が伝達される。外部メモリ１０２から読み出されたアドレスＸに対応するキャッシュデータＣ（Ｘ）の内容は、カレントタスクレジスタ１１２で指定されるエントリ１３２−１−ｄ内のデータ鍵Ｋ１ｄにより復号化されて結果がキャッシュライン１２５−ｘに格納され、タグにＩＤ＃１が書き込まれる(シーケンスＳ１００３)。
【００３４】
プロセッサコア１１１はキャッシュライン１２５−ｘから要求したアドレスのキャッシュデータＣ（Ｘ２）＝ａのメモリ内容を読み込み、エントリ１２５−ｘ−Ｃに格納する(シーケンスＳ１００４)。
【００３５】
外部メモリ１０２から内容が読み込んだ状態では、当該キャッシュライン１２５−ｘのタグの状態ビット１２５−ｘ−ｄは“クリーン”の状態になる。データの場合には書込みがある。プロセッサコア１１１からデータの書き込みがあった場合、対象アドレスがキャッシュにヒットすればキャッシュにデータを書き込む(シーケンスＳ１００５)。
【００３６】
ここではライトバックキャッシュアルゴリズムが採用されているので変更されたデータはすぐには外部メモリ１０２に書き戻されない。書き込みがあったキャッシュラインの状態ビット１２５−ｘ−ｄは“ダーティ”状態になる。
【００３７】
（データのライトバック）
キャッシュラインがフラッシュされ、書き戻される時、暗号化が行なわれる。実行中ＥＣＵ  ＩＤで指定されるデータ鍵で暗号化されて外部メモリ１０２の所定アドレスに書き込まれる。例においてはアドレスＸの内容が保持されているキャッシュライン１２５−ｘについて競合する、アドレスＸ＋ｍ＊３２の読込み要求がプロセッサコア１１１から発行されると(シーケンスＳ１００７)、キャッシュライン１２５−ｘの書き戻しが始まる。
【００３８】
データの書き込みに先立って、データの暗号化が行われる。キャッシュコントローラ１２１により当該キャッシュライン１２５−ｘを読み込んだときのＥＣＵ  ＩＤを格納するキャッシュタグ１２５−ｘ−ｔが参照されＥＣＵ  ＩＤ♯１が取り出される。そしてＢＩＵ１３１において鍵テーブル１３２のデータ鍵でＥＣＵ  ＩＤ♯１に対応するエントリ１３２−１−ｄのフィールドに格納された鍵Ｋ１ｄの値が読み出され、鍵Ｋ１ｄによりキャッシュデータが暗号化される。暗号化されたデータは外部メモリ１０２のアドレスＸに書き戻される(シーケンスＳ１００８)。
【００３９】
なお、この時点ではキャッシュライン１２５−ｘのＥＣＵ  ＩＤとカレントＥＣＵ  ＩＤは異なる場合がある。例ではシーケンスＳ１００６においてカレントＥＣＵ  ＩＤが♯０に変更されているため、キャッシュライン書き戻しの際の暗号鍵指定に使われるＥＣＵ  ＩＤとカレントＥＣＵ  ＩＤとは一致しない。書き戻しの際の暗号鍵指定に使われるのはキャッシュタグに格納されたキャッシュライン１２５−ｘを読み込んだときのＥＣＵ  ＩＤである。
【００４０】
さて、書き換え対象のラインに残されていたデータの書き戻しが終わると、中断していたアドレスＸ＋ｍ＊３２のメモリ読み出しが再開される(シーケンスＳ１００９)。
【００４１】
このメモリ参照ではＥＣＵ  ＩＤが０なので、メモリ読み込みにあたって復号化処理は行われず、外部メモリ１０２から読み込まれた値がそのままデータキャッシュメモリ１２５に格納され、キャッシュライン１２５−ｘのフィルが完了する(シーケンスＳ１０１０)。そして、キャッシュラインからコアが要求したアドレスのワードが読み込まれる(シーケンスＳ１０１１)。
【００４２】
（キャッシュ上データに対するプロセス間のアクセス競合制御）
上記キャッシュライン１２５−ｘに復号化状態のデータが存在する時、命令の場合と同様、他のプロセスによってアクセスされる場合がありうる。データの場合も命令と同様に、アクセス対象のキャッシュラインのタグに記録されたＥＣＵ  ＩＤとカレントＥＣＵ  ＩＤが比較され、一致しない場合は当該キャッシュラインはフラッシュされるため、プロセスｐが読み込んだ平文データは他のプロセスから隔離保護される。
【００４３】
上記のメカニズムにより、耐タンパプロセッサシステムでは、悪意のあるＯＳの管理下でも、異なるベンダが供給するソフトウェア毎の情報の隔離保護が保証される。
【００４４】
（バス結合独立型マルチプロセッサ）
プロセッサシステムは、図３に示すように、システムバスライン２０５と、システムバスライン２０５に接続されたメモリインタフェース２０７と、メモリインタフェース２０７を介してシステムバスライン２０５に接続された外部メモリ２０８と、複数のプロセッサ２０１−１〜２０１−ｎと、システムバスライン２０５に接続されたＤＭＡコントローラ２０６−１〜２０６−ｍとを備える。耐タンパプロセッサのマルチプロセッサシステムとして構成され、個々のプロセッサの内部には、プロセッサコア２０２−１〜２０２−ｎと、キャッシュ２０３−１〜２０３−ｎと、暗号機能を有するＢＩＵ２０４−１〜２０４−ｎが含まれる。図３においては、２０１,２０２,２０３,２０４はそれぞれ図２における１０１,１１１,１２１,１３１に対応する。
【００４５】
また、システムの性能向上の目的でマルチプロセッサ構成がしばしば用いられる(図３)。２０１−１〜２０１−ｎが独立したパッケージの暗号機能を持つプロセッサであり、システムバスライン２０５を通じて接続されている。それぞれのプロセッサが独立にキャッシュを持つマルチプロセッサ構成のシステムでは、データキャッシュの一貫性を保証するためのキャッシュ一貫性制御プロトコルが使われる。キャッシュ一貫性制御プロトコルでは、個々のプロセッサの間で、データの同期を取るためのメッセージが交換され、データキャッシュの一貫性が保たれる。このとき、個々のプロセッサから見ると、外部からのメッセージによってローカルのキャッシュデータの入出力制御を行う必要がある。耐タンパプロセッサにおけるキャッシュ一貫性制御方式では、図３に示す２０１−１〜２０１−ｎのプロセッサそれぞれがひとつずつのプロセッサコア２０２−１〜２０２−ｎを持ち、プロセッサパッケージのひとつひとつが暗号機能を持つ耐タンパプロセッサであり、システムバスライン２０５を通じて接続されるときの問題を解決している。一般に、このような各プロセッサパッケージが独立にキャッシュを持つマルチプロセッサ構成では、あるプロセッサがローカルにキャッシュデータを更新したときに、その更新情報を他のプロセッサが持つキャッシュに反映するためのキャッシュ一貫性制御が必要となり、上記耐タンパプロセッサにおけるキャッシュ一貫性制御方式では各プロセッサが独立して動作するときのキャッシュ一貫性制御方式を示している。
【００４６】
（単純な適用例）
図２に示した独立耐タンパプロセッサを、単純にオンチップマルチコア型のマルチプロセッサ構成に適用した例を図４に示す。以下この例を単純適用例と呼ぶ。図４に示すプロセッサパッケージ３０１において、３１１−１〜３１１−ｎはチップ上のプロセッサを表す。３１１−１のプロセッサ中で、３２１−１はプロセッサコアを、３３１−１はキャッシュコントローラを、３３２−１は命令キャッシュを、３３３−１はデータキャッシュを、３４１−１は内部ＢＩＵ(以下Ｉ−ＢＩＵと表記)を、３４２−１は鍵テーブルを、３４３−１は暗号／復号ハードウェアを、３５１はＥＣＵ状態管理機能部を、３６１−１は公開鍵復号機能部をそれぞれ表す。プロセッサパッケージ３０１において３７１は内部バスを３８１はＢＩＵを、３９１は２次キャッシュをそれぞれ表す。
【００４７】
図９は本発明の実施の形態において、メモリ参照時にプロセッサ４１１−１〜ｎよりＢＩＵ４６１へ内部バス４５１を経由して発行される、メモリ読み出し要求信号１１０１および書き込み要求信号１１２１の形式を表す図である。読み出し要求のＥＣＵ番号１１０２はメモリ参照が発生したときのＥＣＵ  ＩＤが格納され、ＢＩＵ４６１はこの値に基づいて復号処理に使う鍵を鍵テーブルから選択する。つまり、内部信号においてＥＣＵ番号１１０２は鍵識別子として機能する。そして、プロセッサ番号１１０３は要求発行元のプロセッサ番号を、リクエスト番号１１０４は要求発行元プロセッサごとに付与される要求番号を、タイプ１１０５はプログラムとデータの識別を、アドレス１１０６は読み出しアドレスを、サイズ１１０７は読み出しサイズをそれぞれ表す。このうち、プロセッサ番号１１０３は、単一プロセッサ構成の場合には存在しないものである。
【００４８】
厳密には、ＢＩＵ４６１における鍵選択はＥＣＵ番号１１０２1102とタイプ１１０５の両方によって行われるので、この両方を合わせたものが、内部バス信号における鍵識別子として機能することになる。書き込み要求信号１１２１の形式は書き込みデータ１１２８があることを除いて読み出しの場合と同様である。
【００４９】
図５は単純適用例における２つのプロセッサによるメモリアクセス動作シーケンスの時間経過を示したものである。図５上において、２クロックごとに補助線が引かれている。ここではメモリ参照動作シーケンスは４クロック、復号処理動作シーケンスは１０クロックを要する。
【００５０】
プロセッサ３１１−１のプロセッサコア３２１−１はキャッシュコントローラ３３１−１に対してメモリ参照要求ＲＥＱ１を発行する(シーケンスＳ５０１)。キャッシュがミスヒットの場合、１クロック遅れてＩ−ＢＩＵ３４１−１へ参照要求が出され(シーケンスＳ５０２)、さらにＢＩＵ３８１へと転送され(シーケンスＳ５０３)、メモリ参照ＭＥＭ１が行われる(シーケンスＳ５０４)。
【００５１】
この間に、メモリ参照要求ＲＥＱ１から１単位時間遅れてプロセッサ３１１−２のプロセッサコア３２１−２が同様に、メモリ参照要求ＲＥＱ２を発行する（シーケンスＳ５０５）。ＢＩＵ３８１への要求はシーケンスＳ５０９として発行されるが、メモリ参照の実行はメモリ参照ＭＥＭ１の処理後にスケジュールされる。
【００５２】
さらにプロセッサ３１１−１のキャッシュコントローラ３３１−１からはプリフェッチ要求ＰＲＥ１が、シーケンスＳ５０２から２クロック遅れて発行される（シーケンスＳ５０７）。プリフェッチ要求ＰＲＥ１の処理はシーケンスＳ５０９の後になる。
【００５３】
メモリ参照ＭＥＭ１が完了すると、結果がＩ−ＢＩＵ３４１−１に送られ、復号処理ＤＥＣ１が始まる（シーケンスＳ５０９）。ＢＩＵ３８１ではキューイングされていたメモリ参照ＭＥＭ２が始まる(シーケンスＳ５１０)。
【００５４】
メモリ参照ＭＥＭ２が完了すると、同様にプロセッサ３１１−２のＩ−ＢＩＵ３４１−２に結果が送られ、復号処理ＤＥＣ２が始まる（シーケンスＳ５１３）。ＢＩＵ３８１ではキューイングされていたプロセッサ３１１−１によるのメモリ参照ＭＥＭ３が始まる(シーケンスＳ５１４)。
【００５５】
プロセッサ３１１−１での復号処理ＤＥＣ１が完了すると結果がキャッシュコントローラ３３１−１に送られ(シーケンスＳ５１６)、プロセッサコア３２１−１へメモリ参照応答ＲＳＰ１が返される(シーケンスＳ５１７)。復号処理の完了と同時にすでに完了していたメモリ参照ＭＥＭ３のメモリ参照結果(シーケンスＳ５１５)の復号処理ＤＥＣ３が始まる（シーケンスＳ５１８）。このとき、メモリ参照ＭＥＭ３の参照結果が得られてから復号処理ＤＥＣ３が始まるまで２クロックの遅延が生じる。
【００５６】
プロセッサ３１１−２では復号処理ＤＥＣ２が完了すると結果がメモリ参照応答ＲＳＰ２としてコア３２１−２に返される(シーケンスＳ５２０)。プロセッサ３１１−１ではメモリ参照応答ＲＳＰ１の後にメモリ参照要求ＲＥＱ３が発行されており（シーケンスＳ５２１）、復号処理ＤＥＣ３が完了すると結果がメモリ参照応答ＲＳＰ３としてコア３２１−１に返される（シーケンスＳ５２３）。
【００５７】
シーケンスＳ５０７におけるプリフェッチＰＲＥ１からメモリ参照結果が返されるまでの遅延はメモリ参照ＭＥＭ１,ＭＥＭ２の終了待ち(６クロック)＋ＭＥＭ３自身の処理遅延(４クロック)＋ＤＥＣ１の終了待ち(２クロック)＋ＤＥＣ３自身の処理遅延(１０クロック)＝２２クロックとなる(シーケンスＳ５２４)。
【００５８】
なお、シーケンスＳ５０３およびシーケンスＳ５０９のメモリ参照要求に対して、ＢＩＵ３８１がメモリからの読み出し結果を復号するときに使用する鍵は、それぞれのメモリ参照要求における書き込み要求信号１１２１のＥＣＵ番号１１０２およびタイプ１１０５によって選択される。
【００５９】
そして、ＢＩＵ３８１からＩ−ＢＩＵ３４１−１、３４１−２に読み出し結果を返すときは、シーケンスＳ５０３およびＳ５０９で送られたメモリ参照要求における書き込み要求信号１１２１のプロセッサ番号１１０３に基づいて結果を要求元のプロセッサに送る。このＥＣＵ番号１１０２およびタイプ１１０５からなる鍵識別子と要求発行元のプロセッサ番号１１０３を持つ信号形式を使うことで、オンチップマルチコア型耐タンパプロセッサにおいても、暗号鍵選択とメモリ参照結果の要求発行元への送付が可能となる。
【００６０】
(パイプライン処理)
次に本発明の実施の形態に係るオンチップマルチコア型耐タンパプロセッサの構成および動作を図１および図６にしたがって説明する。
【００６１】
図１に示すプロセッサパッケージ４０１において、４１１−１〜４１１−ｎはチップ上のプロセッサを表す。４１１−１のプロセッサ中で、４２１−１はプロセッサコアを、４３１−１はキャッシュコントローラを、４３２−１は命令キャッシュを、４３３−１はデータキャッシュを、４４１はＥＣＵ状態管理機能部をそれぞれ表す。本構成においては暗号処理機能はパッケージ上にひとつ設けられるＢＩＵ４６１にまとめられ、４６２は鍵テーブルを、４６３は暗号／復号処理部を表す。４６４はセレクタを表し、キャッシュからの要求に応じて暗号／復号処理部４６３において使用する鍵を選択する鍵選択機能を有する。ここで暗号／復号処理部４６３はプロセッサパッケージ４０１にただひとつ設けられているだけだが、データの処理中に別の要求を受け付けることができるパイプライン処理能力を持つ。プロセッサパッケージ４０１において４５１は内部バスを、４７１は２次キャッシュを、４８１は公開鍵復号機能部をそれぞれ表す。
【００６２】
以下、図６にしたがって本発明の実施の形態の動作を説明する。これは、単純適用例の場合と同様に２つのプロセッサによるメモリアクセス動作であり、リクエストＲＥＱ１〜ＲＥＱ３の発生タイミングも同一、メモリアクセス遅延(４クロック)、復号遅延(１０クロック)も同一である。処理時間に影響する違いは、ＢＩＵ４６１で行われる復号処理が、パイプライン処理されることである。そのほか、構成上の違いとして、Ｉ−ＢＩＵがなくなっている。
【００６３】
プロセッサ４１１−１のプロセッサコア４２１−１はキャッシュコントローラ４３１−１に対してメモリ参照要求ＲＥＱ１を発行する(シーケンスＳ６０１)。キャッシュコントローラ４３１−１がミスヒットなので、１クロック遅れてＢＩＵ４６１へ参照要求(シーケンスＳ６０２)が出され、メモリ参照ＭＥＭ１が行われる(シーケンスＳ６０３)。メモリ参照ＭＥＭ１〜３は全て４クロックを要する。この間に、メモリ参照要求ＲＥＱ１から１単位時間遅れてプロセッサ４１１−２のプロセッサコア４２１−２が同様にメモリ参照要求ＲＥＱ２を発行する（シーケンスＳ６０４）。キャッシュコントローラ４３１−２からＢＩＵ４６１への要求はシーケンスＳ６０５として発行されるが、メモリ参照の実行はメモリ参照ＭＥＭ１の処理後にスケジュールされる。
【００６４】
さらにプロセッサ４１１−１のキャッシュコントローラ４３１−１からはプリフェッチ要求ＰＲＥ１のシーケンスＳ６０８が、シーケンスＳ６０２から２クロック遅れて発行される。プリフェッチ要求ＰＲＥ１の処理はメモリ参照ＭＥＭ２の後になる（シーケンスＳ６０７）。
【００６５】
メモリ参照ＭＥＭ１が完了すると、暗号／復号処理部４６３で参照結果の復号処理ＤＥＣ１が始まる（シーケンスＳ６０６）。同時にキューイングされていたメモリ参照ＭＥＭ２が始まる(シーケンスＳ６０７)。
【００６６】
メモリ参照ＭＥＭ２が完了すると、同様に復号処理ＤＥＣ２が始まる（シーケンスＳ６０９）。この時点で復号処理ＤＥＣ１はまだ完了していないが、暗号／復号処理部４６３はパイプライン処理能力を持つので、次のデータを処理することができる。キューイングされていたプロセッサ４１１−１によるのメモリ参照ＭＥＭ３が始まる(シーケンスＳ６１３)。
【００６７】
復号処理ＤＥＣ１が完了すると結果がキャッシュコントローラ４３１−１に送られ(シーケンスＳ６１１)、プロセッサコア４２１−１へメモリ参照応答ＲＳＰ１が返される(シーケンスＳ６１２)。復号処理の完了と同時にすでに完了していたメモリ参照ＭＥＭ３の結果の復号処理ＤＥＣ３が始まる（シーケンスＳ６１４）。
【００６８】
プロセッサ２では復号処理ＤＥＣ２が完了すると結果がメモリ参照応答ＲＳＰ２としてプロセッサコア４２１−１に返される(シーケンスＳ６１７)。
【００６９】
プロセッサ４１１−１ではメモリ参照応答ＲＳＰ１の後に参照要求ＲＥＱ３が発行されており、復号処理ＤＥＣ３が完了すると結果がメモリ参照応答ＲＳＰ３としてプロセッサコア４２１−１に返される（シーケンスＳ６２０）。ここで、プロセッサ４１１−１,４１１−２によるメモリ参照要求ＲＥＱ１,ＲＥＱ２に対するメモリ参照応答ＲＳＰ１,ＲＳＰ２の遅延時間は単純適用例と同一である。
【００７０】
しかしながら、シーケンスＳ６０８におけるプリフェッチ要求ＰＲＥ１からメモリ参照結果が返されるまでの遅延はメモリ参照ＭＥＭ１,ＭＥＭ２の終了待ち(６クロック)＋メモリ参照ＭＥＭ３自身の処理遅延(４クロック)＋復号処理ＤＥＣ３自身の処理遅延(１０クロック)＝２０クロックとなり(シーケンスＳ６２１)、単純適用例の場合と比較して復号処理ＤＥＣ２の完了待ちの２クロックだけ待ち時間を短縮することができる。
【００７１】
上記実施の形態ではプロセッサ数を２個とし、プリフェッチ要求はプロセッサ４１１−１から１回だけ行う例を示したが、プロセッサ数が増え、プリフェッチ要求がそれぞれのプロセッサコアから行われた場合、本実施の形態の適用による待ち時間の短縮はより顕著となり、性能向上をはかることができる。
【００７２】
この効果は関連するプロセッサの数が多く、かつメモリ参照要求ＲＥＱ１とプリフェッチ要求ＰＲＥ１のような連続したメモリ参照の頻度が多いほど高くなる。
【００７３】
一般に１０段の構成で１０クロックの遅延を持つブロック暗号処理回路を、パイプライン化した場合、その回路規模は単純には１０倍になる。実際には回路を集中化したことにより重複部分のオーバヘッドを削ることで１０倍より小さくなることが期待できる。
【００７４】
したがって、１０個のコアを持つオンチップマルチコア型のプロセッサパッケージの場合、１０個のコアにそれぞれパイプライン機能を持たない暗号ハードウェアを設けた単純適用例と、１個のパイプライン機能を持つ暗号ハードウェアを設けた本発明の実施の形態の場合とでは、回路規模は同等もしくは本発明の実施の形態の構成の方が小さくなる。このハードウェア条件のもとで、上記動作例に示したように、本発明の実施の形態の構成はメモリの復号処理の遅延を小さく押さえることができ、性能向上の効果がある。さらに単純適用例では、各プロセッサに鍵テーブルが必要となっていたが、本発明の実施の形態の構成では、鍵テーブルをひとつに集約することができ、この点においてもハードウェア規模を小さく押さえる効果がある。
【００７５】
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施の形態及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００７６】
その他、本発明の要旨を逸脱しない範囲で、様々に変形して実施することができる。なお、上記各実施の形態は、それぞれ組み合わせて実施することができる。このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態のプロセッサ内部構成図。
【図２】耐タンパプロセッサ基本内部構成図。
【図３】独立型バス結合耐タンパプロセッサシステムの構成図。
【図４】単純オンチップマルチコア型耐タンパプロセッサシステムの構成図。
【図５】単純オンチップマルチコア型耐タンパプロセッサシステムの動作シーケンス図。
【図６】本発明の実施の形態に係るオンチップマルチコア型耐タンパプロセッサシステムの動作シーケンス図。
【図７】図２に示す耐タンパプロセッサにおいて使用するキャッシュデータ構造の詳細図。
【図８】図２に示す耐タンパプロセッサの動作説明図であって、ユニプロセッサのキャッシュアクセスシーケンス図。
【図９】本発明の実施の形態において使用する内部バスの信号形式であって、（ａ）読み出し要求信号の形式を表す模式図、（ｂ）書き込み要求信号の形式を表す模式図。
【符号の説明】
【００７８】
１０１,２０１−１〜２０１−ｎ，４１１−１〜４１１−ｎ…マイクロプロセッサ（プロセッサ）
１０２,２０８…外部メモリ
１１１,２０２−１〜２０２−ｎ,３２１−１〜３２１−ｎ，４２１−１〜４２１−ｎ…プロセッサコア
１１２…カレントタスクレジスタ（ＥＣＵ  ＩＤレジスタ）
１２１,２０３−１〜２０３−ｎ,３３１−１〜３３１−ｎ，４３１−１〜４３１−ｎ…キャッシュコントローラ
１２２，３３２−１〜３３２−ｎ，４３２−１〜４３２−ｎ…命令キャッシュ（Ｉキャッシュ）
１２３…命令キャッシュメモリ
１２４，３３３−１〜３３３−ｎ，４３３−１〜４３３−ｎ…データキャッシュ（Ｄキャッシュ）
１２５…データキャッシュメモリ
１２３−１〜１２３−ｎ,１２５−１〜１２５−ｎ…キャッシュライン
１２５−１−ｖ…有効フィールド
１２５−１−ｄ…ダーティフィールド
１２５−１−ｓ…共有フィールド
１２５−１−ｔ…ＥＣＵフィールド
１２５−１−Ａ…アドレスフィールド
１２５−１−Ｃ…キャッシュ内容
１２５−ｘ−ｔ…キャッシュタグ
１２５−ｘ−Ｃ…キャッシュ内容
１２５−ｘ−ｄ…状態ビット
１３１,２０４−１〜２０４−ｎ,３８１,４６１…バスインタフェースユニット（ＢＩＵ）
１３２,３４２−１〜３４２−ｎ，４６２…鍵テーブル
１３２−０〜１３２−ｍ，１３２−１−ｘ，２３２−１−ｄ…エントリ
１３３,４６４…セレクタ
１３４,４６３…暗号／復号処理部
１３５…暗号／復号共通モジュール
１４０…外部バス
１４１,３５１−１〜３５１−ｎ，４４１−１〜４４１−ｎ…ＥＣＵ状態管理機能部
１５１,４７１…２次キャッシュ
１６１,３６１−１〜３６１−ｎ，４８１…公開鍵復号機能部
２０５…システムバスライン
２０６−１〜２０６−ｍ…ＤＭＡコントローラ
２０７…メモリインタフェース
３０１，４０１…プロセッサパッケージ
３４１−１〜３４１−ｎ…内部バスインタフェースユニット（Ｉ−ＢＩＵ）
３４３−１〜３４３−ｎ…暗号／復号ハードウェア
４５１，３７１…内部バス
１１０１…読み出し要求信号
１１０２…ＥＣＵ番号
１１０３…プロセッサ番号
１１０４…リクエスト番号
１１０５…タイプ
１１０６…アドレス
１１０７…サイズ
１１２１…書き込み要求信号
１１２８…データ
Ｓ５０１〜Ｓ５２４,Ｓ６０１〜Ｓ６２２,Ｓ１００１〜Ｓ１０１１…シーケンス
Ｋｘ,Ｋ１ｘ,Ｋ２ｘ〜Ｋｍｘ，Ｋｘ０〜Ｋｘｎ…プログラム鍵
Ｋｄ,Ｋ１ｄ,Ｋ２ｄ〜Ｋｍｄ，Ｋｄ０〜Ｋｄｎ…データ鍵
ＫｘＰ…暗号鍵
Ｋ０…復号鍵
Ｐ…プログラム
ｐ…プロセス
Ｘ〜Ｘ＋３１…アドレス
Ｃ（Ｘ）,Ｃ’（Ｘ）…キャッシュデータ
【図１】
2005099984.tif 000003
【図２】
2005099984.tif 000004
【図３】
2005099984.tif 000005
【図４】
2005099984.tif 000006
【図５】
2005099984.tif 000007
【図６】
2005099984.tif 000008
【図７】
2005099984.tif 000009
【図８】
2005099984.tif 000010
【図９】
2005099984.tif 000011