(57)【要約】【課題】キャッシュ上データの安全性と整合性を両立させる。【解決手段】システムバスライン３０５と、メモリインタフェース３０７と、外部メモリ３０８と、それぞれプロセッサコア３０２とキャッシュ３０３とバスインタフェースユニット３０４とを含みシステムバスライン３０５にそれぞれ接続される複数のプロセッサ３０１−１〜３０１−ｎとを備え、外部メモリ３０８のデータを復号化してデータキャッシュに読み込み、データを鍵で暗号化して書き込むことを特徴とするプロセッサシステム。システムバスライン３０５に接続されるダイレクトメモリアクセスコントローラ３０６−１〜３０６−ｍを更に備える。ライト無効化プロトコルとライト更新プロトコルの両方に適用可能なキャッシュ一貫性制御方法で動作可能である。【選択図】図４
2005018379.tif 000002
【特許請求の範囲】
【請求項１】
プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、
前記プロセッサコアで実行されるプロセスにより、前記外部のメモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部のメモリへ出力する第２の手段と、
前記外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とを備えたことを特徴とするプロセッサ。
【請求項２】
プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、
前記プロセッサコアで実行されるプロセスにより、前記外部のメモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第２の手段と、
前記外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第３の手段とを備えたことを特徴とするプロセッサ。
【請求項３】
システムバスと、前記システムバスに接続されたメモリと、前記システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えた、プロセッサシステムであって、
前記各プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記外部メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第２の手段と、
前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とをそれぞれ備えたことを特徴とするプロセッサシステム。
【請求項４】
システムバスと、前記システムバスに接続されたメモリと、前記システムバスに接続されるダイレクトメモリアクセスコントローラと前記システムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、
前記プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第２の手段と、
前記ダイレクトメモリアクセスコントローラによって前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とを備えたことを特徴とするプロセッサシステム。
【請求項５】
システムバスと、前記システムバスに接続されたメモリと、前記システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えたプロセッサシステムであって、
前記各プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記メモリへ出力する第２の手段と、
前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第３の手段とをそれぞれ備えたことを特徴とするプロセッサシステム。
【請求項６】
システムバスと、前記システムバスに接続されたメモリと、前記システムバスに接続されるダイレクトメモリアクセスコントローラと前記システムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、
前記プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記外部メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第２の手段と、
前記ダイレクトメモリアクセスコントローラによって前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第３の手段とを備えたことを特徴とするプロセッサシステム。
【請求項７】
実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、該データを前記鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、
参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、
前記物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、
前記有効なキャッシュラインが存在する場合、前記有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、
前記更新が加えられている場合、前記有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、
前記暗号鍵決定ステップで決定した前記暗号鍵識別子を有する暗号鍵により、前記有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、
前記データ暗号化ステップ後、暗号化した前記有効なキャッシュラインの内容を前記物理アドレスに書き込む書込みステップ
とを備え、前記書込みステップは、当該プロセッサにおけるプログラム実行とは独立して処理することを特徴とするキャッシュ一貫性制御方法。
【請求項８】
前記更新判定ステップにおいて更新ありの判定後に、前記物理アドレスに対するメモリ参照待ち要求を外部バスに送信する待ち要求送信ステップと、
前記書込みステップの後にメモリ参照待ちの解除要求を外部バスに送信するステップ
とを更に備えることを特徴とする請求項７記載のキャッシュ一貫性制御方法。
【請求項９】
実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、該データを前記鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、
参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、
前記物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、
前記有効なキャッシュラインが存在する場合、前記有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、
前記更新が加えられている場合、前記有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、
前記暗号鍵決定ステップで決定した前記暗号鍵識別子を有する暗号鍵により、前記有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、
前記データ暗号化ステップ後、暗号化した前記有効なキャッシュラインの内容を前記物理アドレスに書き込む書込みステップ
とを備え、前記書込みステップは、当該プロセッサにおけるプログラム実行とは独立して処理することを特徴とするキャッシュ一貫性制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッッサ、プロセッサシステム及びプロセッサシステムのキャッシュ一貫性制御方法に関する。
【０００２】
【従来の技術】
オープンシステムが普及している。オープンシステムでは、パーソナルコンピュータ（ＰＣ）などの一般ユーザ向けコンピュータのハードウェアやシステムプログラム（以下「ＯＳ」と呼称する。）の情報が開示されており、エンドユーザがシステムプログラムを変更して望んだ改良を加えることができる。このような環境で、アプリケーションプログラムが扱う情報の著作権や、プログラム自体の著作権を保護するには、システムのＯＳがアプリケーションに対して敵対的動作を取ることを前提として、プログラムの秘密を守ることのできるハードウェアが必要となる。このようなハードウェア、特にマイクロプロセッサが提案されている（特許文献１，非特許文献１）。このようなプロセッサは、マルチタスク環境でプログラムとそれが扱う情報の覗き見、改変から保護するためにそれら情報を暗号化する機能を備えている。以下、このようなマイクロプロセッサを「耐タンパプロセッサ」と呼ぶ。
【０００３】
耐タンパプロセッサは、マルチタスクのコンピュータシステムにおいて、マルチベンダのプログラムに対してプログラムの秘密の安全性を確保するメカニズムを備えたプロセッサである（特許文献２）。
【０００４】
このような耐タンパプロセッサは、エンドユーザのシステムで動作するアプリケーションを保護することを通じて、プログラムやコンテンツ、ネットワークサービスの権利者の権利を保護することができる。より具体的には次の３項目が挙げられる。即ち、（１）プログラムに実装されたアルゴリズムの秘密保護、（２）プログラムに埋め込まれたトレードシークレット及びコンテンツの秘密または不正複製からの保護、及び（３）プログラム動作、処理結果の改変からの保護である。
【０００５】
プログラムに実装されたアルゴリズムの保護は、プログラムの権利者の保護に必要である。プログラムに埋め込まれたトレードシークレットの保護は、プログラムが扱う著作権が保護されたコンテンツの不正コピー防止に必要である。ネットワークサービスを利用するプログラムが、課金情報をサーバとやり取りするようなアプリケーションでは、課金情報の送信動作を正しく実行し、不正な改変を防止することが、サービスプロバイダの権利の保護に重要である。実際の例として、ＰＣでディジタルビデオディスク（ＤＶＤ）をコピーするプログラム（ＤｅＣＳＳ）が作られたことは良く知られている。
【０００６】
キャッシュメモリの一貫性制御プロトコルはさまざまな種類があるが、大きく分類すると、「ライト無効化（ライトインバリデート）」及び「ライト更新（ライトアップデート）」の２種類に分類できる（非特許文献２）。更に、データのライトバックに関して、実行中のプログラムとは独立に暗号鍵が選択されるキャッシュライトバックの方法は、本発明の発明者らにより、特許文献３において詳細に開示されている。
【０００７】
【特許文献１】
特開２００２−２４４５４３号公報
【０００８】
【特許文献２】
特開２００１−３１８７８７号公報
【０００９】
【特許文献３】
特開２００３−１０８４４２号公報
【００１０】
【非特許文献１】
リー他、“コピー及び耐タンパソフトウェアに対するアークテクチャ−支援”，コンピュータアーキテクチャーニュース、２８（５）、ｐ．１６８
【００１１】
【非特許文献２】
ジェイ・アーチバルト及びジェイ・ベア、“キャッシュ一貫性プロトコル：マルチプロセッサシミュレーションモデルに基づく評価”、エイ・シー・エム・トランザクション・オン・コンピュータシステムズ、１９８６年，第４巻、４号、ｐ．２７３−２９８
【００１２】
【発明が解決しようとする課題】
システムの性能向上の目的でマルチプロセッサ構成がしばしば用いられる。それぞれのプロセッサが独立にキャッシュを持つマルチプロセッサ構成のシステムでは、データキャッシュの一貫性を保証するためのキャッシュ一貫性制御プロトコルが使われる。キャッシュ一貫性制御プロトコルでは、個々のプロセッサの間で、データの同期を取るためのメッセージが交換され、データキャッシュの一貫性が保たれる。このとき、個々のプロセッサから見ると、外部からのメッセージによってローカルのキャッシュデータの入出力制御を行う必要がある。
【００１３】
一方、耐タンパプロセッサでは、キャッシュデータの入出力時に暗号処理を行う。しかし、耐タンパプロセッサにおけるキャッシュ入出力制御方式は、プロセッサコアからの要求に基づくものであり、外部バスからのメッセージによって、キャッシュ内容の入出力時における暗号処理を行う方法は知られていなかった。
【００１４】
即ち、システムに複数のプロセッサがあるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる制御方式は従来知られていなかった。
【００１５】
更に、ＤＭＡ（ダイレクトメモリアクセス）機能を持つシステムにおいても、キャッシュメモリとメインメモリの内容を一貫性を保つために、マルチプロセッサの場合と同様の、外部からのメッセージに基づくキャッシュ入出力制御が必要となる。システムにＤＭＡ機能があるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる制御方式は従来知られていなかった。
【００１６】
本発明の目的は、システムに複数のプロセッサがあるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる、プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法を提供することにある。更に、ＤＭＡ（ダイレクトメモリアクセス）  機能を持つマルチプロセッサシステムにおいて、キャッシュメモリとメインメモリの内容を一貫性を保つために、外部からのメッセージに基づくキャッシュ入出力制御を実行する、プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法を提供することにある。
【００１７】
【課題を解決するための手段】
本発明の第１の特徴は、（イ）プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、（ロ）プロセッサコアで実行されるプロセスにより、外部のメモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、（ハ）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部のメモリへ出力する第２の手段と、（ハ）外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とを備えたプロセッサであることを要旨とする。
【００１８】
本発明の第２の特徴は、（イ）プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、（ロ）プロセッサコアで実行されるプロセスにより、外部のメモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、（ハ）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第２の手段と、（二）外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第３の手段とを備えたプロセッサであることを要旨とする。
【００１９】
本発明の第３の特徴は、（イ）システムバスと、システムバスに接続されたメモリと、システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えた、プロセッサシステムであって、（ロ）各プロセッサは、更に、（ハ）プロセッサコアで実行されるプロセスにより、外部メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、（二）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第２の手段と、（ホ）メモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とをそれぞれ備えたプロセッサシステムであることを要旨とする。
【００２０】
本発明の第４の特徴は、（イ）システムバスと、システムバスに接続されたメモリと、システムバスに接続されるダイレクトメモリアクセスコントローラとシステムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、（ロ）プロセッサは、更に、（ハ）プロセッサコアで実行されるプロセスにより、メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、（二）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第２の手段と、（ホ）ダイレクトメモリアクセスコントローラによってメモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第３の手段とを備えたプロセッサシステムであることを要旨とする。
【００２１】
本発明の第５の特徴は、（イ）システムバスと、システムバスに接続されたメモリと、システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えたプロセッサシステムであって、（ロ）各プロセッサは、更に、（ハ）プロセッサコアで実行されるプロセスにより、メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第１の手段と、（二）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化してメモリへ出力する第２の手段と、（ホ）メモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第３の手段とをそれぞれ備えたプロセッサシステムであることを要旨とする。
【００２２】
本発明の第６の特徴は、（イ）システムバスと、システムバスに接続されたメモリと、システムバスに接続されるダイレクトメモリアクセスコントローラとシステムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号／復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、（ロ）プロセッサは、更に、（ハ）プロセッサコアで実行されるプロセスにより、外部メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第１の手段と、（二）プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第２の手段と、（ホ）ダイレクトメモリアクセスコントローラによってメモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第３の手段とを備えたプロセッサシステムであることを要旨とする。
【００２３】
本発明の第７の特徴は、（イ）実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、データを鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、（ロ）参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、（ハ）物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、（二）有効なキャッシュラインが存在する場合、有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、（ホ）更新が加えられている場合、有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、（へ）暗号鍵決定ステップで決定した暗号鍵識別子を有する暗号鍵により、有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、（ト）データ暗号化ステップ後、暗号化した有効なキャッシュラインの内容を物理アドレスに書き込む書込みステップとを備え、（チ）書込みステップは、プロセッサにおけるプログラム実行とは独立して処理するキャッシュ一貫性制御方法であることを要旨とする。
【００２４】
本発明の第８の特徴は、（イ）実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、データを鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、（ロ）参照先メモリの物理アドレスと更新データを指定したメモリ更新要求を、プロセッサの外部バスから受信するメモリ更新要求受信ステップと、（ハ）物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、（二）有効なキャッシュラインが存在する場合、有効なキャッシュラインからキャッシュラインの暗号鍵識別子を取得する暗号鍵決定ステップと、（ホ）暗号鍵決定ステップで決定した暗号鍵により、メモリ更新要求の更新データを復号するデータ暗号化ステップと、（へ）暗号化した更新データの内容をキャッシュラインに書き込む書込みステップとを備え、（ト）書込みステップは、プロセッサにおけるプログラム実行とは独立して処理するキャッシュ一貫性制御方法であることを要旨とする。
【００２５】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【００２６】
（キャッシュメモリの一貫性制御プロトコル）
「ライト無効化」とは、あるプロセッサがローカルキャッシュを更新するときは、他のプロセッサが持つ同一アドレスのキャッシュ内容を破棄させるプロトコルであり、「ライト更新」とは、あるプロセッサがローカルキャッシュを更新するときは、他のプロセッサが持つ同一メモリのキャッシュ内容を、強制的に更新してしまうものである。以下の説明においては、それぞれの更新プロトコルについて、暗号処理との関わりの部分に絞って説明する。また、キャッシュ制御方式はメモリの物理アドレスベースで行われる物理アドレスキャッシュ方式を前提とする。
【００２７】
本発明の第１の実施の形態においては、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止することのできるプロセッサについて説明する。本発明の第２の実施の形態においては、ライト無効化プロトコルに特徴を有するプロセッサシステム及びキャッシュ一貫性制御方法について説明する。本発明の第２の実施の形態の変形例においては、バスに接続される周辺装置がダイレクトメモリアクセス（ＤＭＡ）機能を有するプロセッサシステム及びキャッシュ一貫性制御方法についても説明する。本発明の第３の実施の形態においては、ライト更新プロトコルに特徴を有するプロセッサシステム及びキャッシュ一貫性制御方法について説明する。本発明の第３の実施の形態の変形例においては、バスに接続される周辺装置がダイレクトメモリアクセス（ＤＭＡ）機能を有するプロセッサシステム及びキャッシュ一貫性制御方法についても説明する。
【００２８】
まず、はじめに、本発明の比較例として、比較例１において、マルチパーティのアプリケーション保護環境の概要について説明し、更に比較例２において、一般的なマルチプロセッサシステムの概要を説明する。
【００２９】
（比較例１）
（マルチパーティのアプリケーション保護環境）
以下、オープンシステムにおけるアプリケーションプログラムの秘密保護機構を説明する。１つのシステム上で疑似並列的に複数のプログラムベンダのプログラムが、そのシステムの資源を管理するＯＳからも独立に秘密を保持することができることが特徴であり、以下そのような環境を「マルチパーティのアプリケーション保護環境」と呼ぶこととする。
【００３０】
マルチパーティのアプリケーション保護環境の概要は、図１１に示すように、ターゲットシステムユーザ１１１２を含むターゲットシステム環境１１０１と、それぞれのソフトウェアベンダ１１２１−１〜１１２１−ｎとから構成される。ターゲットシステム１１０２は、プロセッサＡ１１０３と外部メモリ１１０８と、ハードディスクのような２次記憶装置１１０７と、システムバス１１１１とから構成される。プロセッサＡ１１０３は、キャッシュメモリ１１０４，秘密鍵Ａ１１０５，保護機能部１１０６を含む。外部メモリ１１０８は、ソフトウェアベンダ１１２１−１〜１１２１−ｎが供給する第１のプログラム〜第ｎのプログラムの情報（実行コードとデータの両方を含む）格納部１１０９−１〜１１０９−ｎ−１を備える。また、プロセッサＡ１１０３の秘密鍵Ａ１１０５に対応する公開鍵Ａ１１１３が公開されている。
【００３１】
ソフトウェアベンダ１は、開発した第１の平文プログラム１１２２−１−１を保護するための暗号鍵（図示されていない）、第１のプログラム鍵１１２４−１−１を選び、第１の平文プログラム１１２２−１−１を所定の共通鍵アルゴリズムにより暗号化して、第１の暗号化済プログラム１１２３−１−１を作る。次に第１のプログラム鍵１１２４−１−１をそのプログラムの配布先システムのプロセッサ固有の公開鍵Ａ１１１３で暗号化して第１の配布鍵１１２５−１−１を作成する。
【００３２】
ターゲットシステム１１０２に対しては、図１１に示すように、第１の暗号化済プログラム１１２３−１−１及び第１の配布鍵１１２５−１−１が配布される。実行中の外部メモリ１１０８、２次記憶装置１１０７の内容はターゲットシステムユーザ１１１２が自由に読出し、書き換えることができる。これらの能力はプログラムの秘密保護を脅かすものであるが、マルチタスク環境でユーザの目的に応じてシステムの資源を適切に配分管理するためには不可欠の機能である。上記のような外部メモリ１１０８上で暗号化されたプログラムを「保護されたプログラム」または「保護プログラム」と呼ぶ。
【００３３】
これらの情報はターゲットシステム１１０２の２次記憶装置１１０７に蓄積され、実行時に外部メモリ１１０８上に確保された第１のプログラムの情報格納部１１０９−１−１に読み込まれる。プロセッサＡ１１０３は第１の配布鍵１１２５−１−１を読み込み、公開鍵Ａ１１１３に対応する秘密鍵Ａ１１０５によってこれを復号して第１のプログラム鍵１１２４−１−１を得る。復号処理は保護機能部１１０６で行われる。ここで、復号化されたプログラム鍵１１２４−１−１やキャッシュメモリ１１０４及び秘密鍵１１０５の内容は、プロセッサＡ１１０３の仕様に定められた操作を除いて外部から直接読み出すことはできないものとする。
【００３４】
次にプロセッサＡ１１０３は、第１のプログラム鍵１１２４−１−１によって第１のプログラムを復号してキャッシュメモリ１１０４に読み込む。復号とキャッシュメモリ１１０４への読み込みは所定のキャッシュアルゴリズムにより、プログラムの実行に従って、部分的に行われる。プログラム全体が一度にキャッシュメモリ１１０４に読み込まれるわけではない。キャッシュメモリ１１０４に読み込まれたプログラムは、既に復号されているので、もともと暗号化されていないプログラムと同様に実行できる。
【００３５】
ターゲットシステム環境１１０１における以上の処理で、第１のプログラム鍵１１２４−１−１や第１の平文プログラム１１２２−１−１を扱う部分は、プロセッサＡ１１０３の保護機能部１１０６によって行われ、ＯＳが介在する余地はない。
【００３６】
ここでプロセッサＡ１１０３は、ソフトウェアベンダの立場から見た時、必ずしも信頼できないターゲットシステムユーザ１１１２を含むターゲットシステム環境１１０１において、ソフトウェアベンダを正しく扱う、「信頼できる第３者」として機能するものである。
【００３７】
上記比較例１キャッシュ制御方式により、システムのプロセッサが単一、即ち「ユニプロセッサ」の時、キャッシュ上データの安全性を保証することができる。
【００３８】
また、複数のプロセスが擬似並列的に切り替えながら実行されるときにも、キャッシュ上に残されたデータについて、他のプロセスからの不正な参照は禁止される。内容に変更があったキャッシュラインの外部メモリ１１０８への書き戻しでも、実行中のプロセス（カレントＥＣＵ）に関わらず、キャッシュラインが読み込まれた時に使用した暗号鍵によって暗号化して正しく書き戻すことができる。
【００３９】
（比較例２）
（マルチプロセッサシステム）
マルチプロセッサシステムの一例は、図１２に示すように、共通のシステムバスライン２０５上に接続された複数のプロセッサ２０１−１〜２０１−ｎと、共通のシステムバスライン２０５上に接続された複数のＤＭＡコントローラ２０６−１〜２０６−ｎと、共通のシステムバスライン２０５上に接続されたメモリインタフェース２０７と、メモリインタフェース２０７を介して共通のシステムバスライン２０５に接続された外部メモリ２０８とから構成される。図１２に示されるように、プロセッサ２０１−１の内部には、プロセッサコア２０２−１と、キャッシュメモリ２０３−１と、バスインタフェースユニット（ＢＩＵ）２０４−１が含まれている。同様に、プロセッサ２０１−ｎの内部には、プロセッサコア２０２−ｎと、キャッシュメモリ２０３−ｎと、ＢＩＵ２０４−ｎが含まれている。図１２の比較例２におけるマルチプロセッサシステムにおいては、後述する本発明の実施の形態に係る耐タンパマルチプロセッサシステムと異なり、ＢＩＵ２０４−１〜２０４−ｎに対して暗号機能を持たせることは、想定されていない。
【００４０】
（第１の実施の形態）
（耐タンパプロセッサの基本構成）
本発明の第１の実施の形態に係るプロセッサは、図１に基本構成を示すように、耐タンパプロセッサ１０１として構成され、プロセッサコア１１１と、キャッシュコントローラ１２１と、ＢＩＵ１３１と、ＥＣＵ状態管理機能部１４１と、２次キャッシュ１５１と、公開鍵復号機能部１６１とから構成される。キャッシュコントローラ１２１と、ＢＩＵ１３１と、２次キャッシュ１５１と、公開鍵復号機能部１６１とは共通バス１５０を介して接続され、更にＢＩＵ１３１はシステムバスライン３０５を介して外部メモリ１０２に接続されている。図１において、プロセッサコア１１１は、実行中のＥＣＵ・ＩＤを保持するカレントタスクレジスタ１１２を含む。キャッシュコントローラ１２１は、内部に命令キャッシュ（Ｉキャッシュ）１２２とデータキャッシュ（Ｄキャッシュ）１２４をそれぞれ持つ。命令キャッシュ１２２、データキャッシュ１２４にはそれぞれメモリ１２３、１２５が格納されており、各メモリ１２３及び１２５はキャッシュライン１２３−１〜１２３−ｎ及び１２５−１〜１２５−ｎで構成されている。各キャッシュラインはキャッシュタグフィールドとデータフィールドからなる。
【００４１】
ＢＩＵ１３１内には、鍵テーブル１３２と、セレクタ１３３と、暗号／復号処理部１３４が備えられている。鍵テーブル１３２は、１３２−０〜１３２−ｍのｍ＋１個のエントリを持つ。各エントリはＥＣＵ対応に設定されており、それぞれのエントリにプログラム暗号鍵（以下プログラム鍵）Ｋｘとデータ暗号鍵（以下データ鍵）Ｋｄの２つのフィールドがある。
【００４２】
データキャッシュ１２４内のメモリ１２５の詳細は、図２に示すように、大きくタグとコンテンツに分けられる、キャッシュライン１２５−１〜１２５−ｎによって表される。キャッシュタグフィールドには制御ビットフィールド、ＥＣＵ・ＩＤフィールド１２５−１−ｔ，アドレスフィールド１２５−１−Ａが含まれる。キャッシュライン１２５−１について説明すると、制御ビットフィールドは、キャッシュライン１２５−１の有効／無効（バリッド／インバリッド）を示す有効フィールド１２５−１−ｖと、キャッシュ内容の外部メモリ１０２に書き込まれていない更新の有無（ダーティ／クリーン）を示すダーティフィールド１２５−１−ｄと、キャッシュライン１２５−１の他のプロセッサと共有状態の有無（シェア／エクスクルーシブ）を示す共有フィールド１２５−１−ｓとを含む。キャッシュ内容は１２５−１−Ｃで表されている。
【００４３】
耐タンパプロセッサ１０１は、マルチタスクＯＳの管理下で、プロセッサハードウェアにより、マルチベンダのプログラムの秘密を保護する。ＯＳが信用できないことを前提として、耐タンパプロセッサ１０１は、プロセッサパッケージ単体のハードウェア機能で完結する、プログラムの秘密保護機能を提供する。
【００４４】
プログラムは実行時にはプロセスとしてＯＳに管理される。耐タンパプロセッサハードウェアにおけるプログラムの実行は、通常のＯＳの場合と同様プロセスを単位として行なわれる。大きな違いは、従来ＯＳが管理していたプロセス情報の一部を、プロセッサハードウェアが直接管理すること及び、プログラム自身の暗号処理がハードウェアによって処理されることである。
【００４５】
正しいプロセス実行においては、ＯＳとプロセッサによるプロセス情報の管理は一致して行なわれるはずであるが、悪意のあるＯＳ、或いはバグのあるＯＳを前提とした場合、ＯＳとプロセッサが管理するプロセス情報の間に食い違いが生じることを前提としなければならない。以下の説明では、ＯＳによるプロセス情報の管理とプロセッサによる管理を明確に区別して説明するため、以下の説明では耐タンパプロセッサハードウェアが管理するプロセスを、「実行単位（ＥＣＵ）」と呼ぶ。
【００４６】
耐タンパプロセッサ１０１はマルチタスク環境をサポートするため、複数のＥＣＵを擬似並行的に実行できる。耐タンパプロセッサ１０１上で、ＥＣＵはＥＣＵ・ＩＤにより一意に識別される。
【００４７】
以下、あるプログラムＰをプロセスｐとして実行し、プロセスｐにはＥＣＵ・ＩＤ・＃１を割り当てて実行する例を図１に従って説明する。
【００４８】
（暗号化プロセスの実行）
プログラムは外部メモリ１０２上では所定の暗号鍵Ｋｘ−Ｐで暗号化されている。この暗号鍵Ｋｘ−Ｐは、プログラムの供給者がプログラムごとに個別に設定できる。プログラムをＥＣＵ（プロセス）として実行するときは、ＥＣＵ  ＩＤ及びＩＤに対応する鍵テーブル１３２のエントリを一つ割り当てて、管理する。なお、以下の説明では、共通鍵アルゴリズムの暗号化／復号化においては、そこで使われる鍵は暗号・復号どちらの場合にも「暗号鍵」という言葉で表す。
【００４９】
実行前には、ＥＣＵ状態管理機能部１４１、公開鍵復号機能部１６１により、プロセッサ外部からプログラムの暗号鍵Ｋｘ−Ｐが読み込まれ、ＥＣＵ  ＩＤｘに対応する鍵テーブル１３２のエントリ１３２−１−ｘ内に暗号鍵を書き込む。
【００５０】
プロセスｐ、即ち、ＥＣＵ・ＩＤ・＃１のＥＣＵの実行を開始する時、ＯＳはＥＣＵ・ＩＤ・＃１を指定して特殊命令である実行開始命令を発行する。すると、プロセッサコア１１１のカレントタスクレジスタ１１２に＃１が書き込まれ、以後、ＥＣＵ・＃１のプログラム実行では、外部メモリ１０２に格納されている暗号化された命令ではなく、命令の読込み時に、このカレントタスクレジスタ１１２で指定されるエントリ１３２−１−ｘ内に格納される鍵Ｋ１ｘで復号化された命令列がキャッシュメモリに格納され、実行される。
【００５１】
なお、ＯＳを含む非暗号化プロセスには、ＥＣＵ・ＩＤ・＃０が割り当てられており、カレントタスクレジスタ１１２の値が＃０の場合は、以下の暗号化処理は行なわれない。プロセスｐの開始前、ＯＳが実行されている状態ではカレントタスクＩＤは＃０となる。
【００５２】
暗号化されたプログラムの実行で、ＥＣＵ・＃１の実行による命令フェッチでアドレスＸのメモリ内容が読みこまれたとき、ＢＩＵ１３１はアドレスＸに相当する暗号化された命令列のメモリ内容を読み出す。そして、実行中のＥＣＵ・ＩＤ・＃０で指定され、エントリ１３２−０−ｘに格納されるプログラムの復号鍵Ｋ０によって復号し、キャッシュライン１２３−１に格納する。プロセッサコア１１１はキャッシュライン１２３−１から復号された命令列を取り込み順次実行する。
【００５３】
（割り込み／再開、被保護ラインへの他タスク参照禁止）
割り込みによりプロセス実行が中断された場合、実行中ＥＣＵのレジスタ情報は暗号化されてメモリに保存された後に、所定の割り込みハンドラへ制御が移される。割り込みハンドラへの制御が移るときには、カレントタスクレジスタ１１２値は、非暗号化を表す値＃０に戻される。
【００５４】
ＥＣＵ・＃１の実行が中断されている間も復号化された命令列はキャッシュライン１２３−１に保持されている。しかしながら、ＯＳ又は他のプロセスが命令フェッチにおいてこのキャッシュライン１２３−１を参照してもキャッシュヒットの判定において、キャッシュタグのＥＣＵ・ＩＤ値（＃１）と実行中のＥＣＵ・ＩＤ値（≠＃１）が一致しないので、ＯＳや他のプロセスが復号化済みのキャッシュラインの命令を実行することはできず、ＥＣＵ・＃１と他のＥＣＵとは隔離される。
【００５５】
割り込み処理が完了し、再度プロセスｐがスケジュールされ、ディスパッチが行なわれるとき、ＥＣＵ・＃１の実行再開命令が発行される。実行再開命令の発行によりＥＣＵ・ＩＤが＃１に再設定され、保存されたコンテキスト情報がレジスタに読み込まれてプログラムカウンタが復帰され、制御が実行中断前のアドレスに移り、プロセスが再開される。
【００５６】
（データ暗号化）
耐タンパプロセッサ１０１はプログラムだけでなくデータも暗号化処理できる。データの場合には読出し時の復号だけでなく、書込み時の暗号化処理があるところが命令の場合との違いである。以下の説明ではデータ処理に使われる鍵をデータ鍵と呼ぶ。ＥＣＵ・＃１のデータ鍵は、エントリ１３２−１−ｄに格納されている。
【００５７】
データ鍵の値は命令鍵の初期化と同様に、プロセスの開始時に設定する方法と、プロセスが実行中に設定する方法がある。ここでは命令鍵の初期化時に値が設定されているものとする。
【００５８】
図３は、ユニプロセッサのキャッシュアクセスにおけるシーケンスを示す。以下、データ処理について、図３を使用して説明する。
【００５９】
（ユニプロセッサのキャッシュアクセスシーケンス）
（ａ）プロセッサコア１１１はキャッシュメモリにアドレスＸ２のワード読出し要求を発行する（シーケンスＳ１００１）。
【００６０】
（ｂ）データキャッシュ１２４はアドレスＸ２のキャッシュ存在判定を行う。ここではアドレスＸ２の内容はキャッシュされていないので、キャッシュメモリはＢＩＵ１３１を通じて外部メモリ１０２へアドレスＸ２を含むアドレスＸ〜アドレスＸ＋３１の範囲のメモリ読出し要求を発行する（シーケンスＳ１００２）。
【００６１】
（ｃ）外部メモリ１０２からのＥＣＵ・＃１のデータの読み込みは、命令と同様にキャッシュライン単位で行なわれる。コアからアドレスＸのメモリに対するデータ読出し要求があったときには、キャッシュからＢＩＵ１３１へカレントＥＣＵ・ＩＤ・＃１が伝達される。外部メモリ１０２から読み出されたアドレスＸに対応するキャッシュデータＣ（Ｘ）は、カレントタスクレジスタ１１２で指定されるエントリ１３２−１−ｄに格納されるデータ鍵Ｋ１ｄにより復号化されて結果がキャッシュライン１２５−ｘに格納され、タグにＩＤ・＃１が書き込まれる（シーケンスＳ１００３）。
【００６２】
（ｄ）コアはキャッシュラインから要求したアドレスのメモリ内容であるキャッシュデータＣ（Ｘ２）＝ａを読み込み、キャッシュ内容１２５−ｘ−Ｃに格納する（シーケンスＳ１００４）。
【００６３】
（ｅ）外部メモリ１０２から内容が読み込んだ状態では、当該キャッシュラインのタグの状態ビット１２５−ｘ−ｄは“クリーン”の状態になる。データの場合には書込みがある。コアからデータの書込みがあった場合、対象アドレスがキャッシュにヒットすればキャッシュにデータを書き込む（シーケンスＳ１００５）。ここではライトバックキャッシュアルゴリズムが採用されているので変更されたデータはすぐには外部メモリ１０２に書き戻されない。書込みがあったキャッシュラインの状態ビット１２５−ｘ−ｄは“ダーティ”状態になる。
【００６４】
（データのライトバック）
（ｆ）キャッシュラインがフラッシュされ、書き戻される時、暗号化が行なわれる。実行中ＥＣＵ・ＩＤで指定されるデータ鍵で暗号化されて外部メモリ１０２の所定アドレスに書き込まれる。例においては、アドレスＸの内容が保持されているキャッシュライン１２５−ｘについて競合する、アドレスＸ＋ｍ＊３２の読込み要求がコアから発行されると（シーケンスＳ１００７）、キャッシュライン１２５−ｘの書き戻しが始まる。データの書込みに先立って、データの暗号化が行われる。
【００６５】
（ｇ）キャッシュコントローラ１２１により、キャッシュラインを読み込んだときのＥＣＵ・ＩＤを格納するキャッシュタグ１２５−ｘ−ｔが参照され、ＥＣＵ・ＩＤ・１が取り出される。そして、ＢＩＵ１３１において鍵テーブル１３２のデータ鍵でＥＣＵ・ＩＤ・１に対応するエントリ１３２−１−ｄに格納されたデータ鍵Ｋ１ｄの値が読み出され、データ鍵Ｋ１ｄの値によりキャッシュデータが暗号化される。暗号化されたデータは外部メモリ１０２のアドレスＸに書き戻される（シーケンスＳ１００８）。
【００６６】
（ｈ）この時点ではキャッシュラインのＥＣＵ・ＩＤとカレントＥＣＵ・ＩＤは異なる場合がある。シーケンス１００６においてカレントＥＣＵ・ＩＤが＃０に変更されているため、キャッシュライン書き戻しの際の暗号鍵指定に使われるＥＣＵ・ＩＤとカレントＥＣＵ・ＩＤとは一致しない。書き戻しの際の暗号鍵指定に使われるのはキャッシュタグに格納されたキャッシュラインを読み込んだときのＥＣＵ・ＩＤである。（ｉ）さて、書き換え対象のラインに残されていたデータの書き戻しが終わると、中断していたアドレスＸ＋ｍ＊３２のメモリ読出しが再開される（シーケンスＳ１００９）。
【００６７】
（ｊ）このメモリ参照ではＥＣＵ・ＩＤが０なので、メモリ読み込みにあたって復号化処理は行われず、外部メモリ１０２から読み込まれた値がそのままキャッシュメモリに格納され、キャッシュラインのフィルが完了する（シーケンスＳ１０１０）。
【００６８】
（ｋ）そして、キャッシュラインからコアが要求したアドレスのワードが読み込まれる（シーケンスＳ１０１１）。
【００６９】
（キャッシュ上データに対するプロセス間のアクセス競合制御）
上記キャッシュラインに復号化状態のデータが存在する時、命令の場合と同様、他のプロセスによってアクセスされる場合がありうる。データの場合も命令と同様に、アクセス対象のキャッシュラインのタグに記録されたＥＣＵ・ＩＤとカレントＥＣＵ・ＩＤが比較され、一致しない場合は、キャッシュラインはフラッシュされるため、プロセスｐが読み込んだ平文データは他のプロセスから隔離保護される。
【００７０】
上記のメカニズムにより、耐タンパプロセッサでは、悪意のあるＯＳの管理下でも、異なるベンダが供給するソフトウェア毎の情報の隔離保護が保証される。
【００７１】
（第２の実施の形態）
（プロセッサシステム）
本発明の第２の実施の形態に係るプロセッサシステムは、図４に示すように、システムバスライン３０５と、システムバスライン３０５に接続されたメモリインタフェース３０７と、メモリインタフェース３０７を介してシステムバスライン３０５に接続された外部メモリ３０８と、複数のプロセッサ３０１−１〜３０１−ｎと、システムバスライン３０５に接続されたＤＭＡコントローラ３０６−１〜３０６−ｍとを備える。耐タンパプロセッサのマルチプロセッサシステムとして構成され、個々のプロセッサの内部には、プロセッサコア３０２−１〜３０２−ｎと、キャッシュ３０３−１〜３０３−ｎと、ＢＩＵ３０４−１〜３０４−ｎが含まれる。図４においては、３０１，３０２，３０３，３０４はそれぞれ図１における１０１，１１１，１２１，１３１に対応する。
【００７２】
比較例２として図１２に示したマルチプロセッサシステムと異なる点は、プロセッサ３０１−１〜３０１−ｎが、図１において詳細に説明したような耐タンパプロセッサ１０１と同等の構成を備え、ＢＩＵ３０４−１〜３０４−ｎに暗号機能が含まれている点である。
【００７３】
（ライト無効化プロトコル）
（マルチプロセッサのライト無効化プロトコル）
本発明の第２の実施の形態においては、ライト無効化プロトコルにおけるキャッシュ暗号処理について、耐タンパマルチプロセッサシステムの場合と更にＤＭＡコントローラを備える場合について、図５のフローチャート及び、図６及び図７のライト無効化プロトコルのメッセージシーケンス図を参照しながら説明する。
【００７４】
図６は、ライト無効化プロトコルを適用したマルチプロセッサシステムにおける、プロセッサ間のキャッシュ一貫性制御のメッセージシーケンス図である。
【００７５】
暗号機能がキャッシュ一貫性制御に影響するのは、プロセッサが一貫性制御メッセージを受信したときに、キャッシュ内容の書出しまたは更新が行われる場合に限られる。そのため、以下のシーケンス図においては、キャッシュ一貫制御プロトコルの中で、キャッシュコンテンツの書出しまたは更新がある場合と、それに関連した動作のみに記述を限定している。上述のように、キャッシュ一貫性制御プロトコルにはさまざまな種類があるが、基本的にはこれらの動作は全てのプロトコルで共通である。
【００７６】
ここでは、バスに接続された第１のプロセッサ３０１−１と第２のプロセッサ３０１−２が独立に動作しながら、キャッシュ一貫性プロトコルを実行することにより、データの一貫性を保つ例を示す。尚、ここではプロセッサ間で実行中のＥＣＵや鍵テーブルの内容にはなんら前提を設けない。即ち、第１のプロセッサ３０１−１と第２のプロセッサ３０１−２の間では実行しているＥＣＵ・ＩＤは違っていてもよいし（もちろん一致していてもよい）、同一のＥＣＵ・ＩＤに対応する鍵テーブルの内容は、異なっていてもよい（こちらも一致していてもよい）。即ち、第１のプロセッサ３０１−１と第２のプロセッサ３０１−２はプロセス制御（ＥＣＵ制御）においては独立して動作することがここでの前提である。
【００７７】
また、説明を簡単にするためプロセッサの個数を２個に限定したが、本発明のキャッシュ一貫性制御方式は３個以上のプロセッサが接続される場合にも適用可能である。
【００７８】
（動作シーケンス）
以下では説明の便宜のため、第１のプロセッサ３０１−１においては、実行中プロセスをｐ１、カレントＥＣＵ・ＩＤ＝＃１データ鍵をＫｄ、第２のプロセッサ３０１−２については、実行中プロセスをｐ２、カレントＥＣＵ・ＩＤ＝＃２、データ鍵の値を第１のプロセッサ３０１−１と共通のＫｄとする。データ鍵の値を共通としたのは説明を簡略化するためで、上述のように鍵値は一致していなくてもかまわない。キャッシュメモリのライン長は３２バイトとする。
【００７９】
本プロトコルでは、キャッシュラインの制御ビットのうち有効／無効（バリッド／インバリッド）、更新（ダーティ／クリーン）の２ビットが使われる。（インバリッド、＊）、（バリッド、クリーン）、（バリッド、ダーティ）の３状態が識別され、使われる。
【００８０】
（第１のプロセッサの読出し）
図６において、縦軸は下方向に時間経過を表している。まず、第１のプロセッサ３０１−１のプロセッサコア３０２−１は、プロセスｐ１を実行しており、アドレスＸ２を読み込む命令を発行する（シーケンスＳ４０１）。アドレスＸ２は、アドレスＸから始まる３２バイトの領域に含まれる。キャッシュ３０３−１ではキャッシュのヒット判定により、アドレスＸ２はミスヒットと判定され、ＢＩＵ・３０４−１を通じて外部メモリ１０２にアドレスＸから始まるキャッシュライン長３２バイトのデータの読出し要求シーケンスＳ４０２を発行する。同時に、アドレスＸへのメモリ読出し通知シーケンスＳ４０３をバスにブロードキャストする。
【００８１】
メモリ読出し通知を受信した第２のプロセッサ３０１−２では、読出し要求アドレスＸがキャッシュ３０３−２に存在するかどうかを調べる。ここでは対象アドレスがキャッシュメモリに存在しないので何もしない。
【００８２】
一方、外部メモリ３０８への読出し要求の結果が返され（シーケンスＳ４０４）、ＢＩＵ・３０４−１でデータの復号が行われる。第１のプロセッサ３０１−１の鍵テーブルで、カレントＥＣＵ・ＩＤ＃１に対応するデータ鍵Ｋｄが取り出され、読み込まれたデータＥ（Ｘ）の復号結果のキャッシュデータＣ（Ｘ）がキャッシュラインに格納される。以下第１のプロセッサ３０１−１でキャッシュデータＣ（Ｘ）が格納されたキャッシュラインを１２５−ｘ−１とする。キャッシュライン１２５−ｘ−１は（バリッド、クリーン）の状態になる。キャッシュラインからは、コアが要求したＸ２に対応するキャッシュデータＣ（Ｘ２）が読みされ、プロセッサコア３０２−１に送られる。
【００８３】
（第２のプロセッサの読出し）
その後、第２のプロセッサ３０１−２からも同様にアドレスＸ２に対する読出し要求が発行される（シーケンスＳ４０６）。同様に第２のプロセッサ３０１−２からブロードキャストされた読出し通知（シーケンスＳ４０８）が第１のプロセッサ３０１−１によって受信される。第１のプロセッサ３０１−１はまず読出し対象アドレスＸについてヒット判定をする。ここではキャッシュライン１２５−ｘ−１がアドレスＸにヒットするので、次にキャッシュライン１２５−ｘ−１の状態がチェックされる。キャッシュライン１２５−ｘ−１の状態は（バリッド、クリーン）で書き戻しの必要はないので、ここでは第１のプロセッサ３０１−１は何もしない。
【００８４】
一方、第２のプロセッサ３０１−２は外部メモリ３０８へのメモリ読出し要求を発行している（シーケンスＳ４０７）。外部メモリ３０８への読出し要求の結果が返され（シーケンスＳ４０４）、ＢＩＵ・３０４−２でデータの復号が行われる。第２のプロセッサ３０１−２の鍵テーブルで、カレントＥＣＵ・ＩＤ・＃２に対応するデータ鍵Ｋｄが取り出され、読み込まれたデータＥ（Ｘ）の復号結果のキャッシュデータＣ（Ｘ）がキャッシュライン１２５−ｘ−２に格納され、（バリッド、クリーン）の状態になる。キャッシュラインからは、コアが要求したＸ２応するキャッシュデータＣ（Ｘ２）が読みされ、プロセッサコア３０２−２に送られて読出し処理が完了する。これでアドレスＸのデータについて、第１のプロセッサ３０１−１と第２のプロセッサ３０１−２がそれぞれローカルなキャッシュコピーを持つことになる。
【００８５】
（第２のプロセッサの書込み）
次に第１のプロセッサ３０１−１のコアがアドレスＸ２に値ｂを書込む命令を実行し、キャッシュに書込み要求が送られる（シーケンスＳ４１１）。この要求は第１のプロセッサ３０１−１の内部ではキャッシュヒットとして扱われ、キャッシュの内容が更新され、キャッシュラインが（バリッド、ダーティ）とされて完了する。他のプロセッサに対しては、他プロセッサが持つアドレスＸ２を含むアドレスＸのキャッシュ無効化要求シーケンスＳ４１２をブロードキャストする。
【００８６】
無効化要求シーケンスＳ４１２を受信した第２のプロセッサ３０１−２はキャッシュライン１２５−ｘ−２の状態を（インバリッド、＊）として無効化する。この無効化処理によって、第１のプロセッサ３０１−１及び第２のプロセッサ３０１−２がローカルのキャッシュコピーに変更を加えても参照するデータ内容の一貫性が保たれる。
【００８７】
（第２のプロセッサによる読出し要求と第１のプロセッサのデータ書出し）
次に第１のプロセッサ３０１−１の保持する更新された、「ダーティな」ローカルキャッシュが、第２のプロセッサ３０１−２のメモリ参照要求によって、暗号化されて外部メモリ３０８に書き出される、本発明の第２の実施の形態に係るプロセッサシステムの動作手順を、図５のフローチャートを参照しながら説明する。
【００８８】
次に第２のプロセッサ３０１−２がアドレスＸ２の内容を読出す命令を発行すると、読出し要求がキャッシュ３０３−２に送られる（シーケンスＳ４１３）。要求はミスヒットとなるので、読出し通知４１５とメモリ読出し要求シーケンスＳ４１４が発行される。
【００８９】
（ａ）通知４１５を受信した第１のプロセッサ３０１−１は、以下、図５のフローチャートに従って、変更キャッシュラインの更新処理をはじめる（ステップ８０１）。
【００９０】
（ｂ）第１のプロセッサ３０１−１は、対象アドレスＸがキャッシュヒットするか判定する（ステップ８０２）。
【００９１】
（ｃ）ここでは対象アドレスＸがキャッシュにヒットするので、次に対象キャッシュラインにローカルな変更があるかを判定する（ステップ８０３）。
【００９２】
（ｄ）ローカルな変更がある場合、システムバスライン３０５にメモリ参照待ち要求を送信し（ステップ８０４）、対象キャッシュラインの書出し処理を行う。メモリ参照待ち要求を受信した第２のプロセッサ３０１−２はメモリ参照を中断して待ち状態に入る。
【００９３】
（ｅ）書出し処理では、ＢＩＵがキャッシュコントローラから対象アドレスＸに対応するキャッシュデータＣ’（Ｘ）及びタグのＥＣＵ・ＩＤを取得し、ＥＣＵ・ＩＤに対応する鍵テーブルのデータ鍵エントリからデータ鍵Ｋｄの値を読出す。そして、Ｃ’（Ｘ）をＫｄにより暗号化し（ステップ８０５）、暗号化結果Ｅ’（Ｘ）を外部メモリ３０８に書き出す（ステップ８０６）。
【００９４】
（ｆ）外部メモリ３０８への書出しが完了すると、第１のプロセッサ３０１−１はシステムバスライン３０５にメモリ参照待ち解除通知を送信する（ステップ８０７）。これで第１のプロセッサ３０１−１の処理は完了する。
【００９５】
上記の例では、鍵テーブル１３２に示すように、データキャッシュ用の暗号鍵は、各ＥＣＵに１つしかないため、ＥＣＵ・ＩＤ（Ｕ０〜Ｕｍ）が決まれば、暗号化に使うデータ鍵（Ｋ１ｄ〜Ｋｍｄ）は一意に決定される。従って、更新対象キャッシュラインに格納されたＥＣＵ・ＩＤがデータキャッシュからＢＩＵ１３１へと通知されれば、ＢＩＵ１３１は暗号鍵を決定して更新データを暗号化して、外部メモリ１０２へ書き出すことができる。
【００９６】
１つのＥＣＵが複数のデータ鍵を使えるような構成例も考えられる。この場合には、鍵テーブル１３２を各ＥＣＵ対応に複数の鍵を保持できるように拡張し、鍵テーブル１３２上で鍵は鍵番号で識別する。同様に、各キャッシュラインにはＥＣＵ・ＩＤ及び複数の鍵を識別する鍵番号が格納されており、更新キャッシュライン書き出しの際にはＥＣＵ・ＩＤと鍵番号がデータキャッシュからＢＩＵへ１３１通知される。データキャッシュ１２４だけでなく、命令キャッシュ１２２についても更新がされる場合や、複数のデータキャッシュ１２４を持つアーキテクチャでは、命令キャッシュ１２２とデータキャッシュ１２４を識別するキャッシュ識別信号が各キャッシュからＢＩＵ１３１へ送られる。本発明ではこれらＥＣＵ・ＩＤ、鍵番号、キャッシュ識別信号を総称して「暗号鍵識別子」と呼ぶ。
【００９７】
メモリ参照待ち解除通知を受信した第２のプロセッサ３０１−２は、中断していたメモリ参照を再開する。メモリ参照通知シーケンスＳ４２０とメモリ読出し要求シーケンスＳ４１９をそれぞれ発行し、読出し結果４２１をキャッシュライン１２５−ｘ−２に格納する。プロセッサコアはＸ２の値ｂを読出してアドレスＸ２の参照を完了する（シーケンスＳ４２２）。
【００９８】
このメカニズムによって、第１のプロセッサ３０１−１によってローカルに更新されたアドレスＸ２の値が、第２のプロセッサ３０１−２による参照でも正しく読み出すことができる。
【００９９】
ここで、第２のプロセッサ３０１−２による参照によって、第１のプロセッサ３０１−１のローカルキャッシュがメモリに書き込まれるとき、第１のプロセッサ３０１−１でのプログラム実行はまったく関与しないことを特記しておく。本発明の第２の実施の形態に係るプロセッサシステムによれば、第１のプロセッサ３０１−１は第２のプロセッサ３０１−２からのメモリ読出し通知を受信してから、ＢＩＵ及びキャッシュメモリのみで書き戻しの必要の有無と、正しい鍵値による暗号化を実行してデータの外部メモリ書戻しを実行できる。
【０１００】
本発明によれば、マルチプロセッサを持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【０１０１】
また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス（ＥＣＵ）や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【０１０２】
（第２の実施の形態の変形例）
（ＤＭＡ転送のライト無効化プロトコル適用）
次に、本発明の第２の実施の形態の変形例に係るプロセッサシステムとして、ＤＭＡ転送がある場合のライト無効化プロトコルを図７を参照しながら説明する。ＤＭＡ転送の場合でも、プロセッサ側の動作は、プロセッサ間の場合と同じである。以下の説明では、ＤＭＡコントローラ、プロセッサがそれぞれ１個だけの場合が説明されているが、図４の構成にあるように、ＤＭＡコントローラ３０６−１〜３０６−ｍ、プロセッサ３０１−１〜３−１−ｎが任意の個数の場合にも、本発明の第２の実施の形態の変形例に係るプロセッサシステムは適用できる。
【０１０３】
（第１のプロセッサの読出し）
まず、第１のプロセッサ３０１−１のプロセッサコア３０２−１は、プロセスｐ１を実行しており、アドレスＸ２を読み込む命令を発行する（シーケンスＳ６０１）。キャッシュ３０３−１ではキャッシュのヒット判定により、アドレスＸ２はミスヒットと判定され、ＢＩＵ・３０４−１を通じて外部メモリ３０８にアドレスＸから始まるキャッシュライン長３２バイトのデータの読出し要求シーケンスＳ６０２を発行する。同時に、アドレスＸへのメモリ読出し通知シーケンスＳ６０３をバスにブロードキャストする。ＤＭＡコントローラ３０６−１〜３０６−ｍは内部にローカルキャッシュを持たないので、システムバスライン３０５からメモリ読出し通知は無視する。
【０１０４】
外部メモリ３０８への読出し要求の結果が返され（シーケンスＳ６０４）、ＢＩＵ  ３０４−１でデータの復号が行われる。第１のプロセッサ３０１−１の鍵テーブルで、カレントＥＣＵ・ＩＤ・＃１に対応するデータ鍵Ｋｄが取り出され、読み込まれたデータＥ（Ｘ）の復号結果のキャッシュデータＣ（Ｘ）がキャッシュラインに格納される。以下第１のプロセッサ３０１−１でキャッシュデータＣ（Ｘ）が格納されたキャッシュラインを１２５−ｘ−１とする。キャッシュライン１２５−ｘ−１は（バリッド、クリーン）の状態になる。キャッシュラインからは、コアが要求したＸ２に対応するキャッシュデータＣ（Ｘ２）が読み出され、プロセッサコア３０２−１に送られる（シーケンスＳ６０５）。
【０１０５】
（第１のプロセッサによるキャッシュへの書込み）
次に第１のプロセッサ３０１−１のコアがアドレスＸ２に値ｂを書込む命令を実行し、キャッシュ３０３−１に書込み要求が送られる（シーケンスＳ６０６）。この要求は第１のプロセッサ３０１−１の内部ではキャッシュヒットとして扱われ、キャッシュ３０３−１の内容が更新され、キャッシュライン１２５−ｘ−１が（バリッド、ダーティ）とされて完了する。他のプロセッサに対しては、他のプロセッサが持つアドレスＸ２を含むアドレスＸのキャッシュ無効化要求シーケンスＳ６０７をブロードキャストする。
【０１０６】
（ＤＭＡ転送（読み込み））
次に第１のプロセッサ３０１−１の保持する更新された「ダーティな」ローカルキャッシュが、ＤＭＡコントローラ３０６−１のメモリ参照要求によって、暗号化されて外部メモリ３０８に書き出される、本発明の第２の実施の形態の変形例に係るプロセッサシステムの動作手順を説明する。ＤＭＡコントローラ３０６−１はアドレスＸからＺへキャッシュ１ラインに相当する３２バイトのデータ転送を開始する。
【０１０７】
はじめにＤＭＡコントローラ３０６−１はアドレスＸに対するメモリ読出し通知６０９及びメモリ読出し要求シーケンスＳ６０８を発行する。プロセッサ間のキャッシュ一貫性制御の場合と同様、メモリ読出し通知シーケンスＳ６０９を受信した第１のプロセッサ３０１−１はアドレスＸに対する変更されたキャッシュ３０３−１を持っているので、メモリ読込み待ち要求をブロードキャストする（シーケンスＳ６１０）。ＤＭＡコントローラ３０６−１によるメモリ読出し要求シーケンスＳ６０８はいったん中断される。
【０１０８】
第１のプロセッサ３０１−１は、図５のフローチャートに示す手順に従ってアドレスＸに対応するキャッシュ内容１２５−ｘ−Ｃを暗号化したうえで、外部メモリ３０８に書き込むためにメモリ書込み要求シーケンスＳ６１１を外部メモリ３０８に発行する。
【０１０９】
プロセッサは、書込みが完了すると、書込み完了通知シーケンスＳ６１２をブロードキャストする。書込み完了通知シーケンスＳ６１２を受信したＤＭＡコントローラはメモリ読出しを再開し、メモリ読出し通知シーケンスＳ６１４、メモリ読出し要求シーケンスＳ６１３を発行し、メモリ読出し結果シーケンスＳ６１５を受信する。ここではＤＭＡコントローラ３０６−１は暗号機能を持たないので、ＤＭＡコントローラ３０６−１は外部メモリ３０８から読出した内容をそのまま書込み先のアドレスＺに転送する。アドレスＺへの書込みについても、書込み通知６１７がブロードキャストされるが、第１のプロセッサ３０１−１はアドレスＺに対応するローカルキャッシュを持たないので特に処理はしない。
【０１１０】
このように、プロセッサ側についてはプロセッサ間のキャッシュ一貫性制御プロトコルと同じ制御手順を適用することにより、ＤＭＡコントローラ３０６−１が外部メモリ３０８を参照する場合にもデータの一貫性は保証される。プロセッサが変更したローカルキャッシュを持つアドレスに対して、ＤＭＡコントローラ３０６−１がデータを書き込む場合にも、同じように書込み対象となるアドレスのキャッシュを外部メモリ３０８に書き戻すことで、データの一貫性を保証することができる。
【０１１１】
本発明によれば、ＤＭＡ機能を持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【０１１２】
また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス（ＥＣＵ）や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【０１１３】
（第３の実施の形態）
次に、ライト更新型キャッシュ一貫性制御プロトコルについて、暗号処理を行う本発明の第３実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法を説明する。
【０１１４】
本発明の第３の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法おいて適用するプロセッサの基本構成は、図１に示す構成と同様である。また、プロセッサシステムの構成も図４に示す構成と同様である。
【０１１５】
（ライト更新型キャッシュ一貫性制御プロトコル）
（マルチプロセッサのライト更新型プロトコル適用）
ライト無効化型キャッシュ一貫性制御プロトコルでは、あるプロセッサＡのローカルキャッシュに変更されたコピーがあるメモリを、別のプロセッサが参照する場合、プロセッサＡがローカルキャッシュの内容を暗号化して一度外部メモリに書き戻してから、再度、プロセッサＢが外部メモリのデータを読込んでいた。これでは時間のかかる外部メモリの参照を２回行うことになるが、このオーバヘッドを軽減するためのプロトコルが、ライト更新型プロトコルである。ライト更新型プロトコルはプロセッサ間で共有メモリへの参照が頻繁に行われる場合に、性能を改善する効果がある。
【０１１６】
ライト無効化型プロトコルでは、暗号処理が行われるのは、変更があったローカルキャッシュの内容を、外部メモリに書き戻す場合だけである。一方、ライト更新型では、変更があったローカルキャッシュの内容を外部メモリに書き戻す場合に加えて、他のプロセッサやＤＭＡコントローラによるメモリへの書込み操作の結果を受信して、プロセッサのローカルキャッシュに反映させる場合が加わる。
【０１１７】
本発明の第３の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法においては、ライト更新プロトコルにおけるキャッシュ暗号処理について、マルチプロセッサの場合とＤＭＡの場合を、図８のフローチャート及び図９、図１０のライト更新プロトコルのメッセージシーケンス図を参照しながら説明する。
【０１１８】
ライト更新型の場合、キャッシュラインは有効／無効（バリッド／インバリッド）、変更なし／変更あり（クリーン／ダーティ）、排他／共有（エクスクルーシブ／シェア）の３つの属性をそれぞれ１２５−ｘ−ｖ、１２５−ｘ−ｄ、１２５−ｘ−ｓの３つのビットによって持つ。
【０１１９】
（第１のプロセッサのメモリの読出し）
図９はライト更新プロトコルを採用したマルチプロセッサにおけるキャッシュ一貫性制御のメッセージシーケンス図である。図９において、第１のプロセッサ３０１−１によるアドレスＸ２の参照の結果生じる、シーケンスＳ５０１〜シーケンスＳ５０５までのシーケンスは図６に示した第２の実施の形態の場合のシーケンスＳ４０１〜シーケンスＳ４０５までのシーケンスと同様である。ライト更新型では、この時点でアドレスＸに対応するキャッシュライン１２５−ｘの状態は（バリッド、クリーン、エクスクルーシブ）となる。アドレスＸ２の読込み結果はａである（シーケンスＳ５０５）。
【０１２０】
（第１のプロセッサのメモリの書込み）
次に第１のプロセッサ３０１−１でアドレスＸ２へ値ｂのワードを書込む命令が実行され、書込み要求がコアからキャッシュ３０３−１へと送られる（シーケンスＳ５０６）。このとき、書込み対象アドレスのヒット判定と共有ビットの検査が行われる。この場合は、書込み対象アドレスがキャッシュ３０３−１にキャッシュヒットとして扱われ、かつ共有状態ではない（エクスクルーシブ）ので、ローカルキャッシュにそのままデータが書き込まれ、キャッシュライン１２５−ｘの状態は（バリッド、ダーティ、エクスクルーシブ）となる。
【０１２１】
（第２のプロセッサのメモリ読出し）
次に第２のプロセッサ３０１−２がアドレスＸ２を参照する。プロセッサコア３０２−２からキャッシュ３０３−２にアドレスＸ２の読出し要求（シーケンスＳ５０７）が送られ、キャッシュ３０３−２はアドレスＸの読出し通知シーケンスＳ５０９及び、読出し要求シーケンスＳ５０８を発行する。第１のプロセッサ３０１−１は、メモリ読出し待ち要求シーケンスＳ５１０を送り、第２のプロセッサ３０１−２は外部メモリ３０８へのメモリ参照をいったん中断する。
【０１２２】
そして、第１のプロセッサ３０１−１において変更されたキャッシュラインの書出しのために暗号化されたデータを準備するまでは、ライト無効化の場合と同じである。異なるのは、第１のプロセッサ３０１−１が変更したデータを外部メモリ３０８に書き込むのではなく、システムバスライン３０５にブロードキャストする（シーケンスＳ５１１）ことである。このとき、第２のプロセッサ３０１−２は書込み先アドレスと暗号化されたデータを受信する。そして受信したデータを、外部メモリ３０８からの読出し結果の代わりに使い、カレントＥＣＵ・ＩＤで指定される暗号鍵による復号処理を行ってキャッシュ３０３−２に格納する。ここでは、実行中のＥＣＵ・ＩＤ＝２なので、データはデータ鍵Ｋｄで復号され、アドレスＸ２を参照したプロセッサコア３０２−２には、更新された値ｂが返される（シーケンスＳ５１２）。
【０１２３】
内容が更新されると、第１のプロセッサ３０１−１及び第２のプロセッサ３０１−２のキャッシュラインの状態はともに（バリッド、ダーティ、シェア）となる。
【０１２４】
（第１のプロセッサの書込みによる第２のプロセッサのキャッシュ更新）
次に、第２のプロセッサ３０１−２が再度アドレスＸ２に、今度は値ｃを書込む命令を発行する。プロセッサコア３０２−１からの書込み要求シーケンスＳ５１３がキャッシュ３０３−１に伝達される。書込みはキャッシュ３０３−１にヒットするので内容が変更されると同時に、キャッシュラインの状態ビットが共有状態を示しているため、変更したキャッシュラインの内容をシステムバスライン３０５にブロードキャストする（シーケンスＳ５１４）。
【０１２５】
第２のプロセッサ３０１−２における更新要求の処理手順を以下、図８を参照しながら以下説明する。
【０１２６】
（ａ）まず第２のプロセッサ３０１−２はシステムバスライン３０５からアドレスＸと更新データを取得する（ステップ９０１）。このデータは本来外部メモリに書き込まれるべき暗号化されたデータである。
【０１２７】
（ｂ）対象アドレスＸがキャッシュヒットするかを判定して（ステップ９０２）、ヒットすればそのキャッシュラインの内容を更新する。
【０１２８】
（ｃ）更新処理ではＢＩＵがキャッシュコントローラから対象アドレスＸに対応するキャッシュデータＣ’（Ｘ）及びタグのＥＣＵ・ＩＤを取得し、ＥＣＵ・ＩＤに対応する鍵テーブルのデータ鍵エントリからデータ鍵Ｋｄの値を読出す。そして、キャッシュデータＣ’（Ｘ）をデータ鍵Ｋｄにより暗号化し（ステップ９０３）、暗号化結果Ｅ’（Ｘ）をキャッシュラインに書き込む（ステップ９０４）。キャッシュラインの状態は（バリッド、クリーン、シェア）となる。
【０１２９】
ここでも、第１のプロセッサ３０１−１による更新要求ブロードキャストによって第２のプロセッサ３０１−２のキャッシュ３０３−２が更新されるとき、第２のプロセッサ３０１−２でのプログラム実行はまったく関与しない。
【０１３０】
本発明の第３の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法によれば、第２のプロセッサ３０１−２は第１のプロセッサ３０１−１からのメモリ更新要求を受信してから、ＢＩＵ・３０４−２及びキャッシュ３０３−２のみで書き戻しの必要の有無と、正しい鍵値による暗号化を実行して対応キャッシュラインのデータ更新を実行できる。
【０１３１】
（第２のプロセッサによる更新されたラインの読出し）
この状態で第２のプロセッサ３０１−２がアドレスＸ２の内容を読出すと（シーケンスＳ５１５）、キャッシュ３０３−２がヒットするのでキャッシュ内容が読み出され、アドレスＸ２の内容として第１のプロセッサ３０１−１によって書き込まれた値ｃが正しくプロセッサコア３０２−２に返される。
【０１３２】
なお、このときキャッシュラインの状態が「シェア」なので、読出し通知は発行しない。もし他のプロセッサで同一アドレスの内容に対する変更があれば、すぐにブロードキャストによって変更が全てのプロセッサのキャッシュに反映されているはずだからである。
【０１３３】
（ＤＭＡへのライト更新型プロトコル適用）
次にＤＭＡ転送がある場合のライト更新プロトコルを図１０を参照しながら説明する。
【０１３４】
（第１のプロセッサの読出し）
まず、第１のプロセッサ３０１−１のプロセッサコア３０２−１は、プロセスｐ１を実行しており、アドレスＸ２を読み込む命令を発行する（シーケンスＳ７０１）。キャッシュ３０３−１ではキャッシュのヒット判定により、アドレスＸ２はミスヒットと判定され、ＢＩＵ・３０４−１を通じて外部メモリ３０８にアドレスＸから始まるキャッシュライン長３２バイトのデータの読出し要求シーケンスＳ７０２を発行する。同時に、アドレスＸへのメモリ読出し通知シーケンスＳ７０３をシステムバスライン３０５にブロードキャストする。ＤＭＡコントローラ３０６−１は内部にローカルキャッシュを持たないので、システムバスライン３０５からメモリ読出し通知シーケンスＳ７０３を無視する。
【０１３５】
外部メモリ３０８への読出し要求の結果が返され（シーケンスＳ７０４）、ＢＩＵ  ３０４−１でデータの復号が行われる。第１のプロセッサ３０１−１の鍵テーブルで、カレントＥＣＵ・ＩＤ・＃１に対応するデータ鍵Ｋｄが取り出され、読み込まれたデータＥ（Ｘ）の復号結果のキャッシュデータＣ（Ｘ）がキャッシュラインに格納される。以下第１のプロセッサ３０１−１でキャッシュデータＣ（Ｘ）が格納されたキャッシュラインを１２５−ｘ−１とする。キャッシュライン１２５−ｘ−１は（バリッド、クリーン）の状態になる。キャッシュライン１２５−ｘ−１からは、プロセッサコア３０２−１が要求したＸ２に対応するキャッシュデータＣ（Ｘ２）が読み出され、プロセッサコア３０２−１に送られる（シーケンスＳ７０５）。
【０１３６】
（第１のプロセッサによるキャッシュへの書込み）
次に、第１のプロセッサ３０１−１のプロセッサコア３０２−１がアドレスＸ２に値ｂを書込む命令を実行し、キャッシュ３０３−１に書込み要求が送られる（シーケンスＳ７０６）。この要求は第１のプロセッサ３０１−１内部ではキャッシュヒットとして扱われ、キャッシュ３０３−１の内容が更新され、キャッシュラインが（バリッド、ダーティ）とされて完了する。ここではキャッシュラインは排他状態「エクスクルーシブ」なので、書込みのブロードキャストは不要である。
【０１３７】
本発明によれば、マルチプロセッサを持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス（ＥＣＵ）や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【０１３８】
（第３の実施の形態の変形例）
（ＤＭＡ  転送（読み込み））
次に第１のプロセッサ３０１−１の保持する更新された「ダーティ」なローカルキャッシュが、ＤＭＡコントローラ３０６−１のメモリ参照要求によって、暗号化されて外部メモリ３０８に書き出される、本発明第３の実施の形態の変形例に係るキャッシュ一貫性制御方法の動作手順を説明する。
【０１３９】
ＤＭＡコントローラ３０６−１はアドレスＸからＺへキャッシュ１ラインに相当する３２バイトのデータ転送を開始する。
【０１４０】
はじめにＤＭＡコントローラ３０６−１はアドレスＸに対するメモリ読出し通知シーケンスＳ７０８及びメモリ読出し要求シーケンスＳ７０７を発行する。
【０１４１】
プロセッサ間のキャッシュ一貫性制御の場合と同様、メモリ読出し通知シーケンスＳ７０８を受信した第１のプロセッサ３０１−１は、アドレスＸに対する変更されたキャッシュ３０２−１を持っているので、メモリ読込み待ち要求をブロードキャストする（シーケンスＳ７０９）。ＤＭＡコントローラ３０６−１によるメモリ読出し要求シーケンスＳ７０７はいったん中断される。
【０１４２】
第１のプロセッサ３０１−１は、図８のフローチャートに示す手順に従って、アドレスＸに対応するキャッシュ内容を暗号化した上で、外部メモリ３０８に書き込むためにメモリ書込み要求シーケンスＳ７１０を外部メモリに発行する。この要求はブロードキャストされ、ＤＭＡコントローラ３０６−１も受信する（シーケンスＳ７１１）。
【０１４３】
ＤＭＡコントローラ３０６−１は暗号機能を持たないので、ＤＭＡコントローラ３０６−１は受信した内容をそのまま書込み先のアドレスに転送する（シーケンスＳ７１２）。アドレスＺへの書込みについても書込み通知シーケンスＳ７１３がブロードキャストされるが、第１のプロセッサ３０１−１はアドレスＺに対応するローカルキャッシュを持たないので特に処理はしない。
【０１４４】
（ＤＭＡ転送（外部要求によるローカルキャッシュ内容の更新））
次に第１のプロセッサ３０１−１の保持する「クリーン」なローカルキャッシュに対応するアドレスに対して、ＤＭＡコントローラ３０６−１が書込みを行うことで、第１のプロセッサ３０１−１のローカルキャッシュの内容が更新される場合の動作手順を説明する。
【０１４５】
ＤＭＡコントローラ３０６−１はアドレスＹからＸへキャッシュ１ラインに相当する３２バイトのデータ転送を開始する。
【０１４６】
ＤＭＡコントローラ３０６−１によるアドレスＹへの読出しは、他のプロセッサのローカルキャッシュと競合しない（シーケンスＳ７１４〜シーケンスＳ７１６）。ＤＭＡコントローラ３０６−１は読出したキャッシュデータＣ（Ｙ）をそのままアドレスＸに書き込む。外部メモリ３０８への書込み要求シーケンスＳ７１７はシステムバスライン３０５にブロードキャストされ、第１のプロセッサ３０１−１は更新要求シーケンスＳ７１８として受信する。
【０１４７】
以下、第１のプロセッサ３０１−１ではマルチプロセッサの場合と同様、図９の手順に従って更新要求が処理される。ここでも、ＤＭＡコントローラ３０６−１による更新要求ブロードキャストによって第２のプロセッサ３０１−２のキャッシュ３０３−２が更新されるとき、第１のプロセッサ３０１−１でのプログラム実行はまったく関与しない。本発明第３の実施の形態の変形例に係るキャッシュ一貫性制御方法はＤＭＡ転送の場合においても有効に機能する。
【０１４８】
本発明によれば、ＤＭＡ機能を持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス（ＥＣＵ）や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【０１４９】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【０１５０】
【発明の効果】
本発明によれば、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【０１５１】
また、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス（ＥＣＵ）や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るプロセッサの基本構成図。
【図２】本発明の第１の実施の形態に係るプロセッサにおいて使用するキャッシュデータ構造の詳細図。
【図３】本発明の第１の実施の形態に係るプロセッサの動作説明図であって、ユニプロセッサのキャッシュアクセスシーケンス図。
【図４】本発明の第２の実施の形態に係るプロセッサシステムの構成図であって、耐タンパプロセッサで構成されたマルチプロセッサシステムの構成図。
【図５】本発明のプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコル（第２の実施の形態）とライト更新プロトコル（第３の実施の形態）の両方のプロトコルに適用可能な、外部からのメモリ参照による、変更キャッシュライン書き出し手順を説明するフローチャート図。
【図６】本発明の第２の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコルを適用したプロセッサ間のデータ一貫性制御を説明するシーケンス図。
【図７】本発明の第２の実施の形態の変形例に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコルを適用したＤＭＡ転送時のデータ一貫性制御を説明するシーケンス図。
【図８】本発明の第３の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、外部からの更新要求による、キャッシュライン更新手順（ライト更新型のみ適用）を説明するフローチャート図。
【図９】本発明の第３の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト更新プロトコルを適用したプロセッサ間のデータ一貫性制御を説明するシーケンス図。
【図１０】本発明の第３の実施の形態の変形例に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト更新プロトコルを適用したＤＭＡ転送時のデータ一貫性制御を説明するシーケンス図。
【図１１】本発明の比較例１に係るマルチパーティのアプリケーション保護環境を説明する構成図。
【図１２】本発明の比較例２に係るマルチプロセッサシステムの構成図。
【符号の説明】
１０１…耐タンパプロセッサ
１０２，２０８，３０８，１１０８…外部メモリ
１１１…プロセッサコア
１１２…カレントタスクレジスタ
１２１…キャッシュコントローラ
１２２…命令キャッシュ（Ｉキャッシュ）
１２３−１〜１２３−ｎ，１２５−１〜１２５−ｎ，１２５−ｘ…キャッシュライン
１２４…データキャッシュ（Ｄキャッシュ）
１２５−１−ｖ…有効フィールド
１２５−１−ｄ…ダーティフィールド
１２５−１−ｓ…共有フィールド
１２５−１−ｔ…ＥＣＵフィールド
１２５−１−Ａ…アドレスフィールド
１２５−１−Ｃ…キャッシュ内容
１３１，２０４−１〜２０４−ｎ，３０４−１〜３０４−ｎ…バスインタフェースユニット（ＢＩＵ）
１３２…鍵テーブル
１３２−０−ｘ，１３２−１−ｘ，１３２−１−ｄ…エントリ
１３３…セレクタ
１３４…暗号／復号処理部
１４１…ＥＣＵ状態管理機能部
１５０…共通バス
１５１…２次キャッシュ
１６１…公開鍵復号機能部
２０１−１〜２０１−ｎ，３０１−１〜３０１−ｎ…プロセッサ
２０２−１〜２０２−ｎ，３０２−１〜３０２−ｎ…プロセッサコア
２０３−１〜２０３−ｎ，３０３−１〜３０３−ｎ…キャッシュ
２０５，３０５…システムバスライン
２０６−１〜２０６−ｎ，３０６−１〜３０６−ｍ…ＤＭＡコントローラ
２０７，３０７…メモリインタフェース
Ｓ４０１〜Ｓ４２２，Ｓ５０１〜Ｓ５１６，Ｓ６０１〜Ｓ６１７，Ｓ７０１〜Ｓ７１８，Ｓ１００１〜Ｓ１０１１…シーケンス
８０１〜８０８，９０１〜９０５…ステップ
１１０１…ターゲットシステム環境
１１０２…ターゲットシステム
１１０３…プロセッサＡ
１１０４…キャッシュメモリ
１１０５…秘密鍵Ａ
１１０６…保護機能部
１１０７…２次記憶装置
１１０９−１〜１１０９−ｎ−１…第１のプログラムの情報格納部〜第ｎのプログラムの情報格納部
１１１０…ＯＳ
１１１１…システムバス
１１１２…ターゲットシステムユーザ
１１１３…公開鍵Ａ
１１２１−１〜１１２１−ｎ…ソフトウェアベンダ１〜ソフトウェアベンダｎ
１１２２−１−１〜１１２２−ｎ−１…第１の平文プログラム〜第ｎの平文プログラム
１１２３−１−１〜１１２３−ｎ−１…第１の暗号化済プログラム〜第ｎの暗号化済プログラム
１１２４−１−１〜１１２４−ｎ−１…第１のプログラム鍵〜第ｎのプログラム鍵
１１２５−１−１…第１の配布鍵
１１２５−ｎ−１…第１の暗号化済プログラム鍵
Ｋｘ，Ｋ１ｘ，Ｋ２ｘ…プログラム鍵
Ｋｄ，Ｋ１ｄ，Ｋ２ｄ〜Ｋｍｄ…データ鍵
Ｋｘ−Ｐ…暗号鍵
Ｋ０…復号鍵
Ｐ…プログラム
ｐ，ｐ１…プロセス
Ｘ〜Ｘ＋３１，Ｙ，Ｚ…アドレス
Ｃ（Ｘ），Ｃ（Ｘ２），Ｃ’（Ｘ），Ｃ（Ｙ）…キャッシュデータ
【図１】
2005018379.tif 000003
【図２】
2005018379.tif 000004
【図３】
2005018379.tif 000005
【図４】
2005018379.tif 000006
【図５】
2005018379.tif 000007
【図６】
2005018379.tif 000008
【図７】
2005018379.tif 000009
【図８】
2005018379.tif 000010
【図９】
2005018379.tif 000011
【図１０】
2005018379.tif 000012
【図１１】
2005018379.tif 000013
【図１２】
2005018379.tif 000014