(57)【要約】【課題】マルチプロセッサシステムにおいても各プロセッサが正常に機能することを検証する必要が有るため、単体プロセッサ同様に全てのプロセッサで決められた機能検証プログラムを決められた手順で実行確認しなければならず、プロセッサの数に比例して機能検証プログラムの実行時間が増加する。【解決手段】プロセッサの機能検証は決められた機能検証プログラムを決められた手順で実行するが、外部記憶装置からの同一検証プログラムの読込み時間を無くし、機能検証プログラムの検証対象が各プロセッサ内機能でマルチプロセッサシステムの共有機能が対象でない機能検証プログラムを各プロセッサで並行実行させ、各プロセッサの遊び時間を最小限にすることで時間の増加を最小にする。【選択図】図１
2007026235.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を共有するマルチプロセッサシステムにおける機能試験の実行スケジュールリング方法であって、スケジューリングプログラムを特定のプロセッサに固定すること無く、その時に機能試験を実行していないプロセッサ上で実行し、機能検証プログラムを予め決められた実行手順に従って実行可能な全てのプロセッサで並行して実行させることを特徴とする検証プログラム実行方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムを構成する各プロセッサでのプログラム実行方式に関する。
【背景技術】
【０００２】
マルチプロセッサシステムを構成する各プロセッサの機能検証はプロセッサ単体及びマルチプロセッサに係る機能に注目して作成された複数の機能検証プログラムを各プロセッサ上で決められた手順で実行し検証を行っている。このマルチプロセッサシステムを構成する各プロセッサの機能検証実行過程において従来は、プロセッサ毎に決められた手順で複数の機能検証プログラムを実行し、プロセッサの数だけ同じ手順を繰り返して実行することで行っている。
【０００３】
【特許文献１】特許公開平５−２８２２６８
【発明の開示】
【発明が解決しようとする課題】
【０００４】
単体プロセッサの機能検証は決められた数の機能検証プログラムを決められた手順で実行することで検証する。またマルチプロセッサシステムにおいても各プロセッサが正常に機能することを検証する必要が有るため、単体プロセッサ同様に全てのプロセッサで決められた機能検証プログラムを決められた手順で実行確認しなければならず、プロセッサの数に比例して機能検証プログラムの実行時間が増加するが、この増加時間を最小限にする。
【課題を解決するための手段】
【０００５】
プロセッサの機能検証は決められた機能検証プログラムを決められた手順で実行するが、外部記憶装置からの同一検証プログラムの読込み時間を無くし、機能検証プログラムの検証対象が各プロセッサ内機能でマルチプロセッサシステムの共有機能が対象でない機能検証プログラムを各プロセッサで並行実行させ、各プロセッサの遊び時間を最小限にすることで時間の増加を最小にすることが出来る。
【発明の効果】
【０００６】
本発明により、マルチプロセッサシステムの機能検証はプロセッサ数増による検証時間の増加が抑えられ、機能検証プログラムの実行時間短縮が行える。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照してマルチプロセッサシステムにおける検証プログラム実行方式について説明する。
【０００８】
図１は、マルチプロセッサシステムにおける検証プログラム実行方式での構成図である。実行スケジューラ101が検証手順リストを手順ファイル102から読込み記述されている手順に従って主メモリ105内に検証プログラムの実行領域を割当てた後に検証プログラムを実行待ちタスクキュー104に実行プロセッサを指定し、プロセッサの数だけ登録する。実行待ちタスクキュー104は各プロセッサ106〜108上で実行しているタスクスケジューラにより取出されプログラムライブラリ103から検証プログラムが割当てられた主メモリ105内プログラム実行領域にロードし実行する。検証プログラムをロードする時にロードプログラムバッファ109に同じ検証プログラムが有ればロードプログラムバッファ109から実行領域にコピーすることで外部記憶装置103からの読込時間を無くす。プロセッサ106〜108は主メモリを共有しているが独立して動作しているため検証プログラムは並行して実行される。
【０００９】
図２は、各プロセッサでの状態遷移を示す。各プロセッサは検証プログラムを実行していない時はWAIT状態201にある。WAIT状態201は手順実行スケジューリングプログラムの起動オペレーション割り込み及び他のプロセッサからの外部割込み要求で解除されタスクスケジューラ202を実行する。タスクスケジューラ202は実行待ちキューに自プロセッサ番号と一致するタスクを取出し実行203する。実行203が完了した時点でタスクスケジューラ202に戻りタスクスケジューラ202は実行待ちキューが空か自プロセッサ番号に一致するタスクが無ければWAIT状態201に戻る。
【００１０】
図３は、マルチプロセッサシステムを構成する各プロセッサ上の実行タスクスケジューラの動作フローチャートを示し、実行待ちキューから自プロセッサで実行可能なタスクを選択実行する働きを持つ。実行待ちキュー313はプロセッサが共有する主メモリ内に有り、実行待ちタスクが実行するプロセッサ情報を持っている。実行待ちキューのロック(301)は実行待ちキュー313がマルチプロセッサシステムを構成する各プロセッサが同時に参照・更新するのを防ぐために行う。実行待ちキューエントリ313の先頭aから最終nまで順次参照する為の実行待ちキュー参照ポインタ設定(302)を行う。ポインタが示す実行待ちキューエントリのプロセッサ固定のチェック(30３)を行いプロセッサ固定であれば自プロセッサ番号であるかチェック(304)し、一致しなければ実行待ちキュー実行待ちキュー参照ポインタを更新(305)する。実行待ちキュー313がエンド(306)でなければ実行待ちキューエントリのプロセッサ固定チェック(303)へ戻る。プロセッサ固定のチェック(303)においてプロセッサ固定でなく、プロセッサ番号が自プロセッサで実行可能タスクと判断し、また自プロセッサ番号であるかチェック(304)において自プロセッサ番号と一致するときは自プロセッサで実行可能タスクと判断し実行待ちキュー参照ポインタが示す実行待ちキューエントリを実行待ちキューから削除(308)し、実行待ちキューのロックを解除(309)する。実行待ちキューから削除したタスクを実行(310)する。実行結果をリターン情報でチェック(311)し、タスク終了であれば実行待ちキューエントリ-の完了報告アドレスにタスク実行完了表示を設定(312)し、次に実行するタスクが有るか実行待ちキューのチェックに戻る。実行待ちキューエントリのプロセッサ番号のチェック(304)で自プロセッサ番号と一致しなければ実行待ちキュー参照ポインタ更新(305)を行い、キューENDチェック(30)を行う。キューENDでなければプロセッサ固定チェック(303)に戻る。キューENDであれば実行待ちキューのロックを解除(307)し、実行タスクスケジューラをWAIT状態にする。
【００１１】
図４は、手順実行ジューリングの動作フローチャートを示し、機能検証プログラムの実行手順リストに従って検証プログラム実行のスケジューリングを目的とする。手順実行スケジューリングプログラムはマルチプロセッサシステム全体で１つのタスクとして動作し、並行して実行することはなく常に何れか一つのプロセッサ上でのみ実行する。またこの実行手順スケジューリングプログラムが参照する手順リスト502と参照・更新するプロセッサ状態テーブル503を図５に示す。
【００１２】
最初にプロセッサ機能検証プログラムの実行手順ファイルを詠込み(401)を行い、プロセッサ状態テーブルの状態表示を初期化(402)する。読込んだ実行手順リスト502より手順ステップを取出し(403)、検証プログラム502aのロードアドレス502bまたは使用メモリサイズ502cよりロードアドレス指定により並行実行の可否を判断する(404)。ロードアドレス502bが指定されている時は主メモリを各プロセッサが共有している為に並行実行は不可とし、またメモリサイズ502cがMAXの時は主メモリを最大限に使用する為並行実行不可とする。並行実行可否チェック(404)で並行実行が可能であればプロセッサを指定して検証プログラムの実行指示を行い(407)、全プロセッサへの指示が完了するまで(409)実行指示を行い(407)、同じ検証プログラムを各プロセッサ上で並行して同時に実行させる。並行実行が不可の時はプログラムの実行指示(405)後に検証プログラムの完了報告があるまで待つ(406)。完了報告を受けた後は全プロセッサでの実行が完了するまで繰り返し(409)実行する。全てのプロセッサへの実行指示が完了後プロセッサ状態テーブル503内の状態が全て完了状態になるまで待つ(410)。以上の動作を手順リスト502の全てのステップが完了するまで繰返し(411)実行する。全ての手順が完了したときは手順実行助ジューリングプログラムを終了する。
【００１３】
図５は、検証プログラムの実行手順リストとプロセッサ状態テーブルを示す。実行手順ファイル501には検証プログラムの実行順に検証プログラム名称502a、検証プログラムの実行条件として主メモリへのローディングアドレス502bを限定するプログラムはアドレスの指定と、使用する主メモリサイズを記述する実行手順リスト502を格納する。プロセッサ状態テーブル503は主メモリ内に作成しマルチプロセッサシステムを構成する全プロセッサ番号503aと各プロセッサでの検証プログラムの実行状況としてプロセッサの状態503bを示す情報を格納している。
【００１４】
図６は、手順実行スケジューリングプログラムのサブルーチンで、検証プログラムの実行タスクを実行待ちキューに登録することで検証プログラムの実行指示を行うフローを示す。実行指示を行う検証プログラムのプログラム名称、主メモリのロードアドレス及びサイズと実行プロセッサ固定指定でプロセッサ番号とプロセッサ状態テーブル503内の対応するプロセッサ番号のプロセッサ状態５０３bバイトを終了報告領域アドレスとして持つ実行待ちキュー313を登録(601)する。次に手順実行スケジューリングプログラムタスクを他の検証プログラムを実行していないプロセッサに移動する為に実行待ちタスクキューにプロセッサ固定無しで登録(602)後タスクスケジューラに戻る(603)。手順実行スケジューリングプログラムタスクの実行待ちキューは検証プログラムを実行していないかまたは実行の完了したプロセッサで取出され実行される(604)ことでプロセッサの移動を完了し、手順実行スケジューリングプログラムへ戻る。
【００１５】
図７は、実行待ちキュー登録サブルーチンのフローチャートを示す。実行待ちキューの更新が他のプロセッサと競合することが無い様に実行待ちキューをロック(701)する。ロックが完了後、新たな実行待ちキューエントリを確保し、実行プロセッサ番号、プロセッサ固定の有無、終了報告領域アドレスを設定した後、実行待ちキューの最後のキューエレメントに接続する(702)。キューエレメントの接続完了後、実行待ちキューのロックを解除(703)し、実行待ちキューの登録状態変更をプロセッサ間通信用命令で他のプロセッサに通知(704)し、他プロセッサの実行タスクスケジューラに外部割り込みで起動後、サブルーチンを終了し戻る。
【００１６】
図８は、実行タスクスケジューラから呼び出されるタスクの実行サブルーチンのフローチャートを示す。実行するタスクが検証プログラムか実行スケジュールタスクかの識別(801)を行い、実行スケジュールタスクの時は実行タスクスケジュールタスク実行(802)後、リターン情報にタスクの継続(805)を設定し、サブルーチンを終了して戻る。検証プログラムを実行するタスクの時は検証プログラムを主メモリにロード(803)後、検証プログラムを実行(804)する。検証プログラムの終了後はリーターン情報にタスクの終了を設定(806)し、サブルーチンを終了して戻る。
【００１７】
図９は、検証プログラムを主メモリにロードするサブルーチンのフローチャートをし、同一検証プログラムを続けてロードする時はロードプログラムバッファからコピーすることで外部記憶装置からの読込時間を無くす。
ロードサブルーチンはタスクの実行サブルーチンより呼出され実行し、主メモリに検証プログラムをロードする為の領域を確保(901)し、ロードする検証プログラムが既にバッファ1002（図１０）内に有るかチェック(902)し、バッファ内に有ればバッファより確保した主メモリにコピー(907)後、バッファ内コピー元ヘッダ情報の参照時間を更新(906)する。もしバッファ内にプログラムデータが無ければ外部記憶装置より読込む(903)。読込んだ後バッファ内にコピー格納する為の空きスペースが有るかチェック(904)し、格納する為のスペースが無ければバッファ内ヘッダ情報1002aから1002nなかでのプログラムデータ参照時間が最も古いプログラムデータを削除(905)後、バッファの先頭より残ったプログラムを詰め直す(906)。新たに読込んだプログラムを格納するのに十分なプペースが確保出来るまで904から906を繰返し実行し、バッファ内の空きスペースに読込んだプログラムデータをバッファ内にコピー(908)後、プログラム参照時間を格納(909)しサブルーチンを終了する。
【００１８】
図１０は、主メモリ内に持つロードプログラムバッファを示し、プログラムのロードサブルーチン（図９）が参照・更新する。ロードプログラムバッファ1002はバッファ制御テーブル1001が主メモリ上のアドレス、サイズ及びバッファ内の空きスペースアドレスを制御する。主メモリにロードした検証プログラムはロードバッファ1002内にヘッダ情報を付加したプログラムデータとして1002aから1002nで示す形式で格納する。
【００１９】
尚、上記形態は以下のように捉えることが可能である。
（１）記憶装置を共有するマルチプロセッサシステムにおけるタスクの実行スケジュールリング方法であって、主記憶装置内には各プロセッサが共通に参照可能な実行待ちタスクキューを持ち、各タスクキューエントリには実行可能プロセッサを特定する為の情報を持つ。タスクスケジュールプログラムは各プロセッサで並行実行し、タスクの実行プロセッサは実行対象のプロセッサのタスクスケジュールプログラムが自プロセッサ番号持つタスク又はプロセッサ番号の無いタスクを取り込むことでタスクのプロセッサ間移動を行うことを特徴とするタスクスケジューリング方式。
（２）外部記憶媒体から主記憶装置ロードするプログラムであって、プログラムを外部記憶媒体から主記憶装置ロードする時に読込んだプログラムデータを記憶装置内のバッファ領域に蓄え、次にプログラムをロードする時、バッファ内に同一プログラムが有ればプログラムデータをバッファから取出すことでロード時間を短縮することを特徴とするプログラム。
【図面の簡単な説明】
【００２０】
【図１】マルチプロセッサシステムにおける検証プログラム実行方式の構成図を示す。
【図２】各プロセッサでのタスクの状態遷移を示す。
【図３】各プロセッサ上で実行するタスクスケジューラのフローチャートを示す。
【図４】検証プログラムの実行をスケジューリングするプログラムのフローチャートを示し、１つのプロセッサ上で実行し複数のプロセッサ上で並行して実行することはないが、実行プロセッサを固定しない。
【図５】検証プログラムの名前と実行条件を実行順に記述した実行手順リストと各プロセッサの状態を表すプロセッサ状態テーブルを示す。
【図６】検証プログラムの実行タスクを登録する実行指示サブルーチンを示す。
【図７】実行待ちキューにタスクを登録する実行待ちキュー登録サブルーチンのフローチャートを示す。
【図８】実行待ちキューから取出したタスクを実行するタスクの実行サブルーチンのフローチャートを示す。
【図９】検証プログラムを主メモリの読込むと同時にプログラムデータをバッファリングを行う為のプログラムのロードサブルーチンフローチャートを示す。
【図１０】プログラムデータのバッファリング形式を示す。
【符号の説明】
【００２１】
a〜n  実行待ちキューエレメント
502a  検証プログラム名称
502b  主メモリでの検証プログラム実行アドレス
502c  検証プログラムが必要とする主メモリサイズ
503a  プロセッサ状態テーブルのプロセッサ番号
503b  プロセッサ状態テーブルの状態表示バイト
1001a〜1001n  ロードプログラムバッファ内のプログラムデータ形式
【図１】
2007026235.tif 000003
【図２】
2007026235.tif 000004
【図３】
2007026235.tif 000005
【図４】
2007026235.tif 000006
【図５】
2007026235.tif 000007
【図６】
2007026235.tif 000008
【図７】
2007026235.tif 000009
【図８】
2007026235.tif 000010
【図９】
2007026235.tif 000011
【図１０】
2007026235.tif 000012