(57)【特許請求の範囲】
【請求項１】
メモリ回路及び論理回路の少なくともいずれか一方として機能する複数の機能ブロック（１０）がアレイ状に配置されたブロックチップ（２０）において，前記ブロックチップ（２０）内の前記機能ブロック（１０）同士を接続するバスシステムであって，
前記バスシステムは，前記機能ブロック（１０）から出力されるデータ信号の出力先を制御する出力制御部（３０）を備え，
前記出力制御部（３０）は，
クロック信号源からのクロック信号と選択信号源からの選択信号とが入力される第１のアンド回路（３１ａ）と，
前記第１のアンド回路（３１ａ）がオフであるときには，第１隣接バス（３３ａ）を介して前記データ信号を第１の機能ブロックに出力させ，前記第１のアンド回路（３１ａ）がオンであるときには，前記第１隣接バス（３３ａ）及び第２隣接バス（３４ａ）を介して前記データ信号を分岐して前記第１の機能ブロック及び第２の機能ブロックに出力させる第１のスイッチ回路（３２ａ）と，
前記第１隣接バス（３３ａ）に入力端を有する第２のスイッチ回路（３２ｂ）と，
前記第２のスイッチ回路（３２ｂ）に接続され，クロック信号源からのクロック信号と選択信号源からの選択信号とが入力される第２のアンド回路（３１ｂ）とを有し，
前記第２のスイッチ回路（３２ｂ）は，前記第２のアンド回路（３１ｂ）がオフであるときには，前記第１隣接バス（３３ａ）を介して前記データ信号を前記第１の機能ブロックに出力させ，前記第２のアンド回路（３１ｂ）がオンであるときには，前記第１隣接バス（３３ａ）及び別の第２隣接バス（３４ｂ）を介して前記データ信号を分岐して前記第１の機能ブロック及び第３の機能ブロックに出力させる
バスシステム。
【請求項２】
前記第１隣接バス（３３ａ）は，ある機能ブロックと，これと列方向に隣接する前記第１の機能ブロックとを接続するものであり，
前記第２隣接バス（３４ａ）は，前記ある機能ブロックと，これと行方向に隣接する前記第２の機能ブロックとを接続するものである
請求項１に記載のバスシステム。
【請求項３】
前記別の第２隣接バス（３４ｂ）は，前記ある機能ブロックから出力されたデータ信号を，行方向に前記第１の機能ブロックの一つ先に並ぶ更に前記第３の機能ブロックへと伝達する
請求項２に記載のバスシステム。
【請求項４】
前記出力制御部（３０）は，前記機能ブロック（１０）と前記第１のスイッチ回路（３２ａ）との間に，前記機能ブロック（１０）から出力されたデータ信号の波形を整形するための波形整形回路（３５）を，さらに有する
請求項１に記載のバスシステム。
【請求項５】
前記アンド回路に入力される前記選択信号は，一つの統一された選択信号源により制御されている
請求項１から請求項４のいずれかに記載のバスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，バスシステムに関する。具体的に説明すると，本発明は，複数の機能ブロックが集積されたブロックチップにおいて，各機能ブロック同士を接続するためのバスシステムに関するものである。
【背景技術】
【０００２】
従来から，複数の機能ブロック（基本セルともいう）を集積して構築されたメモリ・論理共役システムが知られている（特許文献１）。このメモリ・論理共役システムは，メモリ回路として機能するＳＲＡＭなどを一つの機能ブロックとし，複数の機能ブロックを行列からなるアレイ状に配置した構成を有している。また，メモリ・論理共役システムでは，アレイ状に配置された複数の機能ブロックを，３次元的に積層することも可能であるとされている。そして，このシステムでは，マルチバスを通じて任意の機能ブロックに直接アクセスして真理値データを書き込むことにより，任意の機能ブロックを論理回路に切り換えることが可能である。
【０００３】
このように，メモリ・論理共役システムは，マルチバスを通じて各機能ブロックに直接アクセスすることにより，任意の機能ブロックをピンポイントで論理回路やメモリ回路として切り換えることができるため，動的再構成が容易である。また，機能ブロックとして，ＳＲＡＭなどの比較的小さい構成のメモリ回路を用いることで，処理の高速化を容易に実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１５３２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように，メモリ・論理共役システムは，動的再構成が可能な柔軟な単一回路を大量に生産可能であるという点において，優れたシステムである。
【０００６】
ただし，従来のメモリ・論理共役システムは，複数の機能ブロック同士でデータ信号等の送受信を行う場合，隣接する機能ブロック同士を接続する隣接バスを介する必要があった。この隣接バスは，行列方向に隣り合う機能ブロック同士のみを接続するものである。このため，例えば，同じデータ信号を列方向に並ぶ３つ以上の機能ブロックで共有しようとした場合，まず，ある機能ブロックから，これと隣接する別の機能ブロックへデータ信号を送信する。その後，この別の機能ブロックから，さらに別の隣接する機能ブロックへとデータ信号を送信する必要がある。例えば，ある機能ブロックから別の機能ブロックへデータ信号を送信するという処理に１クロック消費されるとした場合，同じデータ信号を列方向に並ぶ３つの機能ブロックで共有するためには，そのデータ信号の伝送処理に２クロック消費されることとなる。このように，従来の隣接バスのシステムでは，データ信号の共有先が増えるに従って，そのデータ信号の共有を達成するのに必要なクロック数が増えることとなる。従って，従来の隣接バスのシステムでは，データ信号を共有しようとした場合や，データ信号を遠くの機能ブロックへと伝達しようとした場合に，処理時間の遅延を招く恐れがあるという問題があった。
【０００７】
また，従来のメモリ・論理共役システムは，データ信号の伝達経路を決定するための経路設定レジスタを，全ての機能ブロックに設ける必要がある。すなわち，従来のシステムは，データ信号の伝達経路として隣接バスのみを用いているため，ある機能ブロックから遠く離れた機能ブロックへとデータ信号を伝達させようとした場合に，その間に位置する全ての機能ブロックを中継する必要がある。このため，それぞれの機能ブロックに経路設定レジスタを設けなければ，所望の機能ブロックへとデータ信号を伝達させることができなかった。要するに，従来のシステムは，機能ブロックをスキップして，データ信号を伝達させることができない。このため，従来のシステムは，データ信号を遠くの機能ブロックへと伝達しようとした場合に，発信元から受信先の間に位置する全ての機能ブロック（特に経路設定レジスタ）をアクティブにする必要がある。その結果，従来のシステムは，電力消費が大きくなるという問題があった。
【０００８】
このような従来のメモリ・論理共役システムの問題は，各機能ブロックを接続している隣接バスの接続形態に起因するものであるといえる。このため，現在では，従来のメモリ・論理共役システムを，さらに高速かつ低消費電力で機能させることのできるバスシステムが求められている。
【課題を解決するための手段】
【０００９】
そこで，本発明の発明者らは，従来発明の問題を解決する手段について鋭意検討した結果，ある機能ブロックから出力されるデータ信号を，他の機能ブロックとさらに別の機能ブロックとに分岐して伝達するというバス構造を発案した。特に，発明者らは，データ信号の分岐をスイッチによってコントロールすることにより，データ信号の共有先を任意に選択することが可能になるという知見を得た。これにより，データ信号を，他の複数の機能ブロックに対して同時に（例えば１クロック内で）伝達することが可能となる。従って，上記バス構造によれば，従来のメモリ・論理共役システムを，さらに高速かつ低消費電力で機能させることができる。そして，本発明者らは，このような知見に基づけば，従来技術の課題を解決できることに想到し，本発明を完成させた。具体的に説明すると，本発明は以下の構成を有する。
【００１０】
本発明は，バスシステムに関する。本発明のバスシステムは，ブロックチップ２０内の機能ブロック１０同士を接続するものである。機能ブロック１０は，メモリ回路及び論理回路の少なくともいずれか一方として機能する素子である。そして，ブロックチップ２０は，複数の機能ブロック１０が行列に並んだアレイ状に配置されることで構成されている。
バスシステムは，機能ブロック１０から出力されるデータ信号の出力先を制御する出力制御部３０を備える。
この出力制御部３０は，アンド回路３１と，スイッチ回路３２と，第１隣接バス３３と，第２隣接バス３４と，を含む。
アンド回路３１には，クロック信号源からのクロック信号と選択信号源からの選択信号とが入力される。アンド回路３１には，常時，クロック信号が入力されている。また，アンド回路３１に選択信号を入力するか否かは任意に決定することができる。このため，アンド回路３１に選択信号が入力されると，このアンド回路３１は，クロックタイミングでオン（アクティブ）になる。他方，アンド回路３１に選択信号が入力されていない状態にあるとき，このアンド回路３１はオフである。
そして，スイッチ回路３２は，アンド回路３１がオフであるときには，第１隣接バス３３を介してデータ信号を出力させる。他方，スイッチ回路３２は，アンド回路３１がオンであるときには，第１隣接バス３３及び第２隣接バス３４を介してデータ信号を分岐して出力させる。
【００１１】
上記構成のように，本発明のバスシステムは，ある機能ブロックから出力されるデータ信号を，第１隣接バス３３を介して他の一つの機能ブロックに伝達するか，それとも，第１隣接バス３３及び第２隣接バス３４を介して他の２つの機能ブロックに同時に伝達するかを，スイッチ回路３２の切り換えにより任意に制御することができる。このように，スイッチ回路３２の切り換えに応じて，データ信号を分岐させることにより，データ信号を他の複数の機能ブロックへと高速且つ低消費電力で伝達することができる
【００１２】
本発明のバスシステムにおいて，第１隣接バス３３は，ある機能ブロック（α）と，これと列方向に隣接する他の機能ブロック（β）とを接続するものであることが好ましい。また，第２隣接バス３４は，ある機能ブロック（α）と，これと行方向に隣接する他の機能ブロック（α´）とを接続するものであることが好ましい。
【００１３】
上記構成のように，本発明の好ましい形態では，行列からなるアレイ状に配置された複数の機能ブロックにおいて，ある機能ブロック（α）から出力されるデータ信号を，この機能ブロック（α）と同列に位置する機能ブロック（β）と，この機能ブロック（α）と異なる列に位置する機能ブロック（α´）とに分岐して伝達する。これにより，データ信号を，行方向と列方向に広く拡散し，様々な場所に位置する機能ブロックに対して効率的に伝達することが可能となる。
【００１４】
本発明のバスシステムは，さらに，別のスイッチ回路３２ｂと，別のアンド回路３１ｂとを含むことが好ましい。別のスイッチ回路３２ｂは，第１隣接バス３３に入力端を有している。また，別のアンド回路３１ｂは，この別のスイッチ回路３２ｂに接続され，クロック信号源からのクロック信号と選択信号源からの選択信号とが入力される。
ここで，別のスイッチ回路３２ｂは，別のアンド回路３１ｂがオフであるときには，第１隣接バス３３を介してデータ信号を出力させる。他方，別のスイッチ回路３２ｂは，別のアンド回路３１ｂがオンであるときには，第１隣接バス３３及び別の第２隣接バス３４ｂを介してデータ信号を分岐して出力させる。
【００１５】
上記構成のように，別のアンド回路３１ｂと別のスイッチ回路３２ｂとをさらに設けることで，データ信号が同時に伝達される範囲を拡張することができる。
【００１６】
本発明のバスシステムにおいて，第１隣接バス３３は，ある機能ブロック（α）と，列方向に隣接する他の機能ブロック（β）とを接続するものである。この場合に，上記した別の第２隣接バス３４ｂは，ある機能ブロック（α）から出力されたデータ信号を，行方向に他の機能ブロック（β）の一つ先に並ぶ更に他の機能ブロック（γ）へと伝達するものであることが好ましい。
【００１７】
上記構成のようにすれば，ある機能ブロック（α）から出力されるデータ信号を，他の機能ブロック（β）及び更に他の機能ブロック（γ）へと同時に（１クロックで）伝達することができる。このため，隣接していない機能ブロック同士の間でも，高速でデータ信号を共有することができる。さらに，本発明では，各機能ブロックに設けられた経路設定レジスタを用いなくても，各スイッチ回路を切り換えるだけで，簡単にデータ信号の出力先を任意に変更できる。従って，隣接していない機能ブロック同士の間でも，高速かつ低消費電力でデータ信号を共有することができる。
【００１８】
本発明のバスシステムにおいて，出力制御部３０は，波形整形回路３５をさらに有することが好ましい。この波形整形回路３５は，機能ブロック１０とスイッチ回路３２との間に配置され，機能ブロック１０から出力されるデータ信号の波形を整形する。
【００１９】
上述のように，本発明のバスシステムでは，ある機能ブロック（α）から出力されるデータ信号を，他の複数の機能ブロック（β，γ，α´等）へと同時に伝達させることができる。ただし，このようにデータ信号を多分岐させる場合に，データ信号の波形が整っていない（すなわち強度が弱い）ものであると，各機能ブロックによってデータ信号を適切に受信できないおそれがある。そこで，上記構成のように波形整形回路３５をさらに設けることで，ある機能ブロック（α）から出力されるデータ信号の波形を整える（すなわち強度を増幅する）ことが可能となる。これにより，各機能ブロックは，データ信号を適切に受信することができる。
【００２０】
本発明のバスシステムにおいて，複数のアンド回路に入力される選択信号は，一つの統一された選択信号源により制御されていることが好ましい。
【００２１】
上述のように，本発明のバスシステムでは，アンド回路に選択信号を入力するか否かによって，スイッチ回路のオン／オフを切り換える。そこで，複数のアンド回路に入力する選択信号を，一つの統一された選択信号源により制御することが好ましい。これにより，この一つの選択信号源（コントローラ）によって，スイッチ回路のオン／オフを切り換えることができる。従って，データ信号の送信先を，一つの選択信号源により，簡単にコントロールすることが可能となる。
【発明の効果】
【００２２】
本発明のバスシステムによれば，従来のメモリ・論理共役システムを，さらに高速かつ低消費電力で機能させることができる。
【図面の簡単な説明】
【００２３】
【図１】図１は，ブロックチップの基本構成の例を示している。
【図２】図２は，機能ブロックの構成の例を示している。
【図３】図３は，機能ブロックのモード階層の例を示している。
【図４】図４は，機能ブロックアレイの構成の例を示している。
【図５】図５は，多分岐型バスシステムの構成の例を示している。
【発明を実施するための形態】
【００２４】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜修正したものも含む。
【００２５】
本発明は，メモリ・論理共役システムに導入されるバスシステムに関する。すなわち，本発明は，複数の機能ブロックを含んで構成されたブロックチップにおいて，各機能ブロックの間でデータ信号の送受信を行うことができるように，各機能ブロックを接続するバスシステムに関するものである。ブロックチップに含まれる各機能ブロックは，万能機能を有している。例えば，機能ブロックは，論理回路にもなり，メモリ回路にもなり，検索回路にもなるブロックである。このような機能ブロックを複数含んで構成されたブロックチップは，メモリ・論理共役システムとも称される。メモリ・論理共役システムとしては，特許文献１（特開２０１０−１５３２８号公報）に開示された構成を適宜参照することができる。
【００２６】
まず，本発明に係るバスシステムが導入されるメモリ・論理共役システム，すなわちブロックチップについて説明する。
【００２７】
図１は，ブロックチップ２０の基本構成の例を示している。ブロックチップ２０は，メモリ回路（ＳＲＡＭなど）を有する複数の機能ブロック１０をアレイ状に配置した構成を有する。このブロックチップ２０は，各機能ブロック１０のアドレスを制御することで論理回路に変換できる機能を有している。ブロックチップ２０は，ジョブ要求に応じて，各機能ブロックのモードを様々な他のモードに動的再構成することが可能である。
【００２８】
なお，本実施の形態では，機能ブロック１０に搭載するメモリ回路としてＳＲＡＭ（Static Random Access Memory）を用いている。ただし，機能ブロック１０に搭載するメモリ回路として，ＳＲＡＭの他に，制御機構を備えた高速ＤＲＡＭ（Dynamic Random Access Memory）又は高速ＮＶＭ（Non Volatile Memory）などの公知のメモリ回路を採用することができる。本願明細書では，本発明の構成を具体的に説明するために，機能ブロック１０に搭載するメモリ回路としてＳＲＡＭを選択した場合を例に挙げて説明を行う。
【００２９】
図１に示されるように，ブロックチップ２０は，複数の機能ブロック１０を行列からなるアレイ状に配置した機能ブロックアレイ１９を有している。例えば，機能ブロックアレイ１９は，２５６ワード×８ビットのメモリ回路（ＳＲＡＭ）を有する機能ブロック１０を，ｎ列×ｍ行配列することによって構築されている。
【００３０】
図１に示されるように，ブロックチップ２０の基本構成は，２５６ワード×８ビットのような比較的小さいメモリ回路（ＳＲＡＭ）を搭載した機能ブロック１０を，ｎ列×ｍ行のアレイ状に配置したものとなっている。そして，この機能ブロック１０のメモリ回路に真理値データを書き込むことで，機能ブロック１０を論理回路として動作させることができる。このように，機能ブロック１０は，少なくともメモリ機能と論理機能を有しており，これらの機能を適宜切り換えることが可能である。機能ブロック１０の機能の切り換えは，図１に示すようなマルチバス１１やバスインターフェース１２（Ｂｕｓ  Ｉ／Ｆ）を介して，真理値データ等の制御信号を各機能ブロック１０に直接伝送することにより行われる。これにより，任意の機能ブロック１０を，ピンポイントで論理回路やメモリ回路として切り換えて機能させることができる。このような意味において，ブロックチップ２０は，機能ブロック１０の機能を動的に再構成することができるようになっている。また，機能ブロック１０に比較的小さい構成のメモリ回路を用いることで，ブロックチップ２０は高速な論理ブロックとして扱うことができる。
【００３１】
具体的に説明すると，図１に示されるように，ブロックチップ２０は，機能ブロックアレイ１９と，デコーダ１３と，制御回路１４と，バスインターフェース１２と，マルチバス１１とを有している。機能ブロックアレイ１９は，上述のように，メモリ回路（ＳＲＡＭ）を搭載した機能ブロック１０を，ｎ列×ｍ行のアレイ状に配置したものである。デコーダ１３は，複数の機能ブロック１０のそれぞれに電気的に接続されている。バスインターフェース１２は，デコーダ１３と制御回路１４のそれぞれに電気的に接続されている。マルチバス１１は，バスインターフェース１２に電気的に接続されている。そして，外部のＣＰＵなどから出力されるアドレス信号，クロック信号，及び制御信号は，マルチバス１１を介してバスインターフェース１２へと伝達され，このバスインターフェース１２を通じて制御回路１４へと入力される。制御回路１４は，デコーダ１３を通じて，アドレス信号や，クロック信号，制御信号を各機能ブロック１０へと伝達する制御を行う。また，図１に示されるように，機能ブロックアレイ１９を有するブロックチップ２０のアドレス空間は，機能ブロック１０内のメモリアドレス１６と拡張アドレス（ＣＥＸ，ＣＥＹの生成）１７とによって表される。
【００３２】
続いて，機能ブロック１０の具体的な構成について説明する。図２は，機能ブロック１０の構成の一例を示したものである。図２に示されるように，機能ブロック１０は，ＳＲＡＭ１８と，経路設定レジスタ２１と，入力制御部２２と，出力制御部３０とを有している。ＳＲＡＭ１８の例は，２５６ワード×８ビットという比較的の小型のメモリである。なお，ＳＲＡＭ１８に代えてＤＲＡＭやＮＶＭを用いることもできる。経路設定レジスタ２１は，入力制御部２２及び出力制御部３０を制御することにより，機能ブロック１０の内部バスの接続（経路設定）を行うことができる。入力制御部２２は，機能ブロック１０のモード切り替えを制御したり，経路設定レジスタ２１の指示に従った経路制御を行う。出力制御部３０は，ラッチやバススイッチ等を含み，これらの制御を行うことで，機能ブロック１０から出力されるデータ信号の伝送先を制御する。出力制御部３０は，ラッチやバススイッチ等の制御を行う回路であり，機能ブロック１０同士をカスケードに接続するＯＵＴ信号や，機能ブロック１０を並列に接続するデータバス２，データバス３等への出力の切り替えを行うことができる。
【００３３】
すなわち，他の機能ブロック１０から出力されたデータ信号は，入力制御部２２を介して，この機能ブロック１０のＳＲＡＭ１８に入力される。また，この機能ブロック１０から出力されるデータ信号は，出力制御部３０を介して他の機能ブロック１０へと伝達される。このため，ＳＲＡＭ１８と入力制御部２２と出力制御部３０は互いに電気的に接続されている。その他，機能ブロック１０は，内部バスとして，アドレスバス（８ビット），制御バス０（ＣＥＸ，Ｒ／Ｗ，Ｓ／Ｒ，ＲＥＧ等），制御バス１（ＣＥＹ等），データバス０（Ｘ１（８ビット）），データバス１（Ｘ０（８ビット）），データバス２（Ｙ０（８ビット）），データバス３（Ｙ１（８ビット））などを有している。
【００３４】
機能ブロック１０を論理回路として機能させる場合，まず，ＳＲＡＭ１８に論理回路の真理値データを書込む。そして，この論理回路への入力値をアドレス信号とし，ＳＲＡＭ１８に格納した真理値データを読み出す。これにより，機能ブロック１０は，論理回路として機能する。また，ＳＲＡＭ１８に入力／出力する信号の経路は，経路設定レジスタ２１及びバススイッチで指定することができる。経路設定レジスタ２１及びバススイッチをＳＲＡＭ１８とは別のアドレスにマッピングすることにより，経路設定レジスタ２１及びバススイッチの内容を，機能ブロック１０の内部バスを介して，ブロックチップ２０の外にあるマルチバス１１から直接書き換えることができる。
【００３５】
また，論理規模に応じて機能ブロック１０間の接続を増やすことにより，所望の論理回路を実現することができる。つまり，ブロックチップ２０のアレイ規模と，マルチバス１１に接続するブロックチップ２０の個数を適切に選ぶことで，多数の機能ブロック１０を効率良く並列に互いに協調しながら動作させることができる。また，ブロックチップ２０内の複数の機能ブロック１０を，この機能ブロック単位でアドレス空間にそれぞれマッピングすることにより，ブロックチップ２０を機能ブロック単位でピンポイントに動的再構成することができる。この機能を利用することで不良箇所を迂回したり，学習機能を備えたシステムを実現したり，あるいは冗長性を持たせた信頼度の高いシステム等を構築したりすることが可能になる。
【００３６】
上記した機能ブロック１０は，外部に配置されたＣＰＵ等からの制御に応じて，メモリ回路や論理回路として機能する。図３は，機能ブロック１０のモード階層を示している。本実施形態において，機能ブロック１０のモードは，（Ａ）強制メモリモードと（Ｂ）システムモードとを含む。（Ａ）強制メモリモードは，（Ａ−１）外部メモリモード（通常メモリ）と，（Ａ−２）経路設定レジスタ書込みモードとを含む。（Ｂ）システムモードは，（Ｂ−１）メモリモードと，（Ｂ−２）ロジックモードとを含む。（Ｂ−１）メモリモードは，（Ｂ−１−１）外部メモリモード（通常メモリ）と，（Ｂ−１−２）経路設定レジスタ書込みモードとを含む。（Ｂ−２）ロジックモードは，（Ｂ−２−１）演算モードと，（Ｂ−２−２）組み合わせ回路モードと，（Ｂ−２−３）内部メモリモード（外部から見えないメモリ）と，（Ｂ−２−４）論理Ｌｉｂモードと，（Ｂ−２−５）経路設定レジスタ情報変更モードとを含む。このように，機能ブロック１０は，メモリ回路と論理回路とが共役したような機能を持つ。このような，メモリ・論理共役システムを実現するためには，多ビットマルチバスコネクションや多ビットデコーダを用いればよい。
【００３７】
具体的に説明すると，図２に示されるように，制御バス０のＳ／Ｒ（Ｓｅｔ／Ｒｅｓｅｔ）信号（第１の制御信号）は強制リセット信号である。機能ブロック１０は，Ｓ／Ｒ信号が“Ｌ（Ｌｏｗ）”レベルにあるときに，（Ａ）強制メモリモードとなり，Ｓ／Ｒ信号が“Ｈ（Ｈｉｇｈ）”レベルにあるときに，（Ｂ）システムモードとなる。（Ａ）強制メモリモードでは，（Ｂ−２）ロジックモードをリセット状態にすることができる。機能ブロックアレイ１９の初期設定時等を除き，Ｓ／Ｒ信号は，基本的に，常に“Ｈ”レベルの状態で使用する。
【００３８】
図３に示すような機能ブロック１０の各モードの設定は，経路設定レジスタ２１の内容と，入力制御部２２内のモードセレクタ及び出力制御部３０内のモードセレクタのフラグ情報とによって行うことができる。また，経路設定レジスタ２１の内容は，（Ｂ−１）メモリモード時において，８ビット単位で，且つ指定した機能ブロック単位でピンポイントに書き換えることができる。また，経路設定レジスタ２１の情報とモードセレクタのフラグ情報には優先関係があり，モードセレクタのフラグ情報は，経路設定レジスタ２１の情報に優先する。これにより，モードセレクタのフラグ情報で経路設定レジスタ２１の情報で指定した機能の一部を停止させたり復帰させたりすることができる。さらに，モードセレクタのフラグ情報は，機能ブロックアレイ１９を管理するデコーダ１３又は機能ブロック１０の論理処理結果により書き換えることができる。
【００３９】
図４は，複数の機能ブロック１０をアレイ状に配置した機能ブロックアレイ１９を概念的に示している。図４に示されるように，機能ブロックアレイ１９に含まれる複数の機能ブロック１０は，それぞれ，バス（隣接バスともいう）を介して互いに接続されている。ある機能ブロック１０から出力されるデータ信号が，どの機能ブロック１０に伝達されるかは，出力制御部３０（バススイッチ）の制御により決定される。出力制御部３０は，ラッチやバススイッチ等の制御を行う回路であり，機能ブロック１０同士をカスケードに接続するＯＵＴ信号や，機能ブロック１０を並列に接続するデータバス等への出力の切り替えを行うことができる。
【００４０】
隣接バスは，基本的に，互いに隣接する機能ブロック１０同士を接続している。これにより，隣接する機能ブロック１０は，隣接バスを介して，互いにデータ信号の送受信を行うことができる。さらに，本発明において，隣接バスは，互いに隣接する機能ブロック１０同士だけでなく，行方向又は列方向に一又は複数個の機能ブロック１０を飛ばした先に配置されている機能ブロック１０をも接続することができる。これにより，機能ブロックアレイ１９に含まれる複数の機能ブロック１０は，隣接する機能ブロック１０以外にも，データ信号を直接伝達することができる。以下では，機能ブロック１０に含まれる出力制御部３０に着目し，機能ブロック１０から出力されるデータ信号を多分岐させて，他の複数の機能ブロック１０へと同時に伝達するための構成について詳しく説明する。
【００４１】
図５は，本発明に係るバスシステムの好ましい実施形態を示している。図５において，破線はクロック信号の伝送経路を示し，点線は選択信号の伝送経路を示し，矢印はデータ信号の伝送経路を示している。クロック信号は，例えば外部に配置されたＣＰＵなどと同期されている。クロック信号の信号源としては，公知のクロック発生器を用いればよい。また，選択信号は，データ信号の伝送経路を制御するための信号として利用される。選択信号の信号源は，統一された一つのコントローラであることが好ましいが，選択信号の信号源は複数存在していてもよい。選択信号の信号源としては，外部のＣＰＵを利用することもできる。選択信号の詳細については後述する。また，データ信号は，機能ブロック１０から出力される情報（データ）を示す信号である。データ信号は，機能ブロック１０が論理回路である場合にはその演算結果の情報が含まれ，また，機能ブロック１０がメモリ回路である場合にはその記憶情報が含まれる。
【００４２】
図５に示されるように，本発明に係るバスシステムは，機能ブロックアレイ１９に含まれる機能ブロック１０同士を接続するものである。図５に示した例では，機能ブロック１０として，ブロックα，ブロックβ，ブロックγ，及びブロックΔ…が含まれている。また，機能ブロック１０として，さらにブロックα´，及びブロックβ´…が含まれている。図５に示した例において，行列からなる機能ブロックアレイ１９のうち，ブロックα，ブロックβ，ブロックγ，及びブロックΔ…は，同じ列に位置する機能ブロックである。また，ブロックα´とブロックβ´…も，同じ列に位置している。ただし，ブロックαの列とブロックα´の列は別の列とされている。また，行列からなる機能ブロックアレイ１９のうち，ブロックαとブロックα´，ブロックβとブロックβ´は，それぞれ同じ行に位置している。また，図５に示した例では，図面が複雑になることを避けるために，ブロックαからデータ信号を出力する場合の例を示している。このような前提のもと，本発明に係るバスシステムについて具体的に説明する。ただし，図５に示した例は，本発明の概念を説明するための一例に過ぎない。つまり，機能ブロックアレイ１９は，さらに複数行及び複数列に並んだ多数の機能ブロック１０によって構築することができる。
【００４３】
図２等に示されるように，複数の機能ブロック１０はそれぞれ，出力制御部３０を有している。各出力制御部３０は，図５に示されるように，アンド回路３１とスイッチ回路３２とを含んで構成されている。
【００４４】
図５に示されるように，アンド回路３１には，クロック信号発生源からのクロック信号と選択信号源からの選択信号とが入力される。アンド回路３１には，基本的に，クロック信号が常時入力されている。また，アンド回路３１には，任意のタイミングで，選択信号を入力することができる。このため，アンド回路３１は，選択信号が入力されることで，クロック信号のクロックタイミングで，オン状態（アクティブ）になる。他方，アンド回路３１は，選択信号が入力されていない状態においては，オフ状態となる。このように，アンド回路３１に選択信号を入力するか否かによって，アンド回路３１のオン／オフを制御することができる。
【００４５】
また，スイッチ回路３２は，アンド回路３１に接続されている。このため，アンド回路３１のオン／オフ状態に応じて，スイッチ回路３２のスイッチ動作が行われる。スイッチ回路３２は，アンド回路３１がオフであるとき（アンド回路３１に選択信号が入力されていないとき）には，ブロックからのデータ信号を，第１隣接バス３３を介して出力させる。他方，スイッチ回路３２は，アンド回路３１がオンであるとき（アンド回路３１に選択信号が入力されているとき）には，ブロックからのデータ信号を，第１隣接バス３３及び第２隣接バス３４を介して分岐して出力させる。ここで，“データ信号を分岐させる”とは，あるデータ信号を，２つの同じ内容のデータ信号に分けることを意味する。スイッチ回路３２は，アンド回路３１がオンである状態において，第１隣接バス３３と第２隣接バス３４とによって同じ内容のデータ信号を伝送させることができる。
【００４６】
スイッチ回路３２は，上述したように，データ信号の非分岐伝送と分岐伝送とを切り換えることができるものであれば，どのような構成であってもよい。ここでは，スイッチ回路３２の具体的な構成の一例を説明する。
【００４７】
図５に示されるように，スイッチ回路３２は，ｎＭＯＳトランジスタ４１とｐＭＯＳトランジスタ４２によって構成されている。図５に示された例では，ｐＭＯＳトランジスタ４２が，電源側に挿入されてプルアップ素子となる。また，ｎＭＯＳトランジスタ４１は，第２隣接バス３４の一部を構成している。このｎＭＯＳトランジスタ４１は，第２隣接バス３４と第１隣接バス３３の分岐点近傍に設けられる。また，第２隣接バス３４において，ｎＭＯＳトランジスタ４１の先には，インバータのドライバ３６が設けられている。このため，アンド回路３１に選択信号が入力されていない状態（オフ状態）では，ｐＭＯＳトランジスタ４２がオンとなっており，電源の電位がインバータのドライバ３６に出力され，第２隣接バス３４にオフ信号が流れている。他方，アンド回路３１に選択信号が入力された状態（オン状態）では，クロックタイミングでアンド回路３１がアクティブになり，このアンド回路３１に繋がっているｐＭＯＳトランジスタ４２がオフとなりｎＭＯＳトランジスタ４１がオンとなる。すると，ブロックから出力されるデータ信号は，第１隣接バス３３を伝送すると共に，ｎＭＯＳトランジスタ４１を通じて，インバータのドライバ３６から出力されて，第２隣接バス３４をも伝送する。第２隣接バス３４を伝送しているデータ信号は，その先にあるブロックのインバータのレシーバに到達する。このようにして，スイッチ回路３２は，ブロックから出力されるデータ信号の非分岐伝送と分岐伝送とを切り換えることができる。
【００４８】
上述した動作は，アンド回路３１とスイッチ回路３２を含む出力制御部３０の基本動作である。続いて，図５に示した具体例を参照して，データ信号を多分岐させる方法について説明する。なお，データ信号の分岐数は，例えば２分岐〜１６分岐程度まで可能である。
【００４９】
図５は，ブロックαから出力されるデータ信号を多分岐させる構成の例を示している。図５に示されるように，ブロックαの同列には，ブロックβ，ブロックγ，ブロックΔ…が設けられている。また，ブロックαが属する列の隣の列には，ブロックα´とブロックβ´…が設けられている。ブロックα´とブロックβ´…は同列に位置する。また，ブロックαとブロックα´は同行に位置し，ブロックβとブロックβ´は同行に位置している。これらの複数のブロックは，それぞれ，アンド回路３１とスイッチ回路３２を含む出力制御部３０を有している。複数のアンド回路３１のそれぞれには，同一のクロック信号源から同一のクロック信号が入力されている。このため，複数のアンド回路３１の動作はクロック信号によって同期されている。また，複数のアンド回路３１には，それぞれ，任意のタイミングで選択信号を入力することができる。どのアンド回路３１に対して選択信号を入力するかという制御は，一つのコントローラによって統制されていることが好ましい。
【００５０】
図５に示されるように，ブロックαから出力されるデータ信号ｄ０は，まず波形整形回路３５に入力される。波形整形回路３５は，データ信号ｄ０の波形を整えて強度を増幅させる。このように，データ信号の送信元（ブロックα）の伝送路に波形整形回路３５を設けることで，データ信号の伝送距離を向上させることができ，結果としてデータ信号の分岐数を増加させることが可能となる。
【００５１】
ブロックαから出力されるデータ信号ｄ０は，波形整形回路３５を経て，スイッチ回路３２ａに到達する。スイッチ回路３２ａには，アンド回路３１ａが接続されている。ここで，このアンド回路３１ａにクロック信号と選択信号Ａが入力されている場合，データ信号ｄ０は，第１隣接バス３３ａを伝送するデータ信号ｄ１と，第２隣接バス３４ａを伝送するデータ信号ｄ０´とに分岐される。なお，ここで，データ信号ｄ１とデータ信号ｄ０´は，データの内容は実質的に同一である。このようにして，１度目の分岐が達成される。他方，アンド回路３１ａに選択信号Ａが入力されていない場合，データ信号ｄ０は，データ信号ｄ１となって第１隣接バス３３ａのみを伝送する。つまり，選択信号Ａをアンド回路３１ａに入力するか否かを制御することにより，データ信号ｄ０を分岐させるか否かを任意に決定することができる。
【００５２】
図５に示されるように，ブロックαから出力されたデータ信号ｄ１は，第１隣接バス３３ａを通じて，ブロックβに入力される。ブロックαとブロックβは，列方向に隣接している。また，データ信号ｄ１が伝搬する第１隣接バス３３ａには，ブロックβのスイッチ回路３２ｂの入力端が設けられている。このブロックβのスイッチ回路３２ｂには，アンド回路３１ｂが接続されている。ここで，ブロックβのアンド回路３１ｂにクロック信号と選択信号Ｂが入力されている場合，データ信号ｄ１は，第１隣接バス３３ａを通じてそのままブロックβに入力されるものと，ブロックβの第２隣接バス３４ｂを伝送するデータ信号ｄ２とに分岐される。なお，ブロックβに入力されるデータ信号ｄ１と，ブロックβのスイッチ回路３２ｂで分岐されたデータ信号ｄ２は，データの内容は実質的に同一である。このようにして，２度目の分岐が達成される。他方，ブロックβのアンド回路３１ｂに選択信号Ｂが入力されていない場合，データ信号ｄ１は，分岐されずに，第１隣接バス３３ａを介してブロックβに入力される。このように，選択信号Ｂをアンド回路３１ｂに入力するか否かを制御することにより，２度目の分岐を行うか否かを任意に決定することができる。
【００５３】
また，ブロックβのスイッチ回路３２ｂによって分岐されたデータ信号ｄ２は，ブロックβの第２隣接バス３４ｂを通じて，ブロックγに入力される。ブロックβとブロックγは，列方向に隣接している。また，データ信号ｄ２が伝搬する第２隣接バス３４ｂには，ブロックγのスイッチ回路３２ｃの入力端が設けられている。このブロックγのスイッチ回路３２ｃには，アンド回路３１ｃが接続されている。ここで，ブロックγのアンド回路３１ｃにクロック信号と選択信号Ｃが入力されている場合，データ信号ｄ２は，ブロックβの第２隣接バス３４ｂを通じてそのままブロックγに入力されるものと，ブロックγの第２隣接バス３４ｃを伝送するデータ信号ｄ３とに分岐される。なお，ブロックγに入力されるデータ信号ｄ２と，ブロックγのスイッチ回路３２ｃで分岐されたデータ信号ｄ３は，データの内容は実質的に同一である。このようにして，３度目の分岐が達成される。他方，ブロックγのアンド回路３１ｃに選択信号Ｃが入力されていない場合，データ信号ｄ２は，分岐されずに，ブロックβの第２隣接バス３４ｂを介してブロックγに入力される。このように，選択信号Ｃをアンド回路３１ｃに入力するか否かを制御することにより，３度目の分岐を行うか否かを任意に決定することができる。
【００５４】
さらに，ブロックγのスイッチ回路３２ｃによって分岐されたデータ信号ｄ３は，ブロックγの第２隣接バス３４ｃを通じて，ブロックΔに入力される。ここでも，上述した方法と同様にして，ブロックΔのアンド回路３１ｄに選択信号Ｄを入力することにより，ブロックΔのスイッチ回路３２ｄを利用して４度目の分岐を行うことができる。
【００５５】
このように，列方向に並ぶ複数のブロック（α，β，γ，Δ…）のそれぞれに，アンド回路３１とスイッチ回路３２を設けることで，データ信号を多分岐させることができる。例えば，選択信号Ｂ，Ｃ，Ｄを同時に入力することで，ブロックαから出力されたデータ信号を，ブロックβ，ブロックγ，及びブロックΔで共有することができる。また，選択信号Ｂ，Ｃ，Ｄを同時に入力することで，ブロックαからブロックΔまでのデータ信号の伝達を，１クロックで行うことが可能である。このため，データ信号の伝達処理の高速化を実現することができる。さらに，選択信号の制御を一つのコントローラに集約することで，データ信号の伝達経路を各ブロックのレジスタ等によって判断する必要がなくなる。このため，統一されたコントローラによって選択信号を制御することにより，データ信号の多分岐を低消費電力で実現することができる。特に，データ信号を８分岐以上させるような場合には，単一のコントローラによる集中型制御を行うことで，複雑高度な分岐処理を単純化することができる。また，各ブロックはバスの接続端のスイッチ間でオープン（ハイインピーダンス）接続となるため，低消費電力で高速に動作することができる。
【００５６】
続いて，データ信号の発信源であるブロックαから，行方向に隣接するブロックα´にデータ信号を分岐させた場合を考える。つまり，上述したように，ブロックαのアンド回路３１ａにクロック信号と選択信号Ａが入力されている場合，ブロックαから出力されるデータ信号ｄ０は，第１隣接バス３３ａを伝送するデータ信号ｄ１と，第２隣接バス３４ａを伝送するデータ信号ｄ０´とに分岐される。ここで，図５に示されるように，第２隣接バス３４ａを伝搬するデータ信号ｄ０´は，ブロックαと行方向に隣接するブロックα´に入力される。このように，ブロックαから出力されるデータ信号ｄ０は，列方向と行方向の両方に分岐されるようになっている。
【００５７】
ブロックαのスイッチ回路３２ａで分岐されたデータ信号ｄ０´は，ブロックα´に入力される。また，ブロックα´に入力されたデータ信号ｄ０´が，そのままブロックα´から出力された場合を考える。勿論，ブロックα´では，データ信号ｄ０´を加工（例えば論理演算処理）して出力することもできる。ブロックα´から出力されるデータ信号ｄ０´は，波形整形回路３５に入力される。ここに波形整形回路３５を設けることで，ブロックα´の列に属する他のブロックに対し，効果的にデータ信号を伝達することができる。ブロックα´から出力されるデータ信号ｄ０´は，波形整形回路３５を経て，スイッチ回路３２ａ´に到達する。スイッチ回路３２ａ´には，アンド回路３１ａ´が接続されている。ここで，このアンド回路３１ａ´にクロック信号と選択信号Ａ´が入力されている場合，データ信号ｄ０´は，第１隣接バス３３ａ´を伝送するデータ信号ｄ１´と，第２隣接バス３４ａ´を伝送するデータ信号ｄ０´´とに分岐される。なお，ここで，データ信号ｄ１´とデータ信号ｄ０´´は，データの内容は実質的に同一である。このようにして，さらなる分岐が達成される。他方，アンド回路３１ａ´に選択信号Ａ´が入力されていない場合，データ信号ｄ０´は，データ信号ｄ１´となって第１隣接バス３３ａ´のみを伝送する。つまり，選択信号Ａ´をアンド回路３１ａ´に入力するか否かを制御することにより，データ信号ｄ０´を分岐させるか否かを任意に決定することができる。
【００５８】
ブロックα´から出力されたデータ信号ｄ１´は，第１隣接バス３３ａ´を通じて，ブロックβ´に入力される。ブロックα´とブロックβ´は，列方向に隣接している。そして，ここでも，上述した方法と同様にして，ブロックβ´のアンド回路３１ｂ´に選択信号Ｂ´を入力することにより，ブロックβ´のスイッチ回路３２ｂ´を利用してさらなる分岐を行うことができる。
【００５９】
上記のように，ブロックαから出力されるデータ信号は，このブロックαと同列のブロック（β，γ，Δ…）だけでなく，他の列に属するブロック（α´，β´）にも分岐して伝達することが可能となる。このような回路の仕組みをさらに拡張すれば，機能ブロックアレイ１９の広範囲に亘って，高速且つ低消費電力でデータ信号を共有することができる。
【００６０】
上記ように，本発明のバスシステムによれば，データ信号を多分岐させることにより，多数の機能ブロックで同じデータを共有することができる。例えば，図５に示された例において，ブロックαから出力されるデータ信号を３分岐させて，ブロックβ，ブロックγ，及びブロックΔに同時に入力する場合を考える。この場合，例えば，ブロックβでは，ブロックαから出力された元データの処理を行うことができる。また，ブロックγでは，その元データと，すでに処理済みの前データとの差分処理を行うことができる。さらに，ブロックΔでは，その元データと，すでに処理済みの前々データとの差分処理を行うことができる。このように，本発明のバスシステムを利用すれば，高度な差分処理を並列的に行うことができるため，処理時間を大幅に短縮することができる。このような並列差分処理は，高度な面的又は立体的位相検出や，その制御に応用することができる。例えば，高速並列差分処理は，画像データや音声データなどを処理するにあたり，現状解析（例えば原語の理解）と未来予測（例えば危険物察知）のベクトル演算を行う際に有効である。
【００６１】
また，例えば，データ信号を２分岐させるだけでも，データのミラー反転処理や，優先選択的記憶処理，ミラー解析を効果的に行うことができる。また，データアクセスの高速化も期待できる。さらには，対称性や優先性を必要とする処理（内容優先と時間優先の使い分けを必要とする処理）において，メモリアクセスの高速化を実現できる。
【００６２】
また，データ信号を多分岐させることで，ベクトル（行列式）やロングワードを分割並列演算することができる。また，データの多分岐することで演算処理の高速化及び効率化を図ることができるため，科学技術計算にも有効である。また，データの分岐により，オーバーラップ演算処理も容易に行うことができる。さらには，同じデータを多数の機能ブロックによって演算処理を行うことができるため，機能ブロックのマルチ接続により，トラフィックネックが解消される。なお，ここに挙げた本発明のバスシステムのメリットは一例に過ぎない。本発明のバスシステムは，その他様々な演算処理に応用することが可能であり，無数のメリットがあるといえる。
【００６３】
また，選択信号の系統について説明する。各アンド回路に入力する選択信号の選択は，例えば，図３に示した，経路設定レジスタ書き込みモード（２箇所）の際に行われる場合と，経路設定レジスタ情報変更モードの際に行われる場合とがある。前者は，セットアップモードであり，回路全体を必要なクロック数を経て作業が行われる。後者は，動作中の動的再構成を１クロックで行う必要があり，選択信号の１クロックで及ぶ範囲を規定する必要がある。
【００６４】
例えば，選択信号の選択が経路設定レジスタ情報変更モードの際に行われる場合，１クロックで選択信号が動作可能なブロック範囲を規定し，そのブロック群ごとに選択信号グループが分割されて，必要クロック数で書き込みや変更が行われる。まず，同期範囲のブロック数について規定する。すなわち，選択信号の及ぶ範囲は次に規定するしきい値に到達するまでの遅延時間ｔｖｔｈがクロックの周期ｔｐｗの１／５の範囲であることを必要であれば規定する。これにより，同期で動作するブロックの範囲が決まり，その範囲は同期動作をする。
・しきい値：（１／５）ｔｐｗ≧ｔｖｔｈ＝ｎｔｐｄ＋ｎＲＣ＋ｎｔｓｗ
ここで，“ｎ”はスイッチを通過する段数であり，“ｔｐｄ”は選択信号発生ドライバからスイッチまでの線路の遅延時間，あるいはスイッチ間の線路の遅延時間であり，“ＲＣ”はスイッチ及び寄生容量とそこまでの配線抵抗による時定数であり，“ｔｓｗ”はスイッチの動作遅延である。
【００６５】
例えば，１Ｇｂｐｓのデータレートの信号のクロック周期は２ｎｓであり，ｔｐｗ＝４００ｐｓとなる。仮に，２８ｎｍプロセスのチップ，クロック１Ｇｂｐｓである場合を考えると，１ブロックの最大線長は３００μｍがとなってリピータを介さない長さとなり，ｔｐｄ＝２ｐｓ，ＲＣ＝１５ｐｓ，ｔｓｗ＝１５ｐｓ（配線最大長さ，ＲＣ，ｔｓｗはＲＴＬ設計のバークレイモデルから推定）とすると，その合計は３２ｐｓとなり，ｎ≦１１が得られる。ブロック１１段は，前後左右の範囲の任意に渡る制限である。設計上は正方形で区切ることが常識的であり，２の平方根で割った段数すなわち，８ブロック×８ブロックの同期範囲となる。十分な機能を満足することがわかる。当然ながら，さらなる高速動作を期待するのであれば，式の各パラメータを小さくする努力をすれば良い。
【００６６】
同期ブロック間の相互作用は通常の非同期回路で制御すればよく，同期ブロック群との間はツリー的に分岐したディマルチプレクサで必要クロック数によりレジスタ入力を変化させることで，同期ブロック間の相互作用を制御できる。もちろん，経路設定レジスタ書き込みモードであっても，上記の経路設定レジスタ情報変更モードと同じように，１クロックで動的再構成をすることは可能である。
【００６７】
以上，本願明細書では，本発明の内容を表現するために，図面を参照しながら本発明の実施形態の説明を行った。ただし，本発明は，上記実施形態に限定されるものではなく，本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
【産業上の利用可能性】
【００６８】
本発明は，高速かつ低消費電力で動作するバスシステムに関する。従って，本発明は，コンピュータ関連産業において広く利用することができる。
【符号の説明】
【００６９】
１０…機能ブロック    １１…マルチバス            １２…バスインターフェース
１３…デコーダ        １４…制御回路              １６…メモリアドレス
１７…拡張アドレス    １８…ＳＲＡＭ              １９…機能ブロックアレイ
２０…ブロックチップ  ２１…経路設定レジスタ      ２２…入力制御部
３０…出力制御部      ３１…アンド回路            ３２…スイッチ回路
３３…第１隣接バス    ３４…第２隣接バス          ３５…波形整形回路
３６…ドライバ        ４１…ｎＭＯＳトランジスタ  ４２…ｐＭＯＳトランジスタ
【図１】
0006434368.tif 000002
【図２】
0006434368.tif 000003
【図３】
0006434368.tif 000004
【図４】
0006434368.tif 000005
【図５】
0006434368.tif 000006