(57)【特許請求の範囲】
【請求項１】
高時間的参照局所性を有するメモリ内容にアクセスする方法であって、
データバッファに内容を記憶するステップと、
スタックポインタを含むレジスタが、前記データバッファに対するロードとストアのための基本レジスタとして使用されると決定するステップと、
前記データバッファの前記内容が高時間的参照局所性を有することを示すフラグを前記データバッファに設定するステップと、
前記データバッファの前記内容が高時間的参照局所性を有すると前記フラグが示すとき、前記内容を対象とする動作ごとに、キャッシュの代わりに前記データバッファにアクセスするステップと
を含む方法。
【請求項２】
前記データバッファにおけるカウンタを初期化するステップと、
前記データバッファが所定の数のクロックサイクル内でアクセスされた場合、前記カウンタを増分するステップと、
前記データバッファが前記所定の数のクロックサイクル内でアクセスされない場合、前記カウンタを減分するステップと、
前記カウンタが閾値より大きい場合、前記データバッファの前記内容が高時間的参照局所性を有すると決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記カウンタが前記閾値より大きい場合、前記データバッファの割当て解除を防止するステップと、
前記カウンタが前記閾値を下回る場合、前記キャッシュに前記内容を記憶し前記データバッファを割当て解除するステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記データバッファの前記内容が高時間的参照局所性を有することを前記フラグが示す場合、前記データバッファの割当て解除を防止するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記スタックポインタが変化すると、前記高時間的参照局所性を示すフラグを除去するステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記フラグが除去されると、前記キャッシュに前記内容を記憶し前記データバッファを割当て解除するステップをさらに含む、請求項5に記載の方法。
【請求項７】
高時間的参照局所性を有するメモリ内容にアクセスするための装置であって、
データバッファに内容を記憶する手段と、
スタックポインタを含むレジスタが、前記データバッファに対するロードとストアのための基本レジスタとして使用されると決定する手段と、
前記データバッファの前記内容が高時間的参照局所性を有することを示すフラグを前記データバッファに設定する手段と、
前記データバッファの前記内容が高時間的参照局所性を有すると前記フラグが示すとき、前記内容を対象とする動作ごとに、キャッシュの代わりに前記データバッファにアクセスする手段と
を備える装置。
【請求項８】
前記データバッファにおけるカウンタを初期化する手段と、
前記データバッファが所定の数のクロックサイクル内でアクセスされた場合、前記カウンタを増分する手段と、
前記データバッファが前記所定の数のクロックサイクル内でアクセスされない場合、前記カウンタを減分する手段と、
前記カウンタが閾値より大きい場合、前記データバッファの前記内容が高時間的参照局所性を有すると決定する手段と
をさらに備える、請求項7に記載の装置。
【請求項９】
前記カウンタが前記閾値より大きい場合、前記データバッファの割当て解除を防止する手段と、
前記カウンタが前記閾値を下回る場合、前記キャッシュに前記内容を記憶し前記データバッファを割当て解除する手段と
をさらに備える、請求項8に記載の装置。
【請求項１０】
前記データバッファが高時間的参照局所性を有することを前記フラグが示す場合、前記データバッファの割当て解除を防止する手段をさらに備える、請求項7に記載の装置。
【請求項１１】
前記スタックポインタが変化すると、前記高時間的参照局所性を示すフラグを除去する手段をさらに備える、請求項7に記載の装置。
【請求項１２】
前記フラグが除去されると、前記キャッシュに前記内容を記憶し前記データバッファを割当て解除する手段をさらに備える、請求項11に記載の装置。
【請求項１３】
請求項1乃至6の何れか1項に記載の方法を実施するための命令を含む、高時間的参照局所性を有するメモリ内容にアクセスするためのコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2012年1月23日に出願された「PREVENTING THE DISPLACEMENT OF HIGH TEMPORAL LOCALITY OF REFERENCE DATA FILL BUFFERS」と題する仮出願第61/589,577号の優先権を主張する。
【０００２】
本開示は、マイクロプロセッサの電力管理に関し、より詳細には、高時間的参照局所性(high temporal locality of reference)のデータフィルバッファ(data fill buffer)の排除を防止することに関する。
【背景技術】
【０００３】
マイクロプロセッサの状況(context)でロードおよびストアの実行中に、高められた頻度でメモリの比較的小さなウィンドウが書き込まれ読み取られるデータパターンが発生する。そのようなメモリ領域は、高時間的参照局所性を有するといわれる。一例は、ソフトウェアスタックであり、プロシージャが呼び出されまたそれから戻るとき、スタックに対してプッシュ(push)およびプル(pull)がいつも行われる。
【０００４】
高時間的参照局所性を有するメモリ領域は、しばしばページテーブルでキャッシュ可能としてマーク付けされるので、より低い時間的参照局所性を有する領域よりも電力を必要とし、したがって、大きいキャッシュ構造が書き込まれた場合は常に、スタックに対する各プッシュが大きな電力消費をもたらす可能性がある。さらに、一般にフィルバッファの可用度は記憶装置のスループットにつながるため、キャッシュフィルバッファを、高時間的参照局所性を有していないメモリ領域に割り当てられた状態にしておくことは不都合である。加えて、フィルバッファのライフサイクルが管理されない場合、同じメモリ領域に対する複数のフィルバッファの割当ておよび割当て解除(de-allocation)が、時間の経過とともにさらなる電力の問題をもたらすことになる。
【０００５】
これは、モバイルデバイスのマイクロプロセッサのような電力が重要な領域の状況で問題となる。マイクロプロセッサの電力プロファイルは、モバイルデバイスのより長い寿命のバッテリへの需要が高まるとともに、ますます重要となっている。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示は、高時間的参照局所性を有するメモリ内容にアクセスすることに関する。本開示の実施形態は、データバッファに内容を記憶し、データバッファの内容が高時間的参照局所性を有すると決定し、内容を対象とする動作ごとに、内容を記憶するキャッシュの代わりにデータバッファにアクセスする。
【０００７】
添付の図面は、本発明の実施形態の説明を補助するために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【０００８】
【図１】本発明の少なくとも1つの実施形態による例示的なユーザ機器(UE)を示す図である。
【図２】本発明の少なくとも1つの実施形態による例示的なプロセッサの簡略ブロック図である。
【図３】本発明の少なくとも1つの実施形態による例示的なメモリ構造の簡略ブロック図である。
【図４】本発明の少なくとも1つの実施形態による例示的なフローチャートである。
【発明を実施するための形態】
【０００９】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様が開示される。本発明の範囲から逸脱することなく、代替の実施形態が考案され得る。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に記載されないか、または省略される。
【００１０】
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的な」として本明細書で説明するいかなる実施形態も、必ずしも他の実施形態よりも好ましいまたは有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
【００１１】
本明細書の説明では、「ライト」および「書き込む」(write)という用語は、当技術分野で知られる「ストア」および「記憶」(store)動作と同義的に使用される。同様に、「リード」および「読み取る」(read)という用語は、「ロード」(load)と同義的に使用される。さらに、本明細書では、キャッシュライン全体に関するリード/ライト動作よりも粒度が小さくなり得る「キャッシュブロック(cash block)」に関するリード/ライト動作について参照することがある。しかしながら、そのような参照は、説明のためのものにすぎず、実施形態の範囲を限定するものと解釈されるべきでないことは理解されよう。たとえば、開示される技法は、適用可能な場合、キャッシュワード、キャッシュラインなどの任意の他の粒度の動作に容易に拡張することができる。さらに、データのライト/リード動作のみに関して説明する場合であっても、参照されるキャッシュブロックはデータまたは命令を含むことがあることも理解されよう。加えて、より低いレベルのメモリ階層に対する参照は、プロセッサまたは処理要素に関連付けられ得るローカルまたはレベル1(L1)キャッシュ以外の補助記憶要素(backing storage element)を含むことがある。たとえば、本明細書では、より低いレベルのメモリ階層に対する参照は、レベル2(L2)キャッシュ、メインメモリ、および、L2キャッシュとメインメモリとの間に存在し得るメモリ構造の1つまたは複数のレベルを示すことがある。
【００１２】
本明細書で使用される用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、本明細書で使用する「含む(comprises)」、「含んでいる(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素(component)の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことを理解されよう。
【００１３】
さらに、多くの実施形態が、たとえばコンピューティングデバイスの要素によって実行されるべき、一連の動作に関して説明される。本明細書で説明される様々な動作は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実行され得ることを認識されよう。加えて、本明細書で説明されるこれらの一連の動作は、実行時に、関連するプロセッサに本明細書で説明される機能を実行させるコンピュータ命令の対応するセットを記憶した、あらゆる形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なされ得る。したがって、本発明の様々な態様は、特許請求する主題の範囲内に、そのすべてがあることが企図されている数々の異なる形式で具現化され得る。さらに、本明細書で説明される実施形態ごとに、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明される動作を実行「するように構成されたロジック」として説明されることがある。
【００１４】
構成されたロジックまたは「するように構成されたロジック」は、特定の論理ゲートまたは論理要素に限定されるのではなく、概して、本明細書に記載した機能性を、(ハードウェアまたはハードウェアとソフトウェアの組合せの何れかを介して)実施するための能力を指すことが理解されよう。したがって、構成されたロジックまたは「するように構成されたロジック」は、「ロジック(論理)」という語を共有するにもかかわらず、必ずしも論理ゲートまたは論理要素として実装されるとは限らない。様々なブロックのロジック間の他のインタラクションまたは協働が、後でより詳しく説明する実施形態の検討から、当業者には明らかになるであろう。
【００１５】
図1を参照すると、たとえば携帯電話などのUE100(ここではワイヤレスデバイス)は、プラットフォーム102を有し、プラットフォーム102は、無線アクセスネットワーク(RAN)から送信され、最終的にはコアネットワーク、インターネット、および/または他のリモートサーバおよびネットワークから来る可能性がある、ソフトウェアアプリケーション、データ、および/またはコマンドを受信し、実行することができる。プラットフォーム102は、「ASIC」108または他のプロセッサ、マイクロプロセッサ、論理回路、または他のデータ処理デバイスに動作可能に結合された送受信機106を含み得る。ASIC108または他のプロセッサは、ワイヤレスデバイスのメモリ112中の任意の常駐プログラム(resident program)と仲立ちする(interface)アプリケーションプログラミングインターフェース(「API」)110レイヤを実行する。メモリ112は、読取り専用メモリまたはランダムアクセスメモリ(RAMおよびROM)、EEPROM、フラッシュカード、またはコンピュータプラットフォームに共通の任意のメモリから構成され得る。プラットフォーム102は、メモリ112中でアクティブに使用されないアプリケーションを保持することができるローカルデータベース114も含み得る。ローカルデータベース114は、一般にフラッシュメモリセルであるが、磁気媒体、EEPROM、光学媒体、テープ、ソフトまたはハードディスクなど、当技術分野で知られている任意の二次記憶デバイスであってもよい。内部プラットフォーム102のコンポーネントはまた、当技術分野で知られていているように、コンポーネントのうちでもとりわけ、アンテナ122、ディスプレイ124、プッシュツートークボタン128およびキーパッド126のような外部デバイスに動作可能に結合され得る。
【００１６】
したがって、本発明のある実施形態は、本明細書で説明された機能を実行する能力を含むUEを含み得る。当業者が諒解するように、様々な論理要素は、本明細書で開示される機能を達成するために、個別の要素、プロセッサ上で実行されるソフトウェアモジュール、またはソフトウェアとハードウェアとの任意の組合せで具現化され得る。たとえば、ASIC108、メモリ112、API110およびローカルデータベース114がすべて協働的に使用されて、本明細書で開示される様々な機能をロードし、記憶し、実行することができ、したがってこれらの機能を実行するためのロジックは様々な要素にわたって分散され得る。代替的に、機能は、1つの個別コンポーネントに組み込まれ得る。したがって、図1のUE100の特徴は、単に例示にすぎないものと見なされ、本発明は、示された特徴または構成に限定されない。
【００１７】
UE100とRANとの間のワイヤレス通信は、符号分割多元接続(CDMA)、W-CDMA、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、直交周波数分割多重(OFDM)、Global System for Mobile Communications(GSM(登録商標))、3GPPロングタームエボリューション(LTE)、またはワイヤレス通信ネットワークもしくはデータ通信ネットワークにおいて使用できる他のプロトコルなど、様々な技術に基づくことができる。したがって、本明細書で提供される例は、本発明の実施形態を限定するためのものではなく、単に本発明の実施形態の態様の説明を助力するためのものにすぎない。
【００１８】
図2は、ASIC108などのプロセッサ10の簡略機能ブロック図を示す。プロセッサ10は、制御ロジック14に従って命令実行パイプライン12中の命令を実行する。制御ロジック14は、プログラムカウンタ(PC)15を維持し、1つまたは複数の状態レジスタ16にビットをセットおよびクリアし、たとえば、現在の命令セット動作モード、算術演算の結果に関する情報、および論理比較(ゼロ、桁上げ、等しい、等しくない)などを示す。いくつかの実施形態では、パイプライン12が、複数の並列パイプラインを有するスーパースカラ設計ですることができる。パイプライン12は実行ユニットと呼ばれることもある。汎用レジスタ(GPR)ファイル24は、パイプライン12によってアクセス可能なレジスタを提供し、メモリ階層の最上部を構成する。
【００１９】
異なる命令セット動作モードで少なくとも2つの命令セットからの命令を実行するプロセッサ10は加えて、各命令を実行すると、少なくともあらかじめ定められたターゲット命令セット動作モードと現在の命令セット動作モードを比較して、2つの間の一致を示す表示(indication)を提供するように動作するデバッグ回路18を含む。デバッグ回路18については後でより詳細に説明する。
【００２０】
パイプライン12は、命令側変換索引バッファ(ITLB:Instruction-side Translation Lookaside Buffer)28によって管理されるメモリアドレス変換および許可を用いて、命令キャッシュ(Iキャッシュ)26から命令をフェッチ(fetch)する。主変換索引バッファ(TLB:main Translation Lookaside Buffer)32によって管理されるメモリアドレス変換および許可を用いて、データキャッシュ(Dキャッシュ)30からデータがアクセスされる。様々な実施形態において、ITLB28は、TLB32の一部のコピーを備えることができる。代替として、ITLB28およびTLB32は統合されてもよい。同様に、プロセッサ10の様々な実施形態において、Iキャッシュ26とDキャッシュ30が統合または一体化されてもよい。さらに、Iキャッシュ26およびDキャッシュ30がL1キャッシュとされてもよい。Iキャッシュ26および/またはDキャッシュ30中でのミスにより、メモリインターフェース34によって、メイン(オフチップ)メモリ38、40がアクセスされる。メモリインターフェース34は、1つまたは複数のメモリデバイス38、40への共有バスを実装するバス相互接続42へのマスタ入力とされてもよい。追加のマスタデバイス(図示せず)はバス相互接続42にさらに接続されてもよい。
【００２１】
プロセッサ10は、周辺バス46におけるマスタデバイスとすることができる入力/出力(I/O)インターフェース44を含むことができ、I/Oインターフェース44は、周辺バス46を介して様々な周辺デバイス48、50にアクセスすることができる。プロセッサ10の多数の変形が可能であることが当業者には理解されよう。たとえば、プロセッサ10は、Iキャッシュ26およびDキャッシュ30の何れかまたは両方のためのレベル2(L2)キャッシュを含んでもよい。加えて、プロセッサ10内に示す機能ブロックのうちの1つまたは複数は、特定の実施形態では省略してもよい。JTAGコントローラ、命令プリデコーダ、および分岐ターゲットアドレスキャッシュなどのようなプロセッサ10内に存在し得る他の機能ブロックは、本発明の説明とは密接に関連せず、明確化のために省略されている。
【００２２】
マイクロプロセッサの状況でロードおよびストアの実行中に、高い頻度でメモリの比較的小さなウィンドウが書き込まれ読み取られるデータパターンが発生する。そのようなメモリ領域は、高時間的参照局所性を有するといわれる。一例は、ソフトウェアスタックであり、プロシージャが呼び出されまたそれから戻るとき、スタックに対してプッシュおよびプルがいつも行われる。
【００２３】
高時間的参照局所性を有するメモリ領域は、コアの電力利用に関して課題がある。この課題は、それらのメモリ領域がしばしばページテーブルでキャッシュ可能としてマーク付けされることにより存在し、したがって、大きいキャッシュ構造が書き込まれた場合は常に、スタックに対する各プッシュが大きな電力消費をもたらす可能性がある。問題を複雑にすることに、フィルバッファの可用性は一般に記憶装置のスループットに変換されるため、キャッシュフィルバッファを、高時間的参照局所性を有していないメモリ領域に割り当てられた状態にしておくことは大変不都合である。加えて、フィルバッファのライフサイクルが管理されない場合、同じメモリ領域に対する複数のフィルバッファの割当ておよび割当て解除が、時間の経過とともに、さらなる電力の問題をもたらすことになる。
【００２４】
これは、モバイルデバイスのマイクロプロセッサのような電力が重要な領域の状況で問題となる。マイクロプロセッサの電力プロファイルは、モバイルデバイスのより長い寿命のバッテリへの需要が高まるとともに、ますます重要となっている。
【００２５】
本発明の一実施形態は、高時間的参照局所性を有するメモリ領域を検出すること、その領域を対象とするストア動作ごとのキャッシュに対する書き込みを防止すること、および、同じメモリ領域に対するバッファの恒常的な割当ておよび割当て解除を防止することによって、上記および他の課題に対処する。本発明の一実施形態は、キャッシュの代わりにフィルバッファに書き込みをする。フィルバッファのみに書き込むことにより、大きなキャッシュ構造へのアクセスに関連する電力が節約される。またフィルバッファがリタイアしないように維持することによって、同じメモリ領域に対する新しいフィルバッファの割当ておよび割当て解除が防止される。また、フィルバッファデータが、ロードユースペナルティ(load-use penalty)が変化しないようにロードに利用可能なままであるので、サイクル当たりの命令数(IPC)が減少しない。加えて、高時間的局所性を有するとマーク付けされたフィルバッファは、スタックポインタイベントを監視すること、および/またはフィルバッファがアクセスされる頻度を追跡することによって、自身のリタイアを管理するので、フィルバッファは、たいていは、高時間的参照局所性を有していないアクセスに利用可能なままである。
【００２６】
図3は、本発明の一実施形態による例示的なメモリ構造300の簡略ブロック図を示す。メモリ構造300は、レベル1(L1)キャッシュ305、レベル2(L2)キャッシュ、および/または他のより高いレベルのメモリ310を含む。メモリ構造300はまた、(バッファ320a、b、およびnとして示す)データバッファ0からNを含む。点線で示すように、データバッファ320bとデータバッファ320nとの間には任意の数のデータバッファが存在し得る。各データバッファ320a、b、およびnは、それぞれ時間的検出器(temporal detector)フィールド322a、b、ならびにn、および/またはそれぞれスタックフラグフィールド324a、b、およびnを含む。データは、レベル1(L1)キャッシュ305から、たとえばデータバッファ320aへ、または、レベル1(L1)キャッシュ305へ、たとえばデータバッファ320aから書き込むことができる。同様に、データは、キャッシュ/メモリ310から、たとえばデータバッファ320aへ、または、キャッシュ/メモリ310へ、たとえばデータバッファ320aから書き込むことができる。データは、任意の利用可能なデータバッファ0〜Nへ/から書き込むことができ、キャッシュ305および/またはキャッシュ/メモリ310から/へ、同じデータバッファへ/から書き込む必要がない。
【００２７】
本発明の一実施形態では、高時間的参照局所性を有するメモリ領域に関連付けられたロードおよびストア動作を認識し、それらの動作を、高時間的参照局所性を有するメモリ領域に関連付けられていないロードおよびストア動作から区別する。本発明の一実施形態では、関連付けられたデータキャッシュフィルバッファを、それらの時間的参照局所性に応じて管理する。
【００２８】
たとえば、高時間的参照局所性を決定するための技術は、動作がスタックに関連付けられたときを認識する。アドバンストRISC(縮小命令セットコンピュータ)マシン(ARM)アーキテクチャでは、スタックポインタが汎用レジスタファイルのレジスタ14(R14)に維持され、したがって、本発明の実施形態は、ロードおよびストア、たとえば、フィルバッファに対するロードおよびストアのためにR14が基底レジスタとして使用されることを検出する。この識別は、動作の属性として記憶ユニットへ提示される。記憶ユニットは、たとえば、図3のスタックフラグフィールド324a、b、またはnのようなフィルバッファのフィールドにフラグを設定することによって、高時間的局所性を有するものとしてデータキャッシュフィルバッファにフラグを立てる。キャッシュにメモリ領域があるかどうかにかかわらず、キャッシュではなくフィルバッファに対してストアが行われる。キャッシュ内の古いデータに対処するため、フィルバッファは、スタックからのロードの性能を維持するために、キャッシュそれ自体のようにアクセス可能にされる必要がある。キャッシュに書き込みをしないことに加え、フィルバッファのライフサイクルが延長され、このメモリ領域のフィルバッファが継続的に割当ておよび割当て解除されないようになされる。その後、データフィルバッファは、スタックポインタを変化させるシステムイベント(プッシュ/ポップ以外のイベント)を検出し、これに応じて、その高時間的局所性状態を除去することで応答し、通常のフィルバッファが行うようにリタイアする。
【００２９】
高時間的参照局所性を有するメモリ領域を識別するための別の技術では、各フィルバッファが、ストアまたはロードが各フィルバッファに対して行われる頻度を監視し、増えた頻度でアクセスされるフィルバッファに高時間的参照局所性を有するものとしてマーク付けする。当該別の技術は、上述の技法と併せて使用しても使用しなくてもよい。その後、フィルバッファは、フィルバッファがアクセスされる頻度の追跡を続け、そのフィルバッファに関連付けられた活動が低下すると、その高時間的局所性状態を除去する。
【００３０】
たとえば、フィルバッファは、フィルバッファのフィールド、たとえば、図3の時間的検出器フィールド322a、b、またはnに記憶されたカウンタを用いて、フィルバッファがアクセスされた頻度を追跡することができる。フィルバッファが割り当てられると、そのカウンタが当初は10に設定され得る。フィルバッファが例示的な100クロックサイクル内にアクセスされない場合、カウンタは9へ減分される。フィルバッファが次の100サイクル内にアクセスされない場合、カウンタは8へ減分され、以下同様に行われる。一方、フィルバッファが100サイクル内に少なくとも1回アクセスされた場合、カウンタは11へ増分される。同様に、フィルバッファが次の100サイクル内に少なくとも1回アクセスされた場合、カウンタは12へ増分され、以下同様に行われる。このようにして、10より大きいカウンタ値を有するフィルバッファは、高時間的参照局所性を有すると見なされ、そうでない場合のように割当て解除されることはない。一方、10より小さいカウンタ値を有するフィルバッファは、高時間的参照局所性を有していないと見なされ、通常通りに割当て解除される。
【００３１】
カウンタの初期値を10に、クロックサイクル数を100に設定することは単に例示であることは理解されよう。任意の数の他の可能性があり、それは、本発明の実施形態を実装する特定のプロセッサに応じて異なりうる。すなわち、これらの境界は、異なるプロセッサごとに異なることがあり、プロセッサの電力管理を最適化するために時間の経過とともに調整されることもある。たとえば、初期の境界では十分な電力管理が実現されない場合、高時間的参照局所性を有するフィルバッファの割当て解除が早過ぎないように、カウンタおよび/またはサイクル数を減少させることができる。すなわち、設定されたカウンタおよび/またはサイクル数が大き過ぎる場合、どのフィルバッファも高時間的参照局所性を有するものとして取り扱われないので、性能が低下することがある。
【００３２】
カウンタおよびサイクル閾値を変更することが必要な場合があるので、それらの値は、設定可能な値とすべきである。すなわち、それらの値は、1つまたは複数のレジスタに記憶され、ソフトウェアによって設定可能とすべきである。そのようにして、フィルバッファは、そのカウンタおよびクロックサイクル数を、カウンタおよび／またはクロックサイクルの境界を記憶するレジスタと比較することによって、フィルバッファが高時間的参照局所性を有するかどうかを決定することができる。
【００３３】
図4は、本発明の少なくとも1つの実施形態による例示的なフローチャート400を示す。410で、データフィルバッファは、アイドル状態であり、すなわち割り当てられていない。420で、データバッファは割り当てられ、データを充填される。この割当ては、前述のように時間的検出器カウンタを初期化することを含んでもよい。430で、フィルバッファの内容が高時間的参照局所性を有するかどうかが決定される。前述のように、これは、カウンタの値が特定の閾値より大きいかどうか、および/またはレジスタR14がフィルバッファに対するロードまたはストアのための基底レジスタとして使用されているかどうかを決定することを含むことができる。430で、フィルバッファの内容が高時間的参照局所性を有していないと決定された場合、450で、バッファの内容がキャッシュ、たとえば、キャッシュ305に書き込まれる。460で、フィルバッファは割当て解除され、410のアイドル状態に戻る。
【００３４】
430で、フィルバッファの内容が高時間的参照局所性を有していないと決定された場合、フィルバッファは、続いて割当て解除されることなく、440で、その時間的参照局所性への何らかの変化を待つ。このことは、たとえば、カウンタの値の減分を含む。カウンタの値の減分は、時間的参照局所性の起きうる変化を示すためである。その後、たとえば、バッファの使用不足により、またはスタックポインタの変化により、カウンタが減分されると、フィルバッファは再び、430で、その内容が高時間的参照局所性を有するかどうかを決定し、決定に応じて440または450に進む。
【００３５】
430と440のループによって示されるように、同じデータが、いくつかのサイクルにわたって、割り当てられたフィルバッファに記憶され得る。これは、そうでなければ、450および460にあるようにキャッシュおよび割当て解除されたフィルバッファに書き込まれることになるデータである。すなわち、420で割り当てられたデータが430で決定されるように高時間的参照局所性を有する場合、そのデータは、高時間的参照局所性を有しなくなるまで、フィルバッファに留まることになる(440)。そのようにして、頻繁にアクセスされるデータのロードまたはストアは、キャッシュの代わりにフィルバッファから利用される。
【００３６】
情報および信号は、多種多様な技術および技法の何れかを使用して表され得ることを当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００３７】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００３８】
本明細書で開示された実施形態と関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。その代わりに、記憶媒体はプロセッサと一体であってもよい。
【００３９】
したがって、本発明の一実施形態は、時間的局所性が高いフィルバッファの排除を防止するための方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実行するためのいかなる手段も、本発明の実施形態中に含まれる。
【００４０】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明された本発明の実施形態による方法クレームの機能、ステップおよび/または動作は、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または特許請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００４１】
10  プロセッサ
12  パイプライン
14  制御ロジック
15  プログラムカウンタ
16  状態レジスタ
18  デバッグ回路
24  汎用レジスタファイル
26  命令キャッシュ
28  命令側変換索引バッファ(ITLB)
32  主変換索引バッファ(TLB)
30  データキャッシュ
34  メモリインターフェース
38  メモリデバイス
40  メモリデバイス
42  バス相互接続
44  I/Oインターフェース
46  周辺バス
48  周辺デバイス
50  周辺デバイス
100  UE
102  プラットフォーム
106  送受信機
108  ASIC
110  API
112  メモリ
114  ローカルデータベース
122  アンテナ
124  ディスプレイ
126  キーパッド
128  プッシュツートークボタン
300  メモリ構造
305  レベル1キャッシュ
310  キャッシュ/メモリ
320a  データバッファ0
320b  データバッファ1
320c  データバッファN
322a  時間的検出器フィールド
322b  時間的検出器フィールド
322n  時間的検出器フィールド
324a  スタックフラグフィールド
324b  スタックフラグフィールド
324n  スタックフラグフィールド
【図１】
0006038955.tif 000002
【図２】
0006038955.tif 000003
【図３】
0006038955.tif 000004
【図４】
0006038955.tif 000005