(57)【特許請求の範囲】
【請求項１】
第１のＬＳＩと第２のＬＳＩとの間で互いにコマンドとデータを発行するシステムにおいて、
前記第１及び第２のＬＳＩとが双方向性のコマンドバス及びデータバスで接続され、前記第１のＬＳＩから前記第２のＬＳＩにまたは前記第２のＬＳＩから前記第１のＬＳＩに前記コマンドバスを介してコマンドが及び前記データバスを介してデータがそれぞれ送信され、前記第１のＬＳＩは通常時において前記コマンドバスを使用する使用権を持ち、前記第２のＬＳＩは通常時において前記データバスを使用する使用権を持ち、
前記第１のＬＳＩは、
前記第２のＬＳＩからの前記コマンドバスの使用を要求するコマンドリクエスト信号に応答して、前記コマンドバスの使用を許可するコマンドグラント信号を前記第２のＬＳＩに発行し、当該第１のＬＳＩからのコマンドの発行を抑止するコマンドバスアービタ回路と、
データバスの使用を要求するデータリクエスト信号を前記第２のＬＳＩに発行し、前記第２のＬＳＩからデータグラント信号を受信したことに応答して、前記データバスにデータを発行するデータ発行制御回路とを有し、
前記第２のＬＳＩは、
前記第１のＬＳＩからの前記データバスの使用を要求するデータリクエスト信号に応答して、前記データバスの使用を許可するデータグラント信号を前記第１のＬＳＩに発行し、当該第２のＬＳＩからのコマンドの発行を抑止するデータバスアービタ回路と、
コマンドバスの使用を要求するコマンドリクエスト信号を前記第１のＬＳＩに発行し、前記第１のＬＳＩからコマンドグラント信号を受信したことに応答して、前記コマンドバスにコマンドを発行するコマンド発行制御回路とを有することを特徴とする集積回路装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサとその周辺のＬＳＩとの間のバス制御方式に関し、特に、バスを利用してチップ間のコマンドやデータの転送をより効率よく行うことができるバス制御方式に関する。本発明は、更に、バースト転送されるデータの転送をより効率的に行うことができるバス制御方式に関する。
【０００２】
【従来の技術】
マイクロプロセッサは、その周辺のチップセットなどと接続され、コンピュータのボード上に実装される。例えば、マイクロプロセッサは、ブリッジＩＣを介して、周辺デバイスが接続されるＰＣＩバス等に接続され、マイクロプロセッサとブリッジＩＣとの間も、バスを介して接続される。
【０００３】
即ち、マイクロプロセッサは、コマンドやデータを発行しバスを介してブリッジＩＣに送信する。逆に、ブリッジＩＣからもマイクロプロセッサに、そのバスを介してブリッジＩＣの先に接続されるデバイスからのコマンドやデータを転送する。コマンドは、典型的には、リードとライトであり、それらコマンドにはリードの場合はアドレスが、ライトの場合はアドレスとデータが添付される。また、データは、リードコマンドに応答して読み出されたデータや、ライトコマンドに対応する書き込みデータなどである。
【０００４】
別の例では、マイクロプロセッサは、バスを介してメモリコントローラＩＣに接続され、メモリコントローラの先に接続されるメモリや別の処理ＬＳＩに対して読み出しや書き込みを行う。更に、マイクロプロセッサは、処理ＬＳＩから読み出しや書き込みを行われる。
【０００５】
図１は、従来のマイクロプロセッサとその周辺ＬＳＩとの間のバス制御を説明するための図である。図１（ａ）は、マイクロプロセッサＡとブリッジチップＢとの間の接続図であり、マイクロプロセッサＡが発行したコマンド（アドレスとリード／ライトを含む）がコマンドバス１０を介してブリッジチップＢに送信される。ブリッジチップＢは、例えばＩ／Ｏ装置やメモリコントローラなどに接続されるバス１００に接続される。
【０００６】
図１（ａ）のような構成において、マイクロプロセッサＡからチップＢに対してコマンドを発行する場合、チップＢ側がマイクロプロセッサＡからのコマンドを同時に４個まで処理できる能力があるとする。言い換えると、チップＢ内の受信用コマンドバッファの段数が４段であり、４つのコマンドまで同時に受信して保持できるとする。
【０００７】
マイクロプロセッサＡがチップＢに対して連続してコマンドを発行すると、チップＢは５個目のコマンドを処理できない。従って、チップＢは、マイクロプロセッサＡに対して、５個目のコマンドが受理できないということを通知する必要がある。その為に、従来は、チップＢが、内部に処理中のコマンドが４個あり、新たなコマンドを受け取れない状態になると、マイクロプロセッサＡに対してビジー信号BUSYを出力し、マイクロプロセッサＡによる新たなコマンドの発行を抑止する。
【０００８】
図１（ｂ）のタイムチャートに示されるストローブ信号STRBは、コマンドバス１０上のコマンド（アドレス、READ/WRITE等）が有効なサイクルであることを示すストロ−ブ信号である。マイクロプロセッサＡは、コマンドを送信するたびに、そのコマンドが有効であることを示すストローブ信号STRBを出力する。図中、サイクル１から４で４個のコマンド１〜４が、マイクロプロセッサＡからチップＢに連続して発行されているが、チップＢは４個目のコマンド４で内蔵するコマンドバッファが一杯になる。そこで、チップＢは、次のサイクル５からビジー信号BUSYをマイクロプロセッサＡに対して出力している。マイクロプロセッサＡは、サイクル５に同時に５個目のコマンドを発行しているが、ビジー信号BUSYにより、このコマンド５はチップＢが受け取っていないことを認識する。
【０００９】
【発明が解決しようとする課題】
この従来例では、チップＢが、その受信用のコマンドバッファが一杯になった次のサイクルからビジー信号BUSYを出力している。この方法は、動作周波数が遅い領域では可能であるが、動作周波数が高くなると、ビジー信号BUSYをコマンドバッファが一杯になった次のサイクルで出力することができなくなる。従って、マイクロプロセッサＡは、コマンドを発行したことに伴って、チップＢからビジー信号BUSYが出力されたかどうかを確認してからでないと、次のコマンドを発行できず、結局、マイクロプロセッサＡは、コマンド発行から１サイクル後にしか次のコマンドを発行できなくなる。
【００１０】
図１(b)のタイムチャートに示されるとおり、ビジー信号BUSYの出力が１サイクル遅れると、サイクル６からビジー信号BUSYが出力されるので、マイクロプロセッサＡは、サイクル５で出力した５個目のコマンド５がチップＢに受け取られたと認識してしまう。これを避けるため、図１（ｃ）のタイムチャートに示される通り、マイクロプロセッサＡは、コマンドを発行すると２サイクル後に次のコマンドを発行し、そのときのビジー信号BUSYの有無によってそのコマンドが受信されたか否かをチェックする。従って、マイクロプロセッサＡは、２サイクルに１回しかコマンドを発行できなくなり、バスの使用効率が下がってしまう。
【００１１】
上記の問題は、コマンドのバスに限らず、データバスにおいても同様に適用される。また、マイクロプロセッサＡからチップＢへのコマンドやデータの転送だけでなく、その逆方向のコマンドやデータの転送においても、同様の問題が存在する。
【００１２】
更に、両チップ間でコマンドやデータを転送する場合に、バスの使用権をどちらにすべきかのバスアービタ回路が必要になるが、上記従来の方式では、双方向のバスを利用するには不適切であり、バスの本数が２重に必要になるという問題を有する。
【００１３】
そこで、本発明の目的は、バスの使用効率を高めた新規なバス制御方式を提供することにある。
【００１４】
更に、本発明の別の目的は、バスの動作周波数が高速になっても、バスの使用効率を下げることなくコマンドやデータの発行、転送を行うことができるバス制御方式を提供することにある。
【００１５】
更に、本発明の別の目的は、双方向のバスをより効率的に使用することができるバス制御方式を提供することにある。
【００１６】
また、本発明の別の目的は、バースト転送におけるバスの効率的使用を可能にするバス制御方式を提供することにある。
【００１７】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、２つの集積回路装置（以下ＬＳＩ）間でコマンドまたはデータの転送を行う場合において、コマンドまたはデータの発行するＬＳＩ（発行側ＬＳＩ）が、そのコマンドまたはデータを受信するＬＳＩ（受信側ＬＳＩ）に対して、コマンドまたはデータを発行する時に、有効なコマンドまたはデータが送出されたことを示すストローブ信号を出力し、受信側ＬＳＩ側からコマンドを発行する側に対して、コマンド処理が完了した事を通知する信号（コマンドレディ信号）を出力する。
【００１８】
発行側ＬＳＩは、受信側ＬＳＩが何個のコマンドを同時に処理できるか、或いは何個のデータを同時に受信できるかを示す値が初期化時にロードされるカウンタとを有し、コマンドまたはデータを発行する時に、カウンタをデクリメントし、レディ信号を受信したときにカウンタをインクリメントし、カウンタが０になればコマンドまたはデータの発行を抑止する。従って、発行側ＬＳＩは、受信側ＬＳＩからのビジー信号を確認することなく、受信側ＬＳＩに対してコマンドやデータの発行をすることができる。
【００１９】
以上のとおり、コマンドまたはデータの発行側ＬＳＩが、受信側ＬＳＩのコマンドバッファまたはデータバッファの状態を管理できるので、バスが高速で動作するようになっても、効率よくコマンドまたはデータを発行することができる。
【００２０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。尚、実施の形態例では、マイクロプロセッサとブリッジＬＳＩの間のバス管理を例にして説明するが、本発明は、かかる組み合わせに限定されず、２つのＬＳＩ間のバス管理に広く適用することができる。また、以下の実施の形態例では、コマンドバスにコマンドと共にアドレスも転送しているが、アドレスはデータバスで転送されても良いし、独立したアドレスバスで転送されても良い。
【００２１】
［コマンド発行制御］
図２は、第１の実施の形態例であるコマンド発行制御を説明するための図である。図２（ａ）は、マイクロプロセッサＡとブリッジチップＢとの接続図、図２（ｂ）は、その動作タイミングチャートである。更に、図２（ｃ）はマイクロプロセッサＡとブリッジチップＢとでコマンドを相互に発行する場合の接続図である。また、図３は、図２（ａ）の詳細な構成図である。
【００２２】
図２（ａ）に示される通り、コマンドを発行する発行側ＬＳＩのマイクロプロセッサＡは、コマンド発行制御回路１２を有し、そのコマンド発行制御回路１２は、コマンドを受信する受信側ＬＳＩのブリッジチップＢが何個のコマンドを同時に処理できるかについての段数を保持する発行可能段数指示レジスタ１３と、カウンタ１８を有する。更に、コマンド発行制御回路１２は、更に、スイッチ１４，１５，１６と、コマンド発行抑止信号発生回路１９と、コマンド発行回路２０とを有する。各スイッチは、図示される論理条件の時にオンする。尚、図中〜（チルダ）は否定を意味する。
【００２３】
ブリッジチップＢは、従来例におけるビジー信号BUSYの代わりに、コマンドに対する処理を完了した時点で、コマンドレディー信号CMD_READYをマイクロプロセッサＡに対して出力する。このコマンドレディー信号CMD_READYは、マイクロプロセッサＡから発行されたコマンドを１つ処理完了する毎に、マイクロプロセッサＡに対して１サイクルだけ出力される。
【００２４】
マイクロプロセッサＡは、（１）初期化時に、スイッチ１４をオンにして、発行可能段数指示レジスタ１３の段数をカウンタ１８にロードし、（２）ブリッジチップＢに対してコマンドを発行すると、ストローブ信号CMD_STRBに応答してスイッチ１６をオンにして、そのカウンタ値をデクリメントし、（３）ブリッジチップＢからコマンドレディー信号CMD_READYを受け取ると、スイッチ１５をオンにして、カウンタ値をインクリメントする。ストローブ信号を発行し且つレディー信号を受信した場合と、ストローブ信号を発行せず且つレディー信号を受信しない場合は、カウンタ１８のカウント値は維持される。これらのインクリメントとデクリメントは、クロックに同期して制御される。
【００２５】
マイクロプロセッサＡは、カウンタ値が０になると、コマンド発行回路２０に対してコマンド発行抑止信号Ｓ１９を出力し、新規コマンドの発行を抑止する。コマンド発行抑止信号Ｓ１９は、発行抑止信号発生回路１９により生成される。コマンド発行回路２０は、コマンドの発行要求があると、コマンド発行抑止信号Ｓ１９が出されていない限り、新規コマンドの発行信号Ｓ２０を出力する。
【００２６】
具体的な動作について、図２（ｂ）のタイムチャートを参照して説明する。コマンドを受信する側のブリッジチップＢは、例えば４個のコマンドを同時に処理できるとする。つまり、ブリッジチップＢのコマンド受信バッファは４個のコマンドまで格納可能である。従って、マイクロプロセッサＡの発行可能段数指示レジスタ１３には４を設定しておく。パワーオンリセットなどの初期化時に、このレジスタ値４がカウンタ１８にロードされる。マイクロプロセッサＡは、サイクル２に１個目のコマンドをコマンドバス１０に発行し、同時にカウンタ１８はデクリメントされて３になる。サイクル５に４個目のコマンドを発行すると、カウンタ値は０になり、コマンド発行抑止信号Ｓ１９が生成され、次のサイクルからの新規コマンドの発行は抑止される。
【００２７】
サイクル８に、ブリッジチップＢが最初のコマンドレディ信号CMD_READYを出力している。サイクル８でマイクロプロセッサＡは、コマンドレディ信号CMD_READYにより、ブリッジチップＢのコマンドバッファが１つ空いた事を認識し（カウンタ値は１になり）、次のサイクル９に５個目のコマンドを発行している。従って、サイクル９において、カウンタ１８は、サイクル８のコマンドレディー信号CMD_READYによるインクリメントと、コマンドストローブ信号CMD_STRBによるデクリメントが同時に行われて、そのカウント値はそのままになっている。
【００２８】
サイクル９にもブリッジチップＢからコマンドレディ信号CMD_READYが出力されており、それを認識して、マイクロプロセッサＡはサイクル１０に６個目のコマンドを発行している。サイクル１１に３個目のコマンドに対するコマンドレディ信号CMD_READYが出力されているが、マイクロプロセッサＡは新規コマンド発行の予定がないので、カウンタ値がインクリメントされて１になっている。
【００２９】
タイムチャートには書いていないが、その後マイクロプロセッサＡがコマンドを発行しなければ、ブリッジチップＢは４個目から６個目のコマンドに対するコマンドレディ信号CMD_READYを３回出力する。そしてマイクロプロセッサＡはカウンタ１８を３回インクリメントして最初の状態に戻る。
【００３０】
図示される通り、コマンド発行抑止信号Ｓ１９は、サイクル６，７，８，１１において生成される。このタイムチャートでは、ブリッジチップＢがコマンドレディー信号CMD_READYを出力したサイクルで、マイクロプロセッサＡは、その信号を見て次のサイクルにコマンドを出力できるかどうかを判定している。しかし、バス１０が高速な周波数で動作するようになると、マイクロプロセッサＡはコマンドレディー信号CMD_READYを、ブリッジチップＢが出力したサイクルではなく、内部のフリップフロップで１段受けて、次のサイクルに認識しなければならなくなる。但しその場合でも、マイクロプロセッサＡのコマンド発行が１サイクル遅くなるだけで、バスのプロトコル上問題は生じない。
【００３１】
従って、上記のバス１０が高速周波数で動作する場合でも、コマンド１から４までは連続するサイクルで発行される。但し、サイクル９でのコマンド５の発行は、サイクル１０にずれることになる。それに伴い、コマンド６は、その後２サイクル後に発行される。それでも従来例よりは、バス１０の使用効率は高くなっていることが理解される。
【００３２】
図３の詳細構成図に示されるとおり、マイクロプロセッサＡは、ＣＰＵコア２１とバス制御部２２とを有する。バス制御部２２は、コマンド系制御部２３とデータ系制御回路２５を有し、コマンド系制御部２３が、上記のコマンド発行制御回路１２と発行用コマンドバッファ２４とを有する。コマンド発行制御部１２は、図２で説明したのと同じ構成である。
【００３３】
コマンド発行制御回路１２は、コマンド出力指示信号Ｓ２０を発行用コマンドバッファ２４に供給して、コマンドをコマンドバス１０に発行させる。そのとき、コマンド発行回路２０は、コマンドストローブ信号CMD_STRBを同時に出力する。このコマンド出力指示信号Ｓ２０は、コマンド発行抑止信号Ｓ１９が出されていない限り、新規コマンド発行要求に応答して生成される。コマンドを発行すると、クリア信号ＣＬによりコマンドバッファ２４の対応するコマンドは削除される。
【００３４】
受信側であるブリッジチップＢは、バス制御部２２Ｂと、ブリッジコア３０と、更に下位のバスに対するバスインターフェース３２とを有する。バス制御部２２Ｂは、コマンド系制御部２３Ｂとデータ系制御部２５Ｂとを有し、コマンド系制御部２３Ｂは、受信コマンドバッファ２６及びコマンド処理部２８を有する。受信コマンドバッファ２６は、コマンドストローブ信号CMD_STRBを受信する時に、コマンドバス１０のコマンド信号を有効コマンド信号として取り込み、コマンド処理部２８の転送指示Ｓ２８に応答して、ブリッジコア３０にそのコマンドを転送する。また、コマンド処理部２８は、コマンドの処理が完了すると、コマンドレディ信号CMD_READYを、マイクロプロセッサＡに発行する。
【００３５】
図２(a)では、チップＡからチップＢの一方向にのみコマンドを発行する。例えばチップＡがCPUで、チップＢがCPUのアクセスを異なるバスへブリッジするようなブリッジLSIの場合は、通常ブリッジLSI側からCPUへコマンドが発行される事はないので、このような一方向のみコマンドが発行できるようになっていればよい。しかし、チップＢからチップＡに対してもコマンドが発行される場合は、図２(c)に示されるように、チップＢが、図２（ａ）で示した制御信号をもう１セット追加すればよい。それに伴い、チップＢにも、チップＡと同じコマンド発行制御部１２Ｂ、発行用コマンドバッファ２４Ｂなどが設けられる。
【００３６】
即ち、コマンドストローブ信号、コマンドレディー信号、コマンドバスは、それぞれ２セット必要になる。特に、コマンド信号はアドレスを含むので、チップＡからチップＢ、チップＢからチップＡの相互に信号線を設けると、トータルの信号線の数が多くなってしまう。
【００３７】
図４は、第１の実施の形態例の変形例を示す図である。図２に示した例では、受信側ＬＳＩであるブリッジチップＢが、コマンドレディー信号CMD_READYを出力するのは、コマンドに対する処理が終了した時である。しかし、ブリッジチップＢがコマンドレディ信号CMD_READYを出力するタイミングは、受信したコマンドを完全に処理し終わったタイミングではなく、処理完了から所定のサイクル先行するタイミングでも良い。所定のサイクルとは、コマンドレディ信号CMD_READYが送信側LSIに届いて認識されるまでに要するサイクル、或いは、送信側LSIがコマンドレディ信号CMD_READYを認識して次のコマンドを発行しそれが受信側LSIに届くまでに要するサイクルである。受信側ＬＳＩは、そのサイクル数分を見込んで、早めにコマンドレディ信号CMD_READYを出力しても構わない。そのようにすることにより、よりバスの使用効率を上げることができる。
【００３８】
図４（ａ）は、両チップＡ，Ｂの接続図である。高速周波数により動作サイクルが短くなることに伴い、各チップＡ，Ｂの出力と入力にはフリップフロップFFがそれぞれ設けられる。チップＡ内のコマンド制御部２３は、内部ストローブ信号n_STRB_Aと共に内部コマンド信号n_COMMANDを一旦フリップフロップFFにラッチさせ、次のクロックサイクルでチップＢに発行する。チップＢでも、そのクロックサイクルで入力フリップフロップFFに取り込み、次のサイクルでコマンド制御部２３Ｂに転送される。そして、チップＢのコマンド制御部２３Ｂは、コマンド処理が完了する数サイクル前に、内部コマンドレディー信号n_CMD_READY_Bを生成し、同様にフリップフロップを介してチップＡに供給する。
【００３９】
図４（ｂ）は、チップＢがコマンドの処理完了時にコマンドレディ信号CMD_READY_Bを発行する場合のタイムチャートである。チップＢはサイクル６でコマンドレディ信号CMD_READY_Bを発行しているが、各フリップフロップにより１サイクルずつ遅延するため、チップＢが次のコマンドを受け取って処理を開始するタイミングはサイクル９になる。
【００４０】
図４（ｃ）は、チップＢがコマンドの処理完了の３サイクル前にコマンドレディー信号CMD_READY_Bを発行する例である。これにより、チップＢは、前のコマンドの処理が完了するサイクル５の次のサイクルで、次のコマンドの処理を開始することができる。
【００４１】
［コマンドバス制御］
図５は、第２の実施の形態例であるコマンドバス制御を説明する図である。図２（ｃ）に示した双方向のコマンドバスを設ける例は、バス線の数が膨大になる。図５では、コマンドバスCommandを双方向の信号バスとして、コマンドバスをチップＡからＢの方向と、チップＢからＡの方向で共有する。その結果、コマンドバスのバス使用権の制御が必要になる。
【００４２】
図５（ａ）は、マイクロプロセッサＡとブリッジチップＢとの接続図である。コマンドバス１０を双方向バスとしたことに伴い、チップＢからチップＡへのリクエスト信号REQUESTと、チップＡからチップＢへのグランド信号GRANTが追加されている。更に、チップＡは、双方向のコマンドバス１０の使用権を調停するアービタ回路３５を搭載している。
【００４３】
図５（ｂ）のタイミングチャートを参照して、動作を説明する。通常時は、チップＡがコマンドバスの使用権を持ち、チップＡは必要なときに、コマンドストローブ信号STRB_Aと同時にコマンドバス１０にコマンドA1を出力する（サイクル２）。チップＢがコマンドを出力したいときは、まずリクエスト信号REQUESTを１サイクルだけ出力する（サイクル４）。チップＡはリクエスト信号REQUESTを認識すると、自分（チップＡ）がコマンドバス１０を使う予定がなければグランド信号GRANTをチップＢに出力する。タイムチャートでは、チップＡは、次のサイクル５でグランド信号GRANTを出力している。チップＢは、グラント信号GRANTを受信すると、次のサイクル６でコマンドバス１０にコマンドB1を出力する（サイクル６）。
【００４４】
チップＢが連続してコマンドを発行したい場合は、そのコマンドの数の分だけリクエスト信号REQUESTを出力し、チップＡも同じ数だけグラント信号GRANTを出力する。タイムチャートでは、チップＢがサイクル６とサイクル８にリクエスト信号REQUESTを出力し、サイクル８，９の２サイクルで、チップＡはグラント信号GRANTを出力している。チップＢは、それに応答してサイクル１０，１１の２サイクルで、コマンドバス１０にコマンドＢ２，Ｂ３を出力している。
【００４５】
上記のバス権の制御を行うアービタ回路の具体例が、図５（ａ）に示されている。アービタ回路３５は、バス制御部３６と内部グラント信号n_GRANTをラッチしてグラント信号GRANTを出力するフリップフロップFFとを有する。また、制御部３６は、コマンド発行制御回路１２からの発行要求信号Ｓ２０に基づいて、チップＡがコマンドを発行していない時にグラント信号を生成し、コマンド発行制御回路１２には発行抑止信号Ｓ３６を供給する。
【００４６】
バス制御部３６は、グラント信号の数をカウントするカウンタ３８を有する。リセット時このカウント値は０である。チップＢからのコマンドリクエスト信号REQUESTを受信すると、グラント信号が発行されていなければ（図中〜n_GRANT）、スイッチ３９をオンにしてカウンタ３８をインクリメントする。また、チップＡがグラント信号GRANTを発行すると、リクエスト信号を受信していなければ、スイッチ４０を介してカウンタ３８をデクリメントする。そして、リクエスト信号を受信し且つグラント信号を発行した場合と、受信も発行もしない場合は、カウンタ３８のカウント値は維持される。即ち、カウンタ３８は、グラント信号を返していないリクエスト信号の合計値を有する。リクエスト信号が１サイクルしか発行されないので、チップＡはその数をカウンタ３８に記録しておく必要がある。このカウンタのインクリメントとデクリメントも、システムクロックに同期して行われる。
【００４７】
そして、ＯＲ／ＡＮＤゲート４２により、カウンタ３８のカウンタ値req_sumが０でない場合で、コマンド発行制御回路１２が発行要求信号Ｓ２０を出していない場合は、グラント信号n_GRANTを生成してコマンドバス１０の使用権をチップＢに与える。その場合、その後のチップＡからのコマンドの発行を禁止するために、発行抑止信号Ｓ３６をコマンド発行制御回路１２に供給する。また、カウンタ３８のカウンタ値が０であっても、リクエスト信号REQUESTを受信すると、発行要求信号Ｓ２０が出ていなければ、即座にグラント信号n_GRANTを生成し、フリップフロップ及びＮＯＲゲートからなる回路４３を介して発行抑止信号Ｓ３６も生成する。
【００４８】
図５（ｂ）に示される通り、サイクル５，６，７の３サイクル期間Δｔにおいて、発行抑止信号Ｓ３６が発生し、チップＡからのコマンドの発行が禁止される。バスファイトを防止するために、３サイクル期間の真ん中のサイクル６でチップＢがコマンドを発行し、その前後のサイクルでのチップＡからのコマンド発行は禁止される。
【００４９】
以上の通り、バスアービタ回路３５は、チップＡにバス１０の使用権を優先的に与え、チップＡがコマンドバス１０を使用していな場合にのみ、チップＢからのリクエスト信号に応答してバス使用権を与える。
【００５０】
上の例では、チップＡのアービタ回路３５は、自分がコマンドを出力する予定の無いときにグラント信号GRANTを出力するが、逆に、リクエスト信号REQUESTを検出すると、自分が出力したい場合でも、グラント信号GRANTを出してチップＢのバス使用を優先してもよい。チップＢからのアクセスを優先する場合は、チップＢがリクエスト信号REQUESTをアサートすれば、次のサイクルに必ずチップＡはグラント信号GRANTを出力するので、チップＡからのグラント信号GRANTを省略することもできる。
【００５１】
図６は、図５（ａ）の詳細なＬＳＩの構成図である。図３に示したコマンド系制御回路２３内に、バスアービタ回路３５が設けられている。
【００５２】
図６に示される通り、バスアービタ回路３５は、図２で示したコマンド発行制御回路１２と共にチップＡに設けられる。バスアービタ回路３５が、双方向コマンドバス１０のバス使用権の制御を行い、コマンド発行制御回路１２が、チップＢ側のコマンド制御を行う。従って、コマンド発行制御回路１２がコマンド発行を抑止している期間は、リクエスト信号に応答してグラント信号が発行されて、チップＢにバス使用権が与えられる。
【００５３】
図６には、チップＡ側にコマンド発行部と受信部が設けられ、チップＢ側にもコマンド発行部と受信部が設けられる。そして、チップＡ側にのみ、バスアービタ回路３５が設けられる。それぞれのコマンド発行部は、発行用コマンドバッファ２４、２４Ｂとコマンド発行制御部１２、１２Ｂを有し、それぞれのコマンド受信部は、受信コマンドバッファ２６，２６Ａとコマンド処理部２８，２８Ａを有する。それぞれの機能は、図３で説明した通りである。
【００５４】
［データ発行制御（データバッファの制御）］
上記では、コマンドの発行制御と双方向性コマンドバスの使用権の制御について説明した。同様の制御が、データに対しても適用できる。発行側ＬＳＩから受信側ＬＳＩにデータを発行する場合、受信側ＬＳＩが同時に受信できるデータ量やデータ段数を発信側ＬＳＩが管理することにより、高速周波数においても、バスの使用効率を上げることができる。また、双方向性コマンドバスの場合は、バスアービタが必要になる。
【００５５】
図７は、第３の実施の形態例であるデータ発行制御を説明する図である。図７（ａ），（ｂ）は、図２（ｃ），（ｂ）に対応する図である。図７（ａ）の接続図に示される通り、マイクロプロセッサＡは、図２に示したコマンド発行制御回路１２に加えて、同様の構成のデータ発行制御回路１１２を有する。同様に、ブリッジチップＢも、コマンド発行回路１２Ｂに加えて、同様の構成のデータ発行制御回路１１２Ｂを有する。
【００５６】
このデータ発行制御回路１１２も、チップＢが同時に受信できるデータバッファのデータ段数を有するデータ段数指示レジスタ１１３と、リセット時にそのデータ段数がセットされるカウンタ１１８と、カウンタ値が０の時にデータ発行抑止信号Ｓ１１９を発生する発行抑止信号生成回路１１９と、データ発行抑止信号Ｓ１１９がない時に、データ発行信号Ｓ１２０を生成するデータ発行回路１２０とを有する。図７（ｂ）にその動作を示すタイミングチャートが示される。この動作は、図２（ｂ）と同じである。
【００５７】
図８は、図７におけるマイクロプロセッサとブリッジチップの詳細構成図である。図８には、コマンド系制御回路２３，２３Ｂに加えて、データ系制御回路２５，２５Ｂが示される。チップＡ側のデータ系制御回路２５は、送信部に図７に示したデータ発行制御回路１１２と、送信用データバッファ１２４とを有し、データ発行制御回路１１２の発行指令信号Ｓ１２０に応答して、データバッファ１２４内のデータData_Aが発行される。そのとき、データ発行制御回路１１２は、データストローブ信号DT_STRB_Aを同時にアサートする。チップＢの受信データバッファ１２６は、発行されたデータData_Aをデータストローブ信号DT_STRB_Aがアサートされている時に受信し、保持する。そして、データ処理部１２８の転送指令Ｓ１２８に応答してブリッジコア３０側に転送する。また、データ処理部が、データの処理を完了してデータレディー信号DT_READY_Bを発行すると、データバッファ１２６内のデータは削除される。
【００５８】
上記と全く逆の制御が、チップＢ内のデータ系制御部２５ＢとチップＡ内のデータ系制御部とで行われる。
【００５９】
［データバス使用権の制御］
図９は、第４の実施の形態例であるデータバス制御を説明する図である。この例では、データバスDataが双方向性になっている。従って、チップＡのバス制御部２２内に、バスアービタ回路１３５が設けられる。このバスアービタ回路１３５は、図３、６で示したコマンドバスのアービタ回路３５と同じ構成である。
【００６０】
即ち、バスアービタ回路１３５は、チップＢからデータリクエスト信号DT_REQUEST信号が発行されると、カウンタ１３８はインクリメントされ、それに応答して、チップＡがデータの発行予定がない場合にチップＡがデータグラント信号DT_GRANTを発行すると、カウンタ１３８はデクリメントされる。そして、ＯＲ／ＡＮＤゲート１４２により、カウンタ値が０でないであって、データ発行制御回路１１２からデータ発行要求Ｓ１２０がない場合は、グラント信号GRANTが発行され、データ発行制御回路１１２に発行抑止信号Ｓ１３６が供給される。これにより、チップＢにデータバスの使用権が与えられる。
【００６１】
このデータバス制御の動作は、図５（ｂ）のコマンドバス制御の動作と同じである。
【００６２】
図１０は、チップＡとチップＢとが双方向性のコマンドバスとデータバスを共有する場合の構成図である。バス１０は、コマンドとデータが共に双方向に転送されるバスである。それに伴い、リクエスト信号REQUESTと、グラント信号GRANTと、ストローブ信号STRB_A,Bも、データとコマンドで共用される。チップＡからチップＢにコマンドまたはデータを発行する時は、ストローブ信号STRB_Aがアサートされ、チップＢからチップＡにコマンドまたはデータを発行する時は、ストローブ信号STRB_Bがアサートされる。また、お互いの受信コマンドバッファと受信データバッファの制御のために、コマンドレディー信号CMD_READY_A,Bと、データレディー信号DT_READY_A,Bとが発行される。そして、双方向バスのバス権制御のために、チップＢがリクエスト信号REQUESTを発行し、チップＡがグラント信号GRANTを発行する。
【００６３】
チップＡ内のバスアービタ回路１３５は、図９に示したアービタ回路と同じであるが、グラント信号GRANTを発行する時に発行抑止信号Ｓ１３６が、コマンド発行制御回路１２とデータ発行制御回路１１２の両方に与えられる。また、コマンド発行制御回路１２からの発行要求信号Ｓ２０とデータ発行制御回路１１２からの発行要求信号Ｓ１２０とが、ゲート１４２に与えられ、それらの発行要求信号が共にないときに、グラント信号GRANTが発行される。
【００６４】
また、図１０の例では、コマンドとデータが同じバスに発行されるので、いずれの信号であるかを示すフェーズ信号PHASEが加えられている。コマンドまたはデータを発行する側のチップが、このストローブ信号と共にこのフェーズ信号も発行する。このフェーズ信号に従って、受信側のチップは、対応する受信バッファにコマンドまたはデータを格納する。
【００６５】
［データのアクセスタイプ］
図１１は、第５の実施例であるデータにアクセスタイプ信号を付加した例の接続図である。本出願にかかるマイクロプロセッサは、ブリッジチップとの間で、複数のコマンドをそれに対応する処理の確認を受信することなく発行する。但し、受信側のブリッジチップの受信コマンドバッファが一杯になるまでしか発行しない。また、同様にマイクロプロセッサは、複数のデータを受信側のチップに、受信側のデータバッファが一杯になるまで発行する。
【００６６】
図７，８，９，１０に示された例では、データバスでデータを転送するときに、そのデータがどのコマンドに対応するものであるかを特に示していない。従って、コマンドバスにコマンドが発行された順序通りに、対応するデータがデータバスに出力されることを、暗黙のルールとしている。
【００６７】
例えば、チップＡからチップＢへのリードコマンド、チップＢからチップＡへのライトコマンドの順にコマンドが発行される仮定する。その場合、データの転送方向はどちらもチップＢからＡになるが、チップＡは、チップＢから転送されるデータを正しく取り込むためには、コマンドの順序通りに、リードコマンドのリプライデータ、ライトコマンドのライトデータの順で転送してもらわなければならない。しかし、チップＢ側から見れば、チップＡからのリードコマンドのデータをそろえるためには、場合によっては、更に別のLSIに対してコマンドを発行してそのリプライを待たねばならず、リプライデータをそろえるのに時間がかかってしまう。一方、ライトデータの方は、ライトコマンドをチップＡに対して発行した時点で、チップＢ内で通常はデータがそろっているので、先に発行されたリードコマンドのデータがそろうのを待っているのは無駄である。
【００６８】
図１２（ａ）は、その具体的な動作タイミングチャート図である。ここに示した例は、チップＡがチップＢにリードコマンドをそれぞれ発行し、チップＢがチップＡにライトコマンドをそれぞれ発行する例であり、その場合は、リードコマンドに応答するリードデータもライトコマンドに添付して転送されるライトデータも共にチップＢからチップＡに転送されることになる。従って、従来はどちらのデータか区別が付かないので、コマンドが発行された順番で、対応するデータが転送される。
【００６９】
従来の方法では、図１２（ａ）に示される通り、サイクル１と５でチップＡがチップＢにリードコマンドRead1,2を発行し、サイクル３，７，８でチップＢがチップＡにライトコマンドWrite1,2,3を発行する。チップＢは、ライトコマンドWrite1に伴ってサイクル３でライトデータＷ１を転送しようとしても、先に発行されたリードコマンドRead1に対応するリードリプライデータＲ１が準備できていないので、転送することができない。そして、サイクル１０になってようやくリードリプライデータＲ１が転送された後、チップＢがチップＡにライトデータＷ１を転送する。ライトコマンドWrite2,3に対応するライトデータＷ２，Ｗ３についても、同様にサイクル１４でリードリプライデータＲ２がチップＢから転送された後に、転送される。その結果、ライトコマンドに対するデータの転送が遅くなり、処理の効率が遅くなる。
【００７０】
そこで、本実施の形態例では、図１１（ａ）に示すように、データバス信号として、転送しているデータDataがリードリプライデータなのか、ライトデータなのかを表示するアクセスタイプ信号TYPEが追加される。従来コマンドの発行順序通りにデータの転送順序を守る必要があったのに対し、本実施の形態例では、このアクセスタイプ信号により、リードコマンド同士、ライトコマンド同士でデータの転送順序を守れば良いことになる。即ち、リードコマンドに対するリードリプライデータは、リードコマンド発行順にデータ転送を行い、ライトコマンドに対するライトデータも、ライトコマンド発行順にデータ転送を行う。但し、アクセスタイプ信号をデータに添付することで、リードとライトとの間の順番の制約をなくすことができる。
【００７１】
図１２（ｂ）に、上記アクセスタイプ信号TYPEを追加した例を示す。アクセスタイプ信号TYPEが０であればライトデータ、１であればリードリプライデータである。この例においても、図１２（ａ）と同様にチップＡからチップＢにリードコマンドが発行され、チップＢからチップＡにライトコマンドが発行される。そして、サイクル３で発行されたライトコマンドWrite1に対応するライトデータＷ１が、アクセスタイプ信号TYPE＝０と共に、サイクル５でチップＢからチップＡに発行される。同様にサイクル７，８で発行されたライトコマンドWrite2,3に対応するライトデータＷ２，Ｗ３は、サイクル９，１１でそれぞれチップＢから発行される。その結果、ライトデータは、リードリプライデータの発行を待つことなく発行されるので、ライトコマンドに対する処理の効率を高くすることができる。そして、ライトデータの転送が早くなりライトコマンドの処理が早まれば、受信コマンドバッファの領域がその分早く開放され、次のコマンドの発行も早くなり、バス効率を高めることができる。
【００７２】
図１１（ａ）に示される通り、それぞれのチップは、受信用データバッファとして、リード用データバッファ50,50Bと、ライト用データバッファ51,51Bとを有し、同時に供給されるタイプ信号TYPEに従って、データバッファ上のデータが分配される。
【００７３】
図１１（ｂ）は、データバスDataをチップＡとチップＢとで共用する双方向性バスにした例である。この場合も、データバスにはアクセスタイプ信号を添付し、但し、データバスの使用権の制御のために、チップＡ側にバスアービタ回路を設ける。このバスアービタ回路は、前述した通りである。
【００７４】
図１１（ｃ）は、更に、コマンドバスとデータバスをと共用し且つ双方向性にした例である。この場合も、バスにはアクセスタイプ信号を追加し、そして、図１０と同様に、フェーズ信号PHASEを追加して、バスに発行されたのがコマンドであるかデータであるの情報を付加する。
【００７５】
［デフォルトバスマスタ］
図９，１０，１１などに示した例では、コマンドバス、データバスともにそのバス使用権を制御するアービタ回路がチップＡ側にあり、チップＡは、コマンドバスもデータバスも使用したいときには、そのバスが空いていればすぐに使用できるが、チップＢは毎回リクエスト信号をチップＡに出力してグラント信号を受けなければそれらのバスを使用できない。
【００７６】
例えばチップＡがCPUなどのマイクロプロセッサであり、チップＢがブリッジLSIのようなケースでは、マイクロプロセッサＡが発行したリードコマンドに対するリプライをできるだけ速くすることが、チップセット全体の性能向上につながる。
【００７７】
上記の例では、マイクロプロセッサＡはブリッジチップＢに対してコマンドをオーバーヘッドなしにすぐに発行できるが、ブリッジチップＢがマイクロプロセッサＡにリードリプライデータを転送するときには、データバスに対するリクエストを出してグラントを受けてからでないと、転送できない。従って、ブリッジチップＢにとって、データ転送時にそのオーバヘッドがかかってしまう。
【００７８】
図１３は、第６の実施の形態例であるチップセットのコマンドバスとデータバスの優先権を互いに持ち合うようにした例の接続図である。図１３には、詳細な構成は示されていない。しかし、前述の詳細構成図を参照すれば、それぞれのチップＡ，Ｂの構成を理解することができる。
【００７９】
本実施の形態では、図１３に示される通り、コマンドバスアービタ回路３５をチップＡに設けて、コマンドバス１０Ｃの優先権はチップＡに持たせ、データバスアービタ回路１３５ＢをチップＢに設けて、データバス１０Ｄの優先権はチップＢに持たせる。即ち、コマンドバス１０Ｃのデフォルトバスマスタ（通常時にバス使用権を持っているLSI）をチップＡにし、データバス１０ＣのデフォルトバスマスタをチップＢにしておくことにより、マイクロプロセッサＡがブリッジチップＢに対して発行したリードコマンドは、コマンド発行時とデータ転送時ともに、バス使用権についてアービトレーションのためのオーバヘッド無しに処理することができる。
【００８０】
ブリッジLSIからCPUに対してリードコマンドを発行した場合は、コマンド発行時、データ転送時ともアービトレーションが必要になるが、この様なアクセスは稀なので性能には影響しない。その場合は、チップＡのコマンドバスアービタ３５は、チップＢのコマンド発行制御部１２Ｂからのコマンドリクエストに応答して、チップＡがコマンドを発行しない時は、コマンドグラント信号を発行すると共に、コマンド発行制御回路１２に発行抑止信号Ｓ３６を出力する。一方、チップＢのコマンド発行制御回路１２Ｂは、コマンドグラント信号に応答して、コマンド発行信号Ｓ２０を図示しないコマンド発信バッファに与える。
【００８１】
逆に、チップＢのデータバスアービタ135Bは、チップＡのデータ発行制御部112からのデータリクエストに応答して、チップＢがデータを発行しない時は、データグラント信号を発行すると共に、データ発行制御回路112Bに発行抑止信号S136を出力する。一方、チップＡのデータ発行制御回路１１２は、データグラント信号に応答して、データ発行信号S20Aを図示しないデータ発信バッファに与える。
【００８２】
［データバスのバースト転送（バス使用期間制御）］
ＬＳＩ間のデータ転送の場合、コマンドと異なり、まとまったデータを連続して転送するバースト転送が必要になる。バースト転送を実現するためには、バス使用権の制御に加えて、複数サイクルにわたるバス使用期間の制御が必要になる。更に、後述する受信側のデータバッファ制御も必要である。
【００８３】
図１４は、第７の実施の形態例におけるバースト転送時のバス使用権制御を行うバスアービタの構成図である。この例は、バースト転送を行うために、コマンドバス１０Ｃにサイズ信号SIZEを加える。それ以外は、コマンド系のバスや制御信号と制御回路は、図６に示した構成であり、データ系のバスや制御信号と制御回路は、図９に示した構成である。そして、データバス１０Ｄには、図１１（ｂ）で示したデータタイプ信号TYPEが付加され、リードとライトの区別が転送されるデータに付加されている。
【００８４】
双方向のデータバス１０Ｄの場合は、前述した通りバスアービタ回路１３５により、バス使用権の管理が必要になる。チップＡ側にバスアービタ回路１３５を設け、デフォルトでチップＡ側にバス使用権を持たせ、チップＢがデータバスにデータを発行したい場合は、発行要求としてデータリクエスト信号DT_REQUESTを発行し、バスアービタ１３５からデータグラント信号DT_GRANTを受け取ってから、チップＢはデータの転送を行う。その場合、バースト転送を行う場合は、転送データサイズをバス幅で割ったバースト長のサイクルだけ、バスの使用権を継続させる必要がある。これがバス使用期間である。同様に、チップＡからチップＢへのバースト転送の場合も、かかるバス使用期間の制御が必要になる。但し、その場合にバス使用権のアービトレーションは不要である。
【００８５】
データバスアービタ１３５は、図９のデータバス制御で説明したバス使用権制御回路６２に加えて、バス使用期間制御回路６０を有する。このバス使用期間制御回路６０は、バースト転送される時にコマンドに付加されたサイズ信号SIZEを記録するサイズバッファ６３と、そのサイズをバースト転送開始時にロードするバーストカウンタ６７と、そのカウンタ値が０でない間、インヒビット信号Ｓ６８を出力するインヒビット信号生成回路６８とを有する。サイズバッファ６３は、チップＢからのバースト転送サイズを記録するバッファ６３Ｂと、チップＡからのバースト転送サイズを記録するバッファ６３Ａとを有する。
【００８６】
さて、チップＢからのバーストサイズ（或いはデータサイズ／バス幅）sizeBは、データグラント信号のプレ信号n_DT_GRANTが発行された時にスイッチ６４を介してバーストカウンタ６７に−１されてロードされる。そして、次のクロックサイクルからインヒビット信号Ｓ６８が出ている間、クロックＣＬＫに同期してスイッチ６６によりデクリメントされる。バーストサイズ分のデータ転送が終了するとバーストカウンタ６７が０になり、インヒビット信号Ｓ６８はなくなる。
【００８７】
チップＡからのバーストサイズsizeAは、データストローブ信号のプレ信号n_DT_STRB_Aが発行された時にスイッチ６５を介してバーストカウンタ６７に−１されてロードされる。その後のカウンタのデクリメント動作は、上記と同じである。
【００８８】
このバースト転送期間の間、バス使用権を継続するために、インヒビット信号Ｓ６８は、バス使用権制御回路６２のＯＲ／ＡＮＤゲート１４２にも与えられる。従って、インヒビット信号Ｓ６８が生成されている間は、データグラント信号DT_GRANTの発生は、禁止される。発行抑止信号Ｓ１３６は、発行抑止生成回路１４３により以下のようにして生成される。まずサイズバッファ６３ＢからのサイズsizeBに＋１した値が、プレ信号n_DT_GRANTが有効なタイミングにカウンタ１４４にロードされる。カウンタ１４４は、値が０になるまで毎サイクルデクリメントされる。カウンタ値が０でないサイクルとプレ信号n_DT_GRANTが有効なサイクルに発行抑止信号Ｓ１３６がNORゲート１４５から出力される。それ以外のバスアービトレーションは、図９の例と同じである。
【００８９】
図１５は、第７の実施の形態例の動作を示すタイミングチャート図である。この例では、サイクル１にチップＡがコマンドＡ１を出力している。同時にサイズ信号SIZEを出力している。このデータサイズは16B（バイト）になっているが、データバス幅が8B(８バイト=64bit）とすると、このコマンドに対応するデータのバーストサイズは２であり、２サイクルを要することになる。また、サイクル３にチップＢがコマンドＢ１を出力している。このときのサイズは32Bである。その後、サイクル６にチップＡが8BサイズのコマンドＡ２を出力している。上記コマンドは、いずれもライトコマンドとする。
【００９０】
データバス１０Ｄの方は、サイクル４から５の２サイクル間、最初のコマンドA1に対応するデータD1,D2を出力している。チップＢは、サイクル４にデータリクエスト信号DT_REQUESTを出力しているが、チップＡは、データを出力中でありインヒビット信号Ｓ６８が発生中なので、１サイクル遅れてサイクル６にデータグラント信号DT_GRANTを出力している。チップＢは、それに応答して、次のサイクル６から４サイクル間データd1〜d4を出力している。最後から２番目のデータを出力しているサイクルまで、インヒビット信号Ｓ６８が発生している。そして、チップＡは、コマンドA2に対応するデータを出力しようとしても、チップＢがデータバスを使っているのですぐにはデータを出力できない。発行抑止信号生成回路１４３のカウンタ１４４には、サイクル５のプレ信号n_DT_GRANTにより、チップBのデータのバースト長４に１を加えた値（＝５）がサイクル６にロードされる。このカウンタ１４４は毎サイクルデクリメントされ、サイクル１１に０になる。プレ信号n_DT_GRANTが有効なサイクル５からカウンタ値が０になる直前のサイクル１０までの６サイクル間、発行抑止信号Ｓ１３６が出力される。チップＡは発行抑止信号がネゲートされるサイクル１１の次のサイクル１２に、コマンドＡ２に対応するデータＤ１を出力する。
【００９１】
このようにコマンドと同時に、そのデータサイズを示すサイズ信号SIZEを同時に出力することにより、バースト転送中のバス使用権を維持することができ、バースト転送を可能にすることができる。
【００９２】
［バースト転送での受信データバッファ制御］
バースト転送を可能にすることにより、データ転送のデータ量がその都度変わることになる。従って、受信チップ側の受信データバッファの制御も考慮しなければならない。最も単純な方法は、バースト長にかかわらず１つのコマンドに対するデータ転送の最大サイズを設定し、その設定サイズの受信データバッファを複数段設け、図７で説明したデータ段数により受信データバッファの制御を行うことである。これが第１の受信データバッファ制御である。
【００９３】
例えば、１回のバースト転送のサイズの上限を64バイトとする。データバスのバス幅を８バイト（64ビット）とすると、最大バースト長は８サイクルである。その場合、図１４のチップＢ内に示される通り、受信データバッファ１２６を、６４バイト単位で複数段構成（図中は４段）とする。そして、１つのコマンドに対応するデータ転送を、それぞれのバッファに格納する。つまり、シングルデータ転送であろうが、バースト転送であろうが、各段の受信データバッファ１２６を割り当てて占有する。
【００９４】
この場合は、図１４に示したデータ発行制御回路１１２によって、受信データバッファの制御を行うことができる。このデータ発行制御回路１１２は、図７の制御回路と同じ構成である。つまり、受信データバッファ１２６の段数がレジスタ１１３に格納され、リセット時にデータ段数カウンタ１８にロードされる。そして、その後は、データストローブ信号の発行によりデータ転送が行われる毎に、カウンタがデクリメントされ、転送したデータの処理が終了してデータレディ信号を受信する毎に、カウンタがインクリメントされる。受信データバッファ１２６が４段すべて使用されると、それ以降のデータ発行は抑止される。バースト転送をする場合も、バースト転送をしない場合も、制御は同じである。
【００９５】
チップＡからチップＢへのデータ転送も、チップＢからチップＡへの転送も同様の機構を持つことで実現できる。
【００９６】
次に、第２の受信データバッファ制御方法を説明する。上記の第１の受信データバッファ制御方法では、１バイトのデータを転送するのにも64バイト分のデータバッファを使うので、受信データバッファの使用効率が悪い。これを改善する方法として、転送するデータサイズに応じて、受信データバッファをバイト単位で制御を行う第２の制御方法を、図１６の構成図と動作タイムチャートを用いて説明する。
【００９７】
図１６（ａ）は、データ発行制御回路１１２の構成図である。この回路は、図１４のデータ発行制御回路に代わって、チップＡに設けられる。データバッファサイズレジスタ２１３には、チップＢ側の受信データバッファのサイズが格納され、リセット時にカウンタ２１８にロードされる。そして、データを転送する毎にデータの送信サイズＳ２１４がデクリメントサイズレジスタ２１４に格納され、そのサイズがカウンタ２１８からデクリメントされる。また、チップＢからデータレディ信号DT_READY_Bを受信する毎に、処理が終了したデータサイズＳ２１５を、カウンタ２１８にインクリメントする。プレ信号n_DT_STRB_Aとデータレディ信号DT_READY_Bが同時に有効になった場合は、差分計算器２１７で、（現在のカウンタ値−デクリメントサイズ＋インクリメントサイズ）が計算され、カウンタ２１８に格納される。つまり、カウンタ２１８がチップＢの受信データバッファの残っているサイズを示す。そして、比較回路２１９でカウンタサイズが送信サイズと比較され、送信サイズが大きい場合は発行抑止信号Ｓ１１９が生成される。また、送信サイズがカウンタサイズより小さい限りは、受信データバッファに空き領域があるので、データの転送が許可される。この方法により、受信データバッファを有効に利用することができる。
【００９８】
図１６（ｂ）は動作の一例を示すタイミングチャート図である。例えばチップＡはコマンドバス１０Ｄに、サイクル１に４ＢサイズのコマンドA1、サイクル２にも４ＢサイズのコマンドA2、サイクル３に８ＢサイズのコマンドA3、サイクル４に16ＢサイズのコマンドA4を出力している。コマンドバッファが４段であるため、この段階でチップＢ側のコマンドバッファが一杯になっているはずであるが、この例では、チップＢが最初のコマンドの処理を完了して、サイクル５にコマンドレディ信号CMD_READY_Bを出力している。その結果、チップＡはサイクル６に32ＢサイズのコマンドＡ５を出力している。
【００９９】
この場合、本実施の形態例では、受信データバッファは段数で制御されるのではなく、データ量で制御されている。コマンドA1〜A4までの転送データ合計が３２Ｂであるので、カウンタ２１８の値に示される通り、受信データバッファはまだ３２Ｂだけ空いている。従って、サイクル７から４バーストサイクルにわたって、コマンドA5に対応するデータD5がバースト転送される。その結果、カウンタ値は０に達して、それ以降のデータ転送は抑制される。サイクル９でデータレディ信号DT_READY_Bが出て、カウンタ値は4Bに回復した結果、コマンドA6に対応するデータD1がサイクル１１で転送される。
【０１００】
この第２のデータバッファ制御方法により、容量の少ない受信データバッファでも有効に利用することができる。このデータ発行制御回路は、チップＢ側にも設けることができる。
【０１０１】
次に、第３の受信データバッファ制御方法を説明する。上記の第２の受信データバッファ制御方法では、４バイトサイズや、２バイトサイズのコマンドが発行された場合、受信データバッファをそのサイズで制御する必要があり、バッファへのデータ格納制御が複雑になってしまう。第３の受信データバッファ制御方法では、この制御を簡単にするために、受信データバッファを制御する単位をバースト長にする。
【０１０２】
図１７は、第３の受信データバッファ制御方法を説明する図である。図１７（ａ）は受信データバッファ制御回路、（ｂ）は受信データバッファをそれぞれ示す。チップＢの受信データバッファ２１６のサイズ、データバス幅を、例えばそれぞれ64バイト、８バイトとする。チップＡのデータ発行制御回路のカウンタ２１８には、初期化時に受信データバッファサイズ64Bをバス幅8Bで割ったバーストサイズ、この場合は64/8で８がロードされる。データ転送をしたときには、転送データサイズをバス幅で割った数、つまり転送バースト長S214（データ転送に必要なサイクル数）だけカウンタをデクリメントする。例えば２バイトとか４バイトの様にデータバス幅（8B）に満たないサイズの場合も、バースト長は１になるので、１だけカウンタをデクリメントする。チップＢからデータレディ信号DT_READY_Bが入力したときは、それに対応するバースト長S215分だけカウンタをインクリメントする。データを転送しようとしたとき、そのバースト長とカウンタの値を比較し、カウンタ値がバースト長以上であればデータを出力する。カウンタ値の方がバースト長より小さければ、データレディ信号DT_READY_Bが入力されて、カウンタ値がバースト長より大きくなるまで、データ発行抑止信号Ｓ119によりデータの出力を抑止する。
【０１０３】
図１７（ｂ）には、受信データバッファ２１６の使用状態の例が示される。ここでは、最初に4BのデータＤ１、次に4BのデータＤ２、次に2BのデータＤ３、最後に32BのデータＤ４が転送された場合の例である。最初のデータＤ１，Ｄ２，Ｄ３は、それぞれ受信データバッファ２１６の各8Bの領域を使用する。そして、最後のデータＤ４は、４段の8Bの領域を利用する。データバス幅8Bと各段のバッファサイズ8Bとが一致しており、データバッファへの格納の制御は簡単になる。
【０１０４】
この第３の方法は、転送データ量でデータバッファを管理する第２の方法よりは、若干データバッファの利用効率が下がるが、バス幅以下のサイズのデータ転送が発生したときに、データを並べ変える必要がないので、受信データバッファの制御は非常に簡単になる。
【０１０５】
更に、第４の受信データバッファ制御方法を説明する。上記の第３の方法では、データレディ信号を受信したときに、そのデータレディに対応するデータ転送サイズS215分だけカウンタ２１８をインクリメントする。従って、この方法では、その転送サイズを記憶しておく必要がある。
【０１０６】
そこで、第４の受信データバッファ制御方法では、データを受信した側（チップＢ）が１回のデータ転送に対して１回だけデータレディ信号を出力するのではなく、バースト長分だけのデータレディ信号を出力するようにする。そして、データ発行制御回路内のカウンタは、データレディ信号に応答して、バースト長を＋１ずつインクリメントする。こうすることにより、データ転送時のサイズを記憶しておく必要が無くなるので、制御が簡略にできる。
【０１０７】
第４の方法では、カウンタ218はデータ転送時にはそのバースト長S214分だけデクリメントされるが、デクリメントはデータレディ信号を受けたときに１だけインクリメントされる。例えば、カウンタ216は、32バイト転送を行った場合は、転送時に４だけ減じ、相手側からはデータレディ信号が４回出力されるので、データレディ信号が出力されるたびに、カウンタを＋１だけインクリメントする。
【０１０８】
以上４種類の受信データバッファの制御方法を説明したが、２つのチップセットの組み合わせに応じて、それらの複数種類の制御方法が切り替えられるようにすることが好ましい。例えば、電源投入時の初期設定で、かかる制御方法の設定が行われるようにし、且つこれらの設定が切替可能にする。
【０１０９】
［リードリプライデータバッファとライトデータバッファの分離］
第８の実施の形態例は、ブリッジチップＢがインターロック型のバスに接続されている場合における、チップＡとチップＢとの間のデータ転送の効率を上げる方法である。図１８は、第８の実施の形態例を説明する図である。
【０１１０】
図１８(a)に示すように、チップＡとチップＢがコマンドバス１０Ｃとデータバス１０Ｄで接続され、更に、チップＢが別のインターロック型のバスILBUSに接続された構成について考える。インターロック型のバスは、コマンド転送のフェーズと、データ転送のフェーズが分離されておらず、リードの場合はコマンドが発行されて、そのリードリプライデータがバスILBUSに出力されるまでそのバスはロックされ、他のコマンドは発行できない。ライトコマンドの場合も、ライトコマンドに続いてライトデータがバスILBUSに送出されるまで、他のコマンドは発行できない。
【０１１１】
このようなシステム構成において、インターロック型のバスILBUS上のデバイスＣから、チップＢを介してチップＡに対してリードコマンドが発行され（図中▲１▼Read）、ほぼ同時にチップＡからチップＢに対して、インターロック上のデバイスＣに対するライトコマンドが発行された（図中▲２▼Write）場合で、チップＢに対してチップＡからのライトデータが先に転送された場合（図中▲１▼Write-Data）、チップＢからのリードに対するリプライデータ（図中▲２▼Read-Data）を返せない可能性がある。
【０１１２】
例えばチップＢの受信用データバッファ１２６が64Bの容量で、チップＡからのライトコマンドのデータサイズが64Bであれば、チップＡはリードリプライを返そうとしてもデータバッファ１２６が一杯のため返せない。チップＡがリプライデータを返すためには、チップＢのデータバッファが空かなければならない。そのためには、チップＢは、チップＡから発行されたライトコマンドをインターロック型のバスに発行してライトデータを出力しなければならない。しかし、インターロック型のバスILBUSの方は、リードコマンドを受けてそのリプライが出力されるのを待っている状態なので、システムがデッドロック状態になってしまっている。
【０１１３】
このようなデッドロック状態に陥るのを回避するため、図１８(b)に示すように、チップＢの受信用データバッファ１２６を、ライトデータを受信するためのライトデータバッファ126Wと、リードリプライデータを受信するためのリードリプライデータバッファR126とに分離する。こうすることにより、チップＡからのライトデータが先に転送されても、その後に取得するリードリプライデータは別のリードリプライデータバッファ126Rに受信される。従って、リードリプライデータがブロックされることはなく、チップＢは、リードリプライデータをチップＡから受け取ってインターロック型のバスに出力し、インターロック型のバス上のリードトランザクションは完了し、チップＢは引き続きチップＡから発行されたライトコマンドをインターロック型のバスに発行することができる。
【０１１４】
この構成では、チップＢからチップＡへのデータレディ信号も、図１８(c)の接続図に示すように、ライトデータ用のデータレディ信号WDT_READY_Bと、リードリプライデータ用のデータレディ信号RDT_READY_Bの２本に分離する必要がある。それに伴い、チップＢには、データレディ信号を生成するデータ処理部も、リード用128Rとライト用128Wとが設けられる。
【０１１５】
チップＡが図示しないインターロック型のバスに接続されている場合は、チップＡからチップＢへのデータレディ信号も、ライトデータ用のデータレディ信号WDT_READY_Aと、リードリプライデータ用のデータレディ信号WDT_READY_Aの２本に分離し、上で説明したような制御を行えばよい。
【０１１６】
チップＢがインターロック型ではないバスに接続されている場合は、このようなデッドロックは生じないので、受信用データバッファを２つに分ける必要はない。チップＡは、インターロック型のバスに接続されることを前提にしたチップＢと、インターロック型ではないバスに接続されることを前提としたチップＢのどちらに接続されても動作できるように、両方の制御回路を内蔵し、チップＢとしてどちらのタイプが接続されたかにより、その制御動作を切り替えるようにすることがより好ましい。
【０１１７】
［アクセスID追加によりデータ転送順序を自由にした実施例］
これまで説明した方式では、コマンドを発行した順番通りにデータを転送しなければならなかった。しかしながら、コマンドによって処理時間が異なる場合は、後で発行されたコマンドに対するデータが先に準備できる場合がある。そこで、次にこのデータ転送の順番が任意に入れ替わってもよい第９の実施の形態について説明する。
【０１１８】
図１９(a)に示すように、コマンドバス１０Ｃのコマンドとデータバス１０Ｄのデータとに、それぞれ対応するアクセスID信号を追加する。それぞれコマンド ID信号 CID、データID信号DIDとする。そして、コマンドを発行するときは、各コマンドに固有のコマンドID番号CIDを付加し、データを出力するときにも、対応するコマンドのID番号CIDの値をデータID番号DIDとして同時に出力し、どのコマンドに対応するデータであるかを示す。こうすることにより、コマンドとデータとの対応関係を示すことができ、コマンド発行順とデータ転送順とを一致させる必要がなくなる。
【０１１９】
いままで説明してきた方式では、コマンドとデータの対応を明確に示すID信号がなかったために、コマンドの発行順序とデータの転送順序を一致させることにより、暗黙的に対応を示していた。また、図１８に示したデータバスにアクセスタイプ信号を付加した方式でも、リードコマンド同士、ライトコマンド同士は順序を守ってデータ転送を行う必要があった。しかしこの方式では、後続のリードコマンドに対するデータを、先行のリードコマンドに対するデータより先に準備できても、先に準備できたデータをデータバスに出力することができないので効率が悪い。
【０１２０】
上記の様にID信号を付加することにより、コマンドの発行順序に関わらず転送準備のできたデータからデータバスに出力しても、コマンドとデータの対応がとれるので、制御可能になる。そして、先に準備できたデータを待機させる必要がなくなり、処理効率、データバスの使用効率を向上させることができる。
【０１２１】
図１９(b)に示すタイムチャートでは、サイクル１，２，３と３サイクル連続してチップＡがリードコマンドを発行している。それぞれのコマンドには、１，２，３というCID番号がつけられている。そして、サイクル５にCID３のコマンドに対応する８バイトのデータがチップＢから転送されている。サイクル７からCID１のコマンドに対応する１６バイトのデータがチップＢから転送され、サイクル９からCID２のコマンドに対応する３２バイトのデータがＢから転送されている。ID番号を付加しないバスでは、サイクル５に転送されたCID３のコマンドに対応するデータは、サイクル１３まで待たされる。
【０１２２】
ID番号を付加したバスプロトコルに対応したLSIを、対応していないLSIと接続すると、データの対応がつかなくなり、正常に動作しない。そこで、ID番号を付加したバスプロトコルに対応したLSIを、設定によりID番号を使わずにデータの転送順序を守るモードで動作できるようにすれば、ID番号を付加したバスプロトコルに対応したLSIにも、対応していないLSIにも接続して動作させることができる。従って、電源投入時の初期化作業で設定されるモードを、適宜設定できるようにすることが好ましい。
【０１２３】
図１９（ａ）には、上記のコマンドID番号を与えるための構成が示される。ここに示された発行用バッファや受信バッファ等の構成は、図６．図９で示したものと同じであり、図１９にはその一部のみ示される。今仮にリードコマンドがチップＡからチップＢに発行され、チップＢからリードリプライデータがチップＡに返信されたとする。チップＡのコマンド発行制御回路１２は、発行用コマンドバッファ２４にコマンドIDを与えて、コマンドストローブ信号をアサートしながら、そのコマンドをチップＢに発行する。チップＢの受信用コマンドバッファ２６は、そのコマンドとID番号とを受信する。コマンド処理部２８は、そのコマンドIDをデータ発行制御回路112Bに伝える。データ発行制御回路112Bは、リードリプライデータにそのID番号を付加して、送信用データバッファ124BからチップＡにデータを発行する。チップＡの受信用データバッファ126Aは、受信したデータと付加されたID番号を受信する。チップＡのデータ処理部128Aは、その付加されたID番号を参照して、どのコマンドに対するリプライデータであるかを認識する。
【０１２４】
チップＡがライトコマンドを発行する場合は、コマンド発行制御回路１２が、ライトコマンドにID番号を付加して発行用コマンドバッファ２４からライトコマンドを発行する。このID番号は、データ発行制御回路１１２に伝えられる。そして、データ発行制御回路１１２は、このID番号をライトデータに付加して、送信用データバッファ１２４からチップＢにライトデータを発行する。チップＢでは、このID番号を参照して、どのライトコマンドに対応するライトデータであるかを認識する。
【０１２５】
［リセット直後のアクセスの抑止］
これまで説明してきた方式では、接続されている相手のLSI、例えばチップＢ、の状態を、自分自身、チップＡ、の側で管理し、相手側からはレディ信号のみを受けて制御している。従って、コマンドあるいはデータを出力する時には、相手側はそのコマンドあるいはデータを受け取れる状態にあることを前提としている。
【０１２６】
しかし、チップＡとチップＢに印加されるリセット信号がネゲートされるタイミングが若干、例えば４サイクルチップＢが遅れる方向にずれた場合、チップＡがリセット解除された直後にチップＢに対してコマンドを発行すると、チップＢはまだその時点でリセット中であり、チップＢはそのコマンドを受け取らず、そのコマンドに対して応答しない。その結果誤動作してしまう。
【０１２７】
このような事態を避けるため、互いにカウンタを持ち、リセットのネゲートタイミングがずれる可能性のあるサイクル数だけカウンタでカウントし、その間はバスにコマンド・データを出力するのを抑止する。しかし、コマンド・データが相手から出力された場合は、カウント中であってもそのコマンドを受理するようにする。こうすることにより、リセットのタイミングのずれを吸収することができる。
【０１２８】
図２０は、第１０の実施の形態におけるリセット直後のコマンド発行を抑止する構成を説明する図である。図２０（ａ）は、リセット直後のコマンド発行抑止回路70,70BがそれぞれチップA,Bに設けられた構成を示す。チップＡのコマンド発行抑止回路７０は、リセット直後の抑止期間である初期値Ｓ７１をリセット時にロードするカウンタ７２と、カウンタ値Ｓ７２が０でない間は、発行抑止信号Ｓ７４を生成する発行抑止信号生成回路７４とを有する。カウンタ７２は、リセット信号がなく、カウンタ値が０でない間は、クロックに同期してデクリメントされる。発行抑止信号S74は、コマンド発行制御回路１２に与えられる。チップＢ側のコマンド発行抑止回路70Bも同じ構成である。
【０１２９】
図２０（ｂ）は、コマンド発行抑止期間が８サイクルの場合の動作タイミングチャート図である。例えば、リセット解除されるタイミングがチップＡとＢで５サイクルずれる可能性があり、カウンタでそれ以上例えば８サイクルカウントすると仮定する。図示される通り、サイクル２にチップＡに印加されているリセット信号が解除（ネゲート）され、サイクル７にチップＢに印加されているリセット信号が解除されている。チップＡ、Ｂは、それぞれリセット解除後の８サイクル期間ΔTa,ΔTbは、コマンドの発行を抑止する。
【０１３０】
チップＡは、サイクル２からサイクル９までの８サイクル間ΔTa、コマンド発行を抑止しており、その抑止が解除された２サイクル後のサイクル１１に、チップＢに対してコマンドA1を発行している。チップＢは、この時はまだコマンド発行抑止期間ΔTbであるが、リセットは解除されているので、コマンド受信は可能な状態になっている。従って、チップＡからのコマンドを受信できないことはない。チップＢは、サイクル１４でコマンド発行抑止期間ΔTbが終了して、サイクル１５でリクエスト信号REQUESTをアサートしている。
【０１３１】
このように、２つのチップにおいてリセットの解除タイミングがずれる可能性がある期間以上の期間、それぞれのチップ内のカウンタによりコマンドの発行を抑止する。従って、リセットを先に解除されたLSIのコマンド発行抑止期間が過ぎたタイミングでは、他方のLSIのリセットが解除されていることが保証される。その結果、先にリセットが解除されたLSIが発行したコマンドを、他方のLSIが取り損ねることはなくなる。
【０１３２】
［データバスのダブルデータレート化］
上記の実施の形態では、通常の論理回路と同じように、クロック信号の立ち上がりエッジで、データを取り込んだりデータを変化させている。データ転送がバースト転送中心であれば、データバスに比べて、アドレスバスの使用効率が低くなる。バスの転送速度を向上させるには、クロック速度を上げる必要があるが、使用効率の低いアドレスバスまで高速のクロックで動作させると消費電力が大きくなってしまう。
【０１３３】
そのため、使用効率の高いデータバスのみ高速のクロックで動作させる方法が考えられるが、アドレスバスとデータバスで異なるクロックを使用すると、クロック間のスキューなど別の問題が生じるので、アドレスバスとデータバスで同じクロックを使い、データバスのみ、クロックの立ち上がりエッジと立ち下がりエッジの両方でデータを変化させて、転送レートを向上させることができる。尚、アドレスバスは、上記の実施の形態例ではコマンドバスと兼用になっていて、コマンドバスにアドレスを転送させている。従って、コマンドバスやアドレスバスは、クロックの立ち上がりエッジに同期して動作させるシングルレートとし、データバスはクロックの立ち上がりと立ち下がりエッジの両エッジで動作させるダブルレートとする。
【０１３４】
図２１は、ダブルデータレート動作のタイムチャートである。チップＡは、サイクル１，２，３の３サイクル連続してリードコマンドを発行している。データサイズはそれぞれ16B、64B、8Bであり、図１９の例のようにそれぞれID番号が与えられる。チップＢは、サイクル５の立ち上がりエッジからの半サイクルにコマンドID番号CID３に対応するデータを転送している。次に、サイクル７にコマンドID番号CID1に対応する１６バイトのデータを転送している。データ転送は、クロックの両エッジを使っているので、１サイクル間で２回（16B分）データを転送している。次に、サイクル９からの４サイクルの期間に、コマンドDI番号CID２に対応する６４バイトのデータを転送している。４サイクル間で８回のバースト転送を行うことで、64Bのデータを転送している。
【０１３５】
このように、コマンドやアドレスのバスに比較して転送するデータ量が多いデータバスを、ダブルデータレートにすることで、処理効率をより向上させることができる。
【０１３６】
以上の実施の形態例をまとめると、以下の通りである。
【０１３７】
１．第１のＬＳＩが第２のＬＳＩにコマンドを発行して対応する処理をさせるシステムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩが同時に処理できるコマンド段数がリセット時に設定され、前記コマンドを発行する時にデクリメントされ、前記第２のＬＳＩからコマンド処理完了についてのレディー信号を受信する時にインクリメントされるカウンタを有し、前記カウンタ値が所定の値になる時にコマンドの発行を抑止するコマンド発行制御回路を有することを特徴とする集積回路装置。
（コマンド段数利用のコマンド発行制御、図２）
【０１３８】
２．上記１において、
前記第１及び第２のＬＳＩとが双方向性のコマンドバスで接続され、
前記第１のＬＳＩは、前記第２のＬＳＩからの前記コマンドバスの使用を要求するリクエスト信号に応答して、前記コマンドバスの使用を許可するグラント信号を前記第２のＬＳＩに発行するバスアービタ回路を有し、
前記グラント信号を発行する時に、前記コマンド発行制御回路にコマンドの発行を抑止させることを特徴とする集積回路装置。
（双方向コマンドバスの使用権のアービタによる制御、図５）
【０１３９】
３．第１のＬＳＩが第２のＬＳＩにデータを発行して対応する処理をさせるシステムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩが同時に受信できるデータ段数がリセット時に設定されるカウンタを有し、前記カウンタは、前記データを発行する時にデクリメントされ、前記第２のＬＳＩからデータに対応する処理の完了についてのレディー信号を受信する時にインクリメントされ、前記カウンタ値が所定の値になる時に前記データの発行を抑止するデータ発行制御回路を有することを特徴とする集積回路装置。
（データバッファ段数利用のデータ発行制御、図７）
【０１４０】
４．上記３において、
前記第１及び第２のＬＳＩとが双方向性のデータバスで接続され、
前記第１のＬＳＩは、前記第２のＬＳＩからの前記データバスの使用を要求するリクエスト信号に応答して、前記データバスの使用を許可するグラント信号を前記第２のＬＳＩに発行するアービタ回路を有し、
前記グラント信号を発行する時に、前記データ発行制御回路にデータの発行を抑止させることを特徴とする集積回路装置。
（双方向データバスの使用権のアービタによる制御、図９）
【０１４１】
５．上記３において、
前記第１のＬＳＩは、前記データの発行に伴い、それに対応するコマンドの種類を示すアクセスタイプ信号を発行することを特徴とする集積回路装置。
（アクセスタイプ、図１１）
【０１４２】
６．上記３において、
前記第１及び第２のＬＳＩとがコマンドとデータを転送する共通バスで接続され、
前記第１のＬＳＩは、前記第２のＬＳＩに前記共通バスに発行する信号がコマンドかデータかを示すフェーズ信号を発行することを特徴とする集積回路装置。
（フェーズ信号、図１０）
【０１４３】
７．第１のＬＳＩと第２のＬＳＩとの間で互いにデータを発行して対応する処理をさせるシステムにおける前記第１のＬＳＩにおいて、
前記第１及び第２のＬＳＩとが双方向性のデータバスで接続され、
前記第１のＬＳＩは、前記第２のＬＳＩからの前記データバスの使用を要求するリクエスト信号に応答して、前記データバスの使用を許可するグラント信号を前記第２のＬＳＩに発行するアービタ回路を有し、
前記グラント信号を発行する時に、前記第１のＬＳＩからのデータの発行を抑止させることを特徴とする集積回路装置。
（双方向データバスの使用権のアービタによる制御、図９）
【０１４４】
８．上記７において、
前記双方向性のデータバスが双方向性のコマンドバスと共用され、
前記第１のＬＳＩは、前記共用バスにコマンドまたはデータを発行する時に、コマンドかデータかを示すフェーズ信号を発行することを特徴とする集積回路装置。
（フェーズ信号、図１０）
【０１４５】
９．第１のＬＳＩと第２のＬＳＩとの間で互いにコマンドとデータを発行するシステムにおける前記第１のＬＳＩにおいて、
前記第１及び第２のＬＳＩとが双方向性のコマンドバス及びデータバスで接続され、
前記第２のＬＳＩからの前記コマンドバスの使用を要求するコマンドリクエスト信号に応答して、前記コマンドバスの使用を許可するコマンドグラント信号を前記第２のＬＳＩに発行し、当該第１のＬＳＩからのコマンドの発行を抑止するコマンドバスアービタ回路と、
データバスの使用を要求するデータリクエスト信号を前記第２のＬＳＩに発行し、前記第２のＬＳＩからデータグラント信号を受信したことに応答して、前記データバスにデータを発行するデータ発行制御回路とを有することを特徴とする集積回路装置。
（デフォルトバスマスタ、図１３）
【０１４６】
１０．第１のＬＳＩと第２のＬＳＩとの間で互いにコマンドとデータを発行するシステムにおける前記第２のＬＳＩにおいて、
前記第１及び第２のＬＳＩとが双方向性のコマンドバス及びデータバスで接続され、
前記第１のＬＳＩからの前記データバスの使用を要求するデータリクエスト信号に応答して、前記データバスの使用を許可するデータグラント信号を前記第１のＬＳＩに発行し、当該第２のＬＳＩからのコマンドの発行を抑止するデータバスアービタ回路と、
コマンドバスの使用を要求するコマンドリクエスト信号を前記第１のＬＳＩに発行し、前記第１のＬＳＩからコマンドグラント信号を受信したことに応答して、前記コマンドバスにコマンドを発行するコマンド発行制御回路とを有することを特徴とする集積回路装置。
（デフォルトバスマスタ、図１３）
【０１４７】
１１．上記７において、
前記第１及び第２のＬＳＩとがコマンドバスで接続され、コマンドと共に付随する転送データのサイズデータが供給され、
前記アービタ回路は、データ転送時に、前記サイズデータをデータバス幅で除した転送サイクル期間中、バス使用権を継続して維持することを特徴とする集積回路装置。
（バースト転送時でのデータサイズ／バス幅のカウント値によるバス使用期間制御、図１４）
【０１４８】
１２．上記１１において、
前記アービタ回路は、前記転送サイクルをロードするカウンタを有し、データ転送期間中はサイクル毎に前記カウンタをデクリメントし、カウンタ値が０にならない間は、データバス使用権を与えるグラント信号の発行を抑止することを特徴とする集積回路装置。
（バス使用期間制御、図１４）
【０１４９】
１３．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムであって、前記コマンド信号に転送データサイズ信号が付加され、前記第２のＬＳＩに１回のバースト転送で転送可能な最大データサイズの受信データバッファが複数段設けられ、当該システムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩの受信データバッファの段数が初期化時に設定されるカウンタを有し、前記カウンタは、シングル転送またはバースト転送時の転送サイズにかかわらず、前記１回のバースト転送毎にデクリメントされ、前記第２のＬＳＩからデータに対応する処理の完了を示すレディー信号を受信する時にインクリメントされ、前記カウンタ値が所定の値になる時に前記データの発行を抑止するデータ発行制御回路を有することを特徴とする集積回路装置。
（データバッファ管理は、最大転送サイズを持つデータバッファの段数で管理する方法Ｉ、図１４）
【０１５０】
１４．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムであって、前記コマンド信号に転送データサイズ信号が付加され、前記第２のＬＳＩに受信データバッファが設けられ、当該システムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩの受信データバッファの容量が初期化時に設定されるカウンタを有し、前記カウンタは、シングル転送またはバースト転送毎に転送データサイズだけデクリメントされ、前記第２のＬＳＩからデータに対応する処理の完了を示すレディー信号を受信する時に、それに対応するデータサイズだけインクリメントされ、前記カウンタ値が転送データのサイズより小さくなる時に前記データの発行を抑止するデータ発行制御回路を有することを特徴とする集積回路装置。
（バッファサイズを、送ったサイズ（ストローブ時）と処理済みサイズ（レディー時）で管理する方法II、図１６）
【０１５１】
１５．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムであって、前記コマンド信号に転送データサイズ信号が付加され、前記第２のＬＳＩにデータバス幅を持つ複数段の受信データバッファが設けられ、当該システムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩの受信データバッファの容量をデータバス幅で除した段数が初期化時に設定されるカウンタを有し、前記カウンタは、シングル転送またはバースト転送毎に転送データサイクル数（バースト長）だけデクリメントされ、前記第２のＬＳＩからデータに対応する処理の完了を示すレディー信号を受信する時に、それに対応するデータサイクル数（バースト長）だけインクリメントされ、前記カウンタ値が転送データの転送サイクル数より小さくなる時に前記データの発行を抑止するデータ発行制御回路を有することを特徴とする集積回路装置。（バッファサイズを、送ったコマンドのバースト長（ストローブ時）と処理済みコマンドのバースト長（レディー時）で管理する方法III、図１７）
【０１５２】
１６．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムであって、前記コマンド信号に転送データサイズ信号が付加され、前記第２のＬＳＩに受信データバッファが設けられ、当該システムにおける第１のＬＳＩにおいて、
前記第２のＬＳＩの受信データバッファの容量をデータバス幅で除した段数が初期化時に設定されるカウンタを有し、前記カウンタは、シングル転送またはバースト転送毎に転送データサイクル数だけデクリメントされ、前記第２のＬＳＩから転送データサイクル数の回数だけ供給されるレディー信号に応答して１個ずつインクリメントされ、前記カウンタ値が転送データの転送サイクル数より小さくなる時に前記データの発行を抑止するデータ発行制御回路を有することを特徴とする集積回路装置。
（レディー信号を転送データサイクル数回返信し、バッファサイズを、送ったバースト長（ストローブ時）と−１（レディー時）で管理する方法IV図１７）
【０１５３】
１７．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行い、更に前記第２のＬＳＩはインターロック式バスに接続されるシステムにおける第２のＬＳＩにおいて、
前記第１のＬＳＩからのライトコマンドに対応して、前記第１のＬＳＩから転送されるライトデータを格納する受信ライトデータバッファと、
前記インターロック式バスからのリードコマンドに対応して、第１のＬＳＩから転送されるリードリプライデータを格納する受信リードリプライデータバッファとを、別々に有し、
前記ライトコマンドの発行順にライトデータを受信し、前記リードコマンドの発行順にリードリプライデータを受信することを特徴とする集積回路装置。
（デッドロック防止、図１８）
【０１５４】
１８．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムにおける第１のＬＳＩにおいて、
前記コマンドにＩＤ番号を付加して発行するコマンド発行部と、
前記コマンドに対応して転送するデータに前記ＩＤ番号を付加して発行するデータ発行部とを有し、
前記データ発行部は、前記コマンドの発行順にかかわらずデータを発行することを特徴とする集積回路装置。
（コマンドIDを利用して、データ発行順番を自由にする、図１９）
【０１５５】
１９．第１のＬＳＩと第２のＬＳＩとの間でコマンドとそれに対応するデータの転送を行うシステムにおける第１のＬＳＩにおいて、
リセット解除後の一定期間において、コマンド発行を抑止するコマンド発行制御回路と、
前記一定期間において、コマンドの受信は許可するコマンド受信部とを有することを特徴とする集積回路装置。
（リセット後のコマンド発行抑止期間、図２０）
【０１５６】
２０．上記１乃至１９のいずれかにおいて、
前記コマンド及びアドレスを転送するコマンドバスをシステムクロックの１周期に同期して動作させ、前記データを転送するデータバスを前記システムクロックの半周期に同期して動作させることを特徴とする集積回路装置。
（ダブルデータレート、図２１）
【０１５７】
以上、本発明の保護範囲は、上記の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【０１５８】
【発明の効果】
以上、本発明によれば、コマンドまたはデータを受信する側のLSIが、受信側LSIの受信バッファの状態を、受信側LSIがアサートするコマンドまたはデータ発行時のストローブ信号の回数と、受信側LSIがアサートする処理済みを示すレディ信号の回数とで管理して、受信側LSIの受信バッファが空いている状態である限り、コマンドまたはデータを発行し、一杯になると発行を抑止する。従って、バスの動作周波数が高速になっても、送信側LSIは、受信側LSIからのビジー信号をもらうことなく連続して高速にコマンドまたはデータを発行することができる。従って、バスの使用効率を高めることができる。
【図面の簡単な説明】
【図１】従来のマイクロプロセッサとその周辺ＬＳＩとの間のバス制御を説明するための図である。
【図２】第１の実施の形態例であるコマンド発行制御を説明する図である。
【図３】図２におけるマイクロプロセッサとブリッジチップの詳細構成図である。
【図４】第１の実施の形態例の変形例を示す図である。
【図５】第２の実施の形態例であるコマンドバス制御を説明する図である。
【図６】図５（ａ）の詳細なＬＳＩの構成図である。
【図７】第３の実施の形態例であるデータ発行制御を説明する図である。
【図８】図７におけるマイクロプロセッサとブリッジチップの詳細構成図である。
【図９】第４の実施の形態例であるデータバス制御を説明する図である。
【図１０】コマンドとデータとを共通のバスで転送する例の接続図である。
【図１１】第５の実施の形態例であるデータにアクセスタイプ信号を付加した例の接続図である。
【図１２】第５の実施の形態例の動作を説明するタイミングチャート図である。
【図１３】第６の実施の形態例であるチップセットのコマンドバスとデータバスの優先権を互いに持ち合うようにした例の接続図である。
【図１４】第７の実施の形態例におけるバースト転送時のバス使用権制御を行うバスアービタの構成図である。
【図１５】第７の実施の形態例の動作を示すタイミングチャート図である。
【図１６】第２の受信データバッファ制御方法を説明する図である。
【図１７】第３の受信データバッファ制御方法を説明する図である。
【図１８】第８の実施の形態である受信データバッファを分離した例を説明する図である。
【図１９】第９の実施の形態であるコマンドＩＤを利用することを説明する図である。
【図２０】第１０の実施の形態であるリセット直後のコマンド発行抑止を説明する図である。
【図２１】第１１の実施の形態であるダブルデータレートを説明する図である。
【符号の説明】
Ａ、Ｂ          チップ、LSI、第１及び第２のLSI
10C,10D        コマンドバス、データバス
１２、１１２    コマンド発行制御回路、データ発行制御回路
２３            コマンド系制御部
２４、１２４    発行用コマンドバッファ、発行用データバッファ
２５            データ系制御部
２６、１２６    受信コマンドバッファ、受信データバッファ
２８、１２８    コマンド処理部、データ処理部
３５、１３５    コマンドバスアービタ回路、データバスアービタ回路
【図１】
0004554016.tif 000002
【図２】
0004554016.tif 000003
【図３】
0004554016.tif 000004
【図４】
0004554016.tif 000005
【図５】
0004554016.tif 000006
【図６】
0004554016.tif 000007
【図７】
0004554016.tif 000008
【図８】
0004554016.tif 000009
【図９】
0004554016.tif 000010
【図１０】
0004554016.tif 000011
【図１１】
0004554016.tif 000012
【図１２】
0004554016.tif 000013
【図１３】
0004554016.tif 000014
【図１４】
0004554016.tif 000015
【図１５】
0004554016.tif 000016
【図１６】
0004554016.tif 000017
【図１７】
0004554016.tif 000018
【図１８】
0004554016.tif 000019
【図１９】
0004554016.tif 000020
【図２０】
0004554016.tif 000021
【図２１】
0004554016.tif 000022