JP5386572B2 - マルチコアアーキテクチャにおけるスケジューリング - Google Patents
マルチコアアーキテクチャにおけるスケジューリング Download PDFInfo
- Publication number
- JP5386572B2 JP5386572B2 JP2011273805A JP2011273805A JP5386572B2 JP 5386572 B2 JP5386572 B2 JP 5386572B2 JP 2011273805 A JP2011273805 A JP 2011273805A JP 2011273805 A JP2011273805 A JP 2011273805A JP 5386572 B2 JP5386572 B2 JP 5386572B2
- Authority
- JP
- Japan
- Prior art keywords
- scheduling
- queue
- thread
- state
- configuration
- 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
Links
- 238000009826 distribution Methods 0.000 claims description 107
- 238000000034 method Methods 0.000 claims description 81
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000470 constituent Substances 0.000 claims 1
- 239000010410 layer Substances 0.000 description 193
- 238000012545 processing Methods 0.000 description 191
- 230000006399 behavior Effects 0.000 description 47
- 230000003068 static effect Effects 0.000 description 40
- 230000007704 transition Effects 0.000 description 38
- 239000003550 marker Substances 0.000 description 37
- 230000006870 function Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 30
- 230000008859 change Effects 0.000 description 27
- 240000002800 Sanicula europaea Species 0.000 description 23
- 239000011229 interlayer Substances 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 230000001419 dependent effect Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 11
- 239000004744 fabric Substances 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 229920002239 polyacrylonitrile Polymers 0.000 description 9
- 201000006292 polyarteritis nodosa Diseases 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- YKFRUJSEPGHZFJ-UHFFFAOYSA-N N-trimethylsilylimidazole Chemical compound C[Si](C)(C)N1C=CN=C1 YKFRUJSEPGHZFJ-UHFFFAOYSA-N 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 7
- 238000004220 aggregation Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 7
- 230000001052 transient effect Effects 0.000 description 7
- 241001522296 Erithacus rubecula Species 0.000 description 6
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 244000186037 Ayapana Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000011867 re-evaluation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
複数のプロセッサ要素を有するマルチコアプロセッサ内で実行可能トランザクションをスケジュールする方法であって、
実行の適格性の順に実行可能トランザクションをリストする少なくとも1つの配布待ち行列を設けるステップと、
それぞれが、実行可能な状態のいくつかの候補実行可能トランザクションの中から実行するのに最も適格な実行可能トランザクションを決定するスケジューリングアルゴリズムを含む複数の個別実行可能トランザクションスケジューラを設けるステップと、
前記スケジューラを、多重レベルスケジューラを提供するように相互にリンクするステップと、
前記多重レベルスケジューラから前記少なくとも1つの配布待ち行列に最も適格な実行可能トランザクションを出力するステップと
を備える方法である。
前記アプリケーションの実行時に実行可能トランザクションの実行を開始するステップと、
前記実行時に、新しい個別実行可能トランザクションスケジューラを動的に作成するステップと、
前記新しい個別実行可能トランザクションスケジューラを前記多重レベル階層スケジューラにリンクさせるステップと
をさらに備えてもよい。
前記新しい個別実行可能トランザクションスケジューラに1つ以上の実行可能な状態の実行可能トランザクションを割り当てるステップを含んでもよい。
前記個別実行可能トランザクションスケジューラを前記多重レベル階層スケジューラから除去するステップと、
をさらに備えてもよい。
をさらに備えてもよい。
前記実行可能トランザクションを、前記優先使用グループからの実行可能トランザクションに取って代わらせるステップと、
前記優先使用グループからの前記実行可能トランザクションの実行が完了したときに、前記関連付けられたプロセッサ要素上で前記少なくとも1つのタイムスライスグループからの前記実行可能トランザクションの実行を再開するステップと、
をさらに備えてもよい。
プロセッサ要素プールに割り振られた実行可能トランザクションの数が、前記利用可能なプロセッサ要素のごく一部分が実行可能トランザクションの実行に使用されるような数になったときに、前記プロセッサ要素プール内の前記プロセッサ要素の1つ以上を第1の節電モードにするステップ
をさらに備えてもよい。
事前定義された期間の後、プロセッサ要素プール内の前記プロセッサ要素の1つ以上を、前記第1の節電モードより多くのエネルギーを節約する第2の節電モードにするステップをさらに備えてもよい。
前記識別された変更の結果として、個別実行可能トランザクションスケジューラのために、実行可能な状態の前記いくつかの候補実行可能トランザクションの中から実行するのに最も適格な実行可能トランザクションを再決定するステップと、
をさらに備えてもよい。
再構成可能論理の構成ごとに、実行可能な状態の実行可能トランザクションをリストし、前記再構成可能なプロセッサ要素の個々の構成に割り振られる実行可能トランザクションの構成待ち行列を設けるステップと、
現在選択されている前記構成インスタンスと関連付けられた前記構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するステップと、
事前定義された閾値に達したときに、現在選択されている前記構成インスタンスを切り換えるステップと、
をさらに備えてもよい。
現在選択されている前記構成と関連付けられた前記構成待ち行列の内容の出力を停止するステップと、
利用可能な前記構成インスタンスの別の1つを選択し、前記再構成可能論理の前記構成を、前記選択された利用可能な前記構成インスタンスの別の1つに変更するステップと、
前記新しく選択された構成インスタンスに関連付けられた前記構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するステップと、
をさらに備えてもよい。
複数のプロセッサ要素を有するマルチコアプロセッサ内でアプリケーションを定義する実行可能トランザクションをスケジュールする方法であって、
実行可能トランザクションスケジューラの階層を維持するステップを備え、前記階層が、使用時の前記アプリケーションの要件に従って実行可能トランザクションをスケジュールするように適合され、前記スケジューラ階層の各レベルが少なくとも1つのスケジューラを備え、前記少なくとも1つのスケジューラが、前記実行可能トランザクションを、前記プロセッサ要素の1つ以上での実行に最も適格なトランザクションの順にソートするための少なくとも1つの規則を備える方法である。
少なくとも1つのプロセッサ要素プールとして構成されている、それぞれが少なくとも1つの節電モードを有する複数のプロセッサ要素を有するマルチコアプロセッサにおいて電力消費を管理する方法であって、
前記プロセッサ要素プールに割り振られた実行可能トランザクションの数が、前記利用可能なプロセッサ要素のごく一部分が実行可能トランザクションの実行に使用されるような数になったときに、前記プロセッサ要素プール内の前記プロセッサ要素の1つ以上を第1の節電モードにするステップをさらに備える方法である。
複数のプロセッサ要素を有するマルチコアプロセッサにおいて実行可能トランザクションをスケジュールする方法であって、前記マルチコアプロセッサ内の少なくとも1つのプロセッサ要素が、実行時に再構成可能である再構成可能論理を含み、
再構成可能論理の構成ごとに、実行可能な状態の実行可能トランザクションをリストし、前記再構成可能なプロセッサ要素の個々の構成に割り振られる実行可能トランザクションの構成待ち行列を設けるステップと、
現在選択されている前記構成インスタンスと関連付けられた前記構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するステップと、
事前定義された閾値に達したときに、現在選択されている前記構成インスタンスを切り換えるステップと、
を備える方法である。
ディジタル論理によって実行されると、上記一態様のいずれかの方法を実行する命令を備えるコンピュータプログラムである。
コンピュータによって実行されると、上記一態様のいずれかの方法を実行する命令を含むコンピュータ可読媒体である。
図1に、マルチコアシステムにおけるタスクまたはスレッドの管理のためにSystemWeaverで実施されるものと類似のタスク状態図を示す。
−アプリケーションスケジューリングは、同期および適格性を備える。同期は、システム内のリソースが、データおよび、おそらく、システム全体の保全性を損なうことなく共用され得るよう保証する。適格性は、作動可能タスクが、スケジューリングポリシーで表されるアプリケーションの必要と整合する方法で処理リソースに発行されるよう保証する。
−プラットフォームベースの/配布スケジューリングは、アプリケーションタスクが適切な処理リソースインスタンス間で配布されるポリシーを定義する。これは、複数のユーザおよび/または複数の異なるアルゴリズム間で処理リソースを共用することを示唆してもよい。
−スループット− 毎秒行われ得るスケジューリング決定の数
−待ち時間− システム内のイベントと、そのイベントに関連付けられたスケジューリング操作の完了の間に経過する時間
−予測可能性/決定性− システムが、あらゆる環境下でどのようにして振る舞うか決定する能力
−効率性− 任意の所与のスケジューリングアルゴリズムがその範囲内で実施され得る効率性。これは、1決定当たりの命令数(命令セット効率の測定値)および/またはシリコンフットプリント(メモリその他のダイ面積)として測定され得る。
−ポリシー− サポートされるポリシーの多様性およびそれらを組み合わせて複雑な階層を形成することのできる能力。
サーバコアとクライアントシムという、SystemWeaverの2つの主要な構成要素がある。これらは様々な方法で接続され得る。SystemWeaver対応システムは、サーバコアと、少なくとも1つのクライアントシムとを備えるはずである。
SystemWeaverコアは、ハードウェアエンジンと密結合メモリとを備える。メモリは、スケジューリング構成と、システム内の作業単位を表すのに使用される動的記述子とを含む。各SystemWeaverコアは、命令セットベースのアーキテクチャとすることも、ハードウェアアクセラレータとすることもできる複数のクライアントにまたがって集約される。SystemWeaverは、以下の2つの論理的に別個のデータパスを介して各クライアントと個別にやりとりする。
−クライアントに、注意を必要とするシステム状態の変更を知らせる帯域外信号。SystemWeaverコアは、通常、割り込みとして実施される(これ以降仮定される)このインターフェースのマスタである。
−クライアントがそれを介してSystemWeaverに応答させることのできるデータパス。クライアントは、バス、二重シリアルインターフェースまたは他の任意の双方向実装として実施され得るこのインターフェースのマスタである。
従来の構成では、各クライアントは、個別のクライアントシムを有するが、より保守的な実装形態では、複数のクライアントにわたってクライアントシムを集約することもある。クライアントシムは、ハードウェアとしてもソフトウェアとして実施され得る。図3に、以下のソフトウェアクライアントシムの基本要素を示す。
−SystemWeaverHALは、SystemWeaverコアのレジスタインターフェースに必要なコマンドフォーマット設定を実施する。
−SystemWeaverAPIは、アプリケーションが、タスクベースの抽象化においてSystemWeaverコアへの呼び出しを行うことを可能にする。
−ユーザスレッドは、SystemWeaverタスク管理機能を使用するアプリケーションスレッドである。任意の時点において、ただ1つのユーザスレッドだけが、直接、各個別クライアントの管理下にある。
−クライアントシムは、帯域外信号サービス(通常は、割り込みサービス)を処理する。主として、クライアントシムは、処理リソースインスタンス内のコンテキストを管理し、タスク切換えおよび優先使用を介して保全性が保存されるようにする。通常、クライアントシムは、アーキテクチャ上不可知の部分および命令セットアーキテクチャ特有の部分を含む。
−アイドルエージェントは、個別処理リソースインスタンスの電源遮断モードまたはマクロアーキテクチャを処理する管理タスクを実施する。
−内部で処理リソースインスタンスが実行されている「コンテキスト」(従来のプロセッサでは、コンテキストは、プロセッサスタック空間および内容、レジスタ値、プログラムカウンタなどを含むことができる)の管理(適切な時刻における割り振り、格納および復元)。内部でユーザタスクが実行されるコンテキストであるユーザまたはタスクコンテキストと、クライアントシム管理操作専用のコンテキストである処理インスタンス特有のコンテキストという、2種類のコンテキストがある。
−動作モードの管理(従来のプロセッサでは、いくつかの重要なシステムリソースにアクセスする権限を定義する、ユーザ(通常)モードおよびスーパバイザ(特権)モードが利用可能である。例えば、スーパバイザモードタスクとは異なり、ユーザモードタスクには、処理リソースを共用する他のユーザモードタスクに悪影響を及ぼし得るリソースへのアクセスは許可されない)。
−「アイドル」状態− アイドル状態の間、ユーザ定義のアルゴリズムは、エンド処理リソースインスタンスによって供与される電源遮断モード(例えば、クロックゲーティングや他の低電力状態)あるいはシステムアーキテクチャ全体によって供与される電源遮断モード(例えば、クロックゲーティングや、個々の処理リソースインスタンスへの電力供給の低減または除去)を利用することができる。この状態の間、処理リソースインスタンスは、特権モードで動作することができ、処理リソース特有のコンテキストを使用することになる。
−「クライアントシム」状態− クライアントシム状態は、ユーザおよびアイドルタスクの実行コンテキストを管理する。「クライアントシム」状態にあるとき、クライアントシムは、実行を終了しており、取って代わられており、またはブロックしている任意のタスクのコンテキストを保存し、次の実行タスクのコンテキスト(アイドルタスクの場合には、これは、処理リソースインスタンス特有のコンテキストである)を回復し、または作成する。この状態になる間、処理リソースインスタンスは、特権モードで動作してもよい。場合によっては、クライアントシムは、処理リソース特有のコンテキスト、あるいはユーザまたはタスクコンテキストのどちらかで動作してもよい。
−「ユーザ」状態− 「ユーザ」状態にあるとき、クライアントシムは、ユーザアプリケーションコードを実行する。この状態にある間、処理リソースインスタンスは、通常、「ユーザ」モードまたは「通常」モードで動作するはずである。「ユーザ」状態は、完全にユーザまたはタスクコンテキスト内で動作するはずである。
−「SyWAPI」状態− ユーザタスクがSystemWeaverコアとの対話を必要とする場合、ユーザタスクは、「SyWAPI」へのクライアントシム状態変更を生じさせるSystemWeaverAPIを介して対話する。この状態にある間、処理リソースインスタンスは、特権モードで動作してもよい。「SyWAPI」状態は、完全にユーザまたはタスクコンテキスト内で動作するはずである。
以下の項では、SystemWeaverスケジューラの動作を理解するのに必要とされる概念を論じる。
SystemWeaverは、接続された密結合メモリを必要とし、スケジューリングポリシー格納のためにこのメモリを使用することで、システム開発プロセス全体を通しての完全なスケジューリング変更および柔軟な調整が可能になる。SystemWeaverメモリは、SystemWeaverメモリ要素(WME)に分割される。WMEは、以下で論じるタスクおよびスケジューリング記述子を表すのに使用される。
タスク記述子は、SystemWeaverアーキテクチャの基本「通貨単位」である。タスク記述子は、スケジューリング階層内で構成された規則に従って処理リソースインスタンスへのアクセスを求めて競合する作業単位を表す。タスク記述子は以下のものを含む。
−実行されるべきタスクへの参照およびタスクがそれに対して実行されなければならないデータセットをさらに含む、タスク制御ブロックへの参照。
−タスクの適格性を定義するスケジューリングメトリック。
−また、最初にブロックされるタスクのための同期参照およびタイムアウトが含まれてもよい。ブロックされるタスク挙動の詳細な説明は、本明細書の範囲外である。
−タスク記述子が(おそらく、同期後に)そこに追加されなければならないスケジューリング階層の部分を定義する「入口ノード」への参照。
スケジューリングおよび配布コーンという2種類のコーンを使って、SystemWeaverスケジューリング挙動が記述される。スケジューリングコーンは、多数の「入口」点から単一の集約点に収束するスケジューラの階層、すなわち多対1マッピングを記述するのに使用される。配布コーンは、単一の集約点から多数の「ディスパッチ」点へと発散するスケジューラの階層、すなわち、1対多マッピングを記述するのに使用される。
(図5に赤で示す)スケジューリングコーンは、図2の作動可能状態内の「アプリケーションスケジューリング」としても示す)アプリケーションの必要によって駆動される、「アプリケーション決定ノード」階層を定義する。スケジューリングコーンは、複数のタスククラスおよびタスククラスの複数のインスタンスがシステムリソースを求めて競合するための規則を定義する、多対1マッピングである。
(図5に紫で示す)配布コーンは、(図2の作動可能状態内の「配布スケジューリング」としても示す)主に、基礎ハードウェアプラットフォームの特性によって駆動される、「配布決定ノード」階層を定義する。配布コーンは、スケジューリングコーンの最も適格な候補を利用できる適切な処理リソース間で分配するための規則を定義する。
スケジューリング構成を記述するのに使用される3つの1次ノードがあり、それらは、入口ノード、配布ノードおよびディスパッチである。1次ノードは、スケジューラの詳細な実装をより綿密に反映する、基礎をなす2次ノード構造の上のオーバーレイである。
入口ノードは、新規タスクが待ち行列に入れられる点を定義する。入口ノードは、通常、スケジューリングコーンの両極端として配布ノード上に多対1でマップする。入口ノードは、特定のタスククラスに関連付けられてもよく、他のアプリケーション駆動ポリシーに従ってもよい。所与の入口ノードは、単一の配布ノード上にのみマップし得る。
配布ノードは、スケジューリングと配布コーンの間の記述を定義する。配布ノードは、通常、処理リソースのクラスを表す。スケジューリングコーンは、通常、単一の配布ノード上に1つ以上の入口ノードをマップし、配布コーンは、通常、複数のディスパッチノード、従って最終的には処理リソースインスタンス上に、単一の配布ノードをマップする。
ディスパッチノードは、個別処理リソースインスタンスに関連付けられた出口点を定義する。ディスパッチノードは、通常、ハードウェアプラットフォーム内に存在するIPコアと1対1でマップする(但し、ハードウェアマルチスレッドプロセッサコアには、複数のディスパッチ待ち行列が割り振られてもよい)。複数の配布コーンが個別ディスパッチノード上にマップしてもよい。
2種類の決定ノード、すなわち、アプリケーション決定ノードおよび配布決定ノードが定義される。アプリケーション決定ノードおよび配布決定ノードは、スケジューリング層上に直接マップするが、これらは、スケジューラ実装内の基礎をなす層の数または種類を網羅的に定義するものではない。
アプリケーション決定ノードは、スケジューリングコーン内の中間スケジューリング点または集約点を定義する。各アプリケーション決定ノードは、1組の候補のうちで最も適格な候補を選択するための規則を定義する。
複数の配布ノードが単一のディスパッチノード上にマップする場合、処理リソースインスタンスにアクセスすることのできる配布コーンを決定するポリシーを設定するために、配布決定ノードが必要とされる。
作動可能状態構造(図2)は、実行可能な状態のスレッドを含む。作動可能状態構造全体でとしては、多数のスケジューリングおよび配布コーンを備えることができる。これらのスレッドは、独立のスレッドプリミティブを用いて作成された(すなわち、作動可能状態において作成された)ものであり、またはこれらが依存する同期プリミティブまたはタイムアウトを受け取っているものである。同期スレッドは、以前に、ブロック状態から遷移している。
スケジューラ層は、スレッド記述子をスケジュールするのに使用される階層を定義する。各スケジューラ層は、通常、スケジューリングアルゴリズム、スケジューリング決定を行うのに使用されるいくつかのメトリック、メトリックがどのようにして子から親に伝搬されるか定義するのに使用される継承ポリシー、および別のスケジューラ層またはスレッド記述子とすることのできる子要素のリストを定義する。3種類のスケジューラ層記述子があり、それらは、ルート、静的および動的である(動的層は、特殊な種類の静的スケジューリング層である)。図7に、スケジューリングコーン実装の一例を示す。図36に、図7以後のすべてのスケジューリング図での図参照凡例を示す。
スケジューラルート記述子は、ディスパッチ待ち行列との1対1マッピングを有する。スケジューラルート記述子は、作動可能状態構造における最終ノードを表す。ルート記述子メトリックは、常に、定義された継承ポリシーに従って作動可能状態構造から導出されるメトリックのコピーを含む。
スケジューラ静的記述子は、スケジューリング階層のルートノード下に存在する。静的スケジューラ記述子の親は、他の静的スケジューラ記述子とすることも、ルート記述子とすることもできる。スケジューラ静的記述子は、その親によって定義されるスケジューラアルゴリズムおよび独自のスケジューラメトリックに従って兄弟ノードと競合する。
スケジューラ動的記述子は、スケジューリング階層のルートノード、および、場合によって、静的ノードの下に存在する。動的スケジューラ記述子の親は、静的スケジューラ記述子とすることも、ルート記述子とすることもできる。動的スケジューラ記述子は、その親によって定義されるスケジューラアルゴリズムおよび独自のスケジューラメトリックに従って兄弟ノードと競合する。
プロセッサリソースプールは、特定の処理リソースのインスタンスの単一の配布ノードへの集約を可能にする。その場合、配布ノードは、処理リソースプールの個別メンバにまたがって負荷均衡化、インテリジェント優先使用および電源管理を提供してもよい。
プール接続ノード(PAN)は、スケジューラルート層を処理リソースプールルート層に接続するのに使用される。PANは、スケジューラルート層内に存在しなければならない(すなわち、その親は、スケジューラルートノードでなければならない)。動作時に、PANメトリックは、スケジューリングコーンから継承されたものである、プールルートノード(PRN)のメトリックのコピーで自動的に更新される。
プール静的ノード(PSN)は、スケジューラルート層を処理リソースプールルート層に接続するのに使用される。プール静的ノードは、プールルート層内に存在し(すなわち、その親はPANでなければならない)、ディスパッチノード(すなわち、現在実行中のスレッド)のメトリックのコピーを自動的に保持する。
各処理リソースプールごとに1つのプールルートノード(PRN)がある。プールルートノードは、処理リソースプールの配布ノードを定義する。PRN内のメトリックは、配布ノードに関連付けられたスケジューリングコーン内で保持される最も適格なスレッドを反映する。PRN親ポインタは、プール静的ノードの1つを指し示すように設定されなければならない。
SystemWeaverは、実行時におけるスケジューリングノードの作成および削除をサポートすると共に、喪失や順序付け間違いなしで、ある入口ノードから別の入口ノードにタスククラスを移行させる機能も提供する。動的スケジューラ構成を論じるときには、さらに2つの概念、休止スケジューリング層およびマーカスレッドを導入しなければならない。
−休止スケジューリング層は、階層内に存在し、プッシュ操作を受け入れてもよい(すなわち、子エントリを蓄積してもよい)が、スケジューリングには不適格であり、したがって、決してポップされることがない。
−マーカスレッドは、それらがスケジューリング階層の特定の部分に依存する最後のスレッドであるときに限ってスケジュールされる。スケジューリング階層の一部に依存するスレッド数は、作動可能なスレッドの数、および、作動可能になったときにスケジューリング階層のこの部分を使用することになるブロックされたスレッドの数を含む。マーカスレッドは、他の任意のスレッドと同様にタスク参照を保持することができ、通常は、スケジューリング階層のある部分と別の部分の間の遷移操作の管理を完了するのに使用される。
適切な操作シーケンスが確実に順守されるようにするのは、上位レベルのソフトウェアの役割である。このシーケンスを遵守し損なうと予期しない挙動を生じることがあり、特に、新しいスレッドは、マーカスレッドが挿入されているスケジューリング階層の一部に導入されてはならない。
−休止スケジューラ階層h2を作成する。
−tstream上のすべての新しいタスク記述子をh2に割り当てる。
−マーカスレッドをh1に挿入する。
−マーカスレッドの出現を待ち受ける。
−休止階層h2を覚醒させる。
スケジューリング解析は多くの形(EDF、RMAなど)を取り、通常は、アプリケーション、または少なくともセクタに特有のものである。スケジューリング解析の結果は、静的または動的にアプリケーションの実行時配置を制御する1組のポリシーである。その一意のマイクロアーキテクチャを介して、SystemWeaverは、これらの事前定義されたポリシー/アルゴリズムを、実行時に効率よく実行する。
SystemWeaverは、シリコン設計時に、アーキテクチャまたは実装を中断せずに、専門化されたアルゴリズムが定義され得るように設計される。しかしながら、以下のように、いくつかのアルゴリズムがデフォルトで提供される。
−FIFOスケジューリング:単純な先入れ先出し待ち行列法。
−優先度スケジューリング:最も適格な候補が、最高(昇順の優先度)または最低(降順の優先度)の優先度メトリックを有する。
−ラウンドロビン:スケジューリング階層からタスクがポップされるときにスケジューリング決定を次のピアに更新する。ラウンドロビンは、スケジューリング階層の「左端」にある関連するスケジューリングポリシーではないことに留意されたい。
−重み付き公平待ち行列法:適格な候補が、割り当てられた重みおよび何らかの負荷尺度(すなわち、パケット長)に従って選択される複雑なスケジューラ。
スケジューリングアルゴリズムは、さらに、以下の個別のスケジューリングおよびメトリック演算子に分解され、これらは2つとも親ノード内で定義される。
−スケジューリング演算子:子ノード内に格納されるオペランドを使って最も適格な候補を決定する方法を定義する。スケジューリング演算子は、子ノード内のオペランドを変更しない。
−メトリック演算子:最も適格な子のオペランドが、親のオペランドに伝搬される方法を定義する。伝搬演算子は、ヌル(親への更新なし)、コピー(親のオペランドの上書き)とすることもでき、子および親オペランドの一部または全部に対する数学的演算が関与してもよい。いかなる場合にも、子オペランドは変更されない。
スケジューリング演算子は、拡張可能であるように設計されるが、デフォルト演算子の選択が定義される。スケジューリング演算子は、通常、比較によるものであり、したがってその結果は常にブール値である。以下の表において、Mは、以下の方式に従って、スケジューリング層のメンバまたはスケジューリング層記述子自体における2つのメトリックの1つを表す。
−Mcurrentnは、現在最も適格な候補に属するメトリックを指す。
−Mcandidatenは、スケジューリング更新の過程で現在の記述子が比較される相手の候補に属するメトリックを指す。
−Mtiernは、現在および候補の記述子の接続先のスケジューラ層記述子に属するメトリックを指す。
また、複合スケジューリング演算子も利用可能であり、それらは、表1のスケジューリング演算子の組み合わせである。例えば、次式の通りである。
必要な更新=(MCURRENT0>MCANDIDATE0)&&(MCURRENT1<MCANDIDATE1)式中、問題のパラメータは、親と子両方の記述子メトリックを利用することができる。これらの複合演算子は、従来のスケジューリング層とプール配布層の両方で使用され得る。
メトリック演算子は、事実上に算術的である。スケジューリング演算子と同様に、メトリック演算子は、拡張可能であるように設計されるが、1組のデフォルト演算子を有する。表2を参照されたい。メトリック演算子の複雑度の幅は、ヌルまたは単なるコピー演算から複雑な積和演算にまで及ぶ。
スケジューリングオペランド、またはメトリックは、以下の2つのグループに分けられる。
−ローカルメトリックは、処理リソースインスタンス、スケジューラ層およびスレッド記述子と関連付けられる。ローカルメトリックの操作は、自動的に、再スケジュールイベントを発生させる。
−グローバルメトリックは、場合によって、通常は、システムリソース状態(バス使用度やフリーメモリなど何らかのヒューリスティックス)と関連付けられる。
−Metric1IsGlobalがリセットされるとき、メトリック1はローカルであり、スケジューリング操作においてリテラルとして使用される。
−Metric1IsGlobalが設定されるとき、メトリック1は、グローバルメトリックポートの配列へのインデックスである。
タスク記述子もスケジューリング層記述子も2つの32ビットオペランド、すなわちスケジューリングメトリックを含む。これらのオペランドは、スケジューリング操作時に、それぞれの親によって使用され、後続の階層上位のスケジューリングのために、スケジューリング操作時に変換され、かつ/または親のオペランドに伝搬されてもよい。
グローバルメトリックは事実上受動的であり、グローバルメトリック値の変更は、すべての潜在的に影響を受けるスケジューリングリソース上での再スケジュールイベントを発生させない。グローバルメトリックは、他の何らかのイベントの結果として、従属スケジューリングリソースがスケジュールされるときに問い合わせを受ける。SystemWeaverアーキテクチャは、グローバルメトリックの使用に対しては制限を課さないが、グローバルメトリックは、システムヒューリスティックス(バス利用度、ある時間枠にわたるメモリフィルなど)に使用されてもよく、したがって、変化率は比較的低くなる。また、データを平均化するためにフィルタが適用されてもよい。
以下の各項で参照するすべての構成図で、図36に示す共通フォーマットを使用する。
スケジューリング層は、到着順に、またはデフォルトのFIFO待ち行列ポリシーに従ってエントリを格納する。定義されたスケジューリングポリシーがこの構造上にオーバーレイされる方法については、後述する。新しいノード(または記述子)がプッシュ操作によって層内構造に追加され、ポップ操作の結果として除去される。スケジューリング操作は、層内リンクを操作しない。
プールルート層を除く、層間リンクの構造を図12に示す。各層は、スケジューラルートノードまたはスケジューリングノードでなければならない、親ノードを持つ。これらのノードは、この層の最も適格なメンバを指し示すポインタを格納する。これらの子ポインタは、親ノード内と子ノード内でそれぞれ定義されるスケジューリングポリシーおよびメトリックに従ってスケジューリングイベントの受け取り時に更新される。
プールルート層構造は、層が、単一の入口ノードおよび多くの出口ノードを持つ特殊な場合である。入口ノードは、(図2の作動可能待ち行列構造の「アプリケーションスケジューリング」部分によって示されるように)スケジューリングコーンが収束する点であり、「配布ノード」ともいう。「出口ノード」は、タスクがそれらを介して配布され得る処理リソースインスタンスのためにプールルート層を「配布スケジューリング」構造にリンクさせる。図13に、2つの処理リソースインスタンスを含むプールでのこの種の構造の図を示す。
以下の項では、SystemWeaverスケジューリングの挙動を説明する。
以下の各項では、SystemWeaverスケジューリングアーキテクチャの主要な基本原則の一部を説明する若干の基本背景情報を示す。
図2に詳しく示すように、SystemWeaver内には複数の潜在的待ち行列点があるが、これらはポインタのみを使って実現される。待ち行列に入れられたエンティティ、SystemWeaverメモリ要素(WME)は、決してコピーされない。
SystemWeaverは、システム状態の何らかの変更によってそうすることが必要とされたときにのみスケジューリング決定を更新する。状態の変更は、以下の3つのイベントクラスに分けることができる。
−「プッシュイベント」、システム状態の変更が、作動可能待ち行列構造への新しいスレッド記述子(これは、新しいスレッド記述子とすることも、システム状態の変更が、そのスレッドを作動可能させている既存のスレッド記述子とすることもできることに留意されたい)の導入を生じさせている。
−「ポップイベント」、システム状態の変更が、作動可能待ち行列構造からのスレッド記述子の除去を発生させている。
−「更新イベント」、スケジューリングパラメータが変更され、スケジューリング決定の再評価を必要としている。
−割り込み(すなわち、「プッシュイベント」。割り込みに関連付けられるブロックされたスレッドが作動可能状態に移行するため)。
−実行中のタスクによって作成された新しいタスクの到着(これは、新しいタスクが他の要因またはイベントに依存しない場合には、プッシュイベントとすることができる)。
−同期イベント。例えば、セマフォ信号など(信号を待ち受けてブロックされている信号があると仮定すると、これは、「プッシュイベント」である。なぜなら、ブロックされたスレッド記述子が、作動可能状態に遷移するからである)。
−タスクの実行「優先度」の変更、「更新イベント」。
−処理リソースインスタンス内のタスクの消費(作動可能状態から実行状態への遷移)(「ポップイベント」)。
−タスクのスケジューリングメトリックの変更(「更新イベント」)。
−スケジューラ層のスケジューリングアルゴリズムまたはメトリックの変更(「更新イベント」)。
−スケジューラ階層自体の変更(「更新イベント」)。
所与のスケジューリング層の待ち行列に入れられた新しいエントリが、現在最も適格な(エントリであると親HeadIndexによって識別されている)エントリとのみ比較される。層スケジューリングポリシーにより、それらが現在の先頭より適格である場合には、HeadIndexフィールドが、新しいエントリを参照するように更新される。新しいエントリは、常に、現在のリンクリスト構造の後に配置される。
リアルタイムデッドラインを満たすようにシステムを解析する多くの方法があり、その例としては、EDF(Earliest Deadline First)方式やRMS(Rate Monotonic Scheduling)や、他の様々な確率論的な方法がある。これらの手法は、アプリケーション特有であり、おそらくは、事実上、固有のものである傾向がある。しかしながら、いかなる場合にも、このようなスケジューリング解析の結果は、1組のスケジューリングポリシー(すなわち、優先度、FIFO、ラウンドロビン、重み付き公平待ち行列法)をもたらし、それらは、実行時に効率よく配置されなければならない。SystemWeaver技術は、スケジューリング解析によって識別されるポリシーの効率のよい実行時実行を目標とするものである。SystemWeaver内の配置のために、各スケジューリングポリシーは、さらに、1組のスケジューリング演算子に復号化される。
スケジューリングメトリックは、選択されたスケジューリングアルゴリズムによって必要とされ得る情報を格納し、その最も基本的な例が優先度である。その情報を、後続のスケジューリング決定において直接、またはメトリック更新操作でのオペランドとして使用することができるように、メトリックを、最も適格な候補から親ノードに転送する必要がある場合もある。メトリック伝搬演算子は、プッシュとポップ両方のシナリオで、これがどのようにして達成されるかを定義する。
以下の項では、実行時にスケジューリングアルゴリズムを実施するのに使用される様々なリソースを説明する。
スケジューラ層は、図6の、スケジューラルートノードとすることのできる親、プールルートノードまたは基本スケジューリングノードおよびいくつかの子からなる。子は、基本スケジューリングノード、スレッドまたはタスク記述子またはプール接続ノードとすることができる。子ノードを、それら自体の権限におけるスケジューリングノード(すなわち、さらなるスケジューラ層の親ノード)とし得るようにすることにより、複雑なスケジューラ階層が構築され得る。
プール配布層は、プールルートノード(1つのみ)とプール静的ノードだけを含んでいてもよい。1つの処理クラス当たりただ1つのプールルートノードがある。
−スケジューラ演算子:現在実行中のタスクが取って代わられるべきかどうか決定するスケジューリングポリシーを定義するのに使用される。
−メトリック伝搬演算子:ディスパッチ待ち行列記述子にはメトリック伝搬演算子はない。
−メトリック:メトリック要素は、通常、現在実行中のスレッドのメトリックを格納する。
−スケジューラ演算子:スケジューリングコーンの最も適格な候補を決定するのに使用される。
−メトリック伝搬演算子:これらは、常に、スケジューリングコーンの最も適格な候補のメトリックを継承するように設定される。
−メトリック:スケジューリングコーンの現在最も適格な候補のメトリックを保持する。
−スケジューラ演算子:接続された層から最も適格な子候補を決定するのに使用される。
−メトリック伝搬演算子:ユーザ定義される。後続のスケジューリング段の必要に従って設定される。
−メトリック:ユーザ定義される。後続のスケジューリング段の必要に従って設定される。メトリック伝搬演算子の中には、これらのフィールドを自動的に更新するものもあることに留意されたい。
−スケジューラ演算子:プール配布層における優先使用に最も適格な候補を決定するのに使用される。
−メトリック伝搬演算子:実行タスクメトリックの伝搬を決定するのに使用される。
−メトリック:プール配布アルゴリズムの必要に従って設定される。デフォルトでは、これらは、現在実行中のスレッドのメトリックを反映するが、いくつかの配布戦略では、静的割り振りが必要とされることもある。
−スケジューラ演算子:使用されない。
−メトリック伝搬演算子:最も適格なタスクメトリックの伝搬を制御するのに使用される。
−メトリック:関連するプールルートノードに接続されたスケジューリングコーンの最も適格なタスクのメトリックを格納するのに使用される。
−メトリック:スケジューリングでのタスクの適格性に直接関わる情報またはスケジューラがそこから適格性を計算することのできる情報を伝えるのに使用される。
スケジューリング操作は、以下の2つのサブカテゴリに分けられる。
−標準層スケジューリング、スケジューラ層内の1つ以上のエントリが、層内で最も適格なエントリと競い合う。
−プール配布スケジューリング、選ばれた処理リソースインスタンスのどれが割り込まれるべきか識別すること。
前述のように、システム状態の変更は、「プッシュイベント」または「ポップイベント」を発生させることがある。すなわち、これらのイベントは、再スケジュールを発生させる。すべてのスケジューリング操作は処理保存的である。所与のイベントからおそらく影響を受けるはずのスケジューリング階層の部分だけが再評価され、これらを、再スケジューリング範囲内に存在するという。図17に、基本スケジューリング階層上のイベントでの再スケジューリング範囲を示し、図18に、単純な2インスタンス処理リソースプールでの再スケジューリング範囲を示す。
層スケジューリングは、SystemWeaverスケジューリングアルゴリズムの最も基本的な構成要素である。スケジューリングイベントは、ユーザ構成可能スケジューリング階層によって定義される連続した層スケジューリング操作を生じさせることができる。各層スケジューリング操作の結果は、親スケジューラ(スケジューリングノードまたはスケジューラルートノード)HeadIndexポインタの更新である。また、親スケジューラのメトリックも、定義されたメトリック伝搬アルゴリズムに従って更新され得る。
−プッシュまたはポップ操作とすることのできるイベント
−イベントの種類(プッシュまたはポップ)に関連付けられたスケジューリングアルゴリズム
−層メンバのメトリック
プール配布スケジューリングは、プール配布層内でのみ行われる。基本層スケジューリングは実行するのに最も適格なスレッド/タスク候補を見つけようとするが、プール配布スケジューリングは、優先使用に最も適格な処理リソースインスタンス候補を見つけようとする。通常、これは、リソースプールの最も適格性の低いタスクを実行中の処理リソースインスタンスを識別し、それと、接続されたスケジューリングコーンからの最も適格な「作動可能」タスクのメトリックとを比較することを意味する。
優先使用スケジューリングは、現在実行中のタスクが、より適格な(優先度の高い)タスクによって非同期的に割り込まれることを可能にする。優先使用は、実行側処理リソースおよびコンテキストのいくつかの要求、例えば、状態を格納し、優先使用タスクがそのリソースから出た後で再開できることなどを行う。通常、優先使用可能なタスクまたはスレッドは、作動可能状態および実行状態を通じて同じスケジューリング適格性を保持する。
メトリック伝搬は、実行タスクまたはスレッドのメトリックにおけるスケジューリングイベントまたは変更によって引き起こされ得る。
スケジューリングイベントの結果として親のスケジューリング層へのHeadIndexが更新されるとき、親層における定義されたメトリック伝搬演算子に従って、メトリックが、最も適格な子メトリックから親メトリックに伝搬される。これらは、操作(プッシュまたはポップイベント)の性質に依存し、その複雑度の幅は単純なコピーから積和にまで及ぶ。
現在実行中のスレッドのメトリックは動的に変更されてもよい。これは、ロックされたリソース上での優先度逆転条件を除去するのに使用されてもよい。実行処理リソースインスタンスが配布コーンに関与していない場合、ディスパッチ待ち行列記述子メトリックのみが更新される。配布プールの場合、実行メトリックは、処理リソースインスタンスに関連付けられたプール静的ノードに伝搬される(図21)。PSNメトリックの更新は、PSN自体の内に保持されるメトリック伝搬演算子によって制御される。いくつかのスケジューリングシナリオでは、静的値がプール静的ノード内において永続的でなければならない。
処理リソースインスタンスは、アイドル状態に入るときに、実行メトリックを使ってスケジューリング構造を知らせる。本質的に、アイドル処理リソースインスタンスとは、可能な限り優先度の低いタスクを「実行している」ものであり、したがって、任意のタスクの到着によって取って代わられることになる。実行メトリックのアイドル値への設定は、通常の方法での再スケジューリングイベントを促し、それによって、作動可能状態構造においてこの処理リソースインスタンスを待ち受けるタスクによるアイドルタスクの「強制排除」を引き起こす。
いくつかの拡張モードおよび挙動が、固有に、またはいくつかのSystemWeaver構成を用いることによって可能である。以下の項では以下の各モードを説明する。
SystemWeaverシステムは、主として、イベント駆動型であるが、タイムスライシングなど、従来のタイマベースのシステムが利用可能である。タイムスライスされたタスクは、タスクが処理リソースを占有してよい間隔を(この間隔の間に優先使用タスクが作動可能になることはないと仮定して)決定する個別のタイムスライス期間に従って処理リソースを共用する。
以下の項では、SystemWeaverサーバコア内のタイムスライス機能を実施するのに使用されるリソースを論じる。
SystemWeaverコア内では、タイムスライス挙動を円滑化するために処理リソースインスタンスごとのカウンタが使用される。また、システムクロックによって供給される単一のプリスケーラも設けられる。プリスケーラのビット分解能は、チップ設計時に設定される。
処理リソースインスタンスごとの割り込み状況レジスタ内の状況ビットがタイムスライス挙動のために設けられる。この状況ビットは、タイムスライスカウンタの有効期限を登録し、ソフトウェアによって、タイムスライスイベントが発生しているかどうか決定するのに使用され得る。
タイムスライスグループ内のすべてのタスクは、同じ優先度および同じ親スケジューリング層を共用しなければならず、さらに、タイムスライスタスクは、他の非タイムスライスタスクとスケジューリング層を共用すべきではない。タイムスライス親のスケジューリングアルゴリズムは、FIFOに設定されるべきである。図23に、タイムスライスグループが、バックグラウンドにおいて、フォアグラウンドの、イベント駆動型タスクのグループと共に動作し、サービスを必要とするときに優先権を得る、典型的なタイムスライス構成を示す。
タイムスライスタスクが最初に実行を開始するとき、システム規模のタイムスライス値が、処理リソースインスタンスに関連付けられたタイムスライスカウンタにコピーされる。タイムスライスタスクが、その「通常の」実行状態に入るという(図24)。通常の状態において、各サイクルはこのカウンタを減分する。0に達すると、(ディスパッチ待ち行列記述子内に格納された)タスクの実行優先度がハードウェアによって自動的に減分され、タスクは、「非推奨」状態に入る。この時点において、タイムスライス間隔カウンタは、従来のウォッチドッグモードに切り換わる。
Tp=(t*d)/p(式中、1≦p≦t)
Tready=Tp−d
Tp (各メンバタスクを1度実行する)タイムスライスグループの完全なローテーションの期間。
Tready 所与のタスクがその間作動可能状態で待機する1サイクル当たりの時間量。
t タイムスライスタスクの数
p プール内の処理リソースインスタンスの数
d 各タイムスライス間隔の期間
以下の実行プロファイルは、SystemWeaverタイムスライス挙動を示す。
処理リソースプールのデフォルト挙動は、配布層内の第1のプール静的ノードからのスケジューリング決定を評価することである。プールルートノード(PRN)は、通常、配布層内の第1のプール静的ノード(PSN)を指し示す親ポインタを有する(図28)。優先使用の候補を評価するとき、比較は、このエントリから開始し、ピアポインタを使ってリストの周りを進む。
図29に、昇順優先度を使ったアイドル状態における時間の経過に従った処理リソースインスタンス(PRI)の「実行優先度」を示す。最初のインスタンスにおいて、アイドルタスクは、優先度を、その可能な限り低い設定に設定し、PRIに、スケジューラからのタスク割り当ての、その配布プールピアと比べて可能な限り高い機会を与える。
進行中の絶対的な正当性に関わり無く、スケジューリング決定を維持することが望ましい場合もある。一般に、これは、個々のタスククラスまたはデータセットのコンテキストを設定するコストが高く、したがって、許容される場合には、複数のタスクにわたって集約されるべき場合である。これが該当する場合には以下が含まれる。
−プロセッサキャッシュ− 履歴アルゴリズムまたはデータセットのためにデータが取り込まれているキャッシュメモリは、異種のアルゴリズムおよび/またはデータセットとの親和性が低い。これをコールドキャッシュ効果といい、高いキャッシュミス率、したがって、低い性能を示す。
−再構成可能なFPGA区画− 部分的な実行時再構成可能性は、チップが配置され、動作する間に、FPGAの一部が動的に再構成されることを可能にし、時間が経つにつれて異なるアルゴリズムの実行を可能にする。しかしながら、あるアルゴリズムから別のアルゴリズムに切り換わるコストは高く、システム効率を保証するためにより大きなデータセットにわたって集約されなければならない。
−タスクメモリ占有。メモリに余裕がない場合、所与のタスク待ち行列の蓄積されたフットプリントを使って、新しい構成をいつスケジュールすべきかが決定されてもよい。
−処理要件。実質的な「能動的処理」期間にわたるコンテキスト切換えのコストを集約することが望ましい場合。
−タイムスライス。待ち時間のジッタが重要である場合。
−コンテキスト切換えのコストの影響(切換えまでの時間、突入電流)
−切換えのタイミング
−所与のコンテキストが活動状態でない間にその作業の累積をどのようにして管理すべきか
プロセッサコンテキスト切換えとの非常に強い相似性があるが、2、3の(再)定義が必要である。
構成− FPGAファブリックの所与の部分を対象とすることのできる様々なプログラムの組の1つ。
コンテキスト切換え− FPGAの再構成可能な部分の構成を変更する動作。
タスク− 所与のFPGA構成によって実行される単一の作業単位。
スケジューラは、以下の2つの異なる機能を実行する。
−スケジューラは、タスク待ち行列の変化する状態に従って現在のスケジューリング決定を評価する。
−スケジューラは、個別タスク待ち行列内のタスクの実行順序を管理する。
SystemWeaver解決法は、実行時並列実行およびプロセス間通信を管理するために配置され得る、豊富なスケジューリングおよびプロセッサ間通信機能のセットを提供する。SystemWeaverの機能は、同様に、従来の命令セットアーキテクチャ、固定ハードウェア要素および再構成可能なFPGAブロック内部のタスクおよびコンテキスト切換えを効率よく管理することができる。図31にアーキテクチャの一例を示す。
スケジューリングポリシーは、システム設計者によって決定されるべきである。しかしながら、この機能をサポートするのに利用可能でなければならない重要な機能がある。特に、スケジューリングアルゴリズムが、ヒステレシスを示す、すなわち、代替の決定への切換えを保証するのに十分なコストがどこか他の場所に累積されるまであるスケジューリング決定を離れないことが可能である必要である。
必要な更新=(Ccancidate>Ccurrent+ヒステレシス)
Ccancidate 候補スケジューリング層内のタスクの累積コスト
Ccurrent 現在選択されているスケジューリング層内の未完了タスクの累積コスト
ヒステレシス− コンテキストスラッシングを回避するために加えられるヒステレシス
図32に、このようなシステムの概念的影響を示す。タスクスケジューリング出力は、事実上、意図的にブロックごととされており、これは、システムトラフィック成形に対する影響を管理しながら、所与の任意の構成を最大限利用しようとするものである。
複合スケジューリング演算子は、例えば、プール配布層内の処理リソースプールをスケジュールするときになど役立つ。例えば、処理を待ち受けるタスクの待ち行列の中身がある一定の閾値を超えるときには、おそらく、メンバの一部だけが適格にはるはずである。
必要な更新=(MCURRENT0>MCANDIDATE0)&&(MCURRENT1>MCANDIDATE1)
−SystemWeaverサーバコア
−SystemWeaver密結合メモリ
−SystemWeaverデバッグマネージャ
−SystemWeaverクライアントシム
図38に、コア周辺で見られるインターフェースグループを示す。
システム制御グループは、SystemWeaverコアの正しい動作を保証するのに必要な雑多な信号を含む。これらには、クロック、リアルタイムクロックおよびリセット信号が含まれる。
システムによっては、スケジューリング決定時にいくつかのシステムメトリックが使用されることが望ましい。これらのメトリックは、相互接続使用度、キャッシュヒット率、メモリ占有度など、様々な要因を表し得る。
周辺割り込みグループは、SystemWeaver制御システム外部から供給される割り込みのグループからなる。周辺割り込みグループ内の信号は、例えば、外界との入力インターフェースから、あるいはピンを介してSoCデバイス外部から直接駆動されてもよい。周辺割り込み入力の数は、SoC設計時に定義される。
内部グループは、SystemWeaverシステムが発する同期割り込みの2つのグループと、実行時システムデバッグ信号の単一グループからなる。信号グループ内の各信号の数は、通常、システム内の処理リソースの数と一致し、SoC設計時に定義される。
このグループは、SystemWeaverを、独自の専用密結合メモリリソースにインターフェースする。接続メモリは、同期SRAMデバイスであるものとする。アドレスパスの幅nおよびデータパスの幅mは、SoC設計時に定義される。
プロトコルおよびレイヤ数を含む個別相互接続戦略は、SoC設計時に設定されなければならない。任意の所与のバスインターフェース信号の詳細は、対応するバス特有の実装で見ることができる。
デバッグマネージャへのインターフェースの詳細については、参照として本明細書に組み込まれる、同時係属の国際出願PCT/GB2005/003525明細書を参照されたい。
SystemWeaverTCMは、多数のEDAベンダによって供給される標準コンパイラSSRAM技術である。TCMは、アプリケーションの必要に従ってSoC設計時に定義される整数個のSystemWeaverメモリ要素(WME)を含む。各WMEは256ビットのメモリ空間を消費する。SystemWeaverは、最大で65536WME、すなわち16MBのメモリをサポートする。
図39に、SystemWeaverサーバエンティティの主要な論理構成要素を示す。これらの機能は、図40に示すアーキテクチャ上にマップされる。機能は、4つの1次内部並列処理要素の間で分けられ、以下の機能を実行する。
−スレッドスケジューラ入力マネージャ(TSIM):フリーリスト維持、WME回復。
−スレッドスケジューラ保留マネージャ (TSPM):保留リスト維持、同期、作動可能待ち行列構造への格上げ。スレッド同期マネージャは、保留待ち行列構造の保全性を維持する(挿入および抽出)。
−スレッドスケジューラ出力マネージャ(TSOM):作動可能待ち行列維持、ディスパッチ待ち行列維持、処理リソース電源管理、割り込み生成。作動可能待ち行列構造の保全性の維持(挿入および抽出)。
−スレッドスケジューラスケジュールマネージャ(TSSM):作動可能待ち行列構造内の各処理リソースごとのスケジューリング決定の維持。
−スレッドスケジューラメモリマネージャ(TSMM):相互排他およびロッキングを含む、接続されたSystemWeaverメモリへのアクセスを集約する。
−スレッドスケジューラ割り込みマネージャ(TSIC):入ってくるシステム割り込みを内部同期プリミティブに変換する。
−スレッドスケジューラインターフェースマネージャ(TSIF):相互接続インターフェースおよび構成およびSystemWeaverリソースへの実行時アクセスの提供。
SystemWeaverの動作時には多数の記述子型が使用される(詳細については、参照として本明細書に組み込まれる、同時係属の国際出願PCT/GB2005/001154明細書を参照されたい)。これらの記述子の大部分は、ステートレスであるが、スレッド記述子およびスケジューラ記述子は、一定の状況下において多くの状態を経て遷移し得る。本明細書では、これらの状態遷移およびそれらを発生させるイベントを説明する。
SystemWeaverによって内部で認識される2種類のスレッド記述子があり、それらは標準スレッド記述子およびマーカスレッド記述子である。後者は、もっぱら、以前に待ち行列に入れられたスレッド記述子の保全性および順序付けを保証しながら、スケジューリング階層を除去するプロセスを同期させるのに使用される。
以下の各項では、状態、ならびにエントリおよびエントリの終了を生じさせるイベントの簡単な記述を示す。
新規状態は過渡的なものである。新しいスレッドは、プッシュ独立または従属スレッドコマンドによってTSIFに導入される。これら2つの場合は以下のように処理される。
−独立スレッド(時間または同期依存性のないスレッド)は、即座にプッシュ状態に遷移する。このインスタンスでは、TSIFは、TSSMに、スレッドを作動可能待ち行列構造に導入するよう命令する。
−従属スレッド(時間または同期依存性を有するスレッド)は、ブロック状態に遷移する。TSIFは、TSPMに、スレッドを、適宜、保留またはタイミング待ち行列構造に導入するよう命令する。
ブロック状態において、スレッド記述子は、外部同期および/またはタイミングベースの同期を待ち受ける。ブロックされたスレッドはTSIFから発せられる。適切な同期が受け取られたとき、TSPMは、スレッドをプッシュ状態に遷移させ、TSSMに、スレッドを作動可能待ち行列構造に導入するよう命令する。
プッシュ状態のスレッドは、同期されており、あるいは、元々独立である場合には、TSPM(従属スレッド)およびTSIF(独立スレッド)が、それぞれの場合にプッシュ状態への遷移を管理しているはずである。TSSMは、スレッドを作動可能待ち行列構造にプッシュし、スレッドを作動可能状態に遷移させる。作動可能状態への遷移は、再スケジュールを発生させる。
作動可能状態のスレッドは、プッシュ状態から遷移したものであり、あるいは、(TSSMによって)フラッシュされて作動可能待ち行列構造に戻されたものである。作動可能状態への遷移は、常に、再スケジュールを促す。スレッドは、作動可能状態から、ポップ状態またはフラッシュ状態に遷移することができ、後者は、ポップ状態を単一操作でフラッシュ状態にトラバースする特定の条件の結果として発生する。スレッドは、それらがTSSMによってスケジューリングに最も適格な候補として指定されたときにポップ状態に遷移する。
ポップ状態のスレッドは、個々の処理リソースインスタンスまたはインスタンスグループによる処理に最も適格なスレッドとしてスケジューラ(TSSM)によって指定されており、TSOMによってこの状態に遷移される。スレッドは、以下のようにポップ状態からフラッシュ状態またはゾンビ状態に遷移することができる。
−スレッドは、再スケジュールの結果としてより適格なスレッドが識別されていることの結果として、TSOMによってフラッシュ状態に遷移される。
−スレッドは、システム処理リソースインスタンスの1つにおける処理の開始の結果として、TSOMによってゾンビ状態に遷移される。ゾンビ状態は、スレッド記述子を、それが解放され得るようになるまで維持する。
ゾンビスレッドは、TSSM内で処理される。ゾンビ状態の存在は、所与のスレッド記述子に関するすべての依存関係が、そのスレッドを解放する前に不要にされていることを保証するためのものである。これは、スレッドがTSSM処理待ち行列の前部に到達した後で保証され、したがって、それ以上の処理を必要としない。
フラッシュスレッドは、TSSMによって処理される。フラッシュスレッドは、作動可能待ち行列構造に再導入され、再スケジュール操作を発生させなければならない。これが完了すると、スレッドは、TSSMによって遷移されて作動可能状態に戻される。
空き状態は、スレッド記述子によって消費されたWMEがフリーリスト上に戻されることを示す過渡的状態である。
以下の各項に、状態、ならびにエントリおよびエントリの終了を生じさせるイベントの簡単な記述を示す。
新規状態は過渡的なものである。プッシュマーカスレッドコマンドによって新規のマーカスレッドがTSIFに導入される。マーカスレッドは、常に、ブロック状態をトラバースして、マーカスレッドが最終的に削除するスケジューラ層の状況に影響を及ぼし得るTSPMの入力および出力作業待ち行列内に存在する任意の処理が、マーカスレッド自体の到着前に完了されているようにする。
TSPMは、即座に、マーカスレッドをプッシュ状態に遷移させ、TSSMに、スレッドを作動可能待ち行列構造に導入するよう命令する。
TSSMは、マーカスレッドを作動可能待ち行列構造にプッシュし、スレッドを作動可能状態に遷移させる。作動可能状態への遷移は、再スケジュールを発生させる。
マーカスレッドは、作動可能待ち行列構造に導入されると、その直接の親をロック解除する。その場合、その親スケジューリング層の解放は、従属スレッド数のカウントの制御下にある。マーカスレッドは、それらの親の従属スレッドカウントがゼロに到達している、すなわち、SystemWeaver内に、親スケジューリング層の存在に依存するスレッド記述子がそれ以上ないときにのみ、作動可能状態から遷移するのに適する。
ポップ状態のマーカスレッドは、スケジューラ(TSSM)によって特定の処理リソースインスタンスまたはインスタンスグループによる処理に最も適格なスレッドであると指定されている。このスケジューリング決定は、スケジューリング層が空であり、それ以上従属スレッドが存在しないことを示す特殊な場合であることに留意されたい。マーカスレッドは、以下のように、ポップ状態からフラッシュ状態またはゾンビ状態に遷移することができる。
−マーカスレッドは、再スケジュールの結果としてより適格なスレッドが識別された結果として、フラッシュ状態に遷移される。
−マーカスレッドは、システム処理リソースインスタンスの1つにおける処理の開始の結果としてゾンビ状態に遷移される。ゾンビ状態は、解放され得るようになるまで、マーカスレッド記述子を維持する。さらに、マーカスレッドの親も、この状態にある間に、削除のためにマークされる。
ゾンビマーカスレッドの処理は、通常のスレッド記述子の処理と類似している。また、マーカスレッドの親スケジューリング層も、この状態内で削除される。
空き状態は、スレッド記述子によって消費されたWMDがフリーリストに戻されることを示す過渡的状態である。
また、スケジューラ層も、暗黙的状態を有する。静的な層、すなわち、システムの実行時全体を通じて永続的である層では、唯一の状態が活動状態である。残りの状態は、動的スケジューリング層、すなわち、実行時に出入りする層によって使用される。表4に、フラグ状態と、図42にスケジューラ層が存在する状態の間の相関を示す。
以下の項では、状態、ならびにエントリおよびエントリの終了を生じさせるイベントの簡単な記述を示す。
新規状態は過渡的なものである。初期設定時または実行時に、新規のスケジューラ層がプッシュ独立要素によってTSIFに導入される。
休止状態において、スケジューラ層は、スレッドおよび潜在的に追加の子階層を累積することを許されるが、TSSMによってスケジュールされることは決してない。休止状態には以下の2つの方法で入ることがある。
−休止状態で新しいスケジューリング記述子が作成されることがある。
−スケジューリング層が実行時に変更され、TSIFを介して発行された明示的システムコマンドによって休止状態に置かれることがある。
活動状態のスケジューラ層は、能動的にスケジューリングに関与し、ロックされる。すなわち、活動状態のスケジューラ層は、空になったときに除去されない。静的スケジューラは、通常、この状態で作成される。動的スケジューラは、TSIFを介して受け取られる明示的システムコマンドによってこの状態に遷移する。スケジューラ層は、マーカスレッドが受け取られるときにのみ活動状態を終了し、そこで「保留空き」状態に入る。
スケジューラ層は、以下の基準が両方とも満たされるまで保留空き状態に留まる。
−この層を参照する記述子の数の尺度を保持するカウントである、従属要素の数が0になる。
−子要素の数がゼロになる。
空き状態は、スケジューリング層記述子によって消費されたWMEがフリーリスト上に戻されることを示す過渡的状態である。
以下の項では、複数のサブブロックが関与するSystemWeaver挙動の態様をカバーする。
システム実行時にスケジューリング階層を追加し、除去することができる。いくつかのユーザレベル手順が守られる場合、SystemWeaverは、システムの保全性、および、スケジューリング階層のある部分から別の部分に遷移するスレッド記述子の順序付けを保証する。詳細については、上記を参照されたい。
標準またはマーカスレッド内のメトリックを更新することができる。挙動は、以下のようにスレッド状態に依存する。
−スレッドがブロック状態にある場合、適切なコマンドがTSPMに送られる。保留待ち行列はソートされるため、スレッドは、適切な時点において再度出現するようにメトリックが更新されるときに待ち行列から除去され、再挿入される。
−スレッドが別の任意の永続的状態にある場合、メトリック更新を実行し、スケジューリング階層の適切な部分を再スケジュールするコマンドが、TSSMに発行される。
処理リソースインスタンスに対するスレッド記述子のスケジューリングでは、TSOMとTSSMの両方が機能を果たす。TSOMとTSSMの間の対話のいくつかのシーケンス図の例を図72および73に示す。
各サブブロックは、その1次入出力、またはそのピアおよび外界への物理インターフェースの観点から、また、そのコマンドインターフェース、または適切な物理インターフェースを介してコマンドプロトコルを使って呼び出され得るメソッドの観点から論じられる。
インターフェースマネージャは、相互接続グループから受け取られるコマンドの実行を調整し、それらを他のサブブロックに配布する役割を果たす。
TSIFは、主に、相互接続インターフェースを介して受け取られるコマンドを解釈して、残りのサブブロックに対する1つまたは多くの内部コマンドにする。以下の各項では、TSIF内に存在するアーキテクチャリソースの詳細を示す。
セマフォ領域ロック(SRL)は、システムリソースへの排他アクセスを得るために任意のシステムリソースによって原子的に試験され、ロックされ得るリソースを提供する。セマフォ領域ロックは、以下の任意の数の理由で使用され得る
−1つ以上の共用リソース(例えば、セマフォオブジェクト、タスク制御オブジェクトなど)を含むシステムメモリの領域をロックし、それによって保全性を保証するため。
−マルチサイクルコマンドアクセスのためのSystemWeaverコマンドインターフェースをロックするため。
−マルチサイクルイベントのためのSystemWeaverデバッグイベントインターフェースをロックするため。
−ロック解除状態:ロック解除状態では、SRLからの読出しが、読取装置に、ロック試行が成功したかどうか示す制御コードを返す。この状態では書込みは影響を及ぼさない。
−ロック状態:ロック状態では、SRLからの読出しが、SRLが利用できないことを示す。書込みはSRLを解放する。
TSIFは、システム相互接続から受け取られるコマンドを、おそらく、複数の内部コマンドに分解する。
各処理リソースインスタンスごとに、場合によって、デュアルモードタイマカウンタが設けられる。2つのタイマモードは、ウォッチドッグとタイムスライスであり、デフォルトモードはウォッチドッグである。
−ウォッチドッグ割り込みが適切であるかどうか決定するために個別ウォッチドッグカウンタに問い合わせが行われる。
−必要な場合、ウォッチドッグ割り込みが生成される。
SystemWeaverは、システムからの割り込み、すなわち周辺割り込みを受け入れ、システムへの割り込み、すなわち処理リソースインスタンス割り込みを供給する。
周辺割り込みは、TSIF内でマスクされ、調整されてもよい(エッジ/レベルトリガ、負/正論理など)。
以下の機能を提供するために、TSIF内に割り込み処理リソースが設けられる。
−割り込み表明のソースを含む、割り込み状況を維持する(優先使用、タイムスライス、ウォッチドッグ)
−マスク機能
入力マネージャは、WMEフリーリストを助けて、TSIFからのポップ要求および多くのサブブロック(TSIF、TSPM、TSOM、TSSM)からのプッシュ要求を処理する。
TSIMはただ1つのアーキテクチャエンティティ、SystemWeaverメモリ要素(WME)フリーリストを含む。図48に、このリストの構造を示す。
基本リンクリストハウスキーピングメソッド(状況の取得および設定)と共に、入力マネージャは、そのインターフェース上で以下のコマンドを提示する。
プッシュフリーインデックスコマンドは、解放されたWMEインデックスをフリーリスト上にプッシュバックするのに使用される。その引数を以下に要約する。
ポップフリーインデックスコマンドは、フリーリストから空きWMEインデックスをポップするのに使用される。その引数を以下に要約する。
保留マネージャは、同期またはタイマベースの、何らかのイベントを保留にしているブロック状態のタスクまたはスレッド記述子を助ける。個別保留リストのアソシエーションは、ユーザ制御下(またはより上位層のソフトウェアの制御下)にあり、セマフォ、競合ドメイン、割り込みまたはこれらの任意の組み合わせを表し得る。
保留マネージャは、2つの主要要素、可変数の保留待ち行列および1つのタイマ待ち行列を備える。保留待ち行列は、何らかの外部イベントによる同期を待ち受けるスレッドのリストを格納し、タイマ待ち行列は、タイムアウトを待ち受けるスレッドのリストを格納する。スレッド記述子が両方のリストのメンバであることが可能であり、実際には一般的であり、そのため、スレッド記述子には、外部同期イベントを、限られた長さの時間にわたって待ち受けることが許容される。
図50の保留待ち行列構造は、その内容を処理するTSPM内のリソースおよび機能と共に、主に、密結合メモリ内でインスタンス化される。TSPM自体は、先頭ポインタ、および保留待ち行列記述子のリスト、すなわち、リストのリストを参照するいくつかの要素を含む。各保留待ち行列はスレッド記述子のリストを含み、保留待ち行列の数は、実行時に動的に増減し得る。保留待ち行列には(スレッドが定義されたタイムアウトを有する場合にのみ現れるタイマ待ち行列と異なり)ブロック状態のすべてのスレッド記述子が存在する。複数の保留待ち行列の使用は、アプリケーションおよびアプリケーションプログラマの必要と好みに依存する。保留待ち行列は、特に、以下と関連付けられ得る。
−セマフォ。これは、それぞれスレッドをほとんど含まない多数の保留待ち行列を生じる可能性が高い。したがって、最悪の場合の同期応答時間は、これらの状況下では低くなる。
−競合ドメイン。競合ドメインは、同じリソースを求めて競合する複数のエンティティ内のゾーンである。例えば、(スレッドに対して)プロセスが競合ドメインとみなされ得る。
−割り込み。最速の応答時間のために、割り込みは、通常、専用保留待ち行列に集められる。
−プッシュイベント。新しいスレッドが、すでに存在し、または作成されなければならない保留待ち行列に導入される。
−同期イベント。1つ以上のスレッドが作動可能待ち行列構造に遷移しなければならない。
プッシュイベント時に、TSPMは、(識別されたソート演算子metric[0]に従って)スレッド記述子をリスト中のどこに挿入すべきか決定しなければならない。考慮されなければならない以下の2つの状況がある。
−既存の保留待ち行列へのプッシュ
−新しい保留待ち行列へのプッシュ
同期イベントは、割り込みコントローラ(TSIC)から、またはコマンドインターフェースを介して受け取られ得る。同期は、以下の2つのモードで行われ得る。
−リテラルモード。コマンド引数がWMEインデックスへのリテラル参照を行う。
−相関モード。スレッド記述子内のフィールドと同期プリミティブ内のフィールドの間の相関が求められる。
−通常。指定された保留待ち行列内の最も適格な候補だけが同期される。
−マルチキャスト。指定された保留待ち行列内のすべての適格な候補が同期される。
−ブロードキャスト。すべての保留待ち行列内のすべての適格な候補が同期される。
タイムアウト待ち行列に導入される各新しいスレッドは、最初に、絶対タイムアウト値を含んでいる。この値は、インターフェースマネージャによって、引数として受け取られる32ビット相対または絶対タイムアウトから導出されていてもよい。
−TimerHeadIndex。タイマリストを指し示す先頭ポインタ
−TimerNumElements。タイマ待ち行列内の要素数
−TimerHeadTimeout。先頭要素のタイムアウトのスナップショット
−TimerDivider。システムクロックのプリスケーラ
−TimerDividercounter。除算器のカウントダウンリソース
−TimerCounter。各プレスケールクロックティックごとに単調に増加し続ける32ビットカウンタリソース
−TimerErrorAdjustCounter。エラーを累積し、収容するのに使用される32ビットカウンタ
図52に、各プレスケールクロックティックごとに行われる操作を示す。TimerHeadTimeoutは、保留タイマベースの同期がない(タイマ待ち行列が待機状態にある)ときには非ゼロであり、したがって、どんな処置も行われない。TimerHeadTimeoutが0になり、タイマ待ち行列が空でないときに、システムは、TimerErrorAdjustCounterの値に従って2つの状態の一方を採用する。TimerErrorAdjustCounterが0である場合、このサイクルでTimerHeadTimeoutの失効が発生しており、最終的にはタイマ待ち行列(および、ハウスキーピングのためには優先度待ち行列)からのポップを生じさせるタイマ同期プリミティブが作成される。その直後に、TimerErrorAdjustCounterは、それが、タイムイベントプリミティブの処理が完了した後でリセットされるまで、単調に増分され続ける。
タイマ待ち行列操作を引き起こす以下の3つのイベントがある。
−タイムイベントプリミティブ(C_TSPM_CMD_TIME_PRIMITIVE)
−非ゼロタイムアウトを用いるスレッドプッシュイベント(ゼロに設定されたタイムアウトを有するスレッドはタイマ待ち行列に入れられない)
−結果としてハウスキーピング実行としてのタイマ待ち行列からのスレッドの除去を生じる非タイマベースの同期イベント
−先頭へのプッシュでは、TimerHeadTimeoutは、単に、スレッドデルタに設定される。待ち行列が空でない場合、旧い先頭記述子デルタは、TimerHeadTimeoutマイナス新しいスレッドデルタに設定される。
−本体へのプッシュでは、タイマ待ち行列ブロックは、タイマリストをウォークして、スレッド記述子をどこに挿入すべきか識別しなければならない。次いで、リストの次のデルタが、新しいスレッドのデルタの追加を受け入れるように調整される(新しいスレッドデルタが次のスレッドデルタから差し引かれる)。
ポップ操作は、タイマの結果であれ、外部イベント同期イベントの結果であれ、同様に処理される。ポップされるスレッドがタイマ待ち行列の先頭にある場合とそうでない場合の2つ場合を考察すべきである。前者の場合には、タイマ待ち行列が待機状態にある場合と、タイマ待ち行列が活動状態にある場合の3つのシナリオがある。
−「待機中」のタイマ待ち行列の先頭からのポップ操作では、TimerHeadTimeoutが、タイマ待ち行列の次のメンバのタイマデルタに加算されて新しいTimerHeadTimeoutを形成する(タイマベースのポップでは、TimerHeadTimeoutの値は、常NHTSAに、ゼロになることに留意されたい)。
−「活動状態」のタイマ待ち行列の先頭からのポップ操作で、TimerErrorAdjustCounterが次のスレッド記述子のデルタより大きい、すなわち、次のスレッドがタイマベースの同期に適格である場合、エラーカウンタ、TimerErrorAdjustCounterは、ポップされるスレッドのデルタにリベースされる。
−「活動状態」のタイマ待ち行列の先頭からのポップ操作で、TimerErrorAdjustCounterが次のスレッド記述子のデルタ以下である、すなわち、次のスレッドがタイマベースの同期に適格ではない場合、デルタは、エラーカウンタによって減分され、TimerHeadTimeoutが結果で更新される。タイマ待ち行列は、事実上、待機状態に戻る。
保留およびタイマ待ち行列の基本リンクリスト状況操作(取得および設定状況)と共に、保留マネージャは、そのインターフェース上で以下のコマンドを提示する。
同期プリミティブコマンドは、保留待ち行列内に格納されているブロックされたスレッド記述子を解放する制御パケットを発行する。引数を以下に示す。
このコマンドは、新しいまたは既存の作業待ち行列にスレッド記述子を追加する。このコマンドは、作業待ち行列におけるスレッド記述子の存在によって保留マネージャに示唆される。以下の表に、このコマンドに関連するスレッド記述子のフィールドを示す。
このコマンドは、単に、マーカスレッドをスケジュールマネージャ作業待ち行列に渡す。これは、マーカスレッドがスケジューラ解体を引き起こす可能性が生じる前にすべての従属スレッドが保留マネージャによって処理されるよう保証するのに使用される。
このコマンドは、指定された保留待ち行列に同期プリミティブを発行する。このコマンド構造には以下の引数がある。
このコマンドは、ブロックされたスレッドのメトリックを更新し、適切な保留待ち行列の再ソートを行わせる。このコマンドは、識別されたスレッドがブロックされなくなった場合、TSSMに渡されてもよい。このコマンド構造には以下の引数がある。
このコマンドは、保留待ち行列が空になったときに、解放されてフリーリストに戻されるように、保留待ち行列をロック解除する。このコマンド構造には以下の引数がある。
出力マネージャは、次の実行スレッド記述子、および現在実行中のスレッドの実行メトリックを参照するディスパッチ待ち行列構造を助ける。
TSOMのアーキテクチャは、図58に示すディスパッチ待ち行列構造を中心とする。出力マネージャは、各DQDがProcElementIDフィールドを介してシステム処理リソースインスタンスと関連付けられるディスパッチ待ち行列記述子のリストを維持する。TSOMの機能全体を詳細に参照するDQDへの2つの要素グループがある。第1のグループ、実行中心の要素は、ProcElementID、メトリック0、メトリック1およびデフォルトメトリック0を備え、タスクの実行状態を参照し、タスクの実行状態内で管理される。第2のグループ、作動可能待ち行列中心の要素は、ルートスケジューラインデックス、優先使用インデックスおよび次の優先使用インデックスを備え、実行を待ち受けるスレッドの作動可能待ち行列構造を参照する。また、TSOMは、システム内処理リソースインスタンスへの帯域外信号(通常は割り込み)、および作動可能待ち行列構造からのスレッド記述子のポップも管理する。
以下は、ディスパッチ待ち行列記述子内の実行中心の要素の用法の簡単な説明である。
−ProcElementID これは、ディスパッチ待ち行列記述子が結合される処理リソースインスタンスを参照するインデックスを格納する静的フィールドである。
−メトリック0、1は、(「アイドルタスク」および潜在的に多数の電源遮断状態を含む)現在実行中のタスクの実行メトリックを格納するのに使用される、動的に更新されるフィールドである。
−デフォルトメトリック0は、現在実行中のスレッドをSystemWeaverサーバにプッシュバックし、したがって、定義上アイドル状態になるときに、アイドルメトリックを自動的に復元するための最適化をサポートするのに使用される静的フィールドである。
以下は、ディスパッチ待ち行列記述子内の作動可能待ち行列中心の要素の用法の簡単な説明である。
−ルートスケジューラインデックスは、ディスパッチ待ち行列と関連付けられたスケジューリングルート層への静的参照である。
−優先使用インデックスは、所与のリソースの次の実行に現在最も適格な候補を格納する動的フィールドである。優先使用インデックスは、完全にTSOM内で管理され、適切な場合には、ディスパッチ待ち行列イベントの結果として設定される。
−次の優先使用インデックスは、スケジューリング階層内の次に最も適格なスレッドの親またはスレッドインデックス自体を格納する動的フィールドである。次の優先使用インデックスは、TSSMによってのみ設定され、TSOMに、最も適格なスレッドの作動可能待ち行列構造内の位置を知らせる伝達手段として使用される。TSOMは、通常、処理後にこのフィールドをリセットする。
ディスパッチ待ち行列イベントは、以下の2つの理由で発生する。
−再スケジュールイベント:ディスパッチ待ち行列イベントは、スケジュールマネージャ(TSSM)内の再スケジュール操作が、ディスパッチ待ち行列に必要とされる状態の変更、すなわち、通常は、作動可能待ち行列イベント(プッシュ、ポップまたはメトリック操作)を処理した結果としての優先使用を識別する都度発生する。
−ディスパッチ待ち行列ポップイベント:優先使用インデックスによって参照されたスレッドインデックスがインターフェースマネージャ(TSIF)によってポップされている。このイベントは、ディスパッチ待ち行列自体の内の(C_DISPATCH_DESC_POPPED_FLAGによって索引付けされる)「ディスパッチ待ち行列ポップ」フラグによってTSOMに通知される。
ディスパッチ待ち行列適格性メトリックは、ProcElementIDで索引付けされる処理リソースインスタンス上で現在実行中のタスクの実行優先度を反映する。しかしながら、いくつかの最適化の下では、ディスパッチ待ち行列適格性メトリックは、実行開始寸前のタスクの実行優先度を反映してもよい。
−新しいタスクの開始
−現在のタスクの完了
−優先度逆転
−電源管理
ディスパッチ待ち行列リンクリスト上での基本状況操作(取得および設定状況)と共に、出力マネージャは、そのインターフェース上で以下のコマンドを提示する。
このコマンドは、識別されたプロセッサIDのために、ディスパッチ待ち行列内に保持されるメトリックのメトリック0の最下位ビットを自動的に変更する。引数は、ディスパッチ待ち行列記述子自体ではなく、プロセッサの識別情報であるため、このコマンドは、最初に、ディスパッチ待ち行列記述子リストをウォークして適切な記述子を見つける。変更は、最下位ビットの単なる反転であり、メトリックフィールドの予約部分が適切に設定されると仮定すると、これは、優先度が昇順であるにせよ、降順であるにせよ、実行スレッドの優先度を下げる効果を有する。
このコマンドは、個々のディスパッチ待ち行列の実行メトリックを設定する。このコマンド構造には以下の引数がある。
このコマンドは、個々のディスパッチ待ち行列の実行メトリック(0)を、やはりディスパッチ待ち行列内に保持されるデフォルト値にリセットする。この関数には引数はない。
このコマンドは、作動可能待ち行列の状態変更によって必要とされたときに、ディスパッチ待ち行列記述子を更新させる。
スケジュールマネージャは、作動可能待ち行列構造の親子リンケージに固有のスケジューリング決定を助ける。
TSSMには、もっぱらその作業待ち行列インターフェースからコマンドが供給され、純粋に、イベント駆動型である。しかしながら、一定の挙動がいくつかのコマンドに共通であり、以下でこの挙動を説明する。
再スケジュール関数は、スケジューリング階層内の定義された点からスケジューリング決定を再評価する。再スケジュール操作は処理保存的であり、その状態がおそらくイベントによって影響を受けるはずの階層の部分に関連付けられる処理を上回る追加処理は行われない。
最も基礎的なスケジューリング操作は、スケジューリング層内の要素のリンクリストをトラバースしてどれが最も適格であるか識別し、親の先頭ポインタをしかるべく更新することである。
−選択は、スケジュールされ得る内容を持たねばならない。スレッドでは、これは常に真であるが、スケジューラでは、これはその下位階層の内容に依存する。
−記述子がスケジューラである場合、それは、休止状態であってはならず、その無効線活動状態フラグが設定されてもならない。
−記述子が標準スレッドである場合、それは、ロックされてはならず、作業待ち行列内にあってもならない。
−記述子がマーカスレッドである場合、親の合計依存関係カウントはゼロでなければならず、マーカスレッドは、層内に残る唯一のエントリでなければならない。
層間スケジュールは、1スケジューラ層当たり1回実行され、これは、1スケジューリングイベント当たりでは数回になり得る。層間スケジューリングは、親の種類に大きく依存する。要約すると、層間スケジューリングは、親がディスパッチ待ち行列になるまで、層内スケジューリングを呼び出し続ける。これには1つの例外があり、それは、プール配布ノードに遭遇した場合である。
プール層間スケジューリングは、もしあれば、関連付けられた処理リソースインスタンスのうちのどれが、現在のプール内に保持されるスレッド記述子を処理するのに選択されるべきか識別するのに使用される。その意味で、これは、固有の方法で動作する。なぜなら、本明細書で説明する他のすべてのスケジューリングアルゴリズムと異なり、通常、プール層間スケジューリングは、最も適格性の低い候補を求めようとするからである。
−現在処理されているプール静的ノードが、プール内スケジューリングによって、プールルートノードの下で最も適格なスレッドを処理するのに最も適格なノードであると識別されたノードである。
−プールルートノードの下の階層に、適格なスケジューリング候補がない。
図67に、プール層内スケジューリングの流れを示す。第1の例には、プッシュのみの操作でのスケジューリング時間を短縮する最適化がある。これは、利用可能になる新しいタスクへのシステムの応答性を向上させる。
図68に、スレッド記述子(ノード#5)の静的スケジューリング要素(ノード#3)へのプッシュに関連付けられるTSSMスケジューラ処理を示す。最初の層内スケジューリング操作は、再スケジュール関数のコンテキスト内で行われ、親ノード#3に関するものである。次いで、再スケジュールは、階層の上位層へ移動し、親ノード#2との層間スケジューリングを呼び出す。この直後の反復は親ノード#1を見つけ、これはDQDである。したがって、層内スケジューラへのそれ以上の呼び出しはなく、スケジューリング比較が、ルートノード内に格納される最も適格な候補のメトリックと、ディスパッチノード内に格納される実行スレッドの間で行われる。この場合、優先使用が適切であり、ディスパッチ待ち行列イベントがTSOMに伝達される。
TSSMは、もっぱら、作業待ち行列を介してのみ宛先指定される。
このコマンドの挙動は、以下のように、受け取られたスレッドのフラグ内の設定に依存する。
−プッシュまたはフラッシュフラグが設定されている場合、親の合計スレッド要素カウントを増加させる。ポップフラグが設定されている場合、親の合計スレッド要素カウントを減少させる(上記の組み合わせの最終結果はヌルとなり得ることに留意されたい)。
−次いで、プッシュフラグが設定されたスレッドが作動可能待ち行列階層にリンクされる。それらのスレッドがブロック状態から遷移している場合、従属スレッドの親のカウントも減らされる。
−マーカスレッドだけに限定される唯一の挙動が、親のロック解除である(スケジューラ層の「保留空き」状態への遷移。図4参照)。
−TSSMは、このコマンドを処理するときに、ゾンビ状態で受け取られた任意のスレッド記述子が解放されるよう要求する。
このコマンドは、実行スレッドのメトリックの変更の結果として呼び出される。ディスパッチ記述子がプールに関与する場合、これらのメトリックは、配布階層を介して伝搬され、最終的に、この関数を呼び出してスケジューリング決定を再評価する。
このコマンドは、以下の2つの理由でTSOMによって呼び出される。
−ディスパッチ記述子がプールに関与しない場合の、実行スレッドのメトリックの変更の結果として、優先使用が適切であるかどうか再評価するため。この操作は、スケジューリングルートノードを通過する。スケジューリング層がその階層にスレッド記述子を含む場合、再スケジュールが要求される。
−TSOMが、そうするのが妥当であると決定している場合に、スケジューリング層を削除するため。この決定は、ロックされたフラグ、従属スレッドカウントおよび子要素の数(それぞれ、偽、0、0)に基づくものである。記述子の実際の解放は、TSIMへの要求として現れる。
このコマンドは、初期設定時に、静的スケジューリング層をスケジューリング階層にプッシュするのに使用されてもよく、実行時にスレッド記述子または動的スケジューリング階層を動的に追加するのに使用されてもよい。
作動可能待ち行列階層内のスレッド記述子のメトリックを更新する。メトリックは、スレッド記述子が作動可能状態にあるときにだけ更新されてもよい(図41)。
このコマンドは、スケジューラアルゴリズム、メトリックおよびメトリック伝搬アルゴリズムの更新を可能にする。このコマンドは再スケジュールを発生させる。
このコマンドは、休止スケジューラ層を活動化する。このコマンドは再スケジュールを発生させる。
このコマンドは、休止スケジューラ層を非活動化する。
メモリマネージャ(図71)は、TCMへのアクセスを集約するための挙動の多重化/逆多重化を提供する。また、複数のサブブロック間で共用されるリソースの保全性を保証するロッキング機能も提供する。
アーキテクチャ上の観点から見ると、メモリマネージャは、主に、6つの可能な要求元の間でTCMへのアクセスを集約するマルチプレクサ/デマルチプレクサとみなすことができる。また、ロックキャッシュを実装することによって、複数のサブブロックが同じリソースへのアクセスを試みようとする場合の、WMEの保全性も維持する。
アクセス集約は、スケジューラの制御下にある。このスケジューラは、以下のように、非対称である。
−TSIFは最高の優先度を有する
−TSOMは次に高い優先度を有する
−残りすべての要求元は、等しい優先度を有し、処理保存的ラウンドロビンで扱われる。
各ブロックは、1から4ロックの間の割り振りを有する。これらの数は、サブブロック要求元が排他的にアクセスすることのできるWMEの数を表す。ロックされたリソースを要求するサブブロックは、そのリソースが利用可能になるまでブロックされる。同じリソース上で回転する複数のブロック間の競合は、優先度によって解決される。
[プッシュイベント]
図72のシーケンス図に、プッシュイベントに続くサブブロック間対話を示す。TSSMおよびTSOMは、自ずと、シングルスレッドであるため、コマンドを格納するために作業待ち行列が導入されていることに留意されたい。代表的なスケジューリング階層については、図68を参照されたい。
図73のシーケンス図に、「仮想」ディスパッチ待ち行列からスレッド記述子がポップされるときの、TSIFとTSOMとTSSMの間の対話を示す。
Claims (11)
- 複数のプロセッサ要素を有するマルチコアプロセッサにおいて実行可能トランザクションをスケジュールする方法であって、前記マルチコアプロセッサ内の少なくとも1つのプロセッサ要素が、実行時に再構成可能である再構成可能論理を含み、
再構成可能論理の構成ごとに、実行可能な状態の実行可能トランザクションをリストし、前記再構成可能なプロセッサ要素の個々の構成に割り振られる実行可能トランザクションの構成待ち行列を設けるステップであって、コストメトリックが、各構成待ち行列に対して当該構成待ち行列の実行可能トランザクションに基づいて定義されている、ステップと、
現在選択されている前記構成と関連付けられた前記構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するステップと、
現在選択されている前記構成の前記コストメトリックと他の構成の前記コストメトリックとの差が事前定義された閾値に達したときに、現在選択されている前記構成を切り換えるステップと、を備える方法。 - 実行の適格性の順に実行可能トランザクションをリストする配布待ち行列を設けるステップと、
それぞれが、実行可能な状態のいくつかの候補実行可能トランザクションの中から実行するのに最も適格な実行可能トランザクションを決定するスケジューリングアルゴリズムを含む複数の個別実行可能トランザクションスケジューラを設けるステップと、
前記複数の個別実行可能トランザクションスケジューラを、多重レベルスケジューラを提供するように相互にリンクするステップと、
前記多重レベルスケジューラから前記配布待ち行列に最も適格な実行可能トランザクションを出力するステップと、
前記プロセッサ要素ごとのディスパッチ待ち行列であって、前記実行可能トランザクションを当該プロセッサ要素上での実行の順にリストする当該ディスパッチ待ち行列、を複数設けるステップと、
1つ以上の前記ディスパッチ待ち行列に前記配布待ち行列を関連付けるステップと、
前記配布待ち行列の内容を、当該配布待ち行列に関連付けられたディスパッチ待ち行列に出力するステップと、
をさらに備える、請求項1に記載の方法。 - 前記構成を切り換えるステップが、さらに、
現在選択されている前記構成と関連付けられた前記構成待ち行列の内容の出力を停止するステップと、
利用可能な前記構成の別の1つを選択し、前記再構成可能論理の前記構成を、前記選択された利用可能な前記構成の別の1つに変更するステップと、
前記新しく選択された構成に関連付けられた前記構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するステップと、をさらに備える、請求項2に記載の方法。 - 前記再構成可能論理がメモリである、請求項2または3に記載の方法。
- 各構成待ち行列の前記コストメトリックが、前記アプリケーションの保全性を維持するために個々の実行可能トランザクションが実行されねばならなくなるまでの最大許容時間に基づいている、請求項2〜4のいずれか一項に記載の方法。
- 各構成待ち行列の前記コストメトリックが、前記構成待ち行列のそれぞれの長さに基づいている、請求項3に記載の方法。
- 各構成待ち行列の前記コストメトリックと前記事前定義された閾値とが、最も長い構成待ち行列に関連付けられた前記構成が選択されるように定義されている、請求項6に記載の方法。
- コンピュータに請求項1〜7のいずれか一項に記載の方法を実行させる命令を備えるコンピュータプログラム。
- コンピュータによって実行されると、請求項1〜7のいずれか一項に記載の方法を実行する命令を含むコンピュータ可読媒体。
- 複数のプロセッサ要素を有し、当該マルチコアプロセッサ内の少なくとも1つのプロセッサ要素が、実行時に再構成可能である再構成可能論理を含むマルチコアプロセッサであって、コストメトリックが、各構成待ち行列に対して当該構成待ち行列の実行可能トランザクションに基づいて定義されている、マルチコアプロセッサと、
再構成可能論理の構成ごとに、実行可能な状態の実行可能トランザクションをリストするように設けられ、前記再構成可能なプロセッサ要素の個々の構成に割り振られる実行可能トランザクションの構成待ち行列であって、現在選択されている前記構成と関連付けられた当該構成待ち行列の内容を、実行のために前記再構成可能なプロセッサ要素に出力するように構成された前記構成待ち行列と、
現在選択されている前記構成の前記コストメトリックと他の構成の前記コストメトリックとの差が事前定義された閾値に達したときに、現在選択されている前記構成を切り換えるコントローラと、
を備えるマルチコアプロセッサ。 - 実行の適格性の順に実行可能トランザクションをリストする配布待ち行列と、
それぞれが、実行可能な状態のいくつかの候補実行可能トランザクションの中から実行するのに最も適格な実行可能トランザクションを決定するスケジューリングアルゴリズムを含む複数の個別実行可能トランザクションスケジューラと、
前記プロセッサ要素ごとのディスパッチ待ち行列であって、前記実行可能トランザクションを当該プロセッサ要素上での実行の順にリストする複数の当該ディスパッチ待ち行列と、
をさらに備え、
前記複数の個別実行可能トランザクションスケジューラは、多重レベルスケジューラを提供するように相互にリンクされ、
前記多重レベルスケジューラは、前記配布待ち行列に最も適格な実行可能トランザクションを出力し、
1つ以上の前記ディスパッチ待ち行列は、前記配布待ち行列が関連付けられ、
前記配布待ち行列の内容が、当該配布待ち行列に関連付けられたディスパッチ待ち行列に出力される、請求項10に記載のマルチコアプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0519981.5A GB0519981D0 (en) | 2005-09-30 | 2005-09-30 | Scheduling in a multicore architecture |
GB0519981.5 | 2005-09-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006270890A Division JP5311732B2 (ja) | 2005-09-30 | 2006-10-02 | マルチコアアーキテクチャにおけるスケジューリング |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013146711A Division JP5651214B2 (ja) | 2005-09-30 | 2013-07-12 | マルチコアアーキテクチャにおけるスケジューリング |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012089154A JP2012089154A (ja) | 2012-05-10 |
JP5386572B2 true JP5386572B2 (ja) | 2014-01-15 |
Family
ID=35395089
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006270890A Active JP5311732B2 (ja) | 2005-09-30 | 2006-10-02 | マルチコアアーキテクチャにおけるスケジューリング |
JP2011273805A Active JP5386572B2 (ja) | 2005-09-30 | 2011-12-14 | マルチコアアーキテクチャにおけるスケジューリング |
JP2013146711A Active JP5651214B2 (ja) | 2005-09-30 | 2013-07-12 | マルチコアアーキテクチャにおけるスケジューリング |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006270890A Active JP5311732B2 (ja) | 2005-09-30 | 2006-10-02 | マルチコアアーキテクチャにおけるスケジューリング |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013146711A Active JP5651214B2 (ja) | 2005-09-30 | 2013-07-12 | マルチコアアーキテクチャにおけるスケジューリング |
Country Status (7)
Country | Link |
---|---|
US (6) | US8732439B2 (ja) |
EP (3) | EP1770509A3 (ja) |
JP (3) | JP5311732B2 (ja) |
KR (2) | KR101369352B1 (ja) |
CN (1) | CN1955931B (ja) |
GB (1) | GB0519981D0 (ja) |
TW (3) | TWI489391B (ja) |
Families Citing this family (205)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9038070B2 (en) * | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US7861060B1 (en) * | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7865894B1 (en) * | 2005-12-19 | 2011-01-04 | Nvidia Corporation | Distributing processing tasks within a processor |
DE602006014981D1 (de) * | 2006-12-19 | 2010-07-29 | Saab Ab | Verfahren zur Gewährleistung der Sicherungsfunktion eines elektrischen Systems bei einem Fahrzeug und derartiges elektrisches System |
CN100458707C (zh) * | 2007-04-05 | 2009-02-04 | 杭州华三通信技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN101039282B (zh) * | 2007-05-14 | 2010-06-02 | 中兴通讯股份有限公司 | 一种对流入cpu系统的报文的流量管理方法 |
KR100801630B1 (ko) * | 2007-06-15 | 2008-02-05 | 디비코 주식회사 | 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 |
US8327363B2 (en) | 2007-07-24 | 2012-12-04 | Microsoft Corporation | Application compatibility in multi-core systems |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8055822B2 (en) * | 2007-08-21 | 2011-11-08 | International Business Machines Corporation | Multicore processor having storage for core-specific operational data |
US9002872B2 (en) * | 2007-10-30 | 2015-04-07 | Novell, Inc. | Techniques for parallel processing of directory searches |
KR100962531B1 (ko) * | 2007-12-11 | 2010-06-15 | 한국전자통신연구원 | 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법 |
KR100958303B1 (ko) | 2007-12-12 | 2010-05-19 | 한국전자통신연구원 | 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법 |
KR101013073B1 (ko) * | 2007-12-17 | 2011-02-14 | 한국전자통신연구원 | 태스크 분배 및 병렬 처리 시스템과 그 방법 |
US8276143B2 (en) * | 2008-03-10 | 2012-09-25 | Oracle America, Inc. | Dynamic scheduling of application tasks in a distributed task based system |
US8520571B2 (en) | 2008-03-26 | 2013-08-27 | Qualcomm Incorporated | Reconfigurable wireless modem sub-circuits to implement multiple air interface standards |
US8458380B2 (en) * | 2008-03-26 | 2013-06-04 | Qualcomm Incorporated | Off-line task list architecture utilizing tightly coupled memory system |
US8787433B2 (en) * | 2008-03-28 | 2014-07-22 | Qualcomm Incorporated | Wall clock timer and system for generic modem |
US20090254319A1 (en) * | 2008-04-03 | 2009-10-08 | Siemens Aktiengesellschaft | Method and system for numerical simulation of a multiple-equation system of equations on a multi-processor core system |
US8488500B2 (en) | 2008-05-02 | 2013-07-16 | Dhaani Systems | Power management of networked devices |
US8561072B2 (en) * | 2008-05-16 | 2013-10-15 | Microsoft Corporation | Scheduling collections in a scheduler |
US7861027B2 (en) * | 2008-05-30 | 2010-12-28 | Intel Corporation | Providing a peripheral component interconnect (PCI)-compatible transaction level protocol for a system on a chip (SoC) |
US8156289B2 (en) * | 2008-06-03 | 2012-04-10 | Microsoft Corporation | Hardware support for work queue management |
US20110099552A1 (en) * | 2008-06-19 | 2011-04-28 | Freescale Semiconductor, Inc | System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system |
WO2009153619A1 (en) | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for debugging a system |
WO2009153620A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for scheduling a processing entity task |
US8850446B2 (en) | 2008-06-19 | 2014-09-30 | Freescale Semiconductor, Inc. | System and method for using a task starvation indication to prevent starvations of tasks in a multiple processing entity system |
CN101299194B (zh) * | 2008-06-26 | 2010-04-07 | 上海交通大学 | 基于可配置处理器的异构多核系统线程级动态调度方法 |
US8250579B2 (en) * | 2008-06-27 | 2012-08-21 | Oracle America, Inc. | Method for stage-based cost analysis for task scheduling |
CN100568247C (zh) * | 2008-07-22 | 2009-12-09 | 中国科学院计算技术研究所 | 一种满足systemC语法的多核处理器的事件处理单元组 |
US20100058086A1 (en) * | 2008-08-28 | 2010-03-04 | Industry Academic Cooperation Foundation, Hallym University | Energy-efficient multi-core processor |
US8261117B2 (en) * | 2008-09-11 | 2012-09-04 | International Business Machines Corporation | Virtualization in a multi-core processor (MCP) |
EP2343657A4 (en) * | 2008-09-24 | 2016-05-25 | Fujitsu Ltd | POWER CONSUMPTION CONTROL METHOD IN A MULTI-CORE CPU, POWER CONSUMPTION PROGRAM, AND INFORMATION PROCESSING SYSTEM |
US8732716B2 (en) | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
US8341638B2 (en) * | 2008-09-30 | 2012-12-25 | International Business Machines Corporation | Delegated virtualization across physical partitions of a multi-core processor (MCP) |
US8438404B2 (en) * | 2008-09-30 | 2013-05-07 | International Business Machines Corporation | Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element |
US9703595B2 (en) * | 2008-10-02 | 2017-07-11 | Mindspeed Technologies, Llc | Multi-core system with central transaction control |
TWI382348B (zh) * | 2008-10-24 | 2013-01-11 | Univ Nat Taiwan | 多核心系統及其排程方法 |
TWI381315B (zh) * | 2008-10-24 | 2013-01-01 | Nat Univ Chung Cheng | Synchronization elements for multi-core embedded systems |
JP5245722B2 (ja) * | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
WO2010058246A1 (en) | 2008-11-24 | 2010-05-27 | Freescale Semiconductor, Inc. | Management of multiple resource providers |
KR100983048B1 (ko) * | 2008-11-27 | 2010-09-17 | 서울대학교산학협력단 | Ncq 제어 방법 및 컴퓨팅 장치 |
WO2010077923A2 (en) * | 2008-12-16 | 2010-07-08 | The Regents Of The University Of Michigan | Computer energy conservation with a scalable psu configuration |
TWI405070B (zh) * | 2008-12-24 | 2013-08-11 | Tatung Co | 頻率調整方法及使用此方法的電子裝置、電腦程式產品與電腦可讀取儲存媒體 |
US8230245B2 (en) * | 2009-01-23 | 2012-07-24 | Dell Products, L.P. | Method and system for operating-system-independent power management using performance verifications |
US20100194524A1 (en) * | 2009-02-02 | 2010-08-05 | Richard John Campero | Home Network Control Node for Device Control and Energy Conservation |
US8676976B2 (en) * | 2009-02-25 | 2014-03-18 | International Business Machines Corporation | Microprocessor with software control over allocation of shared resources among multiple virtual servers |
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
US8984523B2 (en) * | 2009-05-26 | 2015-03-17 | Telefonaktiebolaget L M Ericsson (Publ) | Method for executing sequential code on the scalable processor at increased frequency while switching off the non-scalable processor core of a multicore chip |
ES2431931T3 (es) | 2009-05-26 | 2013-11-28 | Telefonaktiebolaget L M Ericsson (Publ) | Planificación de multi-procesadores |
US8904394B2 (en) * | 2009-06-04 | 2014-12-02 | International Business Machines Corporation | System and method for controlling heat dissipation through service level agreement analysis by modifying scheduled processing jobs |
JP5549131B2 (ja) * | 2009-07-07 | 2014-07-16 | 富士通株式会社 | ジョブ割当装置、ジョブ割当方法及びジョブ割当プログラム |
EP2282265A1 (en) * | 2009-07-27 | 2011-02-09 | Nxp B.V. | A hardware task scheduler |
US20110041128A1 (en) * | 2009-08-13 | 2011-02-17 | Mathias Kohlenz | Apparatus and Method for Distributed Data Processing |
US9038073B2 (en) * | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
US8762532B2 (en) * | 2009-08-13 | 2014-06-24 | Qualcomm Incorporated | Apparatus and method for efficient memory allocation |
US8788782B2 (en) | 2009-08-13 | 2014-07-22 | Qualcomm Incorporated | Apparatus and method for memory management and efficient data processing |
US8479216B2 (en) | 2009-08-18 | 2013-07-02 | International Business Machines Corporation | Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node |
US8479215B2 (en) | 2009-08-18 | 2013-07-02 | International Business Machines Corporation | Decentralized load distribution to reduce power and/or cooling costs in an event-driven system |
US9672132B2 (en) | 2009-11-19 | 2017-06-06 | Qualcomm Incorporated | Methods and apparatus for measuring performance of a multi-thread processor |
US8423799B2 (en) * | 2009-11-30 | 2013-04-16 | International Business Machines Corporation | Managing accelerators of a computing environment |
US8776066B2 (en) * | 2009-11-30 | 2014-07-08 | International Business Machines Corporation | Managing task execution on accelerators |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US8549524B2 (en) * | 2009-12-23 | 2013-10-01 | Sap Ag | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
US8875143B2 (en) * | 2009-12-31 | 2014-10-28 | Bmc Software, Inc. | Utility-optimized scheduling of time-sensitive tasks in a resource-constrained environment |
WO2011102219A1 (ja) * | 2010-02-19 | 2011-08-25 | 日本電気株式会社 | リアルタイムシステム用マルチコア向けタスク配置最適化システム、その方法及びそのプログラム |
KR101635397B1 (ko) * | 2010-03-03 | 2016-07-04 | 삼성전자주식회사 | 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법 |
KR101658035B1 (ko) * | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
KR101653204B1 (ko) | 2010-03-16 | 2016-09-01 | 삼성전자주식회사 | 멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법 |
KR101664108B1 (ko) | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN102387551B (zh) * | 2010-08-30 | 2014-03-26 | 普天信息技术研究院有限公司 | 一种调度方法 |
US8667197B2 (en) | 2010-09-08 | 2014-03-04 | Intel Corporation | Providing a fine-grained arbitration system |
US9268611B2 (en) | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8683251B2 (en) | 2010-10-15 | 2014-03-25 | International Business Machines Corporation | Determining redundancy of power feeds connecting a server to a power supply |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US8949835B2 (en) * | 2010-11-30 | 2015-02-03 | Red Hat, Inc. | Yielding input/output scheduler to increase overall system throughput |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US9235458B2 (en) * | 2011-01-06 | 2016-01-12 | International Business Machines Corporation | Methods and systems for delegating work objects across a mixed computer environment |
US9052968B2 (en) | 2011-01-17 | 2015-06-09 | International Business Machines Corporation | Methods and systems for linking objects across a mixed computer environment |
US8918791B1 (en) * | 2011-03-10 | 2014-12-23 | Applied Micro Circuits Corporation | Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID |
CN102760176B (zh) * | 2011-04-29 | 2015-02-11 | 无锡江南计算技术研究所 | 硬件事务级仿真方法、引擎及系统 |
US20140215141A1 (en) * | 2011-05-02 | 2014-07-31 | ISC8 Inc. | High-Speed Processor Core Comprising Mapped Auxilliary Component Functionality |
US9158592B2 (en) * | 2011-05-02 | 2015-10-13 | Green Hills Software, Inc. | System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor |
US9357482B2 (en) * | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
US8745626B1 (en) * | 2012-12-17 | 2014-06-03 | Throughputer, Inc. | Scheduling application instances to configurable processing cores based on application requirements and resource specification |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US8990830B2 (en) * | 2011-07-19 | 2015-03-24 | International Business Machines Corporation | Thread management in parallel processes |
US8874579B2 (en) | 2011-08-18 | 2014-10-28 | Verisign, Inc. | Systems and methods for identifying associations between malware samples |
US9032413B2 (en) | 2011-09-01 | 2015-05-12 | Microsoft Technology Licensing, Llc | Decoupling background work and foreground work |
GB2507696B (en) * | 2011-09-06 | 2017-08-02 | Intel Corp | Power efficient processor architecture |
TW201324360A (zh) * | 2011-12-08 | 2013-06-16 | Chunghwa Telecom Co Ltd | 交付背景執行包覆模組 |
KR101901587B1 (ko) | 2011-12-13 | 2018-10-01 | 삼성전자주식회사 | 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치 |
WO2013094156A1 (ja) * | 2011-12-19 | 2013-06-27 | 日本電気株式会社 | タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム |
US20120095607A1 (en) * | 2011-12-22 | 2012-04-19 | Wells Ryan D | Method, Apparatus, and System for Energy Efficiency and Energy Conservation Through Dynamic Management of Memory and Input/Output Subsystems |
CN103999415B (zh) * | 2011-12-28 | 2017-04-19 | 华为技术有限公司 | 一种用于合并网络应用的装置、方法和中间件 |
US9389657B2 (en) * | 2011-12-29 | 2016-07-12 | Intel Corporation | Reset of multi-core processing system |
KR101867960B1 (ko) * | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
US9164803B2 (en) * | 2012-01-20 | 2015-10-20 | Microsoft Technology Licensing, Llc | Background task resource control |
US9058166B2 (en) * | 2012-03-05 | 2015-06-16 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for managing processing resources in a distributed processing system |
US9027141B2 (en) * | 2012-04-12 | 2015-05-05 | Netflix, Inc. | Method and system for improving security and reliability in a networked application environment |
EP2857968B1 (en) * | 2012-05-24 | 2023-07-05 | Renesas Electronics Corporation | Task processor |
US10002021B2 (en) | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
CN102831024B (zh) * | 2012-08-03 | 2014-12-17 | 中国人民解放军国防科学技术大学 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
CN103810072A (zh) * | 2012-11-09 | 2014-05-21 | 上海飞田通信技术有限公司 | 保障多线程任务有序执行的装置及方法 |
TWI478055B (zh) * | 2012-12-11 | 2015-03-21 | Gemtek Technology Co Ltd | 非對稱式處理之多核心系統與其網路設備 |
CN103870327A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 一种实时多任务调度方法和装置 |
US9201791B2 (en) | 2013-01-08 | 2015-12-01 | Apple Inc. | Flow-ID dependency checking logic |
US8762916B1 (en) * | 2013-02-25 | 2014-06-24 | Xilinx, Inc. | Automatic generation of a data transfer network |
US9075624B2 (en) | 2013-06-24 | 2015-07-07 | Xilinx, Inc. | Compilation of system designs |
KR101481898B1 (ko) | 2013-06-25 | 2015-01-14 | 광운대학교 산학협력단 | Ssd의 명령어 큐 스케줄링 장치 및 방법 |
WO2015015756A1 (ja) * | 2013-08-02 | 2015-02-05 | 日本電気株式会社 | 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム |
KR101666395B1 (ko) | 2013-10-14 | 2016-10-14 | 한국전자통신연구원 | 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법 |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US9411642B2 (en) * | 2014-01-17 | 2016-08-09 | Nvidia Corporation | Using high priority thread to boost CPU clock rate |
KR102205836B1 (ko) * | 2014-01-29 | 2021-01-21 | 삼성전자 주식회사 | 태스크 스케줄링 방법 및 장치 |
US9529532B2 (en) | 2014-03-07 | 2016-12-27 | Cavium, Inc. | Method and apparatus for memory allocation in a multi-node system |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US9372800B2 (en) | 2014-03-07 | 2016-06-21 | Cavium, Inc. | Inter-chip interconnect protocol for a multi-chip system |
US10592459B2 (en) | 2014-03-07 | 2020-03-17 | Cavium, Llc | Method and system for ordering I/O access in a multi-node environment |
US9652286B2 (en) | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
TWI503742B (zh) * | 2014-04-21 | 2015-10-11 | Nat Univ Tsing Hua | 多核心處理器系統及其排程方法 |
US9542220B2 (en) * | 2014-04-28 | 2017-01-10 | Oracle International Corporation | System and method for supporting resource manager (RM) instance awareness in a transactional environment |
WO2015170386A1 (ja) * | 2014-05-08 | 2015-11-12 | 株式会社日立製作所 | データベース管理システム、計算機システム及びデータベース管理方法 |
FR3023047B1 (fr) | 2014-06-27 | 2016-06-24 | Continental Automotive France | Procede de gestion de messages de panne d'un vehicule automobile |
CN104615488B (zh) | 2015-01-16 | 2018-01-19 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US9569264B2 (en) | 2015-03-17 | 2017-02-14 | Freescale Semiconductor,Inc. | Multi-core system for processing data packets |
CN109144688B (zh) | 2015-03-27 | 2022-09-23 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US10241828B2 (en) * | 2015-04-03 | 2019-03-26 | Oath Inc. | Method and system for scheduling transactions in a data system |
KR101622516B1 (ko) | 2015-04-20 | 2016-05-18 | 엘에스산전 주식회사 | 데이터 송수신 시스템 |
KR102384345B1 (ko) | 2015-05-15 | 2022-04-19 | 삼성전자 주식회사 | 스레드를 실행하는 방법, 프로세서 및 기록매체 |
US20170017414A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices |
US20170017420A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
SG11201803928UA (en) * | 2015-12-17 | 2018-06-28 | Ab Initio Technology Llc | Processing data using dynamic partitioning |
US10649810B2 (en) | 2015-12-28 | 2020-05-12 | Advanced Micro Devices, Inc. | Data driven scheduler on multiple computing cores |
DE102016200780A1 (de) * | 2016-01-21 | 2017-07-27 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum quasi-parallelen Ausführen von Aktivitätsträgern |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
KR102501240B1 (ko) | 2016-03-18 | 2023-02-17 | 삼성전자주식회사 | 태스크 스케줄링 방법 및 이를 구현한 전자 장치 |
CN106020978B (zh) * | 2016-05-17 | 2019-05-21 | 扬州航盛科技有限公司 | 一种时间差量顺序链表定时器的执行方法 |
WO2017199383A1 (ja) * | 2016-05-19 | 2017-11-23 | 株式会社日立製作所 | Pld管理方法及びpld管理システム |
US11029998B2 (en) | 2016-06-03 | 2021-06-08 | International Business Machines Corporation | Grouping of tasks for distribution among processing entities |
US10691502B2 (en) | 2016-06-03 | 2020-06-23 | International Business Machines Corporation | Task queuing and dispatching mechanisms in a computational device |
US10185593B2 (en) | 2016-06-03 | 2019-01-22 | International Business Machines Corporation | Balancing categorized task queues in a plurality of processing entities of a computational device |
US10698954B2 (en) * | 2016-06-30 | 2020-06-30 | Facebook, Inc. | Computation platform agnostic data classification workflows |
US11120036B2 (en) | 2016-08-03 | 2021-09-14 | Oracle International Corporation | System and method for efficient repurposing of connections in a multi-tenant database environment |
US9606835B1 (en) | 2016-09-19 | 2017-03-28 | International Business Machines Corporation | Determination of memory access patterns of tasks in a multi-core processor |
DE102016221526A1 (de) * | 2016-11-03 | 2018-05-03 | Robert Bosch Gmbh | Vorrichtung und Verfahren zum Bearbeiten einer Mehrzahl Aufgaben |
US10489220B2 (en) | 2017-01-26 | 2019-11-26 | Microsoft Technology Licensing, Llc | Priority based scheduling |
US10620993B2 (en) | 2017-02-27 | 2020-04-14 | International Business Machines Corporation | Automated generation of scheduling algorithms based on task relevance assessment |
CN110521188B (zh) | 2017-03-17 | 2022-10-11 | 康维达无线有限责任公司 | 网络服务层中的分布式事务管理 |
CN110710172A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络 |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN117971715A (zh) | 2017-04-10 | 2024-05-03 | 微软技术许可有限责任公司 | 多处理器系统中的中继一致存储器管理 |
US10592305B2 (en) * | 2017-05-16 | 2020-03-17 | Apple Inc. | Application session and enhancement for a wearable electronic device |
US10452446B1 (en) * | 2017-06-07 | 2019-10-22 | Rockwell Collins, Inc. | High integrity multi-core processing |
CN108401454B (zh) * | 2017-06-30 | 2021-10-22 | 深圳市大疆创新科技有限公司 | 事务调度方法、处理器、分布式系统和无人机 |
CN110915172A (zh) | 2017-07-10 | 2020-03-24 | 芬基波尔有限责任公司 | 针对数据中心的接入节点 |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
CN107463442B (zh) * | 2017-07-12 | 2020-09-18 | 北京控制工程研究所 | 一种星载多核SoC任务级负载均衡并行调度方法 |
US11150944B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Balancing mechanisms in ordered lists of dispatch queues in a computational device |
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
EP3688410B1 (en) * | 2017-09-26 | 2021-12-29 | Trimble AB | Queue of data collection tasks for surveying instrument |
US10965586B2 (en) | 2017-09-29 | 2021-03-30 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
CN111201757B (zh) | 2017-09-29 | 2022-04-26 | 芬基波尔有限责任公司 | 在底层网络上动态配置的网络接入节点虚拟结构 |
EP3678023B1 (en) * | 2017-09-30 | 2022-07-13 | Huawei Technologies Co., Ltd. | Method and device for handling timeout of system service |
CN109783202A (zh) * | 2017-11-15 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 事件处理方法、系统、设备和存储介质 |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
US10540288B2 (en) | 2018-02-02 | 2020-01-21 | Fungible, Inc. | Efficient work unit processing in a multicore system |
EP3776242A1 (en) * | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Multi-threaded self-scheduling reconfigurable computing fabric |
US11010161B2 (en) * | 2018-03-31 | 2021-05-18 | Micron Technology, Inc. | Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric |
JP7301892B2 (ja) * | 2018-07-02 | 2023-07-03 | ドライブネッツ リミテッド | マルチスレッドアプリケーションを実装するシステム |
KR102111991B1 (ko) | 2018-08-17 | 2020-05-18 | 주식회사 한컴엠디에스 | 운영체제 시스템의 자원 관리 장치 및 방법 |
CN112997156A (zh) * | 2018-10-22 | 2021-06-18 | 西门子工业软件有限公司 | 用于电子设计自动化操作的计算资源的动态分配 |
US10929175B2 (en) * | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
KR102042495B1 (ko) * | 2018-11-30 | 2019-11-08 | 아주대학교산학협력단 | 멀티 코어 시스템의 저전력 운영을 위한 데이터 흐름 최적화 장치 및 방법 |
US10838389B2 (en) | 2018-12-13 | 2020-11-17 | Hamilton Sunstrand Corporation | Reconfigurable control architecture for programmable logic devices |
US10565036B1 (en) * | 2019-02-14 | 2020-02-18 | Axis Semiconductor, Inc. | Method of synchronizing host and coprocessor operations via FIFO communication |
CN109918141B (zh) * | 2019-03-15 | 2020-11-27 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
US10671453B1 (en) | 2019-04-29 | 2020-06-02 | EMC IP Holding Company LLC | Data storage system employing two-level scheduling of processing cores |
CN110427206B (zh) * | 2019-07-18 | 2022-10-28 | 中国船舶重工集团公司第七0七研究所 | 一种基于zynq的算法动态更新方法 |
US11005970B2 (en) | 2019-07-24 | 2021-05-11 | EMC IP Holding Company LLC | Data storage system with processor scheduling using distributed peek-poller threads |
US11467846B2 (en) | 2019-08-02 | 2022-10-11 | Tenstorrent Inc. | Overlay layer for network of processor cores |
CN110543354B (zh) * | 2019-09-05 | 2023-06-13 | 腾讯科技(上海)有限公司 | 任务调度方法、装置、设备及存储介质 |
KR20210051718A (ko) | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN112783613B (zh) * | 2019-11-07 | 2024-03-01 | 北京沃东天骏信息技术有限公司 | 一种单元调度的方法和装置 |
CN111338425B (zh) * | 2020-02-26 | 2021-08-20 | 杭州涂鸦信息技术有限公司 | 一种无线低功耗设备实现倒计时的方法及系统 |
CN111294290B (zh) * | 2020-02-26 | 2021-01-29 | 宁波云鸟软件科技有限公司 | 一种基于大数据的资源调度方法 |
US20220012598A1 (en) | 2020-07-09 | 2022-01-13 | Femtosense, Inc. | Methods and apparatus for matrix and vector storage and operations |
KR102195609B1 (ko) * | 2020-07-20 | 2020-12-29 | 주식회사 크라우드웍스 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
US11494120B2 (en) * | 2020-10-02 | 2022-11-08 | Qualcomm Incorporated | Adaptive memory transaction scheduling |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN112416475A (zh) * | 2020-11-20 | 2021-02-26 | 清华大学 | 触发方法 |
US20220253770A1 (en) * | 2021-02-06 | 2022-08-11 | Verint Americas Inc. | System and method for calibrating a wfm scheduling module |
CN112925621B (zh) * | 2021-02-26 | 2023-11-07 | 北京百度网讯科技有限公司 | 任务处理方法、装置、电子设备和存储介质 |
CN113419836B (zh) * | 2021-07-07 | 2023-02-21 | 深圳市珍爱捷云信息技术有限公司 | 任务处理方法、装置、电子设备和计算机可读存储介质 |
WO2023034221A1 (en) * | 2021-09-03 | 2023-03-09 | Groq, Inc. | Scale computing in deterministic cloud environments |
CN115048206B (zh) * | 2022-08-15 | 2022-12-27 | 阿里巴巴(中国)有限公司 | 资源调度方法及服务器 |
Family Cites Families (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8711663D0 (en) | 1987-05-18 | 1987-06-24 | Singer Link Miles Ltd | Multiprocessing architecture |
US5566340A (en) * | 1991-02-14 | 1996-10-15 | Dell Usa L.P. | Portable computer system with adaptive power control parameters |
JPH04283849A (ja) * | 1991-03-13 | 1992-10-08 | Toshiba Corp | マルチプロセッサシステム |
DE69227664T2 (de) | 1991-10-15 | 1999-04-22 | Hewlett Packard Co | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor |
JPH05233572A (ja) | 1992-02-21 | 1993-09-10 | Toshiba Corp | マルチプロセッサに於けるプロセスディスパッチ方式 |
JPH0756863A (ja) | 1993-08-20 | 1995-03-03 | Fuji Electric Co Ltd | 分割順序記述の並列制御システム |
JPH086681A (ja) * | 1994-04-18 | 1996-01-12 | Hitachi Ltd | 省電力制御システム |
US7266725B2 (en) * | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
JPH09185589A (ja) * | 1996-01-05 | 1997-07-15 | Toshiba Corp | 情報処理システムと情報処理システムの省電力方法 |
JP2933005B2 (ja) | 1996-04-05 | 1999-08-09 | 日本電気株式会社 | 管理情報格納装置 |
US5826081A (en) | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US5966534A (en) * | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US5999734A (en) | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
KR20000075518A (ko) * | 1997-12-23 | 2000-12-15 | 요트.게.아. 롤페즈 | 최소한 두 개 이상의 요크와 전자총을 구비하는 음극선관 |
US6148324A (en) | 1998-01-05 | 2000-11-14 | Lucent Technologies, Inc. | Prioritized load balancing among non-communicating processes in a time-sharing system |
JPH11202988A (ja) * | 1998-01-13 | 1999-07-30 | Hitachi Ltd | システム消費電力制御方法 |
DE19822543A1 (de) * | 1998-05-20 | 1999-11-25 | Alcatel Sa | Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium |
US6092174A (en) * | 1998-06-01 | 2000-07-18 | Context, Inc. | Dynamically reconfigurable distributed integrated circuit processor and method |
US6711791B2 (en) * | 1999-01-07 | 2004-03-30 | Clint Hess | Slide hammer tool and method of removing a keeper ring |
US6711691B1 (en) * | 1999-05-13 | 2004-03-23 | Apple Computer, Inc. | Power management for computer systems |
US6823516B1 (en) | 1999-08-10 | 2004-11-23 | Intel Corporation | System and method for dynamically adjusting to CPU performance changes |
US6487683B1 (en) | 1999-10-01 | 2002-11-26 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
JP2001117786A (ja) | 1999-10-19 | 2001-04-27 | Nec Corp | プロセススケジューリング装置およびプロセススケジューリング方法 |
US6711411B1 (en) * | 2000-11-07 | 2004-03-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Management of synchronization network |
US20020087903A1 (en) | 2000-12-29 | 2002-07-04 | James Hermerding | Mechanism for managing power generated in a computer system |
US6901522B2 (en) * | 2001-06-07 | 2005-05-31 | Intel Corporation | System and method for reducing power consumption in multiprocessor system |
US6653859B2 (en) * | 2001-06-11 | 2003-11-25 | Lsi Logic Corporation | Heterogeneous integrated circuit with reconfigurable logic cores |
US7823131B2 (en) | 2001-06-29 | 2010-10-26 | Mentor Graphics Corporation | Debugger for a hardware-implemented operating system |
CN1145312C (zh) * | 2001-08-13 | 2004-04-07 | 华为技术有限公司 | 网络处理器线程调度方法 |
US20030056091A1 (en) * | 2001-09-14 | 2003-03-20 | Greenberg Craig B. | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations |
US7248585B2 (en) | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US6804632B2 (en) | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
JP2003256067A (ja) * | 2002-03-01 | 2003-09-10 | Mitsubishi Electric Corp | 省電力制御方式及び省電力制御方法及びプログラム及び記録媒体 |
JP4303053B2 (ja) | 2002-07-23 | 2009-07-29 | Hoya株式会社 | カプセル内視鏡誘導システム |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US20040103248A1 (en) | 2002-10-08 | 2004-05-27 | Hass David T. | Advanced telecommunications processor |
US7191349B2 (en) * | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US6711447B1 (en) * | 2003-01-22 | 2004-03-23 | Intel Corporation | Modulating CPU frequency and voltage in a multi-core CPU architecture |
US7451183B2 (en) | 2003-03-21 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Assembly and method for balancing processors in a partitioned server |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
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 |
US20050210304A1 (en) * | 2003-06-26 | 2005-09-22 | Copan Systems | Method and apparatus for power-efficient high-capacity scalable storage system |
JP4028444B2 (ja) * | 2003-06-27 | 2007-12-26 | 株式会社東芝 | スケジューリング方法およびリアルタイム処理システム |
US20050050310A1 (en) | 2003-07-15 | 2005-03-03 | Bailey Daniel W. | Method, system, and apparatus for improving multi-core processor performance |
US7873785B2 (en) | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
US8463996B2 (en) | 2003-08-19 | 2013-06-11 | Oracle America, Inc. | Multi-core multi-thread processor crossbar architecture |
JP4057989B2 (ja) | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
US7676809B2 (en) * | 2003-10-09 | 2010-03-09 | International Business Machines Corporation | System, apparatus and method of enhancing priority boosting of scheduled threads |
US20050097554A1 (en) * | 2003-11-03 | 2005-05-05 | Burden David C. | Charge rationing aware scheduler |
EP1555595A3 (en) * | 2004-01-13 | 2011-11-23 | LG Electronics, Inc. | Apparatus for controlling power of processor having a plurality of cores and control method of the same |
US7334142B2 (en) * | 2004-01-22 | 2008-02-19 | International Business Machines Corporation | Reducing power consumption in a logically partitioned data processing system with operating system call that indicates a selected processor is unneeded for a period of time |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US7249268B2 (en) * | 2004-06-29 | 2007-07-24 | Intel Corporation | Method for performing performance optimization operations for a processor having a plurality of processor cores in response to a stall condition |
JP4547198B2 (ja) * | 2004-06-30 | 2010-09-22 | 富士通株式会社 | 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体 |
GB0420442D0 (en) | 2004-09-14 | 2004-10-20 | Ignios Ltd | Debug in a multicore architecture |
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US7765547B2 (en) | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7526661B2 (en) * | 2004-12-02 | 2009-04-28 | Intel Corporation | Performance state-based thread management |
US7502948B2 (en) * | 2004-12-30 | 2009-03-10 | Intel Corporation | Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores |
JP5018480B2 (ja) | 2005-09-05 | 2012-09-05 | 日本電気株式会社 | 情報処理装置 |
US7617403B2 (en) | 2006-07-26 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for controlling heat generation in a multi-core processor |
US7886262B2 (en) | 2006-08-15 | 2011-02-08 | Chew Marko P | System and method of maximizing integrated circuit manufacturing yield with fabrication process simulation driven layout optimization |
US20090037700A1 (en) * | 2007-07-30 | 2009-02-05 | Clear Falls Pty Ltd | Method and system for reactively assigning computational threads of control between processors |
JP5204674B2 (ja) | 2009-01-16 | 2013-06-05 | パナソニック株式会社 | 無線タグ通信システム、無線タグの電池残量推定方法及び監視装置 |
-
2005
- 2005-09-30 GB GBGB0519981.5A patent/GB0519981D0/en not_active Ceased
-
2006
- 2006-09-27 EP EP20060254991 patent/EP1770509A3/en not_active Ceased
- 2006-09-27 EP EP10192098.1A patent/EP2328077B1/en active Active
- 2006-09-27 EP EP10192097A patent/EP2328076A1/en not_active Ceased
- 2006-09-29 TW TW102118987A patent/TWI489391B/zh active
- 2006-09-29 TW TW102118985A patent/TWI474261B/zh active
- 2006-09-29 US US11/540,146 patent/US8732439B2/en active Active
- 2006-09-29 TW TW095136470A patent/TWI420394B/zh active
- 2006-09-29 US US11/541,315 patent/US8533503B2/en active Active
- 2006-09-30 CN CN2006101317584A patent/CN1955931B/zh active Active
- 2006-10-02 JP JP2006270890A patent/JP5311732B2/ja active Active
- 2006-10-02 KR KR1020060097396A patent/KR101369352B1/ko active IP Right Grant
-
2011
- 2011-12-14 JP JP2011273805A patent/JP5386572B2/ja active Active
-
2013
- 2013-06-12 KR KR1020130067351A patent/KR101392934B1/ko active IP Right Grant
- 2013-07-12 JP JP2013146711A patent/JP5651214B2/ja active Active
- 2013-08-12 US US13/965,124 patent/US8751773B2/en active Active
-
2014
- 2014-04-04 US US14/245,981 patent/US9286262B2/en active Active
- 2014-05-01 US US14/267,830 patent/US9164953B2/en active Active
-
2015
- 2015-09-09 US US14/848,334 patent/US9442886B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5651214B2 (ja) | マルチコアアーキテクチャにおけるスケジューリング | |
US9779042B2 (en) | Resource management in a multicore architecture | |
KR101239082B1 (ko) | 멀티코어 아키텍처 내의 리소스 관리 | |
WO2012028213A1 (en) | Re-scheduling workload in a hybrid computing environment | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
Ramasubramanian et al. | Studies on Performance Aspect of Scheduling Algorithms on Multicore Platform | |
Rao et al. | A Simplistic Study of Scheduler for Real-Time and Embedded System Domain | |
Rao et al. | Analysis and Refining of Scheduler for Real-Time Operating System. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120524 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120524 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120627 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130408 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130416 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130716 |
|
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: 20130910 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131007 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5386572 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |