(57)【特許請求の範囲】
【請求項１】
マルチスレッドプロセッサの2つ以上の処理スレッドの間で共有されるキャッシュを更新する方法であって、
前記キャッシュに割り当てられるべき前記2つ以上の処理スレッドのうちの1つの処理スレッドに関連付けられたキャッシュエントリのアドレスを受け取るステップと、
前記アドレスに関連付けられた属性を決定するステップと、
前記属性に基づくキャッシュ割当て情報を用いて、前記処理スレッドに対応する構成レジスタを設定するステップであって、2つ以上の構成レジスタは、前記2つ以上の処理スレッドに関するキャッシュ割当て情報をそれぞれ含む、ステップと、
区分レジスタに基づいて、メイン部分と予備部分との間のデフォルトのキャッシュ区分を決定するステップと、
前記処理スレッドに対応する前記構成レジスタから、前記デフォルトのキャッシュ区分が無視されるモードを決定するステップと、
前記デフォルトのキャッシュ区分を無視しながら、前記処理スレッドの前記構成レジスタに基づき、前記キャッシュ内に前記キャッシュエントリを割り当てるステップと
を含む、方法。
【請求項２】
前記属性がページ属性である、請求項1に記載の方法。
【請求項３】
前記属性が、ストリーミングデータ、ローカライズされたデータ、マルチユースデータ、共有、および非共有のうちの1つを示す、請求項1に記載の方法。
【請求項４】
前記キャッシュを含むシステムのシステム構成中に前記区分レジスタを設定するステップを含む、請求項1に記載の方法。
【請求項５】
前記アドレスに関連付けられた前記属性を決定するためのメモリ管理ユニット(MMU)を構成するステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記属性に基づくキャッシュ割当て情報を用いて前記構成レジスタを設定するために前記MMUを構成するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記キャッシュ割当て情報が、前記属性に基づくキャッシュ割当て、メイン部分へのキャッシュ割当て、および予備部分へのキャッシュ割当てのうちの1つを示す、請求項1に記載の方法。
【請求項８】
マルチスレッド処理システムでのキャッシュ割当ての方法であって、
キャッシュに割り当てられるべき、前記マルチスレッド処理システムの2つ以上の処理スレッドのうちの1つの処理スレッドのためのデータに関連付けられたアドレスを受け取るステップと、
前記アドレスに関連付けられたページ属性を決定するステップと、
デフォルトのキャッシュ区分に基づき、前記キャッシュをメイン部分と予備部分とに区分するステップと、
前記ページ属性から、前記デフォルトのキャッシュ区分が無視されるモードを決定するステップと、
前記デフォルトのキャッシュ区分を無視しながら、前記ページ属性と、前記処理スレッドに対応するスレッド固有の構成レジスタによって提供されるキャッシュ割当て情報とに基づき、前記データを前記キャッシュの1つまたは複数の部分に割り当てるステップ
とを含む、方法。
【請求項９】
前記キャッシュを区分するステップが、静的区分に基づく、請求項8に記載の方法。
【請求項１０】
前記静的区分が、前記キャッシュを含むシステムのための構成情報によって決定される、請求項9に記載の方法。
【請求項１１】
前記静的区分が、前記マルチスレッド処理システムの全ての処理スレッドについて共通に決定される、請求項10に記載の方法。
【請求項１２】
前記静的区分が、前記マルチスレッド処理システムの各処理スレッドについて個別に決定される、請求項11に記載の方法。
【請求項１３】
マルチスレッド処理システムの2つ以上の処理スレッドの間で共有されるキャッシュと、
前記キャッシュに割り当てられるべき前記2つ以上の処理スレッドのうちの1つの処理スレッドに関連付けられたキャッシュエントリのアドレスに関連付けられた属性を決定するためのメモリ管理ユニットと、
前記2つ以上の処理スレッドに対応する2つ以上の構成レジスタであって、前記決定された属性に基づく前記対応する処理スレッドのキャッシュ割当て情報を含む2つ以上の構成レジスタと、
メイン部分および予備部分への前記キャッシュのデフォルトのキャッシュ区分を含む区分レジスタと、
前記デフォルトのキャッシュ区分が無視される前記処理スレッドのモードを選択するように構成されるスレッドmuxと、
前記処理スレッドに対応する構成レジスタによって提供される前記キャッシュ割当て情報に基づくが、前記区分レジスタによって提供される前記デフォルトのキャッシュ区分とは独立に、前記キャッシュエントリを前記キャッシュの前記部分のうちの1つに割り当てるための論理回路と
を備える、マルチスレッド処理システム。
【請求項１４】
前記属性がページ属性である、請求項13に記載のマルチスレッド処理システム。
【請求項１５】
前記キャッシュ割当て情報が、ページ属性に基づくキャッシュ割当て、メイン部分へのキャッシュ割当て、および予備部分へのキャッシュ割当てのうちの1つを示す、請求項13に記載のマルチスレッド処理システム。
【請求項１６】
マルチスレッド処理システムの2つ以上の処理スレッドに共有されるキャッシュと、
前記キャッシュに割り当てられるべき前記2つ以上の処理スレッドのうちの1つの処理スレッドに関連付けられたキャッシュエントリのアドレスに関連付けられた属性を決定するための手段と、
前記決定された属性に基づくキャッシュ割当て情報を記憶するための2つ以上の手段であって、前記記憶するための2つ以上の手段の各々が、前記2つ以上の処理スレッドのうちの1つに対応する、手段と、
メイン部分および予備部分への前記キャッシュのデフォルトのキャッシュ区分を記憶するための手段と、
前記処理スレッドについて前記デフォルトのキャッシュ区分が無視されるモードを決定するための手段と、
前記処理スレッドのキャッシュ割当て情報を記憶するための前記手段に基づくが、前記デフォルトのキャッシュ区分とは独立に、前記キャッシュエントリを割り当てるための手段と
を備える、マルチスレッド処理システム。
【請求項１７】
コードを含む非一時的コンピュータ可読記録媒体であって、前記コードは、マルチスレッドプロセッサによって実行されるときに、前記マルチスレッドプロセッサの2つ以上の処理スレッドの間で共有されるキャッシュを更新するための動作を前記マルチスレッドプロセッサに実行させ、
前記キャッシュに割り当てられるべき前記2つ以上の処理スレッドのうちの1つの処理スレッドに関連付けられたキャッシュエントリのアドレスを受け取るためのコードと、
前記アドレスに関連付けられた属性を決定するためのコードと、
前記属性に基づくキャッシュ割当て情報を用いて前記処理スレッドに対応する構成レジスタを設定するためのコードであって、2つ以上の構成レジスタが、前記2つ以上の処理スレッドに関するキャッシュ割当て情報をそれぞれ含む、コードと、
メイン部分と予備部分との間のデフォルトのキャッシュ区分を決定するためのコードと、
前記処理スレッドに対応する前記構成レジスタから、前記デフォルトのキャッシュ区分が無視されるモードを決定するためのコードと、
前記デフォルトのキャッシュ区分を無視しながら、前記処理スレッドの前記構成レジスタに基づき、前記キャッシュに前記キャッシュエントリを割り当てるためのコードと
を含む、非一時的コンピュータ可読記録媒体。
【請求項１８】
前記メイン部分は、前記2つ以上の処理スレッドのデータ処理のニーズに専用のものとされ、前記予備部分は、ストリーミングデータに専用のものとされる、請求項1に記載の方法。
【請求項１９】
前記メイン部分は、前記2つ以上の処理スレッドのデータ処理のニーズに専用のものとされ、前記予備部分は、ストリーミングデータに専用のものとされる、請求項8に記載の方法。
【請求項２０】
前記メイン部分は、前記2つ以上の処理スレッドのデータ処理のニーズに専用のものとされ、前記予備部分は、ストリーミングデータに専用のものとされる、請求項13に記載のマルチスレッド処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、共有キャッシュにおけるキャッシュ割当てを対象とする。より詳細には、例示的な実施形態は、マルチスレッドプロセッサ内の区分された共有キャッシュにおけるキャッシュラインの割当てを対象とする。
【背景技術】
【０００２】
プロセッサにおけるマルチスレッドの明示は、プロセスの粒度(process granularity)の異なるレベルで、または異なる程度で行うことができる。マルチスレッドプロセッサの様々なスレッドは、1つまたは複数のレベルのキャッシュと、メモリとを共有し得る。スレッドは、「ストリーミングデータ」、「ローカライズされたデータ」、「マルチユースデータ」、「共有」、「非共有」などのような異なるデータ属性を有し得る。LRU(least recently used)のような単純な割当ておよび置換方式は、スレッドと、スレッドに固有のデータ属性とによって作成された異なるコンテキストを考慮しなければならないので、不適切である。
【０００３】
たとえば、専用の割当て/置換機構がない場合、ストリーミングデータによってポピュレートされた共有キャッシュのキャッシュラインは、別のスレッドのローカライズされたデータまたはマルチユースデータに置き換えられ得る。そのようなシナリオは許容できないものであり、処理速度および効率の深刻な低下をもたらす可能性がある。
【０００４】
いくつかの共有キャッシュは、異なるスレッドからのデータを別々にしておくための静的区分を含み得る。しかし、静的区分を用いると、スレッドは特定のキャッシュ区分に静的に固定され、このことはさらなる欠点をもたらす。たとえば、スレッドのデータ属性は、ストリーミングデータからローカライズされたデータに、またはローカライズされたデータからストリーミングデータに動的に移行することがある。わかるように、スレッドを固定して、キャッシュのあらかじめ定義された部分に割り当てる静的区分は、スレッドにおけるデータ属性のそのような動的移行を考慮することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、上記の欠点を回避する、共有キャッシュにおける柔軟なキャッシュ割当てが当技術分野で必要とされている。
【課題を解決するための手段】
【０００６】
本発明の例示的な実施形態は、マルチスレッド用の区分された共有キャッシュにおけるキャッシュラインの割当てのためのシステムおよび方法を対象とする。
【０００７】
たとえば、例示的な実施形態は、キャッシュに割り当てられるべき処理スレッドに関連付けられたキャッシュエントリのアドレスを受け取るステップと、アドレスに関連付けられた属性を判断するステップと、属性に基づくキャッシュ割当て情報を用いて、処理スレッドに対応する構成レジスタを設定するステップと、区分レジスタに基づいて、キャッシュ区分を判断するステップと、構成レジスタおよびキャッシュ区分に基づいて、キャッシュエントリをキャッシュに割り当てるステップとを含む、共有キャッシュを更新する方法を対象とする。
【０００８】
別の例示的な実施形態は、マルチスレッド処理システムの処理スレッドについての、キャッシュに割り当てられるべきデータに関連付けられたアドレスを受け取るステップと、アドレスに関連付けられたページ属性を判断するステップと、キャッシュを2つ以上の部分に区分するステップと、ページ属性のうちの少なくとも1つに基づいて、データをキャッシュの1つまたは複数の部分に割り当てるステップとを含む、マルチスレッド処理システムにおけるキャッシュ割当ての方法を対象とする。
【０００９】
さらに別の例示的な実施形態は、キャッシュと、処理スレッドと、キャッシュに割り当てられるべき処理スレッドに関連付けられたキャッシュエントリのアドレスに関連付けられた属性を判断するためのメモリ管理ユニットと、判断された属性に基づくキャッシュ割当て情報を含む構成レジスタと、キャッシュを2つ以上の部分に区分するための区分情報を含む区分レジスタと、構成レジスタおよび区分レジスタに基づいて、キャッシュエントリをキャッシュの部分のうちの1つに割り当てるための論理手段とを含むマルチスレッド処理システムを対象とする。
【００１０】
さらに別の例示的な実施形態は、キャッシュと、処理スレッドと、キャッシュに割り当てられるべき処理スレッドに関連付けられたキャッシュエントリのアドレスに関連付けられた属性を判断するためのメモリ管理手段と、判断された属性に基づくキャッシュ割当て情報を記憶するための構成手段と、キャッシュを2つ以上の部分に区分するための区分情報を記憶するための区分手段と、構成手段および区分手段に基づいて、キャッシュエントリをキャッシュの部分のうちの1つに割り当てるための手段とを含むマルチスレッド処理システムを対象とする。
【００１１】
さらに別の例示的な実施形態は、マルチスレッドプロセッサによって実行されると、マルチスレッドプロセッサに共有キャッシュを更新するための動作を実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、キャッシュに割り当てられるべき処理スレッドに関連付けられたキャッシュエントリのアドレスを受け取るためのコードと、アドレスに関連付けられた属性を判断するためのコードと、属性に基づくキャッシュ割当て情報を用いて、構成レジスタを設定するためのコードと、キャッシュ区分を判断するためのコードと、構成レジスタおよびキャッシュ区分に基づいて、キャッシュエントリをキャッシュに割り当てるためのコードとを含む。
【００１２】
さらに別の例示的な実施形態は、マルチスレッドプロセッサによって実行されると、マルチスレッドプロセッサにマルチスレッド処理システムにおけるキャッシュ割当てのための動作を実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、マルチスレッド処理システムの処理スレッドについての、キャッシュに割り当てられるべきデータに関連付けられたアドレスを受け取るためのコードと、アドレスに関連付けられたページ属性を判断するためのコードと、キャッシュを2つ以上の部分に区分するためのコードと、ページ属性のうちの少なくとも1つに基づいて、データをキャッシュの1つまたは複数の部分に割り当てるためのコードとを含む。
【００１３】
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【００１４】
【図１】例示的な実施形態による、キャッシュ区分およびキャッシュ割当てを実装するように構成された処理システム100のブロック図である。
【図２】キャッシュ割当てのための構成レジスタ設定を含む表である。
【図３】例示的なデータキャッシュにおけるキャッシュ割当ておよびキャッシュ区分の論理的な実装形態の概略図である。
【図４】例示的な実施形態による、キャッシュを割り当てる方法の例示的な動作フローを示す図である。
【図５】例示的な実施形態に従って構成されたマルチコアプロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図である。
【発明を実施するための形態】
【００１５】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様を開示する。本発明の範囲から逸脱することなく代替的な実施形態を考案することができる。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素については詳細に説明しないか、または省略する。
【００１６】
「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的な」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
【００１７】
本明細書で使用する用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。「comprises(備える)」、「comprising(備える)」、「includes(含む)」および/または「including(含む)」という用語は、本明細書で使用する場合、述べられた特徴、整数、ステップ、動作、要素および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素および/またはそのグループの存在または追加を排除しないことがさらに理解されよう。
【００１８】
さらに、多くの実施形態について、たとえばコンピューティングデバイスの要素によって実施されるべき、一連のアクションに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実施され得ることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、請求する主題の範囲内にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明する実施形態ごとに、任意のそのような実施形態の対応する形式について、本明細書では、たとえば、記載のアクションを実施する「ように構成された論理手段」として説明することがある。
【００１９】
例示的な実施形態は、共有キャッシュを備えるマルチスレッドプロセッサに適している。実施形態は、区分されたキャッシュにおけるデータの柔軟な割当てを可能にするように構成され得る。いくつかの実施形態では、ソフトウェアは、静的区分をオーバーライドし、データをソフトウェアによって決定された区分に割り当てることによって、静的に区分されたキャッシュにおけるデータの割当てを制御することができる。言い換えれば、ソフトウェアは、たとえば、スレッド固有であり得るキャッシュの静的に定義された区分に従うことなく、データをキャッシュ全体に割り当ててもよい。
【００２０】
次に図1を参照すると、処理システム100の略図が示されている。マルチスレッドプロセッサ102は、ハードウェアまたはソフトウェアで実装され得る2つ以上のスレッド(たとえば、スレッドT0、T1、T2、およびT3)を処理するように構成され得る。2つ以上のスレッドは、本明細書で論じる例示的な実施形態に従って区分され得る、Dキャッシュ104およびIキャッシュ106などのL1キャッシュにアクセスすることができる。L2キャッシュ(図示せず)などの1つまたは複数のレベルのキャッシュも、最終的に共有メインメモリ108になる、プロセッサ102のメモリ階層に存在し得る。メモリ管理ユニット(MMU)110は、マルチスレッドプロセッサ102によって生成された仮想アドレスからキャッシュおよびメインメモリ108にアクセスするための物理アドレスへのアドレス変換などの機能を果たすために、様々なキャッシュおよびメインメモリと通信していてもよい。処理システム100の適切な変形形態は、開示される実施形態の範囲を逸脱することなく、当業者によって認識されよう。
【００２１】
次に、一般性の喪失なしに、例示的な実施形態におけるキャッシュ割当てについて、Dキャッシュ104を参照しながら説明する。Dキャッシュ104は、特定のニーズに従ってキャッシュスペース内でのデータの配置を制御するために、様々な方法で区分され得る。たとえば、Dキャッシュ104は、メイン部分および予備部分に区分され得る。メイン部分は、マルチスレッドプロセッサ102からのスレッドのデータ処理のニーズに専用のものとすることができるが、予備部分は、たとえばダイレクトメモリアクセス(DMA)エンジン(図示せず)から受け取ることができるストリーミングデータに専用のものとすることができる。メイン部分および予備部分の相対的サイズまたは絶対的サイズと配置とは、静的に設定され得る。たとえば、キャッシュは、50:50、25:75、75:25などの選択された比率で、メイン部分および予備部分に静的に区分され得る。言い換えれば、キャッシュのウェイに関して、キャッシュ区分はメイン部分および予備部分におけるウェイの数を指定することができる。たとえば、8ウェイキャッシュの場合、キャッシュ区分は、メイン部分で6ウェイを指定し、予備部分で2ウェイを指定する(75:25の割合に対応する)ことができる。いくつかの実施形態では、キャッシュ区分は動的であってもよい。たとえば、メイン部分および予備部分の相対的な割合は処理スレッドに基づいてもよい。
【００２２】
例示的な実施形態は、マルチスレッドプロセッサ102のスレッド単位の構成レジスタを含むことができ、構成レジスタは、スレッドに対応するキャッシュ割当てを制御することができる。構成レジスタは、ソフトウェアによって設定されてもよい。各スレッドは、スレッド内のデータのアドレスに関連付けられたページ属性などの関連するデータ属性を有し得る。これらのデータ属性は、Dキャッシュ104におけるデータの割当てを決定するために使用され得る。
【００２３】
次に図2を参照すると、第1のスレッドの構成レジスタCP 200に基づく(たとえば、マルチスレッドプロセッサ102で実行される)第1のスレッドに対するキャッシュ割当てディレクティブを含む表が示されている。図示のように、CP 200が「00」の値に設定される第1のモードでは、Dキャッシュ104におけるデータの割当て/配置は、関連するデータ属性によって制御される。たとえば、第1のモードでは、Dキャッシュ104の定義された区分へのデータのいかなる静的に決定された割当ても無視され、データ属性はデータをどこに配置するかを命令する。言い換えれば、この第1のモードでは、どのようにDキャッシュ104が特定の割合のメイン部分および予備部分に区分されるかにかかわらず、これらの区分を無視することができ、データ属性に基づいて、データをDキャッシュ104全体の任意の部分に割り当てることができる。いくつかの実施形態では、MMU 110は、データ属性についてのデータに関連付けられたアドレスをパースし、これらの属性を使用して、それに応じて構成レジスタCPを設定することによって、キャッシュ割当てを支援するように構成され得る。
【００２４】
引き続き図2の表200を参照すると、CP 200が「01」の値に設定される第2のモードでは、Dキャッシュ104の区分へのデータの割当てのいかなる静的な決定も無視され、データはDキャッシュ104のメイン部分に割り当てられる。同様に、CP 200が「10」の値に設定される第3のモードでは、Dキャッシュ104の区分へのデータの割当てのいかなる静的な決定も無視され、データはDキャッシュ104の予備部分に割り当てられる。図2の表では3つのモードのみが示されているが、必要であれば、より多くのビットをCP 200に追加することによって、追加のモードを定義することができる。たとえば、別のモードは、Dキャッシュ104における関連するデータの割当てがスキップされ、データが未キャッシュとして扱われる、「割当てなし」を指定することができる。さらに別のモードは、第1のスレッドについてDキャッシュ104におけるデータ割当てに最も最近使用された部分(たとえば、メインまたは予備)にデータが割り当てられる、「MRU(most recently used)」割当てを指定することができる。当業者であれば、特定の実装形態のための構成レジスタを設定することに基づいて、上記のモードの適切な変形形態を認識されよう。
【００２５】
次に図3を参照すると、スレッド固有の構成レジスタを使用した、Dキャッシュ104の割当ての例示的な実装形態が示されている。スレッドT0、T1、およびT2にそれぞれ対応する、3つの構成レジスタCP 300_0、300_1、および300_2が示されている。同じく図示のように、Dキャッシュ104の拡大図は、タグアレイ302、状態アレイ304、およびデータアレイ306を含む。次に、Dキャッシュ104のタグアレイ302、状態アレイ304、およびデータアレイ306における区分を制御するように構成されたDキャッシュ区分レジスタDP 310についてさらに詳細に論じる。
【００２６】
Dキャッシュ区分レジスタDP 310は、Dキャッシュ104についての特定の区分情報を保持するように構成され得る。一例では、Dキャッシュ104の静的区分を実装することができ、Dキャッシュ104のメイン部分および予備部分の相対的な割合に関係する情報を用いてDP 310を設定することができる。たとえば、処理システム100のシステム構成の一部としてDP 310を設定することができる。静的区分は各処理スレッドに共通であってもよく、またはスレッド固有であってもよい。固有の静的区分はプログラマーによって選択されてもよい。別の例では、Dキャッシュ104はスレッド固有の方法で動的に区分されてもよい。静的区分と動的区分の組合せも可能であり、区分レジスタDP 310を適切に構成することによって実装され得る。
【００２７】
静的に区分されるか動的に区分されるかにかかわらず、DP 310によって示される固有の区分は、タグアレイ302をメインタグアレイ部分302aおよび予備タグアレイ部分302bに区分するために使用され得る。同様に、状態アレイ304をメイン状態アレイ部分304aおよび予備状態アレイ部分304bに区分することができ、データアレイ306をメインデータアレイ部分306aおよび予備データアレイ部分306bに区分することができる。
【００２８】
次に、データをDキャッシュ104に書き込む一般的な機構について説明する。Dキャッシュ104に割り当てられる必要があるデータの物理アドレス(PA)は、PA[タグビット]316a、PA[セットビット]316b、およびPA[データアレイビット]316cのタグビットにパースされ得る。PA[タグビット]316aは、コンパレータ314を使用して、(コンテントアドレッサブルメモリ(CAM: content addressable memory)として実装され得る)タグアレイ302に存在するタグと比較され得る。コンパレータ314は、PA[セットビット]316bを使用して状態アレイ304から読み出された対応する状態ビットを用いて、肯定的な結果(ヒット)を確認して、ヒットするタグアレイエントリが有効であることを保証することもできる。一方、ミスがあり、Dキャッシュ104を割り当てる必要がある場合、置換ウェイロジック308は、構成レジスタCPのモードを考慮することによって、PAに対応するデータアレイ306におけるエントリの割当てを支援することができる。
【００２９】
次に、上記で説明したDキャッシュ104に書き込む機構を用いた、スレッド固有の構成レジスタCP 300_0、300_1および300_2の例示的な協調について、引き続き図3を参照しながら説明する。図示のように、3つのスレッドT0、T1、およびT2の選択されたスレッドについて、スレッドmux 312は、選択されたスレッドに対応する構成レジスタCP 300_0、300_1および300_2から選択するように構成され得る。第1の例では、物理アドレスPAを有するデータはスレッドT0に属すると仮定される。対応して、スレッドmux 312は、値「00」を保持するように示されている構成レジスタCP 300_0を選択する。前に説明したように、これは、Dキャッシュ104の既存の区分が無視され、Dキャッシュ104の割当てがデータ属性に基づく第1のモードに対応する。したがって、上記で説明したDキャッシュ104に書き込む機構の後、ミスがある場合、置換ウェイロジック308は、PA[データアレイビット]316cから導出された割り当てられたロケーションでのメインデータアレイ部分306aまたは予備データアレイ部分306bへのデータの書込みと、DP 310から導出された区分情報によって決定され得る任意の割当てのオーバーライドとを支援する。
【００３０】
第2の例では、データはスレッドT1に属することができ、したがって、スレッドmux 312に、値「01」を保持するように示されている構成レジスタCP 300_1を選択させる。前に説明したように、この値は、データがDキャッシュ104のメイン部分に割り当てられる第2のモードに対応する。Dキャッシュ104内のメイン部分のロケーションは、DP 310に基づいて決定される。したがって、上記で説明したDキャッシュ104に書き込む機構の後、ミスがあると、データはPA[データアレイビット]316cから導出されたロケーションでメインデータアレイ部分306aに書き込まれる。
【００３１】
第3の例では、データはスレッドT2に属することができ、したがって、スレッドmux 312に、値「10」を保持するように示されている構成レジスタCP 300_2を選択させる。前に説明したように、この値は、データがDキャッシュ104の予備部分に割り当てられる第3のモードに対応する。Dキャッシュ104内の予備部分のロケーションは、DP 310に基づいて決定される。したがって、上記で説明したDキャッシュ104に書き込む機構の後、ミスがあると、データはPA[データアレイビット]316cから導出されたロケーションで予備データアレイ部分306bに書き込まれる。
【００３２】
したがって、例示的な実施形態では、Dキャッシュ104は静的に区分されてもよい。データの後続の割当ては、属性に基づいて対応する構成レジスタCPを適切に設定することによって制御され得る。当業者であれば、開示される技法はIキャッシュ106またはL2キャッシュなどの任意の他のキャッシュに容易に拡張され得ることを理解されよう。対応して、キャッシュ割当ては、キャッシュラインまたはデータもしくは命令を含むキャッシュブロックなどの任意の適切なキャッシュエントリのためのものであってもよい。固有の区分または割当てモードにかかわらず、例示的な実施形態におけるデータ/命令の割当てのきめの細かい制御は、ソフトウェアにおける共有キャッシュの管理を改善し、それによって処理システム100のパフォーマンスを改善することができる。
【００３３】
実施形態は、本明細書で開示するプロセス、機能および/またはアルゴリズムを実施するための様々な方法を含むことが諒解されよう。たとえば、図4に示すように、一実施形態は、キャッシュに割り当てられるべき処理スレッドに関連付けられたキャッシュエントリのアドレス(たとえば、図3のスレッドT0に関連付けられたデータに対するPA)を受け取るステップ-ブロック402と、アドレスに関連付けられた属性(たとえば、ページ属性)を判断するステップ-ブロック404と、属性に基づくキャッシュ割当て情報を用いて、構成レジスタ(たとえば、図3のスレッドT0に対する構成レジスタCP)を設定するステップ-ブロック406と、区分レジスタに基づいて、キャッシュ区分(たとえば、DP 310)を判断するステップ-ブロック408と、構成レジスタおよびキャッシュ区分に基づいて、キャッシュエントリをキャッシュに(たとえば、メイン部分または予備部分に)割り当てるステップ-ブロック410とを含む、キャッシュを更新する方法を含むことができる。
【００３４】
情報および信号は、多種多様な技術および技法のいずれかを使用して表すことができることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００３５】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００３６】
本明細書で開示した実施形態に関連して説明した方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
【００３７】
図5を参照すると、例示的な実施形態に従って構成されたマルチコアプロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全体的に500と表される。デバイス500はデジタル信号プロセッサ(DSP)564を含み、デジタル信号プロセッサ(DSP)564は、図示のようにメモリ532に結合されたプロセッサ102、MMU 110、Dキャッシュ104、およびIキャッシュ106など、図1に示す様々なブロックを含み得る。図5は、DSP 564およびディスプレイ528に結合された、ディスプレイコントローラ526も示している。コーダ/デコーダ(コーデック)534(たとえば、オーディオおよび/または音声コーデック)は、DSP 564に結合され得る。(モデムを含むことができる)ワイヤレスコントローラ540などの他の構成要素も示されている。スピーカー536およびマイクロフォン538は、コーデック534に結合され得る。図5は、ワイヤレスコントローラ540が、ワイヤレスアンテナ542に結合され得ることも示している。特定の実施形態では、DSP 564、ディスプレイコントローラ526、メモリ532、コーデック534、およびワイヤレスコントローラ540は、システムインパッケージデバイスまたはシステムオンチップデバイス522に含まれる。
【００３８】
特定の実施形態では、入力デバイス530および電源544は、システムオンチップデバイス522に結合される。さらに、特定の実施形態では、図5に示すように、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部にある。ただし、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス522の構成要素に結合され得る。
【００３９】
図5はワイヤレス通信デバイスを示しているが、DSP 564およびメモリ532も、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、またはコンピュータに組み込むことができることに留意されたい。プロセッサ(たとえばDSP 564)も、そのようなデバイス内に組み込むことができる。
【００４０】
したがって、本発明の一実施形態は、キャッシュ割当てのための方法を具現化するコンピュータ可読記録媒体を含むことができる。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実施するためのいかなる手段も、本発明の実施形態に含まれる。
【００４１】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明した本発明の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実施されなくてもよい。さらに、本発明の要素は、単数形で説明または特許請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００４２】
100  処理システム
102  マルチスレッドプロセッサ、プロセッサ
104  Dキャッシュ
106  I-キャッシュ
108  メインメモリ
110  メモリ管理ユニット、MMU
200  表、構成レジスタCP
300_0  構成レジスタCP
300_1  構成レジスタCP
300_2  構成レジスタCP
302  タグアレイ
302a  メインタグアレイ部分
302b  予備タグアレイ部分
304  状態アレイ
304a  メイン状態アレイ部分
304b  予備状態アレイ部分
306  データアレイ
306a  メインデータアレイ部分
306b  予備データアレイ部分
308  置換ウェイロジック
310  Dキャッシュ区分レジスタDP
312  スレッドmux
314  コンパレータ
316a  PA[タグビット]
316b  PA[セットビット]
316c  PA[データアレイビット]
522  システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
532  メモリ
534  コーデック
536  スピーカー
538  マイクロフォン
540  ワイヤレスコントローラ
542  ワイヤレスアンテナ
544  電源
564  DSP
T0、T1、T2、T3  キャッシュ
【図１】
0006279787.tif 000002
【図２】
0006279787.tif 000003
【図３】
0006279787.tif 000004
【図４】
0006279787.tif 000005
【図５】
0006279787.tif 000006