(57)【要約】イベントストリーム内の値の範囲の拡張された適応的プロファイリングは、イベントストリーム内の連続する値の範囲のセット及び対応するアクセス頻度を識別することを含む。拡張された適応的プロファイリングは、マージ閾値及びスプリット閾値を使用する。連続する範囲のセットは、値の範囲空間全体に及ぶ。連続する値の範囲のセット及び対応するアクセス頻度の周期的なトラバースは、所定の閾値アクセス頻度を上回る対応するアクセス頻度を有する値の範囲のターゲットセットを識別する。値の範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有している。値の範囲のターゲットは、値の範囲空間全体の少なくとも一部に及ぶ。第１動作は、値の範囲のターゲットセットを使用する。【選択図】図６
2019506676.tif 000002
【特許請求の範囲】
【請求項１】
メモリ要求のストリーム内のメモリアドレスの連続する範囲のセット及び対応するアクセス頻度を識別するために、処理システムにおいてメモリ要求のストリーム内のメモリアドレスの範囲を適応的にプロファイリングすることであって、前記適応的にプロファイリングすることは、マージ閾値及びスプリット閾値に基づいており、連続する範囲のセットは、メモリアドレスの範囲空間全体に及び、前記マージ閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最小アクセス頻度を示しており、前記スプリット閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最大アクセス頻度を示している、ことと、
所定の閾値アクセス頻度を上回る対応するアクセス頻度を有するメモリアドレスの範囲のターゲットセットを識別するために、メモリアドレスの連続する範囲のセット及び対応するアクセス頻度を周期的にトラバースすることであって、メモリアドレスの範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有しており、メモリアドレスのターゲット範囲は、メモリアドレスの範囲空間全体の少なくとも一部に及ぶ、ことと、
メモリアドレスの範囲のターゲットセット内のメモリアドレスの範囲を使用して第１動作を実行することと、を含む、
方法。
【請求項２】
メモリアドレスの範囲のターゲットセットは、メモリアドレスの範囲空間全体より狭い、
請求項１の方法。
【請求項３】
メモリアドレスの範囲のターゲットセットは、メモリアドレスの非連続範囲を含む、
請求項１又は２の方法。
【請求項４】
前記メモリアドレスは仮想メモリアドレスであって、
前記第１動作は、
メモリアドレスの範囲のターゲットセットを、ベースアドレス値及びリミット値に基づいて決定された物理アドレス範囲のセットに仮想−物理メモリアドレス変換することと、
物理アドレス範囲のセットを、対応するベースアドレス値及びリミット値のペアとして、ベースリミットレジスタのセットに記憶することであって、前記所定数の範囲は、ベースリミットレジスタのセット内のベースリミットレジスタの総数に対応している、ことと、を含む、
請求項１又は２の方法。
【請求項５】
前記メモリアドレスは仮想メモリアドレスであって、
前記第１動作は、
メモリアドレスの範囲のターゲットセットの連続する範囲を、メモリの大きなページのアドレス範囲に変換することを含む、
請求項１又は２の方法。
【請求項６】
前記第１動作は、
メモリアドレスのターゲット範囲に関連するメインメモリの内容を、マルチレベルのメモリシステム内の高帯域メモリに割り当てることを含む、
請求項１又は２の方法。
【請求項７】
前記第１動作を実行することは、
複数のリクエスタによるメモリアドレスへの複数のメモリ要求を識別することと、
複数の要求に応じてコヒーレンス動作を実行することと、を含む、
請求項１の方法。
【請求項８】
前記コヒーレンス動作を実行することは、メモリアドレスに対応するキャッシュラインを無効にすることを含む、
請求項７の方法。
【請求項９】
メモリ要求のストリーム内のメモリアドレスの連続する範囲のセット及び対応するアクセス頻度を識別するために、処理システムにおいてメモリ要求のストリーム内のメモリアドレスの範囲を適応的にプロファイリングするように構成された適応範囲プロファイラであって、前記適応的にプロファイリングすることは、マージ閾値及びスプリット閾値に基づいており、連続する範囲のセットは、メモリアドレスの範囲空間全体に及び、前記マージ閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最小アクセス頻度を示しており、前記スプリット閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最大アクセス頻度を示している、適応範囲プロファイラと、
所定の閾値アクセス頻度を上回る対応するアクセス頻度を有するメモリアドレスの範囲のターゲットセットを識別するために、メモリアドレスの連続する範囲のセット及び対応するアクセス頻度を周期的にトラバースするように構成された範囲合体及びカリングロジックであって、メモリアドレスの範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有しており、メモリアドレスのターゲット範囲は、メモリアドレスの範囲空間全体の少なくとも一部に及ぶ、範囲合体及びカリングロジックと、
メモリアドレスの範囲のターゲットセット内のメモリアドレスの範囲を使用して第１動作を実行するように構成されたロジックと、を備える、
装置。
【請求項１０】
メモリアドレスの範囲のターゲットセットは、メモリアドレスの範囲空間全体より狭く、メモリアドレスの非連続範囲を含む、
請求項９の装置。
【請求項１１】
前記ロジックは、
範囲のターゲットセットを、ベースアドレス値及びリミット値を有する物理アドレスのセットに変換することを含む第１動作を実行するように構成された仮想−物理アドレストランスレータと、
物理アドレスの範囲のセットを記憶するように構成されたベースリミットレジスタのセットであって、前記所定数の範囲は、ベースリミットレジスタのセット内のベースリミットレジスタの総数に対応している、ベースリミットレジスタのセットと、を備える、
請求項９の装置。
【請求項１２】
ベースリミットレジスタのセットのメモリマッピングに対して冗長なメモリマッピングを含むページテーブルを備える、
請求項１１の装置。
【請求項１３】
前記ロジックは、
ターゲットセットの連続する範囲を、メモリの大きなページのアドレス範囲に変換することを含む第１動作を実行するように構成された仮想−物理アドレストランスレータを備える、
請求項９、１０、１１又は１２の装置。
【請求項１４】
高帯域メモリを備え、
前記第１動作は、
メモリアドレスのターゲット範囲に関連するメインメモリの内容を前記高帯域メモリに割り当てることを含む、
請求項９、１０、１１又は１２の装置。
【請求項１５】
前記ロジックは、複数のリクエスタによるメモリアドレスへの複数のメモリ要求を識別し、複数の要求に応じてコヒーレンス動作を実行するように構成されている、
請求項９、１０、１１又は１２の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングシステムに関し、特に、値範囲の分類を使用するコンピューティングシステムに関する。
【背景技術】
【０００２】
従来の値範囲分類システムは、イベントストリーム内の値へのアクセスをカウントし、値範囲に対するアクセスの頻度を動的に判別する。しかしながら、そのようなシステムによって使用される範囲の数は、実際のシステムで実装するのが非常に高価になる可能性のあるかなりの量の高帯域幅の記憶位置を必要とすることがある。したがって、値範囲分類システムを利用するための改良された技術が望まれている。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の少なくとも１つの実施形態では、方法は、メモリ要求のストリーム内のメモリアドレスの連続する範囲のセット及び対応するアクセス頻度を識別するために、処理システムにおいてメモリ要求のストリーム内のメモリアドレスの範囲を適応的にプロファイリングすることを含む。適応的にプロファイリングすることは、マージ閾値及びスプリット閾値に基づいている。連続する範囲のセットは、メモリアドレスの範囲空間全体に及ぶ。マージ閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最小アクセス頻度を示している。スプリット閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最大アクセス頻度を示している。
【０００４】
方法は、所定の閾値アクセス頻度を上回る対応するアクセス頻度を有するメモリアドレスの範囲のターゲットセットを識別するために、メモリアドレスの連続する範囲のセット及び対応するアクセス頻度を周期的にトラバースすることを含む。メモリアドレスの範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有する。メモリアドレスのターゲット範囲は、メモリアドレスの範囲空間全体の少なくとも一部に及ぶ。方法は、メモリアドレスの範囲のターゲットセット内のメモリアドレスの範囲を使用して第１動作を実行することを含む。メモリアドレスの範囲のターゲットセットは、メモリアドレスの範囲空間全体より狭くてもよい。メモリアドレスの範囲のターゲットセットは、メモリアドレスの非連続範囲を含んでもよい。メモリアドレスは、仮想メモリアドレスであってもよく、第１動作は、メモリアドレスの範囲のターゲットセットを、ベースアドレス値及びリミット値に基づいて決定された物理アドレス範囲のセットに仮想−物理メモリアドレス変換することを含んでもよい。第１動作は、物理アドレス範囲のセットを、対応するベースアドレス値及びリミット値のペアとして、ベースリミットレジスタのセットに記憶することを更に含んでもよい。所定数の範囲は、ベースリミットレジスタのセット内のベースリミットレジスタの総数に対応してもよい。
【０００５】
メモリアドレスは、仮想メモリアドレスであってもよく、第１動作は、メモリアドレスの範囲のターゲットセットの連続する範囲を、メモリの大きなページのアドレス範囲に変換することを含んでもよい。第１動作は、メモリアドレスのターゲット範囲に関連するメインメモリの内容を、マルチレベルのメモリシステム内の高帯域メモリに割り当てることを含んでもよい。第１動作を実行することは、複数のリクエスタによるメモリアドレスへの複数のメモリ要求を識別することと、複数の要求に応じてコヒーレンス動作を実行することと、を含んでもよい。コヒーレンス動作を実行することは、メモリアドレスに対応するキャッシュラインを無効にすることを含んでもよい。
【０００６】
本発明の少なくとも１つの実施形態では、装置は、メモリ要求のストリーム内のメモリアドレスの連続する範囲のセット及び対応するアクセス頻度を識別するために、処理システムにおいてメモリ要求のストリーム内のメモリアドレスの範囲を適応的にプロファイリングするように構成された適応範囲プロファイラを備える。適応的にプロファイリングすることは、マージ閾値及びスプリット閾値に基づいている。連続する範囲のセットは、メモリアドレスの範囲空間全体に及ぶ。マージ閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最小アクセス頻度を示している。スプリット閾値は、メモリアドレスの連続する範囲のセット内のメモリアドレスの範囲毎の最大アクセス頻度を示している。装置は、所定の閾値アクセス頻度を上回る対応するアクセス頻度を有するメモリアドレスの範囲のターゲットセットを識別するために、メモリアドレスの連続する範囲のセット及び対応するアクセス頻度を周期的にトラバースするように構成された範囲合体及びカリング（culling）ロジックを備える。メモリアドレスの範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有し、メモリアドレスのターゲット範囲は、メモリアドレスの範囲空間全体の少なくとも一部に及ぶ。装置は、メモリアドレスの範囲のターゲットセット内のメモリアドレスの範囲を使用して第１動作を実行するように構成されたロジックを備える。メモリアドレスの範囲のターゲットセットは、メモリアドレスの範囲空間全体より狭くてもよく、メモリアドレスの非連続範囲を含んでもよい。
【０００７】
ロジックは、範囲のターゲットセットを、ベースアドレス値及びリミット値を有する物理アドレスのセットに変換することを含む第１動作を実行するように構成された仮想−物理アドレストランスレータを備えてもよい。ロジックは、物理アドレスの範囲のセットを記憶するように構成されたベースリミットレジスタのセットを備えてもよい。所定数の範囲は、ベースリミットレジスタのセット内のベースリミットレジスタの総数に対応してもよい。装置は、ベースリミットレジスタのセットのメモリマッピングに対して冗長なメモリマッピングを含むページテーブルを備えてもよい。ロジックは、ターゲットセットの連続する範囲を、メモリの大きなページのアドレス範囲に変換することを含む第１動作を実行するように構成された仮想−物理アドレストランスレータを備えてもよい。装置は、高帯域メモリを備えてもよい。第１動作は、メモリアドレスのターゲット範囲に関連するメインメモリの内容を高帯域メモリに割り当てることを含んでもよい。ロジックは、複数のリクエスタによるメモリアドレスへの複数のメモリ要求を識別し、複数の要求に応じてコヒーレンス動作を実行するように構成されてもよい。
【０００８】
本発明の少なくとも１つの実施形態では、方法は、イベントストリーム内のデータ値の連続する範囲のセット及び対応するアクセス頻度を識別するために、処理システムにおいてイベントストリーム内のデータ値の範囲を適応的にプロファイリングすることを含む。適応的にプロファイリングすることは、マージ閾値及びスプリット閾値に基づいている。連続する範囲のセットは、データ値の範囲空間全体に及ぶ。マージ閾値は、データ値の連続する範囲のセット内のデータ値の範囲毎の最小アクセス頻度を示している。スプリット閾値は、データ値の連続する範囲のセット内のデータ値の範囲毎の最大アクセス頻度を示している。方法は、所定の閾値アクセス頻度を上回る対応するアクセス頻度を有するデータ値の範囲のターゲットセットを識別するために、データ値の連続する範囲のセット及び対応するアクセス頻度を周期的にトラバースすることを含む。データ値の範囲のターゲットセットは、所定数の範囲以下の範囲の総数を有し、データ値のターゲット範囲は、データ値の範囲空間全体の少なくとも一部に及ぶ。方法は、データ値の範囲のターゲットセット内のデータ値の範囲を使用して第１動作を実行することを含む。データ値の範囲のターゲットセットは、データ値の範囲空間全体より狭くてもよく、データ値の範囲のターゲットセットは、データ値の非連続範囲を含んでもよい。イベントストリームは、メモリ要求のストリームであってもよく、データ値は、メモリアドレスであってもよい。イベントストリームは、制御フロー命令のストリームであってもよく、データ値は、ターゲットプログラムアドレスであってもよく、第１動作を実行することは、対応する制御フロー命令のターゲットを予測することを含んでもよい。イベントストリームは、データ計算命令のストリームであってもよく、データ値は、データオペランドであってもよく、第１動作を実行することは、１つ以上のデータオペランドに基づいてデータ計算の出力の値を予測することを含んでもよい。
【０００９】
添付図面を参照することによって、本発明をより良く理解することができ、その多くの目的、特徴及び利点が当業者に明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明の少なくとも１つの実施形態による、例示的な値範囲プロファイラの機能ブロック図である。
【図２】例示的な値範囲プロファイリングロジックの機能ブロック図である。
【図３】値範囲プロファイラの例示的な状態の状態図である。
【図４】スプリット動作後の値範囲プロファイラの例示的な状態の状態図である。
【図５】マージ操作前の値範囲プロファイラの例示的な状態の状態図である。
【図６】本発明の少なくとも１つの実施形態による、拡張された値範囲プロファイリングを使用した例示的なシステムの機能ブロック図である。
【図７】本発明の少なくとも１つの実施形態による、拡張された値範囲プロファイリングを使用したシステムの情報及び制御フローを示す図である。
【図８】例示的な処理システムの機能ブロック図である。
【図９】本発明の少なくとも１つの実施形態による、拡張された値範囲プロファイリングを使用した例示的なシステムの一部の機能ブロック図である。
【図１０】仮想アドレスから、ベース及びリミットによって表される物理アドレスへの例示的な範囲変換を示す図である。
【図１１】例示的な冗長メモリマッピングシステムの機能ブロック図である。
【発明を実施するための形態】
【００１１】
異なる図面において同じ符号を使用することは、類似又は同一の項目を示している。
【００１２】
図１を参照すると、例示的な値範囲プロファイラ３０８は、（例えば、メモリアドレス幅、オペランド幅又はプログラムカウンタ幅に基づいて）可能な値の範囲全体に及ぶ値範囲のランク付けされたリストを生成する範囲プロファイリングロジック３２８を含む。範囲プロファイリングロジック３２８は、アクセスの値範囲及び対応する頻度をランク付けリスト記憶装置３３０に記憶する。少なくとも１つの実施形態では、値範囲プロファイラ３０８は、イベントストリーム内のこれらの発生の頻度に従って値を範囲に階層的に分類するために、ストリーミングワンパス技術を実装している。値範囲プロファイラ３０８は、より頻繁にアクセスされた値範囲をより正確なサブ範囲に分類する。値範囲プロファイラ３０８がより多くのイベントを分析すると、サブ範囲が更なるサブ範囲に分割されてもよいし、まばらにアクセスされた値範囲に起因してより大きな値範囲を形成するために、サブ範囲がマージされてもよい。値範囲プロファイラ３０８は、イベントストリーム全体から収集された情報を、比較的小さい有限量のメモリにワンパスで記憶する。値範囲プロファイラ３０８は、ランク付けされたリストを、各値範囲及び関連するカウンタを含むメモリにデータアレイとして記憶された範囲のプロファイルツリーとして生成してもよい。値範囲プロファイラ３０８は、以下に更に説明するように、値範囲の精度を高アクセス頻度の範囲値及び固定された記憶サイズに適用することによって、従来の適応範囲プロファイリング技術の性能を向上させる拡張を含む。
【００１３】
範囲プロファイリングロジック３２８のパイプライン型の実装についての例示的なアーキテクチャが図２に示されている。バッファ４０６は、イベント（例えば、メモリ要求、算術命令又はプログラム制御命令）のストリームを受信し、関連する値４０２が範囲プロファイリングロジック３２８によって以前に観察されてから観察された頻度４０４を記憶する。バッファ４０６は、これらのイベントをパイプラインに入力する。少なくとも１つの実施形態では、バッファ４０６は、イベントを前処理し、同一の値を有するイベントを組み合わせる。範囲マッチャ（range matcher）４１０は、特定の受信イベントの値と一致する値範囲を識別する。アービタ４１４は、値を含む最小範囲を識別し、１つ以上の対応する値範囲についての１つ以上のカウンタをカウンタ４１８に更新させる。プロファイルデータ構造（例えば、ツリー）の各々の更新は、実際のカウンタのインクリメントを除いて、以前の更新から独立している。
【００１４】
バッファ４０６は、それらが処理されるまで、到着イベントを記憶する。コントローラ４２６は、範囲マージインジケータ（例えば、周期的であるが、指数関数的に減少する頻度）に応じて、潜在的なマージ範囲についてカウンタを検索しながらパイプラインをストールさせる。範囲のスプリット及び範囲のマージは、より多くのイベントを処理する前に満たす必要があるイベント間の依存関係を生成する。しかしながら、範囲のスプリット及び範囲のマージがイベント数よりも大幅に少なく発生し、これにより、発生するストールが比較的少なくなり、ストールが性能にわずかな影響しか与えない。コントローラ４２６は、範囲プロファイリングロジック３２８のパイプラインにおいてストールを引き起こす値範囲をスプリットしてもよいし、マージしてもよく、例えば、コントローラ４２６は、パイプラインレジスタ４０８，４１２，４１６，４２０の更新を抑制する。この時間の間、イベントは、後の処理のためにバッファ４０６に並んでもよい。範囲スプリットの場合、コントローラ４２６は、パイプラインのフラッシュを開始し、範囲プロファイリングロジック３２８を、範囲スプリットが発生する状態の直前の状態にリセットする。
【００１５】
コントローラ４２６は、バッファ４０６から処理されるイベント毎に、イベントの対応する値を含む値範囲のセットを検索する。この動作は、三値連想（ternary content-addressable）メモリセル４１０を使用して実行されてもよい。三値連想メモリセル４１０は、値に一致する全ての値範囲に対して適切なマッチラインを高く設定する。少なくとも１つの実施形態では、各セルは、値の範囲に対応する最上位ビットの値を含む。セルに記憶されたビットが少ないほど、対応する値の範囲が大きくなる。同様に、セルに記憶されたビット数が多いほど、対応する値の範囲が小さくなる。コントローラ４２６は、三値連想メモリセル４１０のエントリをプレフィックス長さによってソートすることによって、最長のプレフィックスを有する最小の範囲を決定することができる。値は、同じ範囲幅を有する三値連想メモリセルの４１０の２つの異なるエントリと一致することに留意されたい。少なくとも１つの実施形態では、三値連想メモリセル４１０は、比較毎に個々のニブル又は個々のバイトを観察するために、更にパイプライン化される。
【００１６】
範囲プロファイリングロジック３２８がイベントの値を１つ以上の値範囲に一致させた後に、範囲プロファイリング論理３２８は、三値連想メモリセル４１０の最後に一致するエントリに対応する、一致する値範囲の最長プレフィックスを識別する。三値連想メモリセル４１０がＮ個のマッチラインを順番に記憶し、プレフィックス長によってソートされている場合に、Ｎ×１アービタ４１４は、最長の一致に対して最高の優先度を与え、１つの一致する値範囲のみを進めるのを可能にする。最高の優先度のラインの出力は、対応するカウンタのワードラインをトリガする。範囲プロファイリングロジック３２８の実施形態は、三値連想メモリセル４１０と、ｂの分岐因子とを使用するが、範囲プロファイリングロジック３２８は、マルチビットツリーであってもよく、他のネットワークアルゴリズムに基づいて高速な実装を構築するための他の技術を使用してもよいことに留意されたい。
【００１７】
範囲プロファイリング論理３２８は、最小の範囲の一致（すなわち、最も正確な値範囲）を識別した後、カウンタ４１８の適切なカウンタを更新する。少なくとも１つの実施形態では、カウンタ４１８は、アレイへのイベントの連続ストリームを取り扱うのに十分な、１つの読み出しポート及び１つの書き込みポートを含む。スプリット処理ステージは、コンパレータ４２４を使用して、更新されたカウンタの結果を所定の範囲スプリット閾値と比較する。カウンタが範囲スプリット閾値を上回る場合、コントローラ４２６は、ノードを、複数の子（例えば、分岐因子ｂ＝４である４つの子）を有するように拡張し、ゼロカウントを有するように各々の子のカウンタを初期化する。別個の記憶素子は、範囲スプリット閾値及び範囲マージ閾値を記憶してもよいが、同一の値を有してもよいし、１つの記憶素子のみを使用してもよい。閾値は、イベントの数ｎが変化する毎に、１つ以上の対応する所定の値に基づいて再計算されてもよい。範囲プロファイリングロジック３２８は、イベント数ｎ及びいくつかの所定の値にのみ依存するので、他の動作と並行して計算を実行してもよい。コントローラ４２６が値範囲をスプリットする場合、範囲プロファイリングロジック３２８は、新たなノードを適切な割合で占めるようにパイプラインをフラッシュしてもよい。
【００１８】
少なくとも１つの実施形態では、範囲プロファイリングロジック３２８は、値範囲全体に及ぶ範囲ツリー内のルートノードから開始する。関連するシステムがより多くのイベントを流すと、値範囲プロファイリング技術は、特定のツリーノードに関連するカウンタ値を所定のスプリット閾値と比較することによって、ツリーノードを子ノードに分割すべきか否かを判別する。所定のスプリット閾値は、値の最大範囲、ツリーの高さ、処理されるイベントの数、及び／又は、ユーザ定義のエラー閾値εに従って選択されてもよい。カウンタ値が所定の範囲スプリット閾値を上回る場合、適応範囲プロファイリング技術は、ツリーノードを子ノードに分割する。適応範囲プロファイリング技術は、所定の分岐因子に基づいて、分割から生じた子ノードの数を判別する。所定の分岐因子が高いほど、得られるプロファイルがより正確になる。しかしながら、子ノードの数が増えると、メモリオーバヘッドが増えるという欠点がある。
【００１９】
範囲プロファイリングロジック３２８の少なくとも１つの実施形態では、値範囲のスプリットは、三値連想メモリセル４１０に新たなエントリを生成し、ツリーデータ構造に対してメモリデータアレイを生成することを必要とする。コントローラ４２６は、新たな子ノードを生成し、対応する識別子を、各々が親の範囲の一部に及ぶ範囲であって、適切に設定された範囲で三値連想メモリセル４１０に挿入する。コントローラ４２６は、対応するエントリを、カウンタ及びツリーデータ構造の新たに生成されたノードの他の情報を記憶するメモリに挿入する。分割ノードは、リーフノードであってもよいし、親ノードであってもよい。ノードがリーフノードである場合、分割動作は、親から新たに生成された子へのポインタを設定することを含む。ノードが既に親ノードであるが、その子ノードが親の範囲全体をカバーしていない場合（例えば、内部範囲マージの後）、分割には、既存の子の新たな親を識別し、子のポインタを設定する追加の動作が含まれる。
【００２０】
コントローラ４２６は、範囲のマージ動作を個別又はバッチで処理することができる。コントローラ４２６は、バッチ範囲マージを周期的に開始してもよい。範囲マージの各バッチでは、コントローラ４２６は、範囲のマージャについての候補ノードを識別するために、三値連想メモリセル４１０をボトムアップでスキャンする。コントローラ４２６は、メモリ内の対応するデータアレイエントリを削除する。再帰的な動作は、範囲プロファイルデータ構造を取り除いて、圧縮されたプロファイル情報を提供する。必要なメモリサイズは、実験的に決定されてもよいが、いくつかのアプリケーションでは制限されていてもよい。スプリット閾値は、ノードが総イベントの割合よりも多くのイベントをカウントするとすぐに、ノードをサブ範囲に分割するように設定されてもよい。同様に、範囲マージは、正確なプロファイリングを正当化するのに十分なアクセス頻度を有する範囲をマージしない。よって、適応範囲プロファイリング技術は、最小の範囲でのプロファイリングが可能であることを保証する。
【００２１】
図３、図４及び図５を参照すると、Ｆ１で示される値範囲は、少なくともＦ１のアクセス頻度を有し、高いアクセス頻度範囲を表す。Ｆ２で示される値範囲は、最大でＦ２のアクセス頻度を有し、低いアクセス頻度範囲を表す。図３は、ルートノード５０２の子ノード５０４，５０６を有する例示的な適応範囲プロファイリングツリーを示している。イベントストリームが観察されると、範囲プロファイリングロジックは、図４に示すように、ノード５０４の高アクセス頻度範囲を子ノード５０８，５１０に分割する値範囲スプリット動作を実行する。範囲プロファイリングロジックが値範囲を分割する場合、範囲プロファイリングロジックは、プロファイリングツリーの値範囲を分割する。これらの新たな分岐は、これらの高アクセス頻度範囲に対してより正確なカウンタのセットを維持する。
【００２２】
また、値範囲プロファイリング技術は、高アクセス頻度範囲が低アクセス頻度範囲に変化したことに応じて、値範囲プロファイリングツリー内のノード数を制限するためにノードをマージする。値範囲プロファイリング技術は、これらのノードを親ノードにマージし、これにより、これらのあまり重要でない範囲に対する正確なカウンタの必要性を低減する。図５は、対応する値範囲が低アクセス頻度範囲になっているために、子ノード５０８及び子ノード５１０をノード５０４にマージする例示的なマージ動作５３４を示している。結果として得られるノードカウンタは、子ノード５０８，５１０のカウンタ値の合計に等しいカウントを有する。適応範囲プロファイリング技術を使用する例示的なイベントプロファイラは、任意の適切な数のカウンタ（例えば、２５６個のカウンタ）を含んでもよい。適応範囲プロファイリングツリーサイズは、ワークロードフットプリントサイズ、イベント値パターン及びエラー閾値に関連する。適応範囲プロファイリング技術は、メモリ位置を使用して実装されるカウンタを効果的且つ効率的に使用する。
【００２３】
上記の値範囲プロファイリング技術によって生成されたランク付けリストは、値空間全体に及び、ターゲットアプリケーションにとって有用でない値の範囲を含むことがあり、ターゲットアプリケーションにおける処理のための値の範囲が多すぎる可能性がある。したがって、拡張された値範囲プロファイリング技術は、ターゲットアプリケーションの値範囲のターゲットセットを生成するために、ランク付けリストのプロファイルされた値範囲を周期的にカリング（cull）及び合体（coalesce）する。例えば、値範囲のターゲットセットは、第１動作で使用するための所定の閾値よりも大きいアクセス頻度を有する値範囲のみを含んでもよい。ターゲットアプリケーションは、デフォルトの動作を、値範囲のターゲットセットに含まれていない値範囲に適用してもよい。値範囲の別のターゲットセットは、第２動作で使用するための所定の閾値よりも小さいアクセス頻度を有する値範囲のみを含んでもよい。この拡張された値範囲プロファイリング技術は、アクセス頻度が高い値範囲又は集中した値範囲を有する値範囲に焦点を当てたものとして、ターゲットアプリケーションにおけるリソースの利用を改善することができる。
【００２４】
図６及び図７を参照すると、拡張された値範囲プロファイリング技術９００の少なくとも１つの実施形態では、イベントジェネレータ９０２は、特定のタイプ（例えば、メモリアドレス、データオペランド又はプログラムカウンタ値）の値を含むイベントストリームであって、値プロセッサ９０６による使用のためにパイプラインバッファ９０４に記憶されるイベントストリームを生成する。適応範囲プロファイラ９１０は、イベントストリーム内の値を観測し、値範囲のランク付けリストと、値の値空間全体（例えば、メモリアドレス幅、データオペランド幅又はプログラムカウンタ幅全体に基づく範囲空間）に及ぶ対応するアクセス頻度と、を含むランク付けリスト９１２を生成する。ランク付けリスト９１２はＮ個の値範囲を含み、Ｎは所定の整数である。
【００２５】
範囲合体及びカリングロジック（ＲＣＣ）９１４は、レジスタ９１５に記憶された少なくとも１つのアクセス頻度閾値、及び、ターゲット範囲のセットのサイズＭに基づいて、値範囲のターゲットセット９１６に含まれる値範囲を周期的に選択する。ここで、Ｍは所定の整数であり、Ｍ≦Ｎである。範囲合体及びカリングロジック９１４は、ランク付けリスト９１２を処理し、値範囲のターゲットセット９１６を生成する（図７のステップ８０４）。範囲合体及びカリングロジック９１４は、ランク付けリスト９１２より小さくてもよいが、ランク付けリスト９１２よりも正確な範囲を記憶することができる所定のサイズを有する値範囲のターゲットセット９１６を生成するために、対応するマージ及びスプリット閾値（例えば、レジスタ９１５に記憶されている）に基づいて、値の範囲をマージ及び／又は除去する（図７のステップ８０６）。
【００２６】
値プロセッサ９０６は、例えば、値プロセッサ９０６によって実装されたターゲット動作を実行するために、値範囲のターゲットセット９１６を使用する（図７のステップ８０８）。一方、適応範囲プロファイラ９１０は、イベントストリームに従って、ランク付けリスト９１２の更新を継続する。所定の期間が終了するまで（図７のステップ８１２）、値プロセッサ９０６は、値範囲のターゲットセット９１６内の値の範囲を処理し続け（図７のステップ８０８）、適応範囲プロファイラ９１０は、値範囲のターゲットセット９１６を更新することなく、ランク付けリスト９１２を更新する。所定の期間の終了に応じて（図７のステップ８１２）、範囲合体及びカリングロジック９１４は、値範囲のターゲットセット９１６を生成するために（図７のステップ８０６）、レジスタ９１５に記憶された所定のアクセス頻度閾値、マージ閾値、スプリット閾値、及び／又は、ターゲット範囲数に基づいて、ランク付けリスト９１２の更新されたバージョンの値範囲を分割、マージ及び／又は除去することによって、値範囲のターゲットセット９１６を更新する。所定のスプリット閾値は、ランク付けリスト９１２の範囲毎の最大アクセス頻度を示している。アドレス範囲のアクセス頻度がスプリット閾値よりも大きい場合、範囲合体及びカリングロジック論理９１４は、範囲を複数の範囲に分割してもよい。マージ閾値は、ランク付けリスト９１２の範囲毎の最小アクセス頻度を示している。関連するアドレス範囲のアクセス頻度がマージ閾値よりも小さい場合、範囲合体及びカリングロジック９１４は、これらの範囲をマージしてもよく、これにより、重要度の低い範囲に対する正確なカウンタの必要性が低減される。範囲合体及びカリングロジック９１４は、ターゲットアプリケーション内の異なる目的に従って構成されてもよい。例えば、範囲合体及びカリングロジック９１４は、領域サイズを最大化し、領域の総数を削減し、又は、範囲のサブセット外に存在すると推定される値の数を最小化するために（例えば、冗長マッピングアプリケーションにおいて）、アクセス頻度閾値、マージ閾値、スプリット閾値、及び／又は、ターゲット範囲数の所定の値で構成されてもよい。
【００２７】
図６及び図８を参照すると、少なくとも１つの実施形態では、拡張プロファイリング技術のイベントは、処理システム１００のマルチレベルキャッシュシステムによってフィルタリングされたメインメモリ１１０へのメモリ要求である。処理システム１００は、複数の処理ノード（例えば、ノード０、ノード１、ノード２及びノード３）と、マルチレベルメモリシステムと、を含む。各ノードは、自身のメモリ又は別のノード内のメモリにアクセスすることができる。プローブフィルタ１０９又は他のコヒーレンス機構は、複数のキャッシュが、コヒーレンス領域１０３のメインメモリの同じ位置（例えば、プロセッサ１０２のコア０、コア１、コア２、コア３のレベル２のキャッシュ）の内容を含む場合に、メモリイメージのコヒーレンシを維持するために、プロセッサ間通信を提供してもよい。図６のイベントジェネレータ９０２は、図８の最後のレベルのキャッシュ１０６である。最後のレベルのキャッシュ１０６は、メモリコントローラ１０８へのメモリアクセスのストリームを提供する。拡張された値範囲プロファイラ９０８は、最後のレベルのキャッシュ１０６とメインメモリ１１０との間に接続されたメモリコントローラ１０８に含まれる。
【００２８】
例示的な実施形態における図６、図８及び図９を参照すると、バッファ９０４と、値プロセッサ９０６と、拡張された値範囲プロファイラ９０８とが、処理システム１００のメモリコントローラ１０８に含まれている。拡張された値範囲プロファイラ９０８は、メモリアドレスを値として含むイベントとして、最後のレベルのキャッシュ１０６からメモリ要求を受信する。値プロセッサ９０６は、仮想メモリアドレスを物理メモリアドレスにマッピングする回路を含む。
【００２９】
仮想メモリのページベースの実装は、メインメモリ１１０を固定サイズのページに分割する。従来のメモリコントローラは、ページテーブルを使用して、仮想ページを固定サイズの物理ページにマッピングし、連想メモリ又はトランスレーションルックアサイドバッファを使用して、アドレスルックアップを加速することができる。概して、トランスレーションルックアサイドバッファは、メモリ変換を高速化するために使用されるキャッシュである。トランスレーションルックアサイドバッファは、より高速な検索のために、仮想メモリアドレスの直近の変換を物理メモリアドレスに記憶する。トランスレーションルックアサイドバッファは、仮想アドレスに応じて、物理アドレスを生成する。トランスレーションルックアサイドバッファは、マルチレベルの構造を有してもよく、異なるサイズのページ（例えば、標準的な４キロバイト（２１２バイト）のページ、大きなページ（例えば、２メガバイト（２２１バイト）、又は、標準的なページサイズよりも実質的に大きく、「ヒュージページ」若しくは「スーパーページ」とも呼ばれる他のページサイズ））についての変換を記憶してもよい。少なくとも１つの実施形態では、値範囲のターゲットセット９１６及び値プロセッサ９０６は、ページベースのメモリシステムのトランスレーションルックアサイドバッファに加えて、またはその代わりに、範囲トランスレーションルックアサイドバッファに使用される。
【００３０】
範囲トランスレーションルックアサイドバッファは、複数の範囲の変換を保持するハードウェアキャッシュである。各エントリは、連続する仮想ページの範囲を、連続する物理ページにマッピングする。各範囲は、異なるサイズを有することができる。範囲トランスレーションルックアサイドバッファは、完全に連想的であってもよく、各エントリは、仮想範囲及び範囲アドレス変換を含む。仮想範囲は、仮想アドレス範囲マップのＢＡＳＥ及びＬＩＭＩＴとして記憶されてもよい。変換は、物理メモリ内の範囲の開始からＢＡＳＥを減算したものを保持するＯＦＦＳＥＴを記憶する。しかしながら、範囲トランスレーションルックアサイドバッファの制限された範囲は、メモリアクセスレイテンシに有害なアドレス変換のレイテンシを増加させる場合がある。
【００３１】
メモリアクセスのレイテンシを減少させる技術は、値範囲のターゲットセット９１６に記憶された仮想アドレス範囲を、ベースリミットレジスタ９２０に記憶された物理メモリアドレス範囲に変換するアドレストランスレータ９２２を含む。例えば、アドレストランスレータ９２２は、連続する仮想ページのアドレス範囲と、連続する物理ページのアドレス範囲とをマッピングする。範囲変換は、ベースページで調整されてもよく、ベースリミットレジスタ９２０のＢＡＳＥ及びＬＩＭＩＴフィールドによって識別されてもよい。図１１を参照すると、少なくとも１つの実施形態では、アドレストランスレータ９２２は、仮想アドレス空間１１０２の仮想範囲アドレスを、物理アドレス空間１１０４の物理範囲アドレスに変換する。変換は、対応する範囲の仮想ベースアドレスに対してオフセットを追加することと、関連するＬＩＭＩＴフィールドの値によって物理アドレスの範囲を制限することと、を含んでもよい。
【００３２】
図９を再度参照すると、例示的なメモリシステムは、所定数の要素を有するベースリミットレジスタ９２０を含むので、拡張された値範囲プロファイラ９０８は、範囲の数を、範囲適応プロファイリング技術によって生成された仮想アドレス空間全体に及ぶ仮想メモリアドレス範囲と対応するアクセス頻度とを含むランク付けリスト９１２のサイズＮから、ベースリミットレジスタ９２０のＭ個の要素に記憶され得る範囲Ｍのターゲット数まで減少させる。拡張された値範囲プロファイリング技術は、ベースリミットレジスタ９２０内の特定の閾値よりも高い頻度でアクセスされるメモリアドレス範囲のみを記憶することによって、ベースリミットレジスタ９２０のヒット率を含む範囲精度を向上させ、仮想−物理アドレス変換のレイテンシを低減させ、これにより、関連する処理システムの性能を向上させることができる。Ｍ≦Ｎであり、ベースリミットレジスタ９２０は、仮想メモリアドレス空間（例えば、所定の閾値を上回る十分な頻度でアクセスされる仮想アドレス範囲）の一部のみに及ぶことができる非連続仮想アドレス範囲を含んでもよいことに留意されたい。したがって、拡張された値範囲プロファイリング技術を使用して、仮想メモリアドレス空間へのアクセスにおける連続性を示すメモリアドレス変換アプリケーションの性能を向上させ、制限されたサイズの記憶空間内の連続する仮想メモリアドレスを表すために使用される範囲の精度を向上させることができる。
【００３３】
拡張された値範囲プロファイリング技術は、上述したように単独で使用されてもよく、冗長メモリマッピングシステムにおいて使用されてもよい。例えば、図９、図１０及び図１１を参照すると、拡張された値範囲プロファイリング技術は、上述したように、ベースリミットレジスタ９２０に記憶された範囲と、仮想−物理アドレス変換と、連続する仮想アドレスを冗長メモリマッピングシステム１２００の連続する物理アドレスにマッピングする冗長ページテーブルと、を使用することによって、冗長メモリマッピング技術の性能を向上させる。
【００３４】
冗長メモリマッピングは、固定トランスレーションルックアサイドバッファサイズによって制限されるページングシステムの性能を向上させるために使用される技術である。冗長メモリマッピング技術は、アドレス空間の一部を範囲変換及びページの両方とマッピングする。冗長メモリマッピングは、範囲テーブル及び範囲トランスレーションルックアサイドバッファを、最後のレベルのページトランスレーションルックアサイドバッファと並列に使用する。範囲テーブルに記憶された情報が、ページテーブルに記憶された情報に対して冗長であるため、システムは、必要に応じて（例えば、範囲テーブル内でのミスに応じて）ページングを使用してもよいし、ページングに戻ってもよい。冗長メモリマッピングは、物理的及び仮想的に連続し、範囲変換に依存するページの範囲の変換情報を記憶する。範囲変換の各々は、上述したように、任意のサイズの範囲の変換を実行するために、ＢＡＳＥ、ＬＩＭＩＴ及びＯＦＦＳＥＴ値を使用して、連続する仮想アドレス範囲を、連続する物理ページにマッピングする。範囲変換は、単に、ベースページで調整され、ページングに冗長であり、仮想アドレス空間全体をマッピングするページテーブルを含む。
【００３５】
図１１は、従来のページテーブルシステム及び範囲変換を使用して冗長にマッピングされた２つの例示的な範囲を示している。冗長メモリマッピングシステム１２００は、ページテーブル１２０４と並列にアクセスされる範囲変換テーブル１２０２を含む。ページングメモリ管理スキームは、ソフトウェア（例えば、処理システム１００の１つ以上のコア上で実行されるオペレーティングシステム又はハイパーバイザ）によって管理され、図８のメインメモリ１１０で使用されるページと呼ばれる同じサイズブロックで、補助的記憶装置（例えば、ディスク）からデータを記憶及び取り出す。図１１を再度参照すると、ページテーブルシステムは、複数のレベルを使用したメモリマッピングのための４レベルのテーブルの階層（例えば、ページテーブル（Ｌ１）、ページディレクトリ（Ｌ２）、ページディレクトリポインタ（Ｌ３）、及び、最上位テーブルであるページマップレベル４（Ｌ４））を有する。しかしながら、異なる数のレベルを有する他のページテーブルシステムが使用されてもよい。ページマップレベル４は、仮想アドレス用のページディレクトリポインタを提供する。ページディレクトリポインタテーブル（Ｌ３）は、ページディレクトリポインタを使用して、ページディレクトリテーブル（Ｌ２）のアドレスを提供する。ページディレクトリテーブル（Ｌ２）は、対応するページテーブル（Ｌ１）のアドレスを提供する。仮想アドレスの最下位ビットは、ページテーブル内のターゲット物理アドレスを特定するためのページテーブル内のオフセットとして使用される。同じ仮想アドレス空間及び物理アドレス空間に及ぶより少ないレベルのページテーブルが使用されてもよい（例えば、ヒュージページの実装）。範囲テーブル１２０２は、関連する処理システムの１つ以上のコア上で実行されるソフトウェアによって管理され、仮想アドレスと物理アドレスとの間のマッピングを記憶するページテーブルシステム１２０４に記憶された情報に対して冗長な情報を記憶する。
【００３６】
少なくとも１つの実施形態では、値プロセッサ９０６は、頻繁にアクセスされる物理メモリの範囲に対してアドレス変換を実行し、ベースリミットレジスタの制限されたセットを使用して範囲テーブル１２０２を実装する仮想−物理アドレストランスレータを含む。上述した拡張された値範囲プロファイリング技術を使用して、頻繁にアクセスされるアドレス範囲の変換を生成することによって、メモリアクセス時間を短縮することができる。利用可能なベースリミットレジスタがメモリシステムのＭ個のレジスタに制限されるので、メモリアドレス範囲のターゲットセット内のメモリアドレスの範囲の数は、値プロセッサ９０６のベースリミットレジスタの数以下となるべきである。したがって、最も頻繁にアクセスされる仮想アドレスの範囲は、値プロセッサ９０６によって、ベースアドレス及び対応するリミットとしてベースリミットレジスタ９２０の各々に記憶される物理メモリアドレスに変換される。メモリコントローラ１０８は、メモリアクセスに応じて、仮想アドレスが、フルアソシエイティブキャッシュメモリである値範囲のターゲットセット９１６に存在するか否かを判別することができる。メモリコントローラ１０８は、アドレスが存在する場合に、変換を実行するのではなく、ベースリミットレジスタ９２０から対応する変換にアクセスし、これにより、アドレス変換に起因するメモリのレイテンシを減少させる。仮想アドレスが値範囲のターゲットセット９１６の範囲に含まれない場合、値プロセッサ９０６は、物理メモリアドレスを判別するために、従来のページテーブル又は他の仮想−物理アドレス変換技術を使用する。
【００３７】
図６、図８及び図９を再度参照すると、少なくとも１つの実施形態では、拡張された値範囲プロファイリング技術の他のアプリケーションには、拡張された値範囲プロファイラ９０８においてメモリアドレス（例えば、物理又は仮想）の範囲を適応的に追跡して、大きなページに転換され得る値範囲のターゲットセット９１６における連続する変換の広い範囲を識別することが含まれる。値プロセッサ９０６は、大きな範囲をベースリミットレジスタ９２０に記憶する。これらの大きなページは、複数のページマッピングが対応するトランスレーションルックアサイドバッファの１つのエントリのみを使用することを可能にし、これにより、トランスレーションルックアサイドバッファの必要サイズを縮小し、より大きな固定サイズのメモリ範囲のマッピングを可能にする。ベースリミットレジスタ９２０又は他の記憶素子を使用して、連続する変換の広い範囲を識別することができる。拡張された値範囲プロファイリング技術は、メインメモリ１１０の大きなページを管理する際に使用するために、ランク付けリスト９１２又は値範囲のターゲットセット９１６に記憶された情報を、システムソフトウェア（例えば、オペレーティングシステム、ハイパーバイザ、カーネル、又は、他の適切なソフトウェア）に提供してもよい。
【００３８】
少なくとも１つの実施形態では、拡張された値範囲プロファイリング技術、拡張された値範囲プロファイラ９０８及び値プロセッサ９０６の他のアプリケーションは、マルチレベルのメモリシステム内の高速メモリ（例えば、最後のレベルのキャッシュ）又は低速メモリ（例えば、メインメモリ若しくはディスク）における割り当てのために、メモリアドレス（例えば、物理又は仮想）の範囲を適応的に追跡するメモリコントローラを含む。範囲追跡機構の計数能力は、広範囲のアクセスの識別についての機能と共に、マルチレベルのメモリシステム内で頻繁にアクセスされるページ範囲をメインメモリから高速メモリ（例えば、高帯域メモリ又はＮレベルのメモリシステム等）に割り当てるためのシステムについての十分な情報を提供する。例示的な高帯域メモリは、メモリチップのスタックと、インタポーザを使用してメモリチップをプロセッサに密接に接続する、関連する超高速メモリインタフェースと、を含む。結果として得られるシステムでは、高帯域メモリ性能がオンチップの内蔵ＲＡＭの性能とわずかに異なるが、利用可能なシステムストレージの量が拡大する。
【００３９】
処理システム１００の少なくとも１つの実施形態では、最後のレベルのキャッシュ１０６、メモリコントローラ１０８、又は、他のコヒーレンス回路は、最後のレベルのキャッシュ１０６に移動されたデータ若しくは最後のレベルのキャッシュ１０６から移動されたデータがコヒーレンシルールに違反していないことを保証するコヒーレンスシステムを含む。例えば、プローブフィルタ１０９は、コヒーレンシルール（例えば、コアに対するプローブと、コアに返されるヒットデータとの間、又は、最後のレベルのキャッシュに対するプローブと、最後のレベルのキャッシュに割り当てられるコアからのビクティムデータとの間の競合条件に違反しないこと等）を適用する。プローブフィルタ１０９は、プローブをコアに送る前に、最後のレベルのキャッシュデータの移動に対するプローブの衝突検出を実行する。したがって、プローブフィルタ１０９は、コヒーレンス動作を迅速に行うために、メモリアドレスの範囲（例えば、物理メモリアドレス範囲又は仮想メモリアドレス範囲）を適応的に追跡する、拡張された値範囲プロファイラ９０８を含んでもよい。占有されているメモリ領域をカバーするアドレス範囲は、メモリコヒーレンス動作が必要であるか否かを決定するために、スヌーピング機構で利用される値範囲のターゲットセット９１６に記憶されてもよい。フルアソシエイティブメモリとすることができる値範囲のターゲットセット９１６におけるヒットは、複数の異なるリクエスタによって同じメモリアドレス範囲に複数のメモリ要求があることを示すことができる。したがって、値プロセッサ９０６は、コヒーレンス動作を実行するための制御論理を含んでもよい。コヒーレンス回路は、プローブフィルタとして説明されているが、コヒーレンス機構を含む処理システムの他の実施形態では、他のコヒーレンスシステムにおける拡張された値範囲プロファイラ９０８及び値プロセッサ９０６を含んでもよい。
【００４０】
図６を再度参照すると、拡張されたプロファイリング技術の少なくとも１つの実施形態では、イベントジェネレータ９０２は命令デコーダであり、値プロセッサ９０６はパイプライン型処理コアのプログラムカウンタアドレスジェネレータである。イベントは、パイプライン型処理コアによって処理される制御フロー命令を含む。例えば、プログラムカウンタアドレスジェネレータは、推測的若しくは非推測的命令実行、条件的若しくは非条件的分岐若しくはジャンプ命令実行、又は、他の命令実行のためのターゲット命令アドレスを生成する。値は、コアによって処理されるメモリからフェッチされる次の命令のアドレスである。拡張された値範囲プロファイリング技術は、高頻度アクセスを有するターゲットアドレスの範囲を識別し、実行ユニット（命令フェッチユニット）は、プロセッサの動作を高速化するために、値範囲のターゲットセット９１６に記憶された高頻度アクセス（例えば、所定数よりも多い）を有するターゲットアドレスの範囲についてベース分岐予測及び推測的命令決定を行ってもよい。
【００４１】
少なくとも１つの実施形態では、イベントジェネレータ９０２は、パイプライン型プロセッサコアの命令デコーダであり、値プロセッサ９０６は、算術論理ユニット、浮動小数点演算ユニット、又は、パイプライン型プロセッサコアの他の適切な実行ユニットである。イベントは、実行ユニットによって処理される算術又は論理命令であり、値は、コアの実行ユニットによって処理される対応するデータオペランドである。拡張された値範囲プロファイリング技術は、高頻度アクセスを有するデータオペランドの範囲を識別し、実行ユニットは、高頻度アクセスを有するデータオペランドの範囲に基づいて結果を予測し、これにより、関連する実行ユニットの計算時間を短縮し、関連する処理システムの性能を向上させる。拡張された値範囲プロファイリング技術は、実行速度の増加及び／又は消費電力の低減のトレードオフとして精度の低下が許容されるアプリケーションにおいて、推測的実行及び／又は低電力動作を可能にするために使用されてもよい。
【００４２】
本明細書で説明される構造は、プロセッサ上で実行されるソフトウェア（ファームウェアを含む）を使用して、又は、ソフトウェア及びハードウェアの組み合わせによって実装されてもよい。本明細書で説明するように、ソフトウェアは、少なくとも１つの有形のコンピュータ可読媒体で符号化されてもよい。本明細書で言及される有形のコンピュータ可読媒体は、少なくともディスク、テープ、又は、他の非一時的な磁気、光学若しくは電気記憶媒体を含む。
【００４３】
本発明の実施形態を説明するにあたり、回路及び物理構造が全体として想定されているが、現代の半導体設計及び製造において、物理構造及び回路は、後続の設計、シミュレーション、テスト又は製造段階で使用するのに適したコンピュータ可読記述形式で具体化されてもよい。例示的な構成において個別の構成要素として提示される構造及び機能は、組み合わされた構造又は構成要素として実装されてもよい。本発明の様々な実施形態は、全てが本明細書で説明され、添付の特許請求の範囲において定義されているように、回路、回路のシステム、関連する方法、並びに、かかる回路、システム及び方法を符号化したものを有する有形のコンピュータ可読媒体（例えば、ＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）、Ｖｅｒｉｌｏｇ、ＧＤＳＩＩデータ、ＥＤＩＦ（Electronic Design Interchange Format）及び／又はＧｅｒｂｅｒファイル）を含むことが意図されている。また、コンピュータ可読媒体は、本発明を実施するために使用することができる命令と共にデータを記憶することができる。命令／データは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせに関連してもよい。
【００４４】
本明細書に記載された発明の説明は例示であって、以下の特許請求の範囲において示された発明の範囲を限定することを意図していない。例えば、本発明は、特定のプロセッサ及びメモリアーキテクチャを使用する実施形態で説明されたが、当業者であれば、異なるキャッシュスキーム及びコヒーレンスプロトコルを使用して、他のプロセッサ及びメモリシステムアーキテクチャと共に本明細書の教示を利用することができることを認識するであろう。以下の特許請求の範囲において示される発明の範囲から逸脱することなく、本明細書で開示される実施形態の変形及び修正が、本明細書で示される説明に基づいて行われてもよい。
【図１】
2019506676.tif 000003
【図２】
2019506676.tif 000004
【図３】
2019506676.tif 000005
【図４】
2019506676.tif 000006
【図５】
2019506676.tif 000007
【図６】
2019506676.tif 000008
【図７】
2019506676.tif 000009
【図８】
2019506676.tif 000010
【図９】
2019506676.tif 000011
【図１０】
2019506676.tif 000012
【図１１】
2019506676.tif 000013
【国際調査報告】
2019506676.tif 000014
2019506676.tif 000015