(57)【要約】  プロセッサ（５１）は、フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路（５４）、第１のレベルのキャッシュ（Ｌ１）、第１のレベルのキャッシュに結合された第２のレベルのキャッシュ（Ｌ２）、ならびに第１および第２のレベルのキャッシュに動作するように結合された制御論理演算回路を備える。制御論理演算回路は、好ましくは、第１の型の命令についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが第１のレベルのキャッシュに対し実行されるようにするが、第２の型の命令については第１のレベルのキャッシュに対しラインフィルが実行されるのを禁止する。
2008542880.tif 000002
【特許請求の範囲】
【請求項１】
データ・プロセッサ装置であって、
フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路と、
第１のレベルのキャッシュと、
前記第１のレベルのキャッシュに結合された第２のレベルのキャッシュと、
前記第１および第２のレベルのキャッシュに動作するように結合され、第１の型の命令についてキャッシュ・ミスが発生した後前記第１のレベルのキャッシュに対しキャッシュ・ラインフィルが実行されるようにし、第２の型の命令については前記第１のレベルのキャッシュに対しラインフィルが実行されることを禁止する、制御論理演算回路とを備えるデータ・プロセッサ装置。
【請求項２】
前記制御論理演算回路は、前記第１の型の命令を実行するプロセッサ命令実行論理演算ユニットと前記第２の型の命令を実行するコプロセッサとを備える請求項１に記載の装置。
【請求項３】
前記コプロセッサは、実行論理演算ユニットに結合された命令キューを備え、前記コプロセッサは、さらに、データ・ロード・キューを備える請求項２に記載の装置。
【請求項４】
前記第１および第２の型の命令は、第１および第２の型のロード命令を含み、前記制御論理演算回路は、第３の型であるストア命令により第１のレベルのキャッシュにキャッシュ・ミスが発生した場合、前記第１のレベルのキャッシュへのラインフィルが実行されるのを禁止するが、第４の型であるストア命令により第１のレベルのキャッシュにキャッシュ・ミスが発生した場合は、前記第１のレベルのキャッシュへのラインフィルが実行されるのを許可する請求項１から３のいずれかに記載の装置。
【請求項５】
さらに、第１および第２の命令実行論理演算ユニットを備え、前記の第１の型の命令は、前記第１の命令実行論理演算ユニットにより処理されるデータをターゲットとし、前記の第２の型の命令は、前記第２の命令実行論理演算ユニットにより処理されるデータをターゲットとする請求項１から３のいずれかに記載の装置。
【請求項６】
さらに、前記第２のレベルのキャッシュに結合された第３のレベルのキャッシュを備え、前記制御論理演算回路は、前記第１または第２の型の命令についてキャッシュ・ミスが発生した後、前記第１および第２のレベルのキャッシュにキャッシュ・ラインフィルが実行されるようにするが、第３の型の命令については前記第１および第２のレベルのキャッシュに対しラインフィルが実行されることを禁止する請求項１から３のいずれかに記載の装置。
【請求項７】
請求項１に記載の装置を含んだ通信システムであって、
通信トランシーバと、
前記第２のレベルのキャッシュに結合された前記第１のレベルのキャッシュを備える、前記通信トランシーバに動作するように結合されたキャッシュ・サブシステムと、
前記第１および第２のレベルのキャッシュに動作するように結合されたロード／ストア・ユニットを備える前記デコード論理演算回路とを備え、
前記制御論理演算回路は、前記第１および第２のレベルのキャッシュに動作するように結合されたコプロセッサを備え、
前記ロード／ストア・ユニットは、第１の型の命令についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが前記第１のレベルのキャッシュに対し実行されるようにし、前記コプロセッサは、第２の型の命令について前記第１のレベルのキャッシュに対しラインフィルが実行されるのを禁止する通信システム。
【請求項８】
携帯電話を含む請求項７に記載のシステム。
【請求項９】
方法であって、
オペコードに基づいて命令の型を判定することと、
命令が第１の型であり、その結果第１のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを前記第１のレベルのキャッシュに対し実行することと、
命令が第２の型であり、その結果前記第１のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを前記第１のレベルのキャッシュに対し実行しないこととを含む方法。
【請求項１０】
さらに、前記命令が前記第２の型であり、その結果前記第１のレベルのキャッシュに対しキャッシュ・ヒットが生じた場合に、前記第１のレベルのキャッシュからデータをロードすることを含む請求項９に記載の方法。
【請求項１１】
前記命令は、ロード、ストア、ダイレクト・メモリ・アクセス、またはプリフェッチを含む請求項８または９に記載の方法。
【請求項１２】
命令の型を判定することは、前記命令の中の演算コードの少なくとも一部を調べることを含む請求項８または９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信システムにおいて有用なマイクロプロセッサ・キャッシュ装置および方法に関する。
【背景技術】
【０００２】
（背景）
オンチップ・キャッシュは、様々なマイクロプロセッサ設計において使用されており、頻繁に使用される情報を高速オンチップ・キャッシュ・メモリに格納することにより性能を向上させる。プログラム実行時に情報を素早く取り出せるため、性能が向上する。システムによっては、複数のキャッシュ・レベルを有するものがある。「Ｌ１」キャッシュは、典型的には、比較的小さいが、アクセス・タイムは、非常に高速である。「Ｌ２」キャッシュは、典型的には、Ｌ１キャッシュよりも大きいが、Ｌ１キャッシュよりも遅いアクセス・タイムを有する。
【０００３】
ターゲット・メモリ・ロケーションからデータを取り出そうとする、「ロード」命令の場合、プロセッサは、まず最初に、ターゲット・データがすでにＬ１キャッシュ内に入っているかどうかを判定する。データがＬ１キャッシュ内にある場合（キャッシュ「ヒット」と呼ばれる）、ターゲット・データは、Ｌ１キャッシュから取り出される。データがＬ１キャッシュ内にない場合（キャッシュ「ミス」と呼ばれる）、プロセッサは、次に、ターゲット・データがＬ２キャッシュ内にあるかどうかを判定する。もしあれば、ターゲット・データが、Ｌ２キャッシュから取り出される。最後に、ターゲット・データが、Ｌ１およびＬ２キャッシュのいずれにもない場合、ターゲット・データは、Ｌ１またはＬ２キャッシュのいずれよりも大きく、また遅い、システム・メモリから取り出される。
【０００４】
いくつかのシステムでは、ロード命令でＬ１キャッシュにキャッシュ・ミスが発生すると、ターゲット・データが現在置かれているどんな場所（Ｌ２キャッシュまたはシステム・メモリ）からもＬ１キャッシュにコピーされる。一般に、キャッシュ・ミスは、性能を損なうが、キャッシュ・ヒットは、性能を高める。一般に、Ｌ１および／またはＬ２キャッシュ・ミスが発生すると、プロセッサはデータが返されるのを待って、それから後続の命令を実行しなければならないため、プロセッサの性能が損なわれる。ターゲット・データを最速のＬ１キャッシュ・メモリ内に入れることにより、その後データが必要になっても、Ｌ１キャッシュから素早く応じられる。ターゲット・データをＬ１キャッシュに入れることは、複数クロック・サイクルを要するかなり大がかりなプロセスであるが、データがいったんＬ１キャッシュに入ってしまえば、その後そのデータにアクセスする場合に有利に働きうる。こうして、性能を改善することができる。
【０００５】
キャッシュ・システムでは、２つの効果−時間局所性と空間局所性−を利用する。時間局所性とは、１つのデータが一度、アクセスされた後、その同じデータが、近々再び必要とされる可能性のあることを意味する。空間局所性とは、１つのデータが一度、アクセスされた後、近隣データ（例えば、連続するメモリ・ロケーション内のデータ）が、近々アクセスされる可能性のあることを意味する。データがＬ１キャッシュにコピーされる場合、ターゲット・データは、隣接して囲むデータとともに、Ｌ１キャッシュの１「ライン」のところにコピーされる。このプロセスは、空間局所性の程度が高いデータ・セットにおいて生じうる、隣接データがその後必要になる場合に、システム性能を改善する。
【０００６】
空間および／または時間局所性が比較的低いデータ・セットは、キャッシュ・メモリを「汚染する」傾向がある。このことは、一部のデータがキャッシュ内に格納されることがあるが、近々必要とされる可能性がないということを意味する。このようなデータは、もしこのデータが占有していなかったならこのデータに比べてキャッシュの利用に適したデータが占有できたであろう領域を占有する。この問題は、Ｌ１キャッシュについては、Ｌ１キャッシュのサイズが比較的小さいことから、特に厄介である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
（概要）
様々な実施形態が、上記の課題の１つまたは複数を解決することを目的として開示されている。
【課題を解決するための手段】
【０００８】
一実施形態では、プロセッサは、フェッチされたそれぞれの命令について命令の型を判定するデコード論理演算回路、第１のレベルのキャッシュ、第１のレベルのキャッシュに結合された第２のレベルのキャッシュ、ならびに第１および第２のレベルのキャッシュに動作するように結合された制御論理演算回路を備える。制御論理演算回路では、好ましくは、第１の型の命令（例えば、ロード、ストア、ダイレクト・メモリ・アクセス、プリフェッチ）についてキャッシュ・ミスがあった場合にキャッシュ・ラインフィルが第１のレベルのキャッシュに対し実行されるが、第２の型の命令については第１のレベルのキャッシュに対しラインフィルが実行されるのを禁止する。制御論理演算回路は、第１の型の命令を実行するロード／ストア・ユニット、および第２の型の命令を実行するコプロセッサを備えることができる。一般に、キャッシュ・ミスで、ラインフィルを実行するかどうかは、命令の型（例えば、ＳＩＭＤ命令対非ＳＩＭＤ命令）および／またはコプロセッサまたはロード／ストア・ユニットが命令を実行すべきかどうかによって決まる。
【０００９】
命令の型を判定することを含む方法も開示される。この方法は、命令が第１の型であり、その結果第１のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを第１のレベルのキャッシュに対し実行することを含む。しかし、この方法は、命令が第２の型であり、その結果第１のレベルのキャッシュに対しキャッシュ・ミスが生じた場合に、ラインフィルを第１のレベルのキャッシュに対し実行しないことを含む。他の実施形態では、ロードなどの第２の型の命令は、要求されたデータを外部メモリからロードし（つまり、キャッシュ・サブシステムを関与させずに）、例えば、コプロセッサに送るようにさせることができる。
【００１０】
これらおよび他の実施形態も本明細書で開示されている。
【００１１】
本発明の例示的な実施形態の詳細な説明に関して、付属の図面が参照される。
【実施例】
【００１２】
（表記と命名法）
特定のシステム・コンポーネントを参照するために、以下の説明および請求項全体を通していくつかの用語が使用される。当業者であれば理解するように、企業は、コンポーネントを異なる名称で呼ぶことがある。本明細書は、名称については異なっているが、機能については異なっていないコンポーネント同士を区別することを意図していない。以下の説明、および請求項では、「含む（ｉｎｃｌｕｄｉｎｇ）」および「備える、含む（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、制約を設けずに使用されており、したがって、「限定はしないが、．．．を含む．．．」を意味するものと解釈すべきである。また、「結合する（ｃｏｕｐｌｅまたはｃｏｕｐｌｅｓ）」という用語は、間接的または直接的のいずれかの電気的接続を意味することが意図されている。そのため、第１のデバイスが第２のデバイスに結合する場合、その接続は、直接的電気的接続を通して、または他のデバイスおよび接続を介して間接的電気的接続を通して行ってよい。「システム」という用語は、広い意味で、２つまたはそれ以上のコンポーネントの集合体を指し、システム全体だけでなく、より大きなシステムの背景状況におけるサブシステムを指し示すために使用することができる。
【００１３】
（実施形態の詳細な説明）
以下の説明は、本発明の様々な実施形態を対象とする。これらの実施形態のうちの１つまたは複数が好ましいものである場合があるが、開示されている実施形態は、請求項を含めて、開示の範囲を制限するものとして、解釈されるか、または他の何らかの方法で使用される、ということがあってはならない。それに加えて、当業者であれば、以下の説明は広い範囲にわたって適用され、実施形態の説明はその実施形態を例示することのみを意図し、請求項を含む開示の範囲が、その実施形態に制限されることを暗示することを意図していないことを理解するであろう。
【００１４】
図１は、システム・メモリ６８に結合されたプロセッサ５１を備えるシステム５０の好ましい一実施形態を示している。プロセッサは、好ましくは、フェッチ論理演算回路５２、デコード論理演算回路５４、ロード／ストア・ユニット５６、プロセッサ命令実行論理演算ユニット５８、コプロセッサ６０、およびキャッシュ・サブシステム６２を備える。キャッシュ・サブシステム６２は、第２のレベルのキャッシュ（「Ｌ２」）に結合された第１のレベルのキャッシュ（「Ｌ１」）を備える。少なくとも１つの実施形態によれば、Ｌ１キャッシュは、３２キロバイト・バッファを備えるが、Ｌ２キャッシュは、２５６キロバイト・バッファを備える。
【００１５】
一般に、フェッチ論理演算回路５２は、例えば、システム・メモリ６８から、または他の場所から、命令をフェッチし、フェッチされた命令をデコード論理演算回路５４に送る。デコード論理演算回路５４は、それぞれの命令の中の演算コード（「オペコード」）を調べ、命令が適切に処理されることができるように命令の種類を決定する。一般に、命令には、ロード、ストア、加算、乗算、などがある。ロード命令は、ターゲット・データをメモリから取り出して、プロセッサ内のレジスタ（特に図には示されていない）に送る。ストア命令は、データをメモリ内の特定のアドレスに書き込む。通常理解されているように、加算命令は、２つのオペランドを足し合わせ、乗算命令は、２つのオペランドを掛け合わせる。ダイレクト・メモリ・アクセス（ＤＭＡ）およびプリフェッチなどの他の種類の命令も考えられる。
【００１６】
コプロセッサ６０は、少なくとも１つの命令キュー６１、データ・ロード・キュー６３、および実行論理演算ユニット６５を備える。コプロセッサ６０は、命令をデコードするデコード論理演算回路などの他の論理演算回路も備えることができる。命令キュー６１または実行論理演算ユニット６５は、デコード論理演算回路を備えることができる。コプロセッサ６０は、他のコンポーネントおよび論理演算回路も望むだけ備えることができる。命令キュー６１は、実行論理演算ユニット６５による実行を待つ間、命令実行論理演算ユニット５８を介して受け取った命令（例えば、ロード、ストアなど）を格納するしておくものである。ロード命令によりキャッシュ・サブシステムおよび／またはメモリ６８から取り出されたデータは、実行論理演算ユニット６５により使用されるのを待つ間、ロード・キュー６３に格納される。いくつかの実施形態では、コプロセッサ６０は、単一命令複数データ（「ＳＩＭＤ」）命令を、命令実行論理演算回路５８が非ＳＩＭＤ命令を実行している間に、実行する。一実施形態では、コプロセッサ６０は、ＳＩＭＤ命令を実行することが意図されているが、他の実施形態では、コプロセッサ６０は、他の型の命令を実行することができる。一般に、ロードおよびストア命令は、ロード／ストア・ユニット５６により実行される。キャッシュ・サブシステム６２からのロード・データは、ロード命令の型に応じて、命令実行論理演算回路５８またはコプロセッサ６０に送られる。
【００１７】
いくつかの実施形態では、複数のコプロセッサを備えることができる。図１には、第２のコプロセッサ６９が示されている。２つよりも多いコプロセッサも、望むとおりに備えることができる。また、キャッシュ・サブシステム６２は、単一のＬ１キャッシュおよび単一のＬ２キャッシュだけでなくそれ以上の個数のキャッシュを備えることができる。例えば、複数のＬ２キャッシュを備えることもできる。他の実施例によれば、キャッシュのレベルを増やし、図１に示されているＬ３キャッシュ６７などを備えることができる。図１に示されている３個以外のレベルのキャッシュを追加することもでき、複数の種類のそれぞれのレベルのキャッシュを備えることができる。（複数の）Ｌ２キャッシュは、ストリーム・バッファ、連続アドレス・メモリ空間を有する１ブロック分のランダム・アクセス・メモリ（「ＲＡＭ」）などのメモリ・システムを備えることができる。
【００１８】
非ロード／ストア命令（例えば、加算、乗算など）は、命令の「型」に応じて、命令実行論理演算ユニット５８またはコプロセッサ６０のいずれかに送られる。一般に、第１の型の命令は、命令実行演算論理ユニット５８に送られてさらに処理され、第２の型の命令は、コプロセッサ６０に送られてさらに処理される。命令の型は、命令の演算コード（「オペコード」）を調べることにより確認することができる。ＳＩＭＤ命令は、一般的に、非ＳＩＭＤ命令と区別できるオペコードを有する。少なくともいくつかの実施形態では、命令実行論理演算ユニット５８は、比較的高い空間および／または時間局所性を有する傾向のあるデータに対し演算を実行する整数演算実行ユニットを備える。したがって、命令実行論理演算ユニット５８により演算されるデータは、キャッシュ・サブシステムのＬ１キャッシュ内に格納するのに適している傾向がある。コプロセッサ６０は、比較的低い空間および／または時間局所性を有しうるデータに対し演算を実行する命令あるいは比較的大きなメモリ空間へのアクセスを必要とする、または比較的高い帯域幅を必要とする命令／アプリケーションを実行するが、そのようなものであるため、Ｌ１キャッシュに格納するのに適さない場合がある。このような命令には、ＳＩＭＤ命令、浮動小数点命令、および他のマルチメディアベースの命令がある。
【００１９】
上で導入された第１および第２の型の命令は、ロードおよびストア命令にも当てはまる。第１の型のロードおよびストア命令は、ロード／ストア・ユニット５６に送られてさらに処理され、ロードおよびストアが実行され、第２の型の命令のロードおよびストアは、コプロセッサ６０に送られて実行される。第１の型のロードおよびストアは、命令実行論理演算ユニット５８によりその後使用されるデータをターゲットとし、第２の型のロードおよびストアは、コプロセッサ６０によりその後使用されるデータをターゲットとする。そのようなものとして、ロードまたはストアのターゲット・データは、空間および／または時間局所性が高いまたは低いデータ・セットからのデータとしてよい。さらに、ロードおよびストア・ターゲット・データは、Ｌ１キャッシュに格納するのに適したデータであってもよいし、適していないデータであってもよい。どのデータがＬ１キャッシュの使用に適しているか、どのデータがＬ１キャッシュの使用に適さないかを線引きする空間および／または時間局所性のレベルに制限はいっさい課されない。
【００２０】
いくつかの実施形態では、データを格納するＬ１キャッシュの使用は、データの性質に左右される。比較的低い空間および／または時間局所性を持つデータは、好ましくは、Ｌ１キャッシュに格納されることが禁止される。他のデータはすべて、Ｌ１キャッシュに格納されることが許される。好ましい実施形態によれば、プロセッサ５１は、それぞれのロード命令に関連付けられた型を、ロードのターゲット・データが高いまたは低い空間および／または時間局所性を有しうるかどうかを判定する代用機能として使用する。ロードの第１の型（上述）は、比較的高い時間および／または空間局所性を有する傾向のあるデータに作用するロード（例えば、整数ロード）であることを意味する。このようなターゲット・データは、上で説明されているように命令実行論理演算ユニット５８により使用される。ロードの第２の型は、比較的低い時間および／または空間局所性を有する傾向のあるデータに作用するロード（例えば、ＳＩＭＤロード）であることを意味する。このようなターゲット・データは、上で説明されているように命令実行論理演算ユニット６０により使用される。上述のように、ロードの型は、命令のオペコードから判定される。いくつかの実施形態では、特定のデータがＬ１キャッシュに格納されるかどうかは、データが実行論理演算ユニット５８によってアクセスされ使用されるのか、またはコプロセッサ６０よってアクセスされ使用されるのかによって決まる。そのため、比較的低い空間または時間局所性を有するデータ・セットであっても、そのまま、Ｌ１キャッシュに格納される場合がある。
【００２１】
本発明の好ましい一実施形態によれば、ロード／ストア・ユニット５６は、第１の型に関連付けられているロード命令を処理する。ロード／ストア・ユニット５６は、このようなロードを、コプロセッサ６０により処理される第２の型のロード命令と異なった形で処理する。同様に、ロード／ストア・ユニット５６は、ストアを、コプロセッサ６０により処理される第２の型のストアと異なった形で処理する。ロード／ストア・ユニット５６による処理の違いを引き起こすロードおよびストアの「型」は、上記のものなど適した型であればよい。
【００２２】
ロードが第１の型（例えば、整数ロード）の場合、ロード／ストア・ユニット５６は、以下のように反応する。Ｌ１キャッシュ６４は、ロードのターゲットとなっているデータがＬ１キャッシュにすでに存在するかどうかを判定するためにチェックされる。ロードがＬ１キャッシュ内でキャッシュ・ヒットした場合、データが、Ｌ１キャッシュから取り出される。しかし、Ｌ１キャッシュ内でロードがキャッシュ・ミスした場合、Ｌ２キャッシュがチェックされ、Ｌ１キャッシュへのアクセスは、メモリ参照が解決されるまで避けられる。ロードがＬ２キャッシュ内でキャッシュ・ヒットした場合、Ｌ２キャッシュからＬ１キャッシュへターゲット・データを書き込むために、好ましくは「ラインフィル」操作が実行される。ラインフィルは、ターゲット・データを含むキャッシュ・ライン全体をＬ１キャッシュに書き込むことを含む。本発明の少なくとも１つの実施形態では、キャッシュ・ラインのサイズは、６４バイトである。ロードがＬ２キャッシュ内でキャッシュ・ミスした場合、システム・メモリ６８からデータを取り出してＬ１および／またはＬ２キャッシュ内の対応するラインを埋めるために、ラインフィルが実行される。
【００２３】
ロードが第２の型（例えば、ＳＩＭＤロード）の場合、コプロセッサ６０は、以下のように反応する。Ｌ１キャッシュ６４は、ロードのターゲットとなっているデータがＬ１キャッシュにすでに存在するかどうかを判定するためにチェックされる。ロードがＬ１キャッシュ内でキャッシュ・ヒットした場合、データが、Ｌ１キャッシュから取り出される。しかし、ロードがＬ１キャッシュ内でキャッシュ・ミスした場合、Ｌ２キャッシュがチェックされる。ロードがＬ２キャッシュ内でキャッシュ・ヒットした場合、コプロセッサ６０は、「ラインフィル」操作が実行されるのを禁止するか、またはラインフィルを実行せず、それによりターゲット・データ（比較的低い空間および／または時間局所性を有するデータ・セットに関連しうる）がＬ１キャッシュ内に移動されないようにする。ロードがＬ２キャッシュ内でキャッシュ・ミスした場合、システム・メモリ６８からデータを取り出してＬ２キャッシュ内の対応するラインを埋めるために、ラインフィルが実行されるが、Ｌ１キャッシュに対してはラインフィルは実行されない。それとは別に、ロードがＬ２キャッシュ内でキャッシュ・ミスした場合、外部システム・メモリ６８からデータが返され、いずれのキャッシュ（Ｌ１またはＬ２）もラインフィルは実行されない。第２の型のロードは、コプロセッサのロード・キュー６１により処理される。そのため、Ｌ１またはＬ２キャッシュ・ミスがあっても、そのようなキャッシュ・ミスは、プロセッサ５１が第１の型のロードに対するＬ１キャッシュへのアクセスを止めることはない。したがって、Ｌ２キャッシュの長いアクセスタイムは、いずれの型（上記の第１の型または第２の型）のデータ・アクセスについてもプロセッサの性能に影響を及ぼさない。
【００２４】
第１の型のロードでは、Ｌ１のキャッシュ・ミスの発生後、Ｌ１キャッシュのラインフィルが実行されるが、第２の型のロードでは、Ｌ１のキャッシュ・ミスの発生後、Ｌ１キャッシュへのラインフィルを実行しない。ターゲット・データがたまたまＬ１キャッシュ内にすでにあった場合、例えば、これは、第１の型のロードの結果として生じることがあるが、ターゲット・データは、ロードの型に関係なくＬ１キャッシュから供給される。別の言い方をすると、少なくともいくつかの実施形態では、コプロセッサ６０によりデータが処理されるロード命令はすべて、Ｌ１キャッシュのラインフィルなしで処理される。逆に、命令実行論理演算ユニット５８に関連付けられているすべてのロード命令は、Ｌ１キャッシュ・ラインフィルで処理される。ロード命令の型を判定することは、ロード命令のオペコードの少なくとも一部を調べて、ロードのターゲットとなるデータを処理するのにどの命令実行論理演算ユニットが適しているかを判定することを含むことができる。Ｌ２キャッシュは、事実上、コプロセッサ６０により処理される特定の型のロード命令（例えば、ＳＩＭＤ、浮動小数点、およびマルチメディア命令）に関してＬ１キャッシュとして機能する。そこで、プロセッサ５１では、第１および第２のレベルのキャッシュに動作するように結合し、第１の型のロード命令（例えば、非ＳＩＭＤ命令）についてキャッシュ・ミスが発生した後第１のレベルのキャッシュに対しキャッシュ・ラインフィルが実行されるようにし、第２の型のロード命令（例えば、ＳＩＭＤ命令）については第１のレベルのキャッシュに対しラインフィルが実行されるのを禁止する、制御論理演算回路を備える。制御論理演算回路は、第１の型のロードを処理するプロセッサ命令実行論理演算回路５８、および第２の型のロードを処理するコプロセッサを備える。他の実施形態では、ロード／ストア・ユニット５６により実行される機能は、命令実行論理演算ユニット５８内に組み込むことができる。
【００２５】
いくつかの実施形態では、ストア命令のキャッシュ・ミスの後、ラインフィルは実行されない。他の実施形態では、ストア命令は、上で説明されているようにロード命令と同様に処理することができる。つまり、特定の型（例えば、上記の第１の型）のストア命令は、以下のように取り扱われる。Ｌ１キャッシュ６４は、ストアのターゲットとなっているデータがＬ１キャッシュにすでに存在するかどうかを判定するためにチェックされる。ストアがＬ１キャッシュ内でキャッシュ・ヒットした場合、Ｌ１キャッシュ内でターゲット・データが更新される。しかし、ストアがＬ１キャッシュ内でキャッシュ・ミスした場合、Ｌ２キャッシュがチェックされる。ストアがＬ２キャッシュ内でキャッシュ・ヒットした場合、Ｌ２キャッシュからＬ１キャッシュへターゲット・キャッシュ・ラインを書き込み、次いでストアのデータでＬ１キャッシュを更新するために、「ラインフィル」操作が実行される。ストアがＬ２キャッシュ内でキャッシュ・ミスした場合、システム・メモリ６８からデータを取り出してＬ１および／またはＬ２キャッシュ内の対応するラインを埋め、次いでＬ１キャッシュ内のキャッシュ・ラインをストアのデータで更新するために、ラインフィルが実行される。
【００２６】
ストアが、他の型（例えば、上記の第２の型）である場合、ターゲット・データをＬ１キャッシュに入れるためにＬ１のラインフィルが実行されないことを除き、前の段落で説明されているところから類似のプロセスに続く。Ｌ１キャッシュに関してデータの処理を指示するストアの型は、ロードに関して上で説明されている型と同じであることも異なることもある。例えば、Ｌ１キャッシュ・ラインフィルを引き起こさないロードの型は、これもまたＬ１キャッシュ・ラインフィルを引き起こさないストアの型と同じ（または異なる）場合があり、実行論理演算ユニット５８またはコプロセッサ６０がストアを処理しているかどうかに基づいて決まる。
【００２７】
図２は、好ましい一実施形態によりロードおよびストア命令を処理する方法１００を示している。この方法は、１０２で命令をフェッチし、１０４で命令をデコードすることを含む。命令がロードである場合、この方法は、１０６から継続する。命令がストアである場合、この方法は、１２０から継続する。最初に、ロードの処理について説明し、その後ストアの処理を説明する。
【００２８】
方法１００は、１０６においてロード命令により要求されるデータについてＬ１キャッシュをチェックすることを含む。ロードがＬ１キャッシュ内でキャッシュ・ヒットした場合、決定１０８で判定されたように、制御は、１１０に渡され、そこで、Ｌ１キャッシュからターゲット・データが取り出される。しかし、Ｌ１キャッシュ内にキャッシュ・ミスがある場合、ターゲット・データがすでにＬ２キャッシュ内に存在すると仮定して、要求されたデータは、１１２でＬ２キャッシュから取り出される。そうでない場合、データは、システム・メモリ６８から取り出され、後で使用できるようにコピーがＬ２キャッシュ内に入れられる。この方法は、１１４でロードが第１の型である場合にＬ１キャッシュ・ラインフィルを実行し、ロードが第２の型である場合にそれを実行しないことを含む。上で説明されているように、「第１」の型のロードは、実行論理演算ユニット５８により実行され、および／または比較的高い空間および／または時間局所性を有しうるデータ・セットに作用するロード（例えば、整数ロード）に対応し、「第２」の型のロードは、コプロセッサ６０により実行され、および／または比較的低い空間および／または時間局所性を有しうるデータ・セットに作用するロード（例えば、ＳＩＭＤ、浮動小数点）に対応する。常にではないが、時々ラインフィルを実行するように指示するロードの型の間の他の線引きも可能である。
【００２９】
命令がストアである場合、この方法は、アクション１０４から１２０へ流れ、そこでＬ１キャッシュは、キャッシュ・ヒットしたかどうかについてチェックされる。ストアがＬ１キャッシュ内でキャッシュ・ヒットした場合（判断１２２）、ストアは、１２４で、Ｌ１キャッシュ内の関連するキャッシュ・ラインを更新する。しかし、ストアに対しＬ１キャッシュにキャッシュ・ミスがある場合、命令の型に応じてアクション１２６または１２８が実行される。ストア命令が、第１の型である場合（１２６）、Ｌ１キャッシュへのラインフィルが実行され、関連するキャッシュ・ラインをＬ１キャッシュに入れ、そのラインは、ストア命令のデータで更新される。ストア命令が第２の型である場合（１２８）、Ｌ２キャッシュ内の関連するラインは、更新される（データがすでにＬ２キャッシュ内にあるか、データが、まだＬ２キャッシュに入っていないのであればＬ２キャッシュに入れられると仮定する）。第２の型のストアについては、Ｌ１キャッシュに対しラインフィルは実行されない。他の実施形態では、ストア命令の型に関係なく、ストアからのキャッシュ・ミスの後、ラインフィルは実行されない。
【００３０】
２つよりも多いキャッシュ・レベル（例えば、Ｌ１、Ｌ２、およびＬ３キャッシュ）を有する実施形態では、命令に応じて、様々なレベルのキャッシュを使用し、アクセスすることができる。つまり、Ｌ１およびＬ２キャッシュに関して上で説明されている概念は、追加したキャッシュ・レベルにも拡大適用することができる。命令のオペコードはデコードでき、オペコードに基づいて、特定のキャッシュ・レベルに対し上で説明されているようにキャッシュ・ラインフィルが実行されるか、または実行されない。
【００３１】
例えば、特定の型のロード命令は、以下のように動作しうる。Ｌ１キャッシュがまず最初にチェックされる。要求されたデータが、Ｌ１キャッシュ内にある場合、データは、そこから送られる。Ｌ１がキャッシュ・ミスした場合、Ｌ２キャッシュがチェックされる。要求されたデータが特定の型のデータである場合、Ｌ２キャッシュ内でキャッシュ・ヒットすると、データがＬ２キャッシュから返され、Ｌ１キャッシュに対しラインフィルは実行されない。しかし、Ｌ２がキャッシュ・ミスした場合、Ｌ３キャッシュがチェックされる。要求されたデータが特定の型のデータ（すぐ上で述べた「特定の型」と同じであっても、異なっていてもよい）である場合、Ｌ３でキャッシュ・ヒットすると、データがＬ３キャッシュから返され、Ｌ１またはＬ２キャッシュのいずれかに対しラインフィルは実行されない。それとは別に、Ｌ３のキャッシュ・ヒット後にＬ１キャッシュにラインフィルが実行されるのを禁止することが可能であり、またＬ２キャッシュに対するラインフィルを許可することが可能である。他の型の命令（つまり、ロード、ＤＭＡ、プリフェッチ）に関して上で述べた概念は、このようにして拡張することもできる。
【００３２】
上で述べたように、それぞれの型の複数のキャッシュを備えることが可能である（例えば、複数のＬ２キャッシュ）。したがって、１つの特定のＬ２キャッシュをターゲットとするいくつかの命令は、上で説明されているように、Ｌ１キャッシュ・ラインフィルを禁止または許可するように動作することが可能であるが、異なるＬ２キャッシュをターゲットとする他の命令は、Ｌ１のキャッシュ・ミスおよびＬ２のキャッシュ・ヒットの後、Ｌ１キャッシュに対しラインフィルを常に実行するように動作することが可能である。
【００３３】
いくつかの実施形態では、プロセッサ５０は、一般的に、命令が一般にプログラム順序で実行されることを意味する「ｉｎ−ｏｒｄｅｒ」プロセッサである。しかし、いくつかのＳＩＭＤロード（コプロセッサ６０により実行される）は、複数のメモリ・ロードを完了させる必要がある場合がある。つまり、メモリから取り出されるデータは、第１のロード・サイクルと第２のロード・サイクルとを必要とする場合がある。このような複数のロード・サイクルは、例えば、ターゲット・データのサイズに関してキャッシュ・サブシステム６２へのバスの幅に応じて、必要になることがある。上で説明されているように、パケット・データは、Ｌ１キャッシュ６４内に存在することも、存在しないこともある。さらに、上記の第１のロード・サイクルでは、Ｌ１にキャッシュ・ミスが生じるが、第２のロード・サイクルでは、Ｌ１にキャッシュ・ヒットが生じることがありえる。そのため、この実施例を続けると、第２のロード・サイクルのターゲット・データが、第１のロード・サイクルのＬ１のキャッシュ・ミスのせいで第１のロード・サイクルのターゲット・データの前に返されることがありえる。コプロセッサ６０は、好ましくは、順序が狂っている可能性のある、返されるデータを追跡し、２つのロード・サイクルがターゲット・データを順序の狂ったまま返すにもかかわらず、ロード・データを適切な順序に再配列することができる。
【００３４】
図３は、上で説明されている特徴を含むシステムの例示的な実施形態を示している。図３の実施形態は、電池式無線通信デバイス４１５を含む。図に示されているように、通信デバイスは、一体型キーパッド４１２およびディスプレイ４１４を備える。上で説明されているキャッシュ・サブシステムおよび／または上記キャッシュ・サブシステムを含むプロセッサは、キーパッド４１２、ディスプレイ４１４、および高周波（「ＲＦ」）通信トランシーバ４１６に結合することができるエレクトロニクス・パッケージ４１０に含まれることができる。ＲＦ回路４１６は、好ましくは、アンテナ４１８に結合されており、これにより、無線通信の送信および／または受信を行う。いくつかの実施形態では、通信デバイス４１５は、携帯電話を含む。
【００３５】
上の説明は、本発明の原理および様々な実施形態を例示することが意図されている。上記開示が完全に理解されれば、当業者には、多くの変更形態および修正形態が明白なものとなるであろう。請求されている発明は、このようなすべての変更形態および修正形態を包含するものと解釈することが意図されている。
【図面の簡単な説明】
【００３６】
【図１】本発明の好ましい実施形態によるキャッシュ・サブシステムを有するプロセッサ・アーキテクチャを示す図である。
【図２】好ましい実施形態による方法を示す図である。
【図３】電池式通信デバイスの形態のシステムの一実施形態を示す図である。
【図１】
2008542880.tif 000003
【図２】
2008542880.tif 000004
【図３】
2008542880.tif 000005
【国際調査報告】
2008542880.tif 000006