(57)【要約】  装置は命令を処理する処理回路を含むが、命令のうちのいくつかはアドレスの変換を必要とする場合がある。装置は、処理回路によって処理された命令に応答してアドレスを変換するためのアドレス変換回路も含む。さらに、装置はまた、任意の命令に応答してアドレス変換回路によって実行されるアドレス変換プロセスの少なくとも一部のレイテンシを測定する変換レイテンシ測定回路を含む。
2019506670.tif 000002
【特許請求の範囲】
【請求項１】
命令を処理する処理回路と、
前記処理回路によって処理された命令に応答してアドレスを変換するアドレス変換回路と、
任意の命令に応答して前記アドレス変換回路によって実行されるアドレス変換プロセスの少なくとも一部のレイテンシを測定する変換レイテンシ測定回路と、
を備える装置。
【請求項２】
前記アドレス変換プロセスは、仮想アドレスを中間アドレスに変換する第１変換ステージと、前記中間アドレスを物理アドレスに変換する第２変換ステージと、を含む、請求項１に記載の装置。
【請求項３】
前記レイテンシは、前記第１変換ステージおよび前記第２変換ステージの両方の総レイテンシを含む、請求項２に記載の装置。
【請求項４】
前記レイテンシは、前記第１変換ステージおよび前記第２変換ステージの選択された１つのレイテンシを含む、請求項２に記載の装置。
【請求項５】
前記アドレス変換回路は、メモリ内に格納された複数のレベルのページテーブルを用いてページテーブルウォークを実行することによって、前記メモリから任意のアドレスを変換するための変換データを取得するように構成されている、請求項１から４のいずれかに記載の装置。
【請求項６】
前記処理回路によって処理される命令のサブセットを選択するための命令選択回路を備え、
前記変換レイテンシ測定回路は、前記命令のサブセットの１つが前記アドレス変換プロセスを必要とするときに前記レイテンシを測定するように構成されている、請求項１から５のいずれかに記載の装置。
【請求項７】
前記変換レイテンシ測定回路は、任意の命令が前記命令のサブセットの１つであるか否かを、
前記任意の命令が前記サブセットの１つであるか否かを示す、前記任意の命令に関連付けられたタグ値、および
前記任意の命令は前記命令のサブセットの１つであることを識別する、前記任意の命令とは別に格納された識別子、
のうちの少なくとも１つに基づいて識別するように構成されている、請求項６に記載の装置。
【請求項８】
前記命令選択回路は、前記サブセットの１つとして前の命令を選択してから所定の間隔が経過したか否かを判断し、前記所定の間隔の経過に続いて前記サブセットの１つとして別の命令を選択するように構成されている、請求項６および７のいずれかに記載の装置。
【請求項９】
経過した前記所定の間隔に応答して、前記サブセットの１つとして選択された前記前の命令がまだ処理の所定のステージを超えて進んでいない場合、前記命令選択回路は、前記前の命令が前記所定のステージを超えて進むまで、前記サブセットの１つとして別の命令を選択することを延期するように構成されている、請求項８に記載の装置。
【請求項１０】
前記変換レイテンシ測定回路によって測定された前記レイテンシ以外の前記命令のサブセットの処理に関連するさらなる情報の少なくとも１つの項目を監視するための性能監視回路を備える、請求項６から９のいずれかに記載の装置。
【請求項１１】
前記さらなる情報の少なくとも１つの項目は、
前記任意の命令のアドレス、
前記任意の命令に関連するコンテキストを識別するコンテキスト識別子、
前記任意の命令の命令タイプ、
前記任意の命令に応答して変換されるアドレス、
前記任意の命令に応答して得られる変換済みアドレス、
前記任意の命令の処理に関連する総レイテンシ、
前記任意の命令に対するアドレス要求が変換索引バッファ内でヒットするか否かの指示、および
前記任意の命令に対するデータ要求がデータキャッシュ内でヒットするか否かの指示、
のうちの少なくとも１つを含む、請求項１０に記載の装置。
【請求項１２】
前記変換レイテンシ測定回路は、前記任意の命令について検出された開始イベントと終了イベントとの間の前記レイテンシを測定するように構成されている、請求項１から１１のいずれかに記載の装置。
【請求項１３】
前記変換レイテンシ測定回路は、前記任意の命令について前記アドレス変換回路によって受信されるアドレス変換の要求に応答して前記開始イベントを検出するように構成されている、請求項１２に記載の装置。
【請求項１４】
前記変換レイテンシ測定回路は、前記アドレス変換回路に対してアドレス変換の要求を発行するように構成された機能回路ユニットに対して発行される前記任意の命令に応答して前記開始イベントを検出するように構成されている、請求項１２に記載の装置。
【請求項１５】
前記変換レイテンシ測定回路は、前記アドレス変換回路によって返される変換済みアドレスに応答して前記終了イベントを検出するように構成されている、請求項１２から１４のいずれかに記載の装置。
【請求項１６】
前記変換レイテンシ測定回路は、データストアに対して発行される前記アドレス変換回路によって得られる変換済みアドレスを指定するデータアクセス要求に応答して前記終了イベントを検出するように構成されている、請求項１２から１４のいずれかに記載の装置。
【請求項１７】
前記開始イベントに応答して前記レイテンシのカウントを開始し、前記終了イベントに応答して前記レイテンシのカウントを停止するカウンタを備える、請求項１２から１６のいずれかに記載の装置。
【請求項１８】
前記変換レイテンシ測定回路は、前記測定レイテンシを格納場所に書き込むように構成されている、請求項１から１７のいずれかに記載の装置。
【請求項１９】
前記格納場所は、前記任意の命令の処理中に監視されるデータを格納するための性能監視バッファを備える、請求項１８に記載の装置。
【請求項２０】
前記格納場所は、メモリの領域を備える、請求項１８に記載の装置。
【請求項２１】
前記変換レイテンシ測定回路は、前記測定レイテンシが閾値よりも大きいときに前記測定レイテンシを前記格納場所に書き込むように構成されている、請求項１８から２０のいずれかに記載の装置。
【請求項２２】
命令を処理するステップと、
処理された前記命令に応答してアドレスを変換するステップと、
任意の命令に応答して実行されたアドレス変換プロセスの少なくとも一部のレイテンシを測定するステップと、
を含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データ処理の分野に関する。
【発明の概要】
【０００２】
データ処理装置は命令を処理することができる。一部の装置は、これらの命令を処理するときに処理装置の性能を測定するための機構を含むことができる。
【０００３】
少なくともいくつかの例は、
命令を処理する処理回路と、
処理回路によって処理された命令に応答してアドレスを変換するアドレス変換回路と、
任意の命令に応答してアドレス変換回路によって実行されるアドレス変換プロセスの少なくとも一部のレイテンシを測定する変換レイテンシ測定回路と、
を備える装置を提供する。
【０００４】
少なくともいくつかの例は、
命令を処理する手段と、
処理する手段によって処理された命令に応答してアドレスを変換する手段と、
任意の命令に応答して変換する手段によって実行されるアドレス変換プロセスの少なくとも一部のレイテンシを測定する手段と、
を備える装置を提供する。
【０００５】
少なくともいくつかの例は、
命令を処理するステップと、
処理された命令に応答してアドレスを変換するステップと、
任意の命令に応答して実行されるアドレス変換プロセスの少なくとも一部のレイテンシを測定するステップと、
を含む方法を提供する。
【０００６】
本発明の実施形態は、添付の図面を参照して、単なる例として以下に説明される。
【図面の簡単な説明】
【０００７】
【図１】処理パイプラインの一例を概略的に示す図である。
【図２】２つのＭＭＵを有するアドレス変換回路の一例を概略的に示す図である。
【図３】マルチレベルページテーブルウォークの一例を示す図である。
【図４】２ステージのアドレス変換がある、マルチレベルページテーブルウォークの一例を示す図である。
【図５】性能監視回路の一例を概略的に示す図である。
【図６】アドレス変換プロセスのレイテンシを測定するときに考慮される異なる開始イベントおよび終了イベントの一例を示す図である。
【図７】命令をサンプリングする方法を示す図である。
【図８】アドレス変換のレイテンシを測定する方法を示す図である。
【発明を実施するための形態】
【０００８】
いくつかの特定の例を以下に説明する。本発明はこれらの特定の例に限定されないことが、理解されるだろう。
【０００９】
データ処理装置は、命令を処理するときの性能を監視するための機構を有してもよい。いくつかのデータ処理装置は、命令に応答してアドレスを変換するためのアドレス変換回路を含んでもよく、アドレス変換を実行することに関連するレイテンシは、いくつかの命令を処理するときの全体性能に影響を及ぼす１つの要因であり得る。
【００１０】
アドレス変換によって引き起こされる性能問題を特定するための１つの手法は、変換索引バッファ（ＴＬＢ）のミスまたはメモリからフェッチされるページテーブルデータの要求などの特定のイベントの発生回数をカウントすることであってもよい。このアプローチでは、ＴＬＢミスやページテーブルウォークが多い場合、ＴＬＢミスやページテーブルウォークが少ない場合に比べて性能が低下する可能性があると想定している。
【００１１】
しかしながら、いくつかのシステムでは、アドレス変換を実行するのに要する時間は、ＴＬＢミスなどの同じ種類のイベントをいずれも経験する命令の間で比較的大きく異なる可能性があることを、発明者らは認識した。本技術による装置は、アドレス変換プロセスの少なくとも一部のレイテンシを測定する変換レイテンシ測定回路を含む。レイテンシは、変換の所要時間をより直接的に示すので、性能に対するコストをより正確に判断することができる。アドレス変換レイテンシの測定に加えて、ＴＬＢミスやページテーブルウォークなどのイベントをカウントすることもまだ可能である。
【００１２】
いずれも同じ種類のイベント（たとえば、ＴＬＢミス）を経験する命令間でさえ、アドレス変換に関連するレイテンシが異なる可能性がある理由は、多数あるかもしれない。アドレス変換に使用される何らかの情報をローカルにキャッシュするための様々なキャッシング方法があり（たとえば、ページテーブルエントリはデータキャッシュにキャッシュされてもよく、またはページテーブルウォークを高速化するためにメモリ内のページテーブルエントリのアドレスをキャッシュするため、ウォークキャッシュが使用されてもよい）、したがってレイテンシは、必要な情報がどこにキャッシュされているかに依存する可能性がある。
【００１３】
いくつかの例において、アドレス変換回路は、仮想アドレスから中間アドレスを取得するための第１ステージと、中間アドレスから物理アドレスを取得する第２ステージとを含む２ステージ変換を使用して、仮想アドレスを物理アドレスに変換することができる。これは、たとえば、第１ステージがオペレーティングシステムによって制御されて第２ステージがハイパーバイザによって制御される仮想化をサポートするのに、有用であり得る。２ステージのアドレス変換が使用されるとき、２ステージ変換は、アドレス変換のレイテンシを変化させることができる変数をより多く導入するので、本技術は特に有利であり、したがって変換レイテンシの直接測定は、ＴＬＢミスまたはページテーブルウォークの数の単なるカウントよりも有用であり得る。
【００１４】
測定されたアドレス変換レイテンシは、任意の仮想アドレスから物理アドレスを得るためのアドレス変換プロセス全体に関連するレイテンシの尺度とすることができる。アドレス変換プロセスが第１変換ステージおよび第２変換ステージを含むとき、レイテンシ測定は両方のステージの総レイテンシであり得る。
【００１５】
あるいは、測定されたレイテンシは、アドレス変換プロセスの単なる一部であってもよく、またはプロセスのいくつかの部分に対して複数の別々のレイテンシ測定を行うことができる。たとえば、レイテンシ測定は変換ステージの１つについて排他的に行われることが可能であり、または、どのステージが潜在的な性能問題を引き起こしているかより標的化された特定を可能にするために、両方のステージのレイテンシが別々に測定されることも可能である。
【００１６】
アドレス変換プロセスは、データストア（たとえば、メモリ）内のページテーブルを使用してページテーブルウォークを実行することによって、変換データを取得することがある。たとえば、ＴＬＢにミスがある場合、ページテーブルウォークを実行することができる。場合によっては、ページテーブルは、メモリへの単一のアクセスが任意の仮想アドレスを変換するための変換データを返す単一レベルのページテーブルであってもよい。
【００１７】
しかしながら、場合により、ページテーブルは階層構造を有してもよい。この場合、単一のページテーブルウォークは、異なるレベルのページテーブルへの多数のアクセスを含んでもよい。たとえば、任意のレベルのページテーブルは、次のレベルのページテーブルへのポインタを識別するためにルックアップされてもよく、必要な変換データを含む最終レベルのページテーブルを見つけるために、いくつかのレベルのページテーブルが調べられてもよい。このような階層構造は、メモリ内のページテーブル構造の全体的なサイズを縮小するのに有用であり得る。マルチレベルページテーブル構造が提供されるとき、使用されるキャッシング方式に応じてウォークのステップのいくつかは他のものより速く、または完全に省略されてもよいので、ページテーブルウォークに関連するレイテンシのばらつきが増加する可能性がある。したがって、階層ページテーブル構造を提供するシステムでは、単にイベントをカウントするのではなく、アドレス変換レイテンシを追跡することによって性能を監視することが、特に有用であり得る。
【００１８】
装置は、変換測定回路によって監視される命令のサブセットを選択するための命令選択回路を含むことができ、変換レイテンシ測定回路は、命令のサブセットの１つがアドレス変換プロセスを必要とするときにアドレス変換のレイテンシを測定してもよい。一方、命令のサブセットのものではない命令がアドレス変換を必要とする場合、変換レイテンシ測定回路は、その命令のアドレス変換レイテンシを測定しなくてもよい。これは、すべての命令を追跡しないことによって、変換レイテンシ測定回路に関連する面積および電力オーバーヘッドを低減するのに役立つ。アドレス変換の候補として特定のサブセットの命令をサンプリングすることは、レイテンシ測定を個々の命令のせいにするのにも役立ち、これにより、プログラム全体の実行中に発生するイベントの数を単にカウントするアプローチよりも標的化された診断情報を提供することができる。命令のサブセットのみのレイテンシを記録することで性能臨界イベントを見失う可能性があると考えられるかもしれないが、命令の特定の部分をサンプリングすると、プログラム全体の性能を統計的に表すビューを提供するのに十分な情報を得ることができる。
【００１９】
命令選択回路は、どの命令が監視すべきサブセットの一部であるかを異なる方法で識別することができる。たとえば、命令自体に関連するタグ値を使用して、命令がサブセットに属するか否かを示すことができる。タグは、命令とともに処理パイプラインを通ることができ、変換レイテンシ測定回路が設定値を有するタグを有する命令を検出したとき、変換レイテンシ測定回路は、その命令のアドレス変換レイテンシを測定することができる。別の選択肢は、サブセットを識別するために、命令のサブセットに個別に格納される識別子を使用することである。たとえば、各命令は既に他の命令と区別する命令識別子を有していてもよく、命令選択回路は命令自体とは別個の記録を格納して、どの命令識別子がサブセットに属するかを識別し、識別子が記録に格納されている命令に変換レイテンシ測定回路が遭遇したときは、レイテンシを測定してもよい。別の選択肢は、たとえば命令のサブセットを含む命令群のための別個に格納された識別子と、命令のサブセットとして使用すべきその群内の特定の命令に関連付けられたタグ、またはパイプラインを通る命令群のすべての命令に関連付けられたタグと、タグ付けされた群のどの命令がサブセットに含まれるべきかを特定するための１つ以上の別個の識別子など、これらの手法の組み合わせを使用することであってもよい。また、マイクロアーキテクチャの異なる部分に対して異なる手法を用いることも可能であり、たとえばいくつかの命令ファミリはタグを使用し、他のファミリは識別子を使用してもよい。また、場合により、命令はその存続期間の一部または複数の部分についてタグ付けされ、他の部分のための記録によって参照されることが可能である。たとえば、命令はパイプライン中にあるときにタグ付けされることが可能だが、命令がキュー（たとえば、ロード／ストアキュー）内にあるときに命令の識別子の記録を使用することができる。
【００２０】
任意の時間にパイプラインで実行することを許可された命令のサブセットの最大数は、実施態様ごとに異なり得る。いくつかのシステムは、複数の命令のアドレス変換レイテンシを同時に追跡するのに十分なリソースを提供することができ、その場合、２つ以上の実行中命令が、任意の時間に命令のサブセットに属するものとして識別され得る。しかしながら、回路オーバーヘッドを低減するために、他のシステムは、監視される命令の数を、一度に１つの実行命令に制限することができる。
【００２１】
命令選択回路は、前の命令を選択してから所定の間隔が経過した後に、命令のサブセットの１つとして追加の命令を選択するように構成されてもよい。この間隔が十分に長ければ、一度に監視される実行中命令の数を効果的に１つに制限することができる。この間隔は、ソフトウェアによって設定することも可能であり、または配線接続されることも可能である。さらに、間隔の経過と別の命令の選択との間に遅延が含まれることが可能であり、間隔が満了した後、すぐ次の命令を選択することは必須ではない。たとえば、所定の時間が経過した後、命令選択回路は、サブセットの次のメンバーを選択する前に、ランダムに決定されたさらなる間隔をカウントすることができる。サブセットに含まれるように命令が選択される間隔をランダムに変化させることは、プログラムループと一致するサンプリング間隔の可能性が減少するので、より良い統計的サンプリングを提供することができる。所定の間隔は、処理サイクルの数、または遭遇した命令の数に関して定義することができる。
【００２２】
いくつかの例では、所定の間隔が経過したとき、命令選択回路は、前に選択された命令が所定の処理ステージを超えて進行するまで、サブセットの１つとして別の命令を選択することを延期してもよい。この所定のステージは、前の命令によって必要とされる任意のアドレス変換が完了した点であってもよく、あるいは所定のステージは、パイプラインのライトバックステージまたはリタイアステージのような後の処理ステージであってもよい。このように、たとえばソフトウェアがサンプリング間隔を比較的短い時間に設定したとしても、複数の命令を追跡するための追加の回路（たとえばカウンタ）を提供する必要性を回避するために、変換レイテンシ測定回路は、一度に１命令に対応するアドレス変換レイテンシを測定することができる。
【００２３】
この装置は、命令のサブセットに対応する情報の他の項目を監視する性能監視回路を含んでもよい。情報の他の項目は、命令のサブセットの性能メトリックスを決定するためにアドレス変換レイテンシと併せて使用されることが可能である。したがって、アドレス変換レイテンシは、監視される唯一の情報ではなく、個々の命令の性能に影響を与える可能性のある大きな問題の一部を形成する可能性がある。
【００２４】
変換レイテンシは一般に、開始イベントと終了イベントとの間のレイテンシとして測定されてもよい。場合によっては、開始／終了イベントとしてどの特定のイベントが使用されるかは、たとえばソフトウェアを使用して構成レジスタに情報を設定することによって、構成可能である。あるいは、どのイベントがレイテンシ測定の開始および終了をトリガするかをユーザが変更できないように、いくつかのシステムは、特定のタイプの開始イベントまたは終了イベントによってトリガされるように配線接続された回路を有してもよい。
【００２５】
一例では、変換レイテンシ測定回路は、任意の命令についてアドレス変換回路によって受信されるアドレス変換の要求に応答して開始イベントを検出してもよい。あるいは、アドレス変換の要求を発行するように構成された機能回路ユニットに対して発行されている任意の命令に応答して、開始イベントが検出されてもよい。アドレス変換プロセス自体が、関連する機能回路ユニットに命令が発行された後にしばらくの間開始しなくても、機能回路ユニットに到着する命令と発行されているアドレス変換要求との間の遅延が各命令について実質的に一定であれば、アドレス変換レイテンシ測定をわずかに早く開始することで、異なる命令に関連する相対アドレス変換遅延をまだ決定することができる（アドレス変換レイテンシの絶対測定を提供する必要はない）。場合によっては、実際のアドレス変換要求を検出するよりも、任意の機能回路ユニットで受信される命令を検出する方が、ハードウェアでは効率的かもしれない。
【００２６】
終了イベントは、変換されたアドレスがアドレス変換回路によって戻されたことに応答して検出されてもよい。あるいは、データストアに対して発行されているアドレス変換回路によって得られた変換アドレスを指定するデータアクセス要求に応答して、終了イベントが検出されてもよい。この場合も、変換されたアドレスを戻してデータアクセス要求を発行するまでの時間はアドレス変換プロセス自体の一部ではないかもしれないが、各命令について比較的一定であれば、データアクセス要求が発行されているときにアドレス変換測定を停止することは、単に各測定値に固定オフセットを追加するだけである。したがって、場合によって、より効率的な回路実施態様を可能にするために、正確にいつレイテンシ測定が開始および終了するかについては、柔軟性の余地がある。
【００２７】
これらの開始イベントおよび終了イベントのいずれの組み合わせも、任意のレイテンシ測定に使用され得る。また、開始／終了イベントは、複数の変換ステージがある場合のアドレス変換の個々のステージの開始および終了に関連する可能性がある。
【００２８】
また、場合により、任意の開始イベントまたは終了イベントが検出されたときでも、実際にレイテンシ測定が開始または停止するまでに一定の遅延が生じることがある。たとえば、サンプリングされた命令（クリティカルパスに影響する）の実際の処理に対する遅延を回避するために、レイテンシ測定は、命令処理自体に関して何らかのアクションがとられた後に開始または停止することができる。たとえば、レイテンシ測定を開始する前にアドレス変換要求を発行することができ、レイテンシ測定を停止する前にデータアクセス要求をメモリに送ることができる。
【００２９】
レイテンシを記録する方法はいくつかある。装置は、開始イベントに応答してカウントを開始し、終了イベントに応答してカウントを停止するためのカウンタを含んでもよく、終了イベントの時点のカウント値はアドレス変換のレイテンシに対応する。あるいは、タイムスタンパは、開始イベントでのタイムスタンプおよび終了イベントでの別のタイムスタンプを記録してもよく、レイテンシは、タイムスタンプ間の差に基づいて計算されてもよい。タイムスタンプが使用されるとき、アドレス変換レイテンシを表す記録値は、開始／終了タイムスタンプ自体またはタイムスタンプ間の差であってもよい。
【００３０】
変換レイテンシ測定回路は、測定レイテンシを格納場所に書き込むように構成されてもよい。格納場所は、任意の命令およびアドレス変換レイテンシを監視することから収集された他のデータを格納することができる、性能監視バッファを含んでもよい。場合により、バッファが満杯になると、バッファに他の性能データを上書きすることができるように、バッファの内容を処理するようにソフトウェアに信号を送ることができる。
【００３１】
格納場所はまた、性能監視データを格納するために割り当てられたメモリの領域であってもよい。測定レイテンシ（および選択的に他の性能監視情報）は、命令ごとに、または所定数の命令が監視された後もしくは一定量の監視データが得られた後（一定量のデータは、複数の命令のデータまたは１つの命令に関するデータのサブセットであってもよい）に定期的に、格納場所に書き込まれることが可能である。たとえば、オンチップに設けられたローカルバッファが満杯になると、データをメモリに書き出すことができる。バッファからのデータは、（バッファが満杯になるだけでなく）他の種類のイベントに応答してメモリに書き込まれることも可能であり、たとえば命令が完了すると、対応するデータはメモリに書き込まれることが可能である。
【００３２】
たとえば、任意の命令のために記録される他の情報は：任意の命令のアドレス、任意の命令に関連するコンテキスト（たとえば、プロセスまたは仮想マシン）を識別するコンテキスト識別子、任意の命令の命令タイプ、任意の命令に応答して変換されるアドレス、任意の命令に応答して得られる変換済みアドレス、任意の命令の処理に関連する総レイテンシ、任意の命令に対するアドレス要求が変換索引バッファ内でヒットするか否かの指示、または任意の命令に対するデータ要求がデータキャッシュ内でヒットするか否かの指示を含んでもよい。
【００３３】
場合により、任意の命令について監視されるデータが格納場所に書き込まれるべきか否かを決定するために、いくつかのフィルタリングが適用され得る。このフィルタリングは、アドレス変換レイテンシ測定に特有のものであってもよく、または任意の命令について監視されるすべてのデータに影響を与えることも可能である。フィルタリングは、たとえば命令の処理に関連する総レイテンシ（たとえば、ディスパッチからリタイアまでの総レイテンシ）など、様々なパラメータに基づくことができる。
【００３４】
しかしながら、アドレス変換レイテンシが測定されているとき、もう１つの選択肢は、アドレス変換レイテンシ自体に基づいてフィルタリングすることである。たとえば、任意の閾値が設定されてもよく、変換レイテンシ測定回路は、測定レイテンシが閾値よりも大きいときには、測定レイテンシ（および場合により同じ命令について監視された他のデータ）を格納場所に書き込んでもよい。したがって、アドレス変換レイテンシが閾値よりも小さい命令（一般的に重要な性能の問題として遭遇していない）については、格納場所のスペースを節約するために性能データの書き込みが抑制され得る。
【００３５】
図１は、命令に応答してデータ処理を実行するための処理パイプライン１０の例を示す。パイプライン１０は、受信された命令をデコードするデコードステージ１００と、デコードされた命令を実行ステージ１０４に発行する発行ステージ１０２とを含む。実行ステージ１０４は、異なるタイプの処理動作を実行するための複数の実行ユニットを含むことができる。実行ステージ１０４によって実行される命令のオペランドは、レジスタ１０５から読み出される。命令の結果は、ライトバックステージ１０６においてレジスタ１０５に書き戻される。図１に示されるパイプラインステージの特定の配置は単なる一例であり、デコードと発行との間に設けられるディスパッチステージ、またはハードウェアに設けられた物理レジスタ１０５への命令によって指定されるアーキテクチャレジスタ指定子をマッピングするためのレジスタリネーミングステージなど、他のタイプのステージを設けることもできることは、理解されるだろう。処理パイプライン１０は、インオーダーパイプラインまたはアウトオブオーダーパイプラインとすることができ、処理パイプライン１０は、（たとえば、共通プログラムスレッドからの命令の二重発行を提供することによって、または複数のスレッドの実行を並列にサポートすることによって）複数の命令を並列に処理してもよいことが、理解されるだろう。
【００３６】
データを格納するためのメモリシステム１１８が設けられている。この例では、メモリシステム１１８は、データキャッシュ１２０およびメモリ１２２を含むが、さらなるレベルのキャッシュを提供することができることは理解されよう。命令がメモリ内のデータへのアクセスを必要とするとき、そのデータの仮想アドレスは実行ステージ１０４で得られる。実行ステージ１０４は、メモリシステム１１８内のデータにアクセスするための物理アドレスを取得するために、仮想アドレスを変換するアドレス変換回路１１４を参照する。アドレス変換回路は、仮想アドレスと物理アドレスとの間のマッピングを変換索引バッファ（ＴＬＢ）１１６にローカルに格納してもよく、その場合、物理アドレスは比較的迅速に返されることが可能である。必要なマッピングがＴＬＢ１１６に格納されていないとき、アドレス変換回路１１４は、必要な変換データを取得するために、メモリシステム１１８に格納されたページテーブルを参照する。データキャッシュ１２２およびシステムメモリ１２０へのアクセスは通常、ＴＬＢ１１６へのアクセスよりも多くの処理サイクルを必要とする。
【００３７】
図１の処理パイプライン１０はまた、処理パイプライン１０によって処理される命令に関する統計を測定および記録することができる、性能監視回路１１０を含む。性能監視回路１１０は、パイプラインの任意のステージで命令の処理に関するメトリクスを記録することができる。この例では、性能監視回路１１０は、特定の命令に応答して実行されるアドレス変換のレイテンシを測定する変換レイテンシ測定回路１１２を含む。
【００３８】
性能監視の１つのアプローチは、たとえばキャッシュミス数、ＴＬＢヒット数のカウントなど、パイプラインによる命令ストリームの処理中に発生する離散イベントの数をカウントすることであってもよい。しかしながら、プログラム全体の処理中に発生するイベントの数は、性能がよいか悪いかの何らかの表示を提供することができるが、イベント自体が性能の潜在的損失の理由についてあまり情報を提供しない。コードの性能を向上させるには、どの命令、コード行、クラスまたはモジュールに性能問題があるかを特定すること、その命令への呼び出しスタックおよび／またはパスを特定すること、または性能問題に遭遇したときにどのデータ、変数、配列またはオブジェクトが処理されていたかを識別することなど、性能問題がどこで発生したかに関する情報を提供する方が、より有用であり得る。したがって、性能監視回路１１０は、特定の命令の処理のために検出されたイベントまたは診断情報を記録してもよい（いくつかの実施形態では、特定の命令について検出された情報に加えて、プログラム全体のためにまだ情報が収集される）。しかしながら、すべての処理済み命令に対するそのような命令単位の情報の追跡は、監視回路１１０の面積および電力コスト、ならびに収集された性能情報を格納するための格納容量の点で高価になる。
【００３９】
このコストは、性能監視情報が収集される命令の数を減らすために命令をサンプリングすることによって低減することができる。処理パイプライン１０は命令選択回路１０８も含む。命令選択回路は、（たとえば、パイプラインを通った選択された命令にタグを付加することによって、または選択された命令の別個の記録を格納することによって）性能が監視される特定の命令群を示すように構成されることが可能である。命令選択回路１０８によって示されていない他の命令は監視されない。命令選択回路によって指示された命令の１つがアドレス変換を必要とするとき、変換レイテンシ測定回路１１２は変換のレイテンシを測定する。性能プロファイリングのコストをより管理しやすいレベルに削減することにより、命令サンプリングは、同じ命令について異なるイベントの相関に依存するような（たとえば、ロードのディスパッチ／発行とリタイアとの間の総レイテンシを検出する、またはＴＬＢとキャッシュミスとの間の相関を検出する）、またはアウトオブオーダプロセッサ内の監視された命令の下でリタイアする命令の数を検出するような、特定の命令のより複雑な測定を可能にするという点で、他の利点を有する。また、この手法は、たとえば任意の命令のプログラムカウンタまたはアクセスされているデータ値の仮想アドレスに性能情報を関連付けるなど、特定の命令に対する性能データのより正確な帰属を可能にする。
【００４０】
一実施態様では、命令選択回路１０８はカウンタを含み、ソフトウェアはサンプリング間隔をカウンタに書き込む。この間隔は、デコードされた命令で測定されてもよく、あるいは経過した処理サイクル数または経過時間で測定されてもよい。サンプリングが有効化されると、デコード済み命令または処理サイクルごとに、または任意の時間経過後に、カウンタがデクリメントされる。カウンタがゼロになると、プロファイリングのために命令が選択される（あるいは、カウンタはゼロで初期化され、プロファイリングのための命令の選択をトリガする任意の閾値に向かってカウントアップされてもよい）。場合により、ランダム摂動が起動されてもよく、この場合、カウンタはランダムなさらなる期間（たとえば、さらにデコードされたランダムな数の命令）をカウントし続け、その後、プロファイリングのために命令が選択されてもよい。ランダムな摂動は、サンプリングバイアスが生じる可能性を低減する。たとえば、サンプリング間隔がプログラムループまたはプログラムループの組み合わせと一致する場合、サンプリングされた命令は反復する可能性があり、プログラム全体として達成される性能の統計的に多様なビューを提供しない可能性がある。サンプリング間隔またはランダムなさらなる期間が終了する時点で、サンプリングバイアスを導入しないように選択肢が一貫している限り、サンプリングポイントの周りで選択する命令の選択肢は任意でよいことに留意されたい。たとえば、選択された命令は、サンプリング間隔が経過した命令、または後続の命令であってもよい。命令が選択されると、カウンタはリセットされ、プロセスが繰り返される。次いで、選択された命令は、性能監視回路１１０によってパイプライン１０内で追跡され、その命令のためにサンプル記録が捕捉される。図１の例では、デコードステージでプロファイリングのための命令が選択されることが、理解されるであろう。しかしながら、異なるマイクロアーキテクチャは、いつ命令をサンプリングするかを決めるために異なるポイントを選択してもよい。
【００４１】
実行中のサンプリングのために同時に選択され得る命令の最大数は様々であるが、いくつかの実施態様では、これは一度に１命令のみである。サンプリング間隔が終了した時点で最大サンプル数がまだ実行中である場合、新しいサンプルを選択すると前のサンプルとの衝突が生じるので、命令選択回路１０８は新しいサンプルを選択せず、サンプリングカウンタをリセットし、別のサンプリングされる命令を選択する前にサンプリング間隔が終了する次の時間まで待機する。衝突に応答して、命令選択回路は、衝突の数を記録する衝突カウンタをインクリメントしてもよい（衝突の数が多い場合には、これは、サンプリング間隔が短すぎるか、サンプリングされた命令が重大な性能問題に直面していることを示す）。
【００４２】
いくつかのシステムには、デコードステージ１００でのデコードのために受信した命令と後のステージで処理される命令との間に、１対１のマッピングが存在してもよい。しかしながら、他の例では、パイプライン１０の後のステージ１０２、１０４、１０６によって見られる「命令」は、デコードステージ１００に提供される命令キャッシュまたはメモリからフェッチされた命令と同じ形式ではない場合がある。フェッチされたマクロ命令は、任意の命令セットアーキテクチャに従ってエンコードされてもよいが、デコードステージ１００は、これらの命令を、実行ステージ１０４によって処理されるマイクロオペレーション（μ−ｏｐ）にマッピングしてもよい。たとえば、異なる値を複数のレジスタ位置にロードする複数ロード命令は、値をレジスタにロードするための複数のμ−ｏｐにマッピングされることが可能であり、これらμ−ｏｐの各々は別々のアドレス変換を必要とする。同様に、デコードステージ１００によってより簡単なμ−ｏｐにマッピングされることが可能なアーキテクチャに定義された、他の複雑な命令が存在することもある。また、デコードステージは、２つのアーキテクチャ命令を実行ステージ１０４によってサポートされる１つのμ−ｏｐに融合することができ、たとえば、そのような演算が実行ステージ１０４によってサポートされている場合、乗算の結果を使用する加算の前の乗算命令は、乗算加算μ−ｏｐで置き換えることができる。したがって、命令選択回路１０８によって使用されるサンプリング間隔は、場合によっては、デコードのために受信されたマクロ命令の数に関してカウントされてもよく、他の場合には、サンプリング間隔は、デコードステージによって生成されたμ−ｏｐの数に関してカウントされてもよい。後のステージでの後続の性能監視は、μ−ｏｐに基づいてもよい。一般に、以下で言及する用語「命令」は、マクロ命令またはμ−ｏｐのいずれかを包含すると見なされてよい。
【００４３】
図２は、２ステージアドレス変換を実行するように構成されたアドレス変換回路１１４の例を示す。いくつかのシステムは、異なる特権レベルで動作するソフトウェアをサポートする。たとえば、仮想化された装置は、より高い特権レベルで動作するハイパーバイザ、およびより低い特権レベルで動作する１つまたは複数のオペレーティングシステムを動作させていてもよく、各オペレーティングシステムは、さらに低い特権レベルで動作するアプリケーションを制御してもよい。アプリケーションおよびオペレーティングシステムは、メモリシステム１１８内でアクセスされるべき場所を識別するために仮想アドレス（ＶＡ）を使用してもよく、これらはアドレス変換の第１ステージで最初に中間物理アドレス（ＩＰＡ）に変換され、次いでＩＰＡは第２ステージで物理アドレスに変換される。２レベルのアドレス変換を提供することにより、オペレーティングシステムは、アドレス空間のどの部分がそれ自体および各アプリケーション６に割り当てられるかを制御するために、ステージ１（ＶＡからＩＰＡ）変換のページテーブルを制御してもよく、ハイパーバイザは、物理アドレス空間のどの部分が各オペレーティングシステムに割り当てられるかを制御するために、ステージ２（ＩＰＡからＰＡ）変換のページテーブルを制御してもよい。ハイパーバイザによって開始されるデータアクセスは、ＶＡを指定し、ステージ１変換によって生成されたＩＰＡはメモリシステム１１８にアクセスするための対応する物理アドレスと同一であり得るため、ステージ１変換のみを必要とする。
【００４４】
したがって、アドレス変換回路は、２つのメモリ管理ユニット（ＭＭＵ）、ステージ１（Ｓ１）ＭＭＵ３０２、およびステージ２（Ｓ２）ＭＭＵ３０４を含む。Ｓ１ＭＭＵ３０２は仮想アドレス（ＶＡ）を中間物理アドレス（ＩＰＡ）に変換するように構成され、Ｓ２ＭＭＵ３０４はＩＰＡを物理アドレス（ＰＡ）に変換するように構成されている。Ｓ１ＭＭＵ３０２は、レベル１のＴＬＢ３０６、レベル２のＴＬＢ３１０、およびウォークキャッシュ３０８を有する。ＴＬＢは、仮想アドレス空間の最近アクセスされた多数のページのページテーブルエントリをキャッシュすることができる。各ページテーブルエントリは、仮想から中間へのアドレスマッピングを含んでもよく、選択的に、あるソフトウェアプロセスに対して読み取り／書き込みアクセスが許可されるか否かを定義する情報を含んでもよい。任意の仮想アドレスについて要求されるアドレスマッピングがＴＬＢ３０６、３１０のうちの１つにないとき、メモリシステム１１８に格納されたページテーブルから必要な変換データをフェッチするために、ページテーブルウォークが実行されてもよい。場合により、必要なアドレス変換データはデータキャッシュ１２２にキャッシュされることが可能だが、そうでなければ、メインメモリ１２０からデータがフェッチされ得る。ウォークキャッシュ３０８は、（変換データ自体をキャッシュするのではなく）変換データが格納されているメモリシステム１１８内の場所のアドレスをキャッシュしてもよい。Ｓ１ＭＭＵ３０２はまた、メモリシステム１１８内のステージ１のページテーブルの場所を識別する中間物理アドレスを示す変換テーブルベースレジスタ（ＴＴＢＲ）３１２も含む。Ｓ２ＭＭＵ３０４は、中間物理アドレスを物理アドレスに変換するように構成され、Ｓ２ＭＭＵ３０４のＴＴＢＲ３２０がステージ２のページテーブルを識別する物理アドレスを指定することを除いて、Ｓ１ＭＭＵ３０２と同様である。図２は、各ＭＭＵが２つのレベルのＴＬＢを有する例を示しているが、他の例は、ただ１つのＴＬＢレベルまたは３つ以上のレベルを提供することができ、場合により、Ｓ２ＭＭＵ３０４は異なる数のＴＬＢレベルを有する。
【００４５】
図２は、ハードウェアに設けられた２つの別個のＭＭＵ３０２、３０４を有する例を示しているが、他の実施形態では、単一の回路が両方の機能を実装することができる。たとえば、ＴＬＢおよび／またはウォークキャッシュは共有されることが可能であり、エントリはステージ１またはステージ２の変換に関連するか否かを示すタグ付けがなされ得る。２つの別々のＴＴＢＲ３１２が依然として提供される。
【００４６】
他の実施形態は、アドレス変換の単一ステージのみを有することができ、その場合、仮想アドレスを物理アドレスに変換するために単一のＭＭＵ３０２が提供されてもよい。また、他の実施形態は、アドレス変換の３つ以上のステージを有してもよい。
【００４７】
図３は、任意のアドレスを変換するために必要とされる変換データをＴＬＢのどれも格納していないときに、アドレス変換の単一ステージのページテーブルウォークを実行する一例を示す。この例では、ページテーブルは、いくつかのレベルのページテーブルが提供されている階層構造を有する。入力仮想アドレスからのビットの異なる部分は、ページテーブル構造の各レベルにインデックスを付けるために使用される。この例では、アドレスはｎ＋１ビットを有し（すなわち、ビット［ｎ］は最上位アドレスビットであり、ｎは固定またはソフトウェアによって構成可能である）、レベル０、１、２、および３のテーブルはそれぞれ「ａ」ビット［ｎ：３９］、「ｂ」ビット［３８：３０］、「ｃ」ビット［２９：２１］および「ｄ」ビット［２０：１２］を用いてインデックスが付けられる（ページテーブルの各レベルにインデックスを付けるために使用されるビットの正確なサブセットは、他の例では異なってもよいことが理解される。これは、そのレベルのエントリによって表されるアドレス範囲のサイズおよび各レベルで提供されるエントリの数に依存する）。ページテーブルウォークでは、まず、レベル０テーブルのベースアドレスを識別するために、ＴＴＢＲ３１２が読み取られる。仮想アドレスの「ａ」ビットは、次のテーブル、すなわちレベル１テーブルのベースアドレスへのポインタを含むテーブル記述子が格納される、レベル０テーブル内の場所を示す。したがって、レベル０テーブルに格納されているテーブル記述子を検索するために、１回のメモリアクセスが行われる。このテーブル記述子は、次のテーブルすなわちレベル１テーブルの場所を示し、仮想アドレスの「ｂ」ビットは、レベル２テーブルのベースアドレスを識別する次のテーブル記述子を見つけるために使用される。このプロセスは、ページテーブルのさらなるレベルごとに繰り返され、最終レベルテーブル（この例ではレベル３）は、必要なページのアドレスを変換するための実際の変換データを提供するページテーブルエントリを含み、得られたページテーブルエントリは、同じページ内のアドレスへの後続アクセスがより迅速に処理され得るように、Ｌ１ＴＬＢ３０６に返されてキャッシュされる。したがって、図３の例では、ページテーブルエントリが返される前にメモリアクセスが４回必要とされる。この例では、ページサイズ（１つのページテーブルエントリに関連するアドレスのブロック）は４ＫＢであるが、他のページサイズも使用可能であることは理解されよう。
【００４８】
図３に示されるような階層ページテーブル構造を使用するシステムでは、いくつかのメモリアクセスが必要な場合があるため、完全なページテーブルウォークの実行が遅くなる可能性がある。ページテーブルウォークを高速化するために使用できる様々なキャッシングおよび格納構造がある。多くの場合、最近アクセスされたページテーブルエントリはＴＬＢに格納される。このような場合、仮想アドレスは、ページテーブルウォークをまったく実行することなく変換されてもよい。他の場合には、最終レベル以外のページテーブルウォークのレベルでアクセスされるテーブル記述子データの一部または全部は、ウォークキャッシュ３０８にローカルに格納されることが可能である。ウォークキャッシュにページテーブルウォークのいくつかのレベルのアドレスを格納することにより、アドレス空間内の近くの領域への後続のページテーブルウォークは、階層構造を調べるためのメモリアクセスの少なくとも１回を排除することで、より速く実行されることが可能となる。たとえば、最終レベル３のテーブル内のページテーブルエントリのアドレスを識別するレベル２テーブル記述子は、次回は同じページテーブルにアクセスするためにレベル３テーブルへのメモリアクセスが１回しか必要ではなくなるように、ウォークキャッシュにキャッシュされることが可能である。ページテーブルウォークを高速化する別の方法は、メインメモリ１２０から読み出されなければならない場合よりも高速なアクセスを可能にするために、いくつかのページテーブルエントリまたはページテーブルの一部をデータキャッシュ１２２に格納することである。現在のキャッシュポリシーに応じて、ＴＬＢでミスした２つの仮想アドレスのページテーブルエントリを検索するのに要する時間は、テーブルまたはページ記述子データがどこに格納されているかによって大きく変わる可能性がある。
【００４９】
上述したような２ステージのアドレス変換を有するシステムでは、図４に示すように、テーブル記述子（次のレベルのページテーブルのベースアドレスを提供する）がステージ１のアドレス変換の一部として得られるたびに、記述子は中間物理アドレスの形式でしかないので、レイテンシのこのばらつきは悪化する可能性がある。次のレベルのテーブルにアクセスするには、この中間の物理アドレスは物理アドレスに変換される必要があり、ステージ２の変換を必要とする。必要なＩＰＡがＳ２Ｌ１ＴＬＢ３１４またはＬ２ＴＬＢ３１６にヒットした場合、ステージ２の変換は比較的高速になる可能性がある。しかしながら、最悪の場合、Ｓ１ページテーブルウォークで別のテーブル記述子が得られるたびに、追加のＳ２ページテーブルウォークが実行される必要があるかもしれない。各ステージで使用されるＮ個のレベルのページテーブルがある場合には、元のＶＡを対応するＩＰＡに変換するための最終アドレス変換データを見つけるために必要なメモリアクセスの数は、Ｎの２乗とともに増加する。これは、異なるアドレス変換のためにページテーブルウォークを実行するのにかかる時間の変動を悪化させる。
【００５０】
どのデータがアドレス変換回路に容易に利用可能であるか否かの多くの順列があるので、アドレス変換がＴＬＢに格納されているか否かの個別の表示は、ＴＬＢミスが性能に及ぼす影響を示さない。最悪の場合のページテーブルウォークの完全なペナルティを回避するためにウォークキャッシュ３０８またはデータキャッシュ１２２が使用され得る時間の大部分であれば、多数のＴＬＢミスが許容されてもよい。一方、少数のＴＬＢミスしかないことを示すレポートは、データ処理装置が効率的に動作していることを示唆している可能性がある。しかしながら、これらのミスのすべてが図４に示されるもののような全ページテーブルウォークを必要とする場合、ミス数の単なる表示は、性能に対するコストを完全に反映している。
【００５１】
図５は、性能監視回路１１０の一例を示す。性能監視回路１１０は、レイテンシカウンタ５０２と、イベントカウンタ５０４と、タイムスタンパ５０６と、構成レジスタ５０８と、バッファ５１０とを含む。レイテンシカウンタ５０２およびタイムスタンパ５０６は、レイテンシを測定する代替方法を提供し、そのいずれかが図１の変換レイテンシ測定回路１１２に対応してもよい。レイテンシカウンタ５０２は開始イベントと終了イベントとの間でインクリメントすることができるか、または開始イベントと終了イベントのタイミングは、タイムスタンパ５０６によって記録されることが可能である。
【００５２】
バッファ５１０は、他のタイプの命令に関する他の性能指標と同様に、記録されたアドレス変換レイテンシを格納するために使用される。たとえば、バッファ５１０は、以下のものを格納するために使用されてもよい：
・サンプリングされた命令に関連するタイムスタンプ、
・命令が発行されたコンテキスト、特権レベル、およびセキュリティ状態、
・命令が例外を生成したか否か、
・命令が実行を完了したか否か、
・命令のプログラムカウンタ仮想アドレス、
・命令が分岐、ロード、ストア、その他であるか否か、
・命令が条件付き、条件付き選択か否か、
・総レイテンシ、つまり発行のためディスパッチされている命令から完了しつつある命令までのサイクル数、
・発行レイテンシ、つまり発行のためディスパッチされている命令から発行されているμ−ｏｐまでのサイクル数、
・その他のイベント、レイテンシカウンタ、および／またはアドレスの記録。
【００５３】
ロード命令、ストア命令またはアトミック命令の場合、バッファ５１０は以下のものも記録してよい：
・アクセスされている仮想アドレスと物理アドレス。
・命令タイプ。
・アドレス変換レイテンシ。
・変換データの要求がＴＬＢでヒットするか否か。
・データアクセスが第１レベルキャッシュでヒットするか否か。
・データアクセスがその他いずれかのレベルのキャッシュでヒットするか否か。
・アクセスがマルチソケットシステム内の別のソケットにアクセスしたか否か。
・ロード用データソースの指標。
記録されたアドレス変換レイテンシを有することができる他の命令は、指定された仮想アドレスまたは仮想アドレスのブロックに対応するデータキャッシュ１２２からのデータを無効化またはクリーニングするためのキャッシュ保守命令、または仮想アドレスが変換されることを必要とする他の種類の命令を含んでもよい。
【００５４】
任意の命令に関連するデータをバッファ５１０に書き込むために、パケット化されたフォーマットが使用されてもよい。たとえば、どのタイプの性能監視情報が各パケットに含まれるかを識別するために、異なるパケットヘッダが使用されてもよい。いくつかの例では、すべての性能情報はバッファ５１０にオンチップで格納され、バッファを読み取る命令を実行することによって読み出されることが可能であり、または外部機器からバッファにアクセスするためのインタフェースが提供可能である。しかしながら、これは、ハードウェアの点で高額になり得る比較的大きなバッファを必要とする可能性があり、都合よく含まれ得るバッファのサイズは、比較的少数のサンプルしか収集できない。したがって、別のアプローチは、捕捉されたとき少量の監視データを一時的に格納するためのバッファ５１０をオンチップで提供すること、およびバッファ５１０が満杯になると、より多くのデータが性能監視回路１１０によって捕捉される際にバッファ５１０が上書きされ得るように、バッファ５１０からデータを読み出させてメモリシステム１１８に書き出させる例外をトリガすることである。これにより、多くのサンプルを収集することができる。
【００５５】
構成レジスタ５０８は、上記のイベントのいずれが記録されるべきかを指示する制御ビットを含むことができる。構成レジスタ５０８は、ソフトウェアによってプログラム可能に設定されてもよく、または装置の製造中に配線されてもよい。
【００５６】
性能監視回路５００はまた、記録されたデータをフィルタリングするように構成されたフィルタリング回路５１２を含む。収集されたサンプルは、命令のタイプに基づいてフィルタリングされてもよい。たとえば、記録はロード命令のためにのみ格納され、分岐命令またはストア命令を含む他の命令から収集されたデータは格納されなくてもよい。あるいは、フィルタリングは、ミス予測分岐、ＴＬＢミッシングアクセス、レベル１キャッシュリフィルアクセス、および／またはリタイア命令などのイベントまたはイベントの組み合わせに基づくことができる。構成レジスタ５０８は、フィルタリングがどのように実行されるべきかを指定してもよい。一例では、フィルタリング回路５１２は、任意の閾値よりも大きい総レイテンシ（たとえばディスパッチからリタイアまで）を有する記録のみ、またはプログラム可能な閾値よりも大きいアドレス変換レイテンシを有する記録のみが格納されるように、レイテンシに基づいてフィルタリングを実行する。サンプリングされた命令に対応するデータがフィルタリング要件を満たすとフィルタリング回路５１２が判断したとき、データはバッファ５１０に格納され、次にメモリシステムに書き出されてもよい。あるいは、サンプリングされた命令に対応するすべてのデータは、フィルタ基準が満たされているか否かにかかわらず、バッファに最初に書き込まれてもよいが、その後、フィルタリング回路５１２は、システムメモリに書き込む前にバッファに格納されたデータをフィルタリングしてもよい。
【００５７】
図６は、以下を含む、アドレス変換プロセスに関連する様々なイベントの例を示す。
・Ｅ１：必要な仮想アドレスを生成するために実行ステージ１０４内のアドレス生成ユニットに命令が提供される（場合により、アドレス生成ユニットはアドレスを生成するための専用機能ユニットであってもよく、あるいはアドレス生成ユニットは、（たとえばオフセットにベースアドレスを加えることによって）やはりアドレスを生成することが可能な別のタスクを処理するために既に設けられた、単に何らかの回路（たとえば、演算／論理ユニット）であってもよい）、
・Ｅ２：アドレス生成ユニットによって仮想アドレスが生成される、
・Ｅ３：仮想アドレス要求がＳ１ＭＭＵに送信される、
・Ｅ４：中間物理アドレスがＳ１ＭＭＵによって返される、
・Ｅ５：中間物理アドレスがＳ２ＭＭＵに提供される（場合によりＥ４およびＥ５は本質的に同じイベントであってもよいことに注意）、
・Ｅ６：物理アドレスがＳ２ＭＭＵによって返される、
・Ｅ７：取得された物理アドレスを使用するデータアクセス要求がメモリシステム１１８に対して発行される。
【００５８】
図６に示されるように、アドレス変換プロセスは、Ｅ３でＭＭＵに送信される仮想アドレス要求とＥ６で返される物理アドレスとの間で実行される動作に対応してもよい。したがって、場合によっては、開始イベントＥ３と終了イベントＥ６との間でアドレス変換レイテンシが測定されてもよい。これらのイベント間の時間は、変換データがＴＬＢに格納されているか否か、ページテーブルエントリのアドレスがウォークキャッシュにキャッシュされているか否か、ページテーブルエントリがメモリ内のデータキャッシュにキャッシュされているか否か、などの要因に依存し、異なる命令に応答して、比較的大きく変動する可能性がある。このように、観察された性能低下の理由を診断するのに有用な情報を提供するために、Ｅ３とＥ６との間のアドレス変換レイテンシを測定することが有利である。
【００５９】
しかしながら、他の場合には、アドレス変換レイテンシを測定するための開始イベントは、Ｅ３で発行される仮想アドレス要求より早い場合がある。たとえば、Ｅ３とＥ６との間の遅延は変換ごとに変化し得るが、たとえばアドレス生成ユニットに命令が提供される時間Ｅ１と仮想アドレス要求がＭＭＵに送信される時間Ｅ３との間に命令のキューイングがない場合、Ｅ１とＥ３との間、またはＥ２とＥ３との間の遅延は、各変換について比較的一定であり得る。したがって、他の例では、レイテンシが測定される開始イベントとしてＥ１またはＥ２を使用してもよい。Ｅ１とＥ３との間の期間は、実際にはアドレス変換プロセスの一部ではないかもしれないが、Ｅ１またはＥ２でカウントを開始することは、場合により、回路に実装する方が便利であり、Ｅ１とＥ３との間の時間が命令ごとに著しく変動しそうもない場合でも、これは任意の命令のアドレス変換によって引き起こされる相対遅延の尺度を提供する。
【００６０】
同様に、アドレス変換レイテンシを測定するための終了イベントは、Ｅ６での物理アドレスの返信である必要はない。代わりに、終了イベントは、データアクセス要求がＥ７で発行されたときであってもよい。
【００６１】
また、測定はＥ３で開始される必要はない。代わりに、遅延は後の時間Ｅ３’に測定が開始する前に含まれてもよい。これは、最初に始められた測定を開始することによって遅くなる可能性のあるいずれの性能臨界プロセスにとっても有用となり得る。Ｅ３とＥ３’との間の遅延が多数の測定にわたって一定である限り（たとえば、信号がある論理ゲートのセットを通って伝播する際の遅延に依存するため）、Ｅ３’で遅れてレイテンシのカウントを開始することは、絶対レイテンシよりも興味深いかもしれない、異なる変換で測定された相対レイテンシに影響を及ぼすことなく、記録された絶対レイテンシ値に対する固定されたスキューをもたらすだけである。同様に、Ｅ６’で測定が停止する前にＥ６の後で遅延が含まれてもよい。
【００６２】
図６は、アドレス変換プロセスの測定中に使用され得るイベントの一例であり、代わりに使用され得る他のイベントが存在することが、理解されよう。一般に、アドレス変換プロセスの少なくとも一部のレイテンシを表す値を記録できる任意の開始イベントまたは終了イベントが、使用され得る。
【００６３】
図６は、２ステージのアドレス変換プロセスを有する例を示しており、この場合、単独のレイテンシ測定として、またはＥ１／Ｅ２／Ｅ３とＥ６／Ｅ７との間の総レイテンシの測定とも組み合わせて、イベントＥ３とＥ４との間（ステージ１変換のレイテンシに相当）、またはイベントＥ５とＥ６との間（ステージ２変換のレイテンシに相当）のレイテンシを記録することも可能である。他の例では、アドレス変換プロセスは、仮想アドレスから物理アドレスへの単一ステージの変換を含んでもよい。
【００６４】
図６には示されていないが、ステージ１の変換の場合はイベントＥ３とＥ４の間に、ステージ２の変換の場合はイベントＥ５とＥ６の間に、ページテーブルウォークが必要な場合がある。この場合、別の選択肢は、ページテーブルウォークの開始（たとえば、ＴＬＢミスの検出またはメモリへのページテーブルエントリ要求の発行）である開始イベント、およびページテーブルウォークの完了（たとえば、メモリシステムからの必要なページテーブルエントリの返送）である終了イベントを有することであろう。したがって、レイテンシは、アドレス変換プロセスのほんの一部（たとえば、ページテーブルウォーク）に関連するレイテンシとして測定されることも可能である。
【００６５】
図７は、命令をサンプリングする方法を示す。ステップ７００において、カウンタがリセットされる。次にプロセスはステップ７０２に進み、そこでプロセスはデコード済み命令をカウントする。ステップ７０４において、カウンタがサンプリング閾値に到達したか否かが確認される。到達していない場合、カウンタはデコード済み命令のカウントに戻る。一方、カウンタがサンプリング閾値に到達した場合、プロセスはステップ７０６に進み、そこでカウンタは、さらなるランダムな数の命令についてインクリメントまたはデクリメントする。これは、サンプリングサイクルが反復的になることを防止し、サンプル中の多様性を低減するためである。次に、ステップ７０８において、以前に選択された命令がまだ実行中であるか否か（たとえば、以前に選択された命令がライトバックステージに到達したか否か）が確認される。前に選択された命令がもはや実行中でない場合には、ステップ７１０で、次のデコード済み命令が性能監視のための命令として選択される。その後、プロセスはステップ７００に戻る。この方法は、たとえば図１の命令選択回路１０８によって実施されてもよい。上述のように、デコード済みマクロ命令をカウントする代わりに、カウンタは、生成されたマイクロオペレーションの数をカウントすることもできる。また、他の例では、命令数ではなく、時間またはサイクル数で定義されたサンプリング間隔をカウントしてもよい。また、カウンタは、任意の閾値までカウントアップすることもできるし、特定の開始値からゼロまでカウントダウンすることもできる。
【００６６】
図８は、変換レイテンシ測定を実行する方法を示す。ステップ６００において、変換レイテンシ測定回路１１２は、選択された命令の開始イベントが発生したか否かを監視する。開始イベントが発生すると、プロセスはステップ６０２に進み、開始イベントに応答してカウンタが開始される。カウンタは、開始イベントの直後に開始されてもよいし、図６に関して上述したように、カウンタを開始する前に固定遅延が発生してもよい。ステップ６０４において、変換レイテンシ測定回路１１２は、選択された命令の終了イベントが発生したか否かを監視する。終了イベントが発生すると、プロセスはステップ６０６に進み、カウンタを停止させる。レイテンシが閾値と比較される任意選択的なステップ６０８が含まれてもよく、レイテンシが閾値よりも大きい場合には、レイテンシはステップ６１０でバッファに書き込まれる。あるいは、レイテンシは、レイテンシにかかわらずバッファ５１０に書き込まれることが可能であるが、閾値未満であればメモリに書き込まれないようにすることができる。ステップ６１２において、プロセスはカウンタをリセットし、ステップ６００に戻る。
【００６７】
任意のプログラムの実行性能を分析するのに有用であり得る他の情報を導出するために、多数のサンプリングされた命令について測定されたアドレス変換レイテンシが使用されることも可能である。たとえば、最小レイテンシ、最大レイテンシ、平均レイテンシなどのパラメータが決定され得る。このような付加的情報をオンチップで導出することは可能であるが、実際には、捕捉されたレイテンシ値がバッファ５１０またはメモリシステム１１８から読み出された後、これを外部で行う方が簡単である。サンプリングされなかった命令の一部は、所定の最大値より大きいか、または所定の最小値よりも小さいレイテンシに遭遇する可能性があるが、統計的に有効なサンプル集団が選択された場合には、サンプリングされた命令のみに基づいて決定される最小値／最大値は、プログラム全体での最小／最大レイテンシの妥当な予測を依然として提供することができる。同様に、統計的に有効なサンプル集団では、サンプリングされたレイテンシを平均化することによって決定される平均レイテンシは、すべての変換でそのレイテンシを測定した場合、実際の平均の妥当な予測を提供することができる。
【００６８】
また、測定されたレイテンシおよび任意の期間にわたって行われた総変換数のカウントを使用して、平均キュー深度（任意の時間にアドレス変換回路１１４で保留中の未処理の変換の平均数）を推定することも可能である。リトルの法則によれば、安定したシステム内の長期平均顧客数Ｌは、長期平均有効到着達率λに、顧客がシステム内で費やす平均時間Ｗを乗じたものと等しい；すなわちＬ＝λＷである。任意のサイクル数Ｎで行われる変換Ｔの総数をカウントするために、変換カウンタが（性能監視回路１１０またはアドレス変換回路１１４（ＭＭＵ）自体のいずれかに）設けられてもよい。長期平均有効到着率λはＴ／Ｎとして決定することができるので、平均キュー深度Ｌは、ＴＷ／Ｎとして計算されてもよく、ここでＷは、上述したように測定された変換レイテンシを使用して決定される平均変換レイテンシである。
【００６９】
本出願において、「〜するように構成された」という用語は、装置の要素が定義された動作を実行可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの配置または相互接続方法を意味する。たとえば、装置は、所定の動作を提供する専用ハードウェアを有してもよく、あるいはプロセッサまたは他の処理装置が機能を実行するようにプログラムされてもよい。「構成された」は、所定の動作を提供するために装置要素が多少なりとも変更されなければならないことを示唆するものではない。
【００７０】
以上、添付図面を参照して本発明の例示的な実施形態を本明細書で詳細に説明したが、本発明はこれらの厳密な実施形態に限定されるものではなく、添付の特許請求によって規定される本発明の範囲および趣旨から逸脱することなく、様々な変更および修正が当業者によって実施され得ることが、理解されるべきである。
【図１】
2019506670.tif 000003
【図２】
2019506670.tif 000004
【図３】
2019506670.tif 000005
【図４】
2019506670.tif 000006
【図５】
2019506670.tif 000007
【図６】
2019506670.tif 000008
【図７】
2019506670.tif 000009
【図８】
2019506670.tif 000010
【国際調査報告】
2019506670.tif 000011
2019506670.tif 000012
2019506670.tif 000013