(57)【特許請求の範囲】
【請求項１】
基本バスに接続されている一方のバス拡張装置と、拡張バスに接続されている他方のバス拡張装置とを備え、前記一方及び他方のバス拡張装置にそれぞれ設けられるインタフェース用バッファと、これらインタフェース用バッファにユニット間バスを介して接続されている仲介用バッファと、該仲介用バッファにより読み出されるデータが格納されるレジスタと、最初にバス権要求を出力した前記いずれかのバッファに対し前記ユニット間バスのバス権を設定するバス調停部とを含み、
前記基本バス及び前記拡張バスのいずれかを介して読出しコマンドを受けた前記インタフェース用バッファは、前記ユニット間バスのバス権の設定を受けて前記読出しコマンドを前記仲介用バッファに供給し、該仲介用バッファから正常応答を受けてコマンドサイクルの終了を検知すると前記バス権を開放し、
前記仲介用バッファは、前記読出しコマンドを受けると前記読出しコマンドを実行して前記インタフェース用バッファに供給すべく前記レジスタから前記データを読み出すと共に該インタフェース用バッファに対し前記正常応答を出力するバス拡張システムにおいて、
前記仲介用バッファは、前記読出しコマンドを受けてから前記正常応答を出力する前にアンササイクルを開始すべく前記バス調停部に対しバス権要求を出力し、
前記バス調停部は、前記インタフェース用バッファのバス権の開放前に前記仲介用バッファから前記バス権要求を受けると、前記バス権の開放後に前記仲介用バッファに前記ユニット間バスのバス権を設定する、
ことを特徴とするバス拡張システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置や電子交換機の制御装置等で、バス拡張のために利用されるバス拡張システムに関する。
【０００２】
【従来の技術】
一般に、情報処理装置において、バスを通じて接続された各機能ユニット間で所定の通信を行う場合、そのバス権調整が行われる。即ち、１つの通信が終了するまで、そのバスにロックをかけ、他の通信を割り込ませないように制御する。これをバスロック方式と呼んでいる。バスに接続されるべき機能ユニットが多い場合には、所定のバス拡張装置を使用して、複数のバス間を接続する。こうしたバス拡張を行った装置は、通常のバスロック方式により制御を行うと、長時間全てのバスが一つの機能ユニットに占有されることが多く、通信の効率が悪くなる。そこで、スプリットバス方式によりバスの制御を行う。
【０００３】
スプリットバス方式では、１つの通信をコマンドサイクルとアンササイクルのように複数のサイクルに分け、それぞれのサイクルでバス競合をとる。これにより、一回の通信でバスを占有する時間を短縮する。さらに、バス拡張を行った場合には、基本バスと拡張バスと両者を接続するバス拡張装置の内部とで、それぞれ別々にバス権調停を行うようにして、全てのバスが一度に占有されることの無いように制御する。
【０００４】
【発明が解決しようとする課題】
ところで、上記のような従来の技術には次のような解決すべき課題があった。例えば、基本バスと拡張バスとを接続するバス拡張装置内部にインタフェース用のバッファが設けられ、基本バスと拡張バスとの間のインタフェースをとる場合を考える。このバッファに接続されたレジスタからこのバッファを通じてデータを読み取るとき、コマンドサイクルが終了して別の通信がそのバッファを使用すると、せっかくコマンドサイクルでバッファに読み込んだコマンドが別の通信データによって書き換えられてしまう。
【０００５】
従って、バス拡張装置内部にレジスタを設ける場合には、そのレジスタとバッファの間にコマンド等を保持する専用のバッファを設けて、その書き換えを防止している。しかしながら、これではバス拡張装置にいくつものレジスタを設けたとき、全体としてハードウェア量が大きくなるという問題があった。
【０００６】
【課題を解決するための手段】
本発明は以上の点を解決するため次の構成を採用する。
〈構成１〉
基本バスに接続されている一方のバス拡張装置と、拡張バスに接続されている他方のバス拡張装置とを備え、前記一方及び他方のバス拡張装置にそれぞれ設けられるインタフェース用バッファと、これらインタフェース用バッファにユニット間バスを介して接続されている仲介用バッファと、該仲介用バッファにより読み出されるデータが格納されるレジスタと、最初にバス権要求を出力した前記いずれかのバッファに対し前記ユニット間バスのバス権を設定するバス調停部とを含み、前記基本バス及び前記拡張バスのいずれかを介して読出しコマンドを受けた前記インタフェース用バッファは、前記ユニット間バスのバス権の設定を受けて前記読出しコマンドを前記仲介用バッファに供給し、該仲介用バッファから正常応答を受けてコマンドサイクルの終了を検知すると前記バス権を開放し、前記仲介用バッファは、前記読出しコマンドを受けると前記読出しコマンドを実行して前記インタフェース用バッファに供給すべく前記レジスタから前記データを読み出すと共に該インタフェース用バッファに対し前記正常応答を出力するバス拡張システムにおいて、前記仲介用バッファは、前記読出しコマンドを受けてから前記正常応答を出力する前にアンササイクルを開始すべく前記バス調停部に対しバス権要求を出力し、前記バス調停部は、前記インタフェース用バッファのバス権の開放前に前記仲介用バッファから前記バス権要求を受けると、前記バス権の開放後に前記仲介用バッファに前記ユニット間バスのバス権を設定する、ことを特徴とするバス拡張システム。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態を具体例を用いて説明する。
〈具体例〉
図１は、本発明のバス拡張システムを示すブロック図である。
図の装置は、スプリットバス方式を採用し、プロセッサ１のマイクロプロセッサチップ２は、基本バス３をアクセスする一方、バス拡張装置４Ａ，４Ｂを介して、拡張バス５に接続された機能ユニット６のレジスタ７をアクセスできるように構成されている。基本バス３を拡張するバス拡張装置４Ａと拡張バス５を拡張するバス拡張装置４Ｂとはユニット間バス８によって相互に接続されている。
【０００９】
バス拡張装置４Ａには、バッファ９Ａとバス調停部１０とが設けられている。また、バス拡張装置４Ｂには、バッファ９Ｂ，９Ｃと、バッファ９Ｂに直接接続されたレジスタ１１が設けられている。バッファ９Ａは、基本バス３とバス拡張装置４Ａとの間のインタフェースをとるためのバッファである。バッファ９Ｃは、拡張バス５とバス拡張装置４Ｂとの間のインタフェースをとるためのバッファである。バッファ９Ｂは、基本バス３からバス拡張装置４Ａを通じて拡張バス５をアクセスする場合のインタフェースをとるためのバッファであって、バッファ９Ａとバッファ９Ｃとの間のデータ転送は、バッファ９Ｂを介して行われる。更に、バッファ９Ｂによって、バス拡張装置４Ａ内部のレジスタ１１へのアクセスが可能となっている。
【００１０】
以上の構成で、基本バス３に接続されたプロセッサ１から、拡張バス５に接続された機能ユニット６内部のレジスタ７へのデータ転送を行う場合には、次のような手順が実行される。
まず、プロセッサ１は、バス競合調整によって基本バス３のバス権を確保し、バッファ９Ａに対し該当するデータの転送を行う。正常応答がバッファ９Ａから返されると、プロセッサ１は基本バス３のバス権を開放する。次に、バッファ９Ａは、リクエスト／アクノリッジ線１２を介してバス調停部１０にユニット間バス８のバス権を要求する。そして、そのバス権を確保すると、データをバッファ９Ｂを介してバッファ９Ｃに転送し、正常応答を確認した後、ユニット間バス８のバス権を開放する。バッファ９Ｃは、拡張バス５のバス権を獲得し、機能ユニット６中のレジスタ７に対し該当データの転送を行う。
【００１１】
以上のようにして、基本バス３から拡張バス５へのデータ転送が行われる。これらの手順は、従来のシステムで行われていたものと同様である。
次に、プロセッサ１が、バッファ９Ｂを介してレジスタ１１にアクセスを行う場合を考える。スプリットバス方式によれば、１回の通信はコマンドサイクルとアンササイクルとに分けられる。まず、プロセッサ１によってバッファ９Ａにアクセス要求コマンドが格納された後、バッファ９Ａによりコマンドサイクルが実行される。即ちバッファ９Ａからバッファ９Ｂにコマンドが送信され、レジスタ１１からデータを読み出す準備がされる。
【００１２】
この間、バッファ９Ａはユニット間バス８のバス権を獲得し、一連のコマンドサイクルを終了する。
次のアンササイクルでは、バッファ９Ｂによりリクエスト、アクノリッジ、アンサ、ステータスの応答といった手順が実行される。即ち、コマンドサイクルによってバッファ９Ａからバッファ９Ｂにコマンドが転送され、次のアンササイクルによってバッファ９Ｂからバッファ９Ａに該当するデータが応答として返される。
【００１３】
ところが、スプリットバス方式の原則によれば、コマンドサイクルとアンササイクルの間で、一旦ユニット間バス８が開放される。従って、もし、この間にバッファ９Ｂを使用した別のアクセス要求があった場合には、そのコマンドサイクルが割り込むことができる。別のコマンドサイクルが割り込むと、バッファ９Ｂにせっかく取り込んだコマンドが他のデータ等で上書きされ、消滅してしまう。
【００１４】
ユニット間バス８が開放されるのは、バッファ９Ｂが正常ステータスを受信後、リクエストをネゲート（無効状態）にし、バス調停部１０がアクノリッジをネゲートしたときである。
【００１５】
そこで、この発明では、レジスタ１１へのアクセス要求があったとき、バッファ９Ｂを使用したコマンドサイクルとアンササイクルとを連続して行うようにし、別の通信によるバッファ９Ｂの使用を阻止するようにした。このために、バッファ９Ｂは、バス権を開放するためのステータスを返送する前に、アンササイクルのリクエストをバス調停部１０に送出する。これによって、バス権を優先予約する。その後、ステータスを返送するとバス権は優先的にバッファ９Ｂに移り、バッファ９Ｂは内部状態を保存したままアンササイクルを実行できる。
【００１６】
図２には、以上のような原理に基づく具体的なユニット間バスシーケンスチャートを図示した。
図において、バッファ９Ａを使用する２種類の通信▲１▼と▲２▼とが相次いで要求されたとする。通信▲１▼は、レジスタ１１に対するデータアクセス要求である。また、通信▲２▼は、バッファ９Ｃに対するアクセス要求である。まず、最先にアクセス要求を行った通信▲１▼について、ユニット間バス８のバス権が与えられると、通信▲１▼のコマンドサイクルが開始される。
【００１７】
ステップＳ１で、バッファ９Ａからバス調停部１０に対しリクエストが行われ、バス調停部１０はステップＳ２で、バッファ９Ａに対しバス権を与えるためのアクノリッジを行う。次に、バッファ９Ａからバッファ９Ｂに対しコマンドが送信され（ステップＳ３）、バッファ９Ｂからレジスタ１１に対しそのコマンドが転送される（ステップＳ４）。バッファ９Ｂは、その後バッファ９Ａに対しステータスを送信するが、その直前にアンササイクルのためのリクエストをバス調停部１０に送信する（ステップＳ５）。続いてステータスをバッファ９Ａに送信する（ステップＳ６）。
【００１８】
バス調停部１０は、バッファ９Ｂからステータスが返されてバッファ９Ａによるバス権が開放される前に、バッファ９Ｂからのリクエストがあると、バス権を通信▲２▼に優先してバッファ９Ｂに与える。従って、通信▲１▼についてのコマンドサイクル終了後、継続的に通信▲１▼のアンササイクルが実行される。即ち、ここでバス調停部１０からバッファ９Ｂにアクノリッジが送信されてバッファ９Ｂにバス権が与えられ（ステップＳ７）、レジスタ１１からデータがバッファ９Ｂに読み出される（ステップＳ８）。
【００１９】
バッファ９Ｂは、読み出したデータをバッファ９Ａに転送するためのアンサを実行し（ステップＳ９）、最後にステップＳ１０において、バッファ９Ａがバッファ９Ｂにステータスを送信する。こうして、バッファ９Ａからレジスタ１１に対する一連のデータアクセス処理が完了する。その後、通信▲２▼についてのコマンドサイクルが開始される。即ち、バッファ９Ａからバス調停部１０に対しリクエストが行われ（ステップＳ１１）、バス調停部１０はこれに応答してアクノリッジを返す（ステップＳ１２）。
【００２０】
バッファ９Ａは、こうしてユニット間バス８のバス権を獲得し、バッファ９Ｂを通じてバッファ９Ｃに対しコマンドを送信する（ステップＳ１３，Ｓ１４）。バッファ９Ｃは、これに応答してバッファ９Ｂを介してバッファ９Ａにステータスを返す（ステップＳ１５，Ｓ１６）。こうして、通信▲２▼のコマンドサイクルが終了する。
【００２１】
次に、通信▲２▼のアンササイクルが開始されると、バッファ９Ｃからバス調停部１０にリクエストが送信され（ステップＳ１７）、これに応答するアクノリッジが返される（ステップＳ１８）。バッファ９Ｃは、バス権を獲得すると、ステップＳ１９において、バッファ９Ｂを通じてバッファ９Ａにアンサを返す（ステップＳ２０）。バッファ９Ａは、アンサを受け取ると、バッファ９Ｃに対しバッファ９Ｂを通じてステータスを返す（ステップＳ２１，Ｓ２２）。
【００２２】
図３には、本発明の効果を説明するための比較例のユニット間バスシーケンスチャートを示す。
上記のような制御を行わず、一般的なスプリットバス方式の制御を行うと、この図に示すようなシーケンスとなる。なお、この場合に、レジスタ１１とバッファ９Ｂとの間には、バッファ９Ｄを設けている。このバッファ９Ｄは、レジスタ１１へのアクセスが行われる場合にそのコマンドを一定の間保持するために設けられる。
【００２３】
通信▲１▼は、既に説明した通りのバッファ９Ａからレジスタ１１に対するアクセス要求に対するものである。また通信▲２▼は、バッファ９Ａからバッファ９Ｃに対するアクセス要求である。ここで、ステップＳ１〜ステップＳ６の処理は、通信▲１▼のコマンドサイクルである。この通信▲１▼のコマンドサイクルが実行され、ユニット間バス８のバス権が開放されると、通信▲２▼のコマンドサイクルが実行される。そして、その後、ユニット間バス８が開放されると、通信▲１▼のアンササイクルが実行され、最後に通信▲２▼のアンササイクルが実行される。
【００２４】
このような手順で処理が進められると、通信（１）のコマンドサイクルを実行したとき、バッファ９Ｂに格納されたコマンドは、通信（２）のコマンドサイクルを実行した際、通信（２）のために必要なコマンドによって書き換えられてしまう。そこで、バッファ９Ｄがそのコマンドを保持し、通信（１）のアンササイクルにおいて、このバッファ９Ｄに格納されたコマンドに従ってレジスタ１１からデータの読み出しが行われる。
【００２５】
ところが、バス拡張装置内部に設けられたいくつものレジスタに、それぞれこのような専用のバッファ９Ｄを設けるのは、ハードウェアの大型化とコストアップを招く。これに比較して、図１に示す本発明のシステムでは、レジスタ１１をバッファ９Ｂに直接接続することができるため、専用のバッファが不要となる。また、バス拡張装置は、上記の例では、バス調停部を設けたものとレジスタを設けたものの２種を連結して構成したが、これらは任意の構成を採ることができ、いずれの側にバス調停部が設けられていてもよい。
【００２６】
【発明の効果】
以上のように、上記のバス拡張装置内部には、レジスタ１１を任意の数だけ設けることができ、これらはいずれも基本バス３と拡張バス５の間のインタフェースとして機能するよう配置されたバッファ９Ｂに直接接続することが可能になる。従って、バス拡張装置のハードウェア構成を簡素化し、小型化が可能になる。
【図面の簡単な説明】
【図１】本発明のバス拡張システム具体例を示すブロック図である。
【図２】本発明によるユニット間バスシーケンスチャートである。
【図３】比較例のユニット間バスシーケンスチャートである。
【符号の説明】
１  プロセッサ
３  基本バス
４Ａ，４Ｂ  バス拡張装置
５  拡張バス
６  機能ユニット
９Ａ，９Ｂ，９Ｃ  バッファ
１０  バス調停部
１１  レジスタ
【図１】
0003797517.tif 000002
【図２】
0003797517.tif 000003
【図３】
0003797517.tif 000004