(57)【要約】  方法は、プロセッサによって実行されるべき命令を受け取るステップを含む。方法はさらに、命令が、1つまたは複数のエントリを含むページクロスバッファにエントリを有しているか否かを判定するために、ページクロスバッファ内のルックアップを実行するステップを含む。エントリの各々は、物理アドレスを含む。方法はさらに、ページクロスバッファがページクロスバッファにエントリを有している場合、ページクロスバッファ内のエントリから特定の物理アドレスを取得するステップを含む。
2016505972.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって実行されるべき命令を受け取るステップと、
各々が物理アドレスを含む1つまたは複数のエントリを含むページクロスバッファ内に前記命令がエントリを有しているか否かを判定するために、前記ページクロスバッファにおけるルックアップを実行するステップと、
前記ページクロスバッファが前記ページクロスバッファ内に前記エントリを有している場合、前記ページクロスバッファ内の前記エントリから特定の物理アドレスを取得するステップと、
を備える方法。
【請求項２】
前記ページクロスバッファ内の各エントリは、異なるメモリページに対応する前記物理アドレスおよび命令アドレスを含む、請求項1に記載の方法。
【請求項３】
前記ページクロスバッファは、異なるメモリページに対応する前記物理アドレスおよび命令アドレスを含むエントリを記憶することに限定されている、請求項1に記載の方法。
【請求項４】
最後の物理アドレスバッファに、命令変換ルックアサイドバッファ演算の結果を記憶するステップ、をさらに備える請求項1に記載の方法。
【請求項５】
前記命令が前記ページクロスバッファ内にエントリを有していない場合、前記最後の物理アドレスバッファから、最後の物理アドレスを選択するステップ、をさらに備える請求項4に記載の方法。
【請求項６】
前記ページクロスバッファから取得された特定の物理アドレスを用いることによって、推測的なタグ配列演算を実行するステップ、をさらに備える請求項1に記載の方法。
【請求項７】
タグ配列演算をリプレイするか否かを判定するために、前記特定の物理アドレスを、命令変換ルックアサイドバッファ演算の結果と比較するステップ、をさらに備える請求項1に記載の方法。
【請求項８】
前記命令変換ルックアサイドバッファ演算の結果を用いて前記ページクロスバッファを更新するステップ、をさらに備える請求項7に記載の方法。
【請求項９】
処理パイプラインのプリフェッチステージ中、前記ページクロスバッファからデータが読まれる、請求項1に記載の方法。
【請求項１０】
1つまたは複数のエントリを含むページクロスバッファであって、前記1つまたは複数のエントリの各々は物理アドレスを含む、ページクロスバッファと、
タグ配列と、
前記ページクロスバッファが、特定の命令に対応するエントリを有することに応じて、前記ページクロスバッファから取得される特定の物理アドレスを選択するように構成されたマルチプレクサであって、前記マルチプレクサの出力は前記タグ配列に提供される、マルチプレクサと、
を備える装置。
【請求項１１】
命令変換ルックアサイドバッファ演算の結果が、最後の物理アドレスバッファに記憶され、前記ページクロスバッファが、前記特定の命令に対応する何らかのエントリを有していない場合、前記マルチプレクサはさらに、前記最後の物理アドレスバッファの出力を選択するように構成された、請求項10に記載の装置。
【請求項１２】
前記タグ配列は、前記マルチプレクサによって選択された前記最後の物理アドレスバッファの出力を用いて、タグ配列演算を実行するように構成された、請求項11に記載の装置。
【請求項１３】
タグ配列演算をリプレイするか否かを判定するために、前記特定の物理アドレスを、命令変換ルックアサイドバッファ演算の結果と比較するように構成されたコンパレータ、をさらに備える請求項10に記載の装置。
【請求項１４】
前記ページクロスバッファは、前記命令変換ルックアサイドバッファ演算の前記結果を用いて更新される、請求項13に記載の装置。
【請求項１５】
前記コンパレータの結果と、前記命令変換ルックアサイドバッファ演算の結果とが同一である場合、最後の物理アドレスバッファが、前記特定の物理アドレスを記憶する、請求項13に記載の装置。
【請求項１６】
前記ページクロスバッファは、命令アドレスを含むエントリを記憶することに限定され、前記1つまたは複数のエントリの各々の前記物理アドレスは、異なるメモリページに対応する、請求項15に記載の装置。
【請求項１７】
前記タグ配列は、前記ページクロスバッファから取得された前記特定の物理アドレスを用いて、推測的なタグ配列演算を実行するように構成された、請求項10に記載の装置。
【請求項１８】
1つまたは複数のエントリを記憶するための手段であって、前記1つまたは複数のエントリの各々は物理アドレスを含む、記憶するための手段と、
タグ配列演算を実行するための手段と、
前記記憶するための手段が、特定の命令に対応するエントリを有することに応じて、前記記憶するための手段から取得される特定の物理アドレスに対応するアドレスを選択するための手段であって、前記アドレスを選択するための手段の出力は、タグ配列演算を実行するための手段に提供される、選択するための手段と、
を備える装置。
【請求項１９】
前記タグ配列演算を実行するための手段は、前記記憶するための手段から取得された前記特定の物理アドレスを用いて、推測的なタグ配列演算を実行するように構成された、請求項18に記載の装置。
【請求項２０】
命令を記憶するコンピュータ読取可能な記憶媒体であって、前記命令が
処理システムに、実行のための特定の命令を受け取らせること、
各々が物理アドレスを含む1つまたは複数のエントリを含むページクロスバッファ内に前記特定の命令がエントリを有しているか否かを判定するために、前記ページクロスバッファにおけるルックアップを実行すること、
前記ページクロスバッファが前記ページクロスバッファ内に前記エントリを有している場合、前記ページクロスバッファ内の前記エントリから特定の物理アドレスを取得すること、を行うように処理システム内で実行可能である、コンピュータ読取可能な記憶媒体。
【請求項２１】
前記ページクロスバッファ内の各エントリはさらに、命令アドレスを含み、前記命令アドレスは、第1のメモリページに対応し、前記物理アドレスは、前記第1のメモリページとは異なる第2のメモリページに対応する、請求項20に記載のコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、命令処理のためのコンピュータアーキテクチャに関する。
【背景技術】
【０００２】
従来、(たとえば、第1の命令に第2の命令が後続するような)命令のシーケンスにアクセスする場合、処理システムは、命令のための仮想アドレスを、この命令のための物理アドレスへ変換し得る。処理システムは、プロセッサが、仮想アドレスを物理アドレスへ変換することを可能にする命令変換ルックアサイドバッファ(ITLB)を含み得る。処理システムは、ITLBに対して、この命令に関連付けられた仮想アドレスを物理アドレスへ変換するために、アドレス変換演算を実行するように要求し得る。この命令のために変換された物理アドレスは、命令キャッシュから命令にアクセスする(たとえば、命令をフェッチする)ために用いられ得る。処理システムは、この命令が命令キャッシュのデータ配列に記憶されているか否かを判定するためのタグ配列演算を行うために、この物理アドレスを命令キャッシュへ送信し得る。命令キャッシュは、タグ配列演算の結果に基づいて、この命令を取得するために、データ配列演算を実行し得る。
【０００３】
処理システムは、アクセスされる(たとえば、フェッチされる)べき次の命令(順次的な命令)の推測的なアドレスを用いて、タグ配列演算を開始することによって、命令のアドレッシングを実行し得る。タグ配列演算は、次の命令のためのITLBアドレス変換が完了する前に実行され得る。処理システムは、次の命令のための推測的な物理アドレスとして用いるために、(ITLBによって提供された)前の命令の物理アドレスを記憶する最後の物理アドレスバッファを指定し得る。推測的な物理アドレスを用いて、次の命令のためのタグ配列演算を実行することによって、次の命令のためにITLBによって実行されるアドレス変換演算に関連付けられる遅延が、バイパスされ得る。しかしながら、処理システムは、次の命令にアクセスするために、推測的な物理アドレスを用いることによって、遅延に遭遇し得る。たとえば、第1の命令が、分岐命令であり、第2の命令が、第1の命令とは異なるメモリページに存在する分岐命令の「ターゲット」である場合、タグ配列へ提供された第2の命令の推測的なアドレスは、無効であり得る。別の例として、第1の命令および第2の命令が、順次的なメモリアドレスにあるが、現在の命令が、1つのメモリページの最後のアドレスにあり、第2の命令が、次のメモリページの最初のアドレスにある場合、第2の命令の推測的な物理アドレスは、(現在の命令の物理アドレスに基づいて)無効になるであろう。
【０００４】
第2のアドレスの推測的なアドレスが無効であるとの結果として、処理システムは、ITLBから、第2の命令の有効な物理アドレスを取得する必要があり得る。その後、処理システムは、処理システム命令フェッチパイプラインをフラッシュするステップと、第2の命令の有効な物理アドレスを用いて別のタグ配列演算を実行するステップによって命令フェッチを再度開始するステップと、を含み得る命令をリプレイする。命令のリプレイを実行するステップは、処理遅延を引き起こし、処理システムのリソースを消費する。
【発明の概要】
【課題を解決するための手段】
【０００５】
たとえば命令リプレイによる命令処理遅延を短縮するために、処理システムは、ページクロスバッファ(PCB)を用いて、推測的なアドレッシングを実行し得る。PCBは、処理システムによって処理されるべき次の命令(たとえば、第2の命令)の処理遅延を回避するために、特定の命令(たとえば、第1の命令)の処理ステージ(たとえば、プリフェッチステージ)中に推測的なアドレッシングを実行するために用いられ得る。たとえば、第2の命令が、第1の命令を含むメモリページとは異なるメモリページに配置されている場合、第2の命令は、命令フェッチリプレイをさせると予測され得る。処理システムは、第1のメモリページにおいて第1の命令にアクセスし、次に、第1のメモリページとは異なる第2のメモリページにおいて第2の命令にアクセスすることによって、メモリページ境界を越える必要があり得る。
【０００６】
PCBの各エントリは、特定の命令(たとえば、第1の命令)の仮想アドレスに対応し、特定の命令後に処理されるべき次の命令(たとえば、第2の命令)に対応する物理アドレス(すなわち、「ターゲット」物理アドレス)を含み得る。ターゲット物理アドレスは、次の命令の位置を特定する有効な物理アドレスであり得る。ターゲット物理アドレスは、たとえば、特定のPCBエントリに対応する特定の命令を含むメモリページとは異なるメモリページに配置されることによって、処理遅延を引き起こすと予測されている命令に対応し得る。
【０００７】
特定の実施形態では、命令のための推測的なアドレッシングを実行するために処理システムがPCBを用いる前に、1つまたは複数のエントリが、PCB内に記憶され得る。PCBに記憶されたエントリの各々に対応するターゲット物理アドレスは、処理遅延を引き起こすと予め決定され得る。一例において、1つまたは複数の新たなエントリは、処理システムにおける処理遅延を引き起こすものとして特定された命令のターゲット物理アドレスに対応する。別の例において、エントリ内のターゲット物理アドレスが、命令の不正確な物理アドレスであるとして特定された後、PCBにおけるエントリは、処理システムの演算中に更新され得る。このケースでは、エントリは、命令変換ルックアサイドバッファから取得され得る命令の正確な物理アドレスを用いて更新され得る。
【０００８】
第1の命令の処理中に、処理システムは、処理されるべき第2の命令(次の命令)が処理遅延を引き起こすことを予測されているか否かを判定するために、PCBを用いて、推測的なアドレッシングを実行し得る。処理システムは、PCBが第1の命令の仮想アドレスに対応するエントリを有しているか否かを判定し得る。PCBが、第1の命令に対応するエントリを有している場合、特定されたエントリに対応するターゲット物理アドレスは、処理遅延を引き起こすと予測され得る。すなわち、第2の命令のターゲット物理アドレスは、別のメモリページに配置され、これによって、処理システムは、第2の命令にアクセスするために、メモリページ境界を越えなければならない可能性がある。処理システムは、推測的なアドレッシングを行うためにPCBを用いないと、第2の命令にアクセスするために遭遇し得るメモリページ境界に関連する命令フェッチリプレイによる遅延のような処理遅延を被り得る。たとえば、処理システムは、最も直近にアクセスした命令(たとえば、第1の命令)の最後の物理アドレスを用いて、第2の命令にアクセスすることを試みる際に、命令リプレイを実行し得る。最も直近にアクセスされた命令の最後の物理アドレスは、最も直近にアクセスされた命令とは異なるメモリページに配置されている第2の命令へのアドレス能力を判定するために用いることはできないので、命令フェッチリプレイが実行され得る。最も直近にアクセスされた命令の最後の物理アドレスに基づいて命令キャッシュタグ配列演算を実行するステップは、第2の命令に対応するタグ配列を配置するためのアドレス能力を提供しないことがあり得る。その結果、正確なアドレス能力を提供するために、命令フェッチリプレイが実行される。
【０００９】
処理システムは、第2の命令にアクセスするために、PCBエントリのターゲット物理アドレスを用いることによって処理遅延を回避し得る。PCBエントリのターゲット物理アドレスは、命令遅延を引き起こすことを予測された第1の命令後に生じるものとして特定される命令に対応し得る。ターゲットアドレスは、第2の命令の正確な物理アドレスであるべきであると予測されているターゲット物理アドレスに対応し得るので、処理システムは、第2の命令の正確な物理アドレスに基づいて、タグ配列演算を実行し得る。たとえば、処理システムは、第2の命令に対応するタグ配列エントリを配置するための命令キャッシュタグ配列演算を実行するために、ターゲット物理アドレスを用い得る。その結果、命令キャッシュは、第2の命令に対応するキャッシュラインをロードすることができ、タグ配列演算から特定されるタグ配列は、命令フェッチ遅延を引き起こすことなく、命令キャッシュのデータ配列部分から第2の命令を取得するために、フェッチステージにおいて用いられ得る。したがって、PCBエントリを用いて第2の命令にアクセスすることによって、処理システムは、処理システム命令フェッチパイプラインをフラッシュするステップと、第2の命令の有効な物理アドレスを用いて別のタグ配列演算を実行するステップと、を含み得る第2の命令をリプレイする必要性を回避し得る。
【００１０】
特定の実施形態では、方法は、プロセッサによって実行されるべき命令を受け取るステップを含む。この方法はさらに、命令が1つまたは複数のエントリを含むページクロスバッファ(PCB)にエントリを有しているか否かを判定するために、PCBにおいてルックアップを実行するステップを含む。PCBにおけるエントリの各々は、物理アドレスを含む。この方法はさらに、ページクロスバッファ(PCB)がページクロスバッファ内にエントリを有している場合、ページクロスバッファのエントリから、特定の物理アドレスを取得するステップを含む。PCBのエントリから取得された特定の物理アドレスは、特定の物理アドレスに基づいて第2の命令についてタグ配列演算を実行するように、第2の命令の推測的なアドレッシングを実行するために用いられ得る。
【００１１】
別の特定の実施形態では、装置は、1つまたは複数のエントリを含むページクロスバッファ(PCB)を含む。1つまたは複数のエントリの各々は、物理アドレスを含む。装置はさらに、タグ配列を含む。装置はさらに、ページクロスバッファが、特定の命令に対応するエントリを有することに応じて、ページクロスバッファから取得される特定の物理アドレスを選択するように構成されたマルチプレクサを含む。マルチプレクサの出力は、タグ配列に提供される。
【００１２】
別の特定の実施形態では、非一時的なコンピュータ読取可能な媒体が、処理システムに対して、実行のための特定の命令を受け取らせるために、処理システム内で実行可能である命令を記憶する。これら命令はさらに、特定の命令が、1つまたは複数のエントリを含むページクロスバッファ(PCB)内にエントリを有しているか否かを判定するために、PCBにおいてルックアップを実行するように実行可能である。これらエントリの各々は、物理アドレスを含む。これら命令はさらに、ページクロスバッファ(PCB)がPCBにエントリを有している場合、ページクロスバッファのエントリから特定の物理アドレスを取得するように実行可能である。PCBのエントリから取得された特定の物理アドレスは、特定の物理アドレスに基づいて、第2の命令にタグ配列演算を実行するように、第2の命令の推測的なアドレッシングを実行するために用いられ得る。
【００１３】
別の特定の実施形態では、装置は、1つまたは複数のエントリを記憶するための手段を含んでおり、1つまたは複数のエントリの各々は、物理アドレスを含む。この装置は、タグ配列演算を実行するための手段を含む。この装置は、記憶するための手段が、特定の命令に対応するエントリを有することに応じて、記憶するための手段から取得される特定の物理アドレスに対応するアドレスを選択するための手段を含む。アドレスを選択するための手段の出力は、タグ配列演算を実行するための手段に提供される。
【００１４】
開示された実施形態のうちの少なくとも1つによって提供される特定の利点は、プロセッサに対して命令フェッチリプレイをさせ得る、メモリページ境界によって分離された命令のように、プロセッサによって実行されるべき命令にアクセスすることに関連付けられた処理遅延を短縮するステップを含む。別の特定の利点は、次の特定の命令が処理遅延を引き起こすことを予測され得るか否かを判定するために、仮想-物理アドレスページクロスバッファを用いることによって命令の推測的なアドレッシングを改善するステップを含む。ページクロスバッファは、処理遅延を引き起こすことを予測されている次の特定の命令の推測的なアドレッシングを実行するために用いられ得る物理アドレスを提供し得る。
【００１５】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む出願全体の検討後に明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】ページクロスバッファを用いて推測的なアドレッシングを実行する装置の第1の実施形態のブロック図である。
【図２】ページクロスバッファを用いて推測的なアドレッシングを実行する装置の第2の特定の実施形態のブロック図である。
【図３】ページクロスバッファを用いた推測的なアドレッシングを含む命令のセットのためのパイプライン化された処理の特定の実施形態の例を例示する図である。
【図４】ページクロスバッファを用いて推測的なアドレッシングを実行する方法の第1の特定の実施形態のフローチャートである。
【図５】ページクロスバッファを用いて推測的なアドレッシングを実行する方法の第2の特定の実施形態のフローチャートである。
【図６】ページクロスバッファを用いて推測的なアドレッシングを実行するように動作可能な構成要素を含むワイヤレス電子デバイスのブロック図である。
【発明を実施するための形態】
【００１７】
本開示の特定の実施形態が、図面を参照して以下に記載される。説明では、共有の要素は、図面の全体にわたって共通の参照番号によって指定される。
【００１８】
図1を参照すると、ページクロスバッファを用いて推測的なアドレッシングを実行するように構成された装置の第1の実施形態のブロック図が例示され、一般に100として明示されている。特定の実施形態では、装置100はプロセッサに含まれ得る。別の特定の実施形態では、装置100は、少なくとも1つのプロセッサを含む処理システムに動作可能に接続されているか、または、少なくとも1つのプロセッサを含む処理システムとして実現され得る。
【００１９】
装置100は、1つまたは複数のエントリを記憶するページクロスバッファ(PCB)120を含み得る。各PCBエントリ(たとえば、第1のPCBエントリ112、第2のPCBエントリ114、または第3のPCBエントリ116)はそれぞれ、特定の命令の仮想アドレスに対応し、物理アドレス(たとえば「ターゲット」物理アドレス)を含み得る。物理アドレスは、処理されるべき次の命令(たとえば、第2の命令)に対応し得る。各PCBエントリの仮想アドレスおよび物理アドレスは、異なるメモリページに対応し得る。たとえば、第1のPCBエントリ112は、仮想アドレス(VA)122および物理アドレス(PA)132を含む。同様に、第2のPCBエントリ114は、仮想アドレス124および対応する物理アドレス134を含む。第3のPCBエントリ116は、仮想アドレス126および対応する物理アドレス136を含む。
【００２０】
特定の実施形態では、命令処理が始まる前に、PCB 120内の1つまたは複数のエントリ112〜116が予め記憶され得る。PCB 120に記憶されたエントリ112〜116の各々に対応するターゲット物理アドレス132〜136は、処理遅延を引き起こすと予め決定され得る。たとえば、ターゲット物理アドレスに関連付けられた命令がアクセスされたときに、ターゲット物理アドレスが、前の事例中に処理遅延を引き起こすものとして特定されていてよい。別の特定の実施形態では、1つまたは複数の新たなエントリが、プリフェッチステージのような命令の処理中に、PCB 120内に記憶され得るか、PCB 120内で更新され得る。一例において、1つまたは複数の新たなエントリは、処理遅延を引き起こすとして特定された命令のターゲット物理アドレスに対応し得る。
【００２１】
別の例では、エントリのターゲット物理アドレスが、処理遅延を引き起こすと予測されている命令の不正確なターゲット物理アドレスを含むとして特定された後に、PCB 120におけるエントリ112〜116のうちの1つは更新され得る。特定されたエントリは、命令変換ルックアサイドバッファから取得され得る、命令の正確な物理アドレスを用いて更新され得る。
【００２２】
特定の実施形態では、メモリページ境界を越えることを含む命令のアクセス可能性のために命令フェッチリプレイを引き起こすことが予測されている命令の推測的なアドレッシングに、PCB 120の使用は、限定され得る。すなわち、PCB 120の各エントリでは、エントリの仮想アドレスに対応する命令が、第1のメモリページに配置され、エントリの物理アドレスに対応する命令が、第1のメモリページとは異なる第2のメモリページに配置され得る。命令は、命令のシーケンスを含む物理メモリページ(「メモリページ」)を経由して物理メモリ(たとえば、メインメモリ)からアクセス可能である。命令の各々は、物理アドレスに従ってアドレス可能(addressable)である。物理メモリページは、物理メモリページのコンテンツが配置されている物理メモリ内の隣接した固定長ブロックに対応する。特定の実施形態では、PCB 120は、別のメモリページに対応するターゲット物理アドレスおよび仮想アドレスを包含または特定するエントリを記憶することに限定(たとえば、特化)されている。
【００２３】
装置100は、最後の物理アドレス(最後のPA)148を示す情報を記憶するように構成された最後の物理アドレス(最後のPA)バッファ130を含み得る。最後のPA 148は、最も直近にアクセスされた(たとえば、最も直近にフェッチされた)命令の物理アドレスに対応し得る。
【００２４】
マルチプレクサ(MUX)140が装置100に含まれ得る。MUX 140は、特定の物理アドレス128に対応し得る第1の入力104を受け取るように構成され得る。特定の物理アドレス128は、PCBエントリ112〜116のうちの1つに対応する物理アドレス132〜136のうちの1つであり得る。MUX 140は、最後のPAバッファ130に記憶された最後のPA物理アドレス148に対応し得る第2の入力102を受け取るように構成され得る。MUX 140は、第1の入力104(たとえば、特定の物理アドレス128)または第2の入力102(たとえば、最後のPA 148)を選択するように構成され得る。MUX 140の出力は、第1の命令110の後にフェッチされ得る命令のような、第2の命令に対応する推測的な第2の命令の物理アドレス142であり得る。MUX 140は、受け取った入力102、104のうちの1つを、図2を参照してさらに記載される制御入力によって指定される値に基づいて選択するように構成され得る。
【００２５】
装置100は、命令キャッシュタグ配列150を含み得る。命令キャッシュタグ配列150は、命令キャッシュ(図示せず)の一部であり得る。命令キャッシュタグ配列150は、MUX 140に動作可能に結合され、MUX 140から出力された推測的な第2の物理アドレス142を受け取るように構成され得る。命令キャッシュタグ配列150は、キャッシュに含まれ命令キャッシュタグ配列150によって索引付けされた1つまたは複数の命令のアドレス(またはアドレスの一部)を含み得る。命令キャッシュタグ配列150は、受け取られた物理アドレスがタグ配列内のエントリに一致するか否かを判定するために、タグ配列演算を実行し得る。命令キャッシュタグ配列150は、受け取られた入力(たとえば、推測的な第2の物理アドレス142)のために実行されたタグ配列演算のヒットまたはミスを示す結果152(たとえば、論理値0または論理値1)を生成するように構成され得る。結果152は、MUX 140から出力された推測的な第2の命令の物理アドレス142を用いたタグ配列演算の結果得られるヒットまたはミスを示し得る。
【００２６】
演算中、第1の命令110は、実行のために、プロセッサによって受け取られ得る。PCB 120は、第1の命令110の後、実行のために処理されるべき第2の命令(図示せず)の処理中に、予測された遅延が生じ得るか否かを判定するために、推測的なアドレッシングを実行するために用いられ得る。たとえば、予測された遅延は、命令フェッチ遅延であってよく、この命令フェッチ遅延は、処理されたときに第2の命令にアクセスするために異なるメモリページへとメモリページ境界を越えることを含み得る第2の命令のための命令フェッチ中に生じ得る。推測的なアドレッシングは、PCB 120を用いることによって、たとえばプリフェッチステージ中のような第1の命令110の処理中に実行され得る。
【００２７】
予測された遅延が生じ得るか否かを判定するために、PCB 120におけるルックアップが実行され、PCBエントリ112〜116のうちの1つが、第1の命令110に対応するエントリを有しているか否かが判定され得る。第1の命令110に対応するエントリを特定することは、第2の命令が、予測された遅延に関連付けられていることを示し得る。PCB 120が、第1の命令に対応するエントリを有しているか否かを判定するステップは、第1の命令110の仮想アドレスが、エントリ112〜116のうちの特定のPCBエントリに対応する仮想アドレス(たとえば、仮想アドレス122、仮想アドレス124、または仮想アドレス126)に一致するか否かを判定するステップを含み得る。第1の命令110に対応するPCBエントリが配置されている場合、このPCBエントリに対応する特定の物理アドレス128が、PCB 120から出力される。
【００２８】
特定の物理アドレス128(たとえば、第2の命令の物理アドレス)は、第1の命令110の仮想アドレスに一致する特定のPCBエントリの物理アドレス(たとえば、物理アドレス132、物理アドレス134、または物理アドレス136)に対応し得る。物理アドレス132〜136の各々は、特定の命令の処理中に、予測された処理遅延(たとえば、命令フェッチリプレイ)に遭遇し得る特定の命令(たとえば、第2の命令)に対応し得る。第1の命令110の仮想アドレスに一致する、特定された特定のPCBエントリに対応する特定の物理アドレス128は、第2の命令のための推測的なアドレッシングを実行するために用いられ得る。
【００２９】
推測的な物理アドレス(たとえば、推測的な第2の命令の物理アドレス142)が、第2の命令のための推測的なアドレッシングの実行のために用いられるために選択され得る。MUX 140は、推測的な第2の命令の物理アドレス142として、入力102または入力104を、選択的に出力し得る。推測的な第2の命令の物理アドレス142は、第2の命令に対応する物理アドレスであり得る。MUX 140は、図2に関してさらに詳細に記述されるように、PCB 120の出力に基づいて制御され得る。たとえば、第1の命令110が、PCB 120にエントリを有していない場合、MUX 140は、最後のPAバッファ130から最後のPA 148を出力する。
【００３０】
MUX 140によって出力された推測的な第2の命令の物理アドレス142は、タグ配列演算を実行するために命令キャッシュタグ配列150に提供され得る。タグ配列演算は、推測的な第2の命令の物理アドレス142に対応する命令が、命令キャッシュにロードされているか否かを判定し得る。第2の命令の物理アドレス142は、前の命令に基づいて特定された推測的な物理アドレス(たとえば、最後のPA 148、または、第1の命令を有するPCBからの特定のPCBエントリ)であるので、タグ配列演算は、推測的なタグ配列演算であり得る。タグ配列演算は、命令キャッシュタグ配列150においてヒットが生じたかまたはミスが生じたかを示す結果152を生成し得る。ミスに応じて、物理アドレスに対応するキャッシュラインが、メモリから取得され、取得されたキャッシュラインを含めるように、命令キャッシュが更新され得る。
【００３１】
第2の命令の推測的な物理アドレスに基づいて(PCB 120におけるルックアップ動作に基づいて)、タグ配列に配置されたエントリを特定することによって、命令フェッチリプレイのような命令処理遅延が回避され得る。たとえば、最後のPA 148のみに基づいて推測的なプリフェッチを実行するシステムと比較して、第1の命令とは異なるメモリページに、第2の命令が配置されている場合、プロセッサは、第2の命令のための処理のフェッチステージ中、命令フェッチリプレイを回避し得る。推測的な第2の命令の物理アドレス142に基づいて、推測的なタグ配列演算を実行することによって、第2の命令の推測的な物理アドレス142に対応するキャッシュラインが、プリフェッチステージ中に取得され得る。命令キャッシュは、第2の命令のキャッシュラインを含めるように更新されるであろうから、フェッチステージに先立つ第2の命令の物理アドレスに対応するキャッシュラインを取得することによって、フェッチステージ中、リプレイが回避され得る。第2の命令のキャッシュラインが命令キャッシュにロードされるので、推測的な物理アドレス142を用いて実行される推測的なタグ配列演算のタグ配列ルックアップ結果は、命令フェッチ遅延を引き起こすことなく、命令キャッシュ(図示せず)のデータ配列部分(図示せず)から第2の命令を取得するためにフェッチステージにおいて用いられ得る。
【００３２】
図2を参照すると、ページクロスバッファを用いて推測的なアドレッシングを実行するように構成された装置の第2の特定の実施形態のブロック図が例示され、一般に200として明示されている。装置200は、図1のPCB 120、最後のPAバッファ130、MUX 140、および命令キャッシュタグ配列150を含む。装置200はさらに、コンパレータ260、命令テーブルルックアサイドバッファ(ITLB)270、およびロジック280を含む。特定の実施形態では、装置200は、プロセッサに含まれ得る。別の特定の実施形態では、装置200は、少なくとも1つのプロセッサを含む処理システムとして実現され得るか、または、この処理システムに動作可能に接続され得る。装置200は、命令(たとえば、第1の命令110)の処理中、PCB 120を用いて推測的なアドレッシングを実行し得る。
【００３３】
装置200は、命令に関連付けられた仮想アドレスを物理アドレスへ変換するための演算を実行するためにITLB 270を含み得るか、または、ITLB 270にアクセスするように構成され得る。ITLB 270の出力218は、第2の命令212に関連付けられた仮想アドレスを物理アドレスへ変換するためのITLB演算の実行の結果に対応し得る。ITLB 270の出力214は、第1の命令110に関連付けられた仮想アドレスを物理アドレスへ変換するためのITLB演算の実行の結果に対応し得る。ITLB 270は、2つの出力214、218を有するものとして例示されているが、ITLB 270は、各ITLB演算について、1つの出力を生成し得る。たとえば、出力214および出力218は、(同時の変換演算ではなく)順次的な変換演算で生成され得る。ITLB 270は、2つの出力214、218を有するものとして例示されているが、ITLBは、1つまたは複数の追加の命令のためのITLB演算の実行の結果に対応する1つまたは複数の追加の出力(図示せず)を生成するように構成され得る。図2は、アドレス変換を実行するためのITLB 270を図示しているが、他の実施形態では、仮想-物理アドレス変換は、ページテーブルアクセス、アドレス計算、または、1つまたは複数の他の技法によって実行され得る。
【００３４】
推測的な物理アドレス142が、第2の命令212のための正確な物理アドレスに一致しているか否かを判定するために、コンパレータ260は、第2の命令212の推測的な物理アドレス142に対する、第2の命令212のITLB 270による変換の出力218に対応する物理アドレスの比較(たとえば、出力268)を実行するように構成される。コンパレータ260は、第2の命令212についてITLB 270によって実行されたITLB演算の出力218に対応する第1の入力264(第2の命令の物理アドレス)を受け取るように構成され得る。コンパレータ260は、MUX 140によって出力された推測的な第2の命令の物理アドレス142に対応する第2の入力266を受け取るように構成され得る。コンパレータ260は、第1の入力264(出力218)の、第2の入力266(推測的な第2の命令の物理アドレス142)に対する比較を実行し、この比較の結果を示す出力268を生成するように構成され得る。たとえば、第1の入力264と第2の入力266とが一致する場合、コンパレータ260は"1"を出力し、その他の場合には"0"を出力し得る。
【００３５】
ロジック280は、推測的な第2の命令142が、第2の命令212の正確な物理アドレスであるか否かに基づいて、第2の命令212の正確な物理アドレスを選択的に出力272するように構成される。出力272は、第2の命令212の正確な物理アドレスとして用いられ得る。これは、後続する命令(たとえば、第3の命令)のための推測的なアドレッシングを実行するために、最後の直近にアクセスされた命令の最後の物理アドレスとして用いられ得る。ロジック280は、コンパレータの出力268と、出力218によって提供された第2の命令の正確な物理アドレスとを受け取るように構成され得る。ロジック280は、コンパレータの出力268に応答して、推測的な第2の命令の物理アドレス142が出力218に一致しないことを出力268が示す場合には、第2の命令212のITLB 270による変換の出力218を、出力272として選択するように構成される。ロジック280は、AND論理ゲートを含み得るか、AND論理ゲートとして実現され得る。
【００３６】
特定の実施形態では、推測的な第2の命令の物理アドレス142が生成された場合、推測的な第2の命令の物理アドレス142を記憶するように、最後のPAバッファ130が更新され得る。推測的な第2の命令の物理アドレスが不正確である事象では、ロジック280の出力272に応答して、最後のPAバッファ130において最後のPA 148が更新され得る。別の実施形態では、最後のPAバッファ130は、出力214のようなITLB 270の出力に基づいて更新され得る。
【００３７】
特定の実施形態では、PCB 120は、第2の命令212のために実行されたITLB演算の結果(たとえば、出力218)を用いて更新されるように構成され得る。たとえば、図1のPCBエントリ112〜116のうちの1つは、ITLB演算の結果218が、第1の命令110の仮想アドレスを有するPCBエントリ112〜116のうちの1つに対応する物理アドレスとして記憶されるように更新され得る。特定の実施形態では、誤予測が発生したとコンパレータ260が判定した場合、PCB 120は、ロジック280の出力272によって提供された第2の命令212のためのITLB演算の結果218を用いて更新され得る。第2の命令212の正確な物理アドレスを用いてPCB 120におけるエントリを更新することは、第2の命令212が第1の命令110の後に再びフェッチされるべきである場合、推測的なアドレッシングが、正確な物理アドレスを用いて実行されることを可能にし得る。第2の命令212が第1の命令110の後に再びフェッチされるべきである場合、第2の命令212の最も直近に更新された物理アドレスを含み得る第1の命令110に一致するPCBエントリに基づいて、第2の命令212の推測的なアドレッシングが実行され得る。
【００３８】
演算中、第1の命令110は、プロセッサによる実行のために受け取られ、予測された遅延が、第1の命令110に続くと予測されている第2の命令の処理中に生じ得るか否かを判定するために、推測的なアドレッシングが実行され得る。予測された遅延に第2の命令212が関連付けられていることを示し得る第1の命令110に対応する仮想アドレスを、PCBエントリ112〜116のうちの1つが有しているか否かを判定するために、PCB 120がアクセスされ得る。第1の命令110の仮想アドレスを有するPCBエントリ112〜116のうちの特定のPCBエントリに対応する物理アドレス(たとえば、図1の特定の物理アドレス128)は、第2の命令212のための推測的なアドレッシングを実行するために用いられ得る。
【００３９】
ITLB 270は、第1の命令110の仮想アドレスを、第1の命令110の正確な物理アドレス214へ変換するためにITLB演算を実行し得る。特定の実施形態では、装置は、(もしあれば)プロセッサによる実行のために受け取られた最後の命令に対応する物理アドレスを記憶するために最後のPAバッファ130を用い得る。そのため、最後のPAバッファ130は、第1の命令110の物理アドレスを用いて更新され得る。特定の実施形態では、最後のPAバッファ130は、第1の命令110のためのITLB演算の結果214に対応する出力214を記憶し得る。最も直近にアクセスされた命令(たとえば、第1の命令110)の正確な物理アドレスを記憶することによって、PCB 120に基づく遅延をもたらすように次の命令が予測されていない場合、次の命令(たとえば、第2の命令212)が、最後のPAバッファ130から選択され得る。たとえば、PCB 120は、最も直近にアクセスされた命令(たとえば、第1の命令110)に一致するエントリを有していないので、第2の命令212が遅延を引き起こすと予測されていない場合、MUX 140は、最後のPA 148を出力142として選択し得る。出力142は、第2の命令212にアクセスするために用いられ得る、最も直近にアクセスされた命令の物理アドレスである。第2の命令212は、遅延を引き起こすとは予測されていないので、第2の命令212は、第1の命令110後に連続して、共有メモリページに配置され得る。したがって、第2の命令212は、出力142における最後のPA 148に基づいて、共有メモリページからアクセスされ得る。
【００４０】
MUX 140は、制御入力216に応答して第2の入力102または第1の入力104を選択し、推測的な第2の命令の物理アドレス142として出力することができる。たとえば、第1の命令がPCB 120内にエントリを有していることを示す"1"を制御入力216が有している場合、MUX 140は、第1の入力104を選択し得る。別の例では、第1の命令110がPCB 120にエントリを有していない場合、制御入力216は"0"を有する。制御入力216が"0"を有している場合、MUX 140は、タグ配列演算への出力142として、第1の入力104を選択せず、最後のPAバッファ130の出力(たとえば、最後のPA 148)に対応する第2の入力102を選択する。
【００４１】
推測的な第2の命令の物理アドレス142がMUX 140によって出力されたことに応じて、命令キャッシュタグ配列150は、推測的な第2の命令の物理アドレス142が命令キャッシュにロードされているか否かを判定するために、タグ配列演算を実行し得る。タグ配列演算は、命令キャッシュタグ配列150においてヒットが生じたかミスが生じたかを示す結果152を生成し得る。
【００４２】
推測的な第2の命令の物理アドレス142を用いて、第2の命令212のための推測的なプリフェッチが進行中である間、第2の命令212の仮想アドレスを物理アドレスへ変換するためのITLB演算を実行するために、第2の命令212が受け取られ、ITLB 270へ入力として提供され得る。第2の命令212のためのITLB演算の結果に対応する出力218は、第1の入力264としてコンパレータ260へ提供され得る。第2の命令212のためのITLB演算の結果(たとえば、出力218)は、推測的な第2の命令の物理アドレス142が正確であるか否かを判定するために用いられ得る。
【００４３】
コンパレータ260は、コンパレータ260の第1の入力264における第2の命令のITLB出力218と、コンパレータ260の第2の入力266における第2の命令の推測的な第2の命令の物理アドレス142との比較を実行し得る。出力268によって表されるように、コンパレータ260において実行される比較の結果は、第2の入力266に関連付けられた推測的な第2の命令の物理アドレス142が正確であるか否かを示し得る。出力268が、推測的な第2の命令142が正しいか否かを示すことに基づいて、第2の命令212のための命令キャッシュタグ配列150によって実行されるタグ配列演算をリプレイするか否かが判定され得る。推測的な第2の命令の物理アドレス142が正確ではない場合、第2の命令212のタグ配列演算がリプレイされ得る。
【００４４】
特定の実施形態では、第2の命令212は、ロジック280の出力272に基づいてリプレイされ得る。第2の命令212のリプレイは、第2の命令212を実行するプロセッサの命令フェッチパイプラインをフラッシュすることと、および第2の命令212の正確な物理アドレスを用いて別のタグ配列演算を実行することにより、第2の命令212の命令フェッチを再度開始すること、を含み得る。第2の命令212がリプレイされるべきであるか否かに関する判定は、推測的な第2の命令の物理アドレス142が正確であることを出力272が示すか否かに基づき得る。第2の命令212は、推測的な第2の命令の物理アドレス142が正確ではないと出力272が示す場合にリプレイされ得る。たとえば、出力272がゼロの値を含み、かつ第2の命令212が推測的な第2の命令の物理アドレス142が正確である場合には、リプレイされない場合があり得る。推測的な第2の命令の物理アドレス142が正確ではない場合、第2の命令212がリプレイされ、出力272は、出力218に対応する第2の命令212の正確な物理アドレスである値を有し得る。
【００４５】
特定の実施形態では、出力218のような第2の命令212のITLB演算の結果が、最後のPAバッファ130に記憶され得る。第2の命令212の有効なアドレスを用いて最後のPAバッファ130を更新することによって、最後のPAバッファ130内の最後のPA 148を用いて後の命令について推測的なアドレッシングを実行するために、第2の命令後に処理される命令が、MUX 140によって入力102を介して選択されるようになり得る。あるいは、出力218は、推測的な第2の命令の物理アドレス142が無効であるとの判定に基づいて、最後のPAバッファ130内に記憶され得る。最後のPAバッファ130内に第2の命令212のための有効な物理アドレスを記憶するステップは、最後のPAバッファ130を用いて、第2の命令212のリプレイ中に、第2の命令212が正しくフェッチされることを可能にし得る。特定の実施形態では、推測的な第2の命令142が無効であるとの判定に基づいて、ロジック280の出力272が、最後のPAバッファ130に記憶され得る。
【００４６】
特定の実施形態では、出力218のような第2の命令212のITLB演算の結果が、PCB 120のエントリに記憶され得る。たとえば、ITLB演算の結果が、第1の命令110の仮想アドレスを有するPCBエントリ112〜116のうちの1つに対応する物理アドレスとして記憶されるようにPCBエントリ112〜116のうちの1つが更新され得る。特定の実施形態では、PCB 120は、推測的な第2の命令142が有効ではないとの判定に基づいて、ロジック280の出力272(たとえば、第2の命令212のためのITLB演算の出力218)を用いて更新され得る。ITLB演算の結果に基づいて判定された第2の命令の物理アドレスを用いてPCB 120の特定のエントリを更新することによって、第2の命令212の別の発生のための推測的なアドレッシングが、最も直近の有効な物理アドレスを用いて実行され得る。
【００４７】
処理遅延を引き起こすと予測された命令の有効なアドレスを用いて最後の物理アドレスバッファを更新することによって、処理システムは、少なくとも、前の命令の不正確な物理アドレスに関連して引き起こされる処理遅延を短縮し得る。PCBエントリにおいて特定された命令の推測的な物理アドレスと、ITLBから取得された有効な物理アドレスとの比較を実行するステップは、この比較が、推測的な物理アドレスが有効ではないことを示す場合、処理システムが、PCBを更新すべきか否かを判定するステップを可能にし得る。したがって、処理システムは、推測的なアドレッシングを実行するために用いられるPCBによって、処理システムが処理遅延を首尾よく回避することを可能にし得る、より大きな確実性をもたらし得る。
【００４８】
図3を参照すると、ページクロスバッファ(PCB)を用いて命令のセット(たとえば、第1の命令312、第2の命令314、および第3の命令316)のための推測的なアドレッシングを含むパイプライン処理の特定の実施形態の例を例示する図解300が例示される。図解300は、第1の期間(T1)340、第2の期間(T2)350、および第3の期間(T3)360を含む複数の期間(T)の各々のプリフェッチステージ310、フェッチステージ320、および実行ステージ330の状態を例示する。期間T1 340、T2 350、およびT3 360の各々は、プロセッサの1つまたは複数のクロックサイクルまたはパイプラインサイクルに対応し得る。命令312〜316のセットの各々の推測的なアドレッシングのための方法は、命令処理のそれぞれのプリフェッチステージ310中に実行され得る。プリフェッチステージ310における命令のセットの特定の命令の処理は、実行のために処理されるべき特定の命令がプロセッサによって受け取られた後に生じ得る。プリフェッチステージ310は、特定の命令のためのパイプライン処理において、フェッチステージ320および実行ステージ330よりも早くてよい。図解300に例示されていないが、命令312〜316のセットが、プリフェッチステージ310、フェッチステージ320、または実行ステージ330において処理された場合、期間T1 340、T2 350、およびT3 360の間、処理のために、他の命令が受け取られ得る。特定の実施形態では、プリフェッチステージ310中の処理は、命令312〜316のセットのための推測的なアドレッシングを含んでおり、図1の装置100または図2の装置200によって実行され得る。
【００４９】
第1の期間(T1)340中、フェッチステージ320および実行ステージ330は、アイドルであり得る。第1の期間(T1)340中における処理のプリフェッチステージ310では、第1の命令312のための推測的なアドレッシングを実行する方法372は、PCBを用いて実行され得る。342では、第1の命令312がPCB内にエントリを有しているか否かが判定される。たとえば、図1の装置100は、第1の命令312がPCB 120内にエントリを有しているか否かを判定し得る。装置100は、PCBエントリ112〜116の仮想アドレス122〜126のうちの1つが第1の命令312の仮想アドレスに一致するか否かを判定することによって、第1の命令312がエントリを有しているか否かを判定し得る。
【００５０】
344では、第1の命令312がPCB内にエントリを有している場合、特定の物理アドレスがPCBから選択される。たとえば、図1の装置100は、第1の命令312に一致するPCBエントリ112〜116のうちの1つに対応する物理アドレス132〜136のうちの1つを、PCB 120から選択し得る。第1の命令312に一致するPCBエントリ112〜116の特定のPCBエントリに基づいて、装置100は、特定のPCBエントリに対応する特定の物理アドレスを選択するようにMUX 140を制御し得る。第1の命令312後に処理されるべき第2の命令314が、処理遅延(たとえば、命令フェッチリプレイ)を引き起こすと予測されている場合、PCBは、第1の命令312に一致するエントリを有し得る。例示するために、第2の命令314は、第1の命令312とは異なるメモリページに配置され、これによって、メモリページ境界が、第1の命令312を、第2の命令314から分離する。PCBを用いて推測的なアドレッシングを実行することなく第2の命令314がアクセスされる場合、命令フェッチリプレイが起こり得る。したがって、PCB 120から選択される特定の物理アドレスは、第1の命令312とは異なるメモリページに配置され得る第2の命令314の推測的な物理アドレスであり得る。
【００５１】
346では、選択された物理アドレスを用いてタグ配列演算が実行される。選択された物理アドレスは、第1の命令を有しているPCBのエントリから選択された物理アドレスに対応する。たとえば、命令キャッシュタグ配列150は、MUX 140から出力された第2の命令314に対応する物理アドレスが選択されることに応じて、タグ配列演算を実行し得る。選択された物理アドレスは、推測的な物理アドレスであり得るので、タグ配列演算は、推測的であり得る。プリフェッチステージ310中、第2の命令314の推測的な物理アドレスに基づいてタグ配列演算を実行するステップは、第2の命令314を処理することに関連付けられた遅延を短縮し得る。たとえば、第2の期間(T2)350中、第2の命令314がフェッチステージ320において処理されるとき、装置100は、第2の命令314の不正確な物理アドレスに基づく第2の命令314の命令フェッチリプレイを回避し得る。348では、選択された物理アドレスを用いて、最後のPAが更新され得る。
【００５２】
第2の期間(T2)350中、フェッチステージ320は、第1の命令312のフェッチを実行する。実行ステージ330は、アイドルを維持し得る。フェッチステージ320における処理は、推測的なアドレッシングが、第1の期間(T1)340中、プリフェッチステージ310において、PCBを用いて実行されることによって、加速し得る。命令キャッシュタグ配列演算が第2の期間(T2)350中に実行されないことがあり得るのでこの加速が生じ得る。第2の期間(T2)350中の処理のプリフェッチステージ310において、PCBを用いた第2の命令314の推測的なアドレッシングは、方法382に従って実行され得る。
【００５３】
352では、第2の命令314がPCB内にエントリを有するか否かが判定される。たとえば、図1の装置100は、第2の命令314がPCB 120内にエントリを有するか否かを判定し得る。第2の命令314のための推測的なアドレッシングを実行するために用いられるPCBは、第1の期間(T1)340中にプリフェッチステージ310において実行された方法372に従ってアクセスされたPCB(たとえば、PCB 120)に対応し得る。装置100は、PCBエントリ112〜116の仮想アドレス122〜126のうちの1つが、第2の命令314の仮想アドレスに一致するか否かを判定することによって、第2の命令314がPCB 120内にエントリを有するか否かを判定し得る。
【００５４】
354では、PCBが、第2の命令314に対応するエントリを有していない場合、最後の物理アドレスバッファから、物理アドレスが選択される。第3の命令316が、第2の命令314と同じメモリページ内に配置されている場合、PCBは、第2の命令314に対応するエントリを有していないことがあり得る。別の方法で表現すると、第2の命令314は、メモリページ境界によって、第3の命令316から分離されなくてよい。そのため、推測的なアドレッシングは、PCBを用いて実行されないことがあり得る。なぜなら、第3の命令316のような次の命令は、メモリページ境界を越えることを含む第3の命令316へのアクセス可能性によって、処理遅延を引き起こすとは予測されていないからである。したがって、第3の命令316が、処理遅延を引き起こすと予測されていない場合、物理アドレスは、最後の物理アドレスバッファから選択される。
【００５５】
一例では、PCB 120が、第2の命令314に対応するエントリを有していない場合、図1の装置100は、最後のPAバッファ130から、第3の命令316のための物理アドレスを選択し得る。装置100は、最後のPAバッファ130から、第3の命令316のための物理アドレスを選択するようにMUX 140を制御し得る。第2の命令314後に処理されるべき第3の命令316が、処理遅延を引き起こすと予測されている場合、PCB 120は、第2の命令314を備えたエントリを有し得る。
【００５６】
356では、選択された物理アドレスを用いてタグ配列演算が実行される。たとえば、命令キャッシュタグ配列150は、MUX 140から出力された第3の命令316に対応する、選択された物理アドレスを用いてタグ配列演算を実行し得る。選択された物理アドレスは、最後のPAバッファ130に記憶された最後のPA 148に対応し得る。選択された物理アドレスは、第3の命令316に対応するタグ配列を配置するために用いられ得る。
【００５７】
第3の期間(T3)360中、フェッチステージ320は、第2の命令314のフェッチを実行する。実行ステージ330は、第1の命令312を実行する。第1の期間(T1)340中、推測的なアドレッシングが、プリフェッチステージ310においてPCBを用いて実行されることによって、フェッチステージ320における処理は加速し得る。命令キャッシュタグ配列演算は、PCBから取得された推測的な物理アドレスを用いて、第2の命令314のためにプリフェッチステージ310において実行されているので、この加速は生じ得る。その結果、第3の期間(T3)360中、フェッチステージ320において、命令キャッシュタグ配列演算は、第2の命令314のために実行されないことがあり得る。第3の期間(T3)360中の処理のプリフェッチステージ310では、PCBを用いて第3の命令316のための推測的なアドレッシングが、方法392に従って実行され得る。
【００５８】
362では、第3の命令316がPCB内にエントリを有しているか否かが判定される。たとえば、図1の装置100は、第3の命令316がPCB 120内にエントリを有しているか否かを判定し得る。第4の命令のための推測的なアドレッシングを実行するために用いられるPCBは、第2の期間(T2)350中にプリフェッチステージ310において実行される方法382に従ってアクセスされるPCB(たとえば、PCB 120)に対応し得る。装置100は、PCBエントリ112〜116の仮想アドレス122〜126のうちの1つが、第3の命令316の仮想アドレスに一致するか否かを判定することにより、第3の命令316がPCB 120内にエントリを有しているか否かを判定し得る。
【００５９】
364では、PCBが第3の命令316に対応するエントリを有していない場合、最後の物理アドレスバッファから物理アドレスが選択される。たとえば、PCB 120が第3の命令314に対応するエントリを有していない場合、装置100は、最後のPAバッファ130から、第3の命令316のための物理アドレスを選択し得る。装置100は、最後のPAバッファ130から物理アドレスを選択するようにMUX 140を制御し得る。第3の命令316の後に処理されるべき第4の命令が、処理遅延を引き起こすと予測されている場合、PCB 120は、第3の命令316を備えたエントリを有し得る。
【００６０】
366では、選択された物理アドレスを用いてタグ配列演算が実行される。たとえば、命令キャッシュタグ配列150は、MUX 140から出力された第4の命令に対応する、選択された物理アドレス出力を用いてタグ配列演算を実行し得る。選択された物理アドレスは、最後のPAバッファ130に記憶された最後のPA 148に対応し得る。選択された物理アドレスは、第4の命令に対応するタグ配列を配置するために用いられ得る。
【００６１】
図4を参照すると、ページクロスバッファを用いて推測的なアドレッシングを実行する方法400の第1の特定の実施形態のフローチャートが例示される。例示的な例として、方法400は、図1の装置100または図2の装置200によって実行され得る。
【００６２】
402では、プロセッサによって実行されるべき命令が受け取られる。たとえば、図1の装置100は、プロセッサによって実行されるべき第1の命令110を受け取り得る。
【００６３】
404では、この命令がページクロスバッファ内にエントリを有しているか否かを判定するために、各々が物理アドレスを含んでいる1つまたは複数のエントリを含むページクロスバッファにおけるルックアップが実行される。たとえば、図1の装置100は、第1の命令110がPCB 120内にエントリ(たとえば、第1のPCBエントリ112、第2のPCBエントリ114、または第3のPCBエントリ116)を有しているか否かを判定するために、PCB 120におけるルックアップを実行し得る。装置100は、第1の命令110の仮想アドレスが、PCBエントリ112〜116のうちの1つに対応する仮想アドレス122〜126のうちの1つと一致するか否かを判定することによって、第1の命令110が、PCB 120にエントリを有しているか否かを判定し得る。第1の命令110の仮想アドレスが、PCBエントリ112〜116のうちの1つに対応する仮想アドレス122〜126のうちの1つと一致する場合、第1の命令110は、エントリを有し得る。
【００６４】
406では、ページクロスバッファが、ページクロスバッファ内にエントリを有している場合、特定の物理アドレスが、ページクロスバッファ内のエントリから取得される。たとえば、PCBエントリ112〜116のうち1つが、第1の命令110の仮想アドレスと一致する仮想アドレス(たとえば、仮想アドレス122〜126のうちの1つ)を有する特定のPCBエントリを有している場合、図1の装置100は、PCB 120内のエントリから特定の物理アドレスを取得するようにMUX 140を制御する。
【００６５】
方法400は、次の命令の物理アドレスを取得するためにページクロスバッファにアクセスすることによって、潜在的な遅延の短縮を可能にする。推測的なプリフェッチは、最後の物理アドレスのみに基づくよりも、より正確に実行され得る。その結果、処理遅延は短縮され得る。
【００６６】
図5を参照すると、ページクロスバッファを用いて推測的なアドレッシングを実行する方法500の第2の特定の実施形態のフローチャートが例示される。例として、方法500は、図1の装置100または図2の装置200によって実行され得る。
【００６７】
502では、プロセッサによって実行されるべき命令が受け取られる。たとえば、図2の装置200は、プロセッサによって実行されるべき第1の命令110を受け取り得る。
【００６８】
504では、この命令がページクロスバッファ内にエントリを有しているか否かを判定するために、各々が物理アドレスを含む1つまたは複数のエントリを含むページクロスバッファにおけるルックアップが実行される。たとえば、図2の装置200は、第1の命令110がPCB 120内にエントリ(たとえば、第1のPCBエントリ112、第2のPCBエントリ114、または第3のPCBエントリ116)を有しているか否かを判定するために、PCB 120内のルックアップを実行し得る。装置200は、第1の命令110の仮想アドレスが、PCBエントリ112〜116のうちの1つに対応する仮想アドレス122〜126のうちの1つに一致するか否かを判定することによって、第1の命令110がPCB 120内にエントリを有しているか否かを判定し得る。第1の命令110は、第1の命令110の仮想アドレスが、PCBエントリ112〜116のうちの1つに対応する仮想アドレス122〜126のうちの1つに一致する場合、エントリを有し得る。
【００６９】
506では、ページクロスバッファがページクロスバッファ内にエントリを有している場合、ページクロスバッファ内のエントリから特定の物理アドレスが取得される。たとえば、第1の命令110の仮想アドレスに一致する仮想アドレス(たとえば、仮想アドレス122〜126のうちの1つ)を有する特定のPCBエントリを、図2のPCB 104が有している場合、図2の装置200は、PCB 120内のエントリから、特定の物理アドレス128を取得するようにMUX 140を制御し得る。
【００７０】
508では、ページクロスバッファから取得された特定の物理アドレスを用いることによって、推測的なタグ配列演算が実行され得る。たとえば、命令キャッシュタグ配列150は、PCB 120から取得された特定の物理アドレス(たとえば、推測的な第2の命令の物理アドレス142)を用いて、推測的なタグ配列演算を実行し得る。
【００７１】
510では、タグ配列演算をリプレイするか否かを判定するために、特定の物理アドレスが、命令ルックアサイドバッファ演算の結果と比較され得る。たとえば、コンパレータ260は、タグ配列演算をリプレイするか否かを判定するために、特定の物理アドレスを、ITLB 270によって実行された命令ルックアサイドバッファ演算の結果と比較し得る。命令ルックアサイドバッファ演算の結果は、第1の命令110の後に実行されるべき第2の命令212の有効な物理アドレスに対応し得る。コンパレータ260は、(第2の命令212の有効な物理アドレスに対応する)出力218と、推測的な第2の命令の物理アドレス142との比較を実行し得る。推測的な第2の命令の物理アドレス142は、PCB 120から取得されたエントリから選択された特定の物理アドレス128に対応し得る。コンパレータの出力268は、推測的な第2の命令の物理アドレス142が有効であるか否かを示し得る。推測的な第2の命令の物理アドレス142が有効であることを出力268が示しているか否かに基づいて、装置200は、第2の命令212の命令キャッシュタグ配列150によって実行されたタグ配列演算をリプレイするか否かを判定し得る。
【００７２】
512では、命令変換ルックアサイドバッファ演算の結果を用いて、ページクロスバッファが更新され得る。たとえば、図2の装置200は、第2の命令212のITLB演算の出力218に対応する結果を用いてPCB 120を更新し得る。たとえば、第1の命令110の仮想アドレスを有するPCBエントリ112〜116のうちの1つに対応する物理アドレスとしてITLB演算の結果が記憶されるように、PCBエントリ112〜116のうちの1つが更新され得る。
【００７３】
図6は、ページクロスバッファを用いて推測的なアドレッシングを実行するように動作可能な構成要素を含むワイヤレス電子デバイス600のブロック図である。ワイヤレス電子デバイス600は、メモリ632に結合されたプロセッサ610を含む。例示的な例において、ワイヤレス電子デバイス600は、図1の装置100、図2の装置200、またはその構成要素を含み得る。ワイヤレス電子デバイス600は、図1〜図5を参照して記載された方法または機能に従って動作し得る。
【００７４】
プロセッサ610は、図1のPCB 120、図1の最後のPA 130、図1のMUX 140、図1の命令キャッシュタグアレイ150、またはこれらの組合せを含み得るか、または、実現し得る。たとえば、モジュールはプロセッサ610へ統合され、図1〜図5を参照して記載された機能の少なくとも一部を実行するための専用回路またはその他のロジックを含み得る。
【００７５】
メモリ632は、命令620を記憶する非一時的な有形のコンピュータ読取可能および/またはプロセッサ読取可能な記憶デバイスであり得る。命令620は、図1のPCB 120、図1の最後のPAバッファ130、図1のMUX 140、図1の命令キャッシュタグ配列150、またはこれらの組合せを実現するためにプロセッサ610によって実行可能であり得る。たとえば、命令620は、図1のPCB 120、図1の最後のPAバッファ130、図1のMUX 140、図1の命令キャッシュタグ配列150、またはこれらの組合せに関して記載された1つまたは複数の機能または方法を実行するためにプロセッサ610によって実行可能であり得る命令を含み得る。これら命令620は、図1〜図2を参照して記載された1つまたは複数の機能または方法、図3の方法372、図3の方法382、図3の方法392、図4の方法400、図5の方法500、またはこれらの組合せをプロセッサ610に対して実行させるためにプロセッサ610によって実行可能な命令を含み得る。例示するために、命令620は、図1のPCB 120を用いて推測的なアドレッシングを実行するためのコードを含み得る。メモリ632は、図1のPCB 120を含み得る。メモリ632は、図1の最後のPAバッファ130を含み得る。他の実施形態では、メモリ632からの命令を実行するプロセッサ610によって実行されるように本明細書に記載された1つまたは複数の機能が、代わりに、専用ハードウェア(たとえば、プログラマブルロジックアレイ、FPGAデバイス、ASIC、または、たとえばCPU、DSP、マイクロプロセッサ、ARMプロセッサ、コントローラ、他のハードウェアデバイス、またはファームウェアデバイスのような特定された機能を実行するようにプログラムされた処理ユニット、またはこれら任意の組合せ)によって実行され得る。
【００７６】
図6はまた、プロセッサ610およびディスプレイ628に接続されたディスプレイコントローラ626を図示する。コーダ/デコーダ(コーデック)634も、プロセッサ610に接続され得る。スピーカ636およびマイクロホン638が、コーデック634に結合され得る。
【００７７】
図6はまた、ワイヤレスコントローラ640がプロセッサ610に結合され得ることを示しており、ワイヤレスコントローラ640はトランシーバ650を介してアンテナ642と通信する。したがって、ワイヤレスコントローラ640、トランシーバ650、およびアンテナ642は、モバイル通信デバイス600によるワイヤレス通信を可能にするワイヤレスインターフェースを表し得る。ワイヤレス電子デバイス600は、多数のワイヤレスインターフェースを含み得る。ここでは、異なるワイヤレスネットワークが、異なるネットワーキング技法またはこれらネットワーキング技法の組合せをサポートするように構成される。
【００７８】
特定の実施形態では、プロセッサ610、メモリ632、ディスプレイコントローラ626、コーデック634、ワイヤレスコントローラ640、およびトランシーバ650は、システムインパッケージまたはシステムオンチップデバイス622に含まれる。特定の実施形態では、入力デバイス630および電源644は、システムオンチップデバイス622に結合される。さらに、特定の実施形態では、図6に例示されるように、入力デバイス630、スピーカ636、マイクロホン638、アンテナ642、および電源644は、システムオンチップデバイス622の外側にある。しかしながら、入力デバイス630、スピーカ636、マイクロホン638、アンテナ642、および電源644の各々は、インターフェースまたはコントローラのようなシステムオンチップデバイス622の構成要素に結合され得る。
【００７９】
図6はワイヤレス電子デバイスを図示しているが、プロセッサ610およびメモリ632は、マルチメディアプレーヤ、エンタテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、モバイルパーソナルコンピュータ、スマートフォン、固定ロケーションデータユニット、コンピューティングデバイス(たとえば、コンピューティングデバイス、タブレットコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス等)、メディアデバイス、または、画像データを処理するように構成された別のデバイスのようなその他のデバイスへ統合され得ることが注目されるべきである。
【００８０】
記載されたシステムおよび方法と連携して、ページクロスバッファを用いて推測的なアドレッシングを実行するための装置が開示される。この装置は、1つまたは複数のエントリを記憶するための手段を含み、1つまたは複数のエントリの各々は、物理アドレスを含む。たとえば、1つまたは複数のエントリを記憶するための手段は、プロセッサ610、メモリ632、図1のPCB 120、各々が物理アドレスを含む1つまたは複数のエントリを記憶するように構成されたその他のデバイス、またはこれら任意の組合せを含み得る。この装置は、記憶するための手段が、特定の命令に対応するエントリを有することに応じて、記憶するための手段から取得された特定の物理アドレスに対応するアドレスを選択するための手段を含む。たとえば、選択するための手段は、プロセッサ610、図1のMUX 140、アドレスを選択するように構成された他のデバイス、またはこれらの組合せを含み得る。アドレスを選択するための手段の出力は、タグ配列演算を実行するための手段に提供される。タグ配列演算を実行するための手段は、記憶するための手段から取得された特定の物理アドレスを用いて、推測的なタグ配列演算を実行するように構成され得る。たとえば、タグ配列演算を実行するための手段は、図1または図2の命令キャッシュタグ配列150、またはタグ配列演算を実行するように構成されたその他のデバイスであり得る。
【００８１】
当業者であればさらに、本明細書に開示された実施形態に関連して記載された例示的な様々な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはこれら両方の組合せとして実現され得ることを認識するであろう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップが、これらの機能の観点から一般的に説明された。これら機能がハードウェアとしてまたはソフトウェアとして実現されるかは、特定の用途およびシステム全体に課せられている設計制約に依存する。当業者であれば、各特定の用途に応じて変化する方式で、前述した機能を実現し得るが、この適用判断は、本発明の範囲からの逸脱をもたらすものと解釈されるべきではない。
【００８２】
本明細書で開示された実施形態に関して記載された方法またはアルゴリズムのステップは、ハードウェアにおいて直接的に、プロセッサによって実行されるソフトウェアモジュールにおいて、あるいはこれら2つの組合せによって具体化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取専用メモリ(ROM)、プログラマブル読取専用メモリ(PROM)、消去可能プログラマブル読取専用メモリ(EPROM)、電子的消去可能プログラマブル読取専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取専用メモリ(CD-ROM)、または当該技術分野で周知のその他任意の形式の非一時的な記憶媒体に存在し得る。典型的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、また記憶媒体に情報を書き込むことができるようにプロセッサに結合される。あるいは、この記憶媒体は、プロセッサに統合され得る。プロセッサおよび記憶媒体は、ASICに存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末(たとえば、モバイルフォンまたはPDA)に存在し得る。代案では、このプロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内の個別の構成要素として存在し得る。
【００８３】
開示された実施形態の前述した記載は、当業者が、開示された実施形態の製造または利用を可能とするように提供される。これら実施形態に対する様々な変形例もまた、当業者に明らかであって、本明細書で定義された原理は、本開示の範囲から逸脱することなく他の例にも適用され得る。したがって、本開示は、本明細書で開示された実施形態に限定されるものではなく、後述する特許請求の範囲によって定義されたような原理および新規な特徴に一致することが可能な最も広い範囲に相当することが意図されている。
【符号の説明】
【００８４】
102  第2の入力
104  第1の入力
110  第1の命令(仮想アドレス)
112  PCBエントリ
114  PCBエントリ
116  PCBエントリ
120  ページクロスバッファ(PCB)
122  仮想アドレス
124  仮想アドレス
126  仮想アドレス
128  特定の物理アドレス
130  最後の物理アドレス(最後のPA)バッファ
132  物理アドレス
134  物理アドレス
136  物理アドレス
140  MUX
142  推測的な第2の命令物理アドレス
148  最後の物理アドレス(最後のPA)
150  命令キャッシュタグ配列
152  結果(第2の命令ヒット/ミス)
212  第1の命令(仮想アドレス)
214  出力
216  制御入力
218  出力
260  コンパレータ
264  第1の入力
266  第2の入力
268  出力
272  出力
280  ロジック
310  プリフェッチステージ
312  第1の命令
314  第2の命令
316  第3の命令
320  フェッチステージ
330  実行ステージ
610  プロセッサ
620  命令
626  ディスプレイコントローラ
628  ディスプレイ
630  入力デバイス
632  メモリ
634  コーデック
636  スピーカ
638  マイクロホン
640  ワイヤレスコントローラ
644  電源
650  トランシーバ
【図１】
2016505972.tif 000003
【図２】
2016505972.tif 000004
【図３】
2016505972.tif 000005
【図４】
2016505972.tif 000006
【図５】
2016505972.tif 000007
【図６】
2016505972.tif 000008
【手続補正書】
【提出日】平成27年2月2日(2015.2.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサによって実行されるべき命令を受け取るステップと、
各々が命令アドレスおよび物理アドレスを含む1つまたは複数のエントリを含むページクロスバッファ内に前記命令がエントリを有しているか否かを判定するために、前記ページクロスバッファにおけるルックアップを実行するステップであって、前記ページクロスバッファ内の各エントリの前記命令アドレスおよび前記物理アドレスは、異なる命令に対応し、前記ページクロスバッファの少なくとも1つのエントリは、分岐命令アドレスを含んでいない、実行するステップと、
前記ページクロスバッファが前記ページクロスバッファ内に前記エントリを有している場合、前記ページクロスバッファ内の前記エントリから特定の物理アドレスを取得するステップと、
を備える方法。
【請求項２】
前記ページクロスバッファ内の各エントリの前記命令アドレスおよび前記物理アドレスはそれぞれ、第1のメモリページ、および前記第1のメモリページとは異なる第2のメモリページに対応する、請求項1に記載の方法。
【請求項３】
前記エントリの前記命令アドレスおよび前記特定の物理アドレスは、第1の命令および第2の命令をそれぞれ特定し、前記第1の命令および前記第2の命令は、順次的なメモリアドレスに配置されている、請求項1に記載の方法。
【請求項４】
最後の物理アドレスバッファに、命令変換ルックアサイドバッファ演算の結果を記憶するステップ、をさらに備える請求項1に記載の方法。
【請求項５】
前記命令が前記ページクロスバッファ内にエントリを有していない場合、前記最後の物理アドレスバッファから、最後の物理アドレスを選択するステップ、をさらに備える請求項4に記載の方法。
【請求項６】
前記ページクロスバッファから取得された特定の物理アドレスを用いることによって、推測的なタグ配列演算を実行するステップ、をさらに備える請求項1に記載の方法。
【請求項７】
前記エントリの前記命令アドレスおよび前記特定の物理アドレスは、第1の命令の仮想アドレスおよび次の命令の物理アドレスをそれぞれ特定し、前記推測的なタグ配列演算は、第1の期間中、処理のプリフェッチステージにおいて、前記第1の命令の推測的なアドレッシングを実行するステップを備え、前記第1の期間は、前記処理のプリフェッチステージにおいて、前記次の命令のために推測的なアドレッシングが実行される第2の期間の前であり、前記第2の期間中、処理のフェッチステージにおいて、前記第1の命令のフェッチを実行するステップをさらに備える請求項6に記載の方法。
【請求項８】
タグ配列演算をリプレイするか否かを判定するために、前記特定の物理アドレスを、命令変換ルックアサイドバッファ演算の結果と比較するステップと、
前記命令変換ルックアサイドバッファ演算の結果を用いて前記ページクロスバッファを更新するステップと、をさらに備える請求項1に記載の方法。
【請求項９】
前記特定の物理アドレスは、処理パイプラインのフェッチステージに先立って、前記ページクロスバッファの前記エントリから読まれる、請求項1に記載の方法。
【請求項１０】
1つまたは複数のエントリを含むページクロスバッファであって、前記1つまたは複数のエントリの各々は、命令アドレスおよび物理アドレスを含み、前記ページクロスバッファ内の各エントリの前記命令アドレスおよび前記物理アドレスは、異なる命令に対応し、前記ページクロスバッファの少なくとも1つのエントリは、分岐命令アドレスを含んでいない、ページクロスバッファと、
タグ配列と、
前記ページクロスバッファが、特定の命令に対応するエントリを有することに応じて、前記ページクロスバッファから取得される特定の物理アドレスを選択するように構成されたマルチプレクサであって、前記マルチプレクサの出力は前記タグ配列に提供される、マルチプレクサと、
を備える装置。
【請求項１１】
命令変換ルックアサイドバッファ演算の結果が、最後の物理アドレスバッファに記憶され、前記ページクロスバッファが、前記特定の命令に対応する何らかのエントリを有していない場合、前記マルチプレクサはさらに、前記最後の物理アドレスバッファの出力を選択するように構成された、請求項10に記載の装置。
【請求項１２】
前記タグ配列は、前記マルチプレクサによって選択された前記最後の物理アドレスバッファの出力を用いて、タグ配列演算を実行するように構成された、請求項11に記載の装置。
【請求項１３】
タグ配列演算をリプレイするか否かを判定するために、前記特定の物理アドレスを、命令変換ルックアサイドバッファ演算の結果と比較するように構成されたコンパレータ、をさらに備える請求項10に記載の装置。
【請求項１４】
前記ページクロスバッファは、前記命令変換ルックアサイドバッファ演算の前記結果を用いて更新される、請求項13に記載の装置。
【請求項１５】
前記コンパレータの結果と、前記命令変換ルックアサイドバッファ演算の結果とが同一である場合、最後の物理アドレスバッファが、前記特定の物理アドレスを記憶する、請求項13に記載の装置。
【請求項１６】
前記ページクロスバッファ内の各エントリは、異なるメモリページに対応する命令アドレスおよび物理アドレスを記憶することに限定されている、請求項15に記載の装置。
【請求項１７】
前記タグ配列は、処理パイプラインのフェッチステージに先立って、推測的なタグ配列演算を実行するように構成され、前記推測的なタグ配列演算は、前記ページクロスバッファから取得された前記特定の物理アドレスを用いる、請求項10に記載の装置。
【請求項１８】
1つまたは複数のエントリを記憶するための手段であって、前記1つまたは複数のエントリの各々は、命令アドレスおよび物理アドレスを含み、前記1つまたは複数のエントリを記憶するための手段における各エントリの前記命令アドレスおよび前記物理アドレスは、異なる命令に対応し、前記1つまたは複数のエントリを記憶するための手段の少なくとも1つのエントリは、分岐命令アドレスを含んでいない、記憶するための手段と、
前記記憶するための手段が、特定の命令に対応するエントリを有することに応じて、前記記憶するための手段から取得される特定の物理アドレスに対応するアドレスを選択するための手段であって、前記アドレスを選択するための手段の出力は、タグ配列演算を実行するための手段に提供される、選択するための手段と、
を備える装置。
【請求項１９】
前記タグ配列演算を実行するための手段は、処理パイプラインのフェッチステージに先立って、推測的なタグ配列演算を実行するように構成され、前記推測的なタグ配列演算は、前記記憶するための手段から取得される前記特定の物理アドレスを用いる、請求項18に記載の装置。
【請求項２０】
命令を記憶するコンピュータ読取可能な記憶媒体であって、前記命令が、
処理システムに、実行のための特定の命令を受け取らせること、
各々が命令アドレスおよび物理アドレスを含む1つまたは複数のエントリを含むページクロスバッファ内に前記特定の命令がエントリを有しているか否かを判定するために、前記ページクロスバッファにおけるルックアップを実行することであって、前記ページクロスバッファにおける各エントリの前記命令アドレスおよび前記物理アドレスは、異なる命令に対応し、前記ページクロスバッファの少なくとも1つのエントリは、分岐命令アドレスを含んでいない、こと、および
前記ページクロスバッファが前記ページクロスバッファ内に前記エントリを有している場合、前記ページクロスバッファ内の前記エントリから特定の物理アドレスを取得すること、を行うように前記処理システム内で実行可能である、コンピュータ読取可能な記憶媒体。
【請求項２１】
前記ページクロスバッファ内の各エントリの前記命令アドレスおよび前記物理アドレスはそれぞれ、第1のメモリページと、前記第1のメモリページとは異なる第2のメモリページとに対応する、請求項20に記載のコンピュータ読取可能な記憶媒体。
【請求項２２】
前記第1の命令は、第1のメモリページの最後のアドレスに配置され、前記第2の命令は、次のメモリページの第1のアドレスに配置される、請求項3に記載の方法。
【請求項２３】
前記エントリの前記命令アドレスおよび前記特定の物理アドレスは、第1の命令および第2の命令をそれぞれ特定し、前記第1の命令および前記第2の命令は、順次的なメモリアドレスに配置される、請求項10に記載の装置。
【請求項２４】
前記第1の命令は、第1のメモリページの最後のアドレスに配置され、前記第2の命令は、次のメモリページの第1のアドレスに配置される、請求項23に記載の装置。
【国際調査報告】
2016505972.tif 000009
2016505972.tif 000010