[go: up one dir, main page]

JP4527571B2 - 再構成可能演算処理装置 - Google Patents

再構成可能演算処理装置 Download PDF

Info

Publication number
JP4527571B2
JP4527571B2 JP2005071320A JP2005071320A JP4527571B2 JP 4527571 B2 JP4527571 B2 JP 4527571B2 JP 2005071320 A JP2005071320 A JP 2005071320A JP 2005071320 A JP2005071320 A JP 2005071320A JP 4527571 B2 JP4527571 B2 JP 4527571B2
Authority
JP
Japan
Prior art keywords
input
data
cluster
unit
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005071320A
Other languages
English (en)
Other versions
JP2006252440A (ja
Inventor
美寿 齋藤
久典 藤沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005071320A priority Critical patent/JP4527571B2/ja
Priority to EP05256003A priority patent/EP1703414B1/en
Priority to US11/244,062 priority patent/US7743236B2/en
Publication of JP2006252440A publication Critical patent/JP2006252440A/ja
Application granted granted Critical
Publication of JP4527571B2 publication Critical patent/JP4527571B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Microcomputers (AREA)

Description

本発明は、複数のALU(算術演算器)等で構成されるALUアレイと、ALUアレイ内のALUの命令やALU間の接続の制御をコンフィギュレーション情報によって設定する技術に係り、特にはコンフィギュレーション情報の入れ替え等をシーケンサで行う再構成可能演算回路(クラスタ)を複数有する演算装置における再構成可能演算回路間で共有利用される演算器の構成に関する。
今日、再構成可能演算回路(以下クラスタ)を有する再構成可能演算処理装置は、クラスタを複数配置して演算処理をすることにより演算処理速度の向上、演算装置の小型化などを行う提案がされている。図20は演算装置の一例を示したものであり、それぞれのクラスタは、例えばクロスバ接続などにより接続され、クラスタ間のデータ転送を可能にしている。
そして、一つのクラスタはALUアレイ部を有し、ALUアレイ部には複数の演算器が設けられている。演算器は通常ALUや乗算器などで構成されている。
例えば、クラスタは図21に示すような構成となっている。(図21は従来の再構成可能演算処理装置内のクラスタの構成を概念的に示す略ブロック図である)
クラスタ1は、演算器群2(ALUアレイ部)、コンフィギュレーションメモリ3、シーケンサ4から構成されている。
演算器群2は、データ入力部5、データバッファ部6、データバッファ制御部7、演算器間ネットワーク8、データメモリ9、演算器10から構成されている。
データ入力部5は、外部から入力される入力データを、演算器間ネットワーク8を介してデータメモリ9、各演算器10などに供給する。例えば、データ入力部5の構成例として、データバッファ部6を具備する構成とし、データバッファ部6は外部より入力される入力データをバッファする/しないの有無をデータバッファ制御部7からの制御信号により選択する。データバッファ制御部7は、コンフィギュレーションメモリ3からコンフィギュレーション情報を受け、その情報に従い、上記制御信号としてデータバッファ部6に制御信号を送り、入力データのバッファの有無を選択する。
演算器間ネットワーク8は、種々の要素(データ入力部5、データメモリ9、演算器10など)と相互接続されている。また、演算器間ネットワーク8は、外部から供給されるコンフィギュレーションデータ(プログラム:C言語、HDLなどで作成されるソース)に基づいて生成されるコンフィギュレーション情報(プログラムをコンパイルして生成されるデータ)に応じて、演算器間ネットワーク8に接続されている種々の要素間のデータ転送を可能とする。データメモリ9は、演算器間ネットワーク8を介しデータを記録する。演算器10は、コンフィギュレーション情報により、そのコンフィギュレーション情報に関係付けられた機能を果たすように設定され、その設定された演算を実行する。
コンフィギュレーションメモリ3は、コンフィギュレーション情報を格納する外部記憶装置(図示せず:例えばPCなど)からコンフィギュレーションメモリ3にコンフィギュレーション情報をロードする。(例えば、PCの通信手段を利用してロードする)そして、コンフィギュレーションメモリ3には、コンフィギュレーションデータロード部(図示しない)、演算器群2を構成する再構成可能な種々の要素のうち主に演算器10から送信される条件成立信号(例えばチップセレクトのような信号)に基づいてコンフィギュレーション切替条件信号を生成し出力する。例えば、コンフィギュレーション切替条件信号の生成は、上記条件成立信号とコンフィギュレーションメモリ3からのコンフィギュレーションデータに基づいて生成する。
シーケンサ4は、切替条件信号に基づいてコンフィギュレーションメモリ3が次に読み出すべき上記コンフィギュレーション情報のアドレスを生成する。
特許文献1によれば、個々にデータ設定される命令コードに対応してデータ処理を個々に実行するとともに相互の接続関係を切換制御する多数のプロセッサエレメントが行列形状に配列されており、これら多数のプロセッサエレメントの命令コードを状態管理部で順次切り換える。ただし、状態管理部は、相互通信して連携動作する複数からなり、これと同数のエレメント領域に多数のプロセッサエレメントが区分されている。複数のエレメント領域ごとに複数の状態管理部が個々に配置されてプロセッサエレメントに接続されているので、小規模な複数の状態遷移を複数の状態管理部で個別に管理できる。また、大規模な一つの状態遷移を複数の状態管理部で協調して管理することができる。
また、特許文献2によれば、プロセッサエレメントをアレイ状に並べたものをプログラマブルなスイッチで電気的に接続し、演算を主体として行うデータパス部と、状態遷移の制御を行う状態遷移管理部を独立して設け、それぞれを処理目的に応じて特化した構成を実現することで、小型化、高性能化の可能なアレイ型プロセッサが提案されている。
そして、上記説明したような構成の再構成可能演算処理装置において演算処理を行う際に、場合によって除算処理等の演算負荷の大きい処理も必要になることがある。このような場合、図22に示す専用のハードウェアアクセラレータを使用して、CPUやDMAC(Direct Memory Access Controller)を介在させて演算処理をする方法などが提案されている。
特開2004−133781号公報 特開2001−312481号公報
しかしながら、図22に示すような方法で除算処理等の演算処理を行う場合、処理開始やデータの転送を簡単化するためにCPUやDMACを介在させなければならない。そのことでインターフェイスは統一されるが、CPUが介在するため演算処理能力が低下するという問題がある。一方CPUを介在させない場合を考えると、インターフェイスに統一性をもたせるのが難しくなり、新規にハードウェア設計をする毎にインターフェイスを考えることが必要になり、設計資産を簡単に再利用することが困難である。
そこで、上記クラスタを複数もつ再構成可能演算処理装置に直接除算器等を配置する方法が考えられる。例えばクラスタ内の演算器群2(ALUアレイ部)に配置すると、処理能力を向上させることができるし、除算器のような汎用演算器ではなく、アプリケーションに特化したハードウェアを演算器群2(ALUアレイ部)に持てばさらに処理能力を向上させることができる。
しかし、(1)乗算器やALUに比べると除算器などの汎用演算器は回路規模が大きい、(2)ALUや乗算器に比べると使用頻度が小さく、そのため再構成可能演算回路内に除算器やアプリケーション特化エンジンを設けると、面積あたりの演算器使用効率が悪くなり、コスト増につながる。また、(3)アプリケーション特化エンジンを設けると、他のアプリケーションでは全く使用しない無駄なものになるため取り除くといった再設計が必要となる。
そのため、除算器などのアプリケーション特化エンジンをクラスタの外部に置き、クラスタ間で共有できれば、面積効率や使用効率を上げられる。また、クラスタの外部にあるので、異なるアプリケーションに対しては、そのアプリケーション特化エンジンを交換すればよい。
しかし、クラスタの外部に置いて、複数のクラスタで共有して使用する場合、以下の問題が発生する。(4)クラスタの外部に、単に配置しても上記説明したように、CPUなどを介在させなければ、処理の起動ができない。そのため、なんらかの起動方法が必要になる。(5)任意のクラスタからアプリケーション特化エンジンを利用するためのクラスタとの接続方法と制御方法が必要になる。(6)アプリケーション特化エンジンを通常のハードウェアのように、エンジン毎に特有の信号線等を用いた場合、異なるアプリケーションに対して、アプリケーション特化エンジンの交換などはできない。そのため、交換できる仕組みが必要である。(7)クラスタの外部に置いたアプリケーション特化エンジンを複数のクラスタで共有しようとした場合、共通の制御が必要になる。
また、特許文献1によれば、二つのクラスタで共有する、共有リソースなるものがあるが、どちらか一方のクラスタに制御される必要がある。また、特許文献2によれば、クラスタの外部に乗算器を有しているが、その使用方法、動作については開示されていない。
本発明は上記のような実情に鑑みてなされたものであり、アプリケーション特化エンジン等の共有演算器を、クラスタから受け取るデータとValid信号とを用いて演算処理し、クラスタ間のネットワークを介すことで、複数のクラスタから共有演算器を利用できる再構成可能演算処理装置を提供することを目的とする。
請求項1に記載の発明によれば、コンフィギュレーション情報に基づき、再構成される少なくとも1以上のクラスタから構成される再構成可能演算処理装置において、上記1以上のクラスタ間で共有利用される共有演算器を上記クラスタの外部に具備し、上記共有演算器は、上記クラスタから入力データと入力valid信号を受け付ける入力手段と、上記入力手段で上記入力valid信号を受け取ると、上記valid信号とともに受け取った上記入力データを演算処理する演算手段と、上記演算手段の演算処理結果である出力データと、該出力データの出力先の上記クラスタを通知する出力valid信号とを上記クラスタに出力する出力手段と、を具備する構成とする。
複数のクラスタで構成される演算装置に、アプリケーション特化エンジンなどの除算器等の演算器を、クラスタの外部に演算装置の共有演算器として設ける。そのクラスタ間を結ぶネットワークに接続する。このときネットワーク上で遣り取りする信号は、データとデータが有効であることを意味する「valid信号」で構成する。クラスタはvalid信号を受け取ると演算処理がなされる構成になっておりクラスタから当該共有演算器へはデータとともにvaild信号が送られる。当該共有演算器ではvalid信号を受け取ると、Vaild信号とともに受取ったデータの処理を開始し、処理完了時にvaild信号とともに結果データを出力する。
請求項2に記載の発明によれば、前記共有演算器は、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDを生成し、前記出力データの出力先の前記クラスタを通知する構成とする。
請求項3に記載の発明によれば、前記共有演算器は、パイプライン構成を利用して演算処理をする構成とする。
請求項4に記載の発明によれば、前記パイプラインは、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDとともに内部validを生成し、前記入力データを演算処理した処理データとともに前記IDを、前記内部validを利用して前記パイプラインで転送する構成とする。
請求項5に記載の発明によれば、前記共有演算器の構成は、単独演算を行うアプリケーション特化エンジンである構成とする。
請求項6に記載の発明によれば、前記共有演算器の構成は、単独演算を行う複数のアプリケーション特化エンジンを配設した構成とする。
請求項7に記載の発明によれば、前記共有演算器は、前記アプリケーション特化エンジンの切替えを前記クラスタからの前記入力データと前記入力valid信号に基づいて演算処理選択信号を生成し、前記演算処理選択信号により前記共有演算器の前記アプリケーション特化エンジンの切替えをする構成とする。
請求項8に記載の発明によれば、前記演算処理選択信号は、前記共有演算器の有する前記アプリケーション特化エンジンに対応した演算処理コードからなるテーブルを予め設定し、前記クラスタから前記アプリケーションを選択するために、前記入力データである前記演算処理コードを入力し、前記入力データに対応する前記アプリケーションの切替え制御のための信号を選択して、前記演算処理選択信号を生成する構成とする。
請求項9に記載の発明によれば、前記共有演算器の入力手段と出力手段は、コンフィギュレーションデータに基づき再構成可能なセレクタを配設している構成とする。
請求項10に記載の発明によれば、前記共有演算器の入力手段と出力手段は、クロスバスイッチを配設している構成とする。
上記構成にすることで、共有演算器はvalid信号で起動でき、利用する側の再構成演算回路からの特殊な制御なしに起動できる。
また、共有演算器はクラスタ間を結ぶネットワーク上に接続することにより、任意のクラスタからデーダ+valid信号を送るだけで、利用するクラスタから制御借号を送ることなしに利用することができる。
また、共有演算器は、valid信号で起動し、同時に受け取ったデータを処理する。そのためアプリケーション特化エンジンをこのルールで構成することにより、異なるアプリケーション毎に、特殊な信号を設けることが不要になるため、エンジンを交換することが容易である。
さらに、各クラスタからは制御信号なしに、共有演算器を共有でき、パイプライン構成にすることで、各ステージで異なるポートからのデータ処理を並列で実行することができる。
本発明によれば、共有演算器をクラスタの外部に置き、クラスタ間で共有することにより、面積効率や使用効率を上げられる。また、クラスタの外部にあるので、異なるアプリケーションに対して、共有演算器のアプリケーション特化エンジンを交換することが容易にでき、設計資産の再利用が効率よくできる。
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(実施例1)
図1は、クラスタ1と共有演算器11の構成を示した図である。クラスタ間はクラスタ間ネットワークにより接続され、複数のクラスタ1と共有演算器11は、ポート(port0、port1)により接続される。同図のport0、port1は共有演算器11とクラスタ1を接続するように構成され、例えば入力としてport0データ入力(16ビットバス)、port0valid入力を設置する。また、出力としてport0データ出力(16ビットバス)、port0valid出力を設置する。
図2はクラスタの動作について説明した図である。クラスタAはデータ+valid信号によりvalid駆動で動作する。またクラスタ間はデータとvalid信号をデータ転送する構成とする。
例えば、クラスタAに外部からデータとvalid信号が入力され、クラスタAでの当該データに対する処理が行われる。その結果がクラスタAからデータとvalid信号の形式で出力されクラスタBに渡される。
さらに、クラスタBでは受け取ったデータとvalid信号により当該データによる処理を行い、処理終了後クラスタBから新たにデータとvalid信号の形式で出力される。
図3は上記図2の動作をタイムチャートで示した図である。クロックCLKの立下りエッジにより、クラスタAへの入力データであるクラスタA入力データと、クラスタAへのvalid信号であるクラスタA入力valid信号をクラスタA内に取込み内部処理をする。本例ではクラスタA内の処理としてクロックCLK8サイクル分の処理を実行する。ここで、クラスタBへの入力信号は、クラスタA内で処理し8サイクル目でクラスタA出力データ(クラスタB入力データと同等)と、クラスタA出力valid(クラスタB入力validと同等)を用意する。そして、クラスタBに取込みクラスタB内で処理を行い、次のクラスタ1または共有演算器11にクラスタB出力データとクラスタB出力validを出力する。
図4はクラスタCと共有演算器Aが接続された場合の例である。アプリケーション領域にターゲットを絞った場合に、アルゴリズムは多少違っていても共通で使用される複雑な処理を、アプリケーション特化エンジンとして共有演算器11を外部に設ける。
共有演算器Aの場合もクラスタ間のときと同様に、データ+valid信号で駆動とデータ転送をする。すなわちデータ+valid信号で任意のクラスタCと遣り取りが可能になる。この駆動方法により共有演算器Aの中身は任意となり、共有演算器Aのアプリケーション領域(演算器)に必要なエンジンに置き換えることが可能になる。図4ではクラスタCへの入力データがデータ0とvalid0信号によって入力される。入力されたデータ0とvalid0はクラスタC内部で処理され、データ1とvalid1信号が共有演算Aの入力として演算し求められる。
共有演算器Aで内部処理されたデータ1とvalid1信号は、再びクラスタCに処理結果を返すためにデータ2とvalid2信号を演算し求める。そしてクラスタCはさらに内部処理を行いデータ3とvalid3信号を出力結果とする。
図5を用いクラスタCと共有演算器Aの動作についてのタイムチャートを示す。図3と同様にクラスタC入力データ0とクラスタC入力valid0信号をクロックCLKの立上りエッジでクラスタCに取込み、クラスタCの内部処理をしクロックの8サイクル目までに共有演算器AにクラスタC入力データ1(共有演算器入力データ1)とクラスタC入力valid1信号(共有演算器入力valid1)を入力する。共有演算器Aは受け取った入力を演算処理しクロックの7サイクル目までに出力結果クラスタC入力データ2(共有演算器入力データ2)とクラスタC入力valid2信号(共有演算器入力valid2)を算出する。そして、クラスタCは入力を受取り後半の処理を行い、クロックの6サイクル目までにクラスタC入力データ3とクラスタC入力valid3信号の算出をする。
ここで、クラスタA、B、C、共有演算器Aの内部処理において、当然であるがクロックの立上りエッジでの取込み方法、および各処理に必要クロックの数は特に限定されているものではない。
なお、図2、4ではクラスタ間をクロスバスイッチ経由で接続しているが、これはクラスタ間接続方法の一実現方法であり、データ転送がデータ+valid信号で、valid駆動ができる接続であれば特に限定するものではない。
次に、共有演算器11の概略の構成について説明する。共有演算器11には入力ポートと演算部と出力ポートが設けられている。そして上記説明した図4の構成においては入力ポートと出力ポートは各1ポートによる単純な構成とした。しかし実際にはマルチポートとして使用することが可能である。例えば構成として複数のクラスタ1に対し共有演算器11を1つ用意する。そして、共有演算器11にはクラスタ分の入出力ポートを用意してもよい。
また、クラスタ分の入出力ポートを用意しない場合は、共有演算器11との接続切替えをすることで、共有演算器11を使用していないときはクラスタ1から外し、必要なときにはクラスタ1を再度接続することも可能である。接続の切替えはクロック単位で設定してもよいし、新規にコンフィギュアブル情報が設定されるまで固定することも可能である。
図6にマルチポート構成された共有演算器の図を示す。共有演算器11は入力ポート0〜N−1(N:整数)で処理される。そして演算器の演算結果はマルチポート出力制御を経て出力ポート1〜M−1(M:整数)から出力される。ここで、M=Nであってもいいし、M≠Nであってもよい。
ここで、マルチポート入力制御は入力に競合があるときは、例えば番号の小さい入力ポートを優先にし、その他のデータを破棄することで1つの入力ポートを選択する。また、出力ポートに関してもvalid信号から生成されるポート情報(valid信号と出力ポートの識別信号であるID)により、1つの出力ポートのみアクティブにする。なお、データは全出力ポートとも同値とすることが好適であるが必ずしも全ポートに出力する必要はない。なお、ポート情報は演算器のレイテンシ分ディレーさせてから入力し、マルチポート出力制御を制御する。
図7の例は2ポートの共有演算器11の基本構成を示したものである。上記図5で説明した共有演算器11のマルチポート入力制御は、valid信号の受付およびID生成部から構成されている。入力であるPort0側またはPort1側からのvalid信号(varidInA_0、varidInB_0、varidInA_1、varidInB_1)の入力により内部valid信号を生成し、この内部valid信号を用いて演算処理をパイプラインのように実行する。また当該valid信号の受付およびID生成部で、どの入力ポートから受けたデータであるかを通知するためにIDを生成し、そのIDに基づき入力データを受け取ったポートを選択する。
ここで、valid信号の受付およびID生成部は、同図のソースにあるように演算を実行する。もし、validInA_0とvalidInB_0が有効であればゲート信号によりdataInA_0とdataInB_0を演算器に取り入れるか/取り入れないかを選択する。ゲート信号が「1」(取り入れる)であれば、入力データを演算器に取り入れる。それと同時に内部validをONにし、IDを「0」とする。
また、もしvalidInA_1とvalidInB_1が有効であればゲート信号によりdataInA_1とdataInB_1を演算器に取り入れるか/取り入れないかを選択する。ゲート信号が「1」(取り入れる)であれば入力データを演算器に取り入れる。それと同時に内部validをONにし、IDを「1」とする。
なお、ゲート信号によってデータを取り入れる構成は、ANDマスクなどにより、一方を入力データの入力とし、ANDゲートの他方をゲート信号とするようにしてもよい。また、validによるゲート信号の生成は、必ずしも必要でない。
さらに、valid入力がOFFであれば、入力ポート(port0、1)を選択するセレクタが優先的にどちらかを選択して、ステージ0の演算を行ってもよい。その理由はvalid入力がOFFの場合には、内部validがOFFになる。そのため中間データ0の値がステージ0の最後のFFに書込まれないため、計算をしていないのと同様になる。しかし、このゲート信号を上記説明したような無駄な動作を停止できるため、消費電力の低減には効果がある。
次に、IDは処理データとともにパイプラインで転送され、演算が完了するステージ(本例では演算器ステージ2)と同時にIDをデコードし、出力ポートの選択をするためのvalid信号を生成する。このvalid信号は出力ポートに対して発行される。
次に、処理データは両出力ポートに発行される。(この例では両方に発行しているが、IDに基づいて選択発行してもよい)
出力されたデータとvalid信号は入力データを発行したクラスタ1へと送られる。クラスタ1では、valid信号を受け取ると一緒にきたデータの処理を行う。
図6の演算器は、例えば入力ポートから入力された入力データを、図7の演算器(ステージ0〜2の組み合わせ回路)のように構成し演算をする。その演算結果を中間データ0〜1のFF(2)(フリップ・フロップ)に格納する。また、上記IDも同様にIDをFFに格納する。そして、内部valid信号により中間データ0の各FF(2)と、IDのFF(3)と、内部validのFF(1)をイネーブルにし、次の演算器ステージ1に出力する。同様に演算器ステージ1でも演算をして、結果を中間データ1のFF(5)に格納する。また、IDもID用のFF(6)に格納する。そして、内部valid信号により中間データ1の各FF(5)と、IDのFF(6)と、内部validのFF(4)をイネーブルにし、次の演算器ステージ2に出力する。
演算器ステージ2では、演算器ステージ1の出力を入力とし、演算器ステージ2の演算処理をし、処理結果データを出力としFFに格納する。
また、マルチポート出力制御では、IDデコーダでデコードし、どの出力ポート(port0出力、port1出力)のvalid信号(validOut_0、validOut_1)を有効にするかを決めFF(8)(9)に格納する。
その後内部validによりFFがイネーブルのときに出力ポート(port0出力、port1出力)に出力される。
次に、図8は図7の動作をタイムチャートで示した図である。クロックCLKの立上りエッジで入力データが確定し取込みが行われる。

CLK1の期間では、クラスタ1より共有演算器11にデータとvalid信号が入力され、validInA_0は「a0」(本例ではhigh信号)、dataInA_0はデータ(例えば16ビット幅のデータ「#」)が転送される。また、同様にvalidInB_0もhigh、dataInB_0にもデータが転送される。
また、上記valid信号に基づきvalid信号の受付およびID生成部でゲート信号とIDが生成される。IDはport0側「0」を選択し、内部valid(マルチポート入力制御直後)は「a0」を選択する。ここで、ゲート信号と「a0」がCLK1立ち上がりエッジより遅れているのは、valid信号の受付およびID生成部演算処理の演算によるものである。そして、「#」に基づき演算器ステージ0の演算が実行される。
そして、validInA_0の信号である「a0」が、中間データ0用の内部validのFF(1)の入力となる。また中間データ0のFF(2)の入力には、dataInA_0のデータである「#」が演算処理された結果「#1」が与えらる。また、中間データ0に同期したIDのFF(3)への入力として「0」が与えられる。これらのFF(1)、(2)、(3)はCLK2の立上りエッジで取り込み、確定し、CLK2サイクル期間出力する出力する。

CLK2の期間では、「#1」に基づき演算器ステージ1の演算が実行される。
このとき、上記中間データ0に関する各FFに保持されているvalid信号「a0」、ID「0」、演算器ステージ1の演算結果「#2」を中間データ1に関するFFに転送する。中間データ1用の内部validのFF(4)の入力には「a0」が与えられる。また中間データ1のFF(5)の入力には演算器ステージ1の演算結果「#2」が与えられる。また、中間データ1に同期したIDのFF(6)の入力には「0」が与えられる。これらのFF(4)、(5)、(6)はCLK3の立上りエッジで取り込み、確定し、CLK3サイクル期間出力する出力する。

CLK3の期間では、クラスタ1より共有演算器11の入力ポートにデータとvalid信号が入力され、validInA_1は「b0」(本例ではhigh信号)、dataInA_1はデータ(例えば16ビット幅のデータを「@」)が転送される。また、同様にvalidInB_1もhigh、dataInB_1にもデータが転送される。valid信号の受付およびID生成部ではゲート信号とIDが生成される。IDはport1側を選択「1」し、内部valid(マルチポート入力制御直後)は「b0」を選択する。そして、「@」に基づき演算器ステージ0の演算が実行される。
そして演算ステージ0の演算処理結果を、validInA_1の信号である「b0」が、中間データ0用の内部validのFF(1)の入力となる。また中間データ0のFF(2)の入力にはdataInA_1のデータである「#」が演算処理された結果「#1」が与えられる。また、中間データ0に同期したIDのFF(3)への入力として「1」が与えられる。
また、演算器ステージ2の演算が実行され、dataOut_0およびdataOut_1用のFF(7)の入力として、「#2」に基づく演算器ステージ2の演算結果である「#3」が与えられる。
また、マルチポート出力制御は、IDデコーダによりIDをデコードし、一定の規則に基づいて符号化されたデータに復号し、どの出力ポートを有効にするか決める。validOut_0用のFF(8)への入力として「(a0)」が与えられ、port0出力が有効となる。validOut_1用のFF(9)への入力はLowのままになる。
これらのFF(1)、(2)、(3)、(7)、(8)、(9)は上記の与えられた入力をCLK4の立上りエッジで取り込み、確定し、CLK4サイクル期間出力する。

CLK4の期間では、中間データ1用の内部validのFF(4)への入力にはvalidInA_1「b0」が与えられる。また中間データ1のFF(5)への入力には、dataInA_1から入力された「@」を演算器ステージ0で演算処理した結果「@1」が与えられる。また中間データ1に同期したIDのFF(6)への入力には「1」が与えられる。これらのFF(4)、(5)、(6)は上記の与えられた入力をCLK5の立上りエッジで取り込み、確定し、CLK5サイクル期間出力する。
また、出力ポートには、結果validOut_0が有効なport0出力からデータ「#3」が出力されクラスタ1に転送される。

CLK5の期間では、再びクラスタ1より共有演算器11の入力ポートにデータとvalid信号が入力され、validInA_0は「a1」(high信号)、dataInA_0はデータ(例えば16ビット幅のデータを「$」)が転送される。また、同様にvalidInB_0もhigh、dataInB_0にもデータが転送される。valid信号の受付およびID生成部ではゲート信号とIDが生成される。IDはport1側「0」を選択し、内部valid(マルチポート入力制御直後)は「a1」を選択する。
そしてvalidInA_0の信号である「a1」が、中間データ0用の内部validのFF(1)への入力として与えられる。また中間データ0のFF(2)への入力としてdataInA_0のデータである「$」が演算処理された結果「$1」が与えられる。また、中間データ0に同期したIDのFF(3)への入力として「0」が与えられる。
このとき、演算器ステージ2の演算が実行され、dataOut_0およびdataOut_1用のFF(7)への入力として、「@2」に基づいて演算器ステージ2の演算結果である「@3」が与えられる。
また、マルチポート出力制御は、IDデコーダによりIDをデコードし、一定の規則に基づいて符号化されたデータに復号し、どの出力ポートを有効にするか決める。validOut_0用のFF(8)の入力はLowのままになる。validOut_1用のFF(9)の入力に「(b0)」が与えられ、Port1出力が有効になる。
これらのFF(1)、(2)、(3)、(7)、(8)、(9)は上記の与えられた入力をCLK6の立上りエッジで取り込み、確定し、CLK6サイクル期間出力する。

CLK6の期間で、さらにクラスタ1より共有演算器11の入力ポートにデータとvalid信号が入力され、validInA_0は「a2」(本例ではhigh信号)、dataInA_0はデータ(例えば16ビット幅のデータを「!」)が転送される。また、同様にvalidInB_0もhigh、dataInB_0にもデータが転送される。valid信号の受付およびID生成部ではゲート信号とIDが生成される。IDはport1側「0」を選択し、内部valid(マルチポート入力制御直後)は「a2」を選択する。
そしてvalidInA_0の信号である「a2」が、中間データ0用の内部validのFF(1)の入力として与えられる。また中間データ0のFF(2)への入力として、dataInA_0のデータである「!」の演算処理された結果「!1」が与えられる。また、中間データ0に同期したIDのFF(3)の入力には「0」が与えられる。
このとき、演算器ステージ1により「$1」を演算処理し、演算結果「$2」を取得する。上記中間データ1に関する各FFにvalid信号「a1」、ID、「0」演算器ステージ1の演算結果を、中間データ1に関するFFに転送する。中間データ1用の内部validのFF(4)への入力として「a1」が与えれられる。また、中間データ1のFF(5)への入力として「$1」が与えられる。中間データ1に同期したIDのFF(6)への入力には「0」が与えられる。
また、出力ポートには、validOut_1が有効なport1出力からデータ「@3」が出力されクラスタ1に転送される。
これらのFF(1)、(2)、(3)、(4)、(5)、(6)は上記の与えられた入力をCLK7の立上りエッジで取り込み、確定し、CLK7サイクル期間出力する。

CLK7の期間で、クラスタ1より共有演算器11の入力ポートにデータとvalid信号が入力され、validInA_1は「b1」(本例ではhigh)、dataInA_0はデータ(例えば16ビット幅のデータを「%」)が転送される。また、同様にvalidInB_1もhigh、dataInB_1にもデータが転送される。valid信号の受付およびID生成部ではゲート信号とIDが生成される。IDはport1側「1」を選択し、内部valid(マルチポート入力制御直後)は「b1」を選択する。
このとき、「%」に基づき演算器ステージ0の演算結果「%1」を取得する。上記中間データ0に関する各FFへの入力にはvalid信号「b1」、ID「1」、演算器ステージ0の演算結果「%1」が与えられる。中間データ0用の内部validのFF(1)への入力には「b1」が与えられる。また中間データ0のFF(2)の入力には「%1」が与えられる。中間データ0にIDのFF(3)の入力には「0」が与えられる。
さらに、演算器ステージ1により「!1」を演算処理し、演算結果「!2」を取得する。上記中間データ1に関する各FFへの入力としてvalid信号「a2」、ID「0」、演算器ステージ1による演算結果「!2」が与えられる。中間データ1用の内部validのFF(4)への入力として「a2」が与えられる。また中間データ1のFF(5)への入力として「!2」が与えられる。中間データ1に同期したIDのFF(6)への入力として「0」が与えられる。
また、演算器ステージ2により「$2」を演算処理し、演算結果「$3」を取得する。上記中間データ2に関する各FFへの入力としてvalid信号「a1」、ID「0」、演算器ステージ2による演算結果「$3」を保持する。
dataOut_0およびdataOut_1用のFF(7)への入力として、「$2」の演算結果である「$3」が与えられる。
マルチポート出力制御は、IDデコーダによりID「a1」をデコードし「(a1)」を算出し、どの出力ポートを有効にするか選択する。validOut_0用のFF(8)への入力には「(a1)」が与えられ、validOut_1用のFF(9)への入力はLowのままになり、validOut_0が有効になる。
これらのFF(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)は上記の与えられた入力をCLK8の立上りエッジで取り込み、確定し、CLK8サイクル期間出力する。

CLK8の期間では、演算器ステージ1により「%1」を演算処理し、演算結果「%2」を取得する。上記中間データ1に関する各FFへの入力としてvalid信号「b1」、ID「1」、演算器ステージ1の演算結果「%2」が与えられる。中間データ1用の内部validのFF(4)への入力として「b1」が与えられる。また中間データ1のFF(5)への入力として演算器ステージ1の演算結果「%2」が与えられる。中間データ1に同期したIDのFF(6)への入力として「1」が与えられる。
さらに、演算器ステージ2により「!2」を演算処理し、演算結果「!3」を取得する。上記中間データ2に関する各FFへの入力としてvalid信号「a2」、演算器ステージ2による演算結果「!3」が与えられる。dataOut_0およびdataOut_1用のFF(7)への入力としてに、「!2」の演算結果である「!3」が保持される。
マルチポート出力制御は、IDデコーダによりID「a2」をデコードし「(a1)」を算出し、どの出力ポートを有効にするか選択する。validOut_0用のFF(8)への入力には「(a2)」が与えられ、validOut_1用のFF(9)への入力はLowのままになり、validOut_0が有効になる。
また、出力ポートには、validOut_0が有効なport0出力からデータ「$3」が出力されクラスタ1に転送される。
これらのFF(4)、(5)、(6)、(7)、(8)、(9)は上記の与えられた入力をCLK9の立上りエッジで取り込み、確定し、CLK9サイクル期間出力する。

CLK9の期間では、演算器ステージ2により「%2」を演算処理し、演算結果「%3」を取得する。上記中間データ2に関する各FF(結果出力用のFF)への入力として「b1」、「%3」、が与えられる。
マルチポート出力制御は、IDデコーダによりID「b1」をデコードし「(b1)」を算出し、どの出力ポートを有効にするか選択する。validOut_0用のFF(8)への入力はLowのままになり、validOut_1用のFF(9)への入力は「(b1)」が与えられる、validOut_1が有効になる。
また、出力ポートには、validOut_0が有効なport0出力からデータ「!3」が出力されクラスタ1に転送される。
これらのFF(7)、(8)、(9)は上記の与えられた入力をCLK10の立上りエッジで取り込み、確定し、CLK10サイクル期間出力する。

CLK10の期間では、出力ポートには、validOut_1が有効なport1出力からデータ「%3」が出力されクラスタ1に転送される。
また、CLK10の期間では、同じCLK期間に入力ポートから入力データが入力されたときの例を説明する。
クラスタ1より共有演算器11の入力ポートにデータとvalid信号が入力され、validInA_0はa3(本例ではhigh)、dataInA_0はデータ(例えば16ビット幅のデータを&)が転送される。
さらに、validInA_1はb2(判例ではhigh)、dataInA_1はデータ(例えば16ビット幅のデータを*)が転送される。
この場合、上記説明したvalid信号の受付およびID生成部のソースコードに沿ってゲート信号が生成されるので、port0入力側が優先される。IDはport0側「0」を選択し、内部valid(マルチポート入力制御直後)は「a3」が選択される。その後は上記説明してきた動作と同様各演算器ステージ0〜2の演算処理を実行する。
そして、マルチポート出力制御は、IDデコーダによりID「a3」をデコードし「(a3)」を算出し、どの出力ポートを有効にするか選択する。validOut_0用のFF(8)に「(a3)」が保存され、validOut_1が有効になる。validOut_1用のFF(9)はLowのままになる。
その後CLK13で、validOut_0により有効な出力ポートであるport0出力から、データ「&3」が出力されクラスタ1に転送される。

図9は共有演算器11の入力ポートと出力ポートが共に3ある場合の例である。入力ポート数が増えた場合でも、図7で説明した2ポートと同様に、valid受付およびID生成部で、優先順位を持たせ、各入力ポートにIDを与えることで共有演算器11を実現することが可能である。ここで、valid信号の受付およびID生成部は、同図のソースにあるように演算を実行する。もし、validInA_0とvalidInB_0であればゲート信号によりdataInA_0とdataInB_0を演算器に取り入れるか/取り入れないかを選択する。ゲート信号が「1」であれば、入力データを演算器に取り入れる。それと同時に内部validをONにし、IDを「0」とする。
また、もしvalidInA_1とvalidInB_1であればゲート信号によりdataInA_1とdataInB_1を演算器に取り入れるか/取り入れないかを選択する。ゲート信号が「1」であれば入力データを演算器に取り入れる。それと同時に内部validをONにし、IDを「1」とする。
また、もしvalidInA_2とvalidInB_2であればゲート信号によりdataInA_2とdataInB_2を演算器に取り入れるか/取り入れないかを選択する。ゲート信号が「1」であれば入力データを演算器に取り入れる。それと同時に内部validをONにし、IDを「2」とする。その後演算を行いマルチポート出力制御でIDをデコードし出力先を選択し、選択されたポートから出力データを出力する。
当然であるが、演算器ステージを複数段設けてもよい。

(共有演算器の演算器に除算部を使用した例)
図10は、共有演算部に使用する除算部の例である。除算をする場合は除数と被除数が必要である。そこでマルチポート入力制御から転送されるデータとvalid信号を、除数のときはDataBとvalidB信号、被除数のときはDataAとvalidA信号を設ける。
同図の制御部101でDataAおよびDataBの2の補数をとり、除算パイプライン102(演算器ステージ)を複数段(本例M段)演算し、商と剰余を求め、出力Data(剰余)と出力Data(商)をマルチポート出力制御に転送する。それと同時にvalid信号を設定し出力validとしてマルチポート出力制御に転送する。
ここで、clock、resetは全てのFFに供給される。また、除算器のSign選択機能や、STALL機能、強制停止機能、Error検出機能を設けてもよい。また、除算器は開平器などで使用することが考えられるため、同図に示す出力除数の信号を設けておいてもよい。

(共有演算器の演算器にPolar演算器を使用した例)
図11は共有演算部に使用するPolar演算器の例で、polar関数を用い複素数を作成するための構成例である。マルチポート入力制御から転送されるデータとvalid信号を入力する。入力データ0および入力データ1は角度(X軸から半径ベクトルへの角度をラジアンで表わす:−2π〜2π)を入力してデータvalid0、1信号とともにマルチポート入力制御111から入力する。なお、入力データ1は一定量(例えば半径ベクトルの長さでデータ空間単位など)とデータvalid1信号を設けてもよい。
図12に示すフローのステップS1のように、入力データとvalid信号を受け付ける。例えば、入力データ0(角度:例えば−2π〜2π16ビット幅のQ12フォーマット)とデータvalid0信号を受け付ける。
次に演算器ステージは、図12のステップS2では象限判定ブロック113で象限判定をする。象限判定は1〜4象限のどの正眼のデータであるかの判定をする。また、第1象限化&対象まるめブロック112で該データを0〜2/πの値に変換した後、下位2ビットのまるめ処理などをする。(例えば16ビットQ12フォーマットを11ビットQ10フォーマットに変換する)
ステップS3では、Sin_ROM114(角度→sin変換用テーブルなど)およびCos_ROM115(角度→cos変換用テーブルなど)にあるデータを同時に読み出す。(例ではROM内のデータは13ビットQ12フォーマットにしている)
ステップS4では、元の象限に変換ブロック116、117により、−2π〜2πの値に変換する。つまり上記の各ROM114、115から読み出した値を元の象限のデータに変換をする。
ステップ5では、マルチポート出力制御118、119により、データ入力のあったポートに対してvalidを付加してデータを出力する。出力はSin計算結果としてSinデータ(16ビットQ12フォーマット)、sin_valid0、sin_valid1信号(出力先ポートの指定)を出力し、Cos計算結果としてCosデータ(16ビットQ12フォーマット)、cos_valid0、cos_valid1信号(出力先ポートの指定)を出力する。

(共有演算器の演算器にアークタンジェント器を使用した例)
図13はアークタンジェントの演算についての構成例である。マルチポート入力制御131に入力データとして虚数部/実数部を入力する。入力データ0(例えば13ビットQ12フォーマット)とvalid0信号、入力データ1(例えば13ビットQ12フォーマット)とvalid1信号を受け取るようにバスを設置する。アークタンジェント演算(演算ステージ)は、例えば入力データを四捨五入ブロック132で四捨五入をし、ROM123内の−2π〜2πのアークタンジェント計算した値を保持したテーブルから、入力データに対応した値を選択する。その後、ブロック135においてπ/4を加えて演算結果を算出しマルチポート出力制御135に出力する。マルチポート出力制御135は出力データと、valid0信号またはvalid1信号を選択した結果をクラスタ1に転送する。

上記説明したように構成することで、共有演算器は、valid信号により起動することで、利用する側のクラスタから特殊な制御信号などによる制御なしに起動できる。また、共有演算器は、クラスタ間を結ぶネットワーク上に接続することにより、任意のクラスタからデーダとvalid信号を送るだけで、valid信号により起動し、同時に受け取ったデータを処理することができる。このため利用するクラスタから特別な制御信号を送ることなしに利用できる。
また、アプリケーション特化エンジンを上記説明したルールで構成することにより、異なるアプリケーション毎に、特殊な信号を設けることが不要になる。そのため、エンジンを交換することが容易になる。さらに各クラスタからは制御信号なしに、共有演算器を共有でき、上記例のようにパイプライン構成にすれば、各ステージで異なるポートからのデータ処理を並列で実行することができる。
なお、当然であるが共有演算器とクラスタからなるブロックを、再構成可能演算処理装置内に複数構築することができる。

(実施例2)
図14は共有演算器の複数機能化について示した図である。クラスタ141から共有演算器142に対しデータ入力0とvalid入力0、データ入力1とvalid入力1、データ入力2とvalid入力2をマルチポート入力制御に入力する。
そしてデータ入力0とvalid入力0、データ入力1とvalid入力1に入力されたデータに基づいて、演算処理を実行し演算処理結果出力する。
このとき、演算処理部143(演算ステージ)は上記説明したようなアプリケーション特化エンジン(除算、polar演算、アークタンジェント演算など)のような単独演算をする場合と、開平器のように除算など単独演算を行う処理部を含んだ処理とが考えられる。このような場合にデコード部144を用意し、データ入力2とvalid入力2を入力することで除算器と開平器の演算の切替えを行うようにする。
デコード部144には図15に示すような演算処理コード表を用意し、演算処理コードと処理内容を対応させる。演算処理コードが000であればNo_Operationとして何もしない設定とし、001であればReservedとする。010であれば符号無し除算、011であれば符号付き除算、100であれば開平により平方根を求めるようにする。このように予め用意した演算処理コードをデータ入力2より入力する。
そして、演算処理コードに対応する演算処理選択信号を選択し演算処理部143に転送する。演算処理選択信号は共有演算器142のアプリケーションの構成を切替えて制御を行う信号である。この演算処理選択信号を受けた演算処理部143が、演算処理コード100を受信すれば共有演算器142は開平器となり平方根を演算する演算処理部143となる。
ここで、例えば除算器から開平器への切替えは、演算処理選択信号を受信して、その演算処理選択信号の内容に基づいて、回路構成を変更する。そのためには、セレクタ(アプリケーションを切替えることができる構成であればよい)などを用意して演算処理選択信号の内容を共有演算器142の構成に反映させる。
なお、デコード部144にvalid信号(例ではvalid入力2)を入力する際に、有効であること特に指定しなくてもよいし、デコード部144にvalid信号の受け入れポートを設けない構成としてもよい。

(共有演算器の演算器に開平器を使用した例)
図16に開平器の構成を示す。上記説明したようにマルチポート入力制御より入力データ(被開平数:平方根を求めたい数値)としてDataAと、valid信号としてvalidAを入力する。さらにこのとき図示はしないがデコード部に開平演算処理をする通知をし、演算処理選択信号を生成し開平のアプリケーションに切替える。同図の例では平方根を近似方式により求める例を示している。
近似Table(ROM:近似値格納)161内の平方根を求めるための除数データの中から、対応する除数データを選択し除数とする。除算器は入力データDataAを被除数として、上記説明した除算器162(図10)と同様の演算をして商と除数(2の補数とする)を算出する。その後ALU163において商と除数を加え出力Dataとともに出力validをマルチポート出力制御に出力する。
このように共有演算器(本例開平器)内に単独で実行できる演算器(本例除算器)を含む場合にデコード部を設けることで共有演算器を小型化することができる。なお、共有演算器にデコード部を接続するには、クラスタを介さずに直接接続する構成としてもよい。

(実施例3)
図17〜19に共有演算器のクラスタとの接続方法について説明する。図17はクラスタ171のクロスバスイッチに共有演算器172とを直接接続する例である。クラスタ171間はクロスバスイッチにより接続される。共有演算器172の入力とクラスタ171はマルチポート入力制御の入力ポートに直接接続する。また、共有演算器172の出力とクラスタ171はマルチポート出力制御の出力ポートに直接接続する。この接続はコンフィギュレーション情報により切替える必要がない場合に有効である。
図1は共有演算器12にセレクタを設けた例である。セレクタをコンフィギュレーション情報に基づいて変更することで接続方法を選択できるため、クラスタ11からのデータとvalid信号の接続経路を動的に選択することが可能になる。
また、図1は共有演算器12にクロスバスイッチを設けた例である。クラスタ11からのデータとvalid信号を接続する際の経路を動的に選択することが可能である。
このように、データ伝送時には必要な接点を選んで開閉することで、接続中はデータの送信側と受信側とを一対一で直結させることができるため、データの衝突や混線などの問題が起こりにくくなる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
(付記1) コンフィギュレーション情報に基づき、再構成される少なくとも1以上のクラスタから構成される再構成可能演算処理装置において、
前記1以上のクラスタ間で共有利用される共有演算器を前記クラスタの外部に具備し、
前記共有演算器は、
前記クラスタから入力データと入力valid信号を受け付ける入力手段と、
前記入力手段で前記入力valid信号を受け取ると、前記valid信号とともに受け取った前記入力データを演算処理する演算手段と、
前記演算手段の演算処理結果である出力データと、該出力データの出力先の前記クラスタを通知する出力valid信号とを前記クラスタに出力する出力手段と、
を具備することを特徴とする再構成可能演算処理装置。
(付記2)前記共有演算器は、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDを生成し、前記出力データの出力先の前記クラスタを通知することを特徴とする付記1に記載の再構成可能演算処理装置。
(付記3)前記共有演算器は、パイプライン構成を利用して演算処理をすることを特徴とする付記1に記載の再構成可能演算処理装置。
(付記4)前記パイプラインは、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDとともに内部validを生成し、前記入力データを演算処理した処理データとともに前記IDを、前記内部validを利用して前記パイプラインで転送することを特徴とする付記3に記載の再構成可能演算処理装置。
(付記5)前記共有演算器の構成は、単独演算を行うアプリケーション特化エンジンであることを特徴とする付記1に記載の再構成可能演算処理装置。
(付記6)前記共有演算器の構成は、単独演算を行う複数のアプリケーション特化エンジンを配設した構成であることを特徴とする付記1に記載の再構成可能演算処理装置。
(付記7)前記共有演算器は、前記アプリケーション特化エンジンの切替えを前記クラスタからの前記入力データと前記入力valid信号に基づいて演算処理選択信号を生成し、前記演算処理選択信号により前記共有演算器のアプリケーション特化エンジンの切替えをすることを特徴とする付記6に記載の再構成可能演算処理装置。
(付記8)前記演算処理選択信号は、前記共有演算器の有するアプリケーション特化エンジンに対応した演算処理コードからなるテーブルを予め設定し、前記クラスタから前記アプリケーション特化エンジンを選択するために、前記入力データである前記演算処理コードを入力し、前記入力データに対応する前記アプリケーション特化エンジンの切替え制御のための信号を選択して、前記演算処理選択信号を生成することを特徴とする付記7記載の再構成可能演算処理装置。
(付記9)前記共有演算器の入力手段と出力手段は、コンフィギュレーションデータに基づき再構成可能なセレクタを配設していることを特徴とする付記1に再構成可能演算処理装置。
(付記10)前記共有演算器の入力手段と出力手段は、クロスバスイッチを配設していることを特徴とする付記1に再構成可能演算処理装置。
(付記11)前記共有演算器の入力手段はマルチポートであることを特徴とする付記1に再構成可能演算処理装置。
(付記12)前記共有演算器の出力手段はマルチポートであることを特徴とする付記1に再構成可能演算処理装置。
クラスタ1と共有演算器11の構成を示した図である。 クラスタの動作について説明した図である。 上記図2の動作をタイムチャートで示した図である。 クラスタCと共有演算器Aが接続された場合の例である。 クラスタCと共有演算器Aの動作についてのタイムチャートを示した図である。 マルチポート構成された共有演算器11を示した図である。 共有演算器の基本構成を示す図である。(2ポートの場合) 図7の動作をタイムチャートで示した図である。 共有演算器の基本構成を示す図である。(3ポートの場合) 共有演算部に使用する除算部の構成例である。 共有演算部に使用するPolar演算器の構成例である、 図11に示すPolar演算器の動作フローを示す図である。 共有演算部に使用するアークタンジェントの演算器の構成例である。 共有演算器の複数機能化について示した図である。 演算処理コード表である。 開平器の構成を示す図である。 クラスタのクロスバスイッチに直接接続する例である。 共有演算器にクロスバスイッチを設けた構成例を示した図である。 共有演算器にセレクタを設けた構成例を示した図である。 クラスタの一例を示した図である。 従来の再構成可能演算処理装置内のクラスタの構成を概念的に示す略ブロック図である。 専用のハードウェアアクセラレータを使用して、CPUやDMACを介在させて演算処理をする方法を示す図である。
符号の説明
1 再構成可能演算回路(クラスタ)
2 演算器群
3 コンフィギュレーションメモリ
4 シーケンサ
5 データ入力部
6 データバッファ部
7 データバッファ制御部
8 演算器間ネットワーク
9 データメモリ
10 演算器
11 共有演算器
101 制御部
102 M段演算ステージ(除算パイプラインの構成)
111 マルチポート入力制御
112 第1象限化&対象まるめブロック
113 象限判定ブロック
114 SinROM
115 CosROM
116 元の象限に変換ブロック
117 元の象限に変換ブロック
118 マルチポート出力制御
119 マルチポート出力制御
131 マルチポート入力制御
132 四捨五入ブロック
133 ROM(アークタンジェント)
134 ブロック
135 マルチポート出力制御
141 クラスタ
142 共有演算器
143 演算処理部
144 デコード部
161 近似table(ROM:開平)
162 除算器
163 ALU
171 クラスタ
172 共有演算器
181 クラスタ
182 共有演算器
191 クラスタ
192 共有演算器

Claims (12)

  1. コンフィギュレーション情報に基づき演算器の処理内容及び演算器間の接続関係が再構成される少なくとも2以上のクラスタから
    構成される再構成可能演算処理装置において、
    前記2以上のクラスタ間で共有利用される共有演算器を前記クラスタの外部に具備し、
    前記共有演算器は、
    前記クラスタから入力データと入力valid信号を受け付ける入力手段と、
    前記入力手段で前記入力valid信号を受け取ると、前記入力valid信号とともに受け取った前記入力データを演算処理する演算手段と、
    前記演算手段の演算処理結果である出力データと、該出力データの出力先の前記クラスタを通知する出力valid信号とを前記クラスタに出力する出力手段と、
    を具備し、
    前記2以上のクラスタは、
    前記共有演算器と接続される第1クラスタと、
    前記コンフィギュレーション情報に基づいて設定されるクロスバ又はセレクタを介して前記第1クラスタと接続することにより前記共有演算器から前記入力データ及び前記入力valid信号を受け付ける第2クラスタと
    を含む
    ことを特徴とする再構成可能演算処理装置。
  2. 前記共有演算器は、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDを生成し、前記IDはどのクラスタから前記入力データと前記入力valid信号を受け付けたかを識別する信号であり、前記IDが前記演算処理結果とともに前記出力手段に伝達され、前記出力手段は、前記IDにしたがって、前記入力データと前記入力valid信号の発行元のクラスタに出力することを特徴とする請求項1に記載の再構成可能演算処理装置。
  3. 前記共有演算器は、パイプライン構成を利用して演算処理をすることを特徴とする請求項1に記載の再構成可能演算処理装置。
  4. 前記パイプラインは、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDとともに内部validを生成し、前記入力データを演算処理した処理データとともに前記IDを、前記内部validを利用して前記パイプラインで転送することを特徴とする請求項3に記載の再構成可能演算処理装置。
  5. 前記共有演算器の構成は、単独演算を行うアプリケーション特化エンジンであることを特徴とする請求項1に記載の再構成可能演算処理装置。
  6. 前記共有演算器の構成は、単独演算を行う複数のアプリケーション特化エンジンを配設した構成であることを特徴とする請求項1に記載の再構成可能演算処理装置。
  7. 前記共有演算器は、前記アプリケーション特化エンジンの切替えを前記クラスタからの前記入力データと前記入力valid信号に基づいて演算処理選択信号を生成し、前記演算処理選択信号により前記共有演算器のアプリケーション特化エンジンの切替えをすることを特徴とする請求項6に記載の再構成可能演算処理装置。
  8. 前記演算処理選択信号は、前記共有演算器の有する前記アプリケーション特化エンジンに対応した演算処理コードからなるテーブルを予め設定し、前記クラスタから前記アプリケーション特化エンジンを選択するために、前記入力データである前記演算処理コードを入力し、前記入力データに対応する前記アプリケーション特化エンジンの切替え制御のための信号を選択して、前記演算処理選択信号を生成することを特徴とする請求項7記載の再構成可能演算処理装置。
  9. 前記共有演算器の入力手段と出力手段は、コンフィギュレーションデータに基づき再構成可能なセレクタを配設していることを特徴とする請求項1に再構成可能演算処理装置。
  10. 前記共有演算器の入力手段と出力手段は、クロスバスイッチを配設していることを特徴とする請求項1に再構成可能演算処理装置。
  11. コンフィギュレーション情報に基づき、再構成される少なくとも1以上のクラスタから構成される再構成可能演算処理装置において、
    前記1以上のクラスタ間で共有利用される共有演算器を前記クラスタの外部に具備し、
    前記共有演算器は、
    前記クラスタから入力データと入力valid信号を受け付ける入力手段と、
    前記入力手段で前記入力valid信号を受け取ると、前記valid信号とともに受け取った前記入力データを演算処理する演算手段と、
    前記演算手段の演算処理結果である出力データと、該出力データの出力先の前記クラスタを通知する出力valid信号とを前記クラスタに出力する出力手段と、
    を具備し、
    前記共有演算器は、パイプライン構成を利用して演算処理をし、
    前記パイプラインは、複数の前記クラスタより前記入力データと前記入力valid信号を受け付けたとき、識別信号であるIDとともに内部validを生成し、前記入力データを演算処理した処理データとともに前記IDを、前記内部validを利用して前記パイプラインで転送する
    ことを特徴とする、再構成可能演算処理装置。
  12. ラスタの各々が、
    演算器群と、
    コンフィギュレーションメモリと、
    シーケンサと、
    前記クラスタ同士を接続する、クロスバと
    を含み、
    前記演算器群が、
    複数の演算器と、
    データメモリと、
    データ入力手段と、
    データ出力手段と、
    前記複数の演算器と前記データメモリと前記データ入力手段と前記データ出力手段との相互接続を行う、演算器間ネットワーク手段と
    を含み、前記コンフィギュレーションメモリから供給される前記コンフィギュレーション情報により、前記複数の演算器の処理内容及び前記演算器間ネットワーク手段の構成を変更でき、
    前記コンフィギュレーション情報が複数のコンフィギュレーション情報を含み、
    前記コンフィギュレーションメモリが前記複数のコンフィギュレーション情報を保持し、
    前記シーケンサが、前記複数のコンフィギュレーション情報のうちから選択的にコンフィギュレーション情報を前記演算器群に供給することで、前記クロスバの接続先を変更してコンフィギュレーション状態の管理を行い、
    前記クロスバが、
    前記演算器群の入出力ポートに接続して、前記演算器群を有するクラスタの外部とのデータ入出力を行い、クラスタ同士のあいだでのデータ転送を行う
    ことを特徴とする、請求項1〜11のいずれか一項に記載の再構成可能演算処理装置。
JP2005071320A 2005-03-14 2005-03-14 再構成可能演算処理装置 Expired - Fee Related JP4527571B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005071320A JP4527571B2 (ja) 2005-03-14 2005-03-14 再構成可能演算処理装置
EP05256003A EP1703414B1 (en) 2005-03-14 2005-09-27 Reconfigurable processor with a shared functional unit
US11/244,062 US7743236B2 (en) 2005-03-14 2005-10-06 Reconfigurable processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005071320A JP4527571B2 (ja) 2005-03-14 2005-03-14 再構成可能演算処理装置

Publications (2)

Publication Number Publication Date
JP2006252440A JP2006252440A (ja) 2006-09-21
JP4527571B2 true JP4527571B2 (ja) 2010-08-18

Family

ID=36216930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005071320A Expired - Fee Related JP4527571B2 (ja) 2005-03-14 2005-03-14 再構成可能演算処理装置

Country Status (3)

Country Link
US (1) US7743236B2 (ja)
EP (1) EP1703414B1 (ja)
JP (1) JP4527571B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4444860B2 (ja) * 2005-03-10 2010-03-31 富士通株式会社 リコンフィギュラブル回路およびそのコンフィギュレーション方法
JP4685682B2 (ja) * 2006-03-31 2011-05-18 富士通株式会社 半導体装置
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8065356B2 (en) * 2006-12-20 2011-11-22 L3 Communications Integrated Systems, L.P. Datapipe synchronization device
KR20100084605A (ko) * 2007-05-31 2010-07-27 더 유니버시티 오브 레딩 프로세서
US9092212B2 (en) 2007-05-31 2015-07-28 James Arthur Dean Wallace Anderson Processors
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
JP5163306B2 (ja) * 2008-06-19 2013-03-13 富士通セミコンダクター株式会社 動的再構成回路およびデータ送信制御方法
US9170816B2 (en) 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
KR102032895B1 (ko) * 2013-01-28 2019-11-08 삼성전자주식회사 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
US10552126B2 (en) * 2013-03-15 2020-02-04 Teradata Us, Inc. Transitioning between code-based and data-based execution forms in computing systems and environments
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
EP4439326A1 (fr) * 2023-03-30 2024-10-02 Airbus Operations (S.A.S.) Unite de calcul d'un circuit integre configurable destinee a ameliorer la gestion d'un flux de donnees

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000201066A (ja) * 1998-11-18 2000-07-18 Altera Corp プログラマブルロジックデバイス構造
JP2002073331A (ja) * 2000-08-29 2002-03-12 Pacific Design Kk データ処理装置
WO2004023290A1 (en) * 2002-09-04 2004-03-18 Arm Limited Synchronisation between pipelines in a data processing apparatus
JP2004511042A (ja) * 2000-10-06 2004-04-08 インテル・コーポレーション プログラム可能なプロセッサのリセット
JP2004133781A (ja) * 2002-10-11 2004-04-30 Nec Electronics Corp アレイ型プロセッサ
US6745318B1 (en) * 1999-08-18 2004-06-01 Sanjay Mansingh Method and apparatus of configurable processing

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0576749B1 (en) 1992-06-30 1999-06-02 Discovision Associates Data pipeline system
JPS5461851A (en) * 1977-10-27 1979-05-18 Fujitsu Ltd Data processing system
US4509116A (en) 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
JPH0786868B2 (ja) * 1987-05-22 1995-09-20 松下電器産業株式会社 プロセッサ間通信方法
DE68909426T2 (de) * 1988-01-15 1994-01-27 Quantel Ltd Datenverarbeitung und -übertragung.
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5594918A (en) * 1991-05-13 1997-01-14 International Business Machines Corporation Parallel computer system providing multi-ported intelligent memory
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US20060117274A1 (en) * 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
WO2001035224A1 (en) * 1999-10-26 2001-05-17 Arthur D. Little, Inc. Bit-serial memory access with wide processing elements for simd arrays
US6633181B1 (en) * 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
JP3674515B2 (ja) 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
EP1472616B8 (de) * 2001-09-19 2012-03-21 Richter, Thomas Rekonfigurierbare elemente
US7471643B2 (en) * 2002-07-01 2008-12-30 Panasonic Corporation Loosely-biased heterogeneous reconfigurable arrays
US7225324B2 (en) * 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
JP2006518058A (ja) * 2002-10-31 2006-08-03 ロッキード マーティン コーポレーション 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
JP4570962B2 (ja) * 2002-12-30 2010-10-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理システム
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7039737B1 (en) * 2003-12-12 2006-05-02 Emc Corporation Method and apparatus for resource arbitration
US7126381B1 (en) * 2004-02-14 2006-10-24 Herman Schmit VPA interconnect circuit

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000201066A (ja) * 1998-11-18 2000-07-18 Altera Corp プログラマブルロジックデバイス構造
US6745318B1 (en) * 1999-08-18 2004-06-01 Sanjay Mansingh Method and apparatus of configurable processing
JP2002073331A (ja) * 2000-08-29 2002-03-12 Pacific Design Kk データ処理装置
JP2004511042A (ja) * 2000-10-06 2004-04-08 インテル・コーポレーション プログラム可能なプロセッサのリセット
WO2004023290A1 (en) * 2002-09-04 2004-03-18 Arm Limited Synchronisation between pipelines in a data processing apparatus
JP2004133781A (ja) * 2002-10-11 2004-04-30 Nec Electronics Corp アレイ型プロセッサ

Also Published As

Publication number Publication date
US7743236B2 (en) 2010-06-22
US20060206696A1 (en) 2006-09-14
JP2006252440A (ja) 2006-09-21
EP1703414A1 (en) 2006-09-20
EP1703414B1 (en) 2012-01-18

Similar Documents

Publication Publication Date Title
CN109213723B (zh) 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
JP4527571B2 (ja) 再構成可能演算処理装置
US7020673B2 (en) Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system
US10140124B2 (en) Reconfigurable microprocessor hardware architecture
US20190095383A1 (en) Processors, methods, and systems for debugging a configurable spatial accelerator
CN111512292A (zh) 用于可配置空间加速器中的非结构化数据流的装置、方法和系统
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
EP2372530A1 (en) Data processing method and device
US20090182987A1 (en) Processing Unit Incorporating Multirate Execution Unit
WO2001016710A1 (fr) Processeur de donnees
US7734896B2 (en) Enhanced processor element structure in a reconfigurable integrated circuit device
US10445099B2 (en) Reconfigurable microprocessor hardware architecture
JP5231949B2 (ja) 半導体装置、および、半導体装置によるデータ処理方法
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
JP2006011825A (ja) 再構成可能演算装置および半導体装置
US20050289328A1 (en) Reconfigurable processor and semiconductor device
US7509479B2 (en) Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit
JP5633303B2 (ja) リコンフィグ可能なlsi
Rettkowski et al. Application-specific processing using high-level synthesis for networks-on-chip
RU2686017C1 (ru) Реконфигурируемый вычислительный модуль
Srini et al. Parallel DSP with memory and I/O processors
JP5701930B2 (ja) 半導体装置
US20090113083A1 (en) Means of control for reconfigurable computers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100603

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4527571

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees