JP7167130B2 - 適応的なサービスの品質の制御回路 - Google Patents

適応的なサービスの品質の制御回路 Download PDF

Info

Publication number
JP7167130B2
JP7167130B2 JP2020506921A JP2020506921A JP7167130B2 JP 7167130 B2 JP7167130 B2 JP 7167130B2 JP 2020506921 A JP2020506921 A JP 2020506921A JP 2020506921 A JP2020506921 A JP 2020506921A JP 7167130 B2 JP7167130 B2 JP 7167130B2
Authority
JP
Japan
Prior art keywords
metric
memory controller
circuit
memory
circuits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020506921A
Other languages
English (en)
Other versions
JP2020530621A (ja
Inventor
アーベル,イガル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2020530621A publication Critical patent/JP2020530621A/ja
Application granted granted Critical
Publication of JP7167130B2 publication Critical patent/JP7167130B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Logic Circuits (AREA)

Description

技術分野
本開示は、一般に、メモリトランザクションを処理する際にサービスの品質を管理することに関する。
背景
システムオンチップ(SOC:system-on-chip)は、しばしば、メモリ、1つ以上のプロセッサ、および入力/出力(I/O:input/output)回路などの構成要素を含み、これら全てが単一の集積回路ダイ上で製造される。SOCは、フィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)において見出されるようなプログラマブル論理回路も含み得る。SOCは、メモリトラフィックを調節してサービスの品質(QoS:quality of service)を制御するための様々な構成パラメータを提供する。
メモリリソースにアクセスする際におけるサービスの品質(QoS)は、しばしば、待ち時間と帯域幅使用率との観点から測定される。待ち時間は、メモリトランザクションがリクエスタにより発行されるときから、リクエスタが、読み取りトランザクションからのデータ、または書き込みトランザクションが完了したという受領通知を受信するときまでの時間である。メモリ帯域幅は、1つ以上のリクエスタにより、データがメモリから読み込まれ得るか、もしくはメモリに書き込まれ得る理論的な、または公表されるレート(例えばバイト/秒)であり、帯域幅使用率は、ユーザーのアプリケーションを実行するシステムにおいて投入されるメモリトランザクションを処理する際に消費されるメモリ帯域幅の割合である。
複数のリクエスタ間のSOCにおけるメモリ帯域幅の割り当てとトラフィックタイプとを効率的に調節することは、SOCアーキテクチャの複雑性および可変性と、SOC上に配備され得る膨大な数の異なるアプリケーションとのために、挑戦的であり得る。加えて、性能に影響し得る単一の制御パラメータを超える多くの要因があるため、多くの制御パラメータの個々の1つに関係のあるメモリシステムの性能は、しばしば非線形である。
概要
メモリトランザクションをサービスする際にサービスの品質を制御する、開示される方法は、システムオンチップ(SOC)上に配備されるサービスの品質管理(QM:quality of service management)回路が、SOC上に同様に配備される複数のリクエスタ回路から、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がSOC上のメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取ることを含む。QM回路は、メモリコントローラがメモリトランザクションを処理している間、メモリコントローラから第2のデータレートメトリックも周期的に読み取る。QM回路は、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとが、サービスの品質メトリックを満たすか否かを決定する。それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、QM回路は、複数のリクエスタ回路およびメモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更する。
開示されるシステムは、メモリコントローラと、複数のリクエスタ回路と、サービスの品質管理(QM)回路とを含む。複数のリクエスタ回路は、メモリコントローラに結合され、メモリアクセストランザクションをメモリコントローラへ送信するように構成されている。QM回路は、メモリコントローラとリクエスタ回路とに結合されている。QM回路は、複数のリクエスタ回路から、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取るように構成されている。QM回路は、メモリコントローラがメモリトランザクションを処理している間、メモリコントローラから第2のデータレートメトリックを周期的に読み取るようにさらに構成されている。QM回路は、複数のリクエスタ回路がメモリトランザクションをメモリコントローラへアクティブに送信している間に、それぞれの第1データレートメトリックと、それぞれの待ち時間メトリックと、第2データレートメトリックとが、サービスの品質メトリックを満たすか否かを決定するように構成されている。それぞれの第1データレートメトリックと、それぞれの待ち時間メトリックと、第2データレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、QM回路は、複数のリクエスタ回路およびメモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更するように構成されている。
その他の特徴は、以下の、詳細な説明および請求の範囲の考慮から認識されるであろう。
図面の簡単な説明
方法およびシステムの様々な態様および特徴は、以下の詳細な説明の検討に際し、および図面の参照に際し明らかになるであろう。
リクエスタ回路からメモリへの間のパス上の複数の点においてQoS制御パラメータを動的に調整できるQMを有する例示的なSoCを示す図である。 QoSメトリックを監視してQoS制御パラメータの値を調整する例示的なプロセスのフローチャートを示す図である。 メモリトランザクションを発行する際にリクエスト回路の制御回路によって行われる例示的なプロセスのフローチャートを示す図である。 メモリトランザクションを調停する際に相互接続回路の制御回路によって行われる例示的なプロセスのフローチャートを示す図である。 メモリトランザクションを調停する際にメモリコントローラの制御回路によって行われる例示的なプロセスのフローチャートを示す図である。 開示される回路に従って構成され得る例示的なプログラマブルICを示す図である。
詳細な説明
以下の説明において、本明細書において提示される特定の例を説明するために、多数の特定の詳細が示される。しかしながら、当業者にとって、1つ以上の他の例および/またはこれらの例の変形が、以下に与えられる全ての特定の詳細なしで実践され得ることは、明らかであるはずである。他の例において、よく知られている特徴は、本明細書の例の説明を不明瞭にしないために、詳細に説明されていない。説明の簡易化のために、同じ要素、または同じ要素の追加の例を指すために、異なる図において同じ参照番号が用いられ得る。
開示される方法および回路は、QoSメトリックを監視することにより、およびメモリトランザクションを発行するリクエスタ回路とメモリへのアクセスを調停するメモリコントローラとの間のパスの様々な点において制御パラメータを適応的および動的に調整することにより、メモリトランザクションを処理する際にサービスの品質(QoS)を管理するためのアプローチを提供する。制御パラメータは、制御パラメータを変更して制御パラメータを有効にさせるためにリクエスタ回路が停止され再始動される必要がないように、動的に調整される。制御パラメータは、時間の経過とともに徐々に調整されて、所望のQoSを達成できる。
制御パラメータが動的に調整され得るのみならず、開示されるアプローチは、制御パラメータの値を適応的に調整して所望のQoSを達成するために採用され得る。制御パラメータの値は、システムを起動する前に正確に知られ得ないか、または知られる必要が無い。本明細書において開示される適応的な技術を用いて、システムは、制御パラメータの推定値とともに初期化されることができ、その後、システムは、性能を監視し、性能が所望のサービスの品質プロファイルを満たすか否かを決定し、システムが短時間内に所望のQoSに収束するように制御パラメータの値を調整できる。
QoS管理回路(QM)は、リクエスタ回路およびメモリコントローラからQoSメトリックを周期的に収集することにより、メモリトランザクションを処理することのQoSを監視する。QoSメトリックは、例えば、リクエスタ回路からの帯域幅および待ち時間の統計と、メモリコントローラからの、帯域幅、使用率および休止時間を含むメトリックとを含む。データベースから読み取られたQoSプロファイルとQoSメトリックとに基づいて、QMは、1つ以上のQoS制御パラメータの値を調整する。QoSプロファイルは、メモリコントローラの使用率と、メモリトランザクションの各タイプまたはクラスに対して、最大待ち時間と予想される帯域幅割り当てとを指定できる。
リクエスタ回路と、相互接続回路と、メモリコントローラとは、各々、QMによって調整され得るQoS制御パラメータを有する。例えば、各リクエスタ回路は、リクエスト間隔パラメータと、未処理のトランザクション限界パラメータとを有する。相互接続回路は、ラウンドロビン重みを有し得る。メモリコントローラは、異なるトラフィッククラスとトラフィックタイプとに対する絶対帯域幅制御と、ポート調停に対するラウンドロビン重みとを有する。
QoSプロファイルを満たすとともに、QMは、帯域幅使用率対待ち時間の曲線上の最適点で、またはその点よりも下でメモリを動作させるために、QoS制御パラメータを動的に調整できる。帯域幅使用率は、使用中の回線の帯域幅の割合である(観測されるデータレート/回路により達成可能な最大データレート)。当業者が認識するように、帯域幅使用率対待ち時間の曲線は、帯域幅使用率とメモリトランザクションの待ち時間との間の関係を記述する。帯域幅使用率が増加するにつれて、メモリトランザクションの待ち時間も増加し、曲線上のいくつかの点を超えると、帯域幅使用率が増加するにつれて待ち時間は指数関数的に増加する。超えると待ち時間が指数関数的に増加する曲線上の点は、「最適点」と呼ばれる。QMは、QoSメトリックを監視し、最適点かまたはそれよりわずかに下の点における帯域幅使用率でシステムが動作することを保つために、QoS制御パラメータ値の1つ以上を調整する。「動作点」は、メモリコントローラによって報告され、QMによって監視される実際の帯域幅使用率である。異なる時点において処理量が異なる結果として動作点が変化し得るため、QMは、QoS制御パラメータを調整して、動作点が長期間にわたって最適点よりも上にとどまらないことを保証できる。
図1は、リクエスタ回路からメモリへの間のパス上の複数の点においてQoS制御パラメータを動的に調整できるQMを有する例示的なSoC100を示す。システムは、DRAMの1つ以上のバンクなどのメモリ102、メモリへのアクセスを制御するためのメモリコントローラ104、1つ以上のプロセッサ106~108などの複数のリクエスタ回路、および/またはプログラマブル論理回路110~112において実現される1つ以上のリクエスタ、ならびに、他の構成要素と同様にメモリコントローラにリクエスタ回路を接続する相互接続回路114を含む。QM116は、ハードウェアにより実現されるコントローラ、システムにおけるプロセッサ上で他のタスクと共に実行されているタスク、またはシステムにおける専用プロセッサ上で実行されているタスクであり得る。
QM116は、リクエスタ回路106~108および110~112と、相互接続回路114と、メモリコントローラ104とに結合される。リクエスタ回路106~108および110~112と、相互接続回路114と、メモリコントローラ104とは、それぞれ、監視回路118,120,122,124,126および128を有する。それぞれの監視回路は、監視回路のレジスタにおける構成要素の各々で動作統計を収集して格納する論理回路を含む。例えば、リクエスタ回線において、監視回路の各々は、帯域幅および待ち時間の統計を収集する。観測される帯域幅は、監視回路によって観測される、データがリクエスタからメモリコントローラへ、メモリコントローラからリクエスタへ移動されるレートであり、しばしば、バイト/秒として表される。待ち時間は、メモリトランザクションが発行される時と、リクエストされるデータがリクエスタに返される時との間隔の期間である。観測される帯域幅、および監視回路によって計算される待ち時間は、例えば、移動平均および/または他の統計的な尺度であり得る。
メモリコントローラ104の監視回路128は、全体のデータレートと、帯域幅使用率と、休止時間とを示すメトリックを収集して格納する論理回路を含み、休止時間は、メモリコントローラがメモリトランザクションを処理していない時間の割合である。
リクエスタ回路106~108および110~112と、相互接続回路114と、メモリコントローラ104とは、それぞれの制御回路130,132,134,136,138および140を有し、各制御回路は、制御パラメータの値を格納するための1つ以上のレジスタと、キューに入れられるメモリトランザクションの発行および/または調停を制御する論理回路とを含む。リクエスタ回路における制御パラメータは、リクエスト間隔と未処理のトランザクション限界とを含み、リクエスト間隔の値と未処理のトランザクション限界パラメータの値とは、QM116によって動的に変更され得る。各リクエスタ回路上のリクエスト間隔パラメータは、1つのメモリトランザクションの送信と次のメモリトランザクションの送信との間でリクエスタ回路が待機するであろう期間を指定する。当業者は、リクエスタ回路の帯域幅を調節するための他のアプローチを認識するであろう。例えば、複数のパラメータは、時間の経過にともなう、異なるリクエスト間隔の所望の統計的分布を指定するために用いられ得る。
各リクエスタ回路上の未処理のトランザクション限界パラメータは、リクエスタ回路が許容される不完全なメモリトランザクションの最大数を指定する。リクエスタ回路からの不完全なメモリトランザクションの数が未処理のトランザクション限界に達すると、リクエスタの制御回路は、未処理のメモリトランザクションが完了するまでリクエスタ回路が別のメモリトランザクションを発行することをブロックする。
相互接続回路における制御パラメータは、例えばラウンドロビン重みを含む。ラウンドロビン重みは、QM116によって動的に変更されることができ、リクエスト回路からのトランザクションのキューに関連付けられる重みに比例して、リクエスト回路からのメモリトランザクションの間から選択するための相互接続回路の制御回路138によって用いられる。重みは、各キューに割り当てられ、当該重みは、当該キューに割り当てられる帯域幅の量を制御する。
メモリコントローラにおける制御パラメータは、例えば、絶対帯域幅制御とポート調停重みとを含む。メモリコントローラは、複数のポートを有し、各ポートに対して、メモリコントローラは、メモリトランザクションの異なるタイプおよびクラスに対して複数のキューを有し得る。メモリトランザクションの各タイプまたはクラスは、関連した絶対帯域幅パラメータを有してもよく、制御回路140は、各ポートにおける異なるキューの絶対帯域幅パラメータに従ってメモリトランザクションを制限する。ポート間において、制御回路は、ポート調停重みを用いて、関連した重みに比例してポートからメモリトランザクションを選択する。
例示的なシステム100において、装置情報データベース142は、システムにおける構成要素に対して所望のQoSメトリックを指定する。リクエスタ回路106~108および110~112の各々は、そのリクエスタ回路からのメモリトランザクションの最大待ち時間を指定する関連したQoSメトリックを有し得る。例えば、監視回路118によって報告される待ち時間メトリックが最大待ち時間よりも大きいとQMが決定した場合、QMは、利用可能な帯域幅の大部分をリクエスト回路106に割り当てるために、他のリクエスト回路108および110~112の1つ以上の制御パラメータを調整できる。
装置情報データベースは、各トラフィックタイプまたはトラフィッククラスに対して帯域幅割り当てをさらに指定できる。様々なトラフィックタイプは、例えば、バースト性と均一性とを含み、様々なトラフィッククラスは、高優先度を読み取ることと、等時性を読み取ることと、ベストエフォートを読み取ることと、等時性を書き込むことと、ベストエフォートを書き込むこととを含む。QoSプロファイルは、異なるトラフィックタイプおよびクラスに対して異なる帯域幅割り当てを指定できる。
リクエスタ回路がメモリコントローラ104へメモリリクエストをアクティブに送信している間、QM116は、動作中、リクエスタ回路106~108および110~1112からそれぞれの、データレートメトリックと待ち時間メトリックとを周期的に読み取る。メモリコントローラがメモリリクエストを処理している間、QMは、データレートメトリックと、帯域幅使用率メトリックと、休止時間メトリックともメモリコントローラから周期的に読み取る。リクエスタ回路がメモリトランザクションをアクティブに送信している間、QMは、それぞれのデータレートメトリックと、待ち時間メトリックと、帯域幅使用率と、休止時間メトリックとが装置情報データベース142からのQoSプロファイルのメトリックを満たすか否かを決定する。QoSプロファイルが満たされない場合、QMは、リクエスタ回路、相互接続回路、および/またはメモリコントローラの1つ以上の制御パラメータの値(複数可)を動的に変更する。
制御パラメータは、実行中に変更されることができ、新しい値(複数可)は、データフローを中断しない方法で有効になる。例えば、リクエスト間隔を変更するために、制御パラメータの新しい値は、QMによってリクエスタ回路の適切なレジスタに書き込まれることができ、リクエスト装置の制御回路は、次のリクエスト間隔の境界上の新しい値を読み取るであろう。同様に、ラウンドロビン重みは、QMによってメモリコントローラのレジスタに書き込まれることができ、メモリコントローラの調停の状態機械は、規定間隔ごとに重みをコピーする。リクエスタ回路と、相互接続回路と、メモリコントローラとは、リクエストを行うという決定またはキューに入れられたトランザクションを調停するという決定が行われるたびに、新しい制御パラメータ値を読み取る。QMおよびリクエスタ回路と、相互接続回路と、メモリコントローラとの間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
図2は、QoSメトリックを監視し、QoS制御パラメータの値を調整する例示的なプロセスのフローチャートを示す。ブロック202において、QM116は、リクエスタ回路106~108、相互接続回路114、およびメモリコントローラ104の制御パラメータにおいて初期値を設定する。初期値は、他のシステムの経験に基づいて概算され得る。QMは、時間の経過とともに、制御パラメータの値を、所望のQoSを達成する値に適合させるだろう。
QMは、周期的にQoSを評価し、それに応じて制御パラメータの1つ以上の値(複数可)を調整する。ブロック204において、QMは、プログラムされた時間間隔にわたって待機し、ブロック206において、QMは、リクエスタ回路から性能メトリックを読み取る。リクエスタ回路の性能メトリックは、それぞれの、データレートと待ち時間とを含み得る。ブロック208において、QMは、メモリコントローラから性能メトリックを読み取る。メモリコントローラの性能メトリックは、総計のデータレートと、帯域幅使用率と、休止時間とを含み得る。
ブロック210において、QMは、性能メトリックを、装置情報データベースからのQoSメトリックおよび/またはQoSプロファイルと比較する。性能メトリックがQoSメトリックおよび/またはQoSプロファイルを満たす場合、プロセスは、ブロック204へ戻り、上述された処理を続ける。性能メトリックがQoSメトリックおよび/またはQoSプロファイルを満たさない場合、QMは、ブロック212において1つ以上の制御パラメータの値(複数可)を変更する。例えば、QMは、リクエスト回路の1つ以上のリクエスト間隔および/もしくは未処理のトランザクション限界制御パラメータを変更でき、ならびに/または相互接続回路のラウンドロビン重みを変更でき、ならびに/またはデータレート制限および/もしくはメモリコントローラにより用いられるラウンドロビン重みを変更できる。メモリコントローラの休止時間がしきい値よりも大きい場合、QMは、1つ以上のリクエスタ回路上のリクエスト間隔を短縮できる。
制御パラメータの値を調整することへの例示的なアプローチにおいて、負帰還は、観測されるQoSが段階的な調整を通じて所望のQoSに収束するように値を調整するために用いられる。誤差値は、所望の値と観測値との差であり、QMは、認識される方法により数学的に導出され得る、誤差値の一部を調整値または補正値として用いる。当該調整値または補正値により、制御パラメータの1つ以上の値(複数可)は、調整される。
QMおよびリクエスタ回路と、相互接続回路と、メモリコントローラとの間の制御信号は、遷移中における、制御パラメータの部分的または不整合な値の使用を防ぐ。例えば、QMおよび構成要素は、ハンドシェイクメカニズムを採用して、パラメータ値の変更の開始と完了とを信号で伝えることができる。
図3は、メモリトランザクションを発行する際にリクエスト回路の制御回路によって行われる例示的なプロセスのフローチャートを示す。ブロック302における制御回路は、メモリトランザクションを発行することの各イテレーションの開始時に、制御パラメータの値を読み取る。各イテレーションで制御パラメータの値を読み取ると、QMによる制御パラメータへの適応的および動的な変更が認識される。QMとリクエスタ回路の制御回路との間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
ブロック304において、制御回路は、メモリコントローラに発行するためのメモリトランザクションをリクエスト回路から受信する。ブロック306において、制御回路は、リクエスト間隔パラメータにより指定される時間が経過していない場合に待機する。リクエスト間隔は、1つのメモリトランザクションの発行と次のメモリトランザクションの発行との間に制御回路が待機する時間を指定する。
ブロック308において、未処理のトランザクションの数が未処理のトランザクション限界制御パラメータ以上である場合、制御回路は、待機する。制御回路は、未処理のトランザクションの数が未処理のトランザクション限界制御パラメータより少なくなるまで待機する。
制御回路は、ブロック310においてメモリトランザクションを送信し、未処理のトランザクションのカウントを増分し、リクエスト間隔タイマーをリセットする。ブロック312において、メモリトランザクションの完了に応答して、制御回路は、未処理のトランザクションのカウントを減分し、上述されたブロック302へプロセスを戻す。
図4は、メモリトランザクションを調停する際に相互接続回路の制御回路によって行われる例示的なプロセスのフローチャートを示す。相互接続回路は、リクエスタ回路にそれぞれ接続される複数の入力ポートを有する。ブロック402において、相互接続は、各入力ポートにおいてトラフィッククラスまたは仮想チャネルによるメモリトランザクションをキューに入れる。
不完全なメモリトランザクションが未処理である間にQMがパラメータの値を変更できるため、キューからのメモリトランザクションを調停することの各イテレーションの開始時に、ブロック404における相互接続回路は、制御パラメータ(ラウンドロビン重み)の値を読み取る。QMと相互接続回路の制御回路との間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
ブロック406において、相互接続回路の制御回路は、トラフィッククラスまたは仮想チャネルに関連付けられるラウンドロビン重みを用いて、各ポートにおいてキューの間を調停する。重み付けラウンドロビンの調停は、キュー、トラフィッククラスおよび/または仮想チャネルに関連付けられる重みに基づいて、キューからメモリトランザクションを選択できる。ブロック408において、制御回路は、ポートに関連付けられるラウンドロビン重みに従って、ポートから選択されるトランザクションの間を調停する。メモリコントローラへ送信するためのメモリトランザクションの選択後、相互接続回路の制御回路は、上述されたブロック404に戻る。
図5は、メモリトランザクションを調停する際にメモリコントローラの制御回路によって行われる例示的なプロセスのフローチャートを示す。ブロック502において、メモリコントローラの制御回路は、メモリトランザクションを調停するための制御パラメータの値を読み取る。QMとメモリコントローラとの間の制御信号は、遷移中における部分的または不整合な値の使用を防ぐ。
メモリコントローラの各入力ポートにおいて、ブロック504の制御回路は、トラフィッククラス/仮想チャネル上の絶対帯域幅制限を指定する制御パラメータの値に従って、入ってくるトランザクションを調節する。メモリコントローラは、特定のトラフィッククラス/仮想チャネルのメモリトランザクションが、そのポートにおけるトラフィッククラス/仮想チャネルに対して指定される絶対帯域幅制限を超えることを許可しない。
ブロック506において、メモリコントローラの制御回路は、メモリトランザクションを選択する際にポートの間を調停する。ポート調停は、制御パラメータの値に従う、ラウンドロビンまたは重み付けラウンドロビンであり得る。ラウンドロビン重みの値は、複数のポートに渡って帯域幅の所望の割り当てを強制する。選択されるメモリトランザクションは、ブロック508においてトラフィッククラス/仮想チャネルによってキューに入れられ得る。ブロック510において、制御回路は、キューの間を調停し(ラウンドロビンまたは重み付けラウンドロビン)、トランザクションをメモリに投入するための単一の先入れ先出しキューにトランザクションを配置する。
図6は、開示される回路に従って構成され得る例示的なプログラマブルIC602を示す。プログラマブルICは、システムオンチップ(SOC)とも呼ばれることがあり、システムオンチップは、プロセッササブシステム610とプログラマブル論理サブシステム630とを含む。プロセッササブシステム610は、ユーザープログラムの実行を介して、ユーザー設計のソフトウェア部分を実現するようにプログラムされ得る。当該プログラムは、構成データストリームの一部として指定され得るか、またはオンチップもしくはオフチップのデータストレージ装置から取得され得る。プロセッササブシステム610は、1つ以上のソフトウェアプログラムを実行するための様々な回路612,614,616および618を含み得る。回路612,614,616および618は、例えば、1つ以上のプロセッサコア、浮動小数点ユニット(FPU:floating point unit)、割り込み処理ユニット、オンチップメモリ、メモリキャッシュ、および/またはキャッシュコヒーレント相互接続を含み得る。
プログラマブルIC602のプログラマブル論理サブシステム630は、ユーザー設計のハードウェア部分を実現するようにプログラムされ得る。例えば、プログラマブル論理サブシステムは、多数のプログラマブルリソース632を含んでもよく、プログラマブルリソース632は、構成データストリームにおいて指定される回路のセットを実現するようにプログラムされ得る。プログラマブルリソース632は、例えば、プログラマブル相互接続回路と、プログラマブル論理回路と、構成メモリセルとを含む。プログラマブル論理回路は、例えば、関数発生器、レジスタ、算術論理などを含み得るプログラマブル要素を用いて、ユーザー設計の論理を実現する。プログラマブル相互接続回路は、プログラマブル相互接続点(PIP:programmable interconnect point)によって相互接続される、変化する長さの多数の相互接続ラインを含み得る。
プログラマブルリソース632は、構成メモリセルに構成データストリームをロードすることによりプログラムされてもよく、構成データストリームは、プログラマブル相互接続回路とプログラマブル論理回路とがどのように構成されているかを定義する。例えば、構成可能なラッチに対する構成メモリセルを第1の値に設定すると、構成可能なラッチがシングルエッジで駆動されるラッチとして動作するように指示できる。構成メモリセルを第2の値に設定すると、構成可能なラッチがダブルエッジで駆動されるラッチとして動作するように指示できる。そのとき、個々のメモリセルの集合的な状態は、プログラマブルリソース632の機能を決定する。構成データは、メモリから(例えば、外部PROMから)読み取られるか、または外部装置によってプログラマブルIC602に書き込まれることができる。いくつかの実施形態において、プログラマブル論理サブシステム630に含まれる構成コントローラ634は、プログラマブルICの電源投入に応答して、プログラマブルICに結合される不揮発性メモリから構成データを取得することにより、および構成メモリセルに構成データをロードすることにより、プログラマブルリソースをプログラムする。いくつかの他の実施形態において、構成データは、プロセッササブシステム610によって実行される起動プロセスにより、構成メモリセルにロードされ得る。
プログラマブルIC602は、プロセッササブシステム610と、プログラマブル論理サブシステム630内に実現される回路とを相互接続するための様々な回路を含み得る。この例において、プログラマブルIC602は、プロセッササブシステム610およびプログラマブル論理サブシステム630の様々なデータポート間でデータ信号をルーティングできるコアスイッチ626を含む。コアスイッチ626は、プログラマブル論理サブシステム630およびプロセッササブシステム610のいずれかと、内部データバスなどのプログラマブルICの様々な他の回路との間でもデータ信号をルーティングし得る。代替的または追加的に、プロセッササブシステム610は、コアスイッチ626をバイパスして、プログラマブル論理サブシステムに直接的に接続するためのインターフェースを含み得る。そのようなインターフェースは、例えば、ARMにより公開されているAMBA AXIプロトコル仕様(AXI)を用いて実現され得る。
いくつかの実施形態において、プロセッササブシステム610およびプログラマブル論理サブシステム630は、メモリコントローラ621を介してオンチップメモリ622またはオフチップメモリ(図示しない)のメモリ位置への読み書きもし得る。メモリコントローラ621は、1つ以上の異なるタイプのメモリ回路と通信するように実現され得る。当該1つ以上の異なるタイプのメモリ回路は、16ビット、32ビット、ECC付き16ビットなどであろうとなかろうと、デュアルデータレート(DDR:Dual Data Rate)2、DDR3、および低電力(LP:Low Power)DDR2タイプのメモリを含むがこれらに限定されない。メモリコントローラ621が通信できる異なるメモリタイプのリストは、例示のみの目的のために提供されており、限定としてまたは網羅的であることを意図していない。図6に示されるように、プログラマブルIC602は、メモリ管理ユニット620と変換ルックアサイドバッファ624とを含んでもよく、サブシステム610および630によって用いられる仮想メモリアドレスを、メモリコントローラ621によって用いられる物理メモリアドレスに変換して、特定のメモリ位置にアクセスする。
プログラマブルICは、外部回路とのデータの通信のための入力/出力(I/O)サブシステム650を含み得る。I/Oサブシステム650は、例えばフラッシュメモリタイプのI/O装置、高性能I/O装置、低性能インターフェース、デバッグI/O装置、および/若しくはRAM I/O装置を含む、様々なタイプのI/O装置またはインターフェースを含み得る。
I/Oサブシステム650は、660Aおよび660Bとして示される1つ以上のフラッシュメモリインターフェース660を含み得る。例えば、フラッシュメモリインターフェース660の1つ以上は、4ビット通信のために構成されているクアッドシリアルペリフェラルインターフェース(QSPI:Quad-Serial Peripheral Interface)として実現され得る。フラッシュメモリインターフェース660の1つ以上は、並列8ビットNOR/SRAMタイプのインターフェースとして実現され得る。フラッシュメモリインターフェース660の1つ以上は、8ビットおよび/または16ビット通信のために構成されているNANDインターフェースとして実現され得る。説明される特定のインターフェースは、限定ではなく例示の目的のために提供されることを理解されるべきである。異なるビット幅を有する他のインターフェースは、用いられ得る。
I/Oサブシステム650は、フラッシュメモリインターフェース660よりも高いレベルの性能を提供する1つ以上のインターフェース662を含み得る。インターフェース662A~662Cの各々は、DMAコントローラ664A~664Cにそれぞれ結合され得る。例えば、インターフェース662の1つ以上は、ユニバーサルシリアルバス(USB:Universal Serial Bus)タイプのインターフェースとして実現され得る。インターフェース662の1つ以上は、ギガビット・イーサネット(登録商標)タイプのインターフェースとして実現され得る。インターフェース662の1つ以上は、セキュアデジタル(SD:Secure Digital)タイプのインターフェースとして実現され得る。
I/Oサブシステム650は、インターフェース662よりも低いレベルの性能を提供するインターフェース666A~666Dなどの1つ以上のインターフェース666も含み得る。例えば、インターフェース666の1つ以上は、汎用入出力(GPIO:General Purpose I/O)タイプのインターフェースとして実現され得る。インターフェース666の1つ以上は、ユニバーサル非同期受信機/送信機(UART:Universal Asynchronous Receiver/Transmitter)タイプのインターフェースとして実現され得る。インターフェース666の1つ以上は、シリアルペリフェラルインターフェース(SPI:Serial Peripheral Interface)バスタイプのインターフェースの形態において実現され得る。インターフェース666の1つ以上は、コントローラーエリアネットワーク(CAN:Controller-Area-Network)タイプのインターフェースおよび/またはlCタイプのインターフェースの形態において実現され得る。インターフェース666の1つ以上は、タイマータイプのインターフェースの形態においても実現され得る。
I/Oサブシステム650は、プロセッサJTAG(PJTAG:processor JTAG)インターフェース668Aおよびトレースインターフェース668Bなどの1つ以上のデバッグインターフェース668を含み得る。PJTAGインターフェース668Aは、プログラマブルIC602に対する外部のデバッグインターフェースを提供できる。トレースインターフェース668Bは、プロセッササブシステム610またはプログラマブル論理サブシステム630からデバッグ、例えばトレース、情報を受信するためのポートを提供できる。
示されるように、インターフェース660,662,666および668の各々は、マルチプレクサ670に結合され得る。マルチプレクサ670は、プログラマブルIC602の外部ピンに、例えば、プログラマブルIC602が配備されるパッケージのボールに直接的にルーティングまたは結合され得る複数の出力を提供する。例えば、プログラマブルIC602のI/Oピンは、インターフェース660,662,666および668の間で共有され得る。ユーザーは、構成データストリームを介してマルチプレクサ670を構成して、インターフェース660~668のいずれが用いられるかを選択でき、したがって、インターフェース660~668のいずれがマルチプレクサ670を介してプログラマブルIC602のI/Oピンに結合されるかを選択できる。I/Oサブシステム650は、プログラマブル論理サブシステムのプログラマブル論理回路にインターフェース662~668を接続するためにファブリックマルチプレクサI/O(FMIO:fabric multiplexer I/O)インターフェース(図示せず)も含み得る。追加的にまたは代替的に、プログラマブル論理サブシステム630は、プログラマブル論理回路内に1つ以上のI/O回路を実現するように構成され得る。いくつかの実施形態において、プログラマブルIC602は、電力および/または安全管理のための様々な回路を有するサブシステム640も含み得る。例えば、サブシステム640は、プログラマブルIC602の様々なサブシステムに電力を供給するために用いられる1つ以上の電圧ドメインを監視して維持するように構成されている電力管理ユニット646を含み得る。いくつかの実施形態において、電力管理ユニット646は、休止時に、個々のサブシステムの電力を無効にして、使用中にサブシステムへの電力を無効にすることなく、電力消費を削減し得る。
サブシステム640は、正しい動作を保証するためにサブシステムの状態を監視するための安全回路も含み得る。例えば、サブシステム640は、(例えば、状態レジスタ644において示されるように)様々なサブシステムの状態を監視するように構成されている1つ以上の実時間プロセッサ642を含み得る。実時間プロセッサ642は、エラーを検出することに応答して多数のタスクを行うように構成され得る。例えば、いくつかのエラーに対して、実時間プロセッサ642は、エラーを検出することに応答してアラートを生成し得る。別の例として、実時間プロセッサ642は、サブシステムをリセットして、動作を訂正するためにサブシステムを復元しようと試み得る。サブシステム640は、様々なサブシステムを相互接続するために用いられ得るスイッチネットワーク648を含む。例えば、スイッチネットワーク648は、I/Oサブシステム650の様々なインターフェースに様々なサブシステム610,630および640を接続するように構成され得る。いくつかの応用において、スイッチネットワーク648は、監視されるサブシステムから実時間プロセッサ642を隔離するためにも用いられ得る。このような隔離は、他のサブシステムにおいて発生するエラーにより実時間プロセッサ642が影響されないことを保証するために、特定の応用規格(例えば、IEC-61508 SIL3またはISO-26262規格)により必要とされ得る。
いくつかの場合において個々の図で態様および特徴が説明され得るが、1つの図からの特徴は、組み合わせが明示的に示されていないか、または組み合わせとして明示的に説明されていなくても、別の図の特徴と組み合わされ得ることが理解されるであろう。
一例において、メモリトランザクションをサービスする際にサービスの品質を制御する方法が提供される。そのような方法は、システムオンチップ(SOC)上に配備されるサービスの品質管理(QM)回路が、SOC上に配備される複数のリクエスタ回路から、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックとを、複数のリクエスタ回路がSOC上のメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、周期的に読み取ることと;メモリコントローラがメモリトランザクションを処理している間に、QM回路がメモリコントローラから第2のデータレートメトリックを周期的に読み取ることと;複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、QM回路が、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、QM回路が、複数のリクエスタ回路およびメモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更することとを含み得る。
いくつかのそのような方法は、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更することをさらに含み得る。
いくつかのそのような方法は、メモリコントローラがメモリトランザクションを処理しているときに、メモリコントローラから休止時間メトリックを周期的に読み取ることと;休止時間メトリックがサービスの品質メトリックを満たさないと決定することとをさらに含み得る。
いくつかのそのような方法において、上記決定することは、第2のデータレートメトリックとメモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定することと;使用率メトリックがサービスの品質メトリックを満たさないと決定することとを含む。
いくつかのそのような方法において、上記周期的に読み取ることは、QM回路がメモリコントローラの帯域幅使用率メトリックを周期的に読み取ることを含み;上記変更することは、帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、複数のリクエスタ回路とメモリコントローラとの1つ以上の制御パラメータの1つ以上のそれぞれの値を変更することを含み得る。
いくつかのそのような方法において、上記変更することは、複数のリクエスタ回路のうちの1つ以上に関連付けられる1つ以上のリクエスト間隔の1つ以上のそれぞれの値を変更することを含み得る。
いくつかのそのような方法において、上記変更することは、複数のリクエスタ回路のうちの1つ以上に関連付けられる1つ以上の未処理のトランザクション限界の1つ以上のそれぞれの値を変更することを含み得る。
いくつかのそのような方法において、上記変更することは、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路上の1つ以上のポートに関連付けられる1つ以上のラウンドロビン重みの1つ以上のそれぞれの値を変更することを含み得る。
いくつかのそのような方法において、上記変更することは、メモリコントローラの帯域幅制御の値を変更することを含み得る。
いくつかのそのような方法において、上記変更することは、メモリコントローラのポートに関連付けられる1つ以上のラウンドロビン重みの1つ以上の値を変更することを含み得る。
別の例において、システムが提供され得る。そのようなシステムは、メモリコントローラと;メモリコントローラに結合され、メモリアクセストランザクションをメモリコントローラへ送信するように構成されている複数のリクエスタ回路と;メモリコントローラとリクエスタ回路とに結合されるサービスの品質管理(QM)回路とを含んでもよく、QM回路は、複数のリクエスタ回路からそれぞれの第1データレートメトリックとそれぞれの待ち時間メトリックとを、複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信しているだろう間に、周期的に読み取り(206);メモリコントローラがメモリトランザクションを処理している間に、メモリコントローラから第2のデータレートメトリックを周期的に読み取り(208);複数のリクエスタ回路がメモリコントローラへメモリトランザクションをアクティブに送信している間に、それぞれの第1のデータレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとが、サービスの品質メトリックを満たさないと決定することに応答して、複数のリクエスタ回路およびメモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更するように構成されている。
いくつかのそのようなシステムにおいて、QM回路は、それぞれの第1データレートメトリックと、それぞれの待ち時間メトリックと、第2のデータレートメトリックとがサービスの品質メトリックを満たさないと決定することに応答して、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更するようにさらに構成されている。
いくつかのそのようなシステムにおいて、QM回路は、メモリコントローラがメモリトランザクションを処理しているときに、メモリコントローラから休止時間メトリックを周期的に読み取り;休止時間メトリックがサービスの品質メトリックを満たさないと決定するようにさらに構成されている。
いくつかのそのようなシステムにおいて、QM回路は、第2のデータレートメトリックとメモリコントローラの帯域幅割合とに基づいて使用率メトリックを決定し;使用率メトリックがサービスの品質メトリックを満たさないと決定するようにさらに構成されている。
いくつかのそのようなシステムにおいて、QM回路は、メモリコントローラの帯域幅使用率メトリックを周期的に読み取り;帯域幅使用率メトリックがしきい値帯域幅使用率よりも大きいと決定することに応答して、複数のリクエスタ回路およびメモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を変更するようにさらに構成され得る。
いくつかのそのようなシステムにおいて、QM回路は、複数のリクエスタ回路の1つ以上に関連付けられる1つ以上のリクエスト間隔の1つ以上のそれぞれの値を変更するようにさらに構成され得る。
いくつかのそのようなシステムにおいて、QM回路は、複数のリクエスタ回路の1つ以上に関連付けられる1つ以上の未処理のトランザクション限界の1つ以上のそれぞれの値を変更するようにさらに構成され得る。
いくつかのそのようなシステムにおいて、QM回路は、メモリコントローラに複数のリクエスタ回路を結合する相互接続回路上の1つ以上のポートに関連付けられる1つ以上のラウンドロビン重みの1つ以上のそれぞれの値を変更するようにさらに構成され得る。
いくつかのそのようなシステムにおいて、QM回路は、メモリコントローラの帯域幅制御の値を変更するようにさらに構成され得る。
いくつかのそのようなシステムにおいて、QM回路は、メモリコントローラのポートに関連付けられる1つ以上のラウンドロビン重みの1つ以上の値を変更するようにさらに構成され得る。
開示される方法およびシステムは、メモリトラフィックを処理する際にサービスの品質を管理するための様々なシステムに適用可能であると考えられる。他の態様および特徴は、本明細書の考慮から当業者に明らかであろう。当該方法および当該システムは、ソフトウェアを実行するように構成されている1つ以上のプロセッサ、特定用途向け集積回路(ASIC:application specific integrated circuit)、またはプログラマブル論理装置上の論理回路として実現され得る。本明細書および図面は、例としてのみ考慮されることが意図されており、本発明の真の範囲は、以下の請求の範囲によって示される。

