(57)【特許請求の範囲】
【請求項１】
命令コードを実行するコアと、
複数のウェイを有し、前記コアに対して入出力されるデータが格納されるキャッシュメモリ部とを備え、
前記キャッシュメモリ部は、
前記複数のウェイの内の１つのウェイに前記入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、
格納された前記暗号化カウンタデータと前記入出力されるデータとを排他的論理和演算処理する演算回路を有することを特徴とするプロセッサ。
【請求項２】
予め作成された前記暗号化カウンタデータを記憶する記憶部をさらに備えることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記記憶部は、一群の暗号化カウンタデータを有する暗号化カウンタデータテーブルを複数記憶していることを特徴とする請求項２記載のプロセッサ。
【請求項４】
前記暗号化カウンタデータは、前記キャッシュメモリ部におけるインデックスの値に応じたデータ値を有することを特徴とする請求項１記載のプロセッサ。
【請求項５】
前記キャッシュメモリ部の前記１つのウェイに前記暗号化カウンタデータを格納する第１の動作モードと、前記１つのウェイを前記コアに対して入出力されるデータを格納するキャッシュとして使用する第２の動作モードとを設定に応じて切り替えることを特徴とする請求項１記載のプロセッサ。
【請求項６】
前記コアに対して入出力されるデータをＡＥＳ暗号方式のＣＴＲモードで暗号化又は復号することを特徴とする請求項１記載のプロセッサ。
【請求項７】
命令コードを実行するコア、及び複数のウェイを有し、前記コアに対して入出力されるデータが格納されるキャッシュメモリ部とを有するプロセッサと、
前記プロセッサとは別のチップで実装され、前記プロセッサに入出力されるデータを記憶するメモリとを備え、
前記キャッシュメモリ部は、
前記複数のウェイの内の１つのウェイに前記入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、
格納された前記暗号化カウンタデータと前記入出力されるデータとを排他的論理和演算処理する演算回路を有することを特徴とするプロセッサシステム。
【請求項８】
予め作成された前記暗号化カウンタデータを記憶する記憶部をさらに備えることを特徴とする請求項７記載のプロセッサシステム。
【請求項９】
前記記憶部は、前記プロセッサの外部に設けられることを特徴とする請求項８記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及びプロセッサシステムに関し、プロセッサで扱うデータの暗号化技術に関する。
【背景技術】
【０００２】
コンピュータや携帯情報端末などの機器においては、動作をプログラムによって制御でき、多様な機能の実装が容易であることから、プロセッサが使用されることが多い。近年、これらの機器が普及するにつれ、機器で実行されるプログラムに関するセキュリティの重要性が高まっている。
【０００３】
プロセッサを使用するシステムの多くでは、命令の実行コードやデータが格納される大容量のメモリが、プロセッサとは別のチップにて実装される。このようにデータ等を格納したメモリが別のチップでプロセッサの外部に実装されることは、情報漏洩や解析対策の観点では好ましくない。メモリインタフェースを暗号化することも考えられるが、メモリアクセス時間の大幅な増加を伴う。
【０００４】
前述のような問題を解決するために、一般的にはデータ等を暗号化し、ソフトウェアによる処理によってメモリ上に復号した後、実行するなどの対策が取られている。しかし、この方法は、短い時間であってもメモリ上に復号されたデータが存在することになる。
【０００５】
セキュリティの問題に関しては、プロセッサの外側で扱われるデータには暗号化を施し、内側にはアクセス保護を施すことで、データを直接読み取ることを不可能とするセキュアプロセッサが用いられる場合がある。例えば、命令の実行コードやデータ等を暗号化して外部の主記憶装置や二次記憶装置などに格納し、プロセッサが命令を実行する際には、暗号化された実行コードを復号し、それをプロセッサ内のキャッシュメモリに格納して処理を実行する。本出願人は、このようなセキュアプロセッサをすでに提案している（特許文献１参照）。
【０００６】
また、キャッシュメモリのメモリエントリにおいて、データ領域に格納されたデータの符号化に利用される暗号鍵を示す情報を格納するメモリフィールドを有し、示される暗号鍵により対応するデータ領域のデータを符号化及び復号化する技術が提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１８５２８号公報
【特許文献２】特表２００５−５１２１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、特許文献１に記載の技術によれば、プロセッサの外部ではデータ等が暗号化されているので処理の安全性が高まり、またプロセッサから見ると暗号化されていることには関係なく命令の実行等が可能である。しかし、命令の実行コードやデータを外部のメモリから取得して、それを復号しながら命令を実行するために、処理時間が増大してしまう。また、データ等を暗号化及び復号するための暗号処理回路の追加などによって回路規模が非常に大きくなる。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、命令コードを実行するコアと複数のウェイを有するキャッシュメモリ部とを備えるプロセッサが提供される。キャッシュメモリ部は、複数のウェイの内の１つのウェイにコアに対して入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、格納された暗号化カウンタデータと入出力されるデータとを排他的論理和演算処理する演算回路を有する。
【発明の効果】
【００１０】
開示のプロセッサによれば、予め暗号化処理済の暗号化カウンタデータをキャッシュメモリ部に格納してコアに対して入出力されるデータの暗号化又は復号を行う。したがって、暗号化又は復号を行う度に暗号化カウンタデータを生成する共通鍵暗号処理を行う必要がなく、安全性を損なうことなく高速なメモリアクセスを実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態におけるプロセッサシステムの構成例を示す図である。
【図２】図１に示した命令処理部の構成例を示す図である。
【図３】図１に示したキャッシュメモリ部の構成例を示す図である。
【図４】本実施形態におけるキャッシュメモリ部の構成例を示す図である。
【図５】本実施形態における暗号化カウンタデータを説明するための図である。
【図６】図６（Ａ）は本実施形態における暗号化カウンタデータの生成処理の一例を示すフローチャートであり、図６（Ｂ）は本実施形態における暗号化カウンタデータのセットアップ処理の一例を示すフローチャートである。
【図７】本実施形態でのデータの入出力タイミングを説明するためのタイミングチャートである。
【図８】本実施形態におけるキャッシュメモリ部の他の構成例を示す図である。
【図９】暗号処理回路の実装例を示す図である。
【図１０】図９に示したシステム構成でのデータの入出力タイミングを説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
【００１３】
本実施形態において、データ等を暗号化及び復号する暗号方式は、暗号化及び復号に共通の鍵を使用する共通鍵暗号方式（例えばＡＥＳ（Advanced Encryption Standard）暗号方式）を用いる。共通鍵暗号方式におけるブロック暗号の利用モードとしては、ＥＣＢ（Electronic CodeBook）、ＣＢＣ（Cipher Block Chaining）、ＣＦＢ（Cipher FeedBack）、ＯＦＢ（Output FeedBack）、及びＣＴＲ（CounTeR）が代表的なモードとして知られている。これらのモードのうち、プロセッサによる一般的なメモリアクセス、すなわちランダムアクセスに使用可能なものは、ＥＣＢモード及びＣＴＲモードの２つである。しかし、ＥＣＢモードでは暗号化を一つの鍵で行うため、暗号化されていない平文と暗号文との関係が常に同じになることから、出現頻度が高い情報（例えば、０ｘ００、０ｘＦＦなど）のパターン解析により暗号強度が相対的に弱くなる。そのため、ランダムアクセスが行われる場合、暗号化にはＣＴＲモードが使用されることが多い。
【００１４】
以下に説明する本発明の実施形態では、共通鍵暗号方式のＣＴＲ（カウンタ）モードでデータ等の暗号化及び復号を行う。ＣＴＲモードでは、アクセスするデータに依存するカウンタデータを暗号化し、暗号化カウンタデータを生成する。そして、暗号化カウンタデータと平文とをＸＯＲ（排他的論理和）演算することで平文から暗号文に暗号化し、暗号化カウンタデータと暗号文とをＸＯＲ演算することで暗号文から平文に復号する。
【００１５】
図９は、共通鍵暗号方式のＣＴＲモードでデータ等を暗号化及び復号する暗号処理回路を実装したシステムの一例を示す図である。図９において、１０１はＣＰＵ（Central Processing Unit）やＤＭＡ（Direct Memory Access）コントローラなどの上位バスモジュール、１０２はメモリコントローラ、１０３は外部メモリ、１０４は暗号処理回路である。
【００１６】
上位バスモジュール１０１、メモリコントローラ１０２、及び暗号処理回路１０４が１つのチップ内に実装され、そのチップとは別のチップとして外部メモリ１０３が実装されている。上位バスモジュール１０１と暗号処理回路１０４とは、バス制御信号ＣＢ１Ａ、アドレス信号Ａ１Ａ、出力データバスＤＯ１Ａ、及び入力データバスＤＩ１Ａにより接続されている。また、メモリコントローラ１０２と暗号処理回路１０４とは、バス制御信号ＣＢ１Ｂ、アドレス信号Ａ１Ｂ、出力データバスＤＯ１Ｂ、及び入力データバスＤＩ１Ｂにより接続されている。メモリコントローラ１０２は、上位バスモジュール１０１からのメモリアクセス要求を外部メモリ１０３に対する制御信号に変換し、アドレス信号Ａ２、メモリ制御信号ＣＭ２、出力データバスＤＯ２、及び入力データバスＤＩ２を用いてメモリアクセスを行う。アドレス信号Ａ２、メモリ制御信号ＣＭ２、出力データバスＤＯ２、及び入力データバスＤＩ２は、チップの外部ピンＰＡＤ、ＰＣＭ、ＰＤＴを介して、アドレス信号Ａ３、メモリ制御信号ＣＭ３、データバスＤ３として外部メモリ１０３に接続される。
【００１７】
暗号処理回路１０４は、共通鍵暗号方式のＣＴＲモードで暗号化及び復号を行う。暗号処理回路１０４は、バス制御回路１１１、アドレス保持レジスタ１１２、共通鍵暗号処理制御部１１３、暗号処理演算器（ＡＥＳ演算器）１１４、アドレス上位レジスタ１１５、鍵レジスタ１１６、及び演算結果保持レジスタ１１７を有する。また、暗号処理回路１０４は、出力データ保持レジスタ１１８、ＸＯＲ演算回路１１９、入力データ保持レジスタ１２０、及びＸＯＲ演算回路１２１を有する。
【００１８】
バス制御回路１１１は、バス制御信号ＣＢ１Ａにより入力されるコマンド等に応じて各種信号の入出力を制御する。また、バス制御回路１１１は、入力されたコマンドがリードアクセスを要求するリードコマンドの場合には、アドレスラッチ信号ＡＤＬ及び入力データラッチ信号ＩＤＬをそれぞれ所定のタイミングで出力する。また、バス制御回路１１１は、入力されたコマンドがライトアクセスを要求するライトコマンドの場合には、アドレスラッチ信号ＡＤＬ及び出力データラッチ信号ＯＤＬをそれぞれ所定のタイミングで出力する。アドレス保持レジスタ１１２は、アドレス信号Ａ１Ａにより入力されるアドレス（アクセスアドレス）を、アドレスラッチ信号ＡＤＬに応じてラッチして保持する。
【００１９】
共通鍵暗号処理制御部１１３は、共通鍵暗号処理（ＡＥＳ処理）に係る制御を行う。共通鍵暗号処理では入力と鍵を用いた処理（計算）を何回行ったものを暗号化データとするかが規定されているので、共通鍵暗号処理制御部１１３は、例えば演算対象データ（入力、鍵）を入力したり演算結果を出力したりする演算に係るタイミングの制御等を行う。暗号処理演算器１１４は、共通鍵暗号処理における演算処理を行う。
【００２０】
共通鍵暗号処理はＣＴＲモードで行うが、カウンタデータの要素として、上位にはアドレス上位レジスタ１１５に設定された任意の値を用い、下位にはアドレス保持レジスタ１１２に保持された値を用い、それらを組み合わせて（連結して）カウンタデータとする。また、暗号鍵は、鍵レジスタ１１６に設定された値を用いる。なお、アドレス上位レジスタ１１５及び鍵レジスタ１１６には、ソフトウェア等によって予め値を設定しておく。アドレス上位レジスタ１１５の値とアドレス保持レジスタ１１２の値との連結値を入力とし、鍵レジスタ１１６の値を鍵として、共通鍵暗号処理制御部１１３によってタイミング等を制御し、暗号処理演算器１１４で演算処理することで共通鍵暗号処理が行われる。共通鍵暗号処理の演算結果は、演算結果保持レジスタ１１７に格納される。
【００２１】
出力データ保持レジスタ１１８は、出力データバスＤＯ１Ａにより入力されるデータ（ライトデータ）を、出力データラッチ信号ＯＤＬに応じてラッチして保持する。ＸＯＲ演算回路１１９は、演算結果保持レジスタ１１７に保持されている暗号処理結果と出力データ保持レジスタ１１８の出力値とのＸＯＲ演算を行い、演算結果を暗号化ライトデータとして出力データバスＤＯ１Ｂにより出力する。
【００２２】
入力データ保持レジスタ１２０は、入力データバスＤＩ１Ｂにより入力されるデータ（リードデータ）を、入力データラッチ信号ＩＤＬに応じてラッチして保持する。ＸＯＲ演算回路１２１は、演算結果保持レジスタ１１７に保持されている暗号処理結果と入力データ保持レジスタ１２０の出力値とのＸＯＲ演算を行い、演算結果を復号リードデータとして入力データバスＤＩ１Ａにより出力する。
【００２３】
図９に示したシステムでのライトアクセス処理における暗号処理回路１０４の動作について、図１０（Ａ）を参照して説明する。図１０（Ａ）は、ライトアクセス処理における暗号処理回路１０４の動作を説明するためのタイミングチャートである。
【００２４】
上位バスモジュール１０１からのライトコマンド及びアクセスアドレスが、バス制御信号ＣＢ１Ａ及びアドレス信号Ａ１Ａにより暗号処理回路１０４に入力される。暗号処理回路１０４に入力されたライトコマンドは、バス制御回路１１１にて保持されるとともに、コマンド判定が行われ要求されたメモリアクセスがライトアクセスであると判断される。また、暗号処理回路１０４に入力されたアクセスアドレスは、コマンドと同様のタイミングでアドレス保持レジスタ１１２に保持された後、共通鍵暗号処理制御部１１３に供給される。そして、供給されたアクセスアドレスの値を用いた共通鍵暗号処理（ＡＥＳ処理）が、共通鍵暗号処理制御部１１３及び暗号処理演算器１１４により開始される。
【００２５】
また、上位バスモジュール１０１からライトコマンド及びアクセスアドレスの出力後の次のサイクルにて出力されたライトデータが、出力データバスＤＯ１Ａにより暗号処理回路１０４に入力されて、出力データ保持レジスタ１１８に保持される。バス制御回路１１１、アドレス保持レジスタ１１２、及び出力データ保持レジスタ１１８は、共通鍵暗号処理の実行中において、それぞれ保持しているライトコマンド、アクセスアドレス、及びライトデータを継続して保持する。
【００２６】
共通鍵暗号処理制御部１１３及び暗号処理演算器１１４による共通鍵暗号処理が完了すると、暗号処理結果（演算結果）が演算結果保持レジスタ１１７に保持される。また、共通鍵暗号処理完了と同時に、保持されているライトコマンド及びアクセスアドレスが、バス制御信号ＣＢ１Ｂ及びアドレス信号Ａ１Ｂによりメモリコントローラ１０２に出力される。さらに、それに続いて、保持されているライトデータと暗号処理結果とをＸＯＲ演算回路１１９でＸＯＲ演算した結果が、暗号化ライトデータとして出力データバスＤＯ１Ｂによりメモリコントローラ１０２に出力される。
【００２７】
次に、図９に示したシステムでのリードアクセス処理における暗号処理回路１０４の動作について、図１０（Ｂ）を参照して説明する。図１０（Ｂ）は、リードアクセス処理における暗号処理回路１０４の動作を説明するためのタイミングチャートである。
【００２８】
上位バスモジュール１０１からのリードコマンド及びアクセスアドレスが、バス制御信号ＣＢ１Ａ及びアドレス信号Ａ１Ａにより暗号処理回路１０４に入力される。暗号処理回路１０４に入力されたリードコマンドは、バス制御回路１１１にて保持されるとともに、コマンド判定が行われ要求されたメモリアクセスがリードアクセスであると判断される。また、暗号処理回路１０４に入力されたアクセスアドレスは、コマンドと同様のタイミングでアドレス保持レジスタ１１２に保持された後、共通鍵暗号処理制御部１１３に供給される。そして、供給されたアクセスアドレスの値を用いた共通鍵暗号処理（ＡＥＳ処理）が、共通鍵暗号処理制御部１１３及び暗号処理演算器１１４により開始される。この共通鍵暗号処理の実行中において、バス制御回路１１１及びアドレス保持レジスタ１１２は、それぞれ保持しているリードコマンド及びアクセスアドレスを継続して保持する。
【００２９】
共通鍵暗号処理制御部１１３及び暗号処理演算器１１４による共通鍵暗号処理が完了すると、暗号処理結果（演算結果）が演算結果保持レジスタ１１７に保持される。また、共通鍵暗号処理完了と同時に、保持されているリードコマンド及びアクセスアドレスが、バス制御信号ＣＢ１Ｂ及びアドレス信号Ａ１Ｂによりメモリコントローラ１０２に出力される。
【００３０】
そして、リードコマンドに対する応答として、メモリコントローラ１０２からリードデータが、入力データバスＤＩ１Ｂにより暗号処理回路１０４に入力されて、入力データ保持レジスタ１２０に保持される。そして、入力データ保持レジスタ１２０に保持されたリードデータと暗号処理結果とをＸＯＲ演算回路１２１でＸＯＲ演算した結果が、復号リードデータとして入力データバスＤＩ１Ａにより入力される。
【００３１】
しかしながら、前述したような構成では、メモリアクセスが発生する度に、共通鍵暗号処理を行うため、処理時間が大幅に増大する。例えば、ライトアクセス処理では、図１０（Ａ）に示したように共通鍵暗号処理に要する処理時間だけ遅延し、またリードアクセス処理では、図１０（Ｂ）に示したように共通鍵暗号処理に要する処理時間に１サイクル時間加えた時間だけ遅延する。また、共通鍵暗号処理の実行に係る暗号処理回路により回路規模が増大する。
【００３２】
そこで、本発明における実施形態では、プロセッサのキャッシュメモリを用いて暗号処理機能を実現する。これにより、メモリアクセスに係る高速性を損なうことなく、安全性の高い暗号処理機能を実現する。
【００３３】
図１は、本発明の一実施形態におけるプロセッサシステムの構成例を示す図である。
図１において、１はプロセッサであり、プロセッサ１内の各機能部は１チップ上に実装される。プロセッサ１は、ＣＰＵコア２、キャッシュメモリ部（一次レベルキャッシュ／二次レベルキャッシュ）３、暗号化ＣＴＲテーブル４、ＲＯＭ５、メモリコントローラ６、ＤＭＡコントローラ７、及びレジスタインタフェース８を有する。キャッシュメモリ部３、暗号化ＣＴＲテーブル４、ＲＯＭ５、メモリコントローラ６、ＤＭＡコントローラ７、及びレジスタインタフェース８は、メインバス９を介して互いに通信可能に接続される。また、１０はプロセッサ１とは別チップとして実装される外部メモリである。また、後述するように、ＣＴＲテーブルを外部ＲＯＭ１２に格納するようにして外部ＲＯＭ１２からデータを取得するＲＯＭインタフェース１１を有するようにしても良い。
【００３４】
図２は、図１に示した命令処理部１３の構成例を示すブロック図である。図２に示す命令処理部１３の動作は以下のようになる。
【００３５】
（１）命令フェッチ
実行するための命令を外部バスより外部バスインタフェース３５を介して獲得する。なお、ここでいう外部バスは、図１に示したメインバス９に相当する。まず、プログラムカウンタ２１の指し示す命令が命令バッファ２２に存在するかを確認し、ない場合、命令バッファ２２は命令をフェッチする要求を命令アクセスＭＭＵ２３に送る。命令アクセスＭＭＵ２３はプログラムが使用する論理アドレスから、ハードウェアのマッピング順序に依存する物理アドレスに変換する。そのアドレスを用いて命令アクセス一次キャッシュタグ２４を検索し、一致すれば命令アクセス一次キャッシュデータ２５に該当データが存在するため、読み出しアドレスを送り、命令データを命令バッファ２２に返す。存在しない場合は、更に二次キャッシュタグ２６を検索し、なお存在しない場合は外部バスというように要求を発行し、戻りデータを順次、二次キャッシュデータ２７、命令アクセス一次キャッシュデータ２５へと補充する。このとき、補充されたことを二次キャッシュタグ２６、命令アクセス一次キャッシュタグ２４の更新により記憶する。補充されたデータは、命令アクセス一次キャッシュデータ２５に存在しているときと同じ要領で、命令バッファ２２に格納する。
【００３６】
（２）命令の実行
命令バッファ２２に格納された命令列は、実行ユニット２８に送られ、それぞれの命令の種別に応じて演算器２９、ロードストアユニット３０に転送される。演算命令や分岐命令は演算器２９の出力を汎用レジスタファイル３１に記録するか、あるいはプログラムカウンタ（不図示）を更新する、といった処理を行う。また、ロードストア命令は、ロードストアユニット３０にて、命令アクセスと同様にデータアクセスＭＭＵ３２−データアクセス一次キャッシュタグ３３−データアクセス一次キャッシュデータ３４と順次アクセスし、そのデータを汎用レジスタファイル３１にコピーするロード命令、あるいは、そのエントリに対し、汎用レジスタファイル３１からコピーするストア命令、と命令に応じて実行する。一次キャッシュにない場合は、命令実行機構と共用の二次キャッシュ、あるいは外部バスよりデータを獲得して、同様に実行する。実行の完了後、プログラムカウンタは逐次加算されるか、あるいは、分岐指示アドレスに更新され、再度（１）の命令フェッチを行う。
【００３７】
（３）全体
このように命令フェッチ、命令実行を繰り返し、マイクロプロセッサは動作する。
【００３８】
図３は、４ウェイセットアソシアティブキャッシュメモリのデータアクセス機構の構成図である。なお、図３に示す構成は、例えば図２に示した命令アクセス一次キャッシュタグ２４と命令アクセス一次キャッシュデータ２５との組、あるいはデータアクセス一次キャッシュタグ３３とデータアクセス一次キャッシュデータ３４との組に相当する。
アクセスリクエスト／アドレス（命令フェッチ／ロードストア）ＳＳ１はＭＭＵ４１に送られ、物理アドレスＳＳ２に変換された後、キャッシュタグ４３−０、４３−１、４３−２、４３−３及びキャッシュデータ４４−０、４４−１、４４−２、４４−３にアドレスとして送られる。ここで、例えばキャッシュタグ４３−０及びキャッシュデータ４４−０がウェイ０に対応し、キャッシュタグ４３−１及びキャッシュデータ４４−１がウェイ１に対応する。同様にキャッシュタグ４３−２及びキャッシュデータ４４−２がウェイ２に対応し、キャッシュタグ４３−３及びキャッシュデータ４４−３がウェイ３に対応する。
【００３９】
同一下位アドレス（インデックス）で検索されたタグ出力のうち、タグ出力が示すアドレス上位ビット（タグ）が、ＭＭＵ４１からのリクエストアドレスと一致したものがあれば、それはキャッシュデータ４４−０〜４４−３内に有効なデータが存在する（ヒット）ことを示す。これらの一致検出を比較器４６で行い、同時にそのヒット情報ＳＳ３でセレクタ４７を起動する。ヒットしていれば、そのデータは命令データＳＳ４等として命令バッファ等に送られる。ヒットしなかった場合は、キャッシュミスリクエストＳＳ５−１、キャッシュミスアドレスＳＳ５−２が、二次キャッシュに出力される。その後、二次キャッシュからの戻りデータは、キャッシュタグ４３−０〜４３−３及びキャッシュデータ４４−０〜４４−３を更新し、同様に命令バッファ等にデータを返す。キャッシュタグ４３−０〜４３−３及びキャッシュデータ４４−０〜４４−３を更新する場合には、書き込みアドレスＳＳ６がＭＭＵ４１から出力される。キャッシュタグ４３−０〜４３−３及びキャッシュデータ４４−０〜４４−３の更新は、タグ更新制御部４２及びデータ更新制御部４５により行われる。Ｎウェイ構成の場合、比較器４６及びセレクタ４７の入力がＮになる。
【００４０】
図４は、本実施形態におけるキャッシュメモリ部の構成例を示す図である。なお、以下の説明では、説明を簡略化するために２ウェイセットアソシアティブキャッシュメモリを一例として例示し説明する。
【００４１】
図４（ａ）は、２ウェイセットアソシアティブキャッシュメモリの構成例を示す図である。図４（ａ）において、６１−０はウェイ０のキャッシュタグメモリ、６１−１はウェイ１のキャッシュタグメモリである。６２−０はウェイ０のキャッシュデータメモリ、６２−１はウェイ１のキャッシュデータメモリである。また、６３は図３に示した比較器に対応するヒット判定部であり、６４は図３に示したセレクタ４７に対応するウェイ選択セレクタである。
【００４２】
図４（ａ）に示すように、キャッシュタグメモリ６１−０、６１−１には、アクセスアドレスにおける下位アドレス（インデックス）ＴＷＡＤ及び上位アドレス（タグ）ＴＷＤＴが供給される。また、キャッシュデータメモリ６２−０、６２−１には、アクセスアドレスにおける下位アドレス（インデックス）ＷＡＤ及びライトデータＷＤＴが供給される。そして、アクセスアドレスの下位アドレス（インデックス）に応じて、ウェイ０又１のキャッシュタグメモリ６１−０、６１−１、及びキャッシュデータメモリ６２−０、６２−１にアクセスアドレスの上位アドレス（タグ）及びライトデータが書き込まれる。
【００４３】
また、キャッシュタグメモリ６１−０、６１−１には、リードアクセス時にアクセスアドレスにおける下位アドレス（インデックス）ＴＲＡＤが供給され、それにより検索されたタグ出力がタグリードデータＴＲＤＴ０、ＴＲＤＴ１として出力される。同様に、キャッシュデータメモリ６２−０、６２−１には、リードアクセス時にアクセスアドレスにおける下位アドレス（インデックス）ＲＡＤが供給され、それにより検索されたデータ出力がリードデータＲＤＴ０、ＲＤＴ１として出力される。ここで、キャッシュタグメモリ６１−０、６１−１から出力されるタグリードデータＴＲＤＴ０、ＴＲＤＴ１は、インデックスに応じて検索されたアクセスアドレスにおける上位アドレス（タグ）である。ヒット判定部６３は、タグリードデータＴＲＤＴ０、ＴＲＤＴ１として出力された値とアクセスアドレスＡＤＤにおけるタグに相当する部分とを比較する。ヒット判定部６３での比較結果に応じてウェイ選択セレクタ６４によりリードデータＲＤＴ０、ＲＤＴ１が選択されてリードデータＲＤＡＴとしてＣＰＵコア２に出力される。
【００４４】
本実施形態においては、図４（ｂ）に示すように、１つのウェイのキャッシュデータメモリに共通鍵暗号方式のＣＴＲモードで用いる暗号化カウンタデータ（ＣＴＲ−ＤＡＴＡ）を格納することで暗号処理機能を実現する。図４（ｂ）に示す例は、ウェイ１を暗号化カウンタデータの格納に用いた場合を示している。図４（ｂ）において、７１−０、７１−１はキャッシュタグメモリであり、図４（ａ）に示したキャッシュタグメモリ６１−０、６１−１に対応する。また、７２−０、７２−１はキャッシュデータメモリであり、図４（ａ）に示したキャッシュデータメモリ６２−０、６２−１に対応する。ただし、本実施形態では、ウェイ１に対応するキャッシュタグメモリ７１−１は使用せず、ウェイ１に対応するキャッシュデータメモリ７２−１には暗号化カウンタデータ（ＣＴＲ−ＤＡＴＡ）が格納される。７３はヒット判定部であり、７４、７５はＸＯＲ演算回路である。
【００４５】
ライトアクセス時には、アクセスアドレスにおける下位アドレス（インデックス）ＴＷＡＤ及び上位アドレス（タグ）ＴＷＤＴがキャッシュタグメモリ７１−０に供給される。同様に、アクセスアドレスにおける下位アドレス（インデックス）ＷＡＤがキャッシュデータメモリ７２−０、７２−１に供給される。これにより、キャッシュデータメモリ７２−１からアクセスアドレスにおける下位アドレス（インデックス）に応じた暗号化カウンタデータがリードデータＲＤＴ１としてＸＯＲ演算回路７５に出力される。ＸＯＲ演算回路７５は、キャッシュデータメモリ７２−１から出力された暗号化カウンタデータとライトデータＷＤＡＴとをＸＯＲ演算し、演算結果をライトデータＷＤＴとしてキャッシュデータメモリ７２−０に出力する。ここで、ＸＯＲ演算回路７５からキャッシュデータメモリ７２−０に供給されるライトデータＷＤＴは、平文のライトデータＷＤＡＴを暗号化カウンタデータにより暗号化した暗号文データである。そして、アクセスアドレスの下位アドレス（インデックス）に応じて、ウェイ０のキャッシュタグメモリ７１−０及びキャッシュデータメモリ７２−０にアクセスアドレスの上位アドレス（タグ）及び暗号化したライトデータが書き込まれる。
【００４６】
また、リードアクセス時には、アクセスアドレスにおける下位アドレス（インデックス）ＴＲＡＤがキャッシュタグメモリ７１−０に供給され、それにより検索されたタグ出力がタグリードデータＴＲＤＴ０として出力される。同様に、アクセスアドレスにおける下位アドレス（インデックス）ＲＡＤがキャッシュデータメモリ７２−０、７２−１に供給される。これにより、検索されたデータ出力がリードデータＲＤＴ０、ＲＤＴ１として出力される。ここで、キャッシュデータメモリ７２−１から出力されるリードデータＲＤＴ１は、インデックスに応じた暗号化カウンタデータである。また、キャッシュタグメモリ７１−０から出力されるタグリードデータＴＲＤＴ０は、インデックスに応じて検索されたアクセスアドレスにおける上位アドレス（タグ）である。ヒット判定部７３は、タグリードデータＴＲＤＴ０として出力された値とアクセスアドレスＡＤＤにおけるタグに相当する部分とを比較する。その結果、一致した場合には、キャッシュデータメモリ７２−０、７２−１からそれぞれ出力されたリードデータと暗号化カウンタデータとをＸＯＲ演算回路７４によりＸＯＲ演算した結果をリードデータＲＤＡＴとしてＣＰＵコア２に対して出力させる。ここで、ＸＯＲ演算回路７４から出力されるリードデータＲＤＴは、暗号文のリードデータＲＤＴ０を暗号化カウンタデータにより復号したデータとなる。
【００４７】
図５は、キャッシュデータメモリに格納される暗号化カウンタデータの一例を示す図である。図５に示す例は、３２ビット幅のアドレスを有するシステムでの暗号化カウンタデータの例を示している。共通鍵暗号方式では、所定のブロックサイズ毎に暗号化又は復号され、ここでは１２８ビット毎に暗号化又は復号されるものとする。
【００４８】
図５（Ａ）に示したように、キャッシュサイズ（１つのウェイにおけるエントリ数）分のアドレス（インデックス）値に応じたデータを設定する。図５（Ａ）に示した例では、上位９６ビットを任意の値とし、下位３２ビットをアドレス値に応じたカウンタ値としている。この図５（Ａ）に示したデータをカウンタデータとして、暗号鍵を用いて暗号化することで図５（Ｂ）に示すようなブロックサイズを有する暗号化カウンタデータを取得し、キャッシュデータメモリに格納する。したがって、キャッシュデータメモリに格納された暗号化カウンタデータは、アクセスアドレスの下位ビット（インデックス）に依存したデータとなり、共通鍵暗号方式のＣＴＲモードでの暗号化又は復号が可能となる。
【００４９】
なお、前述した説明では、上位ビットに任意の値を用い、下位ビットにアドレス値を用いたカウンタデータを暗号化して暗号化カウンタデータを生成するようにしているが、これに限定されるものではない。アドレスに応じて暗号化カウンタデータが一意に決定されれば良く、カウンタデータは任意である。
【００５０】
前述した暗号化カウンタデータは、図６に示す処理フローに従ってキャッシュデータメモリに格納すれば良い。
【００５１】
図６（Ａ）は、暗号化カウンタデータの生成処理の一例を示すフローチャートであり、この処理は予めコンピュータを用いたソフトウェア処理等により実行しておく。
まず、生成処理では、キャッシュ１ウェイ分、すなわちキャッシュサイズ（エントリ数）のカウンタデータを準備する（ステップＳ１１）。次に、共通鍵暗号方式における鍵（任意）によりカウンタデータを暗号化する（ステップＳ１２）。これにより、キャッシュサイズ分の暗号化カウンタデータが完成する（ステップＳ１３）。完成した暗号化カウンタデータは、システム動作時にキャッシュデータメモリに供給可能なように、内部ＲＯＭに焼き付けたり、あるいは外部ＲＯＭ等に外部データとして保存したりしておく（ステップＳ１４）。
【００５２】
図６（Ｂ）は、キャッシュメモリを用いた暗号処理機能を実現する際に、キャッシュメモリに暗号化カウンタデータを設定するセットアップ処理の一例を示すフローチャートである。図６（Ｂ）に示す処理を実行するプログラムは、例えばプロセッサチップ内部のＲＯＭに書き込まれ、リセット解除後ＣＰＵ等により実行される。
システムに電源供給が開始され（パワーオン）、キャッシュメモリを用いて暗号処理機能を実現するように設定がなされている場合には、キャッシュメモリをＣＴＲ−ＲＡＭモードに設定する（ステップＳ２１）。ここで、ＣＴＲ−ＲＡＭモードは、キャッシュメモリを用いて暗号処理機能を実現する場合の動作モードであり、キャッシュメモリにおける１ウェイが暗号化カウンタデータを格納するために用いられるモードである。次に、暗号化ＣＴＲテーブル４、ＲＯＭ５、又は外部ＲＯＭ１２からキャッシュメモリ（キャッシュデータメモリ）に暗号化カウンタデータが転送される（ステップＳ２２）。その後、暗号化カウンタデータが格納されたキャッシュメモリの値を書き換えできないようロックする（ステップＳ２３）。なお、キャッシュメモリをロックする方法は、任意である。例えば暗号化カウンタデータが格納されたキャッシュメモリのライトイネーブル信号ＷＥをマスクするようにしても良いし、又はそのキャッシュメモリが最古のものとならないように管理するようにしても良い。
【００５３】
本実施形態によれば、キャッシュメモリに予め暗号化処理済の暗号化カウンタデータを格納してデータ等の暗号化又は復号を行うことにより、その都度、共通鍵暗号処理（暗号化カウンタデータの計算等）を行う必要がない。また、暗号機能を実現するために設けるＸＯＲ演算回路は、従来のキャッシュメモリが備えるウェイ選択用のセレクタと論理段数（処理に要するサイクル数）はほぼ同じである。したがって、図７に示すように暗号化しない場合のアクセスと同様のタイミングで処理することが可能であり、遅延時間が増大することもない。以上のように、本実施形態におけるプロセッサシステムでは、安全性を維持しつつ高速なメモリアクセスを実現することができる。図７は本実施形態におけるデータの入出力タイミングを示しており、図７（Ａ）及び（Ｃ）が通常動作時を示しており、図７（Ｂ）及び（Ｄ）が暗号処理実行時を示している。なお、図７（Ａ）及び（Ｂ）がリードアクセス時を示し、図７（Ｃ）及び（Ｄ）がライトアクセス時を示している。
【００５４】
なお、図８に示すように、外部からの設定信号ＥＲＯＭに応じて、キャッシュメモリを通常のキャッシュメモリとして使用するか、暗号処理機能を実現するために使用するかを切り替え可能なようにしても良い。なお、この図８において、図４に示した構成要素等と同一の構成要素等には同一の符号を付している。
【００５５】
図８において、８１−０、８１−１はウェイ０、ウェイ１のキャッシュタグメモリであり、８２−０、８２−１はウェイ０、ウェイ１のキャッシュデータメモリである。８３はヒット判定部、８４はリードアクセス時のウェイ選択セレクタ、８５，８６はＸＯＲ演算回路である。また、８７はウェイ選択セレクタ８４の出力又はＸＯＲ演算回路８５の出力を選択するセレクタであり、８８はＯＲ（論理和）演算回路、８９はＡＮＤ（論理積）演算回路である。
【００５６】
図８に示すように設定信号ＥＲＯＭが真のとき（暗号処理機能がオン）には、ＯＲ演算回路８８によりキャッシュデータメモリ８２−１のライトイネーブル信号ＷＥ１をマスクする。また、ＡＮＤ回路８９によりキャッシュデータメモリ８２−１からの暗号化カウンタデータがＸＯＲ演算回路８６に供給されるようにする。また、セレクタ８７が、ＸＯＲ演算回路８５の出力をリードデータＲＤＡＴとして出力するよう制御する。
【００５７】
一方、設定信号ＥＲＯＭが偽のとき（暗号処理機能がオフ）には、ＯＲ演算回路８８によりキャッシュデータメモリ８２−１のライトイネーブル信号ＷＥ１を非マスク化する。また、ＡＮＤ回路８９によりキャッシュデータメモリ８２−１からの暗号化カウンタデータをマスクする。また、セレクタ８７が、ウェイ選択セレクタ８４の出力をリードデータＲＤＡＴとして出力するよう制御する。以上のように構成すれば、設定信号ＥＲＯＭに応じて、キャッシュメモリを通常のキャッシュメモリとしても使用することが可能になる。
【００５８】
なお、前述した説明では、説明を簡略化するために２ウェイセットアソシアティブのキャッシュメモリを例示して説明したが、複数のウェイを有するマルチウェイ（多ウェイ）セットアソシアティブのキャッシュメモリに本実施形態は適用可能である。Ｎウェイセットアソシアティブのキャッシュメモリの場合でも、１つのウェイを暗号化カウンタデータの格納に用い、残りのウェイは通常と同様に使用することで本実施形態における暗号処理機能を実現することができる。
【００５９】
また、暗号化カウンタデータは１つに限らず、複数種類の暗号化カウンタデータを備え、適宜切り替えるようにしても良い。例えば、図１に示す暗号化ＣＴＲテーブルに複数種類の暗号化カウンタデータをテーブルとして記憶しておき、外部からの設定等に応じてキャッシュメモリに格納する暗号化カウンタテーブルを切り替えるようにしても良い。このようにすれば、暗号強度が低下することを抑制することができる。
【００６０】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６１】
１  プロセッサ
２  ＣＰＵコア
３  キャッシュメモリ部
４  暗号化ＣＴＲテーブル
５  ＲＯＭ
６  メモリコントローラ
１０  メモリ
６１−０、６１−１、７１−１、７１−２  キャッシュタグメモリ
６２−０、６２−１、７２−１、７２−２  キャッシュデータメモリ
６３、７３  ヒット判定部
６４  セレクタ
７４、７５  ＸＯＲ演算回路
【図１】
0005353828.tif 000002
【図２】
0005353828.tif 000003
【図３】
0005353828.tif 000004
【図４】
0005353828.tif 000005
【図５】
0005353828.tif 000006
【図６】
0005353828.tif 000007
【図７】
0005353828.tif 000008
【図８】
0005353828.tif 000009
【図９】
0005353828.tif 000010
【図１０】
0005353828.tif 000011