JP2005018379A - プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 - Google Patents
プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 Download PDFInfo
- Publication number
- JP2005018379A JP2005018379A JP2003181736A JP2003181736A JP2005018379A JP 2005018379 A JP2005018379 A JP 2005018379A JP 2003181736 A JP2003181736 A JP 2003181736A JP 2003181736 A JP2003181736 A JP 2003181736A JP 2005018379 A JP2005018379 A JP 2005018379A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- processor
- key
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
【解決手段】システムバスライン305と、メモリインタフェース307と、外部メモリ308と、それぞれプロセッサコア302とキャッシュ303とバスインタフェースユニット304とを含みシステムバスライン305にそれぞれ接続される複数のプロセッサ301−1〜301−nとを備え、外部メモリ308のデータを復号化してデータキャッシュに読み込み、データを鍵で暗号化して書き込むことを特徴とするプロセッサシステム。システムバスライン305に接続されるダイレクトメモリアクセスコントローラ306−1〜306−mを更に備える。ライト無効化プロトコルとライト更新プロトコルの両方に適用可能なキャッシュ一貫性制御方法で動作可能である。
【選択図】図4
Description
【発明の属する技術分野】
本発明は、プロセッッサ、プロセッサシステム及びプロセッサシステムのキャッシュ一貫性制御方法に関する。
【0002】
【従来の技術】
オープンシステムが普及している。オープンシステムでは、パーソナルコンピュータ(PC)などの一般ユーザ向けコンピュータのハードウェアやシステムプログラム(以下「OS」と呼称する。)の情報が開示されており、エンドユーザがシステムプログラムを変更して望んだ改良を加えることができる。このような環境で、アプリケーションプログラムが扱う情報の著作権や、プログラム自体の著作権を保護するには、システムのOSがアプリケーションに対して敵対的動作を取ることを前提として、プログラムの秘密を守ることのできるハードウェアが必要となる。このようなハードウェア、特にマイクロプロセッサが提案されている(特許文献1,非特許文献1)。このようなプロセッサは、マルチタスク環境でプログラムとそれが扱う情報の覗き見、改変から保護するためにそれら情報を暗号化する機能を備えている。以下、このようなマイクロプロセッサを「耐タンパプロセッサ」と呼ぶ。
【0003】
耐タンパプロセッサは、マルチタスクのコンピュータシステムにおいて、マルチベンダのプログラムに対してプログラムの秘密の安全性を確保するメカニズムを備えたプロセッサである(特許文献2)。
【0004】
このような耐タンパプロセッサは、エンドユーザのシステムで動作するアプリケーションを保護することを通じて、プログラムやコンテンツ、ネットワークサービスの権利者の権利を保護することができる。より具体的には次の3項目が挙げられる。即ち、(1)プログラムに実装されたアルゴリズムの秘密保護、(2)プログラムに埋め込まれたトレードシークレット及びコンテンツの秘密または不正複製からの保護、及び(3)プログラム動作、処理結果の改変からの保護である。
【0005】
プログラムに実装されたアルゴリズムの保護は、プログラムの権利者の保護に必要である。プログラムに埋め込まれたトレードシークレットの保護は、プログラムが扱う著作権が保護されたコンテンツの不正コピー防止に必要である。ネットワークサービスを利用するプログラムが、課金情報をサーバとやり取りするようなアプリケーションでは、課金情報の送信動作を正しく実行し、不正な改変を防止することが、サービスプロバイダの権利の保護に重要である。実際の例として、PCでディジタルビデオディスク(DVD)をコピーするプログラム(DeCSS)が作られたことは良く知られている。
【0006】
キャッシュメモリの一貫性制御プロトコルはさまざまな種類があるが、大きく分類すると、「ライト無効化(ライトインバリデート)」及び「ライト更新(ライトアップデート)」の2種類に分類できる(非特許文献2)。更に、データのライトバックに関して、実行中のプログラムとは独立に暗号鍵が選択されるキャッシュライトバックの方法は、本発明の発明者らにより、特許文献3において詳細に開示されている。
【0007】
【特許文献1】
特開2002−244543号公報
【0008】
【特許文献2】
特開2001−318787号公報
【0009】
【特許文献3】
特開2003−108442号公報
【0010】
【非特許文献1】
リー他、“コピー及び耐タンパソフトウェアに対するアークテクチャ−支援”,コンピュータアーキテクチャーニュース、28(5)、p.168
【0011】
【非特許文献2】
ジェイ・アーチバルト及びジェイ・ベア、“キャッシュ一貫性プロトコル:マルチプロセッサシミュレーションモデルに基づく評価”、エイ・シー・エム・トランザクション・オン・コンピュータシステムズ、1986年,第4巻、4号、p.273−298
【0012】
【発明が解決しようとする課題】
システムの性能向上の目的でマルチプロセッサ構成がしばしば用いられる。それぞれのプロセッサが独立にキャッシュを持つマルチプロセッサ構成のシステムでは、データキャッシュの一貫性を保証するためのキャッシュ一貫性制御プロトコルが使われる。キャッシュ一貫性制御プロトコルでは、個々のプロセッサの間で、データの同期を取るためのメッセージが交換され、データキャッシュの一貫性が保たれる。このとき、個々のプロセッサから見ると、外部からのメッセージによってローカルのキャッシュデータの入出力制御を行う必要がある。
【0013】
一方、耐タンパプロセッサでは、キャッシュデータの入出力時に暗号処理を行う。しかし、耐タンパプロセッサにおけるキャッシュ入出力制御方式は、プロセッサコアからの要求に基づくものであり、外部バスからのメッセージによって、キャッシュ内容の入出力時における暗号処理を行う方法は知られていなかった。
【0014】
即ち、システムに複数のプロセッサがあるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる制御方式は従来知られていなかった。
【0015】
更に、DMA(ダイレクトメモリアクセス)機能を持つシステムにおいても、キャッシュメモリとメインメモリの内容を一貫性を保つために、マルチプロセッサの場合と同様の、外部からのメッセージに基づくキャッシュ入出力制御が必要となる。システムにDMA機能があるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる制御方式は従来知られていなかった。
【0016】
本発明の目的は、システムに複数のプロセッサがあるマルチプロセッサの構成において、キャッシュ上データの安全性と整合性を両立させる、プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法を提供することにある。更に、DMA(ダイレクトメモリアクセス) 機能を持つマルチプロセッサシステムにおいて、キャッシュメモリとメインメモリの内容を一貫性を保つために、外部からのメッセージに基づくキャッシュ入出力制御を実行する、プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法を提供することにある。
【0017】
【課題を解決するための手段】
本発明の第1の特徴は、(イ)プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、(ロ)プロセッサコアで実行されるプロセスにより、外部のメモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、(ハ)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部のメモリへ出力する第2の手段と、(ハ)外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とを備えたプロセッサであることを要旨とする。
【0018】
本発明の第2の特徴は、(イ)プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、(ロ)プロセッサコアで実行されるプロセスにより、外部のメモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、(ハ)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第2の手段と、(二)外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第3の手段とを備えたプロセッサであることを要旨とする。
【0019】
本発明の第3の特徴は、(イ)システムバスと、システムバスに接続されたメモリと、システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えた、プロセッサシステムであって、(ロ)各プロセッサは、更に、(ハ)プロセッサコアで実行されるプロセスにより、外部メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、(二)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第2の手段と、(ホ)メモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とをそれぞれ備えたプロセッサシステムであることを要旨とする。
【0020】
本発明の第4の特徴は、(イ)システムバスと、システムバスに接続されたメモリと、システムバスに接続されるダイレクトメモリアクセスコントローラとシステムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、(ロ)プロセッサは、更に、(ハ)プロセッサコアで実行されるプロセスにより、メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、(二)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第2の手段と、(ホ)ダイレクトメモリアクセスコントローラによってメモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とを備えたプロセッサシステムであることを要旨とする。
【0021】
本発明の第5の特徴は、(イ)システムバスと、システムバスに接続されたメモリと、システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えたプロセッサシステムであって、(ロ)各プロセッサは、更に、(ハ)プロセッサコアで実行されるプロセスにより、メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、(二)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化してメモリへ出力する第2の手段と、(ホ)メモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第3の手段とをそれぞれ備えたプロセッサシステムであることを要旨とする。
【0022】
本発明の第6の特徴は、(イ)システムバスと、システムバスに接続されたメモリと、システムバスに接続されるダイレクトメモリアクセスコントローラとシステムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、(ロ)プロセッサは、更に、(ハ)プロセッサコアで実行されるプロセスにより、外部メモリから読み出したデータを、鍵テーブルからプロセスに基づいて選択された鍵で復号して、キャッシュコントローラによって、鍵、データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、(二)プロセッサコアで実行されるプロセスにより、キャッシュラインに記憶した復号されたデータを関連付けて記憶された鍵で暗号化して外部メモリへ出力する第2の手段と、(ホ)ダイレクトメモリアクセスコントローラによってメモリに記憶されるデータが更新された際に、この更新されたデータを記憶するメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号してキャッシュラインの内容を更新する第3の手段とを備えたプロセッサシステムであることを要旨とする。
【0023】
本発明の第7の特徴は、(イ)実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、データを鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、(ロ)参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、(ハ)物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、(二)有効なキャッシュラインが存在する場合、有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、(ホ)更新が加えられている場合、有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、(へ)暗号鍵決定ステップで決定した暗号鍵識別子を有する暗号鍵により、有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、(ト)データ暗号化ステップ後、暗号化した有効なキャッシュラインの内容を物理アドレスに書き込む書込みステップとを備え、(チ)書込みステップは、プロセッサにおけるプログラム実行とは独立して処理するキャッシュ一貫性制御方法であることを要旨とする。
【0024】
本発明の第8の特徴は、(イ)実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、データを鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、(ロ)参照先メモリの物理アドレスと更新データを指定したメモリ更新要求を、プロセッサの外部バスから受信するメモリ更新要求受信ステップと、(ハ)物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、(二)有効なキャッシュラインが存在する場合、有効なキャッシュラインからキャッシュラインの暗号鍵識別子を取得する暗号鍵決定ステップと、(ホ)暗号鍵決定ステップで決定した暗号鍵により、メモリ更新要求の更新データを復号するデータ暗号化ステップと、(へ)暗号化した更新データの内容をキャッシュラインに書き込む書込みステップとを備え、(ト)書込みステップは、プロセッサにおけるプログラム実行とは独立して処理するキャッシュ一貫性制御方法であることを要旨とする。
【0025】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【0026】
(キャッシュメモリの一貫性制御プロトコル)
「ライト無効化」とは、あるプロセッサがローカルキャッシュを更新するときは、他のプロセッサが持つ同一アドレスのキャッシュ内容を破棄させるプロトコルであり、「ライト更新」とは、あるプロセッサがローカルキャッシュを更新するときは、他のプロセッサが持つ同一メモリのキャッシュ内容を、強制的に更新してしまうものである。以下の説明においては、それぞれの更新プロトコルについて、暗号処理との関わりの部分に絞って説明する。また、キャッシュ制御方式はメモリの物理アドレスベースで行われる物理アドレスキャッシュ方式を前提とする。
【0027】
本発明の第1の実施の形態においては、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号鍵を使用できる暗号処理機能を持つことで、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止することのできるプロセッサについて説明する。本発明の第2の実施の形態においては、ライト無効化プロトコルに特徴を有するプロセッサシステム及びキャッシュ一貫性制御方法について説明する。本発明の第2の実施の形態の変形例においては、バスに接続される周辺装置がダイレクトメモリアクセス(DMA)機能を有するプロセッサシステム及びキャッシュ一貫性制御方法についても説明する。本発明の第3の実施の形態においては、ライト更新プロトコルに特徴を有するプロセッサシステム及びキャッシュ一貫性制御方法について説明する。本発明の第3の実施の形態の変形例においては、バスに接続される周辺装置がダイレクトメモリアクセス(DMA)機能を有するプロセッサシステム及びキャッシュ一貫性制御方法についても説明する。
【0028】
まず、はじめに、本発明の比較例として、比較例1において、マルチパーティのアプリケーション保護環境の概要について説明し、更に比較例2において、一般的なマルチプロセッサシステムの概要を説明する。
【0029】
(比較例1)
(マルチパーティのアプリケーション保護環境)
以下、オープンシステムにおけるアプリケーションプログラムの秘密保護機構を説明する。1つのシステム上で疑似並列的に複数のプログラムベンダのプログラムが、そのシステムの資源を管理するOSからも独立に秘密を保持することができることが特徴であり、以下そのような環境を「マルチパーティのアプリケーション保護環境」と呼ぶこととする。
【0030】
マルチパーティのアプリケーション保護環境の概要は、図11に示すように、ターゲットシステムユーザ1112を含むターゲットシステム環境1101と、それぞれのソフトウェアベンダ1121−1〜1121−nとから構成される。ターゲットシステム1102は、プロセッサA1103と外部メモリ1108と、ハードディスクのような2次記憶装置1107と、システムバス1111とから構成される。プロセッサA1103は、キャッシュメモリ1104,秘密鍵A1105,保護機能部1106を含む。外部メモリ1108は、ソフトウェアベンダ1121−1〜1121−nが供給する第1のプログラム〜第nのプログラムの情報(実行コードとデータの両方を含む)格納部1109−1〜1109−n−1を備える。また、プロセッサA1103の秘密鍵A1105に対応する公開鍵A1113が公開されている。
【0031】
ソフトウェアベンダ1は、開発した第1の平文プログラム1122−1−1を保護するための暗号鍵(図示されていない)、第1のプログラム鍵1124−1−1を選び、第1の平文プログラム1122−1−1を所定の共通鍵アルゴリズムにより暗号化して、第1の暗号化済プログラム1123−1−1を作る。次に第1のプログラム鍵1124−1−1をそのプログラムの配布先システムのプロセッサ固有の公開鍵A1113で暗号化して第1の配布鍵1125−1−1を作成する。
【0032】
ターゲットシステム1102に対しては、図11に示すように、第1の暗号化済プログラム1123−1−1及び第1の配布鍵1125−1−1が配布される。実行中の外部メモリ1108、2次記憶装置1107の内容はターゲットシステムユーザ1112が自由に読出し、書き換えることができる。これらの能力はプログラムの秘密保護を脅かすものであるが、マルチタスク環境でユーザの目的に応じてシステムの資源を適切に配分管理するためには不可欠の機能である。上記のような外部メモリ1108上で暗号化されたプログラムを「保護されたプログラム」または「保護プログラム」と呼ぶ。
【0033】
これらの情報はターゲットシステム1102の2次記憶装置1107に蓄積され、実行時に外部メモリ1108上に確保された第1のプログラムの情報格納部1109−1−1に読み込まれる。プロセッサA1103は第1の配布鍵1125−1−1を読み込み、公開鍵A1113に対応する秘密鍵A1105によってこれを復号して第1のプログラム鍵1124−1−1を得る。復号処理は保護機能部1106で行われる。ここで、復号化されたプログラム鍵1124−1−1やキャッシュメモリ1104及び秘密鍵1105の内容は、プロセッサA1103の仕様に定められた操作を除いて外部から直接読み出すことはできないものとする。
【0034】
次にプロセッサA1103は、第1のプログラム鍵1124−1−1によって第1のプログラムを復号してキャッシュメモリ1104に読み込む。復号とキャッシュメモリ1104への読み込みは所定のキャッシュアルゴリズムにより、プログラムの実行に従って、部分的に行われる。プログラム全体が一度にキャッシュメモリ1104に読み込まれるわけではない。キャッシュメモリ1104に読み込まれたプログラムは、既に復号されているので、もともと暗号化されていないプログラムと同様に実行できる。
【0035】
ターゲットシステム環境1101における以上の処理で、第1のプログラム鍵1124−1−1や第1の平文プログラム1122−1−1を扱う部分は、プロセッサA1103の保護機能部1106によって行われ、OSが介在する余地はない。
【0036】
ここでプロセッサA1103は、ソフトウェアベンダの立場から見た時、必ずしも信頼できないターゲットシステムユーザ1112を含むターゲットシステム環境1101において、ソフトウェアベンダを正しく扱う、「信頼できる第3者」として機能するものである。
【0037】
上記比較例1キャッシュ制御方式により、システムのプロセッサが単一、即ち「ユニプロセッサ」の時、キャッシュ上データの安全性を保証することができる。
【0038】
また、複数のプロセスが擬似並列的に切り替えながら実行されるときにも、キャッシュ上に残されたデータについて、他のプロセスからの不正な参照は禁止される。内容に変更があったキャッシュラインの外部メモリ1108への書き戻しでも、実行中のプロセス(カレントECU)に関わらず、キャッシュラインが読み込まれた時に使用した暗号鍵によって暗号化して正しく書き戻すことができる。
【0039】
(比較例2)
(マルチプロセッサシステム)
マルチプロセッサシステムの一例は、図12に示すように、共通のシステムバスライン205上に接続された複数のプロセッサ201−1〜201−nと、共通のシステムバスライン205上に接続された複数のDMAコントローラ206−1〜206−nと、共通のシステムバスライン205上に接続されたメモリインタフェース207と、メモリインタフェース207を介して共通のシステムバスライン205に接続された外部メモリ208とから構成される。図12に示されるように、プロセッサ201−1の内部には、プロセッサコア202−1と、キャッシュメモリ203−1と、バスインタフェースユニット(BIU)204−1が含まれている。同様に、プロセッサ201−nの内部には、プロセッサコア202−nと、キャッシュメモリ203−nと、BIU204−nが含まれている。図12の比較例2におけるマルチプロセッサシステムにおいては、後述する本発明の実施の形態に係る耐タンパマルチプロセッサシステムと異なり、BIU204−1〜204−nに対して暗号機能を持たせることは、想定されていない。
【0040】
(第1の実施の形態)
(耐タンパプロセッサの基本構成)
本発明の第1の実施の形態に係るプロセッサは、図1に基本構成を示すように、耐タンパプロセッサ101として構成され、プロセッサコア111と、キャッシュコントローラ121と、BIU131と、ECU状態管理機能部141と、2次キャッシュ151と、公開鍵復号機能部161とから構成される。キャッシュコントローラ121と、BIU131と、2次キャッシュ151と、公開鍵復号機能部161とは共通バス150を介して接続され、更にBIU131はシステムバスライン305を介して外部メモリ102に接続されている。図1において、プロセッサコア111は、実行中のECU・IDを保持するカレントタスクレジスタ112を含む。キャッシュコントローラ121は、内部に命令キャッシュ(Iキャッシュ)122とデータキャッシュ(Dキャッシュ)124をそれぞれ持つ。命令キャッシュ122、データキャッシュ124にはそれぞれメモリ123、125が格納されており、各メモリ123及び125はキャッシュライン123−1〜123−n及び125−1〜125−nで構成されている。各キャッシュラインはキャッシュタグフィールドとデータフィールドからなる。
【0041】
BIU131内には、鍵テーブル132と、セレクタ133と、暗号/復号処理部134が備えられている。鍵テーブル132は、132−0〜132−mのm+1個のエントリを持つ。各エントリはECU対応に設定されており、それぞれのエントリにプログラム暗号鍵(以下プログラム鍵)Kxとデータ暗号鍵(以下データ鍵)Kdの2つのフィールドがある。
【0042】
データキャッシュ124内のメモリ125の詳細は、図2に示すように、大きくタグとコンテンツに分けられる、キャッシュライン125−1〜125−nによって表される。キャッシュタグフィールドには制御ビットフィールド、ECU・IDフィールド125−1−t,アドレスフィールド125−1−Aが含まれる。キャッシュライン125−1について説明すると、制御ビットフィールドは、キャッシュライン125−1の有効/無効(バリッド/インバリッド)を示す有効フィールド125−1−vと、キャッシュ内容の外部メモリ102に書き込まれていない更新の有無(ダーティ/クリーン)を示すダーティフィールド125−1−dと、キャッシュライン125−1の他のプロセッサと共有状態の有無(シェア/エクスクルーシブ)を示す共有フィールド125−1−sとを含む。キャッシュ内容は125−1−Cで表されている。
【0043】
耐タンパプロセッサ101は、マルチタスクOSの管理下で、プロセッサハードウェアにより、マルチベンダのプログラムの秘密を保護する。OSが信用できないことを前提として、耐タンパプロセッサ101は、プロセッサパッケージ単体のハードウェア機能で完結する、プログラムの秘密保護機能を提供する。
【0044】
プログラムは実行時にはプロセスとしてOSに管理される。耐タンパプロセッサハードウェアにおけるプログラムの実行は、通常のOSの場合と同様プロセスを単位として行なわれる。大きな違いは、従来OSが管理していたプロセス情報の一部を、プロセッサハードウェアが直接管理すること及び、プログラム自身の暗号処理がハードウェアによって処理されることである。
【0045】
正しいプロセス実行においては、OSとプロセッサによるプロセス情報の管理は一致して行なわれるはずであるが、悪意のあるOS、或いはバグのあるOSを前提とした場合、OSとプロセッサが管理するプロセス情報の間に食い違いが生じることを前提としなければならない。以下の説明では、OSによるプロセス情報の管理とプロセッサによる管理を明確に区別して説明するため、以下の説明では耐タンパプロセッサハードウェアが管理するプロセスを、「実行単位(ECU)」と呼ぶ。
【0046】
耐タンパプロセッサ101はマルチタスク環境をサポートするため、複数のECUを擬似並行的に実行できる。耐タンパプロセッサ101上で、ECUはECU・IDにより一意に識別される。
【0047】
以下、あるプログラムPをプロセスpとして実行し、プロセスpにはECU・ID・#1を割り当てて実行する例を図1に従って説明する。
【0048】
(暗号化プロセスの実行)
プログラムは外部メモリ102上では所定の暗号鍵Kx−Pで暗号化されている。この暗号鍵Kx−Pは、プログラムの供給者がプログラムごとに個別に設定できる。プログラムをECU(プロセス)として実行するときは、ECU ID及びIDに対応する鍵テーブル132のエントリを一つ割り当てて、管理する。なお、以下の説明では、共通鍵アルゴリズムの暗号化/復号化においては、そこで使われる鍵は暗号・復号どちらの場合にも「暗号鍵」という言葉で表す。
【0049】
実行前には、ECU状態管理機能部141、公開鍵復号機能部161により、プロセッサ外部からプログラムの暗号鍵Kx−Pが読み込まれ、ECU IDxに対応する鍵テーブル132のエントリ132−1−x内に暗号鍵を書き込む。
【0050】
プロセスp、即ち、ECU・ID・#1のECUの実行を開始する時、OSはECU・ID・#1を指定して特殊命令である実行開始命令を発行する。すると、プロセッサコア111のカレントタスクレジスタ112に#1が書き込まれ、以後、ECU・#1のプログラム実行では、外部メモリ102に格納されている暗号化された命令ではなく、命令の読込み時に、このカレントタスクレジスタ112で指定されるエントリ132−1−x内に格納される鍵K1xで復号化された命令列がキャッシュメモリに格納され、実行される。
【0051】
なお、OSを含む非暗号化プロセスには、ECU・ID・#0が割り当てられており、カレントタスクレジスタ112の値が#0の場合は、以下の暗号化処理は行なわれない。プロセスpの開始前、OSが実行されている状態ではカレントタスクIDは#0となる。
【0052】
暗号化されたプログラムの実行で、ECU・#1の実行による命令フェッチでアドレスXのメモリ内容が読みこまれたとき、BIU131はアドレスXに相当する暗号化された命令列のメモリ内容を読み出す。そして、実行中のECU・ID・#0で指定され、エントリ132−0−xに格納されるプログラムの復号鍵K0によって復号し、キャッシュライン123−1に格納する。プロセッサコア111はキャッシュライン123−1から復号された命令列を取り込み順次実行する。
【0053】
(割り込み/再開、被保護ラインへの他タスク参照禁止)
割り込みによりプロセス実行が中断された場合、実行中ECUのレジスタ情報は暗号化されてメモリに保存された後に、所定の割り込みハンドラへ制御が移される。割り込みハンドラへの制御が移るときには、カレントタスクレジスタ112値は、非暗号化を表す値#0に戻される。
【0054】
ECU・#1の実行が中断されている間も復号化された命令列はキャッシュライン123−1に保持されている。しかしながら、OS又は他のプロセスが命令フェッチにおいてこのキャッシュライン123−1を参照してもキャッシュヒットの判定において、キャッシュタグのECU・ID値(#1)と実行中のECU・ID値(≠#1)が一致しないので、OSや他のプロセスが復号化済みのキャッシュラインの命令を実行することはできず、ECU・#1と他のECUとは隔離される。
【0055】
割り込み処理が完了し、再度プロセスpがスケジュールされ、ディスパッチが行なわれるとき、ECU・#1の実行再開命令が発行される。実行再開命令の発行によりECU・IDが#1に再設定され、保存されたコンテキスト情報がレジスタに読み込まれてプログラムカウンタが復帰され、制御が実行中断前のアドレスに移り、プロセスが再開される。
【0056】
(データ暗号化)
耐タンパプロセッサ101はプログラムだけでなくデータも暗号化処理できる。データの場合には読出し時の復号だけでなく、書込み時の暗号化処理があるところが命令の場合との違いである。以下の説明ではデータ処理に使われる鍵をデータ鍵と呼ぶ。ECU・#1のデータ鍵は、エントリ132−1−dに格納されている。
【0057】
データ鍵の値は命令鍵の初期化と同様に、プロセスの開始時に設定する方法と、プロセスが実行中に設定する方法がある。ここでは命令鍵の初期化時に値が設定されているものとする。
【0058】
図3は、ユニプロセッサのキャッシュアクセスにおけるシーケンスを示す。以下、データ処理について、図3を使用して説明する。
【0059】
(ユニプロセッサのキャッシュアクセスシーケンス)
(a)プロセッサコア111はキャッシュメモリにアドレスX2のワード読出し要求を発行する(シーケンスS1001)。
【0060】
(b)データキャッシュ124はアドレスX2のキャッシュ存在判定を行う。ここではアドレスX2の内容はキャッシュされていないので、キャッシュメモリはBIU131を通じて外部メモリ102へアドレスX2を含むアドレスX〜アドレスX+31の範囲のメモリ読出し要求を発行する(シーケンスS1002)。
【0061】
(c)外部メモリ102からのECU・#1のデータの読み込みは、命令と同様にキャッシュライン単位で行なわれる。コアからアドレスXのメモリに対するデータ読出し要求があったときには、キャッシュからBIU131へカレントECU・ID・#1が伝達される。外部メモリ102から読み出されたアドレスXに対応するキャッシュデータC(X)は、カレントタスクレジスタ112で指定されるエントリ132−1−dに格納されるデータ鍵K1dにより復号化されて結果がキャッシュライン125−xに格納され、タグにID・#1が書き込まれる(シーケンスS1003)。
【0062】
(d)コアはキャッシュラインから要求したアドレスのメモリ内容であるキャッシュデータC(X2)=aを読み込み、キャッシュ内容125−x−Cに格納する(シーケンスS1004)。
【0063】
(e)外部メモリ102から内容が読み込んだ状態では、当該キャッシュラインのタグの状態ビット125−x−dは“クリーン”の状態になる。データの場合には書込みがある。コアからデータの書込みがあった場合、対象アドレスがキャッシュにヒットすればキャッシュにデータを書き込む(シーケンスS1005)。ここではライトバックキャッシュアルゴリズムが採用されているので変更されたデータはすぐには外部メモリ102に書き戻されない。書込みがあったキャッシュラインの状態ビット125−x−dは“ダーティ”状態になる。
【0064】
(データのライトバック)
(f)キャッシュラインがフラッシュされ、書き戻される時、暗号化が行なわれる。実行中ECU・IDで指定されるデータ鍵で暗号化されて外部メモリ102の所定アドレスに書き込まれる。例においては、アドレスXの内容が保持されているキャッシュライン125−xについて競合する、アドレスX+m*32の読込み要求がコアから発行されると(シーケンスS1007)、キャッシュライン125−xの書き戻しが始まる。データの書込みに先立って、データの暗号化が行われる。
【0065】
(g)キャッシュコントローラ121により、キャッシュラインを読み込んだときのECU・IDを格納するキャッシュタグ125−x−tが参照され、ECU・ID・1が取り出される。そして、BIU131において鍵テーブル132のデータ鍵でECU・ID・1に対応するエントリ132−1−dに格納されたデータ鍵K1dの値が読み出され、データ鍵K1dの値によりキャッシュデータが暗号化される。暗号化されたデータは外部メモリ102のアドレスXに書き戻される(シーケンスS1008)。
【0066】
(h)この時点ではキャッシュラインのECU・IDとカレントECU・IDは異なる場合がある。シーケンス1006においてカレントECU・IDが#0に変更されているため、キャッシュライン書き戻しの際の暗号鍵指定に使われるECU・IDとカレントECU・IDとは一致しない。書き戻しの際の暗号鍵指定に使われるのはキャッシュタグに格納されたキャッシュラインを読み込んだときのECU・IDである。(i)さて、書き換え対象のラインに残されていたデータの書き戻しが終わると、中断していたアドレスX+m*32のメモリ読出しが再開される(シーケンスS1009)。
【0067】
(j)このメモリ参照ではECU・IDが0なので、メモリ読み込みにあたって復号化処理は行われず、外部メモリ102から読み込まれた値がそのままキャッシュメモリに格納され、キャッシュラインのフィルが完了する(シーケンスS1010)。
【0068】
(k)そして、キャッシュラインからコアが要求したアドレスのワードが読み込まれる(シーケンスS1011)。
【0069】
(キャッシュ上データに対するプロセス間のアクセス競合制御)
上記キャッシュラインに復号化状態のデータが存在する時、命令の場合と同様、他のプロセスによってアクセスされる場合がありうる。データの場合も命令と同様に、アクセス対象のキャッシュラインのタグに記録されたECU・IDとカレントECU・IDが比較され、一致しない場合は、キャッシュラインはフラッシュされるため、プロセスpが読み込んだ平文データは他のプロセスから隔離保護される。
【0070】
上記のメカニズムにより、耐タンパプロセッサでは、悪意のあるOSの管理下でも、異なるベンダが供給するソフトウェア毎の情報の隔離保護が保証される。
【0071】
(第2の実施の形態)
(プロセッサシステム)
本発明の第2の実施の形態に係るプロセッサシステムは、図4に示すように、システムバスライン305と、システムバスライン305に接続されたメモリインタフェース307と、メモリインタフェース307を介してシステムバスライン305に接続された外部メモリ308と、複数のプロセッサ301−1〜301−nと、システムバスライン305に接続されたDMAコントローラ306−1〜306−mとを備える。耐タンパプロセッサのマルチプロセッサシステムとして構成され、個々のプロセッサの内部には、プロセッサコア302−1〜302−nと、キャッシュ303−1〜303−nと、BIU304−1〜304−nが含まれる。図4においては、301,302,303,304はそれぞれ図1における101,111,121,131に対応する。
【0072】
比較例2として図12に示したマルチプロセッサシステムと異なる点は、プロセッサ301−1〜301−nが、図1において詳細に説明したような耐タンパプロセッサ101と同等の構成を備え、BIU304−1〜304−nに暗号機能が含まれている点である。
【0073】
(ライト無効化プロトコル)
(マルチプロセッサのライト無効化プロトコル)
本発明の第2の実施の形態においては、ライト無効化プロトコルにおけるキャッシュ暗号処理について、耐タンパマルチプロセッサシステムの場合と更にDMAコントローラを備える場合について、図5のフローチャート及び、図6及び図7のライト無効化プロトコルのメッセージシーケンス図を参照しながら説明する。
【0074】
図6は、ライト無効化プロトコルを適用したマルチプロセッサシステムにおける、プロセッサ間のキャッシュ一貫性制御のメッセージシーケンス図である。
【0075】
暗号機能がキャッシュ一貫性制御に影響するのは、プロセッサが一貫性制御メッセージを受信したときに、キャッシュ内容の書出しまたは更新が行われる場合に限られる。そのため、以下のシーケンス図においては、キャッシュ一貫制御プロトコルの中で、キャッシュコンテンツの書出しまたは更新がある場合と、それに関連した動作のみに記述を限定している。上述のように、キャッシュ一貫性制御プロトコルにはさまざまな種類があるが、基本的にはこれらの動作は全てのプロトコルで共通である。
【0076】
ここでは、バスに接続された第1のプロセッサ301−1と第2のプロセッサ301−2が独立に動作しながら、キャッシュ一貫性プロトコルを実行することにより、データの一貫性を保つ例を示す。尚、ここではプロセッサ間で実行中のECUや鍵テーブルの内容にはなんら前提を設けない。即ち、第1のプロセッサ301−1と第2のプロセッサ301−2の間では実行しているECU・IDは違っていてもよいし(もちろん一致していてもよい)、同一のECU・IDに対応する鍵テーブルの内容は、異なっていてもよい(こちらも一致していてもよい)。即ち、第1のプロセッサ301−1と第2のプロセッサ301−2はプロセス制御(ECU制御)においては独立して動作することがここでの前提である。
【0077】
また、説明を簡単にするためプロセッサの個数を2個に限定したが、本発明のキャッシュ一貫性制御方式は3個以上のプロセッサが接続される場合にも適用可能である。
【0078】
(動作シーケンス)
以下では説明の便宜のため、第1のプロセッサ301−1においては、実行中プロセスをp1、カレントECU・ID=#1データ鍵をKd、第2のプロセッサ301−2については、実行中プロセスをp2、カレントECU・ID=#2、データ鍵の値を第1のプロセッサ301−1と共通のKdとする。データ鍵の値を共通としたのは説明を簡略化するためで、上述のように鍵値は一致していなくてもかまわない。キャッシュメモリのライン長は32バイトとする。
【0079】
本プロトコルでは、キャッシュラインの制御ビットのうち有効/無効(バリッド/インバリッド)、更新(ダーティ/クリーン)の2ビットが使われる。(インバリッド、*)、(バリッド、クリーン)、(バリッド、ダーティ)の3状態が識別され、使われる。
【0080】
(第1のプロセッサの読出し)
図6において、縦軸は下方向に時間経過を表している。まず、第1のプロセッサ301−1のプロセッサコア302−1は、プロセスp1を実行しており、アドレスX2を読み込む命令を発行する(シーケンスS401)。アドレスX2は、アドレスXから始まる32バイトの領域に含まれる。キャッシュ303−1ではキャッシュのヒット判定により、アドレスX2はミスヒットと判定され、BIU・304−1を通じて外部メモリ102にアドレスXから始まるキャッシュライン長32バイトのデータの読出し要求シーケンスS402を発行する。同時に、アドレスXへのメモリ読出し通知シーケンスS403をバスにブロードキャストする。
【0081】
メモリ読出し通知を受信した第2のプロセッサ301−2では、読出し要求アドレスXがキャッシュ303−2に存在するかどうかを調べる。ここでは対象アドレスがキャッシュメモリに存在しないので何もしない。
【0082】
一方、外部メモリ308への読出し要求の結果が返され(シーケンスS404)、BIU・304−1でデータの復号が行われる。第1のプロセッサ301−1の鍵テーブルで、カレントECU・ID#1に対応するデータ鍵Kdが取り出され、読み込まれたデータE(X)の復号結果のキャッシュデータC(X)がキャッシュラインに格納される。以下第1のプロセッサ301−1でキャッシュデータC(X)が格納されたキャッシュラインを125−x−1とする。キャッシュライン125−x−1は(バリッド、クリーン)の状態になる。キャッシュラインからは、コアが要求したX2に対応するキャッシュデータC(X2)が読みされ、プロセッサコア302−1に送られる。
【0083】
(第2のプロセッサの読出し)
その後、第2のプロセッサ301−2からも同様にアドレスX2に対する読出し要求が発行される(シーケンスS406)。同様に第2のプロセッサ301−2からブロードキャストされた読出し通知(シーケンスS408)が第1のプロセッサ301−1によって受信される。第1のプロセッサ301−1はまず読出し対象アドレスXについてヒット判定をする。ここではキャッシュライン125−x−1がアドレスXにヒットするので、次にキャッシュライン125−x−1の状態がチェックされる。キャッシュライン125−x−1の状態は(バリッド、クリーン)で書き戻しの必要はないので、ここでは第1のプロセッサ301−1は何もしない。
【0084】
一方、第2のプロセッサ301−2は外部メモリ308へのメモリ読出し要求を発行している(シーケンスS407)。外部メモリ308への読出し要求の結果が返され(シーケンスS404)、BIU・304−2でデータの復号が行われる。第2のプロセッサ301−2の鍵テーブルで、カレントECU・ID・#2に対応するデータ鍵Kdが取り出され、読み込まれたデータE(X)の復号結果のキャッシュデータC(X)がキャッシュライン125−x−2に格納され、(バリッド、クリーン)の状態になる。キャッシュラインからは、コアが要求したX2応するキャッシュデータC(X2)が読みされ、プロセッサコア302−2に送られて読出し処理が完了する。これでアドレスXのデータについて、第1のプロセッサ301−1と第2のプロセッサ301−2がそれぞれローカルなキャッシュコピーを持つことになる。
【0085】
(第2のプロセッサの書込み)
次に第1のプロセッサ301−1のコアがアドレスX2に値bを書込む命令を実行し、キャッシュに書込み要求が送られる(シーケンスS411)。この要求は第1のプロセッサ301−1の内部ではキャッシュヒットとして扱われ、キャッシュの内容が更新され、キャッシュラインが(バリッド、ダーティ)とされて完了する。他のプロセッサに対しては、他プロセッサが持つアドレスX2を含むアドレスXのキャッシュ無効化要求シーケンスS412をブロードキャストする。
【0086】
無効化要求シーケンスS412を受信した第2のプロセッサ301−2はキャッシュライン125−x−2の状態を(インバリッド、*)として無効化する。この無効化処理によって、第1のプロセッサ301−1及び第2のプロセッサ301−2がローカルのキャッシュコピーに変更を加えても参照するデータ内容の一貫性が保たれる。
【0087】
(第2のプロセッサによる読出し要求と第1のプロセッサのデータ書出し)
次に第1のプロセッサ301−1の保持する更新された、「ダーティな」ローカルキャッシュが、第2のプロセッサ301−2のメモリ参照要求によって、暗号化されて外部メモリ308に書き出される、本発明の第2の実施の形態に係るプロセッサシステムの動作手順を、図5のフローチャートを参照しながら説明する。
【0088】
次に第2のプロセッサ301−2がアドレスX2の内容を読出す命令を発行すると、読出し要求がキャッシュ303−2に送られる(シーケンスS413)。要求はミスヒットとなるので、読出し通知415とメモリ読出し要求シーケンスS414が発行される。
【0089】
(a)通知415を受信した第1のプロセッサ301−1は、以下、図5のフローチャートに従って、変更キャッシュラインの更新処理をはじめる(ステップ801)。
【0090】
(b)第1のプロセッサ301−1は、対象アドレスXがキャッシュヒットするか判定する(ステップ802)。
【0091】
(c)ここでは対象アドレスXがキャッシュにヒットするので、次に対象キャッシュラインにローカルな変更があるかを判定する(ステップ803)。
【0092】
(d)ローカルな変更がある場合、システムバスライン305にメモリ参照待ち要求を送信し(ステップ804)、対象キャッシュラインの書出し処理を行う。メモリ参照待ち要求を受信した第2のプロセッサ301−2はメモリ参照を中断して待ち状態に入る。
【0093】
(e)書出し処理では、BIUがキャッシュコントローラから対象アドレスXに対応するキャッシュデータC’(X)及びタグのECU・IDを取得し、ECU・IDに対応する鍵テーブルのデータ鍵エントリからデータ鍵Kdの値を読出す。そして、C’(X)をKdにより暗号化し(ステップ805)、暗号化結果E’(X)を外部メモリ308に書き出す(ステップ806)。
【0094】
(f)外部メモリ308への書出しが完了すると、第1のプロセッサ301−1はシステムバスライン305にメモリ参照待ち解除通知を送信する(ステップ807)。これで第1のプロセッサ301−1の処理は完了する。
【0095】
上記の例では、鍵テーブル132に示すように、データキャッシュ用の暗号鍵は、各ECUに1つしかないため、ECU・ID(U0〜Um)が決まれば、暗号化に使うデータ鍵(K1d〜Kmd)は一意に決定される。従って、更新対象キャッシュラインに格納されたECU・IDがデータキャッシュからBIU131へと通知されれば、BIU131は暗号鍵を決定して更新データを暗号化して、外部メモリ102へ書き出すことができる。
【0096】
1つのECUが複数のデータ鍵を使えるような構成例も考えられる。この場合には、鍵テーブル132を各ECU対応に複数の鍵を保持できるように拡張し、鍵テーブル132上で鍵は鍵番号で識別する。同様に、各キャッシュラインにはECU・ID及び複数の鍵を識別する鍵番号が格納されており、更新キャッシュライン書き出しの際にはECU・IDと鍵番号がデータキャッシュからBIUへ131通知される。データキャッシュ124だけでなく、命令キャッシュ122についても更新がされる場合や、複数のデータキャッシュ124を持つアーキテクチャでは、命令キャッシュ122とデータキャッシュ124を識別するキャッシュ識別信号が各キャッシュからBIU131へ送られる。本発明ではこれらECU・ID、鍵番号、キャッシュ識別信号を総称して「暗号鍵識別子」と呼ぶ。
【0097】
メモリ参照待ち解除通知を受信した第2のプロセッサ301−2は、中断していたメモリ参照を再開する。メモリ参照通知シーケンスS420とメモリ読出し要求シーケンスS419をそれぞれ発行し、読出し結果421をキャッシュライン125−x−2に格納する。プロセッサコアはX2の値bを読出してアドレスX2の参照を完了する(シーケンスS422)。
【0098】
このメカニズムによって、第1のプロセッサ301−1によってローカルに更新されたアドレスX2の値が、第2のプロセッサ301−2による参照でも正しく読み出すことができる。
【0099】
ここで、第2のプロセッサ301−2による参照によって、第1のプロセッサ301−1のローカルキャッシュがメモリに書き込まれるとき、第1のプロセッサ301−1でのプログラム実行はまったく関与しないことを特記しておく。本発明の第2の実施の形態に係るプロセッサシステムによれば、第1のプロセッサ301−1は第2のプロセッサ301−2からのメモリ読出し通知を受信してから、BIU及びキャッシュメモリのみで書き戻しの必要の有無と、正しい鍵値による暗号化を実行してデータの外部メモリ書戻しを実行できる。
【0100】
本発明によれば、マルチプロセッサを持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【0101】
また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス(ECU)や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【0102】
(第2の実施の形態の変形例)
(DMA転送のライト無効化プロトコル適用)
次に、本発明の第2の実施の形態の変形例に係るプロセッサシステムとして、DMA転送がある場合のライト無効化プロトコルを図7を参照しながら説明する。DMA転送の場合でも、プロセッサ側の動作は、プロセッサ間の場合と同じである。以下の説明では、DMAコントローラ、プロセッサがそれぞれ1個だけの場合が説明されているが、図4の構成にあるように、DMAコントローラ306−1〜306−m、プロセッサ301−1〜3−1−nが任意の個数の場合にも、本発明の第2の実施の形態の変形例に係るプロセッサシステムは適用できる。
【0103】
(第1のプロセッサの読出し)
まず、第1のプロセッサ301−1のプロセッサコア302−1は、プロセスp1を実行しており、アドレスX2を読み込む命令を発行する(シーケンスS601)。キャッシュ303−1ではキャッシュのヒット判定により、アドレスX2はミスヒットと判定され、BIU・304−1を通じて外部メモリ308にアドレスXから始まるキャッシュライン長32バイトのデータの読出し要求シーケンスS602を発行する。同時に、アドレスXへのメモリ読出し通知シーケンスS603をバスにブロードキャストする。DMAコントローラ306−1〜306−mは内部にローカルキャッシュを持たないので、システムバスライン305からメモリ読出し通知は無視する。
【0104】
外部メモリ308への読出し要求の結果が返され(シーケンスS604)、BIU 304−1でデータの復号が行われる。第1のプロセッサ301−1の鍵テーブルで、カレントECU・ID・#1に対応するデータ鍵Kdが取り出され、読み込まれたデータE(X)の復号結果のキャッシュデータC(X)がキャッシュラインに格納される。以下第1のプロセッサ301−1でキャッシュデータC(X)が格納されたキャッシュラインを125−x−1とする。キャッシュライン125−x−1は(バリッド、クリーン)の状態になる。キャッシュラインからは、コアが要求したX2に対応するキャッシュデータC(X2)が読み出され、プロセッサコア302−1に送られる(シーケンスS605)。
【0105】
(第1のプロセッサによるキャッシュへの書込み)
次に第1のプロセッサ301−1のコアがアドレスX2に値bを書込む命令を実行し、キャッシュ303−1に書込み要求が送られる(シーケンスS606)。この要求は第1のプロセッサ301−1の内部ではキャッシュヒットとして扱われ、キャッシュ303−1の内容が更新され、キャッシュライン125−x−1が(バリッド、ダーティ)とされて完了する。他のプロセッサに対しては、他のプロセッサが持つアドレスX2を含むアドレスXのキャッシュ無効化要求シーケンスS607をブロードキャストする。
【0106】
(DMA転送(読み込み))
次に第1のプロセッサ301−1の保持する更新された「ダーティな」ローカルキャッシュが、DMAコントローラ306−1のメモリ参照要求によって、暗号化されて外部メモリ308に書き出される、本発明の第2の実施の形態の変形例に係るプロセッサシステムの動作手順を説明する。DMAコントローラ306−1はアドレスXからZへキャッシュ1ラインに相当する32バイトのデータ転送を開始する。
【0107】
はじめにDMAコントローラ306−1はアドレスXに対するメモリ読出し通知609及びメモリ読出し要求シーケンスS608を発行する。プロセッサ間のキャッシュ一貫性制御の場合と同様、メモリ読出し通知シーケンスS609を受信した第1のプロセッサ301−1はアドレスXに対する変更されたキャッシュ303−1を持っているので、メモリ読込み待ち要求をブロードキャストする(シーケンスS610)。DMAコントローラ306−1によるメモリ読出し要求シーケンスS608はいったん中断される。
【0108】
第1のプロセッサ301−1は、図5のフローチャートに示す手順に従ってアドレスXに対応するキャッシュ内容125−x−Cを暗号化したうえで、外部メモリ308に書き込むためにメモリ書込み要求シーケンスS611を外部メモリ308に発行する。
【0109】
プロセッサは、書込みが完了すると、書込み完了通知シーケンスS612をブロードキャストする。書込み完了通知シーケンスS612を受信したDMAコントローラはメモリ読出しを再開し、メモリ読出し通知シーケンスS614、メモリ読出し要求シーケンスS613を発行し、メモリ読出し結果シーケンスS615を受信する。ここではDMAコントローラ306−1は暗号機能を持たないので、DMAコントローラ306−1は外部メモリ308から読出した内容をそのまま書込み先のアドレスZに転送する。アドレスZへの書込みについても、書込み通知617がブロードキャストされるが、第1のプロセッサ301−1はアドレスZに対応するローカルキャッシュを持たないので特に処理はしない。
【0110】
このように、プロセッサ側についてはプロセッサ間のキャッシュ一貫性制御プロトコルと同じ制御手順を適用することにより、DMAコントローラ306−1が外部メモリ308を参照する場合にもデータの一貫性は保証される。プロセッサが変更したローカルキャッシュを持つアドレスに対して、DMAコントローラ306−1がデータを書き込む場合にも、同じように書込み対象となるアドレスのキャッシュを外部メモリ308に書き戻すことで、データの一貫性を保証することができる。
【0111】
本発明によれば、DMA機能を持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【0112】
また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス(ECU)や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【0113】
(第3の実施の形態)
次に、ライト更新型キャッシュ一貫性制御プロトコルについて、暗号処理を行う本発明の第3実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法を説明する。
【0114】
本発明の第3の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法おいて適用するプロセッサの基本構成は、図1に示す構成と同様である。また、プロセッサシステムの構成も図4に示す構成と同様である。
【0115】
(ライト更新型キャッシュ一貫性制御プロトコル)
(マルチプロセッサのライト更新型プロトコル適用)
ライト無効化型キャッシュ一貫性制御プロトコルでは、あるプロセッサAのローカルキャッシュに変更されたコピーがあるメモリを、別のプロセッサが参照する場合、プロセッサAがローカルキャッシュの内容を暗号化して一度外部メモリに書き戻してから、再度、プロセッサBが外部メモリのデータを読込んでいた。これでは時間のかかる外部メモリの参照を2回行うことになるが、このオーバヘッドを軽減するためのプロトコルが、ライト更新型プロトコルである。ライト更新型プロトコルはプロセッサ間で共有メモリへの参照が頻繁に行われる場合に、性能を改善する効果がある。
【0116】
ライト無効化型プロトコルでは、暗号処理が行われるのは、変更があったローカルキャッシュの内容を、外部メモリに書き戻す場合だけである。一方、ライト更新型では、変更があったローカルキャッシュの内容を外部メモリに書き戻す場合に加えて、他のプロセッサやDMAコントローラによるメモリへの書込み操作の結果を受信して、プロセッサのローカルキャッシュに反映させる場合が加わる。
【0117】
本発明の第3の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法においては、ライト更新プロトコルにおけるキャッシュ暗号処理について、マルチプロセッサの場合とDMAの場合を、図8のフローチャート及び図9、図10のライト更新プロトコルのメッセージシーケンス図を参照しながら説明する。
【0118】
ライト更新型の場合、キャッシュラインは有効/無効(バリッド/インバリッド)、変更なし/変更あり(クリーン/ダーティ)、排他/共有(エクスクルーシブ/シェア)の3つの属性をそれぞれ125−x−v、125−x−d、125−x−sの3つのビットによって持つ。
【0119】
(第1のプロセッサのメモリの読出し)
図9はライト更新プロトコルを採用したマルチプロセッサにおけるキャッシュ一貫性制御のメッセージシーケンス図である。図9において、第1のプロセッサ301−1によるアドレスX2の参照の結果生じる、シーケンスS501〜シーケンスS505までのシーケンスは図6に示した第2の実施の形態の場合のシーケンスS401〜シーケンスS405までのシーケンスと同様である。ライト更新型では、この時点でアドレスXに対応するキャッシュライン125−xの状態は(バリッド、クリーン、エクスクルーシブ)となる。アドレスX2の読込み結果はaである(シーケンスS505)。
【0120】
(第1のプロセッサのメモリの書込み)
次に第1のプロセッサ301−1でアドレスX2へ値bのワードを書込む命令が実行され、書込み要求がコアからキャッシュ303−1へと送られる(シーケンスS506)。このとき、書込み対象アドレスのヒット判定と共有ビットの検査が行われる。この場合は、書込み対象アドレスがキャッシュ303−1にキャッシュヒットとして扱われ、かつ共有状態ではない(エクスクルーシブ)ので、ローカルキャッシュにそのままデータが書き込まれ、キャッシュライン125−xの状態は(バリッド、ダーティ、エクスクルーシブ)となる。
【0121】
(第2のプロセッサのメモリ読出し)
次に第2のプロセッサ301−2がアドレスX2を参照する。プロセッサコア302−2からキャッシュ303−2にアドレスX2の読出し要求(シーケンスS507)が送られ、キャッシュ303−2はアドレスXの読出し通知シーケンスS509及び、読出し要求シーケンスS508を発行する。第1のプロセッサ301−1は、メモリ読出し待ち要求シーケンスS510を送り、第2のプロセッサ301−2は外部メモリ308へのメモリ参照をいったん中断する。
【0122】
そして、第1のプロセッサ301−1において変更されたキャッシュラインの書出しのために暗号化されたデータを準備するまでは、ライト無効化の場合と同じである。異なるのは、第1のプロセッサ301−1が変更したデータを外部メモリ308に書き込むのではなく、システムバスライン305にブロードキャストする(シーケンスS511)ことである。このとき、第2のプロセッサ301−2は書込み先アドレスと暗号化されたデータを受信する。そして受信したデータを、外部メモリ308からの読出し結果の代わりに使い、カレントECU・IDで指定される暗号鍵による復号処理を行ってキャッシュ303−2に格納する。ここでは、実行中のECU・ID=2なので、データはデータ鍵Kdで復号され、アドレスX2を参照したプロセッサコア302−2には、更新された値bが返される(シーケンスS512)。
【0123】
内容が更新されると、第1のプロセッサ301−1及び第2のプロセッサ301−2のキャッシュラインの状態はともに(バリッド、ダーティ、シェア)となる。
【0124】
(第1のプロセッサの書込みによる第2のプロセッサのキャッシュ更新)
次に、第2のプロセッサ301−2が再度アドレスX2に、今度は値cを書込む命令を発行する。プロセッサコア302−1からの書込み要求シーケンスS513がキャッシュ303−1に伝達される。書込みはキャッシュ303−1にヒットするので内容が変更されると同時に、キャッシュラインの状態ビットが共有状態を示しているため、変更したキャッシュラインの内容をシステムバスライン305にブロードキャストする(シーケンスS514)。
【0125】
第2のプロセッサ301−2における更新要求の処理手順を以下、図8を参照しながら以下説明する。
【0126】
(a)まず第2のプロセッサ301−2はシステムバスライン305からアドレスXと更新データを取得する(ステップ901)。このデータは本来外部メモリに書き込まれるべき暗号化されたデータである。
【0127】
(b)対象アドレスXがキャッシュヒットするかを判定して(ステップ902)、ヒットすればそのキャッシュラインの内容を更新する。
【0128】
(c)更新処理ではBIUがキャッシュコントローラから対象アドレスXに対応するキャッシュデータC’(X)及びタグのECU・IDを取得し、ECU・IDに対応する鍵テーブルのデータ鍵エントリからデータ鍵Kdの値を読出す。そして、キャッシュデータC’(X)をデータ鍵Kdにより暗号化し(ステップ903)、暗号化結果E’(X)をキャッシュラインに書き込む(ステップ904)。キャッシュラインの状態は(バリッド、クリーン、シェア)となる。
【0129】
ここでも、第1のプロセッサ301−1による更新要求ブロードキャストによって第2のプロセッサ301−2のキャッシュ303−2が更新されるとき、第2のプロセッサ301−2でのプログラム実行はまったく関与しない。
【0130】
本発明の第3の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法によれば、第2のプロセッサ301−2は第1のプロセッサ301−1からのメモリ更新要求を受信してから、BIU・304−2及びキャッシュ303−2のみで書き戻しの必要の有無と、正しい鍵値による暗号化を実行して対応キャッシュラインのデータ更新を実行できる。
【0131】
(第2のプロセッサによる更新されたラインの読出し)
この状態で第2のプロセッサ301−2がアドレスX2の内容を読出すと(シーケンスS515)、キャッシュ303−2がヒットするのでキャッシュ内容が読み出され、アドレスX2の内容として第1のプロセッサ301−1によって書き込まれた値cが正しくプロセッサコア302−2に返される。
【0132】
なお、このときキャッシュラインの状態が「シェア」なので、読出し通知は発行しない。もし他のプロセッサで同一アドレスの内容に対する変更があれば、すぐにブロードキャストによって変更が全てのプロセッサのキャッシュに反映されているはずだからである。
【0133】
(DMAへのライト更新型プロトコル適用)
次にDMA転送がある場合のライト更新プロトコルを図10を参照しながら説明する。
【0134】
(第1のプロセッサの読出し)
まず、第1のプロセッサ301−1のプロセッサコア302−1は、プロセスp1を実行しており、アドレスX2を読み込む命令を発行する(シーケンスS701)。キャッシュ303−1ではキャッシュのヒット判定により、アドレスX2はミスヒットと判定され、BIU・304−1を通じて外部メモリ308にアドレスXから始まるキャッシュライン長32バイトのデータの読出し要求シーケンスS702を発行する。同時に、アドレスXへのメモリ読出し通知シーケンスS703をシステムバスライン305にブロードキャストする。DMAコントローラ306−1は内部にローカルキャッシュを持たないので、システムバスライン305からメモリ読出し通知シーケンスS703を無視する。
【0135】
外部メモリ308への読出し要求の結果が返され(シーケンスS704)、BIU 304−1でデータの復号が行われる。第1のプロセッサ301−1の鍵テーブルで、カレントECU・ID・#1に対応するデータ鍵Kdが取り出され、読み込まれたデータE(X)の復号結果のキャッシュデータC(X)がキャッシュラインに格納される。以下第1のプロセッサ301−1でキャッシュデータC(X)が格納されたキャッシュラインを125−x−1とする。キャッシュライン125−x−1は(バリッド、クリーン)の状態になる。キャッシュライン125−x−1からは、プロセッサコア302−1が要求したX2に対応するキャッシュデータC(X2)が読み出され、プロセッサコア302−1に送られる(シーケンスS705)。
【0136】
(第1のプロセッサによるキャッシュへの書込み)
次に、第1のプロセッサ301−1のプロセッサコア302−1がアドレスX2に値bを書込む命令を実行し、キャッシュ303−1に書込み要求が送られる(シーケンスS706)。この要求は第1のプロセッサ301−1内部ではキャッシュヒットとして扱われ、キャッシュ303−1の内容が更新され、キャッシュラインが(バリッド、ダーティ)とされて完了する。ここではキャッシュラインは排他状態「エクスクルーシブ」なので、書込みのブロードキャストは不要である。
【0137】
本発明によれば、マルチプロセッサを持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス(ECU)や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【0138】
(第3の実施の形態の変形例)
(DMA 転送(読み込み))
次に第1のプロセッサ301−1の保持する更新された「ダーティ」なローカルキャッシュが、DMAコントローラ306−1のメモリ参照要求によって、暗号化されて外部メモリ308に書き出される、本発明第3の実施の形態の変形例に係るキャッシュ一貫性制御方法の動作手順を説明する。
【0139】
DMAコントローラ306−1はアドレスXからZへキャッシュ1ラインに相当する32バイトのデータ転送を開始する。
【0140】
はじめにDMAコントローラ306−1はアドレスXに対するメモリ読出し通知シーケンスS708及びメモリ読出し要求シーケンスS707を発行する。
【0141】
プロセッサ間のキャッシュ一貫性制御の場合と同様、メモリ読出し通知シーケンスS708を受信した第1のプロセッサ301−1は、アドレスXに対する変更されたキャッシュ302−1を持っているので、メモリ読込み待ち要求をブロードキャストする(シーケンスS709)。DMAコントローラ306−1によるメモリ読出し要求シーケンスS707はいったん中断される。
【0142】
第1のプロセッサ301−1は、図8のフローチャートに示す手順に従って、アドレスXに対応するキャッシュ内容を暗号化した上で、外部メモリ308に書き込むためにメモリ書込み要求シーケンスS710を外部メモリに発行する。この要求はブロードキャストされ、DMAコントローラ306−1も受信する(シーケンスS711)。
【0143】
DMAコントローラ306−1は暗号機能を持たないので、DMAコントローラ306−1は受信した内容をそのまま書込み先のアドレスに転送する(シーケンスS712)。アドレスZへの書込みについても書込み通知シーケンスS713がブロードキャストされるが、第1のプロセッサ301−1はアドレスZに対応するローカルキャッシュを持たないので特に処理はしない。
【0144】
(DMA転送(外部要求によるローカルキャッシュ内容の更新))
次に第1のプロセッサ301−1の保持する「クリーン」なローカルキャッシュに対応するアドレスに対して、DMAコントローラ306−1が書込みを行うことで、第1のプロセッサ301−1のローカルキャッシュの内容が更新される場合の動作手順を説明する。
【0145】
DMAコントローラ306−1はアドレスYからXへキャッシュ1ラインに相当する32バイトのデータ転送を開始する。
【0146】
DMAコントローラ306−1によるアドレスYへの読出しは、他のプロセッサのローカルキャッシュと競合しない(シーケンスS714〜シーケンスS716)。DMAコントローラ306−1は読出したキャッシュデータC(Y)をそのままアドレスXに書き込む。外部メモリ308への書込み要求シーケンスS717はシステムバスライン305にブロードキャストされ、第1のプロセッサ301−1は更新要求シーケンスS718として受信する。
【0147】
以下、第1のプロセッサ301−1ではマルチプロセッサの場合と同様、図9の手順に従って更新要求が処理される。ここでも、DMAコントローラ306−1による更新要求ブロードキャストによって第2のプロセッサ301−2のキャッシュ303−2が更新されるとき、第1のプロセッサ301−1でのプログラム実行はまったく関与しない。本発明第3の実施の形態の変形例に係るキャッシュ一貫性制御方法はDMA転送の場合においても有効に機能する。
【0148】
本発明によれば、DMA機能を持つ高性能なシステムに対して、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。また、本発明の方法では、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス(ECU)や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【0149】
(その他の実施の形態)
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0150】
【発明の効果】
本発明によれば、耐タンパプロセッサによるソフトウェアの保護機能と、正しいキャッシュデータ一貫性制御機能を両立させることができる。
【0151】
また、データ一貫性制御の実行時において、個々のプロセッサで実行中のプロセス(ECU)や、鍵テーブルの値の整合をとる必要がなく、適用にあたっての制約が少なく利用効果が大である。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るプロセッサの基本構成図。
【図2】本発明の第1の実施の形態に係るプロセッサにおいて使用するキャッシュデータ構造の詳細図。
【図3】本発明の第1の実施の形態に係るプロセッサの動作説明図であって、ユニプロセッサのキャッシュアクセスシーケンス図。
【図4】本発明の第2の実施の形態に係るプロセッサシステムの構成図であって、耐タンパプロセッサで構成されたマルチプロセッサシステムの構成図。
【図5】本発明のプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコル(第2の実施の形態)とライト更新プロトコル(第3の実施の形態)の両方のプロトコルに適用可能な、外部からのメモリ参照による、変更キャッシュライン書き出し手順を説明するフローチャート図。
【図6】本発明の第2の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコルを適用したプロセッサ間のデータ一貫性制御を説明するシーケンス図。
【図7】本発明の第2の実施の形態の変形例に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト無効化プロトコルを適用したDMA転送時のデータ一貫性制御を説明するシーケンス図。
【図8】本発明の第3の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、外部からの更新要求による、キャッシュライン更新手順(ライト更新型のみ適用)を説明するフローチャート図。
【図9】本発明の第3の実施の形態に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト更新プロトコルを適用したプロセッサ間のデータ一貫性制御を説明するシーケンス図。
【図10】本発明の第3の実施の形態の変形例に係るプロセッサシステム及びキャッシュ一貫性制御方法において、ライト更新プロトコルを適用したDMA転送時のデータ一貫性制御を説明するシーケンス図。
【図11】本発明の比較例1に係るマルチパーティのアプリケーション保護環境を説明する構成図。
【図12】本発明の比較例2に係るマルチプロセッサシステムの構成図。
【符号の説明】
101…耐タンパプロセッサ
102,208,308,1108…外部メモリ
111…プロセッサコア
112…カレントタスクレジスタ
121…キャッシュコントローラ
122…命令キャッシュ(Iキャッシュ)
123−1〜123−n,125−1〜125−n,125−x…キャッシュライン
124…データキャッシュ(Dキャッシュ)
125−1−v…有効フィールド
125−1−d…ダーティフィールド
125−1−s…共有フィールド
125−1−t…ECUフィールド
125−1−A…アドレスフィールド
125−1−C…キャッシュ内容
131,204−1〜204−n,304−1〜304−n…バスインタフェースユニット(BIU)
132…鍵テーブル
132−0−x,132−1−x,132−1−d…エントリ
133…セレクタ
134…暗号/復号処理部
141…ECU状態管理機能部
150…共通バス
151…2次キャッシュ
161…公開鍵復号機能部
201−1〜201−n,301−1〜301−n…プロセッサ
202−1〜202−n,302−1〜302−n…プロセッサコア
203−1〜203−n,303−1〜303−n…キャッシュ
205,305…システムバスライン
206−1〜206−n,306−1〜306−m…DMAコントローラ
207,307…メモリインタフェース
S401〜S422,S501〜S516,S601〜S617,S701〜S718,S1001〜S1011…シーケンス
801〜808,901〜905…ステップ
1101…ターゲットシステム環境
1102…ターゲットシステム
1103…プロセッサA
1104…キャッシュメモリ
1105…秘密鍵A
1106…保護機能部
1107…2次記憶装置
1109−1〜1109−n−1…第1のプログラムの情報格納部〜第nのプログラムの情報格納部
1110…OS
1111…システムバス
1112…ターゲットシステムユーザ
1113…公開鍵A
1121−1〜1121−n…ソフトウェアベンダ1〜ソフトウェアベンダn
1122−1−1〜1122−n−1…第1の平文プログラム〜第nの平文プログラム
1123−1−1〜1123−n−1…第1の暗号化済プログラム〜第nの暗号化済プログラム
1124−1−1〜1124−n−1…第1のプログラム鍵〜第nのプログラム鍵
1125−1−1…第1の配布鍵
1125−n−1…第1の暗号化済プログラム鍵
Kx,K1x,K2x…プログラム鍵
Kd,K1d,K2d〜Kmd…データ鍵
Kx−P…暗号鍵
K0…復号鍵
P…プログラム
p,p1…プロセス
X〜X+31,Y,Z…アドレス
C(X),C(X2),C’(X),C(Y)…キャッシュデータ
Claims (9)
- プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、
前記プロセッサコアで実行されるプロセスにより、前記外部のメモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部のメモリへ出力する第2の手段と、
前記外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とを備えたことを特徴とするプロセッサ。 - プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを備え、システムバスを介し外部のメモリとデータの送受信を行なうプロセッサであって、
前記プロセッサコアで実行されるプロセスにより、前記外部のメモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第2の手段と、
前記外部のメモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記外部のメモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第3の手段とを備えたことを特徴とするプロセッサ。 - システムバスと、前記システムバスに接続されたメモリと、前記システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えた、プロセッサシステムであって、
前記各プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記外部メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第2の手段と、
前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とをそれぞれ備えたことを特徴とするプロセッサシステム。 - システムバスと、前記システムバスに接続されたメモリと、前記システムバスに接続されるダイレクトメモリアクセスコントローラと前記システムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、
前記プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第2の手段と、
前記ダイレクトメモリアクセスコントローラによって前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインを無効化する第3の手段とを備えたことを特徴とするプロセッサシステム。 - システムバスと、前記システムバスに接続されたメモリと、前記システムバスとそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有する複数のプロセッサとを備えたプロセッサシステムであって、
前記各プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータとを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記メモリへ出力する第2の手段と、
前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第3の手段とをそれぞれ備えたことを特徴とするプロセッサシステム。 - システムバスと、前記システムバスに接続されたメモリと、前記システムバスに接続されるダイレクトメモリアクセスコントローラと前記システムバスを介しそれぞれ接続されるものであり、プロセスが実行されるプロセッサコアと、前記プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号処理部とを有するバスインタフェースユニットとを有するプロセッサとを備えたプロセッサシステムであって、
前記プロセッサは、更に、
前記プロセッサコアで実行されるプロセスにより、前記外部メモリから読み出したデータを、前記鍵テーブルから前記プロセスに基づいて選択された鍵で復号して、前記キャッシュコントローラによって、前記鍵、前記データの読出し元アドレスおよび復号したデータの内容とを関連付けてあるキャッシュラインへ記憶する第1の手段と、
前記プロセッサコアで実行されるプロセスにより、前記キャッシュラインに記憶した復号されたデータを前記関連付けて記憶された鍵で暗号化して前記外部メモリへ出力する第2の手段と、
前記ダイレクトメモリアクセスコントローラによって前記メモリに記憶されるデータが更新された際に、この更新されたデータを記憶する前記メモリのアドレスと同一のアドレスを記憶するキャッシュラインに記憶される鍵で、復号して前記キャッシュラインの内容を更新する第3の手段とを備えたことを特徴とするプロセッサシステム。 - 実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、該データを前記鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、
参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、
前記物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、
前記有効なキャッシュラインが存在する場合、前記有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、
前記更新が加えられている場合、前記有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、
前記暗号鍵決定ステップで決定した前記暗号鍵識別子を有する暗号鍵により、前記有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、
前記データ暗号化ステップ後、暗号化した前記有効なキャッシュラインの内容を前記物理アドレスに書き込む書込みステップ
とを備え、前記書込みステップは、当該プロセッサにおけるプログラム実行とは独立して処理することを特徴とするキャッシュ一貫性制御方法。 - 前記更新判定ステップにおいて更新ありの判定後に、前記物理アドレスに対するメモリ参照待ち要求を外部バスに送信する待ち要求送信ステップと、
前記書込みステップの後にメモリ参照待ちの解除要求を外部バスに送信するステップ
とを更に備えることを特徴とする請求項7記載のキャッシュ一貫性制御方法。 - 実行中のプログラムと対応付けられた複数の鍵により、外部メモリのデータを復号化して内部のキャッシュメモリに読み込み、該データを前記鍵で暗号化して書き込むキャッシュ一貫性制御方法であって、
参照先メモリの物理アドレスを指定したメモリ参照要求を、プロセッサの外部バスから受信するメモリ参照要求受信ステップと、
前記物理アドレスに対応する有効なキャッシュラインの有無を判定するキャッシュライン存在判定ステップと、
前記有効なキャッシュラインが存在する場合、前記有効なキャッシュラインの内容に更新が加えられているかを判定する更新判定ステップと、
前記更新が加えられている場合、前記有効なキャッシュラインから暗号鍵識別子を取得する暗号鍵決定ステップと、
前記暗号鍵決定ステップで決定した前記暗号鍵識別子を有する暗号鍵により、前記有効なキャッシュラインの内容を暗号化するデータ暗号化ステップと、
前記データ暗号化ステップ後、暗号化した前記有効なキャッシュラインの内容を前記物理アドレスに書き込む書込みステップ
とを備え、前記書込みステップは、当該プロセッサにおけるプログラム実行とは独立して処理することを特徴とするキャッシュ一貫性制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003181736A JP4021810B2 (ja) | 2003-06-25 | 2003-06-25 | プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003181736A JP4021810B2 (ja) | 2003-06-25 | 2003-06-25 | プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005018379A true JP2005018379A (ja) | 2005-01-20 |
JP4021810B2 JP4021810B2 (ja) | 2007-12-12 |
Family
ID=34182342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003181736A Expired - Fee Related JP4021810B2 (ja) | 2003-06-25 | 2003-06-25 | プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4021810B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007049388A1 (ja) * | 2005-10-24 | 2007-05-03 | Sony Computer Entertainment Inc. | 検索仲介装置、検索仲介方法、分散検索システム、分散処理装置及び分散処理装置の制御方法 |
WO2011114383A1 (ja) * | 2010-03-19 | 2011-09-22 | 富士通株式会社 | 情報処理装置及び情報処理装置のデバイス情報収集処理方法 |
US8468364B2 (en) | 2006-02-22 | 2013-06-18 | Fujitsu Semiconductor Limited | Secure processor |
-
2003
- 2003-06-25 JP JP2003181736A patent/JP4021810B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007049388A1 (ja) * | 2005-10-24 | 2007-05-03 | Sony Computer Entertainment Inc. | 検索仲介装置、検索仲介方法、分散検索システム、分散処理装置及び分散処理装置の制御方法 |
US8468364B2 (en) | 2006-02-22 | 2013-06-18 | Fujitsu Semiconductor Limited | Secure processor |
US8788840B2 (en) | 2006-02-22 | 2014-07-22 | Fujitsu Semiconductor Limited | Secure processor |
WO2011114383A1 (ja) * | 2010-03-19 | 2011-09-22 | 富士通株式会社 | 情報処理装置及び情報処理装置のデバイス情報収集処理方法 |
US8533372B2 (en) | 2010-03-19 | 2013-09-10 | Fujitsu Limited | Information processing device and method of collection process of device information in the information processing device |
JP5299559B2 (ja) * | 2010-03-19 | 2013-09-25 | 富士通株式会社 | 情報処理装置及び情報処理装置のデバイス情報収集処理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4021810B2 (ja) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7424622B2 (en) | Microprocessor with improved task management and table management mechanism | |
US7590869B2 (en) | On-chip multi-core type tamper resistant microprocessor | |
JP4098478B2 (ja) | マイクロプロセッサ | |
JP3866597B2 (ja) | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 | |
JP3880933B2 (ja) | 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法 | |
CN107735768B (zh) | 处理数据的方法和设备 | |
CN107690628B (zh) | 具有所有权表的数据处理装置和方法 | |
CN107771323B (zh) | 共享页 | |
CN107690629B (zh) | 地址转换 | |
CN108509250A (zh) | 具有受保护的访客机验证主机控制的安全公共云 | |
KR100924043B1 (ko) | 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들 | |
JP4643427B2 (ja) | 暗号化機能内蔵ストレージシステム | |
US20070198851A1 (en) | Secure processor | |
JP2005521942A (ja) | 領域粒状、ハードウェア制御メモリ暗号化を提供するシステムおよび方法 | |
JP2006227839A (ja) | ストレージシステム、データ移動方法及び管理計算機 | |
US9116741B2 (en) | Computer program product, and information processing apparatus and method | |
JP4643702B2 (ja) | マイクロプロセッサ | |
US20210319117A1 (en) | Secure asset management system | |
CN114064520A (zh) | 进行阶层式高速缓存不写回即无效的计算机系统以及方法 | |
JP4021810B2 (ja) | プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法 | |
JP2010231623A (ja) | キャッシュメモリ制御装置及び方法 | |
JP6110417B2 (ja) | キャッシュメモリ制御装置および制御方法 | |
JP2010134572A (ja) | セキュリティを実現する装置、および方法 | |
CN117421748A (zh) | 计算机系统以及系统内存加解密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070608 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070820 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070918 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |