携帯電話、ラップトップコンピュータ、携帯情報端末(personal digital assistant)(PDA)などのような多くのポータブル製品は、通信およびマルチメディアプログラムのようなプログラムを実行するプロセッサを利用する。そのような製品の処理システムは、命令およびデータを記憶するためのプロセッサおよびメモリコンプレックス(memory complex)を含む。大容量メインメモリは、一般的に、プロセッササイクル時間と比較して、遅いアクセス時間を有している。結果として、メモリコンプレックスは、従来、プロセッサと最も近くに位置する最も高いパフォーマンスおよび最も低い容量キャッシュを有するキャッシュメモリの容量およびパフォーマンスに基づいた階層に構成されている。例えば、レベル1命令キャッシュおよびレベル1データキャッシュは、一般に、プロセッサに直接アタッチ(attach)されるであろう。そしてレベル2ユニファイキャッシュ(unified cache)は、レベル1(L1)命令およびデータキャッシュに接続される。さらに、システムメモリは、レベル2(L2)ユニファイキャッシュに接続される。レベル1命令キャッシュは、一般に、プロセッサの速度で動作し、レベル2ユニファイキャッシュは、レベル1キャッシュより遅く動作するがシステムメモリより速いアクセスタイムを有している。他のメモリ構成は、例えば、レベル1およびレベル2キャッシュに加えてレベル3キャッシュを有するメモリ階層に多い。他のメモリ構成は、レベル1キャッシュおよびシステムメモリのみを使用することがある。
メモリ構成は、包含的キャッシュ(inclusive cache)、狭義包含的キャッシュ(strictly inclusive cache)、排他的キャッシュ(exclusive cache)、またはこれらのキャッシュタイプの組み合わせとして動作するキャッシュの階層から構成されることがある。ここの定義によって、互いに排他的な任意の2つのレベルのキャッシュは、同じキャッシュラインを含むことができない。互いに包含的な任意の2つのレベルのキャッシュは、同じキャッシュラインを含むことができる。互いに狭義に包含的な任意の2つのレベルのキャッシュは、より大きなキャッシュ、通常、上位レベルのキャッシュがより小さなキャッシュ、通常、下位レベルのキャッシュにおける全てのラインを含まなければならないことを意味する。3つ以上のマルチレベルキャッシュメモリ構成において、任意の2つ以上のキャッシュレベルは、排他的のように1つのタイプのキャッシュとして作動することがあり、残りのキャッシュレベルは、包含的のように1つの他のタイプのキャッシュとして動作することがある。
命令キャッシュは、一般に、命令キャッシュにおいて単一のアドレスに位置する複数の命令をサポートするように構築される。データキャッシュは、一般に、データキャッシュにおいて単一のアドレスに位置する複数のデータユニットをサポートするために構築される、ここでデータユニットはプロセッサに依存するバイトの可変数であることがある。この複数の命令およびデータユニットは、一般に、キャッシュラインまたは単にラインと呼ばれる。例えば、プロセッサは、L1キャッシュからの命令またはデータユニットをフェッチし、命令またはデータユニットはキャッシュにおいて存在する場合、「ヒット(hit)」が生じ、命令またはデータユニットがプロセッサに提供される。命令またはデータユニットがL1キャッシュにおいて存在しない場合、「ミス(miss)」が生じる。ミスは、キャッシュラインにおいていかなる場所の命令またはデータユニットアクセスに生じることがある。ミスが生じたとき、キャッシュにおけるラインは、ミスされた命令を含む新しいラインと置換される。置換手段は、どのキャッシュラインと置換するか決定するために使用される。例えば、最も使用されていないキャッシュラインを選択するかビクティムすることは、最低使用頻度(least recently used)(LRU)手段を表す。置換するように選択されたキャッシュラインは、ビクティムキャッシュラインである。
キャッシュラインは、さらに、有効ビットおよびダーティ(dirty)ビットのような多数のステータス(status)ビットと関連されることがある。有効ビットは、命令またはデータがキャッシュラインにおいて存在するか示す。デーティビットは、キャッシュラインへの変更が生じたかどうかを示す。ライトバック(write-back)キャッシュにおいて、ダーティビットは、キャッシュラインが置換されることになっているとき、メモリシステム階層における次のより上位メモリレベルに変更がライトバックされる必要があるか示す。
ビクティムキャッシュは、レベル1キャッシュのようなキャッシュに接続された、または、隣接する上位レベルキャッシュに一体化された別個のバッファであることがある。ビクティムキャッシュラインは、ビクティムラインが立ち退かせられる直後に必要であること、および、ビクティムキャッシュからの要求があるときのビクティムランをアクセスすることが上位レベルのメモリ階層からのビクティムラインをアクセスするより早いという想定のもとにビクティムキャッシュにおいて割り当てられることがある。ビクティムキャッシュが隣接する上位レベルのキャッシュにおいて一体化されたと同時に、ラインが下位レベルキャッシュから分離されたとき、および、上位レベルキャッシュに割り当てられたときにキャストアウトが生じ、これにより、下位レベルキャッシュのビクティムをキャッシュする。下位レベルキャッシュは、すべての立ち退かせたライン、ダーティおよび非ダーティ(non-dirty)の両方を上位レベルのキャッシュに送信する。ある場合において、ビクティムラインは、すでにビクティムキャッシュにおいて存在することがあり、すでに存在するラインを再書き込むことは電力を消費し、帯域幅をビクティムキャッシュに低減する。
本開示は、メモリシステムにおける電力要求を低減することがポータブルアプリケーションにとって、および、一般に、処理システムにおける電力要求を低減することにとって重要であることを認識させる。そのような目的に、発明の実施形態は、置換されたキャッシュラインの割り当てを低減するためにトラッキング方法をアドレスする。ラインは、下位レベルキャッシュにおいて置換されるために選択されている。選択されたラインが上位レベルキャッシュに存在することを示す選択されたラインに関連した情報は、識別される。上位レベルキャッシュにおける選択されたラインの割り当ては、識別された情報に基づいて防がれる。選択されたラインの割り当てを防ぐことは、割り当てに関連するであろう電力を蓄える。
発明の他の実施形態は、キャストアウトを低減する方法をアドレスする。レベルXキャッシュにおけるミスに応じて、割り当て情報は、ミスに関連したキャッシュラインのタグのレベルXキャッシュにおいて保管される。割り当て情報は、キャッシュラインがレベルX+1キャッシュにおいて割り当てられていたかどうかを示す。ラインは、レベルXキャッシュにおいて置換されるために選択される。レベルXキャッシュからレベルX+1キャッシュまでの選択されたキャストアウトは、レベルX+1キャッシュにおいてキャッシュラインが割り当てられたことを示す選択されたラインの割り当て情報に応じて防がれる。
発明の他の実施形態は、複数のキャッシュレベルを有するメモリシステムをアドレスする。下位レベルキャッシュは、複数の第1キャッシュラインのそれぞれを割り当てビットで記憶するように構成される。複数の第1キャッシュラインのうち1つに関連した割り当てビットは、複数の第1キャッシュラインのうち1つが上位レベルのキャッシュにおいて割り当てられたどうかを示す。キャストアウトロジック回路は、複数の第1キャッシュラインからの置換のために選択された第1キャッシュラインが、選択された第1キャッシュラインに関連する割り当てビットに基づいた上位レベルキャッシュにおけるキャッシュラインで過多のキャッシュラインかどうかを決定するように構成される。上位レベルキャッシュへ選択された第1キャッシュラインのキャストアウトは、選択された第1キャッシュラインの割り当てビットに応じて防がれる。
本発明の他の実施形態が、発明の様々な実施形態が示され、例として説明された次の詳細な記述から当業者に容易に明白になるであろうことは理解される。理解されるように、発明は、本発明からすべて外れることなく、他のおよび異なる実施形態があり、そのそれぞれ細部が様々の他の点において変更することできる。したがって、図面および詳細な説明は、限定的ではなく、本質的な例としてみなされることになっている。
添付された図面と関連して下記に説明された詳細な説明は、本発明の様々な典型的な実施形態の説明として意図され、本発明が実施されることがある実施形態のみを表すことを意図していない。詳細な説明は、本発明の理解を提供する目的で特定の詳細を含む。しかしながら、当業者にとって、本発明がこれらの特定の詳細なしで実施されることがあることは明白になるであろう。ある場合において、よく知られている構成および要素は、本発明の概念を不明瞭にすることを防ぐためにブロック図の形式で示される。
図1は、発明の実施形態が有利に用いられることがある典型的な無線通信システム100を示す。例として、図1は、3つのリモートユニット120、130ならびに150、および、2つの基地局140を示す。共通の無線通信システムがより多くのリモートユニットおよび基地局を有することがあることが認識されるであろう。リモートユニット120、130および150は、コンポーネント125A、125Cおよび125Bとしてそれぞれ表されるハードウェアコンポーネント、ソフトウェアコンポーネントまたは両方を含む、それはさらに下記に述べられるような発明を具体化するのに適している。図1は、基地局140からリモートユニット120、130および150への順方向リンクシグナル180、および、リモートユニット120、130および150から基地局140への逆方向リンクシグナル190を示す。
図1において、リモートユニット120は携帯電話として示され、リモートユニット130はポータブルコンピュータとして示され、リモートユニット150は無線ローカルループ(wireless local loop)システムにおける固定されたロケーションリモート(fixed location remote)ユニットとして示される。例として、リモートユニットは、一方で、個人用データアシスタント(personal data assistant)、またはメータ読み取り機器のような固定されたロケーションデータ(location data)ユニットのような携帯電話、ページャ、ウォーキートーキ(walkie talkies)、ハンドヘルド個人用通信システム(handheld personal communication systems)(PCS)ユニット、ポータブルデータユニットであることがある。図1は、開示の教えによってリモートユニットを示すが、開示はこれらの典型的に示されたユニットに限定されていない。発明の実施形態は、レベル1キャッシュおよびレベル2キャッシュのようなメモリ階層の少なくとも2つのレベルを備えたプロセッサを有する任意の装置で適切に実施されることがある。
図2は、キャストアウトが低減される典型的なプロセッサおよびメモリコンプレックス200の機能的なブロック図である。典型的なプロセッサおよびメモリコンプレックス200は、プロセッサ202、L1キャッシュラインアレイ204およびL1キャッシュコントロールユニット206を備えたレベル1のキャッシュ(L1キャッシュ)203、包含的レベル2キャッシュ(L2キャッシュ)208、およびシステムメモリ210を含む。L1キャッシュコントロールユニット206は、セットアソシエイティブ(set associative)キャッシュまたは完全アソシエイティブ(fully associative)キャッシュのような様々なタイプのキャッシュにおいて使用されることがあるように、タグのマッチングするためのキャストアウトロジック回路212およびレベル1コンテントアドレス指定可能メモリ(content addressable memory)(L1 CAM)を含む。プロセッサコンプレックスに接続されることがある周辺装置は、説明の明瞭さのために示されていない。典型的なプロセッサおよびメモリコンプレックス200は、キャッシュ203ならびに208およびシステムメモリ210に記憶されたプログラムコードを実行するためのコンポーネント125A−Cにおいて発明の様々な実施形態において適切に実施されることがある。
L1キャッシュラインアレイ204は、キャッシュライン215−217のような複数のラインを含むことがある。1つの実施形態において、L1キャッシュ203は、各ラインが複数のデータユニットから構成されたデータキャッシュである。他の実施形態において、L1キャッシュ203は、各ラインが複数の命令から構成された命令キャッシュである。さらなる実施形態において、L1キャッシュ203は、各ラインが複数の命令またはデータユニットから構成されたユニファイド(unified)キャッシュである。例えば、各ラインは、インスタンス化(instantiated)されたキャッシュの実施形態に適切である複数の要素(U0、U1、…、U7)218−225のそれぞれから構成されている。各ラインと関連するのは、さらに下記で詳しく説明されるように、タグ226、ダーティビット(D)228、力置換キャストアウトビット(force replacement castout)(FRC)230である。キャッシュライン215−217は、ラインアドレス231−233のそれぞれにおけるL1キャッシュラインアレイ204で存在する。L1キャッシコントロールユニット206は、キャッシュラインにアクセスするためにI/DAインターフェース235で受信された命令アドレスまたはデータアドレス(I/DA)234に応答するアドレスコントロールロジックを含む。I/DA234は、タグ236、ラインアドレスフィールド(line address field)238、命令/データ「U」フィールド240、およびバイト「B」フィールド242によって構成されることがある。
典型的なプロセッサおよびメモリコンプレックス200において命令またはデータユニットをフェッチするために、プロセッサ202は、フェッチされる望ましい命令/データの命令/データアドレス(I/DA)234を生成し、フェッチアドレスをL1キャッシュコントロールユニット206へと送信する。受信されたI/DA234に基づいて、L1キャッシュコントロールユニット206は、命令またはデータがL1キャッシュラインアレイ204において存在するかどうかをチュックする。このチェックは、例えば、I/DA234によって選択されたライン215と関連したマッチングするタグをチェックする比較ロジックの使用を通じて、遂行される。命令またはデータが存在する場合、マッチまたはヒットが生じ、L1キャッシュコントロールユニット206はL1キャッシュ203において命令またはデータが存在することを示す。命令またはデータが存在しない場合、マッチまたはミスが見つからなく、L1キャッシュコントロールユニット206はL1キャッシュ203において命令またはデータが存在しないというミス指示を提供する。
命令またはデータが存在する場合、命令/データフェッチアドレスにおける命令またはデータは、L1キャッシュラインアレイ204から選択される。その後、命令またはデータは、命令/データアウトバス(instruction/data out bus)246でプロセッサ202に送信される。
命令/データがキャッシュにおいて存在しない場合、ミス情報はミスが生じたことを示すミスシグナル248によってL2キャッシュ208に提供される。L1キャッシュ203においてミスを発見する際に、L2キャッシュ208からの望ましい命令/データをフェッチする試みがなされる。L2キャッシュ208において望ましい命令/データが存在する場合、それはメモリバスインターフェース(memory bus interface)250で提供される。L2キャッシュ208において望ましい命令/データが存在しない場合、それはシステムメモリ210からフェッチされる。
L2キャッシュ208からの力置換キャストアウト(force replacement castout)(FRC)シグナル254は、メモリバスインターフェース250で送信された命令/データとともに下位L1キャッシュ203に送信される。FRCシグナル254は、上位レベルL2キャッシュ208におけるヒットによって供給された命令/データが得られたどうかを示す。例えば、「0」状態のFRCシグナル254は、望ましい命令/データがL2キャッシュ208から供給されたことを示す。「1」状態のFRCシグナル254は、望ましい命令/データがシステムメモリ210からのように、L2キャッシュ208の上の他のレベルのメモリから供給されたことを示す。FRCシグナル254は、例えば、ライン216−217のような、適切なキャッシュラインと関連したタグに沿ってFRCビット256−258としてL1キャッシュ203において記憶される。要求されたラインがL2キャッシュ208およびL1キャッシュ203におけるミスであるとき、L1キャッシュ203がL2キャッシュ208の上の次のレベルのメモリによって供給されるのに対して、L2キャッシュ208はミスのときにおけるラインに割り当てられない。
下位レベルキャッシュがラインを置換しなければならないとき、ラインは下位レベルのキャッシュにおけるラインとともに記憶された情報に応答して次のレベルのキャッシュにおいて割り当てられることがある。例えば、「1」状態のダーティビット259によって示されるように、L1キャッシュ203のような下位レベルのキャッシュがダーティ指示とともにキャッシュライン215のような置換されるラインを選択する場合、キャストアウトロジック回路212は、キャッシュライン215が次のレベルのメモリ階層に割り当てられるように決定をする。「0」状態のダーティビット260を備えたキャッシュライン216のようにダーティでなくキャッシュラインが置換されるために選択され、アクティブ、例えば、「1」状態に設定された関連したFRCビットを有している場合、キャッシュライン216は、さらに次のレベルのメモリ階層に割り当てられる。FRCビット256がそのディレクトリにおいてラインが見つからなかった次のレベルのメモリ階層によって提供されたFRCシグナル254指示に応じてアクティブに設定される。「0」状態においてそのダーティビット261を備えたキャッシュライン217のように、置換するために選択されたキャッシュラインがダーティでなく、アクティブ、例えば、「0」状態に設定された関連するFRCビット258を有している場合、キャッシュライン217は、次のレベルのメモリ階層に割り当てられない。キャストアウトは、ラインがダーティでなく、FRCビット258がその非アクティブ状態によって、このキャッシュライン217が次のレベルのメモリ階層に存在すると示すため要求されない。つまり、上位レベルキャッシュは、ダーティビットが設定、または、FRCビットが設定されるとき、下位レベルにおける置換されたキャッシュラインに応答してキャッシュラインを割り当てる。FRCビットのそのような使用を通じて、過多のキャストアウトは、上位レベルのメモリ階層への不必要なアクセスを防ぐことによって抑えられる、その結果、電力およびアクセスサイクルを蓄える。
図3は、キャストアウトを低減するためのプロセス300を示すフロー図である。プロセス300において、メモリレベルは、インデックス(X)、(X+1)または(X+2)によって示される、ここで、例えば、X=1でL1,L2およびL3メモリレベルが示されることがある。さらに、プロセス300のブロックの説明は、図2における機能的な要素の参照番号を含む。
プロセス300は、ブロック302において命令またはデータユニットをフェッチするプロセッサ202のようなプロセッサで始まる。決定ブロック304において、要求された命令/データがL1キャッシュ203のようなL(X)キャッシュに位置することができるかどうか決定される。命令/データが位置することができる場合、要求された命令/データがブロック306でL(X)キャッシュからフェッチされ、命令/データがブロック308でプロセッサに戻る。
命令/データがL(X)キャッシュに位置することができない場合、ミス指示が生成され、ブロック310において要求された命令/データがL2キャッシュ208のようにL(X+1)キャッシュにおいて位置することができるかどうかを判断する。命令/データが位置することができる場合、要求された命令/データがブロック316でL(X+1)キャッシュからフェッチされる。ブロック318において、FRCビット258のような力置換キャストアウト(FRC)は、L1キャッシュ203がL2キャッシュ208にこの命令/データを送信することを防ぐために、L1キャッシュ203のキャッシュライン217に関連するようなタグラインで「0」状態に設定される。
ブロック310に戻って、命令/データがL(X+1)キャッシュにおいて位置することができない場合、ミス指示が生成される。ブロック312において、要求された命令/データは、プロセッサおよびメモリコンプレックス200のL3キャッシュまたはシステムメモリ210のように、L(X+2)レベル以上のメモリ階層のレベルからフェッチされる。ブロック314において、FRCビット、例えば、FRCビット256は、「1」
状態に設定され、キャッシュライン216のように、選択されたラインに関連したタグとともに記憶される。
決定ブロック320において、L1キャッシュ203のように、L(X)キャッシュにおいてラインが置換されるべきかどうか決定される。L(X)においてラインが置換されるべきことが決定した場合、それはさらに決定ブロック322において、「1」状態のダーティビットによって指示されるように、選択ライン、ビクティムラインがダーティかどうか決定される。選択されたビクティムラインがダーティである場合、ビクティムラインは、L2キャッシュ208のように、L(X+1)においてブロック324で割り当てられる。ダーティビット260および261によって指示されるように、選択されたビクティムラインがダーティでない場合、FRCビットは、決定ブロック326においてアクティブに設定されているかどうか決定するためにチェックされる。FRCビットのケースのように、決定ブロック326においてFRCビットがアクティブであると決定された場合、ビクティムラインは、L2キャッシュ208のように、L(X+1)キャッシュにおけるブロック324で割り当てられる。
決定ブロック320においてラインが置換されるべきでないと決定された場合、または、決定ブロック326において「0」状態のように、FRCビットが非アクティブであると決定された場合、FRCビットのケースであるように、L1キャッシュ203のように、要求された命令/データがL(X)キャッシュにおいてブロック328で割り当てられる。要求された命令/データは、さらに、ブロック330においてプロセッサ202のような要求プロセッサに戻る。そのような方法において、L(X+1)キャッシュへの過多のキャストアウトが防がれ、それによって電力を蓄え、メモリ階層においてキャッシュアクセス帯域幅が改善する。
本明細書に開示された実施形態と関連して説明された様々な例となるロジカルブロック、モジュール、回路、要素、および/または構成は、汎用プロセッサ(general purpose processor)、デジタルシグナルプロセッサ(digital signal processor)(DSP)、特定用途向け集積回路(application specific integrated circuit)(ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array)(FPGA)または他のプログラミング可能なロジック構成要素、ディスクリートゲート(discrete gate)またはトランジスタロジック、ディスクリートハードウェア(discrete hardware)構成要素、または、本明細書で説明された機能を実行するように設計されたそれらの任意の組み合わせ、とともに実装または実行されることがある。汎用プロセッサは、マイクロプロセッサであることがあるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または、定常マシンであることがある。プロセッサは、計算デバイスの組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPのコアと接続された1つ以上のマイクロプロセッサ、または他の任意のそのような構成として実施されることもある。
本明細書に開示された実施形態と関連して説明された方法は、ハードウェア、プロセッサによって実行されたソフトウェアモジュール、または2つの組み合わせに直接実施されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または、当業者において知られている記憶媒体の形式に存在してもよい。記憶媒体は、記憶媒体からプロセッサが情報を読み込み、記憶媒体に情報を書き込むことができるようなプロセッサにつながれることがある。代替として、記憶装置は、プロセッサと一体的であることがある。
発明が、命令キャッシュ、データキャッシュ、および他のタイプのキャッシュについての実施形態の例のコンテキストに示される一方で、上述した説明および下記に続く請求項と一致する通常の当業者によって様々な広いインプリメンテーションが使用されることが認識されるであろう。