JP2005100264A - スケジューリング方法および情報処理システム - Google Patents
スケジューリング方法および情報処理システム Download PDFInfo
- Publication number
- JP2005100264A JP2005100264A JP2003335498A JP2003335498A JP2005100264A JP 2005100264 A JP2005100264 A JP 2005100264A JP 2003335498 A JP2003335498 A JP 2003335498A JP 2003335498 A JP2003335498 A JP 2003335498A JP 2005100264 A JP2005100264 A JP 2005100264A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- data transfer
- vpu
- execution
- processes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Bus Control (AREA)
Abstract
【解決手段】スケジューリング処理では、処理要素A,B,Cそれぞれのバスバンド幅(A=100,B=90,C=20)を考慮したスケジューリングが行われる。すなわち、処理要素A,B,Cを1周期分の時間間隔内に実行でき、且つ処理要素A,B,Cの中で必要なバスバンド幅の大きい上位少なくとも2つの処理要素(A,B)の実行期間が互いに重ならないように、処理要素A,B,Cそれぞれの実行に要するコスト(時間)とバスバンド幅とに基づいて、処理要素A,B,Cそれぞれの実行開始タイミングと処理要素A,B,Cそれぞれが実行されるプロセッサ(VPU)が決定される。これにより、必要なデータ転送バンド幅が周期内でできるだけ均一に分散することができ、各周期内における必要なバスバンド幅のピーク値を低く抑えることが可能となる。
【選択図】 図13
Description
複数のプロセッサユニットを備えたシステムとしては、例えば、1台の高速CPU、複数台の低速CPU、および共有メモリを備えたシステムが知られている(例えば、特許文献1参照)。このシステムにおいては、高速CPUおよび複数台の低速CPUに対する処理プログラムのプロセス群の割付は、プロセス群の並列動作度の大小および処理時間の大小に応じて行われる。
リアルタイム処理システムにおいては、ある許容時間の制限内に個々の処理を完了することが要求される。また連鎖された複数の処理の組み合わせから構成されるリアルタイム処理を、限られたある一定時間間隔で周期的に実行するためには、連鎖された複数の処理すべてを各周期の時間間隔内に完了することが必要となる。
図1には、本発明の一実施形態に係るリアルタイム処理システムを実現するための計算機システムの構成例が示されている。この計算機システムは、リアルタイム性が要求される各種処理をその時間的な制約条件の範囲内で実行する情報処理システムであり、汎用計算機として利用できるほか、リアルタイム性が要求される処理を実行するための様々な電子機器用の組み込みシステムとして利用することができる。図1に示されているように、この計算機システムにおいては、マスタープロセッサユニット(MPU11:Master Processing Unit)11と、複数のバーサタイルプロセッサユニット(VPU:Versatile Processing Unit)12と、メインメモリ14と、入出力制御装置15とが、接続装置13によって相互に接続されている。接続装置13は、バスを含むデータ転送路である。このバスとしては、例えば、リング状のバス構造、あるいはクロスバスイッチのような相互結合網などを用いることが出来る。MPU11は計算機システムの動作を制御するメインプロセッサである。オペレーティングシステム(OS:Operating System)は、主にMPU11によって実行される。OSの一部の機能はVPU12や入出力制御装置15で分担して実行することもできる。各VPU12は、MPU11の管理の下で各種の処理を実行するプロセッサである。MPU11は、複数のVPU12に処理を振り分けて並列に実行させるための制御を行う。これにより高速で効率よい処理の実行を行うことが出来る。メインメモリ14は、MPU11、複数のVPU12および入出力制御装置15によって共有される記憶装置(共有メモリ)である。OSおよびアプリケーションプログラムはメインメモリ14に格納される。入出力制御装置15には、ひとつあるいは複数の入出力デバイス(入出力装置)16が接続される。入出力制御装置15はブリッジとも呼ばれる。
1.計算機システム全体のクロックの周波数を下げる
2.計算機システム全体の電源電圧を下げる
3.計算機システム全体の電源を切る
4.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)のクロックの周波数を下げる
5.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)の電源電圧を下げる
6.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)の電源を切る
7.接続装置のクロック周波数を下げる
8.接続装置の転送速度を下げる
9.接続装置のバス幅を減らす
10.接続装置の電源を切る
11.メモリバンク単位で電源を切る
12.メモリバンク単位でリフレッシュを止める
13.MPUやVPU内で同時に動作する機能モジュールを減らす(たとえば演算装置を複数持っている場合に、同時に使う演算装置を制限することで、使わない演算装置の消費電力を下げる)
これらの省電力機能は、ソフトウェアの制御の下に行うことができる。また、上記1−13の省電力のための制御は、単独で実施することもできるし、組み合わせて実施することもできる。
1.メモリ(主記憶装置)
2.MPU11の各種制御レジスタ
3.各VPU12の各種制御レジスタ
4.各VPU12のローカルストレージ
5.各種入出力デバイス(入出力装置)の制御レジスタ(入出力制御装置の制御レジスタも含む)
MPU11および各VPU12は、実アドレス空間の該当するアドレスにアクセスすることで、1〜5の各データを読み書きすることができる。特に、実アドレス空間にアクセスすることで、どのMPU11からでも、あるいはどのVPU12からでも、さらに入出力制御装置15からでも、任意のVPU12のローカルストレージ32にアクセスすることができることは重要である。またセグメントテーブルあるいはページテーブルを用いて、VPU12のローカルストレージ32の内容が自由に読み書きされないように保護することもできる。
MPU11あるいはVPU12からみたアドレス空間は、図3の仮想記憶メカニズムを用いて、たとえば図5に示すようにマッピングされる。MPU11あるいはVPU12上で実行しているプログラムから直接見えるのは、実効アドレス(EA;Effective Address)空間である。EAは、セグメントテーブル50によって、仮想アドレス(VA;Virtual Address)空間にマッピングされる。さらにVAは、ページテーブル60によって、実アドレス(RA;Real Address)空間にマップされる。このRAが、図4で説明したような構造を持っている。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
本実施形態の計算機システムにおいては、上述のプログラムモジュール100のようなリアルタイム処理を制限された時間内に完了するというリアルタイム性を保障しながら、計算機システムの消費電力を低減するための省電力制御が実行される。例えば、特定の時間間隔で周期的に実行することが要求されるリアルタイム処理を複数のVPUを用いて実行する場合には、そのリアルタイム処理を構成する複数の処理要素が特定の時間間隔内に実行完了でき、且つ必要なデータ転送バンド幅が周期内でできるだけ均一に分散されるように、スケジューリング処理が実行される。この場合、複数の処理要素それぞれが必要とするバスバンド幅に基づいて、複数の処理要素の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理要素の実行期間が互いに重複しないように、複数の処理それぞれが実行されるVPUと複数の処理要素それぞれの実行開始タイミングとが決定される。
ステップS1: オペレーティングシステムは、構成記述117を外部記憶装置またはメモリ13から入力し、リアルタイム処理を構成する処理要素間の実行順序、処理要素それぞれの実行に要するコスト、処理要素それぞれが必要とするデータ転送バンド幅を調べる。
本計算機システムでは、システム内にOS(オペレーティングシステム)をひとつだけ実装する場合には、図18に示すように、そのOS201がすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。
一方、仮想計算機方式を用いて、複数のOSを同時に動作させることも可能である。この場合には、図19に示すように、まず仮想計算機OS301を実装し、それがすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。仮想計算機OS301はホストOSと称されることもある。さらに仮想計算機OS301の上に、ひとつ以上のOS(ゲストOSとも呼ぶ)を実装する。各ゲストOS302,303は、図20に示すように、仮想計算機OS301によって与えられる仮想的な計算機資源から構成される計算機上で動作し、ゲストOS302,303の管理するアプリケーションプログラムに各種のサービスを提供する。図20の例では、ゲストOS302は、1つのMPU11と、2つのVPU12と、メモリ14とから構成される計算機上で動いていると思っており、ゲストOS303は1つのMPU11と、4つのVPU12と、メモリ14とから構成される計算機上で動いていると思っている。ゲストOS302からみたVPU12や、ゲストOS303からみたVPU12が、実際には実資源のどのVPU12に対応しているかは、仮想計算機OS301が管理している。ゲストOS302,303は、その対応を意識する必要はない。
1.仮想計算機OS301の中にVPU実行環境401を実装する方式(図23)
2.VPU実行環境401を仮想計算機OS301が管理するひとつのOSとして実装する方式(図25)。図25では、仮想計算機OS301上で動作するゲストOS304自体がVPU実行環境401である。
3.仮想計算機OS301が管理する各ゲストOSに、それぞれ専用のVPU実行環境401を実装する方式(図26)。図26においては、ゲストOS302,303にそれぞれVPU実行環境401,402が実装されている。VPU実行環境401,402は、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、必要に応じて、互いに連携して動作する。
4.仮想計算機OS301が管理するゲストOSのうちのひとつにVPU実行環境401を実装して、VPU実行環境を持たないゲストOSは、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、VPU実行環境401を持つゲストOSのVPU実行環境401を利用する方式(図27)。
方式1のメリット
・仮想計算機OSの持つゲストOS(仮想計算機OSが管理する対象のOS)のスケジューリングと、VPU12のスケジューリングを一体化できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストOSを導入する場合に新しくVPU実行環境を作らなくてもよい。
方式2のメリット
・仮想計算機OSの上にあるゲストOS間でVPU12のスケジューラを共有できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストを導入する場合に新しくVPU実行環境を作らなくてもよい。
・VPU実行環境を仮想計算機OSや特定のゲストOSに依存せずに作れるので、標準化がしやすく、取り替えて使うことも出来る。特定の組み込み機器に適応したVPU実行環境を作って、その機器の特性を活かしたスケジューリング等を行うことで、効率良い実行ができる。
方式3のメリット
・各ゲストOSに対してVPU実行環境を最適に実装できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・すべてのゲストOSがVPU実行環境を実装する必要がないので、新しいゲストOSを追加しやすい。
このように、いずれの方式でもVPU実行環境を実装することができる。また、このほかにも適宜実施可能である。
本実施形態の計算機システムにおいては、VPU実行環境401は、各VPU12に関連する各種資源(各VPUの処理時間、メモリ、接続装置のバンド幅、など)の管理とスケジューリング機能の他に、さまざまなサービス(ネットワークを使った通信機能、ファイルの入出力機能、コーデックなどのライブラリ機能の呼び出し、ユーザとのインタフェース処理、入出力デバイスを使った入出力処理、日付や時間の読み出し、など)を提供する。これらのサービスは、VPU12上で動作するアプリケーションプログラムから呼び出されて、簡単なサービスの場合にはそのVPU12上のサービスプログラムで処理される。しかし通信やファイルの処理などVPU12だけでは処理できないサービスに関しては、MPU11上のサービスプログラムによって処理する。このようなサービスを提供するプログラムを、サービスプロバイダ(SP)と呼ぶ。
VPU側VPU実行環境502は、主に、VPU12上のアプリケーションプログラムが呼び出したサービス要求を受けて、VPU12内で処理できるものは処理し、そうでないものはMPU側VPU実行環境501のサービスブローカ512に処理を依頼する働きをする。
本実施形態の計算機システムはリアルタイム処理システムとして機能する。この場合、そのリアルタイム処理システムの対象とする処理は、大きく、
1.ハードリアルタイム処理
2.ソフトリアルタイム処理
3.ベストエフォート処理(ノンリアルタイム処理)
の3種類に分類できる。1と2がいわゆるリアルタイム処理と呼ばれるものである。本実施形態のリアルタイム処理システムは、多くの既存のOSと同様、スレッドとプロセスの概念を持っている。ここではまず、本実施形態のリアルタイム処理システムにおけるスレッドとプロセスに関して説明する。
1.ハードリアルタイムクラス
このスレッドクラスは、その時間要件(timing requirements)は非常に重要で、その要件が満たされなかった際に重大な状況になるような、重要なアプリケーションに用いる。
2.ソフトリアルタイムクラス
このスレッドクラスは、例えその時間要件が満たされなかった場合においても、その品質が低下するだけのアプリケーションに用いる。
3.ベストエフォートクラス
このスレッドクラスは、その要件の中に一切の時間要件を含まないアプリケーションに用いる。
本リアルタイム処理システムにおいては、MPUスレッドとVPUスレッドの2種類のスレッドが存在する。これら2つのスレッドは、そのスレッドが実行されるプロセッサ(MPU11かVPU12)によって分類されており、スレッドとしてのモデルは全く同じである。VPUスレッドのスレッドコンテクストには、VPU12のローカルストレージ32の内容や、メモリコントローラ33の持つDMAコントローラの状態なども含む。
密結合スレッドグループは互いに協調して動作する複数のスレッドの集合から構成されるスレッドグループである。すなわち、密結合スレッドグループは、そのグループに属するスレッド群が、お互いに密接に連携して動作することを示す。密接な連携とは、例えば,頻繁にスレッド間で通信あるいは同期処理などの相互作用(interaction)を行ったり、あるいは、レイテンシ(latency)(遅延)の小さい相互作用を必要とする場合などである。一方、疎結合スレッドグループは、密結合スレッドグループに比べてそのグループに属するスレッド群間の密接な連携が不要であるスレッドグループであり、スレッド群はメモリ14上のバッファを介してデータ受け渡しのための通信を行う。
図31に示すように、密結合スレッドグループに属するスレッド群にはそれぞれ別のVPUが割り当てられ、各スレッドが同時に実行される。密結合スレッドグループに属するスレッドを、密結合スレッド(tightly coupled thread)と呼ぶ。この場合、密結合スレッドグループに属する密結合スレッドそれぞれの実行期間がそれら密結合スレッドの個数と同数のVPUそれぞれに対して予約され、それら密結合スレッドが同時に実行される。図31においては、ある密結合スレッドグループにスレッドA,Bの2つが密結合スレッドとして含まれており、それらスレッドA,BがそれぞれVPU0,VPU1によって同時に実行されている様子を示している。スレッドA,Bをそれぞれ別のVPUによって同時に実行することを保証することにより、各スレッドは相手のスレッドが実行されているVPUのローカルストレージや制御レジスタを通じて相手のスレッドとの通信を直接的に行うことが出来る。図32は、スレッドA,Bがそれぞれ実行されるVPU0,VPU1のローカルストレージを介してスレッドA,B間の通信が実行される様子を示している。この場合、スレッドAが実行されるVPU0においては、そのスレッドAのEA空間の一部に、通信相手のスレッドBが実行されるVPU1のローカルストレージ32に対応するRA空間がマッピングされる。このマッピングのためのアドレス変換は、VPU0のメモリコントローラ33内に設けられたアドレス変換ユニット331がセグメントテーブルおよびページテーブルを用いて実行する。スレッドBが実行されるVPU1においては、そのスレッドBのEA空間の一部に、通信相手のスレッドAが実行されるVPU0のローカルストレージ32に対応するRA空間がマッピングされる。このマッピングのためのアドレス変換は、VPU1のメモリコントローラ33内に設けられたアドレス変換ユニット331がセグメントテーブルおよびページテーブルを用いて実行する。図33には、VPU0上で実行されるスレッドAが自身のEA空間にスレッドBが実行されるVPU1のローカルストレージ(LS1)32をマッピングし、VPU1上で実行されるスレッドBが自身のEA空間にスレッドAが実行されるVPU0のローカルストレージ(LS0)32をマッピングした様子が示されている。例えば、スレッドAはスレッドBに引き渡すべきデータがローカルストレージLS0上に準備できた時点で、そのことを示すフラグをローカルストレージLS0またはスレッドBが実行されるVPU1のローカルストレージLS1にセットする。スレッドBはそのフラグのセットに応答して、ローカルストレージLS0上のデータをリードする。
疎結合スレッドグループに属するスレッド群それぞれの実行時間は、それらスレッド群間の入出力関係によって決定され、たとえ実行順序の制約がないスレッド同士であってもそれらが同時に実行されることは保証されない。疎結合スレッドグループ属するスレッドを、疎結合スレッド(loosely coupled thread)と呼ぶ。図34においては、ある疎結合スレッドグループにスレッドC,Dの2つが疎結合スレッドとして含まれており、それらスレッドC,DがそれぞれVPU0,VPU1によって実行されている様子を示している。図34に示すように、各スレッドの実行時間はばらばらになる。スレッドC,D間の通信は、図35に示すように、メインメモリ14上に用意したバッファを介して行われる。スレッドCはローカルストレージLS0に用意したデータをDMA転送によってメインメモリ14上に用意したバッファに書き込み、スレッドDはその開始時にDMA転送によってメインメモリ14上のバッファからローカルストレージLS1にデータを読み込む。
プロセスは,図36に示すように、一つのアドレス空間と一つ以上のスレッドから構成される。一つのプロセスに含まれるスレッドの数と種類は,どのような組み合わせでも構わない。例えば,VPUスレッドのみから構成されるプロセスも構築可能であるし,VPUスレッドとMPUスレッドが混在するプロセスも構築可能である。スレッドがスレッド固有の情報としてスレッドコンテクストを保持しているのと同様に,プロセスもプロセス固有の情報としてプロセスコンテクストを保持する。このプロセスコンテクストには,プロセスに固有であるアドレス空間と,プロセスが含んでいる全スレッドのスレッドコンテクストが含まれる。プロセスのアドレス空間は,プロセスに属するすべてのスレッド間で共有することができる。一つのプロセスは,複数のスレッドグループを含むことができる。しかし,一つのスレッドグループが複数のプロセスに属することはできない。このため,あるプロセスに属するスレッドグループは,そのプロセスに固有であるということになる。本実施形態のリアルタイム処理システムにおいて、スレッドを新しく生成する方式には、Thread first modelとAddress space first modelの2種類がある。Address space first modelは既存のOSで採用されているのと同様の方式で、MPUスレッドにもVPUスレッドにも適用できる。一方、Thread first modelはVPUスレッドにしか適用できない方式で、本発明のリアルタイム処理システムに特有の方式である。Thread first modelでは,既存のスレッド(新しくスレッドを作りたいと思っている側のスレッド。新しく作るスレッドの親になるスレッドのこと。)は,まず新規スレッドが実行するプログラムを指定して,新規スレッドにプログラムの実行を開始させる。この時、プログラムはVPU12のローカルストレージに格納され、所定の実行開始番地から処理が開始される。この時点では、この新規スレッドにはアドレス空間が関連付けられていないので、自身のローカルストレージはアクセスできるが、メモリ14はアクセスできない。その後,新規スレッドは,必要に応じて自身でVPU実行環境のサービスを呼び出してアドレス空間を生成して関連付けたり、MPU11側の処理によってアドレス空間を関連付けられたりして、メモリ14にアクセスできるようになる。Address space first modelでは,既存のスレッドは,新しくアドレス空間を生成するか、あるいは既存のアドレス空間を指定して、そのアドレス空間に新規スレッドが実行するプログラムを配置する。そして新規スレッドにそのプログラムの実行を開始させる。Thread first modelのメリットは、ローカルストレージだけで動作するので、スレッドの生成やディスパッチや終了処理などのオーバーヘッドを小さくできることである。
次に、図37のフローチャートを参照して、VPU実行環境401によって実行されるスケジューリング処理について説明する。VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群にスレッドグループ単位で付加されている結合属性情報に基づいて、スレッド間の結合属性をチェックし(ステップS121)、各スレッドグループ毎にそのスレッドグループが密結合スレッドグループおよび疎結合スレッドグループのいずれであるかを判別する(ステップS122)。結合属性のチェックは、プログラムコード中のスレッドに関する記述あるいは上述の構成記述117中のスレッドパラメータを参照することによって行われる。このようにして、密結合スレッドグループおよび疎結合スレッドグループをそれぞれ特定することにより、スケジュール対象のスレッド群は密結合スレッドグループと疎結合スレッドグループとに分離される。
一般にスレッドは、生成されてから消滅するまで、たとえば図38に示すような状態遷移を行う。図38の例では、以下の7種類の状態を遷移する。
1.NOT EXISTENT状態
論理的な状態であり,有効なスレッドでは,この状態はない。
2.DORMANT状態
スレッドは生成されているが,まだ実行は開始されていない。
3.READY状態
スレッドが,その実行を開始する準備ができている状態。
4.WAITING状態
スレッドが,実行を開始(再開)するための条件が満たされることを待っている状態。
5.RUNNING状態
スレッドが,実際にVPUまたはMPU上で実行されている状態。
6.SUSPENDED状態
VPU実行環境や他のスレッドにより,スレッドが強制的にその実行を中断させられている状態。
7.WAITING-SUSPENDED状態
WAITING状態とSUSPENDED状態が重なった状態。
<NOT EXISTENT状態からDORMANT状態への遷移>
・スレッドの作成によって遷移する。
・スレッドコンテクストが作成される。ただしコンテクストの中身は初期状態である。
<DORMANT状態からNOT EXISTENT状態への遷移>
・スレッドの削除によって遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によって,保存されていたコンテクストは破棄される。
<DORMANT状態からWAITING状態への遷移>
・スレッドが,実行環境に対してスレッドのスケジューリングをリクエストすると,スレッドの状態は,DORMANT状態からWAITING状態へ遷移する。
<WAITING状態からREADY状態への遷移>
・スレッドが,生起するのを待っていたイベント(例えば,同期や通信,タイマなど)が,生起した場合に,スレッドの状態はWAITING状態からREADY状態へ遷移する。
・スレッドが,実行環境によってMPUまたはVPUにディスパッチされると,スレッドの状態は,READY状態からRUNNING状態へ遷移する。
・スレッドコンテクストがロードされる。また,スレッドコンテクストが退避されていた場合には,復元される。
<RUNNING状態からREADY状態への遷移>
・スレッドが,スレッドの実行を横取りされると,スレッドの状態は,RUNNING状態からREADY状態へ遷移する。
・スレッドが,同期や通信などの機構を利用し,イベントを待つために自身の実行を中断した場合,スレッドの状態は,RUNNING状態からWAITING状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からWAITING状態へ遷移する際に,実行環境によって,そのスレッドのスレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り保持され,次にこのスレッドがRUNNING状態に遷移した時に復元される。
<RUNNING状態からSUSPENDED状態への遷移>
・スレッドが,実行環境や他のスレッドからの指示などによって,強制的にその実行を中断させられた場合,スレッドの状態は,RUNNING状態からSUSPENDED状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からSUSPEND状態へ遷移する際に,実行環境によって,スレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り,次にこのスレッドがRUNNING状態に遷移した時に復元される。
・スレッドは,スレッド自身でその実行を終了した場合に,RUNNING状態からDORMANT状態へ遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によってコンテクストの内容が破棄される。
<WAITING状態からWAITING-SUSPENDED状態への遷移>
・スレッドがWAITING状態にてイベントなどの生起を待っている最中に,外部から強制的にスレッドの実行を中断された場合,スレッドの状態は,WAITING状態からWAITING-SUSPENDED状態へ遷移する。
<WAITING-SUSPENDED状態からWAITING状態への遷移>
・スレッドが,WAITING-SUSPENDED状態にいる最中に,外部からスレッドの実行を再開された場合,スレッドの状態はWAITING-SUSPENDED状態からWAITING状態へ遷移する。
・スレッドは,スレッドがWAITING状態にいた時に待っていたイベントが生起した場合に,スレッドの状態は,WAITING-SUSPENDED状態からSUSPENDED状態へ遷移する。
・スレッドが,外部からスレッドの実行を再開させられた時に,スレッドの状態は,SUSPENDED状態からREADY状態へ遷移する。
・スレッドが,外部環境によってスレッドの実行が中断させられた場合に,スレッドの状態は,READY状態からSUSPENDED状態へ遷移する。
スレッドに実際にVPUが割り当てられて処理を実行しているRUNNING状態の期間を、実行期間(execution term)と呼ぶ。一般にスレッドが生成されてから消滅するまでの間には、スレッドは複数の実行期間を持つ。図39はあるスレッドの生成から消滅までの時間軸に沿った状態の変化の例を示しているが、この例では、その生存期間中に、2回の実行期間があることを示している。実行期間と実行期間との間のコンテクストの保存(save)や復元(restore)は、さまざまな方法を用いて実現することができる。たとえば、多くの通常のスレッドは、実行期間が終了した時点のコンテクストを保存しておいて、次の実行期間の初めにそのコンテクストを復元するように動作させる。一方、ある種の周期的な(periodic)処理においては、全ての周期(period)において、実行期間の開始時には新しいコンテクストを作成してその実行期間中はそのコンテクストを使って実行を進め、実行期間の終了時にはそのコンテクストは廃棄するように動作させる。
密結合スレッドグループに属するスレッドの場合の実行期間は、たとえば図40のようになる。すなわち、密結合スレッドグループに属するすべてのスレッドは、ある一つの実行期間において、全てのスレッドが同時に実行されるように、VPU実行環境401によってスケジューリングされる。このような密結合スレッドグループは、主としてハードリアルタイムスレッドに対して使用される。そのため、この動作を実現するために、VPU実行環境401は、ハードリアルタイムクラスにおける実行期間を予約するときに、同時に使用するプロセッサとその数を指定する。さらに、VPU実行環境401は、予約するそれぞれのプロセッサに対して、一対一に同時実行させるスレッドのコンテクストを対応させる。
スレッドの実行モデルは、大きく、図41に示すような周期実行モデルと、図42に示すような非周期実行モデルの2つに分類できる。周期実行モデルでは、スレッドは周期的(periodically)に実行される。その一方、非周期実行モデルでは、イベントを起点としてその実行が行われる。周期実行モデルの実装方式には、ソフトウェア割込みを用いる方式と、同期機構(synchronization primitives)のようなイベントオブジェクトを用いる方式がある。ハードリアルタイムクラスでは、ソフトウェア割込みを用いて実装する。すなわち、VPU実行環境401は、周期的な処理を開始するタイミングで、所定の方法で決定されるスレッドのエントリポイントへジャンプしたり、あるいは、事前に所定の手順で登録されたコールバック関数を呼び出す。ソフトリアルタイムクラスでは、イベントオブジェクトを用いて実装する。すなわち、各周期において、あらかじめ登録されたイベントオブジェクトに対して、たとえばVPU実行環境401がイベントを通知するので、ソフトリアルタイムスレッドは、毎周期そのイベントオブジェクトを待ち、イベントが発生したら所定の処理を実行するようにプログラムを構成することで、周期実行モデルを実現する。ベストエフォートクラスの場合は、ソフトウェア割込みを用いる方式を用いても、イベントオブジェクトを用いる方式を用いても、周期実行モデルを実装できる。なお、実際の実行は、それぞれの周期の先頭で常に開始されるとは限らず、制約条件(constraints)の範囲内で、状態に応じて遅らされることもある。
本実施形態のリアルタイム処理システムにおいては、VPUスレッドの実行期間の終了に伴うコンテクストの切り替え方式は、複数の方式から選択することができる。VPUのコンテクスト切り替えのコストは非常に大きいので、その方式を選択できるようにすることで、コンテクスト切り替えの効率を向上させることができる。指定したコンテクスト切り替え方式は、スレッドの予約された実行期間が終了した際に用いられるものである。実行期間中のコンテクスト切り替え、すなわち、いわゆるプリエンプションの際には、どの様な場合においても現在のスレッドの全てのコンテクストを保存して、次に実行再開するときに復元する必要がある。本実施形態のリアルタイム処理システムで提供するVPUコンテクスト切り替えの方式には、たとえば、以下のような方式がある。
いかなるコンテクストも保存しない。
2.完全なコンテクストの保存
VPUのレジスタ、ローカルストレージ、およびメモリコントローラ内のDMAコントローラの状態を含む、VPUの完全なコンテクストを保存する。
3.Gracefulコンテキスト保存
VPUのメモリコントローラ内のDMAコントローラが実行中の全ての動作が完了するまでコンテクスト切り替えを遅延する。その後、VPUのレジスタとローカルストレージの内容を保存する。この方式では、完全なコンテクスト保存と同様、VPUのコンテクストの全てが保存される。
ハードリアルタイムクラスのスレッド群のスケジューリングは、タスクグラフを拡張した予約グラフを用いて行われる。図43はタスクグラフの例である。タスクグラフは、タスク間の関係を表す。タスク間の矢印は、タスク間の依存関係(入出力関係)を示している。図43の例では、タスク1とタスク2は、自由に実行を開始することが出来ることを表している。それに対し、タスク3は、タスク1とタスク2両方の実行終了後に始めて実行を開始することが出来ることを表している。また、タスク4とタスク5は、タスク3の実行終了後に実行を開始することが出来ることを表している。タスクグラフにはコンテクストの概念がない。例えば、タスク1とタスク4とを同じコンテクストを用いて実行したい場合に、それを記述することができない。そこで、本実施形態のリアルタイム処理システムでは、以下のようにしてタスクグラフを拡張した予約グラフを用いる。
ソフトリアルタイムクラスのスケジューリングは、スレッドの実行形態を予測可能とするために、固定優先度スケジューリングを用いて実行される。そのスケジューリング方式としては、固定優先度FIFOスケジューリングと固定優先度ラウンドロビンスケジューリングの2種類のスケジューリングアルゴリズムを用意する。優先度の高いスレッドの実行を優先するため、低い優先度のスレッドが実行中であっても、より高い優先度のスレッドが実行可能になった場合には、低優先度のスレッドの実行をプリエンプトし、直ちに高優先度のスレッドの実行を開始する。クリティカルセクション(critical section)の実行時に発生する、優先度逆転問題を避けるため、優先度継承プロトコルや、優先度シーリングプロトコルなどの同期機構を併せて実施するのが望ましい。
ベストエフォートクラスのスケジューリングは、たとえば、動的優先度スケジューリングなどを用いる。
VPU実行環境401内のスケジューリング機能は、図46に示すような階層型のスケジューラとして実施することができる。すなわち、スレッドレベルのスケジューリングは、スレッドクラス間(inter−class)スケジューリングと、スレッドクラス内(intra−class)スケジューリングの、2つの階層により構成する。そのため、VPU実行環境401内のスケジューラは、スレッドクラス内(intra−class)スケジューリング部601と、スレッドクラス間(inter−class)スケジューリング部602とを持つ。スレッドクラス間スケジューリングでは、スレッドクラス間を跨るスケジューリングを行う。スレッドクラス内スケジューリングでは、それぞれのスケジューリングクラスごとに、そのスケジューリングクラスに属するスレッドのスケジューリングを行う。スレッドクラス内(intra−class)スケジューリング部601には、ハードリアルタイム(ハードRT)クラススケジューリング部611、ソフトリアルタイム(ソフトRT)クラスケジューリング部612、ベストエフォートクラスケジューリング部613が設けられている。
本実施形態のリアルタイム処理システムでは、さまざまなパラメタを用いてスケジューリングを行う。各クラスのスレッドに共通のパラメタには、たとえば以下のようなものがある。
・スレッドのクラス(ハードリアルタイム、ソフトリアルタイム、ベストエフォート)
・使用するリソース(MPUもしくはVPUの数、バンド幅、物理メモリサイズ、入出力デバイス)
・優先度
・横取り可能(preemptive)か横取り不可(non-preemptive)か
さらにハードリアルタイムクラスのスレッドに関しては、たとえば以下のようなパラメタがある。
・デッドライン
・周期あるいは最小発生期間(minimum inter-arrival time)
・VPUのコンテクスト切り替え方式
図47にハードリアルタイムクラスの基本的なパラメタの例を示す。図47の一番上にある例1の実行期間の予約指定の例では、指定した実行期間の間、MPUを1つ、VPUを2つ同時に予約し、VPUのコンテクストを完全に保存することを指定している。この場合、3つのプロセッサ上で同時にスレッドが実行され、その実行期間終了後に、MPUスレッドに加え、VPUスレッドのコンテクストが完全に保存される。次に、右上にある例2では、VPU数とその実行期間によって表現される処理が、デッドラインより以前に実行されることを保障する際の、デッドラインの指定方法を示している。デッドラインは、予約リクエストを行った時刻(request time)からの相対時刻で指定される。もっとも下にある例3では、周期実行を指定している。この例では、2つのVPU12を指定した実行期間が、周期的に実行され、また、各周期の実行後にVPUスレッドのコンテクストが破棄され、全ての処理が新しいコンテクストで処理されること示している。さらに、その周期の先頭からの相対時刻を用いてデッドラインを指定している。
・タイミング制約(絶対タイミング制約、相対タイミング制約)
・先行制約
・相互排他制約
タイミング制約は、実行タイミングを遅らせる手段を提供する。絶対タイミング制約は、図48に示すように、例えば周期の開始時刻のような、ある静的なタイミングを基準として遅延時間を指定する制約条件である。相対タイミング制約は、図49に示すように、例えば他の実行期間の開始時刻や終了時刻のような、動的なタイミングやイベントを基準として許容可能な遅延時間を指定する制約条件である。先行制約は、相対タイミング制約を用いて、他の実行期間の終了時間を基準にし、その遅延時間を0以上と指定することで実現できるので、先行制約は相対タイミング制約の特殊な場合と考えることができる。
本実施形態のリアルタイム処理システムでは、スレッドの同期機構として、たとえば以下のような手段を用いる。
・メッセージキュー
・メッセージバッファ
・イベントフラグ
・バリア
・ミューテックス
その他の同期プリミティブも、これらと同様に用いることができる。このような同期機構を実現する手段として、本発明のリアルタイム処理システムでは、次の3通りの方式がある。
・メールボックスやシグナルレジスタなどのハードウェア機構を使って実現する
・VPU実行環境がサービスとして提供する機構を利用する
これらの実現手段の異なる同期機構は、それぞれ得失を持っているため、それを利用するスレッドの属性等によって、たとえば図51のように使い分けるのが望ましい。すなわち、MPUやVPUが共有してアクセスできるメモリ13(主記憶MS)を使って実装した同期機構は、すべてのクラスのスレッドで使用できる。それに対して,VPU12のローカルストレージLS上に実装した同期機構は、密結合スレッドグループ(tightly coupled thread group)に属するスレッドのみが使うことができる。これは、密結合スレッドグループに属するスレッドのみが,同期相手のスレッドが同時に動作していることを保障されるからである。例えば,相手のスレッドが動作しているVPUのローカルストレージ上に実装した同期機構を用いる場合、密結合スレッドグループのスレッドであれば、同期機構を使う時点で、相手のスレッドが動作していることが保障されているので、その相手スレッドを実行しているVPUのローカルストレージに同期機構のための情報が必ず存在する。
本実施形態のリアルタイム処理システムでは、上記の同期機構を、スレッドの属性や状態に合わせて自動的に選択・切り替えを行うことができる。これは例えば図52に示すような手順により、同期処理を行いたいスレッドが密結合スレッドグループに属している状態の間は(ステップS201のYES)、メモリ14あるいはVPU12のローカルストレージ32あるいはハードウェア機構を用いて実装された高速な同期機構を用いるが(ステップS202,S203,S204,S205)、スレッドの状態が変化して密結合関係になくなった状態では(ステップS201のNO)、メモリ14上に実装された同期機構化あるいはVPU実行環境401のサービスとして提供されている同期機構を用いるように同期機構を切り替える(ステップS206,S207,S208)。
この切り替え手段は、VPU12上で動作するプログラムに対して、ライブラリの形式で提供するようにしても良いし、VPU12側のVPU実行環境502の提供するサービスとして提供することもできる。複数の同期機構を切り替える方式としては、あらかじめ複数の同期機構を確保しておいて、それを使い分けるようにすることもできるし、切り替えを行う時点で新しく同期機構を確保するようにすることもできる。
図53は、図9に例として示した処理フローに対応する予約グラフを示したものである。図53において、6つの四角い箱は実行期間(execution term)を表している。各実行期間の四角の左上の番号は予約する実行期間のIDであり、実行期間の四角の中の記号は、その実行期間に対応付けられているスレッドコンテクストの識別子である。実行期間の四角の下の数値は、その実行期間の長さ(コスト)を表している。実行期間の四角の間を結ぶ矢印は、ここではすべて先行制約を表している。すなわち、矢印が入る実行期間は、必ず矢印が出ている実行期間が終わった後で実行を開始することを示している。これにより、実行期間間の連鎖が表現される。また、矢印に添えられている番号はその矢印で結ばれた実行期間の間でデータの受け渡しに使うバッファのIDを表しており、番号と共に添えられている数値はバッファのサイズを表している。図53に示した予約グラフに従って処理を実行するための手順は、以下のようになる。
2.A−DECプログラム112を実行するスレッドコンテクストを作成して、その識別子をA−DECとする。
3.V−DECプログラム113を実行するスレッドコンテクストを作成して、その識別子をV−DECとする。
4.TEXTプログラム114を実行するスレッドコンテクストを作成して、その識別子をTEXTとする。
5.PROGプログラム115を実行するスレッドコンテクストを作成して、その識別子をPROGとする。
6.BLENDプログラム116を実行するスレッドコンテクストを作成して、その識別子をBLENDとする 。
ここで手順1から6までのスレッドコンテクストの作成は、スレッドとして実行したいプログラムを指定してVPU実行環境401に依頼すると、VPU実行環境401が必要な資源を割り当ててスレッドコンテクストを作成し、そのハンドルを返してくるので、それを識別子と関連付けている。
ここでもし、ひとつの周期内で一連の処理要素DEMUX、V−DEC、PROG、BLENDを全て順次実行できるだけの時間がない場合には、複数の周期にまたがるようにソフトウェアパイプライン化を行う。例えば図56に示すように、最初の周期1ではDEMUXとV−DECをVPU0で行い、次の周期2でA−DEC、TEXT、PROG、BLENDの処理をVPU1で行うようにする。この周期2では、A−DEC、TEXT、PROG、BLENDの処理と並行して、次のフレームのDEMUXとV−DECがVPU0によって実行される。すなわち、図57に示すように、VPU0がDEMUXとV−DECを実行している間、VPU1では前の周期のDEMUXとV−DECの出力を受けたA−DEC、TEXT、PROG、BLENDが動くという具合に、パイプライン処理を行う。パイプライン処理を採用することにより、各周期におけるリアルタイム処理の実行をより短い時間で完了することが可能となる。
VPU実行環境401は、まず、逐次処理が必要な一連のスレッド群(DEMUX、V−DEC、PROG、BLEND)の全てをひとつの周期内で実行できるか否かを判別する(ステップS201)。1周期の値は、プログラムモジュール100の実行条件としてVPU実行環境401に対して予め設定されている。もちろん、構成記述117に周期の値を明示的に記述することもできる。ステップS201では、DEMUX、V−DEC、PROG、BLENDそれぞれのコストに基づいてそれらDEMUX、V−DEC、PROG、BLENDの総実行期間が予測される。そして、その予測値と周期の値とが比較される。
これにより、第1スレッドグループ(DEMUX、V−DEC)と第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)とがVPU0,VPU1の2つのプロセッサによってパイプライン形式で実行される。この結果、ある周期における第1スレッドグループ(DEMUX、V−DEC)の処理とその1周期遅れの第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)の処理とが並行して実行され、1/60秒の周期毎にフレームデータの処理結果を出力することが出来る。
上述したパイプライン処理は、処理要素間の実行順序の制約を満足する範囲で、実際上各処理要素の実行タイミングの制約を緩和することを可能にする。このため、パイプライン処理を用いることにより、各周期内に空き時間が無い場合でも、バスバンド幅の大きい処理同士の実行期間が重ならないようにスケジューリングすることも出来る。
図53に示した予約グラフは階層構造を持っていないが、図63に示すように、階層構造を持つ予約グラフを扱うことも出来る。図63の例では、実行期間AはBに先行し、BはCに先行する。Bの中はDがEとFに先行している。それゆえ、階層を解くと、AはDに先行し、EとFはCに先行することになる。
以下、プログラムモジュールに組み込まれた構成記述に基づいて各スレッドの実行期間を予約するための処理手順について説明する。
1.構成記述117のモジュール欄に書かれている各プログラムをロードして、それぞれを実行するスレッドを生成する。このとき、本実施形態では、構成記述117のエントリそれぞれに対して一つのスレッドを生成する。構成記述117の中に、同じモジュール名を持つ複数のエントリが存在する場合には、同じモジュールを実行する複数のスレッドをそれぞれのエントリと対応するように生成することになる。なお、図8の例では、すべてのスレッドはひとつのプロセスに属するように生成されるものとしているが、それぞれのスレッドが別のプロセスに属するように実施することもできるし、あるグループのスレッドはあるプロセスに属し、また他のグループのスレッドは別のプロセスに属するといったように実施することもできる。
2.構成記述117の情報から、図54で説明したような予約リクエストのデータ構造を作成する。
3.予約リクエストをVPU実行環境に渡して処理のスケジューリングを行い、実行を開始する。
まず、構成記述117の出力欄に1対1に対応するように、BUFFERレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例では、DEMUXモジュールの2番目の出力は1MBのバッファを使ってデータをV−DECに渡しているので、それに対応するように、図54のIdが2のBUFFERレコードを作成している。Idが2のBUFFERレコードには、そのバッファサイズがSize欄に1MBと記録され、そのバッファにデータを書き込むDEMUXモジュールに対応するタスクであるIdが1のTASKレコードへの参照がSrcTask欄に記録され、そのバッファのデータを読み出すV−DECモジュールに対応するタスクであるIdが3のTASKレコードへの参照がDstTask欄に記録されている。
Constraint欄: このTASKレコードに関する制約条件を記録する。先行制約の場合は、Precede:の後にそのTASKが先行する他のTASKのIdを必要な数指定する。Idが3のTASKレコードの場合、Idが5のPROGモジュールに対応するTASKに先行することを示している。
InputBuffer欄: このTASKレコードで指定されるスレッドがデータを読み出すバッファのBufferレコードのIdを必要な数指定する。
OutputBuffer欄: このTASKレコードで指定されるスレッドがデータを書き込むバッファのBufferレコードのIdを必要な数指定する。
Band欄: このTASKレコードで指定されるスレッドが必要とするバスバンド幅を指定する。
基本は、予約リクエスト中の各TASKレコードを、BUFFERを使った入出力関係を考慮して順序付けして、データの流れる順に、VPUの実行時間を割り付けて行けばよい。このとき、密結合スレッドグループに指定されているTASK群には、それぞれのTASKのスレッドに同時にVPUを割り付けるようにする必要がある。また、2以上のVPUを用いる場合には、全てのTASKレコードそれぞれのバスバンド幅を考慮して、与えられたリアルタイム処理を構成するTASK群のなかでバスバンド幅の大きい少なくとも上位2つのTASKの実行期間が互いに重複しないように、各VPUに対する順序付けがなされる。
ステップS301: 全ての入力タスクが割付け済みのタスクで、密結合指定のないタスクを選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たない場合であって、かつ、そのタスクが密結合指定されていないものが存在すれば、それを選択してステップS302へ、そうでなければステップS304へ行く。
ステップS302: 選択したタスクを予約できるVPUが存在すれば(言い換えると、他のタスクとの間の制約を満たす開始時間と実行期間を予約できるVPUが存在すれば)、ステップS303へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS303: 選択したタスクの予約エントリを作成して、予約リストにつなぐ。この場合、上述したようにバスバンド幅を考慮して実行タイミングが決定される。
ステップS305: 選択したタスク集合に含まれるすべてのタスクを同時に(同じ開始時間で同じ実行期間を持つように)予約できる複数のVPUが存在すればステップS306へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS306: 選択したタスク集合のすべてのタスクの予約エントリを作成して、予約リストにつなぐ。
Claims (11)
- バスを介してデータ転送を実行する複数のプロセッサを用いることによって複数の処理を特定の時間間隔内に実行するためのスケジューリング方法において、
前記複数の処理それぞれの実行に要する時間を示すコスト情報、および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報を入力するステップと、
前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記入力されたコスト情報およびバンド幅情報に基づいて、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を実行するステップとを具備することを特徴とするスケジューリング方法。 - 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定するステップと、
前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定ステップとをさらに具備することを特徴とする請求項1記載のスケジューリング方法。 - 前記データ転送速度設定ステップは、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように、前記バスの動作周波数の値を制御するステップを含むことを特徴とする請求項2記載のスケジューリング方法。
- 複数の処理を特定の時間間隔内に実行する情報処理システムにおいて、
バスと、
前記バスを介してデータ転送を実行する複数のプロセッサと、
前記複数の処理それぞれの実行に要する時間を示すコスト情報および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報に基づき、前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を実行する手段とを具備することを特徴とする情報処理システム。 - 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定する手段と、
前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定手段とをさらに具備することを特徴とする請求項4記載の情報処理システム。 - 前記データ転送速度設定手段は、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように、前記バスの動作周波数の値を制御する手段を含むことを特徴とする請求項5記載の情報処理システム。
- 前記バスは、相互結合網を含むことを特徴とする請求項4記載の情報処理システム。
- 前記バスに接続されたメモリをさらに具備し、
前記複数のプロセッサの各々は、前記バスを介して前記メモリとの間でデータ転送を実行するように構成されていることを特徴とする請求項4記載の情報処理システム。 - バスを介してデータ転送を実行する複数のプロセッサを含むコンピュータに、複数の処理を特定の時間間隔内に実行させるプログラムであって、
前記複数の処理それぞれの実行に要する時間を示すコスト情報、および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報を入力する処理を、前記コンピュータに実行させる手順と、
前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記入力されたコスト情報およびバンド幅情報に基づいて、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。 - 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定する処理を、前記コンピュータに実行させる手順と、
前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定処理を、前記コンピュータに実行させる手順とをさらに具備することを特徴とする請求項9記載のプログラム。 - 前記データ転送速度設定処理を前記コンピュータに実行させる手順は、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように前記バスの動作周波数の値を制御する処理を、前記コンピュータに実行させる手順を含むことを特徴とする請求項10記載のプログラム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003335498A JP4057989B2 (ja) | 2003-09-26 | 2003-09-26 | スケジューリング方法および情報処理システム |
US10/935,188 US7685599B2 (en) | 2003-09-26 | 2004-09-08 | Method and system for performing real-time operation |
EP04021572A EP1519269A3 (en) | 2003-09-26 | 2004-09-10 | Method and system for real-time scheduling |
CNB2004100117191A CN1318968C (zh) | 2003-09-26 | 2004-09-24 | 执行实时操作的方法和系统 |
KR1020040077323A KR100628492B1 (ko) | 2003-09-26 | 2004-09-24 | 실시간 동작 수행방법 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003335498A JP4057989B2 (ja) | 2003-09-26 | 2003-09-26 | スケジューリング方法および情報処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005100264A true JP2005100264A (ja) | 2005-04-14 |
JP4057989B2 JP4057989B2 (ja) | 2008-03-05 |
Family
ID=34191526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003335498A Expired - Fee Related JP4057989B2 (ja) | 2003-09-26 | 2003-09-26 | スケジューリング方法および情報処理システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US7685599B2 (ja) |
EP (1) | EP1519269A3 (ja) |
JP (1) | JP4057989B2 (ja) |
KR (1) | KR100628492B1 (ja) |
CN (1) | CN1318968C (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133858A (ja) * | 2005-09-30 | 2007-05-31 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
JP2008165746A (ja) * | 2006-12-06 | 2008-07-17 | Toshiba Corp | アクセラレータ、情報処理装置及び情報処理方法 |
JP2009025939A (ja) * | 2007-07-18 | 2009-02-05 | Renesas Technology Corp | タスク制御方法及び半導体集積回路 |
US7529861B2 (en) | 2006-07-25 | 2009-05-05 | Ntt Docomo, Inc. | Peripheral switching device and a peripheral switching control device |
JP2009525545A (ja) * | 2006-02-03 | 2009-07-09 | ラッセル・エイチ・フィッシュ・ザ・サード | スレッドに最適化されたマルチプロセッサアーキテクチャ |
JP2010515155A (ja) * | 2006-12-26 | 2010-05-06 | クラスター リソーセス インク | 異なるコンピュータリソースタイプにわたる予約の同時割当 |
WO2012111470A1 (ja) * | 2011-02-16 | 2012-08-23 | ソニー株式会社 | 送信端末および送信方法 |
JP2012533826A (ja) * | 2009-07-22 | 2012-12-27 | エンパイア テクノロジー ディベロップメント エルエルシー | 分離によるバッチスケジューリング |
JP2012533825A (ja) * | 2009-07-23 | 2012-12-27 | エンパイア テクノロジー ディベロップメント エルエルシー | バッチスケジューリングによるスレッドのスケジューリング |
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
JP2013516711A (ja) * | 2010-01-11 | 2013-05-13 | クアルコム,インコーポレイテッド | 電子デバイスにおける電力を制御するシステムおよび方法 |
US8799912B2 (en) | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
JP2015156165A (ja) * | 2014-02-21 | 2015-08-27 | ルネサスエレクトロニクス株式会社 | 画像処理装置、及びその制御方法 |
JP2018106472A (ja) * | 2016-12-27 | 2018-07-05 | 日立オートモティブシステムズ株式会社 | 制御装置 |
KR20200068702A (ko) * | 2017-10-10 | 2020-06-15 | 크로노-세이프 | 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법 |
Families Citing this family (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
EP1725934A4 (en) | 2004-03-13 | 2008-08-13 | Cluster Resources Inc | SYSTEM AND METHOD FOR SELF-OPTIMIZED RESOURCE RESERVATION IN CALCULATION TIME |
US9778959B2 (en) | 2004-03-13 | 2017-10-03 | Iii Holdings 12, Llc | System and method of performing a pre-reservation analysis to yield an improved fit of workload with the compute environment |
US7620706B2 (en) | 2004-03-13 | 2009-11-17 | Adaptive Computing Enterprises Inc. | System and method for providing advanced reservations in a compute environment |
WO2005089245A2 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method of co-allocating a reservation spanning different compute resources types |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP4197673B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
WO2006053093A2 (en) | 2004-11-08 | 2006-05-18 | Cluster Resources, Inc. | System and method of providing system jobs within a compute environment |
US8274518B2 (en) * | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
US9075657B2 (en) | 2005-04-07 | 2015-07-07 | Adaptive Computing Enterprises, Inc. | On-demand access to compute resources |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
US7650603B2 (en) * | 2005-07-08 | 2010-01-19 | Microsoft Corporation | Resource management for virtualization of graphics adapters |
US20140250173A1 (en) * | 2005-10-31 | 2014-09-04 | Adobe Systems Incorported | Selectively porting meeting objects |
JP2009532082A (ja) * | 2006-03-30 | 2009-09-10 | ギブン イメージング リミテッド | 生体内検出デバイス、ならびにイメージャとイメージャのプロセッサとの間の通信方法 |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
KR20080008137A (ko) * | 2006-07-19 | 2008-01-23 | 삼성전자주식회사 | 영상 복원 장치 및 방법 |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US7926035B2 (en) * | 2007-04-24 | 2011-04-12 | Microsoft Corporation | Testing multi-thread software using prioritized context switch limits |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US20090132400A1 (en) * | 2007-09-28 | 2009-05-21 | Verizon Services Organization Inc. | Data metering |
US8543720B2 (en) * | 2007-12-05 | 2013-09-24 | Google Inc. | Dynamic bit rate scaling |
US8230436B2 (en) * | 2008-01-10 | 2012-07-24 | Microsoft Corporation | Aggregating recurrent schedules to optimize resource consumption |
US20090182802A1 (en) * | 2008-01-10 | 2009-07-16 | Microsoft Corporation | Mobile device management scheduling |
US8166145B2 (en) * | 2008-01-10 | 2012-04-24 | Microsoft Corporation | Managing event-based conditional recurrent schedules |
DE102008005124A1 (de) * | 2008-01-18 | 2009-07-23 | Kuka Roboter Gmbh | Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter |
US8146094B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US8200910B2 (en) * | 2008-02-01 | 2012-06-12 | International Business Machines Corporation | Generating and issuing global shared memory operations via a send FIFO |
US8484307B2 (en) * | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8255913B2 (en) * | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Notification to task of completion of GSM operations by initiator node |
US8214604B2 (en) * | 2008-02-01 | 2012-07-03 | International Business Machines Corporation | Mechanisms to order global shared memory operations |
US8239879B2 (en) * | 2008-02-01 | 2012-08-07 | International Business Machines Corporation | Notification by task of completion of GSM operations at target node |
US8275947B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Mechanism to prevent illegal access to task address space by unauthorized tasks |
FR2943158B1 (fr) * | 2009-03-12 | 2011-04-08 | St Wireless Sa | Procede de commande d'un transfert de donnees sur un bus informatique a transmission serie. |
FR2950714B1 (fr) * | 2009-09-25 | 2011-11-18 | Bull Sas | Systeme et procede de gestion de l'execution entrelacee de fils d'instructions |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US8776076B2 (en) * | 2010-07-20 | 2014-07-08 | Nec Laboratories America, Inc. | Highly scalable cost based SLA-aware scheduling for cloud services |
CN101916068B (zh) * | 2010-07-29 | 2012-01-11 | 北京交大资产经营有限公司 | 基于2取2结构的计算机控制系统及其实现方法 |
KR101522477B1 (ko) * | 2010-08-20 | 2015-05-21 | 인터내셔널 비지네스 머신즈 코포레이션 | 시뮬레이션 방법, 시스템 및 프로그램 |
CN103250131B (zh) | 2010-09-17 | 2015-12-16 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
WO2012135031A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
US8861414B2 (en) * | 2011-04-08 | 2014-10-14 | The Regents Of The University Of Michigan | Reducing energy consumption in wireless devices |
US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
KR101812583B1 (ko) | 2011-07-21 | 2018-01-30 | 삼성전자주식회사 | 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US9229847B1 (en) | 2012-04-18 | 2016-01-05 | Open Invention Network, Llc | Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems |
CN102722402B (zh) * | 2012-05-28 | 2014-03-05 | 上海微频莱机电科技有限公司 | 一种非抢占式实时调度多任务的处理系统及方法 |
US9396735B2 (en) * | 2013-01-03 | 2016-07-19 | Google Inc. | System for real time audio processing driven by interrupt and timer event |
US9280388B2 (en) * | 2013-01-22 | 2016-03-08 | Oracle International Corporation | Method and apparatus for efficient scheduling of multithreaded programs |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
KR20150130510A (ko) | 2013-03-15 | 2015-11-23 | 소프트 머신즈, 인크. | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
JP6070355B2 (ja) * | 2013-03-28 | 2017-02-01 | 富士通株式会社 | 仮想マシン制御プログラム,仮想マシン制御方法,仮想マシン制御装置及びクラウドシステム |
US9135062B2 (en) * | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
US9348644B2 (en) | 2014-10-08 | 2016-05-24 | International Business Machines Corporation | Application-level dispatcher control of application-level pseudo threads and operating system threads |
EP3244304A4 (en) * | 2015-01-07 | 2018-01-31 | Fujitsu Limited | Task switch assistance method, task switch assistance program, and information processing device |
US20160301634A1 (en) * | 2015-04-11 | 2016-10-13 | International Business Machines Corporation | Controlling a delivery of messages to designated computing devices |
US10592279B2 (en) * | 2016-06-23 | 2020-03-17 | Advanced Micro Devices, Inc. | Multi-processor apparatus and method of detection and acceleration of lagging tasks |
US10719350B2 (en) * | 2017-10-10 | 2020-07-21 | Sap Se | Worker thread manager |
CN111221573B (zh) * | 2018-11-26 | 2022-03-25 | 深圳云天励飞技术股份有限公司 | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 |
US11422857B2 (en) | 2019-06-01 | 2022-08-23 | Apple Inc. | Multi-level scheduling |
CN110990144B (zh) * | 2019-12-17 | 2022-11-08 | 深圳市晨北科技有限公司 | 一种任务确定方法及相关设备 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4691280A (en) * | 1982-06-28 | 1987-09-01 | The Singer Company | High performance multi-processor system |
US5065392A (en) * | 1990-04-10 | 1991-11-12 | Dsc Communications Corporation | Network controller scheduling system and method of operation |
US5418953A (en) | 1993-04-12 | 1995-05-23 | Loral/Rohm Mil-Spec Corp. | Method for automated deployment of a software program onto a multi-processor architecture |
US5590323A (en) * | 1994-05-13 | 1996-12-31 | Lucent Technologies Inc. | Optimal parallel processor architecture for real time multitasking |
FR2723652B1 (fr) * | 1994-08-11 | 1996-09-13 | Cegelec | Procede pour ordonnancer des taches successives |
JPH08180025A (ja) | 1994-12-21 | 1996-07-12 | Toshiba Corp | スケジューリング装置 |
WO1996028783A1 (en) * | 1995-03-10 | 1996-09-19 | Motorola Inc. | Method and system for storing instructions in computer memory |
US5956321A (en) | 1995-03-16 | 1999-09-21 | Kabushiki Kaisha Toshiba | Stream scheduling system for real time stream server |
US6055577A (en) * | 1996-05-06 | 2000-04-25 | Oracle Corporation | System for granting bandwidth for real time processes and assigning bandwidth for non-real time processes while being forced to periodically re-arbitrate for new assigned bandwidth |
US6067557A (en) * | 1996-09-06 | 2000-05-23 | Cabletron Systems, Inc. | Method and system for allocating CPU bandwidth by prioritizing competing processes |
JPH10143380A (ja) | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
US6385638B1 (en) * | 1997-09-04 | 2002-05-07 | Equator Technologies, Inc. | Processor resource distributor and method |
JP3724536B2 (ja) | 1998-02-20 | 2005-12-07 | 富士ゼロックス株式会社 | 画像出力制御装置およびその処理実行制御方法 |
JP3382176B2 (ja) * | 1999-03-26 | 2003-03-04 | 株式会社東芝 | 要求処理方法および要求処理装置 |
US6542940B1 (en) * | 1999-10-25 | 2003-04-01 | Motorola, Inc. | Method and apparatus for controlling task execution in a direct memory access controller |
US6526462B1 (en) * | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
US7140022B2 (en) * | 2000-06-02 | 2006-11-21 | Honeywell International Inc. | Method and apparatus for slack stealing with dynamic threads |
JP2004502235A (ja) | 2000-06-27 | 2004-01-22 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | スケジュール決定方法、スケジューラ及びシステム |
US7065586B2 (en) * | 2000-12-22 | 2006-06-20 | Radiance Technologies, Inc. | System and method for scheduling and executing data transfers over a network |
JP3990115B2 (ja) * | 2001-03-12 | 2007-10-10 | 株式会社東芝 | サーバ側プロキシ装置及びプログラム |
US20040151187A1 (en) * | 2003-01-31 | 2004-08-05 | Lichtenstein Walter D. | Scheduling data transfers for multiple use requests |
JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4025260B2 (ja) * | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
-
2003
- 2003-09-26 JP JP2003335498A patent/JP4057989B2/ja not_active Expired - Fee Related
-
2004
- 2004-09-08 US US10/935,188 patent/US7685599B2/en not_active Expired - Fee Related
- 2004-09-10 EP EP04021572A patent/EP1519269A3/en not_active Withdrawn
- 2004-09-24 KR KR1020040077323A patent/KR100628492B1/ko not_active IP Right Cessation
- 2004-09-24 CN CNB2004100117191A patent/CN1318968C/zh not_active Expired - Fee Related
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9164953B2 (en) | 2005-09-30 | 2015-10-20 | Synopsys, Inc. | Scheduling in a multicore architecture |
US8751773B2 (en) | 2005-09-30 | 2014-06-10 | Synopsys, Inc. | Scheduling in a multicore architecture |
US9286262B2 (en) | 2005-09-30 | 2016-03-15 | Synopsys, Inc. | Scheduling in a multicore architecture |
JP2007133858A (ja) * | 2005-09-30 | 2007-05-31 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
JP2012089154A (ja) * | 2005-09-30 | 2012-05-10 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
US9442886B2 (en) | 2005-09-30 | 2016-09-13 | Synopsys, Inc. | Scheduling in a multicore architecture |
US8732439B2 (en) | 2005-09-30 | 2014-05-20 | Synopsys, Inc. | Scheduling in a multicore processor |
US8533503B2 (en) | 2005-09-30 | 2013-09-10 | Synopsys, Inc. | Managing power consumption in a multicore processor |
JP2009525545A (ja) * | 2006-02-03 | 2009-07-09 | ラッセル・エイチ・フィッシュ・ザ・サード | スレッドに最適化されたマルチプロセッサアーキテクチャ |
US7529861B2 (en) | 2006-07-25 | 2009-05-05 | Ntt Docomo, Inc. | Peripheral switching device and a peripheral switching control device |
JP2008165746A (ja) * | 2006-12-06 | 2008-07-17 | Toshiba Corp | アクセラレータ、情報処理装置及び情報処理方法 |
JP2010515155A (ja) * | 2006-12-26 | 2010-05-06 | クラスター リソーセス インク | 異なるコンピュータリソースタイプにわたる予約の同時割当 |
JP2009025939A (ja) * | 2007-07-18 | 2009-02-05 | Renesas Technology Corp | タスク制御方法及び半導体集積回路 |
US8607234B2 (en) | 2009-07-22 | 2013-12-10 | Empire Technology Development, Llc | Batch scheduling with thread segregation and per thread type marking caps |
US8799912B2 (en) | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
JP2012533826A (ja) * | 2009-07-22 | 2012-12-27 | エンパイア テクノロジー ディベロップメント エルエルシー | 分離によるバッチスケジューリング |
US8839255B2 (en) | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
JP2012533825A (ja) * | 2009-07-23 | 2012-12-27 | エンパイア テクノロジー ディベロップメント エルエルシー | バッチスケジューリングによるスレッドのスケジューリング |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
JP2013516711A (ja) * | 2010-01-11 | 2013-05-13 | クアルコム,インコーポレイテッド | 電子デバイスにおける電力を制御するシステムおよび方法 |
US8745629B2 (en) | 2010-01-11 | 2014-06-03 | Qualcomm Incorporated | System and method of controlling power in an electronic device |
WO2012111470A1 (ja) * | 2011-02-16 | 2012-08-23 | ソニー株式会社 | 送信端末および送信方法 |
CN102835126A (zh) * | 2011-02-16 | 2012-12-19 | 索尼公司 | 传送终端和传送方法 |
JP2012169959A (ja) * | 2011-02-16 | 2012-09-06 | Sony Corp | 送信端末および送信方法 |
JP2015156165A (ja) * | 2014-02-21 | 2015-08-27 | ルネサスエレクトロニクス株式会社 | 画像処理装置、及びその制御方法 |
JP2018106472A (ja) * | 2016-12-27 | 2018-07-05 | 日立オートモティブシステムズ株式会社 | 制御装置 |
WO2018123707A1 (ja) * | 2016-12-27 | 2018-07-05 | 日立オートモティブシステムズ株式会社 | 制御装置 |
KR20200068702A (ko) * | 2017-10-10 | 2020-06-15 | 크로노-세이프 | 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법 |
JP2020537269A (ja) * | 2017-10-10 | 2020-12-17 | クロノ−セーフ | リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法 |
JP7266590B2 (ja) | 2017-10-10 | 2023-04-28 | クロノ-セーフ | リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法 |
KR102602151B1 (ko) | 2017-10-10 | 2023-11-15 | 크로노-세이프 | 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1519269A2 (en) | 2005-03-30 |
CN1601474A (zh) | 2005-03-30 |
CN1318968C (zh) | 2007-05-30 |
JP4057989B2 (ja) | 2008-03-05 |
US7685599B2 (en) | 2010-03-23 |
KR100628492B1 (ko) | 2006-09-26 |
KR20050030871A (ko) | 2005-03-31 |
EP1519269A3 (en) | 2006-08-23 |
US20050108715A1 (en) | 2005-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4057989B2 (ja) | スケジューリング方法および情報処理システム | |
JP4025260B2 (ja) | スケジューリング方法および情報処理システム | |
JP3920818B2 (ja) | スケジューリング方法および情報処理システム | |
JP4028444B2 (ja) | スケジューリング方法およびリアルタイム処理システム | |
JP3889726B2 (ja) | スケジューリング方法および情報処理システム | |
JP3892829B2 (ja) | 情報処理システムおよびメモリ管理方法 | |
US9836334B2 (en) | Scheduling application tasks only on logical processors of a first set and operating system interferences in logical processors of a second set | |
Kato et al. | CPU scheduling and memory management for interactive real-time applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070515 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070711 |
|
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: 20071211 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071214 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131221 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |