(57)【要約】【課題】キャッシュメモリの中の制御データを処理するための装置及び方法を提供する。【解決手段】データ処理システムは、少なくとも１つのプロセッサ４、６と、メインメモリ１８と、キャッシュメモリ１４とを提供される。キャッシュメモリ１４の中のキャッシュデータは、有効データ及びそれに関連付けられた制御データを有する。制御データは、キャッシュされたデータに対するアクセスを制御する。プロセッサ４、６によって実行されるプログラム命令は、キャッシュされたデータと関連付けられた制御データがキャッシュメモリ１４の中に格納された状態を維持すると共に有効な状態を維持したままで、該制御データを修正するように、キャッシュコントローラ２６を制御する。制御データは、例えば、プロセッサまたは複数のプロセッサを保証するために、アクセスが制限されるか否かを示すセキュリティフラグを指定し得る。【選択図】図５
2008293494.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
メモリと、
前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも１つのプロセッサと、
前記メモリと前記プロセッサに接続されるキャッシュメモリとを備え、
前記キャッシュメモリが、有効データ及びそれに関連付けられた制御データを有し、
前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、
前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、
前記キャッシュメモリが、前記少なくとも１つのプロセッサの内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答する
ことを特徴とする装置。
【請求項２】
前記制御データが、１つ以上のタグデータとプログラムスレッド指定データを含む
ことを特徴とする請求項１に記載の装置。
【請求項３】
前記少なくとも１つのプロセッサが、それに関連付けられた１つまたは複数のアクセス状態を有し、
前記メモリが、許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である、少なくとも１つの制御された領域を有しており、
前記制御データが、キャッシュされたデータを、前記メモリの制御された領域からキャッシュされた制御されたデータか、または前記メモリの制御された領域からキャッシュされない制御されないデータとして区分するアクセスフィールドを含み、
前記キャッシュメモリの中に制御されたデータとして区分されているキャッシュされたデータが、前記許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、前記許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である
ことを特徴とする請求項１に記載の装置。
【請求項４】
前記少なくとも１つのプロセッサが、保護された状態及び保護されない状態を有するプロセッサを含み、
前記メモリが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能である、少なくとも１つの保護された領域を有しており、
前記アクセスフィールドが、キャッシュされたデータを、前記メモリの保護された領域からキャッシュされた保護されたデータか、または前記メモリの保護されない領域からキャッシュされた保護されないデータとして区分するセキュリティフラグであり、
前記キャッシュメモリの中に保護されたデータとして区分されているキャッシュされたデータが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能であり、
前記キャッシュメモリが、前記プロセッサによって実行される１つ以上のプログラム命令に応答して、前記キャッシュメモリ内にキャッシュされたデータと関連付けられた前記セキュリティフラグを設定し、
前記プロセッサは、前記保護されない状態で動作している時に、前記セキュリティフラグを設定することができない
ことを特徴とする請求項３に記載の装置。
【請求項５】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されないデータとして区分することから、前記データを保護されたデータとして区分することに変更するための１つ以上のプログラム命令に応答する
ことを特徴とする請求項４に記載の装置。
【請求項６】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されたデータとして区分することから、前記データを保護されないデータとして区分することに変更するための１つ以上のプログラム命令に応答する
ことを特徴とする請求項４に記載の装置。
【請求項７】
前記メモリのどの領域が保護された領域としてアクセスされ、そして前記メモリのどの領域が保護されない領域としてアクセスされるかを制御するために、前記メモリに接続されると共に、前記プロセッサによってプログラム可能なメモリ保護ユニットを備える
ことを特徴とする請求項４に記載の装置。
【請求項８】
バスによって前記メモリに接続される、少なくとも１つの保護されない装置を含む１つ以上の更なる装置を備え、
前記メモリ保護ユニットが、前記バスに接続されると共に、前記少なくとも１つの保護されない装置による前記メモリの保護された領域に対するアクセスを防止するように構成される
ことを特徴とする請求項７に記載の装置。
【請求項９】
前記プロセッサと前記キャッシュメモリとの間に接続される更なるキャッシュメモリを備える
ことを特徴とする請求項１に記載の装置。
【請求項１０】
前記更なるキャッシュメモリが、レベル−１のキャッシュメモリであると共に、
前記キャッシュメモリが、レベル−２のキャッシュメモリである
ことを特徴とする請求項９に記載の装置。
【請求項１１】
前記レベル−２のキャッシュメモリに接続される複数のプロセッサを備える
ことを特徴とする請求項１０に記載の装置。
【請求項１２】
前記キャッシュメモリが、物理的にタグを付けられたキャッシュメモリである
ことを特徴とする請求項１に記載の装置。
【請求項１３】
前記１つ以上のプログラム命令が、その範囲内に入っている前記キャッシュメモリの中にキャッシュされたあらゆるデータと前記制御データが交換されるべきであるメモリアドレスの範囲を指定する
ことを特徴とする請求項１に記載の装置。
【請求項１４】
前記キャッシュメモリが、複数のコヒーレントキャッシュメモリの内の１つであると共に、
前記装置が、前記複数のコヒーレントキャッシュメモリの全てにおける対応する変更を生成するために、前記複数のコヒーレントキャッシュメモリの内の１つの中における前記制御データの変更に応答する一貫性回路構成を更に備える
ことを特徴とする請求項１に記載の装置。
【請求項１５】
前記キャッシュメモリが、前記キャッシュメモリにキャッシュされたデータと関連付けられた前記制御データを変更する時に、更に、前記制御データが変更される前記キャッシュされたデータとエイリアスする、前記キャッシュメモリの中のあらゆる現存するキャッシュされたデータをフラッシュする
ことを特徴とする請求項１に記載の装置。
【請求項１６】
前記保護された状態が、前記プロセッサのための複数の保護された動作モードを有する保護された領域のことであり、
前記保護されない状態が、前記プロセッサのための複数の保護されない動作モードを有する保護されない領域のことである
ことを特徴とする請求項４に記載の装置。
【請求項１７】
前記保護された領域と前記保護されない領域との間のあらゆる変更が、動作の監視モードを経由する
ことを特徴とする請求項１６に記載の装置。
【請求項１８】
メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも１つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備えたデータ処理装置におけるデータを処理するための方法であって、
前記方法が、
キャッシュされたデータが有効なデータであるか否かを指定するために、前記キャッシュメモリと関連付けられた有効データを使用する段階と、
キャッシュされたデータに対するアクセスがどのように制御されるかについて指定するために、制御データを使用する段階と、
前記少なくとも１つのプロセッサの内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答する段階と
を有することを特徴とする方法。
【請求項１９】
前記制御データが、１つ以上のタグデータとプログラムスレッド指定データを含む
ことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記少なくとも１つのプロセッサが、それに関連付けられた１つまたは複数のアクセス状態を有し、
前記メモリが、許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である、少なくとも１つの制御された領域を有しており、
前記制御データが、キャッシュされたデータを、前記メモリの制御された領域からキャッシュされた制御されたデータか、または前記メモリの制御された領域からキャッシュされない制御されないデータとして区分するアクセスフィールドを含み、
前記キャッシュメモリの中に制御されたデータとして区分されているキャッシュされたデータが、前記許可されたアクセス状態を有しているプロセッサにとってアクセス可能であると共に、前記許可されたアクセス状態を有していないプロセッサにとってアクセス不可能である
ことを特徴とする請求項１８に記載の方法。
【請求項２１】
前記少なくとも１つのプロセッサが、保護された状態及び保護されない状態を有するプロセッサを含み、
前記メモリが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能である、少なくとも１つの保護された領域を有しており、
前記アクセスフィールドが、キャッシュされたデータを、前記メモリの保護された領域からキャッシュされた保護されたデータか、または前記メモリの保護されない領域からキャッシュされた保護されないデータとして区分するセキュリティフラグであり、
前記キャッシュメモリの中に保護されたデータとして区分されているキャッシュされたデータが、前記保護された状態で動作している時に前記プロセッサにとってアクセス可能であると共に、前記保護されない状態で動作している時に前記プロセッサにとってアクセス不可能であり、
前記キャッシュメモリが、前記プロセッサによって実行される１つ以上のプログラム命令に応答して、前記キャッシュメモリ内にキャッシュされたデータと関連付けられた前記セキュリティフラグを設定し、
前記プロセッサは、前記保護されない状態で動作している時に、前記セキュリティフラグを設定することができない
ことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されないデータとして区分することから、前記データを保護されたデータとして区分することに変更するための１つ以上のプログラム命令に応答する
ことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記プロセッサが、前記保護された状態で動作している時に、前記キャッシュメモリ内にキャッシュされたデータに関連付けられた前記セキュリティフラグを、前記データを保護されたデータとして区分することから、前記データを保護されないデータとして区分することに変更するための１つ以上のプログラム命令に応答する
ことを特徴とする請求項２１に記載の方法。
【請求項２４】
前記データ処理装置が、前記メモリのどの領域が保護された領域としてアクセスされ、そして前記メモリのどの領域が保護されない領域としてアクセスされるかを制御するために、前記メモリに接続されると共に、前記プロセッサによってプログラム可能なメモリ保護ユニットを備える
ことを特徴とする請求項２１に記載の方法。
【請求項２５】
前記データ処理装置が、バスによって前記メモリに接続される、少なくとも１つの保護されない装置を含む１つ以上の更なる装置を備え、
前記メモリ保護ユニットが、前記バスに接続されると共に、前記少なくとも１つの保護されない装置による前記メモリの保護された領域に対するアクセスを防止するように構成される
ことを特徴とする請求項２４に記載の方法。
【請求項２６】
前記データ処理装置が、前記プロセッサと前記キャッシュメモリとの間に接続される更なるキャッシュメモリを備える
ことを特徴とする請求項１８に記載の方法。
【請求項２７】
前記更なるキャッシュメモリが、レベル−１のキャッシュメモリであると共に、
前記キャッシュメモリが、レベル−２のキャッシュメモリである
ことを特徴とする請求項２６に記載の方法。
【請求項２８】
前記データ処理装置が、前記レベル−２のキャッシュメモリに接続される複数のプロセッサを備える
ことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記キャッシュメモリが、物理的にタグを付けられたキャッシュメモリである
ことを特徴とする請求項１８に記載の方法。
【請求項３０】
前記１つ以上のプログラム命令が、その範囲内に入っている前記キャッシュメモリの中にキャッシュされたあらゆるデータと前記制御データが交換されるべきであるメモリアドレスの範囲を指定する
ことを特徴とする請求項１８に記載の方法。
【請求項３１】
前記キャッシュメモリが、複数のコヒーレントキャッシュメモリの内の１つであると共に、
前記データ処理装置が、前記複数のコヒーレントキャッシュメモリの全てにおける対応する変更を生成するために、前記複数のコヒーレントキャッシュメモリの内の１つの中における前記制御データの変更に応答する一貫性回路構成を更に備える
ことを特徴とする請求項１８に記載の方法。
【請求項３２】
前記キャッシュメモリが、前記キャッシュメモリにキャッシュされたデータと関連付けられた前記制御データを変更する時に、更に、前記制御データが変更される前記キャッシュされたデータとエイリアスする、前記キャッシュメモリの中のあらゆる現存するキャッシュされたデータをフラッシュする
ことを特徴とする請求項１８に記載の方法。
【請求項３３】
前記保護された状態が、前記プロセッサのための複数の保護された動作モードを有する保護された領域のことであり、
前記保護されない状態が、前記プロセッサのための複数の保護されない動作モードを有する保護されない領域のことである
ことを特徴とする請求項２１に記載の方法。
【請求項３４】
前記保護された領域と前記保護されない領域との間のあらゆる変更が、動作の監視モードを経由する
ことを特徴とする請求項３３に記載の方法。
【請求項３５】
請求項１に記載のデータを処理するための装置を制御するためのコンピュータプログラムを格納するコンピュータプログラム製品であって、
前記コンピュータプログラムが、前記制御データを設定するための１つ以上のプログラム命令を含む
ことを特徴とするコンピュータプログラム製品。
【請求項３６】
データを処理するための装置であって、
メモリ手段と、
プログラム命令に応答してデータ処理動作を実行するために前記メモリ手段に接続される少なくとも１つのプロセッサ手段と、
前記メモリ手段と前記プロセッサ手段に接続されるキャッシュメモリ手段とを備え、
前記キャッシュメモリ手段が、有効データ及びそれに関連付けられた制御データを有し、
前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、
前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、
前記キャッシュメモリ手段が、前記少なくとも１つのプロセッサ手段の内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答する
ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ処理システムの分野に関係する。更に詳しくは、この発明は、データ処理システムの中のキャッシュメモリの制御に関係する。
【背景技術】
【０００２】
データ及び／または命令に対するアクセスを更に速くすることによって処理速度を増加するために、キャッシュメモリをデータ処理システムに提供するということが知られている。キャッシュメモリは処理速度を向上させる一方、それらは、データがメインメモリからキャッシュメモリにコピーされなければならないと共に、直接メインメモリから取得されるよりむしろ、データはそこから更に操作され得るという点で電力を消費するという欠点を有する。更に、データがもはやキャッシュメモリにおいて必要とされないとき、その場合に、それが整合性を維持するために変更されたならば、それはメインメモリに書き戻されなければならない。更に、このような方法によるキャッシュの読み込み及びキャッシュのフラッシュ（flush）は、比較的遅い。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特別な問題が、多量のデータがキャッシュメモリからフラッシュされると共に、次に新しいデータがキャッシュメモリに読み込まれる時の文脈切り替え（context switch）のような状況において発生する。これは、不都合な程に遅いと共に、不都合な量の電力を消費する。
【課題を解決するための手段】
【０００４】
１つの特徴から見ると、本発明は、メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも１つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備え、前記キャッシュメモリが、有効データ及びそれに関連付けられた制御データを有し、前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、前記キャッシュメモリが、前記少なくとも１つのプロセッサの内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答することを特徴とする、データを処理するための装置を提供する。
【０００５】
本技術は、少なくともいくつかの状況において、キャッシュフラッシング（flushing）動作及びキャッシュ再読み込み動作を回避することが可能である、すなわち、データをフラッシュすると共に、次にその新しい制御データと一緒にデータを再読み込みするよりも、キャッシュメモリの中にキャッシュされたデータと関連付けられた制御データを修正することによって、キャッシュデータを有効であるとして維持するということを認定する。一例として、もしデータ値の大きなブロックが特定のプログラムスレッドによって処理されつつあると共に、キャッシュメモリが、他のプログラムスレッドではなく、その特定のプログラムスレッドによるアクセスを可能にする制御データを含み、そしてそのデータに対するアクセスを提供することが別のプログラムスレッドに対して要求される場合、その場合に、標準の技術は、キャッシュからデータをフラッシュすると共に、その後、そのデータを、新しいプログラムスレッドに対するアクセスを提供するのに適切である新しい制御データと共に、再読み込みすることであろう。しかしながら、本技術は、新しいプログラムスレッドによるアクセスを可能にすると共に、それにより、その関連する速度と電力消費の不利な条件を有するフラッシングと再読み込みを回避するために、プロセッサによって実行されたプログラム命令が、キャッシュメモリの中の制御データを直接修正するのに使用され得るということを認定する。
【０００６】
制御データが多種多様な異なる形式をとるであろうということが認識されることになる。例として、制御データは、物理アドレスマッピングに対する特定の仮想アドレスに特有のＴＡＧデータ、または“ＡＳＩＤ”のようなスレッド識別データであることが可能であろう。
【０００７】
修正されるべき制御データの別の例は、その中でプロセッサが、それに関連付けられた複数のアクセス状態（例えば、セキュリティモード）を有すると共に、これらの状態の中の特定のものだけが、メモリの制御領域にアクセスすることを可能にするシステムにおいて発生する。キャッシュメモリの中の制御データは、プロセッサが関連するキャッシュデータにアクセスすることができるために、進行中でなければならないアクセス状態を、プロセッサに対して指定し得る。このような状況において、一期間の間、プロセッサの所定のアクセス状態に対するアクセスを制限すると共に、その場合に、あとで、恐らくは異なるプロセッサによる、異なるアクセス状態に対するアクセスを開始することが求められ得る。本技術は、キャッシュのフラッシング、及びキャッシュの再読み込みを必要とせずに、キャッシュメモリのレベルにおけるそのような変更を可能にするために、プロセッサの内の少なくとも１つ上で実行中のプログラム命令が、アクセス制御データを修正することを可能にする。そのような処理は、例えば、キャッシュデータの特定の部分にアクセスすることを許可されたプロセッサまたは複数のプロセッサの識別性（例えば番号）を指定するアクセスデータを有する複数のプロセッサを備えるシステムの中で都合良く使用され得る。この制御データは、キャッシュデータをフラッシュすると共に再読み込みしなければならないことなく、動的に修正され得ると共に、すなわち、そのような修正を超えてデータの有効性を維持する。
【０００８】
本技術は、プロセッサの内の少なくとも１つが、メモリの保護された領域からキャッシュされたキャッシュデータに対するアクセスを制限するために使用される制御データによる保護された状態及び保護されない状態を有する場合に、保護された状態で動作するプロセッサのみに特に有益である。本技術によると、保護された状態で動作するプロセッサは、保護された状態にあるプロセッサだけが、特定のキャッシュデータにアクセスし得ると指定する制御データを変更するプログラム命令を実行することを許可され得ると共に、それにより、保護されない状態で動作するプロセッサに、そのデータに対するアクセスを開始させる。このタイプの動作は、多量のデータが、他の場合は必要とされるであろうキャッシュのフラッシング及びキャッシュの再読み込みの量を削減する方法を提供する本技術によって保護された状態及び保護されない状態の両方において操作されることが必要とされ得るデジタル著作権管理のような分野で、特に有益である。
【０００９】
制御データの一部分であるセキュリティフラグの変更は、特定のデータが保護されたデータであると示すことから、そのデータが保護されないデータであると示すことであるか、またはもう一つの方法として、セキュリティフラグを、特定のデータが保護されないデータであると示すことから、それは保護されたデータであると示すことに変更することである、ということが認識されることになる。
【００１０】
本技術は、メモリのどの領域が保護されていて、そしてメモリのどの領域が保護されていないかを指定するために、プロセッサの内の少なくとも１つによってプログラム可能であるメモリ保護ユニットを用いるシステムの中で、良い利点と共に使用され得る。そのようなシステムにおけるプロセッサは、安全性に関して既に委譲された制御装置であると共に、従って、本技術に従ってキャッシュメモリの中の制御データに対する適切な修正を行うことを委託され得る。
【００１１】
データ処理システム内にキャッシュメモリの階層がしばしば提供されるということが当業者によって認識されることになる。これは、複数のプロセッサを有するシステムの中の特別な場合である。小さなレベル−１のキャッシュメモリを有すると共に、更に大きなレベル−２のキャッシュメモリにアクセスすることは、プロセッサに共通である。本技術が、これらのメモリのいずれか、または両方に関して使用され得る一方、例えば、階層の中の様々なレベルにおける一貫性（coherency）のために実行される制御データに対する修正の間の競合状態を回避するために、キャッシュメモリ階層の中のキャッシュメモリの複数のレベルに関する技術を適用することと関連付けられた制御の複雑性は高い。従って、本技術の使用をキャッシュ階層の中の１つのレベルに制限することは、実用的である。このような状況において、更に大きな利益は、レベル−２のキャッシュメモリが概して大きく、従って、一般的にレベル−１のキャッシュメモリと関連付けられた更に小さな容量のデータと比較すると、レベル−２のキャッシュメモリと関連付けられた更に大きな容量のデータをフラッシュすると共に再読み込みする必要性を回避することが更に有利であるので、本技術をレベル−２のキャッシュメモリに適用することによって達成される。
【００１２】
キャッシュメモリの中の制御データへの変更を実行するプログラム命令は、様々な異なる形式をとることができる。特定のキャッシュラインが、目標にされ得る。しかしながら、その範囲内に入っているキャッシュメモリの中にキャッシュされたあらゆるデータと制御データが交換されるべきであるメモリアドレスの範囲を指定するプログラム命令を提供することは、都合が良い。アクセス制御は、多くの場合、領域毎ベースでＭＭＵ及びＭＰＵの中で管理されると共に、そのようなプログラム命令の中の範囲値によって指定され得るので、同様の領域毎ベースでキャッシュメモリの中に格納された制御データの中の変更を指示することは都合が良い。
【００１３】
制御データの変更が行われる場合に、制御データを変更するためのプログラム命令に応答し、その修正された制御データを備える新しいキャッシュデータとエイリアス（alias）することになる（エイリアシング問題を起こすことになる）キャッシュラインを更に識別すると共に、それらのエイリアス（alias）するキャッシュラインをキャッシュメモリからフラッシュするようにキャッシュメモリを適用することによってキャッシュメモリの中の潜在的なエイリアシング問題を回避することは、同様に有利であり得る。
【００１４】
以前に論じられた保護された状態及び保護されない状態は、プロセッサが、監視モードを経由して発生する領域の間の変更を伴って保護された領域または保護されない領域において動作する、保護環境の一部分であり得ると共に、それぞれの領域は、それぞれ複数の動作モードを有する。
【００１５】
別の特徴によると、本発明は、メモリと、前記メモリに接続されると共に、データ処理動作を実行するためのプログラム命令に応答する少なくとも１つのプロセッサと、前記メモリと前記プロセッサに接続されるキャッシュメモリとを備えたデータ処理装置におけるデータを処理するための方法であって、前記方法が、キャッシュされたデータが有効なデータであるか否かを指定するために、前記キャッシュメモリと関連付けられた有効データを使用する段階と、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定するために、制御データを使用する段階と、前記少なくとも１つのプロセッサの内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答する段階とを有することを特徴とする、方法を提供する。
【００１６】
別の特徴によると、本発明は、データを処理するための装置であって、メモリ手段と、プログラム命令に応答してデータ処理動作を実行するために前記メモリ手段に接続される少なくとも１つのプロセッサ手段と、前記メモリ手段と前記プロセッサ手段に接続されるキャッシュメモリ手段とを備え、前記キャッシュメモリ手段が、有効データ及びそれに関連付けられた制御データを有し、前記有効データが、キャッシュされたデータが有効なデータであるか否かを指定し、前記制御データが、キャッシュされたデータに対するアクセスがどのように制御されるかについて指定すると共に、前記キャッシュメモリ手段が、前記少なくとも１つのプロセッサ手段の内の１つによって実行される、前記制御データを修正するための１つ以上のプログラム命令に応答することを特徴とする、装置を提供する。
【００１７】
本発明の補足的な特徴は、上記に従ってデータを処理するための装置を制御するためのコンピュータプログラムを格納すると共に、該コンピュータプログラムが、上述の技術に従って制御データを設定するための１つ以上のプログラム命令を含むことを特徴とする、コンピュータプログラム製品である。
【００１８】
本発明の前述の及び他の目的、特徴、そして利点は、添付図面と関連付けて読まれるべきである実例となる実施例の以下の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００１９】
図１は、それぞれがレベル−１のキャッシュメモリ８、１０を備えるマルチプロセッサ４、６を含むデータ処理システム２を概略的に例証する。一貫性制御回路１２は、２つのレベル−１のキャッシュメモリ８、１０の間の一貫性を維持することに関与し、従って、もしレベル−１キャッシュメモリ８、１０の内の１つの中のキャッシュラインに関連付けられた制御データに対する変更が実行される場合、その場合に、一貫性制御回路１２は、この変更を確認すると共に、レベル−１のキャッシュメモリ８、１０の内の他方の中で対応する変更を実行する。
【００２０】
比較的大きなレベル−２のキャッシュメモリ１４は、プロセッサ４、６の間で共有されると共に、メインシステムバス１６と連結される。メインシステムバスと同様に連結されるのは、それに関連付けられた異なるアクセス許可を有する異なる領域（例えば保護された領域、保護されない領域等）を含むメインメモリ１８である。メモリ保護ユニット２０は、プロセッサ４、６のいずれか、または同様にメインバス１６と連結される２つの更なる装置２２、２４のいずれかによるメインメモリ１８に対するアクセスを規制することに関与する。
【００２１】
図２は、レベル−２のキャッシュメモリ１４の中のキャッシュデータのラインを概略的に例証する。これは、制御データ及びそれに関連付けられた有効データを有する８つのキャッシュデータワードを含む。有効データは、有効性ビットＶを含む。制御データは、様々な異なる形式をとることができると共に、スレッドを識別するＡＳＩＤと、（例えば、キャッシュデータに対応する仮想アドレスもしくは物理アドレスを指定する）タグデータフィールドＴＡＧと、キャッシュライン内のデータが、読み込まれたので、何らかの修正の対象となったか否かを指定するダーティビット（dirty bit）Ｄと、それらが、適切なモードにおける適切な許可または動作を有するプロセッサ４、８の内の１つか、または装置２２、２４の内の１つであるか否かに拘らず、保護された領域の中で動作する装置によってのみそれがアクセスされ得るように、そのキャッシュラインの中のデータが制限されたか否かを指定する安全性識別ビットＳとを含む。
【００２２】
図３は、レベル−２のキャッシュメモリ１４の中に格納される制御データに実行されるべき変更を指定するプロセッサ４、６のいずれかによるプログラム命令の実行の際にレベル−２のキャッシュメモリ１４と関連付けられたキャッシュコントローラ２６によって実行される処理を概略的に例証するフローチャートである。プログラム命令は、コプロセッサ命令か、または一般的にキャッシュコントローラを制御するために使用される他の形式の命令であり得る。プログラム命令は、変更された制御データが適用されるべきである、個々のメモリアドレスか、または、より好ましくはメモリアドレスの有り得る範囲のいずれかを指定する。プログラム命令は、更に、例えばセキュリティフラグの新しい設定、新しいＡＳＩＤ、新しいＴＡＧエントリ等の、制御データに実行されるべき変更を指定することになる。
【００２３】
ステップ２８において、キャッシュコントローラ２６は、プロセッサ４、６の内の１つから、前述のタイプのプログラム命令が実行されたことを示す信号が受信されるまで待つ。そのような信号が受信されるとき、その場合に、ステップ３０において、制御データにおける変更が実行される一方で、レベル−２のキャッシュメモリ１４に対するアクセスが一時中断される。そして、ステップ３２は、レベル−２のキャッシュメモリ１４の中の第１のキャッシュラインを選択する。ステップ３４は、選択されたキャッシュラインが、それに関して制御パラメータにおける変更が命令されたアドレスの範囲に適合するか否かを判定する。この照合は、例えば、キャッシュデータラインと関連付けられたメモリアドレスを指定する、図２において例証されたＴＡＧデータフィールドに基づいて実行され得る。もし適合が発見されないならば、その場合に、処理は、それに関して潜在的な適合が識別される必要があるキャッシュラインが更に存在するか否かに関して判定が実行されるステップ３６に進行する。もしそのような更なるキャッシュラインがあるならば、その場合に、ステップ３８が次のキャッシュラインを選択し、そして、処理はステップ３４に戻る。もしそれ以上のキャッシュラインがないならば、その場合に、処理は、キャッシュメモリに対するアクセスが再開されるステップ３８に進行する。
【００２４】
もしステップ３４における判定が、選択されたキャッシュラインは、それに関して制御データにおける変更が指定されたアドレスの範囲に適合するというものであったならば、その場合に、処理は、修正された制御データが実行されたプログラム命令に従ってキャッシュラインに書き込まれるステップ４０に進行する。修正された制御データは、例えばキャッシュラインを、保護されたモードのみの処理に対するアクセスから、保護されないモードのプロセッサによるアクセスに変更する、そのキャッシュラインに設定されるべき新しいセキュリティフラグであり得る。変更の別の例は、照合が行われたＴＡＧ値そのものの再プログラミング、またはフィールド（ＡＳＩＤ）を識別するスレッドの再プログラミングである。
【００２５】
上述のように、制御データの修正の間に起こ得る問題は、それが現存するキャッシュデータによってエイリアシングを導入し得ることである。例として、もしＴＡＧデータが修正されるならば、その場合に、修正されたデータが、異なるキャッシュラインの中に現存するＴＡＧデータフィールドに適合し、従って、キャッシュメモリが、メインメモリ１８の中の同じメモリアドレスが提供するデータの（多分異なるであろう）２つのコピーを含むように見えるであろうエイリアシング問題が起こるかもしれない。この状況を回避するために、キャッシュコントローラ２６は、それらの新しい制御データを備える最近修正されたキャッシュラインとエイリアス（alias）することになる（エイリアシング問題を起こすことになる）あらゆるキャッシュラインを識別する段階と、次に、新しいキャッシュラインとエイリアス（alias）することになるそのような現存するキャッシュラインをフラッシュする段階とを更に実行することができる。従って、レベル−２のキャッシュメモリ１４は、特定のキャッシュラインの１つのコピーだけを含むことになる。
【００２６】
図４は、プロセッサ４、６によって採用され得る保護された領域及び処理モードを概略的に例証する。これらの保護された領域及び処理モードは、イギリスのケンブリッジにある“ARM Limited”のプロセッサによって提供された“TrustZone”構造と類似している。この保護構造は、保護された領域Ｓ、及び保護されない領域ＮＳを含む。保護された領域Ｓと保護されない領域ＮＳとの間の変更は、監視モードを通じて行われなければならない。監視モード以外を通じた領域の間の変更は、許可されていない。各々の領域内で、特権モード及びいくつかのユーザモードを含む複数の異なる動作モードが提供される。
【００２７】
このタイプの保護構造は、暗号化キー等のような機密データに安全性を与えるのに有益である。このタイプの構造に従ったメモリの領域は、保護された領域内で動作している時にはアクセス可能であると共に、保護されない領域内で動作している時にはアクセスできないと指定され得る。従って、暗号化キーのようなデータは、保護された領域において動作する信用されたソフトウェアだけがそのようなデータにアクセスすることができるので、保護された状態に維持され得る。
【００２８】
図５は、本技術の一使用例を概略的に例証する図である。その処理は、暗号化されたファイルを読み込むメディアプレーヤによって始まる。このメディアプレーヤは、信用されたソフトウェアの一部分ではないと共に、保護されない領域において動作する。ファイルは、それが読み込まれる時、更に急速な処理のために、レベル−２のキャッシュメモリ１４の中にキャッシュされることになる。データが保護されない領域内のメディアプレーヤによって読み込まれたので、それは保護されないデータとして指定される。暗号化されたデータは、その暗号化によって保護されているので、保護されない領域においてもアクセス可能であり得る。処理は、監視モードを通じて保護された領域に切り替わるように進行する。１つ以上のプログラム命令は、その場合に、キャッシュコントローラ２６が、レベル−２キャッシュ１４内にキャッシュされたメディアファイルに関して、キャッシュデータに関連付けられたセキュリティフラグを変更するべきであると指定するプロセッサ４、６の内の１つによって実行される。従って、キャッシュされたデータは、保護されないデータとして区分されることから、保護されたデータとして区分されるように変更され得る。これは、他の場合には、使用されるセキュリティキーを表している情報のような、潜在的に復号化に関係する機密情報が、システムから漏れるかもしれないので、その復号化処理の間のデータを保護する。キャッシュデータがこのように変更されたその制御データを有していた場合、その場合に、保護された領域において動作するデジタル権利管理ソフトウェアは、キャッシュされたデータを復号化する。この復号化の後で、キャッシュされたデータに関連付けられたセキュリティフラグを、キャッシュされたデータが保護されないデータであると戻って示すように変更するために、更なるプログラム命令が、キャッシュコントローラ２６を始動するように実行される。この時点で、キャッシュされたデータは、復号化されることができたと共に、保護された処理は、機密を扱う暗号化キー等の目安になるあらゆる機密を扱う部分的に処理されたデータ、または関連するデータ値が、キャッシュされたデータから取り除かれたことを保証し得た。従って、キャッシュされたデータが保護されないデータに変更され戻されるとき、制御は、レベル−２のキャッシュメモリ１４の中から復号化されたデータを再生し得るコーデックに渡され得る。
【００２９】
この技術は、特別なアドレス領域（キャッシュの実装に応じて仮想的もしくは物理的）のためのキャッシュラインタグにおけるＮＳビットの状態を切り替えるための保護された処理タスクによって発行され得る新しいキャッシュ保守オペレーションのためのものである。
【００３０】
「オペレーション１：範囲によるＮＳのＳへの切り替え」
この場合、保護されたソフトウェアは、バッファを、保護されない状態から保護された状態に切り替える。オペレーションは、最初に、範囲を検索すると共に、もしそれらが変換されたならば、範囲内のＮＳラインと衝突するであろう現存するＳタグを付けられたキャッシュラインがないかどうかをチェックする。もし衝突があるならば、その場合に、現存する保護されたラインは無効にされる（もしそれが発生したならば、それはソフトウェアのバグを示すので、保護された世界のソフトウェアは、これが決して起こらないことを保証するべきである）と共に、その次に、範囲内のＮＳラインはＳに切り替えられる。
【００３１】
「オペレーション２：範囲によるＳのＮＳへの切り替え」
この場合、保護されたソフトウェアは、バッファを、保護された状態から保護されない状態に切り替える。オペレーションは、最初に、範囲を検索すると共に、もしそれらが変換されたならば、範囲内のＳラインと衝突するであろう現存するＮＳタグを付けられたキャッシュラインがないかどうかをチェックする。もし衝突があるならば、その場合に、現存する保護されないラインは無効にされる（もしそれが発生したならば、それはソフトウェアのバグを示すので、通常の世界のソフトウェアは、これが決して起こらないことを保証するべきである）と共に、その次に、範囲内のＳラインはＮＳに切り替えられる。
【００３２】
この技術の主な使用は、Ｄ−サイドのアクセスのためのものであるが、しかし、Ｉ−サイドの操作（オペレーション）が、同様に可能であろう。
【００３３】
本技術を使用しているとき、特にもしＬ２が複数のマスタを横断して共有されるならば、Ｌ１キャッシュとＬ２キャッシュの同期が取られるべきである。そのようなメカニズムは、この技術分野において良く理解されていると共に、ここでは更に論じられない。
【００３４】
１段階のキャッシュシステムに関する以下のシーケンスは、一使用例である。
○メモリバッファが、ＮＳ処理タスクにより満たされる。
○メモリの制御が、Ｓ処理タスクに渡される。
○この時点以降、ＮＳ処理は、バッファを使用するべきでないか、あるいは、それは、データの破損またはデータの中止の危険を冒す。
○Ｓ処理タスクは、オペレーション１（範囲によるＮＳのＳへの切り替え）を発行する。
○Ｓ処理タスクは、ＭＰＵを用いて、物理メモリを保護状態に切り替える。
○あなたが、ＮＳビットを、アドレスビットではなく、セキュリティ許可ビットのように扱うならば、ＮＳメモリへのＳアクセスが許されるべきであるので、前述の２個の丸の間でキャッシュラインの排除が更に機能するべきである。
○あらゆる通常の世界は、上記の２つの丸の間で、データを見失う危険性（データ破損の危険性）をメモリ領域に書き込むが、しかし、それは、制御パスメカニズム（control passing mechanism）において定義されたソフトウェア規則に違反している。いずれにしろ、データが通常の世界から来たので、ここにはセキュリティ侵害が存在しない。
○Ｓ処理タスクは、秘密の値をこの領域に格納することを含むデータを利用する。
○Ｓ処理タスクは、領域内のあらゆる秘密のデータを削除する。
○Ｓ処理タスクは、ＭＰＵを使用して、物理メモリをＮＳに設定する。
○Ｓ処理タスクは、オペレーション２（範囲によるＳのＮＳへの切り替え）を発行する。
○あなたが、ＮＳビットを、アドレスビットではなく、セキュリティ許可ビットのように扱うならば、ＮＳメモリへのＳアクセスが許されるべきであるので、前述の２個の丸の間でキャッシュラインの排除が更に機能するべきである。
○あらゆる通常の世界は、上記の２つの丸の間で、データを見失う危険性（データ破損の危険性）をメモリ領域に書き込むが、しかし、それは、制御パスメカニズム（control passing mechanism）において定義されたソフトウェア規則に違反している。いずれにしろ、データが通常の世界に戻されているので、ここにはセキュリティ侵害が存在しない。
○Ｓ処理タスクは、ＮＳ処理タスクに制御を渡す。
【００３５】
複数の段階のキャッシュシステムに関して、これらの新しいオペレーションの簡単で費用効率が高い使用は、“Ｌ２のみに統合する”ことであると共に、保護されたソフトウェアに、保護された処理状態を変更する前に、Ｌ１を削除して無効にさせることである。概してＬ２がＬ１よりはるかに大きいので、ここで大部分の利益が得られることになるように思われる。
【００３６】
Ｌ１とＬ２においてこれらの新しいオペレーションを使用する更に複雑な設計が達成され得るが、しかし、以下のシーケンスは、ソフトウェアを実行するものに対して問題点を示す。
○バッファの制御が、Ｓ処理タスクに渡される。
○Ｌ１の状態をＮＳからＳへ変更する。
○この時点におけるＬ１からのラインの排除は、Ｌ２における正しい（まだＮＳ）ラインに、もはやデータの破損に帰着する打撃を与えないであろう。
○排除されたデータは、Ｌ２における異なる‘Ｓ’キャッシュラインに打撃を与える可能性があるが、しかし、これは、上述の規則を共有するメモリ管理に違反していると共に、プログラマのミスであると考えられるべきである。
○バッファの制御が、Ｓ処理タスクに渡される。
○Ｌ２の状態をＮＳからＳへ変更する。
○この時点におけるＬ１（まだＮＳ）からのラインの排除は、Ｌ２における正しい（既にＳ）ラインに、もはやデータの破損に帰着する打撃を与えないであろう。
○排除されたデータは、Ｌ２における異なる‘ＮＳ’キャッシュラインに打撃を与える可能性があるが、しかし、これは、上述の規則を共有するメモリ管理に違反していると共に、プログラマのミスであると考えられるべきである。
【００３７】
このＬ１及びＬ２の使用を達成する方法は、Ｌ１とＬ２との間に（別のＭＰＵのような）ハードウェア支援の転送階層を実装するか、または、それらの同期がはずれ得ないことを保証するために、この動作を実行している間、Ｌ１キャッシュを一時的に無効にすることである。
【００３８】
１度メディアプレーヤが暗号化されたファイルをキャッシュメモリ１４の中に読み込んだならば、その場合に、データは、キャッシュメモリ１４の中に維持されると共に、フラッシュされて再読み込みされる必要なく、それについての保護状態を変更することの一部分として、その中で処理され得るということが、上記の内容から理解されることになる。これは、電力を節約すると共に、スピードを増加する。
【００３９】
本発明の実例となる実施例が添付図面を参照してここで詳細に説明されたが、本発明はそれらの正確な実施例に制限されないと共に、その中で、様々な変更及び修正が、添付された特許請求の範囲によって定義された本発明の範囲及び精神からはずれずに、当業者によってもたらされ得るということが理解されるべきである。
【図面の簡単な説明】
【００４０】
【図１】複数のプロセッサ、キャッシュメモリ階層、及びメインメモリへのアクセスを複数のプロセッサと共有する複数の装置を含むデータ処理装置を概略的に例証する図である。
【図２】制御データ及び有効データを含む、キャッシュメモリの中のキャッシュラインと関連付けられたデータを概略的に例証する図である。
【図３】キャッシュデータ値の範囲上で実行されるべき制御データの変更を指定するプログラム命令の実行の際にキャッシュコントローラによって実行される処理を概略的に例証するフローチャートである。
【図４】保護された領域と保護されない領域を含むシステムの動作モードを概略的に例証する図である。
【図５】キャッシュのフラッシング及びキャッシュの再読み込みを回避するために、保護された領域と保護されない領域との間で変更する時の、キャッシュデータに関連付けられたセキュリティフラグを変更するための本技術の一使用例を例証する図である。
【符号の説明】
【００４１】
２    データ処理システム
４、６    マルチプロセッサ
８、１０    レベル−１のキャッシュメモリ
１２    一貫性制御回路
１４    レベル−２のキャッシュメモリ
１６    メインシステムバス
１８    メインメモリ
２０    メモリ保護ユニット
２２    装置０
２４    装置１
２６    キャッシュコントローラ
Ｖ    有効性ビット
ＡＳＩＤ    スレッドを識別するデータ
ＴＡＧ    タグデータフィールド
Ｄ    ダーティビット
Ｓ（図２）    安全性識別ビット
ＮＳ    保護されない領域
Ｓ（図５）    保護された領域
【図１】
2008293494.tif 000003
【図２】
2008293494.tif 000004
【図３】
2008293494.tif 000005
【図４】
2008293494.tif 000006
【図５】
2008293494.tif 000007
【外国語明細書】
2008293494.tif 000008
2008293494.tif 000009
2008293494.tif 000010
2008293494.tif 000011
2008293494.tif 000012
2008293494.tif 000013
2008293494.tif 000014
2008293494.tif 000015
2008293494.tif 000016
2008293494.tif 000017
2008293494.tif 000018
2008293494.tif 000019
2008293494.tif 000020
2008293494.tif 000021
2008293494.tif 000022
2008293494.tif 000023
2008293494.tif 000024
2008293494.tif 000025
2008293494.tif 000026
2008293494.tif 000027
2008293494.tif 000028
2008293494.tif 000029
2008293494.tif 000030
2008293494.tif 000031
2008293494.tif 000032