JPH02242434A - タスクのスケジューリング方法 - Google Patents

タスクのスケジューリング方法

Info

Publication number
JPH02242434A
JPH02242434A JP6221689A JP6221689A JPH02242434A JP H02242434 A JPH02242434 A JP H02242434A JP 6221689 A JP6221689 A JP 6221689A JP 6221689 A JP6221689 A JP 6221689A JP H02242434 A JPH02242434 A JP H02242434A
Authority
JP
Japan
Prior art keywords
task
processor
processors
scheduling
tasks
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
Application number
JP6221689A
Other languages
English (en)
Inventor
Tadashi Kamiwaki
正 上脇
Shinichiro Yamaguchi
伸一朗 山口
Masahiko Saito
雅彦 齊藤
Yoshiki Kobayashi
芳樹 小林
Tomoaki Nakamura
智明 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP6221689A priority Critical patent/JPH02242434A/ja
Priority to DE4007998A priority patent/DE4007998A1/de
Publication of JPH02242434A publication Critical patent/JPH02242434A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、マルチプロセッサにおけるタスクのスケジュ
ーリング方法に係わり、特に構成の異なるプロセッサを
含むマルチプロセッサにおけるタスクのスケジューリン
グ方法に関する。
〔従来の技術〕
従来マルチプロセッサでは、これを構成する複数のプロ
セッサが、全く同じ構成を、従って同じ命令セラ1へを
持つことを条件としたものが多かった。
また構成が異なり、従って命令セットの異なるプロセッ
サを接続したマルチプロセッサやマルチコンピュータの
場合には、処理すべきタスクが入る待行列がプロセッサ
ごとに設けられており、タスクの実行に先立ってユーザ
またはO8がそのタスクをどのプロセッサの上で実行す
るか決定し、その決定したプロセッサの待行列にタスク
を入れておく必要があった。
また、特開昭62−208157には、スケジューリン
グ方法ではないが、一部命令セットが異なる複数の計算
機からなる計算機システムのプログラム実行方法が記載
されている。その方法は、コンパイラがどの計算機の上
ででも実行可能なオブジェクトコードを出力するもので
ある。即ちコンパイラはプログラムを解析して、プロセ
ッサ間で共通の命令で実行できる部分と実行できない部
分に分ける。共通に実行できる部分については単一のオ
ブジェクトコードを出力するが、実行できない部分はプ
ロセッサの種類に対応した複数のオブジェクトコードを
出力する。そして、コンパイラは、実行できない部分の
直前に実行しているプロセッサの種類に応じたオブジェ
クトコードに分岐するためのプログラムを挿入する。
〔発明が解決しようとする課題〕
上記した従来のマルチプロセッサにおけるタスクのスケ
ジューリング方法あるいはマルチプロセッサ用のプログ
ラムコンパイル方式には以下のような問題がある。
即ち、同一構成のプロセッサのみでマルチプロセッサを
構成する場合には、ベクトルプロセッサを備えたプロセ
ッサやA I処理用プロセッサなどの一つの機能を強化
したプロセッサをシステム中に加えるときに、一つだけ
のプロセッサを入替え一 ることかできず、全部のプロセッサをそれらのプロセッ
サにしなければならない。
プロセッサ毎に待行列を持つ方法では、同じ構成のプロ
セッサが複数あるときにプロセッサ間で負荷が偏る可能
性がある。
コンパイラが複数のオブジェクトコードを出力する方法
では、オブジェクトコードが大きくなる欠点とともに、
コンパイラを新しく作り直す必要があるという欠点があ
る。
本発明の目的は、複数のオブジェクトコードを出力する
コンパイラを作成することなしに、命令セットの一部ま
たは全部が異なるプロセッサよりなるマルチプロセッサ
上で、タスクにプロセッサを効率よく割付けるタスクの
スケジューリング方法を提供することにある。
本発明の別の目的は、ベクトルプロセッサを持ったプロ
セッサと持たないプロセッサのように、ある処理が速い
プロセッサと遅いプロセッサとを含むマルチプロセッサ
において、そのような処理があるタスクはその処理の速
いプロセッサに優先的に割当てることのできるタスクの
スケジューリング方法を提供することにある。
また、本発明の別の目的は、ある処理が速いプロセッサ
にその処理を含むタスクを優先的に割当てるとともに、
ある処理が不可能なプロセッサにはその処理を含むタス
クを割当てないようにするタスクのスケジューリング方
法を提供するにある。
〔課題を解決するための手段〕
上記の目的は、各タスクにそのタスクを実行できるプロ
セッサの種類を示すフラグを設けることにより達成され
、各タスクに、そのタスクを処理できる速度に応じた優
先度をプロセッサの種類ごとに示す優先度テーブルを設
けることにより達成され、また上記優先度に不能値を設
けこの値が指定された種類のプロセッサには当該タスク
の処理が不可能とすることにより達成される。
〔作 用〕
各タスクに設けるフラグは、システムに含まれるプロセ
ッサの種類の数だけのフラグ(1ビツト)から成る。各
フラグは、各プロセッサの種類に対応しており、そのタ
スクがその種類のプロセッサで実行可能かどうかを表す
。実行可能な状態にあるタスクは、どのプロセッサから
もアクセス可能な待行列に繋がれている。アイドルとな
ったプロセッサやりスケジューリングを行うプロセッサ
は、各自、その待行列の先頭からタスクのフラグを順番
に見ていき、自分のプロセッサで実行可能なタスクがあ
ったら、取り出してきて実行する。これにより、同一種
類のプロセッサ間では負荷の片よりか防がれる。
また、各タスクに設ける優先度情報テーブルは、システ
ムに含まれるプロセッサの種類の数の大きさの整数配列
とする。各配列要素は、各プロセッサの種類に対応して
おり、そのタスクがその種類のプロセッサに対して持つ
優先度を示し、そのタスクを高速に実行できるプロセッ
サについては、高い優先度を入れておく。優先度を最低
にしたときはその種類のプロセッサでは、そのタスクが
実行不可能であることを表すとする。以上のようなテー
ブルを備えた各タスクは、実行可能な状態にあるとき、
どのプロセッサからもアクセス可能な待行列に繋がれて
いる。アイドルとなったプロセッサやスケジューリング
を行うプロセッサは、各自、待行列のタスクを見ていき
、自分のプロセッサで実行可能で、優先度が最も高いタ
スクを取り出してきて実行する。
この方法により、命令セットが違うプロセッサやある処
理が特別に速いプロセッサを含むマルチプロセッサで効
率良く、タスクにプロセッサを割振ることができる。
〔実施例〕
以下、本発明の実施例について図面を参照して説明する
。第1図は本発明の一実施例を示すもので、プロセッサ
1011〜1013は、全て共有バス103を通してメ
インメモリ104にアクセス可能である。
このうちプロセッサ1.03.1.10F、2は同一の
命令セットを持つタイプ0のプロセッサ、プロセッサ】
013は別の命令セットを持つタイプ1のプロセッサと
する。このプロセッサのタイプはプロセッサ種類識別子
1021〜1023で示されている。
メインメモリ104には未処理タスク1061〜1o6
3の待行列が記憶されている。この待行列は各タスク同
志を各タスクがもつポインタ1561.1562で繋ぐ
ことにより形成されている。待行列の先頭はヘッダ10
5である。タスク1064〜1066は、現在プロセッ
サ1011〜1013で実行されている。待行列中のタ
スク1061〜1063には実行可否フラグ1071〜
1073が設けられており、各ビット位置のフラグがプ
ロセッサ種類に対応している。そしてフラグが″]ノ′
のときは対応する種類のプロセッサでそのタスクを実行
でき、00″のときは実行できない。例えば実行可否フ
ラグ1071は、タスク】061をタイプ2とタイプ1
のプロセッサでは実行できるが、タイプ0のプロセッサ
では実行できないことを示している。
第2図は、プロセッサ種類識別子1021〜1023の
内容を示しており、3ビツトより成っていて1ビツトの
みが1”になっている。このプロセッサ種類識別子10
21〜1023は、実行可否フラグ1071〜J073
との論理的な積和をとることにより、その種類のプロセ
ッサでそのタスクを実行できるか否かを調べられるよう
に構成されている。
第3図はスケジューラプログラム(以下では単にスケジ
ューラとも呼ぶ)のフローチャートを示す。このスケジ
ューラは、各プロセッサl011〜1013に設けられ
ており、当該プロセッサが実行していたタスクが終了し
たときと、スケジュールのためのタイマ割込みが入った
ときに起動される。
タイマ割込みは、各プロセッサに一定時間間隔で入る。
今プロセッサ1011にタイマ割込みが入って、スケジ
ューラが起動されたとすると、まずステップ201で自
プロセッサの種類を示す識別子1021を読み込む。読
み込んだ値は“100 ”である。次にステップ202
で待行列のヘッダ105の指すタスク1061を見る。
ステップ203では待行列にタスクがないか調べ、未処
理のタスクがなかったときはアイドル処理のステップ2
04へ移る。第1図ではタスク1061が有るからステ
ップ205でタスクの実行可否フラグとプロセッサ種類
識別子の論理的な積和Sを求める。これは両者の各ビッ
トごとのアンドをとり、それらの結果をオアしたもので
、どこかのビット同志のアンドが111 IIになれば
それは当該タスクを当該プロセッサで実行できることを
示す。今の場合、実行可否フラグ1071は” 110
 ”であり、プロセッサ種類識別子1021は”001
