JP2021521541A - アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施 - Google Patents

アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施 Download PDF

Info

Publication number
JP2021521541A
JP2021521541A JP2020557323A JP2020557323A JP2021521541A JP 2021521541 A JP2021521541 A JP 2021521541A JP 2020557323 A JP2020557323 A JP 2020557323A JP 2020557323 A JP2020557323 A JP 2020557323A JP 2021521541 A JP2021521541 A JP 2021521541A
Authority
JP
Japan
Prior art keywords
processing
cycles
processor
system service
delay
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.)
Granted
Application number
JP2020557323A
Other languages
English (en)
Other versions
JP7160941B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021521541A publication Critical patent/JP2021521541A/ja
Application granted granted Critical
Publication of JP7160941B2 publication Critical patent/JP7160941B2/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • 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/3409Recording 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 for performance assessment
    • G06F11/3433Recording 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 for performance assessment for load management
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

システムサービス要求(SSR)を処理する際にプロセッサのサービス品質保証を実施するシステム、装置及び方法が開示される。システムは、オペレーティングシステムを実行する第1のプロセッサと、第1のプロセッサによって処理されるSSRを生成するアプリケーションを実行する第2のプロセッサと、を含む。第1のプロセッサは、以前の時間間隔においてSSRを処理するのに費やされたサイクルの数を監視し、このサイクルの数が閾値を超える場合に、第1のプロセッサは、後続のSSRの処理の遅延を開始する。一実施形態では、以前の遅延が0でなかった場合、第1のプロセッサは、後続のSSRの処理において使用される遅延を増加させる。サイクルの数が閾値以下である場合、第1のプロセッサは、遅延無しにSSRを処理する。遅延が増加するにつれて、第2のプロセッサがストールし始め、SSR生成レートが低下し、第1のプロセッサの負荷が軽減される。【選択図】図4

Description

