JP2021526257A - マルチカーネル波面スケジューラ - Google Patents

マルチカーネル波面スケジューラ Download PDF

Info

Publication number
JP2021526257A
JP2021526257A JP2020566752A JP2020566752A JP2021526257A JP 2021526257 A JP2021526257 A JP 2021526257A JP 2020566752 A JP2020566752 A JP 2020566752A JP 2020566752 A JP2020566752 A JP 2020566752A JP 2021526257 A JP2021526257 A JP 2021526257A
Authority
JP
Japan
Prior art keywords
scheduling
scheduling group
wave
resource contention
kernel
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
JP2020566752A
Other languages
English (en)
Other versions
JP7320536B2 (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
Priority claimed from US15/993,061 external-priority patent/US12099867B2/en
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021526257A publication Critical patent/JP2021526257A/ja
Application granted granted Critical
Publication of JP7320536B2 publication Critical patent/JP7320536B2/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/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
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • 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
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

マルチカーネル波面スケジューラを実装するためのシステム、装置、及び方法が開示されている。システムは、1つまたは複数のメモリに結合された少なくとも並列プロセッサを含み、並列プロセッサは、コマンドプロセッサ及び複数の計算ユニットを含む。コマンドプロセッサは、計算ユニット上で実行するように複数のカーネルを起動する。各計算ユニットには、実行ユニットで実行するように複数のカーネルからの波面をスケジュールするためのマルチレベルスケジューラが含まれる。第1のレベルのスケジューラは、カーネルの優先度に基づいて波面をグループ化することにより、スケジューリンググループを作成する。したがって、同じ優先度を有するカーネルからの波面は、第1のレベルのスケジューラによって同じスケジューリンググループにグループ化される。次に、第1のレベルのスケジューラは、複数のスケジューリンググループから、実行するように最も優先度の高いスケジューリンググループを選択する。そして、第2のレベルのスケジューラは、第1のレベルのスケジューラによって選択されたスケジューリンググループから実行するように波面をスケジュールする。【選択図】図5

Description

本発明は、ローレンスリバモアナショナルセキュリティ(米国エネルギー省(DOE)から授与された、主要契約番号:DE−AC52−07NA27344、サブ契約番号:B620717)によるPathForward Projectの下、政府の助成を受けて行われたものである。米国政府は、本発明に一定の権利を有する。
関連技術の説明
最新のプロセッサ(グラフィックス処理装置(GPU)など)には、各プロセスが複数のカーネルを起動する可能性がある、複数のプロセスの同時実行をサポートする構造が含まれている。その結果、複数のプロセスからの複数のカーネルを同じプロセッサで同時に実行できる。本明細書で使用される場合、「カーネル」は、1つまたは複数の実行可能プログラム命令である。通常、このようなカーネルは関数として識別され、複数のデータ要素上で操作する場合、カーネルの複数のインスタンスが並行して実行される。このような各インスタンスは、実行の「スレッド」と呼ばれる。このようなスレッドのグループは、本明細書では「ワープ」または「ウェーブフロント(波面)」とも呼ばれる。通常、GPUカーネルには複数のワープまたは波面がある。単一のプロセスまたは複数のプロセスから複数のカーネルを同時に実行すると、これらのカーネルがプロセッサの共有リソースをめぐって競合することになる。このようなシナリオでは、これらの共有リソースへのアクセスを求める複数のカーネルからの干渉により、全体的なパフォーマンスが低下する可能性がある。さらに、同じカーネルのワークグループとは異なり、異なるカーネルのワークグループは完全に異なるエンティティであり、共通性がないため、異なるカーネルを同時に実行すると、共有リソースの競合が悪化する可能性がある。
添付図面と共に以下の説明を参照することによって、本明細書に記載される方法及び機構の利点をより良く理解することができよう。
コンピューティングシステムの一実施態様のブロック図である。 コンピューティングシステムの別の実施態様のブロック図である。 計算ユニットの一実施態様のブロック図である。 所定の計算ユニットのための波面スケジューリングの一実施態様のブロック図である。 実行するように複数のカーネルからの波面をスケジュールするための方法の一実施態様を示す一般化された流れ図である。 優先度情報が考慮されていないか利用できない場合に、複数のカーネルからワークグループをスケジュールするための方法の一実施態様を示す一般化された流れ図である。 リソース競合に基づいて波面スケジューリングを動的に抑制するための方法の一実施態様を示す一般化された流れ図である。 実行するように複数のカーネルからの波面をスケジュールするための方法の一実施態様を示す一般化された流れ図である。
以下の説明では、本明細書で提示される方法及び機構の完全な理解をもたらすために、多数の特定の詳細が示される。しかしながら、当業者は、それらの特定の詳細なしに様々な実施態様を実践し得ることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことは理解されよう。例えば、要素のいくつかの寸法は、他の要素に対して誇張されてよい。
マルチカーネル波面スケジューラを実装するための様々なシステム、装置、及び方法が本明細書に開示されている。システムは、1つまたは複数のメモリに結合された複数の計算ユニットを備えた少なくとも1つのプロセッサを含む。一部の実施態様では、システムに複数のプロセッサが含まれている。例えば、一実施態様では、システムは、中央処理装置(CPU)及びグラフィックス処理装置(GPU)を含む。他の実施態様では、システムには他の数及び/または種類のプロセッサが含まれる。様々な実施態様を説明する際に、CPUは、本明細書では第1のプロセッサと呼ばれ、GPUは、本明細書では第2のプロセッサと呼ばれる。第1のプロセッサは、実施態様に応じて任意の種類のプロセッサで実装される。さらに、第2のプロセッサは、実施態様に応じて任意の種類のプロセッサで実装される。
一実施態様では、複数のプロセスが第1のプロセッサで実行されており、各プロセスが1つまたは複数のカーネルを呼び出して第2のプロセッサで実行される可能性がある。第2のプロセッサで呼び出されるカーネルには、通常、複数の波面が含まれている。一実施態様では、第2のプロセッサは、コマンドプロセッサ及び複数の計算ユニットを含む。コマンドプロセッサは、第2のプロセッサのさまざまな計算ユニットでカーネルを起動する。一実施態様では、各計算ユニットは、計算ユニット上で起動及び実行されるカーネルの波面をスケジュールするためのマルチレベルスケジューラを含む。マルチレベルスケジューラは、波面実行の前進を保証しながら、計算ユニット上で実行されている複数のカーネル間のリソース競合を減らすのに役立つ方法で波面をスケジュールする。
一実施態様では、第1のレベルのスケジューラは、波面のカーネルの優先度に基づいて、波面をスケジューリンググループにグループ化する。たとえば、最優先のカーネルの場合、これらのカーネルのすべての波面は、第1のスケジューリンググループにグループ化される。第2に優先度の高いカーネルの場合、これらのカーネルのすべての波面が第2のスケジューリンググループにグループ化される。第3に優先度の高いカーネルの場合、これらのカーネルのすべての波面は第3のスケジューリンググループにグループ化され、以下同様に続く。次に、第1のレベルのスケジューラは、複数のスケジューリンググループから、最もスケジューリングの優先度が高いスケジューリンググループを選択する。次に、第2のレベルのスケジューラは、第1のレベルのスケジューラによって選択されたスケジューリンググループから波面をスケジュールする。実施態様に応じて、第2のレベルのスケジューラは、ラウンドロビンポリシー、最も古いウェーブフロントの第1のポリシー、または第1のレベルのスケジューラによって選択されたスケジューリンググループからスケジュールする波面フロントを選択するための別のポリシーを使用する。
一実施態様では、各計算ユニットは、計算ユニット上のリソース使用率を示す1つまたは複数の条件を監視するための制御ロジックを含む。制御ロジックは、監視されている1つまたは複数の条件に基づいてリソース競合の測定値を生成する。リソース競合の測定値が第1の閾値よりも大きい場合、スケジューラは最も優先度の低いスケジューリンググループをスケジュール解除されたキューに移動して、このグループが実行するようにスケジュールされないようにする。次に、制御ロジックは、リソース競合の後続の測定値を生成する前に、所定の時間待機する。後続の測定値がまだ第1の閾値よりも大きい場合、スケジューラは次に優先度の低いスケジューリンググループをスケジュール解除されたキューに移動する。ただし、その後のリソース競合の測定値が第2の閾値未満の場合、スケジューラは最も優先度の高いスケジューリンググループをスケジュール解除されたキューから移動して、このグループが実行するようにスケジュールできるようにする。制御ロジックとスケジューラは、条件を監視し、所定の時間待機し、リソース競合の測定値と1つまたは複数の閾値との比較に基づいて、キュー間でスケジューリンググループを移行するかどうかを決定するこの操作パターンを続行する。
ここで、図1を参照して、コンピューティングシステム100の一実施態様のブロック図を示す。一実施態様では、コンピューティングシステム100は、少なくともプロセッサ105A〜105N、入出力(I/O)インターフェース120、バス125、メモリコントローラ(複数可)130、ネットワークインターフェース135、及びメモリデバイス140(複数可)を含む。他の実施態様では、コンピューティングシステム100は、他のコンポーネントを含み、及び/またはコンピューティングシステム100は異なって配列される。プロセッサ105A〜105Nは、システム100に含まれる任意の数のプロセッサを表す。
一実施態様では、プロセッサ105Aは、中央処理装置(CPU)などの汎用プロセッサである。この実施態様では、プロセッサ105Nは、高度に並列化されたアーキテクチャを備えたデータ並列プロセッサである。データ並列プロセッサには、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)などが含まれる。いくつかの実施態様では、プロセッサ105A〜105Nは、複数のデータ並列プロセッサを含む。一実施態様では、プロセッサ105A〜105Nの1つ以上は、複数の計算ユニットを含む。各計算ユニットには、計算ユニット上でのリソース競合を減らす方法で実行するように複数のカーネルからの波面をスケジュールするためのマルチレベルスケジューラが含まれる。各計算ユニットはまた、リソースの競合を監視し、監視されたリソースの競合の測定値が閾値より大きい場合、波面のスケジューリンググループを抑制する。
メモリコントローラ(複数可)130は、プロセッサ105A〜105N及びI/Oインターフェース120に結合されたI/Oデバイス(図示せず)によってアクセス可能な任意の数及び種類のメモリコントローラを表す。メモリコントローラ130(複数可)は、任意の数及び種類のメモリデバイス(複数可)140に結合される。メモリデバイス(複数可)140は、任意の数及び種類のメモリデバイスを表す。例えば、メモリデバイス(複数可)140におけるメモリの種類には、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、または強誘電体ランダムアクセスメモリ(FeRAM)などが含まれる。
I/Oインターフェース120は、任意の数及び種類のI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI−Extended(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々な種類の周辺機器デバイス(図示せず)は、I/Oインターフェース120に結合される。そのような周辺機器デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、または他の種類のゲームコントローラ、メディア記録デバイス、外部記憶装置、及びネットワークインターフェースカードなどを含む(がそれらに限定されない)。ネットワークインターフェース135は、ネットワーク上でネットワークメッセージを送受信するために使用される。
様々な実施態様では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、または様々な他の種類のコンピューティングシステムもしくはコンピューティングデバイスのいずれかである。コンピューティングシステム100のコンポーネントの数は、実施態様ごとに変わることに留意されたい。例えば、他の実施態様では、図1に示された数よりも多くのまたは少ない各々のコンポーネントが存在する。また、他の実施態様では、コンピューティングシステム100は、図1に示されていない他のコンポーネントを含むことに留意されたい。加えて、他の実施態様では、コンピューティングシステム100は、図1に示された以外の方式において構造化される。
ここで、図2に目を向けると、コンピューティングシステム200の別の実施態様のブロック図が示される。一実施態様では、システム200は、GPU205、システムメモリ225、及びローカルメモリ230を含む。システム200はまた、図を曖昧にすることを回避するために示されない他のコンポーネントを含む。GPU205は、少なくともコマンドプロセッサ235、制御ロジック240、ディスパッチユニット250、計算ユニット255A〜255N、メモリコントローラ220、全体データ共有部270、レベル1(L1)キャッシュ265、及びレベル2(L2)キャッシュ260を含む。他の実施態様では、GPU205は他のコンポーネントを含み、図示されたコンポーネントのうちの1つ以上を省略し、図2に1つのインスタンスのみが示されている場合でも、コンポーネントの複数のインスタンスを有し、及び/または他の適切な方法で編成される。
様々な実施態様において、コンピューティングシステム200は、様々な種類のソフトウェアアプリケーションのいずれかを実行する。所定のソフトウェアアプリケーションを実行する一環として、コンピューティングシステム200のホストCPU(図示せず)は、GPU205上で実行されるカーネルを起動する。コマンドプロセッサ235は、ホストCPUからカーネルを受信し、ディスパッチユニット250を使用して、計算ユニット255A〜255Nにカーネルをディスパッチする。制御ロジック240は、GPU205の様々なリソースを監視し、ディスパッチユニット250が、リソース使用率に基づいて計算ユニット255A〜255Nに波面をディスパッチする方法を決定するのを助ける。計算ユニット255A〜255N上で実行されるカーネル内のスレッドは、GPU205内の全体データ共有部270、L1キャッシュ265、及びL2キャッシュ260からデータを読み出し、それらにデータを書き込む。図2には示されないが、一実施態様では、計算ユニット255A〜255Nはまた、各計算ユニット255A〜255N内に1つまたは複数のキャッシュ及び/またはローカルメモリを含む。
ここで図3を参照すると、計算ユニット300の一実施態様のブロック図が示される。一実施態様では、計算ユニット300は、第1のレベルのスケジューラ310、第2のレベルのスケジューラ320、単一命令、複数データ(SIMD)ユニット325A〜325N、スケジューリングキュー330、スケジュール解除されたキュー340、制御ロジック350、及びキャッシュサブシステム355を含む。第1のレベルのスケジューラ310及び第2のレベルのスケジューラ320は、計算ユニット300上のリソース競合を低減するのに役立つ、複数のカーネルの波面のための2レベルのスケジューリングスキームを実装するために使用される。
他の実施態様では、計算ユニット300は他のコンポーネントを含み、及び/または配置が異なる。SIMDユニット325A〜325Nは、波面を実行するための任意の数のSIMDユニットを表す。スケジューリングキュー330は、SIMDユニット325A〜325Nでスケジュールすることができる波面のスケジューリンググループを格納するための任意の数のキューを表す。スケジュール解除されたキュー340は、SIMDユニット325A〜325Nでスケジュールすることが許可されていないスケジューリンググループを格納するための任意の数のキューを表す。計算ユニット300は、図を曖昧にすることを回避するために示されない他のコンポーネントも含むことに留意されたい。
一実施態様では、第1のレベルのスケジューラ310は、波面のカーネルの優先度に基づいて、波面をスケジューリンググループにグループ化する。たとえば、最優先のカーネルの場合、これらのカーネルのすべての波面は、第1のスケジューリンググループにグループ化される。第2に優先度の高いカーネルの場合、これらのカーネルのすべての波面は第2のスケジューリンググループにグループ化され、以下同様に続く。次に、第1のレベルのスケジューラ310は、複数のスケジューリンググループから、最もスケジューリングの優先度が高いスケジューリンググループを選択する。次に、第2のレベルのスケジューラ320は、第1のレベルのスケジューラ310によって選択されたスケジューリンググループから波面をスケジュールする。実施態様に応じて、第2のレベルのスケジューラ320は、ラウンドロビンポリシー、最も古い波面の第1のポリシー、または第1のレベルのスケジューラ310によって選択されたスケジューリンググループからどの波面をスケジュールするかを選択するための別のポリシーを使用する。別の実施態様では、優先度情報が利用できない場合、第1のレベルのスケジューラ310は、同じカーネルからの波面を同じスケジューリンググループにグループ化する。次に、第1のレベルのスケジューラ310は、最も古いカーネルに対応するスケジューリンググループを選択する。
一実施態様では、計算ユニット300は、計算ユニット300上のリソース使用率を示す1つまたは複数の条件を監視するための制御ロジック350を含む。さまざまな実施態様では、監視される条件には、計算ユニットのストールサイクル、キャッシュミス率、メモリアクセス遅延、リンク使用率、及び/またはその他の条件が含まれる。制御ロジック350は、監視されている1つまたは複数の条件に基づいて、リソース競合の測定値を生成する。リソース競合の測定値が第1の閾値よりも大きい場合、制御ロジック350は、最も優先度の低いスケジューリンググループをスケジューリングキュー330からスケジュール解除されたキュー340に移動して、このグループが実行するようにスケジュールされないようにする。次に、制御ロジック350は、リソース競合の後続の測定値を生成する前に、所定の時間待機する。後続の測定値がまだ第1の閾値よりも大きい場合、制御ロジック350は、次に優先度の低いスケジューリンググループをスケジューリングキュー330からスケジュール解除されたキュー340に移動する。しかしながら、リソース競合の後続の測定値が第2の閾値未満である場合、制御ロジック350は、最も優先度の高いスケジューリンググループをスケジュール解除されたキュー340から移動し、スケジューリングキュー330に戻し、このグループが実行するようにスケジュールできるようにする。制御ロジック350は、監視条件のこの動作パターンを継続し、所定の時間待機し、次に、リソース競合の測定値と1つまたは複数の閾値との比較に基づいて、キュー間でスケジューリンググループを移行するかどうかを決定する。
ここで図4に目を向けると、所与の計算ユニットに対する波面スケジューリングの一実施態様のブロック図が示されている。所定の計算ユニットは、複数のカーネルの波面を受信する。一実施態様では、スケジューラ(図示せず)は、優先度に基づいて波面をスケジューリンググループにグループ化する。この説明のため、所定の計算ユニットのスケジューリングロジックに対して優先度情報を利用できると仮定する。他の実施態様では、優先度情報が利用できない場合、複数のカーネルからの波面をスケジューリンググループにグループ化するための他の手法が使用される。図400の左側は、1つの特定のシナリオにおいて所与の計算ユニット上で起動されている異なるカーネルの優先度を示している。各カーネルには任意の数の波面が含まれ、その数はカーネルごとに異なる。
図400に示すように、カーネルAの優先度は5であり、これは、この例示的なシナリオで所定の計算ユニットにディスパッチされるカーネルの中で最も優先度が高い。また、図400に示すように、カーネルBとカーネルCの優先度は4、カーネルEとカーネルDの優先度は3、カーネルH、カーネルF、カーネルGの優先度は2、カーネルIとカーネルJの優先度は1であり、カーネルKの優先度は0である。図400の右側は、所定の計算ユニットで実行されるカーネルが利用できるときのタイミング図を示す。
タイムスロットt0の間、カーネルAは所定の計算ユニットで実行される。したがって、第1のレベルのスケジューラはカーネルAからの波面を使用してスケジューリンググループを作成し、次に第2のレベルのスケジューラはこのスケジューリンググループからの波面を所与の計算ユニットで実行するようにスケジュールする。次のタイムスロットt1の間、カーネルB、カーネルC、及びカーネルDは所定の計算ユニットで実行されている。第1のレベルのスケジューラは、カーネルBとカーネルCの波面のスケジューリンググループを作成する。というのも、これらのカーネルの優先度は同じであるためである。カーネルBとカーネルCはカーネルDよりも優先度が高いため、第1のレベルのスケジューラは、スケジューリングのためにカーネルBとカーネルCのスケジューリンググループを選択する。次に、第2のレベルのスケジューラは、タイムスロットt1の間に実行されるカーネルB及びカーネルCのスケジューリンググループから波面を選択する。カーネルDは第1のレベルのスケジューラによって選択されなかったため、カーネルDからの波面はタイムスロットt1の間は実行されない。
次のタイムスロットt2の間、カーネルEとカーネルDは所定の計算ユニットで実行されている。同じサイクルで利用できる優先度の高いカーネルがないため、カーネルDからの波面をタイムスロットt2でスケジュールできるようになる。したがって、第1のレベルのスケジューラは、カーネルE及びカーネルDからの波面のスケジューリンググループを作成し、第2のレベルのスケジューラは、タイムスロットt2の間に計算ユニット上で実行されるように、このスケジューリンググループからの波面をスケジュールする。タイムスロットt3では、カーネルEからの波面がまだスケジュールされておらず、2つの新しいカーネルFとカーネルGが所定の計算ユニット上で実行されている。カーネルEはカーネルF及びカーネルGよりも優先度が高いため、第1のレベルのスケジューラはカーネルEに対応するスケジューリンググループを選択し、第2のレベルのスケジューラはこのスケジューリンググループからの波面をタイムスロットt2の間に計算ユニット上で実行されるようにスケジュールする。
タイムスロットt4の間、カーネルHの他、前のタイムスロットt3で完了しなかったカーネルFとカーネルGも、所定の計算ユニット上で実行されている。利用可能なすべてのカーネルH、カーネルF、及びカーネルGは同じ優先度(優先度2)であるため、第1のレベルのスケジューラはカーネルH、カーネルF、及びカーネルGの単一のスケジューリンググループを作成し、第2のレベルのスケジューラはカーネルH、カーネルF、及びカーネルGからの波面をタイムスロットt4の間に、所定の計算ユニットで実行されるようにスケジュールする。タイムスロットt5の間、タイムスロットt4でスケジューリングできなかったカーネルHからの波面がまだある。また、カーネルJは、タイムスロットt5の所定の計算ユニット上で実行されている。カーネルHはカーネルJよりも優先度が高いため、第1のレベルのスケジューラはカーネルHに対応するスケジューリンググループを選択し、次に第2のレベルのスケジューラはカーネルHからの波面をタイムスロットt5の間に所定の計算ユニット上で実行されるようにスケジュールする。
次に、タイムスロットt6で、カーネルIの他、タイムスロットt5で選択されなかったカーネルJが計算ユニット上で実行されている。カーネルIとカーネルJの優先度は同じであるため、第1のレベルのスケジューラはカーネルIとカーネルJの波面のスケジューリンググループを作成し、第2のレベルのスケジューラはカーネルIとカーネルJからの波面をタイムスロットt6の間に計算ユニット上で実行されるようにスケジュールする。タイムスロットt7では、カーネルKは、所定の計算ユニット上で実行されている唯一のカーネルである。したがって、第1のレベルのスケジューラは、カーネルKの波面のスケジューリンググループを作成し、次に、第2のレベルのスケジューラは、カーネルKからの波面を、タイムスロットt7の間に所定の計算ユニット上で実行されるようにスケジュールする。図400に示されるスケジューリング決定のパターンは、所定の計算ユニット上で起動される追加のカーネルの、任意の後続の時間スロットに対して継続することができることに留意されたい。
ここで図5を参照すると、実行するように複数のカーネルからの波面をスケジュールするための方法500の一実施態様が示されている。説明のために、本実施態様でのステップ、及び図6〜図7のステップを順番に示す。しかし、記載の方法の様々な実施態様では、記載する要素のうちの1つ以上が、同時に、示されるのとは異なる順序で実行されるか、または、全体的に省略されていることに留意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステムまたは装置はいずれも、方法500を履行するように構成されている。
波面スケジューラは、コマンドプロセッサから複数のカーネルの複数の波面を受信する(ブロック505)。第1のレベルのスケジューラは、同じ優先度を有するカーネルからの波面を同じスケジューリンググループにグループ化することによって、それぞれが同じ優先度を有するカーネルからの波面を含む、複数のスケジューリンググループを作成する(ブロック510)。次に、第1のレベルのスケジューラは、複数のスケジューリンググループから、最もスケジューリングの優先度が高いスケジューリンググループを選択する(ブロック515)。次に、第1のレベルのスケジューラは、選択されたスケジューリンググループが、現在のサイクルで実行する準備ができている波面を有するかどうかを判定する(条件付きブロック520)。選択されたスケジューリンググループに、現在のサイクルで実行する準備ができている波面がない場合(条件付きブロック520、「いいえ」の行程)、第1のレベルのスケジューラは、複数のスケジューリンググループから、次に高いスケジューリングの優先度のスケジューリンググループを選択する(ブロック525)。ブロック525の後、方法500は条件付きブロック520に戻る。選択されたスケジューリンググループが現在のサイクルで実行する準備ができている波面を有する場合(条件付きブロック520、「はい」の行程)、第2のレベルのスケジューラは、第1のレベルのスケジューラによって選択されたスケジューリンググループから実行するように波面をスケジュールする(ブロック530)。実施態様に応じて、第2のレベルのスケジューラは、最も古いカーネルの第1のスケジューリング、ラウンドロビンポリシー、または任意のその他のスケジューリングポリシーを使用して、第1のレベルのスケジューラによって選択されたスケジューリンググループからの波面をスケジュールする。また、第2のレベルのスケジューラは、波面が、選択されたスケジューリンググループ以外のスケジューリンググループから実行するようにスケジュールされないようにする(ブロック535)。ブロック535の後、方法500は終了する。
ここで図6を参照すると、優先度情報が考慮されていないか利用できない場合に、複数のカーネルからワークグループをスケジュールするための方法600の一実施態様が示されている。波面スケジューラは、コマンドプロセッサから複数のカーネルの複数の波面を受信する(ブロック605)。次に、第1のレベルのスケジューラは、同じカーネルからの波面を同じスケジューリンググループにグループ化することによって、それぞれが単一のカーネルからの波面を含む、複数のスケジューリンググループを作成する(ブロック610)。次に、第1のレベルのスケジューラは、複数のスケジューリンググループから、スケジューリングのために最も古いカーネルに対応するスケジューリンググループを選択する(ブロック615)。次に、第2のレベルのスケジューラは、第1のレベルのスケジューラによって選択されたスケジューリンググループから実行するように波面をスケジュールする(ブロック620)。また、第2のレベルのスケジューラは、選択されたスケジューリンググループ以外のスケジューリンググループからの波面が実行するようにスケジュールされないようにする(ブロック625)。ブロック625の後に、方法600は終了する。
ここで図7に目を向けると、リソース競合に基づいて波面スケジューリングを動的に抑制するための方法700の一実施態様が示されている。計算ユニットのスケジューラは、抑制なしで波面をスケジュールすることによって動作を開始する(ブロック705)。スケジューラは、計算ユニットのリソース使用率に関連する1つまたは複数の条件を監視する(ブロック710)。さまざまな実施態様では、監視される条件には、計算ユニットのストールサイクル、キャッシュミス率、メモリアクセス遅延、リンク使用率、及び/またはその他の条件が含まれる。1つまたは複数の条件が、リソース競合が第1の閾値を超えて増加したことを示している場合(条件付きブロック715、「はい」行程)、スケジューラは最も優先度の低いスケジューリンググループを抑制し、そのスケジューリンググループをスケジュール解除されたスケジューリンググループキューに入れる(ブロック720)。「スケジュール解除されたスケジューリンググループキュー」は、本明細書では「スケジュール解除されたキュー」とも呼ばれることに留意されたい。一実施態様では、閾値は事前定義されている。別の実施態様では、閾値はプログラム可能である。1つまたは複数の条件が、リソース競合が第1の閾値以下であることを示している場合(条件付きブロック715、「いいえ」の行程)、方法700はブロック705に戻る。
ブロック720の後、スケジューラは、所定の時間待機し(ブロック725)、次に、もう一度、スケジューラは、リソース競合を示す1つまたは複数の条件を監視する(ブロック730)。1つまたは複数の条件が、リソース競合がまだ第1の閾値を超えていることを示している場合(条件付きブロック735、「はい」の行程)、スケジューラは、次に優先度の低いスケジューリンググループ(つまり、通常のスケジューリングキューに残っている最も優先度の低いスケジューリンググループ)をスケジュール解除されたキューに移動することによって、次に優先度の低いスケジューリンググループを抑制する。(ブロック740)。ブロック740の後、方法700はブロック725に戻る。
1つまたは複数の条件が、リソース競合が第1の閾値以下に低下したことを示している場合(条件付きブロック735、「いいえ」の行程)、スケジューラは、1つまたは複数の条件が、リソース競合が第2の閾値を下回っていることを示しているかどうかを判定する(条件付きブロック745)。1つまたは複数の条件が、リソース競合が第2の閾値を下回っていることを示している場合(条件付きブロック745、「はい」の行程)、スケジューラはスケジュール解除されたキューから最も優先度の高いスケジューリンググループを取得し、それを通常のスケジューリングキューに戻す(ブロック750)。スケジュール解除されたキューが空の場合(条件付きブロック755、「はい」の行程)、方法700はブロック705に戻る。スケジュール解除されたキューにまだ1つまたは複数のスケジューリンググループがある場合(条件付きブロック755、「いいえ」の行程)、または1つまたは複数の条件が、リソース競合が第2の閾値以上であることを示している場合(条件付きブロック745、「いいえ」の行程)、方法700はブロック725に戻る。
ここで図8に目を向けると、実行するように複数のカーネルからの波面をスケジュールするための方法の一実施態様が示されている。プロセッサ(例えば、GPU)の計算ユニットは、複数のカーネルの複数の波面を受信する(ブロック805)。計算ユニットは、受信された波面の波面を、少なくとも部分的に共通の基準または属性に基づいてスケジューリンググループにグループ化する(ブロック810)。たとえば、一実施態様では、波面に共通の基準または属性は、カーネル及び優先度のうちの少なくとも1つである。次に、計算ユニットは、複数のスケジューリンググループから1つのスケジューリンググループを選択する(ブロック815)。次に、計算ユニットは、選択されたスケジューリンググループからのみ実行するように波面をスケジュールする(ブロック820)。ブロック820の後、方法800は終了する。方法800のステップ815及び820は、所定の選択されたスケジューリンググループからの波面が完了した後に繰り返すことができることに留意されたい。
様々な実施態様において、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載される方法及び/または機序を実装する。例えば、汎用または専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施態様において、そのようなプログラム命令は、高水準のプログラミング言語によって表わされる。他の実施態様では、プログラム命令は、高水準のプログラミング言語から、バイナリ、中間、または他の形式にコンパイルされる。代替で、プログラム命令は、ハードウェアの動作または設計を記述するように書き込まれる。このようなプログラム命令をCなどの高水準のプログラミング言語によって表す。代替で、Verilogなどのハードウェア設計言語(HDL)が使用される。様々な実施態様において、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体のいずれかに格納される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために使用される間にコンピューティングシステムによってアクセス可能である。一般的に言うと、そのようなコンピューティングシステムは、プログラム命令を実行するように構成された少なくとも1つまたは複数のメモリ及び1つまたは複数のプロセッサを含む。
上記実施態様が、実施態様の非限定的な例にすぎないことを強調しておく。上記の開示が一旦完全に理解されると、多くの変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。

Claims (20)

  1. 複数の計算ユニットと、
    前記複数の計算ユニットに結合されたコマンドプロセッサであって、前記コマンドプロセッサは、カーネルを前記複数の計算ユニットにディスパッチするように構成される、前記コマンドプロセッサと、を備え、
    前記複数の計算ユニットの各計算ユニットは、
    前記コマンドプロセッサから、複数のカーネルの複数の波面を受信し、
    前記複数の波面の波面を、少なくとも部分的に共通の基準に基づいて複数のスケジューリンググループにグループ化し、
    前記複数のスケジューリンググループから所定のスケジューリンググループを選択し、
    前記所定のスケジューリンググループからのみ実行するように波面をスケジュールするように構成される、システム。
  2. 前記共通の基準は、カーネル及び優先度のうちの少なくとも1つである、請求項1に記載のシステム。
  3. 各計算ユニットは、同じ優先度を有する波面を同じスケジューリンググループにグループ化するように構成される、請求項2に記載のシステム。
  4. 各計算ユニットは、
    前記計算ユニット上でのリソース競合を示す、計算ユニットのストールサイクル、キャッシュミス率、メモリアクセス遅延、及びリンク使用率の少なくとも1つを含む1つまたは複数の条件を監視し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第1の測定値を生成し、
    リソース競合の前記第1の測定値が第1の閾値より大きいと判定することに応じて、最も優先度の低いスケジューリンググループをスケジュール解除されたキューに移動するようにさらに構成され、
    前記スケジュール解除されたキューに格納されたスケジューリンググループからの波面は、前記計算ユニット上で実行するようにスケジュールされないようにされる、請求項1に記載のシステム。
  5. 各計算ユニットは、
    前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成し、
    リソース競合の前記第2の測定値が前記第1の閾値より大きいと判定することに応じて、次に優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動するように構成される、請求項4に記載のシステム。
  6. 各計算ユニットは、
    前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成し、
    リソース競合の前記第2の測定値が第2の閾値未満であると判定することに応じて、最も優先度の高いスケジューリンググループを前記スケジュール解除されたキューから移動するように構成される、請求項4に記載のシステム。
  7. 各計算ユニットは、前記複数のスケジューリンググループから最も優先度の高いスケジューリンググループを選択するようにさらに構成される、請求項1に記載のシステム。
  8. 複数のカーネルの複数の波面を受信することと、
    前記複数の波面の波面を、少なくとも部分的に共通の基準に基づいて複数のスケジューリンググループにグループ化することと、
    前記複数のスケジューリンググループから所定のスケジューリンググループを選択することと、
    前記所定のスケジューリンググループからのみ実行するように波面をスケジュールすることと、を含む、方法。
  9. 前記共通の基準は、カーネル及び優先度のうちの少なくとも1つである、請求項8に記載の方法。
  10. 同じ優先度を有するカーネルからの波面を同じスケジューリンググループにグループ化することをさらに含む、請求項9に記載の方法。
  11. 前記計算ユニット上のリソース競合を示す1つまたは複数の条件を監視することであって、前記1つまたは複数の条件は、計算ユニットのストールサイクル、キャッシュミス率、メモリアクセス遅延、及びリンク使用率のうちの少なくとも1つを含む、前記監視することと、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第1の測定値を生成することと、
    リソース競合の前記第1の測定値が第1の閾値より大きいと判定することに応じて、最も優先度の低いスケジューリンググループをスケジュール解除されたキューに移動することと、をさらに含み、前記スケジュール解除されたキューに格納されたスケジューリンググループからの波面は、前記計算ユニット上で実行するようにスケジュールされないようにされる、請求項8に記載の方法。
  12. 前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機することと、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成することと、
    リソース競合の前記第2の測定値が、前記第1の閾値より大きいと判定することに応じて、次に優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動することと、をさらに含む、請求項11に記載の方法。
  13. 前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機することと、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成することと、
    リソース競合の前記第2の測定値が、第2の閾値未満であると判定することに応じて、最も優先度の高いスケジューリンググループを前記スケジュール解除されたキューから移動することと、をさらに含む、請求項11に記載の方法。
  14. 前記複数のスケジューリンググループから最も優先度の高いスケジューリンググループを選択することをさらに含む、請求項8に記載の方法。
  15. メモリと、
    前記メモリに結合されているプロセッサと、を備え、
    前記プロセッサは、
    複数のカーネルの複数の波面を受信し、
    前記複数の波面の波面を、少なくとも部分的に共通の基準に基づいて複数のスケジューリンググループにグループ化し、
    前記複数のスケジューリンググループから所定のスケジューリンググループを選択し、
    前記所定のスケジューリンググループからのみ実行するように波面をスケジュールするように構成される、装置。
  16. 前記共通の基準は、カーネル及び優先度のうちの少なくとも1つである、請求項15に記載の装置。
  17. 前記プロセッサは、同じ優先度を有するカーネルからの波面を同じスケジューリンググループにグループ化するように構成される、請求項16に記載の装置。
  18. 前記プロセッサは、
    前記プロセッサ上のリソース競合を示す、計算ユニットのストールサイクル、キャッシュミス率、メモリアクセス遅延、及びリンク使用率のうちの少なくとも1つを含む1つまたは複数の条件を監視し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第1の測定値を生成し、
    リソース競合の前記第1の測定値が第1の閾値より大きいと判定することに応じて、最も優先度の低いスケジューリンググループをスケジュール解除されたキューに移動するようにさらに構成され、
    前記スケジュール解除されたキューに格納されたスケジューリンググループからの波面は、前記プロセッサ上で実行するようにスケジュールされないようにされる、請求項15に記載の装置。
  19. 前記プロセッサは、
    前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成し、
    リソース競合の前記第2の測定値が前記第1の閾値より大きいと判定することに応じて、次に優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動するようにさらに構成される、請求項18に記載の装置。
  20. 前記プロセッサは、
    前記最も優先度の低いスケジューリンググループを前記スケジュール解除されたキューに移動した後、所定の時間待機し、
    監視されている前記1つまたは複数の条件に基づいて、リソース競合の第2の測定値を生成し、
    リソース競合の前記第2の測定値が第2の閾値未満であると判定することに応じて、最も優先度の高いスケジューリンググループを前記スケジュール解除されたキューから移動するようにさらに構成される、請求項18に記載の装置。
JP2020566752A 2018-05-30 2019-03-27 マルチカーネル波面スケジューラ Active JP7320536B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/993,061 2018-05-30
US15/993,061 US12099867B2 (en) 2018-05-30 Multi-kernel wavefront scheduler
PCT/US2019/024354 WO2019231539A1 (en) 2018-05-30 2019-03-27 Multi-kernel wavefront scheduler

Publications (2)

Publication Number Publication Date
JP2021526257A true JP2021526257A (ja) 2021-09-30
JP7320536B2 JP7320536B2 (ja) 2023-08-03

Family

ID=66102796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020566752A Active JP7320536B2 (ja) 2018-05-30 2019-03-27 マルチカーネル波面スケジューラ

Country Status (5)

Country Link
EP (1) EP3803583A1 (ja)
JP (1) JP7320536B2 (ja)
KR (1) KR102586988B1 (ja)
CN (1) CN112204523A (ja)
WO (1) WO2019231539A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230305888A1 (en) * 2022-03-28 2023-09-28 Honeywell International S.R.O. Processing engine mapping for time-space partitioned processing systems
US20230305887A1 (en) * 2022-03-28 2023-09-28 Honeywell International S.R.O. Processing engine scheduling for time-space partitioned processing systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017116517A1 (en) * 2015-12-28 2017-07-06 Advanced Micro Devices, Inc. Data driven scheduler on multiple computing cores

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793294B2 (en) * 2005-02-22 2010-09-07 Northrop Grumman Corporation System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task
US8302098B2 (en) * 2007-12-06 2012-10-30 Oracle America, Inc. Hardware utilization-aware thread management in multithreaded computer systems
US8225325B2 (en) * 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
JP2010020683A (ja) * 2008-07-14 2010-01-28 Nec Electronics Corp スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム
US8285950B2 (en) * 2010-06-03 2012-10-09 International Business Machines Corporation SMT/ECO mode based on cache miss rate
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US9830163B2 (en) * 2012-06-08 2017-11-28 Advanced Micro Devices, Inc. Control flow in a heterogeneous computer system
WO2014094310A1 (zh) * 2012-12-21 2014-06-26 华为技术有限公司 资源调度的方法和装置
CN103336718B (zh) * 2013-07-04 2016-07-06 北京航空航天大学 一种gpu线程调度优化方法
CN104346220B (zh) * 2013-07-31 2017-11-03 中国科学院计算技术研究所 一种任务调度方法与系统
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
CN104503838B (zh) * 2014-11-23 2017-06-27 华中科技大学 一种虚拟cpu调度方法
CN106325996B (zh) * 2015-06-19 2019-11-19 华为技术有限公司 一种gpu资源的分配方法及系统
CN107145388B (zh) * 2017-05-25 2020-10-30 深信服科技股份有限公司 一种多任务环境下任务调度方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017116517A1 (en) * 2015-12-28 2017-07-06 Advanced Micro Devices, Inc. Data driven scheduler on multiple computing cores

Also Published As

Publication number Publication date
CN112204523A (zh) 2021-01-08
JP7320536B2 (ja) 2023-08-03
KR102586988B1 (ko) 2023-10-10
US20190370059A1 (en) 2019-12-05
KR20210013212A (ko) 2021-02-03
EP3803583A1 (en) 2021-04-14
WO2019231539A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
KR102597570B1 (ko) Gpu 태스크 스케줄링을 위한 연속 분석 태스크
US8775762B2 (en) Method and apparatus for batching memory requests
JP6495327B2 (ja) メモリコントローラにおける細粒度帯域幅プロビジョニング
US8132172B2 (en) Thread scheduling on multiprocessor systems
US20150163324A1 (en) Approach to adaptive allocation of shared resources in computer systems
Hassan et al. Analysis of memory-contention in heterogeneous cots mpsocs
JP7546669B2 (ja) マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定
KR102635453B1 (ko) Gpu를 위한 피드백 기반 분할 작업 그룹 디스패치
EP3729280A1 (en) Dynamic per-bank and all-bank refresh
US8180998B1 (en) System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US20140109100A1 (en) Scheduling method and system
WO2016202154A1 (zh) 一种gpu资源的分配方法及系统
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
JP7320536B2 (ja) マルチカーネル波面スケジューラ
CN112041822A (zh) 在服务于加速器请求时加强中央处理单元服务质量保证
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
US9940128B2 (en) Conditional access with timeout
US12099867B2 (en) Multi-kernel wavefront scheduler
US11875197B2 (en) Management of thrashing in a GPU
US11507522B2 (en) Memory request priority assignment techniques for parallel processors
US11487582B2 (en) Information processing apparatus and computer-readable recording medium having stored therein process allocation determining program
Hassan Managing dram interference in mixed criticality embedded systems
Mohamed et al. Real-time memory controller for embedded multi-core system
Samaddar et al. A new memory scheduling policy for real time systems
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230522

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230724

R150 Certificate of patent or registration of utility model

Ref document number: 7320536

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150