”だったので、各ビットごとのアンドは全て“0”従っ
てS−Oで、プロセッサ1011ではタスク1061は
実行できないことがわかる。そこでステップ207へ進
み、待行列の次のタスクを見る。続くステップ203で
タスクがないか調べ、タスク1062が見つかるとステ
ップ205で実行可否フラグ1072とプロセッサ種類
識別子1021の論理的積和Sを求める。今度は” O
O1”と” OO1”なので各ビットのアンドは“OI
I  II O”1″となり、そのオアはII 111
つまり実行可能なことがわかる。それでステップ208
でタスク1062を待行列から取り除く。このときプロ
セッサ1011で実行中であったタスク(タイマ割込み
で中断された)はステップ209で待行列の後端に接続
される。これら待行列のタスクの出2人はポインタ変更
により行われる。
そしてステップ209で待行列から取り除いたタスク1
062を実行する。
第4図は、各プロセッサによるタスクの実行例をタイム
チャートで示したものである。同図ではプロセッサ10
11〜1013による処理のタイムチャートがPO〜P
2で示されており、タイマ割込み301〜309および
タスクの終了350によりスケジューラプログラムが動
作し、タスク360〜370が各プロセッサ上で実行さ
れている様子を示している。即ち、最初はプロセッサ1
011〜1013は、それぞれタスクT3.T4.T5
を実行していたとする。プロセッサ1011にタイマ割
込み301が入ると、第3図で説明したようにこのプロ
セッサにはタスクT1がスケジュールされる。次にプロ
セッサ1012にタイマ割込み304が入ってタスクT
2が実行され、プロセッサ10】3にタイマ割込み30
7が入り、タスクTOが実行される。プロセッサ101
2では、実行されていたタスクT2の終了350により
、タスクT3が再び実行される。以下、同様に処理が続
く。
第5図は、第1図のタスク1061〜1066を実現す
るだめのタスクテーブルを表す。タスク識別子150は
タスクに付けたシリアル番号であり、信号をタスクに送
るときなどにタスクを識別するのに使われる。タスクの
状態151はタスクが現在どのような状態にあるかを表
しており、以下のようなものがある。
User Running・・・・プロセッサ上でタス
クのユーザプログラムを実行している状態。
Kernel Running・・・・プロセッサ上で
ユーザプログラム実行中にシステムコールを行ったり、
割込みが入ったりしたためシステムプログラムを実行し
ている状態。
Ready to Run・・・・タスクは実行できる
状態になっているが、まだ、プロセッサが割当てられて
いない。タスクは待行列に繋がれている。
5leep・・・・・Iloの応答待ちなど、ある事象
が起るのを待っている状態。
優先度152はタスクが実行される優先度を表す数値で
、この数値が大きいほど先にプロセッサで実行される。
プロセッサが割り当てられるのを待っているタスクの待
行列は、この優先度が大きい順に並べられる。
実行可否フラグ107は、第1図のフラグ1071〜1
073と同じものであり、本発明の実現のために設けら
れた。これは当該タスクがどの種類のプロセッサで実行
できるかの情報が入る。シグナル・フィールド153は
、タスク間でタスクの中断、終了。
エラーなどの情報を送るシグナルが入るフィールドであ
る。タイマー108は、タスクの実行時間、システムの
実行時間などの時間の情報が入るフィールドである。リ
ージョン・テーブル154は、タスクで使われるプログ
ラムやデータが記憶されているリージョンのページテー
ブルを指すポインタとリージョンの大きさの情報が入っ
ている。レジスタ退避領域155には、タスクがタイマ
ー割込みにより中断されたときなどに、中断される前の
タスクのレジスタの情報を退避する領域である。中断さ
れたタスクがスケジュールにより再開されるときには、
ここに退避してあったレジスタの情報をもとにタスクを
再開する。ポインタ156.1.57は第1図で述べた
タスクを待行列に繋ぐときのポインタである。
以上に説明した第1図の実施例では、スケジューラプロ
グラムは各プロセッサに設けられており、各プロセッサ
は自分のスケジューリングを自分で行うものとしたが、
これを負荷の最も軽い状態にあるプロセッサでスケジュ
ールするようにすることもできる。第6図はそのように
した実施例を示している。これは第1図の構成と殆ど同
じであるが、異なるのはシステム中のプロセッサの種類
を記憶した表110をメインメモリに記憶している点で
ある。表110へは、システム立ち上げ時に各プロセッ
サが自分のプロセッサ種類識別子1021〜1023を
読み出して表110に書き込み、これによってスケジュ
ーラ109は今スケジュールしようとしているプロセッ
サの種類を識別する。
第7図はこの実施例におけるスケジューラプログラムの
フローチャートであり、スケジュールのためのタイマ割
込みが入ったときにいずれか負荷の低いプロセッサで実
行される。第6図の状態、即ちプロセッサ10】2にタ
イマ割込みが入って、スケジューラプログラムが実行さ
れたとすると、まずステップ701で待行列のヘッダ1
.05の指すタスク】061を見る。ステップ702で
、この見たところにタスクがないか調べる。未処理のタ
スクがなかったときは、スケジューラプログラムは何も
せずに終了するが、今はタスク1061が有ったのでス
テップ703へ進む。ステップ703では、タスクの実
行可否フラグで実行可能となっているプロセッサの内(
これをメインメモリ104の表110を用いて調べる)
、アイドルのプロセッサがあればそのプロセッサを選び
、なければ現在処理しているタスクの処理時間を第5図
のタイマ108より調べ、それが最も長いプロセッサを
選ぶ。第6図では実行可否フラグが” 1 ] 0 ”
なので実行可能なプロセッサの梅類はタイプ1とタイプ
2である。これに該当するのはプロセッサ1.013t
、かないのでこのプロセッサがここでは選択される。ス
テップ704では選択したプロセッサが実行していたタ
スクを中断し、その状態をセーブする。選択されたプロ
セッサ1o13ではタスクT5が実行されていたから、
このタスクを中断し、中断したときのレジスタの内容を
タスクT5のタスクテーブル内のレジスタ退避領域15
5に退避する。ステップ705では、中断したタスクT
5を待行列に入れる。入れる場所はタスクテーブルに書
かれている優先順位152が大きい順に並ぶように挿入
する。最後にステップ706で選択したタスク1061
 (T6)を待行列より取り出して、選択したプロセッ
