JP3676827B2 - マルチプロセッサシステム用のスケジューリング方法 - Google Patents
マルチプロセッサシステム用のスケジューリング方法 Download PDFInfo
- Publication number
- JP3676827B2 JP3676827B2 JP22021091A JP22021091A JP3676827B2 JP 3676827 B2 JP3676827 B2 JP 3676827B2 JP 22021091 A JP22021091 A JP 22021091A JP 22021091 A JP22021091 A JP 22021091A JP 3676827 B2 JP3676827 B2 JP 3676827B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- processing
- tasks
- processing characteristics
- time
- 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.)
- Expired - Fee Related
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
- 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/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
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)
- Stored Programmes (AREA)
Description
【0001】
【産業上の利用分野】
本発明はコンピュータシステムに関し、特に、マルチプロセッサ;マルチタスキングシステムのタスクをスケジューリングする方法に関する。
【0002】
【従来の技術】
マルチ処理は並列処理の一種であり、2個以上のプロセッサで別々のプログラムの実行を分担するやり方である。マルチタスキングはマルチ処理の特別の場合であって、ソフトウェアの処理、すなわちタスクを規定するものである。タスクはサブプログラムであって、同時に他のサブプログラムと一緒に実行することができる。
【0003】
マルチタスク環境では、衝突せずに並列に実行できるように、タスクとジョブのデータ構造とを注意深く分割しなければならない。しかし、プロセッサの使用可能度、実行の順番およびタスクの完了はシステムの運転時の状態の関数である。したがって、タスク自身は正しく決められていても、マルチタスキングは時間に関して本質的に不確定なものである。
【0004】
マルチタスキングを確実に成功させるには、一旦タスクを分割した場合、効率的に資源を共有するようにオペレーティングシステムを展開しなければならない。資源を処理に割り当てることを「スケジューリング」と呼ぶ。スケジューリングはリアルタイム入力に対してリアルタイムに応答することを必要とするシステムにおいて特に重要である。
【0005】
既存のマルチタスキング・スケジューリング・システムではたいていが優先度方式を用いているが、これは本質的に静的なものである。優先度方式では、タスクがどれほどの時間を必要とするか、タスクがどれほどのメモリ量を必要とするか、あるいはそのメモリが必要とする時間のような、タスクの処理に必要なことを考慮していない。メモリに対する要求は、タスクがもっとメモリを必要とする前に、所定量のメモリを用いて、どれ位の時間そのタスクを実行することができるかにより決定される。
【0006】
スケジューリングを行う他の方法としては、「タイムスライシング」がある。この場合、タスクの各部分に、限定された実行時間が与えられる。この時間が経過すると、別のタスクの部分が実行される。すなわち、タスクが所定の時間内に終らなかったならば、プロセッサは次に待っているタスクに割当てられ、未完了のタスクはもう一度スケジューリングされる。タイムスライス方式の欠点は、タスクの切替え時にオーバヘッドがあることである。
【0007】
【発明が解決しようとする課題】
余分な処理用オーバヘッドを生ずることなく、資源を効率よく利用するタスクのスケジューリング方法が必要である。
【0008】
【課題を解決するための手段】
本発明によれば、マルチタスキング、マルチプロセッサシステムのプロセッサにより実行される、タスクのスケジューリング方法が提供される。メモリの要求やプロセッサの使用のような、実行すべきタスクの処理特性が実験的に決められる。各タスクはそのタスクの処理特性を表わすデータ構造に関連づけられている。実行時にはタスクが呼び出されて、タスク待ち行列の中に配置される。実行のためにタスクが待ち行列から取り出されると、タスクは自分の処理特性をスケジューラプログラムに知らせる。それからスケジューラはタスクの処理特性と利用可能な資源とに応じて、タスクにより使用される処理資源を選択する。
【0009】
本発明の技術的特徴は、リアルタイム応答性を従来より容易に維持できることである。タスクは必要な時間だけ実行し続けられるように、その処理の必要性に応じてスケジューリングされる。システムの資源の負荷がどの位か、および、更に処理を負担させることができるか否かを決めるために、システムの性能を監視することもできる。
【0010】
【実施例】
図1はマルチプロセッサ、マルチタスキングコンピュータ処理システム10のブロック図であり、ホストプロセッサシステム11が信号プロセッサシステム15と通信可能になっている。プロセッサ11と15間の通信手段はバス19であって、例えば32ビットNU−BUS標準のような認知されたいくつかの2進通信法のうち任意のものに適合している。本発明の利点の一つはNU−BUS標準の簡単なメモリマップアーキテクチャに適合していることである。
【0011】
ホストプロセッサシステム11はホストプロセッサ12とメモリ13とを含む。ホストプロセッサ12は例えばモトローラ社製の68030のような汎用プロセッサである。メモリ13はホストプロセッサ12の命令を記憶するためのプログラムメモリと、信号プロセッサシステム15にダウンロードされるプログラムルーチンとパラメータとを記憶するメモリとを含む。ダウンロードするプロセスは後述する。
【0012】
信号プロセッサシステム15はいくつかの信号プロセッサ16とそれらの各々に付属したメモリ17とを含む。信号プロセッサ16は例えばテキサスインスツルメント社製のTMS320C30である。本実施例の場合、メモリ17の適当な大きさは250K×4バイトである。信号プロセッサシステム15はホストプロセッサ12からダウンロードされたプログラムルーチンを実行する。1個のプログラムルーチンを実行し終わると、信号プロセッサシステム15はそのことをホストプロセッサ12に知らせるので、ホストプロセッサは別のルーチンをダウンロードすることができる。
【0013】
信号プロセッサ16同士は相互に通信可能なので、信号プロセッサシステム15は同時に2個以上のタスクを実行することができる。例えば、信号プロセッサシステムは図1に示すように3個の信号プロセッサ16から構成してもよい。各信号プロセッサ16は自己に割当てられたメモリ17を有し、各メモリは隣接メモリ17と相互に接続されているので、信号プロセッサ16間で通信することができる。
【0014】
各信号プロセッサ16は呼処理部を持っているので、2個以上の呼出しを同時に処理することができる。処理の仕方はホストプロセッサ12から供給されたスクリプトにより各呼出しに毎に異なってもよい。
【0015】
図2は電話回線通信に使われる典型的なマルチプロセッサシステム10の適用例を示す。この例では、ホストプロセッサシステム11はボイスメールサービスを扱うサービスコントロールシステム21の一部である。サービスコントロール21はまた、データベース管理システム(図示せず)と通信するための通信搬送部と適当なインタフェイスとを有する。データベース管理システムとは、大きなデータベースシステムを必要とする顧客の記録とその他の情報とを管理するものである。サービスコントロールシステムはまた、バス19を介して電話制御システム22とも通信することができるようになっている。電話制御システム22にはディジタル処理システム15が含まれている。ディジタル処理システム15はT1線24からT1バッファ23を経由してデータを受信して、電気通信プロトコルに従って音声データを実際に送受信する。T1バッファ23は例えば、マイテル社製のMT8920 ST−バス並列アクセス回路である。図3を用いて後述するが、本発明を実際に応用する際には、信号処理システム15は、複数個の信号プロセッサ16を有し、T1線の複数チャネルから入力を受信するマルチプロセッサ、マルチタスキングシステムである。
【0016】
ボイスメールにマルチプロセッサシステム10を使うことに関しては、係属中の米国特許出願シリアルNo. 570,171,「Digital Signal Processing Control Method and Apparatus(ディジタル信号処理制御方法および装置)」にもっと詳細に記載されている。なお、この特許出願も本発明の譲り受け人に譲渡されている。そこに開示されている方法は、その発明のマルチプロセッサ環境の範囲内でデータを転送するひとつの方法である。しかし、本発明の方法はそのような特定の構成を用いて機能するものに限らず、図1に示すように、少なくとも2個のプロセッサが1個のプロセッサのメモリへのアクセスを共有するようなマルチプロセッサ環境ならば、どんなものでも使うことができよう。
【0017】
信号処理システム15の処理タスク、すなわち、信号プロセッサ16により実行される機能は、ホストプロセッサシステム11にロードされるアプリケーションプログラムの部分により表わされる。これらのコードの部分はここでは「スクリプト」と呼ぶ。ホストプロセッサ12は実行すべきタスクの特定の順番を動的に決定する。したがって「スクリプト」を決定する。スクリプトは擬似コード形式で信号プロセッサ12にダウンロードされ、図3に示すようにスクリプトインタプリンタ32により解読される。その結果は、ホストプロセッサ12が信号プロセッサ16に実行することを要求するタスクを特定する1組のバイトコードを表わす。ホストプロセッサ12またはスクリプトインタプリンタ32のいずれかによって、タスクを処理する能力のある特定の信号プロセッサ16にタスクが割当てられる。
【0018】
ボイスメールの場合には、タスクは着呼により開始される。タスクの一例は電話に応答することである。他のタスクにはメッセージを聴くことや、メッセージを記録することなどがある。ボイスメッセージ処理のような場合には、一旦電話に応答するタスクが実行されると、その次のタスクは発呼者の入力により変る。例えば発呼者はメッセージを聴くこと、メッセージを記録すること、あるいは交換手につなぐことなどを要求するだろう。したがって、ボイスメッセージの場合には、スクリプトは、一旦電話応答がなされたとき、続いて信号プロセッサが実行すべきコードを表わす。
【0019】
マルチタスキング動作の一例として、電話に応答するタスクがある。ホストドライバ33は選択組を受信するために「複合読取り」を行い、ホストプロセッサ12はこのタスク用のスクリプトを含む領域サブセットを信号プロセッサ16に供給する。タスクを実行する能力を有する各信号プロセッサ16はスクリプトを解釈してそれを実行する準備を行う。電話が鳴ると、最初に利用可能な信号プロセッサ16が呼び出しに応答する。次の電話が鳴ると、第2の信号プロセッサ16が処理する。以下同様に動作する。
【0020】
図3はメモリ17に記憶されている信号プロセッサ16のプログラムとデータの記憶に関する機能ブロック図である。プログラムは3個の主部を有する。実行制御部31と、スクリプトインタプリタ部32と、ホストドライバ部33とである。実行制御部31は信号プロセッサ16により実行されるコードを記憶する。このコードはホストプロセッサ12により変えられない。このコードはダウンロードされたルーチンからの特定の機能の呼出しをサポートする。例えば、ダウンロードされたルーチンは機能「ゲントーン(gentone)5」を呼び出してもよいだろう。この機能はキーパッドの数字5に相当するDTMF信号が所望されていることを示している。ホストドライバ33は、標準デバイスドライバがディスクドライブのような周辺機器とやりとりするのと同様なI/O処理法で、ホストプロセッサ12とI/O処理のやりとりを行う。スクリプトインタ プリタ部32は上述のようにスクリプトを解釈する。図3に示すように、メモリ17はまたホストプロセッサ12からダウンロードされたプログラムコードとその他のデータを記憶するための主記憶領域34を有する。
【0021】
ホストプロセッサ12と信号プロセッサ16は各々それぞれ自分のメモリ13と17ヘのアクセスに関して、排他的に制御することができる。したがって、各プロセッサ12と16は自分自身のI/O動作を実行する。
【0022】
プロセッサ間の通信、特にホストプロセッサ12から信号プロセッサ16へのダウンロードについては、係属中の米国特許出願シリアルNo.576,258,「Method for Communications Between Processors of a Multi−processor System(マルチプロセッサシステムにおけるプロセッサ間の通信方法)」に詳しく述べてある。なお、この発明も本発明の譲り受け人に譲渡されている。要約すると、ホストプロセッサ12は信号プロセッサ16に書きこもうとするデータを領域により特定する。信号プロセッサ16は整合読取り動作を行って、その領域のデータを受信する。これらの整合書込み/読取り動作を行うことにより、信号プロセッサ16上ではホストプロセッサ12の領域へ排他的にアクセスする処理がなされるようになる。信号プロセッサに領域が供給可能になる前に信号プロセッサが領域を要求できるようにすることによって、信号プロセッサ16がホストプロセッサの領域へのアクセスを完了する前に、ホストプロセッサがその領域に書込むことができないようにする。
【0023】
ホストドライバ33を用いて「複合読取り」(compoundread)操作を行うことにより、処理のオーバヘッドが軽減される。この操作は1スクリプト当り1回だけI/O動作を必要とするが、この操作を行うと、信号プロセッサ16が必要とするすべての領域を1度に受信することができるようになる。
【0024】
特定のタスク用のデータをダウンロードする際に効率を考慮することとは別に、タスクスケジューリングはリアルタイム処理にも望ましいことである。本発明の基本概念は、スケジューラが処理特性に基づいたスケジュールを決めることができるように、各タスクに処理特性を割り当てることである。これらの特性は処理に必要な時間とメモリ容量とを含む。
【0025】
ひとつの処理特性は「リアルタイム」プロセッサ比率である。これは処理時間をデータ時間で割ったものである。例えば、データが20msの合計データ時間の間、kHzで160サンプル読まれて、そのデータの処理時間が5msであるとしよう。プロセッサ比率は5/20=25%である。もしタスクが5msプラス「スロップファクタ」(slop factor)よりも長時間要したならば、その処理はリアルタイムと見なされない。データの多少に対して必要な処理時間は容易に決めることができる。
【0026】
次のデータ構造はタスクにより主張される処理特性の一例であり、C言語でプログラムが書かれている。
【0027】
Struct Task_Characteristics
{
long task_type;
long task_degrade_path;
long task_time_max;
long task_id:
long buffer_size;
long buffer_time;
long average_execution_time;
long total_execution_time;
long minimum_execution_time;
long maximum_execution_time;
long number_executions;
long number_alarms;
long task_status;
}
【0028】
この構造におけるデータ項目は次のように記述されている。
task_type タスクが実行する処理の種類を識別する。例えば
task_type=DTMF_RECEIVER.
task_degrade_path より低次の資源集約タスクへの下がり
方、または現在のタスクの処理をより低次の資源集約動作への変更の
仕方を指示する。
task_time_max アラームが発せられる前にタスクの実行が許さ
れる最長の時間を示す。
task_id このタスクを他のすべてのタスクから唯一に識別する数。
buffer_size 各タスクに割当てられているバッファのバイト数を
を規定する。
buffer_time buffer_sizeのタスクバッファ内のデー
タで表わされる時間量を規定する。
average_execution_time このタスクがデータバッフ
ァを処理するのに要する平均時間を示す統計値。
total_execution_time このタスクがデータバッフアを
処理するのに使った合計時間を示す統計値。
minimum_execution_time データバッファを処理する
のに使った最短時間を示す統計値。
maximum_execution_time データバッファを処理する
のに使った最長時間を示す統計値。
number_executions 処理されたデータバッファの数を明ら
かにする。
number_alarms このタスクの実行中に起きたアラームの数。
task_status このタスクの現在の状態。例えば、
TASK_OK ALARM_ON TASK_KILLED。
【0029】
実行時スケジューラは各ディジタルプロセッサ16のプログラミングの一部である。このスケジューラはタスク識別子と、タスクの処理特性を表わすデータと、資源の使用可能度とを用いる。スケジューラはこのデータを用いて、各タスクの実行時間中に資源を動的に割当てたり解除したりする。処理特性は後述するように、ホストプロセッサ12からダウンロードされるか、または動的に再構築されることによって、初期化時に決定される。本発明の発展形として、システムが過負荷になった際の低次への移行を扱ったり、あるいは実行統計を提供したりする付加プログラミングを含むことができる。
【0030】
信号プロセッサシステム15の初期化を行っている間、各プロセッサ16が実行するタスクにデータとスタック空間とが割当てられる。これらの資源割当ては実行時間中スケジューラにより利用される。
【0031】
図4はスケジューラのプログラム構成と、スケジューリングタスクの実行時プロセスとを示す。スケジューラの主なプログラム構成は、タスク待ち行列41、待ち行列マネージャー42、アラームドライバ43、タイミング発生器44、およびオーバタイムマネージャ45である。
【0032】
処理が始まる前には、タスクA−Eがタスク待ち行列41の中に保管されている。タスクの要求があると、タスクAをタスク待ち行列41から取り出して、待ち行列マネージャ42に渡す。
【0033】
それからタスクAは待ち行列マネージャ42に自分の処理特性を知らせる。これは「主張特性」と呼ぶ。
【0034】
タスクAを扱う次のステップは、その処理特性とシステム資源の使用可能度とにより決定される。すなわち、どのプロセッサ16が利用可能であってタスクAの要求に合っているかにより、タスクはその方向に向けられる。すなわち、待ち行列マネージャ42はタスクAの主張する処理特性を読んで、どの資源が利用可能であるかを決定する。タスクAの要求にあう資源の利用可能度により、スケジューラ42はプロセッサ16にタスクAを割当てて実行させるか、もしくは実行を遅らせる。
【0035】
タスクAが実行開始されると、タスクAはアラームドライバ43に「パンチイン」する。アラームドライバ43は前述の機能を監視する役を果たす。タイミング発生器44がタスクAの処理時間を計る。タスクAが自分の主張した時間以内で処理を完了すれば、タスクAはパンチアウトし、アラームはオフになる。性能データが集められて、タスクA用に記憶される。タイミング発生器44で使われるタイマは周知のハードウェアのタイミング装置のうち任意のものでよい。
【0036】
しかし、もしタスクAの実行が自分の主張した時間よりも長くかかったならば、タイミング発生器44がプロセッサ16に割込み信号を送る。割込み信号はアラームサービスルーチン43aを動かし、それがアラーム信号を送ってオーバタイムマネージャ45を動かす。
【0037】
オーバタイムマネージャ45はタスクAの処理状態を診断して、メモリ故障、無限ループ、デッドロックあるいはスタック不良のような問題が遅延を引起こしているか否かを決定する。オーバタイムマネージャ45はまた、タスクを再スケジュールするとか、あるいはバッファを操作するというような、遅延の解決方法も決定する。オーバタイムマネージャ45はまた、タスクが誤った実行時間の期待値を提供したに過ぎないのか否かも決定する。オーバタイムマネージャはアラーム信号により作動開始させられる優先度の高いタスクとして働く。
【0038】
前述の例において、もしタスクAが5msプラス小さい「スロップ」時間要因より長時間かかったならば、アラームが発せられる。オーバタイムマネージャ45はバッファ戦略を変更するか、タスクAを停止するか、あるいはタスクAがもっと短い時間で実行されるアルゴリズムでプログラムするか、もしくは他の管理決定法を実行する。
【0039】
オーバタイムマネージャ45にタスクの処理特性に関する情報を提供することにより、タスクをの実行を延期することができる。例えば、RAMを要求することにより、前述したバッファの操作が可能になる。いいかえれば、タスクの実行を延期してそのデータをバッファに記憶することができる。更に、RAMの要求はプロセッサ比の倍数でなされるから、オーバタイムマネージャ45は所定量のデータに対してどの位処理時間がかかるかと共に、メモリの容量がどのくらい必要かも知る。
【0040】
オーバタイムマネージャ45の他の特徴は、タスクが延期されたときに、低下技法を提供することである。例えば、オーバタイムマネージャ45はプロセッサ比という表現により集約度の低いタスクを呼出すことができる。このタスクはユーザに代わりのサービスを提供して、サービスが完全に欠落するのを避けることができる。例えば、代わりのサービスがビジィ信号を発生し続けることがある。
【0041】
ディジタルプロセッサ16により実行されるタスクの処理特性を監視する能力をスケジューラシステムが有しているので、実行時間中これらの特性を動的に修正することが可能である。あるいは、これらの特性を別々に試験してシステムに供給することもできよう。
【0042】
以上、本発明を特定の実施例について説明したが、限定的意味を持つものではない。開示した実施例をいろいろ修正したり、代わりの実施例を考えたりすることは当業者にとって容易である。したがって、本発明の範囲はすべてのそれらの修正例を含むものである。
【0043】
【発明の効果】
以上説明したように本発明によれば資源が効率よく割当てられ、リアルタイム応答性にすぐれたマルチプロセッサ、マルチタスキングシステムが提供される。
【図面の簡単な説明】
【図1】 信号プロセッサシステムと通信可能なホストプロセッサを有する、マルチプロセッサ、マルチタスキングコンピュータ処理システムのブロック図。
【図2】 電話通信の処理に利用される、図1のマルチプロセッサシステムの典型的な応用を示すブロック図。
【図3】 図1の各信号プロセッサのプログラムとデータの記憶に関する機能ブロック図。
【図4】 図1の各信号プロセッサ用のスケジューリングシステムのプログラムの構成図。
【符号の説明】
11 ホストプロセッサシステム
12 ホストプロセッサ
13 メモリ
15 信号プロセッサシステム
16 信号プロセッサ
17 メモリ
19 バス
【産業上の利用分野】
本発明はコンピュータシステムに関し、特に、マルチプロセッサ;マルチタスキングシステムのタスクをスケジューリングする方法に関する。
【0002】
【従来の技術】
マルチ処理は並列処理の一種であり、2個以上のプロセッサで別々のプログラムの実行を分担するやり方である。マルチタスキングはマルチ処理の特別の場合であって、ソフトウェアの処理、すなわちタスクを規定するものである。タスクはサブプログラムであって、同時に他のサブプログラムと一緒に実行することができる。
【0003】
マルチタスク環境では、衝突せずに並列に実行できるように、タスクとジョブのデータ構造とを注意深く分割しなければならない。しかし、プロセッサの使用可能度、実行の順番およびタスクの完了はシステムの運転時の状態の関数である。したがって、タスク自身は正しく決められていても、マルチタスキングは時間に関して本質的に不確定なものである。
【0004】
マルチタスキングを確実に成功させるには、一旦タスクを分割した場合、効率的に資源を共有するようにオペレーティングシステムを展開しなければならない。資源を処理に割り当てることを「スケジューリング」と呼ぶ。スケジューリングはリアルタイム入力に対してリアルタイムに応答することを必要とするシステムにおいて特に重要である。
【0005】
既存のマルチタスキング・スケジューリング・システムではたいていが優先度方式を用いているが、これは本質的に静的なものである。優先度方式では、タスクがどれほどの時間を必要とするか、タスクがどれほどのメモリ量を必要とするか、あるいはそのメモリが必要とする時間のような、タスクの処理に必要なことを考慮していない。メモリに対する要求は、タスクがもっとメモリを必要とする前に、所定量のメモリを用いて、どれ位の時間そのタスクを実行することができるかにより決定される。
【0006】
スケジューリングを行う他の方法としては、「タイムスライシング」がある。この場合、タスクの各部分に、限定された実行時間が与えられる。この時間が経過すると、別のタスクの部分が実行される。すなわち、タスクが所定の時間内に終らなかったならば、プロセッサは次に待っているタスクに割当てられ、未完了のタスクはもう一度スケジューリングされる。タイムスライス方式の欠点は、タスクの切替え時にオーバヘッドがあることである。
【0007】
【発明が解決しようとする課題】
余分な処理用オーバヘッドを生ずることなく、資源を効率よく利用するタスクのスケジューリング方法が必要である。
【0008】
【課題を解決するための手段】
本発明によれば、マルチタスキング、マルチプロセッサシステムのプロセッサにより実行される、タスクのスケジューリング方法が提供される。メモリの要求やプロセッサの使用のような、実行すべきタスクの処理特性が実験的に決められる。各タスクはそのタスクの処理特性を表わすデータ構造に関連づけられている。実行時にはタスクが呼び出されて、タスク待ち行列の中に配置される。実行のためにタスクが待ち行列から取り出されると、タスクは自分の処理特性をスケジューラプログラムに知らせる。それからスケジューラはタスクの処理特性と利用可能な資源とに応じて、タスクにより使用される処理資源を選択する。
【0009】
本発明の技術的特徴は、リアルタイム応答性を従来より容易に維持できることである。タスクは必要な時間だけ実行し続けられるように、その処理の必要性に応じてスケジューリングされる。システムの資源の負荷がどの位か、および、更に処理を負担させることができるか否かを決めるために、システムの性能を監視することもできる。
【0010】
【実施例】
図1はマルチプロセッサ、マルチタスキングコンピュータ処理システム10のブロック図であり、ホストプロセッサシステム11が信号プロセッサシステム15と通信可能になっている。プロセッサ11と15間の通信手段はバス19であって、例えば32ビットNU−BUS標準のような認知されたいくつかの2進通信法のうち任意のものに適合している。本発明の利点の一つはNU−BUS標準の簡単なメモリマップアーキテクチャに適合していることである。
【0011】
ホストプロセッサシステム11はホストプロセッサ12とメモリ13とを含む。ホストプロセッサ12は例えばモトローラ社製の68030のような汎用プロセッサである。メモリ13はホストプロセッサ12の命令を記憶するためのプログラムメモリと、信号プロセッサシステム15にダウンロードされるプログラムルーチンとパラメータとを記憶するメモリとを含む。ダウンロードするプロセスは後述する。
【0012】
信号プロセッサシステム15はいくつかの信号プロセッサ16とそれらの各々に付属したメモリ17とを含む。信号プロセッサ16は例えばテキサスインスツルメント社製のTMS320C30である。本実施例の場合、メモリ17の適当な大きさは250K×4バイトである。信号プロセッサシステム15はホストプロセッサ12からダウンロードされたプログラムルーチンを実行する。1個のプログラムルーチンを実行し終わると、信号プロセッサシステム15はそのことをホストプロセッサ12に知らせるので、ホストプロセッサは別のルーチンをダウンロードすることができる。
【0013】
信号プロセッサ16同士は相互に通信可能なので、信号プロセッサシステム15は同時に2個以上のタスクを実行することができる。例えば、信号プロセッサシステムは図1に示すように3個の信号プロセッサ16から構成してもよい。各信号プロセッサ16は自己に割当てられたメモリ17を有し、各メモリは隣接メモリ17と相互に接続されているので、信号プロセッサ16間で通信することができる。
【0014】
各信号プロセッサ16は呼処理部を持っているので、2個以上の呼出しを同時に処理することができる。処理の仕方はホストプロセッサ12から供給されたスクリプトにより各呼出しに毎に異なってもよい。
【0015】
図2は電話回線通信に使われる典型的なマルチプロセッサシステム10の適用例を示す。この例では、ホストプロセッサシステム11はボイスメールサービスを扱うサービスコントロールシステム21の一部である。サービスコントロール21はまた、データベース管理システム(図示せず)と通信するための通信搬送部と適当なインタフェイスとを有する。データベース管理システムとは、大きなデータベースシステムを必要とする顧客の記録とその他の情報とを管理するものである。サービスコントロールシステムはまた、バス19を介して電話制御システム22とも通信することができるようになっている。電話制御システム22にはディジタル処理システム15が含まれている。ディジタル処理システム15はT1線24からT1バッファ23を経由してデータを受信して、電気通信プロトコルに従って音声データを実際に送受信する。T1バッファ23は例えば、マイテル社製のMT8920 ST−バス並列アクセス回路である。図3を用いて後述するが、本発明を実際に応用する際には、信号処理システム15は、複数個の信号プロセッサ16を有し、T1線の複数チャネルから入力を受信するマルチプロセッサ、マルチタスキングシステムである。
【0016】
ボイスメールにマルチプロセッサシステム10を使うことに関しては、係属中の米国特許出願シリアルNo. 570,171,「Digital Signal Processing Control Method and Apparatus(ディジタル信号処理制御方法および装置)」にもっと詳細に記載されている。なお、この特許出願も本発明の譲り受け人に譲渡されている。そこに開示されている方法は、その発明のマルチプロセッサ環境の範囲内でデータを転送するひとつの方法である。しかし、本発明の方法はそのような特定の構成を用いて機能するものに限らず、図1に示すように、少なくとも2個のプロセッサが1個のプロセッサのメモリへのアクセスを共有するようなマルチプロセッサ環境ならば、どんなものでも使うことができよう。
【0017】
信号処理システム15の処理タスク、すなわち、信号プロセッサ16により実行される機能は、ホストプロセッサシステム11にロードされるアプリケーションプログラムの部分により表わされる。これらのコードの部分はここでは「スクリプト」と呼ぶ。ホストプロセッサ12は実行すべきタスクの特定の順番を動的に決定する。したがって「スクリプト」を決定する。スクリプトは擬似コード形式で信号プロセッサ12にダウンロードされ、図3に示すようにスクリプトインタプリンタ32により解読される。その結果は、ホストプロセッサ12が信号プロセッサ16に実行することを要求するタスクを特定する1組のバイトコードを表わす。ホストプロセッサ12またはスクリプトインタプリンタ32のいずれかによって、タスクを処理する能力のある特定の信号プロセッサ16にタスクが割当てられる。
【0018】
ボイスメールの場合には、タスクは着呼により開始される。タスクの一例は電話に応答することである。他のタスクにはメッセージを聴くことや、メッセージを記録することなどがある。ボイスメッセージ処理のような場合には、一旦電話に応答するタスクが実行されると、その次のタスクは発呼者の入力により変る。例えば発呼者はメッセージを聴くこと、メッセージを記録すること、あるいは交換手につなぐことなどを要求するだろう。したがって、ボイスメッセージの場合には、スクリプトは、一旦電話応答がなされたとき、続いて信号プロセッサが実行すべきコードを表わす。
【0019】
マルチタスキング動作の一例として、電話に応答するタスクがある。ホストドライバ33は選択組を受信するために「複合読取り」を行い、ホストプロセッサ12はこのタスク用のスクリプトを含む領域サブセットを信号プロセッサ16に供給する。タスクを実行する能力を有する各信号プロセッサ16はスクリプトを解釈してそれを実行する準備を行う。電話が鳴ると、最初に利用可能な信号プロセッサ16が呼び出しに応答する。次の電話が鳴ると、第2の信号プロセッサ16が処理する。以下同様に動作する。
【0020】
図3はメモリ17に記憶されている信号プロセッサ16のプログラムとデータの記憶に関する機能ブロック図である。プログラムは3個の主部を有する。実行制御部31と、スクリプトインタプリタ部32と、ホストドライバ部33とである。実行制御部31は信号プロセッサ16により実行されるコードを記憶する。このコードはホストプロセッサ12により変えられない。このコードはダウンロードされたルーチンからの特定の機能の呼出しをサポートする。例えば、ダウンロードされたルーチンは機能「ゲントーン(gentone)5」を呼び出してもよいだろう。この機能はキーパッドの数字5に相当するDTMF信号が所望されていることを示している。ホストドライバ33は、標準デバイスドライバがディスクドライブのような周辺機器とやりとりするのと同様なI/O処理法で、ホストプロセッサ12とI/O処理のやりとりを行う。スクリプトインタ プリタ部32は上述のようにスクリプトを解釈する。図3に示すように、メモリ17はまたホストプロセッサ12からダウンロードされたプログラムコードとその他のデータを記憶するための主記憶領域34を有する。
【0021】
ホストプロセッサ12と信号プロセッサ16は各々それぞれ自分のメモリ13と17ヘのアクセスに関して、排他的に制御することができる。したがって、各プロセッサ12と16は自分自身のI/O動作を実行する。
【0022】
プロセッサ間の通信、特にホストプロセッサ12から信号プロセッサ16へのダウンロードについては、係属中の米国特許出願シリアルNo.576,258,「Method for Communications Between Processors of a Multi−processor System(マルチプロセッサシステムにおけるプロセッサ間の通信方法)」に詳しく述べてある。なお、この発明も本発明の譲り受け人に譲渡されている。要約すると、ホストプロセッサ12は信号プロセッサ16に書きこもうとするデータを領域により特定する。信号プロセッサ16は整合読取り動作を行って、その領域のデータを受信する。これらの整合書込み/読取り動作を行うことにより、信号プロセッサ16上ではホストプロセッサ12の領域へ排他的にアクセスする処理がなされるようになる。信号プロセッサに領域が供給可能になる前に信号プロセッサが領域を要求できるようにすることによって、信号プロセッサ16がホストプロセッサの領域へのアクセスを完了する前に、ホストプロセッサがその領域に書込むことができないようにする。
【0023】
ホストドライバ33を用いて「複合読取り」(compoundread)操作を行うことにより、処理のオーバヘッドが軽減される。この操作は1スクリプト当り1回だけI/O動作を必要とするが、この操作を行うと、信号プロセッサ16が必要とするすべての領域を1度に受信することができるようになる。
【0024】
特定のタスク用のデータをダウンロードする際に効率を考慮することとは別に、タスクスケジューリングはリアルタイム処理にも望ましいことである。本発明の基本概念は、スケジューラが処理特性に基づいたスケジュールを決めることができるように、各タスクに処理特性を割り当てることである。これらの特性は処理に必要な時間とメモリ容量とを含む。
【0025】
ひとつの処理特性は「リアルタイム」プロセッサ比率である。これは処理時間をデータ時間で割ったものである。例えば、データが20msの合計データ時間の間、kHzで160サンプル読まれて、そのデータの処理時間が5msであるとしよう。プロセッサ比率は5/20=25%である。もしタスクが5msプラス「スロップファクタ」(slop factor)よりも長時間要したならば、その処理はリアルタイムと見なされない。データの多少に対して必要な処理時間は容易に決めることができる。
【0026】
次のデータ構造はタスクにより主張される処理特性の一例であり、C言語でプログラムが書かれている。
【0027】
Struct Task_Characteristics
{
long task_type;
long task_degrade_path;
long task_time_max;
long task_id:
long buffer_size;
long buffer_time;
long average_execution_time;
long total_execution_time;
long minimum_execution_time;
long maximum_execution_time;
long number_executions;
long number_alarms;
long task_status;
}
【0028】
この構造におけるデータ項目は次のように記述されている。
task_type タスクが実行する処理の種類を識別する。例えば
task_type=DTMF_RECEIVER.
task_degrade_path より低次の資源集約タスクへの下がり
方、または現在のタスクの処理をより低次の資源集約動作への変更の
仕方を指示する。
task_time_max アラームが発せられる前にタスクの実行が許さ
れる最長の時間を示す。
task_id このタスクを他のすべてのタスクから唯一に識別する数。
buffer_size 各タスクに割当てられているバッファのバイト数を
を規定する。
buffer_time buffer_sizeのタスクバッファ内のデー
タで表わされる時間量を規定する。
average_execution_time このタスクがデータバッフ
ァを処理するのに要する平均時間を示す統計値。
total_execution_time このタスクがデータバッフアを
処理するのに使った合計時間を示す統計値。
minimum_execution_time データバッファを処理する
のに使った最短時間を示す統計値。
maximum_execution_time データバッファを処理する
のに使った最長時間を示す統計値。
number_executions 処理されたデータバッファの数を明ら
かにする。
number_alarms このタスクの実行中に起きたアラームの数。
task_status このタスクの現在の状態。例えば、
TASK_OK ALARM_ON TASK_KILLED。
【0029】
実行時スケジューラは各ディジタルプロセッサ16のプログラミングの一部である。このスケジューラはタスク識別子と、タスクの処理特性を表わすデータと、資源の使用可能度とを用いる。スケジューラはこのデータを用いて、各タスクの実行時間中に資源を動的に割当てたり解除したりする。処理特性は後述するように、ホストプロセッサ12からダウンロードされるか、または動的に再構築されることによって、初期化時に決定される。本発明の発展形として、システムが過負荷になった際の低次への移行を扱ったり、あるいは実行統計を提供したりする付加プログラミングを含むことができる。
【0030】
信号プロセッサシステム15の初期化を行っている間、各プロセッサ16が実行するタスクにデータとスタック空間とが割当てられる。これらの資源割当ては実行時間中スケジューラにより利用される。
【0031】
図4はスケジューラのプログラム構成と、スケジューリングタスクの実行時プロセスとを示す。スケジューラの主なプログラム構成は、タスク待ち行列41、待ち行列マネージャー42、アラームドライバ43、タイミング発生器44、およびオーバタイムマネージャ45である。
【0032】
処理が始まる前には、タスクA−Eがタスク待ち行列41の中に保管されている。タスクの要求があると、タスクAをタスク待ち行列41から取り出して、待ち行列マネージャ42に渡す。
【0033】
それからタスクAは待ち行列マネージャ42に自分の処理特性を知らせる。これは「主張特性」と呼ぶ。
【0034】
タスクAを扱う次のステップは、その処理特性とシステム資源の使用可能度とにより決定される。すなわち、どのプロセッサ16が利用可能であってタスクAの要求に合っているかにより、タスクはその方向に向けられる。すなわち、待ち行列マネージャ42はタスクAの主張する処理特性を読んで、どの資源が利用可能であるかを決定する。タスクAの要求にあう資源の利用可能度により、スケジューラ42はプロセッサ16にタスクAを割当てて実行させるか、もしくは実行を遅らせる。
【0035】
タスクAが実行開始されると、タスクAはアラームドライバ43に「パンチイン」する。アラームドライバ43は前述の機能を監視する役を果たす。タイミング発生器44がタスクAの処理時間を計る。タスクAが自分の主張した時間以内で処理を完了すれば、タスクAはパンチアウトし、アラームはオフになる。性能データが集められて、タスクA用に記憶される。タイミング発生器44で使われるタイマは周知のハードウェアのタイミング装置のうち任意のものでよい。
【0036】
しかし、もしタスクAの実行が自分の主張した時間よりも長くかかったならば、タイミング発生器44がプロセッサ16に割込み信号を送る。割込み信号はアラームサービスルーチン43aを動かし、それがアラーム信号を送ってオーバタイムマネージャ45を動かす。
【0037】
オーバタイムマネージャ45はタスクAの処理状態を診断して、メモリ故障、無限ループ、デッドロックあるいはスタック不良のような問題が遅延を引起こしているか否かを決定する。オーバタイムマネージャ45はまた、タスクを再スケジュールするとか、あるいはバッファを操作するというような、遅延の解決方法も決定する。オーバタイムマネージャ45はまた、タスクが誤った実行時間の期待値を提供したに過ぎないのか否かも決定する。オーバタイムマネージャはアラーム信号により作動開始させられる優先度の高いタスクとして働く。
【0038】
前述の例において、もしタスクAが5msプラス小さい「スロップ」時間要因より長時間かかったならば、アラームが発せられる。オーバタイムマネージャ45はバッファ戦略を変更するか、タスクAを停止するか、あるいはタスクAがもっと短い時間で実行されるアルゴリズムでプログラムするか、もしくは他の管理決定法を実行する。
【0039】
オーバタイムマネージャ45にタスクの処理特性に関する情報を提供することにより、タスクをの実行を延期することができる。例えば、RAMを要求することにより、前述したバッファの操作が可能になる。いいかえれば、タスクの実行を延期してそのデータをバッファに記憶することができる。更に、RAMの要求はプロセッサ比の倍数でなされるから、オーバタイムマネージャ45は所定量のデータに対してどの位処理時間がかかるかと共に、メモリの容量がどのくらい必要かも知る。
【0040】
オーバタイムマネージャ45の他の特徴は、タスクが延期されたときに、低下技法を提供することである。例えば、オーバタイムマネージャ45はプロセッサ比という表現により集約度の低いタスクを呼出すことができる。このタスクはユーザに代わりのサービスを提供して、サービスが完全に欠落するのを避けることができる。例えば、代わりのサービスがビジィ信号を発生し続けることがある。
【0041】
ディジタルプロセッサ16により実行されるタスクの処理特性を監視する能力をスケジューラシステムが有しているので、実行時間中これらの特性を動的に修正することが可能である。あるいは、これらの特性を別々に試験してシステムに供給することもできよう。
【0042】
以上、本発明を特定の実施例について説明したが、限定的意味を持つものではない。開示した実施例をいろいろ修正したり、代わりの実施例を考えたりすることは当業者にとって容易である。したがって、本発明の範囲はすべてのそれらの修正例を含むものである。
【0043】
【発明の効果】
以上説明したように本発明によれば資源が効率よく割当てられ、リアルタイム応答性にすぐれたマルチプロセッサ、マルチタスキングシステムが提供される。
【図面の簡単な説明】
【図1】 信号プロセッサシステムと通信可能なホストプロセッサを有する、マルチプロセッサ、マルチタスキングコンピュータ処理システムのブロック図。
【図2】 電話通信の処理に利用される、図1のマルチプロセッサシステムの典型的な応用を示すブロック図。
【図3】 図1の各信号プロセッサのプログラムとデータの記憶に関する機能ブロック図。
【図4】 図1の各信号プロセッサ用のスケジューリングシステムのプログラムの構成図。
【符号の説明】
11 ホストプロセッサシステム
12 ホストプロセッサ
13 メモリ
15 信号プロセッサシステム
16 信号プロセッサ
17 メモリ
19 バス
Claims (6)
- マルチタスキング、マルチプロセッサシステムの複数のプロセッサにより実行されるタスクのスケジューリング方法であって、
複数のタスクを特定のシーケンスで実行する要求のアプリケーションプログラムを実行するステップと、
前記実行が要求される複数のタスクの処理特性を決めるステップと、
前記複数のタスクを前記処理特性を表わすデータ構造に関連づけるステップと、
前記複数のタスクをタスク待ち行列に配置するステップと、
前記複数のタスクの中から実行するために第1のタスクを取り出すステップと、
スケジューラプログラムに前記第1のタスクの処理特性を伝えるステップと
前記処理特性と利用可能な資源とに応じて、前記スケジューラプログラムを用いて、前記第1のタスクで使うべき処理資源を選択するステップと、
前記第1のタスクが前記処理資源の利用を開始する時アラームドライバを活性化し、実際の処理特性を生成するために前記利用を計測するステップと、
前記実際の処理特性が予め定められた値を超えた場合には、オーバータイムマネージャーを活性化するステップを有し、その際、オーバータイムマネージャーは前記タスクの実行を停止し、前記第1のタスクの処理状態を診断して障害が遅延を引き起こしているか否かを決定し、もしそうならば該遅延の解決方法を決定し、処理特性は不正か否かを判定しており、更に
タスクを取り出し、処理特性を伝え、処理資源を選択し、アラームドライバとオーバータイムマネージャーを活性化するステップを、もし適切ならば、全てのタスクが実行されるまで繰り返すステップを有する方法。 - 請求項1記載の方法において、更に、前記伝えられた特性と前記実際の特性を比較するステップを含む方法。
- 請求項2記載の方法において、更に、前記実際の特性が前記伝えられた特性を予め定められた値越えた時、割り込みサービスを活性化するステップを含む方法。
- 請求項1記載の方法において、更に、前記伝えられた特性を前記実際の特性に基づいて修正するステップを含む方法。
- 請求項1記載の方法において、前記処理特性はプロセッサの使用比率を含む方法。
- 請求項1記載の方法において、前記アラームマネージャは代わりの処理方法を決めステップを含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US576300 | 1990-08-31 | ||
US07/576,300 US5303369A (en) | 1990-08-31 | 1990-08-31 | Scheduling system for multiprocessor operating system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06119300A JPH06119300A (ja) | 1994-04-28 |
JP3676827B2 true JP3676827B2 (ja) | 2005-07-27 |
Family
ID=24303832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22021091A Expired - Fee Related JP3676827B2 (ja) | 1990-08-31 | 1991-08-30 | マルチプロセッサシステム用のスケジューリング方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5303369A (ja) |
EP (1) | EP0473444B1 (ja) |
JP (1) | JP3676827B2 (ja) |
DE (1) | DE69127945T2 (ja) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2069711C (en) * | 1991-09-18 | 1999-11-30 | Donald Edward Carmon | Multi-media signal processor computer system |
JPH0659906A (ja) * | 1992-08-10 | 1994-03-04 | Hitachi Ltd | 並列計算機の実行制御方法 |
US5628013A (en) * | 1992-09-30 | 1997-05-06 | Apple Computer, Inc. | Apparatus and method for allocating processing time in a frame-based computer system |
JP3208870B2 (ja) * | 1992-10-30 | 2001-09-17 | 株式会社日立製作所 | データ分割パタンの評価方法 |
US5896531A (en) * | 1993-02-26 | 1999-04-20 | International Business Machines Corporation | Method and system for managing environments with a data processing system |
US5459865A (en) * | 1993-04-05 | 1995-10-17 | Taligent Inc. | Runtime loader |
JPH06337729A (ja) * | 1993-05-27 | 1994-12-06 | Fujitsu Ltd | ネットワークサービスシステム |
US6012072A (en) * | 1993-09-17 | 2000-01-04 | Digital Equipment Corporation | Display apparatus for the display of documents in a three-dimensional workspace |
DE4332993C1 (de) * | 1993-09-28 | 1994-11-24 | Siemens Ag | Tracer-System zur Fehleranalyse in laufenden Realzeitsystemen |
DE59402939D1 (de) * | 1993-09-28 | 1997-07-03 | Siemens Ag | Tracer-system zur fehleranalyse in laufenden realzeitsystemen |
US5408663A (en) * | 1993-11-05 | 1995-04-18 | Adrem Technologies, Inc. | Resource allocation methods |
US6151610A (en) * | 1993-12-27 | 2000-11-21 | Digital Equipment Corporation | Document display system using a scripting language having container variables setting document attributes |
US5442789A (en) * | 1994-03-31 | 1995-08-15 | International Business Machines Corporation | System and method for efficiently loading and removing selected functions on digital signal processors without interrupting execution of other functions on the digital signal processors |
DE69536008D1 (de) * | 1994-06-27 | 2009-11-12 | Intel Corp | Gerät und Verfahren zum Verteilen von Anrufverarbeitungshilfsmitteln |
US6041354A (en) * | 1995-09-08 | 2000-03-21 | Lucent Technologies Inc. | Dynamic hierarchical network resource scheduling for continuous media |
US6003061A (en) * | 1995-12-07 | 1999-12-14 | Microsoft Corporation | Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider |
US6282561B1 (en) * | 1995-12-07 | 2001-08-28 | Microsoft Corporation | Method and system for resource management with independent real-time applications on a common set of machines |
US5867725A (en) * | 1996-03-21 | 1999-02-02 | International Business Machines Corporation | Concurrent multitasking in a uniprocessor |
CA2178898C (en) * | 1996-06-12 | 2000-02-01 | David Joseph Streeter | Sequencing and error detection of template instantiations during compilation of c++ programs |
US5946463A (en) * | 1996-07-22 | 1999-08-31 | International Business Machines Corporation | Method and system for automatically performing an operation on multiple computer systems within a cluster |
US6223201B1 (en) | 1996-08-27 | 2001-04-24 | International Business Machines Corporation | Data processing system and method of task management within a self-managing application |
US6615279B1 (en) * | 1997-01-29 | 2003-09-02 | Iq Systems | Central and distributed script servers in an object oriented processor array |
US6418517B1 (en) * | 1997-08-29 | 2002-07-09 | International Business Machines Corporation | Optimized function execution for a multiprocessor computer system |
US6256679B1 (en) * | 1997-12-23 | 2001-07-03 | Simmonds Precision Products, Inc. | Blackboard-centric layered software architecture for an embedded airborne fuel gauging subsystem |
US5999990A (en) * | 1998-05-18 | 1999-12-07 | Motorola, Inc. | Communicator having reconfigurable resources |
US6131187A (en) * | 1998-08-17 | 2000-10-10 | International Business Machines Corporation | Method and system for translating exception handling semantics of a bytecode class file |
KR100727901B1 (ko) * | 1999-07-10 | 2007-06-14 | 삼성전자주식회사 | 마이크로 스케듈링 방법 및 운영체제 커널 장치 |
US7661107B1 (en) * | 2000-01-18 | 2010-02-09 | Advanced Micro Devices, Inc. | Method and apparatus for dynamic allocation of processing resources |
US20010034558A1 (en) * | 2000-02-08 | 2001-10-25 | Seagate Technology Llc | Dynamically adaptive scheduler |
JP2002024194A (ja) * | 2000-07-05 | 2002-01-25 | Matsushita Electric Ind Co Ltd | ジョブ分散処理方法および分散処理システム |
US7003523B1 (en) * | 2000-07-26 | 2006-02-21 | Revolutionary Learning Systems, Inc. | Configurable software system for automatically storing computer files |
US7140016B2 (en) * | 2000-11-29 | 2006-11-21 | Texas Instruments Incorporated | Media accelerator quality of service |
US20020144143A1 (en) * | 2000-12-15 | 2002-10-03 | International Business Machines Corporation | Method and system for network management capable of restricting consumption of resources along endpoint-to-endpoint routes throughout a network |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6931570B2 (en) * | 2001-05-02 | 2005-08-16 | Cyrus Peikari | Self-optimizing the diagnosis of data processing systems by flexible multitasking |
EP1262871A3 (en) * | 2001-06-01 | 2007-05-30 | Telogy Networks | Real-time embedded resource management system |
US20030009508A1 (en) * | 2001-06-26 | 2003-01-09 | Troia Terry A. | Method and system for providing processor task scheduling |
JP2003029989A (ja) * | 2001-07-16 | 2003-01-31 | Matsushita Electric Ind Co Ltd | 分散処理システムおよびジョブ分散処理方法 |
US7200609B2 (en) * | 2001-07-19 | 2007-04-03 | Emc Corporation | Attribute based resource allocation |
JP2003091424A (ja) * | 2001-09-18 | 2003-03-28 | Matsushita Electric Ind Co Ltd | 分散処理システムおよびジョブ分散処理方法 |
US7594229B2 (en) * | 2001-10-09 | 2009-09-22 | Nvidia Corp. | Predictive resource allocation in computing systems |
JP3878508B2 (ja) * | 2001-11-08 | 2007-02-07 | 松下電器産業株式会社 | 回路群制御システム |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7085866B1 (en) * | 2002-02-19 | 2006-08-01 | Hobson Richard F | Hierarchical bus structure and memory access protocol for multiprocessor systems |
JP2003263331A (ja) * | 2002-03-07 | 2003-09-19 | Toshiba Corp | マルチプロセッサシステム |
US7007197B2 (en) * | 2002-05-31 | 2006-02-28 | Microsoft Corporation | Virtual logging system and method |
US7484216B2 (en) * | 2002-06-18 | 2009-01-27 | Microsoft Corporation | System and method for decoupling space reservation in transactional logging systems |
US7111089B2 (en) * | 2002-12-23 | 2006-09-19 | Motorola, Inc. | Programmable scheduler for digital signal processor |
US20060123421A1 (en) * | 2002-12-27 | 2006-06-08 | Loboz Charles Z | Streamlining cpu utilization by delaying transactions |
JP4090908B2 (ja) * | 2003-02-21 | 2008-05-28 | シャープ株式会社 | 画像処理装置および画像形成装置 |
US8224639B2 (en) | 2004-03-29 | 2012-07-17 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
US8856793B2 (en) * | 2004-05-11 | 2014-10-07 | International Business Machines Corporation | System, method and program for scheduling computer program jobs |
EP1763748A1 (en) * | 2004-05-27 | 2007-03-21 | Koninklijke Philips Electronics N.V. | Signal processing apparatus |
US8171474B2 (en) * | 2004-10-01 | 2012-05-01 | Serguei Mankovski | System and method for managing, scheduling, controlling and monitoring execution of jobs by a job scheduler utilizing a publish/subscription interface |
US8789051B2 (en) * | 2004-11-18 | 2014-07-22 | Hamilton Sundstrand Corporation | Operating system and architecture for embedded system |
US7689993B2 (en) * | 2004-12-04 | 2010-03-30 | International Business Machines Corporation | Assigning tasks to processors based at least on resident set sizes of the tasks |
US7921425B2 (en) * | 2005-03-14 | 2011-04-05 | Cisco Technology, Inc. | Techniques for allocating computing resources to applications in an embedded system |
US8185905B2 (en) * | 2005-03-18 | 2012-05-22 | International Business Machines Corporation | Resource allocation in computing systems according to permissible flexibilities in the recommended resource requirements |
JP2007156824A (ja) * | 2005-12-05 | 2007-06-21 | Nec Electronics Corp | プロセッサシステム、タスク制御方法 |
US8345053B2 (en) | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
WO2008141356A1 (en) * | 2007-05-21 | 2008-11-27 | Honeywell International Inc. | Systems and methods for scheduling the operation of building resources |
KR100930017B1 (ko) * | 2007-06-29 | 2009-12-07 | 주식회사 마크애니 | 다수 개의 커널을 운영하는 시스템 및 방법 |
US9058206B2 (en) | 2008-06-19 | 2015-06-16 | Freescale emiconductor, Inc. | System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity |
WO2009153620A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for scheduling a processing entity task |
US8266477B2 (en) * | 2009-01-09 | 2012-09-11 | Ca, Inc. | System and method for modifying execution of scripts for a job scheduler using deontic logic |
US8510744B2 (en) * | 2009-02-24 | 2013-08-13 | Siemens Product Lifecycle Management Software Inc. | Using resource defining attributes to enhance thread scheduling in processors |
US8589931B2 (en) * | 2009-03-18 | 2013-11-19 | International Business Machines Corporation | Environment based node selection for work scheduling in a parallel computing system |
EP2312442A3 (en) * | 2009-08-27 | 2012-02-01 | Siemens Product Lifecycle Management Software Inc. | System and method for thread scheduling in processors |
US9229779B2 (en) * | 2009-12-28 | 2016-01-05 | Empire Technology Development Llc | Parallelizing heterogeneous network communications in smart devices based on selection of task allocation strategy |
WO2011161830A1 (ja) | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアシステムおよびスケジューリング方法 |
KR101671184B1 (ko) | 2010-12-14 | 2016-11-01 | 삼성전자주식회사 | 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법 |
US9201688B2 (en) * | 2010-12-17 | 2015-12-01 | Microsoft Technology Licensing, Llc | Configuration of asynchronous message processing in dataflow networks |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8566831B2 (en) * | 2011-01-26 | 2013-10-22 | International Business Machines Corporation | Execution of work units in a heterogeneous computing environment |
US8533720B2 (en) | 2011-02-25 | 2013-09-10 | International Business Machines Corporation | Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit |
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 |
KR101867960B1 (ko) * | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
KR101871941B1 (ko) * | 2013-03-12 | 2018-07-02 | 한화에어로스페이스 주식회사 | 카메라의 동작 방법, 카메라, 및 감시 시스템 |
KR102285749B1 (ko) * | 2014-11-10 | 2021-08-05 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
US9552229B2 (en) * | 2015-05-14 | 2017-01-24 | Atlassian Pty Ltd | Systems and methods for task scheduling |
US10592280B2 (en) * | 2016-11-23 | 2020-03-17 | Amazon Technologies, Inc. | Resource allocation and scheduling for batch jobs |
CN109582456A (zh) * | 2017-09-28 | 2019-04-05 | 北京国双科技有限公司 | 报表执行方法和装置 |
CN109828833B (zh) * | 2018-11-02 | 2020-09-29 | 上海帆一尚行科技有限公司 | 一种神经网络训练任务的排队系统及其方法 |
CN109710463A (zh) * | 2018-12-27 | 2019-05-03 | 亚信科技(中国)有限公司 | 一种任务调度方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4320455A (en) * | 1978-01-09 | 1982-03-16 | Honeywell Information Systems Inc. | Queue structure for a data processing system |
US4855903A (en) * | 1984-12-20 | 1989-08-08 | State University Of New York | Topologically-distributed-memory multiprocessor computer |
EP0346039A2 (en) * | 1988-06-06 | 1989-12-13 | Demax Software, Inc | Dynamic load balancing for multi-user computers |
-
1990
- 1990-08-31 US US07/576,300 patent/US5303369A/en not_active Expired - Lifetime
-
1991
- 1991-08-30 EP EP91307940A patent/EP0473444B1/en not_active Expired - Lifetime
- 1991-08-30 JP JP22021091A patent/JP3676827B2/ja not_active Expired - Fee Related
- 1991-08-30 DE DE69127945T patent/DE69127945T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69127945D1 (de) | 1997-11-20 |
EP0473444B1 (en) | 1997-10-15 |
US5303369A (en) | 1994-04-12 |
JPH06119300A (ja) | 1994-04-28 |
EP0473444A2 (en) | 1992-03-04 |
EP0473444A3 (en) | 1992-04-29 |
DE69127945T2 (de) | 1998-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3676827B2 (ja) | マルチプロセッサシステム用のスケジューリング方法 | |
US7721286B2 (en) | Preemptive multi-tasking with cooperative groups of tasks | |
US5349682A (en) | Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors | |
US8006247B2 (en) | Multi-tasking real-time operating system for microprocessors with limited memory | |
KR100289627B1 (ko) | 멀티태스킹 기능을 가지는 정보처리시스템을 위한 자원관리방법 및 그 장치 | |
US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
JP4056491B2 (ja) | 論理的に区画化されたコンピュータにおける区画管理操作に関する非同期通知の選択的生成 | |
JPH0820963B2 (ja) | 計算機システムを動作させる方法及び計算機システム | |
JP2005513644A (ja) | オペレーティングシステム機能を実行する方法及びシステム並びに電子装置 | |
JP3938343B2 (ja) | タスク管理システム、プログラム、及び制御方法 | |
CN111274019A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
US5754795A (en) | Method for communication between processors of a multi-processor system | |
CA1304513C (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
CN1147112A (zh) | 多处理机控制系统中控制单位程序信息过载的方法 | |
US9507637B1 (en) | Computer platform where tasks can optionally share per task resources | |
CN114691321A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
EP0049521A2 (en) | Information processing system | |
CN112748883B (zh) | 一种io请求流水线处理设备、方法、系统及存储介质 | |
CN115220908A (zh) | 资源调度方法、装置、电子设备及存储介质 | |
US5392426A (en) | Method and apparatus for use in program operation, control and control block management and storage | |
CN112559148A (zh) | 有序任务的执行方法、执行装置和执行系统 | |
US20010039558A1 (en) | Cache memory management method for real time operating system | |
JP2003186686A (ja) | リソース制御装置、方法及び記憶媒体 | |
CN117539639B (zh) | 显存资源调度方法、装置、系统、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050309 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050502 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090513 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100513 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |