説明

キャッシュメモリの中の制御データの修正

【課題】キャッシュメモリの中の制御データを処理するための装置及び方法を提供する。
【解決手段】データ処理システムは、少なくとも1つのプロセッサ4、6と、メインメモリ18と、キャッシュメモリ14とを提供される。キャッシュメモリ14の中のキャッシュデータは、有効データ及びそれに関連付けられた制御データを有する。制御データは、キャッシュされたデータに対するアクセスを制御する。プロセッサ4、6によって実行されるプログラム命令は、キャッシュされたデータと関連付けられた制御データがキャッシュメモリ14の中に格納された状態を維持すると共に有効な状態を維持したままで、該制御データを修正するように、キャッシュコントローラ26を制御する。制御データは、例えば、プロセッサまたは複数のプロセッサを保証するために、アクセスが制限されるか否かを示すセキュリティフラグを指定し得る。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データ処理システムの分野に関係する。更に詳しくは、この発明は、データ処理システムの中のキャッシュメモリの制御に関係する。
【背景技術】
【0002】
データ及び/または命令に対するアクセスを更に速くすることによって処理速度を増加するために、キャッシュメモリをデータ処理システムに提供するということが知られている。キャッシュメモリは処理速度を向上させる一方、それらは、データがメインメモリからキャッシュメモリにコピーされなければならないと共に、直接メインメモリから取得されるよりむしろ、データはそこから更に操作され得るという点で電力を消費するという欠点を有する。更に、データがもはやキャッシュメモリにおいて必要とされないとき、その場合に、それが整合性を維持するために変更されたならば、それはメインメモリに書き戻されなければならない。更に、このような方法によるキャッシュの読み込み及びキャッシュのフラッシュ(flush)は、比較的遅い。
【発明の開示】
【発明が解決しようとする課題】
【0003】
特別な問題が、多量のデータがキャッシュメモリからフラッシュされると共に、次に新しいデータがキャッシュメモリに読み込まれる時の文脈切り替え(context switch)のような状況において発生する。これは、不都合な程に遅いと共に、不都合な量の電力を消費する。
【課題を解決するための手段】
【0004】
1つの特徴から見ると、本発明は、メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも1つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備え、前記キャッシュメモリが、有効データ及びそれに関連付けられた制御データを有し、前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、前記キャッシュメモリが、前記少なくとも1つのプロセッサの内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答することを特徴とする、データを処理するための装置を提供する。
【0005】
本技術は、少なくともいくつかの状況において、キャッシュフラッシング(flushing)動作及びキャッシュ再読み込み動作を回避することが可能である、すなわち、データをフラッシュすると共に、次にその新しい制御データと一緒にデータを再読み込みするよりも、キャッシュメモリの中にキャッシュされたデータと関連付けられた制御データを修正することによって、キャッシュデータを有効であるとして維持するということを認定する。一例として、もしデータ値の大きなブロックが特定のプログラムスレッドによって処理されつつあると共に、キャッシュメモリが、他のプログラムスレッドではなく、その特定のプログラムスレッドによるアクセスを可能にする制御データを含み、そしてそのデータに対するアクセスを提供することが別のプログラムスレッドに対して要求される場合、その場合に、標準の技術は、キャッシュからデータをフラッシュすると共に、その後、そのデータを、新しいプログラムスレッドに対するアクセスを提供するのに適切である新しい制御データと共に、再読み込みすることであろう。しかしながら、本技術は、新しいプログラムスレッドによるアクセスを可能にすると共に、それにより、その関連する速度と電力消費の不利な条件を有するフラッシングと再読み込みを回避するために、プロセッサによって実行されたプログラム命令が、キャッシュメモリの中の制御データを直接修正するのに使用され得るということを認定する。
【0006】
制御データが多種多様な異なる形式をとるであろうということが認識されることになる。例として、制御データは、物理アドレスマッピングに対する特定の仮想アドレスに特有のTAGデータ、または“ASID”のようなスレッド識別データであることが可能であろう。
【0007】
修正されるべき制御データの別の例は、その中でプロセッサが、それに関連付けられた複数のアクセス状態(例えば、セキュリティモード)を有すると共に、これらの状態の中の特定のものだけが、メモリの制御領域にアクセスすることを可能にするシステムにおいて発生する。キャッシュメモリの中の制御データは、プロセッサが関連するキャッシュデータにアクセスすることができるために、進行中でなければならないアクセス状態を、プロセッサに対して指定し得る。このような状況において、一期間の間、プロセッサの所定のアクセス状態に対するアクセスを制限すると共に、その場合に、あとで、恐らくは異なるプロセッサによる、異なるアクセス状態に対するアクセスを開始することが求められ得る。本技術は、キャッシュのフラッシング、及びキャッシュの再読み込みを必要とせずに、キャッシュメモリのレベルにおけるそのような変更を可能にするために、プロセッサの内の少なくとも1つ上で実行中のプログラム命令が、アクセス制御データを修正することを可能にする。そのような処理は、例えば、キャッシュデータの特定の部分にアクセスすることを許可されたプロセッサまたは複数のプロセッサの識別性(例えば番号)を指定するアクセスデータを有する複数のプロセッサを備えるシステムの中で都合良く使用され得る。この制御データは、キャッシュデータをフラッシュすると共に再読み込みしなければならないことなく、動的に修正され得ると共に、すなわち、そのような修正を超えてデータの有効性を維持する。
【0008】
本技術は、プロセッサの内の少なくとも1つが、メモリの保護された領域からキャッシュされたキャッシュデータに対するアクセスを制限するために使用される制御データによる保護された状態及び保護されない状態を有する場合に、保護された状態で動作するプロセッサのみに特に有益である。本技術によると、保護された状態で動作するプロセッサは、保護された状態にあるプロセッサだけが、特定のキャッシュデータにアクセスし得ると指定する制御データを変更するプログラム命令を実行することを許可され得ると共に、それにより、保護されない状態で動作するプロセッサに、そのデータに対するアクセスを開始させる。このタイプの動作は、多量のデータが、他の場合は必要とされるであろうキャッシュのフラッシング及びキャッシュの再読み込みの量を削減する方法を提供する本技術によって保護された状態及び保護されない状態の両方において操作されることが必要とされ得るデジタル著作権管理のような分野で、特に有益である。
【0009】
制御データの一部分であるセキュリティフラグの変更は、特定のデータが保護されたデータであると示すことから、そのデータが保護されないデータであると示すことであるか、またはもう一つの方法として、セキュリティフラグを、特定のデータが保護されないデータであると示すことから、それは保護されたデータであると示すことに変更することである、ということが認識されることになる。
【0010】
本技術は、メモリのどの領域が保護されていて、そしてメモリのどの領域が保護されていないかを指定するために、プロセッサの内の少なくとも1つによってプログラム可能であるメモリ保護ユニットを用いるシステムの中で、良い利点と共に使用され得る。そのようなシステムにおけるプロセッサは、安全性に関して既に委譲された制御装置であると共に、従って、本技術に従ってキャッシュメモリの中の制御データに対する適切な修正を行うことを委託され得る。
【0011】
データ処理システム内にキャッシュメモリの階層がしばしば提供されるということが当業者によって認識されることになる。これは、複数のプロセッサを有するシステムの中の特別な場合である。小さなレベル−1のキャッシュメモリを有すると共に、更に大きなレベル−2のキャッシュメモリにアクセスすることは、プロセッサに共通である。本技術が、これらのメモリのいずれか、または両方に関して使用され得る一方、例えば、階層の中の様々なレベルにおける一貫性(coherency)のために実行される制御データに対する修正の間の競合状態を回避するために、キャッシュメモリ階層の中のキャッシュメモリの複数のレベルに関する技術を適用することと関連付けられた制御の複雑性は高い。従って、本技術の使用をキャッシュ階層の中の1つのレベルに制限することは、実用的である。このような状況において、更に大きな利益は、レベル−2のキャッシュメモリが概して大きく、従って、一般的にレベル−1のキャッシュメモリと関連付けられた更に小さな容量のデータと比較すると、レベル−2のキャッシュメモリと関連付けられた更に大きな容量のデータをフラッシュすると共に再読み込みする必要性を回避することが更に有利であるので、本技術をレベル−2のキャッシュメモリに適用することによって達成される。
【0012】
キャッシュメモリの中の制御データへの変更を実行するプログラム命令は、様々な異なる形式をとることができる。特定のキャッシュラインが、目標にされ得る。しかしながら、その範囲内に入っているキャッシュメモリの中にキャッシュされたあらゆるデータと制御データが交換されるべきであるメモリアドレスの範囲を指定するプログラム命令を提供することは、都合が良い。アクセス制御は、多くの場合、領域毎ベースでMMU及びMPUの中で管理されると共に、そのようなプログラム命令の中の範囲値によって指定され得るので、同様の領域毎ベースでキャッシュメモリの中に格納された制御データの中の変更を指示することは都合が良い。
【0013】
制御データの変更が行われる場合に、制御データを変更するためのプログラム命令に応答し、その修正された制御データを備える新しいキャッシュデータとエイリアス(alias)することになる(エイリアシング問題を起こすことになる)キャッシュラインを更に識別すると共に、それらのエイリアス(alias)するキャッシュラインをキャッシュメモリからフラッシュするようにキャッシュメモリを適用することによってキャッシュメモリの中の潜在的なエイリアシング問題を回避することは、同様に有利であり得る。
【0014】
以前に論じられた保護された状態及び保護されない状態は、プロセッサが、監視モードを経由して発生する領域の間の変更を伴って保護された領域または保護されない領域において動作する、保護環境の一部分であり得ると共に、それぞれの領域は、それぞれ複数の動作モードを有する。
【0015】
別の特徴によると、本発明は、メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも1つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備えたデータ処理装置におけるデータを処理するための方法であって、前記方法が、キャッシュされたデータが有効なデータであるか否かを指定するために、前記キャッシュメモリと関連付けられた有効データを使用する段階と、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定するために、制御データを使用する段階と、前記少なくとも1つのプロセッサの内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答する段階とを有することを特徴とする、方法を提供する。
【0016】
別の特徴によると、本発明は、データを処理するための装置であって、メモリ手段と、プログラム命令に応答してデータ処理動作を実行するために前記メモリ手段に接続される少なくとも1つのプロセッサ手段と、前記メモリ手段と前記プロセッサ手段に接続されるキャッシュメモリ手段とを備え、前記キャッシュメモリ手段が、有効データ及びそれに関連付けられた制御データを有し、前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、前記キャッシュメモリ手段が、前記少なくとも1つのプロセッサ手段の内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答することを特徴とする、装置を提供する。
【0017】
本発明の補足的な特徴は、上記に従ってデータを処理するための装置を制御するためのコンピュータプログラムを格納すると共に、該コンピュータプログラムが、上述の技術に従って制御データを設定するための1つ以上のプログラム命令を含むことを特徴とする、コンピュータプログラム製品である。
【0018】
本発明の前述の及び他の目的、特徴、そして利点は、添付図面と関連付けて読まれるべきである実例となる実施例の以下の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【0019】
図1は、それぞれがレベル−1のキャッシュメモリ8、10を備えるマルチプロセッサ4、6を含むデータ処理システム2を概略的に例証する。一貫性制御回路12は、2つのレベル−1のキャッシュメモリ8、10の間の一貫性を維持することに関与し、従って、もしレベル−1キャッシュメモリ8、10の内の1つの中のキャッシュラインに関連付けられた制御データに対する変更が実行される場合、その場合に、一貫性制御回路12は、この変更を確認すると共に、レベル−1のキャッシュメモリ8、10の内の他方の中で対応する変更を実行する。
【0020】
比較的大きなレベル−2のキャッシュメモリ14は、プロセッサ4、6の間で共有されると共に、メインシステムバス16と連結される。メインシステムバスと同様に連結されるのは、それに関連付けられた異なるアクセス許可を有する異なる領域(例えば保護された領域、保護されない領域等)を含むメインメモリ18である。メモリ保護ユニット20は、プロセッサ4、6のいずれか、または同様にメインバス16と連結される2つの更なる装置22、24のいずれかによるメインメモリ18に対するアクセスを規制することに関与する。
【0021】
図2は、レベル−2のキャッシュメモリ14の中のキャッシュデータのラインを概略的に例証する。これは、制御データ及びそれに関連付けられた有効データを有する8つのキャッシュデータワードを含む。有効データは、有効性ビットVを含む。制御データは、様々な異なる形式をとることができると共に、スレッドを識別するASIDと、(例えば、キャッシュデータに対応する仮想アドレスもしくは物理アドレスを指定する)タグデータフィールドTAGと、キャッシュライン内のデータが、読み込まれたので、何らかの修正の対象となったか否かを指定するダーティビット(dirty bit)Dと、それらが、適切なモードにおける適切な許可または動作を有するプロセッサ4、8の内の1つか、または装置22、24の内の1つであるか否かに拘らず、保護された領域の中で動作する装置によってのみそれがアクセスされ得るように、そのキャッシュラインの中のデータが制限されたか否かを指定する安全性識別ビットSとを含む。
【0022】
図3は、レベル−2のキャッシュメモリ14の中に格納される制御データに実行されるべき変更を指定するプロセッサ4、6のいずれかによるプログラム命令の実行の際にレベル−2のキャッシュメモリ14と関連付けられたキャッシュコントローラ26によって実行される処理を概略的に例証するフローチャートである。プログラム命令は、コプロセッサ命令か、または一般的にキャッシュコントローラを制御するために使用される他の形式の命令であり得る。プログラム命令は、変更された制御データが適用されるべきである、個々のメモリアドレスか、または、より好ましくはメモリアドレスの有り得る範囲のいずれかを指定する。プログラム命令は、更に、例えばセキュリティフラグの新しい設定、新しいASID、新しいTAGエントリ等の、制御データに実行されるべき変更を指定することになる。
【0023】
ステップ28において、キャッシュコントローラ26は、プロセッサ4、6の内の1つから、前述のタイプのプログラム命令が実行されたことを示す信号が受信されるまで待つ。そのような信号が受信されるとき、その場合に、ステップ30において、制御データにおける変更が実行される一方で、レベル−2のキャッシュメモリ14に対するアクセスが一時中断される。そして、ステップ32は、レベル−2のキャッシュメモリ14の中の第1のキャッシュラインを選択する。ステップ34は、選択されたキャッシュラインが、それに関して制御パラメータにおける変更が命令されたアドレスの範囲に適合するか否かを判定する。この照合は、例えば、キャッシュデータラインと関連付けられたメモリアドレスを指定する、図2において例証されたTAGデータフィールドに基づいて実行され得る。もし適合が発見されないならば、その場合に、処理は、それに関して潜在的な適合が識別される必要があるキャッシュラインが更に存在するか否かに関して判定が実行されるステップ36に進行する。もしそのような更なるキャッシュラインがあるならば、その場合に、ステップ38が次のキャッシュラインを選択し、そして、処理はステップ34に戻る。もしそれ以上のキャッシュラインがないならば、その場合に、処理は、キャッシュメモリに対するアクセスが再開されるステップ38に進行する。
【0024】
もしステップ34における判定が、選択されたキャッシュラインは、それに関して制御データにおける変更が指定されたアドレスの範囲に適合するというものであったならば、その場合に、処理は、修正された制御データが実行されたプログラム命令に従ってキャッシュラインに書き込まれるステップ40に進行する。修正された制御データは、例えばキャッシュラインを、保護されたモードのみの処理に対するアクセスから、保護されないモードのプロセッサによるアクセスに変更する、そのキャッシュラインに設定されるべき新しいセキュリティフラグであり得る。変更の別の例は、照合が行われたTAG値そのものの再プログラミング、またはフィールド(ASID)を識別するスレッドの再プログラミングである。
【0025】
上述のように、制御データの修正の間に起こ得る問題は、それが現存するキャッシュデータによってエイリアシングを導入し得ることである。例として、もしTAGデータが修正されるならば、その場合に、修正されたデータが、異なるキャッシュラインの中に現存するTAGデータフィールドに適合し、従って、キャッシュメモリが、メインメモリ18の中の同じメモリアドレスが提供するデータの(多分異なるであろう)2つのコピーを含むように見えるであろうエイリアシング問題が起こるかもしれない。この状況を回避するために、キャッシュコントローラ26は、それらの新しい制御データを備える最近修正されたキャッシュラインとエイリアス(alias)することになる(エイリアシング問題を起こすことになる)あらゆるキャッシュラインを識別する段階と、次に、新しいキャッシュラインとエイリアス(alias)することになるそのような現存するキャッシュラインをフラッシュする段階とを更に実行することができる。従って、レベル−2のキャッシュメモリ14は、特定のキャッシュラインの1つのコピーだけを含むことになる。
【0026】
図4は、プロセッサ4、6によって採用され得る保護された領域及び処理モードを概略的に例証する。これらの保護された領域及び処理モードは、イギリスのケンブリッジにある“ARM Limited”のプロセッサによって提供された“TrustZone”構造と類似している。この保護構造は、保護された領域S、及び保護されない領域NSを含む。保護された領域Sと保護されない領域NSとの間の変更は、監視モードを通じて行われなければならない。監視モード以外を通じた領域の間の変更は、許可されていない。各々の領域内で、特権モード及びいくつかのユーザモードを含む複数の異なる動作モードが提供される。
【0027】
このタイプの保護構造は、暗号化キー等のような機密データに安全性を与えるのに有益である。このタイプの構造に従ったメモリの領域は、保護された領域内で動作している時にはアクセス可能であると共に、保護されない領域内で動作している時にはアクセスできないと指定され得る。従って、暗号化キーのようなデータは、保護された領域において動作する信用されたソフトウェアだけがそのようなデータにアクセスすることができるので、保護された状態に維持され得る。
【0028】
図5は、本技術の一使用例を概略的に例証する図である。その処理は、暗号化されたファイルを読み込むメディアプレーヤによって始まる。このメディアプレーヤは、信用されたソフトウェアの一部分ではないと共に、保護されない領域において動作する。ファイルは、それが読み込まれる時、更に急速な処理のために、レベル−2のキャッシュメモリ14の中にキャッシュされることになる。データが保護されない領域内のメディアプレーヤによって読み込まれたので、それは保護されないデータとして指定される。暗号化されたデータは、その暗号化によって保護されているので、保護されない領域においてもアクセス可能であり得る。処理は、監視モードを通じて保護された領域に切り替わるように進行する。1つ以上のプログラム命令は、その場合に、キャッシュコントローラ26が、レベル−2キャッシュ14内にキャッシュされたメディアファイルに関して、キャッシュデータに関連付けられたセキュリティフラグを変更するべきであると指定するプロセッサ4、6の内の1つによって実行される。従って、キャッシュされたデータは、保護されないデータとして区分されることから、保護されたデータとして区分されるように変更され得る。これは、他の場合には、使用されるセキュリティキーを表している情報のような、潜在的に復号化に関係する機密情報が、システムから漏れるかもしれないので、その復号化処理の間のデータを保護する。キャッシュデータがこのように変更されたその制御データを有していた場合、その場合に、保護された領域において動作するデジタル権利管理ソフトウェアは、キャッシュされたデータを復号化する。この復号化の後で、キャッシュされたデータに関連付けられたセキュリティフラグを、キャッシュされたデータが保護されないデータであると戻って示すように変更するために、更なるプログラム命令が、キャッシュコントローラ26を始動するように実行される。この時点で、キャッシュされたデータは、復号化されることができたと共に、保護された処理は、機密を扱う暗号化キー等の目安になるあらゆる機密を扱う部分的に処理されたデータ、または関連するデータ値が、キャッシュされたデータから取り除かれたことを保証し得た。従って、キャッシュされたデータが保護されないデータに変更され戻されるとき、制御は、レベル−2のキャッシュメモリ14の中から復号化されたデータを再生し得るコーデックに渡され得る。
【0029】
この技術は、特別なアドレス領域(キャッシュの実装に応じて仮想的もしくは物理的)のためのキャッシュラインタグにおけるNSビットの状態を切り替えるための保護された処理タスクによって発行され得る新しいキャッシュ保守オペレーションのためのものである。
【0030】
「オペレーション1:範囲によるNSのSへの切り替え」
この場合、保護されたソフトウェアは、バッファを、保護されない状態から保護された状態に切り替える。オペレーションは、最初に、範囲を検索すると共に、もしそれらが変換されたならば、範囲内のNSラインと衝突するであろう現存するSタグを付けられたキャッシュラインがないかどうかをチェックする。もし衝突があるならば、その場合に、現存する保護されたラインは無効にされる(もしそれが発生したならば、それはソフトウェアのバグを示すので、保護された世界のソフトウェアは、これが決して起こらないことを保証するべきである)と共に、その次に、範囲内のNSラインはSに切り替えられる。
【0031】
「オペレーション2:範囲によるSのNSへの切り替え」
この場合、保護されたソフトウェアは、バッファを、保護された状態から保護されない状態に切り替える。オペレーションは、最初に、範囲を検索すると共に、もしそれらが変換されたならば、範囲内のSラインと衝突するであろう現存するNSタグを付けられたキャッシュラインがないかどうかをチェックする。もし衝突があるならば、その場合に、現存する保護されないラインは無効にされる(もしそれが発生したならば、それはソフトウェアのバグを示すので、通常の世界のソフトウェアは、これが決して起こらないことを保証するべきである)と共に、その次に、範囲内のSラインはNSに切り替えられる。
【0032】
この技術の主な使用は、D−サイドのアクセスのためのものであるが、しかし、I−サイドの操作(オペレーション)が、同様に可能であろう。
【0033】
本技術を使用しているとき、特にもしL2が複数のマスタを横断して共有されるならば、L1キャッシュとL2キャッシュの同期が取られるべきである。そのようなメカニズムは、この技術分野において良く理解されていると共に、ここでは更に論じられない。
【0034】
1段階のキャッシュシステムに関する以下のシーケンスは、一使用例である。
○メモリバッファが、NS処理タスクにより満たされる。
○メモリの制御が、S処理タスクに渡される。
○この時点以降、NS処理は、バッファを使用するべきでないか、あるいは、それは、データの破損またはデータの中止の危険を冒す。
○S処理タスクは、オペレーション1(範囲によるNSのSへの切り替え)を発行する。
○S処理タスクは、MPUを用いて、物理メモリを保護状態に切り替える。
○あなたが、NSビットを、アドレスビットではなく、セキュリティ許可ビットのように扱うならば、NSメモリへのSアクセスが許されるべきであるので、前述の2個の丸の間でキャッシュラインの排除が更に機能するべきである。
○あらゆる通常の世界は、上記の2つの丸の間で、データを見失う危険性(データ破損の危険性)をメモリ領域に書き込むが、しかし、それは、制御パスメカニズム(control passing mechanism)において定義されたソフトウェア規則に違反している。いずれにしろ、データが通常の世界から来たので、ここにはセキュリティ侵害が存在しない。
○S処理タスクは、秘密の値をこの領域に格納することを含むデータを利用する。
○S処理タスクは、領域内のあらゆる秘密のデータを削除する。
○S処理タスクは、MPUを使用して、物理メモリをNSに設定する。
○S処理タスクは、オペレーション2(範囲によるSのNSへの切り替え)を発行する。
○あなたが、NSビットを、アドレスビットではなく、セキュリティ許可ビットのように扱うならば、NSメモリへのSアクセスが許されるべきであるので、前述の2個の丸の間でキャッシュラインの排除が更に機能するべきである。
○あらゆる通常の世界は、上記の2つの丸の間で、データを見失う危険性(データ破損の危険性)をメモリ領域に書き込むが、しかし、それは、制御パスメカニズム(control passing mechanism)において定義されたソフトウェア規則に違反している。いずれにしろ、データが通常の世界に戻されているので、ここにはセキュリティ侵害が存在しない。
○S処理タスクは、NS処理タスクに制御を渡す。
【0035】
複数の段階のキャッシュシステムに関して、これらの新しいオペレーションの簡単で費用効率が高い使用は、“L2のみに統合する”ことであると共に、保護されたソフトウェアに、保護された処理状態を変更する前に、L1を削除して無効にさせることである。概してL2がL1よりはるかに大きいので、ここで大部分の利益が得られることになるように思われる。
【0036】
L1とL2においてこれらの新しいオペレーションを使用する更に複雑な設計が達成され得るが、しかし、以下のシーケンスは、ソフトウェアを実行するものに対して問題点を示す。
○バッファの制御が、S処理タスクに渡される。
○L1の状態をNSからSへ変更する。
○この時点におけるL1からのラインの排除は、L2における正しい(まだNS)ラインに、もはやデータの破損に帰着する打撃を与えないであろう。
○排除されたデータは、L2における異なる‘S’キャッシュラインに打撃を与える可能性があるが、しかし、これは、上述の規則を共有するメモリ管理に違反していると共に、プログラマのミスであると考えられるべきである。
○バッファの制御が、S処理タスクに渡される。
○L2の状態をNSからSへ変更する。
○この時点におけるL1(まだNS)からのラインの排除は、L2における正しい(既にS)ラインに、もはやデータの破損に帰着する打撃を与えないであろう。
○排除されたデータは、L2における異なる‘NS’キャッシュラインに打撃を与える可能性があるが、しかし、これは、上述の規則を共有するメモリ管理に違反していると共に、プログラマのミスであると考えられるべきである。
【0037】
このL1及びL2の使用を達成する方法は、L1とL2との間に(別のMPUのような)ハードウェア支援の転送階層を実装するか、または、それらの同期がはずれ得ないことを保証するために、この動作を実行している間、L1キャッシュを一時的に無効にすることである。
【0038】
1度メディアプレーヤが暗号化されたファイルをキャッシュメモリ14の中に読み込んだならば、その場合に、データは、キャッシュメモリ14の中に維持されると共に、フラッシュされて再読み込みされる必要なく、それについての保護状態を変更することの一部分として、その中で処理され得るということが、上記の内容から理解されることになる。これは、電力を節約すると共に、スピードを増加する。
【0039】
本発明の実例となる実施例が添付図面を参照してここで詳細に説明されたが、本発明はそれらの正確な実施例に制限されないと共に、その中で、様々な変更及び修正が、添付された特許請求の範囲によって定義された本発明の範囲及び精神からはずれずに、当業者によってもたらされ得るということが理解されるべきである。
【図面の簡単な説明】
【0040】
【図1】複数のプロセッサ、キャッシュメモリ階層、及びメインメモリへのアクセスを複数のプロセッサと共有する複数の装置を含むデータ処理装置を概略的に例証する図である。
【図2】制御データ及び有効データを含む、キャッシュメモリの中のキャッシュラインと関連付けられたデータを概略的に例証する図である。
【図3】キャッシュデータ値の範囲上で実行されるべき制御データの変更を指定するプログラム命令の実行の際にキャッシュコントローラによって実行される処理を概略的に例証するフローチャートである。
【図4】保護された領域と保護されない領域を含むシステムの動作モードを概略的に例証する図である。
【図5】キャッシュのフラッシング及びキャッシュの再読み込みを回避するために、保護された領域と保護されない領域との間で変更する時の、キャッシュデータに関連付けられたセキュリティフラグを変更するための本技術の一使用例を例証する図である。
【符号の説明】
【0041】
2 データ処理システム
4、6 マルチプロセッサ
8、10 レベル−1のキャッシュメモリ
12 一貫性制御回路
14 レベル−2のキャッシュメモリ
16 メインシステムバス
18 メインメモリ
20 メモリ保護ユニット
22 装置0
24 装置1
26 キャッシュコントローラ
V 有効性ビット
ASID スレッドを識別するデータ
TAG タグデータフィールド
D ダーティビット
S(図2) 安全性識別ビット
NS 保護されない領域
S(図5) 保護された領域