本発明は、アメリカ合衆国エネルギー省によって授与されたLawrence Livermore National Security、元請負契約番号DE−AC52−07NA27344、下請契約番号B620717によるPathForward Projectの下で政府の支援によりなされた。アメリカ合衆国政府は、本発明において一定の権利を有する。
現代のシステムオンチップ(SoC)は、多数の異なるタイプの構成要素をシングルチップ又はマルチチップモジュール上で統合することが多い。例えば、典型的なSoCは、メインプロセッサ(例えば、中央処理装置(CPU))を、統合グラフィックス処理ユニット(GPU)及びメディアエンジン等のアクセラレータと共に含む。これらのアクセラレータの性能が次第に向上するにつれて、ページフォールト、ファイルシステムアクセス又はネットワークアクセス等の複雑なオペレーティングシステム(OS)サービスを直接呼び出すことが期待される。しかしながら、OSは、アクセラレータ上で動作しない。したがって、これらのアクセラレータシステムサービス要求(SSR)は、CPU上で動作するOSによって処理される必要がある。これらのアクセラレータSSRは、同時に発生するCPUアプリケーションと著しく干渉する。多くの場合、アクセラレータからSSRを処理することからの有害な干渉に起因して、同時に発生するCPUアプリケーションにおいて著しい性能劣化及びエネルギー効率の低下が発生する。
添付の図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良好に理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 CPU及びアクセラレータを有するコンピューティングシステムの一実施形態のブロック図である。 一実施形態による、アクセラレータSSRの処理に関連するオーバヘッドを示すタイミング図である。 アクセラレータSSRを処理するスキームの別の実施形態のブロック図である。 アクセラレータからの要求を処理しながらCPUのサービス品質保証を実施する方法の一実施形態を示す一般化されたフローチャートである。 要求の処理に追加される遅延を動的に調整する方法の一実施形態を示す一般化されたフローチャートである。 システムサービス要求(SSR)を処理する方法の一実施形態を示す一般化されたフローチャートである。
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすように、多数の特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細無しに様々な実施形態を実施し得ることを認識すべきである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示す要素が必ずしも縮尺通りに描かれていないことが認識されよう。例えば、いくつかの要素の寸法は、他の要素と比較して誇張されている場合がある。
アクセラレータシステムのサービス要求に直面して中央処理装置(CPU)サービス品質(QoS)保証を実施する様々なシステム、装置、方法及びコンピュータ可読媒体が本明細書で開示される。一実施形態では、システムは、少なくともCPU及びアクセラレータを含む。アクセラレータは、グラフィックス処理ユニット(GPU)又は他のタイプの処理ユニットである。いくつかの実施形態では、システムは、複数のアクセラレータを含む。一実施形態では、CPUは、オペレーティングシステム(OS)を実行し、アクセラレータは、アプリケーションを実行する。アクセラレータアプリケーションがOSからの支援を必要とする場合、アクセラレータアプリケーションは、処理するためにシステムサービス要求(SSR)をCPUに送信する。特定のアプリケーションの場合、アクセラレータは、処理するために多数のSSRをCPUに送信する。CPUは、OSがアクセラレータ(複数可)からのSSRの処理に費やした時間を監視するように構成されているる。様々な実施形態では、時間は、周期的に測定される。他の実施形態では、異なる時間の測定が使用される。説明を容易にするために、周期的な時間の追跡について本明細書で使用される。一実施形態では、SSRを処理することに関与するOSルーチンは、CPU使用サイクルを追跡する。
一実施形態では、カーネルバックグラウンドスレッドは、周期的に起動して、以前の時間間隔においてSSRの処理に費やしたCPUサイクル数が指定された制限を超えているかどうかを判別する。一実施形態では、制限は、アドミニストレータによって指定される。別の実施形態では、ソフトウェアアプリケーションは、動作条件に基づいて、制限の値を動的に調整する。一実施形態では、カーネルワーカスレッドは、調整可能な量の遅延を新たに受信したSSRの処理に追加し、この遅延は、以前の時間間隔においてSSRの処理に費やしたCPUオーバヘッド(例えば、CPU時間の割合)に基づいて計算される。例えば、一実施形態では、SSRの処理の開始時に、カーネルワーカスレッドは、SSRの処理に費やしたCPU時間の割合が、指定された閾値を超えているかどうかをチェックする。カーネルワーカスレッドは、カーネルバックグラウンドスレッドによって収集された情報を使用して、このチェックを実行する。SSRの処理に費やしたCPU時間の割合が指定された閾値を下回る場合、カーネルワーカスレッドは、所望の遅延を0に設定し、SSRの処理を直ちに続ける。そうでなく、SSRの処理に費やしたCPU時間の割合が指定された閾値よりも大きい場合、カーネルワーカスレッドは、指数バックオフ(exponential back-off)に基づいて、SSRの処理における遅延量を設定する。例えば、一実施形態では、所望の遅延が以前に0よりも大きかった場合、カーネルワーカスレッドは、遅延を、以前の遅延値よりも大きい値に増加させる。例えば、様々な実施形態では、新たな遅延値は、以前の値の倍数(例えば、2x、3x等)であってもよい。他の実施形態では、新たな遅延値は、以前の遅延値の倍数でなく、より大きな値であってもよい。そうでなく、所望の遅延が以前に0であった場合、カーネルワーカスレッドは、新たな遅延値を初期の公称値(例えば、10マイクロ秒)に設定する。SSRの処理は、この量だけ遅延される。
遅延が増加するにつれて、アクセラレータ(複数可)がストールし始め、SSRレートが最終的に低下する。CPUオーバヘッドが設定された制限を下回ると、SSRは、人為的な遅延無しに再度処理される。さらに、一実施形態では、アクセラレータSSRの処理は、この処理がCPUアプリケーション(複数可)と干渉する場合にのみ、自動的に抑制される。この実施形態では、CPUがアイドル状態である場合、SSRは、CPUオーバヘッドが制限を超えていても、できるだけ迅速に処理される。一実施形態では、このチェックは、ランリスト(runlist)において待機している他のプロセスについてOSスケジューラにクエリすることによって実施される。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、プロセッサ105A〜105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、メモリデバイス(複数可)140と、を少なくとも含む。他の実施形態では、コンピューティングシステム100は他の構成要素を含み、及び/又は、コンピューティングシステム100は異なって構成されている。プロセッサ105A〜105Nは、システム100に含まれる任意の数のプロセッサを表す。
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Nは、アクセラレータエンジンである。例えば、一実施形態では、プロセッサ105Nは、高度並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)及び特定用途向け集積回路(ASIC)等を含む。いくつかの実施形態では、プロセッサ105A〜105Nは、複数のアクセラレータエンジンを含む。これらの複数のアクセラレータエンジンは、処理のためにシステムサービス要求(SSR)をプロセッサ105Aに送信するように構成されている。プロセッサ105Aは、これらのSSRの処理に関連するオーバヘッドを監視するように構成されている。実施形態に応じて、プロセッサ105Aは、CPUサイクルの数、全CPUサイクルの割合、時間の量、及び/又は、他の基準に基づいて、オーバヘッドを監視する。以前の時間間隔に対するオーバヘッドが閾値を超える場合、プロセッサ105Aは、SSRの処理を遅延させ、及び/又は、SSRの処理に費やすリソースの量を減少させる。
メモリコントローラ(複数可)130は、I/Oインタフェース120に接続されたプロセッサ105A〜105N及びI/Oデバイス(図示省略)によってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に接続されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140のメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等を含む。
I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、PCI(Peripheral Component Interconnect)バス、PCI−Extended(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺デバイスがI/Oインタフェース120に接続される。このような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、ネットワークインタフェースカード等を含むが、これらに限定されない。ネットワークインタフェース135は、ネットワークを介してネットワークメッセージを送受信するために使用される。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスである。コンピューティングシステム100の構成要素の数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、図1に示す数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、図1に示されていない他の構成要素を含むことに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成されている。
図2を参照すると、CPU及びアクセラレータを有するシステム200の一実施形態のブロック図が示されている。CPU205は、アクセラレータ215に接続されており、CPU205及びアクセラレータ215の両方は、システムメモリ220に接続されている。CPU205は、任意の数のコアを表すコア210A〜210Cを含む。コア210A〜210Cは、本明細書では「実行ユニット」とも呼ばれる。アクセラレータ215によって生成されたシステムサービス要求(SSR)を処理するCPU205のフローの一例を図2に示す。アクセラレータ215は、システムメモリ220内のキュー230に引数を設定することによって開始する。次に、アクセラレータ215は、SSRをコア210Aに送信する。一実施形態では、コア210Aは、コア210B上にボトムハーフ割り込みハンドラをスケジュールするトップハーフ割り込みハンドラを実行する。ボトムハーフ割り込みハンドラは、ソフトウェアワークキュー225及びキュー230にワークキューを設定し、コア210C上のカーネルワーカスレッドをエンキューする。カーネルワーカスレッドは、ソフトウェアワークキュー225にアクセスすることによってSSRを処理する。次に、カーネルワーカスレッドは、SSRを処理し、システムサービス応答を生成し、アクセラレータ215に伝達する。
図2は、一実施形態による、アクセラレータSSRの処理の一例を示すことを理解されたい。他の実施形態では、他のステップ及び/又は他の順序のステップを含む、アクセラレータSSRを処理する他のスキームが使用される。図2に示すアプローチの1つの欠点は、要求の数がCPU205の性能に影響を与え始めた場合に、アクセラレータ215によって生成された要求を抑制する能力をCPU205が欠いていることである。例えば、別の実施形態では、CPU205は、複数のアクセラレータに接続されており、複数のアクセラレータの各々は、短期間に多数のSSRを生成する。
図3を参照すると、アクセラレータSSRの処理に関連するオーバヘッドを示すタイミング図300の一実施形態が示されている。図3のタイミング図300は、CPU205が、アクセラレータ215によって生成されたSSRを処理する、図2に示すステップに対応している。タイミング図300の最上段は、アクセラレータ215のイベントのタイミングを示している。一実施形態では、アクセラレータ215は、コア210Aによって処理される割り込み305を生成する。領域310は、CPU205がユーザモードとカーネルモードとの間の遷移に費やす間接的なCPUオーバヘッドを表している。領域315は、ボトムハーフ割り込みハンドラをスケジュールすることに費やされた時間を表している。ボトムハーフ割り込みハンドラをスケジュールした後、領域320は、カーネルモードとユーザモードとの間の遷移のための別の間接的なCPUオーバヘッドを表している。領域325は、SSRの処理において、カーネルがプロセッサの様々なリソース(例えば、キャッシュ及びトランスレーションルックアサイドバッファ(TLB)空間等)を使用することに起因して、低いサイクル当たりの命令(IPC)レートにおいて実行するユーザモードで費やされた時間を表している。これにより、他のCPUタスクに利用可能なリソースが減少することになる。一実施形態では、ワーカスレッドが、SSRの処理に費やされたCPUオーバヘッドを計算する場合に、ワーカスレッドは、ユーザモードとカーネルモードとの間の遷移に関連する間接的なCPUオーバヘッドと、オーバヘッドの計算において低いIPCレートで実行するユーザモードで費やされた時間と、を含む。
コア210Bについて示された段では、領域330は、ユーザモードからカーネルモードへの遷移に費やされた間接的なCPUオーバヘッドを表している。領域335は、ボトムハーフ割り込みハンドラの実行に費やされた時間を表している。領域340は、カーネルモードからユーザモードへの遷移に費やされた間接的なCPUオーバヘッドを表している。領域345は、SSRの処理においてカーネルがプロセッサの様々なリソースを使用することに起因して、低いIPCレートで実行するユーザモードで費やされた間接的なCPUオーバヘッドを表している。
ボトムハーフ割り込みハンドラは、コア210C上でカーネルワーカスレッドを開始する。領域350は、ユーザモードからカーネルモードへの遷移に費やされた間接的なCPUオーバヘッドを表している。領域355は、カーネルワーカスレッドがアクセラレータのSSRを処理することによって費やされた時間を表している。アクセラレータのSSRを処理した後、カーネルワーカスレッドは、カーネルモードからユーザモードに遷移する間接的なオーバヘッド(領域360によって表される)と、低いIPCレートで実行するユーザモードで費やされた時間(領域365によって表される)と、を経験する。
CPU205がSSRの処理に費やした時間に加えて、アクセラレータ215は、期間370によって示すように、SSRを処理するCPU205のレイテンシに起因するストールを経験する。アクセラレータ215は、レイテンシ隠蔽機能を有するが、SSRを処理するCPU205のレイテンシは、アクセラレータ215によって隠蔽可能な時間より長くてもよい。タイミング図300によって示されるイベントに見られるように、アクセラレータSSRは、CPU性能に直接及び間接的に影響を与え、CPUによるSSRの処理も、アクセラレータの性能に影響を与える。
図4を参照すると、アクセラレータSSRを処理するスキームの別の実施形態のブロック図が示されている。図2に示すスキームと同様に、CPU405は、アクセラレータ415に接続されており、CPU405及びアクセラレータ415の両方は、システムメモリ420に接続されている。CPU405は、任意の数のコアを表すコア410A〜410Cを含む。アクセラレータ415は、システムメモリ420内のキュー430に引数を設定することによって開始する。次に、アクセラレータ415は、SSRをコア410Aに送信する。一実施形態では、コア410Aは、コア410B上でボトムハーフ割り込みハンドラをスケジュールするトップハーフ割り込みハンドラを実行する。ボトムハーフ割り込みハンドラは、ソフトウェアワークキュー425及びキュー430にワークキューを設定し、コア410C上のカーネルワーカスレッドをエンキューする(待ち行列に入れる)。しかしながら、図2に示すスキームとは対照的に、ガバナ(governor)440は、カーネルワーカスレッドがSSRを処理する前に、カーネルワーカスレッドをどれだけ長く遅延させるかを決定する。一実施形態では、ガバナ440は、カウンタ442を使用して遅延を実施する。カウンタ442は、クロックサイクルのカウント又は任意の他の適切な時間尺度を使用して実施されてもよい。この遅延の後、カーネルワーカスレッドは、SSRを処理し、システムサービス応答を生成してアクセラレータ415に伝達する。実施形態に応じて、ガバナ440は、OSスレッドとして、ドライバの一部として、又は、ハードウェア及び/若しくはソフトウェアの任意の適切な組み合わせとして実装される。
一実施形態では、SSRの処理に費やされたCPU時間が所望のレートよりも高い場合に、既に到着したSSRの処理を遅延させることによってSSRレートが調整される。この遅延は、最終的に、新たなSSR要求の生成を停止するようにアクセラレータ415にバックプレッシャ(back-pressure)をかける。アクセラレータSSRを無条件に拒否する代わりにSSRの処理に遅延を加えることによって、このスキームは、アクセラレータがSSRを生成する方法に如何なる修正も必要とすることなく実施される。一実施形態では、ガバナ440は、SSRの処理に費やされたCPU時間に基づいて、SSRの処理を遅延させるかどうかを決定する。一実施形態では、ガバナ440は、カーネルワーカスレッドとして実装される。
一実施形態では、SSRの処理に関与する全てのOSルーチンは、CPUサイクルを追跡する。この情報は、カーネルバックグラウンドスレッドによって使用される。カーネルバックグラウンドスレッドは、周期的(例えば、10マイクロ秒毎)に起動して、その期間内にSSRの処理に費やされたCPUサイクルの数が、指定された制限を超えているかどうかを計算する。一実施形態では、制限は、アドミニストレータによって指定される。別の実施形態では、制限は、所定の時点で実行されているアプリケーションの特性に基づいて、OSによって動的に設定される。
さらに、カーネルワーカスレッドは、図4に示すように、SSRを処理する。SSRの処理の開始時に、ワーカスレッドは、SSRの処理に費やされたCPUサイクルが、指定された閾値を超えているかどうかをチェックする。ワーカスレッドは、SSRの処理に費やされたCPUサイクルが、指定された閾値を超えているかどうかを判別するために、バックグラウンドスレッドによって収集された情報を利用する。SSRの処理に費やされたCPUサイクルの数が指定された閾値以下である場合、ワーカスレッドは、所望の遅延を0に設定し、SSRの処理を直ちに続ける。そうでなく、SSRの処理に費やされたCPU時間が指定された閾値を超えた場合、ワーカスレッドは、SSRの処理に追加する遅延量を決定する。ワーカスレッドは、後続のSSRを処理する前に、この遅延量だけ待機する。SSRの処理を遅延させることによって、ガバナ440は、アクセラレータ415のSSR生成レートを抑制する。例えば、アクセラレータ415は、典型的には、各SSRに関連する状態を記憶するための限られた空間を有する。よって、SSRを遅延させることは、アクセラレータ415がSSR生成レートを低下させることをもたらす。
一実施形態では、ワーカスレッドは、SSRを処理するための遅延量を設定するために、指数バックオフスキームを使用する。ワーカスレッドが指数バックオフスキームを使用する一例は、図5の方法500に関する説明において以下により詳細に説明する。例えば、一実施形態では、所望の遅延が以前に0より大きかった場合、ワーカスレッドは、遅延を増加させる。そうでなく、所望の遅延が以前に0であった場合、ワーカスレッドは、遅延を初期値(例えば、5マイクロ秒)に設定する。SSRの処理は、ワーカスレッドによって決定された量だけ遅延される。遅延が増加するにつれて、アクセラレータ415がストールし始め、SSR生成レートが最終的に低下する。オーバヘッドが閾値を下回ると、SSRは、人為的な遅延無しに再度処理される。
他の実施形態では、ガバナ440は、QoS保証メカニズムを実装するために、他の技術を使用する。例えば、別の実施形態では、ガバナ440は、SSRの処理にどれだけの遅延を追加するかを決定するためのルックアップテーブルを維持する。この実施形態では、SSRの処理に費やされたCPUサイクルの数が計算される場合、この数は、後続のSSRの処理に追加するために対応する遅延値を取得するためのルックアップテーブルへの入力として使用される。他の実施形態では、ガバナ440は、他の適切なタイプのQoS保証メカニズムを実装する。
図5を参照すると、アクセラレータからの要求を処理しながらCPUに対するQoS保証を実施する方法500の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図6〜図7のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上は、同時に実行されてもよいし、図示した順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法500を実施するように構成されている。
CPUは、アクセラレータからのシステムサービス要求(SSR)の処理に費やされたCPUサイクルの数が閾値よりも大きいかどうかを判別する(条件付きブロック505)。本明細書では、CPUを第1のプロセッサと呼び、アクセラレータを第2のプロセッサと呼ぶことに留意されたい。別の実施形態では、CPUは、条件付きブロック505において、複数のアクセラレータからのSSRの処理に費やされたCPUサイクルの数を追跡する。SSRの処理に費やされたCPUサイクルの数が閾値以下である場合(条件付きブロック505:「いいえ」)、CPUは、遅延を0に設定する(ブロック510)。そうでなく、SSRの処理に費やされたCPUサイクルの数が閾値よりも大きい場合(条件付きブロック505:「はい」)、スレッドは、現在、遅延が0よりも大きいかどうかを判別する(条件付きブロック515)。
遅延が現在0に等しい場合(条件付きブロック515:「いいえ」)、スレッドは、遅延を初期値(例えば、10マイクロ秒)に設定する(ブロック520)。初期値は、実施形態に応じて異なる。そうでなく、遅延が現在0よりも大きい場合(条件付きブロック515:「はい」)、スレッドは、遅延の値を増加させる(ブロック525)。次に、ブロック520又は525の後、スレッドは、アクセラレータから新たなSSRを受信する(ブロック530)。新たなSSRを処理する前に、スレッドは、遅延の現在値と同じ期間、スリープする(ブロック535)。ブロック535において使用される「スリープ」という用語は、新たなSSRの処理を開始する前に、遅延の現在値に等しい時間だけ待機することを意味することに留意されたい。「遅延」に等しい期間スリープした後、スレッドは、新たなSSRを処理し、結果をアクセラレータに返す(ブロック540)。ブロック540の後、方法500は終了する。
図6を参照すると、要求の処理に追加される遅延を動的に調整する方法600の一実施形態が示されている。第1のプロセッサは、以前の時間間隔の間に、第1のプロセッサのスレッドが第2のプロセッサによって生成された要求を処理するのに費やしたサイクルの数を監視する(ブロック605)。別の実施形態では、サイクルの数を単に監視するのではなく、第1のプロセッサは、第2のプロセッサによる要求を処理することに伴うオーバヘッドを監視する。オーバヘッドは、複数の成分を含む。例えば、オーバヘッドは、要求の処理に実際に費やされた時間、ユーザモードとカーネルモードとの間の遷移に費やされた間接的なCPUオーバヘッド、カーネルがプロセッサの様々なリソースを使用したことに起因して低いIPCレートで実行するユーザモードで費やされた時間を含む。一実施形態では、第1のプロセッサは、CPUであり、第2のプロセッサは、アクセラレータ(例えば、GPU)である。他の実施形態では、第1のプロセッサ及び第2のプロセッサは、他のタイプのプロセッサである。サイクルの数がカウントされる時間間隔の長さは、実施形態によって異なる。
以前の時間間隔の間に第1のプロセッサのスレッドが第2のプロセッサによって生成された要求を処理するのに費やしたサイクルの数が閾値よりも大きい場合(条件付きブロック610:「はい」)、第1のプロセッサは、第2のプロセッサからの後続の要求の処理に第1の遅延の量を追加する(ブロック615)。そうでなく、以前の時間間隔の間に第1のプロセッサのスレッドが第2のプロセッサによって生成された要求を処理するのに費やしたサイクルの数が閾値以下である場合(条件付きブロック610:「いいえ」)、第1のプロセッサは、第2のプロセッサからの後続の要求の処理に第2の遅延の量を追加する。第2の遅延の量は、第1の遅延の量よりも少ない(ブロック620)。いくつかのケースでは、第2の遅延の量は0であり、第1のプロセッサは、後続の要求を直ちに処理する。ブロック615及び620の後、方法600は終了する。
図7を参照すると、システムサービス要求(SSR)を処理する方法700の一実施形態が示されている。第1のプロセッサは、第2のプロセッサからSSRを受信する(ブロック705)。一実施形態では、第1のプロセッサは、CPUであり、第2のプロセッサは、アクセラレータ(例えば、GPU)である。他の実施形態では、第1のプロセッサ及び第2のプロセッサは、他のタイプのプロセッサである。第1のプロセッサは、第2のプロセッサからSSRを受信したことに応じて、第1の条件が検出されたかどうかを判別する(条件付きブロック710)。一実施形態では、第1の条件は、以前の時間間隔において第2のプロセッサ(オプションで、1つ以上の他のプロセッサ)からのSSRを処理するための第1のプロセッサ上のオーバヘッドが閾値よりも大きいことである。オーバヘッドは、SSRの処理に実際に費やされたサイクル、SSRの処理前後のユーザモードとカーネルモードとの間の遷移に費やされたサイクル、及び、マイクロアーキテクチャ状態の劣化(例えば、利用可能なリソースが少なくなるようなプロセッサリソースの消費)による低いIPCレートで実行するユーザモードで費やされたサイクル等を含む。他の実施形態では、第1の条件は、様々な他のタイプの条件、又は、複数の条件の組み合わせである。
第1の条件が検出された場合(条件付きブロック710:「はい」)、第1のプロセッサは、SSRの処理を開始する前に第1の量の時間だけ待機する(ブロック715)。或いは、第1のプロセッサは、第1の条件が検出された場合に、SSRの処理の実施に対して第1の優先度を割り当てる。第1の条件が検出されていない場合(条件付きブロック710:「いいえ」)、第1のプロセッサは、SSRの処理を開始する前に第2の量の時間だけ待機する。第2の量の時間は、第1の量の時間よりも短い(ブロック720)。いくつかのケースでは、第2の量の時間は0であり、第1のプロセッサはSSRを直ちに処理する。或いは、別の実施形態では、第1のプロセッサは、第1の条件が検出されなかった場合に、SSRの処理に対して第2の優先度を割り当てる。第2の優先度は、第1の優先度よりも高い。ブロック715及び720の後、方法700は終了する。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、本明細書で説明する方法及び/又はメカニズムを実施するために使用される。例えば、汎用プロセッサ又は特殊目的プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令は、高水準プログラミング言語によって表されている。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。或いは、ハードウェアの動作又は設計を記述するプログラム命令が記述される。このようなプログラム命令は、C言語等の高水準プログラミング言語によって表される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中のコンピューティングシステムによってアクセスされ、プログラム実行のためにコンピューティングシステムにプログラム命令を提供するため。一般的に、このようなコンピューティングシステムは、1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を少なくとも含む。
上述した実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するように解釈されることが意図される。

Claims (20)

  1. オペレーティングシステムカーネルの複数のスレッドを実行するように構成された回路を含む第1のプロセッサと、
    前記第1のプロセッサに接続された第2のプロセッサであって、前記第2のプロセッサは、アプリケーションを実行し、処理されるシステムサービス要求を前記第1のプロセッサに送信するように構成された回路を含む、第2のプロセッサと、を備え、
    前記第1のプロセッサは、
    前記第1のプロセッサで実行されているスレッドが以前の時間間隔においてシステムサービス要求の処理に費やしたサイクルの数を監視することと、
    前記サイクルの数に基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、
    を行うように構成されている、
    システム。
  2. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、第1の遅延量を追加することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、第2遅延量を追加することであって、前記第2の遅延量は、前記第1の遅延量よりも小さい、ことと、を含む、
    請求項1のシステム。
  3. 前記第1のプロセッサの回路は、前記サイクルの数が前記閾値よりも大きく、以前の遅延量が0よりも大きいことに応じて、前記第1の遅延量を、前記以前の遅延量よりも大きい値に設定するように構成されている、
    請求項2のシステム。
  4. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第1の期間だけ待機することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第2の期間だけ待機することであって、前記第2の期間は、前記第1の期間よりも短い、ことと、を含む、
    請求項1のシステム。
  5. 前記閾値は、前記オペレーティングシステムカーネルによって動的に調整される、
    請求項4のシステム。
  6. 前記第1のプロセッサは、
    前記以前の時間間隔でのシステムサービス要求の処理に関連するオーバヘッドを計算することと、
    前記オーバヘッドに基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、
    を行うように構成されている、
    請求項1のシステム。
  7. 前記第1のプロセッサの回路は、
    前記以前の時間間隔でのシステムサービス要求の処理に関連するオーバヘッドを計算することであって、前記オーバヘッドは、システムサービス要求の処理に費やされたサイクル、ユーザモードとカーネルモードとの間の遷移に費やされたサイクル、及び、低いサイクル当たりの命令(IPC)レートで実行するユーザモードで費やされたサイクル、のうち1つ以上を含む、ことと、
    前記オーバヘッドに基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、
    を行うように構成されている、
    請求項1のシステム。
  8. 第1のプロセッサによって、前記第1のプロセッサで実行されているスレッドが以前の時間間隔において第2のプロセッサによって生成されたシステムサービス要求を処理するのに費やしたサイクルの数を監視することと、
    前記第1のプロセッサのスレッドが前記以前の時間間隔においてシステムサービス要求を処理するのに費やしたサイクルの数に基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、を含む、
    方法。
  9. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、第1の遅延量を追加することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、第2の遅延量を追加することであって、前記第2の遅延量は、前記第1の遅延量よりも小さい、ことと、を含む、
    請求項8の方法。
  10. 前記サイクルの数が前記閾値よりも大きく、以前の遅延量が0よりも大きいことに応じて、前記第1の遅延量を、前記以前の遅延量よりも大きい値に設定することを含む、
    請求項9の方法。
  11. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第1の期間だけ待機することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第2の期間だけ待機することであって、前記第2の期間は、前記第1の期間よりも短い、ことと、を含む、
    請求項8の方法。
  12. 前記閾値は、前記オペレーティングシステムカーネルによって動的に設定される、
    請求項11の方法。
  13. 前記以前の時間間隔でのシステムサービス要求の処理に関連するオーバヘッドを計算することと、
    前記オーバヘッドに基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、を含む、
    請求項8の方法。
  14. 前記以前の時間間隔でのシステムサービス要求の処理に関連するオーバヘッドを計算することであって、前記オーバヘッドは、システムサービス要求の処理に費やされたサイクル、ユーザモードとカーネルモードとの間の遷移に費やされたサイクル、及び、低いサイクル当たりの命令(IPC)レートで実行するユーザモードで費やされたサイクル、のうち1つ以上を含む、ことと、
    前記オーバヘッドに基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、を含む、
    請求項8の方法。
  15. メモリと、
    前記メモリに接続された1つ以上の実行ユニットと、を備える装置であって、
    前記装置は、
    前記1つ以上の実行ユニットで実行されているスレッドが以前の時間間隔においてシステムサービス要求の処理に費やしたサイクルの数を監視することと、
    前記サイクルの数に基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、
    を行うように構成されている、
    装置。
  16. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、第1の遅延量を追加することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、第2の遅延量を追加することであって、前記第2の遅延量は、前記第1の遅延量よりも小さい、ことと、を含む、
    請求項15の装置。
  17. 前記装置は、前記サイクルの数が前記閾値よりも大きく、以前の遅延量が0よりも大きいことに応じて、前記第1の遅延量を、前記以前の遅延量よりも大きい値に設定するように構成されている、
    請求項16の装置。
  18. 前記所定のシステムサービス要求の処理に追加される遅延量を動的に調整することは、
    前記サイクルの数が閾値よりも大きいと判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第1の期間だけ待機することと、
    前記サイクルの数が前記閾値以下であると判別したことに応じて、前記所定のシステムサービス要求の処理を開始する前に、第2の期間だけ待機することであって、前記第2の期間は、前記第1の期間よりも短い、ことと、を含む、
    請求項15の装置。
  19. 前記閾値は、オペレーティングシステムによって設定される、
    請求項18の装置。
  20. 前記装置は、
    前記以前の時間間隔でのシステムサービス要求の処理に関連するオーバヘッドを計算することと、
    前記オーバヘッドに基づいて、所定のシステムサービス要求の処理に追加される遅延量を動的に調整することと、
    を行うように構成されている、
    請求項15の装置。
JP2020557323A 2018-04-16 2019-02-14 アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施 Active JP7160941B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/954,382 2018-04-16
US15/954,382 US11275613B2 (en) 2018-04-16 2018-04-16 Enforcing central processing unit quality of service guarantees when servicing accelerator requests
PCT/US2019/017933 WO2019203919A1 (en) 2018-04-16 2019-02-14 Enforcing central processing unit quality of service guarantees when servicing accelerator requests

Publications (2)

Publication Number Publication Date
JP2021521541A true JP2021521541A (ja) 2021-08-26
JP7160941B2 JP7160941B2 (ja) 2022-10-25

Family

ID=65685962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020557323A Active JP7160941B2 (ja) 2018-04-16 2019-02-14 アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施

Country Status (6)

Country Link
US (2) US11275613B2 (ja)
EP (1) EP3782032B1 (ja)
JP (1) JP7160941B2 (ja)
KR (1) KR102523589B1 (ja)
CN (1) CN112041822A (ja)
WO (1) WO2019203919A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169812B2 (en) 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
US11508124B2 (en) * 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1115800A (ja) * 1997-06-26 1999-01-22 Nec Corp マルチプロセッサの負荷の均一化装置
WO2003063002A1 (fr) * 2002-01-24 2003-07-31 Fujitsu Limited Ordinateur permettant de determiner dynamiquement un delai d'interruption
JP2008269152A (ja) * 2007-04-18 2008-11-06 Mitsubishi Electric Information Systems Corp クライアント装置
US20150234677A1 (en) * 2014-02-19 2015-08-20 International Business Machines Corporation Dynamically adjusting wait periods according to system performance
US20180069767A1 (en) * 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11259311A (ja) * 1998-03-06 1999-09-24 Chokosoku Network Computer Gijutsu Kenkyusho:Kk タスク管理方法
US7624208B2 (en) * 2005-01-14 2009-11-24 International Business Machines Corporation Method, system, and computer program for managing a queuing system
US8286139B2 (en) * 2008-03-19 2012-10-09 International Businesss Machines Corporation Call stack sampling for threads having latencies exceeding a threshold
US8782663B2 (en) * 2009-05-11 2014-07-15 Nec Corporation Terminal device, communication method used in the terminal device and recording medium
US20150046676A1 (en) * 2013-08-12 2015-02-12 Qualcomm Incorporated Method and Devices for Data Path and Compute Hardware Optimization
EP3394747A1 (en) * 2015-12-21 2018-10-31 Telefonaktiebolaget LM Ericsson (publ) Priority trainer for many core processing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1115800A (ja) * 1997-06-26 1999-01-22 Nec Corp マルチプロセッサの負荷の均一化装置
WO2003063002A1 (fr) * 2002-01-24 2003-07-31 Fujitsu Limited Ordinateur permettant de determiner dynamiquement un delai d'interruption
JP2008269152A (ja) * 2007-04-18 2008-11-06 Mitsubishi Electric Information Systems Corp クライアント装置
US20150234677A1 (en) * 2014-02-19 2015-08-20 International Business Machines Corporation Dynamically adjusting wait periods according to system performance
US20180069767A1 (en) * 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Also Published As

Publication number Publication date
JP7160941B2 (ja) 2022-10-25
WO2019203919A1 (en) 2019-10-24
US11275613B2 (en) 2022-03-15
KR20210005636A (ko) 2021-01-14
EP3782032A1 (en) 2021-02-24
KR102523589B1 (ko) 2023-04-19
US20220269535A1 (en) 2022-08-25
EP3782032B1 (en) 2022-05-25
US20190317807A1 (en) 2019-10-17
CN112041822A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
JP7160941B2 (ja) アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施
US10613876B2 (en) Methods and apparatuses for controlling thread contention
US10649935B2 (en) Deferred inter-processor interrupts
Usui et al. DASH: Deadline-aware high-performance memory scheduler for heterogeneous systems with hardware accelerators
US9201816B2 (en) Data processing apparatus and a method for setting priority levels for transactions
US8799902B2 (en) Priority based throttling for power/performance quality of service
JP4034969B2 (ja) 共通メモリのメモリ管理システム
US20190065243A1 (en) Dynamic memory power capping with criticality awareness
US20190042331A1 (en) Power aware load balancing using a hardware queue manager
US8826270B1 (en) Regulating memory bandwidth via CPU scheduling
US8060679B2 (en) Information processing apparatus and access control method capable of high-speed data access
US20100023653A1 (en) System and method for arbitrating between memory access requests
US7617344B2 (en) Methods and apparatus for controlling access to resources in an information processing system
US20200250787A1 (en) Multiple application cooperative frame-based gpu scheduling
US20100241771A1 (en) Peripheral circuit with host load adjusting function
JP2021526257A (ja) マルチカーネル波面スケジューラ
US20040225789A1 (en) Method for data protection for removable recording medium
JP7018833B2 (ja) 半導体装置
US10972408B1 (en) Configurable packet arbitration with minimum progress guarantees
JP2015041199A (ja) 情報処理装置
WO2023125248A1 (zh) 内存带宽的控制方法、装置、电子设备和存储介质
WO2022271229A1 (en) Techniques to enable quality of service control for an accelerator device
Khoo et al. Scalable storage architecture in modular hardware accelerators

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220622

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: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221013

R150 Certificate of patent or registration of utility model

Ref document number: 7160941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150