JPH02193228A - 情報処理装置 - Google Patents
情報処理装置Info
- Publication number
- JPH02193228A JPH02193228A JP1184989A JP1184989A JPH02193228A JP H02193228 A JPH02193228 A JP H02193228A JP 1184989 A JP1184989 A JP 1184989A JP 1184989 A JP1184989 A JP 1184989A JP H02193228 A JPH02193228 A JP H02193228A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- task
- instruction
- internal register
- data
- 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.)
- Granted
Links
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野]
本発明は、メモリ内に記憶された排他処理情報を含む命
令情報を順次読み出して解釈を行う解釈手段と、該解釈
手段での結果に従い前記命令情報の実行を行う実行手段
とを有する情報処理装置に関するものである。
令情報を順次読み出して解釈を行う解釈手段と、該解釈
手段での結果に従い前記命令情報の実行を行う実行手段
とを有する情報処理装置に関するものである。
[従来の技術]
従来のコンピュータのプログラミングにおいては、次の
例に示すような実行条件を指定しようとしたなら、その
条件をユーザがプログラムとして記述しなければならな
かった。
例に示すような実行条件を指定しようとしたなら、その
条件をユーザがプログラムとして記述しなければならな
かった。
く例〉
疑似並列的に複数のタスクを実行するコンピュータ上で
、タスクtask 1およびtask 2がそれぞれ走
行しているものとする。そして、前記コンビュ−夕上に
は、排他的に処理すべき入出力ボートPがあり、そこに
出力すべき値が格納される変数をX、ボートPから読み
出された値が格納される変数をYとする。
、タスクtask 1およびtask 2がそれぞれ走
行しているものとする。そして、前記コンビュ−夕上に
は、排他的に処理すべき入出力ボートPがあり、そこに
出力すべき値が格納される変数をX、ボートPから読み
出された値が格納される変数をYとする。
以上の構成において、上述した2個のタスクが入出力ボ
ートPに対して、出力および入力を要求する場合には、
task 1とask2で排他的に入出力ボートPをア
クセスできるように、ユーザ自身が以下に示すようなプ
ログラミングを行わなければならなかった。
ートPに対して、出力および入力を要求する場合には、
task 1とask2で排他的に入出力ボートPをア
クセスできるように、ユーザ自身が以下に示すようなプ
ログラミングを行わなければならなかった。
ask 1
1 : if Sp = Othen Sp = 1
else goto 12:入出力ボートPに変数Xの
値を出力3 : sp = 0 4:次の処理 ask 2 1 : if Sp = Othen Sp 〜1
else goto 12:変数Yに入出力ボートPか
ら読んだ値を書込む 3:sp = 0 4:次の処理 なお、2個のタスクtask 1およびtask 2は
疑似並列的に実行されるが、それぞれのタスクの個々の
ステップ(1:〜4・)は中断されることなく実行され
るものとする。また、Spは「セマフォ」と呼ばれる補
助変数であり、「セマフォ」を先に゛ビ°にしたタスク
が入出力ボートPをアクセスする権利を有すると考えら
れる。
else goto 12:入出力ボートPに変数Xの
値を出力3 : sp = 0 4:次の処理 ask 2 1 : if Sp = Othen Sp 〜1
else goto 12:変数Yに入出力ボートPか
ら読んだ値を書込む 3:sp = 0 4:次の処理 なお、2個のタスクtask 1およびtask 2は
疑似並列的に実行されるが、それぞれのタスクの個々の
ステップ(1:〜4・)は中断されることなく実行され
るものとする。また、Spは「セマフォ」と呼ばれる補
助変数であり、「セマフォ」を先に゛ビ°にしたタスク
が入出力ボートPをアクセスする権利を有すると考えら
れる。
[発明が解決しようとする課題]
しかしながら、上記従来例のように、実行条件を満たす
かどうかの判断を、ユーザ自身が記述したプログラムに
よって行うということは、ユーザがコーディングするプ
ログラム量が増えるということであり、バグの発生率も
増え、メモリの利用効率の点からも実行速度の点からも
、好ましくないことである。
かどうかの判断を、ユーザ自身が記述したプログラムに
よって行うということは、ユーザがコーディングするプ
ログラム量が増えるということであり、バグの発生率も
増え、メモリの利用効率の点からも実行速度の点からも
、好ましくないことである。
特に並列処理プログラムにおいては、排他制御は説明す
るまでもなく重要な問題で、あるタスクの特定のステッ
プを実行する際に、他のタスクのあるステップが実行中
であるか否かを、実行条件にすることがよく行われる。
るまでもなく重要な問題で、あるタスクの特定のステッ
プを実行する際に、他のタスクのあるステップが実行中
であるか否かを、実行条件にすることがよく行われる。
これは、各タスク間で共有資源(メモリ、入出力タスク
など)を同時にアクセスすることを避けるために行われ
る処理である。従って、実行条件をコンパクトに書けて
実行条件の判断を早く行えることが、並列処理プログラ
ムにおいては特に重要である。
など)を同時にアクセスすることを避けるために行われ
る処理である。従って、実行条件をコンパクトに書けて
実行条件の判断を早く行えることが、並列処理プログラ
ムにおいては特に重要である。
本発明は、上記課題を解決するために成されたもので、
ユーザがプログラムとして実行条件な記述する必要がな
く、プログラムの容量が小さくなることで、ユーザの負
担を軽くすることができる情報処理装置を提供すること
を目的とする。
ユーザがプログラムとして実行条件な記述する必要がな
く、プログラムの容量が小さくなることで、ユーザの負
担を軽くすることができる情報処理装置を提供すること
を目的とする。
[課題を解決するための手段]
上記目的を達成するために、本発明の情報処理装置は、
以下の構成を備える。即ち、 メモリ内に記憶された排他処理情報を含む命令情報を順
次読み出して解釈を行う解釈手段と、該解釈手段での結
果に従い前記命令情報の実行を行う実行手段とを有する
情報処理装置であって、前記解釈手段により読み出され
た命令情報に含まれる排他処理情報を判断する判断手段
と、該判断手段での判断結果に従って前記実行手段によ
る実行を保留する保留手段とを備える。
以下の構成を備える。即ち、 メモリ内に記憶された排他処理情報を含む命令情報を順
次読み出して解釈を行う解釈手段と、該解釈手段での結
果に従い前記命令情報の実行を行う実行手段とを有する
情報処理装置であって、前記解釈手段により読み出され
た命令情報に含まれる排他処理情報を判断する判断手段
と、該判断手段での判断結果に従って前記実行手段によ
る実行を保留する保留手段とを備える。
[作用]
以上の構成において、解釈手段により読み出された命令
情報に含まれる排他処理情報を判断し、その判断結果に
従って実行手段による実行を保留するように動作する。
情報に含まれる排他処理情報を判断し、その判断結果に
従って実行手段による実行を保留するように動作する。
[実施例]
以下、添付図面を参照して本発明に係る好適な一実施例
を詳細に説明する。
を詳細に説明する。
く命令形式の説明 (第1図)〉
第1図は、本発明に基づくコンピュータの命令形式を示
した図である。図において、命令コード13及びオペラ
ンド14は、従来のコンピュータと同じ形式であるが、
実行判定データの個数11と、実行判定データ12−1
〜12−nが特有のものである。そして、実行判定デー
タの個数11は、実行判定データ12−1〜12−nと
して、いくつの条件が示されているかを表わし、本実施
例での実行判定データはタスク番号Xと、そのXで示さ
れるタスク内のステップ番号Nである。
した図である。図において、命令コード13及びオペラ
ンド14は、従来のコンピュータと同じ形式であるが、
実行判定データの個数11と、実行判定データ12−1
〜12−nが特有のものである。そして、実行判定デー
タの個数11は、実行判定データ12−1〜12−nと
して、いくつの条件が示されているかを表わし、本実施
例での実行判定データはタスク番号Xと、そのXで示さ
れるタスク内のステップ番号Nである。
本実施例で、例えば、タスク番号Xとステップ番号Nと
して、次の値が書かれていたとする。
して、次の値が書かれていたとする。
X=2 N=3
これは、「タスク2の第3ステツプが実行中であったな
ら、これが書かれているステップの実行は禁止する」と
いう意味に解釈される。
ら、これが書かれているステップの実行は禁止する」と
いう意味に解釈される。
また、本実施例においては、実行判定データの個数11
および実行判定データ12−1〜12−nフィールド全
体を実行条件判断部15と呼び、命令コード13および
オペランド14のフィールドを命令本体部16と呼ぶ。
および実行判定データ12−1〜12−nフィールド全
体を実行条件判断部15と呼び、命令コード13および
オペランド14のフィールドを命令本体部16と呼ぶ。
なお、第1図で示すオペランド14フイールドの長さは
、1ワードであるが、命令コード13内のコードによっ
ては、オペランド14フイールドの長さは変化するもの
とする。
、1ワードであるが、命令コード13内のコードによっ
ては、オペランド14フイールドの長さは変化するもの
とする。
く構成の説明 (第2図)〉
第2図は、第1図に示した形式の命令を解釈・実行する
本実施例におけるコンピュータの構成例である。
本実施例におけるコンピュータの構成例である。
図示するように、ユーザプログラムから内容を参照でき
るレジスタ群23、ユーザプログラムから内容を参照で
きない内部レジスタ群30、第3図(a)、(b)に示
す手順を記憶するメモリ25a1メモリ25aの命令を
解釈する命令デコーダ25および演算やデータの移動な
どの命令を実行する命令実行部24が、それぞれ内部バ
ス27を介して接続されている。内部レジスタ群30は
、内部レジスタRO〜R7(図示せず)に分割されてお
り、複数個のデータを記憶することができる。また、内
部レジスタ群30は、命令の解釈の過程で命令デコーダ
25によって用いられるものであり、プログラムからは
参照できない。
るレジスタ群23、ユーザプログラムから内容を参照で
きない内部レジスタ群30、第3図(a)、(b)に示
す手順を記憶するメモリ25a1メモリ25aの命令を
解釈する命令デコーダ25および演算やデータの移動な
どの命令を実行する命令実行部24が、それぞれ内部バ
ス27を介して接続されている。内部レジスタ群30は
、内部レジスタRO〜R7(図示せず)に分割されてお
り、複数個のデータを記憶することができる。また、内
部レジスタ群30は、命令の解釈の過程で命令デコーダ
25によって用いられるものであり、プログラムからは
参照できない。
そして、プログラムとデータは、メモリ21に記憶され
ている。
ている。
次に、入出力は、I10コントローラ22に接続された
第1人出力ボート29aおよび第2人出力ボート29b
を通して行われる。メモリ21とI10コントローラ2
2は、外部データバス28aおよび外部アドレスバス2
8bを介して、レジスタ群23および命令実行部24と
データの授受を行なう。なお、この時、外部データバス
28aはデータバスコントローラ26aにより、また、
外部アドレスバス28bは、アドレスバスコントローラ
26bによって、それぞれ内部バス27との間でデータ
の授受が制御される。
第1人出力ボート29aおよび第2人出力ボート29b
を通して行われる。メモリ21とI10コントローラ2
2は、外部データバス28aおよび外部アドレスバス2
8bを介して、レジスタ群23および命令実行部24と
データの授受を行なう。なお、この時、外部データバス
28aはデータバスコントローラ26aにより、また、
外部アドレスバス28bは、アドレスバスコントローラ
26bによって、それぞれ内部バス27との間でデータ
の授受が制御される。
次に、本実施例における命令デコーダ25は、不図示の
プログラムカウンタが示すメモリ21からプログラム中
のフィールドを、1ワ一ド単位で内部レジスタ群30内
に取り込み、その解釈を行って解釈した結果を命令実行
部24に送出する。
プログラムカウンタが示すメモリ21からプログラム中
のフィールドを、1ワ一ド単位で内部レジスタ群30内
に取り込み、その解釈を行って解釈した結果を命令実行
部24に送出する。
そして、命令実行部24では、命令デコーダ25からの
解釈結果に基づいて、各ステップの処理を実行する。
解釈結果に基づいて、各ステップの処理を実行する。
本実施例に示すシステムは、マルチタスクオペレーティ
ングシステムの管理のもとで複数の異なるタスクを疑似
並列的に実行されることができるものとする。そして、
各タスクがどのステップをどのような状態で実行してい
るかを示すデータをメモリ21上のタスク実行状態デー
タに保持している。このタスク実行状態データを参照す
ることによって、特定のステップが実行条件判断部15
を実行しているのか、命令本体部16を実行しているの
か、あるいは当該ステップが実行されていないのかを判
別することができる。
ングシステムの管理のもとで複数の異なるタスクを疑似
並列的に実行されることができるものとする。そして、
各タスクがどのステップをどのような状態で実行してい
るかを示すデータをメモリ21上のタスク実行状態デー
タに保持している。このタスク実行状態データを参照す
ることによって、特定のステップが実行条件判断部15
を実行しているのか、命令本体部16を実行しているの
か、あるいは当該ステップが実行されていないのかを判
別することができる。
〈処理手順の説明 (第3図)〉
次に、ひとつのタスクの中のひとつのステップに注目し
たときに、命令デコーダ25と命令実行部24が、どの
ような働きをするのかを示した図が第3図(a)および
第3図(b)である。命令デコーダ25と命令実行部2
4が、命令を解釈、実行する手順を第3図(a)および
第3図(b)に基づいて、以下に説明する。
たときに、命令デコーダ25と命令実行部24が、どの
ような働きをするのかを示した図が第3図(a)および
第3図(b)である。命令デコーダ25と命令実行部2
4が、命令を解釈、実行する手順を第3図(a)および
第3図(b)に基づいて、以下に説明する。
なお、上述のように、第3図(a)および第3図(b)
は、ひとつのタスクの中のひとつのステップに注目した
ときの動作である。
は、ひとつのタスクの中のひとつのステップに注目した
ときの動作である。
また、マルチタスクオペレーティングシステムの管理の
もとでは、実行されている複数のタスクそれぞれに対し
て、第3図(a)および第3図(b)に示した処理が疑
似並列的に行われる、ということに注意する必要がある
。
もとでは、実行されている複数のタスクそれぞれに対し
て、第3図(a)および第3図(b)に示した処理が疑
似並列的に行われる、ということに注意する必要がある
。
本実施例では、命令デコーダ25と命令実行部24以外
の各部分の動作については、従来からのコンピュータの
動作と変わるところがないので、ここでの説明は省略す
る。
の各部分の動作については、従来からのコンピュータの
動作と変わるところがないので、ここでの説明は省略す
る。
まず、ステップS31において、各命令形式の最初に処
理されるフィールドは、実行判定データの個数領域11
およびそれに続く実行判定データ領域12−1〜12−
n、即ち、実行条件判断部15である。そのために、現
在、実行中のタスク番号に対応するタスク実行状態デー
タ領域に「実行条件判断部」を処理中であることを示す
コードを書き込む。そして、ステップS301でメモリ
21から1ワードの実行判定データの個数を取り込み、
続くステップ5302において、ステシブ5301で取
り込んだ値を内部レジスタROにセツトする。
理されるフィールドは、実行判定データの個数領域11
およびそれに続く実行判定データ領域12−1〜12−
n、即ち、実行条件判断部15である。そのために、現
在、実行中のタスク番号に対応するタスク実行状態デー
タ領域に「実行条件判断部」を処理中であることを示す
コードを書き込む。そして、ステップS301でメモリ
21から1ワードの実行判定データの個数を取り込み、
続くステップ5302において、ステシブ5301で取
り込んだ値を内部レジスタROにセツトする。
次に、処理をステップ3303に進め、実行条件判断部
15の有無を、ROが“°O”かどうかにより判断し、
“O”であれば実行条件判断部15無しとして、ステッ
プS32に処理を進めるが、“O°゛でなければ実行条
件判断部15の実行判定データを調べるために、処理を
ステップ5304に進める。そして、ステップ5304
において、メモリ21中の次のフィールドから、実行判
定データを取り込み、ステップ5305で、取り込んだ
1ワードの実行判定データの上位1バイトを内部レジス
タR1に、下位1バイトを内部レジスタR2にそれぞれ
セットする。次に、ステップ5306では、内部レジス
タR1に示された番号のタスクの中の、内部レジスタR
2に示された番号のステップが実行中かどうかを判断す
る。その結果、内部レジスタR2に示された番号のステ
ップが実行中の場合には、現在処理中の命令の実行は保
留され、制御はステップS301に戻る。
15の有無を、ROが“°O”かどうかにより判断し、
“O”であれば実行条件判断部15無しとして、ステッ
プS32に処理を進めるが、“O°゛でなければ実行条
件判断部15の実行判定データを調べるために、処理を
ステップ5304に進める。そして、ステップ5304
において、メモリ21中の次のフィールドから、実行判
定データを取り込み、ステップ5305で、取り込んだ
1ワードの実行判定データの上位1バイトを内部レジス
タR1に、下位1バイトを内部レジスタR2にそれぞれ
セットする。次に、ステップ5306では、内部レジス
タR1に示された番号のタスクの中の、内部レジスタR
2に示された番号のステップが実行中かどうかを判断す
る。その結果、内部レジスタR2に示された番号のステ
ップが実行中の場合には、現在処理中の命令の実行は保
留され、制御はステップS301に戻る。
一方、内部レジスタR2に示された番号のステップが実
行中でない場合には、ステップ5307の処理を実行す
る。ステップ5307では、内部レジスタROの値をデ
ィクリメントして、制御をステップ5303に戻す。こ
の内部レジスタROには、ステップ5302で実行判定
データの個数nを入れており、ステップ5304からス
テップ5307に至るループは最大n回繰返される。
行中でない場合には、ステップ5307の処理を実行す
る。ステップ5307では、内部レジスタROの値をデ
ィクリメントして、制御をステップ5303に戻す。こ
の内部レジスタROには、ステップ5302で実行判定
データの個数nを入れており、ステップ5304からス
テップ5307に至るループは最大n回繰返される。
ステップ5303において、内部レジスタROが”0°
°であると判断されたなら、もはや実行判定データは存
在しないので「命令本体部16」の取り込みを開始しな
ければならない。それに先立ち、ステップS32で、タ
スク実行状態データに「命令本体部16」を処理中であ
ることを示すコードを書き込む。そして、ステップ53
09において、先のステップ8308で取り込んだ値を
内部レジスタROにセットして、続くステップ5310
で、その値をデコーダ25に転送する。
°であると判断されたなら、もはや実行判定データは存
在しないので「命令本体部16」の取り込みを開始しな
ければならない。それに先立ち、ステップS32で、タ
スク実行状態データに「命令本体部16」を処理中であ
ることを示すコードを書き込む。そして、ステップ53
09において、先のステップ8308で取り込んだ値を
内部レジスタROにセットして、続くステップ5310
で、その値をデコーダ25に転送する。
次に、ステップ5311において、命令デコーダ25が
、内部レジスタROから転送された命令コードを解釈し
、必要なオペランド数Nを求め、ステップ5312で、
そのNの値を内部レジスタR7にセットする。そして、
ステップ5313において、内部レジスタR7の値が“
0”かどうかを判断し、O”でなければステップ531
4に処理を進め、メモリ21から命令コード13の次に
位置する1ワードのフィールド(オペランド)を取り込
む。そして、ステップ5315で取り込んだ値を空いて
いる内部レジスタにセットして、ステップ5316にお
いて、内部レジスタR7の値をでディクリメントし、ス
テップ5313に戻す。なお、このステップ5314か
らステップ8316に至るループ処理は、内部レジスタ
R7をループカウンタとしてオペランドの個数Nと同じ
回数だけ実行される。
、内部レジスタROから転送された命令コードを解釈し
、必要なオペランド数Nを求め、ステップ5312で、
そのNの値を内部レジスタR7にセットする。そして、
ステップ5313において、内部レジスタR7の値が“
0”かどうかを判断し、O”でなければステップ531
4に処理を進め、メモリ21から命令コード13の次に
位置する1ワードのフィールド(オペランド)を取り込
む。そして、ステップ5315で取り込んだ値を空いて
いる内部レジスタにセットして、ステップ5316にお
いて、内部レジスタR7の値をでディクリメントし、ス
テップ5313に戻す。なお、このステップ5314か
らステップ8316に至るループ処理は、内部レジスタ
R7をループカウンタとしてオペランドの個数Nと同じ
回数だけ実行される。
一方、ステップ5313で内部レジスタR7の値が°O
”であると判断されたなら、ステップ5317において
、ステップ5311で命令コード13の内容を解釈した
結果を、命令実行部24に転送する。続く、ステップ8
318では、命令実行部24が、ステップ5317で受
は取った命令を実行する。そのときに、オペランド14
としてステップ5315で内部レジスタ群30の空いて
いるところにセットされた値を用いる。そして、このス
テップ8318の実行終了によって、実行条件の判断、
命令の解釈および実行の1サイクルが終了したことにな
り、ステップS33でタスク実行状態データに、このス
テップが処理中でないことを示すコードを書き込み終了
する。
”であると判断されたなら、ステップ5317において
、ステップ5311で命令コード13の内容を解釈した
結果を、命令実行部24に転送する。続く、ステップ8
318では、命令実行部24が、ステップ5317で受
は取った命令を実行する。そのときに、オペランド14
としてステップ5315で内部レジスタ群30の空いて
いるところにセットされた値を用いる。そして、このス
テップ8318の実行終了によって、実行条件の判断、
命令の解釈および実行の1サイクルが終了したことにな
り、ステップS33でタスク実行状態データに、このス
テップが処理中でないことを示すコードを書き込み終了
する。
く排他処理の説明 (第4図、第5図)〉次に、本実施
例に示したコンピュータによって排他処理を実行する例
を以下に説明する。
例に示したコンピュータによって排他処理を実行する例
を以下に説明する。
第4図は、並列処理プログラムの一例であり、破線41
で囲まれた部分は、同時に実行してはならないことを示
している。なお、第4図に示したプログラム中で用いら
れている命令の意味を表1に示す。
で囲まれた部分は、同時に実行してはならないことを示
している。なお、第4図に示したプログラム中で用いら
れている命令の意味を表1に示す。
以下余白
表1
表1(続き)
次に、第4図に示したプログラムの動作を以下に説明す
る。
る。
くタスク1〉
まず、ステップSllにおいて、第1人出力ボート29
aからデータを読み込み、その値をメモリ21上の変数
Aに格納する。そして、ステップS12で、変数Aをパ
ラメータとしてタスク3を呼び出し、ステップS13に
おいて、変数への値を第1人出力ボート29aから出力
する。
aからデータを読み込み、その値をメモリ21上の変数
Aに格納する。そして、ステップS12で、変数Aをパ
ラメータとしてタスク3を呼び出し、ステップS13に
おいて、変数への値を第1人出力ボート29aから出力
する。
くタスク2〉
まず、ステップS21において、第2人出カポ−129
bからデータを読み込み、その値をメモリ21上の変数
Bに格納する。そして、ステップS22で、変数Bをパ
ラメータとしてタスク3を呼び出し、ステップS23に
おいて、変数Bの値を第2人出力ボート29bから出力
する。
bからデータを読み込み、その値をメモリ21上の変数
Bに格納する。そして、ステップS22で、変数Bをパ
ラメータとしてタスク3を呼び出し、ステップS23に
おいて、変数Bの値を第2人出力ボート29bから出力
する。
くタスク3〉
まず、ステップS31において、受は取ったパラメータ
の値をメモリ21上の変数2に格納する。そして、ステ
ップS32で変数Zの値の正弦sinを計算し、結果を
変数2に入れる。その後、ステップS33で、出力パラ
メータに変数2の値を入れてリターンする。
の値をメモリ21上の変数2に格納する。そして、ステ
ップS32で変数Zの値の正弦sinを計算し、結果を
変数2に入れる。その後、ステップS33で、出力パラ
メータに変数2の値を入れてリターンする。
以上説明したように、第4図で示すプログラムのタスク
1とタスク2では、共にタスク3を呼び出しているが、
タスク3は、その処理を実行する場合に、メモリ21上
に入力/出力パラメータを記憶させて演算処理を行うた
めに、このタスクを実行中に、再度実行を可能とするり
エンドラントなタスク構造になっていない。従って、第
4図の破線41で囲まれた部分は、資源保護の点から排
他処理を必要とする。
1とタスク2では、共にタスク3を呼び出しているが、
タスク3は、その処理を実行する場合に、メモリ21上
に入力/出力パラメータを記憶させて演算処理を行うた
めに、このタスクを実行中に、再度実行を可能とするり
エンドラントなタスク構造になっていない。従って、第
4図の破線41で囲まれた部分は、資源保護の点から排
他処理を必要とする。
第5図(a)および第5図(b)は、第4図に示したプ
ログラム中、破線41で囲まれた部分がメモリ21の中
でどのように記憶されているかを示したものである。こ
こで、フローチャートで書かれたプログラムをコンピュ
ータが解釈できる命令コードに展開することは、今日、
容易に実現できるものであり、第4図のフローチャート
で示されたプログラムから第5図(a)および第5図(
b)を生成する過程の説明は省略する。
ログラム中、破線41で囲まれた部分がメモリ21の中
でどのように記憶されているかを示したものである。こ
こで、フローチャートで書かれたプログラムをコンピュ
ータが解釈できる命令コードに展開することは、今日、
容易に実現できるものであり、第4図のフローチャート
で示されたプログラムから第5図(a)および第5図(
b)を生成する過程の説明は省略する。
次に、第4図における排他処理を必要とする部分、即ち
、タスク1のステップS12とタスク2のステップS2
2が、どのように実行されるかを、第3図および第5図
を参照して、以下に説明する。
、タスク1のステップS12とタスク2のステップS2
2が、どのように実行されるかを、第3図および第5図
を参照して、以下に説明する。
まず、第5図(a)は、第4図(a)で示すタスク1の
ステップS12に、第5図(b)は、第4図(b)で示
すタスク2のステップS22にそれぞれ対応する。また
、57aおよび57bは実行条件判断部、58aおよび
58bは命令本体部である。51aおよび51bは実行
判定データの個数であり、52a、52b、53a、5
3bは実行条件判定データである。そして、実行条件判
定データの上位バイト52aおよび52bにはタスク番
号が、また、実行条件判定データの下位1バイト53a
および53bには、タスク番号で示されたタスクの中に
おけるステップ番号が書かれている。
ステップS12に、第5図(b)は、第4図(b)で示
すタスク2のステップS22にそれぞれ対応する。また
、57aおよび57bは実行条件判断部、58aおよび
58bは命令本体部である。51aおよび51bは実行
判定データの個数であり、52a、52b、53a、5
3bは実行条件判定データである。そして、実行条件判
定データの上位バイト52aおよび52bにはタスク番
号が、また、実行条件判定データの下位1バイト53a
および53bには、タスク番号で示されたタスクの中に
おけるステップ番号が書かれている。
なお、本実施例では、タスク2はタスク1よりわずかに
送れて実行を開始し、タスク1のステップS12の命令
本体部の処理開始後に、タスク2のステップS22の実
行条件判断部の処理が開始されるものとする。つまり、
タスク2のステップS22の実行中に、タスク実行条件
データの値を調べれば、タスク1のステップS12の命
令本体部58が処理されていることがわかる状態になっ
ているものとする。
送れて実行を開始し、タスク1のステップS12の命令
本体部の処理開始後に、タスク2のステップS22の実
行条件判断部の処理が開始されるものとする。つまり、
タスク2のステップS22の実行中に、タスク実行条件
データの値を調べれば、タスク1のステップS12の命
令本体部58が処理されていることがわかる状態になっ
ているものとする。
次に、タスク1のステップS12の実行手順を以下に説
明する。
明する。
・フィールド51a
まず、最初のフィールドであるフィールド51aをメモ
リ21から取り込む前に、メモリ21上のタスク実行条
件データ(図示せず)を操作する必要がある。ここでは
、実行条件判断部57aを実行中であることを示すコー
ドをタスク実行条件データに書き込む。そして、フィー
ルド51aのデータを取り込み、その値゛1°°を内部
レジスタROにセットする。
リ21から取り込む前に、メモリ21上のタスク実行条
件データ(図示せず)を操作する必要がある。ここでは
、実行条件判断部57aを実行中であることを示すコー
ドをタスク実行条件データに書き込む。そして、フィー
ルド51aのデータを取り込み、その値゛1°°を内部
レジスタROにセットする。
・フィールド52a、53a
セットされた内部レジスタROの値は“1”であり、第
3図で示すステップ5303は、Noの側に分岐する。
3図で示すステップ5303は、Noの側に分岐する。
そして、メモリ21から次の1ワードのフィールド52
aと53aとを取り込み、上位1バイトの値である“2
゛を内部レジスタR1にセットする。同様に、下位1バ
イトの値である°“22゛を内部レジスタR2にセット
する。
aと53aとを取り込み、上位1バイトの値である“2
゛を内部レジスタR1にセットする。同様に、下位1バ
イトの値である°“22゛を内部レジスタR2にセット
する。
次に、内部レジスタR1にセットされている番号のタス
ク、すなわち、タスク2の実行状態を知るために、メモ
リ21上のタスク実行状態データを調べる。そして、内
部レジスタR2にセットされている番号のステップS2
2の実行条件判断部が処理中であり、命令本体部58b
は処理されていないことがわかる。従って、第3図のス
テップ5306はNOの側に分岐する。
ク、すなわち、タスク2の実行状態を知るために、メモ
リ21上のタスク実行状態データを調べる。そして、内
部レジスタR2にセットされている番号のステップS2
2の実行条件判断部が処理中であり、命令本体部58b
は処理されていないことがわかる。従って、第3図のス
テップ5306はNOの側に分岐する。
そして、ステップ5307で内部レジスタROの値をデ
ィクリメントして、ステップ5303に戻る。内部レジ
スタROO値は、もともと1°。
ィクリメントして、ステップ5303に戻る。内部レジ
スタROO値は、もともと1°。
であったので、現在の内部レジスタROO値は“O゛に
なっている。従って、ステップ5303はYESの側に
分岐し、命令本体部58aの処理(ステップ532)に
移行する。そして、タスク実行状態データに命令本体部
を処理中であることを示すコードを書き込み、タスク2
がステップS22の命令本体部58bの処理を行わない
ようにする。
なっている。従って、ステップ5303はYESの側に
分岐し、命令本体部58aの処理(ステップ532)に
移行する。そして、タスク実行状態データに命令本体部
を処理中であることを示すコードを書き込み、タスク2
がステップS22の命令本体部58bの処理を行わない
ようにする。
・フィールド54a
メモリ21から実行判定データの次のフィールド54a
を取り込み、その値を内部レジスタROにセットする。
を取り込み、その値を内部レジスタROにセットする。
ROの値は、命令デコーダ25に転送され、解釈され、
必要なオペランド数Nが求められる。フィールド54a
には、他のタスクを呼び出すコール命令のコードが格納
されている。
必要なオペランド数Nが求められる。フィールド54a
には、他のタスクを呼び出すコール命令のコードが格納
されている。
本実施例におけるコール命令は、呼ぶべきタスク番号と
パラメータのアドレス、つまり、合計2個のオペランド
を持つ。従って、N=2である。
パラメータのアドレス、つまり、合計2個のオペランド
を持つ。従って、N=2である。
・フィールド55a、56a
ステップ5312において、オペランド数Nが内部レジ
スタR7にセットされる。本実施例ではN=2であり、
ステップ5314からステップ5316に至るループは
2回繰り返される。上述のループにおいては、フィール
ド55aの値が内部レジスタR6に、また、フィールド
56aの値が内部レジスタR5にそれぞれセットされる
。
スタR7にセットされる。本実施例ではN=2であり、
ステップ5314からステップ5316に至るループは
2回繰り返される。上述のループにおいては、フィール
ド55aの値が内部レジスタR6に、また、フィールド
56aの値が内部レジスタR5にそれぞれセットされる
。
次に、命令デコーダ25が命令コード54aを解釈し、
その結果をステップ5317において、命令実行部24
に転送する。内部レジスタR6には呼ぶべきタスクの番
号が、内部レジスタR5にはパラメータのアドレスが、
それぞれセットされている。これら2個のオペランドを
用い、ステップ8318において、コール命令が実行さ
れる。
その結果をステップ5317において、命令実行部24
に転送する。内部レジスタR6には呼ぶべきタスクの番
号が、内部レジスタR5にはパラメータのアドレスが、
それぞれセットされている。これら2個のオペランドを
用い、ステップ8318において、コール命令が実行さ
れる。
なお、特定のタスクを呼び出して実行するということは
、ごく普通に行われてるいることであり、その手順につ
いての説明は省略する。
、ごく普通に行われてるいることであり、その手順につ
いての説明は省略する。
次に、コール命令の実行が終了したならタスク実行状態
データに、タスク1のステップS12が実行中でないこ
とを示すコードを書き込み、実行条件判断部57aと、
命令本体部58aの実行の1サイクルを終了する。
データに、タスク1のステップS12が実行中でないこ
とを示すコードを書き込み、実行条件判断部57aと、
命令本体部58aの実行の1サイクルを終了する。
同様に、タスク2のステップS22の実行手順を以下に
説明する。
説明する。
なお、上述したように、ステップS22の実行条件判断
部57bが実行されるタイミングでは、ステップSL2
の命令本体部58aが既に実行されている状態である。
部57bが実行されるタイミングでは、ステップSL2
の命令本体部58aが既に実行されている状態である。
・フィールド51b
まず、最初のフィールドであるフィールド51bをメモ
リ21から取り込む前に、メモリ21上のタスク実行状
態データ(図示せず)を操作する必要がある。実行条件
判断部57bを処理中であることを示すコードを、ステ
ップS31においてタスク実行状態データに書き込む。
リ21から取り込む前に、メモリ21上のタスク実行状
態データ(図示せず)を操作する必要がある。実行条件
判断部57bを処理中であることを示すコードを、ステ
ップS31においてタスク実行状態データに書き込む。
ステップ5301において、フィールド51bを取り込
み、その値を内部レジスタROにセットする。
み、その値を内部レジスタROにセットする。
・フィールド52b、53b
内部レジスタROの値は°“1゛°になっており、ステ
ップ5303ではNoの側に分岐し、メモリ21から次
の1ワードのフィールド52bと53bを取り込みむ。
ップ5303ではNoの側に分岐し、メモリ21から次
の1ワードのフィールド52bと53bを取り込みむ。
次に、上位1バイトの値である1”を内部レジスタR1
にセットし、下位1バイトの値であるパ12”を内部レ
ジスタR2にセットする。そして、内部レジスタR1に
セットされている番号のタスク、すなわち、タスク1の
実行条件を知るためにメモリ21上のタスク実行条件デ
ータを調べる。内部レジスタR2にセットされている番
号のステップ、すなわち、ステップS12の命令本体部
58aが処理中であることがわかる。この結果、ステッ
プ5306はYESの側に分岐し、制御がステップ53
401に戻る。
にセットし、下位1バイトの値であるパ12”を内部レ
ジスタR2にセットする。そして、内部レジスタR1に
セットされている番号のタスク、すなわち、タスク1の
実行条件を知るためにメモリ21上のタスク実行条件デ
ータを調べる。内部レジスタR2にセットされている番
号のステップ、すなわち、ステップS12の命令本体部
58aが処理中であることがわかる。この結果、ステッ
プ5306はYESの側に分岐し、制御がステップ53
401に戻る。
本実施例によれば、タスク1のステップS12の命令本
体部58が処理中である限り、ステップ5301からス
テップ8306に至るループが繰り返されるために、タ
スク2のステップS22の命令本体部58bの処理は保
留され、排他処理を実現することができる。
体部58が処理中である限り、ステップ5301からス
テップ8306に至るループが繰り返されるために、タ
スク2のステップS22の命令本体部58bの処理は保
留され、排他処理を実現することができる。
上述した実施例では、各種命令コードの解釈はコンピュ
ータの命令デコーダで行っているが、例えば、オペレー
ティングシステムやインタプリタが解釈を行っても良い
。
ータの命令デコーダで行っているが、例えば、オペレー
ティングシステムやインタプリタが解釈を行っても良い
。
また、命令デコーダをハードウェアで実現するか、マイ
クロプログラムで実現するかは、本質的な問題ではない
。
クロプログラムで実現するかは、本質的な問題ではない
。
本実施例では、命令形式の最初のフィールドを実行判定
データの個数としている。これは、命令デコーダの処理
を簡単にするために行っていることであり、命令デコー
ダの処理に先立って、実行判定データの個数を数える処
理を命令デコーダが行う構成にすれば、実行判定データ
の個数を命令の中に含める必要はない。
データの個数としている。これは、命令デコーダの処理
を簡単にするために行っていることであり、命令デコー
ダの処理に先立って、実行判定データの個数を数える処
理を命令デコーダが行う構成にすれば、実行判定データ
の個数を命令の中に含める必要はない。
[発明の効果]
ユーザがプログラムとして実行条件を記述する必要がな
くなり、実行条件の判定に必要なわずかなデータを命令
中に付加すればよいので、プログラムの大きさを小さく
することができる。
くなり、実行条件の判定に必要なわずかなデータを命令
中に付加すればよいので、プログラムの大きさを小さく
することができる。
また、プログラムの容量が小さくなることで、ユーザの
負担が軽くなり、バグの発生率を減らすことができる。
負担が軽くなり、バグの発生率を減らすことができる。
第1図は本発明に基づくコンピュータの命令形式である
。 第2図は本発明に基づくコンピュータの構成例である。 第3図は本発明に基づくコンピュータが命令な51b・
・・実行判定データの個数、52b・・・タスク番号、
53b・・・ステップ番号、55b・・・コール命令で
呼ばれるタスクの番号である。
。 第2図は本発明に基づくコンピュータの構成例である。 第3図は本発明に基づくコンピュータが命令な51b・
・・実行判定データの個数、52b・・・タスク番号、
53b・・・ステップ番号、55b・・・コール命令で
呼ばれるタスクの番号である。
Claims (1)
- メモリ内に記憶された排他処理情報を含む命令情報を順
次読み出して解釈を行う解釈手段と、該解釈手段での結
果に従い前記命令情報の実行を行う実行手段とを有する
情報処理装置であつて、前記解釈手段により読み出され
た命令情報に含まれる排他処理情報を判断する判断手段
と、該判断手段での判断結果に従つて前記実行手段によ
る実行を保留する保留手段とを備えることを特徴とする
情報処理装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1011849A JP2808558B2 (ja) | 1989-01-23 | 1989-01-23 | 情報処理装置 |
| US08/161,442 US5418919A (en) | 1989-01-10 | 1993-12-06 | Apparatus and method for concurrently executing plural tasks in which identifiers specify steps in tasks |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1011849A JP2808558B2 (ja) | 1989-01-23 | 1989-01-23 | 情報処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02193228A true JPH02193228A (ja) | 1990-07-30 |
| JP2808558B2 JP2808558B2 (ja) | 1998-10-08 |
Family
ID=11789171
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1011849A Expired - Fee Related JP2808558B2 (ja) | 1989-01-10 | 1989-01-23 | 情報処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2808558B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008282165A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Mitsubishi-Electric Industrial System Corp | バッチ制御装置及びバッチ制御方法 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS53109453A (en) * | 1977-03-07 | 1978-09-25 | Nec Corp | Instruction control unit |
| JPS55134462A (en) * | 1979-04-06 | 1980-10-20 | Nec Corp | Memory control unit |
| JPS59123944A (ja) * | 1982-12-29 | 1984-07-17 | Fujitsu Daiichi Tsushin Softwear Kk | プログラム間同期方式 |
-
1989
- 1989-01-23 JP JP1011849A patent/JP2808558B2/ja not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS53109453A (en) * | 1977-03-07 | 1978-09-25 | Nec Corp | Instruction control unit |
| JPS55134462A (en) * | 1979-04-06 | 1980-10-20 | Nec Corp | Memory control unit |
| JPS59123944A (ja) * | 1982-12-29 | 1984-07-17 | Fujitsu Daiichi Tsushin Softwear Kk | プログラム間同期方式 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008282165A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Mitsubishi-Electric Industrial System Corp | バッチ制御装置及びバッチ制御方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2808558B2 (ja) | 1998-10-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4729094A (en) | Method and apparatus for coordinating execution of an instruction by a coprocessor | |
| US4715013A (en) | Coprocessor instruction format | |
| US4731736A (en) | Method and apparatus for coordinating execution of an instruction by a selected coprocessor | |
| US4750110A (en) | Method and apparatus for executing an instruction contingent upon a condition present in another data processor | |
| US5021991A (en) | Coprocessor instruction format | |
| EP0523758B1 (en) | A method and apparatus for coordinating execution of an instruction by a coprocessor | |
| US4758950A (en) | Method and apparatus for selectively delaying an interrupt of a coprocessor | |
| US4821231A (en) | Method and apparatus for selectively evaluating an effective address for a coprocessor | |
| US4914578A (en) | Method and apparatus for interrupting a coprocessor | |
| US5418919A (en) | Apparatus and method for concurrently executing plural tasks in which identifiers specify steps in tasks | |
| JPH03233630A (ja) | 情報処理装置 | |
| EP0240606A2 (en) | Pipe-line processing system and microprocessor using the system | |
| US4994961A (en) | Coprocessor instruction format | |
| JPH02193228A (ja) | 情報処理装置 | |
| US4758978A (en) | Method and apparatus for selectively evaluating an effective address for a coprocessor | |
| JPH0326862B2 (ja) | ||
| US4811274A (en) | Method and apparatus for selectively evaluating an effective address for a coprocessor | |
| JP3140028B2 (ja) | サブルーチンの引数の受け渡し方式 | |
| JPS62156738A (ja) | プログラム制御装置 | |
| JPH0259829A (ja) | マイクロコンピュータ | |
| JPH0667896A (ja) | シングルチップマイクロコンピュータ | |
| JPH0399338A (ja) | マイクロプロセッサ | |
| JPH04167146A (ja) | 情報処理装置のアドレストレース方式 | |
| JPS638841A (ja) | 割込み受取り装置 | |
| JPS6115235A (ja) | 中央処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |