次に本発明の実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態の構成〕
本発明にかかるバスシステムの第1の実施の形態は、図29に示すバスシステムにおいて、マスタ装置1−1〜1−m,スレーブ装置2−1〜2−n及びバスアービタ3として、それぞれ図1,図2,図4に示す構成を有するマスタ装置,スレーブ装置,バスアービタを使用することにより実現される。
図1を参照すると、マスタ装置1−1〜1−mは、制御手段11と、リード要求手段12と、ライト要求手段13と、応答受信手段14と、バス獲得手段15とを備えている。
リード要求手段12は、制御手段11の指示に従って、自マスタ装置を特定するマスタ番号(本実施の形態では、マスタ装置1−1〜1−mにそれぞれマスタ番号M1〜Mmが付与されているとする)および処理の依頼先となるスレーブ装置を特定するスレーブ番号(本実施の形態では、スレーブ装置2−1〜2−nにそれぞれスレーブ番号SL1〜SLnが付与されているとする)を含んだリード要求を内部バス4へ出力する機能や、スレーブ装置から内部バス4を介して送られてくるリードデータを制御手段11に渡す機能を有する。
ライト要求手段13は、制御手段11の指示に従って、自マスタ装置のマスタ番号および処理の依頼先となるスレーブ装置のスレーブ番号を含んだライト要求を内部バス4へ出力する機能や、制御手段11の指示に従ってライトデータを内部バス4へ出力する機能を有する。
応答受信手段14は、内部バス4を介してスレーブ装置2−1〜2−nから送られてくる待機レスポンスや待機解除通知を制御手段11に渡す機能を有する。
バス獲得手段15は、制御手段11の指示に従ってバスアービタ3に対してバス使用要求を送信する機能や、バスアービタ3によってバス使用権が与えられたか否かを制御手段11に通知する機能を有する。
制御手段11は、各手段12〜15を制御する機能を有する。
なお、マスタ装置1−1〜1−mは、CPU(コンピュータ)によって実現可能なものであり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータをマスタ装置として機能させるためのプログラムを記録したディスク,半導体メモリ,その他の記録媒体を用意し、上記プログラムをコンピュータに読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に制御手段11,リード要求手段12,ライト要求手段13,応答受信手段14およびバス獲得手段15を実現する。
図2を参照すると、スレーブ装置2−1〜2−nは、要求管理手段20と、リード処理手段21と、リードバッファ有効フラグレジスタ211と、ライト処理手段22と、リード用マスタ番号保持レジスタ23と、ライト用マスタ番号保持レジスタ24と、リード処理フラグ保持レジスタ25と、ライト処理フラグ保持レジスタ26と、ライトバッファ27と、リードバッファ28と、モード設定手段29とを備えている。
要求管理手段20は、要求種別判定手段201と、リード要求元管理手段202と、ライト要求元管理手段203と、リード用格納位置保持部204と、リード用読み出し位置保持部205と、ライト用格納位置保持部206と、ライト用読み出し位置保持部207とを備えている。
リード用マスタ番号保持レジスタ23は、図3に示すように、16個のエントリ#0〜#15から構成される。各エントリ#0〜#15には、それぞれエントリ番号「0」〜「15」が付与されている。ライト用マスタ番号保持レジスタ24もリード用マスタ番号保持レジスタ23と同様に、16個のエントリから構成される。
リード処理フラグレジスタ25には、リード処理手段21がリード処理を実行中であるか否かを示すリード処理フラグ(リード処理中は“1”となり、リード処理中でない場合は“0”となる)が格納される。ライト処理フラグレジスタ26には、ライト処理手段22がライト処理を実行中であるか否かを示すライト処理フラグ(ライト処理中は“1”となり、ライト処理中でない場合は“0”となる)が格納される。
リード用格納位置保持部204には、リード要求元管理手段202がマスタ番号をリード用マスタ番号保持レジスタ23に格納する際の格納位置(エントリ番号)が保持される。
リード用読み出し位置保持部205には、リード要求元管理手段202が優先マスタ装置のマスタ番号をリード用マスタ番号保持レジスタ23から読み出す際の読み出し位置(エントリ番号)が保持される。
ライト用格納位置保持部206には、ライト要求元管理手段203がマスタ番号をライト用マスタ番号保持レジスタ24に格納する際の格納位置が保持される。
ライト用読み出し位置保持部207には、ライト要求元管理手段203が優先マスタ装置のマスタ番号をライト用マスタ番号保持レジスタ24から読み出す際の読み出し位置が保持される。
リードバッファ有効フラグ保持レジスタ211には、リードバッファ28に有効なリードデータが格納されているか否かを示すリードバッファ有効フラグ(有効なリードデータが格納されている場合は“1”となり、格納されていない場合は“0”となる)が格納されている。
モード設定手段29は、例えば、3つの状態を取ることができるスイッチ等により実現されるものであり、動作モードを第1,第2,第3モードの何れにするのかを指定する。「第1モード」は、或るマスタ装置からの処理要求に従った処理を実行中に、他のマスタ装置から処理要求が入力された場合、最初に処理要求を出力したマスタ装置だけを優先させるモードである。「第2モード」は、或るマスタ装置からの処理要求に従った処理を実行中に、他のマスタ装置から処理要求が入力された場合、処理要求の入力順に優先させるマスタ装置を切り替えていくモードである。「第3モード」は、バスアービタ3の持つマスタ装置の優先順位に従って処理を行うモードである。
要求種別判定手段201は、内部バス4を介して自スレーブ装置に送られてきた処理要求がリード要求なのかライト要求なのかを判定し、リード要求であればリード要求元管理手段202に渡し、ライト要求であればライト要求元管理手段203に渡す機能を有する。
リード要求元管理手段202は、次のような機能を有する。
・リード処理手段21がリード処理を実行している時に(リード処理フラグが“1”の時に)、要求種別判定手段201からリード要求が渡された場合、および、リード処理手段21がリード処理を実行していない時に(リード処理フラグが“0”の時に)、要求種別判定手段201からリード要求が渡され、且つそのリード要求が優先マスタ装置(リード用読み出し位置保持部205が指し示しているリード用マスタ番号保持レジスタ23中のエントリに格納されているマスタ番号のマスタ装置)以外のマスタ装置からのものである場合は、リード用マスタ番号保持レジスタ23にリード要求元のマスタ番号を格納すると共に、待機レスポンスをリード要求元のマスタ装置に返す。なお、マスタ番号の格納位置は、リード用格納位置保持部204に保持されているエントリ番号のエントリとする。また、マスタ番号を格納後、リード要求元管理手段202は、リード用格納位置保持部204に保持されているエントリ番号を+1する。但し、エントリ番号が「15」である場合には、「0」に更新する。
・リード処理手段21がリード処理を実行していないときに、要求種別判定手段201からリード要求が渡され、その要求元が優先マスタ装置である場合には、リードバッファ有効フラグレジスタ211を参照することにより、リードバッファ28に有効なリードデータが格納されているか否かを調べる。そして、有効なリードデータが格納されていない場合(リードバッファ有効フラグが“0”の場合)は、リード要求をリード処理手段21に渡すと共に要求元に待機レスポンスを返し、有効なリードデータが格納されている場合には、リード処理手段21に対してリードデータの転送を指示する。
・リード処理手段21に対してリードデータの転送を指示した後、モード設定手段29に設定されている動作モードに応じて次のような処理を行う。動作モードが「第1モード」の場合は、リード用読み出し位置保持部205に保持されているエントリ番号をインクリメントすることにより、優先マスタ装置を変更する処理と、リード処理を待機中のマスタ装置に待機解除通知を送信する処理と、リード用格納位置保持部204に保持されているエントリ番号をリード用読み出し位置保持部205に保持されているエントリ番号の次のエントリ番号とすることにより、リード用マスタ番号保持レジスタ23に登録されているマスタ番号を優先マスタ装置のマスタ番号のみにする処理とを行う。動作モードが「第2モード」の場合は、リード用読み出し位置保持部205に保持されているエントリ番号をインクリメントすることにより、優先マスタ装置を変更する処理と、優先マスタ装置に待機解除通知を送信する処理とを行う。動作モードが「第3モード」の場合は、リード処理を待機中のマスタ装置に待機解除を送信する処理と、リード用格納位置保持部204とリード用読み出し位置保持部205とに同一のエントリ番号(本実施の形態では、エントリ番号#0とする)を格納することにより、リード用マスタ番号保持レジスタ23に格納されているマスタ番号を全て削除する処理を行う。
・リード処理手段21からリード処理の完了が通知された時、優先マスタ装置に待機解除を返す。以上が、リード要求元管理手段202が備えている主な機能である。
ライト要求元管理手段203は、次のような機能を有する。電源投入直後やリセット直後、あるいはアイドル時などの初期状態にあるときにライト要求があった場合には、ライト要求をライト処理手段22に渡すが、初期状態にない場合には次のような動作となる。
・ライト処理手段22がライト処理を実行している時(ライト処理フラグが“1”の時)に、要求種別判定手段201からライト要求が渡された場合、ライト用マスタ番号保持レジスタ24にライト要求元のマスタ番号を格納すると共に、待機レスポンスをライト要求元のマスタ装置に返す。なお、マスタ番号の格納位置は、ライト用格納位置保持部206に保持されているエントリ番号のエントリとする。また、マスタ番号を格納後、ライト要求元管理手段203は、ライト用格納位置保持部207に保持されているエントリ番号を+1する。但し、ライト用格納位置保持部207に保持されているエントリ番号が「15」の場合には「0」に更新する。
・ライト処理手段22がライト処理を実行していない時(ライト処理フラグが“0”の時)に、要求種別判定手段201からライト要求が渡された場合は、モード設定手段29に設定されている動作モードに応じて次のような処理を行う。動作モードが「第1モード」の場合および「第2モード」の場合は、ライト要求の要求元が優先マスタ装置(ライト用読み出し位置保持部207が指し示しているライト用マスタ番号保持レジスタ24中のエントリに格納されているマスタ番号のマスタ装置)であるか否かを調べる。そして、優先マスタ装置である場合は、ライト要求をライト処理手段22に渡し、優先マスタ装置でない場合は、ライト用マスタ番号保持レジスタ24のエントリの内の、ライト用格納位置保持部206が指し示しているエントリに、ライト要求元のマスタ番号を格納する。また、動作モードが「第3モード」の場合は、ライト要求をライト処理手段22に渡す。
・ライト処理手段22からライト処理完了が通知されたとき、モード設定手段29に設定されている動作モードに応じた処理を行う。動作モードが「第1モード」の場合は、ライト処理を待機中のマスタ装置に待機解除を送信する処理や、ライト用格納位置保持部206に保持されているエントリ番号をライト用読み出し位置保持部207が保持しているエントリ番号の次のエントリ番号に更新することにより、ライト用マスタ番号保持レジスタ24に格納されているマスタ番号を優先マスタ装置のマスタ番号のみにする処理を行う。動作モードが「第2モード」の場合は、優先マスタ装置に待機解除通知を送信する処理を行う。動作モードが「第3モード」の場合は、ライト処理を待機中のマスタ装置に待機解除通知を送信する処理や、ライト用格納位置保持部206とライト用読み出し位置保持部207に同一エントリ番号(本実施の形態では、エントリ番号#0)を格納することにより、ライト用マスタ番号保持レジスタ24に格納されているマスタ番号を全て削除する処理を行う。
リード処理手段21は、リード要求元管理手段202から渡されたリード要求に従ってメモリ(図示せず)からデータを読み込み、読み込んだデータをリードバッファ28に格納する機能や、リードバッファ28へのデータの格納が完了したとき、リード要求元管理手段202に対してリード処理の完了を通知する機能や、リード要求元管理手段202からリードデータの転送が指示されたとき、リードバッファ28に格納されているリードデータを内部バス4へ出力する機能や、リード要求元管理手段202からリード要求が渡されたとき、リード処理フラグレジスタ25に設定されているリード処理フラグを“1”にし、リード処理が完了したときリード処理フラグを“0”にする機能を有する。
ライト処理手段22は、ライト要求元管理手段203からライト要求が渡されたとき、内部バス4にライト許可を出力することにより、ライト要求元のマスタ装置にライトデータの転送動作を行わせる機能や、ライトバッファ27に格納されたライトデータをライト要求に従ってメモリ(図示せず)に格納する機能や、ライト処理の完了をライト要求元管理手段203に通知する機能や、ライト要求元管理手段203からライト要求が渡されたとき、ライト処理フラグレジスタ26に格納されているライト処理フラグを“1”にし、ライト処理が完了したときライト処理フラグを“0”にする機能を有する。
なお、スレーブ装置2−1〜2−nは、CPU(コンピュータ)によって実現可能なものであり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータをスレーブ装置として機能させるためのプログラムを記録したディスク,半導体メモリ,その他のメモリを用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、要求管理手段20、リード処理手段21およびライト処理手段22を実現する。
図4を参照するとバスアービタ3は、調停手段31と、優先順位保持部32とを備えている。
優先順位保持部32には、各マスタ装置1−1〜1−mの優先順位が格納されている。なお、本実施の形態では、マスタ装置の優先順位は、マスタ装置1−1>マスタ装置1−2>…>マスタ装置1−m(マスタ装置1−1が最も優先順位が高く、マスタ装置1−mが最も優先順位が低い)となっている。調停手段31は、複数のマスタ装置から同時にバス使用要求があった場合、最も優先順位が高いマスタ装置にバス使用権を与える機能を有する。
〔実施の形態の動作〕
次に本実施の形態の動作について詳細に説明する。なお、以下の説明では、スレーブ装置2−1,2−2,2−3の動作モードがそれぞれ「第1モード」,「第2モード」,「第3モード」になっているとする。
〔第1モードの動作〕
今、例えば、3台のマスタ装置1−1,1−2,1−3において、スレーブ装置2−1(動作モード=「第1モード」)に対するリード要求R11,R21,R31が同時に発生したとする。各マスタ装置1−1〜1−3内の制御手段11は、バス獲得手段15を用いてバスアービタ3にバス使用要求を送る。バスアービタ3内の調停手段31は、マスタ装置1−1〜1−3からバス使用要求が送られてくると、最も優先順位が高いマスタ装置1−1にバス使用権を与える。
マスタ装置1−1内の制御手段11は、バス使用権を獲得すると、リード要求手段12を用いて内部バス4上にリード要求R11を出力する(図5参照)。このリード要求R11には、マスタ装置1−1のマスタ番号M1と、スレーブ装置2−1のスレーブ番号SL1と、リードアドレスとが含まれている。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−1からの処理要求がリード要求であることを認識すると(図11のステップS1111がYES)、リード要求R11をリード要求元管理手段202に渡す。
リード要求元管理手段202は、要求種別判定手段201からリード要求R11が渡されると、それが電源投入後に最初に入力されたリード要求であるか否かを判断する(ステップS1112)。今、リード要求R11が前述したような初期状態時に入力されたリード要求であるとすると、リード要求元管理手段202は、リード要求R11をリード処理手段21に渡す(ステップS1112がYES,S1113)。
リード処理手段21は、リード要求R11が渡されると、図16のフローチャートに示す処理を開始する。同図に示すように、リード処理手段21は、リード要求R11が渡されると、リード処理フラグレジスタ25中のリード処理フラグを“1”にしてリード処理中であることを表示した後、リード要求R11に従ってメモリからデータを読み込み、読み込んだデータをリードバッファ28に格納する(ステップS161,S162)。なお、ライト処理手段22が上記メモリに対してデータの書き込み処理を行っている場合は、ライト処理手段22による書き込み処理が完了した後、上記メモリからデータを読み込む。その後、リード処理手段21は、リード処理フラグを“0”にしてリード処理が完了したことを表示し、更に、リードバッファ有効フラグレジスタ211中のリードバッファ有効フラグを“1”とすることにより、リードバッファ28に有効なリードデータが格納されていることを表示する(ステップS163,S164)。以上の処理が終了すると、リード要求手段21は、リード要求元管理手段202に対してリード処理が完了したことを通知する(ステップS165)。なお、リード処理手段21において上述した処理が行われている間も、リード要求元管理手段202においては以下の処理が並行して行われている。
リード要求元管理手段202は、図11のステップS1113においてリード処理手段21にリード要求R11を渡すと、リード用格納位置保持部204からマスタ番号の格納位置(エントリ番号)を取得する(ステップS1114)。なお、電源投入時(初期状態)には、リード用格納位置保持部204には、エントリ番号「0」が保持されているとする。また、リード用読み出し位置保持部205,ライト用格納位置保持部206,ライト用読み出し位置保持部207にも電源投入時にはエントリ番号「0」が保持されているとする。
リード要求元管理手段202は、リード用格納位置保持部204からエントリ番号「0」を取得すると、リード用マスタ番号保持レジスタ23のエントリ番号「0」のエントリ#0にリード要求元のマスタ装置1−1のマスタ番号M1を書き込む(ステップS1115)。その後、リード要求元管理手段202は、リード用格納位置保持部204に保持されているエントリ番号「0」を+1し、「1」にする(ステップS1116)。この時点でのリード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が示すマスタ番号の格納位置W、及びリード用読み出し位置保持部205が示すマスタ番号の読み出し位置Rは、図19(A)に示すものとなる。その後、リード要求元管理手段202は、リード要求元のマスタ装置1−1に待機レスポンスを返す(ステップS1117)。
マスタ装置1−1内の制御手段11は、応答受信手段14を介して待機レスポンスを受信すると、内部バス4を開放し、待機状態になる。待機状態中は、バスアービタ3に対してバス使用要求を出力不可能な状態になる。内部バス4が開放されると、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内の優先順位が高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、内部バス4にリード要求R21を出力する。このリード要求には、マスタ装置1−2のマスタ番号M2と、スレーブ装置2−1のスレーブ番号SL1と、リードアドレスとが含まれている。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−2が内部バス4上に出力したリード要求R21を取り込むと(S1111がYES)、それをリード要求元管理手段202に渡す。
リード要求元管理手段202は、リード要求R21が最初のリード要求でないので(ステップS1112がNO)、リード処理フラグレジスタ25を参照することにより、リード処理手段21がリード処理を実行中であるか否かを調べる(ステップS1118)。この時点で、リード処理手段21によるリード要求R11の処理が完了していないとすると、ステップS1118の判断結果がYESとなるので、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。ステップS1114〜S1116の処理が行われることにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(B)に示すものとなる。また、ステップS1117の処理が行われることにより、リード要求R21の要求元のマスタ装置1−2が待機状態となる。
その後、マスタ装置1−3がバス使用権を獲得し、内部バス4にリード要求R31(マスタ装置1−3のマスタ番号M3と、スレーブ装置2−1のスレーブ番号SL1と、リードアドレスとを含む)を出力すると、スレーブ装置2−1内の要求種別判定手段201がリード要求R31を取り込み、それをリード要求元管理手段202に渡す(ステップS1111がYES)。
リード要求元管理手段202は、リード要求R31が最初のリード要求でないので(ステップS1112がNO)、リード処理フラグレジスタ25を参照することにより、リード処理手段21がリード処理を実行中であるか否かを調べる(ステップS1118)。この時点で、リード処理手段21によるリード要求R11の処理が完了していないとすると、ステップS1118の判断結果がYESとなるので、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(C)に示すものとなる。また、リード要求R31の要求元のマスタ装置1−3が待機状態となる。
その後、リード処理手段21がリード要求R11に対する処理を完了し、リード要求元管理手段202に対してリード処理の完了を通知したとする。
リード要求元管理手段202は、リード処理手段21からリード処理の完了が通知されると、図14のフローチャートに示す処理を行う。ステップS141では、リード用読み出し位置保持部205からリード用読み出し位置(この例の場合、エントリ番号「0」)を取得する。ここで、リード用読み出し位置保持部205によって指し示されているリード用マスタ番号保持レジスタ23のエントリには、優先マスタ装置のマスタ番号が登録されている。次のステップS142では、リード用マスタ番号保持レジスタ23のエントリ番号「0」のエントリ#0に登録されているマスタ番号を入力する。この例の場合、リード用マスタ番号保持レジスタ23の内容は、図19(C)に示すものとなっているので、リード要求元管理手段202は、優先マスタ装置のマスタ番号として「M1」を入力することになる。次のステップS143では、リード要求元管理手段202は、マスタ番号「M1」の優先マスタ装置1−1に対して待機解除通知を送る。
優先マスタ装置1−1内の制御手段11は、応答受信手段14を介して待機解除通知を受信すると、バス使用要求を出力可能な状態に復帰するので、バスアービタ3にバス使用要求を送り、バスアービタ3の調停によってバス使用権を獲得すると、待機中のリード要求R11を内部バス4に出力する。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−1からのリード要求R11をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R11が渡されると、それが最初のリード要求でないので、リード処理フラグレジスタ25を参照し、リード処理手段21がリード処理を実行しているか否かを調べる(ステップS1118)。この例では、リード処理手段21は、リード要求R11に対する処理を既に完了し、リード処理フラグレジスタ25中のリード処理フラグを“0”にしているので、ステップS1118の判断結果はNOとなる。
ステップS1118の判断結果がNOとなると、現在の動作モードが「第3モード」でないので(ステップS1118-1がNO)、リード要求元管理手段202は、リード用マスタ番号保持レジスタ23のエントリの内の、リード用読み出し位置保持部205が指し示しているエントリから優先マスタ装置のマスタ番号を読み込む(ステップS1119,S1120)。この時点では、リード用読み出し位置保持部205にはエントリ番号「0」が登録され、また、リード用マスタ番号保持レジスタ23の内容は図19(C)に示すものであるので、リード要求元管理手段202は、優先マスタ装置のマスタ番号として「M1」を取得することになる。
その後、リード要求元管理手段202は、ステップS1120で取得した優先マスタ装置のマスタ番号「M1」と、要求種別判定手段201から渡されたリード要求R11中のマスタ番号とが一致するか否かを調べる(ステップS1121)。この例の場合、リード要求R11に含まれているマスタ番号は「M1」であるので、ステップS1121の判断結果はYESとなる。ステップS1121の判断結果がYESとなると、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照することにより、リードバッファ28に有効なリードデータが格納されているか否かを調べる(ステップS1122)。この例の場合、リードバッファ有効フラグレジスタ211中のリードバッファ有効フラグは、“1”となっており、有効なリードデータが格納されていることを示しているので(ステップS1122がYES)、リード要求元管理手段202はリード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”とし、リードバッファ28に有効なリードデータが格納されていないことを表示する(ステップS1123,S1124)。
一方、リード処理手段21は、リード要求元管理手段202から転送指示が入力されると、図17のフローチャートに示すように、リードバッファ28に格納されているリードデータをマスタ装置1−1へ転送する(ステップS171)。また、マスタ装置1−1内の制御手段11は、応答受信手段14を介してリードデータを受信すると、内部バス4を開放する。
リード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のフローチャートに示す処理を行う。ステップS120では、モード設定手段29によって設定されている動作モードが、「第1モード」,「第2モード」,「第3モード」の何れであるかを調べる。この例の場合、モード設定手段29には、動作モードとして「第1モード」が設定されているので、リード要求元管理手段202は、リード処理を待機中のマスタ装置1−2,1−3に対して待機解除通知を送る(ステップS121)。なお、リード処理を待機中のマスタ装置は、リード用マスタ番号保持レジスタ23,リード用格納位置保持部204,リード用読み出し位置保持部205の内容に基づいて求めることができる。即ち、リード用マスタ番号保持レジスタ23中のエントリの内の、リード用読み出し位置保持部205が指し示しているエントリ#0の次のエントリ#1からリード用格納位置保持部204が指し示しているエントリ#3の1つ前のエントリ#2までに、マスタ番号M2,M3が格納されているマスタ装置1−2,1−3が、リード処理を待機しているマスタ装置となる(図19(C)参照)。
その後、リード要求元管理手段202は、リード用読み出し位置保持部205に格納されているエントリ番号「0」を+1して「1」に更新し、更に、リード用格納位置保持部204にリード用読み出し位置保持部205に格納されているエントリ番号「1」の次のエントリ番号「2」を格納する(ステップS122,S123)。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示すリード位置Rは、図19(D)に示すものとなる。即ち、上記したステップS122の処理を行うことにより、優先マスタ装置のマスタ番号が「M2」に変更されると共に、リード処理が完了したマスタ装置1−1のマスタ番号「M1」が消去されることになる。また、上記したステップS123の処理を行うことにより、マスタ装置1−3のマスタ番号「M3」が消去されることになる。
一方、待機解除通知を受信したマスタ装置1−2,1−3及び既に待機解除されているマスタ装置1−1は、バスアービタ3に対してバス使用要求を出力し、バスアービタ3は、優先順位が最も高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、リード要求R12(マスタ番号M1,スレーブ番号SL1,リードアドレスを含む)を内部バス4に出力する。
スレーブ装置2−1内の要求種別判定手段201は、リード要求R12をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R12が最初のリード要求でもなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でもなく(ステップS1118がNO)、動作モードが「第3モード」でもないので(ステップS1118-1がNO)、リード用マスタ番号保持レジスタ23のエントリ番号「1」のエントリ#1に登録されている優先マスタ装置のマスタ番号M2と、リード要求R12中のマスタ番号M1とを比較する(ステップS1119〜S1121)。この例の場合、両者が不一致なので(ステップS1121がNO)、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(E)に示すものとなる。また、リード要求元のマスタ装置1−1に待機レスポンスが返される。マスタ装置1−1は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
その後、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3のうち、優先順位が高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、リード要求R21をスレーブ装置2−1に送信する。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−2からのリード要求R21をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R21が最初のリード要求でもなく(ステップS1112がNO)、リード処理手段21がリード処理中でもなく(ステップS1118がNO)、動作モードが「第3モード」でもないので(ステップS1118-1がNO)、リード用マスタ番号保持レジスタ23のエントリ番号「1」のエントリ#1の格納されている優先マスタ装置のマスタ番号M2とリード要求21中のマスタ装置M2とを比較する(ステップS1119〜S1121)。この例の場合、両者が共に「M2」であるので(ステップS1121がYES)、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照し、リードバッファ28に有効なリードデータが格納されているか否かを調べる(ステップS1122)。この例の場合、リードバッファ有効フラグは“0”となっており、リードバッファ28に有効なデータが格納されていないことを示しているので(ステップS1122がNO)、リード要求元管理手段202は、リード要求R21をリード処理手段21に渡した後(ステップS1113)、前述したステップS1114〜S1117の処理を行う。
リード処理手段21は、リード要求R21が渡されると、前述した図16のフローチャートに示す処理を行う。また、ステップS1114〜S1116の処理が行われることにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(F)に示すものとなる。また、ステップS1117の処理が行われることにより、マスタ装置1−2に待機レスポンスが返される。マスタ装置1−2は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
内部バス4が開放されると、待機状態になっていないマスタ装置1−3がバス使用権を獲得し、リード要求R31をスレーブ装置2−1に対して出力する。
スレーブ装置2−1内の要求種別判定手段201は、リード要求R31をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R21が最初のリード要求でなく(ステップS1112がNO)、且つ、リード処理手段21がリード処理を実行中なので(ステップS1118がYES)、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(G)に示すものとなる。また、リード要求元のマスタ装置1−3へ待機レスポンスが返される。
その後、リード処理手段21がリード要求R21に従ったリード処理を完了し、リード要求元管理手段202に対してリード処理の完了を通知すると、リード要求元管理手段202は、図14のステップS141〜S143の処理を行い、優先マスタ装置1−2に待機解除通知を返す。これにより、マスタ装置1−2は、バス使用権を獲得した後、リード要求R21をスレーブ装置2−1へ送信する。
スレーブ装置2−1内の要求種別判定手段201は、リード要求R21をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R21が最初のリード要求でなく、リード処理手段21がリード処理を実行中でなく、且つ「第3モード」でないので(ステップS1112,S1118,S1118-1が共にNO)、リード用マスタ番号保持レジスタ23のエントリ#1に格納されている優先マスタ装置のマスタ番号M2と、リード要求M2とが一致するか否かを調べる(ステップS1121)。この場合、両者が一致するので(ステップS1121がYES)、リードバッファ有効フラグレジスタ211を参照してリードバッファ28に有効なデータが格納されているか否かを調べる(ステップS1122)。この例の場合、リードバッファ有効フラグレジスタ211には“1”が設定されているので(ステップS1122がYES)、リード要求元管理手段202は、リード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”に変更する(ステップS1123,S1124)。
リード処理手段21は、リードデータの転送が指示されると、図17のフローチャートに示すように、リードバッファ28に格納されているリードデータをマスタ装置1−2へ転送する(ステップS171)。
一方、リード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のフローチャートに示す処理を行う。この場合、動作モードが「第1モード」に設定されているので(ステップS120)、リード要求元管理手段202は、前述したステップS121〜S123の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図19(H)に示すものとなる。即ち、優先マスタ装置のマスタ番号が「M1」に変更され、他のマスタ番号は全て消去されることになる。また、リード処理を待機中のマスタ装置1−1,1−3に待機解除が送られる。
次に、3台のマスタ装置1−1,1−2,1−3において、同時にスレーブ装置2−1に対するライト要求W11,W21,W31が発生した場合を例にとって、動作モードが「第1モード」の時の動作を説明する。
マスタ装置1−1〜1−3は、ライト要求W11,W21,W31が発生すると、バスアービタ3にバス使用要求を送り、バスアービタ3は、最も優先順位が高いマスタ装置1−1にバス使用権を与える。
マスタ装置1−1内の制御手段11は、バス使用権を獲得すると、ライト要求手段13を使用して内部バス4上へライト要求W11を出力する(図6参照)。このライト要求W11には、マスタ番号M1と、スレーブ番号SL1と、ライトアドレスとが含まれている。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−1からライト要求W11が送られてくると(図11のステップS1111がNO)、それをライト要求元管理手段203に渡す。
ライト要求元管理手段203は、ライト要求W11が渡されると、それが電源投入後に渡された最初のライト要求であるか否かを判断する(図13のステップS1301)。今、例えば、ライト要求W11が最初のライト要求であるとすると(ステップS1301がYES)、ライト要求元管理手段203は、ライト要求W11をライト処理手段22に渡す(ステップS1302)。
ライト処理手段22はライト要求W11が渡されると、図18のフローチャートに示す処理を実行する。図18のステップS181では、ライト処理フラグレジスタ26中のライト処理フラグを“1”に変更することにより、ライト処理中であることを表示し、次のステップS182では、ライト要求元のマスタ装置1−1にライト許可を返す。
これにより、マスタ装置1−1内の制御手段11は、ライト要求手段13を利用して内部バス4にライトデータを出力し、その後、バスを開放する。
マスタ装置1−1が出力したライトデータは、スレーブ装置2−1内のライトバッファ27に格納される。ライト処理手段22は、ライトバッファ27に格納されているライトデータを、ライト要求W11に従ってメモリに書き込む(ステップS183)。但し、リード処理手段21が上記メモリからデータを読み出している場合は、リード処理手段21の処理が終わるのを待って、データの書き込みを行う。
また、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位が高いマスタ装置1−2にバス使用権を与える。バス使用権を獲得したマスタ装置1−2は、ライト要求W21を内部バス4に出力する。このライト要求W21には、マスタ番号M2と、スレーブ番号SL1と、ライトアドレスとが含まれている。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−2からのライト要求W21を受信すると、それをライト要求元管理手段203に渡す(図11のステップS1111がNO)。ライト要求元管理手段203はライト要求W21が渡されると、それが最初のライト要求でないので(図13のステップS1301がNO)、ライト処理フラグレジスタ26を参照することにより、ライト処理手段22がライト処理を実行中であるか否かを判断する(ステップS1303)。今、ライト処理手段22が、ライト要求W11に従って図18のステップS183の処理を行っているとすると、ライト処理フラグは“1”になっているので、ライト要求元管理手段203は、ライト用格納位置保持部206からマスタ番号の格納位置(初期状態においてはエントリ番号「0」になっている)を取得し、ライト用マスタ番号保持レジスタ24のエントリ#0にライト要求W21の要求元のマスタ番号M2を格納する(ステップS1310,S1311)。その後、ライト要求元管理手段203は、ライト用格納位置保持部206に格納されているエントリ番号「0」を+1して「1」に更新する(ステップS1312)。この結果、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、およびライト用読み出し位置保持部207が指し示す読み出し位置Rは、図20(A)に示すものとなる。その後、ライト要求元管理手段203は、ライト要求W21の要求元のマスタ装置1−2に待機レスポンスを返す(ステップS1313)。
これにより、マスタ装置1−2は、内部バス4を開放し、待機状態となる。また、内部バスが開放されることにより、マスタ装置1−3がバス使用権を獲得し、ライト要求W31を内部バス4に出力する。ライト要求W31には、マスタ番号M3,スレーブ番号SL1及びライトアドレスが含まれている。
スレーブ装置2−1内の要求種別判定手段201は、マスタ装置1−3からのライト要求W31を受信すると、それをライト要求元管理手段203に渡す(図11のステップS1111がNO)。ライト要求元管理手段203は、ライト要求W31が最初のライト要求でないので(図13のステップS1301がNO)、ライト処理フラグレジスタ26を参照することにより、ライト処理手段22がライト処理を実行中であるか否かを調べる(ステップS1303)。今、例えば、ライト処理手段22が、マスタ装置1−1からのライト要求W11に従ったライト処理を実行中であるとすると(ステップS1303がYES)、ライト要求元管理手段203は、前述したステップS1310〜S1313の処理を行う。これにより、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、ライト用読み出し位置保持部207が指し示す書き込み位置Rは、図20(B)に示すものとなる。また、マスタ装置1−3に待機レスポンスが返される。マスタ装置1−3は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
その後、ライト処理手段22がライト要求W11に従ったライト処理を完了し、ライト要求元管理手段203に対してライト処理完了を通知したとする(図18のステップS185)。
ライト要求元管理手段203は、ライト処理手段22からライト処理完了が通知されると、図15のフローチャートに示す処理を行う。ライト要求元管理手段203は、ステップS151において、モード設定手段29によって設定されている動作モードが「第1モード」であることを認識すると、待機中のマスタ装置1−2,1−3に待機解除通知を送信する(ステップS152)。その後、ライト要求元管理手段203は、ライト用格納位置保持部206に登録されているエントリ番号「2」を、ライト用読み出し位置保持部207に登録されているエントリ番号「0」の次のエントリ番号「1」に変更する(ステップS153)。この結果、ライト用格納位置保持部206が指し示す格納位置Wは、図20(C)に示すように、エントリ#2からエントリ#1に変更される。即ち、ステップS153の処理を行うことにより、優先マスタ装置1−2以外のマスタ装置のマスタ番号は、ライト用マスタ番号保持レジスタ24から消去されることになる。
その後、マスタ装置1−1において、第2番目のライト要求W12が発生したとする。マスタ装置1−1及び待機解除通知を受信したマスタ装置1−2,1−3は、バスアービタ3に対してバス使用要求を送信し、バスアービタ3は優先順位が高いマスタ装置1−1にバス使用権を与える。
マスタ装置1−1は、バス使用権を獲得すると、ライト要求W12をスレーブ装置2−1へ送信する。
スレーブ装置2−1内のライト要求元管理手段203は、要求種別判定手段201を介してマスタ装置1−1からのライト要求W12を受け取ると(図11のステップS1111がNO)、それが最初のライト要求でなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行していないので(ステップS1303がNO)、現在の動作モードを調べる(ステップS1304)。この例の場合、モード設定手段29は、動作モードとして「第1モード」を設定しているので、ライト要求元管理手段203は、ライト用読み出し位置保持部207に格納されているエントリ番号「0」が指し示しているライト用マスタ番号保持レジスタ24のエントリ#0から優先マスタ装置のマスタ番号M2を取得する(ステップS1305,S1306)。その後、ライト要求元管理手段203は、ステップS1306で取得したマスタ番号M2とライト要求W12の要求元のマスタ番号M1とが不一致であるので(ステップS1307がNO)、前述したステップS1310〜1313の処理を行う。この結果、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図20(D)に示すものとなる。また、ライト要求元のマスタ装置1−1へ待機レスポンスが送られる。
マスタ装置1−1は、待機レスポンスが送られてくると、内部バス4を開放し、待機状態となる。内部バス4が開放されると、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位が高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、スレーブ装置2−1に対してライト要求W21を送信する。
スレーブ装置2−1内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W21を受信すると(図11のステップS1111がNO)、ライト要求W21が最初のライト要求ではなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行中でないので(ステップS1303がNO)、モード設定手段29に設定されている動作モードを調べる(ステップS1304)。この場合、「第1モード」が設定されているので、ライト要求元管理手段203は、ライト用読み出し位置保持部207が指し示している、ライト用マスタ番号保持レジスタ24中のエントリ#0から優先マスタ装置のマスタ番号M2を取得し(図20(D)参照)、ライト要求W21中のマスタ番号M2と比較する(ステップS1307)。この場合、両者が一致するので、ライト要求元管理手段203は、ライト要求W21をライト処理手段22に渡す(ステップS1308)。これにより、ライト処理手段22は、前述した図18のステップS181〜S185の処理を実行し、マスタ装置1−2から送られてきたデータをメモリに書き込む。また、ライト要求元管理手段203は、ステップS1308を実行後、ライト用読み出し位置保持部207に格納されているエントリ番号「0」を+1し、「1」に更新する(ステップS1309)。これにより、ライト用読み出し位置保持部207が指し示す読み出し位置Rは、図20(E)に示すように、エントリ#0からエントリ#1に変更される。即ち、優先マスタ装置が、マスタ装置1−2からマスタ装置1−1に変更される。
ライトデータの転送処理を終えたマスタ装置1−2が内部バス4を開放すると、マスタ装置1−3がバス使用権を獲得し、スレーブ装置2−1に対してライト要求W31を出力する。
スレーブ装置2−1内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W31を受け取ると(図11のステップS1111がNO)、ライト要求W31が最初のライト要求ではなく(図13のステップS1301がNO)、且つライト処理手段22がライト処理を実行中であるので(ステップS1303がYES)、前述したステップS1310〜S1313の処理を行う。この結果、ライト用マスタ番号保持レジスタ24に内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図20(F)に示すものとなる。
その後、ライト処理手段22がライト要求W21に対する処理を完了すると、ライト要求元管理手段203は、前述した図15のステップS151〜S153の処理を行う。これにより、待機中のマスタ装置1−1,1−3に対して待機解除通知が送られ、ライト用格納位置保持部206が指し示す書き込み位置が、図20(G)に示すように、エントリ#3からエントリ#2に変更される。
〔第2モードの動作〕
今、例えば、3台のマスタ装置1−1,1−2,1−3において、動作モードが「第2モード」となっているスレーブ装置2−2に対するリード要求R11,R21,R31が同時に発生したとする。各マスタ装置1−1〜1−3内の制御手段11は、バスアービタ3にバス使用要求を送り、バスアービタ3は最も優先順位の高いマスタ装置1−1にバス使用権を与える。
マスタ装置1−1は、バス使用権を獲得すると、スレーブ装置2−2に対してリード要求R11を送信する(図7参照)。このリード要求R11には、マスタ番号M1,スレーブ番号SL2,リードアドレスが含まれている。
スレーブ装置2−2内の要求種別判定手段201は、マスタ装置1−1からの処理要求がリード要求であることを認識すると(図11のステップS1111がYES)、リード要求R11をリード要求元管理手段202に渡す。
リード要求元管理手段202は、要求種別判定手段201からリード要求R11が渡されると、それが電源投入後に最初に入力されたリード要求であるか否かを判断する(ステップS1112)。今、リード要求R11が電源投入後に最初に入力されたリード要求であるとすると、リード要求元管理手段202は、リード要求R11をリード処理手段21に渡す(ステップS1112がYES,S1113)。
リード処理手段21は、リード要求R11が渡されると、前述した図16のフローチャートのステップS161〜165に示す処理を実行し、リード要求R11によって要求されたデータをメモリから読み出し、リードバッファ28に格納する。なお、リード処理手段21において上述した処理が行われている間も、リード要求元管理手段202において以下の処理が並行して行われている。
リード要求元管理手段202は、図11のステップS1113においてリード処理手段21にリード要求R11を渡すと、リード用格納位置保持部204からマスタ番号の格納位置(初期状態においてはエントリ番号「0」になっている)を取得する(ステップS1114)。
リード要求元管理手段202は、リード用格納位置保持部204からエントリ番号「0」を取得すると、リード用マスタ番号保持レジスタ23のエントリ番号「0」のエントリ#0にリード要求元のマスタ装置1−1のマスタ番号M1を書き込む(ステップS1115)。その後、リード要求元管理手段202は、リード用格納位置保持部204に保持されているエントリ番号「0」を+1し、「1」にする(ステップS1116)。この時点でのリード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が示すマスタ番号の格納位置W、及びリード用読み出し位置保持部205が示すマスタ番号の読み出し位置Rは、図21(A)に示すものとなる。その後、リード要求元管理手段202は、リード要求元のマスタ装置1−1に待機レスポンスを返す(ステップS1117)。
マスタ装置1−1は、待機レスポンスを受信すると、内部バス4を開放し、待機状態となる。内部バス4が開放されると、バスアービタ3は、バス使用要求を出力しているリード要求R21,R31の内、優先順位の高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、内部バス4にリード要求R21を出力する。このリード要求R21には、マスタ装置1−2のマスタ番号M2と、スレーブ装置2−2のスレーブ番号SL2と、リードアドレスとが含まれている。
スレーブ装置2−2内の要求種別判定手段201は、マスタ装置1−2が内部バス4上に出力したリード要求R21を取り込むと(S1111がYES)、それをリード要求元管理手段202に渡す。
リード要求元管理手段202は、リード要求R21が最初のリード要求でないので(ステップS1112がNO)、リード処理フラグレジスタ25を参照することにより、リード処理手段21がリード処理を実行中であるか否かを調べる(ステップS1118)。この時点で、リード処理手段21によるリード要求R11の処理が完了していないとすると、ステップS1118の判断結果がYESとなるので、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図21(B)に示すものとなる。また、リード要求R21の要求元のマスタ装置1−2も待機状態となる。
その後、マスタ装置1−3がバス使用権を獲得し、内部バス4にリード要求R31(マスタ装置1−3のマスタ番号M3と、スレーブ装置2−2のスレーブ番号SL2と、リードアドレスとを含む)を出力すると、スレーブ装置2−2内の要求種別判定手段201がリード要求R31を取り込み、それをリード要求元管理手段202に渡す(ステップS1111がYES)。
リード要求元管理手段202は、リード要求R31が最初のリード要求でないので(ステップS1112がNO)、リード処理フラグレジスタ25を参照することにより、リード処理手段21がリード処理を実行中であるか否かを調べる(ステップS1118)。この時点で、リード処理手段21によるリード要求R11の処理が完了していないとすると、ステップS1118の判断結果がYESとなるので、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図21(C)に示すものとなる。また、リード要求R21の要求元のマスタ装置1−2も待機状態となる。
その後、リード処理手段21がリード要求R11に対する処理を完了し、リード要求元管理手段202に対してリード処理の完了を通知したとする。
リード要求元管理手段202は、リード処理手段21からリード処理の完了が通知されると、前述した図14のフローチャートのステップS141〜143の処理を行い、優先マスタ装置1−1に対して待機解除通知を送る。
優先マスタ装置1−1待機解除通知を受信すると、バスアービタ3に対してバス使用要求を送り、バスアービタ3によってバス使用権を獲得すると、待機中のリード要求R11を内部バス4に出力する。
スレーブ装置2−2内の要求種別判定手段201は、マスタ装置1−1からのリード要求R11をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R11が渡されると、それが最初のリード要求でないので、リード処理フラグレジスタ25を参照し、リード処理手段21がリード処理を実行しているか否かを調べる(ステップS1118)。この例では、リード処理手段21は、リード要求R11に対する処理を既に完了し、リード処理フラグレジスタ25中のリード処理フラグを“0”にしているので、ステップS1118の判断結果はNOとなる。
ステップS1118の判断結果がNOとなると、「第3モード」でないので(ステップS1118-1がNO)、リード要求元管理手段202は、リード用マスタ番号保持レジスタ23のエントリの内の、リード用読み出し位置保持部205が指し示しているエントリから優先マスタ装置のマスタ番号を読み込む(ステップS1119,S1120)。この時点では、リード用読み出し位置保持部205にはエントリ番号「0」が登録され、また、リード用マスタ番号保持レジスタ23の内容は図21(C)に示すものであるので、リード要求元管理手段202は、優先マスタ装置のマスタ番号として「M1」を取得することになる。
その後、リード要求元管理手段202は、ステップS1120で取得した優先マスタ装置のマスタ番号「M1」と、要求種別判定手段201から渡されたリード要求R11中のマスタ番号とが一致するか否かを調べる(ステップS1121)。この例の場合、リード要求R11に含まれているマスタ番号は「M1」であるので、ステップS1121の判断結果はYESとなる。ステップS1121の判断結果がYESとなると、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照することにより、リードバッファ28に有効なリードデータが格納されているか否かを調べる(ステップS1122)。この例の場合、リードバッファ有効フラグレジスタ211中のリードバッファ有効フラグは、“1”となっており、有効なリードデータが格納されていることを示しているので(ステップS1122がYES)、リード要求元管理手段202はリード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”とし、リードバッファ28に有効なリードデータが格納されていないことを表示する(ステップS1123,S1124)。
一方、リード処理手段21は、リード要求元管理手段202から転送指示が入力されると、図17のフローチャートに示すように、リードバッファ28に格納されているリードデータをマスタ装置1−1へ転送する(ステップS171)。また、マスタ装置1−1内の制御手段11は、リードデータを受信すると、内部バス4を開放する。
リード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のフローチャートに示す処理を行う。ステップS120では、モード設定手段29によって設定されている動作モードが、「第1モード」,「第2モード」,「第3モード」の何れであるかを調べる。この例の場合、モード設定手段29には、動作モードとして「第2モード」が設定されているので、ステップS124〜S126の処理を行う。ステップS124では、リード用読み出し位置保持部205に保持されているエントリ番号「0」を+1して「1」の変更し、ステップS125では、リード用マスタ番号保持レジスタ23のエントリ#1から優先マスタ装置1−2のマスタ番号M2を入力し、ステップS126では、優先マスタ装置1−2に待機解除通知を送る。この時点での、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示すリード位置Rは、図21(D)に示すものとなる。即ち、上記したステップS124の処理を行うことにより、優先マスタ装置のマスタ番号が「M1」から「M2」に変更されることになる。
一方、待機解除通知を受信したマスタ装置1−2及び既に待機解除されているマスタ装置1−1は、バスアービタ3に対してバス使用要求を出力し、バスアービタ3は、優先順位が最も高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、リード要求R12を内部バス4に出力する。
スレーブ装置2−2内の要求種別判定手段201は、リード要求R12をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R12が最初のリード要求でもなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でもなく(ステップS1118がNO)、動作モードが「第3モード」でもないので(ステップS1118-1がNO)、リード用マスタ番号保持レジスタ23のエントリ番号「1」のエントリ#1に登録されている優先マスタ装置のマスタ番号M2と、リード要求R12中のマスタ番号M1とを比較する(ステップS1119〜S1121)。この例の場合、両者が不一致なので(ステップS1121がNO)、リード要求元管理手段202は、前述したステップS1114〜S1117の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図21(E)に示すものとなる。また、リード要求元のマスタ装置1−1に待機レスポンスが返される。マスタ装置1−1は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
その後、待機解除状態にあるマスタ装置1−2がバス使用権を獲得し、リード要求R21をスレーブ装置2−2に送信する。
スレーブ装置2−2内の要求種別判定手段201は、マスタ装置1−2からのリード要求R21をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R21が最初のリード要求でもなく(ステップS1112がNO)、リード処理手段21がリード処理中でもなく(ステップS1118がNO)、「第3モード」でもないので(ステップS1118-1がNO)、リード用マスタ番号保持レジスタ23のエントリ番号「1」のエントリ#1の格納されている優先マスタ装置のマスタ番号M2とリード要求21中のマスタ装置M2とを比較する(ステップS1119〜S1121)。この例の場合、両者が共に「M2」であるので(ステップS1121がYES)、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照し、リードバッファ28に有効なリードデータが格納されているか否かを調べる(ステップS1122)。この例の場合、リードバッファ有効フラグは“0”となっており、リードバッファ28に有効なデータが格納されていないことを示しているので(ステップS1122)、リード要求元管理手段202は、リード要求R21をリード処理手段21に渡した後(ステップS1113)、ステップS1114〜S1117の処理を行う。
リード処理手段21は、リード要求R21が渡されると、前述した図16のフローチャートに示す処理を行う。また、ステップS1114〜S1116の処理が行われることにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図21(F)に示すものとなる。また、ステップS1117の処理が行われることにより、マスタ装置1−2に待機レスポンスが返される。マスタ装置1−2は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
そのリード処理手段21がリード要求R21に従った処理を完了すると、リード要求元管理手段202は、優先マスタ装置1−2に待機解除通知を送信する(図14のステップS141〜S143)。これにより、マスタ装置1−2は、バスアービタ3にバス使用要求を送り、バスアービタ3の調停によってバス使用権を獲得すると、待機中のリード要求R21をスレーブ装置2−2へ送信する。
スレーブ装置2−2内の要求種別判定手段201は、リード要求R21をリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R21が最初のリード要求でなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でなく(ステップS1118がNO)、「第3モード」でないので(ステップS1118-1がNO)、リード用マスタ番号保持レジスタ23のエントリ#1から優先マスタ装置1−2のマスタ番号M2を入力し、リード要求R21中のマスタ番号M2と一致するか否かを調べる(ステップS1121)。この例の場合、両者は一致するので、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照することにより、リードバッファ28に有効なデータが格納されていか否かを調べる(ステップS1122)。この時点では、リードバッファ有効フラグが“1”がなっているので、リード要求元管理手段202は、リード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”に変更する(ステップS1123,S1124)。
リード処理手段21は、リードデータの転送が指示されると、リードバッファ28に格納されているデータをマスタ装置1−2へ転送する(図17のステップS171)。
一方、リード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のステップS120,S124〜S126の処理を行う。これにより、リード用読み出し位置保持部205が指し示す優先マスタ装置のマスタ番号が、図21(G)に示すように、「M2」から「M3」に更新されると共に、優先マスタ装置1−3に待機解除通知が送られる。
マスタ装置1−3は、待機解除通知を受信すると、バスアービタ3にバス使用要求を送り、バスアービタ3の調停によってバス使用権を獲得すると、待機中のリード要求R31をスレーブ装置2−2へ送信する。
スレーブ装置2−2内の要求種別判定手段201は、リード要求R31を受信すると、それをリード要求元管理手段202に渡す(図11のステップS1111がYES)。リード要求元管理手段202は、リード要求R31が渡されると、それが最初のリード要求でなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でなく(ステップS1118がNO)、「第3モード」でないので(ステップS1118-1がNO)、リード要求R31中のマスタ番号M3と、リード用読み出し位置保持部205が指し示している優先マスタ装置のマスタ番号とが一致しているか否かを調べる(ステップS1119〜S1121)。この場合、リード用読み出し位置保持部205は、図21(G)に示すようにリード用マスタ番号保持レジスタ23のエントリ#2を指し示しており、このエントリ#2にはマスタ番号「M3」が登録されているので、両者は一致する。そして、両者が一致することを認識すると、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照することによりリードバッファ28に有効なデータが格納されているか否かを調べる(ステップS1122)。この場合、リードバッファ有効フラグは“0”となっているので、リード要求元管理手段202は、前述したステップS1113〜S1117の処理を行う。これにより、リード用マスタ番号保持レジスタ23に内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図21(H)に示すものとなり、また、マスタ装置1−3に待機レスポンスが送られ、マスタ装置1−3は、内部バス4を開放し、待機状態となる。
その後、リード処理手段21がリード要求R31に従った処理を完了すると、リード要求元管理手段202は、図14のフローチャートのステップS141〜S143の処理を行い、優先マスタ装置1−3に待機解除を送信する。これにより、マスタ装置1−3は、バスアービタ3にバス使用要求を出力し、バスアービタ3の調停によってバス使用権を獲得すると、待機中のリード要求R31をスレーブ装置2−2へ送信する。
スレーブ装置2−2内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R31を受け取ると(図11のステップS1111がYES)、リード要求R31は最初のリード要求でなく(ステップS1112がNO)、リード処理手段21がリード処理を実行しておらず(ステップS1118がNO)、「第3モード」でないので(ステップS1118-1がNO)、リード用読み出し位置保持部205によって指し示されている優先マスタ装置のマスタ番号とリード要求R31中のマスタ番号M3とを比較する(ステップS1121)。この場合、図21(H)に示すように、リード用読み出し位置保持部205は、エントリ#2を指し示しており、このエントリ#2にはマスタ番号M3が格納されている。従って、ステップS1121の判断結果がYESとなるので、リード要求元管理手段202は、リードバッファ有効フラグレジスタ211を参照することにより、リードバッファ28に有効なデータが格納されているか否かを調べる(ステップS1122)。この場合、リードバッファ有効フラグは“1”になっているので(ステップS1122がYES)、リード要求元管理手段202は、リード処理手段21に対してデータの転送を指示した後、リードバッファ有効フラグを“0”に変更する(ステップS1123,S1124)。
リード処理手段21は、データの転送が指示されると、リードバッファ28に格納されているデータをマスタ装置1−3へ転送する(図17のステップS171)。これにより、マスタ装置1−3は内部バス4を開放する。
一方、スレーブ装置2−2内のリード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のステップS120,S124〜S126の処理を行う。これにより、図20(I)に示すように、リード用読み出し位置保持部205が指し示す優先マスタ装置のマスタ番号が「M3」から「M1」に変更され、新たな優先マスタ装置1−1に待機解除通知が送られる。
次に、3台のマスタ装置1−1,1−2,1−3において、同時にスレーブ装置2−2に対するライト要求W11,W21,W31が発生した場合を例にとって、動作モードが「第2モード」の時の動作を説明する。
マスタ装置1−1〜1−3は、ライト要求W11,W21,W31が発生すると、バスアービタ3にバス使用要求を送り、バスアービタ3は、最も優先順位が高いマスタ装置1−1にバス使用権を与える。
マスタ装置1−1内の制御手段11は、バス使用権を獲得すると、内部バス4上へライト要求W11を出力する(図8参照)。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W11を受信すると(図11のステップS1111がNO)、それが電源投入後に渡された最初のライト要求であるか否かを判断する(図13のステップS1301)。今、例えば、ライト要求W11が最初のライト要求であるとすると(ステップS1301がYES)、ライト要求元管理手段203は、ライト要求W11をライト処理手段22に渡す(ステップS1302)。
ライト処理手段22はライト要求W11が渡されると、前述した図18のステップS181〜185の処理を実行し、マスタ装置1−1から送られてきたライトデータをメモリに書き込む。また、マスタ装置1−1は、ライトデータの転送処理が完了すると、内部バス4を開放する。
マスタ装置1−1がバスを開放すると、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位が高いマスタ装置1−2にバス使用権を与える。バス使用権を獲得したマスタ装置1−2は、ライト要求W21を内部バス4に出力する。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W21を受信すると(図11のステップS1111がNO)、ライト要求W21が最初のライト要求でなく(図13のステップS1301がNO)、且つライト処理手段22がライト処理を実行中であるので(ステップS1303がYES)であるので、前述したステップS1310〜S1313の処理を実行する。この結果、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、およびライト用読み出し位置保持部207が指し示す読み出し位置Rは、図22(A)に示すものとなる。その後、ライト要求元管理手段203は、ライト要求W21の要求元のマスタ装置1−2に待機レスポンスを返す(ステップS1313)。
これにより、マスタ装置1−2は、内部バス4を開放し、待機状態となる。また、内部バス4が開放されることにより、マスタ装置1−3がバス使用権を獲得し、ライト要求W31を内部バス4に出力する。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W31を受信すると(図11のステップS1111がNO)、ライト要求W31が最初のライト要求でなく(図13のステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行中なので(ステップS1303がYES)、前述したステップS1310〜S1313の処理を行う。これにより、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、ライト用読み出し位置保持部207が指し示す書き込み位置Rは、図22(B)に示すものとなる。また、マスタ装置1−3に待機レスポンスが返される。マスタ装置1−3は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
その後、ライト処理手段22がライト要求W11に従ったライト処理を完了し、ライト要求元管理手段203に対してライト処理完了を通知したとする(図18のステップS185)。
ライト要求元管理手段203は、ライト処理手段22からライト処理完了が通知されると、図15のフローチャートに示す処理を行う。ライト要求元管理手段203は、ステップS151において、モード設定手段29によって設定されている動作モードが「第2モード」であることを認識すると、ライト用読み出し位置保持部207に格納されているエントリ番号「0」に基づいて、ライト用マスタ番号保持レジスタ24のエントリ#0から優先マスタ装置のマスタ番号M2を入力し(ステップS154,S155)、上記マスタ番号M2によって特定されるマスタ装置1−2に待機解除通知を送信する(ステップS156)。
その後、マスタ装置1−1において、第2番目のライト要求W12が発生したとする。マスタ装置1−1及び待機解除通知を受信したマスタ装置1−2は、バスアービタ3に対してバス使用要求を送信し、バスアービタ3は優先順位が高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、ライト要求W12をスレーブ装置2−2へ送信する。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してマスタ装置1−1からのライト要求W12を受け取ると(図11のステップS1111がNO)、それが最初のライト要求でなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行していないので(ステップS1303がNO)、現在の動作モードを調べる(ステップS1304)。この例の場合、モード設定手段29は、動作モードとして「第2モード」を設定しているので、ライト要求元管理手段203は、ライト用読み出し位置保持部207に格納されているエントリ番号「0」が指し示しているライト用マスタ番号保持レジスタ24のエントリ#0から優先マスタ装置のマスタ番号M2を取得する(ステップS1305,S1306)。その後、ライト要求元管理手段203は、ステップS1306で取得したマスタ番号M2とライト要求W12の要求元のマスタ番号M1とが不一致であるので、前述したステップS1310〜1313の処理を行う。この結果、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図22(C)に示すものとなる。また、ライト要求元のマスタ装置1−1へ待機レスポンスが送られる。
マスタ装置1−1は、待機レスポンスが送られてくると、内部バス4を開放し、待機状態となる。内部バス4が開放されると、待機解除状態にあるマスタ装置1−2がバス使用権を獲得し、スレーブ装置2−2に対してライト要求W21を送信する。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W21を受信すると(図11のステップS1111がNO)、ライト要求W21が最初のライト要求ではなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行中でないので(ステップS1303がNO)、モード設定手段29に設定されている動作モードを調べる(ステップS1304)。この場合、「第2モード」が設定されているので、ライト要求元管理手段203は、ライト用読み出し位置保持部207が指し示している、ライト用マスタ番号保持レジスタ24中のエントリ#0から優先マスタ装置のマスタ番号M2を取得し(図22(C)参照)、ライト要求W21中のマスタ番号M2と比較する(ステップS1307)。この場合、両者が一致するので(ステップS1307がYES)、ライト要求元管理手段203は、ライト要求W21をライト処理手段22に渡す(ステップS1308)。これにより、ライト処理手段22は、前述した図18のステップS181〜S185の処理を実行し、マスタ装置1−2から送られてきたデータをメモリに書き込む。また、ライト要求元管理手段203は、ステップS1308を実行後、ライト用読み出し位置保持部207に格納されているエントリ番号「0」を+1し、「1」に更新する(ステップS1309)。これにより、ライト用読み出し位置保持部207が指し示す読み出し位置Rは、図22(D)に示すように、エントリ#0からエントリ#1に変更される。
その後、ライト処理手段22がライト要求W21に対するライト処理を完了すると、前述した図15のステップS151,S154〜S156の処理を行う。これにより、優先マスタ装置1−3に待機解除通知が送られる。待機解除通知を受けたマスタ装置1−3は、バス使用権を獲得した後、ライト要求W31をスレーブ装置2−2へ送信する。
スレーブ装置2−2内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W31を受信すると(図11のステップS1111がNO)、ライト要求W31が最初のライト要求ではなく(図13のステップS1301がNO)、ライト処理手段22がライト処理を実行中でなく(ステップS1303がNO)、且つ動作モードが「第2モード」であるので(ステップS1304)、ライト用読み出し位置保持部207が指し示しているライト用マスタ番号保持レジスタ24のエントリ#1に格納されている優先マスタ装置のマスタ番号M3(図22(D)参照)と、ライト要求W31中のマスタ番号M3とを比較する(ステップS1305〜S1307)。この場合、両者が一致するので(ステップS1307がYES)、ライト要求元管理手段203は、マスタ装置1−3からのライト要求W31をライト処理手段22に渡す(ステップS1308)。ライト要求を渡されたライト処理手段22は、前述した図18のフローチャートに示す処理を実行する。また、ライト要求元管理手段203は、ステップS1308を実行後、ライト用読み出し位置保持部207に格納されているエントリ番号「1」を+1し、「2」に更新する(ステップS1309)。この結果、ライト用読み出し位置保持部207が指し示す読み出し位置Rは、図22(E)に示すように、エントリ#1からエントリ#2に変更される。即ち、マスタ番号M1のマスタ装置1−1が新たな優先マスタとなる。
〔第3モードの動作〕
今、例えば、3台のマスタ装置1−1,1−2,1−3において、動作モードが「第3モード」となっているスレーブ装置2−3に対するリード要求R11,R21,R31が発生したとする。各マスタ装置1−1〜1−3は、バスアービタ3にバス使用要求を送り、バスアービタ3は、最も優先順位が高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、内部バス4上にリード要求R11を出力する(図9参照)。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R11を受信すると(図11のステップS1111がYES)、それが電源投入後に最初に入力されたリード要求であるか否かを判断する(ステップS1112)。今、リード要求R11が電源投入後に最初に入力されたリード要求であるとすると、リード要求元管理手段202は、リード要求R11をリード処理手段21に渡す(ステップS1112がYES,S1113)。リード処理手段21は、リード要求R11が渡されると、前述した図16のフローチャートに示す処理を実行する。
リード要求元管理手段202は、ステップS1113を実行後、前述したステップS1114〜S1116の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が示すマスタ番号の格納位置W、及びリード用読み出し位置保持部205が示すマスタ番号の読み出し位置Rは、図23(A)に示すものとなる。その後、リード要求元管理手段202は、リード要求元のマスタ装置1−1に待機レスポンスを返す(ステップS1117)。
マスタ装置1−1は、待機レスポンスを受信すると、内部バス4を開放し、待機状態となる。内部バス4が開放されると、バスアービタ3が、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位の高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、内部バス4にリード要求R21を出力する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R21を受信すると(S1111がYES)、リード要求R21が最初のリード要求でなく(ステップS1112がNO)、且つリード処理手段21がリード処理を実行中であるので(ステップS1118がYES)、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(B)に示すものとなる。また、リード要求R21の要求元のマスタ装置1−2も待機状態となる。
その後、マスタ装置1−3がバス使用権を獲得し、内部バス4にリード要求R31を出力すると、スレーブ装置2−3内の要求種別判定手段201がリード要求R31を取り込み、それをリード要求元管理手段202に渡す(ステップS1111がYES)。
リード要求元管理手段202は、リード要求R31が最初のリード要求でなく(ステップS1112がNO)、且つ、リード処理手段21がリード処理中なので(ステップS1118がYES)、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(C)に示すものとなる。また、リード要求R31の要求元のマスタ装置1−3も待機状態となる。
その後、リード処理手段21がリード要求R11に対する処理を完了し、リード要求元管理手段202に対してリード処理の完了を通知したとする。
リード要求元管理手段202は、リード処理手段21からリード処理の完了が通知されると、図14のフローチャートに示す処理を行い、優先マスタ装置1−1に待機解除通知を送信する。優先マスタ装置1−1は、待機解除通知を受信すると、バス使用権を獲得後、リード要求R11を内部バス4に出力する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してマスタ装置1−1からのリード要求R11を受信すると(図11のステップS1111がYES)、リード要求R11が最初のリード要求ではなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でないので(ステップS1118がNO)、動作モードが「第3モード」であるか否かを調べる(ステップS1118-1)。この場合、「第3モード」なので、リードバッファ28に有効なデータが格納されているか否かを調べる(ステップS1118-2)。この場合、有効なデータが格納されているので(ステップS1118-2がYES)、リード要求元管理手段202はリード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”とする(ステップS1123,S1124)。
一方、リード処理手段21は、リード要求元管理手段202から転送指示が入力されると、リードバッファ28に格納されているリードデータをマスタ装置1−1へ転送する(図17のステップS171)。また、マスタ装置1−1は、リードデータを受信すると、内部バス4を開放する。
リード要求元管理手段202は、図11のステップS1124の処理が終了すると、図12のフローチャートに示す処理を行う。リード要求元管理手段202は、ステップS120で、動作モードが「第3モード」であることを認識すると、待機中のマスタ装置1−2,1−3に待機解除通知を送信する(ステップS127)。その後、リード要求元管理手段202は、リード用格納位置保持部204とリード用読み出し位置保持部205に同一のエントリ番号(本実施の形態では「0」とする)を格納する(ステップS128)。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示すリード位置Rは、図23(D)に示すものとなる。即ち、上記したステップS128の処理を行うことにより、リード用マスタ番号保持レジスタ23に格納されていた全てのマスタ番号が削除されることになる。
一方、待機解除通知を受信したマスタ装置1−2,1−3及び既に待機解除されているマスタ装置1−1は、バスアービタ3に対してバス使用要求を出力し、バスアービタ3は、優先順位が最も高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、リード要求R12を内部バス4に出力する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R12を受信すると(ステップS1111がYES)、リード要求R12が最初のリード要求でもなく(ステップS1112がNO)、リード処理手段21がリード処理を実行中でもないので(ステップS1118がNO)、動作モードが「第3モード」か否かを調べる(ステップS1181-1)。この場合、「第3モード」なので、リードバッファ28に有効なデータが格納されているか否かを調べる(ステップS1181-2)。この場合、有効なデータが格納されていないので、ステップS1113〜S1117の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(E)に示すものとなる。また、リード要求元のマスタ装置1−1に待機レスポンスが返される。マスタ装置1−1は、待機レスポンスが返されると、内部バス4を開放し、待機状態となる。
その後、バスアービタ3が、バス使用要求を出力しているマスタ装置1−2,1−3のうち、優先順位が高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、リード要求R21をスレーブ装置2−3に送信する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R21を受信すると(ステップS1111がYES)、それが最初のリード要求でなく(ステップS1112がNO)、且つ、リード処理手段21がリード処理中なので(ステップS1118がYES)、前述したステップS1114〜S1117の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(F)に示すものとなる。また、マスタ装置1−2へ待機レスポンスが返され、マスタ装置1−2は内部バス4を開放し、待機状態となる。
内部バス4が開放されると、待機状態になっていないマスタ装置1−3がバス使用権を獲得し、リード要求R31をスレーブ装置2−3に対して出力する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してリード要求R31を受信すると(ステップS1111がYES)、それが最初のリード要求でなく(ステップS1112がNO)、且つ、リード処理手段21がリード処理を実行中なので(ステップS1118がYES)、前述したステップS1114〜S1117の処理を行う。この結果、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、およびリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(G)に示すものとなる。また、リード要求元のマスタ装置1−3へ待機レスポンスが返される。
その後、リード処理手段21が、マスタ装置1−1から送られてきたリード要求R12に従ったリード処理を完了し、リード要求元管理手段202に対してリード処理の完了を通知すると、リード要求元管理手段202は、図14のステップS141〜S143の処理を行い、優先マスタ装置1−1に待機解除通知を返す。これにより、マスタ装置1−1は、バス使用権を獲得した後、リード要求R12をスレーブ装置2−3へ送信する。
スレーブ装置2−3内のリード要求元管理手段202は、要求種別判定手段201を介してマスタ装置1−1からのリード要求R12を受信すると、ステップS1112がNO、ステップS1118がNO、ステップS1118-1がYES、ステップS1118-2がYESとなるので、リード処理手段21に対してリードデータの転送を指示した後、リードバッファ有効フラグを“0”に変更する(ステップS1123,S1124)。リード処理手段21は、転送指示が与えられると、リードバッファ28に格納されているリードデータをマスタ装置1−1へ転送する(図17のステップS171)。一方、リード要求元管理手段202は、ステップS1124の処理を行った後、図12のステップS120,S127,S128の処理を行う。これにより、リード用マスタ番号保持レジスタ23の内容、リード用格納位置保持部204が指し示す格納位置W、及びリード用読み出し位置保持部205が指し示す読み出し位置Rは、図23(H)に示すものとなる。即ち、リード用マスタ番号保持レジスタ23に格納されているマスタ番号は、全て消去されたことになる。
次に、3台のマスタ装置1−1,1−2,1−3において、同時にスレーブ装置2−3に対するライト要求W11,W21,W31が発生した場合を例に挙げて、動作モードが「第3モード」の時の動作を説明する。
マスタ装置1−1〜1−3は、ライト要求W11,W21,W31が発生すると、バスアービタ3にバス使用要求を送り、バスアービタ3は、最も優先順位が高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、内部バス4上へライト要求W11を出力する(図10参照)。
スレーブ装置2−3内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W11を受信すると(図11のステップS1111がNO)、それが電源投入後に渡された最初のライト要求であるか否かを判断する(図13のステップS1301)。今、例えば、ライト要求W11が最初のライト要求であるとすると(ステップS1301がYES)、ライト要求元管理手段203は、ライト要求W11をライト処理手段22に渡す(ステップS1302)。
ライト処理手段22はライト要求W11が渡されると、前述した図18のフローチャートに示す処理を実行する。また、マスタ装置1−1は、ライトデータを転送後、内部バス4を開放する。
また、マスタ装置1−1がバスを開放すると、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位が高いマスタ装置1−2にバス使用権を与える。バス使用権を獲得したマスタ装置1−2は、ライト要求W21を内部バス4に出力する。
スレーブ装置2−3内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W21を受信すると、それが最初のライト要求でなく(図13のステップS1301がNO)、且つライト処理手段22がライト処理を実行中なので(ステップS1303がYES)、前述したステップS1310〜S1312の処理を行う。この結果、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、およびライト用読み出し位置保持部207が指し示す読み出し位置Rは、図24(A)に示すものとなる。その後、ライト要求元管理手段203は、ライト要求W21の要求元のマスタ装置1−2に待機レスポンスを返す(ステップS1313)。
これにより、マスタ装置1−2は、内部バス4を開放し待機状態となる。また、内部バス4が開放されることにより、マスタ装置1−3がバス使用権を獲得し、ライト要求W31を内部バス4に出力する。
スレーブ装置2−3のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W31を受信すると、ステップS1301がNO、ステップS1303がYESとなるので、前述したステップS1310〜S1312の処理を行う。これにより、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、ライト用読み出し位置保持部207が指し示す書き込み位置Rは、図24(B)に示すものとなる。その後、ライト要求元管理手段203は、マスタ装置1−3に待機レスポンスを返す(ステップS1313)。これにより、マスタ装置1−3は、内部バス4を開放し、待機状態となる。
その後、ライト処理手段22がライト要求W11に従ったライト処理を完了し、ライト要求元管理手段203に対してライト処理完了を通知したとする(図18のステップS185)。
ライト要求元管理手段203は、ライト処理手段22からライト処理完了が通知されると、図15のフローチャートに示す処理を行う。ライト要求元管理手段203は、ステップS151において、モード設定手段29によって設定されている動作モードが「第3モード」であることを認識すると、待機中のマスタ装置1−2,1−3に待機解除通知を送り(ステップS157)、その後、ライト用格納位置保持部206とライト用読み出し位置保持部207に同一のエントリ番号(本実施の形態ではエントリ番号「0」とする)を書き込む(ステップS158)。この結果、ライト用マスタ番号保持レジスタ24に内容は、図24(C)に示すものとなる。即ち、ステップS158の処理を行うことにより、ライト用マスタ番号保持レジスタ24に格納されていた全てのマスタ番号が削除されたことになる。
その後、マスタ装置1−1において、第2番目のライト要求W12が発生したとする。マスタ装置1−1及び待機解除通知を受信したマスタ装置1−2,1−3は、バスアービタ3に対してバス使用要求を送信し、バスアービタ3は優先順位が高いマスタ装置1−1にバス使用権を与える。マスタ装置1−1は、バス使用権を獲得すると、ライト要求W12をスレーブ装置2−3へ送信する。
スレーブ装置2−3内のライト要求元管理手段203は、要求種別判定手段201を介してマスタ装置1−1からのライト要求W12を受け取ると(図11のステップS1111がNO)、それが最初のライト要求でなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理を実行していないので(ステップS1303がNO)、現在の動作モードを調べる(ステップS1304)。この例の場合、モード設定手段29は、動作モードとして「第3モード」を設定しているので(ステップS1304)、ライト要求元管理手段203は、ライト要求W12をライト処理手段22に渡す(ステップS1302)。
ライト処理手段22は、ライト要求W12が渡されると、図18のフローチャートに示す処理を行う。また、マスタ装置1−1は、ライトデータを転送後、内部バス4を開放状態にする。内部バスが開放されると、バスアービタ3は、バス使用要求を出力しているマスタ装置1−2,1−3の内、優先順位の高いマスタ装置1−2にバス使用権を与える。マスタ装置1−2は、バス使用権を獲得すると、ライト要求W21をスレーブ装置2−3へ送信する。
スレーブ装置2−3内のライト要求元管理手段203は、要求種別判定手段201を介してライト要求W21を受信すると(ステップS1111がNO)、ライト要求W21が最初のライト要求でなく(ステップS1301がNO)、且つ、ライト処理手段22がライト処理中なので(ステップS1303がYES)、前述したステップS1310〜S1312の処理を行う。これにより、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図24(D)に示すものとなる。その後、ライト要求元管理手段203は、マスタ装置1−2に対して待機レスポンスを返す(ステップS1313)。これにより、マスタ装置1−2は、内部バス4を開放し、待機状態になる。内部バス4が開放されると、マスタ装置1−3がバス使用権を獲得し、内部バス上にライト要求W31を出力する。
スレーブ装置2−3内のライト要求元管理手段203は、ライト要求W31を受信すると、ステップS1111がNO、ステップS1301がNO、ステップS1303がYESとなるので、前述したステップS1310〜S1312の処理を行う。これにより、ライト用マスタ番号保持レジスタ24に内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図24(E)に示すものとなる。
その後、ライト処理手段22がライト要求W12に従ったライト処理を完了すると、ライト要求元管理手段203は、図15のフローチャートのステップS151,S157,S158の処理を行う。これにより、ライト用マスタ番号保持レジスタ24の内容、ライト用格納位置保持部206が指し示す格納位置W、及びライト用読み出し位置保持部207が指し示す読み出し位置Rは、図24(F)に示すものとなる。即ち、ライト用マスタ番号保持レジスタ24に登録されているマスタ番号が全て削除されることになる。
図25(A),(B),(C)は、それぞれ動作モードを「第1モード」,「第2モード」,「第3モード」とした場合の、スレーブ装置2−3における要求選択結果を示す図である。なお、図25は、マスタ装置1−1が8個のリード要求R11〜R18を連続的に出力し、マスタ装置1−2が3個のリード要求R21〜R23を連続的に出力し、マスタ装置1−3が1個のリード要求R31を出力した場合についてのものである。また、各マスタ装置1−1〜1−3の優先順位は、1マスタ装置1−1>マスタ装置1−2>マスタ装置1−3になっているとする。
動作モードを「第1モード」とした場合は、図25(A)に示すように、優先順位が最も高いマスタ装置1−1において8個のリード要求R11〜R18が連続的に発生しても、2番目に優先順位が高いマスタ装置1−2で発生したリード要求R21,R22,R23が時刻T2,T4,T6において選択されている。「第1モード」は、リード要求に従ったリード処理を実行中に最初に入力されたリード要求の要求元マスタ装置だけを優先させるため、マスタ装置1−3が出力したリード要求R31は、マスタ装置1−2の処理が完了するまで、選択されることはない。しかし、マスタ装置1−2の処理が完了すれば、優先順位が最も高いマスタ装置1−1が処理中であっても、リード要求R31は選択される(時刻T8)。
動作モードを「第2モード」とした場合は、図25(B)に示すように、優先順位が最も高いマスタ装置1−1において8個のリード要求R11〜R18が連続的に発生しても、2番目に優先順位が高いマスタ装置1−2で発生したリード要求R21,R22,R23が時刻T2,T5,T7で選択され、最も優先順位が低いマスタ装置1−3で発生したリード要求も時刻T3で選択されている。
動作モードを「第3モード」とした場合は、図25(C)に示すように、先ず、最も優先順位が高いマスタ装置1−1のリード要求R11〜R18が時刻T1〜T8において選択され、その後、第2番目に優先順位が高いマスタ装置1−2のリード要求R21〜R23が時刻T9〜T11において選択され、最後に、最も優先順位が低いマスタ装置1−3のリード要求が時刻T12において選択される。このように、動作モードを「第3モード」とした場合には、各マスタ装置の優先順位の順番でリード要求が処理されることになる。
なお、図25では、リード要求の場合を例にとって説明したがライト要求の場合も、同様である。
〔第1の実施の形態の効果〕
本実施の形態によれば、ライブロックが発生しないスレーブ装置を実現することが可能になる。その理由は、スレーブ装置自身が、内部バス4を介して入力された処理要求の入力順序に基づいてマスタ装置に対する第二の優先順位を決定する構成を有する要求管理手段20を備えているからである。つまり、バスアービタによって決まる第一の優先順位と異なる、処理要求の入力順によって決まる第二の優先順位に従って各マスタ装置からの処理要求を処理するようにしているからである。
また、本実施の形態によれば、ライブロックが発生しないようにしたスレーブ装置と、ライブロックが発生するのを承知の上で、優先順位が高いマスタ装置が優先的に使用できるスレーブ装置とを混在させたバスシステムを実現することが可能となる。その理由は、バスアービタとして、バス使用要求を出力した複数のマスタ装置の中から予め固定的に定められているマスタ装置の優先順位に基づいてバス使用権を与えるマスタ装置を決定するバスアービタ3を使用し、且つ内部バス4に接続されている一部のスレーブ装置に、マスタ装置から処理要求が送られてきたとき、他のマスタ装置からの処理要求に従った処理を実行中であれば、要求元のマスタ装置のマスタ番号を保持しておき、処理要求に従った処理が完了した後、保持しているマスタ番号に従って、次に優先的に処理要求を受け付ける優先マスタ装置を決定する要求管理手段20を設けたからである。
また、本実施の形態によれば、1台のスレーブ装置を、優先順位の高いマスタ装置からの処理要求を優先的に受け付けるスレーブ装置として動作させることも、ライブロックが発生しないようにしたスレーブ装置として動作させることも可能になる。その理由は、要求管理手段20の動作モードを切り替えるモード切り替え手段29を備えているからである。
〔発明の第2の実施の形態〕
本発明の第2の実施の形態は、図29において、図2に示したスレーブ装置2−1〜2−nの代わりに、図26に示すスレーブ装置2−1a〜2−naを使用することにより実現される。
スレーブ装置2−1a〜2−naと、スレーブ装置2−1〜2−nとの相違点は、特定マスタ設定手段30が追加されている点、要求管理手段20の代わりに要求管理手段20aを備えている点、リード要求元管理手段202の代わりにリード要求元管理手段202aを備えている点、及びライト要求元管理手段203の代わりにライト要求元管理手段203aを備えている点である。
特定マスタ設定手段30には、利用者によって、処理要求を優先的に処理するマスタ装置(優先マスタ装置)のマスタ番号が1個設定される。
要求管理手段20aは、リード要求元管理手段202,ライト要求元管理手段203の代わりにリード要求元管理手段202a,ライト要求元管理手段203aを備えている点が、要求管理手段20と相違している。
リード要求元管理手段202aは、図12のステップS124〜S126の代わりに、図27のステップS271〜S276の処理を行う点がリード要求元管理手段202と相違している。
ライト要求元管理手段203aは、図15のステップS152,S153の代わりに図28のステップS281〜S286の処理を行う点がライト要求元管理手段203と相違している。
以下では、この相違部分についてのみ説明する。
利用者は、動作モードを「第1モード」に設定したスレーブ装置において、優先的に処理要求を受け付けるマスタ装置(特定マスタ装置)を設定したい場合は、特定マスタ設定手段30を用いて特定マスタ装置のマスタ番号を設定する。例えば、スレーブ装置2−1において、マスタ装置1−3からの処理を優先的に受け付けるようにする場合には、特定マスタ手段30を用いてマスタ装置1−3のマスタ番号M3を設定しておく。
リード要求元管理手段202aは、図12のステップS120において、スレーブ装置2−1の動作モードが「第1モード」であると認識すると、ステップS124〜S126の代わりに、図27のステップS271〜S276の処理を行う。
ステップS271では、特定マスタ設定手段30に特定マスタ装置のマスタ番号が設定されているか否かを調べる。そして、特定マスタ番号が設定されていない場合(ステップS271がNO)は、図12のステップS121〜S123と同様の処理を行う。これに対して、特定マスタ番号が設定されている場合は、リード用マスタ番号保持レジスタ23に特定マスタ番号が格納されているか否かを調べる(ステップS271-1)。そして、格納されていない場合(ステップS271-1がNO)は、ステップS276の処理を行う。これに対して格納されている場合(ステップS271-1がYES)は、リード用マスタ番号保持レジスタ23のエントリの内の、リード用読み出し位置保持部205が指し示しているエントリの次のエントリに特定マスタ装置のマスタ番号を格納し、その後、リード用読み出し位置保持部205に保持されているエントリ番号を+1する(ステップS272,S273)。これにより、特定マスタ装置からのリード要求を優先的に受け付ける状態(特定マスタ装置が優先マスタ装置となる)になる。その後、リード要求元管理手段202aはリード用格納位置保持部204に格納されているエントリ番号を、リード用読み出し位置保持部205が指し示しているエントリの次のエントリ番号に更新する(ステップS274)。これにより、リード用マスタ番号保持レジスタ23から特定マスタ装置のマスタ番号以外が消去されることになる。その後、リード要求元管理手段202aは、待機中のマスタ装置に待機解除を返す(ステップS275)。
また、ライト要求元管理手段203aは、図15のステップS151において、スレーブ装置2−1の動作モードが「第1モード」であると判断すると、図15のステップS152,S153の代わりに、図28のステップS281〜S286の処理を行う。
ステップS281では、特定マスタ設定手段30に、特定マスタ装置のマスタ番号が設定されているか否かを判断する。そして、設定されていない場合(ステップS281がNO)は、図15のステップS152,S153と同様の処理を行う(ステップS286)。これに対して、特定マスタ装置のマスタ番号が設定されている場合(ステップS281がYES)は、ライト用マスタ番号保持レジスタ24に特定マスタ番号が格納されているか否かを調べる(ステップS281-1)。そして、格納されていない場合(ステップS281-1がNO)は、ステップS286の処理を行う。これに対して、格納されている場合(ステップS281-1がYES)は、ライト用マスタ番号保持レジスタ24のエントリの内の、ライト用読み出し位置保持部207が指し示しているエントリの次のエントリに、特定マスタ装置のマスタ番号を格納し、その後、ライト用格納位置保持部206に保持されているエントリ番号を+1する(ステップS282,S283)。これにより、特定マスタ装置からのライト要求を優先的に受け付ける状態(特定マスタ装置が優先マスタ装置となる)になる。その後、ライト要求元管理手段203aは、ライト用格納位置保持部206に保持されているエントリ番号を、ライト用読み出し位置保持部207の保持されているエントリ番号の次のエントリ番号に更新する(ステップS284)。これにより、ライト用マスタ番号保持レジスタ24からは、特定マスタ装置のマスタ番号以外は消去されることになる。その後、ライト要求元管理手段203aは、待機中のマスタ装置へ待機解除通知を送信する(ステップS285)。
〔第2の実施の形態の効果〕
本実施の形態によれば、第1の実施の形態が有している効果に加え、スレーブ装置において処理実行中に、利用者によって指定されているマスタ装置から処理要求があった場合、上記マスタ装置からの処理要求を優先的に処理することが可能になるという効果を得ることができる。その理由は、利用者によってマスタ番号が設定される特定マスタ設定手段30を備え、且つ、要求管理手段20aが、特定マスタ設定手段30に設定されているマスタ番号がリード用マスタ番号保持レジスタ23,ライト用マスタ番号保持レジスタ24に保持されている場合、そのマスタ番号のマスタ装置を優先マスタ装置にする構成を有しているからである。