(57)【要約】  仮想アドレスキャッシュ方式のキャッシュメモリ内のデータを効率的に保護するメモリ管理システムを提供する。  メモリ管理システムは、プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、メインメモリへのアクセスを管理するメモリ管理ユニットを具備する。前記プロセッサコアからメモリアクセス要求した際、セキュリティ状態が変化している場合には、ヒットしたキャッシュラインのキャッシュフラッシュを実施する。
2019167360.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備するメモリ管理システム。
【請求項２】
前記状態記憶部は、前記キャッシュメモリのキャッシュライン単位でセキュリティ状態を記憶する、
請求項１に記載のメモリ管理システム。
【請求項３】
前記状態記憶部は、前記キャッシュメモリ内のタグメモリ、前記キャッシュメモリ内でタグメモリとは別に配置されたレジスタ、又は、キャッシュライン本体の外に実装されたメモリ又はレジスタのいずれかからなり、前記キャッシュメモリのライン毎のセキュリティ状態を記憶する、
請求項１に記載のメモリ管理システム。
【請求項４】
前記メモリ管理ユニットは、
トランスレーションルックアサイドバッファ内のページテーブルの各エントリに、セキュリティ状態毎のアクセスの可否を示すパーミッション情報を格納し、
前記プロセッサコアからメモリアクセス要求と同時に通信してきたセキュリティ状態に対するアクセスの可否を、ヒットしたエントリに格納されたパーミッション情報に基づいて判断する、
請求項１に記載のメモリ管理システム。
【請求項５】
前記プロセッサコアからのメモリアクセス要求に対し、前記メモリ管理ユニットによるプロテクションチェックを経て、前記メインメモリから読み取ったデータを前記キャッシュメモリに書き込むとともに、前記状態記憶部は該当するキャッシュラインに対応付けてセキュリティ状態を記憶する、
請求項１に記載のメモリ管理システム。
【請求項６】
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、ヒットしたキャッシュラインのキャッシュフラッシュを実施する、
請求項１に記載のメモリ管理システム。
【請求項７】
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、前記メモリ管理ユニットによるプロテクションチェックを実施して、このメモリアクセス要求が許可された場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
請求項１に記載のメモリ管理システム。
【請求項８】
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しないが、その相違が前記キャッシュメモリ内部の既定のルールを満たす場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
請求項１に記載のメモリ管理システム。
【請求項９】
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態よりも権限が上位である場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
請求項１に記載のメモリ管理システム。
【請求項１０】
前記キャッシュメモリは仮想アドレスキャッシュ方式である、
請求項１に記載のメモリ管理システム。
【請求項１１】
プロセッサコアからメモリアクセス要求されたデータをメインメモリから読み出してキャッシュメモリに一時記憶するステップと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶ステップと、
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と比較した結果に基づいて、前記キャッシュメモリ及び前記メインメモリへのアクセスを制御する制御ステップと、
を有するメモリ管理方法。
【請求項１２】
プロセッサコアと、
メインメモリと、
前記プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
前記メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、仮想アドレスキャッシュ方式のメモリ管理システム及びメモリ管理方法、並びに情報処理装置に関する。
【背景技術】
【０００２】
一般的なメモリシステムにおいては、プロセッサと物理メモリの間にメモリ管理ユニット（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ：ＭＭＵ）が配置され、ＭＭＵは、仮想アドレス空間全体に対してこのようなアドレス変換を行うことで、プロセス毎の仮想アドレス空間を実現するとともに、実メモリ容量以上の仮想メモリを提供する。【０００３】
また、プロセッサに対するメモリの速度不足を解消するために、メモリの階層化が行われている。具体的には、高速の小容量メモリを１次キャッシュとしてプロセッサと同一チップに内蔵し、次に高価であるが高速なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を２次キャッシュとしてプロセッサの近傍に、さらに比較的に低速であるが安価であるＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）で構成されるメインメモリを配置する。【０００４】
ここで、プロセッサがキャッシュメモリを参照する方法として、変換後の物理アドレスで検索する物理アドレスキャッシュ方式と、仮想アドレスで検索する仮想アドレスキャッシュ方式が挙げられる。物理アドレスキャッシュ方式を採用するメモリシステムでは、プロセッサとキャッシュメモリの間にＭＭＵが配置され、プロセッサがキャッシュにアクセスする度にアドレス変換が実施される。また、仮想アドレスキャッシュ方式を採用するメモリシステムでは、キャッシュメモリとメインメモリの間にＭＭＵが配置され、プロセッサは仮想アドレスを使ってキャッシュメモリを参照し、キャッシュミスした場合のみＭＭＵによりアドレス変換が実施されてメインメモリへのアクセスが発生する。【０００５】
キャッシュメモリを持つメモリシステムにおいては、物理アドレスキャッシュ方式が主流である。しかしながら、物理アドレスキャッシュ方式は、プロセッサからキャッシュメモリにアクセスする度に、ＭＭＵにおけるアドレス変換の処理が実行されるため、電力効率と回路速度が低下するという問題がある。【０００６】
これに対し、仮想アドレスキャッシュ方式では、キャッシュミスした場合のみＭＭＵにおけるアドレス変換とキャッシュメモリの活性化が実行されるので、消費電力が削減される。したがって、バッテリで長期間稼働しなければならない超低消費電力ＩｏＴ（Ｉｎｔｅｒｎｅｔ  Ｏｆ  Ｔｈｉｎｇｓ）や、低消費電力化が不可欠なウェアラブルデバイスに対しては、仮想アドレスキャッシュ方式が有力視される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−７８２４８号公報
【特許文献２】特開２００６−１５５５１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本明細書で開示する技術の目的は、仮想アドレスキャッシュ方式のキャッシュメモリ内のデータを効率的に保護するメモリ管理システム及びメモリ管理方法、並びに情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本明細書で開示する技術の第１の側面は、
プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備するメモリ管理システムである。前記キャッシュメモリは仮想アドレスキャッシュ方式である。【００１０】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。【００１１】
前記状態記憶部は、前記キャッシュメモリ内のタグメモリ、前記キャッシュメモリ内でタグメモリとは別に配置されたレジスタ、又は、キャッシュライン本体の外に実装されたメモリ又はレジスタのいずれかからなり、前記キャッシュメモリのライン毎のセキュリティ状態を記憶する。【００１２】
第１の側面に係るメモリ管理システムは、前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、ヒットしたキャッシュラインのキャッシュフラッシュを実施するようになっている。【００１３】
あるいは、第１の側面に係るメモリ管理システムは、前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、前記メモリ管理ユニットによるプロテクションチェックを実施して、このメモリアクセス要求が許可された場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新するようになっている。【００１４】
あるいは、第１の側面に係るメモリ管理システムは、前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しないが、その相違が前記キャッシュメモリ内部の既定のルールを満たす場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新するようになっている。【００１５】
また、本明細書で開示する技術の第２の側面は、
プロセッサコアからメモリアクセス要求されたデータをメインメモリから読み出してキャッシュメモリに一時記憶するステップと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶ステップと、
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と比較した結果に基づいて、前記キャッシュメモリ及び前記メインメモリへのアクセスを制御する制御ステップと、
を有するメモリ管理方法である。【００１６】
また、本明細書で開示する技術の第３の側面は、
プロセッサコアと、
メインメモリと、
前記プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
前記メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備する情報処理装置である。
【発明の効果】
【００１７】
本明細書で開示する技術によれば、仮想アドレスキャッシュ方式のキャッシュメモリ内のデータの保護を、キャッシュメモリ内に記憶する少ない情報で実現することができるメモリ管理システム及びメモリ管理方法、並びに情報処理装置を提供することができる。【００１８】
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。【００１９】
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【００２０】
【図１】図１は、組み込み機器を含むシステムの構成例を模式的に示した図である。
【図２】図２は、センシングデバイス１００のハードウェア構成例を示した図である。
【図３】図３は、仮想アドレスキャッシュ方式のメモリ管理システム１の構成例を模式的に示した図である。
【図４】図４は、プロセッサコア１０からのメモリアクセス要求と同時に通信されるセキュリティ状態をキャッシュメモリ２０内に記憶する様子を示した図である。
【図５】図５は、メモリ管理システム１においてメモリアクセスを制御するための処理手順を示したフローチャート（前半）である。
【図６】図６は、メモリ管理システム１においてメモリアクセスを制御するための処理手順を示したフローチャート（後半）である。
【図７】図７は、キャッシュライン毎のセキュリティ状態をタグビットに保存するように構成されたキャッシュメモリ２０の実装例を示した図である。
【図８】図８は、メモリ管理システム１においてメモリアクセスを制御するための処理手順の変形性を示したフローチャート（前半）である。
【図９】図９は、メモリ管理システム１においてメモリアクセスを制御するための処理手順の変形例を示したフローチャート（後半）である。
【図１０】図１０は、メモリ管理システム１においてメモリアクセスを制御するための処理手順の他の変形例を示したフローチャート（前半）である。
【図１１】図１１は、メモリ管理システム１においてメモリアクセスを制御するための処理手順の他の変形例を示したフローチャート（後半）である。
【図１２】図１２は、ＭＭＵ３０からキャッシュメモリ２０へパーミッション情報をコピーする様子を示した図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
【００２２】
プロセッサが扱う各データには、アクセスが許可されたユーザや、許可された処理（読み取り、書き込み、実行など）といった、セキュリティ状態若しくは保護属性といったパーミッション情報が設定されていることがある。このような場合、プロセッサがアクセスする度に、パーミッションチェックを実施して、メモリを保護する必要がある。
【００２３】
例えば、ＭＭＵは、ページ単位で仮想アドレスから物理アドレスへ変換するための情報を格納するトランスレーションルックアサイドバッファ（ＴＬＢ）を備え、このＴＬＢのエントリ毎に該当ページのパーミッション情報をページ属性として保持することができる。したがって、物理アドレスキャッシュ方式では、プロセッサコアからキャッシュメモリにアクセスする度に、容易にパーミッションチェックを行うことができる。
【００２４】
これに対し、仮想アドレスキャッシュ方式では、キャッシュメモリの後段にＭＭＵが配置される（前述）。このため、プロセッサコアからキャッシュメモリにアクセスする際に、ＭＭＵによるパーミッションチェックを受けることができないので、別の方法（すなわち、ＭＭＵに頼らない方法）でメモリを保護する必要がある。
【００２５】
例えば、キャッシュミスして、ＭＭＵを経由してキャッシュメモリにデータをキャッシュする際に、ラインデータのページ属性をキャッシュライン毎に記憶しておく処理システムについて提案がなされている（例えば、特許文献１を参照のこと）。この処理システムによれば、キャッシュヒットしたときにはキャッシュメモリ内にある情報に基づいてパーミッションチェックを行うことができるので、仮想アドレスキャッシュ方式において容易にメモリ保護を実現することができる。  
【００２６】
しかしながら、この処理システムでは、キャッシュメモリ内のライン分のパーミッション情報のコピーを持つ容量が、キャッシュメモリ内に別途必要になる。通常、アドレス変換の単位であるページサイズよりもキャッシュのラインサイズは小さいので、コピーしたパーミッション情報に冗長性が生じる。例えば、キャッシュラインが１６Ｂｙｔｅで、ページサイズが１６ＫＢｙｔｅ、キャッシュメモリの総容量が１６ＫＢｙｔｅというメモリ構成の場合、キャッシュメモリ内のすべてのデータが同一のページのデータであっても、１０２４個の同じパーミッション情報のコピーをキャッシュメモリ内に保持しなければならず、冗長である。
【００２７】
また、この処理システムでは、ＭＭＵからキャッシュメモリへパーミッション情報を伝達するためのサイドバンド信号や制御回路が必要になると思料される。一般には、キャッシュメモリからＭＭＵへの一方向の通信しか存在しないので、このようなサイドバンド回路や制御回路を設けると、ＭＭＵからキャッシュメモリへの情報通信のための回路コストが増加してしまう。
【００２８】
また、アクセス権の変更を加えた際にキャッシュメモリの内容をフラッシュして、次回アクセス時にはキャッシュミスが発生し、必ず物理メモリよりデータを取得するように構成されるメモリ管理システムについて提案がなされている（例えば、特許文献２を参照のこと）。このメモリ管理システムによれば、アクセス権が変更した後は、ＭＭＵ経由で正しくパーミッションチェックを行って、メインメモリからデータを取得することができる。しかしながら、このメモリ管理システムでは、外部信号によってキャッシュメモリのデータ全体を一度フラッシュして、メインメモリとの間で同期をとる必要がある。
【００２９】
そこで、本明細書では、仮想アドレスキャッシュ方式のキャッシュメモリ内のデータの保護を、キャッシュメモリ内に記憶する少ない情報で実現することができるメモリ管理システムについて、以下に提案する。
【００３０】
図１には、本明細書で開示するメモリ管理システムを適用可能な組み込み機器を含むシステムの構成例を模式的に示している。図示のシステムは、組み込み機器に相当するセンシングデバイス１００と、基地局２００と、クラウド２０１上に設置されたサーバ２０２で構成される。センシングデバイス１００は、基地局２００に無線接続して、クラウド２０１経由でサーバ２０２にアクセスすることができる。
【００３１】
センシングデバイス１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＭＭＵ１０２、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））１０３やフラッシュメモリ１０４などのメモリ、センサ１０５、通信モジュール１０６を備え、電池１０７で駆動する機器である。なお、ＣＰＵ１０１とＭＭＵ１０２の間には、仮想アドレスキャッシュ方式のキャッシュメモリ（Ｌ１キャッシュ又はＬ２キャッシュ）が配置されるが、図１では図面の簡素化のため省略している。なお、電池１０７は、充電可能なリチウムイオン電池でもよいし、充電不可能な電池であってもよい。
【００３２】
センシングデバイス１００は、例えば装着者に装着して用いられる。ＣＰＵ１０１は、センサ１０５の検出信号に基づいて装着者の行動（止まっている、歩いている、走っているなど）を解析する。そして、解析結果を通信モジュール１０６から基地局２００へ無線送信し、クラウド２０１経由でサーバ２０２に記録される。サーバ２０２は、センシングデバイス１００から受け取ったデータを、装着者の見守りなどに使用する。
【００３３】
図２には、組み込み機器の一例としてのセンシングデバイス１００のハードウェア構成例を示している。
【００３４】
ＣＰＵ１０１は、ＭＭＵ１０２経由でシステムバス１１０に接続されている。また、システムバス１１０上には、ＳＲＡＭ１０３、フラッシュメモリ１０４、センサ１０５、通信モジュール１０６といったデバイスが接続されている。
【００３５】
フラッシュメモリ１０４は、例えば、センサ１０５の信号に基づいて装着者の行動を推定するアプリケーションや、アプリケーションを実行する際に使用するライブラリ、装着者の行動を推定するための行動推定辞書などのデータを格納している。また、センサ１０５は、加速度センサ、気圧センサ、ジャイロ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）、ＴＯＦ（Ｔｉｍｅ  Ｏｆ  Ｆｌｉｇｈｔ）画像距離センサ、ＬＩＤＡＲ（Ｌｉｇｈｔ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｒａｎｇｉｎｇ）センサなど、１以上のセンサデバイスで構成される。
【００３６】
システムバス１１０に接続されたこれらデバイスが配置される物理アドレス空間が、ＭＭＵ１０２によるアドレス変換の対象となる。この物理アドレス空間には、ＳＲＡＭ１０３が配置される他、フラッシュメモリ１０４がその内容がＣＰＵ１０１若しくはＭＭＵ１０２から直接見える形で配置されていたり、通信モジュール１０６や、センサ１０５に含まれる各種センサデバイスのＩ／Ｏポートが配置されていたりする。
【００３７】
センシングデバイス１００は、電池１０７で長時間稼働しなければならず、消費電力の削減が不可欠である。そこで、キャッシュミスした場合のみＭＭＵにおけるアドレス変換が実行される仮想アドレスキャッシュ方式が適用され、電力効率の向上が図られている。
【００３８】
図３には、センシングデバイス１００において適用される、仮想アドレスキャッシュ方式のメモリ管理システム１の構成例を模式的に示している。図示のメモリ管理システム１は、プロセッサコア１０と、キャッシュメモリ２０と、メモリ管理ユニット（ＭＭＵ）３０と、物理メモリとしてのメインメモリ４０で構成される。まず、メモリ管理システム１におけるメモリアクセス動作について、簡単に説明しておく。
【００３９】
キャッシュメモリ２０は、仮想アドレスキャッシュ方式であり、プロセッサ１０は、仮想アドレスを使用してキャッシュメモリ２０にアクセスする。但し、キャッシュメモリ２０は、Ｌ１キャッシュ又はＬ２キャッシュのいずれであってもよい。
【００４０】
キャッシュメモリ２０は、プロセッサコア１０から要求された仮想アドレスがキャッシュヒットした場合には、該当するキャッシュラインに対して読み取り又は書き込みの操作を実施する。また、プロセッサコア１０から要求された仮想アドレスがキャッシュミスした場合には、キャッシュメモリ２０は、ＭＭＵ３０に対して、仮想アドレスを使用してメモリ要求を行う。なお、キャッシュメモリ２０及びＭＭＵ３０のメモリアクセス制御フローの詳細については、後述に譲る。
【００４１】
ＭＭＵ３０は、トランスレーションルックアサイドバッファ（ＴＬＢ）３１と、ページウォーク機構３２を備えている。ＴＬＢ３１は、ページ単位で仮想アドレスから物理アドレスへ変換するための情報を持つために用いられる。また、ページウォーク機構３２は、メインメモリ上に配置されたページテーブル４１を参照する機能を備えている。ページテーブル４１には、仮想アドレスと物理アドレスの対応関係が、ページ単位で記述されている。
【００４２】
プロセッサコア１０から要求された仮想アドレス（但し、キャッシュミスした場合）に対応するエントリがＴＬＢ３１上で見つかった場合（すなわち、ＴＬＢヒットした場合）には、ＭＭＵ３０は、そのエントリの情報を用いて仮想アドレスを物理アドレスに変換して、その変換後の物理アドレスを使用してメインメモリ４０にアクセスする。
【００４３】
一方、プロセッサコア１０から要求された仮想アドレスに対応するエントリがＴＬＢ３１上で見つからなかった場合（すなわち、ＴＬＢミスした場合）には、ページウォーク機構３２は、ページテーブル４１上を探索して、要求された仮想アドレスに対応するページの物理アドレスの情報を見つけ出して、アクセス要求された仮想アドレスと物理アドレスをマッピングする新たなエントリをＴＬＢ３１に作成する。その後、ＭＭＵ３０は、改めてアドレス変換処理を実施して、要求された仮想アドレスを物理アドレスに変換することができる。
【００４４】
続いて、仮想アドレスキャッシュ方式のメモリ管理システム１におけるデータの保護について考察する。
【００４５】
物理アドレスキャッシュ方式のキャッシュメモリにおいては、ＴＬＢのエントリ毎に該当ページのパーミッション情報をページ属性として保持することで、プロセッサコアからキャッシュメモリにアクセスする際に、ＭＭＵがパーミッションチェックを行い、許可された場合にのみアドレス変換を実施するようにして、アドレス変換時にデータの保護を実現することができる。これに対し、仮想アドレスキャッシュ方式では、プロセッサコアがＭＭＵを介さずに直接キャッシュメモリにアクセスできるため、プロセッサコアからキャッシュメモリにアクセスする際に、ＭＭＵによるパーミッションチェックを受けることができない。このため、ＭＭＵに頼らない方法でメモリを保護する必要がある（前述）。
【００４６】
例えば、キャッシュミスして、ＭＭＵ３０を経由してキャッシュメモリ２０にデータをキャッシュする際に、図１２に示すように、ＴＬＢ３１内の該当するＴＬＢエントリにページ属性として格納されているパーミッション情報を、キャッシュメモリ２０内の各ラインにコピーしておく方法が挙げられる。
【００４７】
図１２において、プロセッサコア１０がメモリアクセス要求する際には、要求する仮想アドレスと同時に、プロセスのセキュリティ状態が、キャッシュメモリ２０に伝達される。図示の例では、プロセスの種別（「ｄｅｖｅｌｏｐｅｒ」又は「ｐｒｏｐｒｉｅｔａｒｙ」のいずれのプロセスであるか）、プロセスのモード（「ｕｓｅｒ」モード又は「ｐｒｉｖｉｌｅｇｅｄ（特権）」モードのいずれのモードで実行されているか）、許可された処理（読み取り（ｒｅａｄ）、書き込み（ｗｒｉｔｅ）など）といった、セキュリティに関わる複数のパラメータの８通りの組み合わせを３ｂｉｔの情報で表現している。
【００４８】
一方、ＭＭＵ３０内では、ＴＬＢ３１のエントリ毎に該当ページのパーミッション情報を保持している。具体的には、パーミッション情報は、上記の８通りのセキュリティ状態の各々に対するメモリアクセスの権限（すなわち、アクセスを許可するか又はメモリを保護するか）を、各１ｂｉｔで合計８ｂｉｔ、すなわち８個のフラグＡ〜Ｈで表現している。ＴＬＢ３１の各エントリでは、該当する仮想アドレスから物理アドレスへ変換するための情報（Ｔ）とともに、対応する物理ページに対するセキュリティ状態に応じたパーミッション情報がメモリアクセスの可否を表す８個のフラグＡ〜Ｈという形態で保持されている。例えば、フラグＡは、セキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｒｅａｄ）に対する該当ページへのメモリアクセスの可否を１又は０で示している。同様に、フラグＢはセキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｗｒｉｔｅ）に対する該当ページへのメモリアクセスの可否を示し、フラグＣはセキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｐｒｉｖｉｌｅｇｅｄ，ｒｅａｄ）に対する該当ページへのメモリアクセスの可否を示している。そして、図１２に示す例では、キャッシュメモリ２０内には、キャッシュライン毎に、該当するページ内のデータに関する８ｂｉｔのパーミッション情報（フラグＡ〜Ｈ）がコピーされる。
【００４９】
あるプロセスを実行中のプロセッサコア１０が、メモリアクセス要求したとき、キャッシュメモリ２０は、ＭＭＵ３０からコピーした８ｂｉｔのパーミッション情報のうち、プロセッサコア１０がメモリアクセス要求と同時に通信してきたセキュリティ状態に対応するフラグを参照して、メモリアクセスを許可するか又はメモリを保護するかを判定することができる。例えば、セキュリティ状態「Ａ」で実行しているプロセスがメモリアクセス要求したときには、ＭＭＵ３０は、要求された仮想アドレスに対応するＴＬＢエントリで保持するパーミッション情報のうちフラグ「Ａ」を参照して、アクセスの可否を判断することができる。
【００５０】
図１２に示す例では、ＭＭＵ３０のＴＬＢ３１内の各エントリは、ページ単位で仮想アドレスから物理アドレスへ変換するための情報（Ｔ）とともに、該当するページ内のデータに関する８ｂｉｔのパーミッション情報（フラグＡ〜Ｈ）をページ属性として保持している。例えば、キャッシュラインが１６Ｂｙｔｅで、ページサイズが１６ＫＢｙｔｅ、キャッシュメモリ２０の総容量が１６ＫＢｙｔｅというメモリ構成の場合、キャッシュメモリ２０内のすべてのデータが同一のページのデータであっても、同じパーミッション情報のコピーのために１０２４個×８ｂｉｔ分のメモリ容量をキャッシュメモリ２０内に保持しなければならず、冗長である。
【００５１】
要するに、図１２に示したような、ＭＭＵ３０内のパーミッション情報をキャッシュメモリ２０内にコピーすることによってメモリを保護する方法によれば、キャッシュメモリ２０内のライン分のパーミッション情報のコピーを持つ容量が、キャッシュメモリ２０内に別途必要になるという問題がある。また、通常アドレス変換の単位であるページサイズよりもキャッシュメモリ２０のラインサイズは小さいので、コピーした情報に冗長性が生じる。さらに、ＭＭＵ３０からキャッシュメモリ２０へパーミッション情報を伝達するための（逆方向の）サイドバンド信号や制御回路が必要になる。
【００５２】
そこで、本実施形態では、ページ単位で定義されたパーミッション情報をキャッシュメモリ２０内にコピーする方法（図１２を参照のこと）に代えて、プロセッサコア１０からのメモリアクセス要求と同時に通信されるセキュリティ状態を、キャッシュメモリ２０内にキャッシュライン単位で記憶することで、仮想アドレスキャッシュ方式のキャッシュメモリ内のデータの保護を実現する。
【００５３】
図４には、プロセッサコア１０からのメモリアクセス要求時と同時に通信されるセキュリティ状態を、キャッシュメモリ２０内にキャッシュライン単位で記憶する様子を示している。
【００５４】
プロセッサコア１０がメモリアクセス要求する際には、要求する仮想アドレスと同時に、プロセスのセキュリティ状態が、キャッシュメモリ２０に伝達される。図示の例では、プロセスの種別（「ｄｅｖｅｌｏｐｅｒ」又は「ｐｒｏｐｒｉｅｔａｒｙ」のいずれのプロセスであるか）、プロセスのモード（「ｕｓｅｒ」モード又は「ｐｒｉｖｉｌｅｇｅｄ（特権）」モードのいずれのモードで実行されているか）、許可された処理（読み取り（ｒｅａｄ）、書き込み（ｗｒｉｔｅ）など）といった、セキュリティに関わる複数のパラメータの８通りの組み合わせを３ｂｉｔの情報で表現している。キャッシュメモリ２０は、セキュリティ状態に関する３ｂｉｔの情報を、アクセス要求されたキャッシュラインに対応付けて記憶する。但し、プロセッサコア１０とキャッシュメモリ２０間は、メモリアクセス要求するアドレスバスとともに、セキュリティ状態を通信する３ｂｉｔのサイドバンド信号で接続されているものとする。
【００５５】
一方、ＭＭＵ３０内では、ＴＬＢ３１のエントリ毎に該当ページのパーミッション情報を保持している。図４に示す例では、パーミッション情報は、上記の８通りのセキュリティ状態の各々に対するメモリアクセスの権限（すなわち、アクセスを許可するか又はメモリを保護するか）を、各１ｂｉｔで合計８ｂｉｔ、すなわち８個のフラグＡ〜Ｈで表現している。ＴＬＢ３１の各エントリでは、該当する仮想アドレスから物理アドレスへ変換するための情報（Ｔ）とともに、対応する物理ページに対するセキュリティ状態に応じたパーミッション情報がメモリアクセスの可否を表す８個のフラグＡ〜Ｈという形態で保持されている。
【００５６】
例えば、フラグＡは、セキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｒｅａｄ）に対する該当ページへのメモリアクセスの可否を１又は０で示している。同様に、フラグＢはセキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｗｒｉｔｅ）に対する該当ページへのメモリアクセスの可否を示し、フラグＣはセキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｐｒｉｖｉｌｅｇｅｄ，ｒｅａｄ）に対する該当ページへのメモリアクセスの可否を示している。
【００５７】
あるプロセスを実行中のプロセッサコア１０が、メモリアクセス要求したとき、プロセッサコア１０は、まずキャッシュメモリ２０にアクセスする。キャッシュラインに要求した仮想アドレスで参照されるデータがキャッシュされている場合（キャッシュヒット）、キャッシュヒットしたキャッシュラインに対応付けて記憶されているセキュリティ状態を、メモリアクセス要求と同時にプロセッサコア１０から通信されるプロセスのセキュリティ状態と比較することで、プロセッサコア１０は、ＭＭＵ３０を介することなく、キャッシュメモリ２０にキャッシュされたメモリのデータに直接アクセスすることができる。キャッシュミスが発生した場合にのみ、ＭＭＵ３０を介してＴＬＢ３１内のパーミッション参照機能が使われる。
【００５８】
ページ毎のパーミッション情報が８ｂｉｔで表現されるのに対し（前述）、セキュリティ状態は３ｂｉｔで表現される。したがって、パーミッション情報の代わりにセキュリティ状態をキャッシュライン毎に保持することにより、大幅なメモリ容量の削減になる、ということを理解できよう。また、プロセッサコア１０からの通常のメモリアクセス要求でセキュリティ状態がキャッシュメモリ２０へ伝達されるので、キャッシュメモリ２０内にセキュリティ状態を保持するための逆方向のサイドバンド信号や制御回路は不要である。
【００５９】
上記の例では、セキュリティ状態毎のパーミッション情報を１ビットで表現するようになっている。例えば、「１」であればそのセキュリティ状態を許可し、「０」であればそのセキュリティ状態を拒否することを表す。その変形例として、セキュリティ状態毎のパーミッション情報を２ビット以上で表現するようにしてもよい。より多いビット数を割り当てることで、不正アクセスのレベルに応じて詳細なシステム動作を定義することができる。例えば、セキュリティ状態「Ａ」のパーミッション情報に２ｂｉｔを使用することで、以下の表１に示すような詳細なシステム動作を定義することができる。
【００６０】
【表１】
2019167360.tif 000003
【００６１】
なお、キャッシュライン毎のセキュリティ状態をキャッシュメモリ２０内に記憶する方法として、各キャッシュラインに対応付けられたタグ領域を拡張する方法、タグとは別のレジスタ又はメモリを実装する方法、キャッシュメモリ２０の外にキャッシュライン毎のセキュリティ状態を保持するレジスタ又はメモリを実装する方法、などを挙げることができる。
【００６２】
図５及び図６には、仮想アドレスキャッシュ方式のメモリ管理システム１においてメモリアクセスを制御するための処理手順をフローチャートの形式で示している。但し、キャッシュメモリ２０内では、キャッシュライン単位でセキュリティ状態を記憶するように構成されているものとする。また、図５及び図６に示すフローチャート中で、ＭＭＵ３０が実施する処理ステップはグレーで塗り潰し、それ以外の処理ステップはキャッシュメモリ２０内で実施されるものとする。
【００６３】
この処理手順は、プロセッサコア１０からメモリアクセス要求が発行されたことに応答して開始される。
【００６４】
まず、キャッシュメモリ２０内を探索して、プロセッサコア１０から要求された仮想アドレスに該当するキャッシュラインが存在するかどうか、すなわちキャッシュヒットするかどうかをチェックする（ステップＳ５０１）。
【００６５】
キャッシュヒットした場合には（ステップＳ５０１のＹｅｓ）、メモリアクセス要求と同時に通信されたセキュリティ状態が、ヒットしたキャッシュラインに記憶されたセキュリティ状態と同じであるかどうかをさらにチェックする（ステップＳ５０２）。
【００６６】
そして、セキュリティ状態に変化がなければ（ステップＳ５０２のＹｅｓ）、メモリアクセス要求に従って、そのキャッシュラインに対して読み出し処理又は書き込み処理を実行して（ステップＳ５０３）、本処理を終了する。
【００６７】
したがって、キャッシュメモリ２０内に格納されているデータは、プロセッサコア１０の処理（プロセス）のセキュリティ状態が変化しない限り、ＭＭＵ３０によるパーミッションのチェックを省略してアクセスし続けることができる。
【００６８】
一方、セキュリティ状態に変化があったときには（ステップＳ５０２のＮｏ）、キャッシュヒットしたラインが「ｄｉｒｔｙ」すなわちキャッシュラインのデータが更新されているときには（ステップＳ５０４のＹｅｓ）、そのキャッシュラインに対して記憶しているセキュリティ状態で、メインメモリ４０への書き戻しを行うことにする（ステップＳ５０５）。言い換えれば、プロセッサコア１０からのメモリアクセス要求したセキュリティ状態に変化があったときには、データが更新されているか否かに拘わらず、キャッシュフラッシュが実施されるようになっている。
【００６９】
また、プロセッサコア１０から要求された仮想アドレスがキャッシュミスした場合には（ステップＳ５０１のＮｏ）、続いて、キャッシュメモリ２０が満杯で置換が必要かどうかをチェックする（ステップＳ５０６）。置換が必要な場合には（ステップＳ５０６Ｙｅｓ）、所定の置換アルゴリズムに従って、捨てるべきデータ、すなわち犠牲（ｖｉｃｔｉｍ）となるキャッシュラインを決定する。そして、そのｖｉｃｔｉｍラインが「ｄｉｒｔｙ」すなわちデータが更新されているときには（ステップＳ５０７のＹｅｓ）、そのｖｉｃｔｉｍラインに対して記憶しているセキュリティ状態で、そのｖｉｃｔｉｍラインのデータのメインメモリ４０への書き戻しを行うことにする（ステップＳ５０８）。
【００７０】
そして、プロセッサコア１０から要求された仮想アドレスがキャッシュミスしたとき（ステップＳ５０１のＮｏ）、又は、プロセッサコア１０の処理のセキュリティ状態が変化していた場合には（ステップＳ５０２のＮｏ）、ＭＭＵ３０は、ＴＬＢ３１の該当するエントリのパーミッション情報を参照して、仮想アドレスを物理アドレスに変換するとともに、プロセッサコア１０のメモリアクセス要求を許可するかどうかをチェックする（ステップＳ５０９）。
【００７１】
ＭＭＵ３０がＴＬＢ３１を参照してアドレス変換する仕組み、並びにＴＬＢミスが発生したときにページウォーク機構３２がメインメモリ４０内のページテーブル４１を探索して要求された仮想アドレスに対応するページの物理アドレスの情報を見つけ出し、新たなＴＬＢエントリを作成する仕組みは、従来と同様なので、ここでは詳細な説明は省略する。
【００７２】
また、処理ステップＳ５０９において、ＭＭＵ３０は、要求された仮想アドレスに対応するＴＬＢエントリに格納された８ｂｉｔのパーミッション情報のうち、プロセッサコア１０がメモリアクセス要求と同時に通信してきたセキュリティ状態に対応するフラグを参照して、メモリアクセスを許可するか又はメモリを保護するかを判定することができる（前述）。
【００７３】
ここで、ＭＭＵ３０が、プロセッサコア１０のメモリアクセス要求を許可する場合には（ステップＳ５０９のＹｅｓ）、メインメモリ４０の該当する物理アドレスからデータを読み出す（ステップＳ５１０）。そして、読み出したデータを、キャッシュメモリ２０上の空きライン又はｖｉｃｔｉｍラインに書き込みを行う（ステップＳ５１１）。また、そのキャッシュラインのタグ情報を更新するとともに、そのキャッシュラインに書き込んだデータのセキュリティ状態をタグに記憶して（ステップＳ５１２）、本処理を終了する。
【００７４】
また、ＭＭＵ３０は、プロセッサコア１０のメモリアクセス要求を許可しない場合には（ステップＳ５０９のＮｏ）、アクセス要求元のプロセッサコア１０に対してプロテクションエラーを返して（ステップＳ５１３）、本処理を終了する。
【００７５】
図５及び図６に示したメモリアクセス処理手順によれば、キャッシュメモリ２０内にセキュリティ状態という少ない情報を記憶することによって、仮想アドレスキャッシュ方式のキャッシュメモリ２０内のデータの保護を実現することができる。
【００７６】
また、図５及び図６に示したメモリアクセス処理手順によれば、一度キャッシュミスが発生してキャッシュメモリ２０内に格納したデータは、プロセッサコア１０上で実行される処理（プロセス）のセキュリティ状態が変化しない限り、ＭＭＵ３０のパーミッションチェックなしに使い続けることができる。この結果、メモリ管理システム１における電力効率と回路速度が向上する。そして、プロセッサコア１０上で実行される処理のセキュリティ状態が変化したときには、キャッシュメモリ２０においてそれを検知して、最小限の古いデータをフラッシュして、改めてＭＭＵ３０によりキャッシュミス時の処理が実行され、その際にパーミッションチェックも行われる。
【００７７】
キャッシュライン毎のセキュリティ状態をキャッシュメモリ２０内に記憶する方法として、各キャッシュラインに対応付けられたタグ領域を拡張する方法を挙げることができる。
【００７８】
図７には、キャッシュライン毎のセキュリティ状態をタグビットに保存するように構成されたキャッシュメモリ２０の実装例を示している。但し、図面の簡素化として、１ｗａｙ構成のキャッシュメモリを示しているが、２ｗａｙ以上であっても同様に構成することができる。
【００７９】
図示のキャッシュメモリ２０は、キャッシュラインの集合からなるデータアレイ７１と、各キャッシュラインにタグメモリからなるタグアレイ７２からなる。
【００８０】
図示の例では、データアレイ７１は、１バンクが０〜６３の６４ラインからなるデータＲＡＭで構成される。また、１ラインは、４ワードからなる。１ワードは３２ビットであり、したがって、１ラインは１２８ビットからなる。
【００８１】
タグアレイ７２は、それぞれデータアレイ７１の各ラインに対応する、０〜６３の合計６４個のタグメモリからなるタグＲＡＭで構成される。１つのタグは２２ビット長のタグビットからなる。
【００８２】
データアレイ７１の各ラインには、データＲＡＭアドレスがそれぞれ割り振られている。また。タグアレイ７２の各タグには、タグＲＡＭアドレスがそれぞれ割り振られている。データＲＡＭアドレスとタグＲＡＭアドレスには対応関係がある。
【００８３】
各タグは、対応するキャッシュラインが有効又は無効のいずれであるかを示すＶａｌｉｄビット、キャッシュライン上のデータが更新されたか否かを示すＤｉｒｔｙビットを含んでいる。本実施形態では、タグは、さらにセキュリティ状態（Ｓｅｃｕｒｉｔｙ  ｓｔａｔｅ）を示すために、３ビットをセキュリティビットに割り当てている。
【００８４】
セキュリティビットとパーミッション情報を適切に定義することで（例えば、図４を参照のこと）、必要性に応じた粒度でキャッシュメモリ内のデータのセキュリティを実現することができる。さらに、オペレーティングシステムとソフトウェアを組み合わせることによって、簡素のセキュリティ機能しか搭載していないプロセッサコアにおいても、高度なセキュリティモデルを実現することができる。
【００８５】
また、キャッシュライン毎のセキュリティ状態をキャッシュメモリ２０内に記憶するその他の方法として、タグとは別のレジスタ又はメモリを実装する方法や、キャッシュラインの外にキャッシュライン毎のセキュリティ状態を保持するレジスタ又はメモリを実装する方法などを挙げることができる（いずれも図示しない）。
【００８６】
なお、キャッシュライン毎のセキュリティ状態を記憶する際に、ビット圧縮することも可能である。上記の例ではセキュリティ状態に３ｂｉｔを割り当てているが、実際の運用では４種類の値しか使用しない場合には、２ｂｉｔに圧縮して記憶するようにしてもよい。このような圧縮展開の処理を、ハードウェア又はソフトウェアのいずれかあるいは両方を利用して実装することができる。
【００８７】
上述した図５及び図６に示した処理手順では、プロセッサコア１０からメモリアクセス要求されたデータのセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合には、該当するキャッシュラインをフラッシュするようになっている。
【００８８】
これに対して、プロセッサコア１０からのメモリアクセス要求のセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合であっても、該当するキャッシュラインをすぐにフラッシュしないで、ＭＭＵ３０に対してプロテクションチェックだけを要求するという変形例も可能である。この変形例によれば、ＭＭＵ３０によるプロテクションチェック結果がアクセス許可であれば、キャッシュメモリ２０に記憶したセキュリティ状態を更新するだけで、キャッシュフラッシュを省略することができる。
【００８９】
図８及び図９には、メモリ管理システム１においてメモリアクセスを制御するための処理手順の変形例をフローチャートの形式で示している。図示の処理手順では、セキュリティ状態が不一致の場合であっても、ＭＭＵ３０によるプロテクションチェック結果がアクセス許可であれば、キャッシュメモリ２０に記憶したセキュリティ状態を更新するだけで、キャッシュフラッシュを省略することができる。
【００９０】
但し、キャッシュメモリ２０内では、キャッシュライン単位でセキュリティ状態を記憶するように構成されているものとする。また、図８及び図９に示すフローチャート中で、ＭＭＵ３０が実施する処理ステップはグレーで塗り潰し、それ以外の処理ステップはキャッシュメモリ２０内で実施されるものとする。
【００９１】
この処理手順は、プロセッサコア１０からメモリアクセス要求が発行されたことに応答して開始される。
【００９２】
まず、キャッシュメモリ２０内を探索して、プロセッサコア１０から要求された仮想アドレスに該当するキャッシュラインが存在するかどうか、すなわちキャッシュヒットするかどうかをチェックする（ステップＳ８０１）。そして、キャッシュヒットした場合には（ステップＳ８０１のＹｅｓ）、メモリアクセス要求と同時に通信されたセキュリティ状態が、ヒットしたキャッシュラインに記憶されたセキュリティ状態と同じであるかどうかをさらにチェックし（ステップＳ８０２）、セキュリティ状態に変化がなければ（ステップＳ８０２のＹｅｓ）、メモリアクセス要求に従って、そのキャッシュラインに対して読み出し処理又は書き込み処理を実行して（ステップＳ８０３）、本処理を終了する。
【００９３】
一方、セキュリティ状態に変化があったときには（ステップＳ８０２のＮｏ）、ＭＭＵ３０は、ＴＬＢ３１の該当するエントリのパーミッション情報を参照して、仮想アドレスを物理アドレスに変換するとともに、プロセッサコア１０のメモリアクセス要求を許可するかどうかをチェックする（ステップＳ８１４）。
【００９４】
ＭＭＵ３０がプロセッサコア１０のメモリアクセス要求を許可する場合には（ステップＳ８１４のＹｅｓ）、そのキャッシュラインに対して読み出し処理又は書き込み処理を実行した後（ステップＳ８１５）、そのキャッシュラインに書き込んだデータのセキュリティ状態をタグに記憶して（ステップＳ８１６）、本処理を終了する。言い換えれば、プロセッサコア１０からのメモリアクセス要求したセキュリティ状態に変化があったときには、ＭＭＵ３０によるプロテクションチェック結果がアクセス許可であれば、タグに記憶しているセキュリティ状態を更新するだけで、キャッシュフラッシュを省略するようになっている。
【００９５】
また、ＭＭＵ３０がプロセッサコア１０のメモリアクセス要求を許可しない場合には（ステップＳ８１４のＮｏ）、キャッシュヒットしたラインが「ｄｉｒｔｙ」すなわちキャッシュラインのデータが更新されているときには（ステップＳ８０４のＹｅｓ）、そのキャッシュラインに対して記憶しているセキュリティ状態で、メインメモリ４０への書き戻しを行うことにする（ステップＳ８０５）。
【００９６】
また、プロセッサコア１０から要求された仮想アドレスがキャッシュミスした場合には（ステップＳ８０１のＮｏ）、続いて、キャッシュメモリ２０が満杯で置換が必要かどうかをチェックする（ステップＳ８０６）。置換が必要な場合には（ステップＳ８０６Ｙｅｓ）、所定の置換アルゴリズムに従って、捨てるべきデータ、すなわち犠牲（ｖｉｃｔｉｍ）となるキャッシュラインを決定する。そして、そのｖｉｃｔｉｍラインが「ｄｉｒｔｙ」すなわちデータが更新されているときには（ステップＳ８０７のＹｅｓ）、そのｖｉｃｔｉｍラインに対して記憶しているセキュリティ状態で、そのｖｉｃｔｉｍラインのデータのメインメモリ４０への書き戻しを行うことにする（ステップＳ８０８）。
【００９７】
そして、プロセッサコア１０から要求された仮想アドレスがキャッシュミスしたとき（ステップＳ８０１のＮｏ）、又は、プロセッサコア１０の処理のセキュリティ状態が変化していた場合には（ステップＳ８０２のＮｏ）、ＭＭＵ３０は、ＴＬＢ３１の該当するエントリのパーミッション情報を参照して、仮想アドレスを物理アドレスに変換するとともに、プロセッサコア１０のメモリアクセス要求を許可するかどうかをチェックする（ステップＳ８０９）。
【００９８】
処理ステップＳ８０９では、ＭＭＵ３０は、要求された仮想アドレスに対応するＴＬＢエントリに格納された８ｂｉｔのパーミッション情報のうち、プロセッサコア１０がメモリアクセス要求と同時に通信してきたセキュリティ状態に対応するフラグを参照して、メモリアクセスを許可するか又はメモリを保護するかを判定することができる（前述）。
【００９９】
ここで、ＭＭＵ３０が、プロセッサコア１０のメモリアクセス要求を許可する場合には（ステップＳ８０９のＹｅｓ）、メインメモリ４０の該当する物理アドレスからデータを読み出す（ステップＳ８１０）。そして、読み出したデータを、キャッシュメモリ２０上の空きライン又はｖｉｃｔｉｍラインに書き込みを行う（ステップＳ８１１）。また、そのキャッシュラインのタグ情報を更新するとともにステップＳ８１２）、そのキャッシュラインに書き込んだデータのセキュリティ状態をタグに記憶して（ステップＳ８１６）、本処理を終了する。
【０１００】
また、ＭＭＵ３０は、プロセッサコア１０のメモリアクセス要求を許可しない場合には（ステップＳ８０９のＮｏ）、アクセス要求元のプロセッサコア１０に対してプロテクションエラーを返して（ステップＳ８１３）、本処理を終了する。
【０１０１】
図８及び図９に示した処理手順によれば、プロセッサコア１０からのメモリアクセス要求のセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合であっても、ＭＭＵ３０によるプロテクションチェック結果がアクセス許可であれば、キャッシュメモリ２０に記憶したセキュリティ状態を更新するだけで、メインメモリ４０への書き戻しを省略することができる。
【０１０２】
また、パーミッションに既定のルールが存在する場合には、プロセッサコア１０からのメモリアクセス要求のセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合には、キャッシュメモリ２０内部でその既定のルールに従って許可判断を実施するという変形例も可能である。この変形例によれば、該当するキャッシュラインをすぐにフラッシュしないで、且つ、ＭＭＵ３０に対してプロテクションチェックだけを要求する必要がない。
【０１０３】
また、パーミッションに既定のルールが存在する場合には、キャッシュメモリ２０内部でその既定のルールに従って許可判断するというメモリアクセス制御も可能である。プロセッサコア１０からのメモリアクセス要求のセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合であっても、キャッシュメモリ２０内部でその既定のルールに従って許可判断するので、ＭＭＵ３０によるプロテクションチェックを行う必要がない。もちろん、該当するキャッシュラインをすぐにフラッシュすることはない。
【０１０４】
例えば、書き込み処理が既にＭＭＵ３０のパーミッションチェックにより許可されたセキュリティ状態であれば、処理を「読み取り」に置き換えたセキュリティ状態も許可する、という既定のルールがキャッシュメモリ２０内部に存在するものとする。
【０１０５】
具体的には、セキュリティ状態（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｗｒｉｔｅ）が既にＭＭＵ３０により許可されていれば、（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｒｅａｄ）も許可するという既定のルールが存在するものとする。このような場合、プロセッサコア１０からメモリアクセス要求と同時に通信されたセキュリティ状態が（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｗｒｉｔｅ）であるのに対し、そのメモリアクセス要求にヒットしたキャッシュラインで記憶されているセキュリティ状態が（ｄｅｖｅｌｏｐｅｒ，ｕｓｅｒ，ｒｅａｄ）であり、一致しないが、ＭＭＵ３０によるパーミッションチェックやキャッシュフラッシュを行うことなく、ヒットしたキャッシュラインへのアクセスを実施し、タグに記憶しておいたセキュリティ状態の更新のみを行う。ＭＭＵ３０によるプロテクションチェックを行う必要がなく、該当するキャッシュラインをすぐにフラッシュすることもない。
【０１０６】
あるいは、既定のルールは、権限が上位のセキュリティ状態でのメモリアクセス要求は許可するというものであってもよい。例えば、あるいは、「ｐｒｏｐｒｉｅｔａｒｙ」は「ｄｅｖｅｌｏｐｅｒ」よりも権限が上位のセキュリティ状態であり、「ｐｒｉｖｉｌｅｇｅｄ」は「ｕｓｅｒ」よりも権限が上位のセキュリティ状態である。そして、プロセッサコア１０からメモリアクセス要求と同時に通信されたセキュリティ状態が、キャッシュメモリ２０内部に記憶しておいたセキュリティ状態と一致しない場合であっても、権限が上位のセキュリティ状態であれば、ヒットしたキャッシュラインへのアクセスを実施し、タグに記憶しておいたセキュリティ状態の更新のみを行う。ＭＭＵ３０によるプロテクションチェックを行う必要がない。もちろん、該当するキャッシュラインをすぐにフラッシュすることはない。
【０１０７】
なお、このような既定のルールに基づくキャッシュメモリ２０へのアクセス制御機能は、ハードウェア若しくはソフトウェア、あるいはハードウェアとソフトウェアの組み合わせによって実装することができる。
【０１０８】
図１０及び図１１には、メモリ管理システム１においてメモリアクセスを制御するための処理手順の変形例をフローチャートの形式で示している。図示の処理手順では、セキュリティ状態が不一致の場合には、変化したセキュリティ状態がキャッシュメモリ２０内部に存在する既定のルールに従ってキャッシュメモリ２０へのアクセスが制御される。キャッシュメモリ２０へのアクセスが許可される場合には、キャッシュメモリ２０に記憶したセキュリティ状態を更新するだけで、キャッシュフラッシュを省略することができる。
【０１０９】
但し、キャッシュメモリ２０内では、キャッシュライン単位でセキュリティ状態を記憶するように構成されているものとする。また、図１０及び図１１に示すフローチャート中で、ＭＭＵ３０が実施する処理ステップはグレーで塗り潰し、それ以外の処理ステップはキャッシュメモリ２０内で実施されるものとする。
【０１１０】
この処理手順は、プロセッサコア１０からメモリアクセス要求が発行されたことに応答して開始される。
【０１１１】
まず、キャッシュメモリ２０内を探索して、プロセッサコア１０から要求された仮想アドレスに該当するキャッシュラインが存在するかどうか、すなわちキャッシュヒットするかどうかをチェックする（ステップＳ１００１）。そして、キャッシュヒットした場合には（ステップＳ１００１のＹｅｓ）、メモリアクセス要求と同時に通信されたセキュリティ状態が、ヒットしたキャッシュラインに記憶されたセキュリティ状態と同じであるかどうかをさらにチェックし（ステップＳ１００２）、セキュリティ状態に変化がなければ（ステップＳ１００２のＹｅｓ）、メモリアクセス要求に従って、そのキャッシュラインに対して読み出し処理又は書き込み処理を実行して（ステップＳ１００３）、本処理を終了する。
【０１１２】
一方、セキュリティ状態に変化があったときには（ステップＳ１００２のＮｏ）、変化したセキュリティ状態がキャッシュメモリ２０内部に存在する既定のルールを満たすかどうかをチェックする（ステップＳ１０１４）。例えば、プロセッサコア１０からメモリアクセス要求した際のセキュリティ状態がキャッシュメモリ２０内のヒットしたキャッシュラインで記憶しているセキュリティ状態よりも権限が上位であるかどうかをチェックする。
【０１１３】
セキュリティ状態の変化が既定のルールを満たす場合には（ステップＳ１０１４のＹｅｓ）、そのキャッシュラインに対して読み出し処理又は書き込み処理を実行した後（ステップＳ１０１５）、そのキャッシュラインに書き込んだデータのセキュリティ状態をタグに記憶して（ステップＳ１０１６）、本処理を終了する。言い換えれば、プロセッサコア１０からのメモリアクセス要求したセキュリティ状態に変化があったときには、キャッシュメモリ２０内部に存在する既定のルールに従って許可すると判断されれば、タグに記憶しているセキュリティ状態を更新するだけで、キャッシュフラッシュを省略するようになっている。
【０１１４】
また、ＭＭＵ３０がプロセッサコア１０のメモリアクセス要求を許可しない場合には（ステップＳ１０１４のＮｏ）、キャッシュヒットしたラインが「ｄｉｒｔｙ」すなわちキャッシュラインのデータが更新されているときには（ステップＳ１００４のＹｅｓ）、そのキャッシュラインに対して記憶しているセキュリティ状態で、メインメモリ４０への書き戻しを行うことにする（ステップＳ１００５）。
【０１１５】
また、プロセッサコア１０から要求された仮想アドレスがキャッシュミスした場合には（ステップＳ１００１のＮｏ）、続いて、キャッシュメモリ２０が満杯で置換が必要かどうかをチェックする（ステップＳ１００６）。置換が必要な場合には（ステップＳ１００６Ｙｅｓ）、所定の置換アルゴリズムに従って、捨てるべきデータ、すなわち犠牲（ｖｉｃｔｉｍ）となるキャッシュラインを決定する。そして、そのｖｉｃｔｉｍラインが「ｄｉｒｔｙ」すなわちデータが更新されているときには（ステップＳ１００７のＹｅｓ）、そのｖｉｃｔｉｍラインに対して記憶しているセキュリティ状態で、そのｖｉｃｔｉｍラインのデータのメインメモリ４０への書き戻しを行うことにする（ステップＳ１００８）。
【０１１６】
そして、プロセッサコア１０から要求された仮想アドレスがキャッシュミスしたとき（ステップＳ１００１のＮｏ）、又は、プロセッサコア１０の処理のセキュリティ状態が変化していた場合には（ステップＳ１００２のＮｏ）、ＭＭＵ３０は、ＴＬＢ３１の該当するエントリのパーミッション情報を参照して、仮想アドレスを物理アドレスに変換するとともに、プロセッサコア１０のメモリアクセス要求を許可するかどうかをチェックする（ステップＳ１００９）。
【０１１７】
処理ステップＳ１００９では、ＭＭＵ３０は、要求された仮想アドレスに対応するＴＬＢエントリに格納された８ｂｉｔのパーミッション情報のうち、プロセッサコア１０がメモリアクセス要求と同時に通信してきたセキュリティ状態に対応するフラグを参照して、メモリアクセスを許可するか又はメモリを保護するかを判定することができる（前述）。
【０１１８】
ここで、ＭＭＵ３０が、プロセッサコア１０のメモリアクセス要求を許可する場合には（ステップＳ１００９のＹｅｓ）、メインメモリ４０の該当する物理アドレスからデータを読み出す（ステップＳ１０１０）。そして、読み出したデータを、キャッシュメモリ２０上の空きライン又はｖｉｃｔｉｍラインに書き込みを行う（ステップＳ１０１１）。また、そのキャッシュラインのタグ情報を更新するとともにステップＳ１０１２）、そのキャッシュラインに書き込んだデータのセキュリティ状態をタグに記憶して（ステップＳ１０１６）、本処理を終了する。
【０１１９】
また、ＭＭＵ３０は、プロセッサコア１０のメモリアクセス要求を許可しない場合には（ステップＳ１００９のＮｏ）、アクセス要求元のプロセッサコア１０に対してプロテクションエラーを返して（ステップＳ１０１３）、本処理を終了する。
【０１２０】
図１０及び図１１に示した処理手順によれば、プロセッサコア１０からのメモリアクセス要求のセキュリティ状態がキャッシュメモリ２０内に記憶したセキュリティ状態と一致しない場合であっても、変化したセキュリティ状態がキャッシュメモリ２０内部に存在する既定のルールに従って許可されれば、キャッシュメモリ２０に記憶したセキュリティ状態を更新するだけで、メインメモリ４０への書き戻しを省略することができる。
【０１２１】
なお、上述した処理手順（図５及び図６、図８及び図９、図１０及び図１１）の他に、プロセッサコア１０のセキュリティ状態が変化するときに、仮想アドレス方式のキャッシュメモリ２０内でその変化を自動的に検知して、ソフトウェアによりキャッシュフラッシュを省略するように、メモリ管理システム１を構成することもできる。
【０１２２】
本実施形態に係るメモリ管理システム１によれば、キャッシュメモリ２０内にあるデータを保護するために、キャッシュメモリ２０内に記憶すべき情報量を削減することができる。したがって、タグメモリに使用する高価なメモリリソース（フリップフロップ又はＳＲＡＭ）を削減することができる。
【０１２３】
本明細書で開示する技術は、キャッシュラインの設計変更だけで容易に実現することができ、キャッシュメモリ２０とＭＭＵ３０間を接続するバスに（パーミッション情報をコピーするための）サイドバンド信号を追加したり、ＭＭＵ３０を設計変更したりする必要がない。
【０１２４】
したがって、本明細書で開示する技術によれば、仮想アドレスキャッシュ方式におけるキャッシュメモリ内のデータを保護するためのメモリリソースや制御回路を削減することができ、且つ、電力効率が向上するという効果がある。したがって、本明細書で開示する技術は、超低消費電力ＩｏＴやウェアラブルデバイスに好適に適用することができる。
【産業上の利用可能性】
【０１２５】
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。【０１２６】
本明細書で開示するメモリ管理技術は、例えば小容量のメモリしか持たない組み込み機器に適用して、仮想アドレスキャッシュ方式のキャッシュメモリ内のデータの保護を、キャッシュメモリ内に記憶する少ない情報で実現することができる。勿論、本明細書で開示するメモリ管理技術を、通常又は大容量のメモリを装備し、仮想アドレスキャッシュ方式を採用するさまざまなタイプの情報処理装置に適用することができる。【０１２７】
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。【０１２８】
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
（１）プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備するメモリ管理システム。
（２）前記状態記憶部は、前記キャッシュメモリのキャッシュライン単位でセキュリティ状態を記憶する、
上記（１）に記載のメモリ管理システム。
（３）前記状態記憶部は、前記キャッシュメモリ内のタグメモリ、前記キャッシュメモリ内でタグメモリとは別に配置されたレジスタ、又は、キャッシュライン本体の外に実装されたメモリ又はレジスタのいずれかからなり、前記キャッシュメモリのライン毎のセキュリティ状態を記憶する、
上記（１）又は（２）のいずれかに記載のメモリ管理システム。
（４）前記メモリ管理ユニットは、
トランスレーションルックアサイドバッファ内のページテーブルの各エントリに、セキュリティ状態毎のアクセスの可否を示すパーミッション情報を格納し、
前記プロセッサコアからメモリアクセス要求と同時に通信してきたセキュリティ状態に対するアクセスの可否を、ヒットしたエントリに格納されたパーミッション情報に基づいて判断する、
上記（１）乃至（３）のいずれかに記載のメモリ管理システム。
（５）前記プロセッサコアからのメモリアクセス要求に対し、前記メモリ管理ユニットによるプロテクションチェックを経て、前記メインメモリから読み取ったデータを前記キャッシュメモリに書き込むとともに、前記状態記憶部は該当するキャッシュラインに対応付けてセキュリティ状態を記憶する、
上記（１）乃至（４）のいずれかに記載のメモリ管理システム。
（６）前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、ヒットしたキャッシュラインのキャッシュフラッシュを実施する、
上記（１）乃至（５）のいずれかに記載のメモリ管理システム。
（７）前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、前記メモリ管理ユニットによるプロテクションチェックを実施して、このメモリアクセス要求が許可された場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
上記（１）乃至（５）のいずれかに記載のメモリ管理システム。
（８）前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しないが、その相違が前記キャッシュメモリ内部の既定のルールを満たす場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
上記（１）乃至（５）のいずれかに記載のメモリ管理システム。
（９）前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態よりも権限が上位である場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
上記（１）乃至（５）のいずれかに記載のメモリ管理システム。
（１０）前記キャッシュメモリは仮想アドレスキャッシュ方式である、
上記（１）乃至（９）のいずれかに記載のメモリ管理システム。
（１１）プロセッサコアからメモリアクセス要求されたデータをメインメモリから読み出してキャッシュメモリに一時記憶するステップと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶ステップと、
前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と比較した結果に基づいて、前記キャッシュメモリ及び前記メインメモリへのアクセスを制御する制御ステップと、
を有するメモリ管理方法。
（１１−１）前記制御ステップでは、前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、ヒットしたキャッシュラインのキャッシュフラッシュを実施する、
上記（１１）に記載のメモリ管理方法。
（１１−２）前記制御ステップでは、前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しない場合は、前記メモリ管理ユニットによるプロテクションチェックを実施して、このメモリアクセス要求が許可された場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
上記（１１）に記載のメモリ管理方法。
（１１−３）前記プロセッサコアからメモリアクセス要求した際のセキュリティ状態が前記状態記憶部に記憶したセキュリティ状態と一致しないが、その相違が前記キャッシュメモリ内部の既定のルールを満たす場合には、ヒットしたキャッシュラインへのアクセスを実施するとともに前記状態記憶部に記憶したセキュリティ状態を更新する、
上記（１１）に記載のメモリ管理方法。
（１２）プロセッサコアと、
メインメモリと、
前記プロセッサコアからメモリアクセス要求されたデータを一時記憶するキャッシュメモリと、
前記プロセッサコアからメモリアクセス要求と同時に通信されたセキュリティ状態を記憶する状態記憶部と、
前記メインメモリへのアクセスを管理するメモリ管理ユニットと、
を具備する情報処理装置。
【符号の説明】
【０１２９】
１…メモリ管理システム、１０…プロセッサコア
２０…キャッシュメモリ、３０…ＭＭＵ
３１…ＴＬＢ、３２…ページウォーク機構
４０…メインメモリ、４１…ページテーブル
１００…センシングデバイス
１０１…ＣＰＵ、１０２…ＭＭＵ、１０３…ＳＲＡＭ
１０４…フラッシュメモリ、１０５…センサ
１０６…通信モジュール、１０７…電池、１１０…バス
２００…基地局、２０１…クラウド、２０２…サーバ
【図１】
2019167360.tif 000004
【図２】
2019167360.tif 000005
【図３】
2019167360.tif 000006
【図４】
2019167360.tif 000007
【図５】
2019167360.tif 000008
【図６】
2019167360.tif 000009
【図７】
2019167360.tif 000010
【図８】
2019167360.tif 000011
【図９】
2019167360.tif 000012
【図１０】
2019167360.tif 000013
【図１１】
2019167360.tif 000014
【図１２】
2019167360.tif 000015
【国際調査報告】
2019167360.tif 000016
2019167360.tif 000017
2019167360.tif 000018
2019167360.tif 000019