(57)【要約】  【課題】  データ転送効率を高め、動作速度を速くし、設計・検証時間を短縮する。  【解決手段】  データを一時的に保持可能な複数のバスブリッジ８０を格子状に配置して、隣接するバスブリッジ８０相互間およびバスブリッジ８０とユニット２００やユニット３００間をバス１０で接続する。各バスブリッジ８０および各ユニット２００，３００にＸＹ座標上のアドレスを付与する。データの転送は、送信元のユニット２００のアドレスと送信先のユニット３００のアドレスに基づき、該送信先のアドレス３００に近づく２方向のいずれかのバスブリッジ８０が選択されようにして、シフト動作により行う。【選択図】  図５
2006065687.tif 000002
【特許請求の範囲】
【請求項１】
格子状に配置されデータを一時的に保持可能な複数のバスブリッジと、隣接する該バスブリッジ相互間および該バスブリッジとユニット間を接続するバスからなることを特徴とするＬＳＩ内部バス。
【請求項２】
請求項１に記載のＬＳＩ内部バスにおいて、
前記バスブリッジ相互間および前記バスブリッジと前記ユニット間は、シフト動作によりデータ転送が行われるようにしたことを特徴とするＬＳＩ内部バス。
【請求項３】
請求項１又は２に記載のＬＳＩ内部バスにおいて、
前記バスブリッジおよび前記ユニットは、各々ＸＹ座標上のアドレスが付与されていることを特徴とするＬＳＩ内部バス。
【請求項４】
請求項３に記載のＬＳＩ内部バスにおいて、
前記データの転送は、送信元のユニットのアドレスと送信先のユニットのアドレスに基づき、該送信先のアドレスに近づく２方向のいずれかが選択されることにより行われることを特徴とするＬＳＩ内部バス。
【請求項５】
請求項１乃至４のいずれか１つに記載のＬＳＩ内部バスにおいて、
前記バスブリッジは、データの受け取りの許可／禁止を示す空き信号を出力することを特徴とするＬＳＩ内部バス。
【請求項６】
請求項５に記載のＬＳＩ内部バスにおいて、
前記バスブリッジは、前記禁止を示す空き信号を特定の１又は複数の方向からのデータ受け取りに対して出力することを特徴とするＬＳＩ内部バス。
【請求項７】
請求項１乃至６のいずれか１つに記載のＬＳＩ内部バスにおいて、
前記バスブリッジおよび前記ユニットは、転送されるデータに付与されたＩＤを該転送を受けた方向に出力して、同一ＩＤのデータを連続して受け取ることを特徴とするＬＳＩ内部バス。
【請求項８】
請求項５又は６に記載のＬＳＩ内部バスにおいて、
前記バスブリッジは、前記空き信号を許可にしてデータを受け取る前段バッファと、該前段バッファからのデータを受けとり別のバスブリッジ又はユニットからの前記空き信号が許可のとき該データを該別のバスブリッジ又はユニットに出力する後段バッファと、からなることを特徴とするＬＳＩ内部バス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号の中継点として複数のバスブリッジを格子状に配置したメッシュ構造のＬＳＩ内部バスに関する。
【背景技術】
【０００２】
ＬＳＩ設計において、バス１０Ａは、図１１に示すように、それに接続されるＣＰＵ２０、内部メモリ３０、タイマ４０、外部ＲＡＭコントローラ５０、シリアルインターフェース６０、割込み制御部７０等の全ユニット間でデータを転送するため、レイアウト段階でその配線長が問題になりやすい。特に、そのバス１０Ａがクロックに同期したバスの場合、データの転送先が増えるにつれて負荷が増大し、バス１０Ａの全体の動作周波数が遅くなる要因になりやすい。
【０００３】
そこで、この問題に対する従来からある手法としては、図１２に示すように、バスブリッジ８０Ａの挿入が挙げられる。すなわち、バスブリッジ８０Ａを挿入することで、バス１０Ａを複数、例えば２個のバス１０Ａ１，１０Ａ２に分割し、１つのバスに接続されるユニットの数を減らすことで、バスの負荷を軽減するものである。例えば、AMBA Specification(Rev.2.0) では、システムバスであるＡＨＢに対し周辺バスであるＡＰＢを定義し、バスを分断することで速度を維持している。
【０００４】
また、別の問題として、１つのバスを複数のマスタが共有するような構成の場合、同時には１つのマスタしかデータを転送できないため、他のマスタが必然的に待たされることになる。これを回避する手法として、図１３に示すように、マルチレイヤが挙げられる。すなわち、マスタとして働くＣＰＵ２０、第１ＤＭＡ９１および第２ＤＭＡ９２毎に別々のバス１０Ｂ１，１０Ｂ２，１０Ｂ３を配備することで、複数のマスタが同時にデータ転送を開始できるようにしている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、図１２で説明したバスブリッジ８０Ａの挿入は、設計のかなり初期の段階で検討される必要があり、またバスブリッジ８０Ａが多く挿入されると、設計の難易度が上がると共に、検証時間が増大する問題がある。
【０００６】
また、図１３で説明したマルチレイヤ化は、バスの配線を増やしてしまうことにつながり、レイアウト時に問題となる可能性がある。さらに、バスの複雑さはバスブリッジの比ではなく、設計と検証の期間に深刻なインパクトを与える。
【０００７】
本発明の目的は、複数のバスブリッジを格子状に配置することにより、データ転送効率を高め、動作速度を速くし、設計・検証時間を短縮できるようにしたＬＳＩ内部バスを提供することである。
【課題を解決するための手段】
【０００８】
請求項１にかかる発明のＬＳＩ内部バスは、格子状に配置されデータを一時的に保持可能な複数のバスブリッジと、隣接する該バスブリッジ相互間および該バスブリッジとユニット間を接続するバスからなることを特徴とする。
【０００９】
請求項２にかかる発明は、請求項１に記載のＬＳＩ内部バスにおいて、前記バスブリッジ相互間および前記バスブリッジと前記ユニット間は、シフト動作によりデータ転送が行われるようにしたことを特徴とする。
【００１０】
請求項３にかかる発明は、請求項１又は２に記載のＬＳＩ内部バスにおいて、前記バスブリッジおよび前記ユニットは、各々ＸＹ座標上のアドレスが付与されていることを特徴とする。
【００１１】
請求項４にかかる発明は、請求項３に記載のＬＳＩ内部バスにおいて、前記データの転送は、送信元のユニットのアドレスと送信先のユニットのアドレスに基づき、該送信先のアドレスに近づく２方向のいずれかが選択されることにより行われることを特徴とする。
【００１２】
請求項５にかかる発明は、請求項１乃至４のいずれか１つに記載のＬＳＩ内部バスにおいて、前記バスブリッジは、データの受け取りの許可／禁止を示す空き信号を出力することを特徴とする。
【００１３】
請求項６にかかる発明は、請求項５に記載のＬＳＩ内部バスにおいて、前記バスブリッジは、前記禁止を示す空き信号を特定の１又は複数の方向からのデータ受け取りに対して出力することを特徴とする。
【００１４】
請求項７にかかる発明は、請求項１乃至６のいずれか１つに記載のＬＳＩ内部バスにおいて、前記バスブリッジおよび前記ユニットは、転送されるデータに付与されたＩＤを該転送を受けた方向に出力して、同一ＩＤのデータを連続して受け取ることを特徴とする。
【００１５】
請求項８にかかる発明は、請求項５又は６に記載のＬＳＩ内部バスにおいて、前記バスブリッジは、前記空き信号を許可にしてデータを受け取る前段バッファと、該前段バッファからのデータを受けとり別のバスブリッジ又はユニットからの前記空き信号が許可のとき該データを該別のバスブリッジ又はユニットに出力する後段バッファと、からなることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、格子状に配置されデータを一時的に保持可能な複数のバスブリッジと、隣接する該バスブリッジ相互間および該バスブリッジとユニット間を接続するバスからＬＳＩ内部バスを構成するので、バスが短距離となりデータ転送効率を高め、動作速度を速くし、設計・検証時間を短縮できる。
【発明を実施するための最良の形態】
【００１７】
本実施例のＬＳＩ内部バスでは、バスブリッジを格子状に配置してこれをバスにより接続する。すなわち、バスはあくまでバスブリッジ間あるいはバスブリッジとユニットとの間に限り配置し、従来のようにバスが広範囲に亘って引き回されることがないようにする。このようにすると、構成が単純となり、perlスクリプト等で自動生成でき、ユーザはバスに関して検証する必要がなくなる。また、バスブリッジを格子状に配置することにより、送信元のユニット→送信先のユニット間の配線を１本に限らせず、マルチレイヤを実現する。また、送信元のユニット→送信先のユニット間のデータ転送経路は、自動的に変更させ、転送待ち時間を最小に押さえる。
【実施例１】
【００１８】
以下、図面を参照して、本発明のＬＳＩ内部バスの実施例を詳細に説明する。図１はＬＳＩ内部バスを示すブロック図であり、１〜２ワード程度のデータを保持するバスブリッジ８０を格子状に配置して、それらをバス１０で上下左右に接続する。このとき、バス１０はバスブリッジ８０の相互間を接続する他、バスブリッジ８０とユニット（ＣＰＵ２０，内部メモリ３０，第ＤＭＡ９１、第２ＤＭＡ９２、周辺回路１００等）との間も接続し、それらの間はシフト動作の要領でデータ転送を行う。
【００１９】
全部のバスブリッジ８０およびそのバス１０に接続された前記したユニット（ＣＰＵ２０，内部メモリ３０，第ＤＭＡ９１、第２ＤＭＡ９２、周辺回路１００等）は、物理的な位置（ＸＹ座標）を基にアドレスをもち、転送はそのアドレスを基に行われる。つまり、転送先に近づく２方向のどちらかが選択される。
【００２０】
バスブリッジ８０は４方向からのライト信号WriteおよびデータDataを受け取り、その受け取りの許可／禁止の空き信号emptyを返す。またそれと逆に、４方向へのライト信号WriteおよびデータDataを出力し、空き信号emptyを受け取る。すなわち、バスブリッジ８０は図２に示すように、４方向（ｎ：北、ｓ：南、ｗ：西、ｅ：東）に対するライト信号Write、データData、空き信号emptyの入力ｉ、出力ｏを行う。例えば、empty_niは上からの空き信号入力、Write_noは上方向へのライト信号出力、Data_noは上方向へのデータ出力を表す。
【００２１】
図３にこのバスブリッジ８０の内部構成を示し、第４図にバスブリッジ８０を構成する前段バッファ８１と後段バッファ８２の接続関係を示す。図３(a)に示す前段バッファ８１はライト信号WriteおよびデータDataを４方向から入力し、空き信号emptyを４方向に出力する。図３(b)に示す後段バッファ８２はライト信号WriteおよびデータDataを４方向に出力し、空き信号emptyを４方向から入力する。このように空き信号emptyは前段バッファ８１から出力するので、後段バッファ８２にデータが蓄積されている場合でも前段バッファ８１が空いていればデータを受け取ることができる。前段バッファ８１と後段バッファ８２は図４に示すように接続されているので、当該バスブリッジ８０に受け取られたデータは通常では前段バッファ８１に書き込まれるが、後段バッファ８２からの空き信号emptyが許可（empty)ならその後段バッファ８２に直ちに書き込まれる。
【００２２】
いま、図５に示すように、アドレスが（０．０）の送信元のユニット２００からアドレスが（２．２）の送信先のユニット３００にデータを転送するときは、両ユニット２００，３００のアドレスを基に、送信先のユニット３００のアドレスに近づく２方向のどちらかが選択される。この場合は、送信先のユニット３００が送信元のユニット２００よりも下側で且つ右側にあるので、下方向か右方向に転送先が選択され、例えば、アドレス（０．０）→（０．１）→（１．１）→（２．１）→（２．２）の経路でシフト動作により転送される。この例では、４個のデータData_1〜Data_4が転送されている。このとき、各バスブリッジ８０内の前段バッファ８１は、図６に示すように、空き信号emptyの出力を許可（empty）にしてデータを受け取り、後段バッファ８２は許可（empty）の空き信号emptyを受け取ることによりデータを出力する。
【００２３】
しかし、アドレス（２．１）のバスブリッジ８０から空き信号emptyが禁止（not empty）であることがアドレス（１．１）のバスブリッジ８０に通知されている場合は、アドレス（２．１）のバスブリッジ８０へはデータを転送できないので、図７に示すように、アドレス（１．１）から下方向のアドレス（１．２）のバスブリッジ８０を経由してアドレス（２．２）のユニット３００にデータが転送され、転送経路が変更される。
【実施例２】
【００２４】
上記した複数の転送データに対して、送信元のユニットおよび送信先のユニットから生成される固有の同じＩＤを付与させておき、バスブリッジや送信先ユニットから現在保有しているデータのＩＤを出力させるように構成した場合は、複数のデータが連なって転送されるバーストデータの場合、同じＩＤが出力されているバスブリッジあるいは送信先ユニットへ転送が行われ、これにより先行するデータの後を後続のデータが追いかけていくことになる。
【００２５】
図８はこれを説明するための図であり、ＩＤ＝１が付与されているデータData_1/1〜Data_4/1がアドレス（０．０）の送信元ユニット２００Ａからアドレス（１．３）の送信先ユニット３００Ａに転送される場合、最初のデータData_1/1がアドレス（０．０）→（０．１）→（０．２）→（０．３）→（１．３）の転送順で転送されていくと、そのデータData_1/1を受け取ったバスブリッジ８０あるいはユニット３００ＡがＩＤ＝１を後段に出力するので、これを追いかけてデータData_2/1〜Data_4/1が同じ経路を転送され、これにより転送順序が確保されるとともに、当該データの経由するバスを占有することで帯域が確保される。ＩＤ＝２が付与されているデータData_1/2〜Data_4/2がアドレス（２．０）の送信元ユニット２００Ｂからアドレス（１．２）の送信先ユニット３００Ｂに転送される場合は、最初のデータData_1/2がアドレス（２．０）→（１．０）→（１．１）→（１．２）の転送順で転送されていくと、これを追いかけてデータData_2/2〜Data_4/2が同じ経路で転送されていく。
【実施例３】
【００２６】
以上説明した実施例では、データは、出力する空き信号emptyが許可で且つ送信先のユニットのアドレスに近づく２方向のいずれかのバスブリッジ８０が選択されて転送されていくが、バスブリッジ８０が複数のバスブリッジからの転送を同時に受けた場合は、そのいずれかを選択する必要がある。
【００２７】
そこで、この場合にはバスブリッジ８０に対して転送されてくるデータの受付に優先順位をつけると好都合である。例えば、左上から右下の方向にデータを転送する図５，図７に示した例では、図９(a)に示すように、横方向への空き信号emptyを禁止（not empty）にして横方向よりも縦方向からのデータ転送を優先して受け付けるようにし、あるいは図９(b)に示すように、下方向への空き信号emptyを禁止にして下方向よりも上方向からのデータ転送を優先して受け付けるようにし、あるいは図９(c)に示すように、右方向への空き信号emptyを禁止にして右方向よりも左方向からのデータ転送を優先して受け付けるようにする。
【実施例４】
【００２８】
なお、これまではライトに関しての実施例のみを述べてきたが、リードに関しては、例えば図１０(a)に示すように、アドレス（２．２）のユニット３００Ｃからアドレス（０．０）のユニットに２００Ｃにリードを行う場合では、リード要求コマンドをアドレス（２．２）からアドレス（０．０）に送り（＝ライト動作）、これにより図１０(b)に示すように、アドレス（０．０）からアドレス（２．２）にライト動作をさせることで実現できる。
【図面の簡単な説明】
【００２９】
【図１】実施例１のＬＳＩ内部バスのブロック図である。
【図２】実施例１のＬＳＩ内部バスのバスブリッジの入出力信号の関係を示す説明図である。
【図３】実施例１のＬＳＩ内部バスのバスブリッジを構成する前段バッファと後段バッファの入出力信号の関係を示す説明図である。
【図４】実施例１のＬＳＩ内部バスのバスブリッジの前段バッファと後段バッファの間の信号の関係を示す説明図である。
【図５】実施例１のＬＳＩ内部バスにおいて、複数のバスブリッジを経由して送信元のユニットから送信先のユニットにデータを転送する説明図である。
【図６】実施例１のＬＳＩ内部バスにおいて、隣接するバスブリッジの空き信号emptyとデータDataのやりとりの説明図である。
【図７】実施例１のＬＳＩ内部バスにおいて、複数のバスブリッジを経由して送信元のユニットから送信先のユニットにデータを転送する際に一部のバスブリッジを変更する説明図である。
【図８】複数のデータに同一のＩＤを付与してバーストデータを転送する実施例２のＬＳＩ内部バスの説明図である。
【図９】バスブリッジのデータを受け取る方向に優先順位を付けた実施例３のＬＳＩ内部バスの説明図である。
【図１０】データをリードする場合の実施例４のＬＳＩ内部バスの説明図である。
【図１１】従来のＬＳＩ内部バスの説明図である。
【図１２】従来のＬＳＩ内部バスの説明図である。
【図１３】従来のＬＳＩ内部バスの説明図である。
【符号の説明】
【００３０】
１０，１０Ａ，１０Ａ１，１０Ａ２，１０Ｂ１〜１０Ｂ３：バス
２０：ＣＰＵ
３０：内部メモリ
４０：タイマ
５０：外部ＲＡＭコントローラ
６０：シリアルインターフェース
７０：割込み制御部
８０，８０Ａ：バスブリッジ
９１：第１ＤＡＭ
９２：第２ＤＡＭ
１００：周辺回路
２００Ａ，２００Ｂ，２００Ｃ：ユニット
３００Ａ，３００Ｂ，３００Ｃ：ユニット
【図１】
2006065687.tif 000003
【図２】
2006065687.tif 000004
【図３】
2006065687.tif 000005
【図４】
2006065687.tif 000006
【図５】
2006065687.tif 000007
【図６】
2006065687.tif 000008
【図７】
2006065687.tif 000009
【図８】
2006065687.tif 000010
【図９】
2006065687.tif 000011
【図１０】
2006065687.tif 000012
【図１１】
2006065687.tif 000013
【図１２】
2006065687.tif 000014
【図１３】
2006065687.tif 000015