(57)【要約】【課題】動的にコンフィグレーション情報が変更可能なＬＳＩにおいて、コンフィグレーション情報によらず動作周波数を一定にでき、かつ、セル内の演算器を有効に活用可能な、基本セルを提供する。【解決手段】複数のデータ入力ノードに接続される入力スイッチＩＳＷと、複数のデータ出力ノードに接続される出力スイッチＯＳＷと、入力スイッチＩＳＷと出力スイッチＯＳＷとの間に演算器ＡＬＵ及び演算結果用フリップ・フロップＣＦＦ０とを有する第1データパスと、入力スイッチＩＳＷと出力スイッＯＳＷチとの間に配線用フリップ・フロップを有する第2データパスとを具備し、演算結果用フリップ・フロップＣＦＦは、演算器ＡＬＵの演算結果データを格納し、配線用フリップ・フロップは、前記複数のデータ入力ノードの何れかに入力されたデータを保持するように構成する。【選択図】図２
2005044329.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ入力ノードに接続される入力スイッチと、
複数のデータ出力ノードに接続される出力スイッチと、
前記入力スイッチと前記出力スイッチとの間に演算器及び第１データ保持回路とを有する第1データパスと、
前記入力スイッチと前記出力スイッチとの間に第2データ保持回路とを有する第2データパスとを具備し、
前記第1データ保持回路は、前記演算器の演算結果データを格納し、前記第2データ保持回路は、前記複数のデータ入力ノードの何れかに入力されたデータを保持することを特徴とする半導体集積回路。
【請求項２】
請求項１において、
前記半導体集積回路は、前記入力スイッチにおける前記複数のデータ入力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第1入力スイッチ選択情報、前記出力スイッチにおける前記複数のデータ出力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第１出力スイッチ選択情報及び前記演算器の機能を設定するための第１演算機能情報を保持する第1メモリを更に具備することを特徴とする半導体集積回路。
【請求項３】
請求項２において、
前記演算器は、第1演算回路と、前記第1演算回路と異なる種類の演算を行う第2演算回路とを有し、前記第１演算機能情報に従って、前記第1演算回路を用いて演算を行うか前記第2演算回路を用いて演算を行うかが決定されることを特徴とする半導体集積回路。
【請求項４】
請求項２において、
前記半導体集積回路は、前記入力スイッチにおける前記複数のデータ入力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第２入力スイッチ選択情報、前記出力スイッチにおける前記複数のデータ出力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第2出力スイッチ選択情報及び前記演算器の機能を設定するための第２演算機能情報を保持するための第２メモリを更に具備し、前記第1メモリに保持される情報と前記第2メモリに保持される情報の何れか一方を選択して演算処理を行うことを特徴とする半導体集積回路。
【請求項５】
請求項４において、
前記半導体集積回路は、前記第1メモリに保持される情報に従って演算処理を行っている際に、前記第2メモリへの前記第２入力スイッチ選択情報、前記第２出力スイッチ選択情報及び前記第２演算機能情報の書込みが可能であり、前記第2メモリに保持される情報に従って演算処理を行っている際に、前記第1メモリへの前記第1入力スイッチ選択情報、前記第1出力スイッチ選択情報及び前記第1演算機能情報の書込みが可能であることを特徴とする半導体集積回路。
【請求項６】
請求項２において、
前記第1メモリは、複数ビットの記憶素子を有し、
前記複数ビットの記憶素子の夫々は、アドレスにより指定可能とされることを特徴とする半導集積回路。
【請求項７】
請求項１において、
前記半導体集積回路は、複数の基本セルがアレイ状に配置されるセル・アレイを更に具備し、
前記複数の基本セルの夫々は、前記入力スイッチ、前記出力スイッチ、前記第1データパス及び前記第2データパスを含むことを特徴とする半導体集積回路。
【請求項８】
請求項７において、
前記複数の基本セルの夫々は、前記入力スイッチにおける前記複数のデータ入力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第1入力スイッチ選択情報、前記出力スイッチにおける前記複数のデータ出力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第１出力スイッチ選択情報及び前記演算器の機能を設定するための第１演算機能情報を保持するためのメモリを更に含むことを特徴とする半導体集積回路。
【請求項９】
請求項８において、
前記半導体集積回路は、前記複数の基本セルの夫々に含まれる前記メモリに前記第1入力スイッチ選択情報、前記第１出力スイッチ選択情報及び前記第１演算機能情報の書込みを制御するためのコントローラを更に具備することを特徴とする半導体集積回路。
【請求項１０】
請求項９において、
前記半導体集積回路は、処理すべきデータを格納するデータメモリを更に具備し、前記セル・アレイは、前記データメモリに格納されたデータが入力されることを更に具備することを特徴とする半導体集積回路。
【請求項１１】
第１基本セル、第２基本セル及び第３基本セルを含む複数の基本セルがアレイ状に配置されるセル・アレイを具備する半導体集積回路であって、
前記複数の基本セルの夫々は、第１データパスと第２データパスとを有し、
前記第２基本セルは、前記第１基本セルと前記第３基本セルの間に配置され、
前記第１データパスは、演算回路を含み、前記演算回路は、入力されたデータに対して所定の演算を行った演算結果データを出力し、
前記第２データパスは、入力されたデータを出力し、
前記半導体集積回路は、前記第１基本セルにおいて入力されたデータを演算し、その演算結果データを用いて前記第３基本セルにおいて演算を行う場合に、前記第１基本セルが出力する前記演算結果データを前記第２基本セルを介して前記第３基本セルに伝達し、
前記複数の基本セルの夫々に含まれる前記第１データパスと前記第２データパスは、並列して動作可能であることを特徴とする半導体集積回路。
【請求項１２】
請求項１１において、
前記半導体集積回路は、前記第１基本セルが出力する前記演算結果データを前記第２基本セルを介して前記第３基本セルに伝達する場合に、前記演算結果データは、前記第２基本セルにおいて少なくとも１クロック・サイクル保持されることを特徴とする半導体集積回路。
【請求項１３】
請求項１２において、
前記複数の基本セルの夫々は、入力されたデータを用いて演算を行う場合に、１クロック・サイクルで演算結果データを出力することを特徴とする半導体集積回路。
【請求項１４】
請求項１１において、
前記第１データパスは、前記演算結果データを１クロック・サイクル保持するための第１データ保持回路を更に有し、
前記第２データパスは、入力されたデータを１クロック・サイクル保持するための第２データ保持回路を更に有することを特徴とする半導体集積回路。
【請求項１５】
請求項１１において、
前記第１データパスに含まれる演算回路は、異なる種類の演算を行うことが可能であることを特徴とする半導体集積回路。
【請求項１６】
複数の基本セルをアレイ状に配置したセル・アレイを具備する半導体集積回路であって、
前記複数の基本セルの夫々は、入力されたデータを演算処理し、その演算結果データを出力する第１データパスと、入力されたデータを出力する第２データパスとを有し、
前記複数の基本セルの夫々は、前記第１データパスを介して出力する場合であっても前記第２データパスを介して入力されたデータを出力する場合であっても、データが入力された後、１クロック・サイクル経過後に前記演算結果データ又は入力されたデータを出力することを特徴とする半導体集積回路装置。
【請求項１７】
請求項１６において、
前記第１データパスは、前記演算結果データを保持するための第１データ保持回路を更に有し、前記第２データパスは、入力されたデータを保持するための第２データ保持回路を有し、前記第１データ保持回路及び前記第２データ保持回路は、前記複数の基本セルのうち対応する基本セルにデータが入力された後、１クロック・サイクル経過後に保持したデータを出力することを特徴とする半導体集積回路。
【請求項１８】
請求項１６において、
前記第１データパスは、演算回路を有し、
前記演算回路は、異なる種類の演算が可能な構成であることを特徴とする半導体集積回路。
【請求項１９】
請求項１８において、
前記演算回路は、第１演算回路と前記第１演算回路と異なる演算を行う第２演算回路を含み、前記第１演算回路と前記第２演算回路を切り換えることにより異なる種類の演算を行うことを特徴とする半導体集積回路。
【請求項２０】
請求項１９において、
前記複数の基本セルの夫々は、前記演算回路が行う演算の種類を設定するための情報を保持するメモリを更に有することを特徴とする半導体集積回路。
【請求項２１】
複数のデータ入力ノードに接続される入力スイッチと、
複数のデータ出力ノードに接続される出力スイッチと、
前記入力スイッチと前記出力スイッチとの間に演算器及び第１データ保持回路とを有する第1データパスと、
前記入力スイッチと前記出力スイッチとの間に第2データ保持回路とを有する第2データパスと、
前記入力スイッチと前記出力スイッチとの間に保持回路を持たない第３データパスとを具備し、
前記第1データ保持回路は、前記演算器の演算結果データを格納し、前記第2データ保持回路は、前記複数のデータ入力ノードの何れかに入力されたデータを保持し、前記第３データパスは、前記複数のデータ入力ノードの何れかに入力されたデータを転送することを特徴とする半導体集積回路。
【請求項２２】
請求項２１において、
前記半導体集積回路は、複数の基本セルがアレイ状に配置されるセル・アレイを更に具備し、
前記複数の基本セルの夫々は、前記入力スイッチ、前記出力スイッチ、前記第1データパス、前記第2データパス、及び前記第３データパスを含むことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関し、特に動的にコンフィグレーション情報が変更可能なＬＳＩおよび二次元アレイに関し、アレイを構成する基本セルの構造に関する。
【背景技術】
【０００２】
近年、情報処理機器の普及と高性能化に伴い、様々なアプリケーションが登場しており、これらアプリケーションはソフトウェアで記述されＣＰＵで実行される形態が主流となっている。ところが、アプリケーションの中には現在汎用的に用いられているプロセッサよりも高度な演算処理能力を要求するものもあり、プロセッサに対して、より一層の処理能力の向上が要求されている。現在、半導体製造技術の進歩によりＬＳＩで実現できる回路規模が拡大しており、大きな回路を有効利用したＬＳＩが求められている。
【０００３】
汎用性を保ちつつ、大きな回路を有効利用して処理能力を向上させているＬＳＩとして、ＦＰＧＡに代表されるような、ハードウェアをどのように構成するかを指定したコンフィグレーション情報を変更することで動作を変えるＬＳＩが、特許文献１に開示されている。かかる先行技術では論理セルと、配線領域とを含んでセル・アレイを構成する。各セルは配線領域内で、隣接するセルへ接続する配線や、離れた場所のセルに接続する長距離配線で接続されており、各配線は配線領域内のスイッチにより接続するか否かが選択できるように構成される。こうした構成を持つＬＳＩではセルの動作や、配線のスイッチのオン、オフを決めるコンフィグレーション情報を変更することで異なる処理を行うことができる。また、実行する処理に応じてコンフィグレーション情報を変更することで汎用プロセッサよりも専用ハードウェアに近い構成となるため高速に処理を行うことが可能である。
【０００４】
また、近年、特許文献２に示されるようなリコンフィギュアブルＬＳＩと呼ばれる技術が注目されてきている。上述のＦＰＧＡは、ＮＡＮＤやＮＯＲ回路等の論理ゲートをアレイ状に配置し、その接続配線を切り換えるのに対し、リコンフィギュアブルＬＳＩでは、論理ゲートでなく演算ユニットをアレイ状に配置し、コンフィグレーション情報により演算ユニットの機能及び各演算ユニット間の配線を切り換える技術である。
【０００５】
【特許文献１】国際公開９４／１０７５４号パンフレット
【０００６】
【特許文献２】米国特許公開公報２００１／３５７７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の方法では、配線領域内で、隣接するセルへ接続する隣接配線や、離れた場所のセルに接続する長距離配線を用いてセル間を接続する。また、各セル間のデータ入力タイミングを合わせるためのフリップ・フロップ等は、論理ゲートを構成する領域と異なる場所に設けられることが多い。従って、コンフィグレーション情報によって、各セル間、又は、データの転送タイミングを調整するフリップ・フロップに接続するための配線の長さが変わることになる。このことは、コンフィグレーション情報によって、1クロック・サイクルでデータが転送されるべき配線長が変わることを意味する。言い換えれば、ＬＳＩの最大動作周波数は、１クロック・サイクルで転送しなければならない配線の長さに関連するため、コンフィグレーション情報によりＬＳＩの最大動作周波数が異なることになる。このような状況においては、コンフィグレーション情報を変更するたびにＬＳＩの動作周波数を変更しなくてはならなくなってしまう。現実には、動作周波数を逐次変更することは困難であるため、低い方の動作周波数に合わせて回路を動作させることが多い。即ち、従来の方法ではコンフィグレーション情報により各セル間、又は、フリップ・フロップまでの配線の長さが変更されるためチップの最大動作周波数を向上させることが困難になるという問題があることに本発明者は気が付いた。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば以下の通りである。
複数のデータ入力ノードに接続される入力スイッチと、複数のデータ出力ノードに接続される出力スイッチと、前記入力スイッチと前記出力スイッチとの間に演算器及び第１データ保持回路とを有する第1データパスと、前記入力スイッチと前記出力スイッチとの間に第2データ保持回路とを有する第2データパスとを具備し、前記第1データ保持回路は、前記演算器の演算結果データを格納し、前記第2データ保持回路は、前記複数のデータ入力ノードの何れかに入力されたデータを保持するように構成する。
【０００９】
更に、望ましくは、前記半導体集積回路は、前記入力スイッチにおける前記複数のデータ入力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第1入力スイッチ選択情報、前記出力スイッチにおける前記複数のデータ出力ノードと前記第1データパス及び前記第2データパスとの接続関係を設定するための第１出力スイッチ選択情報及び前記演算器の機能を設定するための第１演算機能情報を保持する第1メモリを更に具備する。
【００１０】
更に望ましくは、前記演算器は、第1演算回路と、前記第1演算回路と異なる種類の演算を行う第2演算回路とを有し、前記第１演算機能情報に従って、前記第1演算回路を用いて演算を行うか前記第2演算回路を用いて演算を行うかが決定される。
上記の第1データ保存回路と第２データ保存回路は、データ転送を行うために、基本セル一個の通過に１クロックを要する。この改善手段として、セル通過時に、保存回路を介さずに、スルーでセル内を通過するパスを設ける方法も提示する。
【発明の効果】
【００１１】
高速に動作可能な半導体集積回路を実現することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明による代表的な実施例を図面に従って詳細に説明する。なお、以下においては、同じ参照番号、記号は同じものもしくは類似のものを表わすものとする。また、特に制限されないが、実施例の各ブロックを構成する回路素子は、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板上に形成される。
【００１３】
図１は、システムＬＳＩの一つの回路モジュールを示すものであり、本願発明を適用した回路ブロックを示す実施例である。特に制限されないが、この回路モジュールは、動的にコンフィグレーション情報が変更可能な回路を示したものであり、図1に示される各ブロックは、１個の半導体基板上に形成される。
【００１４】
ＩＰ１００１は、基本セル１００を一単位として８行８列で構成されるセル・アレイと、コンフィグレーション・コントローラＣＣＮＴと、ローカル・メモリＭＥＭ０およびＭＥＭ１と、メモリ・コントローラＭＣＮＴ０およびＭＣＮＴ１と、ＩＰコントローラＩＰＣＮＴを含んで構成される。また、コンフィグレーション・コントローラＣＣＮＴとメモリ・コントローラＭＥＣＮＴと、ＩＰコントローラＩＰＣＮＴはオンチップ・バスＯＣＢに接続される。オンチップ・バスＯＣＢは、データバスとアドレスバスとを含み、図示しない他の回路モジュールと共通に接続される。
【００１５】
コンフィグレーション・コントローラＣＣＮＴは、コンフィグレーション情報の各基本セル１００への転送を制御する。メモリ・コントローラＭＣＮＴは、ＩＰコントローラＩＰＣＮＴからの命令を受けて、外部メモリとローカル・メモリＭＥＭ間のデータの送受信と、ローカル・メモリＭＥＭからセル・アレイへのデータの供給と、セル・アレイから出力されるデータのローカル・メモリＭＥＭへの保存を行う。ＩＰコントローラは与えられたプログラムを実行し、コンフィグレーション・コントローラＣＣＮＴの制御と、メモリ・コントローラＭＣＮＴの制御を行う。ローカル・メモリＭＥＭ０，ＭＥＭ１を設けることにより、セル・アレイ部分のコンフィグレーション情報を変更しながらさまざまな処理を行う際に、外部メモリとの転送を減らし、セル・アレイ部分を高速に動作させ易くなる。また、メモリ・コントローラＭＣＴＮ０，ＭＣＴＮ１やコンフィグレーション・コントローラＣＣＮＴは、図示しない他の制御回路、例えば中央処理装置（ＣＰＵ）から直接命令を受けて動作することも可能である。しかし、ＩＰコントローラＩＰＣＮＴを設け、ＩＰコントローラＩＰＣＮＴにメモリ・コントローラＭＣＴＮ０，ＭＣＴＮ１やコンフィグレーション・コントローラＣＣＮＴの制御を行わせることにより、ＣＰＵ等の他の制御回路の負担を軽減することができる。また、ＩＰコントローラＩＰＣＮＴに処理を受け渡した後、ＣＰＵ等の他の制御回路は、並列して他の処理をすることが可能となり、システムＬＳＩ全体としての処理性能の向上を図ることができる。
1. 第一の実施の形態
以下では、第一の実施の形態として、データ転送のために、基本セル内の保存回路である配線フリップ・フロップを利用する方法を述べる。
【００１６】
図２は、図１における基本セル１００の実施の１形態を示すブロック図である。基本セル１００は、入力スイッチＩＳＷと、出力スイッチＯＳＷと、演算器ＡＬＵと、演算結果格納用フリップ・フロップＣＦＦと、配線用フリップ・フロップＲＦＦと、コンフィグレーション・メモリＣＭと、クロック信号入力線ＣＬＫと、リセット信号入力線ＲＳＴと、隣接セルからデータが入力される複数のデータ入力ノードの夫々に接続される入力線１０１と、隣接セルへデータを出力する複数のデータ出力ノードの夫々に接続される出力線１０２と、コンフィグレーション情報選択信号線ＣＳと、コンフィグレーション情報変更用データ入力線ＤＴと、セル選択線ＳＸおよびＳＹと、コンフィグレーション情報変更用アドレス入力線ＡＤとを含んで構成される。また、入力されたデータは、演算器ＡＬＵ及び演算結果用フリップ・フロップＣＦＦを含む第１のデータパス又は配線用フリップ・フロップＲＦＦを含む第２のデータパスを介して伝達される。隣接セルからの入力線１０１、および、隣接セルへの出力線１０２は1本が８ビットの束で、隣接する上下左右のセルに各２本ずつ接続される。コンフィグレーション情報選択信号線ＣＳ、コンフィグレーション情報変更用データ入力線ＤＴ、セル選択線ＳＸおよびＳＹ、コンフィグレーション情報変更用アドレス入力線ＡＤは、それぞれコンフィグレーション・コントローラＣＣＮＴから出力される。
【００１７】
なお、図２の構成では演算器ＡＬＵ１つ、演算結果格納用フリップ・フロップＣＦＦ２つ、配線フリップ・フロップＲＦＦ２つで構成されているが、これらの数はここで示した数に限定されない。また、隣接セルからの入力線１０１と、隣接セルへの出力線１０２は上下左右のセルへ８ビットの束で各２本ずつとしているが、これらの線は１本あたりのビット数、隣接セルへ接続する本数共にここで示した数に限定されない。
【００１８】
入力スイッチＩＳＷの入力は、隣接セルからの入力線１０１と、自セル内の演算結果格納用フリップ・フロップＣＦＦからの出力線と、自セル内の配線フリップ・フロップＲＦＦからの出力線が接続され、出力は演算器ＡＬＵおよび配線フリップ・フロップＲＦＦの入力線に接続される。入力スイッチＩＳＷは、動作時には、複数の入力ノードのうちコンフィグレーション・メモリＣＭで指定された入力を選択して、演算器ＡＬＵ又は配線用フリップ・フロップＲＦＦ０、ＲＦＦ１に出力する。
【００１９】
出力スイッチＯＳＷの入力は演算結果格納フリップ・フロップＣＦＦと配線フリップ・フロップＲＦＦの出力が接続され、出力は隣接セルへの出力線１０２に接続される。出力スイッチＯＳＷは、動作時にはコンフィグレーション・メモリＣＭで指定された入力を選択して出力線１０２に出力する。演算器ＡＬＵは、入力されたデータに対して、コンフィグレーション・メモリＣＭで指定された演算を実行し出力する。
【００２０】
配線フリップ・フロップＲＦＦおよび演算結果格納用フリップ・フロップＣＦＦは、セルに入力されるクロック信号ＣＬＫに従って（同期して）動作し、リセット信号ＲＳＴによりリセットされる。リセット信号ＲＳＴは、チップの起動時と、新しいコンフィグレーションに切り換えられた時にも入力されることがある。
【００２１】
コンフィグレーション・メモリＣＭは、セル外部よりセルの動作を指定するコンフィグレーション情報を受けとり、内部の記憶素子に記憶する。ここで、コンフィグレーション・メモリＣＭに保持されるコンフィグレーション情報として、特に制限されないが、演算器ＡＬＵの機能情報、入力スイッチＩＳＷ及び出力スイッチＯＳＷの選択情報、演算器ＡＬＵにおいて使用される定数等がある。さらに、コンフィグレーション選択信号ＣＳの指定により、内部に記憶されたコンフィグレーション情報を切り替え、入力スイッチＩＳＷと、出力スイッチＯＳＷと、演算器ＡＬＵの動作を指定する。
【００２２】
このように構成されたセルでは、データは隣接セル入力線１０１から入力され、配線フリップ・フロップＲＣＣまたは演算結果格納用フリップ・フロップＣＦＦを一回通り、出力スイッチＯＳＷを介して隣接セル出力線１０２から出力される場合、その伝達には１クロック・サイクルかかる。言い換えれば、クロック信号がロウレベルからハイレベルに変化した後、更にロウレベルからハイレベルに変化するまでを１クロック・サイクルとすると、配線用フリップ・フロップＲＦＦ及び演算結果格納用フリップ・フロップＣＦＦは、基本セル１００に処理すべきデータが入力され後、クロック信号ＣＬＫがロウレベルからハイレベルに変化した際に、データを取り込み、１クロック・サイクルの間、夫々のフリップ・フロップに入力されたデータを保持・出力する。これに対して、配線フリップ・フロップＲＦＦまたは演算結果格納用フリップ・フロップＣＦＦの出力を入力スイッチＩＳＷにフィードバックし、再度、配線フリップ・フロップＲＦＦまたは演算結果格納用フリップ・フロップＣＦＦを介して出力スイッチＯＳＷを介して隣接セル出力線１０２に出力する場合は２クロック・サイクルとなる。即ち、配線フリップ・フロップＲＦＦの数がＮ個あり、これらを全て利用した場合にはＮクロック・サイクル後にセルから出力することができる。この機能を利用することにより、長距離配線がなく、かつ、クロックに同期したセルを用いていても、異なる経路から来た信号の同期をとり、パイプラインで処理することが可能である。
【００２３】
図３は、図２に示される基本セル１００の各回路ブロックの配置の一例（フロアプラン例）を示した図である。まず、入力スイッチＩＳＷ、出力スイッチＯＳＷは、中央に配置される。また、特に制限されないが、入力スイッチＩＳＷ、出力スイッチＯＳＷの周りに配線用フリップ・フロップＲＦＦ及び演算結果格納用フリップ・フロップＣＦＦを配置し、その周りに演算器ＡＬＵ及びコンフィグレーション・メモリＣＭを配置している。このように入力スイッチＩＳＷ、出力スイッチＯＳＷを中央に配置することにより、上下左右のセルと自分自身を接続する夫々の入力線１０１、出力線１０２の長さをほぼ等しくすることができ、データ信号のスキューを低減することが可能となり、更に
高速動作が可能となる。なお、配線用フリップ・フロップＲＦＦ、演算結果格納用フリップ・フロップＣＦＦ、演算器ＡＬＵ及びコンフィグレーション・メモリＣＭの位置関係は、本実施例に限定されない。例えば、配線用フリップ・フロップＲＦＦ及び演算結果格納用フリップ・フロップＣＦＦを外側に配置し、演算器ＡＬＵ及びコンフィグレーション・メモリＣＭを内側に配置しても良い。
【００２４】
図４は、図２の基本セル１００中の演算器ＡＬＵの構成を示すブロック図である。演算器ＡＬＵは加減算回路ＡＤＤ＿ＳＵＢと、乗算回路ＭＵＬＴと、否定論理積回路ＮＡＮＤと、排他的論理和回路ＸＯＲと、マルチプレクサＭＵＸと、定数出力回路ＣＯＮＳＴの異なる種類の演算を行う複数の演算回路を含む。更に、出力選択スイッチＡＯＳＷと、演算機能設定線２００と出力スイッチＡＯＳＷ設定線２０１を含む。本実施例では以上に挙げた機能を含むがこれらの機能に限定されることはなく、機能を変更および削除したり、別の機能を持つ回路を追加したりしてもよい。また、定数出力回路ＣＯＮＳＴが０を出力するように設定し、隣接セルからの入力と定数出力回路ＣＯＮＳＴの値を加算するように設定することで隣接セルからの入力データをそのまま出力することも可能である。このような入力データをそのまま出力する動作は乗算器ＭＵＬＴやマルチプレクサＭＵＸを用いても実現できる。
【００２５】
演算器ＡＬＵへの入力は加減算回路ＡＤＤ＿ＳＵＢと、乗算回路ＭＵＬＴと、否定論理積回路ＮＡＮＤと、排他的論理和回路ＸＯＲと、マルチプレクサＭＵＸの入力に接続される。コンフィグレーション・メモリＣＭからの入力は演算機能設定線２００と、出力選択スイッチＡＯＳＷ設定線２０１を含む。
【００２６】
加減算回路ＡＤＤ＿ＳＵＢと、乗算回路ＭＵＬＴと、否定論理積回路ＮＡＮＤと、排他的論理和回路ＸＯＲと、マルチプレクサＭＵＸと、定数出力回路ＣＯＮＳＴは、コンフィグレーション・メモリＣＭから出力される演算機能設定線２００の指定に従って各動作を行う。例えば加減算回路ＡＤＤ＿ＳＵＢでは加算と減算のどちらを実行するかの選択や、符号ありの演算か符合なしの演算かを指定することができる。
【００２７】
出力選択スイッチＡＯＳＷは加減算回路ＡＤＤ＿ＳＵＢと、乗算回路ＭＵＬＴと、否定論理積回路ＮＡＮＤと、排他的論理和回路ＸＯＲと、マルチプレクサＭＵＸと、定数出力回路ＣＯＮＳＴの出力を受け、コンフィグレーション・メモリＣＭから出力される出力選択スイッチＡＯＳＷ設定線２０１に指定された入力を出力する。図５は、出力選択スイッチＡＯＳＷの一例を示した図である。本実施例では６つの入力から１つの出力を選択する６対１のセレクタを２つ含んでいる。出力選択スイッチＡＯＳＷの構造は入力と出力の数にあわせて構成され、６対１のセレクタ２つに限定されることはない。
【００２８】
この構成により、演算器ＡＬＵはコンフィグレーション・メモリＣＭからの指定にしたがって、複数の演算結果データのうちから２つを選択して出力できる。
【００２９】
図６は、図２の基本セル１００中の入力スイッチＩＳＷの構成を示すである。図６に示した入力スイッチＩＳＷの構造では、配線フリップ・フロップＲＦＦからの入力３０１と、演算結果格納フリップ・フロップＣＦＦからの入力３０２と、隣接セルからの入力１０１を含む１２本の入力から、４本を選択して出力することができる。本実施例の入力スイッチＩＳＷは１２本の入力と４本の出力を備えるため、図７に示すような１２個の入力から１つを選択する１２対１のセレクタＳＷ１２＿ｉ（ｉは０、１、２、３）を４つ含む。セレクタＳＷ１２＿ｉは、コンフィグレーション・メモリＣＭから出力される入力スイッチ設定信号３０３により出力するデータを指定される。
【００３０】
図８、図９は、図２の基本セル中の入力スイッチＩＳＷの図６、図７とは別の構成例である。本構成ではスイッチの面積を減らすために図９に示されるような６対１のスイッチＳＷ６＿ｉ（ｉは０、１、２、３）を４つ用いる構成としている。各セレクタＳＷ６＿ｉは選択信号３０３により出力するデータを指定される。図２の基本セル１００では各隣接セルからの入力１０１、及び配線フリップ・フロップＲＦＦ、演算結果格納用フリップ・フロップＣＦＦ共に２本ずつとなっているため、各入力を２つのグループに分ける構成をとる。すなわち、配線フリップ・フロップＲＦＦ０からの入力を４０１、配線フリップ・フロップＲＦＦ１からの入力を４０４に接続し、演算結果格納フリップ・フロップＣＦＦ０からの入力を４０３、演算結果格納フリップ・フロップＣＦＦ１からの入力を４０６に接続し、隣接セルからの入力１０１の第１グループを４０２、隣接セルからの入力１０１の第２グループを４０５に接続する。セレクタＳＷ６＿ｉは、コンフィグレーション・メモリＣＭから出力される入力スイッチ設定信号３０３により出力するデータを指定される。入力数が本実施例よりさらに多い場合でも同様にして入力を複数グループ化することで入力スイッチＩＳＷのサイズを小型化できる。
【００３１】
図１０は図２の基本セル１００中の出力スイッチＯＳＷの構成を示すブロック図である。出力スイッチＯＳＷは、配線フリップ・フロップＲＦＦからの入力５０１と、演算結果格納フリップ・フロップＣＦＦからの入力５０２を任意の出力配線に接続させることができる。実施例の出力スイッチＯＳＷは４入力、８出力となっているため、図１１に示されるような４つの入力から１つを選択する４対１のセレクタＳＷ４＿ｉ（ｉは０〜７）を８個含んで構成される。また、セレクタＳＷ４＿ｉは、コンフィグレーション・メモリＣＭから出力される出力スイッチＯＳＷ設定信号５０３により出力するデータを指定される。
【００３２】
図１２は、図２の基本セル１００中のコンフィグレーション・メモリＣＭの構成を示すブロック図である。コンフィグレーション・メモリＣＭは、コンフィグレーション・セレクタＣＳＥＬと、コンフィグレーション記憶素子ＭＥＭＤと、アドレス・デコーダＡＤＤＥＣと、コンフィグレーション選択信号線ＣＳと、セル選択信号線ＳＸおよびＳＹと、アドレス信号線ＡＤと、データ信号線ＤＴと、コンフィグレーション出力線６０１を含んで構成される。コンフィグレーション情報選択信号線ＣＳ、コンフィグレーション情報変更用データ入力線ＤＴ、セル選択線ＳＸおよびＳＹ、コンフィグレーション情報変更用アドレス入力線ＡＤは、それぞれコンフィグレーション・コントローラＣＣＮＴから入力される。
【００３３】
コンフィグレーション・セレクタＣＳＥＬは、コンフィグレーション選択信号線ＣＳの指定に従い、コンフィグレーション記憶素子ＭＥＭＤ０およびＭＥＭＤ１のうち、選択された方の値を出力する。コンフィグレーション・セレクタＣＳＥＬの出力は、入力スイッチＩＳＷ設定信号、出力スイッチＯＳＷ設定信号、演算器ＡＬＵ設定信号を含む。なお、図１２のコンフィグレーション記憶素子ＭＥＭＤは、２つ示されているが、２つに限定されない。
【００３４】
また、コンフィグレーション選択信号線ＣＳで選択されているコンフィグレーション記憶素子ＭＥＭＤは、書き換えることができないように構成するとよい。このような構成を採用すると、２つのコンフィグレーション記憶素子ＭＥＭＤを備えているため、片方が選択されて処理を実行している間に、もう一方を書き換えることができる。コンフィグレーション記憶素子ＭＥＭＤの書き換えは、コンフィグレーション選択信号線ＣＳで選択されておらず、かつセル選択信号ＳＸおよびＳＹで自セルが選択されている状況で、アドレス線ＡＤより得られるＭＥＭＤ内のアドレスをアドレス・デコーダＡＤＤＥＣによりデコードし、そのアドレスに対応したコンフィグレーション記憶素子ＭＥＭＤのデータをデータ線ＤＴより入力されるデータに更新する。ＭＥＭＤ内の格納場所、即ちＭＥＭＤ内の複数の記憶素子のうちデータを書き込む記憶素子をアドレスで指定することによりデータ線ＤＴより広いビット幅のコンフィグレーション記憶素子ＭＥＭＤを書き換えることが可能である。
【００３５】
本実施例では、コンフィグレーション記憶素子ＭＥＭＤにはラッチを用い、データ信号線ＤＴ以外のＭＥＭＤへの入力をラッチ制御信号としてデータ信号線ＤＴの値をラッチする。コンフィグレーション記憶素子ＭＥＭＤには、フリップ・フロップやＳＲＡＭなどの揮発メモリ、または、フラッシュ・メモリやＭＲＡＭなどの不揮発メモリを用いることもできる。不揮発メモリを使用することにより電源を遮断した後、再度、起動した場合でもコンフィグレーション情報を保持することができ、電源立ち上げ時にコンフィグレーション情報の設定を行わずに済む。
【００３６】
以上のように基本セル１００を構成することにより、従来設けられていた配線領域が不要になる。従って、セル・アレイを構成する基本セル１００の数を変更する場合であっても、配線領域におけるスイッチの構成の変更をする必要がなく設計が容易になる。即ち、ＤＡ等を使用して設計を行う際には、予め基本セル１００の構成を一つのモジュールとして登録しておき、必要な数の基本セル１００をアレイ状に並べることで容易に設計することができる。
【００３７】
図１３は、本発明による基本セル１００をアレイ状に接続した場合の、セル間のデータ転送用配線の接続を示すブロック図である。図１３では、基本セル１００を４行４列の２次元アレイ状に配置し、基本セル１００の上下左右の隣接セルを入力、出力各２本の隣接配線で接続している。したがって、離れた場所のセルにデータを転送する場合には間にあるセルを伝ってデータを送る。例えばセルＣ００からセルＣ０２に送る場合はＣ０１を経由してデータを送ることができる。
【００３８】
基本セル１００内をデータが通過するには、基本セル１００内の配線フリップ・フロップＲＦＦ、または演算結果格納フリップ・フロップＣＦＦのどちらかを通過するため、転送経路内にある各セルのフリップ・フロップ間の配線長はコンフィグレーション情報によらず、常に１セル分、すなわち１クロック・サイクルとなる。その結果、コンフィグレーション情報の変更以外では、コンフィグレーション情報にセル・アレイの動作周波数が依存することがなく、常に１セル分の遅延のみを考慮した高い周波数で動作させることが可能である。また、離れた場所にあるセル間を接続する長距離配線がないため、セル・アレイを含むデバイスの動作周波数の向上が容易になる利点もある。
【００３９】
図１４は、本発明による基本セル１００をアレイ状に接続した場合のセル・アレイ全体のコンフィグレーション用の配線を示した図である。図１４では、基本セル１００を４行４列の２次元アレイ状に配置し、コンフィグレーション・コントローラＣＣＮＴからの配線として、コンフィグレーション選択信号ＣＳと、データ信号ＤＴ０からＤＴ３と、アドレス信号ＡＤ０からＡＤ３と、セル・アレイの列選択信号ＳＸ０からＳＸ３と、セル・アレイの行選択信号ＳＹ０からＳＹ３が各セルに接続されている。
【００４０】
コンフィグレーション選択信号ＣＳは、全てのセルに接続され、各セルのコンフィグレーション・メモリＣＭに格納されているコンフィグレーション情報を指定する。データ信号ＤＴと、アドレス信号ＡＤと、セル・アレイの列選択信号線ＳＸはセル・アレイの列ごとに配置され、同じ列の各セルに接続される。またセル・アレイの行選択信号線ＳＹはセル・アレイの行ごとに配置され、同じ行の各セルに接続される。 
次に、コンフィグレーション・コントローラＣＣＮＴが各セルのコンフィグレーション・メモリＣＭを更新する場合の手順を説明する。第１に、コンフィグレーション・コントローラＣＣＮＴはセル・アレイの列選択信号ＳＸと、セル・アレイの行選択信号ＳＹでコンフィグレーション情報を変更するセルを選択する。第２に、アドレス信号ＡＤでセル内のコンフィグレーション記憶素子ＭＥＭＤのアドレスを指定する。第３に、データ信号ＤＴよりデータを送信し、コンフィグレーション情報をコンフィグレーション記憶素子ＭＥＭＤに書き込む。
【００４１】
コンフィグレーション・コントローラの機能は、コンフィグレーション情報を外部のメモリからロードする機能と、各セルのコンフィグレーション・メモリＣＭを書き換える機能と、コンフィグレーション選択信号ＣＳを変更して実行するコンフィグレーション情報を変更する機能を含む。
【００４２】
本構成ではコンフィグレーション選択信号線ＣＳは全セルに同じ線が繋がっているが、別の構成として、例えばコンフィグレーション選択信号ＣＳを複数のエリア、例えば４セルずつのエリアごとに分割して発行し、セル・アレイのうち一部のセルのみコンフィグレーション情報を変更することもできる。
【００４３】
図１５は、図２に示した基本セルを４行４列のアレイ状に並べ、これに対して信号処理などでよく用いられる高速フーリエ変換の一部を実行するためのコンフィグレーション情報を示した図である。図１５を用いて４行４列のセル・アレイの動作を説明する。なお、図１５の基本セル１００内に書かれたブロック内の記号（＋、−、×Ｃ０、×Ｃ１）は、セルの演算器ＡＬＵが実行する機能を表し、直線及び矢印はデータの流れを表す。また、セル内の直線上に示されている黒丸９００は、配線フリップ・フロップＲＦＦまたは演算結果格納フリップ・フロップＣＦＦを表しており、データの転送に１クロック・サイクル消費することを示している。
【００４４】
図１５に示されたコンフィグレーション情報は下式で表されるｂ０からｂ３の値を求めるためのものである。
ｂ０＝（ａ０＋ａ１）＋（ａ２＋ａ３），
ｂ１＝（ａ０−ａ１）×Ｃ０＋（ａ２−ａ３）×Ｃ１，
ｂ２＝（ａ０＋ａ１）−（ａ２＋ａ３），
ｂ４＝（ａ０−ａ１）×Ｃ０−（ａ２−ａ３）×Ｃ１，
これらの式において、ａ０からａ３は入力データ、ｂ０からｂ３は出力データ、Ｃ０およびＣ１はフーリエ変換のための定数で予め決まっている。
【００４５】
入力データａ０からａ３はセル・アレイの左側から同時に入力される。また、乗算に用いられるＣ０とＣ１の値はセルへのコンフィグレーション情報で与える。演算（ａ０＋ａ１）と（ａ０−ａ１）と（ａ２＋ａ３）と（ａ２−ａ３）の実行が左から２列目の各セルに割り当てられている。２列目のセルへの入力は同じデータが２箇所ずつ使われているため、１列目のセルを利用して、２列目のセルにデータを分配する。１行２列目のセルへの入力に着目すると、ａ１は１行１列目と２行１列目のセルを通過しているため、２クロック・サイクル要する。これに対しａ０は１行１列目のみ通過するため、最短１クロック・サイクルで１行２列目のセルに到達しａ１のデータと同期が取れない。そこで、配線フリップ・フロップ２つを利用して２クロック・サイクルで１行２列目のセルに到達に到達するようにしている。２列目の他のセルへの入力も同様にしてクロック・サイクルの同期を取る。
【００４６】
３列目のセルでは２行３列目と、４行３列目で乗算を実行する。このとき１行３列目と、３行３列目は出力結果の出力するタイミングを全て同じにするため、何も計算を行っていない。
【００４７】
４列目のセルではこれまでに計算した結果を入力とし加算または減算を行う。４列目のセルへの入力も２列目のセルへの入力と同様にクロック・サイクルの調整が必要となる。例えば、１行４列目のセルに注目してみると、３行３列目からの入力は３クロック・サイクルかかるため、１行３列目からの入力は隣接する１行２列目のセルの配線フリップ・フロップと自セルの配線フリップ・フロップを利用して同期を調整している。他のセルについても同様にしてクロック・サイクルの同期を行っている。最後に４列目のセルからはｂ０からｂ３までの４つのデータが同時に出力される。
【００４８】
以上、説明したようにコンフィグレーション情報を決めると、ａ０からａ３を入力し、ｂ０からｂ３が出力されるまでに要するクロック・サイクル、すなわちレイテンシは７サイクルとなる。
【００４９】
ここで、図１６を用いて図１５に示したコンフィグレーション情報を用いてパイプライン処理を実行する場合について説明する。図１５のコンフィグレーション情報におけるパイプラインのステージは７ステージで構成される。ステージ１ｓｔ１およびステージ２ｓｔ２は１列目のセルでのデータ転送を行う。ステージ３ｓｔ３は２列目のセルによる加算または減算を実行する。ステージ４ｓｔ４では３列目のセルによる乗算を実行する。ステージ５ｓｔ５およびｓｔ６ではステージ３ｓｔ３の出力を４列目のセルへ転送する。ステージ７ｓｔ７は加算または減算を実行して出力する。
【００５０】
ここで、時刻ｔ０の入力ａ０と、ａ１と、ａ２と、ａ３をＤａｔａ０とし、同様に時刻ｔ１の入力Ｄａｔａ１、時刻ｔ２の入力Ｄａｔａ２、時刻ｔ３の入力Ｄａｔａ３とする。このとき時刻ｔ０の入力Ｄａｔａ０は０から７のステージを通過し時刻ｔ７、すなわち７クロック・サイクル後に出力される。各ステージは並列に動作するためパイプラインとして動作させることが可能で、時刻ｔ１の入力Ｄａｔａ１の結果は時刻ｔ８に出力され、以降の出力も同様にして、前の入力による出力の１クロック・サイクル後に出力される。すなわち、１クロック・サイクルあたり１回の出力が行われることになり、非常に高い性能を得ることが可能である。
【００５１】
また、図１５のコンフィグレーション情報においては２列目のセルと、３列目の２行目及び４行目のセルと、４列目のセルは演算と配線とを両方行っており、演算器ＡＬＵを有効に利用できているといえる。さらに、セル内の配線フリップ・フロップＲＦＦの数を調節することで、演算器ＡＬＵをより有効に活用するように構成することもできる。
【００５２】
図１７は、図１に示した基本セルを４行４列のアレイ状に並べ、これに対して信号処理などでよく用いられるフィルタリング処理を実行するためのコンフィグレーション情報を示した図である。図１７を用いて４行４列のセル・アレイの動作を説明する。なお、図１５と同様に、図１７の基本セル１００内に書かれたブロック内の記号（×Ｃ０、×Ｃ１、×Ｃ２、×Ｃ３）は、セルの演算器ＡＬＵが実行する機能を表し、直線及び矢印はデータの流れを表す。また、セル内の直線上に示されている黒丸９００は配線フリップ・フロップＲＦＦまたは演算結果格納フリップ・フロップＣＦＦを表している。
【００５３】
図１７に示されたコンフィグレーション情報は下式で表される値を求めるためのものである。
ｆ［ｔ］＝ｅ［ｔ］×Ｃ０＋ｅ［ｔ−１］×Ｃ１＋ｅ［ｔ−２］×Ｃ２＋ｅ［ｔ−３］×Ｃ３
上記の式において、ｆ［ｔ］は時刻ｔにおけるフィルタの出力、ｅ［ｔ］は時刻ｔにおけるフィルタへの入力、Ｃ０からＣ３はフィルタ定数である。
【００５４】
本コンフィグレーション情報によれば、１行目のセルでデータの右側のセルへの転送と乗算を実行し、２列目、及び３列目のセルを用いて加算を行う。このコンフィグレーション情報により設定されたセル・アレイに対し１行１列目のセルより入力ｅを毎時刻入力することで、９クロック・サイクル以降は毎サイクル、フィルタ出力ｆを３行４列目のセルより得ることができる。
【００５５】
本発明の基本セルによるセル・アレイを含む回路では、図１５の高速フーリエ変換のコンフィグレーション情報と、図１７のフィルタリングのコンフィグレーション情報を切り換えることで、同じセル・アレイ回路で異なる処理を実行することができる。実行できる内容はここで示した２つの例に限定されず、コンフィグレーション情報を変更することでさまざまな処理を行うことが可能である。
【００５６】
次に、図１８，１９を用いて、図２に示した基本セル１００の詳細な回路構成を示す。図１８は、図２における基本セル内で、セレクタのデータ入力元やデータ出力先が明確となるようにした図である。
【００５７】
図２における入力スイッチISWは、左部入力セレクタLin-sel,上部入力セレクタUin-sel,右部入力セレクタRin-sel,下部入力セレクタDin-sel,帰還入力セレクタS-sel、配線フリップ・フロップ入力セレクタR0sel,R1sel、演算器入力セレクタAi0sel, Ai1selを統合したモジュールである。また、出力スイッチOSWは、左部出力セレクタLo1-sel,Lo2-sel、上部出力セレクタUo1-sel,Uo2-sel,右部出力セレクタRo1-sel,Ro2-sel,下部出力セレクタDo1-sel,Do2-selを統合したモジュールである。図２における入力線101は、図１８における入力線701,704,706,734,735に対応し、図２における出力線102は、図１８における出力線702,703,705,732,733に対応する。その他、同一の符号を付しているものは、同じものを示している。
【００５８】
ここで、図２における入力スイッチISWは、隣接セルから入力されたデータ又は内部で自己ループされたデータの何れのデータを入力とするかを選択するLin-sel, Uin-sel, Rin-sel, Din-sel, S-selを含む第１のセレクタ回路群と、第１のセレクタ回路により選択されたデータをRFF0, RFF1、又は ALUの何れに入力するかを選択するR0sel, R1sel, Ai0sel, Ai1selを含む第２のセレクタ回路群とに分けることができる。また、出力スイッチOSWを構成するLo1-sel, Lo2-sel, Uo1-sel, Uo2-sel, Ro1-sel, Ro2-sel, Do1-sel, Do2-selは、配線フリップ・フロップRFF0,RFF1と、演算結果用フリップ・フロップCFF0,CFF1に保持されているデータを隣接する基本セルの何れに出力するかを選択する。この選択は、セルの端子数(入力線数、出力線数)の削減のために行い、隣接セルの各方向ごとに行う。例えば、Ro1-selとRo2-selは、右方向の隣接セルへのデータを選択する回路であり、同様に、Lo1-sel, Lo2-sel, Uo1-sel, Uo2-sel, Do1-sel, Do2-selは、夫々、左、上、下方向へのデータを選択する。
【００５９】
別の表現をすれば、図１８に示されるセレクタは、Lin-sel,R0selなどのデータ入力側と、Lo1-selなどのデータ出力側に分かれ、データ入力側の各セレクタは、隣接セルから入力されたデータ又は内部で自己ループされたデータを入力し、RFF0,RFF1、又は、ALUに入力するデータを選択する。また、入力側のセレクタ回路は、Lin-selなどの隣接セルの各転送元ごとにデータを選択する回路と、R01-selなどのセル内の記憶回路からデータを選択する回路に分かれる。更に、データ出力側は、配線フリップ・フロップRFF0,RFF1と、演算器用フリップ・フロップCFF0,CFF1から出力される４種類のデータから、２種類のデータを選択し、隣接する基本セルに出力する。
【００６０】
次に、図１９を用いて、左部入力セレクタLin-sel、及び、配線フリップフロップセレクタR0sel、右部出力セレクタRo1-sel, Ro2-selを例にとり、データ入力側とデータ出力側のセレクタの構成と機能を詳細に述べる。
【００６１】
まず、データ入力側のセレクタ回路をLin-sel、及びR0selを例にして説明する。右部入力セレクタLin-selは、セレクタLin-RFF0-sel,Lin-RFF1-sel,Lin-A0-sel,Lin-A1-selの４つのセレクタからなり、各々、入力線Lin-R/ADとLin-R/A01から入力されたデータを配線フリップ・フロップRFF0,RFF1の夫々の入力、及び、演算器ALUの２つの入力オペランドの４つのうち何れに転送するかを選択する。
【００６２】
例えば、セレクタLin-RFF0-selは、７４０のセレクタ回路と７４１のOR回路から構成されており、セレクタ回路７４０は、コンフィグレーション・メモリCMからの制御信号７４２と７４３に従い、Lin-R/A0とLin-R/A01から配線フリップ・フロップRFF0へのデータを選択する。Lin-R/A0を選択するときには、制御信号７４２は１、制御信号７４３は０となる。Lin-R/A1を選択するときには、制御信号７４２は０、制御信号７４３は１となる。どちらの信号も選択されないときには、制御信号７４２，７４３共０となる。OR回路７４１は、RFF0へデータが転送されたことを示す制御信号である。Lin-R/A0又はLin-R/A1のいずれかの入力信号が選択され、配線フリップ・フリップRFF0へのデータを転送したときは、１となり、選択されないときには０となる。同様に、Lin-RFF1-selは、Lin-R/A0とLin-R/A01からRFF1へ入力するデータを選択する。また、Lin-Ai0-selは、Lin-R/A0とLin-R/A01からALUの第１の入力オペランドへ入力するデータを選択し、Lin-Ai1-selは、Lin-R/A0とLin-R/A01からALUの第２の入力オペランドへ入力するデータを選択する。
【００６３】
配線フリップフロップセレクタR0selは、隣接セルの各方向と自己ループにおけるセレクタであるLin-sel、Uin-sel、S-sel、Rin-sel、Din-selから、配線フリップ・フロップRFF0への転送データと制御信号(Lin-selでは７４４と７４５)を受けて、RFF0へ入力されるデータを選択する。制御信号７１３は、各方向からの制御信号のOR回路であり、RFF0へのデータ更新のイネーブル信号で、RFF0へのデータ転送があるときには１、ないときには０となる。なお、707, 709, 710, 711は、S-sel、Uin-sel、Din-sel、Rin-selからの出力信号に対応し、夫々、転送データと制御信号を含む。
【００６４】
次に、データ出力側のセレクタ回路をRo1-sel, Ro2-selを用いて説明する。Ro1-selとR02-selのセットで、”RFF0,RFF1の出力の一方及びCFF0,CFF1の出力の一方”、”RFF0,RFF1の出力の両方”、”CFF0,CFF1の出力の両方”のいずれかの組み合わせを選択する。なお、配線フリップフロップRFF0, RFF1は対照であり、一つだけ選択するときには、いずれを選んでも構わない。従って、RFF0を選択するものとすれば、出力線Ro-R/A0, Ro-R/A01から出力されるデータの組合せは、（RFF0,CFF0），(RFF0,CFF1)，(RFF0,RFF1)，(CFF0,CFF1)の４つとなる。言い換えれば、出力の組合せは、（RFF0,CFF0)、（RFF0,CFF1)、（RFF1,CFF0)、（RFF1,CFF1)、（RFF0,RFF1)、（CFF0,CFF1)の６つになるが、RFF0とRFF1の機能はデータ保持で同じであるため、(RFF1,CFF0)、（RFF1,CFF1)の組合せの場合は、RFF1に入力されるデータをRFF0に割り当てるようにすることができる。従って、(RFF1,CFF0)、（RFF1,CFF1)の組合せは、（RFF0,CFF0)、（RFF0,CFF1)の組合せに置換でき、削除することが可能となり、セレクタRo1-selを小さくすることが可能となる。具体的には、セレクタRo1-selは、これらの組合せの左の項である｛RFF0,CFF0｝の何れか一方のデータをRo-R/A0から出力データとして出力するように選択し、セレクタRo2-selは、右の項である｛RFF1,CFF0,CFF1｝の何れか一つのデータをRo-R/A01から出力データとして出力するようにを選択する。
【００６５】
最後に、入力線及び出力線について説明する。Lin-R/A0は、左の隣接セルのRo-R/A0と接続されることを示し、左の隣接セルに含まれる配線フリップ・フロップ又は演算結果用フリップ・フロップに保持されるデータが入力される。なお、Lin-R/A01は、同様に左の隣接セルのRo-R/A01と接続される。また、Ro-R/A0は、右の隣接セルのLin-R/A0に接続され、右の隣接セルに対してデータを出力し、Ro-R/A01は、右の隣接セルのLin-R/A01に接続され、RFF1、CFF0、CFF1に保持されるデータのいずれかを右の隣接セルに出力することになる。
【００６６】
図２０、２１は、図２における基本セル１００の構成の他の実施例である。図２０は、図２における基本セル１００の他の実施例を示す概念図である。図２と相違する点は、出力スイッチOSWを削除し、入力スイッチISW側に、１６本の入力の中から配線フリップ・フロップRFF0,RFF1又は演算器ALUに入力するデータを選択するように構成したことにある。即ち、基本セル一つを見てみると、出力側スイッチOSWが削除され、出力側スイッチが有していた機能が入力側スイッチISWに取り込まれたということができる。図２１は、図２０の基本セルにおける入力セレクタのデータ入力元やデータ出力先が明確となるようにした図である。上述したように本実施例では、出力側のセレクタが削除されており、上下左右の基本セルへ配線フリップ・フロップRFF0,RFF1、演算結果格納用フリップ・フロップCFF0,CFF1の各出力がそのまま出力されている。従って、端子数が増加している。
２. 第２の実施の形態
以下では、第２の実施の形態を説明する。第２の実施の形態は、主に、第１の実施の形態と比較して、セル通過時にフリップ・フロップ（保存回路）を介さず、セル内を通過するためのスルーパスを設けたことに特徴がある。
【００６７】
図２２に、従来技術、第１の実施の形態、および第２の実施の形態の違いを示す概念図を示す。図２２において、Op.は演算を、DTr.はデータ転送を示す。また、この図では、ALU1からALU5までの５つ演算回路が一列に並んでおり、ALU1で演算を行い、ALU5までデータを転送し、ALU5で転送されたデータを用いた演算を行う場合を想定する。従って、数字が大きくなるほどALU1に対して遠くに位置することを示している。ここで、従来技術では、第1の実施の形態で示すようなフリップ・フロップを各演算回路に有していないため、ALU1での演算及びALU5までのデータ転送を１サイクルで行う必要がある。それに対し、第１の実施の形態は、各セル内で少なくても1クロック・サイクル分フリップ・フロップに保持されるため、ALU1での演算後、ALU2から4までのデータ転送に３サイクル必要である。そこで、第２の実施の形態では、後に詳述するが、転送のみを行う場合と演算を行う場合では転送のみを行う場合の方が必要とする時間が短いことに着目し、基本セル内にフリップ・フロップを介さないスルーパスを設け、ALU2から4までのデータ転送を１サイクルで行うことを可能としている。このように上述の３つの技術を比較すると、従来技術では、演算及び転送を行うために必要な時間よりクロックの1サイクルを短くすることは出来ないのに対し、第1の実施の形態では、クロックの1サイクルを少なくとも演算に要する時間のみとすることが可能となる。従って、従来技術と比較して動作周波数を向上させることができる。更に、第２の実施の形態では、第１の実施の形態と同じ周波数でより遠くの演算器まで転送することが可能となる。従って、第２の実施の形態は、遠方までデータ転送を実現できるため、第１の実施の形態に比べ、レイテンシの削減、データ転送専用のセルの不要化、さらには、ダイナミックラッチの個数の削減による電力削減が可能となる。
【００６８】
次に、第２の実施の形態であるスルーパスを設けたセルの基本構成を図２３に示す。
図２３に示す基本セルでは、図１９に対し、スルーパス用の入力端子Lin-Th0、Lin-TH1と、出力端子Ro-Th0、Ro-TH1及びスルーパスセレクタTH0sel, TH1selを設けた。なお、TH1selは図が煩雑になるため、ここでは省略している。ここで、Lin-Th0から入力されたデータが転送されるパスは、スルーパスを継続するためTH0selを経由するパスと、スルーパスを終了し、セレクタR0selを通ってRFF0にデータ保存されるパスがある。スルーパスを終了するパスとして、演算器ALUの入力へのパスを設けず、配線フリップ・フロップのみに設けることにより、データ転送と演算が１サイクル内に共存されることを避けている。これにより、動作周波数を落とすことを防止できる。
【００６９】
配線フリップ・フロップRFF0,RFF1、又は、演算結果用フリップ・フロップCFF0,CFF1からスルーパスへ移行する時も、セレクタTH0sel, TH1selを用いる。即ち、前段の隣接セルでフリップ・フロップ回路に保存されたデータ、または当該セルで保存され、自己ループされたデータは、上記のセレクタTH0sel,TH1selを通してスルーパスへ移行する。
【００７０】
セレクタTH0selは、Lin-TH0、及び各セレクタLin-sel, Uin-sel, Rin-sel, Din-sel, S-selから入力されたデータの何れか一つを選択し、出力端子Ro-TH0に転送する。このようにフリップ・フロップを通さないパスを設けることにより、第１の実施の形態と比較して、１クロック・サイクルで隣接しない基本セルまでデータ転送することが可能となる。なお、図では省略したが、セレクタTh1selも同様に機能する。
【００７１】
図２３のセルに従い、図１５の高速フーリエ変換の一部をマッピングした例が図２４である。８００の（１）は、自己ループを用いて一回だけセル内でループしたことを示す。また、(2)と付されている場所が、スルーパスを用いたパスである。図１５に比べ、レイテンシ、セル数、および電力削減に有効なダイナミックなラッチ数のいずれも激減している。レインテンシは７サイクルから４サイクルに、転送用のセル削減により、セル数は１６個から１２個に、ダイナミックなラッチ回数は４０回から２０回に削減できている。最初に述べたように、上記の効果が、周波数を落とすことなく達成できる点が、従来技術に比べた優位点である。
【００７２】
しかし、スルーパスを導入すると、入出力端子数とセレクタが増加し、配線制約が厳しくなる。図２５は、この制約を緩和するために、まず、同じデータ転送である配線フリップ・フロップとスルーパスは、各々一つずつのパスとした。これにより、図２３に対してセレクタTH1sel, R1sel, Ro1-sel, Lo1-sel, Uo1-sel, Do1-sel及び配線フリップフロップRFF1を削除することが可能となる。さらに、第１の方向(ここでは上方向)へのデータの転送（演算結果の転送も含む）は、スルーパスのみとする。これにより、図２３における上部出力セレクタUo1-sel,Uo2-selと、下部入力セレクタDin-selを削除することが可能となる。通常、論理は１方向（例えば上から下、または左から右)に流れ、逆方向へのデータ転送は、フィードバックループなど演算をスルーして複数のセルにまたがるパスが多いという経験則に従って、決めた制約である。即ち、図１に示すように基本セルをマトリクス状に配置し、各基本セルの夫々に所定の演算を割り当てた場合、データは１方向に流れ、反対方向に流れる場合は、所定の演算を割り当てられた基本セルを飛ばして転送されることが多いため、データの流れと逆方向は、スルーパスのみとし、その他のセレクタを削除することが可能である。また、図２５に含まれるセレクタの夫々は、図２３に示される各セレクタと比較して入力信号数が減少するため、図２３に示されるセレクタより小さくなることは言うまでもない。従って、論理演算をマッピングする上での制約が増すが、回路規模を小さくすることができる。但、この制約も上述の経験則に従って定めた制約のため、例えば、高速フーリエ変換の一部をマッピングした場合は、図２４に示したマッピング図と同じとなり、上述の制約とは関係なしに回路規模を小さくすることが可能となる。
【００７３】
図２５から図３０は、図２３の論理規模と端子数の削減をさらに推し進めた実施例である。
【００７４】
図２５は、第１の方向（図２３における上方向）だけでなく、第２の方向（ここでは下方向）へのデータ転送もスルーパスのみとした例である。論理は、一般的には、上から下、左から右へ流れるが、左から右が大半のパスで、上から下へは、一連の計算の流れを一つのモジュールとするときに、モジュール間のデータの受け渡しに使われるという経験則に基づく。このように構成することにより、図２４と比較してセルの対照性が良くなり、コンパイラ・マッパー・ＤＡなどの開発環境の作りやすくなる。マッパーとは、各基本セルの機能（ALUの機能）やデータのパスを構成するためのコンフィグレーション情報を作成する一種のＤＡである。更に、図２５では、図２４から上方向の入力側セレクタUin-sel2と、下方向の出力側セレクタDo1-selとDo2-sel2が削減でき、配線制約が小さくなる。また、このように構成することで、マッピングする上での自由度が小さくなるが、上述の通り、基本的に左から右に論理が流れる高速フーリエ変換においては、図２５と同じマッピングとなる。
【００７５】
図２７は、図２６と比較して、更に、第３の方向（ここでは、左方向）のデータ転送をスルーパスのみに限定したセルである。本特許は、図１のブロック図を前提としており、左右対照のデータの流れを利用することが望ましいが、使い方によっては、左から右方向のデータの流れを優先することもできる。このため、図２５で上方向に制約を設けたのと同じ理由で、左方向へはスルーパスのみという制約を設けた。
【００７６】
このように左方向へはスルーパスのみとしても、特に、高速フーリエ変換のマッピングは変わらないため、フィルタリング処理である図１７を元にマッピングを行った。その結果を図２８に示す。セル数以外は、高速フーリエ変換と同じ効果が得られるが、左方向制約による影響はない。
【００７７】
図２９は、左方向へのデータ転送を全て撤廃した例である。全て撤廃することにより、従って、データは左から右方向に流れるので、縦方向にみると複数の演算器が並列に動作することになる。従って、並列演算器間のスルーパスのみを導入した回路となる。このセルを用いると、フィルタリングのマッピング結果は、図３０となる。左方向への転送ができないため、最も時間的に遅れる（図２８では、最も右側の＋）は、最も右側に配置する。
３．適用するシステム機器の構成
図３１は、本発明による動的にコンフィグレーション情報が変更可能なセル・アレイ回路を含むＩＰ１００１を内蔵するチップ１１００を用いてソフトウェア無線端末を構成する場合のブロック図である。
【００７８】
チップ１１００はプロセッサＣＰＵと、オンチップ・メモリＯＣＭと、ダイレクト・メモリアクセス・コントローラＤＭＡＣと、バス・コントローラＢＳＣと、動的にコンフィグレーション情報が変更可能なＩＰ１００１と、チップ外部のインターフェースＩＦと、プロセッサ・バスＩ−ＢＵＳと、周辺バスＰ−ＢＵＳを含んで構成される。チップ外部にはフラッシュ・ロムＦＲＯＭと、ＳＤＲＡＭと、外部バスＯ−ＢＵＳと、アンテナ１１０１と、アンテナ用インターフェースＲＦＩＦと、アナログ・ローパスフィルタＬＰＦと、アナログ・デジタル変換器Ａ／Ｄと、デジタル・アナログ変換機Ｄ／Ａが含まれており、フラッシュ・ロムＦＲＯＭとＳＤＲＡＭは外部バスＯ−ＢＵＳに接続され、アナログ・デジタル変換器Ａ／Ｄと、デジタル・アナログ変換機Ｄ／Ａはチップ１１００の外部インターフェースＩＦに接続されている。
【００７９】
本構成ではプロセッサＣＰＵとＩＰ１００１のプログラムはフラッシュ・ロムＦＲＯＭまたはＳＤＲＡＭに格納される。ＩＰ１００１はソフトウェア無線のベースバンドの処理を実行し、結果をオンチップ・メモリＯＣＭに格納する。プロセッサＣＰＵはオンチップ・メモリＯＣＭに格納されているＩＰ１００１で変換されたデータを用いてアプリケーションを実行する。
【００８０】
アンテナ１１０１より得られた電波はアンテナ用インターフェースＲＦＩＦより入力され、アナログ・ローパスフィルタＬＰＦで処理された後、アナログ・デジタル変換器Ａ／Ｄでデジタルデータ化されて外部インターフェースＩＦよりチップ１１００に取りこまれる。チップ外部のインターフェースＩＦに入力されたデータはダイナミック・メモリアクセス・コントローラＤＭＡＣによりＩＰ１００１に転送される。
【００８１】
ＩＰ１００１は予めプロセッサＣＰＵにより指定されたコンフィグレーションと制御用プログラムをフラッシュ・ロムＦＲＯＭまたはＳＤＲＡＭよりロードしてベースバンド処理を実行する。ベースバンド処理が施されたデータはダイナミック・メモリアクセス・コントローラＤＭＡＣによりオンチップ・メモリＯＣＭに定期的に転送される。プロセッサは定期的にオンチップ・メモリＯＣＭを参照してプリケーションを実行する。
【００８２】
本構成を取るソフトウェア無線機ではＩＰ１００１にロードするコンフィグレーション情報および制御プログラムを変更することで異なる無線方式に対応できるため、方式ごとの専用回路を搭載する必要がない。その結果、チップの面積を縮小することが可能である。また、コンフィグレーション情報を更新することで新たな無線方式に対応したり、処理方式を改善したりすることが可能である。さらに、無線通信を行わない場合にはプロセッサＣＰＵで実行するアプリケーション用のコンフィグレーション情報を用いて、アクセラレータとして用いることも可能である。
【００８３】
また、図３０に示されるようなシステムＬＳＩを設計する場合、図１に示される構成をＩＰとして予め準備しておくことにより、設計が容易となる。
【００８４】
以上、説明した本発明の構成により、セル間の配線は全て隣接配線となり、配線長が一定となるためコンフィグレーション情報に周波数が依存しなくなる。その結果、コンフィグレーション情報を変更した場合においても周波数を変更する必要がなくなる。さらに、配線フリップ・フロップを含まないセル・アレイで隣接配線のみを用いるコンフィグレーション情報を利用する場合に比べて、演算器の利用効率が高くできるため、少ないセル数で所望の機能を実現できる。本発明の基本セルを用いた２次元セル・アレイでアプリケーションを実行する場合には、演算のみでなく通信もパイプライン化されるためレイテンシは遅くなるが、高いスループットを維持することができるため、データが大量に流れるアプリケーションを高速に処理することが可能となる。
【産業上の利用可能性】
【００８５】
本発明は、半導体集積回路、特に、動的に再構成可能なＬＳＩに利用して有用なものである。
【図面の簡単な説明】
【００８６】
【図１】本発明の一つの実施形態である半導体集積回路のブロック図である。
【図２】本発明の基本セルの構成例を示すブロック図である。
【図３】図２における基本セルの各ブロックの配置例の一つを示す図である。
【図４】基本セルの構成要素である演算器ＡＬＵの構成例を示すブロック図である。
【図５】図４における出力選択スイッチの一つの構成例を示す図である。
【図６】基本セルの構成要素である入力スイッチの構成例を示す図である。
【図７】図６における入力スイッチの構成例を示す図である。
【図８】基本セルの構成要素である入力スイッチの第2の構成を示す図である。
【図９】図８における入力スイッチの構成例を示す図である。
【図１０】基本セルの構成要素である出力スイッチの構成例を示す図である。
【図１１】図１０における出力スイッチの構成例を示す図である。
【図１２】基本セルの構成要素であるコンフィグレーション・メモリの構成例を示す図である。
【図１３】本発明の基本セルを２次元アレイ状に並べて用いた場合のセル間配線の例を示す図である。
【図１４】本発明の基本セルを２次元アレイ状に並べて用いた場合のコンフィグレーション情報変更用配線の構成例を示す図である。
【図１５】本発明の基本セルを４行４列の２次元アレイ状に並べ、高速フーリエ変換の処理の一部を実行する場合のコンフィグレーション情報を図示したものである。
【図１６】図１５に示したコンフィグレーション情報で回路を構成しパイプライン処理を実行した場合の動作を示す図である。
【図１７】本発明による基本セルを４行４列の２次元アレイ状に並べ、フィルタリング処理を実行する場合のコンフィグレーション情報を図示したものである。
【図１８】本発明による基本セルをセレクタの構成のセル内配置を中心に示した図である。
【図１９】本発明による基本セル内のセレクタの論理構成図である。
【図２０】図２における基本セルの他の実施例のブロック図である。
【図２１】図２０における基本セルのセル内配置を中心に示した図である。
【図２２】本発明による第一の実施の形態、第二の実施の形態、従来技術を比較した概念図を示す図である。
【図２３】本発明による第二の実施の形態で、スルーパスを導入した基本セルを示す図である。
【図２４】図２３の基本セルを用いて、高速フーリエ変換をマッピングした図である。
【図２５】図２３の基本セルからスルーパスの端子数を削減し、UP方向のデータ転送をスルーパスのみに限定した図である。
【図２６】図２５の基本セルからDown方向のデータ転送をスルーパスに限定した図である。
【図２７】図２６の基本セルから、Left方向のデータ転送をスルーパスに限定した図である。
【図２８】図２７の基本セルを用いて、フィルタリング処理をマッピングした図である。
【図２９】図２７の基本セルから、Left方向のデータ転送を全廃した図である。
【図３０】図２９の基本セルを用いて、フィルタリング処理をマッピングした図である。
【図３１】図１の半導体集積回路を含むチップを使用したソフトウェア無線端末の構成図である。
【符号の説明】
【００８７】
１００…基本セル、１０１…隣接セルからの入力線、１０２…隣接セルへの出力線、２００…演算機能設定線、２０１…出力選択スイッチＡＯＳＷ設定線、３０１…配線フリップ・フロップＲＦＦからの入力、３０２…演算結果格納フリップ・フロップＣＦＦからの入力、３０３…入力スイッチ設定信号、４０１…配線フリップ・フロップＲＦＦ０からの入力、４０４…配線フリップ・フロップＲＦＦ１からの入力、４０３…演算結果格納フリップ・フロップＣＦＦ０からの入力、４０６…演算結果格納フリップ・フロップＣＦＦ１からの入力、４０２…隣接セルからの入力１０１の第１グループ、４０５…隣接セルからの入力１０１の第２グループ、５０１…配線フリップ・フロップＲＦＦからの入力、５０２…演算結果格納フリップ・フロップＣＦＦからの入力、５０３…出力スイッチＯＳＷ設定信号、６０１…コンフィグレーション出力線、９００…配線フリップ・フロップＲＦＦまたは演算結果格納フリップ・フロップＣＦＦ、１００１…基本セル１００を利用したセル・アレイを含むＩＰ、１１００…ＩＰ１００１を内蔵するチップ、１１０１…アンテナ。
【図１】
2005044329.tif 000003
【図２】
2005044329.tif 000004
【図３】
2005044329.tif 000005
【図４】
2005044329.tif 000006
【図５】
2005044329.tif 000007
【図６】
2005044329.tif 000008
【図７】
2005044329.tif 000009
【図８】
2005044329.tif 000010
【図９】
2005044329.tif 000011
【図１０】
2005044329.tif 000012
【図１１】
2005044329.tif 000013
【図１２】
2005044329.tif 000014
【図１３】
2005044329.tif 000015
【図１４】
2005044329.tif 000016
【図１５】
2005044329.tif 000017
【図１６】
2005044329.tif 000018
【図１７】
2005044329.tif 000019
【図１８】
2005044329.tif 000020
【図１９】
2005044329.tif 000021
【図２０】
2005044329.tif 000022
【図２１】
2005044329.tif 000023
【図２２】
2005044329.tif 000024
【図２３】
2005044329.tif 000025
【図２４】
2005044329.tif 000026
【図２５】
2005044329.tif 000027
【図２６】
2005044329.tif 000028
【図２７】
2005044329.tif 000029
【図２８】
2005044329.tif 000030
【図２９】
2005044329.tif 000031
【図３０】
2005044329.tif 000032
【図３１】
2005044329.tif 000033