JPS60163133A - マルチ・タスク制御素子 - Google Patents
マルチ・タスク制御素子Info
- Publication number
- JPS60163133A JPS60163133A JP1922484A JP1922484A JPS60163133A JP S60163133 A JPS60163133 A JP S60163133A JP 1922484 A JP1922484 A JP 1922484A JP 1922484 A JP1922484 A JP 1922484A JP S60163133 A JPS60163133 A JP S60163133A
- Authority
- JP
- Japan
- Prior art keywords
- task
- command
- interrupt
- control element
- register
- 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
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
く技術分野〉
本発明は、マイクロ・コンピュータのシステム管理プロ
グラムに有効なマルチ タスク制御機能を内蔵したコン
ピュータ用周辺素子に関するものである。
グラムに有効なマルチ タスク制御機能を内蔵したコン
ピュータ用周辺素子に関するものである。
〈従来技術〉
マイクロ・コンピューターシステムにおいて、1つのC
PUによって複数の処理を同時に実行させるためには、
コンピュータ システムのO5(オペレーティング シ
ステム)によるマルチ・タスク制御が必要となる。
PUによって複数の処理を同時に実行させるためには、
コンピュータ システムのO5(オペレーティング シ
ステム)によるマルチ・タスク制御が必要となる。
従来のマルチ タスク制御素子ては、内部メモリの制約
のため、同時に管理できるタスク数に制限があった。し
たがって、多くのタスクを管理させる場合には、タスク
の生成・消去のコマンドを用いて、管理させるタスクを
入れ換える必要がある。そのため、このタスクの入れ換
えに余分の時間を費やし、本来のタスクの処理速度が低
下する恐れがあった。
のため、同時に管理できるタスク数に制限があった。し
たがって、多くのタスクを管理させる場合には、タスク
の生成・消去のコマンドを用いて、管理させるタスクを
入れ換える必要がある。そのため、このタスクの入れ換
えに余分の時間を費やし、本来のタスクの処理速度が低
下する恐れがあった。
〈発明の目的〉
本発明は、−に記の同時に管理できるタスク数の制約を
解除するものである。本発明によれば、複数の制御素子
をカスケード接続することによって、同時に管理可能な
タスク数を増加させることができる。
解除するものである。本発明によれば、複数の制御素子
をカスケード接続することによって、同時に管理可能な
タスク数を増加させることができる。
〈実施例〉
以下図面に従って本発明の一実施例を説明する。
141図はマイクロコンピュータ−システムとしての構
成例を示す図である。素子群1は、本発明に係るマルチ
タスク制御を実現するための、カスケード接続された
複数個のマルチ・タスク・サポート・プロセツサであり
、他の周辺デバイスと同様、入出力素子の形態で供給さ
れる。以下本素子群の各々のデバイスをマルチ・タスク
制御素子と呼ぶ。マスクCPU2 、プログラム・メモ
リ(ROM)3 、データ メモリ(RAM)4及び他
のIlo等の周辺入出力素子5は、周知のマイクロコン
ピュータ・システムとしても具備されるものであり、マ
ルチ・タスク制御素子群1とともにバス6を介して相互
に接続される。プログラム・メモリ3は、マルチ タス
ク制御素子群Iの初期化プログラムと複数のタスクをそ
れぞれ独立してプログラムしている。
成例を示す図である。素子群1は、本発明に係るマルチ
タスク制御を実現するための、カスケード接続された
複数個のマルチ・タスク・サポート・プロセツサであり
、他の周辺デバイスと同様、入出力素子の形態で供給さ
れる。以下本素子群の各々のデバイスをマルチ・タスク
制御素子と呼ぶ。マスクCPU2 、プログラム・メモ
リ(ROM)3 、データ メモリ(RAM)4及び他
のIlo等の周辺入出力素子5は、周知のマイクロコン
ピュータ・システムとしても具備されるものであり、マ
ルチ・タスク制御素子群1とともにバス6を介して相互
に接続される。プログラム・メモリ3は、マルチ タス
ク制御素子群Iの初期化プログラムと複数のタスクをそ
れぞれ独立してプログラムしている。
各マルチ・タスク制御素子11〜1mは、それぞれマス
タCPU2により実行されるこれら複数のタスクの管理
をマスタCPU2以外で行なう独立機能素子であり、タ
スクのスケジューリング機能(優先席順又は時分割によ
る実行タスクの切換え)、同一制御素子の管理−トのタ
スク間の同期 通信機能(各タスク間でデータの送受信
を行ない、タスクの実行中継、実行再開を決定)、メモ
リ管理機能(各タスクの使用メモリ領域の重複使用の禁
+[−、)、時用機能(内蔵タイマによる時刻の七)「
)等全方したものである。
タCPU2により実行されるこれら複数のタスクの管理
をマスタCPU2以外で行なう独立機能素子であり、タ
スクのスケジューリング機能(優先席順又は時分割によ
る実行タスクの切換え)、同一制御素子の管理−トのタ
スク間の同期 通信機能(各タスク間でデータの送受信
を行ない、タスクの実行中継、実行再開を決定)、メモ
リ管理機能(各タスクの使用メモリ領域の重複使用の禁
+[−、)、時用機能(内蔵タイマによる時刻の七)「
)等全方したものである。
各々のマルチ タスク制御素子11〜1mは、それぞれ
自分の管理下のタスクとして最大8個まで管理する。ま
た、各々の素子11〜1mは、タスクの切り換えの必要
が生した時点で、マスタCPU2に対して割り込みを要
求する。それぞれの素子11〜1mは制り込み優先順位
をもち、素子11が最も高く、素子] nlが最も低い
。上位の素子の管理内のタスクの中に実行可能なものが
存在する場合には、F位の素子は下位の素子のタスクの
IJJり換えのための割り込みを禁止する。実行可能な
タスクがなくなれば、下位の割り込みを許可するため、
下位の素子の管理内のタスクが実行可能になる。(タス
ク毎の優先度と素子毎の割り込み優先順位を対応させる
ため、上位の素子には高い優先度のタスクを、下位の素
子には低い優先度のタスクを登録することを前提として
いる。)以下、個々のマルチ タスク制御素子11につ
いて説明を加える。第2図はマルチ・タスク制御素子1
1の内部構成例を示すブロック図である。
自分の管理下のタスクとして最大8個まで管理する。ま
た、各々の素子11〜1mは、タスクの切り換えの必要
が生した時点で、マスタCPU2に対して割り込みを要
求する。それぞれの素子11〜1mは制り込み優先順位
をもち、素子11が最も高く、素子] nlが最も低い
。上位の素子の管理内のタスクの中に実行可能なものが
存在する場合には、F位の素子は下位の素子のタスクの
IJJり換えのための割り込みを禁止する。実行可能な
タスクがなくなれば、下位の割り込みを許可するため、
下位の素子の管理内のタスクが実行可能になる。(タス
ク毎の優先度と素子毎の割り込み優先順位を対応させる
ため、上位の素子には高い優先度のタスクを、下位の素
子には低い優先度のタスクを登録することを前提として
いる。)以下、個々のマルチ タスク制御素子11につ
いて説明を加える。第2図はマルチ・タスク制御素子1
1の内部構成例を示すブロック図である。
マルチ・タスク制御素子11はマスタCPU2からアク
セス可能なレジスタ群を備えている。
セス可能なレジスタ群を備えている。
コマンド・パラメータ レジスタCPIOは、マスタC
PU2からコマンド実行時に入力するパラメータや、実
行後に出力するパラメータを保持スル。コマンド/ステ
ータス レジスタCN5Tは書込み時にはコマンド書込
み用として、読出し時には実行したコマンドの実行情報
を格納するためのレジスタとして機能する。新スタック
・ポインタ・レジスタSPNは2つの機能をもつ。1つ
は、タスク切換え情報としてこれから新らたに実行状態
となるタスクのスタック・ポインタの値を出力する。も
う1つは、タスクが実行中に実行状態のまま中断された
場合、現在のスタックポインタを保存するために入力す
る。また、旧スタック・ポインタ レジスタSPBは、
タスク切換え情報として今まで実行状態にあったタスク
のスタック・ポインタの値を入力するためのレジスタで
ある。
PU2からコマンド実行時に入力するパラメータや、実
行後に出力するパラメータを保持スル。コマンド/ステ
ータス レジスタCN5Tは書込み時にはコマンド書込
み用として、読出し時には実行したコマンドの実行情報
を格納するためのレジスタとして機能する。新スタック
・ポインタ・レジスタSPNは2つの機能をもつ。1つ
は、タスク切換え情報としてこれから新らたに実行状態
となるタスクのスタック・ポインタの値を出力する。も
う1つは、タスクが実行中に実行状態のまま中断された
場合、現在のスタックポインタを保存するために入力す
る。また、旧スタック・ポインタ レジスタSPBは、
タスク切換え情報として今まで実行状態にあったタスク
のスタック・ポインタの値を入力するためのレジスタで
ある。
マスク割込み制御レジスタMICはボ素子11における
、マスタCPU2に対する割込み発生を制御するだめの
レジスタで、割込みベクダレジスタMIVは割込みベク
タ値を書込む。データ・レジスタPID、P2D、P3
Dはボート1.ボート2およびボート3のデータ入出力
のためのレジスタである。ボート1とボート2はデータ
入出力方向をプログラムによってビット単位で設定でき
る8ビツト入出力ボートであり、ボート3は2ビツトの
入力ボートである。ボート3はプログラムによってイベ
ント入力(ボート3への入力信号の遷移により停止状態
のタスクをレディー状態に移す)にセットすることが可
能である。
、マスタCPU2に対する割込み発生を制御するだめの
レジスタで、割込みベクダレジスタMIVは割込みベク
タ値を書込む。データ・レジスタPID、P2D、P3
Dはボート1.ボート2およびボート3のデータ入出力
のためのレジスタである。ボート1とボート2はデータ
入出力方向をプログラムによってビット単位で設定でき
る8ビツト入出力ボートであり、ボート3は2ビツトの
入力ボートである。ボート3はプログラムによってイベ
ント入力(ボート3への入力信号の遷移により停止状態
のタスクをレディー状態に移す)にセットすることが可
能である。
以上のレジスタ群はマスタCPU2がらアクセスされて
、本素子11とマスタCPU2との間で情報を相互に交
換するために用いられる。データ・バス・インターフェ
イスDBI、バス・タイミング発生・制御回路BTGC
、割込み制御回路I NTCは、マスタCPU2とのイ
ンターフェイス回路として備えられたものである。割込
み制御回路INTCにおけるIEI(割り込みイネーブ
ル入力)端子及びIF、0(割り込みイネーブル出力)
端子、ボート3(ボート・レジスタPAD)のLEO(
下位素子イネーブル出力)端子については後述する。
、本素子11とマスタCPU2との間で情報を相互に交
換するために用いられる。データ・バス・インターフェ
イスDBI、バス・タイミング発生・制御回路BTGC
、割込み制御回路I NTCは、マスタCPU2とのイ
ンターフェイス回路として備えられたものである。割込
み制御回路INTCにおけるIEI(割り込みイネーブ
ル入力)端子及びIF、0(割り込みイネーブル出力)
端子、ボート3(ボート・レジスタPAD)のLEO(
下位素子イネーブル出力)端子については後述する。
タスク制御ブロックTCB (1〜8)はタスクの状態
を保存するためのメモリ領域である。各制御素子11は
8つまでのタスクを取扱うことかoJ能である。各TC
Bブロックは第3図に示されるように、タスク・ステー
タス・■、タスク優先度■。
を保存するためのメモリ領域である。各制御素子11は
8つまでのタスクを取扱うことかoJ能である。各TC
Bブロックは第3図に示されるように、タスク・ステー
タス・■、タスク優先度■。
先にレディーQに接続されているタスクの番号■。
後にレディーQに接続されているタスクの番号■。
タスクが占有しているワーク・メモリの先頭アドレス■
、そのサイズの、使用しているメイル・ボックス番号の
、そしてタスク実行中断時のスタック・ポインタ値■を
格納する領域を有している。
、そのサイズの、使用しているメイル・ボックス番号の
、そしてタスク実行中断時のスタック・ポインタ値■を
格納する領域を有している。
メイル・ボックスMBXは同一素子の管理下のタスク間
でデータの授受を行なえるよう設けられたバッファ・メ
モリ領域である。
でデータの授受を行なえるよう設けられたバッファ・メ
モリ領域である。
メモリ・マツプMEMMAPはワーク メモリを管理す
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAPに
より256バイト単位のワーク・メモリを管理すること
が可能である。ワーク・メモリを使用していないときそ
の領域に対応するピントは°′0”で、占有中であると
きはそのビットがパビにセットされる。
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAPに
より256バイト単位のワーク・メモリを管理すること
が可能である。ワーク・メモリを使用していないときそ
の領域に対応するピントは°′0”で、占有中であると
きはそのビットがパビにセットされる。
タイマTMは時分割処理(同一優先度のタスクを一定時
間毎に実行させる処理)等のために、素子11内に割込
み信号を発生させるもので、システムクロック領域SC
Aは同時にタイマTMの出力により4数される時1分2
秒等の時刻データを格納するメモリ領域である。
間毎に実行させる処理)等のために、素子11内に割込
み信号を発生させるもので、システムクロック領域SC
Aは同時にタイマTMの出力により4数される時1分2
秒等の時刻データを格納するメモリ領域である。
内部演算制御回路C0NTは論理演算ユニット(ALU
)、本素子11のプログラムを格納するROM、一時記
憶用のRAMおよび各種制御のためのフラグ用レジスタ
等を有してなる。
)、本素子11のプログラムを格納するROM、一時記
憶用のRAMおよび各種制御のためのフラグ用レジスタ
等を有してなる。
マスタCPU2からマルチ タスク制御素子11〜1m
へのアクセスは、実行中のタスクから発行されるアドレ
ス指定された制御素子11へのコマンドによって行なわ
れ、マルチ・タスク制御素子11〜mからマスタCPU
2へのアクセスは、マルチ・タスク制御素子11〜1m
のうちの1つの割込み信号発生に基づいて行なわれる。
へのアクセスは、実行中のタスクから発行されるアドレ
ス指定された制御素子11へのコマンドによって行なわ
れ、マルチ・タスク制御素子11〜mからマスタCPU
2へのアクセスは、マルチ・タスク制御素子11〜1m
のうちの1つの割込み信号発生に基づいて行なわれる。
第5図はコマンドの種類と入力パラメータおよび出カッ
ぐラメータを示す図である。
ぐラメータを示す図である。
基本的動作としては次のとおりである。なお、タスク制
御ブロックTCBには各タスクの状態が既に保存されて
いるものとする。
御ブロックTCBには各タスクの状態が既に保存されて
いるものとする。
マルチ・タスク制御素子11〜1mは、実行可能状態の
タスクから優先度の一番高いタスクを選び出し、登録さ
れたそのタスクのスタック ポインタの値を新スタック
・ポインタ・レジスタSPHに準備する。スタック・ポ
インタの値を準備した後、マルチ・タスク制御素子11
〜1mはマスタCPU2に対し割り込みを発生するため
、割り込み(IP)フラグをセットする。マスタCPU
2は、割り込みを受け付けた時、割り込みを要求してい
るマルチ・タスク制御素子(11〜1mのうちの1つ)
ljに対応する割り込みルーチンを実行し、マルチ・タ
スク制御素子1jにセットされているスタック ポイン
タの値を自分のスタック・ポインタにロードし、予じめ
書込まれていたレジスタの初期値をスタックからポツプ
してレジスタを書換える。そしてマスタCP、U 2の
管理下において指定されたタスクを実行する。
タスクから優先度の一番高いタスクを選び出し、登録さ
れたそのタスクのスタック ポインタの値を新スタック
・ポインタ・レジスタSPHに準備する。スタック・ポ
インタの値を準備した後、マルチ・タスク制御素子11
〜1mはマスタCPU2に対し割り込みを発生するため
、割り込み(IP)フラグをセットする。マスタCPU
2は、割り込みを受け付けた時、割り込みを要求してい
るマルチ・タスク制御素子(11〜1mのうちの1つ)
ljに対応する割り込みルーチンを実行し、マルチ・タ
スク制御素子1jにセットされているスタック ポイン
タの値を自分のスタック・ポインタにロードし、予じめ
書込まれていたレジスタの初期値をスタックからポツプ
してレジスタを書換える。そしてマスタCP、U 2の
管理下において指定されたタスクを実行する。
実行中のタスクからコマンド入力があるか、またはタイ
マTMあるいはボート3への人力による割込みがあるま
で、マルチ・タスク制御素子11〜1mは待ち状態とな
る。ここで例えばコマンド入力があれば、マルチ・タス
ク制御素子IIへのコマンドを解析しコマンド処理を行
なう。そして、このコマンドがタスク切換え機能を含む
ものであれば、次に切換えるべきタスクのスタック・ポ
インタの値を新スタック・ポインタ・レジスタSPNに
セットし、割り込み(IP)フラグをセットしてマスタ
CPU2に対し割込みを要求する。この割込みが受け付
けられた時点で、マスタCPU2は現在実行中のタスク
の実行を停止し、次に実行すべきタスクのスタック・ポ
インタの値をマルチ・タスク制御素子11から読出す。
マTMあるいはボート3への人力による割込みがあるま
で、マルチ・タスク制御素子11〜1mは待ち状態とな
る。ここで例えばコマンド入力があれば、マルチ・タス
ク制御素子IIへのコマンドを解析しコマンド処理を行
なう。そして、このコマンドがタスク切換え機能を含む
ものであれば、次に切換えるべきタスクのスタック・ポ
インタの値を新スタック・ポインタ・レジスタSPNに
セットし、割り込み(IP)フラグをセットしてマスタ
CPU2に対し割込みを要求する。この割込みが受け付
けられた時点で、マスタCPU2は現在実行中のタスク
の実行を停止し、次に実行すべきタスクのスタック・ポ
インタの値をマルチ・タスク制御素子11から読出す。
以下フローチャートを参照して個々のマルチ・タスク制
御素子11の内部処理をさらに詳しく説明する。
御素子11の内部処理をさらに詳しく説明する。
第6図はマルチ・タスク制御素子11のメインルーチン
の動作を説明するフローチャート、第7図〜第21図は
各コマンド0−14による処理ルーチンの動作を説明す
るフローチャート、第22.23図はタスク切換えルー
チンの動作を説明するフローチャート、第24図はボー
ト3へのイベント人力による割込み処理ルーチンの動作
を説明するフローチャート、第25図はタイマTMによ
る割込み処理ルーチンの動作を説明するフローチャート
。
の動作を説明するフローチャート、第7図〜第21図は
各コマンド0−14による処理ルーチンの動作を説明す
るフローチャート、第22.23図はタスク切換えルー
チンの動作を説明するフローチャート、第24図はボー
ト3へのイベント人力による割込み処理ルーチンの動作
を説明するフローチャート、第25図はタイマTMによ
る割込み処理ルーチンの動作を説明するフローチャート
。
第26図はIEI割り込み処理ルーチンの動作を説明す
るフローチャートである。
るフローチャートである。
第6図においで、システムに電源が投入されると、本マ
ルチ・タスク制御素子11はυセット動作を行ない内部
の各機能素子を初期化する(ステップの)。そして、マ
スタCPU2からコマンドがコマンド/ステータス レ
ジスタCN5Tに書込まれるのを待つ(ステップ■)。
ルチ・タスク制御素子11はυセット動作を行ない内部
の各機能素子を初期化する(ステップの)。そして、マ
スタCPU2からコマンドがコマンド/ステータス レ
ジスタCN5Tに書込まれるのを待つ(ステップ■)。
コマンド処理込まれると、各コマンド コードに対応し
たコマンド処理を行なう(ステップ■)。
たコマンド処理を行なう(ステップ■)。
コマンド0(コマンド名:INIT、第7図フローチャ
ート)は、マルチ・タスク制御素子11の初期化を行な
うためのコマンドであり、マルチタスク制御素子11が
マスタCPU2に対して割込みを発生するときにマスタ
CPU2へ出力するベクタ値、マルチ・タスク制御素子
1】が管理するワーク・メモリ領域の先頭アドレスとそ
の大きさ、及びタスクの優先度を各タスクに対して登録
するためのコマンドである。
ート)は、マルチ・タスク制御素子11の初期化を行な
うためのコマンドであり、マルチタスク制御素子11が
マスタCPU2に対して割込みを発生するときにマスタ
CPU2へ出力するベクタ値、マルチ・タスク制御素子
1】が管理するワーク・メモリ領域の先頭アドレスとそ
の大きさ、及びタスクの優先度を各タスクに対して登録
するためのコマンドである。
このコマンドが実行されると、人力データのエラーを調
査しくステップ■)、もし人力データに誤りかあれば、
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットする(ステップ■)。
査しくステップ■)、もし人力データに誤りかあれば、
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットする(ステップ■)。
入力データに誤りがなければ、コマンド・パラメータ・
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスタMIVにi11ミ(ステップ
■)、またワーク・メモリ領域の先頭アドレスとその大
きさのデータをもとにしてメモリ マツプMEMMAP
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の0.■によって順序づけ
を行なう。生成後は正常終了コードをコマンド/ステー
タス・レジスタCN5Tに七ノドしくステップ[相])
、内部演算制御回路C0NTのTSKCHG フラグを
リセットして(ステップ■)、第6図のメインルーチン
に戻る。
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスタMIVにi11ミ(ステップ
■)、またワーク・メモリ領域の先頭アドレスとその大
きさのデータをもとにしてメモリ マツプMEMMAP
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の0.■によって順序づけ
を行なう。生成後は正常終了コードをコマンド/ステー
タス・レジスタCN5Tに七ノドしくステップ[相])
、内部演算制御回路C0NTのTSKCHG フラグを
リセットして(ステップ■)、第6図のメインルーチン
に戻る。
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットした場合も同様にTSKCHGフラグをリセ
ットしてメインルーチンに戻る。
Tにセットした場合も同様にTSKCHGフラグをリセ
ットしてメインルーチンに戻る。
コマンド+(コマンド名:TSTR、第81Nフローチ
ヤート)は、初期化したマルチ・タスク制御素子11を
実行状態に移すためのコマンドである。
ヤート)は、初期化したマルチ・タスク制御素子11を
実行状態に移すためのコマンドである。
このコマンl゛1では、コマンド0の処理が実行済かど
うかのチェックを行ない(ステップ0)、実行済の場合
のみ、レディーQの先頭に接続されているタスク(一番
優先度の高いタスク)を実行状態に移すためTSKIG
フラグ(内部演算制御回路C0NTの制御フラグ)をセ
ットして(ステップO■)、第6図のメインルーチンに
戻る。実行済でない場合は、コマンド/ステータス・レ
ジスタCN5Tにエラーコードをセントしくステップ[
相])、メインルーチンに戻ル。
うかのチェックを行ない(ステップ0)、実行済の場合
のみ、レディーQの先頭に接続されているタスク(一番
優先度の高いタスク)を実行状態に移すためTSKIG
フラグ(内部演算制御回路C0NTの制御フラグ)をセ
ットして(ステップO■)、第6図のメインルーチンに
戻る。実行済でない場合は、コマンド/ステータス・レ
ジスタCN5Tにエラーコードをセントしくステップ[
相])、メインルーチンに戻ル。
以−1−のコマンド0.1およびマルチ・タスク制御素
子l1(7)書込み情報は、例えば第1図のプログラム
・メモリ3の初期化プログラムに予じめ格納され、タス
ク内容に応じてプログラム変更が可能であり、各々のマ
ルチ・タスク制御素子11〜1mはこれにより種々に初
期化設定することができる。
子l1(7)書込み情報は、例えば第1図のプログラム
・メモリ3の初期化プログラムに予じめ格納され、タス
ク内容に応じてプログラム変更が可能であり、各々のマ
ルチ・タスク制御素子11〜1mはこれにより種々に初
期化設定することができる。
コマンド2(コマンド名:TCRT、第91Nりイムチ
ャート)は初期設定の後、伝音にタスクを生成するため
のコマンドであり、入力データとして生成するタスクの
番号およびその優先度が制御素子11のコマンド・パラ
メータ・レジスタCPIOに書込まれる。
ャート)は初期設定の後、伝音にタスクを生成するため
のコマンドであり、入力データとして生成するタスクの
番号およびその優先度が制御素子11のコマンド・パラ
メータ・レジスタCPIOに書込まれる。
このコマンド2が実行されると、入力データにエラーが
ないかの検査を行ない(ステップ(つ)、エラーがあれ
ばコマンド/ステータス・レジスタCN5Tにエラーフ
ードを書込む(ステップ[相])。
ないかの検査を行ない(ステップ(つ)、エラーがあれ
ばコマンド/ステータス・レジスタCN5Tにエラーフ
ードを書込む(ステップ[相])。
エラーがなければ、入力データで指定されたタスクのタ
スク制御ブロックTCBを生成する(ステップ■)。
スク制御ブロックTCBを生成する(ステップ■)。
タスク制御ブロックTCB中のタスク・ステータス■(
第3図参照)には次の4つのフラグが含まれる。
第3図参照)には次の4つのフラグが含まれる。
RUNフラグはタスクが実行状態にあることを示す。
READYフラグはタスクがレディー状態にあってレデ
ィーQに接続されていることを示す。
ィーQに接続されていることを示す。
PENDWフラグはメツセージ受信待ち状態にあること
を示す。
を示す。
5USPENDフラグはタスクが停止状態にあることを
示す。
示す。
上記タスク制御ブロックTCBの生成時(ステップO)
、同時にその中のREADYフラグをセットする。
、同時にその中のREADYフラグをセットする。
そして、タスクの優先度が高い順にレディーQに再接続
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ0)、実行状態のタスクとレディーQの先頭に接続さ
れているタスクの優先度を比較させるためのTSKCH
Gフラグをセットして(ステノブノ)、第6図のメイン
ルーチンに戻る。
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ0)、実行状態のタスクとレディーQの先頭に接続さ
れているタスクの優先度を比較させるためのTSKCH
Gフラグをセットして(ステノブノ)、第6図のメイン
ルーチンに戻る。
コマンド3(コマンド名:TDEL 、第10図タイム
チャート)は不要のタスクを消去するためのコマンドで
、消去するタスクの番号を入力データとして実行する。
チャート)は不要のタスクを消去するためのコマンドで
、消去するタスクの番号を入力データとして実行する。
人力データにエラーがないかの検査(ステップ■)にお
いて、エラーがあればコマンド/ステータス・レジスタ
CN5Tにエラーフードがセットされ(ステップ[相]
)、第6図のメインルーチンに戻る。
いて、エラーがあればコマンド/ステータス・レジスタ
CN5Tにエラーフードがセットされ(ステップ[相]
)、第6図のメインルーチンに戻る。
エラーがなければ、消去するタスクが占有していたワー
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリ・サイズ■を読出し、このデータに基づいて
メモリ・マツプMEMMAP上で対応した領域を“′0
′リリアする(ステップ@)。ついてこのタスクがレデ
ィー状態にあれば、消去するタスクのタスク制御ブロッ
クTCBをレディーQから切離しくステップ■)、この
タスク制御ブロックTCBのすべてをクリアする(ステ
ップ[相])。終われば、コマンド/ステータス・レジ
スタCN5Tに正常終了コードをセットして(ステップ
[相])、メインルーチンに戻る。
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリ・サイズ■を読出し、このデータに基づいて
メモリ・マツプMEMMAP上で対応した領域を“′0
′リリアする(ステップ@)。ついてこのタスクがレデ
ィー状態にあれば、消去するタスクのタスク制御ブロッ
クTCBをレディーQから切離しくステップ■)、この
タスク制御ブロックTCBのすべてをクリアする(ステ
ップ[相])。終われば、コマンド/ステータス・レジ
スタCN5Tに正常終了コードをセットして(ステップ
[相])、メインルーチンに戻る。
コマンド4(コマンド名:TR5M 、第+ +[iJ
フローチャート)は、入力データで指定されたタスク番
号を持つ待機または停止中のタスクをレディー状態(再
起動可能状態)にするためのコマンドである。タスク番
号を入力データとして実行する。
フローチャート)は、入力データで指定されたタスク番
号を持つ待機または停止中のタスクをレディー状態(再
起動可能状態)にするためのコマンドである。タスク番
号を入力データとして実行する。
コマンド4が実行されると、まず入力データにエラーが
ないかの検査が行なわれ(ステップ0)、エラーがあれ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを設定して(ステップ@)、メインルーチンに戻る
。
ないかの検査が行なわれ(ステップ0)、エラーがあれ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを設定して(ステップ@)、メインルーチンに戻る
。
エラーがなければ、指定されたタスクのPENDWフラ
グまたは5USPENDフラグをリセットするとともに
READYフラグをセットし、かつこのタスク制御ブロ
ックTCBをタスクの優先度の高い順序でレディーQに
接続する(ステップ[相])。そして、正常終了コード
をコマンド/ステータス・レジスタCN5Tにセットし
くステップ■)、実行状態のタスクとレディーQの先頭
に接続されているタスクの優先度を比較するためTSK
CHGフラグをセットしくステップ■)メインルーチン
に戻る。
グまたは5USPENDフラグをリセットするとともに
READYフラグをセットし、かつこのタスク制御ブロ
ックTCBをタスクの優先度の高い順序でレディーQに
接続する(ステップ[相])。そして、正常終了コード
をコマンド/ステータス・レジスタCN5Tにセットし
くステップ■)、実行状態のタスクとレディーQの先頭
に接続されているタスクの優先度を比較するためTSK
CHGフラグをセットしくステップ■)メインルーチン
に戻る。
コマンド5(コマンド名:TSPD 、第12図フロー
チャート)は、入力データで指定されたりスフ番号を持
つ実行状態あるいはレディー状態にあるタスクを停止状
態にするだめのコマンドである。
チャート)は、入力データで指定されたりスフ番号を持
つ実行状態あるいはレディー状態にあるタスクを停止状
態にするだめのコマンドである。
このコマンド5が実行されると、入力データのエラーを
検査し、エラーがあればコマンド/ステータス・レジス
タCN、STにエラーコードを設定してメインルーチン
に戻る(ステップΦ、 CZ >。
検査し、エラーがあればコマンド/ステータス・レジス
タCN、STにエラーコードを設定してメインルーチン
に戻る(ステップΦ、 CZ >。
エラーがなければ、まず、人力データによって、停止状
態になるタスクをボート3からの人力信号(外部イベン
トによりレディー状態にする(再起動)という指定がさ
れているかとうかのチェックを行なう(ステップ■)。
態になるタスクをボート3からの人力信号(外部イベン
トによりレディー状態にする(再起動)という指定がさ
れているかとうかのチェックを行なう(ステップ■)。
外部イベントの指定かなければステップ■の処理ヘスキ
ノブする。指定がある場合は、他のタスクか既に外部イ
ベントを使用しているかどうかの検査を行ない(ステッ
プ[相])、使用されていれば、コマンド/ステータス
・レジスタCN5Tにエラーコードをセットして(ステ
ップ[相])メインルーチンに戻る。使用されていなけ
れば、ポート3の入力信号の遷移による内部割込みをイ
ネーブルにする(ステップ[相])。
ノブする。指定がある場合は、他のタスクか既に外部イ
ベントを使用しているかどうかの検査を行ない(ステッ
プ[相])、使用されていれば、コマンド/ステータス
・レジスタCN5Tにエラーコードをセットして(ステ
ップ[相])メインルーチンに戻る。使用されていなけ
れば、ポート3の入力信号の遷移による内部割込みをイ
ネーブルにする(ステップ[相])。
すなわち、本コマンド5の入力データ設定により外部イ
ベント起動の指定が可能である。
ベント起動の指定が可能である。
そして、スキップした場合を含めて次に、そのタスク制
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPENDフラ
グをセットする(ステップ(D)。終われば、コマン+
・′/ステータス・レジスタCN S Tに正常終了コ
ードをセットする(ステップ[相])。そして指定され
たタスクがレディー状態にある場合を考慮して、このタ
スクをレテイーQから切離し、レディーQに接続されて
いるタスク制御ブロックTCBを再度優先席順にならひ
換え(ステップ[相])、実行状態のタスクとレディー
Qの先卯に接続されているタスクの優先度を比較するた
めのTSKCHGフラグをセットして(ステップ[相]
)、メインルーチンに戻る。
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPENDフラ
グをセットする(ステップ(D)。終われば、コマン+
・′/ステータス・レジスタCN S Tに正常終了コ
ードをセットする(ステップ[相])。そして指定され
たタスクがレディー状態にある場合を考慮して、このタ
スクをレテイーQから切離し、レディーQに接続されて
いるタスク制御ブロックTCBを再度優先席順にならひ
換え(ステップ[相])、実行状態のタスクとレディー
Qの先卯に接続されているタスクの優先度を比較するた
めのTSKCHGフラグをセットして(ステップ[相]
)、メインルーチンに戻る。
コマンド6(コマンド名:TPRl、第13図フローチ
ャート)は、入力データで指定された番号のタスクの優
先度を変更するコマンドである。
ャート)は、入力データで指定された番号のタスクの優
先度を変更するコマンドである。
入力データにエラーがあるかの検査(ステップ■)にお
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーフードをセットして(ステップ@
)メインルーチンに戻る。
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーフードをセットして(ステップ@
)メインルーチンに戻る。
エラーがない場合、指定されたタスクのタスク管理ブロ
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ@)。次に、レデ
ィーQに接続されているタスク管理ブロックTCBを優
先席順にならび換え(ステップ■)、コマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットする
(ステップ[相])。そして、実行状態のタスクとレデ
ィーQの先頭に接続されているタスクの優先度を比較す
るためにTSKCHGフラグをセットして(ステップ[
相])、メインルーチンに戻る。
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ@)。次に、レデ
ィーQに接続されているタスク管理ブロックTCBを優
先席順にならび換え(ステップ■)、コマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットする
(ステップ[相])。そして、実行状態のタスクとレデ
ィーQの先頭に接続されているタスクの優先度を比較す
るためにTSKCHGフラグをセットして(ステップ[
相])、メインルーチンに戻る。
コマンド7(コマンド名:TSLI 、第14図フロー
チャート)は、入力データで指定された優先度を持つタ
スク群のマスクCPU占有時間を制限するためのコマン
ドである。すなわち、このコマンドは同一優先度のタス
クの時分割処理を指定する。時分割処理は、指定した優
先度より高い優先度を持つレディー状態のタスクが存在
しない場合に限り有効である。より高い優先度を持つレ
ディー状態のタスクが存在すれば、そのタスクが実行さ
れ時分割処理は無効となるが、高い優先度のタスクがな
くなれば有効となる。
チャート)は、入力データで指定された優先度を持つタ
スク群のマスクCPU占有時間を制限するためのコマン
ドである。すなわち、このコマンドは同一優先度のタス
クの時分割処理を指定する。時分割処理は、指定した優
先度より高い優先度を持つレディー状態のタスクが存在
しない場合に限り有効である。より高い優先度を持つレ
ディー状態のタスクが存在すれば、そのタスクが実行さ
れ時分割処理は無効となるが、高い優先度のタスクがな
くなれば有効となる。
このコマンド7が実行されると、まず、入力データのエ
ラーが検査される(ステップo)。エラーが検出された
場合は、コマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされ(ステップ[相]ン、メインル
ーチンに戻る。
ラーが検査される(ステップo)。エラーが検出された
場合は、コマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされ(ステップ[相]ン、メインル
ーチンに戻る。
エラーが検出されなければ、入力データが時分割処理を
キャンセルする指定であるのかどうかを判定する(ステ
ップ[相])。キャンセルの場合は、内部演算制御回路
C0NT内にある時分割制御用レジスタS L I C
NTおよび5LIPRI を0”クリアする(ステップ
[株]、■)。入力データが新たに時分割処理の設定を
指定する場合は、その入力データからタスクのCPU占
有時間を制御用レジスタS L I CNTに設定しく
ステップC)、時分割処理を行なうタスクの優先度をも
う−っの制御用レジスタ5LIPRIに設定する(ステ
ップ0)。そして最後にコマンド/ステータス・レジス
タCN5Tに正常終了コードをセットして(ステップ■
)メインルーチンに戻る。
キャンセルする指定であるのかどうかを判定する(ステ
ップ[相])。キャンセルの場合は、内部演算制御回路
C0NT内にある時分割制御用レジスタS L I C
NTおよび5LIPRI を0”クリアする(ステップ
[株]、■)。入力データが新たに時分割処理の設定を
指定する場合は、その入力データからタスクのCPU占
有時間を制御用レジスタS L I CNTに設定しく
ステップC)、時分割処理を行なうタスクの優先度をも
う−っの制御用レジスタ5LIPRIに設定する(ステ
ップ0)。そして最後にコマンド/ステータス・レジス
タCN5Tに正常終了コードをセットして(ステップ■
)メインルーチンに戻る。
コマンド8(コマンド名:C3ET、第15図フローチ
ャート)は、マルチ・タスク制御素子11内に設けられ
た時泪に時刻を設定するためのコマンドである。マスタ
CPU2から制御素子II内のコマンド・パラメータ・
レジスタCPIOに、入力データとして時4分1秒デー
タを書込みコマンドを実行する。
ャート)は、マルチ・タスク制御素子11内に設けられ
た時泪に時刻を設定するためのコマンドである。マスタ
CPU2から制御素子II内のコマンド・パラメータ・
レジスタCPIOに、入力データとして時4分1秒デー
タを書込みコマンドを実行する。
入力データの工′ラーか検査されて(ステップ(5ユ)
、エラーが検出された場合はコマンド/ステータス・レ
ジスタCN5Tにエラーフードかセットされて(ステッ
プ■)、メインルーチンに戻る。
、エラーが検出された場合はコマンド/ステータス・レ
ジスタCN5Tにエラーフードかセットされて(ステッ
プ■)、メインルーチンに戻る。
エラーがなければ、システム・クロック領域SCAに時
9分9秒のデータが移される(ステップo)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了フー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
9分9秒のデータが移される(ステップo)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了フー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
コマンド9(コマンド名’CGET 、第1611フロ
ーチヤート)は、上記の時言1から現在の時刻を読出す
ためのコマンドである。
ーチヤート)は、上記の時言1から現在の時刻を読出す
ためのコマンドである。
このコマンド9か実行されると、システム・クロック領
域SCAから時2分2秒のデータか、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス レ
ジスタCN5Tに正常終了コードをセットして(ステッ
プQ)メインルーチンに戻る。
域SCAから時2分2秒のデータか、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス レ
ジスタCN5Tに正常終了コードをセットして(ステッ
プQ)メインルーチンに戻る。
コマンド10(コマンド名 MALC,第17図フロー
チャート)は、マルチ・タスク制御素子11か管理して
いるワーク・メモリ領域の中から、コマンドを実行した
タスクに対して要求されたサイズのワーク・メモリの使
用を許可するコマンドである。コマンド・ノぐラメータ
レジ反夕CPIOに要求するワーク・メモリ数(25
6ハイ)単(1を書込みコマンドを実行する。
チャート)は、マルチ・タスク制御素子11か管理して
いるワーク・メモリ領域の中から、コマンドを実行した
タスクに対して要求されたサイズのワーク・メモリの使
用を許可するコマンドである。コマンド・ノぐラメータ
レジ反夕CPIOに要求するワーク・メモリ数(25
6ハイ)単(1を書込みコマンドを実行する。
コマンド10が実行されると、入力データのエラー検出
が行なわれる(ステップ0)。エラーが検出されれば、
コマンド/ステータス レジスタCN5Tにエラーコー
ドをセットして(ステップ[相])メインルーチンに戻
る。
が行なわれる(ステップ0)。エラーが検出されれば、
コマンド/ステータス レジスタCN5Tにエラーコー
ドをセットして(ステップ[相])メインルーチンに戻
る。
エラーが検出されなければ、メモリ・マツプMEMMA
Pを調査し、要求されたワーク メモリが空いているか
どうかのチェックを行なう(ステップ・)。空き領域か
なければコマンド/ステータス・レジスタCN5Tにメ
モリ占有不可コードをセットして(ステップ[相])、
メインルーチンに戻る。空き領域か見つかれば、コマン
ドを実行したタスクか要求したサイズだけメモリ・マツ
プMEMMAP上の対応したヒツトにパビをセットする
(ステップ[相])。そして、コマンドを実行したタス
クのタスク制御ブロックTCB内の占有メモリ先頭アド
レス■および占有メモリ・サイズ■の領域(第3図参照
)にそれぞれの値を設定しくステップ[株])、次にコ
マンド パラメータ レジスタCPIOに占有メモリ・
先頭アドレスを書込む。
Pを調査し、要求されたワーク メモリが空いているか
どうかのチェックを行なう(ステップ・)。空き領域か
なければコマンド/ステータス・レジスタCN5Tにメ
モリ占有不可コードをセットして(ステップ[相])、
メインルーチンに戻る。空き領域か見つかれば、コマン
ドを実行したタスクか要求したサイズだけメモリ・マツ
プMEMMAP上の対応したヒツトにパビをセットする
(ステップ[相])。そして、コマンドを実行したタス
クのタスク制御ブロックTCB内の占有メモリ先頭アド
レス■および占有メモリ・サイズ■の領域(第3図参照
)にそれぞれの値を設定しくステップ[株])、次にコ
マンド パラメータ レジスタCPIOに占有メモリ・
先頭アドレスを書込む。
書込まれれば、コマンド/ステータス・レジスタCN5
Tに正常終了コードをセットしくステップ@)メインル
ーチンに戻る。
Tに正常終了コードをセットしくステップ@)メインル
ーチンに戻る。
コマンド11(コマンド名:MREL、第18図フロー
チャート)は、占有していたワーク・メモリ領域を解放
するためのコマンドである。
チャート)は、占有していたワーク・メモリ領域を解放
するためのコマンドである。
コマンドIIを実行したタスクがワーク・メモリを占有
していなければ(ステップ句旬)、コマンド/ステータ
ス レジスタCN5Tにエラーコードをセクトして(ス
テップ[相])メインルーチンに戻る。
していなければ(ステップ句旬)、コマンド/ステータ
ス レジスタCN5Tにエラーコードをセクトして(ス
テップ[相])メインルーチンに戻る。
既にワーク・メモリが占有されていれば、コマンドを実
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス[F]および占有メモリ
・サイズ■の領域の値を参照し、メモリ マツプMEM
MAP上の対応したビットを0”にリセツトする(ステ
ップ■)。そして、タスク制御ブロックTCB内の占有
メモリ先頭アドレス■及び占有メモリ・サイズ■の領域
をクリアする(ステップ@)。最後にコマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットして
(ステップ[相])、メインルーチンに戻る。
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス[F]および占有メモリ
・サイズ■の領域の値を参照し、メモリ マツプMEM
MAP上の対応したビットを0”にリセツトする(ステ
ップ■)。そして、タスク制御ブロックTCB内の占有
メモリ先頭アドレス■及び占有メモリ・サイズ■の領域
をクリアする(ステップ@)。最後にコマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットして
(ステップ[相])、メインルーチンに戻る。
」二連のようにタスクからメモリを要求する場合には、
マルチ タスク制御素子IIに対してコマンド10(メ
モリ占有コマンド、MALC)を実行する。また、タス
クが使用していたメモリが不要になり解放したい場合に
は、コマンドI+(メモリ解放コマンド、MREL)を
実行する。
マルチ タスク制御素子IIに対してコマンド10(メ
モリ占有コマンド、MALC)を実行する。また、タス
クが使用していたメモリが不要になり解放したい場合に
は、コマンドI+(メモリ解放コマンド、MREL)を
実行する。
このようにマルチ・タスク制御素子11は、これらコマ
ンド10.I+によって、予しめ登録されり64 Kバ
イ1までのワーク用メモリ領Jtを256バイト単位で
使用中か否かを判断し、タスクから要求されたサイズの
空き領域を探し出して、タスクに割イ」ける機能を有す
る。
ンド10.I+によって、予しめ登録されり64 Kバ
イ1までのワーク用メモリ領Jtを256バイト単位で
使用中か否かを判断し、タスクから要求されたサイズの
空き領域を探し出して、タスクに割イ」ける機能を有す
る。
この機能は、限られたメモリ空間を複数のタスクで有効
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御素子11へのワーク
・メモリ領域のff定は、各マルチ・タスク制御素子1
1〜1mの初期設定時(コマンドOの実行時)に行なわ
れる。
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御素子11へのワーク
・メモリ領域のff定は、各マルチ・タスク制御素子1
1〜1mの初期設定時(コマンドOの実行時)に行なわ
れる。
コマンド12(コマンド名 PO5T 、第19図フロ
ーチャート)は、制御素子ll内に設けられたメイルボ
ックスMBXと呼ばれるメモリ領域に、データを送るた
めのコマンドである。メイルボックスMBXはこのコマ
ンドI2を実行したタスクと同−素子管理内の別タスク
(次に説明するコマンド13実行)とのメツセージ中継
点となる。
ーチャート)は、制御素子ll内に設けられたメイルボ
ックスMBXと呼ばれるメモリ領域に、データを送るた
めのコマンドである。メイルボックスMBXはこのコマ
ンドI2を実行したタスクと同−素子管理内の別タスク
(次に説明するコマンド13実行)とのメツセージ中継
点となる。
5個のメイルボックスMBXI〜MBXS中の1個を指
定できる。コマンじ パラメータ レジスタCPIOに
使用するメイル ボックスMBXの番号、および指定し
たメイル・ボックスM B Xへ送るデータを書込み、
コマンドを実行する。
定できる。コマンじ パラメータ レジスタCPIOに
使用するメイル ボックスMBXの番号、および指定し
たメイル・ボックスM B Xへ送るデータを書込み、
コマンドを実行する。
コマンド12が実行されると、入力データのエラーを検
査しくステップの))、エラーが検出されればコマンド
/ステータス レジスタCN5Tにエラーコードをセッ
トして(ステップO)メインルーチンに戻る。
査しくステップの))、エラーが検出されればコマンド
/ステータス レジスタCN5Tにエラーコードをセッ
トして(ステップO)メインルーチンに戻る。
エラーが検出されなければ、送信データを指定された番
号のメイル ボックスM B Xに書込む(ステップO
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ(211)。これはすべての
タスクのタスク制御ブロックTCB内のタスク・ステー
タ■中のPENDWフラグおよびメイルボックス番号の
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]ヘスキノブする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内のP
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
号のメイル ボックスM B Xに書込む(ステップO
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ(211)。これはすべての
タスクのタスク制御ブロックTCB内のタスク・ステー
タ■中のPENDWフラグおよびメイルボックス番号の
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]ヘスキノブする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内のP
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
そして送信待ちのタスクがある場合、ない場合共に、コ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、サラにTSKCHGフ
ラグをセットして(ステップO)メインルーチンに戻る
。
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、サラにTSKCHGフ
ラグをセットして(ステップO)メインルーチンに戻る
。
コマンド13(コマンド名: PEND 、第20図7
0−チャート)は別タスクより、指定したメイル・ボッ
クスMBXを介してデータを受け取るコマンドである。
0−チャート)は別タスクより、指定したメイル・ボッ
クスMBXを介してデータを受け取るコマンドである。
コマンド・パラメータ・レジスタCPIOにデータを受
け取るメイル・ボックスM B Xの番号を書込みコマ
ンドを実行する。コマンド13が実行されると、まず入
力データのエラー検査が行なわれ(ステップの)、エラ
ーがあればコマンド/ステータス レジスタCN5Tに
エラーコードをセットして(ステップO)、メインルー
チンに戻る。
け取るメイル・ボックスM B Xの番号を書込みコマ
ンドを実行する。コマンド13が実行されると、まず入
力データのエラー検査が行なわれ(ステップの)、エラ
ーがあればコマンド/ステータス レジスタCN5Tに
エラーコードをセットして(ステップO)、メインルー
チンに戻る。
エラーが検出されなければ、指定したメイル・ボックス
M B Xにデータが既に書込まれているかとうかチェ
ックする(ステップΦ)。もし書込まれていなければ、
RUNフラグをリセソ) 、PENDWフラグを七ノド
しくステップ0)、またTSKCHGフラグをセットす
る(ステップ@)。そして次に・コマンド/ステータス
・レジスタCN5Tにデータ未着コードをセットしくス
テップ・)、メインルーチンに戻る。既にデータが書込
まれていれば、コマンド パラメータ・レジスタCPI
Oに指定したメイル・ボックスMBXに書込まれている
データを転送しくステップ@)、コマンド/ステータス
・レジスタCN5Tに正常終了コードをセットして(ス
テップ■)、メインルーチンに戻る。
M B Xにデータが既に書込まれているかとうかチェ
ックする(ステップΦ)。もし書込まれていなければ、
RUNフラグをリセソ) 、PENDWフラグを七ノド
しくステップ0)、またTSKCHGフラグをセットす
る(ステップ@)。そして次に・コマンド/ステータス
・レジスタCN5Tにデータ未着コードをセットしくス
テップ・)、メインルーチンに戻る。既にデータが書込
まれていれば、コマンド パラメータ・レジスタCPI
Oに指定したメイル・ボックスMBXに書込まれている
データを転送しくステップ@)、コマンド/ステータス
・レジスタCN5Tに正常終了コードをセットして(ス
テップ■)、メインルーチンに戻る。
コマンド+4(コマンド名: PMOD 、第21図フ
ローチャート) 4;II 、ボートIとボート2のデ
ータ入出力方向を設定するコマンドである。コマンド・
パラメータ レジスタCPIOにボートlとボート2と
の入出力方向を指定するだめのフードを設定してコマン
ドを実行する。
ローチャート) 4;II 、ボートIとボート2のデ
ータ入出力方向を設定するコマンドである。コマンド・
パラメータ レジスタCPIOにボートlとボート2と
の入出力方向を指定するだめのフードを設定してコマン
ドを実行する。
コマンド・パラメータ・レジスタCPIOに設定された
コードに甚づきボートIとボート2の人出力方向を指定
しくステップ頴Φ)、コマンド/ステータス・レジスタ
CN5Tに正常終了コードをセットして(ステップ[相
])、メインルーチンに戻る。
コードに甚づきボートIとボート2の人出力方向を指定
しくステップ頴Φ)、コマンド/ステータス・レジスタ
CN5Tに正常終了コードをセットして(ステップ[相
])、メインルーチンに戻る。
タスクから発行されたーL上記音のコマンドO〜14の
処理ルーチンを実行し、第6図のメインルーチンに戻る
と、まずコマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされているかどうかの判定を行なう
(ステップ[株])。エラーコードがセットされていれ
ばステップ■ヘスキソプし、もしエラーコードがセット
されていなければ、次にT S K CHG フラグか
セットされているかとうか判定する(ステップ@)。T
SKCHGフラクが0”′てあればステップ0ヘスキノ
ラ°シ、パ1″であればタスク切換えルーチンを実行す
る(ステップ■、タスク切換えルーチンは第22図のフ
ローチャートに詳しく述べられる)。ステップ[相]ま
たはステップ[株]からスキップして、あるいはタスク
切換えルーチン(ステップ[相])が実行されてメイン
ルーチンに戻ると、次のコマンド受は入れ準備を行ない
(ステップ@) 、TSKCHG フラグをリセットす
る(ステップ■)。そして、ステップ■に戻り、次のコ
マンド受は入れ待ち状態となる。
処理ルーチンを実行し、第6図のメインルーチンに戻る
と、まずコマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされているかどうかの判定を行なう
(ステップ[株])。エラーコードがセットされていれ
ばステップ■ヘスキソプし、もしエラーコードがセット
されていなければ、次にT S K CHG フラグか
セットされているかとうか判定する(ステップ@)。T
SKCHGフラクが0”′てあればステップ0ヘスキノ
ラ°シ、パ1″であればタスク切換えルーチンを実行す
る(ステップ■、タスク切換えルーチンは第22図のフ
ローチャートに詳しく述べられる)。ステップ[相]ま
たはステップ[株]からスキップして、あるいはタスク
切換えルーチン(ステップ[相])が実行されてメイン
ルーチンに戻ると、次のコマンド受は入れ準備を行ない
(ステップ@) 、TSKCHG フラグをリセットす
る(ステップ■)。そして、ステップ■に戻り、次のコ
マンド受は入れ待ち状態となる。
上記したようにコマンド処理ルーチンでTSKCHGフ
ラグか七ノ)(”I”)されれば、タスク切換えルーチ
ンを実行する。第22図の70−ヂヤートにおいて、タ
スク切換えルーチンに入ると、まずコマンド1(初期設
定終了および実行開始)の実行時かどうかのチェックを
行なう(ステップ・)。
ラグか七ノ)(”I”)されれば、タスク切換えルーチ
ンを実行する。第22図の70−ヂヤートにおいて、タ
スク切換えルーチンに入ると、まずコマンド1(初期設
定終了および実行開始)の実行時かどうかのチェックを
行なう(ステップ・)。
コマンド1の実行時であればステップ[相]ヘスキップ
し、以降の処理により、先にコマンド0(初期設定)で
登録したタスクの中から、まず、レディーQの先頭に接
続されているタスクのタスク制御ブロックTCBをレデ
ィーQから切離しくステップ[相])、このタスク制御
ブロックTCB内のタスク スタック・ポインタ■(第
3図参照)の値を新スタック・ポインタ・レジスタSP
Hにlf 込む(ステップ○)。そして、タスク制御ブ
ロックTCB内のタスク ステータス■にRU Nフラ
グをセットして(ステップ○)、マスタCPU2に対し
て割込みを要求するため、割り込み(IP)フラグをセ
ットして(ステップO)、マスタCPU2からの割り込
み応答を待つ(ステップ○)。マスタCPU割り込み応
答待ちルーチンは、第23図で述べる。
し、以降の処理により、先にコマンド0(初期設定)で
登録したタスクの中から、まず、レディーQの先頭に接
続されているタスクのタスク制御ブロックTCBをレデ
ィーQから切離しくステップ[相])、このタスク制御
ブロックTCB内のタスク スタック・ポインタ■(第
3図参照)の値を新スタック・ポインタ・レジスタSP
Hにlf 込む(ステップ○)。そして、タスク制御ブ
ロックTCB内のタスク ステータス■にRU Nフラ
グをセットして(ステップ○)、マスタCPU2に対し
て割込みを要求するため、割り込み(IP)フラグをセ
ットして(ステップO)、マスタCPU2からの割り込
み応答を待つ(ステップ○)。マスタCPU割り込み応
答待ちルーチンは、第23図で述べる。
マスタCPU2は、割り込みを受け付ければ、割り込み
を要求した制御素子に対応したタスク切換え割込みルー
チンにより準備された、新しいタスクのスタック ポイ
ンタの値を読込み、割込みルーチンのリターンと同時に
、マスタCPU2の管理下においてそのタスクを実行す
る。マスタCPU2におけるタスク切り換えのための割
り込みルーチンは、第28図で詳しく述べる。
を要求した制御素子に対応したタスク切換え割込みルー
チンにより準備された、新しいタスクのスタック ポイ
ンタの値を読込み、割込みルーチンのリターンと同時に
、マスタCPU2の管理下においてそのタスクを実行す
る。マスタCPU2におけるタスク切り換えのための割
り込みルーチンは、第28図で詳しく述べる。
コマンドlの実行待以外では、タスクが実行状態かとう
か検査される(ステップ[有])。実行状態でない場合
、ステップ■ヘスキソブし、旧スタック・ポインタ・レ
ジスタSPBのデータを、前まで実行状態にあったタス
クのタスク制御ブロックTCB内のタスク スタック・
ポインタ■領域に書込み、保存する。
か検査される(ステップ[有])。実行状態でない場合
、ステップ■ヘスキソブし、旧スタック・ポインタ・レ
ジスタSPBのデータを、前まで実行状態にあったタス
クのタスク制御ブロックTCB内のタスク スタック・
ポインタ■領域に書込み、保存する。
その後、コマンドを受け入れた制御素子11の管理タス
ク中に、次に実行可能となるレディー状態のタスクが存
在するかを判断しくステップ○)、存在すればL E
O(下位素子イネーブル)出力端子を“’Low”′に
して(ステップO)、下位のマルチ・タスク制御素子の
実行を禁止する。もし、レディ、−状態のタスクが存存
しなければ、LEO端子を’High″にして(ステッ
プ○)、下位のマルチ・タスク制御素子の割り込みを許
可し、下位の素子の管理下にあるタスクを実行可能にす
る。自分自身は、ステップO2Oをループして、レディ
タスクが出現するまで待機する。同一素子の管理下の
すべてのタスクが停止または待機状態で、レディ・タス
クが存在しない状態からレディ・タスクが出現するのは
、本実施例では、コマンド5(TSPD)によって外部
イベント起動を指定していたタスクが、ボート3の遷移
により起動かかかり、レディー状態になる場合である。
ク中に、次に実行可能となるレディー状態のタスクが存
在するかを判断しくステップ○)、存在すればL E
O(下位素子イネーブル)出力端子を“’Low”′に
して(ステップO)、下位のマルチ・タスク制御素子の
実行を禁止する。もし、レディ、−状態のタスクが存存
しなければ、LEO端子を’High″にして(ステッ
プ○)、下位のマルチ・タスク制御素子の割り込みを許
可し、下位の素子の管理下にあるタスクを実行可能にす
る。自分自身は、ステップO2Oをループして、レディ
タスクが出現するまで待機する。同一素子の管理下の
すべてのタスクが停止または待機状態で、レディ・タス
クが存在しない状態からレディ・タスクが出現するのは
、本実施例では、コマンド5(TSPD)によって外部
イベント起動を指定していたタスクが、ボート3の遷移
により起動かかかり、レディー状態になる場合である。
レディ タスクが存在した場合、および存在せずにレデ
ィ タスクが出現するまで待機していた場合もともに、
続いてステップ・〜○、Oの処理を通して、別のタスク
を実行させる目的で、マルチ・タスク制御素子1iがら
マスタCPU2に対して割り込みを要求するため、割り
込み(IP)フラグをセントし、マスタCPU2がらの
応答を待つ。割り込みが受け何けらねれば、割り込みが
発生し、本制御素子11の管理下にあるタスクへの切り
換えが行われる。
ィ タスクが出現するまで待機していた場合もともに、
続いてステップ・〜○、Oの処理を通して、別のタスク
を実行させる目的で、マルチ・タスク制御素子1iがら
マスタCPU2に対して割り込みを要求するため、割り
込み(IP)フラグをセントし、マスタCPU2がらの
応答を待つ。割り込みが受け何けらねれば、割り込みが
発生し、本制御素子11の管理下にあるタスクへの切り
換えが行われる。
ここで、第23図のマスタCPU割り込み応答待ちルー
チンを説明する。それぞれマルチ・タスク制御素子11
〜1mの内部で割り込み(IP)フラグがセットされて
も、即マスタCPU2に対して割り込みがかかるとは限
らない。IPフラグがセットされて、割り込み信号IN
Tが”L o w ”になるのは、素子のIEI入力端
子が’Higb”の場合に限られる。
チンを説明する。それぞれマルチ・タスク制御素子11
〜1mの内部で割り込み(IP)フラグがセットされて
も、即マスタCPU2に対して割り込みがかかるとは限
らない。IPフラグがセットされて、割り込み信号IN
Tが”L o w ”になるのは、素子のIEI入力端
子が’Higb”の場合に限られる。
マルチ・タスク制御素子11〜1mには、各素子間の割
り込みを制御するために、IEI(割り込みイネーブル
入力)端子およびIEO(割り込みイネーブル入力)端
子が備えられている。IEO端子はIEI端子が’Lo
w’”の場合、およびIEI端子が”Higb”でしか
も割り込み処理を実行している場合に“L o w ”
になる端子である。また、LEO(下位素子イネーブル
出力)端子は上述のように、各素子が自分のW理工のタ
スク中に、実行中またはレディー状態のタスクが存在す
る場合、”Low”になる端子である。
り込みを制御するために、IEI(割り込みイネーブル
入力)端子およびIEO(割り込みイネーブル入力)端
子が備えられている。IEO端子はIEI端子が’Lo
w’”の場合、およびIEI端子が”Higb”でしか
も割り込み処理を実行している場合に“L o w ”
になる端子である。また、LEO(下位素子イネーブル
出力)端子は上述のように、各素子が自分のW理工のタ
スク中に、実行中またはレディー状態のタスクが存在す
る場合、”Low”になる端子である。
マルチ タスク制御素子11〜1mは、これら端子によ
り第27図のようにカスケード接続される。
り第27図のようにカスケード接続される。
即ち、前段のLEO端子信号とIEO端子信号の反転信
号をノアゲートに入れ、この出力を次段のIEI端子に
入力して各制御素子11〜1mをカスケード接続してい
る。そのため、第22図のステップOにおいてIPフラ
グをセットした後、マスタCPU割込み応答待ちルーチ
ン(詳細は第23図参照)に入って、割り込みか受け刊
けられたかどうかを判断する(ステップ○)。割り込み
が受け例けられれば、IPフラグは自動的にリセットさ
れる。上位のマルチ タスク制御素子に実行可能なタス
クが存在しなければ、割り込みは即座に受け付けられる
。しかし、存在すれば割り込みは受け付けられず、IR
TDSフラグをセットして(ステップO)、−上位のマ
ルチ タスク制御用素子管理下の実行可能なタスクがな
くなる、■1工ぢ割り込みが受け付けられるまで、ステ
ップ○、■をループして待機する。割り込みが受け付け
られれば、■RTDSフラグをリセットして(ステップ
■)、リターンする。
号をノアゲートに入れ、この出力を次段のIEI端子に
入力して各制御素子11〜1mをカスケード接続してい
る。そのため、第22図のステップOにおいてIPフラ
グをセットした後、マスタCPU割込み応答待ちルーチ
ン(詳細は第23図参照)に入って、割り込みか受け刊
けられたかどうかを判断する(ステップ○)。割り込み
が受け例けられれば、IPフラグは自動的にリセットさ
れる。上位のマルチ タスク制御素子に実行可能なタス
クが存在しなければ、割り込みは即座に受け付けられる
。しかし、存在すれば割り込みは受け付けられず、IR
TDSフラグをセットして(ステップO)、−上位のマ
ルチ タスク制御用素子管理下の実行可能なタスクがな
くなる、■1工ぢ割り込みが受け付けられるまで、ステ
ップ○、■をループして待機する。割り込みが受け付け
られれば、■RTDSフラグをリセットして(ステップ
■)、リターンする。
第22図のステップOの判断において、タスクが実行状
態(RUN状態)であれば、時分割処理のタイム・アッ
プ時間かどうか検査される(ステップ[相])。時分割
処理指定のタスクがタイム アップした時にはステップ
[株]ヘスキップする。このスキップルーチンは後に説
明する第24図フローチャートのタイマ割込み処理中で
しか通らない。
態(RUN状態)であれば、時分割処理のタイム・アッ
プ時間かどうか検査される(ステップ[相])。時分割
処理指定のタスクがタイム アップした時にはステップ
[株]ヘスキップする。このスキップルーチンは後に説
明する第24図フローチャートのタイマ割込み処理中で
しか通らない。
タイム・アップ時でなければ、レディーQに接続されて
いるタスクがあるかどうかの検査を行なう(ステップC
))。なければ、すなわち、現在実行状態のタスク以外
に実行待ち(レディー)状態のタスクがなければ、第6
図のメインルーチンに戻る。レディーQに接続されてい
るタスクがあれば、次に、実行状態のタスクの優先度と
レディーQの先頭に接続されているタスクの優先度とを
比較する(ステップO)。実行状態のタスクの優先度の
方が高ければ、同じく第6図のメインルーチンに戻る。
いるタスクがあるかどうかの検査を行なう(ステップC
))。なければ、すなわち、現在実行状態のタスク以外
に実行待ち(レディー)状態のタスクがなければ、第6
図のメインルーチンに戻る。レディーQに接続されてい
るタスクがあれば、次に、実行状態のタスクの優先度と
レディーQの先頭に接続されているタスクの優先度とを
比較する(ステップO)。実行状態のタスクの優先度の
方が高ければ、同じく第6図のメインルーチンに戻る。
ステップ■、Oでメインルーチンに戻れば、割込みが発
生されず、現在実行中のタスクがそのまま実行を続行す
ることとなる。
生されず、現在実行中のタスクがそのまま実行を続行す
ることとなる。
レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RUNフラグをリ
セットする(ステップ■)。
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RUNフラグをリ
セットする(ステップ■)。
そして、旧スタック・ポインタ レジスタSPBのデー
タをタスク・制御ブロックTCBのタスク・スタック
ポインタ■領域に保存しくステップ[株])、以降のス
テップ[相]〜Oの処理を通して割込みを発生させる。
タをタスク・制御ブロックTCBのタスク・スタック
ポインタ■領域に保存しくステップ[株])、以降のス
テップ[相]〜Oの処理を通して割込みを発生させる。
なお、ステップ[相]〜Oにおいて、新しく実行状態と
なる別のタスクは、前述したようにレディーQの先頭に
接続されているタスクで、コマンド実行等により最も優
先度が高くなったタスクである。割込みを要求した後、
マスタCPU2により割り込みが受け伺けられた後は、
第6図のメインルーチンに戻り、次のコマンド受は入れ
準備を行なう(第6図ステップ@)。
なる別のタスクは、前述したようにレディーQの先頭に
接続されているタスクで、コマンド実行等により最も優
先度が高くなったタスクである。割込みを要求した後、
マスタCPU2により割り込みが受け伺けられた後は、
第6図のメインルーチンに戻り、次のコマンド受は入れ
準備を行なう(第6図ステップ@)。
第24図、第25図、第26図は第6図のメインルーチ
ンに対する割込み処理ルーチンのフローチャートである
。
ンに対する割込み処理ルーチンのフローチャートである
。
第24図はボート3への入力による割込み処理で、コマ
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起動するもの
である。
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起動するもの
である。
ボート3に入力されている信号の遷移によってこのルー
チンが起動される。このルーチンでは、コマンド5て外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッ) 、READYフラグをセットする
(ステップ0)。すなわち、これによって停止状態のタ
スクが再起動可能状態となるわけで、これか終れば割込
み処理ルーチンからリターンする。
チンが起動される。このルーチンでは、コマンド5て外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッ) 、READYフラグをセットする
(ステップ0)。すなわち、これによって停止状態のタ
スクが再起動可能状態となるわけで、これか終れば割込
み処理ルーチンからリターンする。
第25図はタイマによる割込み処理で、第2図のタイマ
T Mからの信号を内部割込み信号として、これが一定
時間単位で発生ずるとタイマ割込み処理ルーチンに入る
。
T Mからの信号を内部割込み信号として、これが一定
時間単位で発生ずるとタイマ割込み処理ルーチンに入る
。
タイマTMから内部割込み信号が発生すると、まず、シ
ステム・クロック領域SCAに登録されている詩語の値
(時2分1秒のデータ)を進める(ステップ○)。
ステム・クロック領域SCAに登録されている詩語の値
(時2分1秒のデータ)を進める(ステップ○)。
次に、IRTDSフラグ(第23図参照)をチェックし
て、タスク切り換えのための割り込みがマスタCPU2
に受け付けられているか判定する(ステップO)。もし
、IRTD″Sフラグがセットされている、即ち割り込
みが受け付けられていなければ、そのままリターンする
。IRTDSフラグがリセットされていれば、時分割処
理のチェックに入る(ステップ0)。つまり、ステップ
■の判定は、第23図のマスタCPU割り込み応答待ち
ルーチン中の割り込み受け何は待ち(ステップ■、■)
、または第22図のタスク切り換えルーチン中のレディ
・タスク待ち(ステップO1■)の状態であっても、シ
ステム クロック領域SCAのカウントを正常に行うた
めのものである。
て、タスク切り換えのための割り込みがマスタCPU2
に受け付けられているか判定する(ステップO)。もし
、IRTD″Sフラグがセットされている、即ち割り込
みが受け付けられていなければ、そのままリターンする
。IRTDSフラグがリセットされていれば、時分割処
理のチェックに入る(ステップ0)。つまり、ステップ
■の判定は、第23図のマスタCPU割り込み応答待ち
ルーチン中の割り込み受け何は待ち(ステップ■、■)
、または第22図のタスク切り換えルーチン中のレディ
・タスク待ち(ステップO1■)の状態であっても、シ
ステム クロック領域SCAのカウントを正常に行うた
めのものである。
ステップOでは、コマンド7(タスクの時分割処理の設
定、第7図フローチャート)で設定されたレジスタ5L
IPRIに登録されている優先度と、現在実行状態のタ
スクの優先度とを比較する。
定、第7図フローチャート)で設定されたレジスタ5L
IPRIに登録されている優先度と、現在実行状態のタ
スクの優先度とを比較する。
時分割処理は指定した優先度より高いレディー状態のタ
スクが存在しない場合に限り有効である。
スクが存在しない場合に限り有効である。
より高い優先度を持つレディー状態のタスクが存在すれ
ば、そのタスクが実行され時分割処理は無効となるが、
高い優先度のタスクがなくなれば有効となる。上記ステ
ップ0の比較は、レジスタ5LIPRIに登録されてい
る優先度のタスクが実行中であるかとうか検査すること
と同等であり、時分割処理指定タスクが実行状態にない
場合は直ちに割込み処理ルーチンからリターンする。
ば、そのタスクが実行され時分割処理は無効となるが、
高い優先度のタスクがなくなれば有効となる。上記ステ
ップ0の比較は、レジスタ5LIPRIに登録されてい
る優先度のタスクが実行中であるかとうか検査すること
と同等であり、時分割処理指定タスクが実行状態にない
場合は直ちに割込み処理ルーチンからリターンする。
レジスタ5LIPRIに登録されている優先度と現在実
行状態のタスクの優先度と一致1.つまり、現在実行状
態のタスクが時分割処理指定のタスクであれば、レジス
タS L I CNTて登録されている時間が経過した
かとうかの判定を行なう(ステップO)。経過していな
ければ、この割込み処理ルーチンからリターンする。す
なわち、マルチタスク制御用素子lはメインルーチンに
戻り次のコマンド受は入れ待ち状態とf(す、マスタC
PU2は時分割処理指定の現在実行状態にあるタスクを
続けて実行する。
行状態のタスクの優先度と一致1.つまり、現在実行状
態のタスクが時分割処理指定のタスクであれば、レジス
タS L I CNTて登録されている時間が経過した
かとうかの判定を行なう(ステップO)。経過していな
ければ、この割込み処理ルーチンからリターンする。す
なわち、マルチタスク制御用素子lはメインルーチンに
戻り次のコマンド受は入れ待ち状態とf(す、マスタC
PU2は時分割処理指定の現在実行状態にあるタスクを
続けて実行する。
登録された時間が経過したときは、実行状態のタスクの
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、READYフラ
グを七ノドしくステップO)、第22図のタスク切換え
ルーチンをコールする(ステップ○)。
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、READYフラ
グを七ノドしくステップO)、第22図のタスク切換え
ルーチンをコールする(ステップ○)。
第22図フローチャートにおいて、時分割処理指tのタ
スクがタイム・アップした場合は、ステップ■からステ
ップψヘスキンブする。そして、前まで実行状態にあっ
たタスクのタスク・スタック・ポインタ■領域に旧スタ
ック ポインタ・レジスタSPBのデータを保存する(
ステップ[相])。
スクがタイム・アップした場合は、ステップ■からステ
ップψヘスキンブする。そして、前まで実行状態にあっ
たタスクのタスク・スタック・ポインタ■領域に旧スタ
ック ポインタ・レジスタSPBのデータを保存する(
ステップ[相])。
次に、ステップO2Oを経て、時分割処理に指定された
同し優先度を持つタスクのタスク制御ブロックTCBを
レディーQから切離しくステップ@)、このタスク制御
ブロックTCB内のタスク・スタック・ポインタ■領域
のデータを新スタック・ポインタ・レジスタSPHに書
込む(ステップ■)。そして最後にタスク・ステータス
0にRUNフラグをセットする(ステップ@)。
同し優先度を持つタスクのタスク制御ブロックTCBを
レディーQから切離しくステップ@)、このタスク制御
ブロックTCB内のタスク・スタック・ポインタ■領域
のデータを新スタック・ポインタ・レジスタSPHに書
込む(ステップ■)。そして最後にタスク・ステータス
0にRUNフラグをセットする(ステップ@)。
こうしたタスク切換えルーチンを行なったのち割込みか
らリターンする。マスタCPU2では上述したマルチ・
タスク制御素子11の動作により、時分割処理に指定し
た別のタスクを実行することとなる。
らリターンする。マスタCPU2では上述したマルチ・
タスク制御素子11の動作により、時分割処理に指定し
た別のタスクを実行することとなる。
第26図は、IEI端子の立ち下かりて内部割り込みが
発生した際の処理のフローチャートである。第27図の
ように接続された複数のマルチ・タスク制御素子11〜
1mの中で、下位の制御素子(これを11.と呼ぶ)の
管理下のタスクが実行中に、」二位の制御素子(これを
I Hと呼ぶ)の管理下のタスクの中にレディー状態の
タスクが出現した際、上位の制御素子IHがLEO端子
を”Low’“にする(第22図 ステップ○)ために
・その素子IHより下位のものけずへてIEI入力およ
びIEO出力がLow”となり、内部でIF5割り込み
が発生する。
発生した際の処理のフローチャートである。第27図の
ように接続された複数のマルチ・タスク制御素子11〜
1mの中で、下位の制御素子(これを11.と呼ぶ)の
管理下のタスクが実行中に、」二位の制御素子(これを
I Hと呼ぶ)の管理下のタスクの中にレディー状態の
タスクが出現した際、上位の制御素子IHがLEO端子
を”Low’“にする(第22図 ステップ○)ために
・その素子IHより下位のものけずへてIEI入力およ
びIEO出力がLow”となり、内部でIF5割り込み
が発生する。
この時、制御素子IHとI+、の間にある素子は、RU
N状態のタスクをもたないためそのままリターンする(
ステップO)。ただし、制御素子ILは、実行中のタス
クが存在するため、ステップ■に進み割り込み(IP)
フラグをセットしくステップO)、マスタCPU割り込
み応答待ちルーチンに入る(ステップ■)。この時点で
、上位の制御用素子IHはIEO端子をLr)w”にし
た後(第22図参照)、ステップ@〜○、■ を経て割
り込みを発生する。制御素子IHは、その時点では最上
位にあるため、この割り込みは即座に受け付けられ、素
子111の管理下にあるタスクに実行が移る。そして、
素子ILの管理下の実行中であったタスクは、本来なら
実行状態にあるにもかかわらず実行が中断される。
N状態のタスクをもたないためそのままリターンする(
ステップO)。ただし、制御素子ILは、実行中のタス
クが存在するため、ステップ■に進み割り込み(IP)
フラグをセットしくステップO)、マスタCPU割り込
み応答待ちルーチンに入る(ステップ■)。この時点で
、上位の制御用素子IHはIEO端子をLr)w”にし
た後(第22図参照)、ステップ@〜○、■ を経て割
り込みを発生する。制御素子IHは、その時点では最上
位にあるため、この割り込みは即座に受け付けられ、素
子111の管理下にあるタスクに実行が移る。そして、
素子ILの管理下の実行中であったタスクは、本来なら
実行状態にあるにもかかわらず実行が中断される。
実行が再開されるのは、素子ILより」;位の素子の管
理下のタスク中でレディー状態のものがなくなり(第2
2図 ステップ■、O)、素子ILのIEI端子がHi
gh”′になるまでである。
理下のタスク中でレディー状態のものがなくなり(第2
2図 ステップ■、O)、素子ILのIEI端子がHi
gh”′になるまでである。
素子ILの内部処理は、ステップ■の割り込み応答待ち
ルーチン中(第23図参照)で、ステップO,Qをルー
プして、IEI端子が’High1”′になるまで待機
する。IEI端子”High″になれば、素子ILの割
り込みが受け付けられ、素子IL管理下の前に実行状態
のまま中断されていたタスクが実行を再開する。
ルーチン中(第23図参照)で、ステップO,Qをルー
プして、IEI端子が’High1”′になるまで待機
する。IEI端子”High″になれば、素子ILの割
り込みが受け付けられ、素子IL管理下の前に実行状態
のまま中断されていたタスクが実行を再開する。
このようにIF5割込みは結局実行ヴのタスクを管理し
ていた下位制御素子の動作状態を、第22図又は第23
図のマスタCPU割込み応答待ちルーチンに入れ、実行
状態のまま上位の制御素子によって実行を中断されたタ
スクの実行再開を可能にする。
ていた下位制御素子の動作状態を、第22図又は第23
図のマスタCPU割込み応答待ちルーチンに入れ、実行
状態のまま上位の制御素子によって実行を中断されたタ
スクの実行再開を可能にする。
続いて、マスタCPU2におけるタスク切り換えの割り
込み処理について詳しく説明する。第28図は、このタ
スク切り換え割り込みルーチンのフローチャートである
。第27図のように、複数個のマルチ−タスク制御素子
11〜1mを接続すれば、それぞれの素子に対応したタ
スク切り換え割り込みルーチンが必要である。マスタC
PU2は、割り込みを受けイ」げた時、どの制御素子が
割り込みを要求しているかは、第2図の割り込みベクタ
・レジスタMIVに書き込まれたベクタによって識別で
き、さらにどの割り込み処理ルーチンを実行すべきか判
断できる。
込み処理について詳しく説明する。第28図は、このタ
スク切り換え割り込みルーチンのフローチャートである
。第27図のように、複数個のマルチ−タスク制御素子
11〜1mを接続すれば、それぞれの素子に対応したタ
スク切り換え割り込みルーチンが必要である。マスタC
PU2は、割り込みを受けイ」げた時、どの制御素子が
割り込みを要求しているかは、第2図の割り込みベクタ
・レジスタMIVに書き込まれたベクタによって識別で
き、さらにどの割り込み処理ルーチンを実行すべきか判
断できる。
以下、第28図のフローチャートに従って説明する。今
、割り込みが受け付けられた制御素子を11とし、以下
制御素子1iに対応する割り込み処理について説明する
。割り込みが発生ずると、直前まで実行していたタスク
のレジスタをスタック領域にブツシュする(ステップO
)。次に、割り込みが受けイ」けられた制御素子(自分
)11の管理下のタスクの切り換えかどうかをスタック
・ポインタ(sp)の値より判断する(ステップ○)。
、割り込みが受け付けられた制御素子を11とし、以下
制御素子1iに対応する割り込み処理について説明する
。割り込みが発生ずると、直前まで実行していたタスク
のレジスタをスタック領域にブツシュする(ステップO
)。次に、割り込みが受けイ」けられた制御素子(自分
)11の管理下のタスクの切り換えかどうかをスタック
・ポインタ(sp)の値より判断する(ステップ○)。
つまり、割り込みにより実行を中断したタスクが、割り
込みを発生した制御素子1iの管理下にあるかどうか判
断する。各タスクのスタック領域は、第29図のように
各タスク毎に用意し、さらに各制御素子H〜1m毎に識
別できる様に用意されているものとする。そのため、ス
テップOにおいて、現在のSPの値を読み出し、その値
がどのアドレスの範囲内にあるかによって、どのタスク
が実行していたのか判断できる。
込みを発生した制御素子1iの管理下にあるかどうか判
断する。各タスクのスタック領域は、第29図のように
各タスク毎に用意し、さらに各制御素子H〜1m毎に識
別できる様に用意されているものとする。そのため、ス
テップOにおいて、現在のSPの値を読み出し、その値
がどのアドレスの範囲内にあるかによって、どのタスク
が実行していたのか判断できる。
もし、同一素子11の管理下のタスクであれば、自分の
制御素子11の旧スタック・ポインタ・レジスタSPH
に現在のSPの値を書き込む(ステップO)。続いて、
新スタック・ポインタ・レジスタSPNより次に実行す
べきタスクのSPの値を読み出しくステップQ)、SP
をその値に書き換える(ステップO)。その後、レジス
タをスタック領域よりポツプすれば(ステップO諷次に
実行すべきタスクのレジスタが復帰される。
制御素子11の旧スタック・ポインタ・レジスタSPH
に現在のSPの値を書き込む(ステップO)。続いて、
新スタック・ポインタ・レジスタSPNより次に実行す
べきタスクのSPの値を読み出しくステップQ)、SP
をその値に書き換える(ステップO)。その後、レジス
タをスタック領域よりポツプすれば(ステップO諷次に
実行すべきタスクのレジスタが復帰される。
その後、割り込みよりリターンすれば、次のタスクが実
行を開始する。
行を開始する。
もし、別の制御素子(これを1xと呼ぶ)の管理下のタ
スクの実行を中断したのであれば(ステ、ブ○)、どの
制御素子の管理下のタスクが実行を中断したのかをSP
の値より判断する(ステップO)。次に実行を中断した
タスクを管理する制御素子1xが、割り込みを受け例け
られた自分自身1】よりも下位にあるかどうかを判断す
る(ステップO)・ もし、上位の制御素子(これをl X Hと呼ぶ)であ
れば、その制御素子IXHの下で実行していたタスクは
、停止または待機状態である。この場合には、制御素子
IXHの旧スタック・ポインタ・レジスタSPBに現在
のSPの値を書き込む(ステップC))。続いて、制御
素子11自身のステップO−Oを実行し、割り込みより
リターンする。
スクの実行を中断したのであれば(ステ、ブ○)、どの
制御素子の管理下のタスクが実行を中断したのかをSP
の値より判断する(ステップO)。次に実行を中断した
タスクを管理する制御素子1xが、割り込みを受け例け
られた自分自身1】よりも下位にあるかどうかを判断す
る(ステップO)・ もし、上位の制御素子(これをl X Hと呼ぶ)であ
れば、その制御素子IXHの下で実行していたタスクは
、停止または待機状態である。この場合には、制御素子
IXHの旧スタック・ポインタ・レジスタSPBに現在
のSPの値を書き込む(ステップC))。続いて、制御
素子11自身のステップO−Oを実行し、割り込みより
リターンする。
ステップ[相]において、自分1iより下位の制御素子
(これをIXLと呼ぶ)の場合であれば、制御素子1x
Lの下で実行していたタスクは、実行状態のまま中断さ
れた場合である。そのため、この場合には、制御素子I
XLの新スタック・ポインタ・レジスタSPHに現在の
SPの値を保存(ステップO)した後、同様にステップ
・〜Oを実行後、リターンする。ステップOで保存した
SPの値は、制御素子+x、tより上位の制御素子の管
理下で実行可能なタスクがすべてなくなった時点て、制
御素子1xLの割り込みが受け付けられ、このタスク切
り換えルーチンに入った時、ステップOにおいて新スタ
ック ポインタレジスタSPNより読み出される。
(これをIXLと呼ぶ)の場合であれば、制御素子1x
Lの下で実行していたタスクは、実行状態のまま中断さ
れた場合である。そのため、この場合には、制御素子I
XLの新スタック・ポインタ・レジスタSPHに現在の
SPの値を保存(ステップO)した後、同様にステップ
・〜Oを実行後、リターンする。ステップOで保存した
SPの値は、制御素子+x、tより上位の制御素子の管
理下で実行可能なタスクがすべてなくなった時点て、制
御素子1xLの割り込みが受け付けられ、このタスク切
り換えルーチンに入った時、ステップOにおいて新スタ
ック ポインタレジスタSPNより読み出される。
〈発明の効果〉
以上のように本発明は、マルチ・タスク・システムを構
成する上で、タスク数に応じて必要な個数のマルチ・タ
スク制御素子をカスケード接続できるものであり、シス
テム全体で同時管理可能なタスク数を増加させることが
可能となる。そのため、従来のマルチ タスク制御素子
を用いたシステムにおいて、多くのタスクを管理させる
ために、タスクの生成・消去のコマンドを用いてタスク
を入れ換える操作が不要となる。したかって、タスクの
処理速度か向」二する。また、本発明は、ヘクタ割り込
みをサポートできるCPUてあれば、すべての汎用マイ
クロ・コンピュータ・システムに適用可能である。
成する上で、タスク数に応じて必要な個数のマルチ・タ
スク制御素子をカスケード接続できるものであり、シス
テム全体で同時管理可能なタスク数を増加させることが
可能となる。そのため、従来のマルチ タスク制御素子
を用いたシステムにおいて、多くのタスクを管理させる
ために、タスクの生成・消去のコマンドを用いてタスク
を入れ換える操作が不要となる。したかって、タスクの
処理速度か向」二する。また、本発明は、ヘクタ割り込
みをサポートできるCPUてあれば、すべての汎用マイ
クロ・コンピュータ・システムに適用可能である。
【図面の簡単な説明】
第1図は本発明の制御素子を使用したシステム構成例を
示す図、第2図は本発明の一実施例における制御素子の
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図は第2図
のメモリ マツプMEMMAP領域を説明する図、第5
図は制御素子で使用されるコマンドと入力パラメータお
よび出力パラメータを説明する図、第6図は制御素子の
メインルーチンの動作を部門するフローチャート、第7
図〜第21図は各コマンドによる処理ルーチンの動作を
説明する70−ヂヤート、第22図は制御素子のタスク
切換ルーチンの動作を説明するフローチャート、第23
図は第22図のマスタCPU割り込み応答待ちルーチン
の詳細を示すフローチャート、第24図はイベント入力
による割込み処理ルーチンの動作を説明するフローチャ
ート、第25図はタイマ割込み処理ルーチンの動作を説
明するフローチャート、第26図はIEIリーjり込み
処理ルーチンの動作を説明するフローチャート、第27
図は複数の制御素子のカスケード接続例を示すブロック
図、第28図はマスタCPUにおけるタスク切換え割り
込みルーチンの動作を説明するフローチャート、第29
図はマスタCPUのスタック領域を説明する図である。 トマルチ タスク制御素子群、11〜1m・マルチ タ
スク制御素子、2 マスタCPU、3・・・プログラム
メモリ、6・・データ メモリ、INTC割込み制御
回路、INT 割込み信号、TCB タスク制御ブロッ
ク、C0NT 内部演算制御回路、TM タイマ、SC
A システム・クロック領域、MIV マスク割込み制
御レジスタ、CPIO−コマンド・パラメータ レジス
タ、SPN 新スタック・ポインタ・レジスタ、S P
B −1t−1スクノク・ポインタ・レジスタ、18
1割り込シイネーブル入力端子、IEO割り込みイネ−
フル出力端子、LEO下位素子イネーブル出力端子。 代理人 弁理士 福 士 愛 彦(他2名)第6[21 ,¥、7図 第101]/ 第72図 473 M 第14[4 第16図 第75図 第77図 第19図 第20図 第25図 第26図 第271 第28図 ス/yり肩iml 第29図
示す図、第2図は本発明の一実施例における制御素子の
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図は第2図
のメモリ マツプMEMMAP領域を説明する図、第5
図は制御素子で使用されるコマンドと入力パラメータお
よび出力パラメータを説明する図、第6図は制御素子の
メインルーチンの動作を部門するフローチャート、第7
図〜第21図は各コマンドによる処理ルーチンの動作を
説明する70−ヂヤート、第22図は制御素子のタスク
切換ルーチンの動作を説明するフローチャート、第23
図は第22図のマスタCPU割り込み応答待ちルーチン
の詳細を示すフローチャート、第24図はイベント入力
による割込み処理ルーチンの動作を説明するフローチャ
ート、第25図はタイマ割込み処理ルーチンの動作を説
明するフローチャート、第26図はIEIリーjり込み
処理ルーチンの動作を説明するフローチャート、第27
図は複数の制御素子のカスケード接続例を示すブロック
図、第28図はマスタCPUにおけるタスク切換え割り
込みルーチンの動作を説明するフローチャート、第29
図はマスタCPUのスタック領域を説明する図である。 トマルチ タスク制御素子群、11〜1m・マルチ タ
スク制御素子、2 マスタCPU、3・・・プログラム
メモリ、6・・データ メモリ、INTC割込み制御
回路、INT 割込み信号、TCB タスク制御ブロッ
ク、C0NT 内部演算制御回路、TM タイマ、SC
A システム・クロック領域、MIV マスク割込み制
御レジスタ、CPIO−コマンド・パラメータ レジス
タ、SPN 新スタック・ポインタ・レジスタ、S P
B −1t−1スクノク・ポインタ・レジスタ、18
1割り込シイネーブル入力端子、IEO割り込みイネ−
フル出力端子、LEO下位素子イネーブル出力端子。 代理人 弁理士 福 士 愛 彦(他2名)第6[21 ,¥、7図 第101]/ 第72図 473 M 第14[4 第16図 第75図 第77図 第19図 第20図 第25図 第26図 第271 第28図 ス/yり肩iml 第29図
Claims (1)
- 1 マルチ・タスク制御用のコマンドをマスタCPUか
ら受けて該コマンドを実行し、上記マスクCPUにより
処理される複数のタスクの管理を上記マスタCPU以外
で行うものにおいて、素子相互間の」二記マスタCPU
に対する割込み制御機能を備えたカスケード接続用端子
を設けてなることを特徴とするマルチ タスク制御素子
。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1922484A JPS60163133A (ja) | 1984-02-03 | 1984-02-03 | マルチ・タスク制御素子 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1922484A JPS60163133A (ja) | 1984-02-03 | 1984-02-03 | マルチ・タスク制御素子 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS60163133A true JPS60163133A (ja) | 1985-08-26 |
Family
ID=11993395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1922484A Pending JPS60163133A (ja) | 1984-02-03 | 1984-02-03 | マルチ・タスク制御素子 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS60163133A (ja) |
-
1984
- 1984-02-03 JP JP1922484A patent/JPS60163133A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5168566A (en) | Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks | |
JPH0221018B2 (ja) | ||
JPS6031648A (ja) | マルチ・タスク制御方法 | |
US20060200610A1 (en) | System and method of interrupt handling | |
JP3113841B2 (ja) | 並列トランザクション処理システム | |
US20070033384A1 (en) | Real-time embedded simple monitor method and computer product | |
CA1304513C (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
JP3644042B2 (ja) | マルチタスク処理装置 | |
JPS60163133A (ja) | マルチ・タスク制御素子 | |
JPH0376500B2 (ja) | ||
JP2693916B2 (ja) | タスクスケジュール方法 | |
JPH0348538B2 (ja) | ||
JP3006676B2 (ja) | マルチプロセッサ | |
JPH0376497B2 (ja) | ||
JPH0376499B2 (ja) | ||
JPS60215249A (ja) | マルチ・タスク制御素子を内蔵したコンピユ−タ周辺装置 | |
JPH0376498B2 (ja) | ||
JP2023091314A (ja) | 半導体装置、半導体装置の制御方法及びプログラム | |
JP2871171B2 (ja) | マイクロコンピュータ | |
JPS60114942A (ja) | マルチ・タスク制御用デバイス | |
JPH01216432A (ja) | マルチタスクシステム | |
JPS63103312A (ja) | タイマ制御方式 | |
JPS59111563A (ja) | マルチプロセツサの制御方式 | |
JPS5831465A (ja) | プロセツサ制御方式 | |
JPS608939A (ja) | 特殊機能セツト・アツプ制御方式 |