(57)【特許請求の範囲】
【請求項１】
各プロセッサがインターロック転送方式により転送を行うローカルバスを経て接続されたバスインタフェース回路を介してスプリット転送方式による転送を行うシステムバスに接続されるマルチプロセッサシステムにおけるロック転送制御方式において，
バスインタフェース回路の送信制御部に，ローカルバスからシステムバスへアクセスを行う場合にローカルバスのロック転送を表す信号とシステムバスの使用許可を表す信号によりシステムバスへロック転送を要求するシステムバスロック信号を発生するシステムバスロック信号発生部と，
ローカルバスのロック信号のオフを検出して保持するロックオフ検出保持部と，システムバスを介する他のプロセッサからローカルバスに受信したコマンドが存在する事を表す信号と，ローカルバスのデータ線の信号が有効であることを表すデータストローブ信号を入力として，ローカルバスのロック転送が中断した時に，システムバスのロック信号が停止しないように後記のシステムバスロック停止部への通知をマスクするマスク信号発生部と，前記ロックオフ検出保持部の出力の通過を前記マスク信号発生部の出力信号により制御するゲート部と，前記ゲート部を通過した出力により前記システムバスロック信号発生部をリセットする信号を発生するシステムバスロック停止部とを備え，
前記マスク信号発生部の出力により，ローカルバスからのロック転送実行中にシステムバスから当該バスインタフェース回路へ受信されたアクセスによりその転送が中断してもシステムバスロック信号が停止しないことを特徴とするロック転送制御方式。
【請求項２】
請求項１において，
前記中断後の再送アクセスにおけるローカルバスからのローカルバスロック信号が中断前のロック状態と異なる場合をエラーとして検出する回路を設け，
前記エラーとして検出する回路の出力信号と前記ロックオフ検出保持部の出力信号とをオア回路に供給して，その出力をシステムバスロック停止部に供給することにより，システムバスロック信号が発生され続けることを防止することを特徴とするロック転送制御方式。
【請求項３】
請求項１または２において，
前記マスク信号発生部は，ローカルバスからのロック転送によるアクセスを実行中であって転送が完了しない時にシステム側からのコマンド信号の受信を検出するとロック転送が完結していない状態を保持してシステムバスロック信号が停止しないように抑止信号を発生し，割り込まれたシステムバスからのコマンド信号の受信を完了したあと，中断したローカルバスからのロック転送を再開してシステムバスを介した転送が正常に完了すると抑止信号を停止する構成を特徴とするロック転送制御方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はローカルバスがインターロック転送方式でシステムバスがタイムスプリットバスに接続されているバスインタフェース制御回路に用いられるロック転送制御方式に関する。
【０００２】
ローカルバスがインターロック転送方式で，システムバスがタイムスプリット方式のマルチプロセッサシステムバスのバスインタフェース制御回路において，ローカルバスからのロック転送実行中にその転送が一時中断したり，中断後の再送アクセスがエラーになると，ロック信号の状態をシステムバスに的確に通知してシステムバスがスタックしないようにすることが望まれている。
【０００３】
【従来の技術】
各マイクロプロセッサがローカルバスを経て接続されたバスインタフェース回路（ＢＩＦ）を介してシステムバスに接続されるマルチプロセッサシステムにおけるロック転送方式について，本発明と同一の出願人により先に提案したロック転送方式（特開平４−２０５２４７号公報参照）があり，その方式の前提となるロック転送の技術及び提案された技術について説明する。
【０００４】
図７はマルチプロセッサシステムの構成例，図８は処理装置の構成例，図９は従来のシステム構成である。
マルチプロセッサシステムは，図７に示すようにシステムバス（ＳＢで表示）に多数の処理装置と複数の共通メモリ（ＣＭ１〜ＣＭｎで表示）及びシステムバスの使用権を調停するバスアービタ（ＢＡ）が接続され，各処理装置が共通メモリにアクセスする場合はバスアービタに使用権を要求する信号を発生し，バスアービタから許可信号を得るとシステムバスの使用権が得られて共通メモリにアクセスすることができる。このシステムバスはタイムスプリット方式の転送を行うバスであり，バス使用権を得た装置がコマンドとアドレス（及びデータ）を転送するとシステムバスの使用権が直ちに他の装置に対し与えられ，時分割でシステムバスを効率的に利用することができる。
【０００５】
各処理装置は，図８に示す処理装置の構成例（番号ｎの処理装置の例）のような内部構成を備え，プロセッサ（ＣＰＵで表示）とバスインタフェース回路（ＢＩＦで表示）がローカルバス（ＬＢで表示）に接続され，ローカルバス（ＬＢ）にローカルメモリ（ＬＭで表示）が接続されている。ローカルバス（ＬＢ）の使用権の調停はローカルバスアービタ（ＬＢＡで表示）で行い，バスマスタ（ＣＰＵ）またはバスインタフェース（ＢＩＦ）はローカルバスの使用権を得てローカルメモリ（ＬＭ）にアクセスすることができる。このローカルバスは，インターロック転送方式のバスであり，バスをロック状態にして転送が行われる。
【０００６】
図９に従来のシステム構成を示す。この構成は，上記図８に示す処理装置が２個と共通メモリＣＭ１が１個で構成されたマルチプロセッサシステムの例である。
【０００７】
共通メモリを有するマルチプロセッサシステムでは，共通資源の保護のために排他制御を行う必要があるが，その実現方法の一つとして，テストアンドセット制御（Ｔ＆Ｓ制御）がある。これは，共通メモリの一部をキーとして，共通資源の使用状態を格納しておき，共通資源を使用する時はまずキーを読んで，使用中の場合は共通資源を使用せず，未使用の場合は使用中と書き込んだ後に使用する方法である。しかし，Ｔ＆Ｓ制御において，キーの読み出しと書き込みの間に他のプロセッサ等がキーを読み出したり書き込んだりする可能性があるので，Ｔ＆Ｓ制御中は，ロック転送状態として他のプロセッサ等がキーに対しアクセスするのを制限する方法をとることがある。このようなロック転送状態におけるアクセスをロック転送と呼ばれる。
【０００８】
図９のシステムバスの動作手順は，次のように行われる。
▲１▼プロセッサＣＰＵ１がシステムバスにアクセスする場合，バス使用の要求信号ＲＥＱ１を発生する。
【０００９】
▲２▼ローカルバスアービタＬＢＡが要求を受け付けると，ＣＰＵ１に許可信号ＧＲを発生し，ＣＰＵ１がアドレス，データ（書き込みの場合）を送出し，ＢＩＦのバッファに設定し，ローカルバスアービタＬＢＡからバスアービタＢＡにシステムバスの要求ＲＥＱ１を発生する。
【００１０】
▲３▼バスアービタＢＡから許容信号ＡＣＫが返ってくると，ＬＢＡは要求信号ＲＥＱをネゲート（停止）し，ＢＩＦからシステムバスにデータの転送を開始し，データの転送期間はバスマスタ（バスの使用権を持つ装置で，この場合はＢＩＦ）がシステムバス上に転送開始信号ＳＢＳ（Ｓｙｓｔｅｍ  Ｂｕｓ  Ｓｔａｒｔ）  を発生し，終了時に転送終了信号ＣＰＴ（Ｃｏｍｐｌｅｔｅ）を発生して通知する。
【００１１】
▲４▼バスアービタＢＡは転送終了信号ＣＰＴを受信すると許容信号ＡＣＫをネゲートし，バス権の終了を通知する。
また，ローカルバスとシステムバスのインタフェースを行うバスインタフェース回路ＢＩＦでは次のように動作する。
【００１２】
▲１▼ローカルバスの場合，上記したローカルバスの使用要求信号ＲＥＱに対しローカルバスアービタＬＢＡから許可信号ＧＲが発生すると，プロセッサＣＰＵは転送開始信号ＢＳと共にコマンド（データ）やアドレスを出力する。
【００１３】
▲２▼バスインタフェース回路ＢＩＦは，転送開始信号ＢＳを受信してコマンドを解読して，コマンドに含まれる転送モードの表示が突き放しモードか，非突き放しモードかを識別して，モードに対応して異なる動作を行う。なお，突き放しモードは，ライトアクセス（書き込み動作）のように，アドレスとデータをシステムバスに送出することにより動作を完了させるモードであり，非突き放しモードはリードアクセス（読み出し動作）のようにアドレスを送信した後，読み出しデータをアンサとして受け取るまで完了させないモードである。なお，コマンド及びアンサは転送開始信号ＳＢＳがアサートされている間に転送される先頭のデータで，転送元，転送先，アンサの要・不要（非突き放しモードか突き放しモードの表示）及びコマンドかアンサかの表示を含むフォーマットを備える。
【００１４】
図１０は非突き放しモード時のバスインタフェース回路ＢＩＦの動作を示し，ライトアクセス時のタイムチャートを示す。この場合は，ローカルバスの転送開始信号ＢＳを受信した時，バスインタフェース回路ＢＩＦは，システムバスに対し上述の手順で転送を行い，アンサ待ちとなる。システムバスからアンサを受信すると，アンサ待ち状態を解除し，ローカルバスＬＢの受信完了信ＤＣ（Ｄａｔａ  Ｃｏｍｐｌｅｔｅ）をアサートして，  転送処理を完了する。
【００１５】
図１１は突き放しモード時のバスインタフェース回路の動作を示す。この場合，ローカルバスの転送開始信号ＢＳを受信するとバスインタフェース回路ＢＩＦは，直ちに受信完了信号ＤＣをアサートすると共にシステムバスへ前記手順によって転送する。この場合，アンサ待ちを行わない。
【００１６】
図１２は従来のバスインタフェース回路の構成を示し，８０，８２，８３，８５はバッファ，８１は送信用ＦＩＦＯメモリ，８４は受信用ＦＩＦＯメモリ，８６はローカルバスからの信号受信のための受信制御部，８７，９０はＦＩＦＯ制御部，８８はシステムバスへの信号送信のための送信制御部，８９はシステムバスからの信号受信のための受信制御部，９１はローカルバスへの信号送信のための送信制御部である。
【００１７】
送信データは，ローカルバスからバッファ８０，送信用ＦＩＦＯメモリ８１，バッファ８２を経てシステムバスに転送される。受信データはシステムバスからバッファ８３，受信用ＦＩＦＯメモリ８４，バッファ８５を経てローカルバスへ送られる。受信制御部８６はローカルバスからシステムバスへの送信データの受信判定を行い，ＦＩＦＯ制御部８７はこの判定結果に基づいてバッファ８０のアドレスデータを送信用ＦＩＦＯメモリ８１に書き込む制御を行う。送信制御部８８は，ＦＩＦＯ制御部８７の制御による送信用ＦＩＦＯメモリ８１への書き込みを検知すると，送信用ＦＩＦＯメモリ８１に書き込まれたアドレス，データを読み出してバッファ８２を経てシステムバスへ送出する制御を行う。
【００１８】
受信制御部８９はシステムバスから受信すべきか否かを判定し，ＦＩＦＯ制御部９０はその判定結果に基づいてバッファ８３のデータを受信用ＦＩＦＯメモリ８４に書き込む制御を行う。送信制御部９１は，受信用ＦＩＦＯメモリ８４に書き込まれたデータを読み出してバッファ８５を経てローカルバスへ送出する制御を行う。
【００１９】
図１３は受信制御部８６の構成を示す。受信制御部８６は，ローカルバスから転送開始信号ＢＳを受けると受信判定部８６ａから出力を発生し，入力アドレス制御部８６ｂからＦＩＦＯ制御部８７に対し送信用ＦＩＦＯメモリ８１のアドレスを更新する信号を発生し，入力済表示制御部８６ｃから入力済の表示信号を発生する。ＤＣ制御部８６ｄは，突き放しモードの時は直ちにローカルバスへ受信完了信号ＤＣを発生し，アンサ不要信号をＦＩＦＯ制御部８７に出力する。非突き放しモードの場合は，ローカルバスへ直ちに出力せずアンサ要信号をＦＩＦＯ制御部８７へ出力する。
【００２０】
図１４はＦＩＦＯ制御部（図１５の８７）の構成を示し，この構成により送信用ＦＩＦＯメモリ８１の制御を行う。入力アドレス部８７ａは受信制御部８６からの更新信号により送信用ＦＩＦＯメモリ８１の書き込みアドレスを更新し，出力アドレス部８７ｂは送信制御部８８からの更新信号で読み出しアドレスを更新する。キューバッファ（１）  ８７ｃは入力アドレス部８７ａのアドレスに１を加えた値を保持し，キューバッファ（２）  ８７ｄは受信制御部８６からのアンサ要／不要（非突き放し／突き放し）の情報を保持し，キューバッファ（３）  ８７ｅはローカルバスから入力されるロック信号（ＬＯＣで表す），即ちローカルバスのロック状態を保持する。キューバッファ（１）  〜（３）  の書き込み，読み出しは，入力済表示部８７ｆ，出力済表示部８７ｇのカウンタ値により対応して行われる。
【００２１】
動作を説明すると，受信制御部８６からの入力アドレス更新信号により，送信用ＦＩＦＯメモリ８１へライトイネーブル信号ＷＥをアサートし，入力アドレス部８７ａを更新する。次にキューバッファ（１）  〜（３）  に指定の情報を記録し，入力済表示部８７ｆのカウンタを＋１し入力済とする。入力済表示部８７ｆと出力済表示部８７ｇのカウンタの不一致を不一致検出部８７ｈで検出すると，送信制御部８８に送られる。送信制御部８８は出力アドレス部８７ｂを制御して送信用ＦＩＦＯメモリ８１を読み出し，システムバスへデータを転送させ，入力アドレスと出力アドレスの一致を一致検出部８７ｉで検出すると停止し，出力済表示部８７ｇを更新する。
【００２２】
図１５は送信制御部８８の構成を示す。
ＦＩＦＯ制御部８７の不一致検出部８７ｈからの不一致検出信号によりＲＥＱ制御部８８ａからＲＥＱ信号がシステムバスへ発生し，システムバスを介してバスアービタＢＡからＡＣＫ信号を受信すると，ＲＥＱ信号をネゲートし，転送を開始する。ＡＣＫ信号受信中は，このバスインタフェース回路ＢＩＦがバスマスタであることを示し，転送中表示部８８ｄはバッファ８２を開き，ＳＢＳ制御部８８ｂから転送開始信号ＳＢＳを発生する。
【００２３】
転送中，ＦＩＦＯ制御部８７の出力アドレス部８７ｂを更新し送信用ＦＩＦＯメモリ８１からデータを読み出してシステムバスへ送る。上記ＦＩＦＯ制御部（図１２）で出力アドレスと入力アドレスの一致が検出されると，一致検出部８７ｉからの出力によりＣＰＴ制御部８８ｃから転送出力信号ＣＰＴを発生して，システムバスを終了させる。この時，ロック線制御部８８ｅはキューバッファ（３）  にロック情報が記録されているので，システムバスのロック信号ＳＬＯＣをアサートしている。
【００２４】
ロック線制御部８８ｅでは，ローカルバスからロック転送（転送が終了するまでローカルバス及びシステムバスをロックすることにより，連続したアクセスを行って，バスアービタへのアクセスを繰り返すことによる無駄を省く転送）を要求するローカルバスロック信号（ＬＯＣで表す）は，ローカルバスのアクセスを受信した後，システムバスへ転送してシステムロック信号（ＳＬＯＣで表す）が出力され，システムバスのアクセスが完了した後，ローカルバスのロック状態が開放されると（ＬＯＣがネゲート），システムバスのロック転送状態が開放される（ＳＬＯＣがネゲート）される。
【００２５】
【発明が解決しようとする課題】
上記図８に示すシステム構成におけるＴ＆Ｓの制御動作を図１６の問題点を説明するタイムチャートを用いて説明する。この動作では共通メモリＣＭ１とだけバスを介してアクセスする。
【００２６】
Ｔ＆Ｓ制御を実行するため，ＣＰＵ１がローカルバスアービタＬＢＡ１にＲＥＱ１を出力してローカルバスの使用権を要求し，ＬＢＡ１がシステムバス使用権を要求するＲＥＱ１を出力する（図１６のｃ）。ＬＢＡ１はローカルバスの使用権を許可し，ＧＲ１（図９参照）を出力する。ＣＰＵ１は，これによりバスインタフェース回路ＢＩＦ１にリードコマンドを発行し（図１６のａ），ローカルバスロック転送信号ＬＯＣを発生する（同ｂ）。この時同時にＣＰＵ２が，他の処理装置内のローカルメモリＬＭ１にアクセスするためにローカルバスアービタＬＢＡ２にＲＥＱ２を出力してローカルバスの使用権を要求した場合，ＬＢＡ２はシステムバス使用権を要求するＲＥＱ２を出力する（図１６のｄ）。ＬＢＡ２はローカルバスの使用権を許可してＧＲ２（図９参照）を出力する。ＣＰＵ２がバスインタフェースＢＩＦ２にライトコマンドを発行すると，システムバスアービタＢＡは両方からの要求を受信することになるが，ＲＥＱ２の出力の方がＲＥＱ１より速い場合以下のように動作する。
【００２７】
バスアービタＢＡは，ＲＥＱ２の要求を受付け，許可信号ＡＣＫ２を出力する（図１６のｅ）。これを受けてバスインタフェース回路ＢＩＦ２は，システムバス開始信号ＳＢＳ（図１６のｆ）を発生してローカルバスからのライトコマンドをシステムバスへ送信する（図１６の▲１▼）。送信が完了すると送信先ＢＩＦ１から送信完了信号ＣＰＴがシステムバスに送信され（図１６のｇ），ＡＣＫ２の出力が停止する。バスインタフェース回路ＢＩＦ１は，システムバスを介してバスインタフェース回路ＢＩＦ２からのコマンド（ローカルメモリＬＭ１へのアクセス）を受信する。システムバスのコマンド転送が完了したので，バスアービタＢＡはバスインタフェース回路ＢＩＦ１からのＲＥＱ１の要求を許可し，ＡＣＫ１を出力する（図１６のｉ）。すると，バスインタフェース回路ＢＩＦ１からリードコマンドが出力される（図１６の▲２▼）。この時，ＣＰＵ１からのロック信号ＬＯＣを受けてシステムバスにシステムロック信号ＳＬＯＣも出力する（図１６のｌ）。
【００２８】
一方，バスインタフェース回路ＢＩＦ１は，システムバスからのコマンドを受信したので，デッドロック回避のためにＣＰＵ１から受信しているコマンドを転送完了信号ＤＣを出力してバスを開放させる（図１６のｈ）。また，上記図１５に示す送信制御部８８内のロック線制御部８８ｅはＬＯＣ信号の立ち下がりを検出して転送終了信号ＣＰＴが無くなるとＳＬＯＣ信号の出力を停止させてしまう（図１６のｌ参照）。この動作を行うロック線制御部の構成を図１７に示す。
【００２９】
図１７は従来のロック線制御部８８ｅの構成を示す。この図は上記特開平４−２０５２４７号の第４図である。
この構成では，ＦＩＦＯ制御部（上記図１２の８７）からＬＯＣ信号を保持するキューバッファ（３）  から出力されるＬＯＣ信号が“１”で，システムバスの許可信号ＡＣＫによりアンド回路６１から論理“１”が発生する。一方，ローカルバスからのロック信号ＬＯＣが立ち上がるとフリップフロップＦＦ６４で保持し，ロック信号ＬＯＣの立ち下げ（ネゲート）を検出するとその状態をフリップフロップＦＦ６５に保持する。このフリップフロップＦＦ６５は転送終了信号ＣＰＴが発生するとリセットされる。アンド回路６３はアンド回路６１の出力とアンド回路６９の出力の反転信号との論理積をとった出力をフリップフロップＦＦ６４に保持する。これにより，ローカルバスのロック信号ＬＯＣがネゲートされた後，バスインタフェース回路ＢＩＦが転送出力信号ＣＰＴをアサートした次のサイクルでシステムバスのロック信号ＳＬＯＣをネゲートする。
【００３０】
上記図１６のタイムチャートにおいて，ＳＬＯＣが停止した後，バスインタフェース回路ＢＩＦ１は，システムバスからのコマンドをローカルバスに送信し（図１６の（２）  ），アンサを受信して，ローカルバスのアクセスを完了する。続いて，ローカルバスからシステムバスにアンサを送信する（図１６の▲３▼）。バスインタフェース回路ＢＩＦ２がアンサを受信してローカルバスに転送し，ＣＰＵ２が受信してアクセスを完了する。
【００３１】
一方，ＣＰＵ１からの一旦突き放されたアクセスが返ってくると（図１６の２つ目の（１）  ），バスインタフェース回路ＢＩＦ１はこれを受信するが，コマンドの二重発行を避けるため，再度送信を行なわない。従って，システムバスのロック信号ＳＬＯＣは停止したままである。その後，バスインタフェース回路ＢＩＦ１からの先に発生したリードコマンドに対する共通メモリＣＭ１（図９）からのアンサ（及び読み出しデータ）がシステムバスから返送され（図１６の▲４▼），バスインタフェース回路ＢＩＦ１がこれを受信してローカルバスに転送されると（図１６のｒ），アクセスは完了する。
【００３２】
しかし，従来の方式では，上記のように一旦ローカルバスからバスインタフェース回路にシステムバスへのアクセスを行った後，システムバス側からのアクセスにより中断されると，バスインタフェース回路からシステムバスのロック信号ＳＬＯＣが停止され，その状態が保持されたままで，再びシステムバスへのアクセスを行った時にもロック信号ＳＬＯＣが発生せず，ライトコマンド完了（またはリードコマンド完了）まで，ＳＬＯＣ信号を出力することができない。この間に他のＣＰＵがシステムバスを使用して，バスインタフェース回路ＢＩＦ１がアクセス中に共通メモリをアクセスしてしまうという問題が発生した。
【００３３】
本発明はバスインタフェース制御回路において，ローカルバスからシステムバスへ向かうアクセスにおいて，ローカルバスのロック転送実行中にその転送が一時中断または中断後の再送アクセスがエラーであった時にロック信号の状態をシステムバスに的確に通知してシステムバスがスタックしないようにするロック転送制御方式を提供することを目的とする。
【００３４】
【課題を解決するための手段】
図１は本発明の原理構成図である。
図１において，１はバスインタフェース回路，２は送信制御部，３はローカルバス，４はシステムバスである。なお，図１のバスインタフェース回路１には，送信制御部２だけ示すが，それ以外にも上記従来のバスインタフェース回路（上記図１２参照）と同様に複数の各部の回路が設けられている。また，送信制御部２内には本発明の主要な構成であるロック線制御の構成を中心にして示し，他の回路（図１５参照）は図示省略されている。
【００３５】
送信制御部２において，２ａはシステムバスロック信号発生部，２ｂはローカルバスのロック信号のオフを検出して保持するロックオフ検出保持部，２ｃはゲート部，２ｄは最初のアクセスが中断された時にローカルバスロック信号（ＬＯＣ）の停止によるシステムバスロック信号（ＳＬＯＣ）の停止をマスクする信号を発生するマスク（ＭＡＳＫ）信号発生部，２ｅはシステムバスロック信号発生部２ａをリセットする信号を発生するシステムバスロック停止部，２ｆはシステムバスロック信号発生部２ａを発生状態にするシステムバスロック起動部である。
【００３６】
ローカルバス３からシステムバス３へのアクセスが行われバスアービタ（図示省略）から許可信号（ＡＣＫ）が発生して，ローカルバスから転送されたロック転送状態を表す信号が発生しているとシステムバスロック起動部２ｆから出力が発生し，システムバスロック信号発生部２ａが駆動されてシステムバスロック信号（ＳＬＯＣ）をシステムバスへ出力する。一方，ロックオフ検出保持部２ｂは，ローカルバスからシステムバスへのアクセスが実行されてローカルバス３上のロック信号（ＬＯＣ）がオンになった後，アクセスが中断されてオフになるとロックオフ検出保持部２ｂから出力が発生する。
【００３７】
この場合，ゲート部２ｃにマスク信号発生部２ｄから抑止信号が発生しないと，システムバスロック停止部２ｅが駆動されて，その出力によりシステムバスロック信号発生部２ａが停止してシステムロックがオフになる。しかし，マスク信号発生部２ｄが，最初のアクセスが中断した状態であることを表す信号を発生すると，ゲート部２ｃはロックオフ検出保持部２ｂの通過を禁止する。これにより，システムバスロック信号発生部２ａからのシステムロック信号は発生し続ける。なお，システムバスロック停止部２ｅはゲート部２ｃからオン信号を受け取った場合，ローカルバスの転送完了を表す信号ＣＰＴが発生すると，システムバスロック信号発生部２ａを停止させる。
【００３８】
この構成により，バスインタフェース回路は，ローカルバスからシステムバスへのロック転送のアクセスの時に，他のプロセッサからローカルバスへのアクセスにより転送が中断されても，システムバスロック信号が停止することなく保持されるため，アクセスを再開した時に，システムバスが他プロセッサから割り込んで使用されることがなくなる。
【００３９】
【発明の実施の形態】
図２は実施例１の構成図であり，図３はマスク（ＭＡＳＫ）信号発生回路の構成図，図４は実施例１のタイムチャートの例である。
【００４０】
図２において，１０はバスインタフェース回路（ＢＩＦ）の送信制御部に設けられたロック線制御部であり，１１〜２１の各回路により構成される。１１，１３，１６，１７，１９，２１はアンド回路，１２，１８はオア回路，１４，１５，２０は入力信号をクロックに同期して設定保持するフリップフロップ回路（ＦＦで表示）である。
【００４１】
図２に示すアンド回路１１の一方の入力であるＡＣＫはシステムバスの使用要求（ＲＥＱ）に対してバスアービタ（ＢＡ）からシステムバスに出力される使用権の許可信号（許可の時“１”）であり，アンド回路１１の他方の入力はＦＩＦＯ制御部（図１６参照）のキューバッファ（３）  が保持するロック転送状態を表す信号（“１”の時ロック転送状態）であり，システムバスへの転送が完了しないアクセスに対応する。
【００４２】
アンド回路１６へ入力するＬＯＣはローカルバス上に発生するロック信号，アンド回路１７へ入力する−ＭＡＳＫはシステムバスロック信号（ＳＬＯＣ）の出力停止を抑止するマスク信号を反転した信号であり，この信号を発生する回路は後で説明する図３に示す。ＣＰＴはローカルバスにおける転送終了信号である。
【００４３】
図２の基本的な動作を説明すると，ＦＩＦＯ制御部のキューバッファ（３）  からロック転送状態の信号が“１”でＡＣＫ信号が“１”になると，アンド回路１３の他方の入力（アンド回路２１の出力）が“０”の時にフリップフロップ回路（以下，ＦＦという）１４がセットしてシステムバスロック信号（ＳＬＯＣ）が“１”になりシステムバスへ出力される。また，ＦＦ１５はローカルバスからのロック信号（ＬＯＣ）が“１”になるとこれを保持し，その後ロック信号（ＬＯＣ）が立ち下がるとアンド回路１６から“１”が発生し，この時反転マスク信号（−ＭＡＳＫ）が“１”の場合（ＭＡＳＫが“０”の場合），オア回路１８を介してアンド回路１９へ供給され，この時，ローカルバスの転送終了信号（ＣＰＴ）が“０”であればＦＦ２０に“１”が供給され，クロックに同期してセット状態になる。この状態で，ローカルバス上の転送が終了して転送終了信号（ＣＰＴ）が“１”になるとアンド回路１３の出力が“０”となって，ＦＦ１４は次のクロックでリセットされて，システムバスロック信号（ＳＬＯＣ）が“０”となりシステムバスのロックが解除される。
【００４４】
但し，ローカルバスのロック信号（ＬＯＣ）が立ち下がった時，反転マスク信号（−ＭＡＳＫ）が“０”の場合（マスク信号が“１”の場合）には，オア回路１７からは“０”が出力されるため，ＦＦ２０は次のクロックでも“０”の状態のままで出力が変化しない。この場合，その後でローカルバスの転送終了信号ＣＰＴが“１”になってもアンド回路２１からは“０”が出力されるため，アンド回路１３は“１”を発生し，次のクロックが入力してもＦＦ１４からのシステムバスクロック（ＳＬＯＣ）の信号は“１”の状態を継続して出力する。
【００４５】
図３はマスク信号（ＭＡＳＫ）を発生する回路である。
図３において，３０，３２，３５，３６はアンド回路，３１，３３，３７はセット端子Ｓ，リセット端子Ｒを備えたセット・リセット型のフリップフロップ回路（ＦＦ），３４はナンド回路であり，３８，３９，４１はインバータ（反転回路）である。また，各回路に入力する信号を説明すると，ＲＤはバスマスタ（例えば，ＣＰＵ）から要求された指令を表しこの例ではリード（メモリからの読み出し）の指令であることを表す信号，−ＤＳ（反転ＤＳ）はローカルバスのデータ線の信号が有効であることを表すデータストローブ信号の反転信号，−ＤＣはローカルバス上のデータ終了のタイミングを表す信号，コマンド信号はシステムバスを介する他のプロセッサから受信したコマンドが存在することを表す信号，ＲＦ信号はシステムバスへ指令を転送する動作が中断してリトライ（再試行）を行う状態であることを表す信号である。
【００４６】
図４は実施例１の構成によるタイムチャートの例であり，主として上記図３の各回路の動作を示し，対応する図２の構成によるシステムバスロック信号（ＳＬＯＣ）の波形を示す。
【００４７】
このタイムチャートは，上記図９に示すようなマルチプロセッサシステムにおいて，プロセッサＣＰＵ１から処理装置２のローカルメモリ２を読み出すリード指定ＲＤ（Ｒ（２）  で表示するコマンド）が，バスインタフェース回路（ＢＩＦ１）で発生した時，このコマンドがシステムバスに転送される前に，他の処理装置２のプロセッサＣＰＵ２からローカルメモリ１を読み出すリード指定ＲＤ（Ｒ（１）  で表示するコマンド）がシステムバスからこのバスインタフェース回路（ＢＩＦ１）へ入力した場合である。
【００４８】
時間ｔ１にリード指定Ｒ（２）  ，アドレスＡ０がＣＰＵ１からローカルバスを介してバスインタフェース回路（ＢＩＦ１）へ供給され，図３のリード指定ＲＤ（Ｒ（２））が立ち上がると，図４に示すようにローカルバスのロック信号も同時に立ち上がる。また，ローカルバス要求信号（図４）も立ち下がる。この後，ローカルバス上のデータ（コマンド等）の有効性を表すデータストローブ（データ要求）信号（反転ＤＳ）が立ち下がると，図３のＦＦ３１がセットされて，その出力であるリトライフラグＲＦが図４に示すように立ち上がる。この後，データ転送終了信号（反転ＤＣ）が立ち上がる前のタイミングｔ２に，他のプロセッサＣＰＵ２からシステムバスを介してこのバスインタフェース回路（ＢＩＦ１）にコマンド信号（ローカルメモリ１をリードするリード指定のコマンド）が発生すると，図３のアンド回路３２から“１”が発生しＦＦ３３がセットされる。そのセット終了はインバータ３８で反転され，バス開放要求信号（反転ＲＱで表示）が図４に示すように立ち下がる。このバス開放要求信号は，ローカルバスからのコマンドを次にシステムバスへ転送するためにシステムバスの開放要求を行うための信号である。
【００４９】
この後，ＣＰＵ１からローカルバスを介したコマンドを一時中断するめにバスインタフェース回路がデータ終了信号を表す反転ＤＣを立ち下げると，図３のＦＦ３１がリセットされてリトライフラグ信号ＦＲが図４に示すようにたち下がる。この時，図３のアンド回路３５がバス開放要求信号（反転ＲＱ）と反転ＤＣがそれぞれインバータ３９，４０を介する信号により論理積が成立してＦＦ３７（ＭＡＳＫ信号発生用ＦＦ）がセットされて，インバータ４１から図４に示すように反転ＭＡＳＫ信号が立ち下がる。この立ち下がりにより，ローカルバスから発生したコマンドのシステムバスへの転送動作が中断した状態であることを表示し，またローカルバスロック信号（ＬＯＣ）は，ＣＰＵ１からローカルバスへのデータ出力を出力すると立ち下がる。
【００５０】
このＬＯＣ信号の立ち下げの時，図２に示すアンド回路１６から“１”が発生するが，この時図３の反転ＭＡＳＫ信号は，図４に示すように“０”であるため，論理積が成立せず“０”が発生する。これにより，図２のＦＦ２０がセットされず，ＦＦ１４をリセットする条件が成立しないためシステムバスロック信号（ＳＬＯＣ）は信号ＬＯＣが停止しても，そのまま“１”の状態を保持する。
【００５１】
図４のタイムチャートの場合，タイミングｔ３からＣＰＵ２からのリード指定（Ｒ(1) ，アドレスＡ１のローカルバスに対する動作が行われて，ローカルバス１のローカルメモリのアドレスＡ１を読み出し，タイミングｔ４でリードデータ（リードＤ１）が得られる。次に，タイミングｔ５でローカルバス要求が立ち上がり，前回中断したＣＰＵ１からシステムバスへのコマンド転送のリトライが要求される。また，リードデータＤ１のデータ終了（反転ＤＣ）の立ち下げで図３のアンド回路３４から“１”が発生してＦＦ３３がリセットすることで，バス開放要求信号（反転ＲＱ）が立ち上がる。
【００５２】
リトライの動作では，タイミングｔ６でローカルバスロック信号（ＬＯＣ）が立ち上がり，上記のタイミングｔ１と同様のリード指定ＲＤ（Ｒ（２）），アドレスＡ０が発生し，システムバスロック状態で，システムバスから他の処理装置２のローカルメモリから読み出しを行いタイミングｔ９でリードデータ（Ｄ０）が得られて，データ終了信号（反転ＤＣ）の立ち下げで図３のアンド回路３６が“１”となってＦＦ３７がリセットされ，反転ＭＡＳＫが“１”となって，ＭＡＳＫが解除される。また，データ終了信号（反転ＤＣ）によりタイミングｔ１０で信号ＬＯＣが立ち下がることにより，図２のアンド回路１６，アンド回路１７（この時反転ＭＡＳＫ信号は“１”になっている）及びアンド回路１９を介して信号“１”がＦＦ２０に供給されて，これをセットし，データ完了信号ＣＰＴが“１”になると，ＦＦ１４がリセットされることによりシステムバスロック信号（ＳＬＯＣ）が立ち下がって，停止する。
【００５３】
次に図５は実施例２の構成を示し，図６は実施例２のタイムチャートの例である。
図５の実施例２の構成は，上記実施例１の構成（図２）に対し，ロック不一致検出部３０を設け，ロック線制御部１０内に新たにアンド回路２３を設けると共に，アンド回路１７とオア回路１８の間に新たにオア回路２２を設け，オア回路２２の一方の入力にロック不一致検出信号を入力し，他方にアンド回路１６の出力を入力するようにしたものである。
【００５４】
この実施例２の作用を説明する前に，上記実施例１の構成における問題を図４に示すタイムチャート，図２の構成を用いて説明する。処理装置１のＣＰＵ１からシステムバスへアクセスする場合に，最初のアクセスが図４のタイミングｔ１で行っている時に，他のＣＰＵ２からシステムバスを介するアクセスの発生により中断し，タイミングｔ３から他のＣＰＵ２によるアクセスが実行され，それが終了すると，タイミングｔ６からＣＰＵ１のリトライのアクセスが実行される。
【００５５】
この時，本来はロックバスロック信号（ＬＯＣ）が図４に示すように立ち上がるが，ローカルバスロック信号（ＬＯＣ）を発生する回路の障害等により立ち上がらない場合がある。その場合，図２のＦＦ１５がセットされない。その後，リトライによるアクセスが終了した時に，正常であればローカルバスロック信号（ＬＯＣ）が停止した時に，上記図２に示すＦＦ１４がリセットされてシステムロック信号（ＳＬＯＣ）が停止するはずであるが，ローカルバスロック信号（ＬＯＣ）が立ち上がらないため立ち下がりも発生しない。その場合は，図４のタイミングｔ１０のＬＯＣの立ち下げに対応してＳＬＯＣが停止する動作が行われないで，システムバスのロック状態が解除されない。
【００５６】
図５に示す構成では，上記の問題を解決するため，ロック不一致検出部３０を設け，関連する回路が付加された。ロック不一致検出部３０は，ＣＰＵ１からのアクセスを開始した時に発生するローカルバスＬＯＣ信号の状態を保持するＦＦ３１を備え，リトライのアクセスが実行されると，その時のデータ転送の開始信号ＢＳが“１”になった時にローカルバスの信号ＬＯＣをアンド回路３２で検出して，先に保持した信号ＬＯＣと一致するか排他的論理和回路３３により判別することによりロック不一致を検出することができる。また，この実施例２で使用する反転ＭＡＳＫ信号は，上記図３に示す回路により発生する。
【００５７】
図６により実施例２のタイムチャートの例を，上記図４に示す実施例１のタイムチャートと異なる動作を中心に説明する。タイミングｔ１〜ｔ５までは上記図４と同様であり，タイミングｔ６において，リトライが開始され，ローカルバスにリード指定ＲＤ（Ｒ（２））とアドレスＡ０の転送開始時に，信号ＢＳが立ち上がった時に信号ＬＯＣが発生しないと，図５のロック不一致検出部３０から不一致検出信号が発生し，ロック線制御部のオア回路２２から“１”が発生する。この時，反転ＭＡＳＫ信号が“０”であるため，アンド回路１７から“０”が発生している。オア回路２２からの“１”がオア回路１８を介してアンド回路１９へ供給されると，この時システムバスからの信号ＣＰＴが“０”であるが，入力部で反転されるためアンド回路１９から“１”が発生してＦＦ２０に“１”が設定される。この後，システムバス側からの信号ＣＰＴが“１”になると，アンド回路２１から“１”が発生し，この信号がアンド回路１３の入力部で反転するためアンド回路１３から“０”が発生する。このため，ＦＦ１４から次のクロックのタイミング（図６のｔ７）で“０”が設定され，システムバスロック信号ＳＬＯＣは“０”になり，システムバスロックの状態が解除される。
【００５８】
【発明の効果】
本発明によればローカルバスがインターロック転送方式でシステムバスがタイムスプリットバスに接続されているバスインタフェース回路において，ローカルバスからシステムバスへ向かうアクセスのロック転送実行中にその転送が一時中断した時にシステムバスロック信号が停止するのを防止することができる。更に，アクセス中断後のリトライのアクセスがエラーであった時にシステムバス側のロック状態がスタックすることを防止することができる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】実施例１の構成図である。
【図３】マスク（ＭＡＳＫ）信号発生回路の構成図である。
【図４】実施例１の構成によるタイムチャートの例を示す図である。
【図５】実施例２の構成図である。
【図６】実施例２のタイムチャートの例である。
【図７】マルチプロセッサシステムの構成例である。
【図８】処理装置の構成例を示す図である。
【図９】従来のシステム構成を示す図である。
【図１０】非突き放しモード時のバスインタフェース回路の動作を示す図である。
【図１１】突き放しモード時のバスインタフェース回路の動作を示す図である。
【図１２】従来のバスインタフェース回路の構成を示す図である。
【図１３】受信制御部の構成を示す図である。
【図１４】ＦＩＦＯ制御部の構成を示す図である。
【図１５】送信制御部の構成を示す図である。
【図１６】問題点を説明するタイムチャートを示す図である。
【図１７】従来のロック線制御部の構成を示す図である。
【符号の説明】
１      バスインタフェース回路
２      送信制御部
２ａ    システムバスロック信号発生部
２ｂ    ロックオフ検出保持部
２ｃ    ゲート部
２ｄ    マスク信号発生部
２ｅ    システムバスロック停止部
２ｆ    システムバスロック起動部
３      ローカルバス
４      システムバス
【図１】
0003597621.tif 000002
【図２】
0003597621.tif 000003
【図３】
0003597621.tif 000004
【図４】
0003597621.tif 000005
【図５】
0003597621.tif 000006
【図６】
0003597621.tif 000007
【図７】
0003597621.tif 000008
【図８】
0003597621.tif 000009
【図９】
0003597621.tif 000010
【図１０】
0003597621.tif 000011
【図１１】
0003597621.tif 000012
【図１２】
0003597621.tif 000013
【図１３】
0003597621.tif 000014
【図１４】
0003597621.tif 000015
【図１５】
0003597621.tif 000016
【図１６】
0003597621.tif 000017
【図１７】
0003597621.tif 000018