(57)【要約】【課題】プロセッサからの不正なアドレスへのキャッシュアクセスを遮断する機構を、キャッシュアクセスにかかる時間に対するオーバーヘッドを少なく実現する。【解決手段】本発明は、アクセスが許可されるアドレス範囲が異なる複数のアプリケーション群１００、１０１からキャッシュメモリ１２０へのアクセスを制御し、不正アドレスへのアクセスを遮断するキャッシュメモリである。各アプリケーション群にそれぞれＩＤを付け、キャッシュメモリのタグフィールドを拡張し、キャッシュフィルを行う際にこのＩＤを記録しておく。ヒット判定の際に拡張タグフィールドとアクセス元のアプリケーション群のＩＤを比較することでアクセス制御を行う。【選択図】図５
2010079765.tif 000002
【特許請求の範囲】
【請求項１】
アクセス可能なアドレス範囲の異なる複数のアプリケーション群が動作する情報処理装置において、
前記複数のアプリケーション群を実行する少なくとも一つのＣＰＵと、
前記少なくとも一つのＣＰＵにアクセスされ、前記アクセスに対応するデータを保持しているか否かを判定する判定回路を有するキャッシュメモリとを具備し、
前記キャッシュメモリは、
前記複数のアプリケーション群の夫々に割り当てられたＩＤ情報と、
前記キャッシュメモリに格納されているデータに対応するアドレス情報とを保持し、
前記少なくとも一つのＣＰＵは、前記キャッシュメモリに対して、前記複数のアプリケーション群のうち実行しているアプリケーションに対応するＩＤ情報とアクセスアドレスとを出力し、
前記判定回路は、前記アクセスアドレスが前記キャッシュメモリに保持されているデータのアドレスと一致した場合であっても、前記ＩＤ情報が一致しない場合は、キャッシュミスとして判定することを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記キャッシュメモリは、複数のエントリを有し、
前記複数のエントリの夫々は、前記ＩＤ情報、前記アドレス情報、および、前記キャッシュメモリに格納されているデータが有効か否かを示すＶビットを有し、
前記判定回路は、前記アクセスアドレスにより指定されるエントリに保持された前記ＩＤ情報、前記アドレス情報、および、前記Ｖビットを用いて前記判定を行うことを特徴とする情報処理装置。
【請求項３】
請求項１において、
前記情報処理装置は、複数のＣＰＵを有し、
前記複数のアプリケーション群は、夫々別のＣＰＵにより実行され、
前記ＩＤ情報は、前記ＣＰＵのＩＤであることを特徴とする情報処理装置。
【請求項４】
請求項１において、
前記情報処理装置は、複数のＣＰＵを有し、
前記複数のアプリケーション群のうち第１のアプリケーション群は、前記複数のＣＰＵのうち２以上の第１のＣＰＵ群で実行され、
前記複数のアプリケーション群のうち第２のアプリケーション群は、前記複数のＣＰＵのうち少なくとも一つの第２のＣＰＵ群で実行され、
前記第１のＣＰＵ群は、前記キャッシュメモリにアクセスする場合に、第１の前記ＩＤ情報を固定的に出力する第１のＩＤ情報出力回路を有し、
前記第２のＣＰＵ群は、前記キャッシュメモリにアクセスする場合に、前記第１のＩＤ情報とは異なる第２のＩＤ情報を固定的に出力する第２のＩＤ情報出力回路を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関するものであり、特に計算機の中央処理装置（ＣＰＵ）に用いられるキャッシュメモリに関するものである。
【背景技術】
【０００２】
今日のプロセッサ、特に組み込み機器用途のマイコンでは、汎用的処理を行うＣＰＵコアと、特定処理向けの複数の周辺ＩＰを１チップに構成し、この上で複数のアプリケーションソフトウェアが動作するようなシステムを構成する手法が用いられている。このようなシステムでは、複数のアプリケーションが一つのメインメモリ上の領域を分割して利用することとなる。
【０００３】
プロセッサ内の、ＣＰＵコアからは、（１）ソフトウェアバグ、（２）ハードウェアバグ、（３）一時的なハード障害（α線によるソフトエラー等）、（４）悪意あるソフトウェアによって本来意図しないアクセスをアプリケーションプログラムが利用しているメモリ領域に対して発生することがある。このようなアクセスを、不正アドレスアクセスと呼ぶこととする。特に組み込み機器用途では、ソフトウェアバグによる製品の不良が問題となることが多い。
【０００４】
前記の不正アドレスアクセスによる他のアプリケーションに対しての悪影響を防止するために、各アプリケーションごとにアクセス可能なアドレス範囲を設定し、不正アドレスアクセスを遮断するアクセス制御装置が必要となる。メインメモリに対しての不正アドレスアクセスを検出し遮断するアクセス制御装置については特許文献１において開示されている。
【０００５】
【特許文献１】特開２００４−３３４４１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述の不正アドレスアクセスを遮断するアクセス制御装置を備えた計算機システムにおいて、アクセス可能なアドレス範囲が異なるアプリケーション群ごとに専用のキャッシュメモリを用意すると、非常に大きなチップ面積が必要となるため、各アプリケーション群で共有のキャッシュメモリとしなければならない場合が存在する。
【０００７】
アクセス可能なアドレス範囲が異なるアプリケーション群でキャッシュメモリを共有すると、キャッシュメモリにはアクセス制御装置を介さずにアクセスできるため、キャッシュメモリに対する不正アドレスアクセスが遮断できない。図１はキャッシュメモリに対する不正アドレスアクセスが起こる例を示したものである。１００と１０１はそれぞれアクセス可能なアドレス範囲が異なるアプリケーション群であり、１１０と１１１に示すＣＰＵコア上で動作している。ＣＰＵコア１１０と１１１はキャッシュメモリ１２０を共有しており、キャッシュメモリ１２０からシステムバス１３０とアクセス制御装置１４０を介して、メインメモリ１５０に繋がっている。２００はアプリケーション１００からのみアクセス可能なメインメモリ上のデータ２１０のコピーであり、２０１はアプリケーション１０１からのみアクセス可能なメインメモリ上のデータ２１１のコピーである。アプリ１００を実行するＣＰＵコア１１０とアプリ１０１を実行するＣＰＵコア１１１がキャッシュメモリ１２０を共有していることで、２２０と２２１の正常なアクセス以外にも、２２２と２２３の不正アドレスアクセスが起こる可能性がある。
【０００８】
上述のキャッシュメモリに対する不正アドレスアクセスを遮断するために、アクセス制御の機構がキャッシュメモリに必要となる。キャッシュメモリとは計算機システムの効率を向上させるための装置である。そのため、キャッシュメモリにアクセス制御の機構を付加する際になるべくキャッシュメモリアクセスにかかる時間を増加させないようにする必要がある。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。ＣＰＵコア、キャッシュメモリ、メインメモリ、ＣＰＵコアで実行中のアプリケーションに割り振られたドメインＩＤを検出する回路及び、ドメインＩＤとアクセス先アドレスから、メインメモリに対する不正なアクセスを検出し遮断するアクセス制御装置を備える情報処理装置であって、キャッシュメモリは、拡張されたタグフィールドにメインメモリでアクセスが許可された際のドメインＩＤを記録し、ヒット判定時に拡張されたタグフィールドとアクセス元のドメインＩＤとを比較し不一致のときはキャッシュミスとして扱う制御回路を有する。ここでのドメインＩＤとは、アクセスが許可されるアドレスが同じアプリケーション郡にまとめて割り振ったＩＤを示す。
【００１０】
もしくは、ＣＰＵコアで実行するアプリケーション群を固定化し、ＣＰＵコアで実行中のアプリケーション群のドメインＩＤを検出する回路およびドメインＩＤの代わりにＣＰＵコアＩＤを使用する。
【発明の効果】
【００１１】
本発明により信頼性の高い情報処理装置を実現できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係る情報処理装置の好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施の形態の各ブロックを構成する回路素子は、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板上に形成される。
【００１３】
《実施の形態１》
図２は、第一の実施の形態のシステム構成を示したもので、ＣＰＵコア、キャッシュメモリ、アクセス制御装置、メインメモリ及びその上で動作するアプリケーション群によって構成されている。アプリケーション群１００と１０１はそれぞれアクセス可能なアドレス範囲が異なるアプリケーション群であり、それぞれ、アプリケーション１００はＣＰＵコア１１０上でのみ、アプリケーション１０１はＣＰＵコア１１１上でのみ動作している。ＣＰＵコア１１０と１１１はキャッシュメモリ１２０を共有しており、キャッシュメモリ１２０からシステムバス１３０とアクセス制御装置１４０を介して、メインメモリ１５０に繋がっている。
【００１４】
アクセス制御装置１４０は、図３に示したように、アクセスが許可される、アクセス先アドレス範囲３００と、アクセス元のドメインＩＤ３１０をテーブルとして持ち、システムバス１３０からメインメモリ１５０に対してアクセスリクエストがきた時に、アクセス先のアドレス３２０とアクセス元のドメインＩＤ３３０をテーブルの各エントリのアドレス範囲３００とドメインＩＤ３１０を比較することで、不正なアクセスを検出しアクセス許可信号３４０を遮断する。本実施の形態では、アプリケーション群１００はＣＰＵコア１１０で実行され、アプリケーション群１０１はＣＰＵコア１１１で実行されるため、アプリケーション群１００、１１１とＣＰＵコア１１０、１１１の組み合わせが一意に決まり、ドメインＩＤとしてＣＰＵコアのＩＤを使用することができる。
【００１５】
図４はＣＰＵコア１１０とキャッシュメモリ１２０の間の接続を表したもので、リクエスト制御線４００、アドレス線４１０、ドメイン線４２０、ライトデータ線４３０、リードデータ線４４０から構成される。リクエスト制御線４００はＣＰＵコア１１０からキャッシュメモリ１２０に対してのデータ書き込み／読み込みリクエストの制御信号、アドレス線４１０はデータ書き込み／読み込みのリクエスト先のアドレス、ドメイン線はデータ書き込み／読み込みのリクエスト元のドメインＩＤ（なお、本実施の形態ではＣＰＵコアＩＤと同じとなる）、ライトデータ線は書き込みデータ、リードデータ線は読み込みデータをそれぞれ伝える信号線である。ＣＰＵコア１１１とキャッシュメモリ１２０、キャッシュメモリ１２０とシステムバス１３０、システムバス１３０とアクセス制御装置１４０、アクセス制御装置１４０とメインメモリ１５０の間の接続も同様である。
【００１６】
キャッシュメモリにおいて、不正アドレスアクセスを遮断する仕組みを、図５、図６を用いて説明する。図５は、キャッシュメモリ構成とキャッシュヒット判定動作の模式図であり、図６は、データアクセスのフローチャートを示している。キャッシュメモリ内には、従来のキャッシュメモリからある、タグ３１１、キャッシュライン有効かどうかを表すＶビット３１２、ＬＲＵ３１３、データ３１４を各キャッシュラインごとに保持している。さらに、タグのフィールドを拡張し、拡張したタグフィールド３１０に、ＣＰＵコアから通知されてくるドメインＩＤ４２１を記録できる。
【００１７】
ＣＰＵコアからデータアクセスリクエストが来た時、通知されるアドレス４１１から、キャッシュタグ４１２とキャッシュエントリ４１３を求める。キャッシュエントリ４１３からデータが記録されているキャッシュメモリのキャッシュラインのエントリ番号が分かり、そこに記録されているドメインＩＤ３１０、タグ３１１をＣＰＵコアから通知されてきたドメインＩＤ４２１、キャッシュタグ４１２を比較回路５００によって比較し、さらにＶビット３１２との論理積回路５０１によって論理積を取ることでキャッシュのヒット判定を行う。
【００１８】
キャッシュヒット判定において、Ｖビットが０又はタグが不一致だった場合は、キャッシュメモリ上にアクセスリクエストのアドレスのデータが存在しないので、システムバス１３０にメインメモリアクセスリクエストを出す。その要求がアクセス制御装置１４０で受け付けられ、アクセス判定が行われ、不正アドレスアクセスは遮断され、アクセス可能な場合はメインメモリ１５０からデータが返ってくる。アクセスが許可されキャッシュメモリにデータが返ってきた時、返ってきたデータをＣＰＵコア１１０からデータアクセスリクエストと同時に通知されてくる、ドメインＩＤ４２１、キャッシュタグ４１２と共に、キャッシュエントリ４１３が示すキャッシュラインに記録する。
【００１９】
キャッシュヒット判定において、Ｖビットが１、かつ、タグが一致、かつ、ドメインが一致の場合は、キャッシュメモリ上にアクセスリクエストのアドレスのデータが存在し、データアクセスリクエストのアドレス４１１、ドメインＩＤ４２１と同じアドレス、ドメインＩＤの組が以前にアクセスがメインメモリにアクセスを行いアクセスが許可されおり、アクセス判定はアドレス４１１とドメインＩＤ４２１によって行われるので、アクセスは許可されるべきものであり、不正アドレスアクセスではない。したがって、キャッシュメモリ上のデータにアクセスを行う。
【００２０】
キャッシュヒット判定において、Ｖビットが１、かつ、タグが一致、かつ、ドメインが不一致の場合は、キャッシュメモリ上にアクセスリクエストのアドレスのデータは存在するが、キャッシュメモリにおいてはアクセスが許可されるかどうか判断することができない。したがって、この場合もキャッシュミスとして扱い前記キャッシュメモリ上にデータが存在しない場合と同様にシステムバス１３０にメインメモリアクセスリクエストを出し、アクセス制御装置１４０で不正アドレスアクセスを検出し遮断する。
【００２１】
以上の通り、本実施の形態では、拡張されたタグフィールドとＣＰＵコアＩＤ（または、ドメインＩＤ）の比較で一致の場合は、以前同様のアクセスが許可されたことを示しており、キャッシュメモリ上のアクセスは許可されるべきものである。また、拡張されたタグフィールドとＣＰＵコアＩＤ（または、ドメインＩＤ）の比較で不一致の場合は、キャッシュメモリではアクセスが許可されるべきかどうかが判別できないため、キャッシュミスと同様に扱いキャッシュメモリ上のデータにはアクセスさせず、アクセス制御装置及びメインメモリにアクセスを行う。許可されるべきアクセスは、アクセス制御装置でアクセスが許可され、メインメモリのデータにアクセスすることができる。また、許可されるべきではない不正アドレスアクセスは、アクセス制御装置でアクセスが遮断され、キャッシュメモリに対してもメインメモリに対しても不正アドレスアクセスを遮断することができる。さらに、従来のキャッシュメモリと比して、本発明では、タグフィールドの幅がわずかに広げるだけなので、キャッシュメモリアクセスにかかる時間に対するオーバーヘッドは少ないものとなる。
【００２２】
《実施の形態２》
図７は、第二の実施の形態のシステム構成を示したもので、ＣＰＵコア、キャッシュメモリ、アクセス制御装置、メインメモリ及びその上で動作するアプリケーション群によって構成されている。アプリケーション群１００と１０１はそれぞれアクセス可能なアドレス範囲が異なるアプリケーション群であり、それぞれ、ＣＰＵコアに静的に割り当てられる。第二の実施の形態では、アプリケーション１００はＣＰＵコア１１０と１１１上のどちらかで、アプリケーション１０１はＣＰＵコア１１２上でのみ動作する。ＣＰＵコア１１０と１１１と１１２はキャッシュメモリ１２０を共有しており、キャッシュメモリ１２０からシステムバス１３０とアクセス制御装置１４０を介して、メインメモリ１５０に繋がっている。
【００２３】
第一の実施の形態においてＣＰＵコアからキャッシュメモリにデータアクセスリクエスト共に通知されるドメインＩＤ４２１としてＣＰＵコアＩＤを使用していたのに代えて、図８に示すような、ＣＰＵコア１１０と１１１からは同じＩＤを、ＣＰＵコア１１２からは１１０と１１１とは違うＩＤを固定的に出力するドメインＩＤ出力回路６００を備えることで、アクセス元のアプリケーション群を検出することができる。他の仕組みは実施の形態１と同様とすることで、キャッシュメモリ上での不正アドレスの遮断を行うことができる。
【図面の簡単な説明】
【００２４】
【図１】キャッシュメモリにおいて不正アドレスアクセスが起こる例を示す図である。
【図２】実施の形態１におけるシステム構成例を示す図である。
【図３】アクセス制御装置におけるアクセス許可テーブルを示す図である。
【図４】実施の形態１におけるＣＰＵコアとキャッシュメモリの接続図である。
【図５】キャッシュメモリ構成とキャッシュヒット判定動作を示す図である。
【図６】データアクセスのフローチャートである。
【図７】実施の形態２におけるシステム構成例を示す図である。
【図８】実施の形態２におけるＣＰＵコアとキャッシュメモリの接続図である。
【符号の説明】
【００２５】
１００、１０１  アクセス可能なアドレス範囲が異なるアプリケーション群
１１０、１１１、１１２  ＣＰＵコア
１２０  キャッシュメモリ
１３０  システムバス
１４０  アクセス制御装置
１５０  メインメモリ
２２０、２２１、２２２、２２３  ＣＰＵコアからキャッシュメモリデータに対するアクセス
２００、２０１  キャッシュメモリ上のデータ
２１０、２１１  メインメモリ上のデータ
３００  アクセスが許可されるアドレス範囲
３１０  アクセスが許可されるアクセス元
３２０  バスアクセスのアクセス先アドレス
３３０  バスアクセスのアクセス元ドメインＩＤ
３４０  メインメモリに対するアクセス許可信号
４００  データアクセスリクエスト制御線
４１０  データアクセスアドレス線
４１１  データアクセスアドレス
４１２  データアクセスキャッシュタグ
４１３  データアクセスキャッシュエントリ
４２０データアクセスドメイン線
４２１データアクセスドメインＩＤ
４３０  データアクセスライトデータ線
４４０  データアクセスリードデータ線
５００  比較回路
５０１  論理積回路
５１０  キャッシュヒット判定結果
６００  ドメインＩＤ出力回路
【図１】
2010079765.tif 000003
【図２】
2010079765.tif 000004
【図３】
2010079765.tif 000005
【図４】
2010079765.tif 000006
【図５】
2010079765.tif 000007
【図６】
2010079765.tif 000008
【図７】
2010079765.tif 000009
【図８】
2010079765.tif 000010