(57)【特許請求の範囲】
【請求項１】
セキュア情報及び非セキュア情報を用いて処理を行うセキュアモードと、非セキュア情報を用いて処理を行う通常モードとを切り替えて動作するプロセッサであって、
外部メモリから取得したセキュア情報及び非セキュア情報と、格納している各情報に対応付けて、各情報が、セキュア情報及び非セキュア情報の何れであるかを示す属性情報と、格納している各セキュア情報に対応付けて、各セキュア情報が、複数のセキュア処理のうち、いずれのセキュア処理で用いられる情報であるかを特定するための処理特定情報とを記憶している内部メモリと、
セキュアモードから通常モードへ切り替える際、切り替え前に、前記属性情報に基づき、各情報がセキュア情報及び非セキュア情報の何れであるかを判断することにより、前記内部メモリに格納されているセキュア情報及び非セキュア情報から、セキュア情報を特定し、無効化する無効化手段と
を備えることを特徴とするプロセッサ。
【請求項２】
外部メモリから取得したセキュア命令コード、及び非セキュア命令コードを記憶している内部メモリと、
命令コードを解読し、実行する実行手段と、
前記実行手段が、セキュア命令コードを実行することにより、バスアクセスが発生する場合に、前記バスアクセスに、セキュア命令コードの実行に伴うバスアクセスである旨を示すアクセス要求セキュア属性を付加するバスアクセス制御手段と
を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記内部メモリは、
格納している各命令コードに対応付けて、各命令コードが、セキュア命令コード及び非セキュア命令コードの何れであるかを示す属性情報を記憶しており、
前記バスアクセス制御手段は、
前記内部メモリから、命令コードと当該命令コードに対応する属性情報とを読み出し、読み出した前記属性情報を、前記アクセス要求セキュア属性として、前記バスアクセスに付加する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記内部メモリは、
キャッシュライン単位で情報を管理するキャッシュメモリであって、
前記キャッシュメモリのキャッシュライン単位で、セキュア命令コード及び非セキュア命令コードの何れであるかを示す属性情報を管理している
ことを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記内部メモリは、更に
格納している各セキュア命令コードに対応付けて、各セキュア命令コードが、複数のセキュア処理のうち、いずれのセキュア処理で用いられる命令コードであるかを特定するための処理特定情報を記憶しており、
前記バスアクセス制御手段は、更に、
前記内部メモリからセキュア命令コードを読み出す場合に、属性情報と共に、当該セキュア命令コードに対応する処理特定情報を読み出し、読み出した前記属性情報及び前記処理特定情報を、前記アクセス要求セキュア属性として、前記バスアクセスに付加する
ことを特徴とする請求項３に記載のプロセッサ。
【請求項６】
セキュア情報及び非セキュア情報を記憶しており、複数のサブセキュア領域から成るセキュア領域を備え、前記セキュア領域に、前記セキュア情報を格納している外部メモリと、
前記外部メモリから情報を読み出す読出手段と、
前記複数のサブセキュア領域について、それぞれの位置を特定するためのサブセキュア領域位置情報を記憶している位置情報記憶手段と、
前記サブセキュア領域位置情報に基づき、前記読出手段が読み出した前記情報が、セキュア情報及び非セキュア情報の何れであるかを判断すると共に、前記情報がセキュア情報である場合に、何れのサブセキュア領域から読み出されたのか判断する判断手段と、
前記判断の結果、読み出した前記情報がセキュア情報である場合に、セキュアを示す属性情報と、前記情報が格納されていたサブセキュア領域を特定するための特定情報とを生成し、読み出した前記情報が非セキュア情報である場合に、非セキュアを示す属性情報を生成する属性情報生成手段とを備えるメモリインタフェースと、
セキュア情報及び非セキュア情報を用い処理を行うセキュアモードと、非セキュア情報を用いて処理を行う通常モードとを切り替えて動作し、
前記外部メモリから取得したセキュア情報及び非セキュア情報を格納している内部メモリと、
セキュアモードから通常モードへ切り替える際、切り替え前に、前記メモリインタフェースから受け取った属性情報を参照することにより、前記内部メモリに格納されているセキュア情報及び非セキュア情報から、セキュア情報を特定し、無効化する無効化手段とを備えるプロセッサと
から構成されることを特徴とするセキュア処理システム。
【請求項７】
セキュア命令コード、セキュアデータ、非セキュア命令コード、及び非セキュアデータを記憶している外部メモリと、
前記外部メモリから命令コードを読み出し、読み出した前記命令コードが、セキュア命令コードであるか非セキュア命令コードであるかを判断し、判断結果に基づく属性情報を生成し、読み出した前記命令コードと生成した前記属性情報とを、プロセッサへ出力するメモリインタフェースと、
前記外部メモリから取得したセキュア命令コード、及び非セキュア命令コードを記憶している内部メモリと、
命令コードを解読し、実行する実行手段と、
前記実行手段が、セキュア命令コードを実行することにより、バスアクセスが発生する場合に、前記バスアクセスに、セキュア命令コードの実行に伴うバスアクセスである旨を示すアクセス要求セキュア属性を付加するバスアクセス制御手段とを備えるプロセッサと
から構成されることを特徴とする請求項６に記載のセキュア処理システム。
【請求項８】
前記外部メモリは、
複数のサブセキュア領域からなるセキュア領域を備え、前記セキュア領域に、前記セキュア命令コード、及び前記セキュアデータを格納しており、
前記メモリインタフェースは、
前記外部メモリから命令コードを読み出す読出手段と、
前記複数のサブセキュア領域について、それぞれの位置を特定するためのサブセキュア領域位置情報を記憶している位置情報記憶手段と、
前記サブセキュア領域位置情報に基づき、前記読出手段が読み出した前記命令コードが、セキュア命令コード及び非セキュア命令コードの何れであるか判断すると共に、前記命令コードがセキュア命令コードである場合に、何れのサブセキュア領域から読み出されたのか判断する判断手段と、
前記判断の結果、読み出した前記命令コードがセキュア命令コードである場合に、セキュアを示す属性情報と、前記命令コードが格納されていたサブセキュア領域を特定するための特定情報を生成し、読み出した前記命令コードが非セキュア命令コードである場合に、非セキュアを示す属性情報を生成する属性情報生成手段とを備える
ことを特徴とする請求項７に記載のセキュア処理システム。
【請求項９】
前記内部メモリ、前記実行手段、及び前記バスアクセス制御手段は、一つの集積回路上に構成されている
ことを特徴とする請求項２に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアな処理を行うプロセッサ及びシステムに関し、特に、システムLSIにおけるセキュア機構実現のための技術に関する。
【背景技術】
【０００２】
近年のデジタルＡＶ機器は、ネットワーク経由のコンテンツダウンロード、コンテンツの蓄積、再生等、多様な処理を行うようになってきた。そのため、機器におけるコンテンツの著作権保護機構が、重要となってきている。
機器におけるコンテンツの著作権保護を実現する方法として、プロセッサにセキュリティを実装する技術が開示されている。それは、以下のような技術である。
【０００３】
プロセッサコアは、ライセンスの管理や、コンテンツの復号を行うためのセキュアモードと、通常の処理を行うための通常モードとを備え、セキュアモードと通常モードとを切り替えて処理を行う。プロセッサが外部メモリ等、セキュア資源を有するバススレーブモジュールにアクセスする場合には、プロセッサコアは、セキュアモード及び通常モードの何れで動作中であるかを示すモードステータス信号をバスインタフェースへ発行し、バスインタフェースは、バススレーブモジュールへのアクセス要求に、モードステータス信号が示すモードを、セキュア属性として付加する。これにより、バススレーブモジュールは、セキュア属性を判断し、セキュア属性が「セキュア」を示す場合のみ、セキュア資源へのアクセスを許可する。
【特許文献１】特開２００２‐２０２７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記のように、プロセッサコアがセキュアモードと通常モードとを切り替えて動作する場合、セキュアモードで動作中にフェッチした命令コード及びデータが、通常モードのプロセッサコアに解析されるのを防止するために、通常モードへの切り替え時には、フェッチした命令コード及びデータを無効化し、読み出せない状態にしてから、通常モードに復帰する。
【０００５】
しかしながら、セキュアモードで動作中にフェッチした命令コードやデータがすべて、真に秘匿にすべき情報とは限らず、通常モードで使用可能な情報も含まれる。即ち、セキュアモード時にフェッチした命令キャッシュ上の命令コードは、通常モードでも使用する命令コードであっても、モード切り替え時に無効化されてしまうため、通常モード復帰後には読み出すことができず、キャッシュミスヒットする。そのため、通常モードへの復帰後のプロセッサ処理性能が低下するという問題がある。    
【０００６】
そこで本発明は、かかる問題点に鑑みてなされたものであり、セキュアモードと通常モードとの二つの動作モードを切り替えて動作するプロセッサにおいて、セキュアモードから通常モードへの復帰後、プロセッサ処理性能が低下することのないプロセッサ、及びセキュア処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、セキュア情報及び非セキュア情報を用いて処理を行うセキュアモードと、非セキュア情報を用いて処理を行う通常モードとを切り替えて動作するプロセッサであって、外部メモリから取得したセキュア情報及び非セキュア情報と、格納している各情報に対応付けて、各情報が、セキュア情報及び非セキュア情報の何れであるかを示す属性情報と、格納している各セキュア情報に対応付けて、各セキュア情報が、複数のセキュア処理のうち、いずれのセキュア処理で用いられる情報であるかを特定するための処理特定情報とを記憶している内部メモリと、セキュアモードから通常モードへ切り替える際、切り替え前に、前記属性情報に基づき、各情報がセキュア情報及び非セキュア情報の何れであるかを判断することにより、前記内部メモリに格納されているセキュア情報及び非セキュア情報から、セキュア情報を特定し、無効化する無効化手段とを備えることを特徴とする。
【発明の効果】
【０００８】
上記の構成によると、プロセッサは、通常モードへ復帰する前に、セキュア情報を特定し、セキュア情報のみを無効化することにより、内部メモリに非セキュア情報を残した状態で、通常モードへ復帰する。これにより、通常モード復帰後のプロセッサは、外部メモリにアクセスすることなく、内部メモリに格納された非セキュア情報を利用できるため、プロセッサ処理性能が低下することなく、処理を続けることができる。
【０００９】
更に、上記の構成によると、プロセッサは属性情報を用いて、セキュア情報を特定することができる。また、属性情報は、各情報と対応付けて、当該情報がセキュア情報及び非セキュア情報の何れであるかを示すものであるため、通常モードへ復帰する際、プロセッサは複雑な処理を行う必要がなく、セキュア情報を特定することができる。
更に、上記の構成によると、プロセッサは、処理特定情報に応じたセキュアな処理を行うことができる。
【００１０】
また、本発明は、プロセッサであって、外部メモリから取得したセキュア命令コード、及び非セキュア命令コードを記憶している内部メモリと、命令コードを解読し、実行する実行手段と、前記実行手段が、セキュア命令コードを実行することにより、バスアクセスが発生する場合に、前記バスアクセスに、セキュア命令コードの実行に伴うバスアクセスである旨を示すアクセス要求セキュア属性を付加するバスアクセス制御手段とを備えることを特徴とする。
【００１１】
この構成によると、プロセッサは、セキュアな処理を行うためのセキュアモードを備えていない場合であっても、セキュアを示すアクセス要求セキュア属性を有するバスアクセスを、バススレーブモジュールに発行することができる。セキュア資源を有するバススレーブモジュールにおいて、バスマスタであるプロセッサから、セキュアを示すアクセス要求セキュア属性を受け付けた場合にのみ、セキュア資源へのアクセスを許可する機構を設けることにより、セキュアモードを備えていないプロセッサであっても、外部のバススレーブモジュールが有するセキュア資源を利用することが可能となる。
【００１２】
ここで、前記内部メモリは、格納している各命令コードに対応付けて、各命令コードが、セキュア命令コード及び非セキュア命令コードの何れであるかを示す属性情報を記憶しており、前記バスアクセス制御手段は、前記内部メモリから、命令コードと当該命令コードに対応する属性情報とを読み出し、読み出した前記属性情報を、前記アクセス要求セキュア属性として、前記バスアクセスに付加するように構成してもよい。
【００１３】
この構成によると、プロセッサは属性情報を用いて、実行する命令コードがセキュア命令コードであるか、非セキュア命令コードであるかを判別できる。  
ここで、前記内部メモリは、キャッシュライン単位で情報を管理するキャッシュメモリであって、前記キャッシュメモリのキャッシュライン単位で、セキュア命令コード及び非セキュア命令コードの何れであるかを示す属性情報を管理しているように構成してもよい。
【００１４】
この構成によると、プロセッサは、キャッシュライン単位で、セキュア命令コード及び非セキュア命令コードの別を管理しているため、真に秘匿にすべき命令コードの実行に伴うバスアクセスに関して、アクセス要求セキュア属性を付加することが可能となる。
ここで、前記内部メモリは、更に格納している各セキュア命令コードに対応付けて、各セキュア命令コードが、複数のセキュア処理のうち、いずれのセキュア処理で用いられる命令コードであるかを特定するための処理特定情報を記憶しており、前記バスアクセス制御手段は、更に、前記内部メモリからセキュア命令コードを読み出す場合に、属性情報と共に、当該セキュア命令コードに対応する処理特定情報を読み出し、読み出した前記属性情報及び前記処理特定情報を、前記アクセス要求セキュア属性として、前記バスアクセスに付加するように構成してもよい。
【００１５】
この構成によると、プロセッサは、処理特定情報に応じたセキュアな処理を行うことができる。
また、本発明は、セキュア処理システムであって、セキュア情報及び非セキュア情報を記憶しており、複数のサブセキュア領域から成るセキュア領域を備え、前記セキュア領域に、前記セキュア情報を格納している外部メモリと、前記外部メモリから情報を読み出す読出手段と、前記複数のサブセキュア領域について、それぞれの位置を特定するためのサブセキュア領域位置情報を記憶している位置情報記憶手段と、前記サブセキュア領域位置情報に基づき、前記読出手段が読み出した前記情報が、セキュア情報及び非セキュア情報の何れであるかを判断すると共に、前記情報がセキュア情報である場合に、何れのサブセキュア領域から読み出されたのか判断する判断手段と、前記判断の結果、読み出した前記情報がセキュア情報である場合に、セキュアを示す属性情報と、前記情報が格納されていたサブセキュア領域を特定するための特定情報とを生成し、読み出した前記情報が非セキュア情報である場合に、非セキュアを示す属性情報を生成する属性情報生成手段とを備えるメモリインタフェースと、セキュア情報及び非セキュア情報を用い処理を行うセキュアモードと、非セキュア情報を用いて処理を行う通常モードとを切り替えて動作し、前記外部メモリから取得したセキュア情報及び非セキュア情報を格納している内部メモリと、セキュアモードから通常モードへ切り替える際、切り替え前に、前記メモリインタフェースから受け取った属性情報を参照することにより、前記内部メモリに格納されているセキュア情報及び非セキュア情報から、セキュア情報を特定し、無効化する無効化手段とを備えるプロセッサとから構成されることを特徴とする。
【００１６】
この構成によると、プロセッサは、通常モードへ復帰する前に、セキュア情報を特定し、セキュア情報のみを無効化することにより、内部メモリに非セキュア情報を残した状態で、通常モードへ復帰する。これにより、通常モード復帰後のプロセッサは、外部メモリにアクセスすることなく、内部メモリに格納された非セキュア情報を利用できるため、プロセッサ処理性能が低下することなく、処理を続けることができる。
【００１７】
更に、この構成によると、メモリインタフェースは、セキュア情報が格納されている外部メモリ上の位置を既知であるため、セキュア情報及び非セキュア情報の判別を容易に行うことができる。
更に、この構成によると、外部メモリのセキュア領域が複数のサブセキュア領域から成る場合に、サブセキュア領域毎に、特定のセキュア処理で用いる命令コード及びデータを格納することにより、プロセッサは、メモリインタフェースにより生成されたサブセキュア領域を特定するための情報に基づき、何れのセキュア処理で用いる情報であるかを認識可能であり、それに応じたセキュア処理を行うことが可能となる。
【００１８】
また、本発明は、外部メモリ、メモリインタフェース、及びプロセッサから構成されるセキュア処理システムであって、前記外部メモリは、セキュア命令コード。セキュアデータ、非セキュア命令コード、及び非セキュアデータを記憶しており、前記メモリインタフェースは、前記外部メモリから命令コードを読み出し、読み出した前記命令コードが、セキュア命令コードであるか非セキュア命令コードであるかを判断し、判断結果に基づく属性情報を生成し、読み出した前記命令コードと生成した前記属性情報とを、プロセッサへ出力し、前記プロセッサは、前記外部メモリから取得したセキュア命令コード、及び非セキュア命令コードを記憶している内部メモリと、命令コードを解読し、実行する実行手段と、前記実行手段が、セキュア命令コードを実行することにより、バスアクセスが発生する場合に、前記バスアクセスに、セキュア命令コードの実行に伴うバスアクセスである旨を示すアクセス要求セキュア属性を付加するバスアクセス制御手段とを備えることをと特徴とする。
【００１９】
この構成によると、プロセッサは、セキュアな処理を行うためのセキュアモードを備えていない場合であっても、セキュアを示すアクセス要求セキュア属性を有するバスアクセスを、バススレーブモジュールに発行することができる。セキュア資源を有するバススレーブモジュールにおいて、バスマスタであるプロセッサから、セキュアを示すアクセス要求セキュア属性を受け付けた場合にのみ、セキュア資源へのアクセスを許可する機構を設けることにより、セキュアモードを備えていないプロセッサであっても、外部のバススレーブモジュールが有するセキュア資源を利用することが可能となる。
【００２０】
ここで、前記外部メモリは、複数のサブセキュア領域からなるセキュア領域を備え、前記セキュア領域に、前記セキュア命令コード、及び前記セキュアデータを格納しており、前記メモリインタフェースは、前記外部メモリから命令コードを読み出す読出手段と、前記複数のサブセキュア領域について、それぞれの位置を特定するためのサブセキュア領域位置情報を記憶している位置情報記憶手段と、前記サブセキュア領域位置情報に基づき、前記読出手段が読み出した前記命令コードが、セキュア命令コード及び非セキュア命令コードの何れであるか判断すると共に、前記命令コードがセキュア命令コードである場合に、何れのサブセキュア領域から読み出されたのか判断する判断手段と、前記判断の結果、読み出した前記命令コードがセキュア命令コードである場合に、セキュアを示す属性情報と、前記命令コードが格納されていたサブセキュア領域を特定するための特定情報を生成し、読み出した前記命令コードが非セキュア命令コードである場合に、非セキュアを示す属性情報を生成する属性情報生成手段とを備えるように構成してもよい。
【００２１】
この構成によると、メモリインタフェースは、セキュア命令コードが格納されている外部メモリ上の位置を既知であるため、セキュア命令コード及び非セキュア命令コードの判別を容易に行うことができる。
更に、この構成によると、外部メモリのセキュア領域が複数のサブセキュア領域から成る場合に、サブセキュア領域毎に、特定のセキュア処理で用いる命令コード及びデータを格納することにより、プロセッサは、メモリインタフェースにより生成されたサブセキュア領域を特定するための情報に基づき、何れのセキュア処理で用いる情報であるかを認識可能であり、それに応じたセキュア処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
≪第１の実施形態≫
本発明に係る第１の実施形態として、セキュア処理システム１について説明する。
＜構成＞
図１は、セキュア処理システム１の構成を示す図である。同図に示す様に、セキュア処理システム１は、プロセッサ１０、メモリインタフェース２０、メモリ３０、及びバス４０から構成される。セキュア処理システム１は、具体的には、ＡＶ機器等に搭載される。
【００２３】
１．プロセッサ１０
図１のプロセッサ１０の内部は、プロセッサ１０の機能的な構成を示している。同図に示すようにプロセッサ１０は、プロセッサコア１０１、命令キャッシュ１０２、命令属性管理部１０３、データキャッシュ１０４、データ属性管理部１０５、命令アクセス判定部１０６、データアクセス判定部１０７、メモリ無効化部１０８、及びバスインタフェース１０９から構成される。
【００２４】
（１）プロセッサコア１０１
プロセッサコア１０１は、通常モード及びセキュアモードの２つの動作モードを有し、これら２つの動作モードを切り替えながら処理を行う。セキュアモードは、プロセッサ１０が暗号化／復号処理、ライセンス処理等のセキュアな処理を行うためのモードである。一方、通常モードは、プロセッサ１０がセキュアな処理以外の全ての処理を行うためのモードである。なお、このようにプロセッサコア１０１に、セキュアな処理を行うセキュアモードを実装する技術については、既に公知技術で実現可能であるため、詳細については省略する。
【００２５】
プロセッサコア１０１は、図１に示すように、命令フェッチ部１１０、デコード部１１１、制御部１１２、演算部１１３、及びメモリ管理部１１４を含む。
命令フェッチ部１１０は、定期的に、制御部１１２からプロセッサコア１０１の動作モードを示す信号を受け取る。また、命令フェッチ部１１０は、命令アクセス判定部１０６に対し、命令コードのフェッチを示すコマンド、命令コードのアドレスを含むアクセス要求、及びアクセス要求セキュア属性を発行する。アクセス要求セキュア属性は、プロセッサコア１０１の動作モードに応じて生成される。具体的には、制御部１１２から受け取る動作モードを示す信号が「通常モード」を示す場合、命令フェッチ部１１０は、アクセス要求セキュア属性としてnormalを生成し、制御部１１２から受け取る動作モードを示す信号が「セキュアモード」の場合、アクセス要求セキュア属性としてsecureを生成する。
また、命令フェッチ部１１０は、メモリ３０又は命令キャッシュ１０２から命令コードを取得し、取得した命令コードをプリフェッチキューに格納する。なお、命令フェッチ部１１０が取得する命令コードには、セキュア処理識別情報が付加されている場合がある。セキュア処理識別情報は、取得した命令コードがいずれのセキュア処理で使用される命令コードであるかを示す情報である。命令コードに付加されたセキュア処理識別情報は、制御部１１２を介して、演算部１１３へ通知される。
デコード部１１１は、デコーダと命令キューとを備える。デコーダは、命令フェッチ部１１０のプリフェッチキューから命令コードを読み出し、読み出した命令コードをデコードし、低レベルコードに変換する。命令キューは、制御部１１２からの要求があるまで、デコードした低レベルコードを格納する。
【００２６】
制御部１１２は、命令キューから低レベルコードを受け取り、受け取った低レベルコードを解釈し、プロセッサコア１０１の各部に対し指示を出す。
また、制御部１１２は、プロセッサコア１０１が、セキュアモード及び通常モードの内、何れの動作モードで動作中であるかを管理しており、動作モードを示す信号を、定期的に命令フェッチ部１１０とメモリ管理部１１４とに出力する。更に、制御部１１２は、プロセッサコア１０１aの動作モードが、セキュアモードから通常モードに切り替わる際に、メモリ管理部１１４を介して、メモリ無効化部１０８に対し、セキュアモードから通常モードへの復帰を通知する。制御部１１２は、メモリ管理部１１４を介して、メモリ無効化部１０８から、キャッシュの無効化処理が完了した旨の通知を受け取ると、動作モードをセキュアモードから通常モードに切り替える。
【００２７】
演算部１１３は、命令を実行し、数値演算及び論理演算を行う。命令を実行しデータフェッチが要求される場合は、演算部１１３は、アドレスを算出し、算出したアドレスをメモリ管理部１１４へ出力する。
なお、演算部１１３が取得した命令コード及びデータに、セキュア処理識別情報が付加されている場合には、演算部１１３は、付加されたセキュア処理識別情報に基づき処理を行う。具体例として、本実施形態においては、セキュア処理識別情報は１及び２の何れかであり、１が付加された命令コード及びデータは、ライセンス管理処理で使用される命令コード及びデータであり、２が付加された命令コード及びデータは、鍵生成処理で使用される命令コード及びデータであるとする。
【００２８】
メモリ管理部１１４は、定期的に、制御部１１２からプロセッサコア１０１の動作モードを示す信号を受け取る。また、メモリ管理部１１４は、演算部１１３からデータのアドレスを受け付けると、データアクセス判定部１０７に対し、データフェッチを示すコマンド、データのアドレスを含むアクセス要求、及びアクセス要求セキュア属性を発行する。アクセス要求セキュア属性は、プロセッサコア１０１の動作モードに応じて生成される。具体的に、制御部１１２から受け取る動作モードを示す信号が「通常モード」を示す場合、メモリ管理部１１４は、アクセス要求セキュア属性としてnormalを生成し、動作モードを示す信号が「セキュアモード」を示す場合、アクセス要求セキュア属性としてsecureを生成する。
【００２９】
また、メモリ管理部１１４は、メモリ３０又はデータキャッシュ１０４からデータを取得し、取得したデータを演算部１１３に出力する。なお、メモリ管理部１１４が取得するデータには、セキュア処理識別情報が付加されている場合がある。セキュア処理識別情報は、取得したデータがいずれのセキュア処理で使用されるデータであるかを示す情報である。
【００３０】
（２）命令キャッシュ１０２
命令キャッシュ１０２は、SRAM（static RAM）で構成される高速・小容量のメモリであって、メモリ３０から転送される命令コードを格納する。ここで、命令コードには、セキュアな命令コードと非セキュアな命令コードとが存在するが、詳細は後述する。なお、本実施形態において、命令キャッシュ１０２は、キャッシュコントローラを含むものとする。
【００３１】
図２は、プロセッサコア１０１がセキュアモードで動作中である場合の命令キャッシュ１０２を示す図である。同図に示すように、命令キャッシュ１０２のライン０には、code_0、ライン１には、code_1、ライン２には、code_2、ライン３には、code_3、ライン４には、code_4、ライン５には、code_5、ライン６には、code_6．及びライン７には、code_7が格納されている。更に、同図に示すように、code_０からcode_７までの各命令コードは、アドレスと対応付けて管理されている。
【００３２】
命令キャッシュ１０２は、プロセッサコア１０１の命令フェッチに伴い、メモリ３０から命令コードを受け取り、メモリインタフェース２０から読出データセキュア属性を受け取る。また、命令キャッシュ１０２は、メモリ３０から命令コードを受け取ると、対応するアドレスと読出データセキュア属性とを、命令属性管理部１０３へ出力する。
（３）命令属性管理部１０３
命令属性管理部１０３は、命令キャッシュ１０２のキャッシュライン毎に、格納されている命令コードの読出データセキュア属性を管理する。
【００３３】
図３は、具体例として、命令キャッシュ１０２が図２に示した状態のときに、命令属性管理部１０３が記憶している属性管理テーブル１３０を示す図である。同図に示すように、属性管理テーブル１３０は、命令キャッシュ１０２のキャッシュラインに対応する８個の属性管理情報から構成され、各属性管理情報は、アドレスと読出データセキュア属性とから成る。更に、読出データセキュア属性は、セキュア属性とセキュア処理識別情報とから成る。
【００３４】
アドレスは、命令キャッシュ１０２に格納されている命令コードのアドレスに対応している。
セキュア属性は、secure及びnormalの何れかに設定されており、secureは、セキュアな命令コードを示し、normalは、非セキュアな命令コードを示す。ここで、「セキュアな命令コード」とは、プロセッサコア１０１がセキュアモードで動作中のときのみ使用される秘匿な命令コードを示し、「非セキュアな命令コード」とは、プロセッサコア１０１の動作モードに依らず使用される秘匿でない命令コードを示す。
【００３５】
セキュア処理識別情報は、セキュア属性がsecureである命令コードについて、１及び２の何れかに設定されており、１は、プロセッサ１０によるライセンス管理処理で使用される命令コードを示し、２は、プロセッサ１０による鍵生成処理で使用される命令コードを示す。
具体的に、属性管理情報１３１は、命令キャッシュ１０２のライン０に対応しており、アドレス「0x8000AAA0」により識別されるcode_0は、セキュアな命令コードであり、且つ、ライセンス管理処理で使用される命令コードであることを示している。
【００３６】
属性管理情報１３２は、命令キャッシュ１０２のライン１に対応しており、アドレス「0x80001000」により識別されるcode_1は、非セキュアな命令コードであることを示している。
属性管理情報１３３は、命令キャッシュ１０２のライン２に対応しており、アドレス「0x8000BBB0」により識別されるcode_2は、セキュアな命令コードであり、且つ、ライセンス管理処理で使用される命令コードであることを示している。
【００３７】
属性管理情報１３４は、命令キャッシュ１０２のライン３に対応しており、アドレス「0x80003000」により識別されるcode_3は、非セキュアな命令コードであることを示している。
属性管理情報１３５は、命令キャッシュ１０２のライン４に対応しており、アドレス「0x80004000」により識別されるcode_4は、非セキュアな命令コードであることを示している。
【００３８】
属性管理情報１３６は、命令キャッシュ１０２のライン５に対応しており、アドレス「0x8000CCC0」により識別されるcode_5は、セキュアな命令コードであり、且つ、鍵生成処理で使用される命令コードであること示している。
属性管理情報１３７は、命令キャッシュ１０２のライン６に対応しており、アドレス「0x80006000」により識別されるcode_6は、非セキュアな命令コードであることを示している。
【００３９】
属性管理情報１３８は、命令キャッシュ１０２のライン７に対応しており、アドレス「0x8000FFF0」により識別されるcode_7は、セキュアな命令コードであり、且つ、鍵生成処理で使用される命令コードであることを示している。
命令属性管理部１０３は、プロセッサコア１０１の命令フェッチによる命令キャッシュ１０２の更新に伴い、新たな属性管理情報を生成し、生成した続映管理情報を、属性管理テーブル１３０に登録し、属性管理テーブル１３０を更新する。
【００４０】
（４）データキャッシュ１０４
データキャッシュ１０４は、命令キャッシュ１０２と同様、SRAMで構成される高速・小容量のメモリであって、メモリ３０から転送されるデータを格納する。なお、データには、命令コードと同様に、セキュアなデータと非セキュアなデータとが存在する。
（５）データ属性管理部１０５
データ属性管理部１０５は、データキャッシュ１０４のキャッシュライン毎に、格納されているデータの読出データセキュア属性を管理する。
【００４１】
具体的には、データ属性管理部１０５は、命令属性管理部１０３と同様に、データキャッシュ１０４の各ラインに対応付けられた複数の属性管理情報から構成される属性管理テーブルを管理している。属性管理情報は、アドレスと読出データセキュア属性とから成り、読出データセキュア属性は、セキュア属性とセキュア処理識別情報とから成る。  
アドレスは、データキャッシュ１０４に格納されているデータのアドレスに対応している。
【００４２】
セキュア属性は、secure及びnormalの何れかに設定されており、secureは、セキュアなデータを示し、normalは、非セキュアなデータを示す。ここで、「セキュアなデータ」とは、プロセッサコア１０１がセキュアモードで動作中のときのみ使用される秘匿なデータを示し、「非セキュアなデータ」とは、プロセッサコア１０１の動作モードに依らず使用される秘匿でないデータを示す。
【００４３】
セキュア処理識別情報は、セキュア属性がsecureであるデータについて、１及び２の何れかに設定されており、１は、プロセッサ１０によるライセンス管理処理で使用されるデータを示し、２は、プロセッサ１０による鍵生成処理で使用されるデータを示す。
データ属性管理部１０５は、プロセッサコア１０１のデータフェッチによるデータキャッシュ１０４の更新に伴い、新たな属性管理情報を生成し、生成した属性管理情報を属性管理テーブルに登録し、属性管理テーブルを更新する。
【００４４】
（６）命令アクセス判定部１０６
命令アクセス判定部１０６は、プロセッサコア１０１の命令フェッチ部１１０による命令フェッチ処理において、キャッシュヒットした命令コードが、そのときのプロセッサコア１０１の動作モードで読み出し可能であるか否かを判定する。
具体的に、セキュアな命令コードは、プロセッサコア１０１がセキュアモードで動作中である場合に限り、読み出すことができる。一方、非セキュアな命令コードは、プロセッサコア１０１がセキュアモードで動作中であろうと、通常モードで動作中であろうと、読み出すことができる。
【００４５】
従って、命令アクセス判定部１０６は、キャッシュヒットした命令コードについて、命令属性管理部１０３が管理している属性管理情報を参照し、当該命令コードの読出データセキュア属性に含まれるセキュア属性がsecureであるかnormalであるかを判断する。また、命令アクセス判定部１０６は、プロセッサコア１０１から出力されたアクセス要求セキュア属性が、secure及びnormalの何れに設定されているか判断する。命令アクセス判定部１０６は、両判断結果に応じて、上記の判定を行う。
【００４６】
（７）データアクセス判定部１０７
データアクセス判定部１０７は、命令アクセス判定部１０６と同様に、プロセッサコア１０１のメモリ管理部１１４によるデータフェッチ処理において、キャッシュヒットしたデータが、そのときのプロセッサコア１０１の動作モードで読み出し可能であるか否かを判定する。
【００４７】
具体的に、セキュアなデータは、プロセッサコア１０１がセキュアモードで動作中である場合に限り、読み出すことができる。一方、非セキュアなデータは、プロセッサコア１０１がセキュアモードで動作中であろうと、通常モードで動作中であろうと、読み出すことができる。
従って、データアクセス判定部１０７は、命令アクセス判定部１０６と同様に、データ属性管理部１０５が管理している読出データセキュア属性と、プロセッサコア１０１の動作モードを示すアクセス要求セキュア属性とから、上記の判定を行う。
【００４８】
（８）メモリ無効化部１０８
メモリ無効化部１０８は、プロセッサコア１０１の動作モードが、セキュアモードから通常モードへ移行したとき、命令キャッシュ１０２が保持するセキュアな命令コード、及びデータキャッシュ１０４が保持するセキュアなデータを保護するために機能する。
より具体的には、メモリ無効化部１０８は、プロセッサコア１０１のメモリ管理部１１４から、プロセッサコア１０１の動作モードがセキュアモードから通常モードへ移行する旨を示す信号を受け取ると、命令属性管理部１０３が管理している属性管理テーブル１３０を参照し、セキュア属性がsecureに設定されている命令コードが格納されているキャッシュラインを検出する。図３に示した属性管理テーブル１３０に依ると、属性管理情報１３１、１３３、１３６、及び１３８がsecureを示すセキュア属性を含んでいるため、命令キャッシュ１０２のライン０、ライン２、ライン５、及びライン７が、セキュアな命令コードを格納していることが検出される。メモリ無効化部１０８は、検出した各キャッシュラインに格納されている命令コードを無効化する。ここで、「命令コードを無効化する」とは、即ち、プロセッサコア１０１によるアクセスを無効化することを示しており、命令コードを破棄したり、キャッシュラインに０を書き込んだりする方法が考えられるが、無効化の方法については限定せず、その他の方法であってもよいものとする。
【００４９】
図4は、メモリ無効化部１０８により、セキュアな命令コードのみが無効化された状態の命令キャッシュ１０２を示す図である。図４に示す命令キャッシュ１０２は、対応するセキュア属性がnormalに設定されているcode_1、code_3、code_4、及びcode_6を、読み出し可能な状態で格納している。
メモリ無効化部１０８は、データキャッシュ１０４についても命令キャッシュ１０２と同様に処理し、データキャッシュ１０４から、セキュア属性がsecureに設定されているデータが格納されているキャッシュラインを検出し、検出した各ラインに格納されているデータを無効化する。
メモリ無効化部１０８は、命令キャッシュ１０２、及びデータキャッシュ１０４について上記の無効化処理が完了すると、完了通知をプロセッサコア１０１へ出力する。
【００５０】
（９）バスインタフェース１０９
バスインタフェース１０９は、プロセッサコア１０１によるバス４０へのアクセスを制御する。
２．バス４０
バス４０は、プロセッサ１０とメモリインタフェース２０との間の通信経路である。
【００５１】
図５は、バス４０が送受信する情報を示す図である。同図に示すように、プロセッサ１０のバスインタフェース１０９から、バス４０を介して、メモリインタフェース２０へ、書込データ、コマンド、アクセス要求、及びアクセス要求セキュア属性が送信される。また、メモリインタフェース２０から、バス４０を介して、プロセッサ１０のバスインタフェース１０９へ、読出データ及び読出データセキュア属性が送信される。
【００５２】
３．メモリ３０
メモリ３０はSDRAMで構成された記憶装置であって、図１に示すように、セキュア領域１（３００１）及びセキュア領域２（３００２）を備える。セキュア領域１（３００１）は、プロセッサ１０によるライセンス管理処理で用いられる秘匿な命令コード及び秘匿なデータが格納されている領域である。セキュア領域２（３００２）は、プロセッサ１０による鍵生成処理で用いられる秘匿な命令コード及び秘匿なデータが格納されている領域である。なお、本実施形態におけるセキュア領域１（３００１）及びセキュア領域２（３００２）は、一例として、アドレス0x8000AAA0から0x8000FFFFまでの領域に固定されているものとする。
【００５３】
４．メモリインタフェース２０
メモリインタフェース２０は、メモリ３０に対する外部からのアクセスを制御する。
図６は、メモリインタフェース２０の構成を機能的に示す機能ブロック図である。同図に示すように、メモリインタフェース２０は、バスマスタ識別部２０１、セキュア領域管理部２０２、アクセス可否判定部２０３、アクセス部２０４、及び読出データセキュア属性生成部２０５から構成される。
【００５４】
（１）バスマスタ識別部２０１
バスマスタ識別部２０１は、プロセッサ１０からアクセス要求及びアクセス要求セキュア属性を受け付ける。なお、本実施形態においては、バスマスタとしてプロセッサ１０のみを記載しているが、バスマスタ識別部２０１は、プロセッサ１０以外にも複数のバスマスタからメモリ３０へのアクセス要求を受け付けた場合には、各バスマスタを識別することが可能であるとする。各バスマスタを識別する方法としては、各バスマスタに専用のポートを備えてもよい。
【００５５】
バスマスタ識別部２０１は、受け付けたアクセス要求及びアクセス要求セキュア属性をアクセス可否判定部２０３へ出力する。
（２）セキュア領域管理部２０２
セキュア領域管理部２０２は、セキュア領域１（３００１）を特定するための情報であるセキュア領域１開始アドレス、及びセキュア領域１終了アドレスを記憶しており、更に、セキュア領域２（３００２）を特定するための情報である、セキュア領域２開始アドレス、及びセキュア領域２終了アドレスを記憶している。
【００５６】
（３）アクセス可否判定部２０３
アクセス可否判定部２０３は、バスマスタ識別部２０１からアクセス要求及びアクセス要求セキュア属性を受け取ると、アクセス要求から、アクセス要求先アドレスを抽出する。アクセス可否判定部２０３は、アクセス要求セキュア属性と、アクセス要求先アドレスと、セキュア領域管理部２０２が記憶している情報とから、プロセッサ１０がアクセス要求先アドレスにアクセス可能であるか否かを判定する。判定の詳細については後述する。
【００５７】
アクセス可能であると判定した場合、アクセス可否判定部２０３は、アクセス要求先アドレスをアクセス部２０４へ出力する。アクセス不可能であると判定した場合は、処理を終了する。
（４）アクセス部２０４
アクセス部２０４は、アクセス可否判定部２０３からアクセス要求先アドレスを受け取り、メモリ３０におけるアクセス要求先アドレスが示す位置から、命令コード又はデータを読み出す。アクセス部２０４は、読み出した命令コード又はデータ（読出データという）を、アクセス先アドレスと共に、読出データセキュア属性生成部２０５へ出力する。なお、アクセス先アドレスは、読み出した命令コードの格納場所を示すアドレスであり、アクセス可否判定部２０３から受け取ったアクセス要求先アドレスと同一のアドレスである。
【００５８】
（５）読出データセキュア属性生成部２０５
読出データセキュア属性生成部２０５は、アクセス部２０４から読出データ及びアクセス先アドレスを受け取ると、セキュア領域管理部２０２が記憶しているセキュア領域１開始アドレス、セキュア領域１終了アドレス、セキュア領域２開始アドレス、及びセキュア領域２終了アドレスを読み出す。
【００５９】
読出データセキュア属性生成部２０５は、セキュア領域管理部２０２から読み出した各アドレスと、アクセス部２０４から受け取ったアクセス先アドレスとから、読出データが、セキュア領域１（３００１）、セキュア領域２（３００２）、及びその他の領域の何れから読み出されたのか判定する。
読出データがセキュア領域１（３００１）から読み出された場合、読出データセキュア属性生成部２０５は、セキュア属性としてsecureを設定し、セキュア処理識別情報として１を設定し、読出データと、secureに設定されたセキュア属性及び１に設定されたセキュア処理識別情報から成る読出データセキュア属性とを、バス４０を介してプロセッサ１０へ転送する。
【００６０】
読出データがセキュア領域２（３００２）から読み出された場合、読出データセキュア属性生成部２０５は、セキュア属性としてsecureを設定し、セキュア処理識別情報として２を設定し、読出データと、secureに設定されたセキュア属性及び２に設定されたセキュア処理識別情報から成る読出データセキュア属性とを、バス４０を介してプロセッサ１０へ転送する。
【００６１】
読出データがセキュア領域１（３００１）及びセキュア領域２（３００２）以外の領域から読み出された場合、読出データセキュア属性生成部２０５は、セキュア属性としてnormalを設定し、セキュア処理識別情報としては、何れの値も設定せず、読出データとnormalに設定さされたセキュア属性とを、バス４０を介してプロセッサ１０へ転送する。
＜動作＞
以下では、図７から図１３に示すフローチャートを用い、セキュア処理システム１の動作について説明する。
【００６２】
セキュア処理システム１は、プロセッサコア１０１の動作に応じて、プロセッサ１０内の他の構成要素、及びセキュア処理システム１内の他の構成要素であるメモリインタフェース２０、メモリ３０、及びバス４０の動作が決定されるので、ここでは先ず、プロセッサコア１０１の動作について説明し、その後、プロセッサコア１０１の動作に基づき発生する他の構成要素の動作について説明する。
【００６３】
１．プロセッサコア１０１の動作
図７は、プロセッサコア１０１の動作を示すフローチャートである。
通常モードで動作中であるプロセッサコア１０１は、セキュアモードへの移行が要求されたか否か判断し、セキュアモードへの移行が要求されない場合（ステップS１０１でNO）、通常モードのまま、ステップS１０２からステップS１０７まで動作する。
【００６４】
先ず、命令フェッチ部１１０は、命令コードをフェッチし（ステップS１０２）、フェッチした命令コードを、プリフェッチキューに格納する。
デコード部１１１は、プリフェッチキューから命令コードを取り出し、命令コードを低レベルコードに変換する。変換された低レベルコードは、命令キューに格納される。制御部１１２は、命令キューから受け取った低レベルコードを解釈する（ステップS１０３）。
【００６５】
演算部１１３は、レジスタファイルからレジスタオペランドを読み出す（ステップS１０４）。演算部１１３は、オペランドをシフトし、ＡＬＵ結果を生成する。命令がロード又はストアの場合、ＡＬＵは、メモリアドレスを計算する等、命令を実行する（ステップS１０５）。
データアクセスの必要があれば、メモリ管理部１１４は、データキャッシュ１０４又はメモリ３０にアクセスし、データを読み出す（ステップS１０６）。
【００６６】
その後、演算部１１３は、データキャッシュ１０４又はメモリ３０からロードしたデータ、及び命令が生成した結果をレジスタファイルにライトバックし（ステップS１０７）、ステップS１０１に戻り、処理を続ける。
ステップS１０１で通常モードからセキュアモードへ動作モードの移行が要求された場合（ステップS１０１でＹＥＳ）、プロセッサコア１０１は、動作モードを通常モードからセキュアモードへ移行させ、セキュアモードでステップS１１１からステップS１１６まで動作する、
先ず、命令フェッチ部１１０は、命令コードをフェッチし（ステップS１１１）、フェッチした命令コードを、プリフェッチキューに格納する。
【００６７】
デコード部１１１は、プリフェッチキューから命令コードを取り出し、命令コードを低レベルコードに変換する。変換された低レベルコードは、命令キューに格納される。制御部１１２は、命令キューから受け取った低レベルコードを解釈する（ステップS１１２）。
演算部１１３は、レジスタファイルからレジスタオペランドを読み出す（ステップS１１３）。演算部１１３は、オペランドをシフトし、ＡＬＵ結果を生成する。命令がロード又はストアの場合、ＡＬＵは、メモリアドレスを計算する等、命令を実行する（ステップS１１４）。
【００６８】
データアクセスの必要があれば、メモリ管理部１１４は、データキャッシュ１０４又はメモリ３０にアクセスし、データを読み出す（ステップS１１５）。
その後、演算部１１３は、データキャッシュ１０４又はメモリ３０からロードしたデータ、及び命令が生成した結果をレジスタファイルにライトバックする（ステップS１１６）。
【００６９】
その後、セキュアモードで動作中であるプロセッサコア１０１は、セキュアモードから通常モードへの復帰が要求されたか否か判断する（ステップS１１７）。通常モードへの復帰が要求されない場合（ステップS１１７でNO）、プロセッサコア１０１は、ステップS１１１に戻り、処理を続ける。
通常モードへの復帰が要求された場合（ステップS１１７でYES）、プロセッサコア１０１は、復帰処理を行い（ステップS１１８）、その後、ステップS１０１へ戻り、処理を続ける。
【００７０】
２．命令フェッチ処理
図８及び図９は、プロセッサコア１０１の命令フェッチに伴う、セキュア処理システム１全体の動作を示すフローチャートである。
プロセッサコア１０１の命令フェッチ部１１０は、アクセス要求とアクセス要求セキュア属性とを発行し（ステップS２０１）、命令アクセス判定部１０６は、アクセス要求とアクセス要求セキュア属性とを受け取る（ステップS２０２）。
【００７１】
命令キャッシュ１０２は、命令アクセス判定部１０６を介して、アクセス要求を受け取り、アクセス要求された命令コードが命令キャッシュ１０２に存在するか否か判断する（ステップS２０３）。
キャッシュミスヒットの場合（ステップS２０４でNO）、ステップS２１１に進み、処理を続ける。キャッシュヒットの場合（ステップS２０４でYES）、命令アクセス判定部１０６は、命令属性管理部１０３が管理している属性管理テーブル１３０から、アクセス先キャッシュラインに対応する読出データセキュア属性に含まれるセキュア属性を読み出す。命令アクセス判定部１０６は、読み出したセキュア属性がsecureかnormalかを判断する。
【００７２】
セキュア属性がnormalの場合（ステップS２０５でNO）、ステップS２０８へ進む。セキュア属性がsecureの場合（ステップS２０５でYES）、命令アクセス判定部１０６は、ステップS２０２で受け取ったアクセス要求セキュア属性がsecureであるかnormalであるかを判断する。
アクセス要求セキュア属性がnormalの場合（ステップS２０６でNO）、セキュア処理システム１は処理を終了する。アクセス要求セキュア属性がsecureの場合（ステップS２０６でYES）、命令キャッシュ１０２は、アクセス先キャッシュラインから命令コードを読み出し、更に、命令属性管理部１０３から、アクセス先キャッシュラインに対応する読出データセキュア属性に含まれるセキュア処理識別情報を読み出す（ステップS２０７）。命令キャッシュ１０２は、読み出した命令コード、又は命令コード及びセキュア処理識別情報を、命令アクセス判定部１０６を介して、プロセッサコア１０１へ転送する（ステップS２０８）。
【００７３】
ステップS２０４でNOの場合には、バスインタフェース１０９からバス４０を介してメモリインタフェース２０へ、アクセス要求とアクセス要求セキュア属性とを転送する（ステップS２１１）。メモリインタフェース２０のアクセス可否判定部２０３は、バスマスタ識別部２０１を介して、アクセス要求及びアクセス要求セキュア属性を受け取る。
アクセス可否判定部２０３は、アクセス要求からアクセス要求先アドレスを抽出し（ステップS２１２）、更に、セキュア領域管理部２０２から、セキュア領域１開始アドレス、セキュア領域１終了アドレス、セキュア領域２開始アドレス、及びセキュア領域２終了アドレスを取得する。
【００７４】
アクセス可否判定部２０３は、アクセス要求先アドレスが、メモリ３０のセキュア領域１（３００１）又はセキュア領域２（３００２）を示すか否か判断する。アクセス要求先アドレスが、セキュア領域１（３００１）及びセキュア領域２（３００２）以外の領域を示す場合（ステップS２１３でNO）、ステップS２１５へ進む。アクセス要求先アドレスが、セキュア領域１（３００１）又はセキュア領域２（３００２）を示す場合（ステップS２１３でYES）、アクセス可否判定部２０３は、アクセス要求セキュア属性がsecure及びnormalの何れに設定されているか判断する。
【００７５】
アクセス要求セキュア属性がnormalに設定されている場合（ステップS２１４でNO）、プロセッサコア１０１によるアクセス要求先へのアクセスは拒否されるため、セキュア処理システム１は処理を終了する。アクセス要求セキュア属性がsecureに設定されている場合（ステップS２１４でYES）、アクセス可否判定部２０３は、アクセス要求先アドレスをアクセス部２０４に出力する。
【００７６】
アクセス部２０４は、メモリ３０のアクセス要求先アドレスが示す位置へアクセスし、命令コードを読み出す（ステップS２１５）。アクセス部２０４は、命令コードを読み出すと、読み出した命令コードとアクセス先アドレスとを、読出データセキュア属性生成部２０５へ出力する。アクセス先アドレスは、当該命令コードの格納場所を示すアドレスであって、アクセス部２０４は、アクセス可否判定部２０３から受け取ったアクセス要求先アドレスを、アクセス先アドレスとして出力する。
【００７７】
その後、読出データセキュア属性生成部２０５は、読出データセキュア属性を生成し（ステップS２１６）、命令コードと読出データセキュア属性とを、プロセッサ１０に対し転送する（ステップS２１７）。
プロセッサコア１０１の命令フェッチ部１１０は、命令コードを取得し（ステップS２１８）、命令キャッシュ１０２も命令コードを取得する（ステップS２１９）。なお、メモリインタフェース２０から取得した読出データセキュア属性にセキュア処理識別情報が設定されている場合には、命令フェッチ部１１０は、ステップS２１８において、命令コードと共にセキュア処理識別情報を取得する。
【００７８】
命令属性管理部１０３は、読出データセキュア属性を取得し、取得した読出データセキュア属性を属性管理テーブルにて管理する（ステップS２２０）。
３．読出データセキュア属性生成処理
図１０は、メモリインタフェース２０の読出データセキュア属性生成部２０５による読出データセキュア属性生成処理の動作を示すフローチャートである。なお、ここに示す動作は、図９のステップS２１６の詳細である。
【００７９】
読出データセキュア属性生成部２０５は、アクセス部２０４から、読出データ及びアクセス先アドレスを取得する（ステップS２３１）。ここで、読出データとは、アクセス部２０４がメモリ３０から読み出した命令コード又はデータを示す。
次に、読出データセキュア属性生成部２０５は、セキュア領域管理部２０２からセキュア領域１開始アドレス、セキュア領域１終了アドレス、セキュア領域２開始アドレス、及びセキュア領域２終了アドレスを取得する（ステップS２３２）。読出データセキュア属性生成部２０５は、アクセス先アドレスがセキュア領域１（３００１）及びセキュア領域２（３００２）を示すか、又は、その他の領域を示すか判断する（ステップＳ２３３）。
【００８０】
アクセス先アドレスがセキュア領域１（３００１）及びセキュア領域２（３００２）以外の領域を示す場合（ステップS２３３でNO）、読出データセキュア属性生成部２０５は、セキュア属性として、normalを設定する（ステップS２３５）。アクセス先アドレスがセキュア領域１（３００１）及びセキュア領域２（３００２）の何れかを示す場合（ステップS２３３でYES）、読出データセキュア属性生成部２０５は、セキュア属性として、secureを設定する（ステップS２３４）。
【００８１】
更に、読出データセキュア属性生成部２０５は、アクセス先アドレスが、セキュア領域１（３００１）を示す場合（ステップＳ２３６で１）、セキュア処理識別情報として１を設定し（ステップＳ２３７）、アクセス先アドレスがセキュア領域２（３００２）を示す場合（ステップＳ２３６で２）、セキュア処理識別情報として２を設定するステップＳ２３８）。
【００８２】
４．データフェッチ処理
図１１及び図１２は、プロセッサコア１０１のデータフェッチに伴う、セキュア処理システム１全体の動作を示すフローチャートである。
プロセッサコア１０１のメモリ管理部１１４は、アクセス要求とアクセス要求セキュア属性とを発行し（ステップS３０１）、データアクセス判定部１０７は、アクセス要求とアクセス要求セキュア属性とを受け取る（ステップS３０２）。
【００８３】
データキャッシュ１０４は、データアクセス判定部１０７を介して、アクセス要求を受け取り、アクセス要求されたデータがデータキャッシュ１０４に存在するか否か判断する（ステップS３０３）。
キャッシュミスヒットの場合（ステップS３０４でNO）、ステップS３１１に進み、処理を続ける。キャッシュヒットの場合（ステップS３０４でYES）、データアクセス判定部１０７は、データ属性管理部１０５が管理している属性管理テーブルから、アクセス先キャッシュラインに対応する読出データセキュア属性に含まれるセキュア属性を読み出す。データアクセス判定部１０７は、読み出したセキュア属性がsecureであるか、normalであるか判断する。
【００８４】
セキュア属性がnormalの場合（ステップS３０５でNO）、ステップS３０７へ進む。セキュア属性がsecureの場合（ステップS３０５でYES）、データアクセス判定部１０７は、ステップS３０２で受け取ったアクセス要求セキュア属性がsecureであるかnormalであるかを判断する。
アクセス要求セキュア属性がnormalの場合（ステップS３０６でNO）、セキュア処理システム１は処理を終了する。アクセス要求セキュア属性がsecureの場合（ステップS３０６でYES）、データャッシュ１０４は、アクセス先キャッシュラインからデータを読み出し、更に、データ属性管理部１０５からアクセス先キャッシュラインに対応する読出データセキュア属性に含まれるセキュア処理識別情報を読み出す（ステップS３０７）。データキャッシュ１０４は、読み出したデータ、又はデータ及びセキュア処理識別情報を、データアクセス判定部１０７を介して、プロセッサコア１０１へ転送する（ステップS３０８）。
【００８５】
ステップS３０４でNOの場合には、バスインタフェース１０９からバス４０を介してメモリインタフェース２０へ、アクセス要求とアクセス要求セキュア属性とを転送する（ステップS３１１）。メモリインタフェース２０のアクセス可否判定部２０３は、バスマスタ識別部２０１を介して、アクセス要求及びアクセス要求セキュア属性を受け取る。
アクセス可否判定部２０３は、アクセス要求からアクセス要求先アドレスを抽出し（ステップS３１２）、更に、セキュア領域管理部２０２から、セキュア領域１開始アドレス、セキュア領域１終了アドレス、セキュア領域２開始アドレス、及びセキュア領域２終了アドレスを取得する。
【００８６】
アクセス可否判定部２０３は、アクセス要求先アドレスが、メモリ３０のセキュア領域１（３００１）又はセキュア領域２（３００２）を示すか否か判断する。アクセス要求先アドレスが、セキュア領域１（３００１）及びセキュア領域２（３００２）以外の領域を示す場合（ステップS３１３でNO）、ステップS３１５へ進む。アクセス要求先アドレスが、セキュア領域１（３００１）又はセキュア領域２（３００２）を示す場合（ステップS３１３でYES）、アクセス可否判定部２０３は、アクセス要求セキュア属性がsecure及びnormalの何れに設定されているか判断する。
【００８７】
アクセス要求セキュア属性がnormalに設定されている場合（ステップS３１４でNO）、プロセッサコア１０１によるアクセス要求先へのアクセスは拒否されるため、セキュア処理システム１は処理を終了する。アクセス要求セキュア属性がsecureに設定されている場合（ステップS３１４でYES）、アクセス可否判定部２０３は、アクセス要求先アドレスをアクセス部２０４に出力する。
【００８８】
アクセス部２０４は、メモリ３０のアクセス要求先アドレスが示す位置へアクセスし、データを読み出す（ステップS３１５）。アクセス部２０４は、データを読み出すと、読み出したデータとアクセス先アドレスとを、読出データセキュア属性生成部２０５へ出力する。アクセス先アドレスは、当該データの格納場所を示すアドレスであって、アクセス部２０４は、アクセス可否判定部２０３から受け取ったアクセス要求先アドレスを、アクセス先アドレスとして出力する。
【００８９】
その後、読出データセキュア属性生成部２０５は、読出データセキュア属性を生成し（ステップS３１６）、データと読出データセキュア属性とを、プロセッサ１０に対し転送する（ステップS３１７）。
プロセッサコア１０１の演算部１１３は、メモリ管理部１１４を介してデータを取得し（ステップS３１８）、データキャッシュ１０４もデータを取得する（ステップS３１９）。なお、メモリインタフェース２０から取得した読出データセキュア属性にセキュア処理識別情報が設定されている場合には、演算部１１３は、ステップS３１８において、データと共にセキュア処理識別情報を取得する。
【００９０】
データ属性管理部１０５は、読出データセキュア属性を取得し、取得した読出データセキュア属性を属性管理テーブルにて管理する（ステップS３２０）。
５．復帰処理
図１３は、プロセッサコア１０１がセキュアモードから通常モードへ復帰する際の復帰処理に伴うセキュア処理システム１全体の動作を示すフローチャートである。
【００９１】
プロセッサコア１０１からメモリ無効化部１０８へ、動作モードがセキュアモードから通常モードへ復帰する旨を通知し（ステップS４０１）。メモリ無効化部１０８は、プロセッサコア１０１から前記通知を受け付ける。
次に、メモリ無効化部１０８は、ステップS４０２からステップS４０８までを、キャッシュ毎に繰り返す。即ち、命令キャッシュ１０２及びデータキャッシュ１０４のそれぞれについて、ステップS４０２からステップS４０８までの処理を繰り返す。
【００９２】
次に、メモリ無効化部１０８は、ステップS４０３からステップS４０７までを、キャッシュライン毎に繰り返す。メモリ無効化部１０８は、命令属性管理部１０３及びデータ属性管理部１０５を参照し、対象となるキャッシュラインの読出データセキュア属性に含まれるセキュア属性がsecureであるか、normalであるかを判断する（ステップS４０５）。セキュア属性がnormalである場合（ステップS４０５でNO）、ステップS４０７へ進む。セキュア属性がsecureの場合（ステップS４０５でYES）、メモリ無効化部１０８は、当該キャッシュラインを無効化し、当該キャッシュラインに格納されている命令又はデータを読み出し不可能な状態にする（ステップS４０６）。
【００９３】
すべてのキャッシュラインの処理が終了し（ステップS４０７）、命令キャッシュ１０２及びデータキャッシュ１０４について処理が終了すると（ステップS４０８）、メモリ無効化部１０８は、プロセッサコア１０１に対し、キャッシュの無効化処理の完了通知を発行する（ステップS４０９）。
プロセッサコア１０１は、メモリ無効化部１０８から前記完了通知を受け取ると、動作モードを、セキュアモードから通常モードへ切り替える（ステップS４１０）。
【００９４】
≪第２の実施形態≫
本発明に係る第２の実施形態として、セキュア処理システム２について説明する。
上記第１の実施形態は、プロセッサがセキュアモードと通常モードとを備えていることが前提であり、セキュアモードを備えないプロセッサには適用できない。そこで、ここで説明する第２の実施形態は、セキュアモードを備えていないプロセッサにおいても、セキュア資源を扱うことが可能なプロセッサ、メモリインタフェース、及びセキュア処理システムを提供することを目的とする。
【００９５】
図１４は、セキュア処理システム２の構成を示す図である。同図に示す様に、セキュア処理システム２は、プロセッサ１０ａ、メモリインタフェース２０ａ、メモリ３０ａ、バス４０ａ、バス５０ａ、及びセキュアモジュール６０ａから構成される。
セキュア処理システム２の特徴は、プロセッサ１０ａがセキュリティを実装しておらず、通常モードのみで動作する点、セキュアモジュール６０ａを備える点である。
【００９６】
１．プロセッサ１０ａ
プロセッサ１０ａは、図１４に示すように、プロセッサコア１０１ａ、命令キャッシュ１０２ａ、命令属性管理部１０３ａ、データキャッシュ１０４ａ、データ属性管理部１０５ａ、データアクセス判定部１０７ａ、及びバスインタフェース１０９ａから構成される。
【００９７】
第１の実施形態であるプロセッサ１０との構成上の相違は、命令アクセス判定部及びメモリ無効化部を備えていない点である。命令アクセス判定部を備えていないのは、プロセッサ１０ａは、通常モードのみで動作するため、命令フェッチの際、アクセス要求セキュア属性を発行しないためである。また、メモリ無効化部を備えていないのは、プロセッサ１０ａは、通常モードのみで動作するため、第１の実施形態のような、セキュアモードから通常モードへの復帰処理自体が発生しないためである。
【００９８】
（１）プロセッサコア１０１ａ
プロセッサコア１０１ａは、第１の実施形態で開示したプロセッサコア１０１と同様に、命令フェッチ部１１０ａ、デコード部１１１ａ、制御部１１２ａ、演算部１１３ａ、及びメモリ管理部１１４ａから構成される。しかしながら、先に述べたように、プロセッサコア１０１ａは、プロセッサコア１０１と異なり、セキュアな処理を行うためのセキュアモードを備えておらず、通常モードのみで動作する。
【００９９】
プロセッサコア１０１ａの各構成要素は、プロセッサコア１０１の対応する各構成要素と同様の機能を有するため、同様の機能については説明を省略し、ここでは、プロセッサコア１０１との相違点を中心に説明する。
プロセッサコア１０１ａの命令フェッチ部１１０ａは、命令キャッシュ１０２ａ又はメモリ３０ａから、命令コードと共に読出データセキュア属性を取得する。ここで、読出データセキュア属性は、第１の実施形態と同様に、メモリインタフェース２０ａがメモリ３０ａから命令コードを読み出し、プロセッサ１０ａへ出力する際に、読み出した命令コードの記録位置に基づき設定し、命令コードと共にプロセッサ１０ａへ転送する情報である。
【０１００】
命令フェッチ部１１０ａが取得した命令コードは、第１の実施形態と同様に、デコード部１１１ａでデコードされ、制御部１１２ａで解読される。命令フェッチ部１１０ａが取得した読出データセキュア属性は、デコード部１１１ａを介さずに、制御部１１２ａを介して、メモリ管理部１１４ａへ出力される。
演算部１１３ａが命令を実行することにより、データフェッチの要求が発生すると、メモリ管理部１１４ａは、制御部１１２ａから受け取った読出データセキュア属性を、データフェッチのアクセス要求に対応するアクセス要求セキュア属性として設定し、アクセス要求とアクセス要求セキュア属性とを、データアクセス判定部１０７ａへ出力する。
【０１０１】
即ち、命令コードの読出データセキュア属性がsecureの場合、メモリ管理部１１４ａは、データフェッチのアクセス要求セキュア属性をsecureに設定し、命令コードの読出データセキュア属性がnormalの場合、メモリ管理部１１４ａは、データフェッチのアクセス要求セキュアをnormalに設定する。
（２）命令キャッシュ１０２ａ、及び命令属性管理部１０３ａ
命令キャッシュ１０２ａは、第１の実施形態である命令キャッシュ１０２と同様にSRAMで構成される高速・小容量のメモリであり、メモリ３０ａから転送された命令コードを格納する。
【０１０２】
命令属性管理部１０３ａは、第１の実施形態である命令属性管理部１０３と同様に、命令キャッシュ１０２ａのキャッシュライン毎に、当該キャッシュラインに格納された命令コードの読出データセキュア属性を管理する。具体的には、命令属性管理部１０３ａは、図３に示した属性管理テーブル１３０と同様の構成を有する属性管理テーブルを保持し、当該属性管理テーブルを用いて、読出データセキュア属性を管理する。
【０１０３】
（３）データキャッシュ１０４ａ、及びデータ属性管理部１０５ａ
データキャッシュ１０４ａは、第１の実施形態であるデータキャッシュ１０４と同様に、SRAMで構成される高速・小容量のメモリであり、メモリ３０ａから転送されたデータを格納する。
データ属性管理部１０５ａは、第１の実施形態であるデータ属性管理部１０５と同様に、データキャッシュ１０４ａのキャッシュライン毎に、当該キャッシュラインに格納されているデータの読出データセキュア属性を管理する。
【０１０４】
（４）データアクセス判定部１０７ａ
データアクセス判定部１０７ａは、プロセッサコア１０１ａのメモリ管理部１１４ａによるデータフェッチ処理において、そのときプロセッサコア１０１ａが実行している命令に応じて、キャッシュヒットしたデータが、読み出し可能であるか否かを判定する。
具体的には、データアクセス判定部１０７ａは、メモリ管理部１１４ａから、アクセス要求と共に、アクセス要求セキュア属性を受け取る。アクセス要求セキュア属性は、先に述べたように、secure及びnormalの何れかに設定されている。
【０１０５】
受け取ったアクセス要求セキュア属性がsecureに設定されている場合、データアクセス判定部１０７ａは、読出データセキュア属性がsecureに設定されたデータ、及び読出データセキュア属性がnormalに設定されたデータの両者を読み出し可能であると判定する。
一方、受け取ったアクセス要求セキュア属性がnormalに設定されている場合、データアクセス判定部１０７ａは、読出データセキュア属性がnormalに設定されたデータのみ、読み出し可能であると判定する。
【０１０６】
（５）バスインタフェース１０９ａ
バスインタフェース１０９ａは、プロセッサコア１０１ａによるバス４０ａ及びバス５０ａへのアクセスを制御する。
２．メモリインタフェース２０ａ
メモリインタフェース２０ａは、図６に示したメモリインタフェース２０と同様に、バスマスタ識別部、セキュア領域管理部、アクセス可否判定部、アクセス部、及び読出データセキュア属性生成部から構成され、バス４０ａ及びバス５０ａを介して受け取るコマンドに応じた処理を行う。
【０１０７】
バスマスタ識別部は、バス４０ａ及びバス５０ａからアクセス要求を受け付けると、当該アクセス要求のバスマスタを識別し、識別結果をアクセス可否判定部へ出力する。なお、本実施形態においては、バスマスタとしてプロセッサ１０ａのみを記載しているが、メモリインタフェース２０ａがプロセッサ１０ａ以外にも複数のバスマスタからメモリ３０ａへのアクセス要求を受け付ける場合には、バスマスタ識別部は、各バスマスタに専用のポートを備え、各バスマスタを識別する。
【０１０８】
セキュア領域管理部は、メモリ３０ａに備えられたセキュア命令領域３０１ａについて、セキュア命令領域開始アドレス、及びセキュア命令領域終了アドレスを管理しており、セキュアデータ領域３０２ａについて、セキュアデータ領域開始アドレス、及びセキュアデータ領域終了アドレスを管理している。
アクセス可否判定部は、コマンドが命令フェッチを示す場合、バスマスタがプロセッサコア１０１ａであるか否かに応じて、セキュア命令領域３０１ａへのアクセス可否を判定する。具体的には、バスマスタ識別部から受け取る識別結果がプロセッサコア１０１ａであれば、セキュア命令領域３０１ａにアクセス可能であり、バスマスタ識別部から受け取る識別結果がプロセッサコア１０１ａ以外であれば、セキュア命令領域３０１ａにアクセス不可能である。
【０１０９】
また、コマンドがデータフェッチを示す場合、アクセス可否判定部は、第１の実施形態と同様に、バスマスタからアクセス要求セキュア属性を受け取るので、アクセス要求セキュア属性に応じて、セキュアデータ領域３０２ａへのアクセス可否を判定する。具体的には、アクセス要求セキュア属性がsecureに設定されていれば、セキュアデータ領域３０２ａにアクセス可能であり、アクセス要求セキュア属性がnormalに設定されていれば、セキュアデータ領域３０２ａにアクセス不可能である。
【０１１０】
アクセス部及び読出データセキュア属性生成部は、第1の実施形態と同様に機能するため、説明を省略する。
３．メモリ３０ａ
メモリ３０ａは、第１の実施形態のメモリ３０と同様、SDRAMで構成される。メモリ３０ａは、図１４に示すように、セキュア命令領域３０１ａ、及びセキュアデータ領域３０２ａを備える。
【０１１１】
セキュア命令領域３０１ａは、秘匿な命令コードを格納する領域であり、プロセッサコア１０１ａによるアクセスのみで、アクセスが可能な領域である。セキュアデータ領域３０２ａは、秘匿なデータを格納する領域であり、プロセッサコア１０１ａによるセキュア属性付きアクセスのみで、アクセスが可能な領域である。
４．バス４０ａ、及びバス５０ａ
バス４０ａは、プロセッサ１０ａとメモリインタフェース２０ａとの間の通信経路である。プロセッサ１０ａのバスインタフェース１０９ａから、バス４０ａを介して、メモリインタフェース２０ａへ、書込データ、コマンド、及びアクセス要求が送信される。また、メモリインタフェース２０ａから、バス４０ａを介して、プロセッサ１０ａのバスインタフェース１０９ａへ、読出データ及び読出データセキュア属性が送信される。
【０１１２】
バス５０ａは、プロセッサ１０ａとセキュアモジュール６０ａとの間の通信経路である。プロセッサ１０ａのバスインタフェース１０９ａから、バス５０ａを介して、セキュアモジュール６０ａへ、書込データ、コマンド、アクセス要求、及びアクセス要求セキュア属性が送信される。また、セキュアモジュール６０ａから、バス５０ａを介して、プロセッサ１０ａのバスインタフェース１０９ａへ、読出データが送信される。
【０１１３】
５．セキュアモジュール６０ａ
セキュアモジュール６０ａは、具体例として、秘密鍵情報を用いてコンテンツの暗号化や復号を行う暗号化／復号手段、ライセンス管理のためのセキュアな時間を管理するタイマー等、セキュアな処理に係るモジュールである。
セキュアモジュール６０ａは、バス５０ａを介して、プロセッサコア１０１ａからアクセス要求とアクセス要求セキュア属性とを受け取る。アクセス要求セキュア属性は、secure及びnormalの何れかに設定されており、secureは、当該アクセス要求が秘匿な命令コードの実行により発生したことを示し、normalは、当該アクセス要求が秘匿でない命令コードの実行により発生したことを示す。
【０１１４】
セキュアモジュール６０ａは、セキュリティを確保するために、アクセス要求が秘匿な命令コードの実行により発生した場合に限り、アクセスを許可する。
したがって、セキュアモジュール６０ａは、プロセッサコア１０１ａから、アクセス要求及びアクセス要求セキュア属性を受け取ると、アクセス要求セキュア属性を判断し、アクセス要求セキュア属性がsecureである場合には、プロセッサコア１０１ａから受け付けたアクセス要求を有効として、処理を行い、アクセス要求セキュア属性がnormalである場合には、プロセッサコア１０１ａから受け付けたアクセス要求を無効として、処理を行わない。
【０１１５】
＜動作＞
以下では、図１５から図１９に示すフローチャートを用い、セキュア処理システム２の動作について説明する。
１．システム全体の動作
図１５は、セキュア処理システム２全体の動作を示すフローチャートである。
【０１１６】
先ず、プロセッサコア１０１ａの命令フェッチ部１１０ａは、命令コードをフェッチし（ステップS５０１）、命令コードと読出データセキュア属性とを取得する。命令フェッチ部１１０ａは、フェッチした命令コードを、プリフェッチキューに格納する。
デコード部１１１ａは、プリフェッチキューから命令コードを取り出し、命令コードを低レベルコードに変換する。変換された低レベルコードは、命令キューに格納される。制御部１１２ａは、命令キューから受け取った低レベルコードを解読する（ステップS５０２）。
【０１１７】
演算部１１３ａは、レジスタファイルからレジスタオペランドを読み出す（ステップS５０３）。演算部１１３ａは、オペランドをシフトし、ＡＬＵ結果を生成する。命令がロード又はストアの場合、ＡＬＵは、メモリアドレスを計算する等、命令を実行する（ステップS５０４）。データアクセスの必要があれば、メモリ管理部１１４ａは、アクセス要求及びアクセス要求セキュア属性を発行し、データキャッシュ１０４ａ又はメモリ３０ａからデータを読み出す（ステップS５０５）。
【０１１８】
なお、ステップS５０１の命令フェッチの際に取得した読出データセキュア属性は、命令フェッチ部１１０ａから、デコード部１１１ａを介さずに、制御部１１２ａを介して、メモリ管理部１１４ａへ入力される。メモリ管理部１１４ａは、読出データデータセキュア属性を、データフェッチのアクセス要求セキュア属性として、データアクセス判定部１０７ａに対し発行する。
【０１１９】
また、ステップS５０４の命令実行の結果、セキュアモジュール６０ａへのアクセス要求が発生したか否か判断し（ステップS５０６）、セキュアモジュール６０ａへのアクセス要求が発生しない場合（ステップS５０６でNO）、演算部１１３ａは、データキャッシュ１０４ａ又はメモリ３０ａからロードしたデータ、及び命令が生成した結果をレジスタファイルにライトバックし（ステップS５０７）、ステップS５０１に戻り、処理を続ける。
【０１２０】
セキュアモジュール６０ａへのアクセス要求が発生した場合（ステップS５０６でYES）、メモリ管理部１１４ａは、ステップS５０４で実行された命令コードに対応する読出データセキュア属性を、制御部１１２ａから受け取る、受け取った読出データセキュア属性がsecureであるかnormalであるか判断する（ステップS５０８）。読出データセキュア属性がsecureの場合（ステップS５０９でsecure）、メモリ管理部１１４ａは、アクセス要求セキュア属性として、secureを設定する（ステップS５１０）。読出データセキュア属性がnormalの場合（ステップS５０９でnormal）、メモリ管理部１１４ａは、アクセス要求セキュア属性として、normalを設定する（ステップS５１１）。
【０１２１】
メモリ管理部１１４ａは、アクセス要求と、ステップS５１０又はステップS５１１で生成したアクセス要求セキュア属性とを、バスインタフェース１０９ａ及びバス５０ａを介して、セキュアモジュール６０ａへ転送し（ステップS５１２）、セキュアモジュール６０ａはアクセス要求に応じて処理を行う（ステップS５１３）。その後、ステップS５０１に戻り、処理を続ける。
【０１２２】
２．命令フェッチ処理の動作
図１６は、プロセッサコア１０１ａの命令フェッチに伴う、セキュア処理システム２全体の動作を示すフローチャートである。
プロセッサコア１０１ａの命令フェッチ部１１０ａは、アクセス要求を発行し（ステップS６０１）、命令キャッシュ１０２ａは、アクセス要求を受け取り、アクセス要求された命令コードが命令キャッシュ１０２ａに存在するか否か判断する（ステップS６０２）。
【０１２３】
キャッシュヒットの場合（ステップS６０２でYES）。命令キャッシュ１０２ａは、アクセス先キャッシュラインから命令コードを読み出し、対応する読出データセキュア属性と共に、プロセッサコア１０１ａへ転送する（ステップS６０３）。キャッシュミスヒットの場合（ステップS６０２でNO）、バスインタフェース１０９ａからバス４０ａを介してメモリインタフェース２０ａへ、アクセス要求を転送する（ステップS６０４）。
【０１２４】
メモリインタフェース２０ａのバスマスタ識別部は、アクセス要求を受け付けると、当該アクセス要求のバスマスタを識別し、識別結果をアクセス可否判定部へ出力する。  
アクセス可否判定部は、アクセス要求からアクセス要求先アドレスを抽出し（ステップS６０５）、更に、セキュア領域管理部から、セキュア命令領域開始アドレス及びセキュア命令領域終了アドレスを取得する。
【０１２５】
アクセス可否判定部は、アクセス要求先アドレスが、メモリ３０ａのセキュア命令領域３０１ａを示すか否か判断する。アクセス要求先アドレスが、セキュア命令領域３０１ａ以外の領域を示す場合（ステップS６０６でNO）、ステップS６０８へ進む。アクセス要求先アドレスが、セキュア命令領域３０１ａを示す場合（ステップS６０６でYES）、アクセス可否判定部は、バスマスタ識別部から受け取った識別結果が、プロセッサコア１０１ａを示すか否か判断する。
【０１２６】
バスマスタがプロセッサコア１０１ａ以外である場合（ステップS６０７でNO）、セキュア処理システム２は処理を終了する。バスマスタがプロセッサコア１０１ａである場合（ステップS６０７でYES）、アクセス可否判定部は、アクセス要求先アドレスをアクセス部に出力する。
アクセス部は、メモリ３０ａのアクセス要求先アドレスが示す位置へアクセスし、命令コードを読み出す（ステップS６０８）。アクセス部は、命令コードを読み出すと、読み出した命令コードとアクセス先アドレスとを、読出データセキュア属性生成部へ出力する。アクセス先アドレスは、当該命令コードの格納場所を示すアドレスであって、アクセス部は、アクセス可否判定部から受け取ったアクセス要求先アドレスを、アクセス先アドレスとして出力する。
【０１２７】
その後、読出データセキュア属性生成部は、読出データセキュア属性を生成し（ステップS６０９）、命令コードと読出データセキュア属性とを、プロセッサ１０ａに対し転送する（ステップS６１０）。
プロセッサコア１０１ａの命令フェッチ部１１０ａは、命令コード及び読出データセキュア属性を取得し（ステップS６１１）、命令キャッシュ１０２ａも命令コードを取得する（ステップS６１２）。命令属性管理部１０３ａは、読出データセキュア属性を取得し、取得した読出データセキュア属性を属性管理テーブルにて管理する（ステップS６１３）。
【０１２８】
なお、ステップS６０９のメモリインタフェース２０ａによる読出データセキュア属性生成処理の動作は、図１０に示した動作と同様であるため、説明を省略する。
３．データフェッチ処理の動作
図１７及び図１８は、プロセッサコア１０１ａのデータフェッチに伴う、セキュア処理システム２全体の動作を示すフローチャートである。
【０１２９】
プロセッサコア１０１ａのメモリ管理部１１４ａは、命令コードの読出データセキュア属性を、データフェッチのアクセス要求セキュア属性とし（ステップS７０１）、アクセス要求及びアクセス要求セキュア属性を発行する（ステップS７０２）、データアクセス判定部１０７ａは、アクセス要求とアクセス要求セキュア属性とを受け取る（ステップS７０３）。
【０１３０】
データキャッシュ１０４ａは、データアクセス判定部１０７ａを介して、アクセス要求を受け取り、アクセス要求されたデータがデータキャッシュ１０４ａに存在するか否か判断する。
キャッシュミスヒットの場合（ステップS７０３でNO）、ステップS７１１に続く。キャッシュヒットの場合（ステップS７０３でYES）、データアクセス判定部１０７ａは、データ属性管理部１０５ａが管理している属性管理テーブルから、アクセス先キャッシュラインに対応する読出データセキュア属性を読み出す。データアクセス判定部１０７ａは、読み出した読出データセキュア属性がsecureであるか、normalであるか判断する。
【０１３１】
読出データセキュア属性がnormalの場合（ステップS７０４でNO）、ステップS７０６へ進む。読出データセキュア属性がsecureの場合（ステップS７０４でYES）、データアクセス判定部１０７ａは、メモリ管理部１１４ａから受け取ったアクセス要求セキュア属性がsecureであるかnormalであるかを判断する。
アクセス要求セキュア属性がnormalの場合（ステップS７０５でNO）、セキュア処理システム２は処理を終了する。アクセス要求セキュア属性がsecureの場合（ステップS７０５でYES）、データキャッシュ１０４ａは、アクセス先キャッシュラインからデータを読み出して、データアクセス判定部１０７ａを介して、プロセッサコア１０１ａへ転送する（ステップS７０６）。
【０１３２】
ステップS７０３でNOの場合には、バスインタフェース１０９ａからバス４０ａを介してメモリインタフェース２０ａへ、アクセス要求とアクセス要求セキュア属性とを転送する（ステップS７１１）。メモリインタフェース２０ａのアクセス可否判定部は、バスマスタ識別部を介して、アクセス要求及びアクセス要求セキュア属性を受け取る。
アクセス可否判定部は、アクセス要求からアクセス要求先アドレスを抽出し、更に、セキュア領域管理部から、セキュアデータ領域開始アドレス及びセキュアデータ領域終了アドレスを取得する。
【０１３３】
アクセス可否判定部は、アクセス要求先アドレスが、メモリ３０ａのセキュアデータ領域３０２ａを示すか否か判断する（ステップS７１２）。アクセス要求先アドレスが、セキュアデータ領域３０２ａ以外の領域を示す場合（ステップS７１３でNO）、ステップS７１５へ進む。アクセス要求先アドレスが、セキュアデータ領域３０２ａを示す場合（ステップS７１３でYES）、アクセス可否判定部は、アクセス要求セキュア属性がsecure及びnormalの何れに設定されているか判断する。
【０１３４】
アクセス要求セキュア属性がnormalに設定されている場合（ステップS７１４でNO）、セキュア処理システム２は処理を終了する。アクセス要求セキュア属性がsecureに設定されている場合（ステップS７１４でYES）、アクセス可否判定部は、アクセス要求先アドレスをアクセス部に出力する。
アクセス部は、メモリ３０ａのアクセス要求先アドレスが示す位置へアクセスし、データを読み出す（ステップS７１５）。アクセス部は、データを読み出すと、読み出したデータとアクセス先アドレスとを、読出データセキュア属性生成部へ出力する。アクセス先アドレスは、当該データの格納場所を示すアドレスであって、アクセス部は、アクセス可否判定部から受け取ったアクセス要求先アドレスを、アクセス先アドレスとして出力する。
【０１３５】
その後、読出データセキュア属性生成部は、読出データセキュア属性を生成し（ステップS７１６）、データと読出データセキュア属性とを、プロセッサ１０ａに対し転送する（ステップS７１７）。
プロセッサコア１０１ａの演算部１１３ａは、メモリ管理部１１４ａを介してデータを取得し（ステップS７１８）、データキャッシュ１０４ａもデータを取得する（ステップS７１９）。データ属性管理部１０５ａは、読出データセキュア属性を取得し、取得した読出データセキュア属性を属性管理テーブルにて管理する（ステップS７２０）。  
【０１３６】
なお、ステップS７１６のメモリインタフェース２０ａによる読出データセキュア属性生成処理の動作は、図１０に示した動作と同様であるため、説明を省略する。
４．セキュアモジュール６０ａの動作
図１９は、セキュアモジュール６０ａの動作を示すフローチャートである。なお、ここに示す動作は、図１５のステップS５１３の詳細である。
【０１３７】
セキュアモジュール６０ａは、プロセッサコア１０１ａからコマンド、アクセス要求、及びアクセス要求セキュア属性を受け取ると、アクセス要求セキュア属性がsecureであるか、normalであるか判断し（ステップS８０１）、アクセス要求セキュア属性がsecureである場合には（ステップS８０２でsecure）、セキュアモジュール６０ａは、コマンドに応じた処理を行う（ステップS８０３）、アクセス要求セキュア属性がnormalである場合には、セキュアモジュール６０ａは、アクセスを拒否し（ステップS８０４）、処理を終了する。
【０１３８】
＜暗号ＤＭＡによる具体例＞
ここでは、図２０を用いて、セキュアモジュール６０ａが、暗号DMA（direct memory access）である場合の、第２の実施形態におけるバスアクセスの具体的な動作を説明する。暗号DMAは、暗号機能ブロック（図示せず）と、メモリ３０ａと間のデータ転送を行うモジュールであって、ここではDMAコントローラを含むものとする。
【０１３９】
また、先に述べたように、メモリ３０ａのセキュア命令領域３０１ａは、プロセッサコア１０１ａによるアクセスのみで、アクセスが可能な領域であり、セキュアデータ領域３０２ａは、プロセッサコア１０１ａによるセキュア属性付きアクセスのみで、アクセスが可能な領域である。
（S１）プロセッサコア１０１ａは、暗号DMAレジスタ設定のための命令コードのフェッチを示すコマンド及びアクセス要求１００１を発行する。プロセッサコア１０１ａは、セキュアモードを有しておらず、通常モードでのみ動作するため、プロセッサコア１０１ａから出力されるアクセス要求１００１は、通常アクセスである。なお、暗号DMAレジスタ設定のための命令コードは、セキュア命令領域３０１ａに格納されているセキュアな命令コードである。
【０１４０】
（S２）メモリインタフェース２０ａは、セキュア命令領域３０１ａへのアクセスを示すコマンド及びアクセス要求１００１を受け付けると、バスマスタ判定部により、アクセス要求１００１がプロセッサコア１０１ａから発行されたことを確認し、暗号DMAレジスタ設定のための命令コードを、セキュア命令領域３０１ａから取得する。続いて、メモリインタフェース２０ａの読出データセキュア属性生成部は、secureを示す読出データセキュア属性を設定して、命令コードと読出データセキュア属性１００２とをプロセッサコア１０１ａへ転送する。
【０１４１】
（S３）続いて、プロセッサコア１０１ａでは、レジスタ設定のためのデータフェッチを示すコマンド及びアクセス要求１００３を発行する。このときS２でメモリインタフェース２０ａから受け取った読出データセキュア属性１００２が示すsecureを、アクセス要求セキュア属性として、アクセス要求１００３に付加する。即ち、プロセッサコア１０１ａは、セキュアなアクセス要求を発行する。
【０１４２】
（S４）メモリインタフェース２０ａは、セキュアデータ領域３０２ａへのアクセスを示すコマンド及びアクセス要求１００３を受け取ると、アクセス可否判定部により、アクセス要求セキュア属性がsecureであることを確認し、レジスタ設定のためのデータを、セキュアデータ領域３０２ａから取得する。続いてメモリインタフェース２０ａの読出データセキュア属性生成部は、secureを示す読出データセキュア属性を設定して、データと読出データセキュア属性１００４とをプロセッサコア１０１ａへ転送する。
【０１４３】
（S５）プロセッサコア１０１ａは、暗号DMAに対し、レジスタ設定を要求するコマンド及びアクセス要求１００５を発行する。このとき、（S４）でメモリインタフェース２０ａから取得した読出データセキュア属性が示すsecureを、アクセス要求セキュア属性として、アクセス要求１００５に付加する。
レジスタ設定を要求するコマンド及びアクセス要求１００５を受け付けた暗号DMAは、アクセス要求セキュア属性がsecureであることを確認し、プロセッサコア１０１ａから受け取ったデータに基づき、レジスタ設定を行う。
【０１４４】
≪その他の変形例≫
以上、本発明を第１及び第２の実施形態に基づき説明してきたが、本発明は、上記の実施形態に限定されないのは勿論であり、以下のような場合であっても、本発明に含まれる。
（１）上記第１及び第２の実施形態では、プロセッサの内部メモリをキャッシュメモリとして説明しているが、キャッシュメモリは一つの具体例であり、本発明における内部メモリは、キャッシュメモリに限定されない。
（２）上記第１の実施形態では、メモリ３０がセキュア領域１（３００１）、及びセキュア領域２（３００２）の、２つのセキュア領域を備える構成を有するが、本発明においては、メモリが備えるセキュア領域の数は幾つであってもよい。
【０１４５】
（３）また本発明は、上記実施形態におけるプロセッサ１０、プロセッサ１０ａ、メモリインタフェース２０、及びメモリインタフェース２０ａの機能ブロックの一部又は全てが集積回路であるＬＳＩとして実現される場合も本発明に含まれる。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１４６】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路で実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（FieldProgrammable Gate Array）やＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
更には、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応などが可能性として有り得る。
【０１４７】
（４）上記の実施形態及び上記変形例をそれぞれ組み合わせる構成も本発明に含まれる。
【産業上の利用可能性】
【０１４８】
本発明に係るプロセッサ及びセキュア処理システムは、コンテンツを配信する産業において、コンテンツの著作権保護機構として利用することができる。また、当該プロセッサ又は当該セキュア処理システムを含むAV機器を生産、及び販売する産業において利用することができる。
【図面の簡単な説明】
【０１４９】
【図１】セキュア処理システム１の構成を示す図である。
【図２】命令キャッシュ１０２を示す図である。
【図３】命令属性管理部１０３が管理している属性管理テーブル１３０のデータ構成を示す図である。
【図４】メモリ無効化部１０８による無効化処理後の、命令キャッシュ１０２を示す図である。
【図５】バス４０が、プロセッサ１０のバスインタフェース１０９とメモリインタフェース２０との間で送受信するデータを示す図である。
【図６】メモリインタフェース２０の構成を機能的に示す図である。
【図７】セキュア処理システム１におけるプロセッサコア１０１の動作を示すフローチャートである。
【図８】プロセッサコア１０１の命令フェッチに伴う、セキュア処理システム１の全体の動作を示すフローチャートであり、図９に続く。
【図９】プロセッサコア１０１の命令フェッチに伴う、セキュア処理システム１全体の動作を示すフローチャートであり、図８から続く。
【図１０】メモリインタフェース２０における読出データセキュア属性生成処理動作を示すフローチャートである。
【図１１】プロセッサコア１０１のデータフェッチに伴う、セキュア処理システム１の全体の動作を示すフローチャートであり、図１２に続く。
【図１２】プロセッサコア１０１のデータフェッチに伴う、セキュア処理システム１の全体の動作を示すフローチャートであり、図１１から続く。
【図１３】セキュアモードから通常モードへの復帰処理の動作を示すフローチャートである。
【図１４】セキュア処理システム２の構成を示す図である。
【図１５】セキュア処理システム２全体の動作を示すフローチャートである。
【図１６】プロセッサコア１０１ａの命令フェッチに伴う、セキュア処理システム２の全体の動作を示すフローチャートである。
【図１７】プロセッサコア１０１ａのデータフェッチに伴う、セキュア処理システム２全体の動作を示すフローチャートであり、図１８に続く。
【図１８】プロセッサコア１０１ａのデータフェッチに伴う、セキュア処理システム２全体の動作を示すフローチャートであり、図１７から続く。
【図１９】セキュアモジュール６０ａの動作を示すフローチャートである。
【図２０】セキュアモジュール６０ａの具体例を用い、バスアクセス及びセキュア属性について説明するための図面である
【符号の説明】
【０１５０】
１    セキュア処理システム
２    セキュア処理システム
１０    プロセッサ
１０ａ  プロセッサ
２０    メモリインタフェース
２０ａ  メモリインタフェース
３０    メモリ
３０ａ  メモリ
４０    バス
４０ａ  バス
５０ａ  バス
６０ａ  セキュアモジュール
【図１】
0004750719.tif 000002
【図２】
0004750719.tif 000003
【図３】
0004750719.tif 000004
【図４】
0004750719.tif 000005
【図５】
0004750719.tif 000006
【図６】
0004750719.tif 000007
【図７】
0004750719.tif 000008
【図８】
0004750719.tif 000009
【図９】
0004750719.tif 000010
【図１０】
0004750719.tif 000011
【図１１】
0004750719.tif 000012
【図１２】
0004750719.tif 000013
【図１３】
0004750719.tif 000014
【図１４】
0004750719.tif 000015
【図１５】
0004750719.tif 000016
【図１６】
0004750719.tif 000017
【図１７】
0004750719.tif 000018
【図１８】
0004750719.tif 000019
【図１９】
0004750719.tif 000020
【図２０】
0004750719.tif 000021