(57)【特許請求の範囲】
【請求項１】
データキャッシュに記憶されたデータにアクセスするための命令の１つまたは複数のウェイ予測特性を識別することと、ここにおいて、ウェイ予測特性は、前記命令が予測可能な次のアドレスを有することを示す、
前記データキャッシュのウェイを識別する前記命令に関連付けられたウェイ予測テーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記ウェイ予測テーブルを選択的に読み取ることと、ここにおいて、前記ウェイ予測テーブルは、ウェイを識別する値を含むＷＡＹフィールドおよびレジスタロケーションを識別するＲＥＧフィールドを備える、
前記命令の次の実行に基づいた前記データキャッシュの次のアクセスが前記データキャッシュの前記識別されたウェイにアクセスするかどうかの予測を行うことと、
レジスタロケーションのデータを修正した特定の命令を識別することと、
前記ウェイ予測テーブル内の特定のエントリが前記レジスタロケーションに対応するレジスタ識別子を含むかどうかを決定することと、
前記特定のエントリが前記特定の命令に対応するかどうかを決定することと、
前記特定のエントリが前記特定の命令に対応しないときに、前記特定のエントリを除去するかまたは無効にすることと
を備える方法。
【請求項２】
前記１つまたは複数のウェイ予測特性が、前記命令のアドレス指定モード、前記命令の命令タイプ、前記命令がループに含まれるかどうかの指示、またはそれらの組合せを備える、請求項１に記載の方法。
【請求項３】
前記命令の前記アドレス指定モードが自動増分アドレス指定モードであるか、またはベースプラスオフセットアドレス指定モードであるかを決定することをさらに備える、請求項２に記載の方法。
【請求項４】
前記命令の前記アドレス指定モードが前記自動増分アドレス指定モードを備えるという決定に応答して、前記データキャッシュの特定のウェイを識別するために前記エントリの予測されるウェイフィールドを設定すること、ここにおいて、前記予測されるウェイフィールドは、前記エントリの生成時に設定される、をさらに備える、請求項３に記載の方法。
【請求項５】
前記命令の前記アドレス指定モードが前記ベースプラスオフセットアドレス指定モードを備えるという決定に応答して、前記データキャッシュの特定のウェイを識別するために前記エントリの予測されるウェイフィールドを設定すること、ここにおいて、前記エントリは、前記命令の第１の実行に関して生成され、および、ここにおいて、前記予測されるウェイフィールドは、前記第１の実行に続く前記命令の第２の実行に基づいて設定される、をさらに備える、請求項３に記載の方法。
【請求項６】
前記命令の前記命令タイプがロードタイプであるか、またはストアタイプであるかを決定することをさらに備える、請求項２に記載の方法。
【請求項７】
前記命令が特定のループに含まれるという前記指示に応答して、前記テーブルが選択的に読み取られる、請求項２に記載の方法。
【請求項８】
前記テーブルが前記エントリを含むかどうかを決定することと、
前記エントリがウェイ予測を提供するために有効であるかどうかを決定することと、
前記エントリが有効な予測されるウェイを示すと決定したことに応答して、前記予測されるウェイを前記エントリから取り出し、前記データキャッシュの前記予測されるウェイを駆動することとをさらに備える、請求項１に記載の方法。
【請求項９】
データキャッシュに記憶されたデータにアクセスするための命令の１つまたは複数のウェイ予測特性を識別するための手段と、ここにおいて、ウェイ予測特性は、前記命令が予測可能な次のアドレスを有することを示す、
前記データキャッシュのウェイを識別する前記命令に関連付けられたウェイ予測テーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記ウェイ予測テーブルを選択的に読み取るための手段と、ここにおいて、前記ウェイ予測テーブルは、ウェイを識別する値を含むＷＡＹフィールドおよびレジスタロケーションを識別するＲＥＧフィールドを備える、
前記命令の次の実行に基づいた前記データキャッシュの次のアクセスが前記データキャッシュの前記識別されたウェイにアクセスするかどうかの予測を行うための手段と、
レジスタロケーションのデータを修正した特定の命令を識別するための手段と、
前記ウェイ予測テーブル内の特定のエントリが前記レジスタロケーションに対応するレジスタ識別子を含むかどうかを決定するための手段と、
前記特定のエントリが前記特定の命令に対応するかどうかを決定するための手段と、
前記特定のエントリが前記特定の命令に対応しないときに、前記特定のエントリを除去するかまたは無効にするための手段と
を備える装置。
【請求項１０】
命令の第１の実行中に増分値を識別することと、
前記命令に基づいて、前記第１の実行中にアクセスされたデータキャッシュのウェイを識別することと、
第１の増分されたアドレス値を決定するために、前記増分値を前記命令に関連付けられたアドレス値に追加することと、
前記第１の増分されたアドレス値が前記データキャッシュの前記ウェイにあるかどうかを決定することと、
前記第１の増分されたアドレスが前記データキャッシュの前記ウェイにあると決定したことに応答して、前記命令に対応するエントリをウェイ予測テーブル内にポピュレートすることであって、前記識別されたウェイに基づく前記エントリのＷＡＹフィールド、および前記識別されたレジスタロケーションに基づく前記エントリのＲＥＧフィールドをポピュレートすることを備える、ポピュレートすることと
を備え、
前記増分されたアドレスが前記アドレスに関連付けられたキャッシュラインとは異なるキャッシュラインに関連付けられるという決定に基づいて、前記エントリを除去するか、または前記テーブルの前記エントリが無効であることを示すことをさらに備える方法。
【請求項１１】
前記テーブル内の各エントリが、プログラムカウンタ識別子、レジスタ識別子、予測されるウェイ識別子、有効性ビット、またはそれらの組合せを含む、請求項１０に記載の方法。
【請求項１２】
前記命令が自動増分命令を備えるか、またはベースプラスオフセット命令を備えるかを決定することをさらに備える、請求項１０に記載の方法。
【請求項１３】
前記エントリが、前記アクセスされたデータキャッシュの前記ウェイを識別し、前記エントリが前記命令の前記第１の実行に関連してポピュレートされ、前記命令の第２の実行中に、
前記エントリを前記テーブルから読み取ることと、
第２の増分されたアドレス値を計算することと、
前記第２の実行中に前記ウェイをウェイ予測として適用することと、
をさらに備える、請求項１０に記載の方法。
【請求項１４】
前記命令の後続の実行の増分されたアドレス値が前記ウェイとは異なるウェイにあると決定したことに応答して、前記テーブルを更新すること、ここにおいて、前記命令の前記後続の実行は、前記第１の実行の後である、をさらに備える、請求項１０に記載の方法。
【発明の詳細な説明】
【優先権の主張】
【０００１】
[0001]  本出願は、その内容全体が参照により組み込まれる、２０１３年１月１５日に出願された、「ＤＡＴＡ  ＣＡＣＨＥ  ＷＡＹ  ＰＲＥＤＩＣＴＩＯＮ」という名称の米国非仮特許出願第１３／７４１，９１７号の優先権を主張する。
【技術分野】
【０００２】
[0002]  本開示は一般に、データキャッシュメモリシステムを対象とする。
【背景技術】
【０００３】
[0003]  技術の進歩により、コンピューティングデバイスは、より小型でより強力になった。例えば、現在、小型で軽量な、ユーザが容易に持ち運べるポータブルワイヤレス電話、携帯情報端末（ＰＤＡ）、およびページングデバイスなどのワイヤレスコンピューティングデバイスを含む様々なポータブルパーソナルコンピューティングデバイスが存在する。より具体的には、セルラー電話およびインターネットプロトコル（ＩＰ）電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声およびデータパケットを通信できる。さらに、多くのそのようなワイヤレス電話は、その中に組み込まれた他のタイプのデバイスを含む。例えば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、オーディオファイルプレーヤを含むこともできる。また、そのようなワイヤレス電話はウェブブラウザアプリケーションなどの複数のソフトウェアアプリケーションを含む複数の実行可能命令を処理できるプロセッサを含み、インターネットにアクセスするために使用され得る。従って、これらのワイヤレス電話はかなりのコンピューティング能力を包含できる。
【０００４】
[0004]  プロセッサのデータキャッシュ(data cache)をアクセスすることは、かなりの量の電力を消費する。データキャッシュは従来、各々が複数のキャッシュライン（例えば、記憶ロケーション）を含む、複数のセットを有するデータアレイを含む。データキャッシュは従来、各々がデータキャッシュの少なくとも１つのキャッシュライン（例えば、キャッシュブロック）に対応するドライバを含む、複数のウェイも含む。データキャッシュに記憶されたデータにアクセスするための命令に応答して、全てのドライバは、マルチプレクサに対して（複数のデータラインを介して）データアレイの特定のセットのウェイ(ways)を駆動するように有効化される(enabled)（例えば、アクティブ化される(activated)）。
【０００５】
[0005]  全てのドライバが有効化されるのと並行して（例えば、同時に）、データアレイ内の特定のキャッシュラインを識別するために、タグルックアップ動作(tag lookup operation)が行われる。タグルックアップ動作の結果に基づいて、（単一のキャッシュラインに対応する）単一のドライバを介して与えられるデータが出力として選択される。セットのための全てのウェイを駆動し、タグルックアップ動作を行うことは、電力を消費させ、命令に基づいて単一のキャッシュラインのみからのデータが出力されることを考慮すると、電力の非効率性をもたらす。
【０００６】
[0006]  プロセッサの命令キャッシュにアクセスすることに関して、同様の電力消費問題が存在する。命令キャッシュへのアクセスはしばしば予測可能であり、駆動されるべき命令キャッシュの特定のウェイを識別するために、複数の命令の予測可能なシーケンスを利用する予測方法が使用され得る。しかしながら、データキャッシュにアクセスすることはより複雑であり、命令キャッシュにアクセスすることよりも予測可能ではない。従って、命令キャッシュアクセスのために使用される予測技法は、データキャッシュアクセスを予測するのに適応可能ではない場合がある。加えて、予測技法がデータキャッシュに適用された場合、アクセスされるべきウェイの各誤予測(misprediction)（例えば、不正確な予測(incorrect prediction)を行うこと）により、パフォーマンスペナルティ（例えば、処理の遅延）およびエネルギーペナルティが生じる可能性がある。
【発明の概要】
【０００７】
[0007]  プロセッサのデータキャッシュのためのウェイ予測技法は、命令のために駆動されるべきデータキャッシュのウェイ（例えば、１つまたは複数のキャッシュラインに関連付けられたウェイ）を追跡（例えば、監視(monitor)）し、予測するために、予測テーブル（例えば、ウェイ予測テーブル）を利用する。特定の実施形態では、予測されるウェイは、命令の前の実行(prior execution)に基づく（例えば、命令の前の実行時に駆動されたのと同じウェイ）。プロセッサによって実行される各命令に対して、制御ロジックは、予測されるウェイを識別するための予測テーブルをポピュレート(populate)し、維持し、および／または利用する各命令の実行を監視し、追跡できる。例えば、データキャッシュの制御ロジックは、予測テーブルを使用して、特定の命令と、その特定の命令についてアクセスされるウェイと、その特定の命令によって修正されたレジスタファイルのベースレジスタロケーション(base register location)とを示す（例えば、識別する）プログラムカウンタ（ＰＣ）識別子に基づいて１つまたは複数の命令の実行を追跡できる。
【０００８】
[0008]  １つまたは複数のウェイ予測特性（例えば、命令のアドレス指定モード(addressing mode)、命令の命令タイプ、命令がループに含まれるという指示など）を有する命令が実行されるとき、制御ロジックは、予測されるウェイが識別され得るかどうかを決定するために予測テーブルを読み取ることができる。例えば、ウェイ予測特性は、特性（例えば、モード、命令タイプ、ループ内の位置など）または命令が予測可能な次のアドレス（例えば、命令の次の実行に基づいて取り出された有効アドレスが同じキャッシュラインから（例えば、同じウェイを介して）入手可能であることを示す予測可能なアクセスパターン）を有し得ることを示す命令の構成要素（例えば、オペコード、オペランド、ビット値など）であり得る。制御ロジックは、命令に対応するエントリが予測テーブル内に存在するかどうかを決定できる。特定の実施形態では、１つまたは複数のウェイ予測特性は、自動増分アドレス指定モード(auto-increment addressing mode)またはベースプラスオフセットアドレス指定モード(base plus offset addressing mode)など、モード（例えば、アドレス指定モード）を備え得る。予測されるウェイは、ループの前の反復(prior iteration)中の命令の前の実行など、命令の前の実行中に以前にアクセスされたウェイであり得る。
【０００９】
[0009]  予測テーブルが命令のための予測されるウェイを示すとき、制御ロジックは、予測されるウェイに対応するドライバを選択的に有効化する（例えば、オンにする）ことができ、予測されるウェイ以外のウェイに対応する１つまたは複数の他のドライバを選択的に無効化する(disable)（例えば、オフにする）ことができる。予測テーブルが命令のための予測されるウェイを示すとき、制御ロジックは、（例えば、スイッチを使用して）タグアレイのタグルックアップ動作を選択的に無効化することもできる。１つまたは複数のドライバを選択的に無効化するおよび／またはタグルックアップ動作を選択的に無効化することによって、プロセッサによって電力節約が実現される。
【００１０】
[0010]  特定の実施形態では、方法は、命令の１つまたは複数のウェイ予測特性を識別することを含む。方法は、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルを選択的に読み取ることも含む。方法は、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行うことをさらに含む。
【００１１】
[0011]  別の特定の実施形態では、プロセッサは、命令の１つまたは複数のウェイ予測特性を識別するように構成された復号ロジックを含む。プロセッサは、復号ロジックに結合された制御ロジックも含む。制御ロジックは、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性に基づいて、テーブルを選択的に読み取るように構成される。制御ロジックは、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行うようにさらに構成される。
【００１２】
[0012]  さらに特定の実施形態では、装置は、命令の１つまたは複数のウェイ予測特性を識別するための手段を含む。装置は、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルを選択的に読み取るための手段も含む。装置は、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行うための手段をさらに含む。
【００１３】
[0013]  別の特定の実施形態では、非一時的コンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに、命令の１つまたは複数のウェイ予測特性を識別させる命令を含む。非一時的コンピュータ可読媒体は、プロセッサに、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルを選択的に読み取らせる命令をさらに含む。非一時的コンピュータ可読媒体は、プロセッサに、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行わせる命令をさらに含む。
【００１４】
[0014]  別の特定の実施形態では、方法は、命令の第１の実行中に増分値(increment value)を識別することと、命令に基づいて、第１の実行中にアクセスされたデータキャッシュのウェイを識別することとを含む。方法は、第１の増分されたアドレス値を決定するために、増分値を命令に関連付けられたアドレス値(address value)に追加することをさらに含む。方法は、第１の増分されたアドレス値がデータキャッシュのウェイにあるかどうかを決定することも含む。方法は、第１の増分されたアドレスがデータキャッシュのウェイにあると決定したことに応答して、命令に対応するエントリをテーブル内にポピュレートすることをさらに含む。
【００１５】
[0015]  開示される実施形態によって提供される１つの特定の利点は、（例えば、命令タイプ、命令アドレス指定モード、ループ中にある命令の識別情報、またはそれらの組合せに基づいて）１つまたは複数の命令のための予測テーブルを維持するウェイ予測技法である。ウェイ予測テーブルは、ウェイ予測に基づいて、１つまたは複数のドライバを選択的に有効化および／または無効化するために利用され得る。１つまたは複数のドライバを選択的に有効化および／または無効化することによって、データキャッシュのデータアクセス中に電力節約が実現され得る。加えて、ウェイ予測テーブル内の各エントリに関連付けられたレジスタロケーションを監視し、追跡し、記憶することによって、エントリに対応する命令以外の命令がそのレジスタロケーションにおいてデータ（例えば、コンテンツ）を修正したときに生じる可能性がある潜在的な誤予測が回避され得る。さらなる電力上の利点は、エントリ（例えば、ウェイ予測）が有効であると確認された後でタグルックアップ動作を選択的に無効化することによって実現され得る。
【００１６】
[0016]  本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明と、発明を実施するための形態と、特許請求の範囲とを含む、本出願の検討の後に明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】データキャッシュのためのウェイ予測を利用するプロセッサシステムの要素の第１の例示的な実施形態の図である。
【図２】データキャッシュのためのウェイ予測を行う方法の第１の例示的な実施形態の流れ図である。
【図３】データキャッシュのためのウェイ予測を行う方法の第２の例示的な実施形態の流れ図である。
【図４】ウェイ予測のために使用されるデータキャッシュのデータアレイおよびループ中の命令を含むプログラムコードの例示的な実施形態のブロック図である。
【図５】データキャッシュのためのウェイ予測を行う方法の第３の例示的な実施形態の流れ図である。
【図６】データキャッシュと、ウェイ予測を行うためのロジックとを含むワイヤレス通信デバイスの特定の実施形態のブロック図である。
【発明を実施するための形態】
【００１８】
詳細な説明
[0023]  図１は、ウェイ予測テーブル１５２を利用するプロセッサシステム１００の要素の第１の特定の実施形態を示す。プロセッサシステム１００は、データキャッシュ１０２、制御ロジック１５０、プログラムカウンタ１７０、タグアレイ１８０、および復号ロジック１９０を含む。データキャッシュ１０２は、複数のキャッシュライン１２０ａ〜ｄを含むデータアレイ１１０を含む。特定の実施形態では、データキャッシュ１０２がセットアソシアティブデータキャッシュを備える。
【００１９】
[0024]  プロセッサシステム１００は、プログラム中に含まれる命令（例えば、一連の命令）を実行する（例えば、処理する）ように構成される。プログラムは、一連の命令が１回または複数回実行される、１つのループ、または複数のループを含み得る。プログラムは、命令が予測可能な次のアドレス（例えば、実行されるべき次の命令の有効アドレスが同じキャッシュラインから（例えば、同じウェイを介して）入手可能になることを示す予測可能なアクセスパターン）を有し得るという指示である、１つまたは複数のウェイ予測特性（例えば、命令のアドレス指定モード、命令の命令タイプ、命令がループに含まれるという指示など）を有する命令など、１つまたは複数の命令を含み得る。例えば、命令のアドレス指定モードは、データキャッシュ（例えば、データキャッシュ１０２）のデータアレイのキャッシュラインの動作を生じさせる、自動増分アドレス指定モードおよび／またはベースプラスオフセットアドレス指定モードを含み得る。自動増分アドレス指定モードを使用する命令（例えば、自動増分命令）は、レジスタファイル（図示せず）のレジスタロケーション（例えば、ベースレジスタ）を識別することができ、レジスタロケーションにおいて記憶されたコンテンツ（例えば、アドレスデータ）を増分量（例えば、１または２などの整数値）だけ修正する（例えば、増分する）ことができる。ベースプラスオフセットアドレス指定モードを使用する命令（例えば、ベースプラスオフセット命令(base plus offset instruction)）は、命令の各実行中にレジスタロケーション（例えば、ベースレジスタロケーション）にアクセスすることができ、命令の各連続する実行によってベースレジスタロケーションにおけるデータにオフセットを追加できる。
【００２０】
[0025]  自動増分アドレス指定モードおよび／またはベースプラスオフセットアドレス指定モードを使用する命令がループの一部として実行される（例えば、数回実行される）とき、命令は各々、命令の次の実行に基づいて取り出される有効アドレスがデータアレイ１１０の同じキャッシュライン１２０ａ〜ｄ（例えば、同じウェイ）から入手可能であることを示す予測可能なアクセスパターンを含み得る。従って、命令の実行中に（例えば、ループの１つまたは複数の反復中に）、自動増分アドレス指定モードまたはベースプラスオフセットアドレス指定モードを使用する命令についてアクセスされるデータキャッシュ１０２の特定のウェイが識別され得る。自動増分アドレス指定モードまたはベースプラスオフセットアドレス指定モードを使用する命令は同じレジスタ上で動作するので、ポスト増分されたまたはオフセットされたアドレスが、データキャッシュ１０２の、命令の前の実行(previous execution)と同じキャッシュライン（例えば、同じウェイ）にアクセスできることを決定する（例えば、確認する）ことが可能であり得る。従って、プロセッサシステム１００は、１つまたは複数の命令のためのウェイアクセスを予測するために、以下で説明するように予測テーブル１５２を生成し、維持し、使用できる。
【００２１】
[0026]  データキャッシュ１０２は、データアレイ１１０と、マルチプレクサ１６０とを含み得る。データキャッシュ１０２は、最近使用されたまたは頻繁に使用されるデータを（キャッシュラインに）記憶するように構成され得る。データキャッシュ１０２に記憶されたデータは、メインメモリ（図示せず）などの別のロケーションからアクセスされるデータよりも迅速にアクセスされ得る。特定の実施形態では、データキャッシュ１０２は、４ウェイセットアソシアティブキャッシュなどのセットアソシアティブキャッシュである。追加または代替として、データキャッシュ１０２は、制御ロジック１５０、プログラムカウンタ１７０、タグアレイ１８０、復号ロジック１９０、またはそれらの組合せを含み得る。
【００２２】
[0027]  データアレイ１１０は、（プロセッサシステム１００によって実行される）命令の実行中にアクセスされ得る。命令は、プログラム（例えば、一連の命令）に含まれてもよく、プログラムのループ（例えば、ソフトウェアループ）に含まれてもよく含まれなくてもよい。データアレイ１１０は、図１に示すように、各々が第１のウェイ、第２のウェイ、第３のウェイ、および第４のウェイなどの複数のウェイ（例えば、列）を含む複数のセット（例えば、行）を含む。ウェイの各々は、データキャッシュ１０２の列内の複数のキャッシュラインに関連付けられ得、データキャッシュ１０２の各セットの対応するキャッシュライン１２０ａ〜ｄ（例えば、単一のキャッシュライン）に関連付けられ得る。複数のウェイは、プログラムの実行中にアクセスされ得る。複数のウェイのうちの各ウェイは、ドライバ１４０ａ〜ｄ（例えば、ラインドライバ）と、データアレイ１１０の列内の複数のキャッシュライン（例えば、記憶ロケーション）に対応するデータライン１３０ａ〜ｄとを含み得る。例えば、第１のウェイはキャッシュラインＡ  １２０ａに関連付けられ得、第１のドライバ１４０ａと第１のデータライン１３０ａとを含み、第２のウェイはキャッシュラインＢ  １２０ｂに関連付けられ得、第２のドライバ１４０ｂと第２のデータライン１３０ｂとを含み、第３のウェイはキャッシュラインＣ  １２０ｃに関連付けられ得、第３のドライバ１４０ｃと第３のデータライン１３０ｃとを含み、第４のウェイはキャッシュラインＤ  １２０ｄに関連付けられ得、第４のドライバ１４０ｄと第４のデータライン１３０ｄとを含む。
【００２３】
[0028]  各ドライバ１４０ａ〜ｄは、対応するデータライン１３０ａ〜ｄを介してデータアレイ１１０から読み取られ（例えば、駆動され）、マルチプレクサ１６０に与えられるべき、対応するキャッシュライン１２０ａ〜ｄ（例えば、対応するキャッシュブロック）に記憶されたデータを有効化できる。キャッシュライン１２０ａ〜ｄの特定のキャッシュラインに記憶されたコンテンツは、複数のバイト（例えば、３２バイトまたは６４バイト）を含み得る。特定の実施形態では、特定のキャッシュラインは、順次アドレス指定されたメモリロケーションのブロックに対応し得る。例えば、特定のキャッシュラインは、８つの順次アドレス指定されたメモリロケーション（例えば、８つの４バイトセグメント）のブロックに対応し得る。
【００２４】
[0029]  復号ロジック１９０は、プロセッサシステム１００によって実行されるべき１つまたは複数の命令（例えば、一連の命令）を受信し得る。復号ロジック１９０は、１つまたは複数の命令のうちの特定の命令を復号し、（インデックス部分１７２、タグ部分１７４、またはそれらの組合せを含む）復号された命令をプログラムカウンタ１７０に与えるように構成されたデコーダを含み得る。復号ロジック１９０はまた、特定の命令に関連付けられた命令データを、データを送るか、または１つもしくは複数の制御レジスタを修正することなどによって、制御ロジック１５０に与えるように構成され得る。例えば、命令データは、復号された命令（例えば、インデックス部分１７２および／またはタグ部分１７４）、１つまたは複数のウェイ予測特性、特定の命令の命令タイプ（例えば、ロードタイプ(load type)、ストアタイプ(store type)など）、特定の命令のモード（例えば、アドレス指定モード）、特定の命令に関連付けられたレジスタファイル（図示せず）の１つまたは複数のレジスタロケーション、特定の命令に関連付けられた増分値（および／またはオフセット値）、特定の命令に関連付けられたアドレス値、特定の命令がループ（例えば、ソフトウェアループ）を開始するかどうか、ループを終了するかどうか、またはループに含まれるかどうか、あるいはこれらの組合せを含み得る。１つまたは複数のウェイ予測特性は、特定の命令が予測可能な次のアドレス（例えば、実行されるべき次の命令のための有効アドレスが同じキャッシュラインから（例えば、同じウェイを介して）入手可能であることを示す予測可能なアクセスパターン）を有することを示し得る。例えば、１つまたは複数のウェイ予測特性は、特定の命令の特性（例えば、アドレス指定モード、命令タイプ、ループ内の位置など）、特定の命令の構成要素（例えば、オペコード、オペランド、ビット値、増分値、レジスタ値など）、またはそれらの組合せを備え得る。特定の命令のアドレス指定モードは、自動増分アドレス指定モードまたはベースプラスオフセットアドレス指定モードを含み得る。特定の命令の命令タイプは、ロードタイプまたはストアタイプを含み得る。
【００２５】
[0030]  プログラムカウンタ１７０は、復号ロジック１９０から取り出された復号された命令に基づいて、実行されるべき命令を識別し得る。プログラムカウンタ１７０は、命令の実行中にデータキャッシュ１０２にアクセスするために使用され得る、インデックス部分１７２（例えば、セットインデックス部分）と、タグ部分１７４とを含み得る。命令が実行されるたびに、プログラムカウンタ１７０は、実行されるべき次の命令を識別するために調整され（例えば、増分され）得る。
【００２６】
[0031]  制御ロジック１５０は、ウェイ予測テーブル１５２と、タグアレイ有効化１５４と、ドライバ有効化１５６とを含み得る。制御ロジック１５０は、以下でさらに説明するように、復号ロジック１９０から命令データを受信し、命令データの少なくとも一部分に基づいて、ウェイ予測テーブル１５２にアクセスするように構成され得る。例えば、制御ロジック１５０は、復号ロジック１９０から受信された１つまたは複数のウェイ予測特性に基づいて、ウェイ予測テーブル１５２に選択的にアクセスし得る。
【００２７】
[0032]  ウェイ予測テーブル１５２は、各々が１つまたは複数のフィールドを含む、１つまたは複数のエントリ１５３を含み得る。各エントリ１５３は、異なる命令に対応し、プログラムカウンタ（ＰＣ）フィールド、予測されるウェイ（ＷＡＹ）フィールド、レジスタロケーション識別子（ＲＥＧ）フィールド、有効／無効フィールド（Ｖ／Ｉ）、またはそれらの組合せを含み得る。特定のエントリについて、ＰＣフィールドは、プロセッサシステム１００によって実行される対応する命令を識別し得る。ＷＡＹフィールド（例えば、予測されるウェイフィールド）は、対応する命令が最後に実行されたときに以前にアクセスされた（データアレイ１１０の）ウェイ（例えば、アクセスされた「最後のウェイ」）を識別する値（例えば、ウェイフィールド識別子）を含み得る。ＲＥＧフィールドは、対応する命令が最後に実行されたときに修正されたレジスタファイル（図示せず）のレジスタロケーションを識別し得る。例えば、レジスタロケーションは、ポスト増分動作の一部として命令の実行に基づいて修正された命令のベースレジスタロケーションであり得る。Ｖ／Ｉフィールドは、ＷＡＹフィールドの値が有効であるか、または無効であるかを識別し得る。例えば、Ｖ／Ｉフィールドは、ＷＡＹフィールドの値が予測されるウェイとして使用され得るかどうかを示し得る。代替および／または追加として、Ｖ／Ｉフィールドは、エントリが有効であるか、または無効であるかを示し得る。ウェイ予測テーブル１５２はプロセッサシステム１００のプロセッサコアにおいて維持され（例えば、記憶され）得るおよび／またはデータキャッシュ１０２のプリフェッチテーブルに含まれ得るもしくはそれに関連付けられ得る。特定の実施形態では、ウェイ予測テーブル１５２中の各エントリは、プログラムカウンタ識別子（例えば、ＰＣフィールド）と、特定のレジスタロケーション識別子（例えば、ＲＥＧフィールド）と、特定の予測されるウェイ識別子（例えば、ＷＡＹフィールド）とを含む。
【００２８】
[0033]  制御ロジック１５０は、復号ロジック１９０によって与えられる命令データ（例えば、実行されるべき命令に対応する命令データ）にアクセスするように構成され得る。１つまたは複数のウェイ予測特性など、命令データの少なくとも一部分に基づいて、制御ロジック１５０は、ウェイ予測テーブル１５２が命令に対応するエントリを含むかどうかを決定し得る。例えば、制御ロジック１５０は、命令の命令タイプがロードタイプまたはストアタイプであるという指示を受信したことに応答して、ウェイ予測テーブル１５２を選択的に読み取り得る。特定の実施形態では、制御ロジック１５０は、命令タイプがロードタイプまたはストアタイプでない限り、ウェイ予測テーブルを読み取らない。制御ロジック１５０は、ウェイ予測テーブル１５２のＰＣフィールドに基づいて、ウェイ予測テーブル１５２が命令に対応するエントリ１５３を含むかどうかを決定し得る。別の特定の実施形態では、制御ロジック１５０は、命令のアドレス指定モードが自動増分アドレス指定モードまたはベースプラスオフセットアドレス指定モードであるという指示を受信したことに応答して、ウェイ予測テーブル１５２を選択的に読み取る。別の特定の実施形態では、制御ロジック１５０は、命令がループに含まれるという指示を受信したことに応答して、ウェイ予測テーブル１５２を選択的に読み取る。
【００２９】
[0034]  ウェイ予測テーブル１５２が命令に対応するエントリ１５３を含まないという決定に基づいて、および、命令がウェイ予測が有用である（例えば、自動増分アドレスモードを有する）１つまたは複数のウェイ予測特性に関連付けられるという決定に基づいて、制御ロジック１５０はウェイ予測テーブル１５２中の命令に関連付けられた新しいエントリ１５３を生成（例えば、ポピュレート(populate)）し得る。制御ロジック１５０は、命令に含まれる（例えば、それによって識別される）レジスタロケーションと、命令に基づいてアクセスされるデータアレイ１１０のウェイとを識別し得る。制御ロジック１５０は、識別されたレジスタロケーションと識別されたウェイとに基づいて、それぞれ、新しいエントリ１５３のＷＡＹフィールドとＲＥＧフィールドとをポピュレートし得る。従って、次回（例えば、ループの次の反復中に）命令が実行されると、制御ロジック１５０は、ＷＡＹフィールドに基づいて、命令の前の実行中にアクセスされたウェイを識別し得る。特に、エントリが生成されるとき、ＷＡＹフィールドの値は、エントリを生成させた命令の実行に基づいてアクセスされたウェイを示すように設定され得る。ＲＥＧフィールドは、本明細書でさらに説明するように、ウェイ予測テーブル１５２を維持するために制御ロジック１５０によって使用され得る。
【００３０】
[0035]  制御ロジック１５０はまた、命令の後続の（例えば、次の）実行が、エントリを生成させた命令の実行と同じウェイにアクセスするかどうかを予測し得る。例えば、図１に関してさらに詳細に説明するように、制御ロジック１５０は、命令の次の実行が、自動増分アドレス指定モード命令またはベースプラスオフセットアドレス指定モード命令などによる実行と同じキャッシュライン、従って同じウェイにアクセスするかどうかを予測する（例えば、確認する(verify)）ための算術演算を行い得る。増分されたアドレスが命令の実行中にアクセスされた同じキャッシュラインにないという決定（例えば、予測(prediction)）が行われると、制御ロジック１５０は、命令の後続の実行中に使用されるべき予測されるウェイを示すためにＷＡＹフィールドの値が信頼され得ないことを示すように、新しいエントリのＶ／Ｉフィールド（例えば、有効性ビット(validity bit)）を無効として設定し得る。増分されたアドレスが命令の実行中にアクセスされた同じキャッシュラインにある（例えば、命令の実行がキャッシュラインＡ  １２０ａにアクセスした、また、増分されたアドレスに関連付けられた値がキャッシュラインＡ  １２０ａにある）という決定（例えば、予測）が行われると、制御ロジック１５０は、ＷＡＹフィールドの値が命令の後続の実行中に使用されるべき予測されるウェイを示すことを示すように、新しいエントリのＶ／Ｉフィールド（例えば、有効性ビット）を有効に設定し得る。
【００３１】
[0036]  制御ロジック１５０は、実行されるべき命令のためのウェイを予測するために、ウェイ予測テーブル１５２を使用し得る。制御ロジック１５０は、各エントリ１５３のＰＣフィールドに基づいて命令に対応するウェイ予測テーブル１５２のエントリ１５３を識別するために、ウェイ予測テーブル１５２を選択的に読み取り得る。制御ロジック１５０が対応するエントリ１５３を識別するとき、エントリ１５３が有効として示される場合、制御ロジック１５０は、ＷＡＹフィールドの値をドライバ有効化１５６に与える（または利用可能にする）ことによって、エントリ１５３のＷＡＹフィールドの値をウェイ予測として使用することができ、Ｖ／Ｉフィールドの値をタグアレイ有効化１５４に与える（または利用可能にする）ことができる。
【００３２】
[0037]  ドライバ有効化１５６は、ウェイ予測テーブル１５２で識別された予測されるウェイに基づいて、ドライバ１４０ａ〜ｄのうちの１つまたは複数を選択的にアクティブ化する（例えば、オンにする）または非アクティブ化する(deactivate)（例えば、オフにする）ように構成され得る。特定の実施形態では、ドライバ有効化１５６に与えられるＷＡＹフィールドの値がヌル値（例えば、ゼロ値）であるとき、ドライバ有効化１５６は、全てのドライバ１４０ａ〜ｄを有効化する。別の特定の実施形態では、エントリ１５３のＷＡＹフィールドの値がウェイ予測として使用され得ることをエントリ１５３のＶ／Ｉフィールドの値が示すとき、ドライバ有効化１５６は、識別された（例えば、対応する）エントリ１５３からの予測されるウェイを使用し得る。加えて、ドライバ有効化１５６は、ＷＡＹフィールドによって示される予測されるウェイではない１つまたは複数のウェイの少なくとも１つのドライバ１４０ａ〜ｄを選択的に無効化し得る。特定の実施形態では、ＷＡＹフィールドは、予測されるウェイを示す１つまたは複数のビット（例えば、ビットマスク）を含み得、ドライバ有効化１５６は、複数のドライバ１４０ａ〜ｄのうちの各ドライバを選択的に有効化または無効化するために、そのビットマスクを複数のドライバ１４０ａ〜ｄに適用し得る。
【００３３】
[0038]  タグアレイ有効化１５４は、命令に基づいて選択されるべきウェイ（例えば、キャッシュライン１２０ａ〜ｄ）を識別するために、スイッチ１７６（または他の機構）を介して、タグアレイ１８０におけるタグルックアップ動作を選択的にアクティブ化する（例えば、有効化する）または非アクティブ化する（例えば、無効化する）ように構成され得る。ＷＡＹフィールドの値がウェイ予測として使用され得ることをＶ／Ｉフィールドの値が示すとタグ有効化部分１５４が決定すると、タグ有効化部分１５４は、スイッチ１７６の動作を介して、タグルックアップ動作を選択的に無効化し得る。ＷＡＹフィールドの値がウェイ予測として使用され得ないことをＶ／Ｉフィールドの値が示すとき、タグアレイ有効化１５４は、ドライバ１４０ａ〜ｄが有効化されるのと並行して（例えば、同時に）タグルックアップ動作が行われるように、スイッチ１７６を選択的に有効化し得る。
【００３４】
[0039]  ドライバ有効化１５６に与えられるＷＡＹフィールドの値とタグアレイ有効化１５４に与えられるＶ／Ｉフィールドの値の複数の組合せは、ドライバ有効化１５６および／またはタグアレイ有効化１５４の動作を指示するように与えられ得る。例えば、ＷＡＹフィールドの値は、ドライバ有効化１５６に、ＷＡＹフィールドの値に関係なく、全てのドライバ１４０ａ〜ｄをアクティブ化させる（例えば、オンにさせる）ヌル値（例えば、ゼロ値）であってもよく、この場合、タグアレイ有効化１５４はスイッチ１７６を選択的に有効化するか、または選択的に無効化し得る。別の例として、ＷＡＹフィールドの値がウェイ予測として信頼され得ないことをＶ／Ｉフィールドの値が示すとき、ドライバ有効化１５６は全てのドライバ１４０ａ〜ｄをオンにし得、タグアレイ有効化１５４はスイッチ１７６を選択的に有効化し得る。さらなる例として、ＷＡＹフィールドの値がウェイ予測として信頼され（例えば、使用され）得ることをＶ／Ｉフィールドの値が示すとき、ドライバ有効化１５６は複数のドライバ１４０ａ〜ｄのうちの単一のラインドライバをアクティブ化し（例えば、オンにし）得、タグアレイ有効化１５４はスイッチ１７６を選択的に有効化するか、または選択的に無効化し得る。代替または追加として、タグアレイ有効化１５４は、レジスタファイルが追跡されている（例えば、監視されている）かどうか、ＷＡＹフィールドの値とＶ／Ｉフィールドの値とを与えるエントリに対応する命令が（例えば、制御ロジック１５０において受信された命令データに基づいて）ループに含まれるものとして識別されるかどうか、またはこれらの組合せに基づいて、スイッチ１７６を選択的に有効化または無効化し得る。
【００３５】
[0040]  制御ロジック１５０、または制御ロジック１５０に結合された他のロジックは、任意の命令がウェイ予測テーブル１５２で識別されたレジスタロケーションにおけるデータを修正する（例えば、変更する）かどうかを追跡する（例えば、監視する）追跡ロジックを含み得る。追跡ロジックは、修正されたレジスタロケーションの値を識別し、レジスタロケーションの識別情報を制御ロジック１５０に与え得る。制御ロジック１５０は、特定のエントリ１５３がレジスタロケーションに対応する値を有するＲＥＧフィールドを含むかどうかを決定するために、ウェイ予測テーブル１５２を読み取り得る。特定のエントリ１５３がそのようなＲＥＧフィールドを含むという決定に基づいて、制御ロジック１５０は、特定のエントリ１５３のＰＣフィールドがレジスタロケーションを修正した特定の命令に対応するかどうかを決定し得、特定のエントリ１５３が特定の命令に対応しないとき、制御ロジック１５０は、特定のエントリのＷＡＹフィールドの値がウェイ予測として信頼され（例えば、ザ使用され）得ないことを示すように、特定のエントリ１５３のＶ／Ｉフィールドの値（例えば、無効）を設定し得るか、または特定のエントリ１５３を除去し（例えば、削除し）得る。
【００３６】
[0041]  プロセッサシステム１００の動作中に、復号ロジック１９０および／または制御ロジック１５０は、ウェイ予測テーブル１５２が実行されるべき命令に対応するエントリを含むかどうかを決定し得る。ウェイ予測テーブル１５２がエントリを含まないとき、制御ロジック１５０はウェイ予測テーブル１５２中で新しいエントリを生成し得る。ウェイ予測テーブル１５２がエントリを含むとき、制御ロジック１５０はエントリの１つまたは複数のフィールドの１つまたは複数の値を識別し得る。エントリが有効でない（例えば、エントリがウェイ予測のために使用され得ない）ことを１つまたは複数のフィールドが示すとき、制御ロジック１５０は、データアレイ１１０の複数のドライバ１４０ａ〜ｄのうちの全てを有効化し、マルチプレクサ１６０ベースのタグアレイ１８０の出力に与えられるべきウェイ選択信号を有効化し得る。エントリが有効であることを１つまたは複数のフィールドが示すとき、制御ロジック１５０は、複数のドライバ１４０ａ〜ｄのうちの１つまたは複数を選択的に有効化および／または無効化し、マルチプレクサ１６０による選択を制御するために、エントリのＷＡＹフィールドの値を使用し得る。制御ロジック１５０は、増分されたアドレスがＷＡＹフィールドによって示されるウェイとは異なるウェイに対応するキャッシュラインにアクセスする可能性があるという予測に基づいて、または、ウェイ予測テーブル１５２で識別されたレジスタロケーションに対する修正を識別することに基づいて、ウェイ予測テーブル１５２の１つまたは複数のエントリを更新し得る。プロセッサシステム１００の動作の一例については、図４を参照しながら後述する。
【００３７】
[0042]  プロセッサシステム１００によって実行される命令のためのウェイ予測テーブル１５２を維持することによって、データキャッシュ１０２のデータアレイ１１０の１つまたは複数のドライバ１４０ａ〜ｄは、ウェイ予測に基づいて選択的に無効化され得、データキャッシュ１０２のデータアクセス中に電力上の利点が実現され得る。加えて、各エントリ１５３に関連付けられたレジスタロケーション（例えば、ＲＥＧフィールド）を追跡し、記憶することによって、制御ロジック１５０は、エントリに対応する命令以外の命令がウェイ予測テーブル１５２中の任意のエントリのＲＥＧフィールドによって識別された特定のレジスタロケーションにおけるデータを修正するときの、潜在的な誤予測を回避し得る。さらなる電力上の利点は、タグルックアップ動作を選択的に無効化することによって実現され得る。
【００３８】
[0043]  図２を参照すると、データキャッシュに関連付けられたウェイ予測を行う方法２００の第１の例示的な実施形態の流れ図が示されている。例えば、データキャッシュは図１のデータキャッシュ１０２を含み得る。特定の実施形態では、方法２００は図１の制御ロジック１５０によって行われ得る。
【００３９】
[0044]  ２０２において、増分値は命令の第１の実行中に識別される。増分値は、自動増分アドレス指定モードを使用する命令に関連付けられ得る。増分値は、図１の復号ロジック１９０などの復号ロジックによって決定され（例えば、識別され）得る。増分値は、復号ロジックから図１の制御ロジック１５０などの制御ロジックに与えられる命令データに含まれ得る。制御ロジックは、命令データを受信し、増分値を識別し得る。制御ロジックはまた、命令が、命令が予測可能なアクセスパターンを有し得ることを示す１つまたは複数のウェイ予測特性に関連付けられているかどうかを決定し得る。特定の実施形態では、制御ロジックは、命令が１つまたは複数のウェイ予測特性に関連付けられているという決定を行った後に、命令の増分値を識別する。
【００４０】
[0045]  ２０４において、命令の第１の実行中に命令に基づいてアクセスされたデータキャッシュのウェイが識別される。例えば、データキャッシュは図１のデータキャッシュ１０２であり得る。制御ロジックは、命令の第１の実行中にアクセスされたウェイを識別し得る。
【００４１】
[0046]  ２０６において、増分値は、増分されたアドレス値を決定するために、命令に関連付けられたアドレス値に追加される。制御ロジックは、増分されたアドレスを決定するために、増分値を命令に関連付けられたアドレス値に追加し得る。特定の実施形態では、アドレス値は命令によって識別されたレジスタロケーションにおいて記憶されるアドレス値であり得る。レジスタロケーションは、復号ロジックによって与えられる命令データに基づいて、制御ロジックによって識別され得る。
【００４２】
[0047]  ２０８において、増分されたアドレス値がデータキャッシュのウェイにあるかどうかの決定が行われる。制御ロジックは、命令の後続の（例えば、次の）実行が命令の実行（すなわち、第１の実行）と同じウェイにアクセスすると予測されるかどうかを決定し得る。
【００４３】
[0048]  ２１０において、命令に対応するエントリはテーブル内にポピュレートされる。エントリは、増分されたアドレスがデータキャッシュのウェイにあると決定したことに応答して、テーブル内にポピュレートされ得る。制御ロジックは、命令に対応するエントリを図１のウェイ予測テーブル１５２などのウェイ予測テーブル内にポピュレート（例えば、生成(generate)）し得る。特定の実施形態では、テーブル内におけるエントリの生成（例えば、ポピュレーション）は、エントリが生成される（例えば、ポピュレートされる）前に満たされている、命令に関連付けられた１つまたは複数の条件（例えば、自動増分アドレス指定モード、命令のタイプ、ループ中にある命令）が条件となる。制御ロジックは、エントリが命令（例えば、ＰＣフィールド値）、命令の第１の実行中にアクセスされたデータキャッシュのウェイ（例えば、ＷＡＹフィールド値）、レジスタロケーション（例えば、ＲＥＧフィールド値）、命令の後続の（例えば、次の）実行が同じキャッシュラインにアクセスすると予測されるかどうか（例えば、Ｖ／Ｉフィールド値）、またはこれらの組合せを識別するように、エントリの１つまたは複数のフィールドをポピュレートし得る。
【００４４】
[0049]  命令のためのエントリをウェイ予測テーブル内に生成（例えば、ポピュレート）することによって、命令に基づいてアクセスされたウェイが記録され、追跡され得る。記録されたウェイは、データキャッシュのデータアクセス中に電力上の利点を実現するようにデータキャッシュの１つまたは複数のドライバを選択的に有効化および／または無効化する（例えば、全てのドライバよりも少ないドライバがオンにされる）ために、命令の１つまたは複数の後続の実行中に制御ロジックによってウェイ予測として使用され得る。
【００４５】
[0050]  図３を参照すると、データキャッシュに関連付けられたウェイ予測を行う方法３００の第２の例示的な実施形態の流れ図が示されている。例えば、データキャッシュは図１のデータキャッシュ１０２を含み得る。特定の実施形態では、方法３００は図１の制御ロジック１５０によって行われ得る。
【００４６】
[0051]  ３０２において、命令のアドレス指定モードが識別される。特定の実施形態では、命令のアドレス指定モードは自動増分アドレス指定モードとして識別される。自動増分アドレス指定モードを有する命令は、増分値と、命令に関連付けられたアドレスを記憶するレジスタロケーションとを識別し得る。アドレス指定モードは、復号ロジック１９０などの復号ロジックから受信された命令データに基づいて、図１の制御ロジック１５０などの制御ロジックによって決定（例えば、識別）され得る。加えて、命令に関連付けられたタイプ（例えば、命令タイプ）が決定され得る。例えば、タイプはロードタイプまたはストアタイプであると決定され得る。タイプは制御ロジックによって決定（例えば、識別）され得る。
【００４７】
[0052]  ３０４において、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、命令の識別情報に基づいて、テーブルが読み取られる。制御ロジックは、テーブルがデータキャッシュのウェイを識別する命令に関連付けられたエントリを含むかどうかを決定し得る。例えば、制御ロジックは、テーブルにアクセスし、命令に基づいてテーブルからエントリを読み取り得る。テーブルは、図１のウェイ予測テーブル１５２を含み得る。テーブルがエントリを含むという決定が行われると、制御ロジックは、エントリに関連付けられたＶ／Ｉフィールドに含まれる有効性ビットの値に基づいて、エントリが有効として識別されるか、または無効として識別されるかを決定し得る。Ｖ／Ｉフィールドはエントリに含まれるか、またはテーブルとは異なるレジスタロケーションもしくはバッファにおいて記憶され得る。有効性ビットの値は、命令のためのウェイ予測を提供するためにエントリまたはエントリの一部分（例えば、少なくとも１つのフィールド）が有効であるかどうかを決定するために、制御ロジックを有効化し得る。エントリに基づいて、制御ロジックは、データキャッシュの１つまたは複数のドライバを選択的に有効化および／または無効化する（例えば、全てのドライバよりも少ないドライバがオンにされる）ために、エントリに含まれるウェイ予測を使用し得る。データキャッシュの１つまたは複数のドライバを選択的に無効化することによって、データキャッシュのデータアクセス中に電力上の利点が実現される。
【００４８】
[0053]  ３０６において、命令に基づいたデータキャッシュの次のアクセスが同じウェイにアクセスするかどうかの予測が行われる。例えば、制御ロジックは、命令に基づいたデータキャッシュの次のアクセスがエントリによって識別されたウェイにアクセスするかどうかを予測し得る。制御ロジックは、増分されたアドレスを決定するために、命令に関連付けられた増分値を、命令に関連付けられたレジスタロケーションの（例えば、レジスタロケーションにおいて記憶された）アドレスに追加することによって、および、増分されたアドレスがデータアレイの、そのアドレスと同じキャッシュラインにあるかどうかを決定することによって、予測を行い得る。
【００４９】
[0054]  データキャッシュの次のアクセスがウェイにアクセスしないという予測が行われると、処理は３０８に進み、テーブル内のエントリが無効にされるかまたは削除される（例えば、除去される）。例えば、制御ロジックは、エントリを除去するか、または、増分されたアドレスがアドレス（例えば、増分されたアドレスを生成するために増分されたアドレス）を含むキャッシュラインとは異なるデータキャッシュのキャッシュラインにあるという決定に基づいて、テーブルのエントリが無効であることを示すことができる。代替として、データキャッシュの次のアクセスがウェイにアクセスするという予測が行われると、処理は３１０に進み、テーブル内のエントリが維持される。例えば、制御ロジックは、増分されたアドレスがデータアレイの、アドレスと同じキャッシュラインにあるという決定（例えば、予測）に基づいてウェイ予測を提供するために、テーブルのエントリを有効として維持し得る。制御ロジック、または制御ロジック以外のロジックは、レジスタロケーションを含むレジスタファイルを監視（例えば、追跡）し得る。レジスタファイルを監視（例えば、追跡）した結果として、制御ロジックは、レジスタロケーションのコンテンツが変更されたことに応答して、エントリを無効にするか、または削除できる。レジスタロケーションのコンテンツは別の命令によって変更され得る。
【００５０】
[0055]  テーブルにアクセスすることによって、命令に基づいてアクセスされたデータキャッシュの前のウェイは、命令の実行のためのウェイ予測として使用され得る。加えて、制御ロジックは、命令の後続の（例えば、次の）実行が命令の実行と同じキャッシュラインにアクセスするかどうかを決定（例えば、予測）し得る。後続の実行が同じキャッシュラインにアクセスするかどうかの決定に基づいて、制御ロジックは、エントリを除去する、エントリの１つまたは複数のフィールドを更新する、および／またはエントリの１つまたは複数のフィールドを維持できる。テーブルのエントリを更新および維持することによって、テーブルは、１つまたは複数のウェイ予測を行い、誤予測を回避するために使用され、信頼され得る。
【００５１】
[0056]  図４を参照すると、データキャッシュの行４００の特定の例示的な実施形態が示されている。例えば、データキャッシュは図１のデータキャッシュ１０２を含み得る。行４００は、各々がキャッシュライン境界４１０〜４１４によって分離された、第１のキャッシュラインＡ  ４０２と、第２のキャッシュラインＢ  ４０４と、第３のキャッシュラインＣ  ４０６と、第４のキャッシュラインＤ  ４０８とを含み得る。例えば、４つのキャッシュライン４０２〜４０８は、図１のキャッシュライン１２０ａ〜ｄに対応し得る。４つの代表的なキャッシュラインＡ〜Ｄが示されているが、行４００は４つよりも多いキャッシュラインまたは４つよりも少ないキャッシュラインを含み得ることを理解されたい。キャッシュライン４０２〜４０８の各々は、複数のセグメントを含み得る。例えば、第１のキャッシュラインＡ  ４０２は、第１のセグメント４０２ａと、第２のセグメント４０２ｂと、第３のセグメント４０２ｃと、第４のセグメント４０２ｄとを含む。特定の実施形態では、各キャッシュライン４０２〜４０８は、同じ数のセグメントを含む。キャッシュライン４０２〜４０８の各々は、対応するウェイに関連付けられ得る。
【００５２】
[0057]  行４００の動作および使用法を例示するために、代表的なプログラムループ（例えば、ループコード４３０）を含む代表的なコンピュータ命令の例示的な実施形態が図４に示されている。命令は、ループトップ識別子４４０で始まるループコード４３０を含む。ループは、３つの命令４４２、４４４、および４４６を含む。ループは、終了ループ指示子４４８で終了する。簡略化された例を与えるために、プログラムループの全ての態様が示されているとは限らない。例えば、簡潔にするために、ループ反復の数およびループ終了条件は省略されている。
【００５３】
[0058]  第１の命令４４２は、自動増分アドレス指定モードを含む例示的なロードタイプ命令（例えば、ポスト増分ロード）である。特定の実施形態では、第１の命令４４２は、メモリアドレスを記憶し、メモリアドレスに対応するコンテンツ（例えば、データ）をデータキャッシュからレジスタロケーションＲ１にロードするためにレジスタロケーションＲ９中のメモリアドレスを使用する、レジスタロケーションＲ９にアクセスするメモリ書込み命令である。レジスタファイル（図示せず）は、複数のレジスタロケーションを含み得る。レジスタロケーションＲ９によって識別されたコンテンツがレジスタロケーションＲ１にロードされた後、レジスタロケーションＲ９のメモリアドレスの値は２だけ自動増分される（例えば、２のポスト増分）。従って、第１の命令４４２は、２の増分値を有し、ベースレジスタＲ９上で動作するものと見なされ得る。レジスタロケーションＲ９のコンテンツをレジスタロケーションＲ１にロードするために、データキャッシュの特定のキャッシュラインにアクセスされ得る。特定のキャッシュラインは、データアレイの特定のウェイと特定のドライバとに関連付けられる。
【００５４】
[0059]  第２の命令４４４は、代表的な演算命令である。特定の実施形態では、第２の命令４４４は、（対応する第１のコンテンツ（例えば、データ）を有する）第１のメモリアドレスを記憶するレジスタロケーションＲ４と、（対応する第２のコンテンツを有する）第２のメモリアドレスを記憶するレジスタロケーションＲ５とを識別する加算命令である。レジスタロケーションＲ４の第１のメモリアドレスに対応する第１のコンテンツおよびレジスタロケーションＲ５の第２のメモリアドレスに対応する第２のコンテンツは一緒に加算され得、その合計は、第２の命令４４４に基づいて、レジスタロケーションＲ９に記憶された第３のメモリアドレスに対応するコンテンツ（例えば、データ）として記憶され得る。
【００５５】
[0060]  第３の命令４４６は、自動増分アドレス指定モードを含む別のロードタイプ命令を含み得る。例えば、第３の命令４４６の実行は、メモリアドレスを記憶し、メモリアドレスに対応するコンテンツ（例えば、データ）をデータキャッシュからレジスタロケーションＲ２にロードするためにレジスタロケーションＲ１０中のメモリアドレスを使用する、レジスタロケーションＲ１０（例えば、第３の命令４４６のベースレジスタ）にアクセスし得る。コンテンツがレジスタロケーションＲ２にロードされた後、レジスタロケーションＲ１０のメモリアドレスの値は１だけ増分され得る（例えば、１のポスト増分）。
【００５６】
[0061]  ループコード４３０を実行することは、１回または複数回（例えば、１つまたは複数の反復）命令４４２、４４４、および４４６を実行することを含む。ループコード４３０の第１の反復中に、第１の命令４４２が実行される。第１の命令４４２は、自動増分アドレス指定モードなどの１つまたは複数のウェイ予測特性を含むので、制御ロジック（図示せず）はウェイ予測テーブル内に第１の命令４４２に対応するエントリを生成し得る。例えば、図１の制御ロジック１５０、または図示されていない他の制御ロジックは、ウェイ予測テーブル１５２中でエントリを生成し得る。特定の実施形態では、制御ロジックは、ウェイ予測が第１の命令４４２に対応するエントリを含まないと決定した後で、ウェイ予測テーブル内にエントリを生成し得る。
【００５７】
[0062]  第１の命令４４２は自動増分アドレス指定モードを含むので、制御ロジックは２の増分値を識別し得る。２の増分値はキャッシュライン４０２〜４０８のサイズ（例えば、４のサイズ）よりも小さいので、制御ロジックは、アクセスされる次のウェイは同じキャッシュラインに対応する（例えば、同じキャッシュライン内にとどまる）であろうと予測し得る。次の反復（例えば、第１の命令４４２の次の実行）中に同じウェイにアクセスされるという予測に基づいて、ウェイは第１の命令４４２の次の実行のためのウェイ予測として識別され得る。
【００５８】
[0063]  例示すると、４５０において、ループコード４３０の第１の反復中に、レジスタロケーションＲ９のコンテンツは、第３のキャッシュラインＣ  ４０６の第１の（順次）セグメント４０６ａを指し得る。例えば、第３のキャッシュラインＣ  ４０６は、第１のセグメント４０６ａ、第２のセグメント４０６ｂ、第３のセグメント４０６ｃ、および第４のセグメント４０６ｄなどの、４つのセグメントを備え得る。従って、４５２において、レジスタロケーションＲ９のコンテンツを２の増分値だけ増分することは、レジスタロケーションＲ９のコンテンツが第３のキャッシュラインＣ  ４０６の第３の（順次）セグメント４０６ｃを指すことになる。従って、第１の命令４４２のためのウェイ予測は、ループコード４３０の第１の反復中に、第１の命令４４２の実行中に使用される（第３のキャッシュラインＣ  ４０６に対応する）ウェイを識別することになる。従って、図１に関して説明したように、第１の命令４４２のための新しいエントリは、制御ロジック１５０によってウェイ予測テーブル１５２に追加される。例えば、特定のエントリは、以下のフィールド、すなわち、ＰＣ＝０ｘ１０１４８（例えば、第１の命令４４２に対応する）、ＷＡＹ＝３、ＲＥＧ＝Ｒ９、およびＶ／Ｉ＝有効（例えば、「１」のデータ値）のうちの１つまたは複数を含むように生成され得る。
【００５９】
[0064]  制御ロジックは、命令の後続の実行が同じキャッシュラインにアクセスするという決定に基づいて、エントリのＶ／Ｉフィールドの（例えば、有効を示すための）有効性ビットを設定し得る。別の実施形態では、新しいエントリのＷＡＹフィールドは、後続の実行が同じキャッシュラインにアクセスするという決定（例えば、予測）が行われたときにアクセスされるウェイを識別するためだけにポピュレートされ得る。後続の実行が同じキャッシュラインにアクセスしないという予測が行われると、制御ロジックは新しいエントリのＷＡＹフィールドをヌル値（例えば、ゼロ値）に設定し得る。別の特定の実施形態では、後続の実行が同じキャッシュラインにアクセスするという予測が行われると、ウェイ予測テーブル内にエントリが生成されるだけである。
【００６０】
[0065]  命令に基づいた新しいエントリの生成は、識別されている１つまたは複数の追加のウェイ予測特性（例えば、命令データに基づいて、図１の制御ロジック１５０によって行われている１つまたは複数の追加の決定）をさらに条件とする（例えば、それらの特性に基づく）場合がある。例えば、命令が自動増分アドレス指定モードおよび／またはベースプラスオフセットアドレス指定モードに関連付けられると、新しいエントリが生成される（例えば、ポピュレートされる）だけであり得る。別の例として、命令がループに含まれると、新しいエントリが生成される（例えば、ポピュレートされる）だけであり得る。特に、命令がループ中の命令の第１のインスタンスであるとき、新しいエントリが生成され得る。特定の実施形態では、命令がループに含まれないとき、エントリは生成されない。
【００６１】
[0066]  命令がベースプラスオフセットアドレス指定モードを使用するとき、制御ロジック１５０は、命令の後続の実行が命令の第１の実行に基づいて同じキャッシュラインにアクセスするかどうかの予測を行うように動作可能でない場合がある。例えば、自動増分アドレス指定モードとは異なり、ベースプラスオフセットアドレス指定モードを実行することは、命令の各連続する実行（例えば、ループの各連続する反復）中に、アドレスロケーションを所定の値（例えば、定数）だけ増分することができない。ベースプラスオフセットアドレス指定モードを使用する命令のストライド（例えば、オフセット）を決定するために、命令の少なくとも２回の実行が必要とされ得る。従って、命令がベースプラスオフセットアドレス指定モードを使用するとき、命令の第１の実行中に新しいエントリが生成され得るが、命令の第２の実行（例えば、最初の実行の後の次の実行）までＷＡＹフィールドの値が予測されるウェイとして使用され得ることを示すように、新しいエントリのＶ／Ｉフィールドの値を設定することができない場合がある。代替実施形態では、命令がベースプラスオフセットアドレス指定モードを使用するとき、エントリは、命令の第１の実行に基づいてウェイ予測テーブル１５２中で生成され得ない。むしろ、命令の第１の実行に基づいて、命令に関連付けられた潜在的な新しいエントリについて、ＰＣフィールドに関連付けられた値およびＷＡＹフィールドに関連付けられた値が識別され得、ＰＣフィールドに関連付けられた値およびＷＡＹフィールドに関連付けられた値は、ウェイ予測テーブル１５２とは異なるロケーション（および／または構造）中で維持され得る。例えば、ロケーションは、制御ロジック１５０などの制御ロジックに関連付けられたバッファまたはレジスタを含み得る。ベースプラスオフセットアドレス指定モードを使用する命令に関連付けられたエントリは、第１の実行に続く命令の実行に基づいて生成され得る。
【００６２】
[0067]  特定の実施形態では、制御ロジック１５０、または他の制御ロジックは、ウェイ予測テーブル１５２などのウェイ予測テーブル内でレジスタとして識別される（例えば、ＲＥＧフィールドで識別される）レジスタファイル（図示せず）の各レジスタロケーションを追跡する追跡ロジックを含み得る。特定の実施形態では、制御ロジック１５０、または他の制御ロジックは、有効なエントリの対応するＲＥＧフィールドで識別されるレジスタファイルのレジスタロケーションのみを追跡する。例えば、レジスタロケーションＲ９が第１の命令４４２によって使用されたので、また、レジスタロケーションＲ９がウェイ予測テーブル１５２に追加されたエントリに関連付けられたので、追跡ロジックはレジスタロケーションＲ９の値を修正する任意の命令を監視する。特定の例示的な例では、第２の命令４４４はレジスタロケーションＲ９の値を変更（例えば、修正）する。従って、追跡ロジックは、第２の命令４４４などの１つまたは複数の命令を監視し、レジスタロケーションＲ９の値が第２の命令４４４によって変更されたことを検出したことに応答して、第１の命令４４２に対応するウェイ予測テーブル１５２中のエントリを無効にする（例えば、Ｖ／Ｉフィールドを無効に設定する）か、または削除する（例えば、除去する）ことができる。従って、第１の命令４４２の後続の実行（例えば、次の実行）後に、ウェイ予測テーブル１５２は、それによってウェイ予測が行われ得る、第１の命令４４２に関連付けられた有効なエントリ（または任意のエントリ）を含まないことになる。
【００６３】
[0068]  ループコード４３０を続行すると、第３の命令４４６は自動増分アドレス指定モードを含み得る。制御ロジックは、１の増分値と、第３の命令４４６のレジスタロケーションＲ１０（例えば、ベースレジスタ）とを識別し得る。４２０において、ループコード４３０の第１の反復中に、レジスタロケーションＲ１０のコンテンツは、第１のキャッシュラインＡ  ４０２の第１の（順次）セグメント４０２ａを指し得る。４２２において、１の増分値は第１のキャッシュラインＡ  ４０２のサイズ（例えば、第１のキャッシュラインＡ  ４０２は４のサイズを含む）よりも小さいので、制御ロジックは、次のウェイが第２の（順次）セグメント４０２ｂにおいて同じキャッシュライン４０２内にとどまるであろうと予測し得る。同じウェイにアクセスされるという予測に基づいて、ウェイは第３の命令４４６の次の実行のためのウェイ予測として識別され得る。従って、図１に関して説明したように、第３の命令４４６のための新しいエントリは、制御ロジック１５０によってウェイ予測テーブル１５２に追加される。ループの第１の反復は、終了ループ指示子４４８で終了する。
【００６４】
[0069]  ループコード４３０の第２の反復中に、第１の命令４４２は再度実行される。制御ロジック１５０は、第１の命令４４２に対応する有効なエントリについてウェイ予測テーブル１５２を検索し得る。ループコード４３０の第１の反復中に、エントリがウェイ予測テーブル１５２内で生成され、記憶されているので、ウェイ予測テーブル１５２は、第１の命令４４２に対応するプログラムカウンタ値に関連付けられたＰＣフィールド値を含むエントリを有する。しかしながら、追跡ロジックがエントリを無効にしたので、第１の命令４４２に基づいたウェイ予測テーブル１５２ルックアップ（例えば、ウェイ予測テーブル１５２のエントリの読み取り）の結果は無効なエントリの指示となる。無効なエントリは、制御ロジック１５０がウェイ予測テーブル１５２中のエントリによって示されるＷＡＹフィールドの値（例えば、ウェイ予測）を単に信頼することができないことを示すことになる。従って、制御ロジック１５０は、レジスタロケーションＲ９に記憶されたメモリアドレスに基づいたタグアレイ１８０の検索（例えば、タグルックアップ動作）を選択的にアクティブ化（例えば、有効化）することになる。
【００６５】
[0070]  特定の実施形態では、制御ロジックは、ウェイ予測テーブル１５２中のエントリによって示されるＷＡＹフィールドの値を使用すると同時に（例えば、並行して）、タグルックアップ動作を有効化する。タグルックアップ動作を同時に有効化することは、ＷＡＹフィールドの値に基づいた誤予測（例えば、誤ったウェイを予測すること）が生じるかどうかを制御ロジックが決定することを可能にする。別の実施形態では、制御ロジックは全てのウェイのドライバを同時に（例えば、並行して）有効化し、従って、無効なエントリのＷＡＹフィールドの値を信頼した結果として誤予測によるパフォーマンスペナルティが生じないことを確実にするために、タグルックアップ動作を有効化する。
【００６６】
[0071]  ループコード４３０による実行を続けると、第２の命令４４４に対応する加算演算が再び実行され、次いで、処理は第３の命令４４６を実行するために進む。第３の命令４４６は自動増分アドレス指定モードを含むので、制御ロジック１５０はウェイ予測テーブル１５２にアクセスし（例えば、ウェイ予測テーブル１５２を読み取り）、（レジスタロケーションＲ１０に対応する）第３の命令４４６に関連付けられた以前に記憶されたエントリを識別する。この場合、第３の命令４４６に関連付けられたエントリは有効であり、制御ロジック１５０はウェイ選択信号を生成し、（その他のウェイのいずれもアクティブ化することなく）選択される（例えば、予測される）ウェイをアクティブ化するための信号をドライバ有効化１５６から生成し得る。このようにして、第３の命令４４６の第２の実行に関与するループコード４３０の第２の反復は、ループコード４３０中の第３の命令４４６の第１の実行中に使用された（以前にアクセスされた第１のキャッシュラインＡ  ４０２に対応する）以前に記憶されたウェイを有利に選択する。従って、以前に記憶されたウェイはウェイ予測として使用され得、制御ロジック１５０は、ウェイ予測に基づいて、図１の複数のドライバ１４０ａ〜ｄなどの複数のドライバのうちの単一のドライバを有効化（例えば、選択的に有効化）し得る。（例えば、全ての複数のドライバ１４０ａ〜ｄよりも少ない）単一のドライバを選択的に有効化することによって、図１のデータキャッシュ１０２などのデータキャッシュのデータアクセス中に電力上の利点が実現され得る。
【００６７】
[0072]  ４２２において、ループコード４３０の第２の反復中に、レジスタロケーションＲ１０のコンテンツは第１のキャッシュラインＡ  ４０２の第２の（順次）セグメント４０２ｂを指し得る。制御ロジックは、４２４において、レジスタロケーションＲ１０のコンテンツは、１の増分値だけ増分されると、ループコード４３０の第３の反復中に、レジスタロケーションＲ１０のコンテンツが第１のキャッシュラインＡ  ４０２の第３の（順次）セグメント４０２ｃを指すことになると計算することによって、第３の命令４４６に関連付けられた次のウェイが同じキャッシュライン４０２内にとどまるであろうと予測し得る。ループコード４３０の第３の反復中の第３の命令４４６の予測されるウェイは第１のキャッシュラインＡ  ４０２内にとどまるので、第３の命令４４６に関連付けられたエントリのＷＡＹフィールドの値は同じまま（例えば、第１のキャッシュラインＡ  ４０２に対応するウェイ）であり得、第３の命令４４６に関連付けられたエントリは有効であり得る。終了ループ指示子４４８の処理（例えば、実行）は、ループコード４３０の第２の反復を終了する。
【００６８】
[0073]  ループコード４３０は、上記で説明したような追加の反復によって処理され続け得る。例えば、ループコード４３０は、第３の反復と第４の反復とを経ることができる。４２４において、ループコード４３０の第３の反復における第３の命令４４６の実行中に、レジスタロケーションＲ１０は第１のキャッシュラインＡ  ４０２の第３の（順次）セグメント４０２ｃを指し得る。４２６において、ループコード４３０の第４の反復における第３の命令４４６の実行中に、レジスタロケーションＲ１０は第１のキャッシュラインＡ  ４０２の第４の（順次）セグメント４０２ｄを指し得る。ループコード４３０の第４の反復における第３の命令４４６の実行中に、制御ロジックは、４２８において、レジスタロケーションＲ１０のコンテンツは、１の増分値だけ増分されると、レジスタロケーションＲ１０のコンテンツが第２のキャッシュラインＢ  ４０４を指すことになると計算することによって、第３の命令４４６に関連付けられた次のウェイが（例えば、ループコード４３０の第５の反復中に）同じキャッシュラインＡ  ４０２内にとどまらない（例えば、境界４１０を越えて横断する）であろうと予測し得る。（第３の命令４４６の次の実行に関連付けられた）第３の命令４４６の予測されるアドレスが第１のキャッシュラインＡ  ４０２の外にあるので、制御ロジックはエントリのウェイ予測を無効にするか、または第３の命令４４６に関連付けられたエントリをウェイ予測テーブルから削除し得る。制御ロジックがエントリを無効にすると、ループコード４３０の第５の反復中に、エントリは新しい（有効な）ウェイ予測で更新され得る。代替として、制御ロジックがエントリを削除すると、第５の反復中に、新しいエントリが生成され得る。
【００６９】
[0074]  １つまたは複数の命令のためのエントリをウェイ予測テーブル内に生成（例えば、ポピュレート）し、維持することによって、プロセッサシステムは、データキャッシュについてウェイ予測（例えば、ウェイ予測技法）を実施する（例えば、行う）ように有効化され得る。データキャッシュについてウェイ予測を行うことは、プロセッサシステムがデータキャッシュのいくつかのデータアクセス中に電力上の利点を実現することを可能にする。例えば、ウェイ予測技法は、１つまたは複数の命令がループの一部として実行される（例えば、数回実行される）予測可能なアクセスパターンを有するときに利用され得る。そのような命令は、自動増分アドレス指定モードまたはベースプラスオフセットアドレス指定モードを使用する命令を含み得る。
【００７０】
[0075]  図５を参照すると、データキャッシュに関連付けられたウェイ予測を行う方法５００の第３の例示的な実施形態の流れ図が示されている。例えば、データキャッシュは図１のデータキャッシュ１０２を含み得る。特定の実施形態では、方法５００は図１の制御ロジック１５０によって行われ得る。
【００７１】
[0076]  ５０２において、命令の１つまたは複数のウェイ予測特性が識別される。１つまたは複数のウェイ予測特性は、命令のアドレス指定モード、命令の命令タイプ、命令がループに含まれるかどうかの指示、またはこれらの組合せを含み得る。例えば、１つまたは複数のウェイ予測特性は、図１の制御ロジック１５０などの制御ロジックによって、または図１の復号ロジック１９０などの復号ロジックによって識別され得る。特定の実施形態では、命令のアドレス指定モードが自動増分アドレス指定モードであるか、またはベースプラスオフセットアドレス指定モードであるかの決定が行われる。別の特定の実施形態では、命令の命令タイプがロードタイプであるか、またはストアタイプであるかの決定が行われる。別の特定の実施形態では、命令が１つまたは複数の命令のループに含まれるかどうかの決定が行われる。復号ロジックは、命令タイプ、アドレス指定モード、または命令がループに含まれるかどうかの指示を制御ロジックに与え得る。
【００７２】
[0077]  ５０４において、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルが選択的に読み取られる。制御ロジックは、テーブルが命令に対応するエントリを含むかどうかを決定するために、テーブルを読み取り得る。例えば、図１の制御ロジック１５０は、ウェイ予測テーブル１５２を選択的に読み取り得る。テーブル内の対応するエントリは、エントリ（例えば、エントリのＷＡＹフィールドの値）に含まれる１つまたは複数のビットの値に基づいて、ウェイ（例えば、予測されるウェイ）を示し得る。１つまたは複数のビットは、複数のドライバのうちの各ドライバを選択的に有効化または無効化するために、マスクとして複数のドライバに適用され得る。制御ロジックはまた、エントリが有効であるかどうかを決定し得る。特定の実施形態では、予測されるウェイは、命令の前の実行に基づいた、以前にアクセスされたウェイと同じウェイである。例えば、制御ロジックは、予測されるウェイを識別してテーブルから取り出し、エントリが有効であるときに１つまたは複数のドライバを選択的に有効化および／または無効化できる。ドライバ１４０ａ〜ｄなどの１つまたは複数のドライバは、図１のデータキャッシュ１０２などのデータキャッシュに含まれ得る。
【００７３】
[0078]  ５０６において、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測が行われる。例えば、制御ロジックは、命令の次の実行が実行と同じキャッシュラインおよび従って同じウェイにアクセスするかどうかを予測する（例えば、確認する）ための算術演算を行い得る。増分されたアドレスが命令の実行中にアクセスされた同じキャッシュラインにないという決定（例えば、予測）が行われると、エントリのＶ／Ｉフィールド（例えば、有効性ビット）は、ＷＡＹフィールドの値が無効であり、命令の後続の実行中に使用されるべき予測されるウェイを示すために信頼され得ないことを示すように設定され得る。増分されたアドレスが同じキャッシュラインにあるという決定が行われると、エントリのＶ／Ｉフィールドは、ＷＡＹフィールドの値が有効であり、信頼され得ることを示すように設定され得る。
【００７４】
[0079]  テーブルにアクセスすることによって、命令に基づいてアクセスされたデータキャッシュの前のウェイは、命令の実行のためのウェイ予測として使用され得る。以前に記憶されたウェイはウェイ予測として使用され得、１つまたは複数のドライバは、ウェイ予測に基づいて、選択的に無効化され（例えば、オフにされ）得る。１つまたは複数のドライバを選択的に無効化することによって、全てのドライバよりも少ないドライバがアクティブ化され（例えば、オンにされ）、データキャッシュのデータアクセス中に電力上の利点が実現され得る。
【００７５】
[0080]  図２の方法２００、図３の方法３００、図５の方法５００、またはそれらの任意の組合せは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、中央処理装置（ＣＰＵ）などの処理ユニット、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装されるか、または他の方法で行われ得る。一例として、図２の方法２００、図３の方法３００、図５の方法５００、またはそれらの任意の組合せのうちのいずれかの少なくとも一部分は、図６に関して説明するように、メモリ６３２に記憶された命令を実行するプロセッサ６１０によって実装され得る。
【００７６】
[0081]  図６は、マルチビットウェイ予測マスクを利用するキャッシュメモリシステムを含むデバイス６００（例えば、通信デバイス）の特定の実施形態のブロック図である。デバイス６００はワイヤレス電子デバイスであり得、メモリ６３２に結合されたデジタル信号プロセッサ（ＤＳＰ）などのプロセッサ６１０を含み得る。
【００７７】
[0082]  プロセッサ６１０は、メモリ６３２に記憶されたソフトウェア６６０（例えば、１つまたは複数の命令のプログラム）を実行するように構成され得る。プロセッサ６１０は、データキャッシュ６８０と制御ロジック６８６とを含み得る。例えば、データキャッシュ６８０は図１のデータキャッシュ１０２を含むか、またはそれに対応し得、制御ロジック６８６は図１の制御ロジック１５０を含むか、またはそれに対応し得る。データキャッシュ６８０は、データアレイ６８２とタグアレイ６８４とを含み得る。データアレイ６８２およびタグアレイ６８４はそれぞれ、図１のデータアレイ１１０およびタグアレイ１８０に対応し得る。データアレイ６８２は、図１のラインドライバ１４０ａ〜ｄなどの複数のラインドライバを含み得る。制御ロジック６８６は、ウェイ予測テーブル６８８を含み得る。ウェイ予測テーブル６８８は、図１のウェイ予測テーブル１５２を含むか、またはそれに対応し得る。例示的な例では、プロセッサ６１０は、図１のプロセッサシステム１００またはその構成要素を含むか、またはそれに対応し、図１〜図５の実施形態のいずれかまたはそれらの任意の組合せに従って動作する。
【００７８】
[0083]  特定の実施形態では、プロセッサ６１０は、プロセッサ６１０などのコンピュータに、図２の方法２００、図３の方法３００、図５の方法５００、またはそれらの任意の組合せのうちのいずれかの少なくとも一部分を行わせるように実行可能である、メモリ６３２などの非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令６６０を実行するように構成され得る。例えば、コンピュータ実行可能命令６６０は、プロセッサ６１０に、命令の１つまたは複数のウェイ予測特性を識別させるように実行可能であり得る。コンピュータ実行可能命令６６０は、プロセッサ６１０に、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルを選択的に読み取らせるようにさらに実行可能であり得る。コンピュータ実行可能命令６６０は、プロセッサ６１０に、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行わせるようにさらに実行可能であり得る。
【００７９】
[0084]  カメラインターフェース６６８はプロセッサ６１０に結合され、また、ビデオカメラ６７０などのカメラに結合される。ディスプレイコントローラ６２６は、プロセッサ６１０とディスプレイデバイス６２８とに結合される。コーダ／デコーダ（コーデック）６３４もプロセッサ６１０に結合され得る。スピーカー６３６およびマイクロフォン６３８はコーデック６３４に結合され得る。ワイヤレスインターフェース６４０は、アンテナ６４２とワイヤレスインターフェース６４０とを介して受信されたワイヤレスデータがプロセッサ６１０に与えられ得るように、プロセッサ６１０とアンテナ６４２とに結合され得る。特定の実施形態では、プロセッサ６１０、ディスプレイコントローラ６２６、メモリ６３２、コーデック６３４、ワイヤレスインターフェース６４０、およびカメラインターフェース６６８は、システムインパッケージまたはシステムオンチップデバイス６２２に含まれる。特定の実施形態では、入力デバイス６３０および電源６４４はシステムオンチップデバイス６２２に結合される。さらに、特定の実施形態では、図６に示すように、ディスプレイデバイス６２８、入力デバイス６３０、スピーカー６３６、マイクロフォン６３８、ワイヤレスアンテナ６４２、ビデオカメラ６７０、および電源６４４は、システムオンチップデバイス６２２の外部にある。ただし、ディスプレイデバイス６２８、入力デバイス６３０、スピーカー６３６、マイクロフォン６３８、ワイヤレスアンテナ６４２、ビデオカメラ６７０、および電源６４４の各々は、インターフェースまたはコントローラなどのシステムオンチップデバイス６２２の構成要素に結合され得る。
【００８０】
[0085]  説明される実施形態のうちの１つまたは複数とともに、命令の１つまたは複数のウェイ予測特性を識別するための手段を含む装置が開示される。識別するための手段は、図１の制御ロジック１５０、復号ロジック１９０、図６のプロセッサ６１０、制御ロジック６８６、１つまたは複数のウェイ予測特性を識別するように構成された１つまたは複数の他のデバイスもしくは回路、あるいはそれらの任意の組合せを含み得る。
【００８１】
[0086]  装置は、データキャッシュのウェイを識別する命令に関連付けられたテーブルのエントリを識別するために、１つまたは複数のウェイ予測特性の識別情報に基づいて、テーブルを選択的に読み取るための手段も含み得る。テーブルを選択的に読み取るための手段は、図１の制御ロジック１５０、図６の制御ロジック６８６、テーブルを選択的に読み取るように構成された１つまたは複数の他のデバイスもしくは回路、あるいはそれらの任意の組合せを含み得る。
【００８２】
[0087]  装置は、命令に基づいたデータキャッシュの次のアクセスがウェイにアクセスするかどうかの予測を行うための手段も含み得る。予測を行うための手段は、図１の制御ロジック１５０、図６の制御ロジック６８６、予測を行うように構成された１つまたは複数の他のデバイスもしくは回路、あるいはそれらの任意の組合せを含み得る。
【００８３】
[0088]  装置は、命令を復号するための手段も含み得、命令はレジスタ識別子を含み、予測可能な次のアドレスを有する。復号するための手段は、図１の復号ロジック１９０、図６のプロセッサ６１０、実行されるべき命令を復号するように構成された１つまたは複数の他のデバイスもしくは回路、あるいはそれらの任意の組合せを含み得る。
【００８４】
[0089]  装置は、ウェイに基づいてデータキャッシュラインを選択的に駆動するための手段も含み得る。データキャッシュラインを選択的に駆動するための手段は、図１のラインドライバ１４０ａ〜ｃ、図６のデータアレイ６８２、データキャッシュラインを選択的に駆動するように構成された１つまたは複数の他のデバイスもしくは回路、あるいはそれらの任意の組合せを含み得る。
【００８５】
[0090]  開示される実施形態のうちの１つまたは複数は、携帯電話、セルラー電話、衛星電話、コンピュータ、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、モバイルロケーションデータユニット、タブレット、ポータブルコンピュータ、デスクトップコンピュータ、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク（ＤＶＤ）プレーヤ、ポータブルデジタルビデオプレーヤ、またはそれらの任意の組合せを含み得る、デバイス６００などのシステムまたは装置で実装され得る。別の例示的な、非限定的な例として、システムまたは装置は、携帯電話、ハンドヘルドパーソナル通信システム（ＰＣＳ）ユニット、携帯情報端末などのポータブルデータユニット、全地球測位システム（ＧＰＳ）対応デバイス、ナビゲーションデバイス、メータ読取り機器などの固定ロケーションデータユニット、またはデータもしくはコンピュータ命令を記憶するかもしくは取り出す任意の他のデバイスなど、リモートユニット、あるいはそれらの任意の組合せを含み得る。
【００８６】
[0091]  図１〜図６のうちの１つまたは複数は、本開示の教示によるシステム、装置、および／または方法を示し得るが、本開示は、これらの示されたシステム、装置、および／または方法に限定されない。本開示の実施形態は、プロセッサとメモリとを含む集積回路を含む任意のデバイスにおいて適切に使用され得る。
【００８７】
[0092]  本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはそれらの組合せとして実装され得ることを、当業者はさらに諒解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、上記では概して、それらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、プロセッサ実行可能命令として実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明された機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈されるべきではない。
【００８８】
[0093]  本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、ハードウェアで直接、プロセッサによって実行されるソフトウェアモジュールで、またはこれら２つの組合せで具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、または当技術分野で知られている任意の他の形態の非一時的記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体化され得る。プロセッサおよび記憶媒体は、特定用途向け集積回路（ＡＳＩＣ）中に存在し得る。ＡＳＩＣは、コンピューティングデバイスまたはユーザ端末中に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末中に個別構成要素として存在し得る。
【００８９】
[0094]  開示される実施形態の上記の説明は、当業者が開示される実施形態を作成または使用することを可能にするように与えられる。これらの実施形態への様々な修正は当業者には容易に明らかになり、本明細書で定義された原理は本開示の範囲から逸脱することなく他の実施形態に適用され得る。従って、本開示は、本明細書に示した実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と合致することが可能な最も広い範囲が与えられるべきものである。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
命令の１つまたは複数のウェイ予測特性を識別することと、
データキャッシュのウェイを識別する前記命令に関連付けられたテーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記テーブルを選択的に読み取ることと、
前記命令に基づいた前記データキャッシュの次のアクセスが前記ウェイにアクセスするかどうかの予測を行うこととを備える方法。
［Ｃ２］
前記１つまたは複数のウェイ予測特性が、前記命令のアドレス指定モード、前記命令の命令タイプ、前記命令がループに含まれるかどうかの指示、またはこれらの組合せを備える、Ｃ１に記載の方法。
［Ｃ３］
前記命令の前記アドレス指定モードが自動増分アドレス指定モードであるか、またはベースプラスオフセットアドレス指定モードであるかを決定することをさらに備える、Ｃ２に記載の方法。
［Ｃ４］
前記命令の前記アドレス指定モードが前記自動増分アドレス指定モードを備えるという決定に応答して、前記データキャッシュの特定のウェイを識別するために前記エントリの予測されるウェイフィールドを設定すること、ここにおいて、前記予測されるウェイフィールドは、前記エントリの生成時に設定される、をさらに備える、Ｃ３に記載の方法。
［Ｃ５］
前記命令の前記アドレス指定モードが前記ベースプラスオフセットアドレス指定モードを備えるという決定に応答して、前記データキャッシュの特定のウェイを識別するために前記エントリの予測されるウェイフィールドを設定すること、ここにおいて、前記エントリは、前記命令の第１の実行に関して生成され、および、ここにおいて、前記予測されるウェイフィールドは、前記第１の実行に続く前記命令の第２の実行に基づいて設定される、をさらに備える、Ｃ３に記載の方法。
［Ｃ６］
前記命令の前記命令タイプがロードタイプであるか、またはストアタイプであるかを決定することをさらに備える、Ｃ２に記載の方法。
［Ｃ７］
前記命令が特定のループに含まれるという前記指示に応答して、前記テーブルが選択的に読み取られる、Ｃ２に記載の方法。
［Ｃ８］
前記テーブルが前記エントリを含むかどうかを決定することと、
前記エントリがウェイ予測を提供するために有効であるかどうかを決定することと、
前記エントリが有効な予測されるウェイを示すと決定したことに応答して、前記予測されるウェイを前記エントリから取り出し、前記データキャッシュの前記予測されるウェイを選択的に駆動することとをさらに備える、Ｃ１に記載の方法。
［Ｃ９］
レジスタロケーションのデータを修正した特定の命令を識別することと、
前記テーブル内の特定のエントリが前記レジスタロケーションに対応するレジスタ識別子を含むかどうかを決定することと、
前記特定のエントリが前記特定の命令に対応するかどうかを決定することと、
前記特定のエントリが前記特定の命令に対応しないときに、前記特定のエントリを除去するかまたは無効にすることとをさらに備える、Ｃ１に記載の方法。
［Ｃ１０］
命令の１つまたは複数のウェイ予測特性を識別するように構成された復号ロジックと、
前記復号ロジックに結合され、
データキャッシュのウェイを識別する前記命令に関連付けられたテーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記テーブルを選択的に読み取ることと、
前記命令に基づいた前記データキャッシュの次のアクセスが前記ウェイにアクセスするかどうかの予測を行うことと
を行うように構成された制御ロジックとを備えるプロセッサ。
［Ｃ１１］
複数のラインドライバと、ここにおいて、前記複数のラインドライバのうちの少なくとも１つのラインドライバは、前記予測に基づいて選択的に有効化または無効化される、
前記命令に基づいてタグルックアップ動作を行うように構成されたタグアレイと、
前記複数のラインドライバに応答し、前記タグアレイまたは前記制御ロジックから受信されたウェイ選択信号に応答するマルチプレクサと、
前記タグルックアップ動作を選択的に有効化または無効化するように構成されたスイッチとをさらに備える、Ｃ１０に記載のプロセッサ。
［Ｃ１２］
前記命令が増分値とアドレスとに関連付けられ、前記制御ロジックが、
前記増分値を前記アドレスに追加することによって、前記命令の増分されたアドレスを決定し、
前記増分されたアドレスが、前記データキャッシュの、前記アドレスと同じキャッシュラインにあるかどうかを決定するようにさらに構成される、Ｃ１１に記載のプロセッサ。
［Ｃ１３］
前記制御ロジックが、
前記増分されたアドレスが前記同じキャッシュラインにあるという決定に基づいて、前記タグルックアップ動作を選択的に無効化し、
前記タグルックアップ動作が無効化されるときに、ウェイ選択信号を前記マルチプレクサに与えるようにさらに構成される、Ｃ１１に記載のプロセッサ。
［Ｃ１４］
前記制御ロジックが、前記エントリを除去するか、または、前記増分されたアドレスが前記アドレスに関連付けられたキャッシュラインとは異なるキャッシュラインに関連付けられるという決定に基づいて、前記テーブルの前記エントリが無効であることを示すようにさらに構成される、Ｃ１２に記載のプロセッサ。
［Ｃ１５］
命令の１つまたは複数のウェイ予測特性を識別するための手段と、
データキャッシュのウェイを識別する前記命令に関連付けられたテーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記テーブルを選択的に読み取るための手段と、
前記命令に基づいた前記データキャッシュの次のアクセスが前記ウェイにアクセスするかどうかの予測を行うための手段とを備える装置。
［Ｃ１６］
前記命令を復号するための手段と、ここにおいて、前記命令は、レジスタ識別子を含み、予測可能な次のアドレスを有する、
前記ウェイに基づいてデータキャッシュラインを選択的に駆動するための手段とをさらに備える、Ｃ１５に記載の装置。
［Ｃ１７］
前記テーブル内の特定のエントリが、１つまたは複数のビットの値に基づいて、予測されるウェイを示し、前記１つまたは複数のビットが、複数のドライバのうちの各ドライバを選択的に有効化または無効化するために、マスクとして前記複数のドライバに適用される、Ｃ１５に記載の装置。
［Ｃ１８］
プロセッサによって実行されると、前記プロセッサに、
命令の１つまたは複数のウェイ予測特性を識別させ、
データキャッシュのウェイを識別する前記命令に関連付けられたテーブルのエントリを識別するために、前記１つまたは複数のウェイ予測特性の識別情報に基づいて、前記テーブルを選択的に読み取らせ、
前記命令に基づいた前記データキャッシュの次のアクセスが前記ウェイにアクセスするかどうかの予測を行わせる命令を備える非一時的コンピュータ可読媒体。
［Ｃ１９］
前記プロセッサによって実行されると、前記プロセッサに、
前記命令に関連付けられた増分値を識別させ、
前記命令の実行中にアクセスされた前記データキャッシュの特定のウェイを識別させ、
増分されたアドレス値を決定するために、前記増分値を前記命令に関連付けられたアドレス値に追加させ、
前記増分されたアドレス値が前記特定のウェイに関連付けられるかどうかを決定させる命令を備える、Ｃ１８に記載の非一時的コンピュータ可読媒体。
［Ｃ２０］
前記プロセッサによって実行されると、前記プロセッサに、前記エントリを前記テーブル内にポピュレートさせる命令、ここにおいて、前記テーブル内の各エントリは、プログラムカウンタ識別子と、レジスタ識別子と、予測されるウェイ識別子とを含む、をさらに備える、Ｃ１８に記載の非一時的コンピュータ可読媒体。
［Ｃ２１］
前記命令が１つまたは複数の命令のループに含まれるという決定が行われた後に、前記エントリが生成される、Ｃ１８に記載の非一時的コンピュータ可読媒体。
［Ｃ２２］
前記プロセッサによって実行されると、前記プロセッサに、
複数のレジスタロケーションを監視させ、
前記複数のレジスタロケーションのうちの特定のレジスタロケーションにおけるデータが修正されるかどうかを決定させ、
特定のエントリが前記特定のレジスタロケーションに対応するレジスタ識別子を含むかどうかを決定するために、前記テーブルを読み取らせる命令をさらに備える、Ｃ１８に記載の非一時的コンピュータ可読媒体。
［Ｃ２３］
命令の第１の実行中に増分値を識別することと、
前記命令に基づいて、前記第１の実行中にアクセスされたデータキャッシュのウェイを識別することと、
第１の増分されたアドレス値を決定するために、前記増分値を前記命令に関連付けられたアドレス値に追加することと、
前記第１の増分されたアドレス値が前記データキャッシュの前記ウェイにあるかどうかを決定することと、
前記第１の増分されたアドレスが前記データキャッシュの前記ウェイにあると決定したことに応答して、前記命令に対応するエントリをテーブル内にポピュレートすることとを備える方法。
［Ｃ２４］
前記テーブル内の各エントリが、プログラムカウンタ識別子、レジスタ識別子、予測されるウェイ識別子、有効性ビット、またはそれらの組合せを含む、Ｃ２３に記載の方法。
［Ｃ２５］
前記命令が自動増分命令を備えるか、またはベースプラスオフセット命令を備えるかを決定することをさらに備える、Ｃ２３に記載の方法。
［Ｃ２６］
前記エントリが、前記アクセスされたデータキャッシュの前記ウェイを識別し、前記エントリが前記命令の前記第１の実行とともにポピュレートされ、前記命令の第２の実行中に、
前記エントリを前記テーブルから読み取ることと、
第２の増分されたアドレス値を計算することと、
前記第２の実行中に前記ウェイをウェイ予測として適用することとを行うことをさらに備える、Ｃ２３に記載の方法。
［Ｃ２７］
前記ウェイを適用することが、
前記ウェイを前記エントリのウェイフィールドから取り出すことと、
前記取り出されたウェイに対応する前記データキャッシュのドライバを選択的に有効化することとを備える、Ｃ２６に記載の方法。
［Ｃ２８］
前記命令の後続の実行の増分されたアドレス値が前記ウェイとは異なるウェイにあると決定したことに応答して、前記テーブルを更新すること、ここにおいて、前記命令の前記後続の実行は、前記第１の実行の後である、をさらに備える、Ｃ２３に記載の方法。
［Ｃ２９］
前記エントリを除去するか、または、前記増分されたアドレスが前記アドレスに関連付けられたキャッシュラインとは異なるキャッシュラインに関連付けられるという決定に基づいて、前記テーブルの前記エントリが無効であることを示すことをさらに備える、Ｃ２３に記載の方法。
［Ｃ３０］
レジスタロケーションのデータを修正した特定の命令を識別することと、
特定のエントリが前記レジスタロケーションに対応するレジスタ識別子を含むかどうかを決定するために、前記テーブルを読み取ることと、
前記特定のエントリが前記特定の命令に対応するかどうかを決定することと、
前記特定のエントリが前記特定の命令に対応しないときに、前記特定のエントリを除去するかまたは無効にすることとをさらに備える、Ｃ２３に記載の方法。
【図１】
0006342537.tif 000002
【図２】
0006342537.tif 000003
【図３】
0006342537.tif 000004
【図４】
0006342537.tif 000005
【図５】
0006342537.tif 000006
【図６】
0006342537.tif 000007