(57)【特許請求の範囲】
【請求項１】
複数のキャッシュラインを備えるキャッシュと；
インデックスによるキャッシュ無効化命令中に含まれるインデックス値、符号器により出力された符号化された値、及びインクリメンタにより出力されたインクリメンタ出力値を受信するセレクタと；
前記セレクタの出力に応答して置換するための前記複数のキャッシュライン中の１つのキャッシュラインを識別するために、前記セレクタの出力に応答して識別値を設定するように構成された制御ロジックと；
を備え、
前記符号化された値は、前記キャッシュラインがアドレスによって無効化されるとき、メモリアドレスがキャッシュヒットした場合は前記メモリアドレスに関連付けられた値を備え、
前記セレクタは、
前記インデックスによるキャッシュ無効化命令が実行されるとき前記インデックス値を出力し、
アドレスによるキャッシュ無効化命令が実行されるとき前記符号化された値を出力し、
実行される命令が前記インデックスによるキャッシュ無効化命令及び前記アドレスによるキャッシュ無効化命令のいずれでもないとき前記インクリメンタ出力値を出力し、
前記アドレスによるキャッシュ無効化命令中に含まれるメモリアドレスがキャッシュミスしたとき前記識別値を同じままに維持する、
ように構成される、
システム。
【請求項２】
識別子において、置換のためのキャッシュラインを識別することと、なお、前記キャッシュラインはキャッシュの複数のキャッシュライン中に含まれる；
セレクタにおいて、インデックスによるキャッシュ無効化命令中に含まれるインデックス値、符号器により出力された符号化された値、及びインクリメンタにより出力されたインクリメンタ出力値を受信することと；
制御ロジックにより、前記セレクタの出力に応じて識別値を設定することと；
を備え、
前記符号化された値は、前記キャッシュラインがアドレスによって無効化されるとき、メモリアドレスがキャッシュヒットした場合は前記メモリアドレスに関連付けられた値を備え、
前記セレクタは、
前記インデックスによるキャッシュ無効化命令が実行されるとき前記インデックス値を出力し、
アドレスによるキャッシュ無効化命令が実行されるとき前記符号化された値を出力し、
実行される命令が前記インデックスによるキャッシュ無効化命令及び前記アドレスによるキャッシュ無効化命令のいずれでもないとき前記インクリメンタ出力値を出力し、
前記アドレスによるキャッシュ無効化命令中に含まれるメモリアドレスがキャッシュミスしたとき前記識別値を同じままに維持する、
ように構成される、
方法。
【請求項３】
前記インデックス値は、前記インデックスによるキャッシュ無効化命令の受信に応答して前記識別値として設定され、前記符号器によって出力される前記符号化された値は、キャッシュヒット及び前記アドレスによるキャッシュ無効化命令の受信に応答して前記識別値として設定される、請求項２の方法。
【請求項４】
前記識別子中に存在する値は、キャッシュミス及びアドレスによるキャッシュ無効化命令の受信に応答して前記識別子の前記識別値として維持される、請求項２の方法。
【請求項５】
キャッシュ命令を受信することをさらに備える、請求項２の方法。
【請求項６】
前記キャッシュ命令がキャッシュ保全命令かどうかを決定することと、なお、前記キャッシュ保全命令は、前記インデックスによるキャッシュ無効化命令及び前記アドレスによるキャッシュ無効化命令のうちの１つを含む；
前記キャッシュ命令が前記キャッシュ保全命令であるとの決定に応答して、前記キャッシュ保全命令が前記インデックスによるキャッシュ無効化命令であるか前記アドレスによるキャッシュ無効化命令であるかを決定することと；
をさらに備える、請求項５の方法。
【請求項７】
前記受信されたキャッシュ命令が前記キャッシュ保全命令ではないとの決定に応答して、前記キャッシュ命令に関連付けられたキャッシュミス及び前記キャッシュ命令に関連付けられたキャッシュヒットのうちの１つを識別することをさらに備える、請求項６の方法。
【請求項８】
前記キャッシュ命令に関連付けられたキャッシュミス及び前記キャッシュ命令に関連付けられたキャッシュヒットのうちの１つを識別することは、タグからのコンパレータ出力に基づく、請求項７の方法。
【請求項９】
前記キャッシュ命令に関連付けられた前記キャッシュヒットもしくは前記キャッシュミスの識別に応答して、前記インクリメンタ出力値は、
前記キャッシュ命令が前記キャッシュ保全命令ではなくオペランドを含み、かつ、前記タグコンパレータがキャッシュミス信号を出力する場合は、前記識別値とインクリメント値との合計に等しく設定され、
前記キャッシュ命令が前記キャッシュ保全命令ではなくオペランドを含み、かつ、前記タグコンパレータがキャッシュヒット信号を出力する場合は、前記識別値に等しく設定される、請求項７の方法。
【請求項１０】
前記符号化された値は４ビットを備える、請求項３の方法。
【請求項１１】
前記符号器は、タグコンパレータからのコンパレータ出力に基づいて前記符号化された値を出力し、前記タグコンパレータ出力は、第１のタグインデックスを含む第１の比較及び状態インデックスを含む第２の比較に基づいて決定される、請求項３の方法。
【請求項１２】
前記第１の比較はアドレスによるキャッシュ無効化命令のタグがタグインデックスの特定タグに一致するかどうかを決定し、前記タグインデックスの各タグは、前記複数のキャッシュラインの特定にキャッシュラインに対応する、請求項１１の方法。
【請求項１３】
前記特定のタグは、予め定義された前記タグインデックスのセットに関連付けられる、請求項１２の方法。
【請求項１４】
前記予め定義されたセットは前記アドレスによるキャッシュ無効化命令から得られる、請求項１３の方法。
【請求項１５】
前記第２の比較は前記タグインデックスの特定のタグが有効かどうかを決定し、前記状態インデックスの各状態は、前記複数のキャッシュラインのうちの特定のキャッシュラインに対応し、かつ前記特定のキャッシュラインの有効性を示す、請求項１１の方法。
【請求項１６】
前記コンパレータ出力は１６ビットを備える請求項１１の方法。
【請求項１７】
前記タグインデックス及び状態インデックスは、互いに異なるインデックスである、請求項１１の方法。
【請求項１８】
置換のためのキャッシュラインを示す識別子を識別するための手段と、なお、前記キャッシュラインはキャッシュの複数のキャッシュライン中に含まれる；
選択するための手段と、なお、前記選択するための手段は、インデックスによるキャッシュ無効化命令中に含まれるインデックス値、符号器により出力された符号化された値、及びインクリメンタにより出力されたインクリメンタ出力値を受信し、前記インデックス値、前記符号化された値、及び前記インクリメンタ出力値のうちの１つを出力する；
前記選択するための手段の出力に応答して識別値を設定するための手段と；
を備え、
前記符号化された値は、前記キャッシュラインがアドレスによって無効化されるとき、メモリアドレスがキャッシュヒットした場合は前記メモリアドレスに関連付けられた値を備え、
前記選択するための手段は、
前記インデックスによるキャッシュ無効化命令が実行されるとき前記インデックス値を出力し、
アドレスによるキャッシュ無効化命令が実行されるとき前記符号化された値を出力し、
実行される命令が前記インデックスによるキャッシュ無効化命令及び前記アドレスによるキャッシュ無効化命令のいずれでもないとき前記インクリメンタ出力値を出力し、
前記アドレスによるキャッシュ無効化命令中に含まれるメモリアドレスがキャッシュミスしたとき前記識別値を同じままに維持する、
ように構成される、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される発明のコンセプトの実施形態は、一般にデータ処理システムの分野に関する。例えば、本明細書に開示される発明のコンセプトの実施形態は、キャッシュライン置換のためのシステムおよび方法に関する。
【背景技術】
【０００２】
今日、多くの計算システムにおいて、メモリ（例えば、ランダムアクセスメモリ）は、計算命令でプロセッサによって使用されるべきデータを記憶する。例えば、メモリはプロセッサによって加算される2つのオペランドを記憶し、2つのオペランドの合計の結果を記憶する。従って、例において、プロセッサは2つのオペランドを読み取るためにメモリにアクセスし、結果を書き込むためにメモリに再度アクセスする。
【０００３】
メモリは、プロセッサよりも遅い動作速度を有する。従って、プロセッサは、メモリのアクセスの間、待つ。それゆえに、電力および時間は、プロセッサがメモリのアクセスの時間を無駄に待っている間、計算デバイスによって消費される。計算システムの全体の処理速度を高め、電力消費を減らすために、メモリよりも速い動作速度を有するキャッシュがプロセッサに結合される。
【０００４】
キャッシュは、複数のキャッシュラインを含み、各キャッシュラインはメモリ内のデータの一部を記憶する。
【０００５】
キャッシュはメモリよりも速いため、プロセッサによって使用されるデータはキャッシュの一部（例えば、キャッシュライン）にプレロード（preload）される。それゆえに、プロセッサが処理のためのデータを検索する時、プロセッサは、データを得るためにキャッシュにアクセスする。キャッシュがデータを含まない場合、データを得るために、メモリがアクセスされる。
【０００６】
さらなるデータがキャッシュにプレロードされると、以前に記憶されたデータは新たに計算または検索されたデータと置換される。結果として、キャッシュラインが占領および／または置換されるシーケンスを決定するように構成されたシステムが存在する。従来のプロセッサにおいて、キャッシュのキャッシュラインは順番に使用され、プロセッサは、一度キャッシュの最後のキャッシュラインに到達すると、最初のキャッシュラインに戻る。システムは、プロセッサによって使用される次のキャッシュラインを決定およびポイント(point)するためにプロセッサに存在する。１つのそのようなシステムは、先入れ先出し（FIFO）キャッシュ置換方式を実施し、そこでは、ポインタがキャッシュの次のキャッシュラインを連続的にポイントするために増やされる。
【０００７】
プログラムは、キャッシュラインを無効にするためにキャッシュ保全命令（cache maintenance instruction）を含むようプロセッサによって実行される。命令がキャッシュラインを無効にするため、プロセッサによって置換されるべき有効なキャッシュラインをシステムがポイントする一方で、無効なキャッシュラインがキャッシュに存在する。結果として、FIFO置換方式を実施するキャッシュにおいては、無効なキャッシュラインが存在するにもかかわらず、有効なキャッシュラインがロード動作によって置換される。このアプローチの１つの問題は、有効なキャッシュラインの減少が、より頻繁なメモリへのアクセスをプロセッサに要求し、それにより、電力消費の増加および計算速度の低下を引き起こすことである。
【発明の概要】
【０００８】
置換するキャッシュラインを決定するためのシステムが記述される。ある実施形態において、システムは、複数のキャッシュラインを備えるキャッシュを含む。システムは、置換のためのキャッシュラインを識別するように構成された識別子をさらに含む。システムは、また、インクリメンタ、キャッシュ保全命令、または同じ値のままから選択される識別子の値を決定するように構成された制御ロジックを含む。
【０００９】
本明細書に開示される1つ以上の実施形態の利点は、電力の節約および増大された処理速度を含む。
【００１０】
実例となる実施形態は、本明細書に開示される発明のコンセプトを制限または定義するためではなく、それらの理解を助けるための例を提供するために述べられる。本開示の別の態様、利点、および特徴は、下記項目：図面の簡単な説明、発明の詳細な説明、および請求項、を含む本明細書全体のレビューの後に明確になるであろう。
【００１１】
本明細書に開示される本発明のコンセプトのこれら、および、別の特徴、態様、および利点は、以下の発明の詳細な説明が添付図と関連して読まれる時に、より理解される。
【図面の簡単な説明】
【００１２】
【図１】図１は、置換するためのキャッシュラインを決定する従来のシステムを示す従来技術の概念図である。
【図２】図2は、インデックス無効命令が存在する、置換のためのキャッシュラインを決定する例示的なシステムを示す概略図である。
【図３】図3は、インデックス無効命令およびアドレス無効命令が存在する、置換のためのキャッシュラインを決定する例示的なシステムを示す概略図である。
【図４】図4は、図2の概略図で示されたシステムの動作の例示的な方法を示すフローチャートである。
【図５】図5は、図3の概略図に示されたシステムの動作の例示的な方法を示すフローチャートである。
【図６】図6は、図2−3に示されるようなキャッシュ置換システム含むデジタル信号プロセッサを組み込む例示的なポータブル通信デバイスを示す一般図である。
【図７】図7は、図2−3に示されるようなキャッシュ置換システムを含むデジタル信号プロセッサを組み込む例示的な携帯電話を示す一般図である。
【図８】図8は、図2−3に示されるようなキャッシュ置換システムを含むデジタル信号プロセッサを組み込む例示的な無線インターネットプロトコル電話を示す一般図である。
【図９】図９は、図2−3に示されるようなキャッシュ置換システムを含むデジタル信号プロセッサを組み込む例示的なポータブルデジタルアシスタントを示す一般図である。
【図１０】図10は、図2−3に示されるようなキャッシュ置換システムを含むデジタル信号プロセッサを組み込む例示的なオーディオファイルプレーヤを示す概略図である。
【発明の詳細な説明】
【００１３】
記述を通して、説明の目的のために、数々の特定な詳細が、本明細書に開示される発明のコンセプトの全体の理解を提供するために示される。しかし、本明細書に開示される発明のコンセプトが、これらの特定な詳細の幾つかを除いて実施されうることは当業者に明確であろう。別の例において、周知の構造およびデバイスは、本明細書に開示される発明のコンセプトの基礎概念を不明確にしないために、ブロック図の形態で示される。
【００１４】
本明細書に開示される発明のコンセプトの実施形態は、キャッシュライン置換のためのシステムおよび方法に関する。図1の概略図で示される従来のシステム100が、キャッシュに存在する無効なキャッシュラインの数を減らすために変更される。結果として、キャッシュミスの存在をより少なくする。それゆえに、プロセッサは、動作中に、より少ない頻度でメモリにアクセスする。
【００１５】
従来のキャッシュ置換システム
図1は、置換のためのキャッシュラインを決定する従来のシステム100を示す概略図である。システム100において、プロセッサは、キャッシュラインに記憶されたデータを置換しながらキャッシュを通して連続的に処理するように構成される。
【００１６】
図１の概略図で示されるように、システム100はタグ記憶装置110および状態記憶装置112を含む。タグ記憶装置110および状態記憶装置112は、同じ数のセット（set）（例えば、行）とウェイ（way）（例えば、列）とを含む配列（array）である。タグ配列（tag array）110および状態配列（state array）112の各セルは、プロセッサのキャッシュのキャッシュラインに対応する。システム100において、各セットは、16個のデータキャッシュラインに対応する16個のウェイ（0−15）を含み、それらは、別々にプロセッサから読み取られ、プロセッサに書き込まれる。
【００１７】
タグ配列110の各セルはタグを記録する。タグは、現在キャッシュラインに対応しているメモリ位置のアドレスである。例えば、キャッシュラインはメモリアドレスAを有するメモリ位置からデータを記憶する。それゆえに、対応タグのセルはメモリアドレスAを記憶する。状態配列112の各セルは対応キャッシュラインの状態（例えば、有効または無効）を記憶する。上の例を継続して、キャッシュライン内の記憶された値が有効な場合、次に、状態セルは、キャッシュラインが有効であることを示す情報を記憶する。プロセッサによって実行されるプログラムはキャッシュ保全命令を含み、それは、無効化されるキャッシュラインを直接ポイントするか、または、タグに対応するメモリの値を記憶するキャッシュラインが無効化されるためのタグをポイントすることによって、キャッシュラインを無効にする命令を含む。キャッシュラインを無効にするために、システム100は状態配列112の対応セルに無効状態を記憶する。
【００１８】
システム100は、複数の識別子114（例えば、ポインタ）をさらに含む。識別子114の数は、タグ配列110および状態配列112のセットの数と一致する。さらに、システム100において、セットに対するウェイの数が16であるため、各識別子は4ビットである。従って、各FIFOは、それぞれのセットの16個のウェイのいずれかをポイントするように構成され、それゆえに、セットと関連付けられた16個のキャッシュラインをポイントすることができる。
【００１９】
システム100において、命令102がプロセッサによって実行される時、命令102はシステム100によって受信される。命令102は、セット104、バイト106、およびタグ108を含む。バイト106は、命令（例えば、ロード、追加など）を実行するプロセッサによって実行される動作のタイプである。命令が、ロード命令または記憶命令である場合、セット104は、16個のキャッシュラインの内の１つの値がロードまたは記憶されるセットである。タブ108は、命令が含むべき値を記憶するメモリのメモリアドレスである。例において、命令がロードオペランドAである場合、命令は、オペランドAをキャッシュのどこに記憶するかを示すセット104、命令がロード命令であることを示すバイト106、オペランドAがメモリ内でどこに記憶されたかを示すタグ108を含む。
【００２０】
システム100は、インクリメンタ（incrementer）120をさらに含む。システム100において、インクリメンタは識別子114の各々に対して存在する。ロードされるべきキャッシュのセットの次のウェイは、セットに対する対応識別子114によってポイントされる。次に、値がキャッシュのセット104のウェイにロードされると、セット104の識別子114に対するインクリメンタ120は、キャッシュのセットの次のウェイをポイントするために識別子を増やす。セットの最後のウェイまで増やすと、インクリメンタは、セットの最初のウェイをポイントするために値を繰り返す（例えば、15から0に）。従って、キャッシュラインは連続的にロードされる。
【００２１】
命令102がロード命令ではない場合、次に、システム100は、命令102のタグ108がタグ配列110に記憶されるか否かを決定する。タグ108がタグ配列110に記憶される場合、次に、タグ108に対応するメモリ位置のメモリ値が記憶される。記憶位置は、タグ108が記憶されるタグ配列110のセルに対するそれぞれのキャッシュラインである。
【００２２】
システム100は、タグ108に対応するメモリ位置に記憶されたメモリ値がキャッシュのキャッシュラインに記憶されるか否かを決定するために、タグコンパレータ（tag comparator）116を含む。タグコンパレータは、タグ配列および状態配列の各ウェイ（例えば、列）に対して存在する。それゆえに、システム100について、16個のタグコンパレータが116に存在する。その対応ウェイについて、タグコンパレータは、タグ108と、セット104のウェイに対してタグ配列110に記憶されたタグとを比較する。タグコンパレータは、タグ配列110に記憶されたタグが、タグ配列110のセルに対応する状態配列112のセルの状態にアクセスすることによって、有効であるか否かをさらに決定する。16個のコンパレータのどれもが有効状態のタグの間に一致を見つけられない場合、タグコンパレータ116はメモリ値がキャッシュに記憶されていないことを示すミス信号118を出力する。そして、値はメモリからキャッシュにロードされる。16個のコンパレータの１つが有効状態のタグの間に一致を見つけると、タグコンパレータ116はメモリ値がキャッシュに記憶されたことを示すヒット信号118を出力する。そして、プロセッサは、メモリにアクセスする代わりに、キャッシュにアクセスする。
【００２３】
命令102がロード命令である場合、システム100は、どのキャッシュラインがロードされるべきかを決定するために、セット104に対する識別子114にアクセスする。次に、識別子114はロードされるべき次のキャッシュラインをポイントするために増やされる。
【００２４】
命令がキャッシュのキャッシュラインを無効化するために存在することから、対応識別子がキャッシュの異なるキャッシュラインを示す間、無効なキャッシュラインが存在する。結果として、従来のシステム100を含むプロセッサにおいて、無効なキャッシュラインが存在するにもかかわらず、有効なキャッシュラインがロード動作によって置換される。
【００２５】
キャッシュ保全命令
キャッシュ保全命令は、インデックスによる無効化命令（invalidate by index instruction）、およびアドレスによる無効化命令（invalidate by address instruction）を含む。インデックスによる無効化命令は、無効化されるキャッシュのインデックスを含む。従って、命令は、無効化されるべきキャッシュラインを明確にポイントする。それゆえに、プロセッサがインデックスによる無効化命令を実行すると、インデックスされたキャッシュラインに対応する状態配列のセルは無効状態を記憶する。
【００２６】
アドレスによる無効化命令は、メモリのアドレス（例えば、タグ）を含む。従って、プロセッサがアドレスによる無効化命令を実行すると、プロセッサは、メモリアドレスに関連付けられたキャッシュラインを無効化する。それにより、プロセッサは、タグ配列内のメモリアドレスを検索し、一致するタグを記憶するタグセルに関連付けられたキャッシュラインを無効化する。
【００２７】
例示的なシステム200（図2）および例示的なシステム300（図3）内の、無効化命令を介して無効化されるキャッシュラインについて、システム200および300は、識別子が無効化されたキャッシュラインをポイントするなど、無効化されるキャッシュラインに関するセットに対応する識別子をキャストする。結果として、無効化されるキャッシュラインは、同一のセットの有効なキャッシュラインが置換される前に置換される。
【００２８】
キャッシュ置換システムの実例となる実施形態
図2−3の概略図は、キャッシュラインを置換するためのシステムの実例となる実施形態を示す。図2の概略図は置換のためのキャッシュのキャッシュラインを決定する例示的なシステム200を示し、インデックスによる無効化命令がプロセッサの動作中に存在する。図3の概略図は、置換のためのキャッシュのキャッシュラインを決定する例示的なシステム300を示し、インデックスによる無効化命令およびアドレスによる無効化命令がプロセッサの動作中に存在する。
【００２９】
図2を参照すると、システム200は、図1のシステム100と比べて、セレクタ202を含む。非保全命令の処理の間、セレクタ202は、増分された識別値（すなわち、インクリメンタ120の出力）を選択する。それにより、システム200は、図1のシステム100に類似して動作する。例えば、ロード動作の間、システム200は、識別子114を選択するための命令102のセット104、状態配列112のセット、およびタグ配列110のセットを使用する。プロセッサは、次に、セット104および識別子114によって識別されたキャッシュラインに、メモリのタグ108に記憶される値をロードする。バイト106が命令はロード命令であることを示すため、バイト106を受信するインクリメンタ120は、セットの次のキャッシュラインをポイントするために、選択された識別子114を増やす。次に、セレクタ202は、命令がキャッシュ保全命令／インデックスによる無効化命令ではないため、インクリメンタの出力（増分された識別値）を選択する。識別子114は、次に、増分された識別値を記憶する。
【００３０】
別の例において、記憶動作の間、システム200は、識別子114を選択するための命令102のセット104、状態配列112のセット、およびタグ配列110のセットを使用する。プロセッサは、セット104および既定のウェイに対応するキャッシュラインの値を、記憶のためにタグ108によって識別されたメモリのメモリ位置に送信する。命令はロード命令でなく、また、プロセッサによって実行されるためにメモリからの値を要求もしないため、インクリメンタ120は、識別値を増やさない。命令がインデックスによる無効化命令でないため、セレクタ202はインクリメンタ120の出力を選択する。従って、識別子の識別値は記憶命令の実行の間、同じままである。
【００３１】
加算または乗算などの幾つかの命令は、命令の実行のために使用されるオペランドを含む。オペランドは、一般的にメモリに記憶される。よって、オペランドはキャッシュに記憶されうる。そして、システム200は、オペランドがキャッシュに記憶されるか否かを決定する。図1のシステム100に類似して、オペランドがキャッシュに記憶されると、ヒット信号118がタグコンパレータ116から出力される。オペランドがキャッシュに記憶されないと、ミス信号118がタグコンパレータ116から出力される。ヒット信号またはミス信号118は、インクリメンタ120が識別値を増やすべきか否かの制御を助けるために、インクリメンタ120にルートされる。
【００３２】
信号118がミス信号の場合、オペランドはキャッシュに記憶されず、メモリからキャッシュにロードされる必要がある。そのため、セット104に対する識別子114は、置換されるべき次のキャッシュラインを識別する。オペランドは識別されたキャッシュラインにロードされる。ミス信号118を受信すると、インクリメンタ120は、置換されたキャッシュラインの次のキャッシュラインをポイントするために、識別値を増やす。信号118がヒット信号の場合、オペランドはメモリからキャッシュにロードされる必要はない。従って、ヒット信号118を受信すると、インクリメンタ120は識別値を変更しない。
【００３３】
システム200の動作は、キャッシュ保全命令（例えば、キャッシュ無効化命令）の実行中、システム100（図1）の動作からそれる。キャッシュ保全命令が実行される時、セレクタ202は命令からインデックス入力を選択する。プロセッサは、また、インデックスされたキャッシュラインを無効化する。セレクタ202が命令からインデックスを選択するため、インデックスされたキャッシュラインに対する識別子114は、無効化されたキャッシュラインをポイントするためにインデックスに等しい。結果として、キャッシュラインが無効化されると、システム200は、置換されるべきセットの次のキャッシュラインとして、無効化されたキャッシュラインを設定する。
【００３４】
図3を参照すると、無効化は、インデックスまたはアドレスによって実行される。従って、図1のシステム100と比べて、システム300は、符号器302およびセレクタ304を含む。図2のシステム200と同様に、システム300は、非保全命令の実行中、図1のシステム100に類似して動作する。保全命令が実行される時、保全命令は、インデックスによる無効化命令またはアドレスによる無効化命令である。キャッシュ保全命令がインデックスによる無効化命令の場合、セレクタ304は命令102からインデックスを選択し、システム300は図2のシステム200に類似して動作する。
【００３５】
キャッシュ保全命令がアドレスによる無効化命令の場合、セレクタ304は符号器302の出力を選択する。前に記述されたように、アドレスによる無効化命令は、プロセッサがタグ108のメモリ位置に関連付けられたキャッシュラインを見つけ、キャッシュラインを無効化するためのメモリアドレスを含む。従って、符号器302は、識別子がプロセッサによる置換のための無効化されたキャッシュラインをポイントするように、メモリのタグ108のメモリ位置に関連付けられたセット104内のキャッシュラインの識別値を出力するよう構成される。
【００３６】
タグコンパレータは、タグ配列のセットの各ウェイに対して存在する。従って、実例となる実施形態において、16個のタグコンパレータが存在する。前に述べられたように、タグコンパレータが有効状態のタグの一致を有する場合、タグコンパレータはヒット信号を出力する。ある実施形態において、コンパレータがタグと一致し、状態配列112内の対応セルから有効状態を受信する場合、次にコンパレータは1を出力する。セット内の１つのキャッシュラインのみがメモリアドレス（タグ108）と関連付けられる。従って、セット104に対する16個のタグコンパレータの出力は以下のようになる：（i）ミスを表す16個の0（すなわち、各タグコンパレータから0を1個ずつ）、または（ii）ヒットを表す15個の0および1個の1（すなわち、タグと一致し、有効状態を受信するタグコンパレータから1を1個、および残りの15個の各タグコンパレータのから0を1個ずつ）。従って、16ビットが、タグコンパレータ116から符号器302に送信される。
【００３７】
ある実施形態において、符号器302は、受信された16ビット値を4ビット識別値に符号化するように構成される。例えば、セット104のウェイ10（ウェイ0−15から）に対するタグコンパレータが1の場合、次に、符号器は「1010」を出力する。別の例において、ウェイ3が1の場合、次に、符号器302は「0011」を出力する。従って、符号器302によって出力される識別値は、無効化されたキャッシュラインが置換される次のキャッシュラインとしてポイントされるようにセレクタ304によって選択され、識別子114によって記憶される。
【００３８】
キャッシュ置換システムの動作の例示的な方法
図4−5は、キャッシュ置換システム200、300の動作の例示的な方法を示すフローチャートである。図4は、図2の概略図で示されるシステム200の動作の例示的な方法400を示すフローチャートである。図5は、図3の概略図で示されるシステム300の動作の例示的な方法500を示すフローチャートである。
【００３９】
図4を参照すると、システム200は、実行される命令がキャッシュ保全命令であるか否かを決定する（402）。システム200のためのキャッシュ保全命令は、インデックスによる無効化命令である。命令がキャッシュ保全命令でない場合、次にシステム200は、インクリメンタ120の出力として、セット104に対する識別子をキャストする（404）。ある実施形態において、セレクタ202は、識別子114に値をフィードバックするために、インクリメンタ120の出力を選択する。インクリメンタ120がタグコンパレータ116からヒット信号118を受信する場合、インクリメンタ120は識別値を増やさない。インクリメンタ120がミス信号118を受信する場合、インクリメンタ120は識別値を増やす。それゆえに、セット104に対する識別子は、同じままであるか、または増やされるかのいずれか一方である。
【００４０】
命令がキャッシュ保全命令である場合、システム200は、命令102から無効化インデックスを検索する。インデックスに位置するキャッシュラインは、次に、無効化される（408）。410に進み、システム200は命令からのインデックスとしてセット104に対する識別子をキャストする。ある実施形態において、セレクタ202は、識別子114にフィードバックするために、命令からインデックスを選択する。それゆえに、識別子は、置換されるべき次のキャッシュラインとして、無効化されたキャッシュラインをポイントする。
【００４１】
図3のシステム300に関連する図5を参照すると、システム300は、実行される命令がキャッシュ保全命令か否かを決定する（502および510）。システム300のためのキャッシュ保全命令は、インデックスによる無効化命令、またはアドレスによる無効化命令である。それゆえに、開始して（502）、システム300は命令がインデックスによる無効化命令であるか否かを決定する。命令がインデックスによる無効化命令である場合、次にシステム300は命令102から無効化インデックスを検索する（504）。インデックスに位置するキャッシュラインは、次に無効化される（506）。508に進み、システム200は、命令からのインデックスとして、セット104に対する識別子をキャストする。ある実施形態において、セレクタ304は、識別子114にフィードバックするために命令からインデックスを選択する。それゆえに、識別子は、置換されるべき次のキャッシュラインとして、無効化されたキャッシュラインをポイントする。
【００４２】
命令がインデックスによる無効化命令でない場合、次に、システム300は、命令がアドレスによるキャッシュ無効化命令であるか否かを決定する（510）。命令がアドレスによる無効化命令である場合、次に、システム300は命令102から無効化メモリアドレス（例えば、タグ108）を検索する（512）。514に進み、システム300は、セット104に対する任意のキャッシュラインが命令102から検索されたメモリアドレス（例えば、タグ108）のメモリ内の値を記憶するか否かを決定する。
【００４３】
キャッシュラインがアドレスのメモリから値を記憶するとシステム300が決定する場合、次に、システム300の符号器302は、キャッシュインデックス（例えば、無効化されたキャッシュラインをポイントする4ビット識別値）を作成するために、タグコンパレータ116からの出力を符号化する（516）。518に進み、システム300は、セット104に対する識別子が無効化されるキャッシュラインをポイントするように、セット104に対する識別子を符号化された値にキャストする。キャッシュラインは無効化される（520）。
【００４４】
無効化アドレスのメモリ位置に記憶された値がキャッシュに記憶されないとシステム300が決定する場合（514）、セット104に対する識別子114は、キャッシュラインのどれもが無効化されないため、同じままである（522）。510に戻って参照すると、命令がアドレスによる無効化命令ではない場合、命令はキャッシュ保全命令ではない。従って、システム300は、インクリメンタ120の出力として、セット104に対する識別子をキャストする（524）。ある実施形態において、セレクタ304は、識別子114に値をフィードバックするためにインクリメンタ120の出力を選択する。インクリメンタ120がタグコンパレータ116からヒット信号118を受信する場合、インクリメンタ120は識別値を増やさない。インクリメンタ120がミス信号118を受信する場合、インクリメンタ120は識別値を増やす。それゆえに、セット104に対する識別子は、同じままであるか、または増やされる。
【００４５】
キャッシュ置換システムを含む例示的なデバイス
マルチモードレジスタファイル（multimode register file）は、デジタル信号プロセッサなどのレジスタファイルを含む任意のプロセッサに含まれる。図6−10の概略図は、図2および3の概略図に示されるように、無効化されたキャッシュラインを置換するために、キャッシュ置換システムを組み込む例示的なデバイスを示す。
【００４６】
図6は、ポータブル通信デバイス600の例示的な実施形態を示す図である。図6の概略図で示されるように、ポータブル通信デバイスはデジタル信号プロセッサ（DSP）604を含むオンチップシステム602を含む。図6の概略図は、また、デジタル信号プロセッサ604およびディスプレイ608に結合されるディスプレイコントローラ606を示す。さらに、入力デバイス610はDSP 604に結合される。示されるように、メモリ612はDSP 604に結合される。加えて、符号器／復号器（CODEC）614はDSP 604 に結合される。スピーカ616およびマイクロフォン618はCODEC 614に結合される。
【００４７】
図6の概略図は、デジタル信号プロセッサ604および無線アンテナ622に結合された無線コントローラ620をさらに示す。特定の実施形態において、電源624は、オンチップシステム602に結合される。さらに、特定の実施形態において、図6で示されるように、ディスプレイ626、入力デバイス630、スピーカ616、マイクロフォン618、無線アンテナ622、電源624は、オンチップシステム602の外付けである。しかし、各々がオンチップシステム602のコンポーネントに結合される。
【００４８】
特定の実施形態において、DSP 604 は、DSP 604のキャッシュのどのキャッシュラインをメモリ612からの値と置換するかを決定するために、キャッシュ置換システム680を含む。
【００４９】
図7は、携帯電話700の例示的な実施形態を示す図である。示されるように、携帯電話700は、互いに結合されるデジタルベースバンドプロセッサ704およびアナログベースバンドプロセッサ706を含むオンチップシステム702を含む。特定の実施形態において、デジタルベースバンドプロセッサ704はデジタル信号プロセッサである。図7の概略図に示されるように、ディスプレイコントローラ708およびタッチスクリーンコントローラ710は、デジタルベースバンドプロセッサ704に結合される。次に、オンチップシステム702の外付けのタッチスクリーンディスプレイ712は、ディスプレイコントローラ708およびタッチスクリーンコントローラ710に結合される。
【００５０】
図7の概略図は、ビデオ符号器714（例えば、パル方式（PAL：phase alternating line）符号器、セカム方式（SECAM ：sequential couleur a memoire）符号器、または、NTSC方式（NTSC：national television system committee）符号器）をさらに示し、それらはデジタルベースバンドプロセッサ704に結合される。さらに、ビデオ増幅器716はビデオ符号器714およびタッチスクリーンディスプレイ712に結合される。また、ビデオポート718はビデオ増幅器716に結合される。図7の概略図に描写されるように、USB（universal serial bus）コントローラ720はデジタルベースバンドプロセッサ704に結合される。また、USBポート722はUSBコントローラ720に結合される。メモリ724および加入者同定モジュール（SIM）カード726も、また、デジタルベースバンドプロセッサ704に結合される。さらに、図7の概略図に示されるように、デジタルカメラ728はデジタルベースバンドプロセッサ704に結合される。例示的な実施形態において、デジタルカメラ728は電荷結合素子（CCD：charge-coupled device）カメラまたは相補形金属酸化膜半導体（CMOS：complementary metal-oxide semiconductor）カメラである。
【００５１】
図7の概略図でさらに示されるように、ステレオオーディオCODEC 730はアナログベースバンドプロセッサ706に結合される。さらに、オーディオ増幅器732はステレオオーディオCODEC 730に結合される。例示的な実施形態において、第1のステレオスピーカ734および第2のステレオスピーカ736はオーディオ増幅器732に結合される。マイクロフォン増幅器738は、また、ステレオオーディオCODEC 730に結合される。加えて、マイクロフォン740はマイクロフォン増幅器738に結合される。特定の実施形態において、周波数変調（FM）ラジオチューナー742はステレオオーディオCODEC 730に結合される。また、FMアンテナ744はFMラジオチューナー742に結合される。さらに、ステレオヘッドフォン746はステレオオーディオCODEC 730に結合される。
【００５２】
図7の概略図は、無線周波数（RF）トランシーバ748がアナログベースバンドプロセッサ706に結合されることをさらに示す。RFスイッチ750はRFトランシーバ748およびRFアンテナ752に結合される。キーパッド754はアナログベースバンドプロセッサ706に結合される。また、マイクロフォン付のモノヘッドセット756はアナログベースバンドプロセッサ706に結合される。さらに、バイブレータデバイス758はアナログベースバンドプロセッサ706に結合される。図7の概略図は、また、電源760がオンチップシステム702に結合されることを示す。特定の実施形態において、電源760は携帯電話700の様々なコンポーネントに電力を提供する直流（DC）電源である。さらに、特定の実施形態において、電源は再充電可能なDCバッテリ、または、AC電源に結合された交流（AC）／DC変換変圧器から引き出されたDC電源である。
【００５３】
図7の概略図に描写されるように、タッチスクリーンディスプレイ712、ビデオポート718、USBポート722、カメラ728、第1のステレオスピーカ734、第2のステレオスピーカ736、マイクロフォン740、FMアンテナ744、ステレオヘッドフォン746、RFスイッチ750、RFアンテナ752、キーパッド754、モノヘッドセット756、バイブレータ758、および電源760は、オンチップシステム702の外付けである。特定の実施形態において、デジタルベースバンドプロセッサ704は、プロセッサ704のキャッシュのどのキャッシュラインをメモリ724からの値と置換するかを決定するためのキャッシュ置換システム780を含む。
【００５４】
図8は、無線インターネットプロトコル（IP）電話800の例示的な実施形態を示す図である。示されるように、無線IP電話800はデジタル信号プロセッサ（DSP）804を含むオンチップシステム802を含む。ディスプレイコントローラ806は、DSP 804に結合され、ディスプレイ808はディスプレイコントローラ806に結合される。例示的な実施形態において、ディスプレイ808は液晶ディスプレイ（LCD）である。図8は、キーパッド810がDSP 804に結合されることをさらに示す。
【００５５】
フラッシュメモリ812はDSP 804に結合される。同期ダイナミックランダムアクセスメモリ（SDRAM：synchronous dynamic random access memory）814、スタティックランダムアクセスメモリ（SRAM：static random access memory）816、および電気的消去可能PROM（EEPROM）818も、また、DSP 804に結合される。図8の概略図は、また、発光ダイオード（LED）820がDSP 804に結合されることを示す。加えて、特定の実施形態において、音声CODEC 822はDSP 804に結合される。増幅器824は音声CODEC 822に結合され、モノスピーカ826は増幅器824に結合される。図8の概略図は、さらに、音声CODEC 822に結合されたモノヘッドセット828を示す。特定の実施形態において、モノヘッドセット828はマイクロフォンを含む。
【００５６】
無線ローカルエリアネットワーク（WLAN）ベースバンドプロセッサ830はDSP 804に結合される。RFトランシーバ832はWLANベースバンドプロセッサ830に結合され、RFアンテナ834はRFトランシーバ832に結合される。特定の実施形態において、ブルートゥースコントローラ836は、また、DSP 804に結合され、ブルートゥースアンテナ838はコントローラ836に結合される。図8の概略図は、また、USBポート840もDSP 804に結合されることを示す。さらに、電源842はオンチップシステム802に結合され、無線IP電話800の様々なコンポーネントに電力を提供する。
【００５７】
図8の概略図で示されるように、ディスプレイ808、キーパッド810、LED 820、スピーカ826、モノヘッドセット828、RFアンテナ834、ブルートゥースアンテナ838、USBポート840、および電源842はオンチップシステム802の外付けであり、オンチップシステム802の1つ以上のコンポーネントに結合される。特定の実施形態において、デジタル信号プロセッサ804は、プロセッサ804のキャッシュのどのキャッシュラインがフラッシュ812、SDRAM 814、SRAM 816、および／またはEEPROM 818からの値と置換するかを決定するためのキャッシュ置換システム880を含む。
【００５８】
図9はポータブルデジタルアシスタント（PDA）900の例示的な実施形態を示す図である。示されるように、PDA 900はデジタル信号プロセッサ（DSP）904を含むオンチップシステム902を含む。タッチスクリーンコントローラ906およびディスプレイコントローラ908はDSP 904に結合される。さらに、タッチスクリーンディスプレイ910はタッチスクリーンコントローラ906およびディスプレイコントローラ908に結合される。図9の概略図は、また、キーパッド912がDSP 904に結合されることを示す。
【００５９】
特定の実施形態において、ステレオオーディオCODEC 926はDSP 904に結合される。第1のステレオ増幅器928はステレオオーディオCODEC 926に結合され、第1のステレオスピーカ930は第1のステレオ増幅器928に結合される。加えて、マイクロフォン増幅器932はステレオオーディオCODEC 926 に結合され、マイクロフォン934はマイクロフォン増幅器932に結合される。図9の図は、さらに、第2のステレオ増幅器936がステレオオーディオCODEC 926に結合され、第2のステレオスピーカ938が第2のステレオ増幅器936に結合されることを示す。特定の実施形態において、ステレオヘッドフォン940は、また、ステレオオーディオCODEC 926に結合される。
【００６０】
図9の概略図は、また、802.11コントローラ924がDSP 904に結合され、802.11アンテナ944が802.11コントローラ942に結合されることを示す。さらに、ブルートゥースコントローラ946はDSP 904に結合され、ブルートゥースアンテナ948はブルートゥースコントローラ946に結合される。USBコントローラ950はDSP 904に結合され、USBポート952 はUSBコントローラ950に結合される。そのうえ、スマートカード954、例えばマルチメディアカード（MMC：multimedia card）またはSDカード（SD：secure digital card）はDSP 904に結合される。さらに、電源956はオンチップシステム902に結合され、PDA 900の様々なコンポーネントに電力を提供する。
【００６１】
図9の概略図で示されるように、ディスプレイ910、キーパッド912、IrDAポート922、デジタルカメラ924、第1のステレオスピーカ930、マイクロフォン934、第2のステレオスピーカ938、ステレオヘッドフォン940、802.11アンテナ944、ブルートゥースアンテナ948、USBポート952、および電源956はオンチップシステム902の外付けであり、オンチップシステム上の1つ以上のコンポーネントに結合される。特定の実施形態において、デジタル信号プロセッサ904は、プロセッサ904のキャッシュのどのキャッシュラインがフラッシュ914、ROM 916、DRAM 918、および／またはEEPROM 920からの値と置換するかを決定するためのキャッシュ置換システム980を含む。
【００６２】
図10は、オーディオファイルプレーヤ（例えばMP3プレーヤ）1000の例示的な実施形態を示す図である。示されるように、オーディオファイルプレーヤ1000は、デジタル信号プロセッサ（DSP）1004を含むオンチップシステム1002を含む。ディスプレイコントローラ1006はDSP 1004に結合され、ディスプレイ1008はディスプレイコントローラ1006に結合される。例示的な実施形態において、ディスプレイ1008は液晶ディスプレイ（LCD）である。キーパッド1010はDSP 1004に結合される。
【００６３】
図10の概略図にさらに描写されるように、フラッシュメモリ1012および読み取り専用メモリ（ROM）1014はDSP 1004に結合される。さらに、特定の実施形態において、オーディオCODEC 1016はDSP 1004に結合される。増幅器1018はオーディオCODEC 1016に結合され、モノスピーカ1020は増幅器1018に結合される。図10の概略図は、マイクロフォン入力1022およびステレオ入力1024が、また、オーディオCODEC 1016に結合されることをさらに示す。特定の実施形態において、ステレオヘッドフォン1026は、また、オーディオCODEC 1016に結合される。
【００６４】
USBポート1028およびスマートカード1030はDSP 1004に結合される。加えて、電源1032はオンチップシステム1002に結合され、オーディオファイルプレーヤ1000の様々なコンポーネントに電力を提供する。
【００６５】
図10の概略図で示されるように、ディスプレイ1008、キーパッド1010、モノスピーカ1020、マイクロフォン入力1022、ステレオ入力1024、ステレオヘッドフォン1026、USBポート1028および電源1032はオンチップシステム1002の外付けであり、オンチップシステム1002上の1つ以上のコンポーネントに結合される。特定の実施形態において、デジタル信号プロセッサ1004は、プロセッサ1004のキャッシュのどのキャッシュラインがフラッシュ1012、および／またはROM 1014からの値と置換するかを決定するためのキャッシュ置換システム1080を含む。
【００６６】
本明細書に開示された発明のコンセプトの実施形態の以上の記載は、例示および説明の目的のためだけに示されており、網羅的であること、または、ここに開示された発明のコンセプトを開示された正確な形態に限定することを意図するものではない。これらの実施形態に対する様々な変更および適応は、本明細書で開示された本発明の精神または範囲を逸脱することなく当業者には容易に明らかである。
以下に、本願の当初の特許請求の範囲に記載された発明を付記する。
［１］
複数のキャッシュラインを備えるキャッシュと；
置換用のキャッシュラインを識別するように構成された識別子と；
インクリメンタ、キャッシュ保全命令、または同じ値のままから選択された前記識別子の値を決定するように構成された制御ロジックと；
を備えるシステム。
［２］
前記キャッシュ保全命令は、インデックスによるキャッシュ無効化命令である、［１］のシステム。
［３］
前記キャッシュ保全命令は、前記制御ロジックによって選択される前記値を含む、［２］のシステム。
［４］
前記キャッシュ保全命令は、アドレスによるキャッシュ無効化命令である、［１］のシステム。
［５］
前記制御ロジックは、前記キャッシュに記憶される情報のタグインデックスを備える、［４］のシステム。
［６］
前記制御ロジックは、前記保全命令のタグが、既定のセットの前記タグインデックスに記憶されたタグのいずれかと一致するか否かを決定するように構成されたコンパレータをさらに備える、［５］のシステム。
［７］
前記制御ロジックは、前記タグインデックス内の前記複数のタグの各々の有効性を記憶するように構成された状態インデックスをさらに備え、前記コンパレータは前記タグインデックスに記憶された前記タグが有効であるか否かを決定するように構成される、［６］のシステム。
［８］
前記制御ロジックは、前記コンパレータの前記出力を受信し、前記識別子の前記値としての選択のために、前記保全命令の前記出力として、キャッシュラインのウェイアドレスに前記出力を符号化するように構成された符号器をさらに備える、［７］のシステム。
［９］
複数のキャッシュラインを備えるキャッシュから置換のためのキャッシュラインを識別子によって識別することと；
インクリメンタ、キャッシュ保全命令、または同じ値のままから選択された前記識別子の値を制御ロジックによって決定することと；
を備える方法。
［１０］
前記キャッシュ保全命令は、インデックスによるキャッシュ無効化命令である、［９］の方法。
［１１］
前記キャッシュ保全命令は、前記制御ロジックによって選択された前記値を含む、［１０］の方法。
［１２］
前記キャッシュ保全命令は、アドレスによるキャッシュ無効化命令である、［９］の方法。
［１３］
前記キャッシュに記憶された情報のタグインデックスを前記制御ロジックによって記憶することと；
前記保全命令のタグが、既定のセットの前記タグインデックスに記憶された任意のタグと一致するか否かを、コンパレータによって決定することと；
をさらに備える、［１２］の方法。
［１４］
前記タグインデックス内の前記タグと前記保全命令の前記タグの一致を決定すると、前記タグインデックス内のタグが有効であるか否かを、前記コンパレータによって決定することをさらに備える、［１３］の方法。
［１５］
前記識別子の前記値としての選択のために、符号器によって、前記コンパレータの出力を前記保全命令の前記出力としてキャッシュラインのウェイアドレスに符号化することをさらに備える、［１４］の方法。
［１６］
複数のキャッシュラインを備えるキャッシュから、置換のためのキャッシュラインを識別する手段と；
インクリメンタ、キャッシュ保全命令、または同じ値のままから選択されたキャッシュラインを識別するための前記手段の値を決定する手段と；
を備えるシステム。
［１７］
前記キャッシュ保全命令は、インデックスによるキャッシュ無効化命令である、［１６］のシステム。
［１８］
前記キャッシュ保全命令は、アドレスによるキャッシュ無効化命令である、［１６］のシステム。
［１９］
前記キャッシュに記憶される前記保全命令の状態の位置を決定する手段をさらに備える、［１８］のシステム。
［２０］
置換される前記キャッシュラインとして識別される前記位置を符号化する手段をさらに備える、［１８］のシステム。
【図１】
0005474836.tif 000002
【図２】
0005474836.tif 000003
【図３】
0005474836.tif 000004
【図４】
0005474836.tif 000005
【図５】
0005474836.tif 000006
【図６】
0005474836.tif 000007
【図７】
0005474836.tif 000008
【図８】
0005474836.tif 000009
【図９】
0005474836.tif 000010
【図１０】
0005474836.tif 000011