Claims (15)

  1. メモリトランザクションをサービスする際にサービスの品質を制御する方法であって、
    システムオンチップ(SOC:system on chip)上に配備されるサービスの品質管理(QM:quality of service management)回路が、前記SOC上に配備される複数のリクエスタ回路からそれぞれの第1のデータレートメトリックとそれぞれの待ち時間メトリックとを、前記複数のリクエスタ回路が前記SOC上のメモリコントローラへメモリトランザクションをアクティブに送信している間に、周期的に読み取ることと、
    前記メモリコントローラが前記メモリトランザクションを処理している間に、前記QM回路が、前記メモリコントローラから第2のデータレートメトリックを周期的に読み取ることと、
    前記複数のリクエスタ回路が前記メモリコントローラへアクティブにメモリトランザクションを送信している間に、前記QM回路が、前記それぞれの第1のデータレートメトリックと、前記それぞれの待ち時間メトリックと、前記第2のデータレートメトリックとが、サービスの品質メトリックを満たさないと決定することに応答して、前記QM回路が、前記複数のリクエスタ回路および前記メモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更することとを含む、方法。
  2. 前記それぞれの第1のデータレートメトリックと、前記それぞれの待ち時間メトリックと、前記第2のデータレートメトリックとが前記サービスの品質メトリックを満たさないと決定することに応答して、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更することをさらに含む、請求項1に記載の方法。
  3. 前記メモリコントローラが前記メモリトランザクションを処理しているときに、前記メモリコントローラから休止時間メトリックを周期的に読み取ることと、
    前記休止時間メトリックが前記サービスの品質メトリックを満たさないと決定することとをさらに含む、請求項1または2に記載の方法。
  4. 前記決定することは、
    前記第2のデータレートメトリックと前記メモリコントローラで達成可能な最大帯域幅とに基づいて前記メモリコントローラの帯域幅使用率メトリックを決定することと、
    前記帯域幅使用率メトリックが前記サービスの品質メトリックを満たさないと決定することとを含む、請求項1~3のいずれか1項に記載の方法。
  5. 前記周期的に読み取ることは、前記QM回路が前記メモリコントローラの前記帯域幅使用率メトリックを周期的に読み取ることを含み、
    前記変更することは、前記帯域幅使用率メトリックがしきい値よりも大きいと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を変更することを含む、請求項4に記載の方法。
  6. メモリコントローラと、
    前記メモリコントローラに結合され、メモリアクセストランザクションを前記メモリコントローラへ送信するように構成されている複数のリクエスタ回路と、
    前記メモリコントローラと前記リクエスタ回路とに結合されるサービスの品質管理(QM)回路とを備え、前記QM回路は、
    前記複数のリクエスタ回路が前記メモリコントローラへメモリトランザクションをアクティブに送信している間に、前記複数のリクエスタ回路からそれぞれの第1データレートメトリックとそれぞれの待ち時間メトリックとを周期的に読み取り(206)、
    前記メモリコントローラが前記メモリトランザクションを処理している間に、前記メモリコントローラから第2のデータレートメトリックを周期的に読み取り(208)、
    前記複数のリクエスタ回路が前記メモリコントローラへメモリトランザクションをアクティブに送信している間に、前記それぞれの第1のデータレートメトリックと、前記それぞれの待ち時間メトリックと、前記第2のデータレートメトリックとが、前記サービスの品質メトリックを満たさないと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を動的に変更するように構成されている、システム。
  7. 前記QM回路は、前記それぞれの第1のデータレートメトリックと、前記それぞれの待ち時間メトリックと、前記第2のデータレートメトリックとが、前記サービスの品質メトリックを満たさないと決定することに応答して、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路の制御パラメータの値を変更するようにさらに構成されている、請求項6に記載のシステム。
  8. 前記QM回路は、
    前記メモリコントローラが前記メモリトランザクションを処理しているときに、前記メモリコントローラから休止時間メトリックを周期的に読み取り、
    前記休止時間メトリックが前記サービスの品質メトリックを満たさないと決定するようにさらに構成されている、請求項6または7に記載のシステム。
  9. 前記QM回路は、
    前記第2のデータレートメトリックと前記メモリコントローラで達成可能な最大帯域幅とに基づいて前記メモリコントローラの帯域幅使用率メトリックを決定し、
    前記帯域幅使用率メトリックが前記サービスの品質メトリックを満たさないと決定するようにさらに構成されている、請求項6~8のいずれか1項に記載のシステム。
  10. 前記QM回路は、
    前記メモリコントローラの前記帯域幅使用率メトリックを周期的に読み取り、
    前記帯域幅使用率メトリックがしきい値よりも大きいと決定することに応答して、前記複数のリクエスタ回路および前記メモリコントローラの1つ以上の制御パラメータの1つ以上のそれぞれの値を変更するようにさらに構成されている、請求項9に記載のシステム。
  11. 前記QM回路は、前記複数のリクエスタ回路の1つ以上に関連付けられる1つ以上のリクエスト間隔の1つ以上のそれぞれの値を変更するようにさらに構成されている、請求項6~10のいずれか1項に記載のシステム。
  12. 前記QM回路は、前記複数のリクエスタ回路の1つ以上に関連付けられる1つ以上のトランザクション上限数の1つ以上のそれぞれの値を変更するようにさらに構成されている、請求項6~11のいずれか1項に記載のシステム。
  13. 前記QM回路は、前記メモリコントローラに前記複数のリクエスタ回路を結合する相互接続回路上の1つ以上のポートに関連付けられる1つ以上のラウンドロビン重みの1つ以上のそれぞれの値を変更するようにさらに構成されている、請求項6~12のいずれか1項に記載のシステム。
  14. 前記QM回路は、前記メモリコントローラの帯域幅制御の値を変更するようにさらに構成されている、請求項6~13のいずれか1項に記載のシステム。
  15. 前記QM回路は、前記メモリコントローラの複数のポートに関連付けられるラウンドロビン重みの複数の値を変更するようにさらに構成されている、請求項6~14のいずれか1項に記載のシステム。