【特許請求の範囲】
【請求項1】
データを処理するための装置であって、
メモリと、
前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも1つのプロセッサと、
前記メモリと前記プロセッサに接続されるキャッシュメモリとを備え、
前記キャッシュメモリが、有効データ及びそれに関連付けられた制御データを有し、
前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、
前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、
前記キャッシュメモリが、前記少なくとも1つのプロセッサの内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答する
ことを特徴とする装置。
【請求項2】
前記制御データが、1つ以上のタグデータとプログラムスレッド指定データを含む
ことを特徴とする請求項1に記載の装置。
【請求項3】
前記少なくとも1つのプロセッサが、それに関連付けられた1つまたは複数のアクセス状態を有し、
前記メモリが、許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である、少なくとも1つの制御された領域を有しており、
前記制御データが、キャッシュされたデータを、前記メモリの制御された領域からキャッシュされた制御されたデータか、または前記メモリの制御された領域からキャッシュされない制御されないデータとして区分するアクセスフィールドを含み、
前記キャッシュメモリの中に制御されたデータとして区分されているキャッシュされたデータが、前記許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、前記許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である
ことを特徴とする請求項1に記載の装置。
【請求項4】
前記少なくとも1つのプロセッサが、保護された状態及び保護されない状態を有するプロセッサを含み、
前記メモリが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能である、少なくとも1つの保護された領域を有しており、
前記アクセスフィールドが、キャッシュされたデータを、前記メモリの保護された領域からキャッシュされた保護されたデータか、または前記メモリの保護されない領域からキャッシュされた保護されないデータとして区分するセキュリティフラグであり、
前記キャッシュメモリの中に保護されたデータとして区分されているキャッシュされたデータが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能であり、
前記キャッシュメモリが、前記プロセッサによって実行される1つ以上のプログラム命令に応答して、前記キャッシュメモリ内にキャッシュされたデータと関連付けられた前記セキュリティフラグを設定し、
前記プロセッサは、前記保護されない状態で動作している時に、前記セキュリティフラグを設定することができない
ことを特徴とする請求項3に記載の装置。
【請求項5】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されないデータとして区分することから、前記データを保護されたデータとして区分することに変更するための1つ以上のプログラム命令に応答する
ことを特徴とする請求項4に記載の装置。
【請求項6】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されたデータとして区分することから、前記データを保護されないデータとして区分することに変更するための1つ以上のプログラム命令に応答する
ことを特徴とする請求項4に記載の装置。
【請求項7】
前記メモリのどの領域が保護された領域としてアクセスされ、そして前記メモリのどの領域が保護されない領域としてアクセスされるかを制御するために、前記メモリに接続されると共に、前記プロセッサによってプログラム可能なメモリ保護ユニットを備える
ことを特徴とする請求項4に記載の装置。
【請求項8】
バスによって前記メモリに接続される、少なくとも1つの保護されない装置を含む1つ以上の更なる装置を備え、
前記メモリ保護ユニットが、前記バスに接続されると共に、前記少なくとも1つの保護されない装置による前記メモリの保護された領域に対するアクセスを防止するように構成される
ことを特徴とする請求項7に記載の装置。
【請求項9】
前記プロセッサと前記キャッシュメモリとの間に接続される更なるキャッシュメモリを備える
ことを特徴とする請求項1に記載の装置。
【請求項10】
前記更なるキャッシュメモリが、レベル−1のキャッシュメモリであると共に、
前記キャッシュメモリが、レベル−2のキャッシュメモリである
ことを特徴とする請求項9に記載の装置。
【請求項11】
前記レベル−2のキャッシュメモリに接続される複数のプロセッサを備える
ことを特徴とする請求項10に記載の装置。
【請求項12】
前記キャッシュメモリが、物理的にタグを付けられたキャッシュメモリである
ことを特徴とする請求項1に記載の装置。
【請求項13】
前記1つ以上のプログラム命令が、その範囲内に入っている前記キャッシュメモリの中にキャッシュされたあらゆるデータと前記制御データが交換されるべきであるメモリアドレスの範囲を指定する
ことを特徴とする請求項1に記載の装置。
【請求項14】
前記キャッシュメモリが、複数のコヒーレントキャッシュメモリの内の1つであると共に、
前記装置が、前記複数のコヒーレントキャッシュメモリの全てにおける対応する変更を生成するために、前記複数のコヒーレントキャッシュメモリの内の1つの中における前記制御データの変更に応答する一貫性回路構成を更に備える
ことを特徴とする請求項1に記載の装置。
【請求項15】
前記キャッシュメモリが、前記キャッシュメモリにキャッシュされたデータと関連付けられた前記制御データを変更する時に、更に、前記制御データが変更される前記キャッシュされたデータとエイリアスする、前記キャッシュメモリの中のあらゆる現存するキャッシュされたデータをフラッシュする
ことを特徴とする請求項1に記載の装置。
【請求項16】
前記保護された状態が、前記プロセッサのための複数の保護された動作モードを有する保護された領域のことであり、
前記保護されない状態が、前記プロセッサのための複数の保護されない動作モードを有する保護されない領域のことである
ことを特徴とする請求項4に記載の装置。
【請求項17】
前記保護された領域と前記保護されない領域との間のあらゆる変更が、動作の監視モードを経由する
ことを特徴とする請求項16に記載の装置。
【請求項18】
メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも1つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備えたデータ処理装置におけるデータを処理するための方法であって、
前記方法が、
キャッシュされたデータが有効なデータであるか否かを指定するために、前記キャッシュメモリと関連付けられた有効データを使用する段階と、
キャッシュされたデータに対するアクセスがどのように制御されるかについて指定するために、制御データを使用する段階と、
前記少なくとも1つのプロセッサの内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答する段階と
を有することを特徴とする方法。
【請求項19】
前記制御データが、1つ以上のタグデータとプログラムスレッド指定データを含む
ことを特徴とする請求項18に記載の方法。
【請求項20】
前記少なくとも1つのプロセッサが、それに関連付けられた1つまたは複数のアクセス状態を有し、
前記メモリが、許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である、少なくとも1つの制御された領域を有しており、
前記制御データが、キャッシュされたデータを、前記メモリの制御された領域からキャッシュされた制御されたデータか、または前記メモリの制御された領域からキャッシュされない制御されないデータとして区分するアクセスフィールドを含み、
前記キャッシュメモリの中に制御されたデータとして区分されているキャッシュされたデータが、前記許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、前記許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である
ことを特徴とする請求項18に記載の方法。
【請求項21】
前記少なくとも1つのプロセッサが、保護された状態及び保護されない状態を有するプロセッサを含み、
前記メモリが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能である、少なくとも1つの保護された領域を有しており、
前記アクセスフィールドが、キャッシュされたデータを、前記メモリの保護された領域からキャッシュされた保護されたデータか、または前記メモリの保護されない領域からキャッシュされた保護されないデータとして区分するセキュリティフラグであり、
前記キャッシュメモリの中に保護されたデータとして区分されているキャッシュされたデータが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能であり、
前記キャッシュメモリが、前記プロセッサによって実行される1つ以上のプログラム命令に応答して、前記キャッシュメモリ内にキャッシュされたデータと関連付けられた前記セキュリティフラグを設定し、
前記プロセッサは、前記保護されない状態で動作している時に、前記セキュリティフラグを設定することができない
ことを特徴とする請求項20に記載の方法。
【請求項22】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されないデータとして区分することから、前記データを保護されたデータとして区分することに変更するための1つ以上のプログラム命令に応答する
ことを特徴とする請求項21に記載の方法。
【請求項23】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されたデータとして区分することから、前記データを保護されないデータとして区分することに変更するための1つ以上のプログラム命令に応答する
ことを特徴とする請求項21に記載の方法。
【請求項24】
前記データ処理装置が、前記メモリのどの領域が保護された領域としてアクセスされ、そして前記メモリのどの領域が保護されない領域としてアクセスされるかを制御するために、前記メモリに接続されると共に、前記プロセッサによってプログラム可能なメモリ保護ユニットを備える
ことを特徴とする請求項21に記載の方法。
【請求項25】
前記データ処理装置が、バスによって前記メモリに接続される、少なくとも1つの保護されない装置を含む1つ以上の更なる装置を備え、
前記メモリ保護ユニットが、前記バスに接続されると共に、前記少なくとも1つの保護されない装置による前記メモリの保護された領域に対するアクセスを防止するように構成される
ことを特徴とする請求項24に記載の方法。
【請求項26】
前記データ処理装置が、前記プロセッサと前記キャッシュメモリとの間に接続される更なるキャッシュメモリを備える
ことを特徴とする請求項18に記載の方法。
【請求項27】
前記更なるキャッシュメモリが、レベル−1のキャッシュメモリであると共に、
前記キャッシュメモリが、レベル−2のキャッシュメモリである
ことを特徴とする請求項26に記載の方法。
【請求項28】
前記データ処理装置が、前記レベル−2のキャッシュメモリに接続される複数のプロセッサを備える
ことを特徴とする請求項27に記載の方法。
【請求項29】
前記キャッシュメモリが、物理的にタグを付けられたキャッシュメモリである
ことを特徴とする請求項18に記載の方法。
【請求項30】
前記1つ以上のプログラム命令が、その範囲内に入っている前記キャッシュメモリの中にキャッシュされたあらゆるデータと前記制御データが交換されるべきであるメモリアドレスの範囲を指定する
ことを特徴とする請求項18に記載の方法。
【請求項31】
前記キャッシュメモリが、複数のコヒーレントキャッシュメモリの内の1つであると共に、
前記データ処理装置が、前記複数のコヒーレントキャッシュメモリの全てにおける対応する変更を生成するために、前記複数のコヒーレントキャッシュメモリの内の1つの中における前記制御データの変更に応答する一貫性回路構成を更に備える
ことを特徴とする請求項18に記載の方法。
【請求項32】
前記キャッシュメモリが、前記キャッシュメモリにキャッシュされたデータと関連付けられた前記制御データを変更する時に、更に、前記制御データが変更される前記キャッシュされたデータとエイリアスする、前記キャッシュメモリの中のあらゆる現存するキャッシュされたデータをフラッシュする
ことを特徴とする請求項18に記載の方法。
【請求項33】
前記保護された状態が、前記プロセッサのための複数の保護された動作モードを有する保護された領域のことであり、
前記保護されない状態が、前記プロセッサのための複数の保護されない動作モードを有する保護されない領域のことである
ことを特徴とする請求項21に記載の方法。
【請求項34】
前記保護された領域と前記保護されない領域との間のあらゆる変更が、動作の監視モードを経由する
ことを特徴とする請求項33に記載の方法。
【請求項35】
請求項1に記載のデータを処理するための装置を制御するためのコンピュータプログラムを格納するコンピュータプログラム製品であって、
前記コンピュータプログラムが、前記制御データを設定するための1つ以上のプログラム命令を含む
ことを特徴とするコンピュータプログラム製品。
【請求項36】
データを処理するための装置であって、
メモリ手段と、
プログラム命令に応答してデータ処理動作を実行するために前記メモリ手段に接続される少なくとも1つのプロセッサ手段と、
前記メモリ手段と前記プロセッサ手段に接続されるキャッシュメモリ手段とを備え、
前記キャッシュメモリ手段が、有効データ及びそれに関連付けられた制御データを有し、
前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、
前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、
前記キャッシュメモリ手段が、前記少なくとも1つのプロセッサ手段の内の1つによって実行される、前記制御データを修正するための1つ以上のプログラム命令に応答する
ことを特徴とする装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2008−293494(P2008−293494A)
【公開日】平成20年12月4日(2008.12.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−133663(P2008−133663)
【出願日】平成20年5月21日(2008.5.21)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】