サ1.013で実行させる。
第8図は、各プロセッサによるタスクの実行例を示すタ
イムチャートで示したものである。プロセッサ1011
〜1013による処理のタイムチャートがPO〜P2で
示されており、スケジューラプログラムSの終了330
〜332の時にコンテキストスイッチ340〜342に
よって実行タスクが切り換えられる。
最初、プロセッサ1011〜1013はそれぞれタスク
T3、スケジューラプログラムS、タスクT5をそれぞ
れ実行していたとする。第7図を用いて説明したように
、スケジューラSはプロセッサ■013で実行していた
タスクT5をコンテキストスイッチ342により中断さ
せ、タスクTOを実行させる。スケジューラSが終了す
るとプロセッサ1012は以前に実行していたタスクT
4の実行に戻る。一定時間が過ぎると再びタイマ割込み
310が入り、スケジューラSが実行される。このスケ
ジューラは、第6図のタスクT1を待行列より取り出し
てくる。
タスクT1の実行可否フラグ1072は“001”なの
でタイプOのプロセッサで実行できる。これはプロセッ
サ1011,1.012であるが、どちらのプロセッサ
もタスクを実行中なので現在実行しているタスクの実行
時間の長い方のプロセッサを選択する。
第8図ではプロセッサ1011の方が長かったとして、
このプロセッサ1011でタスクTIを実行させている
。以下同様に一定時間間隔でタイマ割込みにより、いず
れかのプロセッサでスケジューラが実行され、待行列の
タスクがスケジュールされていく。
第9図は本発明の別の実施例を示す図である。
本実施例では各プロセッサ1011〜1013は、その
識別子1021〜1023に示されているように、構成
が異なっており、命令セットが一部異なっている。メイ
ンメモリ104内の待行列に繋がれたタスク1061〜
1063の各々には、各種類のプロセッサがタスクに対
してどのような優先度を持つかを記憶したテーブル10
81〜1083が設けられている。テーブル1081の
最初の行は、プロセッサ種類識別子001を持つタイプ
0のプロセッサがタスク1061に対して0の優先度を
持っていること、すなわち、タイプ0のプロセッサは、
このタスクを実行できないことを表している。以下の行
はタイプ]−のプロセッサが10の優先度をもち、タイ
プ2のプロセッサは20の優先度を持つことを表す。
第10図は第9図の実施例で使用するスケジューラプロ
グラムのフローチャートである。このスケジュールプロ
グラムは第3図のスケジューラプログラムと同様に、実
行していたタスクが終了したときと、スケジュールのた
めのタイマー割込みが入ったときに実行される。タイマ
ー割込みは、各プロセッサに一定時間間隔で入る。第9
図の状態でプロセッサ1013にタイマー割込みが入っ
て、スケジューラプログラムが実行される場合を説明す
る。まず、ステップ1001で自分のプロセッサのプロ
セッサ種類識別子1021を読込む。読込んだ値は01
0である。次にステップ1002で待行列のへラダ10
5にタスクが接続されているか調べている。タスクが接
続されていない場合は、処理すべきタスクが無いことを
示しているのでアイ1くル処理1003を行う。ここで
はタスク1061が接続されているのでYeSの方に進
み、ステップ1004で待行列に接続されているタスク
のうち、プロセッサ種類識別子に対応した優先度が最大
のタスクを選択する。第9図ではタスク1061〜10
63が待行列に接続されており、プロセッサ種類識別子
010に対応した優先度は、それぞれ10.0.20で
ある。よって、優先度20を持つタスク1063が選択
される。選択されたタスクの優先度は0ではないので、
ステップ1005からステップ1006へ進む(もし1
選択されたタスクの優先度がOだった場合は、自プロセ
ッサの種類では実行できるタスクがないということなの
で、アイドル処理1003を行う)。ステップ1006
ではタスク1063を待行列から取り除く。即ちポイン
タ1562をなくする。最後にステップto 07でタ
スク1063を実行する。
第1j図は、第9図の各タスクを実現するためのタスク
テーブル106を示す。第5図のテーブルと比較して異
なるのは、第5図の実行可否フラグ107がなくなり、
第5図の優先度152がプロセッサ種類ごとの優先度1
58になった以外は同じである。
実行可否フラグで表現していたプロセッサの種類ごとに
よるタスク実行の可否は、優先度158が0か否かで表
現している。
第12図は本発明の別の実施例を示す図である。
第9図の実施例では、各プロセッサがスケジューラプロ
グラムを持ち、自プロセッサのスケジューリングを行う
としたが、本実施例ではプロセッサの種類を記憶した表
110をメインメモ1月04に記憶しておき、これを用
いていずれかのプロセッサがそのとき必要なスケジュー
リングを行う。このため、システム立ち上げ時に各プロ
セッサが自分のプロセッサ種類識別子1021〜102
3を読み出して表110に書き込んでおく。
第13図は本実施例におけるスケジューラのフローチャ
ートを示す。スケジューラプログラムは、スケジュール
のためのタイマー割込みが入ったときにいずれか負荷の
低いプロセッサで実行される。
そこで、第12図のように、プロセッサ1011にタイ
マー割込みが入って、ここでスケジューラプログラム1
09が実行された場合を説明する。まず、ステップ13
0Iで待行列のヘッダ1.05の指すタスク1061を
見る。ステップ1302でタスクがないか調べ、未処理
のタスクがなかったときは、スケジューラプログラムは
なにもせずに終了する。ここでは、タスク1061が有
ったのでステップ13o3へ進み、タスク106Iの優
先度テーブル1081を見て、優先度が最も高くなって
いるプロセッサ種類を選択する。
ここでは優先度20をもつプロセッサ種類識別子100
(タイプ2)のプロセッサが選択される。ステップ13
04では選択されたプロセッサ種類のプロセッサを表1
10より調べ、プロセッサ1012がその種類のプロセ
ッサであることがわかる。ここではその種類のプロセッ
サが1つしがながったが、複数あったときは現在そのプ
ロセッサが実行しているタスクの実行時間が最も長いプ
ロセッサを選択する。ステップ1305では選択したプ
ロセッサが実行していたタスクを中断し、その状態をセ
ーブする。選択されたプロセッサ1012ではタスクT
4が実行されているから、このタスクを中断し、中断し
たときのレジスタの内容をタスク1065 (T4)の
タスクテーブルのレジスタ退避領域155 (第11図
)に退避する。ステップ1306では、中断したタスク
T4を待行列の最後に入れる。最後にステップ1307
で選択したタスク1061を待行列より取り出して、選
択したプロセッサ1012で実行させる。
第14図は本発明の別の実施例を示す図である。
本実施例では3個のプロセッサ1011〜1013がネ
ットワーク300に接続され、各々はローカルメモリ3
101〜3103を有している。第1図、第6図、第9
図、第12図の実施例では、各プロセッサ全てからアク
セス可能なメインメモリ104に待行列を記憶させてい
たが、本実施例では待行列はマスターとなるプロセッサ
1011のローカルメモリ3101に記憶されている。
このプロセッサ1011以外のプロセッサがスケジュー
リングのために待行列にアクセスする必要があるときは
、ネットワーク300とプロセッサ10月を通してロー
カルメモリ3101にアクセスする。実行可能か否か、
および優先度に基づくスケジューリングの方法は既に述
べた実施例と同じである。
第15図は本発明の別の実施例を示す図である。
本実施例は、第14図の実施例の変形例であり、マスタ
ーとなるプロセッサがなく、すべてのローカルメモリに
同一の待行列が記憶されている。即ち各ローカルメモリ
3101〜3103のヘッダ1051〜1053には、
同一のタスク1061.1062が繋がれており、各プ
ロセッサは、自分のローカルメモリの待行列を見てスケ
ジューリングする。待行列の更新は、他の全てのプロセ
ッサに許可を得てから、自分のローカルメモリ内で行う
とともに、各自のローカルメモリでも更新するよう、他
プロセッサに指示するメツセージをネットワーク300
に放送する。
第16図は、本発明の別の実施例を示す図であり、第1
5図の実施例の各ローカルメモリ3101〜3103を
1つの仮想共有メモリ320としてアクセスする構成と
したものである。どのプロセッサからでも任意のローカ
ルメモリへアクセスでき、スケジューリングに用いる待
行列もこの仮想共有メモリに記憶させる。
第17図は仮想共有メモリ320の論理アドレスと物理
アドレスのマツピングの例を示す。仮想共有メモリの論
理アドレス空間500の各アドレス領域がローカルメモ
リ3101〜3103の物理アドレス空間5101〜5
103に対応づけられる。この対応づけを行うためのア
ドレス変換テーブルが第8図に示されており、例えばあ
るプロセッサが論理アドレスOをもつページをアクセス
したとする。このページのプロセッサ番号IDOが自プ
ロセッサの番号であれば、自分のローカルメモリ内の物
理アドレス0のページより読み出す。プロセッサ番号が
異なる場合は、アクセスしたプロセッサは1番号IDO
をもつプロセッサに物理アドレス0のページを転送する
ように、ネットワーク300を通してメツセージを送る
。メツセージを受けたプロセッサは要求されたページを
メツセージにして要求元に送る。この実施例においても
、タスクごとの実行可否あるいは優先度にもとづく制御
は先の実施例と同様である。
〔発明の効果〕
本発明によれば、アーキテクチャが異なり、命令セット
も一部異なるプロセッサよりなるマルチプロセッサがあ
るとき、ユーザは、タスクをどのプロセッサで実行させ
るかを意識する必要がないのでタスクの管理効率が大幅
に向上する。
また、本発明によれば、命令セットは共通であるが、ベ
クトルプロセッサなどにより、ある種の処理が強化しで
あるプロセッサを含むマルチプロセッサで、タスクの処
理内容により最適なプロセッサを割当てるスケジューリ
ングが提供されるのでシステムのスループットが向上す
る。
【図面の簡単な説明】
第1図は本発明の一実施例を示す図、第2図はシステム
を構成するプロセッサの種類とプロセッサ種類識別子の
対応を示す図、第3図は第1図の実施例で用いるスケジ
ューラのフローチャート、第4図は第1図の実施例の動
作例を示すタイムチャート、第5図は第1−図の実施例
におけるタスクテーブルの構成例を示す図、第6図、第
7図および第8図は本発明の別の実施例を示す図、用い
るスケジューラのフローチャート、および動作例を示す
タイムチャート、第9図、第1()図および第11図は
本発明の別の実施例を示す図、用いるスケジューラのフ
ローチャート、およびタスクテーブルの構成例を示す図
、第12回および第13図は本発明の別の実施例で示す
図および用いるスケジューラのフローチャート、第14
図及び第15図はそれぞれ各プロセッサがローカルメモ
リを有してネットワークで結合されたシステムでの本発
明の実施例を示す図、第16図は各プロセッサが有する
ローカルメモリを1つの仮想メモリとしてアクセスする
ようにしたシステムでの本発明の実施例を示す図、第1
7図および第18図は第1b図の実施例における論理空
間と物理空間の対応っけの説明図および上記2つの空間
の対応っけを行うアドレス変換テーブルの説明図である
。 10]1−10]3−・・プo セラ+j、1021〜
1023−プロセッサ種類識別子、1o;3・・・共有
バス、104・・・メインメモリ、105・・・ヘッダ
、1061〜1o66・・・タスク、1071〜107
3・・・実行可否フラグ、1081〜1o83・・・優
先度テーブル、]、09・・・スケジューラプログラム
、110・・・プロセッサ種類識別子表、3101〜3
1o3・・・ローカルメモリ、3zO・・・仮想共有メ
モリ。 代理人弁理士  秋 本 正 実 ]n]] 第 図 1G]3 第 図 第 図 第 図