JP2020506921A 2017-08-09 2018-08-08 適応的なサービスの品質の制御回路 Active JP7167130B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/673,220 US10481944B2 (en) 2017-08-09 2017-08-09 Adaptive quality of service control circuit
US15/673,220 2017-08-09
PCT/US2018/045865 WO2019032740A1 (en) 2017-08-09 2018-08-08 ADAPTIVE SERVICE QUALITY CONTROL CIRCUIT

Publications (2)

Publication Number Publication Date
JP2020530621A JP2020530621A (ja) 2020-10-22
JP7167130B2 true JP7167130B2 (ja) 2022-11-08

Family

ID=63371791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020506921A Active JP7167130B2 (ja) 2017-08-09 2018-08-08 適応的なサービスの品質の制御回路

Country Status (6)

Country Link
US (1) US10481944B2 (ja)
EP (1) EP3665574B1 (ja)
JP (1) JP7167130B2 (ja)
KR (1) KR20200036010A (ja)
CN (1) CN111095220B (ja)
WO (1) WO2019032740A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102480017B1 (ko) * 2017-08-11 2022-12-21 삼성전자 주식회사 입출력 장치의 성능 및 전력소모를 조절하는 메모리 컨트롤러, 어플리케이션 프로세서 및 메모리 컨트롤러의 동작방법
CN107894963B (zh) * 2017-11-27 2021-07-27 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
US11196678B2 (en) * 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11343176B2 (en) 2019-06-24 2022-05-24 Amazon Technologies, Inc. Interconnect address based QoS regulation
US11513848B2 (en) * 2020-10-05 2022-11-29 Apple Inc. Critical agent identification to modify bandwidth allocation in a virtual channel
WO2023051917A1 (en) * 2021-09-30 2023-04-06 Huawei Technologies Co., Ltd. Memory controller and data processing system with memory controller

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256358A (ja) 2002-02-28 2003-09-12 Sony Corp アービタ装置及び方法、並びに、リソース共有システム
JP2004118833A (ja) 2002-09-25 2004-04-15 Internatl Business Mach Corp <Ibm> メモリ・コントローラの最適化方法
JP2005508550A (ja) 2001-10-12 2005-03-31 ソニックス インコーポレイテッド ダイナミックランダムアクセスメモリデバイスへの要求をスケジュールする方法及び装置
JP2006012032A (ja) 2004-06-29 2006-01-12 Sony Corp データ処理装置
JP2007041771A (ja) 2005-08-02 2007-02-15 Matsushita Electric Ind Co Ltd プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム
JP2007510229A (ja) 2003-10-31 2007-04-19 ソニックス・インコーポレーテッド サービス品質モデルを確立するための方法と装置
US20080034148A1 (en) 2006-08-01 2008-02-07 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US20120246368A1 (en) 2011-03-24 2012-09-27 Kwon Woo Cheol System on chip improving data traffic and operating method thereof
JP2017004442A (ja) 2015-06-15 2017-01-05 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
JP2017511545A (ja) 2014-04-14 2017-04-20 マイクロソフト テクノロジー ライセンシング,エルエルシー メモリコントローラにおける細粒度帯域幅プロビジョニング

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058921B1 (en) 2002-02-22 2006-06-06 Xilinx, Inc. Method and system for resource allocation in FPGA-based system-on-chip (SoC)
US6941538B2 (en) 2002-02-22 2005-09-06 Xilinx, Inc. Method and system for integrating cores in FPGA-based system-on-chip (SoC)
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
TWI227398B (en) 2003-04-15 2005-02-01 Asustek Comp Inc Automatic adjusting device of computer system performance
US7007264B1 (en) 2003-05-02 2006-02-28 Xilinx, Inc. System and method for dynamic reconfigurable computing using automated translation
US8020163B2 (en) 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US7701902B1 (en) 2006-03-24 2010-04-20 Xilinx, Inc. Scheduling for sharing channel access in wireless networks
CN101192861B (zh) * 2006-12-01 2011-11-16 华为技术有限公司 网络中调整数据速率的方法、装置及通信系统
CN101083560A (zh) * 2007-07-05 2007-12-05 中兴通讯股份有限公司 网络服务质量的测量方法、系统及媒体网关控制器
GB2473505B (en) * 2009-09-15 2016-09-14 Advanced Risc Mach Ltd A data processing apparatus and a method for setting priority levels for transactions
US8612648B1 (en) 2010-07-19 2013-12-17 Xilinx, Inc. Method and apparatus for implementing quality of service in a data bus interface
KR20150106224A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 시스템-온-칩 및 그의 부하 불균형 검출 방법
US20160196231A1 (en) 2015-01-07 2016-07-07 Qualcomm Incorporated System and method for bus bandwidth management in a system on a chip
US9894536B2 (en) * 2015-03-10 2018-02-13 Aruba Networks, Inc. Motion-controlled device for supporting planning, deployment or operation of a wireless network
US10740270B2 (en) 2015-06-26 2020-08-11 Hewlett Packard Enterprise Development Lp Self-tune controller
US10956205B2 (en) * 2017-01-03 2021-03-23 Arm Limited Data processing
US10911366B2 (en) * 2017-06-30 2021-02-02 Intel Corporation Technologies for balancing throughput across input ports of a multi-stage network switch

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005508550A (ja) 2001-10-12 2005-03-31 ソニックス インコーポレイテッド ダイナミックランダムアクセスメモリデバイスへの要求をスケジュールする方法及び装置
JP2003256358A (ja) 2002-02-28 2003-09-12 Sony Corp アービタ装置及び方法、並びに、リソース共有システム
JP2004118833A (ja) 2002-09-25 2004-04-15 Internatl Business Mach Corp <Ibm> メモリ・コントローラの最適化方法
JP2007510229A (ja) 2003-10-31 2007-04-19 ソニックス・インコーポレーテッド サービス品質モデルを確立するための方法と装置
JP2006012032A (ja) 2004-06-29 2006-01-12 Sony Corp データ処理装置
JP2007041771A (ja) 2005-08-02 2007-02-15 Matsushita Electric Ind Co Ltd プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム
US20080034148A1 (en) 2006-08-01 2008-02-07 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US20120246368A1 (en) 2011-03-24 2012-09-27 Kwon Woo Cheol System on chip improving data traffic and operating method thereof
JP2017511545A (ja) 2014-04-14 2017-04-20 マイクロソフト テクノロジー ライセンシング,エルエルシー メモリコントローラにおける細粒度帯域幅プロビジョニング
JP2017004442A (ja) 2015-06-15 2017-01-05 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム

Also Published As

Publication number Publication date
WO2019032740A1 (en) 2019-02-14
EP3665574A1 (en) 2020-06-17
US20190050252A1 (en) 2019-02-14
CN111095220A (zh) 2020-05-01
KR20200036010A (ko) 2020-04-06
EP3665574B1 (en) 2023-03-01
CN111095220B (zh) 2023-09-26
US10481944B2 (en) 2019-11-19
JP2020530621A (ja) 2020-10-22

Similar Documents

Publication Publication Date Title
JP7167130B2 (ja) 適応的なサービスの品質の制御回路
CN107835989B (zh) 共享存储控制器及使用共享存储控制器的方法
US7420990B2 (en) Adaptive-allocation of I/O bandwidth using a configurable interconnect topology
US9201777B2 (en) Quality of service support using stacked memory device with logic die
US7769936B2 (en) Data processing apparatus and method for arbitrating between messages routed over a communication channel
JP6017584B2 (ja) 動的リンク幅調整
US10657084B1 (en) Interrupt moderation and aggregation circuitry
US7213084B2 (en) System and method for allocating memory allocation bandwidth by assigning fixed priority of access to DMA machines and programmable priority to processing unit
WO2012167526A1 (zh) 一种片上总线仲裁方法及装置
Kim et al. Optimized I/O determinism for emerging NVM-based NVMe SSD in an enterprise system
US20200210332A1 (en) Dynamic control of memory bandwidth allocation for a processor
US20120182902A1 (en) Hierarchical Fabric Control Circuits
US20240086093A1 (en) Memory controller and data processing system with memory controller
US8843671B1 (en) Dynamic resource allocation for serial attached SCSI devices
US20210397379A1 (en) Norflash sharing
JP6551049B2 (ja) 帯域制御回路、演算処理装置、および装置の帯域制御方法
JP7226084B2 (ja) 情報処理装置
US20230195658A1 (en) Multichannel memory arbitration and interleaving scheme
CN117707426A (zh) 一种芯粒、io资源共享方法、片上系统及电子设备
JP2004145593A (ja) ダイレクトメモリアクセス装置およびバスアービトレーション制御装置、ならびにそれらの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R150 Certificate of patent or registration of utility model

Ref document number: 7167130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150