以下、図面を用いて実施形態を説明する。
図1は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの一実施形態を示す。図1に示す半導体装置SEMは、FPGA等の論理を動的に再構成可能なプログラマブルデバイスである。
半導体装置SEMは、論理を動的に再構成可能な複数の機能ブロックBLK、共通配線部CMW、複数のルータ部RT、複数の専用配線部EXWおよび複数の配線切替部WSWを有する。図1では、情報を転送する配線は太い線で示される。共通配線部CMWは太い点線で示され、専用配線部EXWは太い一点鎖線で示される。機能ブロックBLKは、ブロックの一例であり、共通配線部CMWは、第1の配線部の一例であり、専用配線部EXWは、第2の配線部の一例である。
共通配線部CMWは、機能ブロックBLKの間に配置される。例えば、機能ブロックBLKは、縦横に配列され、共通配線部CMWは、機能ブロックBLKの間に格子状に配置される。ルータ部RTは、格子状の共通配線部CMWにおける交差部CRSにそれぞれ配置され、機能ブロックBLKのいずれかにそれぞれ接続される。ルータ部RTは、情報の宛先毎に予め設定された経路情報に基づいて、機能ブロックBLKから出力される情報を宛先の機能ブロックBLKに転送する。例えば、情報の宛先は、転送する情報とともに機能ブロックBLKから出力される。そして、所定の機能を実現する機能回路の論理が2以上の機能ブロックBLKに分割して搭載される場合、ルータ部RTは、2以上の機能ブロックBLK間で情報を転送する共通配線部CMWの経路を決定する。
専用配線部EXWは、各機能ブロックBLKの周囲にそれぞれ配置され、対応する機能ブロックBLKに接続される。配線切替部WSWは、共通配線部CMWを挟んで互いに対向する一対の専用配線部EXWの間に配置され、一対の専用配線部EXW間の接続/非接続を切り替える。図1に示す例では、配線切替部WSWは、矩形状の機能ブロックBLKの周囲に配置される矩形環状の専用配線部EXWの4辺にそれぞれ接続される。そして、配線切替部WSWは、所定の機能を実現する他の機能回路の論理が2以上の機能ブロックBLKに分割して搭載される場合、配線切替部WSWにより専用配線部EXWを順に接続することで、2以上の機能ブロックを相互に接続する。なお、専用配線部EXWは、転送される情報(信号)の転送能力を維持するために、リピータ(バッファ)またはフリップフロップ等が挿入されてもよい。機能ブロックBLK間での専用配線部EXWを介した情報の転送速度は、機能ブロックBLK間での共通配線部CMWを介した情報の転送速度と同等である。これにより、機能回路を搭載した2以上の機能ブロックBLK間での情報を、共通配線部CMWまたは専用配線部EXWのいずれを使用しても転送することができる。
また、専用配線部EXWの4辺のそれぞれに配線切替部WSWを配置することで、図1より配線切替部WSWの数が少ない他の半導体装置に比べて、機能回路を搭載した機能ブロックBLK間の接続経路を短くすることができる。この結果、他の半導体装置に比べて、機能ブロックBLK間での情報の転送効率を向上することができ、複数の機能ブロックBLKに搭載される機能回路の性能を向上することができる。
図2は、図1に示す半導体装置が搭載される情報処理装置の一例を示す。図2に示す情報処理装置IPEは、図1に示す半導体装置SEM、制御装置CNTLおよび記憶装置MEMを有する。半導体装置SEM、制御装置CNTLおよび記憶装置MEMは、バスBUSを介して互いに接続される。制御装置CNTLは、CPU(Central Processing Unit)等のプロセッサである。例えば、情報処理装置IPEは、複数の動画像データ等を並列に処理する画像処理装置として機能する。
記憶装置MEMは、半導体装置SEMの機能ブロックBLKに搭載する機能回路の回路情報を保持する。記憶装置MEMが保持する回路情報は、情報処理装置IPEの外部から書き込まれる。また、制御装置CNTLが、プログラムを実行することにより機能回路を機能ブロックBLKに搭載する場合、記憶装置MEMは、制御装置CNTLが実行するプログラムを保持する。なお、プログラムは、制御装置CNTLに搭載される内蔵メモリに格納されてもよい。
制御装置CNTLは、記憶装置MEMに保持された回路情報を半導体装置SEMの所定の機能ブロックBLKに書き込む。例えば、制御装置CNTLは、空いている機能ブロックBLKの中から回路情報を書き込む機能ブロックBLKを選択し、選択した機能ブロックBLKに回路情報を書き込む。また、制御装置CNTLは、回路情報を2以上の機能ブロックBLKに分割して書き込む場合であって、専用配線部EXWと配線切替部WSWとを使用して機能ブロックBLK間を接続する場合、機能ブロックBLK間を接続する専用配線部EXWの経路を決定する。そして、制御装置CNTLは、決定した経路上に存在する配線切替部WSWを制御して専用配線部EXWの接続を切り替えることで、機能ブロックBLK間を専用配線部EXWを介して接続する。専用配線部EXWを介して機能ブロックBLK間を接続する例は、図4で説明される。
図3は、図2に示す情報処理装置IPEの動作の一例を示す。図3に示す動作は、図2に示す制御装置CNTLに搭載されるハードウェアにより実現され、あるいは、図2に示す制御装置CNTLが実行するプログラムにより実現される。すなわち、図3は、半導体装置SEMの論理の再構成方法および半導体装置SEMの論理の再構成プログラムの一例を示す。
図3に示すフローが開始される前、機能回路を搭載する機能ブロックBLKに対応する回路情報が記憶装置MEMに格納される。機能回路が2つの機能ブロックBLKに分割して搭載される場合、2つの機能ブロックBLKに対応する2つに分割された回路情報が記憶装置MEMに格納される。そして、制御装置CNTLは、半導体装置SEMに機能回路をプログラムする指示を情報処理装置IPEの外部から受信したことに基づいて、図3に示す動作を開始する。なお、機能回路を実現する回路情報を複数の機能ブロックBLKに対応して分割する処理は、制御装置CNTLにより実行されてもよい。
まず、ステップS10において、制御装置CNTLは、機能回路を半導体装置SEMに搭載可能か否かを判定する。半導体装置SEM内で空いている機能ブロックBLKの数が、機能回路を搭載する機能ブロックBLKの数以上の場合、処理はステップS20に移行される。半導体装置SEM内で空いている機能ブロックBLKの数が、機能回路を搭載する機能ブロックBLKの数より少ない場合、図3に示す処理は終了する。そして、制御装置CNTLは、機能ブロックBLKの数が足りないことを示すエラー情報を、例えば、情報処理装置IPEに接続されたディスプレイ等に表示する。
ステップS20において、制御装置CNTLは、半導体装置SEM内で空いている機能ブロックBLKのうち、機能回路を搭載する機能ブロックBLKを決定する。例えば、制御装置CNTLは、空いている機能ブロックBLKのうち、使用していない共通配線部CMWまたは使用していない専用配線部EXWが周囲に多い機能ブロックBLKを優先的に選択する。さらに、選択した機能ブロックBLKの数が、機能回路を搭載する機能ブロックBLKの数より多い場合、制御装置CNTLは、選択した機能ブロックBLKの中から、互いに近い機能ブロックBLKを優先的に選択する。
次に、ステップS30において、制御装置CNTLは、ステップS20で使用を決定した機能ブロックBLKに機能回路の回路情報を書き込む。すなわち、制御装置CNTLは、回路情報を記憶装置MEMから読み出し、読み出した回路情報を、機能回路を搭載する機能ブロックBLKにプログラムする。例えば、回路情報は、機能ブロック内において、回路の論理を設定するルックアップテーブル等に書き込まれる。ルックアップテーブルは、SRAM(Static Random Access Memory)等の記憶部により実現される。
次に、ステップS40において、制御装置CNTLは、複数の機能ブロックBLKに機能回路を搭載した場合、処理をステップS50に移行する。制御回路CNTLは、1つの機能ブロックBLKに機能回路を搭載した場合、共通配線部CMWおよび専用配線部EXWによる機能ブロックBLK間の接続処理を実行しないため、処理を終了する。
ステップS50において、制御装置CNTLは、ステップS30で機能回路を搭載した機能ブロックBLK間の接続に共通配線部CMWが使用可能か否かを判定する。制御装置CNTLは、ステップS30で機能回路を搭載した機能ブロックBLK間を接続する共通配線部CMWの経路および経路中に存在するルータ部RTが他の機能ブロックBLKで使用されていない場合、処理をステップS90に移行する。また、制御装置CNTLは、機能ブロックBLK間を接続する共通配線部CMWの経路および経路中に存在するルータ部RTが他の機能ブロックBLKで使用されている場合、以下の<条件>を判定する。そして、制御装置CNTLは、<条件>を満足する場合、共通配線部CMWを使用可能なため、処理をステップS90に移行し、<条件>を満足しない場合、専用配線部EXWを使用するため、処理をステップS60に移行する。
<条件>「機能ブロックBLK間でのデータ転送速度の最大値と、ステップS30で機能回路を搭載した機能ブロックBLK間でのデータ転送速度の最大値との和が、共通配線部CMWおよびルータ部RTの最大データ転送速度以下である。」例えば、データ転送速度は、”bps(bits per second)”等、所定時間に転送されるデータ量を示す。
ステップS60において、制御装置CNTLは、ステップS30で機能回路を搭載した機能ブロックBLK間の接続に専用配線部EXWが使用可能な否かを判定する。制御装置CNTLは、ステップS30で機能回路を搭載した機能ブロックBLK間を接続する専用配線部EXWの経路が他の機能ブロックBLKで使用されていない場合、処理をステップS70に移行する。一方、制御装置CNTLは、機能ブロックBLK間を接続する専用配線部EXWの経路が他の機能ブロックBLKで使用されている場合、共通配線部CMWを使用するため、処理をステップS90に移行する。
なお、処理をステップS60からステップS90に移行する場合、制御装置CNTLは、共通配線部CMWの複数の機能回路での共用により、機能回路が実行する処理の性能が、共通配線部CMWを共用しない場合に比べて低下する旨をディスプレイ等に表示する。図3のフローには示していないが、性能の低下が許容されない場合、情報処理装置IPEの管理者または情報処理装置IPEを使用するユーザ等は、ステップS30で搭載した機能回路を消去する指示を、情報処理装置IPEに入力する。消去の指示を受けた情報処理装置IPEの制御装置CNTLは、ステップS30で搭載した機能回路を消去し、ステップS90を実行することなく処理を終了する。
ステップS70において、制御装置CNTLは、他の機能ブロック間の接続に使用していない専用配線部EXWを用いて、ステップS30で機能回路を搭載した機能ブロックBLK間を接続する専用配線部EXWの経路を決定する。次に、ステップS80において、制御装置CNTLは、配線切替部WSWを切り替えて、ステップS70で決定した経路上に存在する専用配線部EXWを順に接続し、処理を終了する。
一方、ステップS90において、制御装置CNTLは、ステップS30で機能回路を搭載した機能ブロックBLK間での情報の転送を、共通配線部CMWを使用して実行することを決定し、処理を終了する。ステップS30で機能回路を搭載した機能ブロックBLKは、制御回路CNTLの決定に基づいて、共通配線部CMWを使用して情報を転送する。
図4は、図3に示す処理により機能ブロックBLK間に転送経路を設定する動作の一例を示す。図4では、機能ブロックBLK間を接続する経路は極太の実線で示される。
状態(A)では、機能回路B、C、Dの各々が、機能ブロックBLKを使用して半導体装置SEMに搭載されている。機能回路Bは、中央に縦方向に並ぶ2つの機能ブロックBLKに搭載され、機能ブロックBLKの一方で生成される情報は、共通配線部CMWおよびルータ部RTを介して機能ブロックBLKの他方に転送される。機能回路Cは、左下の1つの機能ブロックBLKに搭載され、機能回路Dは、右上の1つの機能ブロックBLKに搭載される。状態(A)では、左上の機能ブロックBLKと右下の機能ブロックBLKとは、使用されずに空いている。
状態(A)において、制御装置CNTLは、新たな機能回路Aを半導体装置SEMに搭載する指示を情報処理装置IPEの外部から受ける。機能回路Aの搭載に使用される機能ブロックBLKの数は2つである。
次に、状態(B)において、制御装置CNTLは、空いている2つの機能ブロックBLKを選択し、選択した機能ブロックBLKに機能回路Aを搭載する。機能回路Aを搭載した機能ブロックBLKを、共通配線部CMWを介して接続する場合、機能回路Bを搭載した機能ブロックBLK間での情報の転送に使用されるルータ部RTの1つは、機能回路Aを搭載した機能ブロックBLK間での情報の転送にも使用される。ここで、制御装置CNTLは、機能回路Aを搭載した2つの機能ブロックBLKを、共通配線部CMWを介して接続する場合、上述した<条件>を満足しないと判定する。
そこで、状態(C)に示すように、制御装置CNTLは、複数の専用配線部EXWおよび複数の配線切替部WSWを介して、機能回路Aを搭載した2つの機能ブロックBLKを互いに接続し、機能回路Aの半導体装置SEMへの搭載動作を完了する。状態(C)では、機能回路Aと機能回路Bとは、互いに独立した経路で情報を転送するため、転送する情報がルータ部RTで競合することにより機能ブロックBLK間での情報の転送速度が低下することを抑止することができる。また、<条件>を満足しない場合にも、機能回路Aを機能ブロックBLKに搭載できるため、専用配線部EXWを持たない他の半導体装置に比べて、機能ブロックBLKの配置の自由度を高めることができる。
なお、状態(A)において、機能回路Cを右下の機能ブロックBLKに再構成し、機能回路Aを左上と左下の機能ブロックBLKに搭載することで、機能回路Aを搭載した2つの機能ブロックBLKを、共通配線部CMWを介して接続することができる。但し、この場合、機能回路Cを右下の機能ブロックBLKに再構成する期間、機能回路Cの動作は停止する。すなわち、機能回路Aの半導体装置SEMへの搭載により、機能回路Aと無関係の機能回路Cの動作に影響を与えてしまう。また、機能回路Cの動作が停止するまで待ち、機能回路Cの動作が停止している期間に、機能回路Cを右下の機能ブロックBLKに再構成することも可能である。しかしながら、この場合、機能回路Cの動作が停止するまでの期間と、機能回路Cを右下の機能ブロックBLKに再構成するまでの期間とを合わせた期間、機能回路Aの半導体装置SEMへの搭載は待たされてしまう。
図4の右下の括弧内は、専用配線部EXWおよび配線切替部WSWを持たない他の半導体装置に機能回路B、Aを順に搭載する例を示す。機能回路Bを搭載した機能ブロックBLK間での情報の転送と、機能回路Aを搭載した機能ブロックBLK間での情報の転送とは、共通配線部CMWおよびルータ部RTを介して実行される。この例では、太枠で示すルータ部RTは、機能回路Bを搭載した2つの機能ブロックBLK間で転送される情報と、機能回路Aを搭載した2つの機能ブロックBLK間で転送される情報との両方のルーティングを処理する。
このため、太枠で示すルータ部RTの負荷は、状態(A)に比べて増大し、機能回路Bを搭載した2つの機能ブロックBLK間での情報の転送速度は低下し、機能回路Bの処理性能は低下するおそれがある。例えば、機能回路Bが、符号化された動画像データを復号する処理を実行する場合、2つの機能ブロックBLK間での情報の転送速度が所定の転送速度より低くなると、単位時間当たりの画像の表示数を示すフレームレートが低下するおそれがある。この結果、動画像の品質が低下するおそれがある。また、機能回路Bが、動画像データを符号化する処理を実行する場合、2つの機能ブロックBLK間での情報の転送速度が低くなるほど、符号化時間が長くなるおそれがある。機能回路Bを搭載した2つの機能ブロックBLK間での情報の転送速度が仕様を満足しない場合、半導体装置SEMへの機能回路Aの搭載は断念される。
以上、図1から図4に示す実施形態では、機能ブロックBLK間での情報の転送速度を低下させることなく、機能ブロックBLKの配置の自由度を高めることできる。換言すれば、機能ブロックBLKに搭載された回路機能の動作を停止することなく、新たな回路機能を機能ブロックBLKに搭載することができる。また、例えば、図4において、機能回路Bの性能を低下させることなく、機能回路Aを半導体装置SEMに搭載することができる。さらに、機能回路Cを他の空いている機能ブロックBLKに再構成することなく、機能回路Aを半導体装置SEMに搭載することができる。
また、図1に示すように、専用配線部EXWの4辺のそれぞれに配線切替部WSWを配置することにより、図1より配線切替部WSWの数が少ない場合に比べて、機能回路を搭載した機能ブロックBLK間の接続経路を短くすることができる。これにより、図1より配線切替部WSWの数が少ない場合に比べて、機能ブロックBLK間での情報の転送効率を向上することができ、複数の機能ブロックBLKに搭載される機能回路の性能を向上することができる。
図5は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの別の実施形態を示す。図1に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図1に示すサーバSVは、バスBUSに接続されたCPU、記憶装置MEM、FPGA、HDD(Hard Disk Drive)、入出力インタフェースIOIF、メディアインタフェースMIFおよび通信インタフェースCIFを有する。サーバSVは情報処理装置の一例であり、CPUは制御装置の一例であり、FPGAは、半導体装置の一例である。
CPUは、FPGAに機能回路の論理を書き込む再構成プログラムを実行するとともに、サーバSVの全体の動作を制御する。FPGAは、図1に示す半導体装置SEMと同様に、論理を再構成可能な複数の機能ブロックBLKを有する。FPGAの例は、図6および図7に示される。サーバSVは、複数のCPUを有してもよく、複数のFPGAを有してもよい。サーバSVが複数のFPGAを有する場合、複数のFPGAは、コネクタ等を介してバスBUSに接続されるFPGA基板に搭載されてもよい。
記憶装置MEMは、FPGAに搭載する機能回路の回路情報を保持する記憶領域と、CPUが実行する再構成プログラムを保持する記憶領域とを有する。なお、再構成プログラムは、CPUに搭載される内蔵メモリに保持されてもよい。例えば、記憶装置MEMは、複数のSDRAM(Synchronous Dynamic Random Access Memory)が搭載されたDIMM(Dual Inline Memory Module)である。なお、サーバSVは、HDDの代わりにSSD(Solid State Drive)を有してもよく、HDDとSSDの両方を有してもよい。
HDDは、メディアインタフェースMIFまたは通信インタフェースCIFを介してサーバSVの外部から供給される情報(回路情報、データ、プログラム等)を保持する。例えば、再構成プログラムおよび機能回路の回路情報は、HDDに保持された後、HDDから記憶装置MEMに転送される。
入出力インタフェースIOIFは、マウスMSおよびキーボードKBD等の入力装置と、ディスプレイDISP等の出力装置にそれぞれ接続される。メディアインタフェースMIFは、DVD(Digital Versatile Disc)等の記録メディアRMが装着される光学ドライブ装置等のメディアドライブ装置MDVに接続され、記録メディアRMとの間で情報を入出力する。通信インタフェースCIFは、インターネットまたはイントラネット等のネットワークNWに接続され、ネットワークNWとの間で情報を入出力する。
図6および図7は、図5に示すFPGAの一例を示す。図7は、図6に示すFPGAの要部を示す。
FPGAは、縦横に配列される複数の機能ブロックBLKと、機能ブロックBLKの間に格子状に配置された共通配線部CMWと、共通配線部CMWの交点に配置されたルータ部RTとを有する。図6に示す例では、FPGAは、縦方向と横方向にそれぞれ5個ずつ配置された25個のブロックBLKを有するが、横方向および縦方向に配列されるブロックBLKの数は、図6に限定されない。
また、FPGAは、各機能ブロックBLKの周囲に配置された専用配線部EXWと、隣接する一対の専用配線部EXWの間に配置された配線切替部WSWとを有する。例えば、配線切替部WSWは、矩形形状を有する各機能ブロックBLKの四辺に対応する位置にそれぞれ配置される。
さらに、FPGAは、各ブロックBLKをFPGAの外部に接続する入出力部IOとを有する。入出力部IOに隣接する共通配線部CMWは、入出力部IOに信号を入出力可能であり、入出力部IOに隣接する配線切替部WSWは、入出力部IOに信号を入出力可能である。図7に示すように、配線切替部WSWは、隣接する一対の専用配線部EXWを互いに接続する複数の配線を含む橋渡し配線部BWを有する。橋渡し配線部BWは、接続配線部の一例である。
各機能ブロックBLKは、複数の論理ブロックLBLKと、論理ブロックLBLK間を接続する配線およびスイッチマトリックス(図示せず)とを有する。各論理ブロックLBLKは、SRAM等を用いた複数のルックアップテーブルLUTと複数のフリップフロップFFとを含む。例えば、ルックアップテーブルLUT(SRAM)に論理を書き込み、ルックアップテーブルLUT間を内部配線で接続することで、組み合わせ回路が構築され、ルックアップテーブルLUT間にフリップフロップFFを挿入することで順序回路が構築される。ルックアップテーブルLUTは、機能回路の論理を機能ブロックBLK内に構築する回路情報を記憶する第1の記憶部の一例である。
FPGAに搭載する機能回路が1つの機能ブロックBLKに収まらない場合、機能回路の回路情報は、複数の機能ブロックBLKに分けてプログラムされる。この場合、機能回路が搭載された複数の機能ブロックBLKは、共通配線部CMWまたは専用配線部EXWを介して情報を転送する。例えば、FPGAに搭載される機能回路は、画像処理に使用されるエンコーダまたはデコーダ等の所定の機能を実現するための回路である。機能回路は、IP(Intellectual Property)コアとして提供されてもよい。
ルータ部RTは、機能ブロックBLKまたは隣接する共通配線部CMWのいずれかから転送される情報を、他の機能ブロックBLKまたは隣接する共通配線部CMWの他のいずれかに転送するルーティングの機能を有する。ルータ部RTの例は、図8に示される。
各共通配線部CMWは、機能回路が搭載された複数の機能ブロックBLK間で入出力される情報を転送する複数の配線を有する。特に限定されないが、共通配線部CMWに設けられる配線は、32ビット、64ビットまたは128ビットである。情報を転送する共通配線部CMWは、ルータ部RTにより選択される。なお、複数の機能回路の各々が、複数の機能ブロックBLKに分けてプログラムされる場合、共通配線部CMWは、複数の機能回路に共通に使用可能である。そして、機能ブロックBLK、ルータ部RTおよび共通配線部CMWにより、いわゆるNoC(Network on Chip)アーキテクチャが構築される。
例えば、各機能回路が搭載された機能ブロックBLKは、転送する情報を含むパケットを、機能ブロックBLKに接続されたルータ部RTに送信する。ルータ部RTは、受信したパケットを調停し、調停により選択したパケットを、パケットに含まれる宛先が示す機能ブロックBLKに向けて、共通配線部CMWのいずれかに送信する。共通配線部CMWを介してパケットを受信したルータ部RTは、パケットに含まれる宛先が示す機能ブロックBLKに向けてパケットを共通配線部CMWのいずれかに送信する。そして、宛先の機能ブロックBLKに接続されたルータ部RTは、受信したパケットを機能ブロックBLKに送信する。パケット方式により、異なる機能回路がプログラムされた複数の機能ブロックBLKは、共通配線部CMWおよびルータ部RTを共通に使用することができる。なお、機能ブロックBLKが生成する情報は、パケット方式以外の手法を用いて、共通配線部CMWおよびルータ部RTを介して他の機能ブロックBLKに転送されてもよい。
各専用配線部EXWは、各機能ブロックBLKの周囲に配置される複数の環状の配線を有する。特に限定されないが、専用配線部EXWに設けられる配線は、32ビット、64ビットまたは128ビットである。そして、機能回路が搭載された複数の機能ブロックBLK間で入出力される情報は、配線切替部WSWより接続された所定数の専用配線部EXWを介して相互に転送される。但し、配線切替部WSWは、パケットを保持し、保持したパケットを順に転送する機能を持たないため、各専用配線部EXWは、1つの機能回路で処理される情報の転送に専用に使用される。配線切替部WSWの例は、図9に示される。
図6に示す入出力部IOは、機能回路が搭載された機能ブロックBLKに共通配線部CMWまたは専用配線部EXWを介して接続される複数のバッファと、バッファにそれぞれ接続される複数の外部端子(パッド)とを有する。バッファは、入力バッファ、出力バッファまたは入出力バッファのいずれかである。バッファと専用配線部EXWとは橋渡し配線部BWを介して接続される。
図8は、図7に示すルータ部RTの一例を示す。ルータ部RTは、ルータ部RTの左方向L、右方向R、上方向U、下方向Dおよび機能ブロックBLKから受信するパケットをそれぞれ保持する5個のパケットキューPQUE、調停部ARB、スイッチ制御部SWCNTおよびクロスバースイッチXBARを有する。例えば、パケットキューPQUEは、FIFO(First-In First-Out)構造を有し、受信したパケットを受信した順に調停部ARBに出力する。パケットは、機能回路が分割して搭載された複数の機能ブロックBLKの1つから他の1つに転送する情報(データ)と、情報の転送先の機能ブロックBLKを示す転送先情報とを含む。
調停部ARBは、パケットキューPQUEからそれぞれ出力されるパケットを調停し、調停により選択したパケットに含まれる転送先情報をスイッチ制御部SWCNTに出力し、調停により選択したパケットをクロスバースイッチXBARに出力する。スイッチ制御部SWCNTは、調停部ARBからの転送先情報に基づいて、クロスバースイッチXBARの接続を切り替える切り替え信号SSWを出力する。
クロスバースイッチXBARは、切り替え信号SSWに基づいて、調停部ARBから受信するパケットを、ルータ部RTの左方向L、右方向R、上方向U、下方向Dおよび機能ブロックBLKのいずれかに転送するために切り替わる。なお、転送経路が重複しない場合、クロスバースイッチXBARは、複数のパケットを並列に転送可能である。転送経路が重複するか否かは、調停部ARBにより判断される。
パケットにより情報を機能ブロックBLK間で転送することで、機能ブロックBLKにそれぞれ搭載された複数の機能回路が生成する情報を、衝突させることなく共通配線部CMWを介して機能ブロックBLK間で転送することができる。
図9は、図7に示す配線切替部WSWの一例を示す。配線切替部WSWは、一対の専用配線部EXW(CW、CCW)のそれぞれに接続された一対のスイッチ群SWGと、一対のスイッチ群SWGを互いに接続する複数の配線を含む橋渡し配線部BWとを有する。一対のスイッチ群SWGの一方および他方は、互いに対向する一対の専用配線部EXW上にそれぞれ配置される第1の切替部および第2の切替部の一例である。
各スイッチ群SWGは、機能ブロックBLK内の配線、専用配線部EXWの時計回り方向CWから接続される配線、専用配線部EXWの反時計回り方向CCWから接続される配線および橋渡し配線部BWの配線に接続された複数のスイッチ部SWを有する。なお、図6に示す入出力部IOに隣接する配線切替部WSWは、1つのスイッチ群SWGを有し、橋渡し配線部BWは、入出力部IOに接続される。
配線切替部WSWは、各スイッチ部SWの動作を制御するスイッチ制御信号SCNTの論理を保持するSRAMを有する。スイッチ制御信号SCNTの論理は、スイッチ群SWGによる配線の接続仕様を示す接続情報の一例であり、SRAMは、接続情報を記憶する第2の記憶部の一例である。SRAMは、配線切替部WSWの外部に配置されてもよい。また、SRAMは、ルックアップテーブルLUT(図7)として構築されてもよい。SRAMをルックアップテーブルLUTとして構築することで、図5に示すCPUは、機能ブロックBLKに回路情報を書き込む場合と同様の手法によりSRAMにスイッチ部SWの接続情報を書き込むことで、スイッチ部SWの接続を切り替えることができる。
各スイッチ部SWは、機能ブロックBLKと橋渡し配線部BWとを接続するスイッチSW1、機能ブロックBLKと時計回り方向CWとを接続するスイッチSW2および機能ブロックBLKと反時計回り方向CCWとを接続するスイッチSW3を有する。また、各スイッチ部SWは、時計回り方向CWと反時計回り方向CCWとを接続するスイッチSW4(SW41、SW42)および橋渡し配線部BWと時計回り方向CWとを接続するスイッチSW5を有する。さらに、各スイッチ部SWは、橋渡し配線部BWと反時計回り方向CCWとを接続するスイッチSW6を有する。図9の太い矢印は、スイッチSW2を介して、機能ブロックBLK内の配線と専用配線部EXWの時計回り方向CWから接続される配線とが互いに接続される状態を示す。
図9に示す構成の配線切替部WSWにより、ブロックBLK内の配線を、時計回り方向CWの配線、反時計回り方向CCWの配線または橋渡し配線部BWの配線のいずれかに接続することができる。専用配線部EXWの時計回り方向CWからの配線を、ブロックBLK内の配線、反時計回り方向CCWの配線または橋渡し配線部BWの配線いずれかに接続することができる。専用配線部EXWの反時計回り方向CCWからの配線を、ブロックBLK内の配線、時計回り方向CWの配線または橋渡し配線部BWの配線のいずれかに接続することができる。さらに、橋渡し配線部BWからの配線を、時計回り方向CWの配線、反時計回り方向CCWの配線またはブロックBLK内の配線に接続することができる。この結果、所定数の機能ブロックBLKを挟んで配置される互いに離れた機能ブロックBLK間を、任意の経路の専用配線部EXWを使用して互いに接続することができる。
図9では、各スイッチSW1−SW6は、nチャネルMOS(Metal Oxide Semiconductor)トランジスタで示される。しかしながら、各スイッチSW1−SW6は、nチャネルMOSトランジスタとpチャネルMOSトランジスタとを並列に接続したCMOS伝達ゲートで構築されてもよい。各スイッチSW1−SW6は、SRAMの出力に接続されたトランジスタのゲートの電圧を変化させることでオン状態(導通状態)またはオフ状態(遮断状態)に設定される。
なお、専用配線部EXWおよびスイッチ群SWGは、機能ブロックBLK内の外周部の要素を使用して再構成可能に構築されてもよい。この場合、図4の括弧内に示すようなNoC(Network on Chip)アーキテクチャが構築された既存のFGPAを使用して、図6および図7に示す構造を構築することができる。また、専用配線部EXWおよびスイッチ群SWGを、機能ブロックBLK内の外周部に再構成可能に構築する場合、FPGAは、専用配線部EXWおよびスイッチ群SWGを構築しない所定数の機能ブロックBLKを有してもよい。例えば、図6に示すFPGAにおいて、他の機能ブロックBLKに比べて専用配線部EXWおよびスイッチ群SWGを使用する可能性が低い4隅の4つの機能ブロックBLKは、専用配線部EXWおよびスイッチ群SWGが構築されない。
専用配線部EXWおよびスイッチ群SWGを持たない機能ブロックBLKは、専用配線部EXWおよびスイッチ群SWGを持つ機能ブロックBLKに比べて、搭載する機能回路の回路規模を大きくすることができる。これにより、図6の構成に比べて、2つの機能ブロックBLKに分割して搭載する機能回路を1つの機能ブロックBLKに搭載できる可能性を高くすることができ、FPGAへの機能回路の搭載効率を高くすることができる。さらに、専用配線部EXWおよびスイッチ群SWGを再構成可能にすることで、例えば、4隅の機能ブロックBLKに専用配線部EXWおよびスイッチ群SWGを構築するか否かを、FPGAに搭載する機能回路の回路規模に応じて選択することができる。
図10は、図9に示す配線切替部WSWによる配線の切り換え制御の一例を示す。図10に示す例では、スイッチSW1をオン状態ONに設定し、他のスイッチSW2−SW6をオフ状態に設定することで、機能ブロックBLKと橋渡し配線部BWとが互いに接続される。スイッチSW2をオン状態ONに設定し、他のスイッチSW1、SW3−SW6をオフ状態に設定することで、機能ブロックBLKと時計回り方向CWとが互いに接続される。スイッチSW3をオン状態ONに設定し、他のスイッチSW1−SW2、SW4−SW6をオフ状態に設定することで、機能ブロックBLKと反時計回り方向CCWとが互いに接続される。
スイッチSW4をオン状態ONに設定し、他のスイッチSW1−SW3、SW5−SW6をオフ状態に設定することで、時計回り方向CWと反時計回り方向CCWとが互いに接続される。スイッチSW5をオン状態ONに設定し、他のスイッチSW1−SW4、SW6をオフ状態に設定することで、橋渡し配線部BWと時計回り方向CWとが互いに接続される。スイッチSW6をオン状態ONに設定し、他のスイッチSW1−SW5をオフ状態に設定することで、橋渡し配線部BWと反時計回り方向CCWとが互いに接続される。
図5に示すサーバSVが、FPGAに機能回路を搭載する動作の例は、図3と同じである。図5に示すサーバSVでは、図3に示す処理は、サーバSVがマウスMSまたはキーボードKBDを介して機能回路の搭載の指示を受信したことに基づいて、CPUが再構成プログラムを実行することで実行される。なお、機能回路の搭載が指示される前に、記録メディアRMまたはネットワークNWを介して、機能回路の回路情報がHDDまたは記憶装置MEMに格納される。機能回路が2つの機能ブロックBLKに分割して搭載される場合、機能回路の回路情報は、2つの機能ブロックBLKに対応する回路情報に分割された後、HDDまたは記憶装置MEMに格納される。
なお、サーバSVは、機能回路の回路情報を、機能回路を搭載する機能ブロックBLKの数に応じて分割する機能を有してもよい。この場合、サーバSVは、記録メディアRMまたはネットワークNWを介して、分割される前の機能回路の回路情報を受信し、受信した回路情報をHDDまたは記憶装置MEMに格納する。そして、CPUは、図3に示す処理を実行するプログラムとは別に、機能回路の回路情報を分割する分割プログラムを、図3に示す処理を実行する前に実行する。
図11は、図6に示すFPGAに機能回路を搭載する動作の一例を示す。図11では、機能ブロックBLK間を接続する共通配線部CMWは太い点線で示され、機能ブロックBLK間を接続する専用配線部EXWは太い実線で示される。また、説明を分かりやすくするために、機能ブロックBLKにおけるX方向の並び順とY方向の並び順を用いて、各機能ブロックBLKの位置が、アドレスXYとして示される。
状態(A)において、機能回路B、C、D、E、F、G、H、I、J、K、L、Mの各々が、1以上の機能ブロックBLKを使用してFPGAに搭載されている。アドレスXYが”11”、”42”、”53”、”45”の機能ブロックBLKは空いている。なお、図11は、機能回路が最大で3つの機能ブロックBLKに分割して搭載される例を示すが、機能回路は、4つ以上の機能ブロックBLKに分割して搭載されてもよい。
機能回路Cを搭載する2つの機能ブロックBLK間で情報を転送する共通配線部CMWおよびルータ部RTと、機能回路Dを搭載する2つの機能ブロックBLK間で情報を転送する共通配線部CMWおよびルータ部RTとの一部は重複する。すなわち、図6に示す共通配線部CMWおよびルータ部RTは、機能回路C、Dをそれぞれ搭載する複数の機能ブロック群の各々における機能ブロック間での情報の転送に共通に使用される。ここで、機能回路Cを搭載する機能ブロックBLK(アドレスXY=32、43)が、機能ブロック群の1つであり、機能回路Dを搭載する機能ブロックBLK(アドレスXY=51、33)が、機能ブロック群の他の1つである。
情報を転送する共通配線部CMWの経路を決定するルータ部RTのルーティング仕様は、機能回路が機能ブロックBLKに搭載される前に、予め各ルータ部RTに設定される。このため、CPUは、機能回路を複数の機能ブロックBLKに搭載するだけで、機能ブロックBLK間で情報を転送することできる。なお、機能回路C、Dにより生成される情報の共通配線部CMW上での衝突は、図8に示すルータ部RTが調停部ARBによりパケットを選択することで回避される。共通配線部CMWおよびルータ部RTは、複数の機能ブロック群で共通に使用可能である。このため、複数の機能ブロックBLKに分割された各機能回路のデータ転送速度が仕様を満足する場合、各機能回路を分割して搭載する複数の機能ブロックBLKは、共通配線部CMWを介して情報を転送することができる。
一方、専用配線部EXWは、機能回路を分割して搭載する複数の機能ブロックBLK間の情報の転送に専用に使用される。専用配線部EXWを使用することにより、ルータ部RTを介さずに情報が転送されるため、ルータ部RTを介して情報を転送する場合に比べて、情報の転送時間を短くすることができる。このため、例えば、他の機能回路より高い性能が要求される機能回路が複数の機能ブロックBLKに分割して搭載される場合、専用配線部EXWを介して機能ブロックBLK間を接続することで、機能回路の性能を十分に発揮させることができる。
状態(A)において、サーバSVは、新たな機能回路AをFPGAに配置する指示を受ける。機能回路Aの搭載に使用される機能ブロックBLKの数は2つである。
次に、状態(B)において、サーバSVは、使用していない共通配線部CMWまたは使用していない専用配線部EXWが周囲に多い、空いている機能ブロックBLKを選択する。サーバSVは、機能回路Aの搭載に使用される機能ブロックBLKの数より多い機能ブロックBLKが空いている場合、さらに、使用する専用配線部EXWが最も短くて済む機能ブロックBLKを選択する。状態(B)では、サーバSVは、太枠で示すアドレスXY=11、42の機能ブロックBLKの使用を決定し、決定した機能ブロックBLKに機能回路Aを搭載する。機能ブロックBLKに機能回路Aを搭載する間、他の機能回路B、C、D等は、動作を継続することができる。すなわち、FPGAは、機能ブロックBLKに構築される回路を動的に再構成可能である。
次に、状態(C)において、サーバSVは、機能回路Aと他の機能回路とをそれぞれ搭載する機能ブロック群の機能ブロックBLK間で最大データ転送速度に基づいて、機能回路Aを搭載する機能ブロックBLK間を共通配線部CMWで接続可能か否かを判定する。図11では、サーバSVは、データ転送速度の仕様に基づいて、機能回路Aと他の機能回路とにより共通配線部CMWを共用することが困難と判定する。そして、サーバSVは、機能回路Aを搭載する機能ブロックBLK間を、専用配線部EXWを介して接続する。そして、機能回路AのFPGAへの配置が完了する。
なお、サーバSVは、データ転送速度の仕様に基づいて、機能回路Aと他の機能回路とにより共通配線部CMWを共用することが可能と判定した場合、機能回路Aを搭載する機能ブロックBLK間での情報の転送を、共通配線部CMWを介して実行させてもよい。
以上、図5から図11に示す実施形態においても、図1から図4に示す実施形態と同様に、機能ブロックBLK間での情報の転送速度を低下させることなく、機能ブロックBLKの配置の自由度を高めることできる。換言すれば、機能ブロックBLKに搭載された回路機能の動作を停止することなく、新たな回路機能を機能ブロックBLKに搭載することができる。配線切替部WSWを専用配線部EXWの4辺に配置することで、機能回路を搭載した機能ブロックBLK間の接続経路を短くして情報の転送効率を向上することが可能になり、複数の機能ブロックBLKに搭載される機能回路の性能を向上することができる。
さらに、図5から図11に示す実施形態では、一対のスイッチ群SWGと橋渡し配線部BWとを含む配線切替部WSWにより、互いに離れた機能ブロックBLK間を、任意の経路の専用配線部EXWを使用して互いに接続することができる。
専用配線部EXWおよびスイッチ群SWGを、機能ブロックBLK内に再構成可能に構築することで、NoCアーキテクチャが構築された既存のFGPAを使用して、図6および図7に示す構造を構築することができる。また、専用配線部EXWおよびスイッチ群SWGを持たない機能ブロックBLKをFPGAに構築することで、機能ブロックBLKに搭載可能な機能回路の回路規模を大きくすることができる。この結果、図6の構成に比べて2つの機能ブロックBLKに分割して搭載する機能回路を1つの機能ブロックBLKに搭載できる可能性を高くすることができ、FPGAへの機能回路の搭載効率を高くすることができる。
図9に示すSRAMにスイッチ部SWの接続情報を書き込むことで、機能ブロックBLKに回路情報を書き込む場合と同様の手法によりスイッチ部SWの接続を切り替えることができる。パケットにより情報を機能ブロックBLK間で転送することで、機能ブロックBLKにそれぞれ搭載された複数の機能回路が生成する情報を、衝突させることなく、共通配線部CMWを介して機能ブロックBLK間で転送することができる。
図12は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの別の実施形態における動作の一例を示す。図3と同一または同様の処理については、同一の符号を付し、詳細な説明は省略する。図12に示す動作は、図5に示すCPUが実行するプログラムにより実現される。すなわち、図12は、FPGAの論理の再構成方法およびFPGAの論理の再構成プログラムの一例を示す。
図12に示す動作を実行するサーバSVは、CPUが実行する再構成プログラムが異なることを除き、図5に示すサーバSVと同じである。すなわち、サーバSVは、再構成プログラムを実行するCPUと、論理を動的に構成可能な複数の機能ブロックBLKを含むFPGAと、機能ブロックBLKに搭載する機能回路の回路情報を保持する記憶装置MEMとを有する。
ステップS10からステップS60までの処理は、図3と同じである。但し、図12では、ステップS60において、機能ブロックBLK間を接続する共通配線部CMWの経路が他の機能ブロックBLKで使用されている場合、処理はステップS90ではなくステップS100に移行される。ステップS100からS140では、CPUは、ステップS30で新たな機能回路を搭載した機能ブロックBLK間を専用配線部EXWにより接続するために、既に機能ブロックBLK間を接続している専用配線部EXWの切り替えが可能な否かを判定する。そして、専用配線部EXWの切り替えが可能な場合、CPUは、共通配線部CMWを一時的に使用することで、専用配線部EXWの切り替えを実行する。
まず、ステップS100において、CPUは、既に機能ブロックBLK間を接続している専用配線部EXWの切り替えが可能か否かを判定する。専用配線部EXWの切り替えが可能な場合、処理はステップS110に移行され、専用配線部EXWの切り替えが困難な場合、処理はステップS90に移行する。
ステップS110において、CPUは、新たな機能回路を搭載した機能ブロックBLK間を接続する専用配線部EXWとの重複を避けて、専用配線部EXWを再配線する新たな経路を決定する。
次に、ステップS120において、CPUは、機能回路が分割して搭載された機能ブロックBLKであって、専用配線部EXWを再配線する機能ブロックBLKの各々に、専用配線部EXWの代わりに共通配線部CMWを使用して情報を転送する指示を発行する。
例えば、機能回路が分割して搭載された複数の機能ブロックBLKの各々は、情報の転送経路を共通配線部CMWまたは専用配線部EXWのいずれかに切り替える切替部を有する。CPUから共通配線部CMWを使用する指示を受けた各機能ブロックは、切替部を制御して、情報の転送経路を専用配線部EXWから共通配線部CMWに切り替える。
なお、転送経路の切り替えにより、共通配線部CMWまたはルータ部RTが他の機能回路と共用される場合で、図3のステップS50で説明した<条件>を満足しない場合、データ転送速度は低下する。なお、<条件>が満足しないことが許容されない場合、処理はステップS100からステップS90に移行されるため、ステップS120の処理は実行されない。
次に、ステップS130において、CPUは、図12に示すステップS80と同様に、ステップS110で決定した経路上に存在する配線切替部WSWのスイッチSW1−SW6(図9)のいずれかをオン状態ONに設定し、専用配線部EXWを再配線する。
次に、ステップS140において、CPUは、専用配線部EXWを再配線した機能ブロックBLKの各々に、共通配線部CMWの使用を停止して、専用配線部EXWを使用して情報を転送する指示を発行する。CPUから専用配線部EXWを使用する指示を受けた各機能ブロックは、切替部を制御して、情報の転送経路を共通配線部CMWから専用配線部EXWに切り替え、処理をステップS70に移行する。ステップS70、S80では、ステップS30で機能回路を搭載した機能ブロックBLK間の専用配線部EXWによる接続が実行される。
ステップS130で配線切替部WSWの接続を切り替える時間は、図9に示すSRAMのデータの書き替え時間とほぼ同じであり、例えば、数クロックサイクルである。このため、ステップS120からステップS140までの間に共通配線部CMWを一時的に使用する時間は、最短で数クロックサイクルである。このため、共通配線部CMWを一時的に使用する時間を最小限にすることができる。
図13および図14は、図12の動作を実行するサーバSVにより、機能ブロックBLKに機能回路を搭載する動作の一例を示す。図11と同一または同様の要素および状態については、詳細な説明は省略する。
図13の状態(A)は、アドレスXYが”31”の機能ブロックBLKが空いていることを除き、図11の状態(C)と同じである。すなわち、状態(A)は、機能回路Aが専用配線部EXWを使用してFPGAに搭載された状態を示す。状態(A)において、サーバSVは、新たな機能回路NをFPGAに配置する指示を受ける。機能回路Nの搭載に使用される機能ブロックBLKの数は2つである。
次に、状態(B)において、サーバSVは、空いている2つの機能ブロックBLKの選択を試みる。しかしながら、アドレスXYが(31、53)、(31、45)、(53、45)の3組の機能ブロックBLKを共通配線部CMWでそれぞれ接続した場合、図11のステップS50で説明した条件を満足しないことが判明する。さらに、3組の機能ブロックBLKを専用配線部EXWでそれぞれ接続した場合、専用配線部EXWの新たな経路は、使用中の専用配線部EXWと重複することが判明する。
一方、機能回路Aを搭載した機能ブロックBLK間を接続する専用配線部EXWを他の専用配線部EXWに再配線することで、アドレスXYが(31、53)の機能ブロックBLK間を専用配線部EXWで接続できることが判明する。そこで、サーバSVは、回路機能Nを、アドレスXYが(31、53)の機能ブロックBLKに搭載する。状態(B)の処理は、図12に示すステップS10、S20、S30の処理に対応する。
次に、状態(C)において、サーバSVは、機能回路Aを搭載した機能ブロックBLKに、専用配線部EXWの代わりに共通配線部CMWを使用して情報を転送する指示を発行する。CPUから共通配線部CMWを使用する指示を受けた機能ブロックBLKは、情報の転送経路を専用配線部EXWから共通配線部CMWに切り替える。すなわち、機能回路Aを搭載したアドレスXYが(11、42)の機能ブロックBLK間での情報の転送は、新たに点線で示した共通配線部CMWの転送経路を介して実行される。なお、状態(C)では、機能回路Aを搭載した機能ブロックBLK間が、新たな共通配線部CMW(点線)で接続されたように見える。しかしながら、実際には、機能回路Aは、既に存在する共通配線部CMWとルータ部RTとを介して情報を転送するため、共通配線部CMWの接続の切り替え等の処理は発生しない。状態(C)の処理は、図12に示すステップS120の処理に対応する。
次に、図14の状態(A)において、サーバSVは、機能回路Aを搭載した機能ブロックBLK間を接続する専用配線部EXWを再配線する。例えば、サーバSVは、図13の状態(C)に示すアドレスXYが(31、41)の機能ブロックBLKの周囲の専用配線部EXWによる配線経路を、アドレスXYが(31、32)の機能ブロックBLKの周囲の専用配線部EXWの配線経路に切り替える。状態(A)の処理は、図12に示すステップS130の処理に対応する。
次に、状態(B)において、サーバSVは、機能回路Aを搭載した機能ブロックBLKの各々に、共通配線部CMWの使用を停止して、専用配線部EXWを使用して情報を転送する指示を発行する。状態(B)では、共通配線部CMWの使用の停止は、アドレスXYが(11、42)の機能ブロックBLK間を接続する共通配線部CMWの転送経路(状態(A)の点線)がなくなることで示される。状態(B)の処理は、図12に示すステップS140の処理に対応する。なお、図12で説明したように、機能回路Aが共通配線部CMWを使用することにより、ルータ部RTを一時的に共有する機能回路A、B、Dの性能が低下する場合、共通配線部CMWを使用することによる配線切替部WSWの接続の切り替えは実行されない。
次に、状態(C)において、サーバSVは、機能回路Nを搭載した機能ブロックBLK間を専用配線部EXWで接続する。そして、専用配線部EXWが競合する機能回路Aの他の機能ブロックBLKに再構成することなく、機能回路NのFPGAへの搭載が完了する。状態(C)の処理は、図12に示すステップS70、S80の処理に対応する。
以上、図12から図14に示す実施形態においても、図1から図11に示す実施形態と同様の効果を得ることができる。例えば、機能ブロックBLK間での情報の転送速度を低下させることなく、機能ブロックBLKの配置の自由度を高めることできる。換言すれば、機能ブロックBLKに搭載された回路機能の動作を停止することなく、新たな回路機能を機能ブロックBLKに搭載することができる。
さらに、図12から図14に示す実施形態では、以下の効果を得ることができる。すなわち、回路機能Nで使用する専用配線部EXWが、回路機能Aで使用する専用配線部EXWと競合する場合にも、回路機能Aを他の機能ブロックBLKに再構成することなく、回路機能NをFPGAに搭載することができる。共通配線部CMWを一時的に使用することで、回路機能Aの動作を停止することなく、回路機能Aで使用する専用配線部EXWを他の専用配線部EXWに切り替えることができる。共通配線部CMWの一時的な使用は、数クロックサイクル程度であるため、共通配線部CMWを使用している他の機能回路の性能への影響を最小限に抑えることができる。回路機能NをFPGAに搭載する場合に、回路機能Aを他の機能ブロックBLKに再構成しなくてよいため、回路機能Aが停止する時間を最小限にすることができる。
図15は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの別の実施形態におけるFPGAの要部の一例を示す。図5および図7に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図15に示すFPGAは、各機能ブロックBLKにおけるルータ部RT側に入出力制御部IOCを有する。入出力制御部IOCは、各機能ブロックBLK内に再構成可能に構築されてもよい。配線切替部WSWは、機能ブロックBLK内の配線を専用配線部EXWまたは橋渡し配線部BWに接続する機能を持たない。すなわち、橋渡し配線BWは、機能ブロックBLKに接続されない。FPGAのその他の構成は、図7と同様である。入出力制御部IOCの例は図16に示され、配線切替部WSWの例は図17に示される。
図16は、図15に示す入出力制御部IOCの一例を示す。入出力制御部IOCは、複数のスイッチを含むスイッチ部CWSWと、複数のスイッチを含むスイッチ部EWSWとを有する。スイッチ部CWSWの各スイッチは、イネーブル信号CWENに応じてオン状態またはオフ状態に設定され、スイッチ部EWSWの各スイッチは、イネーブル信号EWENに応じてオン状態またはオフ状態に設定される。入出力制御部IOCは、CPUからの指示に基づいて、イネーブル信号CWEN、EWENの一方を選択レベルに設定する。図16では、スイッチ部CWSW、EWCWの各スイッチは、nチャネルMOSトランジスタで示されるが、CMOS伝達ゲートで構築されてもよい。
スイッチ部CWSWは、イネーブル信号CWENが選択レベルの期間、各スイッチをオン状態(導通状態)に設定し、機能ブロックBLKの出力バッファ部OBUFから出力される出力データDOUTを、ルータ部RTを介して共通配線部CMWに出力する。また、スイッチ部CWSWは、イネーブル信号CWENが選択レベルの期間、各スイッチをオン状態(導通状態)に設定し、ルータ部RTを介して共通配線部CMWから受信する入力データDINを機能ブロックBLKの入力バッファ部IBUFに供給する。
スイッチ部EWSWは、イネーブル信号EWENが選択レベルに設定された場合、機能ブロックBLKの出力バッファ部OBUFから出力される出力データDOUTを専用配線部EXWに出力する。また、スイッチ部CWSWは、イネーブル信号EWENが選択レベルに設定された場合、専用配線部EXWから受信する入力データDINを機能ブロックBLKの入力バッファ部IBUFに供給する。
図16に示す入出力制御部IOCにより、機能ブロックBLKの内部配線を共通配線部CMWまたは専用配線部EXWのいずれかに接続することができる。機能ブロックBLKと専用配線部EXWとを入出力制御部IOCの1箇所のみで接続できるため、出力バッファ部OBUFから出力される出力データDOUTを各配線切替部WSWまで伝達する配線を機能ブロックBLK内に引き回さなくて済む。同様に、各配線切替部WSWから受信する入力データDINを入力バッファ部IBUFまで伝達する配線を機能ブロックBLK内に引き回さなくて済む。この結果、図7に示す構成に比べて機能ブロックBLK内でデータ線を効率的に配線することができる。
図17は、図15に示す配線切替部WSWの一例を示す。配線切替部WSWは、図9に示す構成に対してスイッチSW2、SW3を削除した複数のスイッチ部SWを有する。すなわち、スイッチ部SWは、専用配線部EXWの時計回り方向CWからの配線と、専用配線部EXWの反時計回り方向CCWからの配線と、橋渡し配線部BWの配線とのいずれか2つを相互に接続する。機能ブロックBLKの内部配線は、入出力制御部IOCを介して専用配線部EXWに接続される。図17に示す配線切替部WSWでは、図9に示したスイッチSW2、SW3を削除できるため、配線切替部WSWの回路規模を図9に比べて削減することができる。
以上、図15から図17に示す実施形態においても、図1から図14に示す実施形態と同様の効果を得ることができる。例えば、機能ブロックBLK間での情報の転送速度を低下させることなく、機能ブロックBLKの配置の自由度を高めることできる。換言すれば、機能ブロックBLKに搭載された回路機能の動作を停止することなく、新たな回路機能を機能ブロックBLKに搭載することができる。
さらに、図15から図17に示す実施形態では、機能ブロックBLKに入出力制御部IOCを設けることにより、情報を転送する信号線を、機能ブロックBLK内に引き回すことなく、機能ブロックBLK内で効率的に配線することができる。また、機能ブロックBLKに入出力制御部IOCを設けることにより、機能ブロックBLKの配線を配線切替部WSWに接続する経路を省略できるため、配線切替部WSWの回路規模を図9に比べて削減することができる。
図18は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの別の実施形態における動作の一例を示す。図3と同一または同様の処理については、同一の符号を付し、詳細な説明は省略する。図18に示す動作は、図5に示すCPUが実行するプログラムにより実現される。すなわち、図18は、FPGAの論理の再構成方法およびFPGAの論理の再構成プログラムの一例を示す。
図18に示す動作を実行するサーバSVは、CPUが実行する再構成プログラムが異なること、および機能ブロックBLKに搭載される機能回路の機能の一部が異なることを除き、図5に示すサーバSVと同じである。図18に示す処理は、ステップS90の後にステップS92が追加されることを除き、図3と同様である。
ステップS90により共通配線部CMWの使用を決定したCPUは、ステップS92において、ステップS30で機能回路を搭載した機能ブロックBLK間での情報の転送を、共通配線部CMWだけでなく、専用配線部EXWを使用して可能か否かを判定する。専用配線部EXWが使用可能な場合、処理はステップS70に移行し、共通配線部CMWと並行して機能ブロックBLK間に専用配線部EXWが接続される。ステップS92において、専用配線部EXWを使用しない場合、処理は終了する。共通配線部CMWと専用配線部EXWとを並列に使用することで、共通配線部CMWと専用配線部EXWとの一方を使用する場合に比べて、機能ブロックBLK間のデータ転送速度の最大値を2倍にすることができる。
例えば、共通配線部CMWまたは専用配線部EXWの最大データ転送速度より高いデータ伝送速度が、機能回路が搭載された機能ブロックBLK間に要求される場合、共通配線部CMWと専用配線部EXWとが並列に使用される。あるいは、使用する共通配線部CMWが、他の機能回路が搭載された機能ブロックBLK間での情報の転送に使用されている場合、転送する情報を種類に応じて、共通配線部CMWと専用配線部EXWとが使い分けられる。例えば、画像データ等のメディアデータは、専用配線部EXWを使用して転送され、メディアデータよりデータ量が小さい管理データや統計情報等のデータは、共通配線部CMWを使用して転送される。これにより、メディアデータ等を共通配線部CMWに転送する場合に比べて、上述した共通配線部CMWのデータ転送速度の<条件>を満足する可能性を高くすることができる。
なお、共通配線部CMWと専用配線部EXWとを並列に使用する場合、図3のステップS120で説明した各機能ブロックBLKの切替部は、共通配線部CMWと専用配線部EXWとを両方を情報の転送経路にする機能を有する。すなわち、各機能ブロックBLKの切替部は、CPUからの指示に基づいて、情報の転送経路を、共通配線部CMWまたは専用配線部EXWのいずれか、または共通配線部CMWと専用配線部EXWとの両方に設定する機能を有する。さらに、各機能ブロックBLKに搭載される機能回路は、例えば、32ビットの直列データを64ビットの並列データに変換して出力する機能と、受信した64ビットの並列データを32ビットの直列データに変換する機能とを有してもよい。
以上、図18に示す実施形態においても、図1から図17に示す実施形態と同様の効果を得ることができる。例えば、機能ブロックBLK間での情報の転送速度を低下させることなく、機能ブロックBLKの配置の自由度を高めることできる。換言すれば、機能ブロックBLKに搭載された回路機能の動作を停止することなく、新たな回路機能を機能ブロックBLKに搭載することができる。
さらに、図18に示す実施形態では、共通配線部CMWと専用配線部EXWとを並列に使用することで、共通配線部CMWと専用配線部EXWとの一方を使用する場合に比べて、機能ブロックBLK間のデータ転送速度の最大値を2倍にすることができる。
図19は、半導体装置、情報処理装置、半導体装置の論理の再構成方法および半導体装置の論理の再構成プログラムの別の実施形態を示す。図1および図5に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図19に示す情報処理システムSYSは、複数のサーバSVと、サーバSVの動作を管理する管理サーバMSVとを有する。各サーバSVは、図2に示す情報処理装置IPEまたは図5に示すサーバSVと同一または同様の構成を有する。すなわち、各サーバSVは、バスを介して接続されたCPU、記憶装置MEM、HDDおよびFPGAを有する。
管理サーバMSVは、FPGAの代わりに複数のIPコア(機能回路の回路情報)が格納されたHDDを有することを除き、図5に示すサーバSVと同様の構成を有する。以下の説明では、IPコアが格納されたHDDは、IPプールと称される。なお、IPプールは、管理サーバMSVの外部に配置されてもよい。
管理サーバMSVは、インターネット等のネットワークNWを介して、複数の端末装置TMに接続される。各端末装置TMは、ネットワークNWを介してサーバSVを使用する利用者により操作される。例えば、利用者が、端末装置TMを介して、情報処理に使用するIPコアをIPプールから選択した場合、管理サーバMSVは、選択されたIPコア(回路情報)をサーバSVのいずれかに転送する。
IPコアが転送されたサーバSVのCPUは、図3、図12または図18と同様に動作し、IPコアをFPGAに搭載する処理を実行する。なお、図11と同様に、各FPGAには、複数の端末装置TM(すなわち、複数のユーザ)から指示された複数の機能回路(IPコア)が搭載される。そして、FPGAは、機能回路の搭載を指示した端末装置TMのそれぞれから転送されるデータを使用して、機能回路毎に情報処理を実行する。情報処理により得られたデータは、管理サーバMSVを介して、機能回路の搭載を指示した端末装置TMに転送される。このように、情報処理システムSYSは、クラウドサービスを提供するデータセンタとして機能する。以上、図19に示す実施形態においても、図1から図18に示す実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。