Claims (1)

  1. 【特許請求の範囲】 1、全てが同一構成ではない複数のプロセッサと該プロ
    セッサの各々によりアクセス可能な主メモリが共有バス
    で接続されて成るマルチプロセッサシステムでのタスク
    のスケジューリング方法において、各プロセッサに自プ
    ロセッサのスケジュール手段と自プロセッサの種別を示
    す識別子の認識手段とを有せしめ、主メモリに未処理タ
    スクの待行列を格納し、かつ各タスクには自タスクを実
    行可能なプロセッサの種別を示す実行可否フラグを含む
    タスクテーブルを設けるとともに、いずれかのプロセッ
    サにスケジューリングが必要となった場合に、当該プロ
    セッサのスケジュール手段は、上記主メモリの待行列に
    繋がれたタスクを順次読み出し、自プロセッサの識別子
    と上記読み出したタスクの上記実行可否フラグとの比較
    から実行可能と判断した最初のタスクを実行タスクとす
    ることを特徴とするタスクのスケージューリング方法。 2、全てが同一構成ではない複数のプロセッサと該プロ
    セッサの各々によりアクセス可能な主メモリが共有バス
    で接続されて成るマルチプロセッサシステムでのタスク
    のスケジューリング方法において、いくつかのプロセッ
    サにスケジュール手段を有せしめ、主メモリに未処理タ
    スクの待行列と各プロセッサの種別を示す識別子表とを
    格納し、かつ各タスクには自タスクを実行可能なプロセ
    ッサの種別を示す実行可否フラグを含むタスクテーブル
    を設けるとともに、いずれかのプロセッサにスケジュー
    リングが必要となった場合に、上記スケジュール手段を
    有するプロセッサの1つが、タスク処理中であればその
    処理を中断してスケジュール手段を起動し、上記主メモ
    リの待行列に繋がれたタスクを順次読み出し、該読み出
    したタスクの上記実行可否フラグと上記スケジューリン
    グが必要なプロセッサの上記識別子表から読み出した識
    別子との比較から実行可能と判断した最初のタスクを実
    行タスクとすることを特徴とするタスクのスケジューリ
    ング方法。 3、全てが同一構成ではない複数のプロセッサと該プロ
    セッサの各々によりアクセス可能な主メモリが共有バス
    で接続されて成るマルチプロセッサシステムでのタスク
    のスケジューリング方法において、各プロセッサに自プ
    ロセッサのスケジュール手段と自プロセッサの種別を示
    す識別子の認識手段とを有せしめ、主メモリに未処理タ
    スクの待行列を格納し、かつ各タスクには自タスクを実
    行する上での各プロセッサ種別ごとの優先度を示す優先
    度テーブルを含むタスクテーブルを設けるとともに、い
    ずれかのプロセッサにスケジューリングが必要となった
    場合に、当該プロセッサのスケジュール手段は、上記主
    メモリの待行列に繋がれたタスクを順次読み出し、自プ
    ロセッサの識別子に対して最も優先度の高いタスクを各
    タスクの上記優先度テーブルを参照して選び出し、該選
    び出したタスクを実行タスクとすることを特徴とするタ
    スクのスケジューリング方法。 4、全てが同一構成ではない複数のプロセッサと該プロ
    セッサの各々によりアクセス可能な主メモリが共有バス
    で接続されて成るマルチプロセッサシステムでのタスク
    のスケジューリング方法において、いくつかのプロセッ
    サにスケジュール手段を有せしめ、主メモリに未処理タ
    スクの待行列と各プロセッサの種別を示す識別子表とを
    格納し、かつ各タスクには自タスクを実行する上での各
    プロセッサ種別ごとの優先度を示す優先度テーブルを含
    むタスクテーブルを設けるとともに、いずれかのプロセ
    ッサにスケジューリングが必要となった場合に、上記ス
    ケジュール手段を有するプロセッサの1つが、タスク処
    理中であればその処理を中断してスケジュール手段を起
    動し、上記主メモリの待行列に繋がれたタスクを順次読
    み出し、上記スケジューリングが必要なプロセッサの識
    別子に対して最も優先度の高いタスクを各タスクの上記
    優先度テーブルを参照して選び出し、該選び出したタス
    クを実行タスクとすることを特徴とするタスクのスケジ
    ューリング方法。 5、前記優先度に実行不能を示す不能値を設け、あるタ
    スクに対して上記不能値が指定された種別のプロセッサ
    には当該タスクを割り当てないことを特徴とする請求項
    3または4記載のタスクのスケジューリング方法。 6、前記主メモリに代って各プロセッサ対応にローカル
    メモリを設け、前記共有バスに代って各プロセッサ間を
    結合するネットワークを設けるとともに、前記待行列は
    マスターとして指定された1つのプロセッサ対応のロー
    カルメモリに格納し、上記待行列への他プロセッサから
    のアクセスを上記ネットワークを介して行うことを特徴
    とする請求項1、2、3、4または5記載のタスクのス
    ケジューリング方法。 7、前記主メモリに代って各プロセッサ対応にローカル
    メモリを設け、前記共有バスに代って各プロセッサ間を
    結合するネットワークを設けるとともに、前記待行列は
    すべてのプロセッサ対応のローカルメモリに格納し、待
    行列の更新時には上記ネットワークを介してすべてのロ
    ーカルメモリで行うようにしたことを特徴とする請求項
    1、2、3、4または5記載のタスクのスケジューリン
    グ方法。 8、前記主メモリに代って各プロセッサ対応にローカル
    メモリを設け、前記共有バスに代って各プロセッサ間を
    結合するネットワークを設けるとともに、すべてのロー
    カルメモリの物理空間アドレスを論理空間のアドレスに
    対応づけるためのアドレス変換手段を各プロセッサに設
    けることにより単一の仮想メモリを形成し、該仮想メモ
    リを各プロセッサの共有メモリとしたことを特徴とする
    請求項1、2、3、4または5記載のタスクのスケジュ
    ーリング方法。
