(57)【要約】  メモリトランザクションをサービスする際にサービスの品質を制御する、開示されるアプローチは、サービスの品質管理（ＱＭ）回路（１１６）が、リクエスタ回路（１０６，１０８，１１０，１１２）から、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックとを、リクエスタ回路がメモリコントローラ（１０４）へメモリトランザクションをアクティブに送信している間に、周期的に読み取ること（２０６）を含む。ＱＭ回路は、メモリコントローラがメモリトランザクションを処理している間、メモリコントローラから第２データレートメトリックを周期的に読み取り（２０８）、リクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、それぞれの第１データレートメトリックと、それぞれの待ち時間メトリックと、第２データレートメトリックとが、サービスの品質メトリックを満たすか否かを決定する（２１０）。処理中のメトリックがサービスの品質メトリックを満たさないとの決定することに応答して、ＱＭ回路は、リクエスタ回路（複数可）およびメモリコントローラの制御パラメータ（複数可）の値（複数可）を動的に変更する（２１２）。
2020530621.tif 000002
【特許請求の範囲】
【請求項１】
メモリトランザクションをサービスする際にサービスの品質を制御する方法であって、
システムオンチップ（ＳＯＣ：system on chip）上に配備されるサービスの品質管理（ＱＭ：quality of service management）回路が、前記ＳＯＣ上に配備される複数のリクエスタ回路からそれぞれの第１のデータレートメトリックとそれぞれの待ち時間メトリックとを、前記複数のリクエスタ回路が前記ＳＯＣ上のメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取ることと、
前記メモリコントローラが前記メモリトランザクションを処理している間に、前記ＱＭ回路が、前記メモリコントローラから第２のデータレートメトリックを周期的に読み取ることと、
前記複数のリクエスタ回路が前記メモリコントローラへアクティブにメモリトランザクションを送信している間に、前記ＱＭ回路が、前記それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが、サービスの品質メトリックを満たさないと決定することに応答して、前記ＱＭ回路が、前記複数のリクエスタ回路および前記メモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更することとを含む、方法。
【請求項２】
前記それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが前記サービスの品質メトリックを満たさないと決定することに応答して、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更することをさらに含む、請求項１に記載の方法。
【請求項３】
前記メモリコントローラが前記メモリトランザクションを処理しているときに、前記メモリコントローラから休止時間メトリックを周期的に読み取ることと、
前記休止時間メトリックが前記サービスの品質メトリックを満たさないと決定することとをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記決定することは、
前記第２のデータレートメトリックと前記メモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定することと、
前記使用率メトリックが前記サービスの品質メトリックを満たさないと決定することとを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記周期的に読み取ることは、前記ＱＭ回路が前記メモリコントローラの帯域幅使用率メトリックを周期的に読み取ることを含み、
前記変更することは、前記帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を変更することを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
メモリコントローラと、
前記メモリコントローラに結合され、メモリアクセストランザクションを前記メモリコントローラへ送信するように構成されている複数のリクエスタ回路と、
前記メモリコントローラと前記リクエスタ回路とに結合されるサービスの品質管理（ＱＭ）回路とを備え、前記ＱＭ回路は、
前記複数のリクエスタ回路が前記メモリコントローラへメモリトランザクションをアクティブに送信している間に、前記複数のリクエスタ回路からそれぞれの第１データレートメトリックとそれぞれの待ち時間メトリックとを周期的に読み取り（２０６）、
前記メモリコントローラが前記メモリトランザクションを処理している間に、前記メモリコントローラから第２のデータレートメトリックを周期的に読み取り（２０８）、
前記複数のリクエスタ回路が前記メモリコントローラへメモリトランザクションをアクティブに送信している間に、前記それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが、前記サービスの品質メトリックを満たさないと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更するように構成されている、システム。
【請求項７】
前記ＱＭ回路は、前記それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが、前記サービスの品質メトリックを満たさないと決定することに応答して、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更するようにさらに構成されている、請求項６に記載のシステム。
【請求項８】
前記ＱＭ回路は、
前記メモリコントローラが前記メモリトランザクションを処理しているときに、前記メモリコントローラから休止時間メトリックを周期的に読み取り、
前記休止時間メトリックが前記サービスの品質メトリックを満たさないと決定するようにさらに構成されている、請求項６または７に記載のシステム。
【請求項９】
前記ＱＭ回路は、
前記第２のデータレートメトリックと前記メモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定し、
前記使用率メトリックが前記サービスの品質メトリックを満たさないと決定するようにさらに構成されている、請求項６〜８のいずれか１項に記載のシステム。
【請求項１０】
前記ＱＭ回路は、
前記メモリコントローラの帯域幅使用率メトリックを周期的に読み取り、
前記帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を変更するようにさらに構成されている、請求項６〜９のいずれか１項に記載のシステム。
【請求項１１】
前記ＱＭ回路は、前記複数のリクエスタ回路の１つ以上に関連付けられる１つ以上のリクエスト間隔の１つ以上のそれぞれの値を変更するようにさらに構成されている、請求項６〜１０のいずれか１項に記載のシステム。
【請求項１２】
前記ＱＭ回路は、前記複数のリクエスタ回路の１つ以上に関連付けられる１つ以上の未処理のトランザクション限界の１つ以上のそれぞれの値を変更するようにさらに構成されている、請求項６〜１１のいずれか１項に記載のシステム。
【請求項１３】
前記ＱＭ回路は、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路上の１つ以上のポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上のそれぞれの値を変更するようにさらに構成されている、請求項６〜１２のいずれか１項に記載のシステム。
【請求項１４】
前記ＱＭ回路は、前記メモリコントローラの帯域幅制御の値を変更するようにさらに構成されている、請求項６〜１３のいずれか１項に記載のシステム。
【請求項１５】
前記ＱＭ回路は、前記メモリコントローラのポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上の値を変更するようにさらに構成されている、請求項６〜１４のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示は、一般に、メモリトランザクションを処理する際にサービスの品質を管理することに関する。
【背景技術】
【０００２】
背景
システムオンチップ（ＳＯＣ：system-on-chip）は、しばしば、メモリ、１つ以上のプロセッサ、および入力／出力（Ｉ／Ｏ：input/output）回路などの構成要素を含み、これら全てが単一の集積回路ダイ上で製造される。ＳＯＣは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：field programmable gate array）において見出されるようなプログラマブル論理回路も含み得る。ＳＯＣは、メモリトラフィックを調節してサービスの品質（ＱｏＳ：quality of service）を制御するための様々な構成パラメータを提供する。
【０００３】
メモリリソースにアクセスする際におけるサービスの品質（ＱｏＳ）は、しばしば、待ち時間と帯域幅使用率との観点から測定される。待ち時間は、メモリトランザクションがリクエスタにより発行されるときから、リクエスタが、読み取りトランザクションからのデータ、または書き込みトランザクションが完了したという受領通知を受信するときまでの時間である。メモリ帯域幅は、１つ以上のリクエスタにより、データがメモリから読み込まれ得るか、もしくはメモリに書き込まれ得る理論的な、または公表されるレート（例えばバイト／秒）であり、帯域幅使用率は、ユーザーのアプリケーションを実行するシステムにおいて投入されるメモリトランザクションを処理する際に消費されるメモリ帯域幅の割合である。
【０００４】
複数のリクエスタ間のＳＯＣにおけるメモリ帯域幅の割り当てとトラフィックタイプとを効率的に調節することは、ＳＯＣアーキテクチャの複雑性および可変性と、ＳＯＣ上に配備され得る膨大な数の異なるアプリケーションとのために、挑戦的であり得る。加えて、性能に影響し得る単一の制御パラメータを超える多くの要因があるため、多くの制御パラメータの個々の１つに関係のあるメモリシステムの性能は、しばしば非線形である。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
メモリトランザクションをサービスする際にサービスの品質を制御する、開示される方法は、システムオンチップ（ＳＯＣ）上に配備されるサービスの品質管理（ＱＭ：quality of service management）回路が、ＳＯＣ上に同様に配備される複数のリクエスタ回路から、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がＳＯＣ上のメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取ることを含む。ＱＭ回路は、メモリコントローラがメモリトランザクションを処理している間、メモリコントローラから第２のデータレートメトリックも周期的に読み取る。ＱＭ回路は、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが、サービスの品質メトリックを満たすか否かを決定する。それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、ＱＭ回路は、複数のリクエスタ回路およびメモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更する。
【０００６】
開示されるシステムは、メモリコントローラと、複数のリクエスタ回路と、サービスの品質管理（ＱＭ）回路とを含む。複数のリクエスタ回路は、メモリコントローラに結合され、メモリアクセストランザクションをメモリコントローラへ送信するように構成されている。ＱＭ回路は、メモリコントローラとリクエスタ回路とに結合されている。ＱＭ回路は、複数のリクエスタ回路から、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取るように構成されている。ＱＭ回路は、メモリコントローラがメモリトランザクションを処理している間、メモリコントローラから第２のデータレートメトリックを周期的に読み取るようにさらに構成されている。ＱＭ回路は、複数のリクエスタ回路がメモリトランザクションをメモリコントローラへアクティブに送信している間に、それぞれの第１データレートメトリックと、それぞれの待ち時間メトリックと、第２データレートメトリックとが、サービスの品質メトリックを満たすか否かを決定するように構成されている。それぞれの第１データレートメトリックと、それぞれの待ち時間メトリックと、第２データレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、ＱＭ回路は、複数のリクエスタ回路およびメモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更するように構成されている。
【０００７】
その他の特徴は、以下の、詳細な説明および請求の範囲の考慮から認識されるであろう。
【０００８】
図面の簡単な説明
方法およびシステムの様々な態様および特徴は、以下の詳細な説明の検討に際し、および図面の参照に際し明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】リクエスタ回路からメモリへの間のパス上の複数の点においてＱｏＳ制御パラメータを動的に調整できるＱＭを有する例示的なＳｏＣを示す図である。
【図２】ＱｏＳメトリックを監視してＱｏＳ制御パラメータの値を調整する例示的なプロセスのフローチャートを示す図である。
【図３】メモリトランザクションを発行する際にリクエスト回路の制御回路によって行われる例示的なプロセスのフローチャートを示す図である。
【図４】メモリトランザクションを調停する際に相互接続回路の制御回路によって行われる例示的なプロセスのフローチャートを示す図である。
【図５】メモリトランザクションを調停する際にメモリコントローラの制御回路によって行われる例示的なプロセスのフローチャートを示す図である。
【図６】開示される回路に従って構成され得る例示的なプログラマブルＩＣを示す図である。
【発明を実施するための形態】
【００１０】
詳細な説明
以下の説明において、本明細書において提示される特定の例を説明するために、多数の特定の詳細が示される。しかしながら、当業者にとって、１つ以上の他の例および／またはこれらの例の変形が、以下に与えられる全ての特定の詳細なしで実践され得ることは、明らかであるはずである。他の例において、よく知られている特徴は、本明細書の例の説明を不明瞭にしないために、詳細に説明されていない。説明の簡易化のために、同じ要素、または同じ要素の追加の例を指すために、異なる図において同じ参照番号が用いられ得る。
【００１１】
開示される方法および回路は、ＱｏＳメトリックを監視することにより、およびメモリトランザクションを発行するリクエスタ回路とメモリへのアクセスを調停するメモリコントローラとの間のパスの様々な点において制御パラメータを適応的および動的に調整することにより、メモリトランザクションを処理する際にサービスの品質（ＱｏＳ）を管理するためのアプローチを提供する。制御パラメータは、制御パラメータを変更して制御パラメータを有効にさせるためにリクエスタ回路が停止され再始動される必要がないように、動的に調整される。制御パラメータは、時間の経過とともに徐々に調整されて、所望のＱｏＳを達成できる。
【００１２】
制御パラメータが動的に調整され得るのみならず、開示されるアプローチは、制御パラメータの値を適応的に調整して所望のＱｏＳを達成するために採用され得る。制御パラメータの値は、システムを起動する前に正確に知られ得ないか、または知られる必要が無い。本明細書において開示される適応的な技術を用いて、システムは、制御パラメータの推定値とともに初期化されることができ、その後、システムは、性能を監視し、性能が所望のサービスの品質プロファイルを満たすか否かを決定し、システムが短時間内に所望のＱｏＳに収束するように制御パラメータの値を調整できる。
【００１３】
ＱｏＳ管理回路（ＱＭ）は、リクエスタ回路およびメモリコントローラからＱｏＳメトリックを周期的に収集することにより、メモリトランザクションを処理することのＱｏＳを監視する。ＱｏＳメトリックは、例えば、リクエスタ回路からの帯域幅および待ち時間の統計と、メモリコントローラからの、帯域幅、使用率および休止時間を含むメトリックとを含む。データベースから読み取られたＱｏＳプロファイルとＱｏＳメトリックとに基づいて、ＱＭは、１つ以上のＱｏＳ制御パラメータの値を調整する。ＱｏＳプロファイルは、メモリコントローラの使用率と、メモリトランザクションの各タイプまたはクラスに対して、最大待ち時間と予想される帯域幅割り当てとを指定できる。
【００１４】
リクエスタ回路と、相互接続回路と、メモリコントローラとは、各々、ＱＭによって調整され得るＱｏＳ制御パラメータを有する。例えば、各リクエスタ回路は、リクエスト間隔パラメータと、未処理のトランザクション限界パラメータとを有する。相互接続回路は、ラウンドロビン重みを有し得る。メモリコントローラは、異なるトラフィッククラスとトラフィックタイプとに対する絶対帯域幅制御と、ポート調停に対するラウンドロビン重みとを有する。
【００１５】
ＱｏＳプロファイルを満たすとともに、ＱＭは、帯域幅使用率対待ち時間の曲線上の最適点で、またはその点よりも下でメモリを動作させるために、ＱｏＳ制御パラメータを動的に調整できる。帯域幅使用率は、使用中の回線の帯域幅の割合である（観測されるデータレート／回路により達成可能な最大データレート）。当業者が認識するように、帯域幅使用率対待ち時間の曲線は、帯域幅使用率とメモリトランザクションの待ち時間との間の関係を記述する。帯域幅使用率が増加するにつれて、メモリトランザクションの待ち時間も増加し、曲線上のいくつかの点を超えると、帯域幅使用率が増加するにつれて待ち時間は指数関数的に増加する。超えると待ち時間が指数関数的に増加する曲線上の点は、「最適点」と呼ばれる。ＱＭは、ＱｏＳメトリックを監視し、最適点かまたはそれよりわずかに下の点における帯域幅使用率でシステムが動作することを保つために、ＱｏＳ制御パラメータ値の１つ以上を調整する。「動作点」は、メモリコントローラによって報告され、ＱＭによって監視される実際の帯域幅使用率である。異なる時点において処理量が異なる結果として動作点が変化し得るため、ＱＭは、ＱｏＳ制御パラメータを調整して、動作点が長期間にわたって最適点よりも上にとどまらないことを保証できる。
【００１６】
図１は、リクエスタ回路からメモリへの間のパス上の複数の点においてＱｏＳ制御パラメータを動的に調整できるＱＭを有する例示的なＳｏＣ１００を示す。システムは、ＤＲＡＭの１つ以上のバンクなどのメモリ１０２、メモリへのアクセスを制御するためのメモリコントローラ１０４、１つ以上のプロセッサ１０６〜１０８などの複数のリクエスタ回路、および／またはプログラマブル論理回路１１０〜１１２において実現される１つ以上のリクエスタ、ならびに、他の構成要素と同様にメモリコントローラにリクエスタ回路を接続する相互接続回路１１４を含む。ＱＭ１１６は、ハードウェアにより実現されるコントローラ、システムにおけるプロセッサ上で他のタスクと共に実行されているタスク、またはシステムにおける専用プロセッサ上で実行されているタスクであり得る。
【００１７】
ＱＭ１１６は、リクエスタ回路１０６〜１０８および１１０〜１１２と、相互接続回路１１４と、メモリコントローラ１０４とに結合される。リクエスタ回路１０６〜１０８および１１０〜１１２と、相互接続回路１１４と、メモリコントローラ１０４とは、それぞれ、監視回路１１８，１２０，１２２，１２４，１２６および１２８を有する。それぞれの監視回路は、監視回路のレジスタにおける構成要素の各々で動作統計を収集して格納する論理回路を含む。例えば、リクエスタ回線において、監視回路の各々は、帯域幅および待ち時間の統計を収集する。観測される帯域幅は、監視回路によって観測される、データがリクエスタからメモリコントローラへ、メモリコントローラからリクエスタへ移動されるレートであり、しばしば、バイト／秒として表される。待ち時間は、メモリトランザクションが発行される時と、リクエストされるデータがリクエスタに返される時との間隔の期間である。観測される帯域幅、および監視回路によって計算される待ち時間は、例えば、移動平均および／または他の統計的な尺度であり得る。
【００１８】
メモリコントローラ１０４の監視回路１２８は、全体のデータレートと、帯域幅使用率と、休止時間とを示すメトリックを収集して格納する論理回路を含み、休止時間は、メモリコントローラがメモリトランザクションを処理していない時間の割合である。
【００１９】
リクエスタ回路１０６〜１０８および１１０〜１１２と、相互接続回路１１４と、メモリコントローラ１０４とは、それぞれの制御回路１３０，１３２，１３４，１３６，１３８および１４０を有し、各制御回路は、制御パラメータの値を格納するための１つ以上のレジスタと、キューに入れられるメモリトランザクションの発行および／または調停を制御する論理回路とを含む。リクエスタ回路における制御パラメータは、リクエスト間隔と未処理のトランザクション限界とを含み、リクエスト間隔の値と未処理のトランザクション限界パラメータの値とは、ＱＭ１１６によって動的に変更され得る。各リクエスタ回路上のリクエスト間隔パラメータは、１つのメモリトランザクションの送信と次のメモリトランザクションの送信との間でリクエスタ回路が待機するであろう期間を指定する。当業者は、リクエスタ回路の帯域幅を調節するための他のアプローチを認識するであろう。例えば、複数のパラメータは、時間の経過にともなう、異なるリクエスト間隔の所望の統計的分布を指定するために用いられ得る。
【００２０】
各リクエスタ回路上の未処理のトランザクション限界パラメータは、リクエスタ回路が許容される不完全なメモリトランザクションの最大数を指定する。リクエスタ回路からの不完全なメモリトランザクションの数が未処理のトランザクション限界に達すると、リクエスタの制御回路は、未処理のメモリトランザクションが完了するまでリクエスタ回路が別のメモリトランザクションを発行することをブロックする。
【００２１】
相互接続回路における制御パラメータは、例えばラウンドロビン重みを含む。ラウンドロビン重みは、ＱＭ１１６によって動的に変更されることができ、リクエスト回路からのトランザクションのキューに関連付けられる重みに比例して、リクエスト回路からのメモリトランザクションの間から選択するための相互接続回路の制御回路１３８によって用いられる。重みは、各キューに割り当てられ、当該重みは、当該キューに割り当てられる帯域幅の量を制御する。
【００２２】
メモリコントローラにおける制御パラメータは、例えば、絶対帯域幅制御とポート調停重みとを含む。メモリコントローラは、複数のポートを有し、各ポートに対して、メモリコントローラは、メモリトランザクションの異なるタイプおよびクラスに対して複数のキューを有し得る。メモリトランザクションの各タイプまたはクラスは、関連した絶対帯域幅パラメータを有してもよく、制御回路１４０は、各ポートにおける異なるキューの絶対帯域幅パラメータに従ってメモリトランザクションを制限する。ポート間において、制御回路は、ポート調停重みを用いて、関連した重みに比例してポートからメモリトランザクションを選択する。
【００２３】
例示的なシステム１００において、装置情報データベース１４２は、システムにおける構成要素に対して所望のＱｏＳメトリックを指定する。リクエスタ回路１０６〜１０８および１１０〜１１２の各々は、そのリクエスタ回路からのメモリトランザクションの最大待ち時間を指定する関連したＱｏＳメトリックを有し得る。例えば、監視回路１１８によって報告される待ち時間メトリックが最大待ち時間よりも大きいとＱＭが決定した場合、ＱＭは、利用可能な帯域幅の大部分をリクエスト回路１０６に割り当てるために、他のリクエスト回路１０８および１１０〜１１２の１つ以上の制御パラメータを調整できる。
【００２４】
装置情報データベースは、各トラフィックタイプまたはトラフィッククラスに対して帯域幅割り当てをさらに指定できる。様々なトラフィックタイプは、例えば、バースト性と均一性とを含み、様々なトラフィッククラスは、高優先度を読み取ることと、等時性を読み取ることと、ベストエフォートを読み取ることと、等時性を書き込むことと、ベストエフォートを書き込むこととを含む。ＱｏＳプロファイルは、異なるトラフィックタイプおよびクラスに対して異なる帯域幅割り当てを指定できる。
【００２５】
リクエスタ回路がメモリコントローラ１０４へメモリリクエストをアクティブに送信している間、ＱＭ１１６は、動作中、リクエスタ回路１０６〜１０８および１１０〜１１１２からそれぞれの、データレートメトリックと待ち時間メトリックとを周期的に読み取る。メモリコントローラがメモリリクエストを処理している間、ＱＭは、データレートメトリックと、帯域幅使用率メトリックと、休止時間メトリックともメモリコントローラから周期的に読み取る。リクエスタ回路がメモリトランザクションをアクティブに送信している間、ＱＭは、それぞれのデータレートメトリックと、待ち時間メトリックと、帯域幅使用率と、休止時間メトリックとが装置情報データベース１４２からのＱｏＳプロファイルのメトリックを満たすか否かを決定する。ＱｏＳプロファイルが満たされない場合、ＱＭは、リクエスタ回路、相互接続回路、および／またはメモリコントローラの１つ以上の制御パラメータの値（複数可）を動的に変更する。
【００２６】
制御パラメータは、実行中に変更されることができ、新しい値（複数可）は、データフローを中断しない方法で有効になる。例えば、リクエスト間隔を変更するために、制御パラメータの新しい値は、ＱＭによってリクエスタ回路の適切なレジスタに書き込まれることができ、リクエスト装置の制御回路は、次のリクエスト間隔の境界上の新しい値を読み取るであろう。同様に、ラウンドロビン重みは、ＱＭによってメモリコントローラのレジスタに書き込まれることができ、メモリコントローラの調停の状態機械は、規定間隔ごとに重みをコピーする。リクエスタ回路と、相互接続回路と、メモリコントローラとは、リクエストを行うという決定またはキューに入れられたトランザクションを調停するという決定が行われるたびに、新しい制御パラメータ値を読み取る。ＱＭおよびリクエスタ回路と、相互接続回路と、メモリコントローラとの間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
【００２７】
図２は、ＱｏＳメトリックを監視し、ＱｏＳ制御パラメータの値を調整する例示的なプロセスのフローチャートを示す。ブロック２０２において、ＱＭ１１６は、リクエスタ回路１０６〜１０８、相互接続回路１１４、およびメモリコントローラ１０４の制御パラメータにおいて初期値を設定する。初期値は、他のシステムの経験に基づいて概算され得る。ＱＭは、時間の経過とともに、制御パラメータの値を、所望のＱｏＳを達成する値に適合させるだろう。
【００２８】
ＱＭは、周期的にＱｏＳを評価し、それに応じて制御パラメータの１つ以上の値（複数可）を調整する。ブロック２０４において、ＱＭは、プログラムされた時間間隔にわたって待機し、ブロック２０６において、ＱＭは、リクエスタ回路から性能メトリックを読み取る。リクエスタ回路の性能メトリックは、それぞれの、データレートと待ち時間とを含み得る。ブロック２０８において、ＱＭは、メモリコントローラから性能メトリックを読み取る。メモリコントローラの性能メトリックは、総計のデータレートと、帯域幅使用率と、休止時間とを含み得る。
【００２９】
ブロック２１０において、ＱＭは、性能メトリックを、装置情報データベースからのＱｏＳメトリックおよび／またはＱｏＳプロファイルと比較する。性能メトリックがＱｏＳメトリックおよび／またはＱｏＳプロファイルを満たす場合、プロセスは、ブロック２０４へ戻り、上述された処理を続ける。性能メトリックがＱｏＳメトリックおよび／またはＱｏＳプロファイルを満たさない場合、ＱＭは、ブロック２１２において１つ以上の制御パラメータの値（複数可）を変更する。例えば、ＱＭは、リクエスト回路の１つ以上のリクエスト間隔および／もしくは未処理のトランザクション限界制御パラメータを変更でき、ならびに／または相互接続回路のラウンドロビン重みを変更でき、ならびに／またはデータレート制限および／もしくはメモリコントローラにより用いられるラウンドロビン重みを変更できる。メモリコントローラの休止時間がしきい値よりも大きい場合、ＱＭは、１つ以上のリクエスタ回路上のリクエスト間隔を短縮できる。
【００３０】
制御パラメータの値を調整することへの例示的なアプローチにおいて、負帰還は、観測されるＱｏＳが段階的な調整を通じて所望のＱｏＳに収束するように値を調整するために用いられる。誤差値は、所望の値と観測値との差であり、ＱＭは、認識される方法により数学的に導出され得る、誤差値の一部を調整値または補正値として用いる。当該調整値または補正値により、制御パラメータの１つ以上の値（複数可）は、調整される。
【００３１】
ＱＭおよびリクエスタ回路と、相互接続回路と、メモリコントローラとの間の制御信号は、遷移中における、制御パラメータの部分的または不整合な値の使用を防ぐ。例えば、ＱＭおよび構成要素は、ハンドシェイクメカニズムを採用して、パラメータ値の変更の開始と完了とを信号で伝えることができる。
【００３２】
図３は、メモリトランザクションを発行する際にリクエスト回路の制御回路によって行われる例示的なプロセスのフローチャートを示す。ブロック３０２における制御回路は、メモリトランザクションを発行することの各イテレーションの開始時に、制御パラメータの値を読み取る。各イテレーションで制御パラメータの値を読み取ると、ＱＭによる制御パラメータへの適応的および動的な変更が認識される。ＱＭとリクエスタ回路の制御回路との間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
【００３３】
ブロック３０４において、制御回路は、メモリコントローラに発行するためのメモリトランザクションをリクエスト回路から受信する。ブロック３０６において、制御回路は、リクエスト間隔パラメータにより指定される時間が経過していない場合に待機する。リクエスト間隔は、１つのメモリトランザクションの発行と次のメモリトランザクションの発行との間に制御回路が待機する時間を指定する。
【００３４】
ブロック３０８において、未処理のトランザクションの数が未処理のトランザクション限界制御パラメータ以上である場合、制御回路は、待機する。制御回路は、未処理のトランザクションの数が未処理のトランザクション限界制御パラメータより少なくなるまで待機する。
【００３５】
制御回路は、ブロック３１０においてメモリトランザクションを送信し、未処理のトランザクションのカウントを増分し、リクエスト間隔タイマーをリセットする。ブロック３１２において、メモリトランザクションの完了に応答して、制御回路は、未処理のトランザクションのカウントを減分し、上述されたブロック３０２へプロセスを戻す。
【００３６】
図４は、メモリトランザクションを調停する際に相互接続回路の制御回路によって行われる例示的なプロセスのフローチャートを示す。相互接続回路は、リクエスタ回路にそれぞれ接続される複数の入力ポートを有する。ブロック４０２において、相互接続は、各入力ポートにおいてトラフィッククラスまたは仮想チャネルによるメモリトランザクションをキューに入れる。
【００３７】
不完全なメモリトランザクションが未処理である間にＱＭがパラメータの値を変更できるため、キューからのメモリトランザクションを調停することの各イテレーションの開始時に、ブロック４０４における相互接続回路は、制御パラメータ（ラウンドロビン重み）の値を読み取る。ＱＭと相互接続回路の制御回路との間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
【００３８】
ブロック４０６において、相互接続回路の制御回路は、トラフィッククラスまたは仮想チャネルに関連付けられるラウンドロビン重みを用いて、各ポートにおいてキューの間を調停する。重み付けラウンドロビンの調停は、キュー、トラフィッククラスおよび／または仮想チャネルに関連付けられる重みに基づいて、キューからメモリトランザクションを選択できる。ブロック４０８において、制御回路は、ポートに関連付けられるラウンドロビン重みに従って、ポートから選択されるトランザクションの間を調停する。メモリコントローラへ送信するためのメモリトランザクションの選択後、相互接続回路の制御回路は、上述されたブロック４０４に戻る。
【００３９】
図５は、メモリトランザクションを調停する際にメモリコントローラの制御回路によって行われる例示的なプロセスのフローチャートを示す。ブロック５０２において、メモリコントローラの制御回路は、メモリトランザクションを調停するための制御パラメータの値を読み取る。ＱＭとメモリコントローラとの間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
【００４０】
メモリコントローラの各入力ポートにおいて、ブロック５０４の制御回路は、トラフィッククラス／仮想チャネル上の絶対帯域幅制限を指定する制御パラメータの値に従って、入ってくるトランザクションを調節する。メモリコントローラは、特定のトラフィッククラス／仮想チャネルのメモリトランザクションが、そのポートにおけるトラフィッククラス／仮想チャネルに対して指定される絶対帯域幅制限を超えることを許可しない。
【００４１】
ブロック５０６において、メモリコントローラの制御回路は、メモリトランザクションを選択する際にポートの間を調停する。ポート調停は、制御パラメータの値に従う、ラウンドロビンまたは重み付けラウンドロビンであり得る。ラウンドロビン重みの値は、複数のポートに渡って帯域幅の所望の割り当てを強制する。選択されるメモリトランザクションは、ブロック５０８においてトラフィッククラス／仮想チャネルによってキューに入れられ得る。ブロック５１０において、制御回路は、キューの間を調停し（ラウンドロビンまたは重み付けラウンドロビン）、トランザクションをメモリに投入するための単一の先入れ先出しキューにトランザクションを配置する。
【００４２】
図６は、開示される回路に従って構成され得る例示的なプログラマブルＩＣ６０２を示す。プログラマブルＩＣは、システムオンチップ（ＳＯＣ）とも呼ばれることがあり、システムオンチップは、プロセッササブシステム６１０とプログラマブル論理サブシステム６３０とを含む。プロセッササブシステム６１０は、ユーザープログラムの実行を介して、ユーザー設計のソフトウェア部分を実現するようにプログラムされ得る。当該プログラムは、構成データストリームの一部として指定され得るか、またはオンチップもしくはオフチップのデータストレージ装置から取得され得る。プロセッササブシステム６１０は、１つ以上のソフトウェアプログラムを実行するための様々な回路６１２，６１４，６１６および６１８を含み得る。回路６１２，６１４，６１６および６１８は、例えば、１つ以上のプロセッサコア、浮動小数点ユニット（ＦＰＵ：floating point unit）、割り込み処理ユニット、オンチップメモリ、メモリキャッシュ、および／またはキャッシュコヒーレント相互接続を含み得る。
【００４３】
プログラマブルＩＣ６０２のプログラマブル論理サブシステム６３０は、ユーザー設計のハードウェア部分を実現するようにプログラムされ得る。例えば、プログラマブル論理サブシステムは、多数のプログラマブルリソース６３２を含んでもよく、プログラマブルリソース６３２は、構成データストリームにおいて指定される回路のセットを実現するようにプログラムされ得る。プログラマブルリソース６３２は、例えば、プログラマブル相互接続回路と、プログラマブル論理回路と、構成メモリセルとを含む。プログラマブル論理回路は、例えば、関数発生器、レジスタ、算術論理などを含み得るプログラマブル要素を用いて、ユーザー設計の論理を実現する。プログラマブル相互接続回路は、プログラマブル相互接続点（ＰＩＰ：programmable interconnect point）によって相互接続される、変化する長さの多数の相互接続ラインを含み得る。
【００４４】
プログラマブルリソース６３２は、構成メモリセルに構成データストリームをロードすることによりプログラムされてもよく、構成データストリームは、プログラマブル相互接続回路とプログラマブル論理回路とがどのように構成されているかを定義する。例えば、構成可能なラッチに対する構成メモリセルを第１の値に設定すると、構成可能なラッチがシングルエッジで駆動されるラッチとして動作するように指示できる。構成メモリセルを第２の値に設定すると、構成可能なラッチがダブルエッジで駆動されるラッチとして動作するように指示できる。そのとき、個々のメモリセルの集合的な状態は、プログラマブルリソース６３２の機能を決定する。構成データは、メモリから（例えば、外部ＰＲＯＭから）読み取られるか、または外部装置によってプログラマブルＩＣ６０２に書き込まれることができる。いくつかの実施形態において、プログラマブル論理サブシステム６３０に含まれる構成コントローラ６３４は、プログラマブルＩＣの電源投入に応答して、プログラマブルＩＣに結合される不揮発性メモリから構成データを取得することにより、および構成メモリセルに構成データをロードすることにより、プログラマブルリソースをプログラムする。いくつかの他の実施形態において、構成データは、プロセッササブシステム６１０によって実行される起動プロセスにより、構成メモリセルにロードされ得る。
【００４５】
プログラマブルＩＣ６０２は、プロセッササブシステム６１０と、プログラマブル論理サブシステム６３０内に実現される回路とを相互接続するための様々な回路を含み得る。この例において、プログラマブルＩＣ６０２は、プロセッササブシステム６１０およびプログラマブル論理サブシステム６３０の様々なデータポート間でデータ信号をルーティングできるコアスイッチ６２６を含む。コアスイッチ６２６は、プログラマブル論理サブシステム６３０およびプロセッササブシステム６１０のいずれかと、内部データバスなどのプログラマブルＩＣの様々な他の回路との間でもデータ信号をルーティングし得る。代替的または追加的に、プロセッササブシステム６１０は、コアスイッチ６２６をバイパスして、プログラマブル論理サブシステムに直接的に接続するためのインターフェースを含み得る。そのようなインターフェースは、例えば、ＡＲＭにより公開されているＡＭＢＡ ＡＸＩプロトコル仕様（ＡＸＩ）を用いて実現され得る。
【００４６】
いくつかの実施形態において、プロセッササブシステム６１０およびプログラマブル論理サブシステム６３０は、メモリコントローラ６２１を介してオンチップメモリ６２２またはオフチップメモリ（図示しない）のメモリ位置への読み書きもし得る。メモリコントローラ６２１は、１つ以上の異なるタイプのメモリ回路と通信するように実現され得る。当該１つ以上の異なるタイプのメモリ回路は、１６ビット、３２ビット、ＥＣＣ付き１６ビットなどであろうとなかろうと、デュアルデータレート（ＤＤＲ：Dual Data Rate）２、ＤＤＲ３、および低電力（ＬＰ：Low Power）ＤＤＲ２タイプのメモリを含むがこれらに限定されない。メモリコントローラ６２１が通信できる異なるメモリタイプのリストは、例示のみの目的のために提供されており、限定としてまたは網羅的であることを意図していない。図６に示されるように、プログラマブルＩＣ６０２は、メモリ管理ユニット６２０と変換ルックアサイドバッファ６２４とを含んでもよく、サブシステム６１０および６３０によって用いられる仮想メモリアドレスを、メモリコントローラ６２１によって用いられる物理メモリアドレスに変換して、特定のメモリ位置にアクセスする。
【００４７】
プログラマブルＩＣは、外部回路とのデータの通信のための入力／出力（Ｉ／Ｏ）サブシステム６５０を含み得る。Ｉ／Ｏサブシステム６５０は、例えばフラッシュメモリタイプのＩ／Ｏ装置、高性能Ｉ／Ｏ装置、低性能インターフェース、デバッグＩ／Ｏ装置、および／若しくはＲＡＭ Ｉ／Ｏ装置を含む、様々なタイプのＩ／Ｏ装置またはインターフェースを含み得る。
【００４８】
Ｉ／Ｏサブシステム６５０は、６６０Ａおよび６６０Ｂとして示される１つ以上のフラッシュメモリインターフェース６６０を含み得る。例えば、フラッシュメモリインターフェース６６０の１つ以上は、４ビット通信のために構成されているクアッドシリアルペリフェラルインターフェース（ＱＳＰＩ：Quad-Serial Peripheral Interface）として実現され得る。フラッシュメモリインターフェース６６０の１つ以上は、並列８ビットＮＯＲ／ＳＲＡＭタイプのインターフェースとして実現され得る。フラッシュメモリインターフェース６６０の１つ以上は、８ビットおよび／または１６ビット通信のために構成されているＮＡＮＤインターフェースとして実現され得る。説明される特定のインターフェースは、限定ではなく例示の目的のために提供されることを理解されるべきである。異なるビット幅を有する他のインターフェースは、用いられ得る。
【００４９】
Ｉ／Ｏサブシステム６５０は、フラッシュメモリインターフェース６６０よりも高いレベルの性能を提供する１つ以上のインターフェース６６２を含み得る。インターフェース６６２Ａ〜６６２Ｃの各々は、ＤＭＡコントローラ６６４Ａ〜６６４Ｃにそれぞれ結合され得る。例えば、インターフェース６６２の１つ以上は、ユニバーサルシリアルバス（ＵＳＢ：Universal Serial Bus）タイプのインターフェースとして実現され得る。インターフェース６６２の１つ以上は、ギガビット・イーサネット（登録商標）タイプのインターフェースとして実現され得る。インターフェース６６２の１つ以上は、セキュアデジタル（ＳＤ：Secure Digital）タイプのインターフェースとして実現され得る。
【００５０】
Ｉ／Ｏサブシステム６５０は、インターフェース６６２よりも低いレベルの性能を提供するインターフェース６６６Ａ〜６６６Ｄなどの１つ以上のインターフェース６６６も含み得る。例えば、インターフェース６６６の１つ以上は、汎用入出力（ＧＰＩＯ：General Purpose I/O）タイプのインターフェースとして実現され得る。インターフェース６６６の１つ以上は、ユニバーサル非同期受信機／送信機（ＵＡＲＴ：Universal Asynchronous Receiver/Transmitter）タイプのインターフェースとして実現され得る。インターフェース６６６の１つ以上は、シリアルペリフェラルインターフェース（ＳＰＩ：Serial Peripheral Interface）バスタイプのインターフェースの形態において実現され得る。インターフェース６６６の１つ以上は、コントローラーエリアネットワーク（ＣＡＮ：Controller-Area-Network）タイプのインターフェースおよび／またはｌ２Ｃタイプのインターフェースの形態において実現され得る。インターフェース６６６の１つ以上は、タイマータイプのインターフェースの形態においても実現され得る。
【００５１】
Ｉ／Ｏサブシステム６５０は、プロセッサＪＴＡＧ（ＰＪＴＡＧ：processor JTAG）インターフェース６６８Ａおよびトレースインターフェース６６８Ｂなどの１つ以上のデバッグインターフェース６６８を含み得る。ＰＪＴＡＧインターフェース６６８Ａは、プログラマブルＩＣ６０２に対する外部のデバッグインターフェースを提供できる。トレースインターフェース６６８Ｂは、プロセッササブシステム６１０またはプログラマブル論理サブシステム６３０からデバッグ、例えばトレース、情報を受信するためのポートを提供できる。
【００５２】
示されるように、インターフェース６６０，６６２，６６６および６６８の各々は、マルチプレクサ６７０に結合され得る。マルチプレクサ６７０は、プログラマブルＩＣ６０２の外部ピンに、例えば、プログラマブルＩＣ６０２が配備されるパッケージのボールに直接的にルーティングまたは結合され得る複数の出力を提供する。例えば、プログラマブルＩＣ６０２のＩ／Ｏピンは、インターフェース６６０，６６２，６６６および６６８の間で共有され得る。ユーザーは、構成データストリームを介してマルチプレクサ６７０を構成して、インターフェース６６０〜６６８のいずれが用いられるかを選択でき、したがって、インターフェース６６０〜６６８のいずれがマルチプレクサ６７０を介してプログラマブルＩＣ６０２のＩ／Ｏピンに結合されるかを選択できる。Ｉ／Ｏサブシステム６５０は、プログラマブル論理サブシステムのプログラマブル論理回路にインターフェース６６２〜６６８を接続するためにファブリックマルチプレクサＩ／Ｏ（ＦＭＩＯ：fabric multiplexer I/O）インターフェース（図示せず）も含み得る。追加的にまたは代替的に、プログラマブル論理サブシステム６３０は、プログラマブル論理回路内に１つ以上のＩ／Ｏ回路を実現するように構成され得る。いくつかの実施形態において、プログラマブルＩＣ６０２は、電力および／または安全管理のための様々な回路を有するサブシステム６４０も含み得る。例えば、サブシステム６４０は、プログラマブルＩＣ６０２の様々なサブシステムに電力を供給するために用いられる１つ以上の電圧ドメインを監視して維持するように構成されている電力管理ユニット６４６を含み得る。いくつかの実施形態において、電力管理ユニット６４６は、休止時に、個々のサブシステムの電力を無効にして、使用中にサブシステムへの電力を無効にすることなく、電力消費を削減し得る。
【００５３】
サブシステム６４０は、正しい動作を保証するためにサブシステムの状態を監視するための安全回路も含み得る。例えば、サブシステム６４０は、（例えば、状態レジスタ６４４において示されるように）様々なサブシステムの状態を監視するように構成されている１つ以上の実時間プロセッサ６４２を含み得る。実時間プロセッサ６４２は、エラーを検出することに応答して多数のタスクを行うように構成され得る。例えば、いくつかのエラーに対して、実時間プロセッサ６４２は、エラーを検出することに応答してアラートを生成し得る。別の例として、実時間プロセッサ６４２は、サブシステムをリセットして、動作を訂正するためにサブシステムを復元しようと試み得る。サブシステム６４０は、様々なサブシステムを相互接続するために用いられ得るスイッチネットワーク６４８を含む。例えば、スイッチネットワーク６４８は、Ｉ／Ｏサブシステム６５０の様々なインターフェースに様々なサブシステム６１０，６３０および６４０を接続するように構成され得る。いくつかの応用において、スイッチネットワーク６４８は、監視されるサブシステムから実時間プロセッサ６４２を隔離するためにも用いられ得る。このような隔離は、他のサブシステムにおいて発生するエラーにより実時間プロセッサ６４２が影響されないことを保証するために、特定の応用規格（例えば、ＩＥＣ−６１５０８ ＳＩＬ３またはＩＳＯ−２６２６２規格）により必要とされ得る。
【００５４】
いくつかの場合において個々の図で態様および特徴が説明され得るが、１つの図からの特徴は、組み合わせが明示的に示されていないか、または組み合わせとして明示的に説明されていなくても、別の図の特徴と組み合わされ得ることが理解されるであろう。
【００５５】
一例において、メモリトランザクションをサービスする際にサービスの品質を制御する方法が提供される。そのような方法は、システムオンチップ（ＳＯＣ）上に配備されるサービスの品質管理（ＱＭ）回路が、ＳＯＣ上に配備される複数のリクエスタ回路から、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がＳＯＣ上のメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、周期的に読み取ることと；メモリコントローラがメモリトランザクションを処理している間に、ＱＭ回路がメモリコントローラから第２のデータレートメトリックを周期的に読み取ることと；複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、ＱＭ回路が、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、ＱＭ回路が、複数のリクエスタ回路およびメモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更することとを含み得る。
【００５６】
いくつかのそのような方法は、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更することをさらに含み得る。
【００５７】
いくつかのそのような方法は、メモリコントローラがメモリトランザクションを処理しているときに、メモリコントローラから休止時間メトリックを周期的に読み取ることと；休止時間メトリックがサービスの品質メトリックを満たさないと決定することとをさらに含み得る。
【００５８】
いくつかのそのような方法において、上記決定することは、第２のデータレートメトリックとメモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定することと；使用率メトリックがサービスの品質メトリックを満たさないと決定することとを含む。
【００５９】
いくつかのそのような方法において、上記周期的に読み取ることは、ＱＭ回路がメモリコントローラの帯域幅使用率メトリックを周期的に読み取ることを含み；上記変更することは、帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、複数のリクエスタ回路とメモリコントローラとの１つ以上の制御パラメータの１つ以上のそれぞれの値を変更することを含み得る。
【００６０】
いくつかのそのような方法において、上記変更することは、複数のリクエスタ回路のうちの１つ以上に関連付けられる１つ以上のリクエスト間隔の１つ以上のそれぞれの値を変更することを含み得る。
【００６１】
いくつかのそのような方法において、上記変更することは、複数のリクエスタ回路のうちの１つ以上に関連付けられる１つ以上の未処理のトランザクション限界の１つ以上のそれぞれの値を変更することを含み得る。
【００６２】
いくつかのそのような方法において、上記変更することは、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路上の１つ以上のポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上のそれぞれの値を変更することを含み得る。
【００６３】
いくつかのそのような方法において、上記変更することは、メモリコントローラの帯域幅制御の値を変更することを含み得る。
【００６４】
いくつかのそのような方法において、上記変更することは、メモリコントローラのポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上の値を変更することを含み得る。
【００６５】
別の例において、システムが提供され得る。そのようなシステムは、メモリコントローラと；メモリコントローラに結合され、メモリアクセストランザクションをメモリコントローラへ送信するように構成されている複数のリクエスタ回路と；メモリコントローラとリクエスタ回路とに結合されるサービスの品質管理（ＱＭ）回路とを含んでもよく、ＱＭ回路は、複数のリクエスタ回路からそれぞれの第１データレートメトリックとそれぞれの待ち時間メトリックとを、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、周期的に読み取り（２０６）；メモリコントローラがメモリトランザクションを処理している間に、メモリコントローラから第２のデータレートメトリックを周期的に読み取り（２０８）；複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、それぞれの第１のデータレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとが、サービスの品質メトリックを満たさないと決定することに応答して、複数のリクエスタ回路およびメモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を動的に変更するように構成されている。
【００６６】
いくつかのそのようなシステムにおいて、ＱＭ回路は、それぞれの第１データレートメトリックと、それぞれの待ち時間メトリックと、第２のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更するようにさらに構成されている。
【００６７】
いくつかのそのようなシステムにおいて、ＱＭ回路は、メモリコントローラがメモリトランザクションを処理しているときに、メモリコントローラから休止時間メトリックを周期的に読み取り；休止時間メトリックがサービスの品質メトリックを満たさないと決定するようにさらに構成されている。
【００６８】
いくつかのそのようなシステムにおいて、ＱＭ回路は、第２のデータレートメトリックとメモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定し；使用率メトリックがサービスの品質メトリックを満たさないと決定するようにさらに構成されている。
【００６９】
いくつかのそのようなシステムにおいて、ＱＭ回路は、メモリコントローラの帯域幅使用率メトリックを周期的に読み取り；帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、複数のリクエスタ回路およびメモリコントローラの１つ以上の制御パラメータの１つ以上のそれぞれの値を変更するようにさらに構成され得る。
【００７０】
いくつかのそのようなシステムにおいて、ＱＭ回路は、複数のリクエスタ回路の１つ以上に関連付けられる１つ以上のリクエスト間隔の１つ以上のそれぞれの値を変更するようにさらに構成され得る。
【００７１】
いくつかのそのようなシステムにおいて、ＱＭ回路は、複数のリクエスタ回路の１つ以上に関連付けられる１つ以上の未処理のトランザクション限界の１つ以上のそれぞれの値を変更するようにさらに構成され得る。
【００７２】
いくつかのそのようなシステムにおいて、ＱＭ回路は、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路上の１つ以上のポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上のそれぞれの値を変更するようにさらに構成され得る。
【００７３】
いくつかのそのようなシステムにおいて、ＱＭ回路は、メモリコントローラの帯域幅制御の値を変更するようにさらに構成され得る。
【００７４】
いくつかのそのようなシステムにおいて、ＱＭ回路は、メモリコントローラのポートに関連付けられる１つ以上のラウンドロビン重みの１つ以上の値を変更するようにさらに構成され得る。
【００７５】
開示される方法およびシステムは、メモリトラフィックを処理する際にサービスの品質を管理するための様々なシステムに適用可能であると考えられる。他の態様および特徴は、本明細書の考慮から当業者に明らかであろう。当該方法および当該システムは、ソフトウェアを実行するように構成されている１つ以上のプロセッサ、特定用途向け集積回路（ＡＳＩＣ:application specific integrated circuit）、またはプログラマブル論理装置上の論理回路として実現され得る。本明細書および図面は、例としてのみ考慮されることが意図されており、本発明の真の範囲は、以下の請求の範囲によって示される。
【図１】
2020530621.tif 000003
【図２】
2020530621.tif 000004
【図３】
2020530621.tif 000005
【図４】
2020530621.tif 000006
【図５】
2020530621.tif 000007
【図６】
2020530621.tif 000008
【国際調査報告】
2020530621.tif 000009
2020530621.tif 000010
2020530621.tif 000011