(57)【要約】【解決手段】複数のメモリバンクの一部を、キャッシュメモリとして、制御可能に割り当てる技術が示される。この目的のために、コンフィギュレーショントラッカ及びバンクセレクタが適用される。コンフィギュレーショントラッカは、各メモリバンクがキャッシュ内で動作すべきか否かを設定する。バンクセレクタは、複数のバンク分散機能を有している。到来アドレスを受け取ると、バンクセレクタは、キャッシュとして現在動作しているメモリバンクの設定を決定し、メモリバンクの設定に基づいて、適切なバンク分散機能を適用する。適用されたバンク分散機能は、キャッシュに内に設定されたバンクのうちの１つにアクセスするために、到来アドレスのビットを利用する。【選択図】      図６
2008529132.tif 000002
【特許請求の範囲】
【請求項１】
バンクメモリの全数を、２を超えるバンクメモリを有するキャッシュメモリ内に割り当てる装置であって、
前記バンクメモリの全数のうちの第１の部分をキャッシュメモリとして、前記メモリバンクの全数のうちの第２の部分を非キャッシュメモリとして設定するコンフィグレーショントラッカと、
到来するアドレスを受け取るバンクセレクタであって、前記第１の部分のメモリバンク数が２より大きく、かつ、２の累乗ではない場合に、前記第１の部分を構成するバンク数に基づいて、バンク分散機能を適用し、前記第１の部分のメモリバンクによるキャッシュアクセスを、バランスするように分散させるバンクセレクタと
を備える装置。
【請求項２】
前記コンフィギュレーショントラッカは更に、前記バンクメモリの全数のうちのどれが現在キャッシュメモリとして動作しているのかを表示する情報を受け取る入力部を備え、
前記コンフィギュレーショントラッカは、前記コンフィギュレーショントラッカの入力部で表示を受け取ると、複数のメモリバンクを再設定する請求項１に記載の装置。
【請求項３】
前記バンクセレクタは、前記到来するアドレスに対応する第１の部分のうちの１つのバンクのみをイネーブルする請求項１に記載の装置。
【請求項４】
前記適用されたバンク分散機能は、ハードワイヤード選択機能である請求項１に記載の装置。
【請求項５】
前記適用されたバンク分散機能は、ビット選択可能な機能である請求項１に記載の装置。
【請求項６】
前記適用されたバンク分散機能は、ストライドパターンに基づく請求項１に記載の装置。
【請求項７】
前記適用されたバンク分散機能は、排他的論理和（ＸＯＲ）バンク分散機能である請求項１に記載の装置。
【請求項８】
前記適用されたバンク分散機能は、モジュロバランス機能である請求項１に記載の装置。
【請求項９】
集積回路チップ上に配置される請求項１に記載の装置。
【請求項１０】
前記バンクセレクタは、多数のバンク分散機能から選択する請求項１の装置。
【請求項１１】
前記バンクセレクタは、各バンクメモリが直接選択可能な第１のモード、及び、前記バンク分散機能が適用される第２のモードで動作する請求項１に記載の装置。
【請求項１２】
バンクメモリの全数Ｎを、２を超えるバンクメモリを有するキャッシュメモリ内に割り当てる方法であって、
バンクメモリ数Ａがキャッシュメモリであり、バンクメモリ数Ｂ、ただしＢ≧１、が非キャッシュメモリである適用を決定することと、
前記Ａ個のキャッシュバンクメモリの各々に対するキャッシュアクセスがバランスされることを保証するバンク分散機能を適用することと
を備える方法。
【請求項１３】
到来するアドレスを受け取ることを更に備え、
前記適用するステップは、前記到来するアドレスのうちの１又は複数のビットを、前記バンク分散機能に適用する請求項１２に記載の方法。
【請求項１４】
バンクメモリの第２の数Ｃ、ただしＣ＞Ａ、がキャッシュメモリとなるように、キャッシュされるバンクメモリの数を再設定することを更に備える請求項１２に記載の方法。
【請求項１５】
バンクメモリの第２の数Ｃ、ただしＣ＜Ａ、がキャッシュメモリとなるように、キャッシュされるバンクメモリの数を再設定することを更に備える請求項１２に記載の方法。
【請求項１６】
前記適用するステップは更に、前記キャッシュメモリにアクセスすることを備え、
前記方法は更に、前記キャッシュメモリにアクセスする場合、前記キャッシュメモリ内の１つのバンクのみをイネーブルすることを備える請求項１２に記載の方法。
【請求項１７】
第２の到来するアドレスを受け取ることと、
前記第２の到来するアドレスからのビットを用いて、非キャッシュメモリＢにアクセスすることと
を更に備える請求項１３に記載の方法。
【請求項１８】
前記バンク分散機能は、排他的論理和（ＸＯＲ）又はモジュロバランス機能である請求項１２に記載の方法。
【請求項１９】
バンクメモリの全数Ｎを、２を超えるバンクメモリを有するキャッシュメモリ内に割り当てる装置であって、
バンクメモリ数Ａがキャッシュメモリであり、バンクメモリ数Ｂ、ただしＢ≧１、が非キャッシュメモリである適用を決定する手段と、
前記Ａ個のキャッシュバンクメモリの各々に対するキャッシュアクセスがバランスされることを保証するバンク分散機能を適用する手段と
を備える装置。
【請求項２０】
到来するアドレスを受け取る手段を更に備え、
前記適用する手段は、前記到来するアドレスのうちの１又は複数のビットを、前記バンク分散機能に適用する請求項１９に記載の装置。
【請求項２１】
キャッシュメモリのバンク数を再設定する手段を更に備える請求項１９に記載の装置。
【請求項２２】
前記適用する手段は更に、前記キャッシュメモリにアクセスする手段を備え、
前記装置は更に、前記キャッシュメモリにアクセスする場合、前記バンクメモリ内の１つのバンクをイネーブルする手段を備える請求項１９に記載の装置。
【請求項２３】
第２の到来するアドレスを受け取る手段と、
前記第２の到来するアドレスからのビットを用いて、非キャッシュメモリＢにアクセスする手段と
を更に備える請求項１９に記載の装置。
【請求項２４】
前記バンク分散機能は、排他的論理和（ＸＯＲ）又はモジュロバランス機能である請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、多くのキャッシュメモリバンクを割り当てる技術に関し、特に、キャッシュメモリとして利用されるメモリバンク数を変えるとともに、与えられたアプリケーションのために、非キャッシュメモリ又はローカルメモリとして１又は複数のメモリバンクを適用する技術に関する。
【背景技術】
【０００２】
デジタルシグナルプロセッサ（ＤＳＰ）を含む中央処理装置（ＣＰＵ）の電力消費及び動作速度の制約は、モバイルデバイスの全体パフォーマンスを制限しうる。処理ユニットは、処理ユニットと同じ集積回路上に共に存在するか、あるいは、処理ユニットからさらに遠くに格納されうるデータへのアクセス時間を改善するために、バンクメモリを利用し、これによって、データ長、及び、データに対する命令経路を短縮する。そのようなアプローチでは、メモリバンクにおけるバンク数は、設計時に固定されうる。バンクメモリは、最近使用された命令、データ、あるいはそれら両方をキャッシュするために使用されうる。あるいは、バンクメモリはまた、例えば、キャッシュのような高速なローカルメモリアクセスのために使用されうる。しかしながら、一旦バンクメモリの機能が設計時に選択されると、この選択されたバンクメモリの機能は固定される。
【０００３】
バンクキャッシュメモリに対する幾つかの従来のアプローチは、キャッシュメモリのために確保されたバンク数が、一般に、２の累乗に等しいという点で制限されている。バンクメモリ内のキャッシュタグに対して比較されるために使用されるアドレスタグは、一般に、到来アドレスフィールドから抽出されるビットから構成される。したがって、タグが選択できる入力数、すなわち、タグ空間は２の累乗である。例えば、１つの従来のアプローチは、そのキャッシュメモリのために８つのバンクメモリを利用する。これら８つのバンクは、８ウェイの関連キャッシュとして設定される。これは、到来アドレスが、各バンク内に１つずつ存在する８つのキャッシュタグに対して、到来アドレスで運ばれたアドレスタグと比較されるようにすることを意味する。そして、各バンクのデータ出力は、一致するキャッシュタグを有するバンクに基づいて、正しいバンクを選択するために多重化される。
【０００４】
この従来のアプローチでは、各キャッシュアクセスは、コンパレータが、８つのバンクの各々においてイネーブルされるようにし、タグ空間は、キャッシュメモリ内の全てのキャッシュラインを特定することができる。そのようなアプローチでは、８つのバンクのうちの１つを他の目的のために再使用することは、一般にはなされてない。なぜなら、タグ空間は、関連するキャッシュラインに対して完全にはマップしないので、結果として、キャッシュミスになる可能性があるからである。従って、キャッシュに割り当てられるバンク数を単に低減し、残りのバンクを、他のタイプの利用のために再マップすることは、電力消費を増やし、キャッシュ効率を低減しうる。
【０００５】
バンクキャッシュメモリに対する他の従来のアプローチは、特定のバンクを選択するために、到来するタグから１又は複数のビットを抽出することを含みうる。特定のバンクを選択するために使用される抽出されたビットによって、このアプローチはまた、一般に、キャッシュ内のバンク数を、２の累乗に定める。例えば、４つのバンクが使用されると、特定のバンクを特定するために、到来するタグから２ビットが抽出される。例えば、ビット値００はバンクＩを示し、ビット値０１はバンクＩＩを示し、ビット値１０はバンクＩＩＩを示し、ビット値１１はバンクＩＶを示すかもしれない。到来するタグから２ビットが抽出されると、キャッシュアクセスのための特定のバンクが選択される。
【０００６】
このアプローチが３つのバンクで使用されるように適応される場合、特定のバンクを特定するために２ビットが未だに必要とされ、４つの値のうち２つが、同じバンクを示すだろう。その結果、同じバンクに対し２つの値をマッピングすることになり、一般に、同じバンクが、他の２つのバンクと同じ頻度で２度選択される。この結果、キャッシュコンフリクトになり、メモリバンク内でキャッシュデータが不均等に分布されうる。
【発明の開示】
【０００７】
バンクメモリがバンクキャッシュとして使用される場合、バンクキャッシュのワーキングサイズ、すなわち、バンクキャッシュ内に格納されうる入力数は、処理ユニット上で動作するソフトウェアアプリケーションに依存して変わりうる。幾つかの局面では、本発明の第１の実施形態は、処理ユニット上で実行する異なるソフトウェアアプリケーションに依存してキャッシュ技術を変化させるメカニズムを提供するためのニーズが存在することを認識する。この目的のために、本実施形態は、後述するように、追加ローカルメモリとして用いるようなメモリバンクの一部を、別の一部が別の非キャッシュ目的で利用されている一方、キャッシュメモリとして動作するように設定するコンフィギュレーショントラッカを含む。この実施形態は更にバンクセレクタを含む。バンクセレクタは、１又は複数のバンク分散機能を適切に適用しうる。設定されたキャッシュバンクの数に依存して、バンクセレクタは、キャッシュメモリとして設定されたバンクを介して、バランスされるようにキャッシュアドレスを分散するための適切なバンク分散機能を選択する。
【０００８】
そのようなアプローチの１つの長所は、特定のアプリケーションのために必要とされないメモリバンクが、例えば高速ローカルメモリのような他の目的のために利用されるように、バンクメモリ内のキャッシュサイズを変える能力を含む。他の長所は、ソフトウェア制御の下、キャッシュメモリに割り当てられるバンクの数を変える能力を含む。キャッシュメモリに割り当てられるバンク数を動的に変えることによって、製造欠陥を含むバンクが使用されることを防いだり、特定のソフトウェアアプリケーションに適合するようにキャッシュメモリのサイズを調整したりするなど多くの利点が得られる。他の長所は、各キャッシュアクセスにつき１つのキャッシュバンクをイネーブルすることによって、電力消費を低減する能力を含む。更に、全てよりも少ないメモリバンクがキャッシュメモリとして割り当てられる場合、キャッシュバンクの各々に対するキャッシュアクセスが実質的に等しくなるように、キャッシュアクセスのバランスをとる技術が提供される。
【０００９】
本発明のより完全な理解は、本発明の更なる特徴及び利点とともに、以下に示す詳細説明及び添付図面から明らかになるであろう。
【発明を実施するための最良の形態】
【００１０】
本発明は、本発明の幾つかの実施形態が図示される添付図面を参照してより完全に説明される。しかしながら、本発明は、様々な形態で具体化され、本明細書で記載された実施形態に限定されるように解釈されるべきではない。むしろ、これらの実施形態は、本開示が十分かつ完全になるように、かつ、本発明の範囲を当業者に対して十分に伝えるように提供される。
【００１１】
図１は、本発明の実施形態が有利に適用されうる典型的な無線通信システム１００の例示である。例示目的のために、図１は、３つの遠隔ユニット１２０，１３０，１５０と、２つの基地局１４０とを示している。典型的な無線通信システムは、より多くの遠隔ユニットおよび基地局を有していることが認識されるだろう。遠隔ユニット１２０，１３０，１５０は、ハードウェアコンポーネント１２５Ａ，１２５Ｂ，１２５Ｃをそれぞれ含んでいる。これらのハードウェアコンポーネントは、更に以下に示すように、バンクメモリ割当回路を含んでいる。図１は、基地局１４０から遠隔ユニット１２０，１３０，１５０への順方向リンク信号１８０と、遠隔ユニット１２０，１３０，１５０から基地局１４０への逆方向リンク信号１９０とを示す。
【００１２】
図１では、遠隔ユニット１２０はモバイル電話として示され、遠隔ユニット１３０はポータブルコンピュータとして示され、遠隔ユニット１５０は、ワイヤレスローカルループシステム内の固定位置遠隔ユニットとして示される。例えば、遠隔ユニットは、セル電話、携帯型パーソナル通信システム（ＰＣＳ）ユニット、パーソナルデジタルアシスタントのようなポータブルデータユニット、あるいはメータ読取機器のような固定位置データユニットでありうる。図１は、本発明の教示に従った遠隔ユニットを例示しているが、本発明は、これら典型的に例示されたユニットに限定されない。本発明は、バンクに細分割されたキャッシュメモリが利用され、与えられたソフトウェアアプリケーションのキャッシュ格納のために、これらバンクの全てが必要とされる訳ではない任意の処理環境において適切に適用されうる。
【００１３】
図２は、本発明の実施形態が有利に適用されるプロセッサ複合体２００を例示する。プロセッサ複合体２００は、上述されたコンポーネント１２５Ａ〜Ｃにおいて適切に適用されうる。プロセッサ複合体２００は、中央処理装置（ＣＰＵ）２４０、レベル１（Ｌ１）データキャッシュ２３０、Ｌ１命令キャッシュ２２０、レベル２（Ｌ２）命令及びデータキャッシュ２１０を含んでおり、一般的なチップに配置されうる。ＣＰＵ２４０は、レベル１データキャッシュ２３０、レベル１命令キャッシュ２２０、及びレベル２キャッシュ２１０に結合される。ＣＰＵ２４０は、階層的方法でキャッシュから命令及びデータを検索する。例えば、ＣＰＵ２４０が、命令を取得する必要がある場合、ＣＰＵ２４０は、アドレス一致に基づいて命令が存在するかを判定するために、レベル１命令キャッシュ２２０にアクセスする。レベル１命令キャッシュ２２０にアドレス一致がなければ、ＣＰＵ２４０は、レベル２命令及びデータキャッシュ２１０にアクセスするだろう。同様に、ＣＰＵ２４０がデータを取得する必要がある場合、ＣＰＵ２４０は、アドレス一致に基づいてデータが存在するかを判定するために、レベル１データキャッシュ２３０にアクセスするだろう。レベル１データキャッシュ２３０にアドレス一致がなければ、ＣＰＵ２４０は、レベル２命令及びデータキャッシュ２１０にアクセスするだろう。一般に、ＣＰＵ２４０、Ｌ１データキャッシュ２３０、Ｌ１命令キャッシュ２２０、及びＬ２キャッシュ２１０は、一般的なチップに組み込まれうる。命令又はデータがチップ上で利用可能ではない場合、オフチップメモリ２５０へのアクセスが生じるだろう。
【００１４】
次の説明は、主にＬ２キャッシュ２１０に関し、本発明の実施形態は、キャッシュ２１０、２２０、及び２３０のうちの何れか又は全てで適用されうることが認識されるだろう。本発明の実施形態は、例示するプロセッサ複合体２００に限定されず、本明細書に更に説明するように、キャッシュメモリを利用する他のプロセッサ複合体にも適用可能である。
【００１５】
図３は、本発明の教示に従ったキャッシュ複合体３００の１つの実施形態を例示する。キャッシュ複合体３００は、キャッシュ２１０、２２０、及び２３０の１又は複数として適切に適用されうる。キャッシュ複合体３００は、バンクセレクタ３１０、コンフィギュレーショントラッカ３２０、アドレスレンジセレクタ３２２、４つのメモリバンク３３０Ａ〜Ｄ、マルチプレクサ３４０，３５０を含んでいる。一例であるが、４つのメモリバンク３３０Ａ〜Ｄは各々、６４キロバイトのメモリを含み、集合的に、２５６キロバイトのＬ２キャッシュ２２０を備える。更なる例として、多くのセル電話アプリケーションにおいて、２５６キロバイトのＬ２キャッシュは必要とされないかもしれないが、より高速なオンチップローカルデータメモリを有することがより高く望まれるかもしれない。例えば、本発明の技術を利用するマルチメディア処理を行う際に、パケットは、追加ローカルメモリにストリームされ、もって、オフチップ動作を行う必要性を排除、あるいは実質的に低減する。
【００１６】
図３に戻って示すように、キャッシュ複合体３００は２つのモードで動作するかもしれないし、例えばＣＰＵ２４０のような対応するプロセッサ上で実行するソフトウェアに依存して、動作モード間で変化しうる。第１モードでは、キャッシュ複合体３００は、もっぱらキャッシュとして動作しうる。このモードでは、キャッシュデータを検索又は格納するために、キャッシュタグを比較することによって、全てのメモリバンクがアクセスされる。第２モードでは、キャッシュ複合体３００は、コンビネーションキャッシュ及びローカルメモリレポジトリとして動作する。ここでは、２以上のメモリバンク３３０Ａ〜Ｄがキャッシュメモリとしてアクセスされ、残りのメモリバンクが、例えばローカルメモリのような非キャッシュメモリとしてアクセスされる。キャッシュメモリとしてアクセスされているメモリバンクの数は、例えばＣＰＵ２４０のように、メモリバンクに結合されたプロセッサ上で現在実行しているソフトウェアアプリケーションの必要性に依存して変わりうる。
【００１７】
コンフィギュレーショントラッカ３２０は、どのメモリバンクがキャッシュメモリとしてアクセスされることになっているか、また、どのメモリバンクがローカルメモリとしてアクセスされることになっているかを示す値を格納する。コンフィグレーションライン３０５は、どのメモリバンクがキャッシュとして利用され、また、もしあれば、どのメモリバンクがローカルメモリとして利用されるのかを設定するために、コンフィグレーショントラッカ３２０に接続され、コンフィグレーショントラッカ３２０の値を設定するための値が運ばれる。ソフトウェアアプリケーションを起動するか、あるいは命令を起動させることによって、コンフィグレーションライン３０５を設定し、ソフトウェアアプリケーションが、自身の必要性に従って、バンクメモリのサイズ及び動作を調整できるようになる。コンフィギュレーショントラッカ３２０は、ハードウェアレジスタ又はその他のメモリデバイスを含む。これらは、各メモリバンクがどのように設定されるのかを示すデータを保持することができる。
【００１８】
コンフィギュレーショントラッカ３２０に格納された値を検索するために、バンクセレクタ３１０は、コンフィギュレーショントラッカ３２０に接続される。バンクセレクタ３１０は、更に、アドレスライン３０３を介して、到来アドレスを受信する。図４に関して更に説明するように、バンクセレクタ３１０は、どのメモリバンクがキャッシュ比較のために選択されるのかを判定するために、到来アドレスから１又は複数のビットを抽出する。バンクセレクタ３１０は、到来アドレスで運ばれた情報を、制御ライン３２５Ａ〜Ｄを介して、メモリバンク３３０Ａ〜Ｄのうちの何れか１つ又は全てに通信する。例示を簡素化するために、制御ライン３２５Ａ〜Ｄのみを図示する。しかしながら、キャッシュアクセス上で選択されたメモリバンクを個々にイネーブルするために、バンクセレクタ３１０は更に各メモリバンクに接続される。
【００１９】
図３に例示する実施形態では、メモリバンク３３０Ａ〜Ｄは、コンテンツアドレス可能メモリ（ＣＡＭ）バンクかもしれない。例えば、ＣＡＭバンクはそれぞれ、６４キロバイトのデータ又は命令を含み、４ウェイセット結合（associative）である。これは、各キャッシュアクセスが、ＣＡＭバンク内の４つのキャッシュタグ比較の結果になることを意味する。本説明はＣＡＭバンクに注目しているが、キャッシュ技術によってアクセス可能な他のタイプのメモリバンクもまた利用されうることが注目されるべきである。
【００２０】
図示する実施形態では、４つのバンク３３０Ａ〜Ｄを全てキャッシュとして利用することができる。あるいは、バンク３３０Ｃ及びバンク３３０Ｄのうちの一方又は両方を、アプリケーション用の追加ローカルメモリとして利用することができる。ここでは、以下に説明するように、４未満のキャッシュメモリバンクが必要である。メモリバンク３３０Ａ〜Ｄは、出力ライン３８０Ａ〜Ｄを介して、それぞれマルチプレクサ３４０に接続されている出力ポートを有している。メモリバンク３３０Ｃ及び３３０Ｄはまた、出力ライン３８５Ａ及び３８５Ｂを介して、それぞれマルチプレクサ３５０に接続されている出力ポートをも有している。バンクセレクタ３１０は、制御ライン３６０を介して選択信号を送ることによって、バンク出力のうちのどれが、キャッシュ複合体３００から出力されるのかを選択する。バンクセレクタ３１０は、信号ライン３７０を介して、どのバンクが現在キャッシュバンクとして使用されているのかを読み取る。メモリバンク３３０Ｃ，３３０Ｄは更に、ローカルメモリアドレスライン３０７を介して入力を受信する。
【００２１】
アドレスセレクタ３２２は、ローカルメモリアドレスライン３０７およびメモリバンク３３０Ｃ，３３０Ｄに接続されている。オプションとして、アドレスセレクタ３２２は、信号ライン３２４によって、コンフィギュレーショントラッカ３２０に接続されうる。この実施形態では、アドレスセレクタは、メモリバンク３３０Ｃ，３３０Ｄがキャッシュメモリとして使用されているとシグナルされると、ローカルメモリアドレスライン３０７を介した到来アドレスを無視する。しかしながら、メモリバンク３３０Ｃ，３３０Ｄがローカルメモリとして設定される場合、アドレスレンジセレクタ３２２は、ローカルメモリアドレスライン３０７を介した到来アドレスを受信する。アドレスレンジセレクタ３２２は、このアドレス値に基づいて、メモリバンク３３０Ｃ又はメモリバンク３４０Ｄを選択及び起動するかを決定する。アドレスレンジセレクタ３２２は、アドレスを受信し、このアドレスを、選択されたバンクへ転送する。更に、アドレスレンジセレクタ３２２は、イネーブルライン３８７を介してマルチプレクサ３５０へイネーブル信号を送ることによって、出力ライン３８５Ａか出力ライン３８５Ｂかを選択する。図３は、４ウェイセット結合である６４キロバイトメモリバンクに関連して説明されているが、本発明の教示は、他のサイズのメモリバンク及び他のセット結合も同様に考慮していることが注目されるべきである。一例として、最大３つのバンクまでを追加ローカルメモリとして利用することができる８つのバンクメモリが適用されうる。
【００２２】
キャッシュ複合体３００は、他のメモリバンクがキャッシュアクセスモードで動作している一方、１又は２つのメモリバンクが非キャッシュアクセスモードで動作することを可能にすることが注目されるべきである。コンフィギュレーショントラッカ３２０は、バンク３３０Ａ〜Ｃがキャッシュバンクメモリとして使用され、バンク３３０Ｄがローカルメモリとして使用されることを示すと仮定する。到来アドレスが、アドレスライン３０３を介してバンクセレクタ３１０に到着した場合、バンクセレクタ３１０は、コンフィグレーショントラッカ３２０を読み、バンク３３０Ａ、３３０Ｂ、又は３３０Ｃを起動すべきかを判定する。デュアルモードの例では、２の累乗に等しくないメモリバンク数が存在する場合、本発明のこの実施形態は、バランスされるようにキャッシュアクセスを分散させるために、バンク分散機能を実行することによって、メモリバンク間で実質的に等しい分散を達成する。図示する例では、アドレスタグフィールド内のビットに対する動作は、アドレスタグ内の特定のビットを直接利用するのではなく、適切なメモリバンクを選択するために適用される。そのような動作は、排他的論理和（ＸＯＲ）回路又はモジュロ３リダクション回路を利用して行われ、図５に関して更に説明するような３つのメモリバンクのうちの１つを選択するために、アドレスタグフィールド内から、２ビット位置へビット数が低減される。
【００２３】
ローカルメモリアドレスライン３０７は、周知の方法で、メモリバンク３３０Ｄ内のエントリに直接アクセスするために使用される。例えば、非キャッシュメモリバンクはそれぞれ、メモリアドレスの範囲を表わす。到来アドレス値は、どの非キャッシュメモリバンクが選択されるかを決定する。例えば、到来アドレス値が、メモリバンク３３０Ｃによって表わされる範囲内にある場合、メモリバンク３３０Ｃが選択される。キャッシュ複合体３００は、全キャッシュモードで、ローカルメモリモードで、あるいは、キャッシュモードとローカルメモリモードとの組み合わせで動作しうる。キャッシュ複合体３００は、単に、コンフィギュレーショントラッカ３２０の値を変えることによって、動作モードを変えうる。この柔軟性によって、異なるキャッシュニーズを有するソフトウェアアプリケーションが、キャッシュバンクであるメモリバンクの数を適応させることによって達成される。
【００２４】
図４は、本発明に従ったキャッシュ複合体の１つの典型的な動作の更なる詳細を例示するブロック図４００を示す。このブロック図４００は、到来アドレス４０５、バンクセレクタ４１０、コンフィギュレーショントラッカ４２０、及びメモリバンク４３０Ａ〜Ｄを示す。例示を簡略にするために、メモリバンク４３０Ａの内容のみを示す。各メモリバンクは、４ウェイセット結合である。メモリバンク４３０Ａに示すように、４ウェイのうちの２ウェイ、すなわち、ウェイ４４０Ａ，４４０Ｄのみが例示されている。各キャッシュラインエントリ０、１、２、…１２７は、キャッシュタグ４７０及びキャッシュデータ４８０を有している。図４に示すように、キャッシュデータ４８０は、１２８のアドレス可能なバイトに分割される。
【００２５】
到来アドレス４０５は３２ビットを有する。最上位の１８ビットであるビット３１〜１４は、２つの目的に使用される。１つの目的は、どのメモリバンクがアクセスされるかを選択することである。バンクセレクタ４１０の更なる詳細が、図５を用いて説明される。もう１つの目的は、キャッシュタグ４７０が比較されるアドレスタグを提供することである。次の７ビットであるビット１３〜７は、どのキャッシュラインエントリ０、１、２、…１２７が選択されるかを示す。オプションとして、最終の７ビットであるビット６〜０は、どのバイトがキャッシュデータ４８０内で選択されているかを示す。図４は、３２ビットの到来アドレスを例示しているが、本発明の教示は、他のサイズのアドレスもまた考慮しうることが注目されるべきである。
【００２６】
一例として、３２ビットの到来アドレスは、１６進法のフォーマットで０ｘＥＦＥＦ２１０２として表される値を有すると仮定する。バンクセレクタ４１０は、コンフィギュレーショントラッカ４２０を読み取ることにより、メモリバンクの設定を検索する。例えば、コンフィグレーショントラッカ４２０は、８ビットレジスタでありうる。ここでは、ビット３〜０が、メモリバンク４３０Ａ〜Ｄにそれぞれ対応する。例えば、ビット位置０のビット値が１である場合、対応するメモリバンクであるメモリバンク４３０Ｄが、キャッシュに用いられる。ビット値が０である場合、対応するメモリバンクがローカルメモリに使用される。コンフィギュレーショントラッカ４２０は、４つ全てのメモリバンク４４０Ａ〜Ｄが現在、キャッシュのために動作可能であることを示しており、すなわち、４つのビット３〜０が全て１であると仮定する。コンフィギュレーショントラッカ４２０を読み取ることによって、バンクセレクタ４１０はまた、キャッシュ比較のためにどのメモリバンクが選択されるべきかを示すために、到来アドレス４０５のうちのビット１５，１４が考慮されるべきであると判定する。１６進法のアドレス０ｘＥＦＥＦ２１０２であるビット１５，１４は００であるので、メモリバンク４３０Ａが選択され、イネーブルされる。
【００２７】
本発明の１つの実施形態では、コンフィギュレーショントラッカ４２０は、アドレスフィールド内のどのビット組み合わせが、バンク選択のため直接的あるいは間接的に使用されるべきかを特定するために、例えば４ビット、すなわちビット位置７〜４を含みうる。アドレスビットが直接的に使用される場合、到来アドレスから抽出されるビット値は、キャッシュアクセスに適切なメモリバンクを選択するために使用される。
【００２８】
一例として、コンフィギュレーショントラッカ４２０は、到来アドレスから直接的にビット組合せを選択するための技術として、ストライドパターンを指定しうる。ストライドパターンでは、連続する到来アドレスが、次のように、互いに関連している。連続するアドレスは、到来アドレス間の既知の量までインクリメントする独特のビットフィールドを持っている。従って、バンクセレクタ４１０は、連続したメモリアクセスを、４つのメモリバンクのうちのそれぞれに等しく分散するために、変化するビットフィールドを利用しうる。例えば、ストライドパターンが１２８バイトであり、キャッシュとして使用されるバンク数が４である場合、バンクセレクタ４１０は、キャッシュルックアップのための適切なバンクを選択するために、到来アドレス内のビット位置８及び７を利用するだろう。ストライドは２の累乗であり、メモリバンクの数は４であるので、バンクセレクタ４１０が、どのバンクにアクセスするのかに関する決定の根拠とするために、到来アドレスにおける２つのビット位置が使用される。ストライドパターンは、一般に、多くのＭＰＥＧビデオ規格のうちの１つに従ってデータを処理するソフトウェアアプリケーションが利用される場合に生じる。
【００２９】
この実施形態では、コンフィギュレーショントラッカ４２０のビット位置７〜４が符号化され、到来アドレス内の特定のビット位置に対応するストライドサイズが示されうる。コンフィギュレーショントラッカ４２０からの値に基づいて、バンクセレクタ４１０は、キャッシュアクセスを等しく分散するために、ストライドパターンに相当する到来アドレスから、適切なビット位置を選択する。要約すると、バンクセレクタ４１０は、どのメモリバンクをキャッシュとして読み書きするのかを決定するために、入力として、コンフィグレーショントラッカ４２０の値に加えて、到来アドレスを採用する。
【００３０】
アドレスビットが間接的に使用される場合、バンクセレクタ４１０は、キャッシュアドレスのための適切なバンクを選択し、イネーブルするために、特定のビットに関する排他的論理和（ＸＯＲ）リダクションロジック又はモジュロリダクション等のような、予め定めたバンク分散機能を実行する。更に図５について説明するように、バンクセレクタは、オプションとして、キャッシュメモリバンクとして現在設定されているバンクの数に基づいて、多くのバンク分散機能から選択する。
【００３１】
本発明の別の実施形態では、コンフィギュレーショントラッカ４２０は、バンクセレクタ４１０に、適切なメモリバンクを決定するためのバンク分散機能を選択させうる。コンフィギュレーショントラッカ４２０の値に依存して、バンクセレクタ４１０は、多くのバンク分散機能から１つを選択するだろう。バンクセレクタ内で、異なるバンク分散機能から選択する更なる詳細を、図５の説明と関連付けて以下に示す。
【００３２】
到来アドレス０ｘＥＦＥＦ２１０２の例に戻って、バンク選択動作を説明する。到来アドレスのビット１５及び１４は、ビット値００を含んでいる。これらの値は、結果として、メモリバンク４３０Ａを選択するバンクセレクタ４１０となる。到来アドレスのビット１３〜７は、ウェイ４４０Ａ〜Ｄ内のキャッシュライン２を選択するためのビット値０００００１０を含んでいる。到来アドレスのビット６〜０は、検索用のバイト２を指定するためのビット値０００００１０を含んでいる。ビット３１〜１４は、アドレスタグを構成し、一致があるか判定するために、各ウェイ４４０Ａ〜Ｄのキャッシュライン２で見つかったキャッシュタグと比較される。一致がある場合には、一致したセットのキャッシュデータ４８０におけるバイト２が、出力用に検索される。このバイト選択は、選択されたキャッシュラインの全体のキャッシュデータ部が出力用に検索されるようには利用されないかもしれないことが注目されるべきである。
【００３３】
図５は、本発明の教示に従ったバンクセレクタの典型的な動作を例示するブロック図５００である。ブロック図５００は、到来アドレスを保持するアドレスレジスタ５０５と、バンクセレクタ３１０，４１０として適切に使用することができるバンクセレクタ５１０とを含むバンクセレクタ５１０は、マルチプレクサ５５０、モジュロ機能回路５４０、及び、結合論理回路５３０を含んでいる。マルチプレクサ５５０は、出力５６０に結合するための４つの入力５２５Ａ〜Ｄを受け取る。各入力はそれぞれ、異なるバンク分散機能に対応する。メモリバンクの現在の設定に基づいて、結合論理回路５３０は、４つの入力のうちのどの１つが、出力５６０に経路付けられるべきかを決定する選択信号を生成する。出力５６０は、４つのメモリバンク３３０Ａ〜Ｄのうちのどの１つがキャッシュアクセスのためにイネーブルされるかを示す２ビット値を含んでいる。この２ビット値は、選択信号３６０を生成するために使用される。更に、出力５６０はまた、イネーブルされたキャッシュバンク内で見つけられたタグと比較されるアドレスタグをも含みうる。イネーブルされたキャッシュバンクへのアクセス後、イネーブルされたキャッシュバンクの電源が落とされうる。
【００３４】
結合論理回路５３０は、信号ライン５２７を介して入力を受け取る。信号ライン５２７は、信号ライン３７０と適切に類似しうる。結合論理回路５３０は、アドレス入力５０５とは独立した選択信号５３３を生成する。図５に例示する実施形態では、信号ライン５２７は、どのバンクが現在キャッシュとして設定されているか、及び、どのバンクが現在ローカルメモリとして設定されているかを示す４つの入力を含みうる。４つのメモリバンクの場合には、結合論理回路５３０は、それぞれが特定のメモリバンクを表す４つの入力を、どの入力信号５２５Ａ〜Ｄが出力５６０に結合されるかを選択する信号へ変換する。例えば、４つのバンクのうちの１つのバンクのみがキャッシュとして利用されることをコンフィギュレーショントラッカ３２０が示した場合、入力信号５２５Ａに対応する直接選択可能な機能が選択され、入力信号５２５Ａが出力５６０に接続される。
【００３５】
２つのバンクがキャッシュとして利用されることをコンフィギュレーショントラッカ３２０が示した場合、入力信号５２５Ｂに対応する直接選択可能な機能が選択され、もって、入力信号５２５Ｂが出力５６０に接続されるだろう。３つのバンクがキャッシュとして利用されることをコンフィギュレーショントラッカ３２０が示した場合、入力信号５２５Ｃに対応するバンク分散機能が選択され、もって、入力信号５２５Ｃが出力５６０に接続されるだろう。４つのバンクが全てキャッシュとして利用されることをコンフィギュレーショントラッカ３２０が示した場合、入力信号５２５Ｄに対応する直接選択可能な機能が選択され、もって、入力信号５２５Ｄが出力５６０に接続されるだろう。図５では示されていないが、選択されたキャッシュバンクをイネーブルするために、出力５６０の２ビット値は、一般に、各メモリバンクで見つけられたイネーブルなクロックに結合するイネーブル信号へ変換されうる。
【００３６】
入力５２５Ａが選択された場合、唯一のバンクがキャッシュとして設定され、この入力５２５Ａが、“００”からなる２ビット値へハードワイヤされる。この値は、バンクＩ、すなわち、例えばバンク３３０Ａ又は４３０Ａに相当するだろう。この直接選択可能な機能は、ハードワイヤ選択機能の例である。
【００３７】
入力５２５Ｂが選択された場合、２つのバンクがキャッシュとして設定される。この場合、ハードワイヤされた“０”値と結合する到来アドレスのビット１４が、２つのキャッシュバンクのどれがイネーブルされるべきかを判定する。このバンク分散機能は、ビット選択可能な機能の例である。
【００３８】
入力５２５Ｃが選択された場合、３つのバンクがキャッシュとして設定される。キャッシュバンクの数が２の累乗でない場合、切迫したキャッシュアドレスのために、３つのキャッシュバンクのうちのどの１つをイネーブルするかを選択するために、モジュロ機能回路５４０が利用され、タグ値、すなわちビット３１〜１４を、値０，１，２を有する２ビットへのモジュロ３リダクションが実行される。このバンク分散機能は、モジュロバランス機能の例である。一般に、モジュロ機能回路５４０は、多くのメモリバンクから選択することができ、到来アドレス内の複数のビットを、ビット値に変換する任意の結合論理回路を備えうる。モジュロ機能５４０への入力として少なくとも５より多いビットを有しており、タグ値が等しく分散されたと仮定することは、キャッシュメモリとして設定されたバンク間のキャッシュアクセスの実質的に等しい分散になるべきである。例えば、モジュロ機能回路５４０への入力のために５ビットを用いて、２５又は３２のサンプルが可能である。モジュロ３回路を用いて３つのキャッシュバンクへ等しく分散する３２のユニークなサンプルは、バンク０及びバンク１において３４．４％の分散であり、バンク２において３１．２％の分散である場合、１１のアクセスを有するバンク０と、１１のアクセスを有するバンク１と、１０のアクセスを有するバンク２との結果になるであろう。
【００３９】
オプションの選択信号５２９は、モジュロ機能回路５４０内の複数のモジュロ変換演算のうちの１つを選択するために利用されうることが注目されるべきである。そして、オプションの選択信号５２９は、４を超えるメモリバンクが存在し、かつ、キャッシュとして現在設定されているメモリバンクの数が、２の累乗ではない状況で利用されるだろう。例えば、８つのメモリバンクがあり、それらのバンクのうちの６つだけがキャッシュとして利用される場合、オプションの選択信号５２９は、モジュロ機能回路５４０内のモジュロ６回路を選択するだろう。モジュロ機能回路５４０は、モジュロ３、モジュロ５、モジュロ６、及びモジュロ７を取り扱うための典型的な回路を含むだろう。しかしながら、８を越えるメモリバンクサイズのために、他のモジュロ機能がサポートされうる。
【００４０】
入力５２５Ｄが選択された場合、４つのバンクがキャッシュとして設定される。この例では、４つのキャッシュバンクのうち、次のキャッシュ一致演算をイネーブルする何れか１つのキャッシュを選択するために、到来アドレスのビット１５及び１４が利用される。この直接選択可能機能は、ビット選択可能な機能の別の例である。
【００４１】
図６は、本発明の教示に従ってキャッシュメモリとして割り当てられるメモリバンク数を操作する方法６００を例示するフローチャートである。ステップ６１０では、この方法は、どのメモリバンクが現在キャッシュとして設定され、もしあれば、どのメモリバンクが現在ローカルメモリとして設定されているかを追跡する。ステップ６２０では、この方法は、例えばモジュロ機能回路５４０によって提供されるバンク分散機能のように、キャッシュアクセス用のメモリバンクを選択するために使用されるバンク分散機能を提供する。ステップ６７０では、２つの並列したメモリアクセス経路のうちの１つが起こりうる。第１のアクセス経路では、到来アドレスが、ローカルメモリアドレスライン３０７を介して到着し、メモリに対するキャッシュアクセスがないことを示す。この状況は、１又は複数のメモリバンクがローカルメモリとして設定されていると想定する。この場合、方法はステップ６８０に進む。ステップ６８０では、選択されるメモリバンクが、到来アドレスの値によって決定される。到来アドレスが、メモリバンクによって定められたアドレスの範囲内にある場合、メモリバンクが選択される。ローカルメモリバンクにアクセスした後、方法はステップ６７０に進み、アドレスライン３０７又は３０３を介した次の到来アドレスを待つ。
【００４２】
第２のアクセス経路では、到来アドレスが、アドレスライン３０３を介して到着し、キャッシュアクセスを示す。第２のアクセス経路では、ステップ６７０はステップ６３０に移る。ステップ６３０では、到来アドレスを受け取ると、方法６００は、どのメモリバンクがキャッシュとして設定されるかを判定する。それを行っている間、キャッシュアクセス用の特定のキャッシュメモリバンクを選択するためのバンク分散機能も決定される。ステップ６４０では、適切なキャッシュバンクを選択しイネーブルするために、方法６００は、到来アドレスに対してバンク分散機能を適用する。ステップ６５０では、方法６００は、適切なキャッシュバンク内にキャッシュタグ及びキャッシュデータを有するキャッシュラインを選択するために、到来アドレスの第１の部分を利用する。ステップ６６０では、方法６００は、キャッシュヒット又はキャッシュミスがあるかを判定するために、到来アドレスの第２の部分を、キャッシュタグと比較する。キャッシュアクセスを完了すると、方法はステップ６７０に進み、アドレスライン３０３又は３０７を介して次の到来アドレスを待つ。
【００４３】
本発明は実施形態に関して説明されているが、上記説明、及び特許請求の範囲と一貫した種々の広範な実施が、当業者によって適用されうることが認識されるだろう。
【図面の簡単な説明】
【００４４】
【図１】図１は、本発明の実施形態が有利に適用されうる典型的な無線通信システムの例示である。
【図２】図２は、本発明の実施形態が有利に適用されうるプロセッサ複合体の例示である。
【図３】図３は、本発明の実施形態に従ったキャッシュ複合体の例示である。
【図４】図４は、図３に示すキャッシュ複合体の典型的な動作を図示するブロック図である。
【図５】図５は、本発明の実施形態に従ったバンクセレクタの典型的な動作を図示するブロック図である。
【図６】図６は、本発明の実施形態に従ってキャッシュメモリとして割り当てられるメモリバンクの数を操作する方法を図示するフローチャートである。
【図１】
2008529132.tif 000003
【図２】
2008529132.tif 000004
【図３】
2008529132.tif 000005
【図４】
2008529132.tif 000006
【図５】
2008529132.tif 000007
【図６】
2008529132.tif 000008
【国際調査報告】
2008529132.tif 000009
2008529132.tif 000010