JP6221689A 1989-03-13 1989-03-16 タスクのスケジューリング方法 Pending JPH02242434A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6221689A JPH02242434A (ja) 1989-03-16 1989-03-16 タスクのスケジューリング方法
DE4007998A DE4007998A1 (de) 1989-03-13 1990-03-13 Prozess-planungsverfahren und mehrfach-rechner

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6221689A JPH02242434A (ja) 1989-03-16 1989-03-16 タスクのスケジューリング方法

Publications (1)

Publication Number Publication Date
JPH02242434A true JPH02242434A (ja) 1990-09-26

Family

ID=13193733

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6221689A Pending JPH02242434A (ja) 1989-03-13 1989-03-16 タスクのスケジューリング方法

Country Status (1)

Country Link
JP (1) JPH02242434A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216844A (ja) * 1991-07-17 1993-08-27 Internatl Business Mach Corp <Ibm> マルチプロセッサデータ処理システムにおける改良されたタスク分散のための方法および装置
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
WO2007020739A1 (ja) * 2005-08-15 2007-02-22 Sony Computer Entertainment Inc. スケジューリング方法およびスケジューリング装置
JP2007257280A (ja) * 2006-03-23 2007-10-04 Yokogawa Electric Corp 分散処理システムおよび分散処理方法
US7356666B2 (en) 2003-06-27 2008-04-08 Kabushiki Kaisha Toshiba Local memory management system with plural processors
US20110161975A1 (en) * 2009-12-30 2011-06-30 Ibm Corporation Reducing cross queue synchronization on systems with low memory latency across distributed processing nodes
JP2012252413A (ja) * 2011-05-31 2012-12-20 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム
US9038079B2 (en) 2009-12-30 2015-05-19 International Business Machines Corporation Reducing cross queue synchronization on systems with low memory latency across distributed processing nodes

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216844A (ja) * 1991-07-17 1993-08-27 Internatl Business Mach Corp <Ibm> マルチプロセッサデータ処理システムにおける改良されたタスク分散のための方法および装置
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US7356666B2 (en) 2003-06-27 2008-04-08 Kabushiki Kaisha Toshiba Local memory management system with plural processors
US7739457B2 (en) 2003-06-27 2010-06-15 Kabushiki Kaisha Toshiba Local memory management system with plural processors
WO2007020739A1 (ja) * 2005-08-15 2007-02-22 Sony Computer Entertainment Inc. スケジューリング方法およびスケジューリング装置
JP2007052511A (ja) * 2005-08-15 2007-03-01 Sony Computer Entertainment Inc スケジューリング方法およびスケジューリング装置
US8375390B2 (en) 2005-08-15 2013-02-12 Sony Computer Entertainment Inc. Scheduling method and scheduling apparatus
JP2007257280A (ja) * 2006-03-23 2007-10-04 Yokogawa Electric Corp 分散処理システムおよび分散処理方法
US20110161975A1 (en) * 2009-12-30 2011-06-30 Ibm Corporation Reducing cross queue synchronization on systems with low memory latency across distributed processing nodes
US8819690B2 (en) * 2009-12-30 2014-08-26 International Business Machines Corporation System for reducing data transfer latency to a global queue by generating bit mask to identify selected processing nodes/units in multi-node data processing system
US9038079B2 (en) 2009-12-30 2015-05-19 International Business Machines Corporation Reducing cross queue synchronization on systems with low memory latency across distributed processing nodes
JP2012252413A (ja) * 2011-05-31 2012-12-20 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム

Similar Documents

Publication Publication Date Title
US12131186B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US6330661B1 (en) Reducing inherited logical to physical register mapping information between tasks in multithread system using register group identifier
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
US5010482A (en) Multi-event mechanism for queuing happened events for a large data processing system
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
US8387061B2 (en) Logic for synchronizing multiple tasks at multiple locations in an instruction stream
US20050066302A1 (en) Method and system for minimizing thread switching overheads and memory usage in multithreaded processing using floating threads
JP2003030050A (ja) マルチスレッド実行方法及び並列プロセッサシステム
US4851992A (en) Register/saving/restoring system for saving and restoring data in a register of a slave processor
US20040148606A1 (en) Multi-thread computer
JP2009238197A (ja) 共有メモリの制御回路、制御方法及び制御プログラム
JPH02242434A (ja) タスクのスケジューリング方法
JPS63310051A (ja) プログラム入出力命令を含む入出力プロセスの実行方法および装置
JP3546694B2 (ja) マルチスレッド計算機システム及びマルチスレッド実行制御方法
CN116594765B (zh) 一种指令处理方法、指令处理电路、处理器及电子设备
US20060059489A1 (en) Parallel processing system, interconnection network, node and network control method, and program therefor
US7437535B1 (en) Method and apparatus for issuing a command to store an instruction and load resultant data in a microcontroller
CN119248434A (zh) 基于配置队列数据进行任务处理的方法及系统
EP0953905B1 (en) Method and apparatus for switching tasks
JPH05151064A (ja) 密結合マルチプロセツサシステム
JPH07311686A (ja) コンピュータシステム、およびその中でシステム管理割込を発生し処理するための方法
CN114035847A (zh) 用于并行执行核心程序的方法和装置
JP2579008B2 (ja) 時分割マルチタスク実行装置
JPS6097440A (ja) 仮想多重プロセツサ装置
KR19990058732A (ko) 하드웨어 실시간 멀티태스킹 장치 및 방법