JP2004509386A - 複数のプロセッサにソフトウェア機能を自動的に割り当てる方法 - Google Patents
複数のプロセッサにソフトウェア機能を自動的に割り当てる方法 Download PDFInfo
- Publication number
- JP2004509386A JP2004509386A JP2002506415A JP2002506415A JP2004509386A JP 2004509386 A JP2004509386 A JP 2004509386A JP 2002506415 A JP2002506415 A JP 2002506415A JP 2002506415 A JP2002506415 A JP 2002506415A JP 2004509386 A JP2004509386 A JP 2004509386A
- Authority
- JP
- Japan
- Prior art keywords
- assignment
- processor
- software
- task
- processors
- 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.)
- Pending
Links
- 230000006870 function Effects 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000011156 evaluation Methods 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本発明は、ソフトウェア機能を複数のプロセッサに自動的に割り当てる方法に関するものである。当該方法は、少なくとも、ソフトウェアの機能を基本タスク(SW1,...SWk,...SWN)に分解する過程と、基本タスクをプロセッサ(HW1、HW2、HW3、HW4)に割り当てる過程と、予め作成したリストに基づいて、所定の条件が満足されないときはペナルティを加算する導入評価パラメータを制御する過程と、導入に関する選択を行うために、パラメータに対応するペナルティの合計で表わされる導入コストを計算する過程とを有する。本発明は特に、例えば、膨大な量のソフトウェアを備えたレーダシステムのようなシステムに適用することができる。
Description
【0001】
【技術分野】
本発明は、ソフトウェアの機能を複数のプロセッサに自動的に割り当てる方法に関するものである。本発明は、特に、例えば膨大な量のソフトウェア機能を備えたレーダシステムのようなシステムに適用することができる。
【0002】
【背景技術】
特にレーダシステムで使用されるソフトウェア機能の量は急速に増大しつつある。同様に、当該システムで使用されるプロセッサの量も増大しつつある。ここで用いられるプロセッサは、例えば信号処理用プロセッサのような形式のものである。アプリケーションによっては数十のプロセッサを必要とすることもある。使用可能なプロセッサに対してソフトウェアを割り当てる仕事は益々時間がかかり、かつ困難になりつつある。さらに、頻繁に行われているようにソフトウェア機能を追加する場合、ソフトウェアまたはハードウェアの基本構造に本質的な変更をせずに複数のプロセッサに対してソフトウェアを再配分することは不可能である。
【0003】
したがって、このようなシステムでは、複数のプロセッサに対するソフトウェア機能の割り当ては非常に重要な問題である。ソフトウェア機能の導入に要する時間とその複雑さの問題に加えて、柔軟性の問題もある。実際には、新たなソフトウェア機能を容易に取り込める必要がある。これらの問題は、システムの製造コストの増大につながり、さらに、システムのメンテナンス、テストおよび信頼性に影響を与えることになる。
【0004】
【発明の開示】
本発明の目的は、特に、複数のプロセッサに対するソフトウェアの自動的かつ最適な、つまり単純かつ経済的な割り当てを可能にすることである。この目的のために、本発明は複数のプロセッサに対するソフトウェアの割り当て方法であって、少なくとも、
−ソフトウェアの機能を基本タスクに分割して、タスク間のリンクとプロセッサの接続を定義するファイルを作成する過程と、
−前記のファイルにしたがってプロセッサに基本タスクを割り当てる過程と、
−予め作成したリストを用いて割り当ての評価パラメータをチェックし、所定の評価条件が満足されないときは当該割り当てに対してペナルティを加算する過程と、
−割り当てに対して、対応するペナルティの合計で表わされるコストを計算して、割り当ての選別に用いる過程と、
を有する割り当て方法に関する。
【0005】
選択された割り当てはコストが最小になるものであることが望ましい。タスクの割り当て過程と、割り当てパラメータのチェック過程と、コストの計算過程とを繰り返し、コストの変動が、例えば2%から3%程度である所定の閾値を下回ったときにソフトウェア機能の設定を行う。評価パラメータは特に、タスクに対するデータフロー、プロセッサの負荷および処理時間に関するものである。
【0006】
本発明の最も重要な利点は、システムの種々のタスク割り当てに大きな柔軟性をもたらし、システムの信頼性を向上させ、システムのメンテナンスを容易にし、サブアッセンブリの取り扱いを容易にすることである。
【0007】
本発明の上記以外の特徴と利点は、添付の図面を参照しながら以下の記載によって明らかにする。
【0008】
【発明を実施するための最良の形態】
図1に、N個のソフトウェア機能SW’1,...SW’k,...SW’Nの複数のプロセッサHW1、HW2、HW3、HW4に対する割り当て(マッピング)の例を示す。この例の場合、プロセッサの数は4である。しかし、アプリケーションによっては数十個のプロセッサが必要になる。複数のソフトウェア機能が集合して、例えば、レーダシミュレーションや処理プログラムのような独立したプログラムのタスクを構成する。このプログラムは開始タスク1から終了タスク2まで進行する。例えば、プログラムは全体として、場合によっては、合計数万のコードラインによって表わされる数百のタスクを包含する。1つのプロセッサは一時には1つのタスクSW’kを実行する。図1に示した、ソフトウェアコンポーネントを繋いでいるライン3は、タスクの連続性またはインターフェースを表現したものである。2つのソフトウェアコンポーネントを接続するライン3は、2つのタスクが順次実行されることを示している。つまり、前のタスクが完了したときに次のタスクが実行される。
【0009】
プロセッサHW1、HW2、HW3、HW4は、実際の処理回路に加えて、プログラムメモリと、他のハードウェアコンポーネント間のインターフェース回路を有する。プロセッサHWkは、例えばカード状である。
【0010】
図1は、開始タスク1と終了タスク2の間のデータフローを図示しているが、図示した状態ではソフトウェアコンポーネントの割り当ては最適化されていない。第1の問題は、タスクSW’kの割り当てがインターフェースと適合していないことである。例えば、タスクの全体的な実行のために分離された2つのタスクが同じプロセッサによって実行されている。当該プロセッサは同時には1つのタスクしか実行できないとすると、開始タスク1から開始タスク2までの全体処理時間は最適化されていない。実際、タスク実行時の1つのプロセッサから他のプロセッサへの入出力は処理を遅延させる。他の問題は、システムが十分な柔軟性を有しないか、あるいはまったく柔軟でないことである。アルゴリズムの変更の際にはソフトウェアの新規で完全な再配分が必要になるか、あるいは場合によってはハードウェア基本構造の変更さえ必要になる。
【0011】
図1は予め設定された規則なしで、4つのプロセッサがプログラムの種々のタスクを実行する流れを示している。プログラムのパーツは基本的にプロセッサが利用可能か否かにしたがって割り当てられる。基本タスクが存在するが、プログラムは複数のプロセッサに分配することができるような形で基本タスクに分解されてはいない。タスクによっては2つのプロセッサにまたがるものもある。この割り当て方法は実行するには複雑すぎ、しかも上述のように柔軟性に乏しい。
【0012】
図2は、図1のソフトウェアコンポーネントの割り当てに対応するソフトウェアの基本構造を示すものである。各プロセッサHW1,HW2,...HW4に対するソフトウェアレイヤを示す。各プロセッサには実時間オペレーティングシステム(RTOS)が導入されている。このオペレーティングシステムは従来どおりプログラムコード21、22、23の実行を可能にする。このプログラムコードは、詳細規定24に基づくものである。アプリケーションのプログラムコード21、22、23によって定義されたソフトウェアレイヤは、前述のタスクSW’1,...SW’k,...SW’Nを全て包含している。
【0013】
図3は、本発明の方法を適用して得られたソフトウェア機能の基本構造を示すブロック図である。本発明の方法は、第1の過程でプログラムを基本タスクに分解する。これらのタスクは、ソフトウェアコンポーネントを構成するコードのグループによってプログラム化されている。説明の単純化のために、以降、基本タスクを対応するソフトウェアコンポーネントによって表わすことにする。このような分解は、「コンピュータ支援ソフトウェア操作(Computer−Assisted Software Engineering)」の頭文字をとってCASEと呼ばれるソフトウェア操作システム31によって行う。このCASE装置は、ソフトウェアの構造を決定する、つまり、異なる基本タスク間のリンクあるいは基本タスク相互間の依存関係を定義する。この分解は、基本タスクが可能な限り小さな、つまり、例えば基本タスクを100から200の範囲の可能な限り少ないコードラインを有するソフトウェアコンポーネントに対応させるのが好ましい。CASE装置は、この構造を開始詳細規定21にしたがって作成する。この装置は例えば、基本タスクのリストを定義し、さらに基本タスク相互の接続関係を説明する。このソフトウェア構造に関する情報とタスクのリストはファイル32に格納される。詳細規定は更にファイル33に格納された1つ又は複数のソフトウェア機能を定義する。さらに、利用可能なプロセッサのリストとそれらの相互接続の関係の説明を作成する。このリストは基本タスクによって構成されるプログラムの全体を支持するハードウェア構造を定義する。当該リストはファイル34に格納することができる。これらのファイル32、33、34は、システムの詳細を構成し、後に基本タスクの割り当てのために使用される。
【0014】
ソフトウェア構造が定義されると、それぞれのソフトウェアコンポーネントを異なるプロセッサに割り当てる。この割り当て作業は、「従属に関連する割り当てとマッピング(Dependency Related Allocation and Mapping)」の頭文字をとってDRAMと称する第2のソフトウェアツール35によって行う。このソフトウェアツールは前述のファイル32、33、34にしたがって、ソフトウェアコンポーネントの最初の割り当てを行う。例えば、この割り当てはランダムに行うことができる。このDRAM装置は、次に、所定の基準に基づいて一連の割り当て評価パラメータのチェックを行う。この基準は例えばデータフロー、プロセッサの負荷、処理時間あるいは設計上の制限に関連するものである。チェックしたパラメータが所定の基準を満足しないときは、その割り当てに対してペナルティを加算する。予め設定されたリストに挙げられた全てのパラメータについてチェックを完了すると、DRAM装置はペナルティの合計であるコストを計算する。最適な割り当てとは、コストが最小になる割り当てである。実際には、選択された割り当てのコストは、最小コストではない。いずれの場合にも、割り当てはコストに依存し、コストが高すぎる選択は放棄される。
【0015】
ソフトウェアコンポーネントの割り当てとそれに対応するペナルティに関するパラメータチェックの例を以下に説明する。この例の場合には、システムは、それぞれが1つ以上のプロセッサを収容できる4つのカードHW1、HW2、HW3、HW4を有するものと仮定する。
【0016】
図4に、データフローに関するパラメータチェックのための手段を示す。データフローをチェックするために、第1のカードHW1への要求の到来によって開始されるパイプライン処理が実行される。詳細には、第1のカードに「トリガー」形式の要求41が送られる。この要求によって第4のカードHW4の出力においてパラメータ42が起動される。このことはさらに、要求41によって起動された第1のカードHW1によって処理されたパラメータが、全ての処理を通じて他の全てのカードHW2、HW3、HW4によって処理されることを意味する。不要なデータ転送を最小限に押えるためには、データは使用直前に処理される必要がある。基本的には要求41によって発生した全ての処理済データが他のカードHW2、HW3、HW4にとって必要であるとの前提の下では、第1のカードHW1は他のプロセッサとの通信リンク43、44、45を有している。それぞれの基本タスクSWkに関連して、DRAM装置は、基本タスクSWkが使用したデータを作成した1つ又は複数の基本タスクを追跡する。データを作成した1つ以上の基本タスクは同一のカードで実行されることも別々のカードで実行されることもありえ、同一のカードであってもプロセッサは同一であることも異なることもありえる。
【0017】
データフローを特徴付ける第1のパラメータはプロセッサ相互間の「前方向」伝送である。この場合、対象となる基本タスクの入力データは当該タスクを処理しているカードの物理的にすぐ下流側にあるカードによって処理される。例えば、第3のカードHW3の基本タスクは第2のカードHW2が作成したパラメータを必要とする。データ伝送を最小限にするために、入力された全てのパラメータを同一のプロセッサによって処理するか、少なくとも同一のカードによって処理するのが望ましい。カード相互間の前方向データ伝送に対するペナルティは、プロセッサ相互間の伝送に対するペナルティよりも大きい。データが2つ以上のカードを通過する場合にはペナルティは一層大きくなる。したがって、DRAM装置は、例えば、前方向カード間伝送のペナルティにパラメータが作成されてから使用されるまでの間に通過したカードの数を掛けることができる。例えば、前方向のカード間伝送のペナルティは4である。
【0018】
データフローに関する第2の基準は後方向カード間伝送である。入力されたパラメータは別のカードで処理され、そのカードは現在のカードよりも物理的に上流側に位置する、つまりデータが未処理状態である。例えば、第2のカードHW2の基本タスクが、第3のカードHW3が実行する基本タスクによって作成されるはずのパラメータを必要としている状態である。1つのカードから別のカードへのデータの伝送を最小化するためには、第1のカードHW1から第4のカードHW4へ向けて、データは1方向に流れなければならない。後方向のカード間伝送を避けることが重要であれば、後方向伝送に対して大きなペナルティを与えることができる。このペナルティは例えば1000である。
【0019】
考慮しなければならない他の基準はプロセッサの負荷である。DRAM装置は、同一のプロセッサに与えられるタスクが多すぎないようにプロセッサの負荷を考慮する。例えばタスクのリストを収容したファイルと同じファイルである入力ファイルに、それぞれの基本タスクが必要とするプロセッサへの負荷が定義されている。例えば、ある基本タスクの実行に必要なプロセッサの負荷は、理論的最大利用時、実際的な最大利用時あるいは平均利用時に対して定義される。こうすることによって、プロセッサに対するタスクの適切な割り当てにプロセッサの負荷を直接利用することができる。
【0020】
考慮すべき第1の場合は、タスクの実行がプロセッサが許容する、例えば最大負荷の95%である閾値を超える場合である。DRAMはこの状態を許容してはならない。95%の負荷を超えることに対するペナルティはしたがって10000と設定される。95%より低い各状態に対して、ペナルティが次第に小さくなる何段階かの過負荷状態を想定してもよい。プロセッサの負荷が低すぎる場合にペナルティを課すこともできる。これによって利用可能なプロセッサを、当然、過負荷にならない範囲で、最大限に利用することが可能になる。
【0021】
考慮する必要がある他の重要な基準はデータの処理時間である。処理時間は少なくとも2つの方法で考慮することができる。チェックする必要がある第1の処理時間は、実行頻度の下でプロセッサに割り当てられた全てのタスクを実行するために必要な時間である。実行頻度はタスクごとに定義され、この情報は例えばタスクに関する説明ファイルに格納されている。DRAM装置は、例えば、1つのプロセッサがタスクを処理するために必要な処理時間が所定の時間を超えないようにチェックする必要がある。プロセッサの負荷とこの実行時間との間には、必ずしも直接的な関連が存在しなので、このチェックが必要になる場合がある。例えば、1つのプロセッサの実行時間が所定の時間を超える場合、加算されるペナルティは10000である。実行時間が閾値を超える程度に応じて段階的なペナルティを設定することもできる。
【0022】
考慮すべき第2の実行時間は全プログラムの実行時間である。各カードに設けられたDRAM装置によって全てのプログラム実行ブランチが処理される。合計実行時間が最大であるブランチがカードの処理時間を決定する。システム全体によるプログラムの処理時間はそれぞれのカードHW1、HW2、HW3、HW4による処理時間の合計である。認められる最大処理時間を超えた場合には、例えば250000のような非常に大きなペナルティを加算することができる。認められる処理時間を短縮するか、所定の処理時間の超過に対するペナルティを増加させれば、DRAM装置はプロセッサを並列駆動させるようになる。
【0023】
チェックすべき他の一連の基準は、システム設計上の制約に関するものである。いろんな理由によってシステム設計者はマッピング、つまりプロセッサに対する基本タスクの割り当てに一定の影響力を行使することを望む場合がある。本発明の方法を実現する方法は一通りではない。特に、設計者は特定のプロセッサに与えられるタスクを規定することが可能で、この割り当ては例えばシステムの説明ファイルに記述されている。DRAM装置がこの割り当てには介入しない場合、ペナルティの加算はない。しかし、例えば処理時間やプロセッサの負荷に関連して危険な状態が出現した場合には、DRAM装置は警告メッセージを送信することができる。
【0024】
複数の基本タスクを組み合わせること、つまり割り当てが行われていない同じプロセッサ又は同じカードに複数の基本タスクを割り当てることもできる。複数のタスクが同じデータ群を利用する場合にはこの割り当て方法が特に好適である。このようなタスクの組み合わせは説明ファイルに記述することができる。このような制限を満足していないことに対しては比較的大きなペナルティ、例えば100を課すことができる。例えば処理時間やプロセッサの負荷のような設計規則に違反することになるために組み合わせが不可能であれば、DRAM装置は警告メッセージを送信する。例えばDRAM装置の定義ファイルには、全てのペナルティが定義されている。
【0025】
ペナルティは慎重に選択するのが好ましい。特に、ペナルティの程度は設計パラメータに与えられた制約の程度に基づいて決定する必要がある。多くの設計規則は相互に関連し、相互に影響し合っている。最適な設計はこれらの最適な組み合わせである。したがって、最適な設計は、ペナルティによって表現されたコストが最小になるものである。本発明によれば、コストを最小化する方法あるいはコストを少なくとも最小値に近づけるための方法は、基本タスクの割り当てアルゴリズムの繰り返しを内容とするものである。割り当てアルゴリズムを繰り返すと、それぞれの解決方法に対して異なるペナルティが課される。繰り返される過程は、
−プロセッサに対して基本タスクの割り当てを行なう過程と、
−予め作成されたリストに掲載されている、割り当てに対する評価パラメータをチェックする過程と、
−割り当てのコストを計算する過程である。
【0026】
好ましい割り当ては複数存在すると考えられる。複数の最適な割り当て相互間では、ペナルティコストは殆ど差が無いので、例えば、閾値として2%から3%の値を選択することができる。繰り返し割り当てを行ってもコストの変化がこの閾値の範囲内であれば、その割り当ては許容できると考えることができる。実際は、コストの変化が収束して、例えば2%から3%の閾値以内になったときにその割り当てを選択する。別のやり方では、繰り返しの間ごとに、1つのタスクをランダムに選択して同様にランダムに選択した別のプロセッサに割り当てる。これらを繰り返してそのたびにコストを計算する。
【0027】
DRAM装置によってタスクの割り当て(マッピング)を行うのに要する総時間は、繰り返し1回当り5分未満である。したがって、この装置を使って多くの繰り返しを行うことができる。その結果、比較的迅速かつ自動的に、したがって経済的に最適な割り当てを達成することができる。上述のように、ペナルティのコストは、最終的な割り当てが得られたか否かを示す。設計パラメータに対して付与された制約の程度にしたがってペナルティが慎重に選択されていれば、許容することができる解を求めるに当って評価を繰り返すたびにコストの変化は次第に小さくなっていく。コストの変化が大きいことは、1つ以上の割り当てパラメータが根本的に正しくないことを示唆するものである。完全にランダムにマッピングを開始する代わりに、例えばデータフローに関連して定めた所定の基準に基づいてプロセッサを予め選択しても良い。
【0028】
DRAM装置によってタスクの割り当てが完了したら、つまりペナルティコストが許容範囲内になる割り当てが決定されたら、コード発生器36が、使用される複数のプロセッサ又はカードHW1,HW2,...HW4による全基本タスクの実行を可能にするためのコードを作成する。基本タスクにはソフトウェアコンポーネントSWkが対応し、数十から数百のコードラインを有する。図3でハッチングを施した部分はコード発生器36が作成したコードに対応する。コード発生器は、プロセッサまたはカードのオペレーティングシステム(RTOS)と相互に通信する中間レイヤ(ミドルウェア)37を作成する。当該コード発生器はさらに各ソフトウェアコンポーネントの周囲にソフトウェアレイヤ38を作成し、ミドルウェアレイヤ37と相互に通信して対応するプロセッサが実行できるようにする。したがって、コード発生器はソフトウェアコンポーネントHWkとプロセッサを結びつける一種の「接着」コードを作成する。実際、コード発生器は、選択された割り当てにしたがって、ソフトウェアコンポーネントを、DRAM装置が指示する物理的な位置、プロセッサおよびカードに結び付ける。
【0029】
図5は、本発明に基づく、ソフトウェアコンポーネントSW1,...SWk,...SWNの、カードHW1,HW2,HW3,HW4に対する割り当ての例を示すものである。図では、データフローに関する制約が考慮されている。特に、ソフトウェアコンポーネントSWkは、カードHW1,HW2,HW3,HW4に対して、より適切な割り当てが行われている。特に負荷と実行時間に関する他の制約も当然満足している。図5には本発明の他の利点も示されている。図はメンテナンスが極めて容易になり、同時に信頼性の向上が得られたことを示している。特に、カードが故障した場合、別のカードとのインターフェースの問題がなく、容易に交換可能であることが示されている。システム全体を構成する一部分を置換することも容易かつ経済的に行うことができる。図5に図示した割り当ての例に拠れば、第1の置換部分がハードウェアとソフトウェアを含む第1のカードの機能を分担し、第2の置換部分が第2のカードの機能を分担し、以下同様である。こうして問題なくカードを集合させることができ、カード相互間のハードウェアおよび機能的なインターフェースを確立することが容易になる。
【0030】
最後に、本方法によれば割り当ての柔軟性が大幅に向上する。実際に、1つ以上のタスクを追加する場合、例えばDRAM装置を用いて本発明の方法を適用することは容易である。この場合、開始点は、例えばその時点の構成であり、新たなタスクをランダムに割り当てることができる。繰り返し割り当てを行い、コストが許容できなければ、その結果は新たなプロセッサを追加する必要性を指摘するものであり得る。
【0031】
以上、プロセッサが4つの場合について本発明を説明したが、さらに多くのプロセッサを使用することも可能である。
【図面の簡単な説明】
【図1】複数のプロセッサに対するソフトウェア機能の割り当ての例を示す図である。
【図2】前述の割り当てが行われたソフトウェアの基本構造を示すブロック図である。
【図3】本発明の方法を適用することによって得られたソフトウェアの基本構造を示すブロック図である。
【図4】プロセッサ相互間のデータフローに関するパラメータをチェックする手段の例である。
【図5】本発明の方法を適用して得られたソフトウェア機能の割り当て例を示す図である。
【技術分野】
本発明は、ソフトウェアの機能を複数のプロセッサに自動的に割り当てる方法に関するものである。本発明は、特に、例えば膨大な量のソフトウェア機能を備えたレーダシステムのようなシステムに適用することができる。
【0002】
【背景技術】
特にレーダシステムで使用されるソフトウェア機能の量は急速に増大しつつある。同様に、当該システムで使用されるプロセッサの量も増大しつつある。ここで用いられるプロセッサは、例えば信号処理用プロセッサのような形式のものである。アプリケーションによっては数十のプロセッサを必要とすることもある。使用可能なプロセッサに対してソフトウェアを割り当てる仕事は益々時間がかかり、かつ困難になりつつある。さらに、頻繁に行われているようにソフトウェア機能を追加する場合、ソフトウェアまたはハードウェアの基本構造に本質的な変更をせずに複数のプロセッサに対してソフトウェアを再配分することは不可能である。
【0003】
したがって、このようなシステムでは、複数のプロセッサに対するソフトウェア機能の割り当ては非常に重要な問題である。ソフトウェア機能の導入に要する時間とその複雑さの問題に加えて、柔軟性の問題もある。実際には、新たなソフトウェア機能を容易に取り込める必要がある。これらの問題は、システムの製造コストの増大につながり、さらに、システムのメンテナンス、テストおよび信頼性に影響を与えることになる。
【0004】
【発明の開示】
本発明の目的は、特に、複数のプロセッサに対するソフトウェアの自動的かつ最適な、つまり単純かつ経済的な割り当てを可能にすることである。この目的のために、本発明は複数のプロセッサに対するソフトウェアの割り当て方法であって、少なくとも、
−ソフトウェアの機能を基本タスクに分割して、タスク間のリンクとプロセッサの接続を定義するファイルを作成する過程と、
−前記のファイルにしたがってプロセッサに基本タスクを割り当てる過程と、
−予め作成したリストを用いて割り当ての評価パラメータをチェックし、所定の評価条件が満足されないときは当該割り当てに対してペナルティを加算する過程と、
−割り当てに対して、対応するペナルティの合計で表わされるコストを計算して、割り当ての選別に用いる過程と、
を有する割り当て方法に関する。
【0005】
選択された割り当てはコストが最小になるものであることが望ましい。タスクの割り当て過程と、割り当てパラメータのチェック過程と、コストの計算過程とを繰り返し、コストの変動が、例えば2%から3%程度である所定の閾値を下回ったときにソフトウェア機能の設定を行う。評価パラメータは特に、タスクに対するデータフロー、プロセッサの負荷および処理時間に関するものである。
【0006】
本発明の最も重要な利点は、システムの種々のタスク割り当てに大きな柔軟性をもたらし、システムの信頼性を向上させ、システムのメンテナンスを容易にし、サブアッセンブリの取り扱いを容易にすることである。
【0007】
本発明の上記以外の特徴と利点は、添付の図面を参照しながら以下の記載によって明らかにする。
【0008】
【発明を実施するための最良の形態】
図1に、N個のソフトウェア機能SW’1,...SW’k,...SW’Nの複数のプロセッサHW1、HW2、HW3、HW4に対する割り当て(マッピング)の例を示す。この例の場合、プロセッサの数は4である。しかし、アプリケーションによっては数十個のプロセッサが必要になる。複数のソフトウェア機能が集合して、例えば、レーダシミュレーションや処理プログラムのような独立したプログラムのタスクを構成する。このプログラムは開始タスク1から終了タスク2まで進行する。例えば、プログラムは全体として、場合によっては、合計数万のコードラインによって表わされる数百のタスクを包含する。1つのプロセッサは一時には1つのタスクSW’kを実行する。図1に示した、ソフトウェアコンポーネントを繋いでいるライン3は、タスクの連続性またはインターフェースを表現したものである。2つのソフトウェアコンポーネントを接続するライン3は、2つのタスクが順次実行されることを示している。つまり、前のタスクが完了したときに次のタスクが実行される。
【0009】
プロセッサHW1、HW2、HW3、HW4は、実際の処理回路に加えて、プログラムメモリと、他のハードウェアコンポーネント間のインターフェース回路を有する。プロセッサHWkは、例えばカード状である。
【0010】
図1は、開始タスク1と終了タスク2の間のデータフローを図示しているが、図示した状態ではソフトウェアコンポーネントの割り当ては最適化されていない。第1の問題は、タスクSW’kの割り当てがインターフェースと適合していないことである。例えば、タスクの全体的な実行のために分離された2つのタスクが同じプロセッサによって実行されている。当該プロセッサは同時には1つのタスクしか実行できないとすると、開始タスク1から開始タスク2までの全体処理時間は最適化されていない。実際、タスク実行時の1つのプロセッサから他のプロセッサへの入出力は処理を遅延させる。他の問題は、システムが十分な柔軟性を有しないか、あるいはまったく柔軟でないことである。アルゴリズムの変更の際にはソフトウェアの新規で完全な再配分が必要になるか、あるいは場合によってはハードウェア基本構造の変更さえ必要になる。
【0011】
図1は予め設定された規則なしで、4つのプロセッサがプログラムの種々のタスクを実行する流れを示している。プログラムのパーツは基本的にプロセッサが利用可能か否かにしたがって割り当てられる。基本タスクが存在するが、プログラムは複数のプロセッサに分配することができるような形で基本タスクに分解されてはいない。タスクによっては2つのプロセッサにまたがるものもある。この割り当て方法は実行するには複雑すぎ、しかも上述のように柔軟性に乏しい。
【0012】
図2は、図1のソフトウェアコンポーネントの割り当てに対応するソフトウェアの基本構造を示すものである。各プロセッサHW1,HW2,...HW4に対するソフトウェアレイヤを示す。各プロセッサには実時間オペレーティングシステム(RTOS)が導入されている。このオペレーティングシステムは従来どおりプログラムコード21、22、23の実行を可能にする。このプログラムコードは、詳細規定24に基づくものである。アプリケーションのプログラムコード21、22、23によって定義されたソフトウェアレイヤは、前述のタスクSW’1,...SW’k,...SW’Nを全て包含している。
【0013】
図3は、本発明の方法を適用して得られたソフトウェア機能の基本構造を示すブロック図である。本発明の方法は、第1の過程でプログラムを基本タスクに分解する。これらのタスクは、ソフトウェアコンポーネントを構成するコードのグループによってプログラム化されている。説明の単純化のために、以降、基本タスクを対応するソフトウェアコンポーネントによって表わすことにする。このような分解は、「コンピュータ支援ソフトウェア操作(Computer−Assisted Software Engineering)」の頭文字をとってCASEと呼ばれるソフトウェア操作システム31によって行う。このCASE装置は、ソフトウェアの構造を決定する、つまり、異なる基本タスク間のリンクあるいは基本タスク相互間の依存関係を定義する。この分解は、基本タスクが可能な限り小さな、つまり、例えば基本タスクを100から200の範囲の可能な限り少ないコードラインを有するソフトウェアコンポーネントに対応させるのが好ましい。CASE装置は、この構造を開始詳細規定21にしたがって作成する。この装置は例えば、基本タスクのリストを定義し、さらに基本タスク相互の接続関係を説明する。このソフトウェア構造に関する情報とタスクのリストはファイル32に格納される。詳細規定は更にファイル33に格納された1つ又は複数のソフトウェア機能を定義する。さらに、利用可能なプロセッサのリストとそれらの相互接続の関係の説明を作成する。このリストは基本タスクによって構成されるプログラムの全体を支持するハードウェア構造を定義する。当該リストはファイル34に格納することができる。これらのファイル32、33、34は、システムの詳細を構成し、後に基本タスクの割り当てのために使用される。
【0014】
ソフトウェア構造が定義されると、それぞれのソフトウェアコンポーネントを異なるプロセッサに割り当てる。この割り当て作業は、「従属に関連する割り当てとマッピング(Dependency Related Allocation and Mapping)」の頭文字をとってDRAMと称する第2のソフトウェアツール35によって行う。このソフトウェアツールは前述のファイル32、33、34にしたがって、ソフトウェアコンポーネントの最初の割り当てを行う。例えば、この割り当てはランダムに行うことができる。このDRAM装置は、次に、所定の基準に基づいて一連の割り当て評価パラメータのチェックを行う。この基準は例えばデータフロー、プロセッサの負荷、処理時間あるいは設計上の制限に関連するものである。チェックしたパラメータが所定の基準を満足しないときは、その割り当てに対してペナルティを加算する。予め設定されたリストに挙げられた全てのパラメータについてチェックを完了すると、DRAM装置はペナルティの合計であるコストを計算する。最適な割り当てとは、コストが最小になる割り当てである。実際には、選択された割り当てのコストは、最小コストではない。いずれの場合にも、割り当てはコストに依存し、コストが高すぎる選択は放棄される。
【0015】
ソフトウェアコンポーネントの割り当てとそれに対応するペナルティに関するパラメータチェックの例を以下に説明する。この例の場合には、システムは、それぞれが1つ以上のプロセッサを収容できる4つのカードHW1、HW2、HW3、HW4を有するものと仮定する。
【0016】
図4に、データフローに関するパラメータチェックのための手段を示す。データフローをチェックするために、第1のカードHW1への要求の到来によって開始されるパイプライン処理が実行される。詳細には、第1のカードに「トリガー」形式の要求41が送られる。この要求によって第4のカードHW4の出力においてパラメータ42が起動される。このことはさらに、要求41によって起動された第1のカードHW1によって処理されたパラメータが、全ての処理を通じて他の全てのカードHW2、HW3、HW4によって処理されることを意味する。不要なデータ転送を最小限に押えるためには、データは使用直前に処理される必要がある。基本的には要求41によって発生した全ての処理済データが他のカードHW2、HW3、HW4にとって必要であるとの前提の下では、第1のカードHW1は他のプロセッサとの通信リンク43、44、45を有している。それぞれの基本タスクSWkに関連して、DRAM装置は、基本タスクSWkが使用したデータを作成した1つ又は複数の基本タスクを追跡する。データを作成した1つ以上の基本タスクは同一のカードで実行されることも別々のカードで実行されることもありえ、同一のカードであってもプロセッサは同一であることも異なることもありえる。
【0017】
データフローを特徴付ける第1のパラメータはプロセッサ相互間の「前方向」伝送である。この場合、対象となる基本タスクの入力データは当該タスクを処理しているカードの物理的にすぐ下流側にあるカードによって処理される。例えば、第3のカードHW3の基本タスクは第2のカードHW2が作成したパラメータを必要とする。データ伝送を最小限にするために、入力された全てのパラメータを同一のプロセッサによって処理するか、少なくとも同一のカードによって処理するのが望ましい。カード相互間の前方向データ伝送に対するペナルティは、プロセッサ相互間の伝送に対するペナルティよりも大きい。データが2つ以上のカードを通過する場合にはペナルティは一層大きくなる。したがって、DRAM装置は、例えば、前方向カード間伝送のペナルティにパラメータが作成されてから使用されるまでの間に通過したカードの数を掛けることができる。例えば、前方向のカード間伝送のペナルティは4である。
【0018】
データフローに関する第2の基準は後方向カード間伝送である。入力されたパラメータは別のカードで処理され、そのカードは現在のカードよりも物理的に上流側に位置する、つまりデータが未処理状態である。例えば、第2のカードHW2の基本タスクが、第3のカードHW3が実行する基本タスクによって作成されるはずのパラメータを必要としている状態である。1つのカードから別のカードへのデータの伝送を最小化するためには、第1のカードHW1から第4のカードHW4へ向けて、データは1方向に流れなければならない。後方向のカード間伝送を避けることが重要であれば、後方向伝送に対して大きなペナルティを与えることができる。このペナルティは例えば1000である。
【0019】
考慮しなければならない他の基準はプロセッサの負荷である。DRAM装置は、同一のプロセッサに与えられるタスクが多すぎないようにプロセッサの負荷を考慮する。例えばタスクのリストを収容したファイルと同じファイルである入力ファイルに、それぞれの基本タスクが必要とするプロセッサへの負荷が定義されている。例えば、ある基本タスクの実行に必要なプロセッサの負荷は、理論的最大利用時、実際的な最大利用時あるいは平均利用時に対して定義される。こうすることによって、プロセッサに対するタスクの適切な割り当てにプロセッサの負荷を直接利用することができる。
【0020】
考慮すべき第1の場合は、タスクの実行がプロセッサが許容する、例えば最大負荷の95%である閾値を超える場合である。DRAMはこの状態を許容してはならない。95%の負荷を超えることに対するペナルティはしたがって10000と設定される。95%より低い各状態に対して、ペナルティが次第に小さくなる何段階かの過負荷状態を想定してもよい。プロセッサの負荷が低すぎる場合にペナルティを課すこともできる。これによって利用可能なプロセッサを、当然、過負荷にならない範囲で、最大限に利用することが可能になる。
【0021】
考慮する必要がある他の重要な基準はデータの処理時間である。処理時間は少なくとも2つの方法で考慮することができる。チェックする必要がある第1の処理時間は、実行頻度の下でプロセッサに割り当てられた全てのタスクを実行するために必要な時間である。実行頻度はタスクごとに定義され、この情報は例えばタスクに関する説明ファイルに格納されている。DRAM装置は、例えば、1つのプロセッサがタスクを処理するために必要な処理時間が所定の時間を超えないようにチェックする必要がある。プロセッサの負荷とこの実行時間との間には、必ずしも直接的な関連が存在しなので、このチェックが必要になる場合がある。例えば、1つのプロセッサの実行時間が所定の時間を超える場合、加算されるペナルティは10000である。実行時間が閾値を超える程度に応じて段階的なペナルティを設定することもできる。
【0022】
考慮すべき第2の実行時間は全プログラムの実行時間である。各カードに設けられたDRAM装置によって全てのプログラム実行ブランチが処理される。合計実行時間が最大であるブランチがカードの処理時間を決定する。システム全体によるプログラムの処理時間はそれぞれのカードHW1、HW2、HW3、HW4による処理時間の合計である。認められる最大処理時間を超えた場合には、例えば250000のような非常に大きなペナルティを加算することができる。認められる処理時間を短縮するか、所定の処理時間の超過に対するペナルティを増加させれば、DRAM装置はプロセッサを並列駆動させるようになる。
【0023】
チェックすべき他の一連の基準は、システム設計上の制約に関するものである。いろんな理由によってシステム設計者はマッピング、つまりプロセッサに対する基本タスクの割り当てに一定の影響力を行使することを望む場合がある。本発明の方法を実現する方法は一通りではない。特に、設計者は特定のプロセッサに与えられるタスクを規定することが可能で、この割り当ては例えばシステムの説明ファイルに記述されている。DRAM装置がこの割り当てには介入しない場合、ペナルティの加算はない。しかし、例えば処理時間やプロセッサの負荷に関連して危険な状態が出現した場合には、DRAM装置は警告メッセージを送信することができる。
【0024】
複数の基本タスクを組み合わせること、つまり割り当てが行われていない同じプロセッサ又は同じカードに複数の基本タスクを割り当てることもできる。複数のタスクが同じデータ群を利用する場合にはこの割り当て方法が特に好適である。このようなタスクの組み合わせは説明ファイルに記述することができる。このような制限を満足していないことに対しては比較的大きなペナルティ、例えば100を課すことができる。例えば処理時間やプロセッサの負荷のような設計規則に違反することになるために組み合わせが不可能であれば、DRAM装置は警告メッセージを送信する。例えばDRAM装置の定義ファイルには、全てのペナルティが定義されている。
【0025】
ペナルティは慎重に選択するのが好ましい。特に、ペナルティの程度は設計パラメータに与えられた制約の程度に基づいて決定する必要がある。多くの設計規則は相互に関連し、相互に影響し合っている。最適な設計はこれらの最適な組み合わせである。したがって、最適な設計は、ペナルティによって表現されたコストが最小になるものである。本発明によれば、コストを最小化する方法あるいはコストを少なくとも最小値に近づけるための方法は、基本タスクの割り当てアルゴリズムの繰り返しを内容とするものである。割り当てアルゴリズムを繰り返すと、それぞれの解決方法に対して異なるペナルティが課される。繰り返される過程は、
−プロセッサに対して基本タスクの割り当てを行なう過程と、
−予め作成されたリストに掲載されている、割り当てに対する評価パラメータをチェックする過程と、
−割り当てのコストを計算する過程である。
【0026】
好ましい割り当ては複数存在すると考えられる。複数の最適な割り当て相互間では、ペナルティコストは殆ど差が無いので、例えば、閾値として2%から3%の値を選択することができる。繰り返し割り当てを行ってもコストの変化がこの閾値の範囲内であれば、その割り当ては許容できると考えることができる。実際は、コストの変化が収束して、例えば2%から3%の閾値以内になったときにその割り当てを選択する。別のやり方では、繰り返しの間ごとに、1つのタスクをランダムに選択して同様にランダムに選択した別のプロセッサに割り当てる。これらを繰り返してそのたびにコストを計算する。
【0027】
DRAM装置によってタスクの割り当て(マッピング)を行うのに要する総時間は、繰り返し1回当り5分未満である。したがって、この装置を使って多くの繰り返しを行うことができる。その結果、比較的迅速かつ自動的に、したがって経済的に最適な割り当てを達成することができる。上述のように、ペナルティのコストは、最終的な割り当てが得られたか否かを示す。設計パラメータに対して付与された制約の程度にしたがってペナルティが慎重に選択されていれば、許容することができる解を求めるに当って評価を繰り返すたびにコストの変化は次第に小さくなっていく。コストの変化が大きいことは、1つ以上の割り当てパラメータが根本的に正しくないことを示唆するものである。完全にランダムにマッピングを開始する代わりに、例えばデータフローに関連して定めた所定の基準に基づいてプロセッサを予め選択しても良い。
【0028】
DRAM装置によってタスクの割り当てが完了したら、つまりペナルティコストが許容範囲内になる割り当てが決定されたら、コード発生器36が、使用される複数のプロセッサ又はカードHW1,HW2,...HW4による全基本タスクの実行を可能にするためのコードを作成する。基本タスクにはソフトウェアコンポーネントSWkが対応し、数十から数百のコードラインを有する。図3でハッチングを施した部分はコード発生器36が作成したコードに対応する。コード発生器は、プロセッサまたはカードのオペレーティングシステム(RTOS)と相互に通信する中間レイヤ(ミドルウェア)37を作成する。当該コード発生器はさらに各ソフトウェアコンポーネントの周囲にソフトウェアレイヤ38を作成し、ミドルウェアレイヤ37と相互に通信して対応するプロセッサが実行できるようにする。したがって、コード発生器はソフトウェアコンポーネントHWkとプロセッサを結びつける一種の「接着」コードを作成する。実際、コード発生器は、選択された割り当てにしたがって、ソフトウェアコンポーネントを、DRAM装置が指示する物理的な位置、プロセッサおよびカードに結び付ける。
【0029】
図5は、本発明に基づく、ソフトウェアコンポーネントSW1,...SWk,...SWNの、カードHW1,HW2,HW3,HW4に対する割り当ての例を示すものである。図では、データフローに関する制約が考慮されている。特に、ソフトウェアコンポーネントSWkは、カードHW1,HW2,HW3,HW4に対して、より適切な割り当てが行われている。特に負荷と実行時間に関する他の制約も当然満足している。図5には本発明の他の利点も示されている。図はメンテナンスが極めて容易になり、同時に信頼性の向上が得られたことを示している。特に、カードが故障した場合、別のカードとのインターフェースの問題がなく、容易に交換可能であることが示されている。システム全体を構成する一部分を置換することも容易かつ経済的に行うことができる。図5に図示した割り当ての例に拠れば、第1の置換部分がハードウェアとソフトウェアを含む第1のカードの機能を分担し、第2の置換部分が第2のカードの機能を分担し、以下同様である。こうして問題なくカードを集合させることができ、カード相互間のハードウェアおよび機能的なインターフェースを確立することが容易になる。
【0030】
最後に、本方法によれば割り当ての柔軟性が大幅に向上する。実際に、1つ以上のタスクを追加する場合、例えばDRAM装置を用いて本発明の方法を適用することは容易である。この場合、開始点は、例えばその時点の構成であり、新たなタスクをランダムに割り当てることができる。繰り返し割り当てを行い、コストが許容できなければ、その結果は新たなプロセッサを追加する必要性を指摘するものであり得る。
【0031】
以上、プロセッサが4つの場合について本発明を説明したが、さらに多くのプロセッサを使用することも可能である。
【図面の簡単な説明】
【図1】複数のプロセッサに対するソフトウェア機能の割り当ての例を示す図である。
【図2】前述の割り当てが行われたソフトウェアの基本構造を示すブロック図である。
【図3】本発明の方法を適用することによって得られたソフトウェアの基本構造を示すブロック図である。
【図4】プロセッサ相互間のデータフローに関するパラメータをチェックする手段の例である。
【図5】本発明の方法を適用して得られたソフトウェア機能の割り当て例を示す図である。
Claims (6)
- ソフトウェアの機能を複数のプロセッサに割り当てる方法であって、少なくとも、
−ソフトウェアの機能を基本タスク(SW1,...SWk,...SWN)に分解し、異なる基本タスク相互間のリンクを定義するファイル(32)とプロセッサ(HW1、HW2、HW3、HW4)相互の接続を定義するファイル(34)を作成する過程と、
−前記のファイル(32、34)にしたがって、基本タスクをプロセッサ(HW1、HW2、HW3、HW4)に割り当てる過程と、
−予め作成したリストを用いて割り当ての評価パラメータをチェックし、所定の評価条件が満足されないときは当該割り当てに対してペナルティを加算する過程と、
−割り当てに対して、対応するペナルティの合計で表わされるコストを計算して、割り当ての選別に用いる過程とを有する方法。 - 選択された割り当ては、実質的にコストが最小になる割り当てに相当することを特徴とする請求項1に記載の方法。
- 前記タスク割り当て過程、評価パラメータのチェック過程およびコスト計算過程は繰り返し実行し、繰り返しによるコストの変化が所定の閾値よりも小さくなったときにその設定を選択することを特徴とする請求項1又は2に記載の方法。
- 前記繰り返しの第1回目の実行の際に、各タスクをプロセッサに対してランダムに割り当て、以降の繰り返しを行う際に、ランダムに選択した1つのタスクを別のプロセッサに割り当てることを特徴とする請求項3に記載の方法。
- 前記評価パラメータはデータフロー、プロセッサの負荷およびタスクの処理時間に関するものであることを特徴とする請求項1ないし4の何れかに記載の方法。
- 基本タスク(SW1,...SWk,...SWN)のそれぞれにソフトウェアコンポーネントが対応し、選択した割り当てにしたがって、コード発生器(36)がプロセッサのオペレーティングシステム(RTOS)と相互に通信する中間レイヤ(ミドルウェア)(37)を作成し、コード発生器はさらに各ソフトウェアコンポーネントの周囲にソフトウェアレイヤ(38)を作成して、中間レイヤ(37)と相互に通信させて対応するプロセッサによる実効を可能にすることを特徴とする請求項1ないし5の何れかに記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL1015579A NL1015579C1 (nl) | 2000-06-30 | 2000-06-30 | Werkwijze voor het automatisch verdelen van programmataken over een verzameling processors. |
PCT/FR2001/002019 WO2002001346A2 (fr) | 2000-06-30 | 2001-06-26 | Procede d'implantation automatique de fonctions logicielles sur un ensemble de processeurs_______________________________________ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004509386A true JP2004509386A (ja) | 2004-03-25 |
Family
ID=19771637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002506415A Pending JP2004509386A (ja) | 2000-06-30 | 2001-06-26 | 複数のプロセッサにソフトウェア機能を自動的に割り当てる方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20040163075A1 (ja) |
EP (1) | EP1323029A2 (ja) |
JP (1) | JP2004509386A (ja) |
KR (1) | KR20030034115A (ja) |
AU (1) | AU2001270665A1 (ja) |
CA (1) | CA2414523A1 (ja) |
IL (1) | IL153640A0 (ja) |
NL (1) | NL1015579C1 (ja) |
WO (1) | WO2002001346A2 (ja) |
ZA (1) | ZA200300008B (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146503A (ja) * | 2006-12-12 | 2008-06-26 | Sony Computer Entertainment Inc | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP2011527788A (ja) * | 2008-07-10 | 2011-11-04 | ロケティック テクノロジーズ リミテッド | 依存問題の効率的並列計算 |
JP2012504800A (ja) * | 2008-10-03 | 2012-02-23 | ザ ユニバーシティ オブ シドニー | 異種コンピューティング・システムにおいて実行するためのアプリケーションのスケジューリング |
WO2014087496A1 (ja) * | 2012-12-05 | 2014-06-12 | 株式会社日立製作所 | グラフ処理方法、および情報処理システム |
JP2014531081A (ja) * | 2012-06-28 | 2014-11-20 | ▲ホア▼▲ウェイ▼技術有限公司 | マルチプロセッサコアシステム内のプロセッサコアをスケジューリングするための方法、装置、およびシステム |
WO2021261252A1 (ja) * | 2020-06-24 | 2021-12-30 | 三菱電機株式会社 | 演算回路、演算方法、プログラム、および演算回路の設計方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7174379B2 (en) | 2001-08-03 | 2007-02-06 | International Business Machines Corporation | Managing server resources for hosted applications |
US20070208956A1 (en) * | 2004-11-19 | 2007-09-06 | Motorola, Inc. | Energy efficient inter-processor management method and system |
US7743366B2 (en) * | 2005-10-03 | 2010-06-22 | Arm Limited | System and method for compiling a computer program |
US20080147221A1 (en) * | 2006-12-13 | 2008-06-19 | Garg Sukesh | Grid modeling tool |
US8751211B2 (en) | 2008-03-27 | 2014-06-10 | Rocketick Technologies Ltd. | Simulation using parallel processors |
US9032377B2 (en) | 2008-07-10 | 2015-05-12 | Rocketick Technologies Ltd. | Efficient parallel computation of dependency problems |
US9128748B2 (en) | 2011-04-12 | 2015-09-08 | Rocketick Technologies Ltd. | Parallel simulation using multiple co-simulators |
FR3063359B1 (fr) * | 2017-02-24 | 2019-06-07 | Renault S.A.S. | Methode de determination d'une performance temporelle d'une unite de traitement electronique executant un algorithme |
US20220269424A1 (en) * | 2021-02-19 | 2022-08-25 | Vast Data Ltd. | Resource allocation in a storage system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0342765A (ja) * | 1989-07-10 | 1991-02-22 | Nec Corp | 分散処理装置 |
JPH0721144A (ja) * | 1993-04-12 | 1995-01-24 | Loral Rolm Mil Spec Corp | 多重プロセッサアーキテクチャにおけるプログラム自動展開方法 |
JPH08166931A (ja) * | 1994-12-13 | 1996-06-25 | Mitsubishi Electric Corp | 並列計算機の負荷分散方法 |
-
2000
- 2000-06-30 NL NL1015579A patent/NL1015579C1/nl not_active IP Right Cessation
-
2001
- 2001-06-26 US US10/312,178 patent/US20040163075A1/en not_active Abandoned
- 2001-06-26 IL IL15364001A patent/IL153640A0/xx unknown
- 2001-06-26 CA CA002414523A patent/CA2414523A1/fr not_active Abandoned
- 2001-06-26 KR KR1020027017987A patent/KR20030034115A/ko not_active Application Discontinuation
- 2001-06-26 JP JP2002506415A patent/JP2004509386A/ja active Pending
- 2001-06-26 AU AU2001270665A patent/AU2001270665A1/en not_active Abandoned
- 2001-06-26 WO PCT/FR2001/002019 patent/WO2002001346A2/fr active Application Filing
- 2001-06-26 EP EP01984068A patent/EP1323029A2/fr not_active Withdrawn
-
2003
- 2003-01-02 ZA ZA200300008A patent/ZA200300008B/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0342765A (ja) * | 1989-07-10 | 1991-02-22 | Nec Corp | 分散処理装置 |
JPH0721144A (ja) * | 1993-04-12 | 1995-01-24 | Loral Rolm Mil Spec Corp | 多重プロセッサアーキテクチャにおけるプログラム自動展開方法 |
JPH08166931A (ja) * | 1994-12-13 | 1996-06-25 | Mitsubishi Electric Corp | 並列計算機の負荷分散方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146503A (ja) * | 2006-12-12 | 2008-06-26 | Sony Computer Entertainment Inc | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP4756553B2 (ja) * | 2006-12-12 | 2011-08-24 | 株式会社ソニー・コンピュータエンタテインメント | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP2011527788A (ja) * | 2008-07-10 | 2011-11-04 | ロケティック テクノロジーズ リミテッド | 依存問題の効率的並列計算 |
JP2012504800A (ja) * | 2008-10-03 | 2012-02-23 | ザ ユニバーシティ オブ シドニー | 異種コンピューティング・システムにおいて実行するためのアプリケーションのスケジューリング |
US8959370B2 (en) | 2008-10-03 | 2015-02-17 | University Of Sydney | Scheduling an application for performance on a heterogeneous computing system |
JP2014531081A (ja) * | 2012-06-28 | 2014-11-20 | ▲ホア▼▲ウェイ▼技術有限公司 | マルチプロセッサコアシステム内のプロセッサコアをスケジューリングするための方法、装置、およびシステム |
WO2014087496A1 (ja) * | 2012-12-05 | 2014-06-12 | 株式会社日立製作所 | グラフ処理方法、および情報処理システム |
WO2021261252A1 (ja) * | 2020-06-24 | 2021-12-30 | 三菱電機株式会社 | 演算回路、演算方法、プログラム、および演算回路の設計方法 |
Also Published As
Publication number | Publication date |
---|---|
IL153640A0 (en) | 2003-07-06 |
US20040163075A1 (en) | 2004-08-19 |
WO2002001346A3 (fr) | 2002-08-15 |
NL1015579C1 (nl) | 2002-01-02 |
EP1323029A2 (fr) | 2003-07-02 |
ZA200300008B (en) | 2004-06-03 |
KR20030034115A (ko) | 2003-05-01 |
CA2414523A1 (fr) | 2002-01-03 |
WO2002001346A2 (fr) | 2002-01-03 |
AU2001270665A1 (en) | 2002-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004509386A (ja) | 複数のプロセッサにソフトウェア機能を自動的に割り当てる方法 | |
JP7045357B2 (ja) | データ処理方法および関連製品 | |
US6487455B1 (en) | Distributed real time operating system | |
US5557795A (en) | Pipelined image processing system for a single application environment | |
US6154765A (en) | Distributed digital rule processor for single system image on a clustered network and method | |
JP3617852B2 (ja) | 多重処理パイプラインデータ処理エミュレート方法 | |
US5995982A (en) | Method and device for file transfer by cascade release | |
US20020184291A1 (en) | Method and system for scheduling in an adaptable computing engine | |
JP3513077B2 (ja) | 可解性問題を再構成可能なハードウエアを用いて解く仮想論理システム | |
US20080168436A1 (en) | System and method for matching multi-node software system provisioning requirements and capabilities using rough set theory | |
Mohamed et al. | Experiences with the koala co-allocating scheduler in multiclusters | |
CN111932257B (zh) | 一种区块链并行化处理方法及装置 | |
JP5496986B2 (ja) | 並列演算の分散方法及び装置 | |
CN104615486A (zh) | 用于搜索推广平台的多任务调度和执行方法、装置和系统 | |
US20230004440A1 (en) | Allocating of computing resources for applications | |
JP5655448B2 (ja) | Plcシステム、その開発支援装置 | |
US7624252B2 (en) | Processing device, method of determining internal configuration of processing device, and processing system | |
US20110083136A1 (en) | Distributed processing system | |
Zorin et al. | Algorithm for synthesis of real-time systems under reliability constraints | |
CN115794384A (zh) | 代码编译任务分配方法、装置、设备及存储介质 | |
US20020156611A1 (en) | Performance simulation process, and multiprocessor application production process, and devices for implementing said processes | |
CN116360961A (zh) | 基于多线程的内存分配方法及装置 | |
JPH10510082A (ja) | 個々の抽象状態を基礎とする機械を各々が表す複数の相互接続された機能モジュールを具えるシステムを特定する方法およびそのようにして特定されたシステム | |
US7181704B1 (en) | Method and system for designing integrated circuits using implementation directives | |
Upadhyaya et al. | Task allocation in distributed computing vs distributed database systems: A comparative study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080623 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110628 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111213 |