(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて順序通りに終了するためのバスプロトコルを実施する方法であって、該データ処理システムはバスによってバススレイブに結合されたバスマスタを有し、前記方法は、
バスマスタが第１のバス処理を開始するために処理スタート信号を肯定する段階と、
前記バスマスタが該第１のバス処理の際に前記バスを介して、前記バススレイブにパイプ深さ値を提供する段階と、
同パイプ深さ値を第１の処理のパイプ深さ値として前記バススレイブ内に格納する段階と、
前記第１の処理のパイプ深さ値がゼロであれば、バスマスタはバスの所有権を前記バススレイブに認め、かつ、第１のバスデータ値を前記バススレイブから前記バスに提供する段階と、
前記第１の処理のパイプ深さ値がゼロでなければ、バスマスタはバスの所有権の前記バススレイブへの承認を保留する段階と、
前記バスマスタが第２のバス処理を開始するために前記処理スタート信号を肯定する段階と、
前記バスマスタが第２のバス処理を開始するために前記処理スタート信号を肯定する段階に応答して、前記バススレイブに格納された前記第１の処理のパイプ深さ値は減分処理されて、第１の処理のパイプ深さ値が変更される段階と、
前記変更された第１の処理のパイプ深さ値がゼロでなければ、バスマスタは前記バスの所有権の前記バススレイブへの承認を保留する段階と、
を具備することを特徴とするデータ処理システムにおいて順序通りに終了するためのバスプロトコルを実施する方法。
【請求項２】
データ処理システムであって、
バス処理スタート信号を転送するためのバス処理スタート用導体、バス処理終了信号を転送するためのバス処理終了用導体、係属中の処理の数を示すパイプ深さ値を転送するための少なくとも１つのパイプ深さ用導体、アドレスバス、およびデータバス、を備えたバスと、
前記バスに結合されて、前記バスに提供するバスマスタと、
前記バスに結合されて、前記バスマスタからバス処理スタート信号を受信して、自身が有
する第1のパイプカウンタがゼロの場合は自身に所有権があると判断して処理後、前記バス処理終了信号を前記バスに提供する第１のバススレイブと、
前記バスに結合され、前記バスマスタからバス処理スタート信号を受信して、自身が有する第2のパイプカウンタがゼロの場合は自身に所有権があると判断して処理後、前記バス処理終了信号を前記バスに提供する第２のバススレイブと、
を具備し、
前記第１のバススレイブは、
前記係属中の処理の数を示し、前記バス処理スタート信号の肯定に応じて増分され、前記バス処理終了信号の肯定に応じて減分され、第１のバススレイブがデータバスの所有権を持つために、カウンタがゼロであるか否かを計算する第１のカウンタを具備し、
前記第２のバススレイブは、
前記第１のカウンタから前記パイプ深さ値を受信しかつ前記第２のバススレイブがデータバスの所有権を持つために、カウンタがゼロであるか否かを計算する第２のカウンタ、
を具備することを特徴とするデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的にはデータ処理システムに関し、かつより特定的には順序通りの終了（ｉｎ−ｏｒｄｅｒ  ｔｅｒｍｉｎａｔｉｏｎ）を有するバスプロトコルを実施するための方法および装置に関する。
【０００２】
【従来の技術】
数多くのデータ処理システムは、処理ユニットのような１つまたはそれ以上のマスタ装置、およびメモリ装置のようなマスタ装置がバスを介してアクセスして命令および／またはデータを読み出す必要がある１つまたはそれ以上のスレイブ装置から構成される。命令またはデータ（以後、データと称する）を読み出すためには、マスタ装置は一般にスレイブ装置に対し該装置のどこにデータが見い出されるべきかを示す要求を送信し、かつスレイブ装置は該要求をアクノレッジし次に要求されたデータの送信へと進行する。そのような処理は特にスレイブ装置がたまたま低速の応答装置であった場合に完了するのに比較的長い時間を必要とする場合がある。
【０００３】
処理時間を早めるために、マスタ装置（単数または複数）が応答を待つことなくスレイブ装置（単数または複数）に要求を送信するシステムが知られており、その場合は未決着のかつ処理を完了させるためにそれらの対応する応答が受信されるのを待機している１つまたはそれ以上のマスタ装置からの数多くの要求が存在し得る。これらの場合、スレイブ装置（単数または複数）からバス上に受信した応答を対応する要求と整合するマスタ装置（単数または複数）に関して、前記応答が要求と同じ順序にないかもしれないという、問題が生じる。スレイブからの対応する応答または返答に対するマスタによる初期要求のこの整合は特にマスタ−スレイブ通信のために使用されるバスが分割またはスプリット処理（ｓｐｌｉｔ−ｔｒａｎｓａｃｔｉｏｎ）バスおよび／またはパイプライン化バス（ｐｉｐｅｌｉｎｅｄ  ｂｕｓ）である場合に問題となる。
【０００４】
【発明が解決しようとする課題】
スプリット処理バスは同時に異なるバスマスタがアドレスバスおよびデータバスの所有権を持つことができるバスである。一例として、スプリット処理バスが使用される場合、マイクロプロセッサ＃１はマイクロプロセッサ＃２がデータバスを使用するのと同時にアドレスバスを使用することができる。非スプリット処理バスでは、同じプロセッサがアドレスバスおよびデータバスの双方のバスマスタである。従って、非スプリット処理バスが使用される場合、アドレスバスおよびデータバスの所有権は分割することができない。スプリット処理バスはしばしばバスの帯域幅を増大するためにマルチプロセッサシステムにおいて使用される。
【０００５】
パイプライン化バスは１つの処理のアドレスフェーズが他の処理のデータフェーズとオーバラップできるようにするバスである。数多くのマルチプロセッサバスはスプリット処理およびパイプライン化を組み合わせてアドレスバスおよびデータバスの双方による情報転送を最大にする。
【０００６】
本発明はマスタ−スレイブ通信のために使用されるバスがスプリット処理バスおよび／またはパイプライン化バスである場合にスレイブからの対応するデータ応答に対しマスタによって初期要求を整合する問題に向けられている。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明に係わるデータ処理システム（１０）においては、
以下の導体、すなわち、処理の開始要求を示すバス処理スタート信号を転送するためのバス処理スタート用導体（２０）、処理の終了要求を示すバス処理終了信号を転送するためのバス処理終了用導体（２２）、そしてパイプ深さ値を転送するための少なくとも１つのパイプ深さ用導体（２１）、を備えたバス、
前記バスに結合され、バス処理スタート信号を前記バスに提供するバスマスタ（１２）、
前記バスに結合され、バス処理終了信号を前記バスに提供するバススレイブ（１４）、そして
前記バスに結合され第１のカウント値を格納する第１のカウンタ（１６）であって、前記第１のカウント値は前記バス処理スタート信号および前記バス処理終了信号の双方に基づき調整され、前記第１のカウンタは前記第１のカウント値を前記少なくとも１つのパイプ深さ用導体にパイプ深さ値として提供するもの、
が設けられる。
【０００８】
また、本発明によれば、データ処理システム（１０，４０）において順序通りの終了を有するバスプロトコルを実施する方法が提供され、前記データ処理システムはバス（１８）によってバススレイブ（１４）に結合されたバスマスタ（１２）を有するものであり、前記方法は、
第１のバス処理を開始するために処理スタート信号（２０）を肯定する段階、
前記第１のバス処理の間に前記バス（１８）によって前記バススレイブ（１４）にパイプ深さ値を提供する段階、
前記パイプ深さ値を第１の処理のパイプ深さ値として前記バススレイブ（１４）内に格納する段階、
もし前記第１の処理のパイプ深さ値が所定の値であれば、バス（１８）の所有権を前記バススレイブ（１４）に承認しかつ前記バススレイブ（１８）からの第１のデータ値を前記バス（１８）に提供する段階、
もし前記第１の処理のパイプ深さ値が前記所定の値でなければ、前記バス（１８）の所有権の前記バススレイブ（１４）への承認を抑制する段階、
第２のバス処理を開始するために前記処理スタート信号を肯定する段階、
第２のバス処理を開始するために前記処理スタート信号を肯定する段階に応じて、前記バススレイブ（１４）に格納された前記第１の処理のパイプ深さ値に関して増分動作または減分動作の内の１つを行ない調整された第１の処理のパイプ深さ値を生成する段階、
もし前記調整された第１の処理のパイプ深さ値が所定の値であれば、バス（１８）の所有権を前記バススレイブ（１４）に承認しかつ前記バススレイブ（１４）から前記第１のデータ値を前記バス（１８）に提供する段階、そして
もし前記調整された第１の処理のパイプ深さ値が前記所定の値でなければ、前記バス（１８）の所有権を前記バススレイブ（１４）に承認するのを抑制する段階、
を具備することを特徴とする。
【０００９】
さらに本発明の他の態様に係わるデータ処理システム（４０）においては、
バス（４８）であって、バス処理スタート信号を転送するためのバス処理スタート用導体（５０）、バス処理終了信号を転送するためのバス処理終了用導体（５２）、パイプ深さ値を転送するための少なくとも１つのパイプ深さ用導体（５１）、アドレスバス（５８）、そしてデータバス（５９）、を備えたもの、
前記バスに結合され、前記バス処理スタート信号を前記バスに提供するバスマスタ（４２）、
前記バスに結合され、前記バス処理終了信号を前記バスに提供する第１のバススレイブ（４６）、そして
前記バスに結合され、前記バス処理終了信号を前記バスに提供する第２のバススレイブ（４４）、
を具備し、前記第１のバススレイブ（４６）は、
前記パイプ深さ値を決定するための第１のカウンタ（７７）であって、前記パイプ深さ値は前記バス処理スタート信号の肯定に応じて増分され、前記パイプ深さ値は前記バス処理終了信号の肯定に応じて減分されるもの、
を具備し、そして
前記第２のバススレイブ（４４）は、
前記第１のカウンタから前記パイプ深さ値を受信しかつ前記第２のバススレイブ（４４）がいつ前記データバス（５９）の所有権を持つかを計算する第２のカウンタ（７６）、
を具備することを特徴とする。
【００１０】
【発明の実施の形態】
１つの実施形態では、本発明は順序通りのデータバス終了を有するバスプロトコルを実施するための方法および装置を提供する。本発明はマスタ−スレイブ通信のために使用されるバスがスプリット処理バスおよび／またはパイプライン化バスである場合にバスマスタによって初期アドレス要求をスレイブからの対応するデータ応答と整合する上での問題を解決する。
【００１１】
用語「バス」は、データ、アドレス、制御、またはステータスのような、１つまたはそれ以上の種々のタイプの情報を転送するために使用できる複数の信号または導体に言及するために使用される。用語「肯定する（ａｓｓｅｒｔ）」および「否定する（ｎｅｇａｔｅ）」は信号、ステータスビット、または同様の装置を、それぞれ、その論理的に真のまたは論理的に偽の状態にする場合に使用される。もし論理的に真の状態が論理レベル“１”であれば、論理的に偽の状態は論理レベル“０”である。また、もし論理的に真の状態が論理レベル“０”であれば、論理的に偽の状態は論理レベル“１”である。
【００１２】
図１は、バス１８によって双方向的に結合された１つまたはそれ以上のバスマスタ装置１２〜１３および１つまたはそれ以上のバススレイブ装置１４〜１５を含むデータ処理システム１０を示している。中央パイプカウンタ１６もまたバス１８に結合されている。
【００１３】
バス１８はバスマスタ１２〜１３によって導体２０を介してバススレイブ１４〜１５および中央パイプカウンタ１６に供給される処理スタート信号を含む。バス１８はまたバススレイブ１４〜１５の内の１つによってバスマスタ１２〜１３に、中央パイプカウンタ１６に、そしてバススレイブ１４〜１５の内の他のものに導体２２を介して供給される処理終了信号を含む。また、バス１８は中央パイプカウンタ１６によって導体２１を介してバスマスタ装置１２〜１３およびバススレイブ装置１４〜１５に供給される１つまたはそれ以上の現在の（ｃｕｒｒｅｎｔ）パイプ深さ信号２１を含む。また、例えば、アドレス信号、データ信号、および種々の制御信号のような、バス１８に含まれる他の信号（図示せず）がある。
【００１４】
バスマスタ１２はパイプ深さ（ｐｉｐｅ  ｄｅｐｔｈ）を追跡するためにパイプカウンタ３０を含み、かつ同様に、バスマスタ１３はパイプ深さを追跡するためにパイプカウンタ３１を含む。バススレイブ１４はパイプ深さを追跡するためにパイプカウンタ３２を含み、かつ同様にバススレイブ１５はパイプ深さを追跡するためにパイプカウンタ３３を含む。本発明の１つの実施形態では、データ処理システム１０のすべては同じ集積回路上に集積される。本発明の別の実施形態では、データ処理システム１０の種々の部分は異なる集積回路上に集積される。
【００１５】
図２は、タイミング図形式で、本発明の一実施形態に係わる図１のデータ処理システム１０の動作を示す。本発明の一実施形態においては、クロック信号３４はバスマスタ１２によってのみ使用される内部クロックである。本発明の別の実施形態では、クロック信号３４はバス１８に含まれかつすべてのバスマスタ１２〜１３およびすべてのバススレイブ１４〜１５、ならびに中央パイプカウンタ１６に提供される。
【００１６】
図３は、バス４８を介して双方向的に結合された１つまたはそれ以上のバスマスタ装置４２および１つまたはそれ以上のバススレイブ装置４４を含むデータ処理システム４０を示す。本発明の一実施形態では、バスマスタ４２は中央処理ユニット（ＣＰＵ）であり、バススレイブ４４はスレイブモジュールであり、かつ中央パイプカウンタ４６はシステム統合ユニット（ＳＩＵ）である。情報は外部バス８０を介してデータ処理システム４０へかつデータ処理システム４０から通信される。本発明の一実施形態では、データ処理システム４０のすべては同じ集積回路上に集積され、かつＳＩＵ４６は外部バス８０を介して集積回路の外部に通信するために使用される。本発明の別の実施形態では、データ処理システム４０の種々の部分は異なる集積回路上に集積される。
【００１７】
バス４８は導体５０を介してＣＰＵ４２によってスレイブ４４およびＳＩＵ４６に供給される転送スタート信号、導体５１を介してＳＩＵ４６によりＣＰＵ４２およびスレイブ４４に供給される１つまたはそれ以上の現在のパイプ深さ信号５１、導体５２を介してスレイブ４４またはＳＩＵ４６によりＣＰＵ４２へかつスレイブ４４およびＳＩＵ４６の内の他方のものに供給される転送アクノレッジ信号、導体５３を介してスレイブ４４またはＳＩＵ４６により供給されかつバス４８上の他の装置によって受信されるバスエラー信号、導体５４を介してスレイブ４４またはＳＩＵ４６によりＣＰＵ４２およびＳＩＵ４６に供給されるアドレス認識信号、そして導体５５を介してスレイブ４４またはＳＩＵ４６によりＣＰＵ４２およびＳＩＵ４６に供給されるアドレスアクノレッジ信号を含む。
【００１８】
バス４８はまた導体５６を介してＣＰＵ４２によりスレイブ４４およびＳＩＵ４６に供給される中止信号（ａｂｏｒｔ  ｓｉｇｎａｌ）、導体５７を介してＣＰＵ４２によりスレイブ４４およびＳＩＵ４６に供給される読み出し／書き込み信号、導体５８を介してＣＰＵ４２によりスレイブ４４およびＳＩＵ４６に供給される複数のアドレス信号、導体５８を介してスレイブ４４またはＳＩＵ４６からＣＰＵ４２へと供給されるかあるいは導体５８を介してＣＰＵ４２からスレイブ４４またはＳＩＵ４６へと供給される複数のデータ信号、そして最後に、導体６０を介して転送されバス１８に含まれるその他の信号（例えば、種々の制御信号）が含まれる。
【００１９】
ＣＰＵ４２はカウンタ７５に双方向的に結合された制御回路７０を含む。スレイブ４４はカウンタ７６に双方向的に結合された制御回路７１を含む。ＳＩＵ４６はカウンタ７７に双方向的に結合された制御回路７２を含む。
【００２０】
図４は、図表形式で、本発明の一実施形態に係わる図２のデータ処理システム４０の動作を示す。
【００２１】
図５は、流れ図形式で、本発明の一実施形態に係わる図２のデータ処理システム４０の動作を示す。長円形９０〜９１はスレイブ４４におけるアドレスへの処理の開始を示す（図３を参照）。四角形９２〜９４はバススレイブ４４がデータバス５９の所有権を有するか否かを示す。
【００２２】
図６は、タイミング図形式で、本発明の一実施形態に係わる図２のデータ処理システム４０の動作を示す。
【００２３】
次に本発明の動作を説明する。本発明はマスタ−スレイブ通信のために使用されるバスがスプリット（分割）処理バスおよび／またはパイプライン化バスである場合にバスマスタによる初期アドレス要求をスレイブからの対応するデータ応答と整合する問題を解決する。本発明はデータバスにおける順序通りの終了（ｉｎ−ｏｒｄｅｒ  ｔｅｒｍｉｎａｔｉｏｎ）を有するバスプロトコルを実施するための方法および装置を提供する。
【００２４】
図１を参照すると、本発明の一実施形態では中央パイプカウンタ１６が現在のパイプ深さ（すなわち、係属中の処理の数）を追跡するために使用される。中央パイプカウンタ１６は新しい処理が開始されるたびごとに（すなわち、処理スタート信号２０が肯定されるたびごとに）増分され、かつ処理が完了しまたは終了するたびごとに（すなわち、処理終了信号２２が肯定されるたびごとに）減分される。おのおののバスマスタ１２〜１３は現在のパイプ深さが所定の最大パイプ深さより小さい場合にのみ新しい処理を開始することができる。図２に示された本発明の実施形態に対しては、最大パイプ深さは２である。
【００２５】
バスマスタ（例えば、１２）によって新しい処理が開始されたとき、該処理が向けられるバススレイブ（例えば、１４）は現在のパイプ深さ信号２１から現在のパイプ深さ値を受信しかつパイプカウンタ３２へと格納する。このバススレイブ１４は次に１つの処理が完了しまたは終了するたびごとに（すなわち、処理終了信号２２が肯定されるたびごとに）パイプカウンタ３２を減分する。バススレイブのパイプカウンタ３２が“０”に減分されたとき、バススレイブ１４はそれが次の利用可能なデータフェーズの間にデータバスの所有権を持つことを知る。
【００２６】
バスマスタ（例えば、１２）が処理を開始するたびごとに、バスマスタ１２は受け取り側のバススレイブ（例えば、１４）と同様に該バススレイブのデータがデータバス上に得られることを知るためにパイプ深さを追跡しなければならない。従って、バスマスタ１２は、バススレイブ１４のように、現在のパイプ深さ信号２１から現在のパイプ深さ値をそのパイプカウンタ３０に格納しなければならない。バスマスタ１２は次に処理が完了しまたは終了するたびごとに（すなわち、処理終了信号２２が肯定されるたびごとに）パイプカウンタ３０を減分する。バスマスタのパイプカウンタ３０が“０”まで減分されたとき、バスマスタ１２は次の利用可能なデータフェーズの間にバススレイブ１４からデータバス上にデータを受信していることを知る。
【００２７】
バスマスタ１２〜１３はまた現在のパイプ深さが所定の最大のパイプ深さより小さいか否かを判定するため現在のパイプ深さ信号２１を監視しなければならない。バスマスタ１２〜１３は現在のパイプ深さが前記最大のパイプ深さであれば（すなわち、パイプが満杯であれば）新しい処理を開始することはできない。本発明のいくつかの実施形態においては、１つまたはそれ以上のバスマスタ１２〜１３はまたそれらのパイプカウンタ３０〜３１内にバスマスタ１２〜１３がパイプ深さがその最大パイプ深さにいつ到達するかおよび到達するとことを予期できるようにする回路を持つことができる。この方法の利点はバスマスタ１２〜１３がパイプがまだ満杯ではなく従って現在のパイプ深さ信号によって中央パイプカウンタ１６から現在のパイプ深さが得られる前でも新しい処理を開始できるようにすることである。本発明は何らのデータバス調停または承認ラインも必要としないことに注意を要する。
【００２８】
さらに図１を参照すると、データ処理システム１０はすべてバス１８に結合された中央パイプカウンタ１６、１つまたはそれ以上のバスマスタ１２〜１３、および１つまたはそれ以上のバススレイブ１４〜１５を有する。図１は、本発明を実施するためにバス１８に含めることができる一組の基本的な制御信号を示している。別の実施形態では、本発明を実施するためにより多くの、より少ない、または異なる信号を使用することができる。バス１８はまたアドレスバス（別個には示されていない）およびデータバス（別個には示されていない）を含む。
【００２９】
図１に示された本発明の実施形態では、バスマスタ１２〜１３は処理スタート信号２０を肯定することによって新しいバスサイクルを開始し、かつバススレイブ１４〜１５は処理終了信号２２を肯定することによってそのバスサイクルを完了または終了させる。おのおののバスサイクルは対応するアドレスフェーズおよび対応するデータフェーズを有する。図１に示された本発明の実施形態では、おのおのの読み出しバスサイクルはバスマスタ１２〜１３がアドレス値をバス１８に提供するアドレスフェーズとこれに続くバススレイブ１４〜１５が対応するデータ値をバス１８に提供するデータフェーズを有する。
【００３０】
中央パイプカウンタ１６は係属しているアクセスの数を追跡しかつデータ処理システム１０におけるバスマスタ１２〜１３およびバススレイブ１４〜１５に対し現在のパイプ深さ信号２１を提供する。図１に示された本発明の実施形態では、中央パイプカウンタ１６は処理の開始が生じるたびごとに（すなわち、処理スタート信号２０が肯定されるたびごとに）増分され、かつ処理終了が生じるたびごとに（すなわち、処理終了信号２２が肯定されるたびごとに）減分される。
【００３１】
さらに図１を参照すると、おのおののバススレイブ１４〜１５は処理スタート信号２０およびアドレス値をバスマスタ１２〜１３から受信する。おのおののバススレイブ１４〜１５は受信したアドレス値をこの読み出しバスサイクルがそれ自身をアクセスしようとしているかあるいは他のバススレイブをアクセスしようとしているかを判定するために使用する。もしバススレイブ１４〜１５がその読み出しサイクルが自分に向けられていないものと判定すれば、その読み出しバスサイクルには応答しない。もしバススレイブ１４〜１５がその読み出しバスサイクルが自分に向けられているものと判定すれば、バススレイブ１４〜１５はこの特定の読み出しバスサイクルに対応するデータフェーズの間にバス１８のデータバス部分をドライブすることによって応答しなければならない。バス１８はまたバススレイブ１４〜１５に対して現在のバスサイクルが読み出しアクセスであることを示すためにバスマスタ１２〜１３によって提供される読み出し／書き込み信号（別個には示されていない）を含むことに注意を要する。
【００３２】
重要な問題はある特定のバススレイブ１４〜１５がどのようにしてどのデータフェーズ“Ｎ”がその特定のスレイブにアクセスしたアドレスフェーズ“Ｎ”に対応するかを決定できるかである。すなわち、バスサイクルＮの間に、もしバススレイブ１４がバス１８のアドレス部分によってそれ自身のアドレス値の１つを受信すれば、バススレイブ１４はバス１８のデータ部分のどのタイムスロットがそのバスサイクルＮに対応するかを決定しなければならない。次にバススレイブ１４はバスサイクルＮに対応するバス１８のデータ部分におけるタイムスロットの間にバス１８のデータ部分に対しそのデータ値を提供しなければならない。
【００３３】
さらに、バスサイクルＮを開始したバスマスタ１２はまたバス１８のデータ部分上のどのタイムスロットがバスサイクルＮに対応するかを決定しバスマスタ１２がバススレイブ１４によって提供される戻りのデータをラッチできるようにしなければならない。本発明の一実施形態では、バスマスタ１２はそれが開始したそれぞれの完了していない処理に対し別個のパイプ深さ値を記憶する。この記憶されたパイプ深さ値は前記処理終了信号２２が肯定されるたびごとに減分される。従って、同じパイプ深さ値が現在のパイプ深さ信号２１から捕捉されかつマスタのパイプカウンタ３０およびスレイブのパイプカウンタ３２の双方に格納される。両方のパイプカウンタ３０および３２は処理終了信号２２が肯定されるたびごとに減分される。２のパイプ深さに対し、バスマスタ１２は１つのパイプ深さ値を記憶する必要があるのみであることに注意を要する。１つまたはそれ以上の格納されるパイプ深さ値はパイプカウンタ３０のラッチ（図示せず）内に格納される。バスサイクルＮを完了させるため、バススレイブ１４は処理終了信号２２を肯定しなければならない。
【００３４】
特定のバススレイブ１４〜１５がどのようにしてどのデータフェーズ“Ｎ”がその特定のバススレイブ１４〜１５に属するかを決定できるかに関する主要な問題は以下のようにして解決される。処理Ｎ＋１の、新しい処理が発行されたとき、該処理が発行されたバススレイブ１４は信号２１からパイプカウンタ３２へと現在のパイプ深さ値をラッチしかつ格納する。パイプカウンタ３２はそれが所定の整合値に到達するかあるいはロールオーバするまで増分されるアップカウンタとすることができる。パイプカウンタ３２は現在のパイプ深さ値がロードされるダウンカウンタとするとことができ、かつ所定の整合値またはゼロまで減分される。あるいは、パイプカウンタ３２は状態マシン（ｓｔａｔｅ  ｍａｃｈｉｎｅ）とすることができる。同じことは他のパイプカウンタ３０，３１および３３の構成についてもあてはまる。
【００３５】
本発明の一実施形態においては、パイプカウンタ３２はバススレイブ１４へのアクセスが受信されたときに信号２１からの現在のパイプ深さ値によってロードされるダウンカウンタである。バススレイブ１４は次にパイプカウンタ３２の該カウンタ値を処理が完了するたびごとに（すなわち、処理終了信号２２が肯定されるたびごとに）減分する。従って、パイプカウンタ３２のカウンタ値がゼロに到達したとき、バススレイブ１４は次の利用可能なデータフェーズは処理Ｎ＋１に対するものであることを判定する。従って、次の利用可能なデータフェーズの間に、バススレイブ１４はそのデータ値をバス１８のデータバス部分上にドライブする。
【００３６】
本発明はデータバスに対して何らの調停（ａｒｂｉｔｒａｔｉｏｎ）も必要としないことに注意を要する。その結果、データバス調停または承認信号は必要とされない。その代わりに、おのおののバスマスタ１２〜１３およびおのおののバススレイブ１４〜１５はそれがいつデータバスの所有権を持つかを判定するためパイプカウンタ３０〜３３を有し、一方中央パイプカウンタ１６が現在のパイプ深さを追跡するために使用される。
【００３７】
図２は図１におけるバス１８上の２つのパイプライン化された処理を示す。「マスタＡ」（図２を参照）がバスマスタ１２（図１を参照）であり、「スレイブＡ」がバススレイブ１４であり、「マスタＢ」はバスマスタ１３であり、そして「スレイブＢ」がバススレイブ１５であると仮定する。バスマスタ１２からの最初の処理はバススレイブ１４（マスタＡからスレイブＡ）であり、かつ第２の処理はバスマスタ１３からバススレイブ１５（マスタＢからスレイブＢ）である。クロック３４がタイミング関係を指示するために使用されかつバスマスタ１２〜１３、バススレイブ１４〜１５、および中央パイプカウンタ１６によって使用される。理解を容易にするため、おのおののクロック３４の期間または周期が引き続きＴ１，Ｔ２，Ｔ３およびＴ４と名付けられる４つの等しい時間分割部またはチック（ｔｉｃｋｓ）に分割される。本発明の別の実施形態ではバス１８上の種々の信号の間の異なるタイミング関係を使用することができる。
【００３８】
バスマスタ１２は最初のＴ３において処理スタート信号２０を肯定しかつバス１８のアドレスバス部分をバススレイブ１４のためのアドレス値によってドライブすることにより最初の処理を開始する。前に未完了の処理がないため、中央パイプカウンタ１６によって信号２１に供給される現在のパイプ深さ値はゼロである。おのおののバススレイブ１４〜１５は前記処理スタート信号２０の肯定に対しアドレス値をラッチしかつ該アドレス値がそれ自身のものの１つであるかを判定することによって応答する。前記アドレス値はバススレイブ１４のためのものであるから、バススレイブ１４は信号２１から現在のパイプ深さ値（この場合“０”）をラッチしかつこの値をパイプカウンタ３２に格納する。バスマスタ１２はまた信号２１から現在のパイプ深さ値（この場合は“０”）をラッチしかつこの値をパイプカウンタ３０に格納する。図２に示された「スレイブＡパイプカウント」値はパイプカウンタ３２に格納された値を表す。
【００３９】
前記アドレス値はバススレイブ１５のためのものでないから、バススレイブ１５は信号２１から現在のパイプ深さ値をラッチせずかつパイプカウンタ３３には何らの値も格納されない。図２に示された「スレイブＢパイプカウント」値はパイプカウンタ３３に格納された値を表す。処理スタート信号２０の肯定に応じて、中央パイプカウンタ１６はそのカウンタを増分しかつ現在のパイプ深さ信号２１を新しい現在のパイプ深さ値（すなわち、“１”）によってドライブする。
【００４０】
パイプカウンタ３２に格納されたカウンタ値は“０”であるから、バススレイブ１４は次のデータフェーズがバススレイブ１４に属することを判定する。従って、バススレイブ１４はデータバスの次に利用可能なタイムスロットの間に該データバスをその応答データ値によってドライブする。パイプカウンタ３０に格納されたカウンタ値が“０”であるから、バスマスタ１２はバススレイブ１４がデータバスの次に利用可能なタイムスロットの間にそのデータ値によって応答していることを判定する。
【００４１】
バスマスタ１３は第２のＴ３において処理スタート信号２０を肯定しかつバス１８のアドレスバス部分をバススレイブ１５のためのアドレス値によってドライブすることによって第２の処理を開始する。１つの前の未完了の処理があるため、中央パイプカウンタ１６によって信号２１に提供される現在のパイプ深さ値は“１”である。
【００４２】
おのおののバススレイブ１４〜１５は前記処理スタート信号２０の肯定に対しアドレス値をラッチしかつ該アドレス値がそれ自身ものの１つであるか否かを判定することによって応答する。前記アドレス値はバススレイブ１５のためのものであるから、バススレイブ１５は信号２１からの現在のパイプ深さ値（この場合“１”）をラッチしかつこの値をパイプカウンタ３３に格納する。同様に、バスマスタ１３は信号２１から現在のパイプ深さ値（この場合“１”）をラッチしこの値をパイプカウンタ３１に格納する。前記アドレス値はバススレイブ１４のためのものでないから、バススレイブ１４は信号２１からの現在のパイプ深さ値をラッチせずかつパイプカウンタ３２には何らの新しい値も格納されず、パイプカウンタ３２は依然として“０”を含んでいる。処理スタート信号２０の第２の肯定に応答して、中央パイプカウンタ１６はそのカウンタを増分しかつ現在のパイプ深さ信号２１を新しい現在のパイプ深さ値（すなわち、“２”）でドライブする。
【００４３】
パイプカウンタ３３に格納されたカウンタ値は“１”であるから、バススレイブ１５は次のデータフェーズはバススレイブ１５に属さないことを判定する。従って、バススレイブ１５は待機しかつデータバスをその応答データ値によってドライブしない。パイプカウンタ３１に格納されたカウンタ値は“１”であるから、バスマスタ１３はバススレイブ１５がデータバスの次に利用可能なタイムスロットの間にそのデータ値によって応答していないことを判定する。
【００４４】
バススレイブ１４が最初の処理に対するデータフェーズを完了したとき、バススレイブ１４は処理終了信号２２を肯定する。バススレイブ１５およびバスマスタ１３は処理終了信号２２の肯定に対してそれらのそれぞれのパイプカウンタ３１および３３に格納された値を減分することによって応答する。同様に、中央パイプカウンタ１６はそのカウンタを減分しかつ現在のパイプ深さ信号２１を新しい現在のパイプ深さ値（すなわち、“１”）によってドライブすることにより前記処理終了信号２２の肯定に応答する。
【００４５】
パイプカウンタ３３に格納されたカウンタ値は今や“０”に減分されたから、バススレイブ１５は次のデータフェーズがバススレイブ１５に属することを判定する。従って、バススレイブ１５はデータバスの次に利用可能なタイムスロットの間にその応答データ値によってデータバスをドライブする。パイプカウンタ３１に格納されたカウンタ値が“０”であるから、バスマスタ１３はデータバスの次に利用可能なタイムスロットの間にバススレイブ１５がそのデータ値によって応答していることを判定する。
【００４６】
バススレイブ１５が第２の処理に対するデータフェーズを完了したとき、バススレイブ１５は処理終了信号２２を肯定する。中央パイプカウンタ１６は処理終了信号２２の肯定に対してそのカウンタを減分しかつ現在のパイプ深さ信号２１を新しい現在のパイプ深さ値（すなわち、“０”）によってドライブすることにより応答する。
【００４７】
図１および図２は２のパイプ深さを示しているが、本発明の別の実施形態では任意のパイプ深さを使用することができる。現在のパイプ深さ信号２１の数、パイプカウンタ３０〜３３のビットおよびラッチの数、そして中央パイプカウンタ１６のビットの数は任意のパイプ深さに適応させるために合わせて変更することができる。
【００４８】
バスマスタ１２〜１３は最大のパイプ深さに到達したか否か、かつ従って新しい処理が開始できるか否かを判定するために現在のパイプ深さ信号２１を使用できることに注目すべきである。もし最大パイプ深さに到達していれば、バスマスタ１２〜１３は新しい処理を開始するのを控える。もしバスマスタ１２〜１３が現在のパイプ深さ信号２１から最大パイプ深さに到達していることを判定すれば、バスマスタ１２〜１３は中央パイプカウンタ１６がバススレイブ１４〜１５の１つからの肯定された処理終了信号２２を受信したことに応じて現在のパイプ深さ値を減分するまで現在のパイプ深さ信号２１を監視し続ける。いったん現在のパイプ深さ信号２１がパイプ深さがもはやその最大値にないことを示せば、バスマスタ１２〜１３はバス１８によって新しい処理を開始することができる。
【００４９】
図３は、本発明の別の実施形態を示す。図３に示された転送スタート信号５０は図１に示された処理スタート信号と同じ一般的な目的に使用され、双方の信号は新しい処理のアドレスフェーズを開始するためにバスマスタによって肯定される。図３に示された転送アクノレッジ信号５２は図１に示された処理終了信号と同じ一般的な目的に使用され、両方の信号は処理のデータフェーズの完了を示すためにバススレイブによって肯定される。また、図３に示された現在のパイプ深さ信号５１は図１に示された現在のパイプ深さ信号と同じ一般的な目的に使用され、双方は現在のパイプ深さをバスマスタおよびバススレイブに対し送信する（ｂｒｏａｄｃａｓｔ）。
【００５０】
本発明の一実施形態においては、ＳＩＵ４６は中央パイプカウンタおよびバススレイブの双方として機能する。別の実施形態ではすべてのバススレイブから分離した中央パイプカウンタ４６を持つことができる。また、本発明の別の実施形態では、１つの中央パイプカウンタ４６を持つ代わりに、おのおののバスマスタ（例えば、４２）が現在のパイプ深さを追跡しかつそのバスマスタが開始するおのおのの処理に対し現在のパイプ深さ信号５１を提供することができる。
【００５１】
図３に示された本発明の実施形態においては、バススレイブ４４は処理がエラーなしに完了した場合には転送アクノレッジ信号５２を肯定することによって、あるいは処理がバスエラーとともに完了した場合にはバスエラー信号５３を肯定することによって、処理のデータフェーズの完了を指示することができる。従って、バスマスタ４２、バススレイブ４４、および中央パイプカウンタ４６はそれらのそれぞれのカウンタ７５〜７７を適切に減分するために転送アクノレッジ信号５２およびバスエラー信号５３の双方を監視しなければならない。本発明の別の実施形態では、カウンタ７５〜７６が処理のデータフェーズが完了したことを示す１つまたはそれ以上の信号にもとづき選択的に調整（すなわち、増分または減分）できる限り、処理のデータフェーズの完了を示すために１つまたはそれ以上の信号の任意の組み合わせを使用することができる。カウント７５〜７６はまた状態マシンとして実施できることに注意を要する。
【００５２】
図３に示された本発明の実施形態では、アドレス認識信号５４およびアドレスアクノレッジ信号５５が処理のアドレスフェーズの完了を指示するためにバススレイブ１４によって提供される。また、処理のアドレスフェーズを中止するためにバスマスタ４２によって中止信号（ａｂｏｒｔ  ｓｉｇｎａｌ）５６が提供される。従って、バスマスタ４２、バススレイブ４４、および中央パイプカウンタ４６はそれらのそれぞれのカウンタ７５〜７７を適切に増分するために前記転送スタート信号５０および前記中止信号５６の双方を監視しなければならない。本発明の別の実施形態ではある処理が開始されておりかつ対応するデータフェーズが完了する前に中止されないことを示すために１つまたはそれ以上の信号の任意の組み合わせを使用することができる。
【００５３】
図３に示された本発明の実施形態においては、アドレスバス５８、データバス５９、および読み出し／書き込み信号５７は明白に示されている。アドレスバス５８およびデータバス５９はパイプライン化されたスプリット（分割）処理バスであることに注目すべきである。バス４８はまた、例えば、アドレス属性情報（例えば、スーパバイザ／ユーザ  ）のような、情報を転送するためまたは制御のために使用できるその他の信号６０を含む。
【００５４】
図４は、本発明の一実施形態においてカウンタ７７におけるパイプ深さ値がどのように増分されかつ減分されるかを示す。「前のパイプ深さ」と題する欄はカウンタ７７（図３を参照）に格納された現在値を示す。「次のパイプ深さ」と題する欄はバス４８上の種々の信号によって決定される、カウンタ７７に格納されるべき次の値を示す。図４に示された本発明の実施形態においては、次のパイプ深さは前記転送スタート信号５０、アドレスアクノレッジ信号５５、中止信号５６、および転送アクノレッジ信号５２の関数である。
【００５５】
本発明のいくつかの実施形態においては、次のパイプ深さはまた処理のデータフェーズの完了を示すために転送アクノレッジ信号５２と同様にして使用することができるバスエラー信号の関数である。本発明の別の実施形態ではバスエラー信号５３を使わなくてもよく、あるいはこのような方法でバスエラー信号５３を使わなくてもよい。
【００５６】
「Ｔ３で新しいサイクルを開始？」と題する欄は最大のパイプ深さに到達したか否か、したがってバスマスタ４２がバス４８上に新しい処理またはバスサイクルを開始できるか否かを示す。図３に示されたデータ処理システム４０のための最大パイプ深さは２であるから、バスマスタ４２は次のパイプ深さの値が“２”になる場合は新しい処理を開始しない。
【００５７】
本発明のいくつかの実施形態においては、バスマスタ４２における制御回路７０は中央パイプカウンタ４６における制御回路７２の大部分またはすべてを複製し、それによってバスマスタ４２が効率的にいつ最大パイプ深さに到達するかを予想できるようにする。したがって、もしバス４８のタイミングが、バスマスタ４２が信号５１によって次のパイプ深さの値が受信される前に新しい処理を開始するか否かを判定することを必要とする場合、バスマスタ４２は中央パイプカウンタ４６と同様にして次のパイプ値を計算することによりいつ最大パイプ深さに到達するかを効率的に予想することができる。
【００５８】
本発明の別の実施形態では、バスマスタ４２はより簡単なカウンタ７５を有しかつ現在のパイプ深さ信号５１によって中央パイプカウンタ４６から次のパイプ深さの値が供給されるを待たなければならないようにすることができる。
【００５９】
図５は、バススレイブ４４が処理に応答するために利用できかつ処理が中止されていないと仮定して、バススレイブ４４の動作を流れ図で示す。長円形９０を参照すると、もし転送スタート信号５０が肯定されかつ現在のパイプ深さ信号５１が２進“ｘ１”であれば、バススレイブ４４は応答する前にデータバス５９が承認されるのを待機する（四角形９２を参照）。カウンタ７６は現在のパイプ深さ信号５１の最下位ビットを格納することに注意を要する。したがって、カウンタ７６は“１”を格納する。もし転送アクノレッジ信号５２が肯定されれば、カウンタ７６は減分され、したがってそれは今や“０”を含み、したがってデータバス５９が承認されかつバススレイブ４４はデータバス５９を適切なデータ値でドライブすることにより応答する（四角形９３を参照）。転送アクノレッジ信号５２が次にバススレイブ４４によって肯定され、カウンタ７６は影響されず（それは“０”を格納し続ける）、かつデータバス５９は今や他の処理が継続していないためアイドルである（四角形９４を参照）。
【００６０】
長円形９１を参照すると、もし転送スタート信号５０が肯定されかつ現在のパイプ深さ信号５１が２進“ｘ０”であれば、バススレイブ４４はデータバス５９が承認されたものと判定し、かつバススレイブ４４はデータバス５９を適切なデータ値によってドライブすることにより応答する（四角形９３を参照）。次に転送アクノレッジ信号５２がバススレイブ４４によって肯定され、カウンタ７６は影響されず（それは“０”を格納し続ける）、そしてデータバス５９は他の処理が継続していないためアイドルになる（四角形９４を参照）。
【００６１】
図６はバス４８（図３を参照）上の３つのパイプライン化処理を示す。第１の処理は第１のバススレイブ（例えば、バススレイブ１４）への読出しアクセスであり、第２の処理は第２のバススレイブへの書込みアクセスであり、そして第３の処理は第３のバススレイブへの読出しアクセスである。クロック６４はタイミング関係を示すために使用されかつバスマスタ１２、バススレイブ１４、および中央パイプカウンタ４６によって使用される。理解を容易にするため、クロック３４のそれぞれの周期全体は順次Ｔ１，Ｔ２，Ｔ３およびＴ４と名付けられた４つの等しい時間分割部またはチックに分割されている。本発明の別の実施形態ではバス４８上の種々の信号の間で異なるタイミング関係を使用することができる。アドレス信号５８の所有権のための任意の形式のアドレスバス調停を使用できることに注意を要する。
【００６２】
図６を参照すると、書込みアクセスに対しては、バスマスタ４２はＴ４の間にデータ値によってデータバス５９をドライブし、かつ読出しアクセスに対しては、バススレイブ４４はＴ２の間にデータバス５９をデータ値によってドライブする。しかしながら、データバス５９は順序通り終了する（ｉｎ−ｏｒｄｅｒ  ｔｅｒｍｉｎａｔｉｏｎ）バスであるから、各々のバススレイブはそれがデータバス５９の所有権を有するかを追跡し、それによって適切な時間に転送アクノレッジ信号５２を肯定することによって処理のデータフェーズを適切に終了できるようにしなければならない。したがって、第２のスレイブが書込みアクセスに対してアクセスされかつＴ４の間にデータバス５９からのデータ値をラッチしても、第２のスレイブはいつそれが転送アクノレッジ信号５２を肯定すべきかを決定するために信号５１からの現在のパイプ深さの値をラッチしなければならない。
【００６３】
もし第２のスレイブが転送アクノレッジ信号５２を肯定することにより第２の処理のデータフェーズを適切に終了しなければ、転送スタート信号５０のそれぞれの肯定に対して転送アクノレッジ信号５２の対応する肯定はない。また、その結果、データバス５９上のデータフェーズの終了はもはや順序通りではなくかつバスマスタ４２および他のバススレイブ４４はどの装置が現在データバス５９の所有権を有するかについての追跡を失なうことになる。
【００６４】
本発明の別の実施形態においては、カウンタ７５〜７７の増分および減分は読出し／書込み信号によって資格を与えられそれによってカウンタ７５〜７７がすべての書込みアクセスを無視し、かつ読出しアクセスの間のデータバスの所有権はすべての書込みアクセスと独立に決定されるよう構成することができる。書込みアクセスの間のデータバスの所有権は最も最近に処理を開始したバスマスタに与えられ、かつデータバス上の書込みアクセスはデータバス上の読出しアクセスと競合しないタイムスロットを使用する（例えば、書込みアクセスはデータバスのタイムスロットＴ３およびＴ４を使用し、一方読出しアクセスはデータバスのタイムスロットＴ１およびＴ２を使用する）。
【００６５】
図３〜図６は２のパイプ深さを示しているが、本発明の別の実施形態では任意のパイプ深さを使用することができる。現在のパイプ深さ信号５１の数およびカウンタ７５〜７７のビットおよびラッチの数は任意のパイプ深さに適応するために調整することができる。本発明のいくつかの実施形態のみが詳細に説明されたが、当業者により本発明の範囲から離れることなく種々の修正および改善を成すことができる。したがって、この発明は示された特定の形式に限定されるのではなくかつ添付の特許請求の範囲はこの発明の精神および範囲から離れることのないすべての修正をカバーすることが理解されるべきである。
【００６６】
【発明の効果】
したがって、本発明によれば、順序通りの終了を有するバスプロトコルを実施するための方法および装置において、従来技術の問題を解決し、マスタ−スレイブ通信のために使用されるバスがスプリット処理バスおよび／またはパイプライン化バスである場合における、マスタによる初期要求をスレイブからの対応するデータ応答に整合する上での問題を的確に解決することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係わるデータ処理システム１０を示すブロック図である。
【図２】本発明の一実施形態に係わる図１のデータ処理システム１０の動作を説明するためのタイミング図である。
【図３】本発明の別の実施形態に係わるデータ処理システム４０を示すブロック図である。
【図４】本発明の一実施形態に係わる図３のデータ処理システム４０の動作を図表形式で示す説明図である。
【図５】本発明の一実施形態に係わる図３のデータ処理システム４０の動作を説明するための流れ図である。
【図６】本発明の一実施形態に係わる図３のデータ処理システム４０の動作を説明するためのタイミング図である。
【符号の説明】
１０  データ処理システム
１２，１３  バスマスタ
１４，１５  バススレイブ
１６  中央パイプカウンタ
１８  バス
２０，２１，２２  導体
３０，３１，３２，３３  パイプカウンタ
４０  データ処理システム
４２  中央処理ユニットバス
４４  モジュール
４６  システム統合ユニット
４８  バス
５０，５１，５２，…，６０  導体
７０，７１，７２  制御回路
７５，７６，７７  カウンタ
８０  外部バス
【図１】
0004040704.tif 000002
【図２】
0004040704.tif 000003
【図３】
0004040704.tif 000004
【図４】
0004040704.tif 000005
【図５】
0004040704.tif 000006
【図６】
0004040704.tif 000007