情報処理装置および仮想回路書き込み方法


【課題】個人用に使える安価で高性能な大規模演算用のコンピュータを提供する。
【解決手段】演算対象について所定の演算を行うアプリケーション・プログラムを記憶するメモリと、演算対象の各々の問題領域に対応して隣接する演算装置間で直接データ通信可能に接続されて配置され、またアプリケーション・プログラムの実行に用いられ各々の問題領域に対応した演算を行う演算回路が再構成され、隣接する演算装置間で問題領域についての演算結果データを送受信する複数の演算装置からなる演算装置アレイ40と、アプリケーション・プログラムを実行し、演算装置アレイ40を構成する各演算装置から各問題領域についての演算結果データを取得し、演算対象について演算結果を算出するホストプロセッサと、メモリ、ホストプロセッサおよび演算装置アレイ40との間で、データを通信するバスを備える。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および情報処理方法に関し、特に、書き換え可能なプログラマブル・ロジック・デバイス(PLD:Programmable Logic Device)を用いて膨大な計算量の処理を行うコンピュータに適用して好適な情報処理装置および仮想回路書き込み方法に関する。
【背景技術】
【0002】
近年、大規模演算の環境が高度に整備されてきたのを受け、生物・化学・天文・工学などの広い分野においてHPC(high-performance computing) による演算手法が利用されている。HPC は複数の計算機システムを結合し、一つのシステムとして演算環境を提供するものである。一つの計算機システムの性能が低くとも、システム全体としては高速に演算が可能となる。
【0003】
例えば、HPCの一例としてスーパーコンピュータがある。スーパーコンピュータは従来、専用のプロセッサを及び専用アーキテクチャで構成されてきたが、図1に示すように、バス2を介して汎用のマイクロ・プロセッサ1を多数接続して並列実行するアーキテクチャで構成されたものが現れている。
【0004】
また、HPCには、汎用PC(Personal Computer)によるグリッド構成のものや、GPGPU(General Purpose Graphics Processing Unit)を利用したグリッド構成など、IC(Integrated Circuit)を並べた構成のものもある。
【0005】
さらにFPGA(Field Programmable Gate Array)等のリコンフィギャラブル(再構成可能)な半導体集積回路(LSI:Large Scale Integration)を用いて並列実行するアーキテクチャで構成されたものなど、高性能な演算を行う研究も見られるようになった。特に大規模演算向けに構成されているクラスタ型のものは、RHPC(Reconfigurable High Performance Computing)やHPRCs(High-Performance Reconfigurable Computers)などと呼ばれている。このような回路をリコンフィギャラブルなハードウェアは、総称してプログラマブル・ロジック・デバイス(PLD:Programmable Logic Device)と呼ばれており、少数の製品から量産品まで幅広く流通している。
【0006】
例えば、本出願人は、ハードウェア・モジュール(hwModule)と呼ばれる PCI型FPGAボードを利用した、ハードウェア/ソフトウェア(hw/sw)複合体を提案している(例えば、特許文献1を参照。)。
【0007】
hw/sw複合体とは、ハードウェア・モジュールのFPGAを仮想回路(hwNet)として利用し、ハードウェア・オブジェクト(hwObject)と呼ばれる仮想回路の詳細な制御を隠蔽するクラスを継承することにより、回路資源を容易に利用できるシステムである。このハードウェア/ソフトウェア複合体の特長として、汎用性、並列分散処理や外部機器との接続などがあげられる。
【0008】
すなわち、ソフトウェアから直接、FPGA内の仮想回路を制御でき、対象となるアプリケーション対応して作成された適切な仮想回路をFPGAに書き込むことで、最速な仮想回路により、アプリ毎の問題を計算することが可能である。
【0009】
一般に、同一の演算をソフトウェアとハードウェア回路で実行した場合、ハードウェア回路による実行はソフトウェアの場合と比較して30倍から数百倍、高速であることが経験的に知られている。例えば、現行のマイクロ・プロセッサは、3GHzの周波数で動作するが、安価なFPGAでは200MHz動作が普通に得られる最良の速度である。したがって、マイクロ・プロセッサによるソフトウェア実行に対して、FPGAによる仮想回路では、実効的に6GHz(200MHz×30)から20−40GHzで動作するマイクロ・プロセッサに対応する。さらに、FGPA内に複数個の演算回路を入れることで、10数倍の性能向上が可能となり、60GHz〜400GHz相当の性能が見込まれる。
【特許文献1】特許第3845021号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
上述したHPCに共通した特徴は、アプリケーション・プログラムを並列実行可能な形態に分割し、並列実行可能な演算装置に割り当てて実行するというものである。このような構成のHPCは高価であり、かつ、多人数が異なる問題領域に使用するため、HPCは汎用的な構成、すなわち、汎用のマイクロ・プロセッサ間で任意のデータ転送路が実現できるように設計される。概念的には、図1に示したバス2のような共通の通信路を介して、マイクロ・プロセッサ1が接続される形態である。しかし、いずれの演算結果もバス2を介して分散した各マイクロ・プロセッサ2に転送され、そのバスネックが性能のボトルネックとなっている。
【0011】
上述のとおり、図1に示したような形態では、共通の通信路であるバス2のオーバーヘッドが大きくなる。そこで、バス2のオーバーヘッドをなくすために、図2に示すようなスイッチボックス5で高速化を図るものが普通である。スイッチボックス5において、任意のマイクロ・プロセッサからのデータを最適なマイクロ・プロセッサを選択して送るというものである。マイクロ・プロセッサの代わりにFPGAを用いたものもあるが、バス2を用いることやスイッチボックス5等の構成は同じである。
【0012】
しかし、これらの方式では、消費電力が膨大なものになり、これ以上の高速化を実現することは困難であった。また、通信路での高速性と低消費電力を実現するために広帯域のデータ通信が可能な光通信を使用することが考えられているが高価なものになる。また、高価なスーパーコンピュータとなるので金銭面から多くの台数を用意することは、難しく多人数の利用者が予約して時分割で使用するため、利用できるまでの待ち時間が長くなるという問題も生じている。
【0013】
また特許文献1に記載されたhw/sw複合体のアプリケーション例には、これまでhwModuleのネットワーク対応に関する研究がなされてきた。しかし、大規模並列化を要求する、数値シミュレーションなどのアプリケーションには、計算機間を非常に高速にデータ転送することを必要とするものもあり、その際にバスネックがボトルネックとなって必ずしもHPCとしての要求性能を満たせなかった。すなわち、内部演算速度の向上に対してデータ転送は、通信路の電気特性に律束されるので、安価で高速の通信路を得ることができなかった。
【0014】
本発明は、このような状況に鑑みてなされたものであり、個人用に使える安価で高性能な大規模演算用のコンピュータを提供できるようにする。
【課題を解決するための手段】
【0015】
本発明の情報処理装置は、演算対象の構造に合わせて複数の演算装置を配置し、演算実行時はバスを介在させず演算装置間で直接データ転送し、各演算装置から演算結果を取り出してホストプロセッサへ送出またはホストプロセッサからデータを入力するときのみバスを使用するようにしたものである。
具体的には、本発明の一側面の情報処理装置は、メモリと、演算装置アレイと、ホストプロセッサと、バスを備えるように構成する。
メモリは、演算対象について所定の演算を行うアプリケーション・プログラムを記憶する。
演算装置アレイは、複数の演算装置から構成される。この複数の演算装置は、前記演算対象の各々の問題領域に対応して隣接する演算装置間で直接データ通信可能に接続されて配置され、また前記アプリケーション・プログラムの実行に用いられ前記各々の問題領域に対応した演算を行う演算回路が再構成され、隣接する演算装置間で前記問題領域についての演算結果データを送受信する。
ホストプロセッサは、前記アプリケーション・プログラムを実行し、前記演算装置アレイを構成する各演算装置から各問題領域についての演算結果データを取得し、前記演算対象について演算結果を算出する。
前記バスは、前記メモリ、前記ホストプロセッサおよび前記演算装置アレイとの間で、データを通信する。
【0016】
本発明の一側面の情報処理装置によれば、演算対象の構造に合わせて複数の演算装置が配置され、演算実行時はバスを介在させず演算装置間で直接データ転送が行われる。そして、各演算装置で演算された演算結果は、取り出してバスを介してホストプロセッサへ送出される。全ての演算装置は隣接演算装置に対してのみデータを転送する処理を実行すればよく、データ転送区間が短くなる。
【0017】
また、本発明の一側面の仮想回路書き込み方法は、演算対象の各々の問題領域に対応して隣接する演算装置間で直接データ通信可能に接続されて配置された複数の演算装置の各々に対して、ホストプロセッサの指示に基づき演算回路を書き込むための仮想回路データ書き込み回路を所定の順序で書き込むステップを行う。次に、全ての演算装置について前記仮想回路データ書き込み回路の書き込みが終了後、前記仮想回路データ書き込み回路が最後に書き込まれた演算装置から最初に書き込まれた演算装置まで前記全ての演算装置について前記演算回路を書き込むステップを行う。
【0018】
また、本発明の一側面の仮想回路書き込み方法によれば、演算装置アレイを構成する複数の演算装置に対して、まず演算回路を書き込むための仮想回路データ書き込み回路が書き込まれた後、前記仮想回路データ書き込み回路が最後に書き込まれた演算装置から最初に書き込まれた演算装置まで全ての演算装置について前記演算回路が書き込まれる。そのため、演算回路が途中で書き込めなくなるということが生じる恐れがない。
【発明の効果】
【0019】
以上のように、本発明によれば、個人用に使える安価で高性能な大規模演算用のコンピュータを実現することができる。それにより、個人でも用途に応じて手軽に大規模演算可能なコンピュータを利用でき、待ち時間も減らすことができる。
【発明を実施するための最良の形態】
【0020】
以下、本発明を実施するための最良の形態の例について、添付図面を参照しながら説明する。説明は下記項目に従って順に行うとする。
1.本発明の一実施の形態に係る演算装置アレイの概念
2.隣接する演算装置との接続
3.情報処理装置の概要
4.情報処理装置の全体構成
5.ホストプロセッサの構成
6.演算装置(演算ボード、書き込み・入出力ボード)の構成
7.演算装置アレイによる演算処理
8.演算装置への書き込み処理
9.本発明の他の実施の形態に係る演算装置アレイ
10.本発明のさらに他の実施の形態に係る演算装置アレイ
【0021】
[1.本発明の一実施の形態に係る演算装置アレイの概念]
本発明に係る情報処理装置は、特許文献1(特開2003−208311号公報)に記載の技術をスーパーコンピュータ等のHPCに適用し、大規模演算をスケーラブルに行える基盤として、演算対象(対象問題)の構造を反映させて多数のPLD同士を相互接続したPLDアレイ(演算装置アレイ)を構成したものである。演算装置アレイは、PLDとして例えば大規模FPGAを搭載し、外部IO(入出力部)を大量に装備した小型のFPGAカード(演算装置)を、格子状に並べた構成を取る。
【0022】
すなわち、演算対象が1次元、2次元、3次元の構造である場合、それらの構造に合わせて隣接する演算装置を直接接続して1次元、2次元、3次元に配置し、演算対象において生じる数値あるいはそのデータ変化を隣接した演算装置に直接転送する。したがって、全ての演算装置は隣接演算装置に対してのみデータを転送する処理を実行すればよく、データ転送区間が短くなり、データ転送処理が情報処理装置の処理能力のボトルネックになることを回避する。また電力消費が少なくなる。
【0023】
FPGA等のRC−LSI(Reconfigurable LSI)は、演算対象に合わせて回路を構成することができるため、専用回路を用いた高性能な演算手段を比較的安価に手に入れることができる。なお、以下に述べる実施の形態の例では、演算装置にFPGAを利用した例を説明するが、広義の再構成可能なPLDであればこの例に限られるものでなく、CPLD(Complex Programmable Logic Device)等を適用できる。
【0024】
図3は、演算対象の物理的または論理的な構造の一例を示すものである。
演算対象6は、流体モデルや液体モデルなどであり、1次元、2次元および3次元の任意の構造を取り得る。演算対象の具体例としては、例えば天文学や物理学分野において現在進められているALMAプロジェクトや重力波検出、さらには、次世代核融合実証炉等における炉設計、高エネルギー物理学分野においては、次世代加速器の内部反応予測シミュレーション、地球科学分野における様々な可視化シミュレーション(具体的には断層モデルの可視化等)、気象学的には中長期予報のためのシミュレーション分野の拡充等が要望として上がってきている。また、宇宙航空分野においては、人工衛星の機能設計や国際宇宙ステーションにおけるシミュレーション、将来の月への基地建設、有人火星探査におけるリスクシミュレーション等の分野からの要望も生じている。
【0025】
例えば、電磁気学や半導体工学などでよく利用される方程式の一つにポアソン方程式があるが、これは楕円型の偏微分方程式である。この方程式を差分法で解く場合、領域内の格子点数だけの連立方程式を解く必要がある。格子幅については任意でよいが、精度に反映されるため、いかに効率よく大型の連立方程式を解くかが問題となる。解きたい問題の領域について、格子点間隔を狭めれば格子点が増加し、それゆえ大規模な演算が必要となる。
【0026】
図3に示した演算対象6は3次元構造の例であり、本発明の情報処理装置を用いて当該演算対象6について演算処理を行うにあたり、この演算対象6を格子状の複数の問題領域6−1に分割する。この例では、演算対象6を、4(X方向)×3(Y方向)×3(Z方向)=36の問題領域に分割している。そして、図4に示すように、演算対象6に対し複数の演算装置40−1を、当該演算対象6の各々の問題領域6−1に対応するように配置して演算装置アレイ40を構成する。例えば斜線で表した個別の問題領域6−1の演算は、同じく斜線で表した対応する位置の演算装置40−1が担当する。したがって、この例では演算装置アレイ40は、問題領域6−1と同じ36個の演算装置40−1を用いて構成される。
【0027】
各々の問題領域においては、隣接した問題領域と相互作用が行われ、物理量が隣接の問題領域に伝搬されるので、その物理現象に対応して隣接した演算装置間で対応するデータ転送が行われる。具体的には、一つの問題領域内には演算の対象となる多数のデータが格子点6−1A,6−1B,6−1C,・・・上にあり、対応する演算装置による演算が領域境界に達した場合にその演算結果が、当該演算装置から隣接する演算装置へ転送される。
【0028】
このように、本発明では、分割した問題領域の物理形状や特性に対応して、演算装置を割り当て、隣接する演算装置間で直接データ転送することで、高性能なデータ処理能力を維持している。
【0029】
これに対し、従来の方式では、固定的に物理構成のままであり通信路でのデータ転送がネックとなり、演算対象に対して演算装置の性能を十分に発揮することができない。また、通常の場合には、演算装置間のデータ転送がボトルネックとなり通信路の高速性能を使用できずにいる。それを改善するために光ケーブル等の最高性能の通信路を用意すると、システム全体が高価なものとならざるを得ない。
【0030】
本発明では、演算対象に応じて演算装置間を連接接続する通信路がスケーラブルに増大するので、高性能・高価格の通信路を用いる必要がない。また、データ転送先が隣接する演算装置までのため、通信路に掛かる処理負荷も小さく、消費電力も少なくすることができる。
【0031】
[2.隣接する演算装置との接続]
本発明の情報処理装置においては、上記のとおり隣接する演算装置間で直接データ転送できるように構成している。以下、この隣接する演算装置との接続の形態について、図5〜図7を参照して説明する。
【0032】
図5、演算装置(演算ボード)のコネクタ配置を示す図である。図6は、演算装置(演算ボード)の相互接続を示す図である。さらに、図7は、演算装置の分解斜視図である。
【0033】
本実施の形態における演算装置40−1は、図5〜図7に示すように、上下に配置された1対の演算ボード50と書き込み・入出力ボード60(特許請求の範囲に記載された書き込みボードの一例)から構成される。
演算ボード50は、主に演算処理を担当する演算回路等(特許請求の範囲に記載された演算回路に相当)が書き込まれるFPGA51、主記憶装置として機能するメモリ52、および複数のコネクタ(接続端子)が設置された基板50Aを備える。また、書き込み・入出力ボード60は、演算ボード50のFPGAに演算回路等を書き込むための書き込み回路およびデータ転送用の入出力回路等が書き込まれるFPGA61、主記憶装置として機能するメモリ62、および複数のコネクタ(接続端子)が設置された基板60Aを備える。各コネクタは、演算ボード50の基板50Aおよび書き込み・入出力ボード60の基板60A上の各辺の所定位置に設けられる。演算ボード50と書き込み・入出力ボード60の機能等の詳細については後述する。
【0034】
演算ボード50は、これらの複数のコネクタにより相互に接続することが可能である。例えば、図6に示すように、演算ボード50は前接続用のコネクタ53Fを当該演算ボード50の前に配置されている演算ボード50の後用接続用のコネクタ53Bと直結することによって、前に配置された演算ボード50と直接データ転送可能になる。同様にして、後接続用のコネクタ53B、左接続用のコネクタ53L、右接続用のコネクタ53R、上接続用のコネクタ53U、下接続用のコネクタ53Dにより、それぞれ当該演算ボード50の後ろ、左、右、上、下に位置する演算ボード50と直接データ転送可能に接続できる。
【0035】
また、演算ボード50は、書き込み・入出力ボード60と接続するためのコネクタ54を備え、コネクタ54を対応する書き込み・入出力ボード60のコネクタ64と直結することで、2つのボード間を直接データ転送可能にする。
【0036】
演算ボード50は、前後左右方向の接続についてはコネクタ直結とし、高速転送を可能とする。また隣接接続端子の上下端子すなわちコネクタは、積層に適するよう対応する同一の場所にレイアウトする。ただし、各ボードの廃熱を考えると、上下端子の接続は直結とはせずにケーブルを介して接続するのが好ましい。
【0037】
なお、書き込み・入出力ボード60の基板60Aにおいて、対応する演算ボード50の下接続用のコネクタ53Dに対応する位置に、コネクタ53Dの形状に合わせて切り欠き60A1が形成してある。書き込み・入出力ボード60の切り欠き60A1が形成された辺は、コネクタ63B,63Fが設けられた辺の長さと比較して短い。この切り欠き60A1を通して、演算ボード50の下接続用のコネクタ53Dが対応する書き込み・入出力ボード60の基板50Aを貫通し、その下に配置された演算ボード50と接続することができる。
【0038】
書き込み・入出力ボード60に切り欠き60A1を形成した場合、コネクタ63B,63Fが設けられた辺が短いので基板60Aの面積が小さくなり、材料の節約、コスト削減に繋がる。なお、演算ボード50のコネクタ53Dが書き込み・入出力ボード60を貫通できればよいので、例えば演算ボード50と同面積・同形状の書き込み・入出力ボード60に、切り欠き60A1に代えて貫通用の孔を設けてもよい。
【0039】
図7に示した例では、コネクタ53F,53R,54は芯線の接続部が凸であるオス型コネクタとし、コネクタ53B,53L,64は芯線の接続部が凹であるメス型コネクタとしているが、この例に限られるものではない。
【0040】
[3.情報処理装置の概要]
次に、上述のような構成の演算装置アレイを用いた情報処理装置の概要について説明する。
【0041】
既述のとおり、本発明の情報処理装置は、特許文献1に記載された半導体回路制御装置を応用して構成する。つまり、本発明においては、FPGA等のPLDの内部構成には関与しないが、動的に回路(いわゆる「仮想回路」)が書き換え可能なRC−LSIを用いる。そして、複数のRC−LSI(演算装置に相当)を演算対象の構造に合わせて配置し、かつ、隣接するRC−LSIを相互に直接接続して演算装置アレイを構成することにより、RC−LSI間でバスを用いず直接データ転送可能に構成する。
【0042】
このように構成することにより、本発明においても、特許文献1に記載された半導体回路制御装置と同様に、仮想回路をオブジェクトでラッピングしたハードウェア・オブジェクトモデルは通常のソフトウェア・オブジェクトと外見は同様であり、自由にプログラムの中で使用できる。オブジェクト・ライブラリ中のオブジェクトから派生する方法を踏襲し、ハードウェア・オブジェクト・ライブラリを用意する。並列性が重視される画像認識、音声認識などの処理、常時観測が必要な処理など、専用回路に適した処理はハードウェア・オブジェクトとしてライブラリからRC−LSIに読み出して処理する。ただし、ハードウェア・オブジェクトは回路であるので、所定の同期信号に基づいてタイミングや同期の制御は行わなければならない。また、仮想回路を包み込むオブジェクトを演算対象に合わせて必要数だけ確保できるように、メモリやRC−LSIを演算装置に用意する。
【0043】
図8は、本発明の一実施の形態に係る情報処理装置の概要を示す図である。
本実施の形態における情報処理装置は、例えば、CPUなどからなるホストプロセッサ11と、実際のメモリ空間を構築するメモリ12と、仮想回路空間を構築するPLD13とを備える。
【0044】
アプリケーション(アプリケーション・プログラム)21は、ソフトウェアで実現してあるオブジェクトの他に最適な性能を実現する回路を含んだハードウェア・オブジェクト26も含まれている。アプリケーション21を実行する計算機は、メモリ空間を実現するメモリ(メモリ素子)12上にアプリケーションのソフトウェア・プログラム部分を配置し、これとソフトウェアを実行するホストプロセッサ11をシステムバスで接続している。同時にホストプロセッサ11には複数のPLD13を接続した標準バスが接続されている。これらのバスを総称してバス14と表記する。
【0045】
このPLD13はアプリケーションが起動され、動作中にハードウェア・オブジェクト26が起動されると、その回路部分のハードウェア・ネット29が書き込まれる実ハードウェア部品である。メモリ素子と同様に多数のLSIで回路空間を構成する。PLD13は、後述するハードウェア・モジュール30に搭載されるFPGAおよび演算装置アレイ40を構成する演算装置40−1に搭載されたFPGA(図7参照)に相当する。
【0046】
アプリケーション21が起動されるとメモリ12内にアプリケーション21がまず配置される。プログラムの処理が進みハードウェア・オブジェクト(hwObject)26を生成するコンストラクタ文が実行されると、メモリ12とPLD13とに跨って(両方でセットとして)ハードウェア・オブジェクト26が配置される。ここでは、hwObject−1とhwObject−2のコンストラクタ文が実行されて二つのハードウェア・オブジェクト26が生成されている。アプリケーション21は、hwObject−1及びhwObject−2を含む。各ハードウェア・オブジェクト26に対応して、ハードウェア・ドライバ(hwDD)27及びハードウェア・ネット29が存在する。ハードウェア・ドライバ27は、メモリ12内に生成される。一方、ハードウェア・ネット29は、仮想回路空間であるPLD13内に、直接データ転送可能に生成され且つ消去可能とされる。
【0047】
図9は、ホストプロセッサとハードウェア・ネット間の制御概要の流れを示す図である。
ここでは、ハードウェア・オブジェクト26に対する読み書きの要求がアプリケーション21から、順次、要求を伝えてハードウェア・ネット29にまで伝えて応答を返すまで処理が続く。この時、ハードウェア・ネット29は並列動作を行う。アプリケーション21はハードウェア・オブジェクト26に実行を命令して、返答を待たずに、次の処理、例えば、別のハードウェア・オブジェクト26の実行を行っていく。ハードウェア・ネット29の処理が終了したかどうかを調べる処理を行いハードウェア・オブジェクト26のメンバー変数の値を読み取る。このように、アプリケーション21のレベルでの並列処理にあった形で、ハードウェア・オブジェクト26すなわち演算回路を含む組み込み回路の並列性を適切に利用することができる。
【0048】
以下に、情報処理装置の基本的な動作を説明する。
まず、アプリケーション21が起動されると、OSはアプリケーション21の実行に必要な領域をアプリケーション21が排他的に使用できるように確保して制御をアプリケーション21に渡す。アプリケーション21の起動・初期化プログラムは、プログラムで使用されるイベント管理、メッセージ管理等のOSとの通信やアプリケーション21内での管理に必要な基盤部分の立ち上げを行う。なお、ハードウェア・オブジェクト26の管理に必要な管理制御部分もこの時にアプリケーション部に組み込まれる。
【0049】
アプリケーションの動作中にハードウェア・オブジェクト26を生成する文が実行されると、ハードウェア・オブジェクト26がメモリ領域にIO処理部であるハードウェア・ドライバ27を含んで生成される。PLD13には同時に回路としてのハードウェア・ネット29が書き込まれ、ハードウェア・オブジェクト26が排他的に使用できるように設定される。このハードウェア・ネット29の回路データは、例えば、このハードウェア・ネット29の動作仕様を動作記述言語により記述し、設計自動化ツールである高位・論理合成、配置・配線ツールを使いPLD13に書き込まれる回路データを事前に作成して、回路ライブラリに登録しておくことができる。ここで、事前にハードウェア・ネット29を書き込んでおき、ハードウェア・オブジェクト26の生成時に回路を単に活性化させ、回路の書き込み時間を短縮させることは容易に考えられる。
【0050】
ハードウェア・オブジェクト26は一度生成されると、ハードウェア・オブジェクト26を消滅させる文が実行されるかアプリケーション21が終了するまで存在し続ける。アプリケーション21の動作中にハードウェア・オブジェクト26に対する読み書きを行う文が実行されると、それがハードウェア・ネット29に関係するメンバー変数やメンバー関数に対する場合には、ハードウェア・ドライバ27を介してハードウェア・ネット29に対するIO処理を行う。
【0051】
[4.情報処理装置の全体構成」
図10は、情報処理装置の全体構成を示す図である。
本実施の形態における情報処理装置は、例えば、ホストプロセッサ11と、主記憶装置としてのメモリ12と、仮想回路空間であるハードウェア・モジュール30と、演算対象の各問題領域について演算を行う演算装置アレイ40とを備える。
演算装置アレイ40はハードウェア・モジュールの一種であり、図4に示した例では3次元構造であるが、ここでは説明の便宜のため2次元構造で表現してある。また、ホストプロセッサ11、メモリ12、およびハードウェア・モジュール30は、所定の規格(PCI規格等)のバス14を通じて高速なデータ転送が可能となっている。
【0052】
図に示すように、ソフトウェア・プログラムの大半はメモリ12に置かれ、ホストプロセッサ11により実行される。各種制御・処理のための回路は仮想化され、ハードウェア・ネット(hwNet)として、バス14上に置かれたハードウェア・モジュール30と名付けたハードウェア部品中に設けられ、ホストプロセッサ11が必要となった時点に一時的に書き込まれる。そして、ハードウェア・モジュール30に書き込まれた仮想回路によって、演算装置アレイ40の各演算装置40−1内のFPGAに演算回路等の仮想回路が書き込まれる。ハードウェア・モジュール30および各演算装置40−1に書き込まれた仮想回路は、不要になれば消去または再利用のために初期化される。
【0053】
この生成・消去の手順の詳細は後述するが、ソフトウェアのオブジェクトと同じようにコンストラクタとデストラクタ演算子で行われる。ハードウェア・モジュール30および演算装置アレイ40はメモリ型のデバイスとして認識され、ハードウェア・オブジェクト26への読み書きはメモリ12上に作られたオブジェクトと同じように行われる。メモリ空間上に自由にオブジェクトが作れるのと同じように、ハードウェア・オブジェクト26が自由に作られる仮想回路空間を実部品として提供するのがハードウェア・モジュール30および演算装置アレイ40である。したがって、特に演算装置アレイ40は演算対象に合わせて大きな仮想回路空間を張るように多数の演算装置40−1を事前に用意する。ハードウェア・オブジェクト26を使った計算モデルは仮想回路をオブジェクトとして扱い、アプリケーション21にハードウェア・ネット29を埋め込むインターフェースを提供するものである。
【0054】
本実施の形態では、再構成可能システムを構成する一要素として、図10に示したようなハードウェアボードである、ハードウェア・モジュール30を導入している。ハードウェア・モジュール30は、例えば、標準バス・インターフェース(BI)31、ローカルメモリ(LM)32、ローカルプロセッサ(LP)33、FPGA34、入出力インターフェース35をデータ転送可能に接続する構成になっている。
【0055】
LP33は、FPGA等のRC−LSIで構成され、ハードウェア・モジュール30内の制御を行う。すなわちLP33によってLM32を利用しつつハードウェア・ネット(仮想回路データ書き込みのための書き込み回路の一例)がJTAG方式でFPGA34に書き込まれる。FPGA34は、入出力インターフェース35および通信路36を介して演算装置アレイ40の各演算装置40−1内のFPGAにハードウェア・ネット29(演算回路等の仮想回路)を書き込む。演算装置アレイ40の各演算装置40−1に書き込まれた仮想回路のそれぞれが、ハードウェア・ネット29として機能する。
【0056】
BI31は、後述するハードウェア・ドライバの制御命令によりホストプロセッサ11とハードウェア・ネット29(FPGA34、演算装置アレイ40)との通信を制御する。ハードウェア・モジュール30(演算装置アレイ40を含む)はメモリ・デバイスとして認識され、メモリと同じような形態でバス14(例えば、PCI)に接続して情報処理装置(計算機)に組み込まれる。この時、OSによりハードウェア・モジュール・ドライバと呼ぶデバイス・ドライバが演算装置アレイ40の各演算装置40−1に組み込まれ、メモリ領域が割り当てられる。多数のメモリ・チップが一様且つ平坦なメモリ空間を構成するように多数のハードウェア・モジュール(演算装置40−1)内のRC−LSIは仮想回路空間を構成する。
【0057】
なお、LP33およびFPGA34は、ホストプロセッサ11から送信されたデータを演算装置アレイ40へ転送し、また、演算装置アレイ40から送信されたデータをホストプロセッサ11へ転送する入出力回路としての機能も備える。
【0058】
図10に示すようなハードウェア・モジュール30を介してホストプロセッサ11からの仮想回路データを演算装置アレイ40の各演算装置40−1のFPGAに転送することで、演算装置アレイ40の各演算装置40−1にそれぞれハードウェア・ネット29を配置することができる。詳細は後述するが、例えば演算装置「00」のFPGA51に書き込まれた最初のhwNet−1の出力を演算装置「01」に転送し、それを演算装置「01」のFPGA51に書き込まれたhwNet−2が読み込む事で、hwNet−1とhwNet−2(図8参照)とは同時に動作してパイプライン処理を行う事ができる。
【0059】
また、LP33によりホストプロセッサ11の負担を減らす事ができる。すなわち、各演算装置40−1のFPGA51に書き込まれる使用頻度が高いハードウェア・ネット29の書き込みは、BI31を通してこのLP33に書き込み命令を送る事で可能である。
【0060】
[5.ホストプロセッサの構成]
図11に、ホストプロセッサの階層構成図を示す。
ホストプロセッサ11は、アプリケーション21、オブジェクト・マネジャー22、ハードウェア・モジュール・ドライバ23、OS24、バス25を備える。この例では、アプリケーション21を3つ含む例を示しているが、適宜の数のアプリケーションを有することができる。各アプリケーション21は、ひとつ又は複数のハードウェア・オブジェクト26、ハードウェア・ドライバ27、アプリケーション21とハードウェア・ドライバ27との入出力を制御するインターフェース28の組を有する。
【0061】
各ハードウェア・ドライバ27は、ハードウェア・ネット29毎に定義され、(ハードウェア・モジュール30を介して)ハードウェア・ネット29の入出力動作を制御する。ハードウェア・ドライバ27には、例えば、hwNetの端子情報、書き込みや読み込み、イネーブル、アウトプット・イネーブルなどのhwNetの制御情報、hwObject番号、hwNet番号、hwModule(演算装置)番号、割り当てPLD番号(演算装置とhwModuleが一対一に対応する場合は不要)、hwNet割り当て端子番号、局所(ローカル)メモリ割り当てアドレス、局所メモリ割り当て領域サイズ、hwNet状態、hwNet命令、主メモリでのhwNet通信領域アドレス、hwNet通信領域サイズ、hwNet通信領域カレント・アドレスなどの通信制御情報が組み込まれている。これらの情報は、ハードウェア・ネットの回路情報と共にハードウェア・ネットライブラリに保存されている。ハードウェア・オブジェクト26が生成されてハードウェア・ネット29がロードされる時には、hwModule(演算装置)番号、hwNet番号、PLD番号などを取得してハードウェア・ドライバ27がハードウェア・オブジェクト26の一部として生成される。
【0062】
ハードウェア・モジュール30および演算装置アレイ40を情報処理装置(計算機)に組み込んだ時、図に示すハードウェア・モジュール・ドライバ23は添付されたデバイス情報をもとにOS24にデバイス・ドライバとして永続的に登録される。このハードウェア・モジュール・ドライバ23は、計算機のバスに接続されたハードウェア・モジュール30に対する通信を制御している。例えば、バス14としてPCIバスを使う時にはPCIデバイス情報などがOSから割り当てられる。情報処理装置を立ち上げる時には常にハードウェア・モジュール・ドライバ23は、OSに事前に組み込まれる。一方、このハードウェア・モジュール・ドライバ23に反して、ハードウェア・オブジェクト26のハードウェア・ドライバ27は、ハードウェア・ネット29が存在する時だけハードウェア・モジュール・ドライバ23の中に組み込まれ、OS24がハードウェア・ドライバ27を感知することはない。他方、ハードウェア・オブジェクト26側は、ハードウェア・ドライバ27をOSに組み込まれたデバイス・ドライバのようにみなしてハードウェア・ネット29に対するアクセスを行う。このとき、どのハードウェア・モジュール30および演算装置アレイ40に対するアクセスを行うかなどは考慮する必要がない。
【0063】
このように、本発明では、OS24側からは、ハードウェア・モジュール・ドライバ23が常時組み込まれるデバイス・ドライバとして安定して制御及び監視を行う事ができるので、システムの安定性を保証する事ができる。他方、アプリケーション21側からは、ハードウェア・ドライバ27が必要なときにだけ割り当てられるので、ハードウェア・ネット29を使う自由度が大幅に増すことになる。
【0064】
[6.演算装置(演算ボード、書き込み・入出力ボード)の構成]
図12は、演算装置(演算ボード、書き込み・入出力ボード)の仮想回路書き込み後の機能を示すブロック図である。以下、図12を参照して、演算ボード50、書き込み・入出力ボード60の順に説明する。
【0065】
演算ボード50は少なくとも、仮想回路空間が形成されるFPGA51と、メモリ空間が形成されるメモリ52を備える。メモリ52には、ハードウェア・モジュール30を介してホストプロセッサ11から送信された演算対象の問題領域に対応する仮想回路データや演算対象データ、各回路による演算結果データ等が一時的に格納される。また、メモリ52は、ある問題領域における演算中でない格子点に関する情報など、演算に必要ない情報を一時的に格納したりもする。
【0066】
FPGAの内部構造は周知であり、例えば、任意の論理を構成可能な4入力程度の組合せ回路と順序回路からなる論理ブロックが、格子状に多数配置され、その間の配線を簡易なスイッチブロックで接続し、スイッチを切り替えることで所望の機能を持つ仮想回路を再構成するようにしている。そして、仮想回路が再構成された論理ブロックにより、入出力ブロックI/Oを介してデータの入力および演算結果の出力等が行われる。
【0067】
本実施の形態におけるFPGA51は、メモリ制御回路55、並列演算回路56(演算回路の一例)、演算対象データ入出力回路57、演算結果データ入出力回路58、隣接FPGAデータ転送回路59X,59Y,59Zを含む回路が書き込まれる。並列演算回路56を含む全ての回路は、書き込み・入出力ボード60に搭載されたFPGA61により書き込まれる。なお、以降、演算回路を含むこれらの回路を総称して「演算回路等」という。
【0068】
メモリ制御回路55は、メモリ52に記憶された各種データの読み出しおよび書き込みを行い、演算ボード50上のメモリ52と各仮想回路とのデータ転送を実現する回路である。
【0069】
並列演算回路56は、複数の論理ブロック56A,56B・・・を備え、演算対象の問題領域に対応した演算を行う回路である。例えば、演算対象が連続系の物理問題のときには、問題領域の各格子点上に定義された微分方程式を離散化した連立方程式を計算する並列回路が再構成される。また、演算対象が多分岐とグラフ構造で示される場合には、ノード分岐を辿りながら計算を行う並列回路が再構成される。
【0070】
問題領域内の格子点(i,j,k)における物理量fは、演算対象が3次元の場合、次式で表され、隣接格子上の物理量で与えられる方程式が定義できる。
f(i, j, k) = F(i-1, j-1, k-1, i, j, k, i+1, j+1, k+1)
【0071】
今、問題領域の1辺の格子点数をNとすると、問題領域内の格子点数は3次元で増加するのに対し、境界面では2次元で増加するため、格子点での演算量はNの3乗に比例(〜N)し、境界面では6/Nに比例する。よって、演算量に関して格子点/境界面(〜N/6N)=N/6である。したがって、両者の演算量と演算手段とのバランスをとるには、N個の格子点用の並列演算回路に対する境界面用のそれの数をN/6以上とすればよい。例えば、論理ブロック56Aが領域内の格子点に対応し、論理ブロック56Bが境界面に対応するとすれば、論理ブロック56Aの数を論理ブロック56Bの数のN/6以上とする。
【0072】
演算対象データ入出力回路57は、ホストプロセッサ11の制御下でハードウェア・モジュール30から送られる演算対象データが書き込み・入出力ボード60を介して入力される回路である。入力された演算対象データは、メモリ制御回路55を介してメモリ52に記憶され、並列演算回路56等による処理に利用される。演算対象データには、例えば演算対象の範囲、問題領域、演算結果の転送先、演算条件等、演算に使用するパラメータが含まれる。
【0073】
なお、演算対象データのパラメータ(演算条件、演算対象、問題領域等)は、メモリ52に記憶させている途中で、つまりホストプロセッサ11から送られる段階で変更になることも考えられる。そのような場合、演算対象データ入出力回路57は、メモリ52に途中まで記憶させた演算対象データに、メモリ52における当該演算対象データが格納されたアドレス情報を付加してホストプロセッサ11へ送信するようにしてもよい。このようにした場合、ホストプロセッサ11は、各演算装置の変更後の演算対象データと、各演算装置から戻ってきた演算対象データとを比較し、真に変更された演算対象データについてのみ該当演算装置へ再送すればよいので、通信路のリソースの節約および再送処理に要する時間を短縮できる。
【0074】
演算結果データ入出力回路58は、当該演算ボード50の並列演算回路56等による演算完了後の演算結果データ、あるいは演算に使用するパラメータ等のデータを、メモリ制御回路55を介してメモリ52に記憶したり、対応する書き込み・入出力ボード60へ送信したりする回路である。この演算結果データには、並列演算回路56による演算結果に加え、当該演算ボード(演算装置)の番号、問題領域の各格子点情報とそれに対応する演算結果データ等が含まれる。なお、演算結果データは、演算対象データに含まれる「演算結果の転送先」に基づいて隣接する所定の演算ボードへ転送される。
【0075】
なお、演算中の演算対象データのパラメータ変更やシミュレーション方法の変更などの理由により、演算を途中で停止することがある。このような場合、演算結果データ入出力回路58は、メモリ52に途中まで記憶させた演算結果データに、メモリ52における当該演算結果データが格納されたアドレス情報を付加してホストプロセッサ11へ送信するようにしてもよい。このようにした場合、ホストプロセッサ11は、各演算装置による途中までの演算結果を利用して演算対象の解析を行うことができる。さらに、その途中までの演算結果をホストプロセッサ11(メモリ12)から読み込むようにしてもよい。それにより、途中まで実施した演算結果を流用することができるので、新たに演算が必要な部分のみ演算を行えばよく、演算に要する時間を短縮できる。
【0076】
隣接FPGAデータ転送回路59Xは、各コネクタを介してX方向(前後)に隣接する演算ボード50との間でデータの送受信を行い、並列演算回路56へ転送する回路である。この隣接する演算ボード50との間でやり取りするデータには、隣接する演算ボード50による演算結果に加え、領域境界を跨ぐデータの送受信を実現するため、送信元の演算ボード(演算装置)の番号、各々の格子点情報とそれに対応する演算結果データ等が含まれる。同様にして、隣接FPGAデータ転送回路59YはY方向(左右)に隣接する演算ボード50と、隣接FPGAデータ転送回路59ZはZ方向(上下)に隣接する演算ボード50とデータの送受信を行う。なお、各隣接FPGAデータ転送回路59X,59Y,59Zから隣接する演算装置40−1へのデータ転送は、ハードウェア・モジュール30を介してホストプロセッサ11から送られるクロック信号(CLK)に基づき全演算装置40−1でタイミングを合わせて行われる。
【0077】
次に、書き込み・入出力ボード60について説明する。図6に示したように隣接する演算ボード50同士を接続し、書き換え可能な半導体装置に演算回路等を書き込むためには、書き込みを行う書き込み回路が必要である。
【0078】
書き込み・入出力ボード60は少なくとも、仮想回路空間が形成されるFPGA61と、メモリ空間が形成されるメモリ62を備える。メモリ62には、ハードウェア・モジュール30を介してホストプロセッサ11から送信された演算対象の問題領域に対応する仮想回路データや演算対象データ、また演算ボード50から送られてくる演算結果データや各回路の演算結果データ等が一時的に格納される。
【0079】
本実施の形態におけるFPGA61は、ハードウェア・モジュール30のFPGA34の制御の下、メモリ制御回路65、書き込み回路66(仮想回路データ書き込み回路の一例)、仮想回路データ入出力回路67、各種データ入出力回路68が書き込まれる。以降において、各種データ入出力回路68を「演算回路等」に含める場合もある。
【0080】
メモリ制御回路65は、メモリ62に記憶された各種データの読み出しおよび書き込みを行い、書き込み・入出力ボード60上のメモリ62と各仮想回路とのデータ転送を実現する回路である。
【0081】
書き込み回路66は、ホストプロセッサ11の制御下でハードウェア・モジュール30から送信される演算対象の問題領域に対応する仮想回路データに基づいて、演算ボード50のFPGA51に各仮想回路を書き込む回路である。ホストプロセッサ11からの指示内容によって、問題領域ごとに各演算ボード50のFPGA51に書き込む仮想回路を変える場合もあれば、仮想回路の論理構成は同一で演算対象パラメータを変えることで問題領域ごとに異なる演算結果を得るような場合もある。
【0082】
仮想回路データ入出力回路67は、ハードウェア・モジュール30から送信される仮想回路データの入力、および当該仮想回路データを指定された書き込み・入出力ボード60へ転送するべく制御する回路である。
【0083】
各種データ入出力回路68は、ハードウェア・モジュール30から送られてきた仮想回路データや演算対象データを受信し、メモリ制御回路65を介してメモリ62に記憶したり、対応する演算ボード50へ転送したりする回路である。また、対応する演算ボード50から送られてくる問題領域の演算結果データや各回路の演算結果データ等を、ハードウェア・モジュール30を介してホストプロセッサ11へ送信する回路である。
【0084】
なお、書き込み・入出力ボード60の書き込み回路66および仮想回路データ入出力回路67は、対応する演算ボード50への演算回路等の書き込みが終了した時点で消去してもよい。このようにした場合、書き込み・入出力ボード60のFPGA61のリソースを節約することができる。勿論、FPGA61へ各種データ入出力回路68を書き込んでもなおリソースに余裕があれば、書き込み回路66および仮想回路データ入出力回路67を残しておいてもよい。
【0085】
[7.演算装置アレイによる演算処理]
次に、図10に示した演算装置アレイ40を例に演算処理の概要を説明する。
前提として、演算装置アレイ40を構成する各演算装置40−1の演算ボード50および書き込み・入出力ボード60に、各々が担当する演算対象の問題領域に合わせてhwNet29である仮想回路(図12参照)が書き込まれた状態であるとする。演算を行う順番は、演算対象の物理現象や特性等に基づいて決定される。ここでは演算装置「00」,演算装置「10」,演算装置「20」から演算を開始して横方向へ順に移動していき、末端の演算装置「03」,演算装置「13」,演算装置「23」で演算を終了する場合を想定する。
【0086】
演算装置アレイ40を構成する12個の演算装置、演算装置「00」〜演算装置「23」の各々の演算ボード50に、それぞれが担当する演算対象の問題領域ごとの演算対象パラメータの初期値が入力されメモリ52に一時記憶される。また、メモリ52は、当該演算装置が転送すべき「演算結果の転送先」の情報を記憶している。
【0087】
演算装置「00」,「10」,「20」の演算ボード50における並列演算回路56(図12参照)は、ハードウェア・モジュール30を介して入力されるホストプロセッサ11からの指示を受けて、あるいは所定の信号や条件をトリガとするタイミングで、各々の対応する問題領域について演算を開始する。生成された各演算結果データはそれぞれのメモリ52に記憶する。
【0088】
続いて、演算装置「00」,「10」,「20」はメモリ52に格納した各々の演算結果データを、ホストプロセッサ11(または図示せぬクロック発生部)が発信するクロック信号(CLK)に同期して、隣接FPGAデータ転送回路59X(図12参照)からコネクタ53R(図7参照)を介してそれぞれ「演算結果の転送先」である演算装置「01」,「11」,「21」へ転送する。
【0089】
演算装置「01」,「11」,「21」では、各隣接FPGAデータ転送回路59Xがコネクタ53Lを介して演算装置「00」,「10」,「20」からそれぞれ演算結果データを受信する。そして、受信した演算結果データと演算対象パラメータ値、及び各演算装置に保存された過去の演算時点での演算結果を用いて、演算装置「01」,「11」,「21」の並列演算回路56が新たな演算結果データを生成し、それぞれのメモリ52に記憶する。
【0090】
同様にして、演算装置「01」,「11」,「21」は各々の演算結果データを、「演算結果の転送先」の情報に従って演算装置「02」,「12」,「22」に転送する。演算装置「02」,「12」,「22」では、演算装置「01」,「11」,「21」から受信した各々の演算結果データと演算対象パラメータ値、及び各演算装置に保存された過去の演算時点での演算結果を用いて、並列演算回路56が新たな演算結果データを生成し、それぞれのメモリ52に記憶する。
【0091】
また、演算装置「02」,「12」,「22」は各々の演算結果データを、「演算結果の転送先」の情報に従って演算装置「03」,「13」,「23」に転送する。演算装置「03」,「13」,「23」では、演算装置「02」,「12」,「22」から受信した各々の演算結果データと演算対象パラメータ値、及び各演算装置に保存された過去の演算時点での演算結果を用いて、演算装置「03」,「13」,「23」の並列演算回路56が新たな演算結果データを生成し、それぞれのメモリ52に記憶する。
【0092】
演算装置「00」〜演算装置「23」の全ての演算装置で演算処理が終了した後、演算結果データをホストプロセッサ11へ送信する処理を実行する。まず演算装置「00」〜演算装置「23」の各々の演算ボード50における並列演算回路56は、担当する問題領域について演算結果データを生成した後、当該演算結果データを演算結果データ入出力回路58からコネクタ54を介して対応する書き込み・入出力ボード60へ転送する。
【0093】
演算装置「00」〜演算装置「23」の各々の書き込み・入出力ボード60において、各種データ入出力回路68がコネクタ64を介して、対応する演算ボード50から演算結果データを受信する。そして、各種データ入出力回路68は、受信した演算結果データを、通信路36を通じてハードウェア・モジュール30へクロック信号(CLK)に同期して転送する。
【0094】
ハードウェア・モジュール30においては、演算装置アレイ40の演算装置「00」〜演算装置「23」から受信した各演算結果データをFPGA34からローカルプロセッサ33へ送る。ローカルプロセッサ33は、標準バス・インターフェース31からバス14を介して、ホストプロセッサ11へ演算結果データを転送する。
【0095】
演算装置アレイ40を構成する各演算装置40−1から個々の問題領域に対する演算結果データを取得したホストプロセッサ11は、当該演算結果データと対応する演算装置の番号を基に演算対象全体の演算を実行する。そして、図3に示したような演算対象全体の物理的構造や論理的構造、特性などを解析し、表示装置(図示せず)に出力する。
【0096】
上記構成の演算ボード50と書き込み・入出力ボード60を備える演算装置40−1によれば、任意の演算装置40−1の演算ボード50による演算結果データを隣接する演算装置40−1の演算ボード50へ直接転送することができる。つまり、演算のためのデータ転送にはバスを介さない。
【0097】
また、演算装置アレイ40の各演算装置40−1による演算結果データ等を取り出してホストプロセッサ11宛てに送信するとき、および、ホストプロセッサ11から仮想回路データや演算対象データ等を受信するときのみバス(例えばバス14)を利用する。
このように構成したことにより、隣接する演算装置40−1間のデータ転送処理が情報処理装置の処理能力のボトルネックになることを回避することができる。
【0098】
なお、演算装置アレイ40の各演算装置からホストプロセッサ11への演算結果データの転送は、各演算装置において問題領域の演算が終了後、演算結果データをメモリに記憶する処理と併せて実行するようにするとよい。このようにした場合、演算が終了した演算装置から順に演算結果データがホストプロセッサ11へ向けて転送されるので、データの輻輳が抑制され、バス14を始めとする各通信路におけるオーバーヘッドを小さくすることができる。
【0099】
本出願人の試作した情報処理装置によれば、128セットの演算装置を用いて演算装置アレイを構成したところ、約0.7テラフロップス(TFLOPS)を達成している。
【0100】
[8.演算装置への書き込み処理]
次に、図13および図14を参照して、演算装置アレイを構成する各演算装置に対する演算回路等の書き込み処理を説明する。図13は、演算回路等書き込み処理を示すフローチャートである。図14は、演算回路等書き込み処理時の状態遷移を示すものである。
【0101】
図10に示したように、最初の書き込み回路はホストプロセッサ11上にあり、ホストプロセッサ11から段階的に、演算装置アレイ40の各演算装置40−1に演算回路等の仮想回路を書き込んでいく。しかし、仮想回路の中に書き込み回路が構成されていないと、次段(隣接)の演算装置40−1に仮想回路を書き込むことができない。他方、演算時には、書き込み回路は不用であるので、仮想回路の書き込みが終了したときには削除するのが望ましい。したがって、書き込みが可能なように、全ての演算装置40−1に対して、書き込み回路あるいは書き込み用の接続回路を書き込み、その後に末端の演算装置40−1から演算回路等に置き換えていく必要がある。この処理は、ホストプロセッサ11上で動作するソフトウェアが図13に示す流れに沿って行う。
【0102】
まず、ホストプロセッサ11がバス14および標準バス・インターフェース31を介して、メモリ12に記憶してある演算対象に基づく仮想回路書き込みデータをハードウェア・モジュール30へ送信する(ステップS1)。この仮想回路書き込みデータには少なくとも、演算対象の各問題領域に対応する「演算装置の番号」と、それに対応する「仮想回路データ」と、「書き込み順番」の情報が含まれる。現段階では、演算装置40−1を構成する演算ボード50および書き込み・入出力ボード60には仮想回路が書き込まれていない初期状態である(図14A)。
【0103】
ホストプロセッサ11は、ハードウェア・モジュール30内のFPGAからなるローカルプロセッサ33に、仮想回路書き込みデータを書き込む(ステップS2)。
【0104】
そして仮想回路書き込みデータが書き込まれたローカルプロセッサ33は、ハードウェア・モジュール30内の演算装置アレイ制御用のFPGA34に、仮想回路書き込みデータを書き込む(ステップS3)。
【0105】
仮想回路書き込みデータが書き込まれたFPGA34は、入出力インターフェース35および通信路36を通じて、演算装置アレイ40の所定の演算装置40−1に仮想回路書き込みデータを送信する(ステップS4)。
【0106】
FPGA34は、演算装置40−1の書き込み・入出力ボード60のFPGA61に、仮想回路データに基づく書き込み回路66および仮想回路データ入出力回路67を再構成する。さらに、各種データ入出力回路68を再構成する。そして、書き込み回路66および仮想回路データ入出力回路67が書き込まれた書き込み・入出力ボード60では、入力された仮想回路データを当該仮想回路データに含まれる書き込み順番に従って、隣接する演算装置40−1の書き込み・入出力ボード60へ転送する(ステップS5)。このとき、書き込み・入出力ボード60に書き込み回路66および仮想回路データ入出力回路67が書き込まれた状態となる(図14B)。
【0107】
図10を例に説明すると、一例として演算装置「00」→演算装置「10」,「01」→演算装置「20」,「11」,「22」→・・・の順番に書き込み回路66等を書き込んでいく。なお、図10に示した例では、演算装置が2次元に配置してあるが、演算装置が3次元に配置されていれば書き込み処理を3次元で展開してもよい。
【0108】
ホストプロセッサ11は、書き込み・入出力ボード60へ書き込み回路66等を書き込むと、その都度、動作確認のため書き込み・入出力ボード60から書き込み完了を示す終了信号(フラグ)を取得する。そして、ホストプロセッサ11は、全ての演算装置40−1の書き込み・入出力ボード60について、書き込み回路等の再構成が終了したか否かを判定する(ステップS6)。
【0109】
全ての書き込み・入出力ボード60について書き込み回路66等の書き込みが終了していない場合、ステップS5の処理に戻り、書き込み処理を継続する。
【0110】
一方、全ての書き込み・入出力ボード60について書き込みが終了した場合、演算装置アレイ40の末端の書き込み・入出力ボード60の書き込み回路66が、対応する演算ボード50のFPGA51に並列演算回路56等の仮想回路(図12参照)を書き込んでいく(ステップS7)。
【0111】
そして、全ての書き込み・入出力ボード60に対応する書き込み回路66が、入力された仮想回路データに含まれる書き込み順番情報に従って、対応する書き込み演算ボード50のFPGA51に並列演算回路56等の仮想回路を書き込んでいく(ステップS8)。
【0112】
例えば、演算装置「23」→演算装置「22」,「13」→演算装置「21」,「12」,「03」→・・・の順番に並列演算回路56へ置き換えていく。なお、図10に示した例では、演算装置が2次元に配置してあるが、演算装置が3次元に配置されていれば書き込み処理も3次元で展開してもよい。
【0113】
ホストプロセッサ11は、演算ボード50へ並列演算回路56等が書き込まれると、その都度、演算ボード50から書き込み完了を示す終了信号(フラグ)を取得する。ホストプロセッサ11は終了信号に基づき、全ての演算装置40−1の演算ボード50について、並列演算回路56等の書き込みが終了したか否かを判定する(ステップS9)。
【0114】
全ての演算ボード50について書き込みが終了していない場合、ステップS8の処理に戻り、並列演算回路56等の書き込み処理を継続する。
【0115】
一方、全ての演算ボード50について書き込みが終了した場合、演算装置アレイ40の演算装置40−1に対する仮想回路の書き込みを終了する。このとき、書き込み・入出力ボード60には書き込み回路66と仮想回路データ入出力回路67等が、演算ボード50には並列演算回路56等が書き込まれた状態となる(図14C)。
【0116】
1つの演算装置を書き換えるのにおおよそ40msであるので、演算装置アレイ全体でも数秒で書き換えることができる。
【0117】
なお、FPGAはゲートアレイであるからゲート数のリソースには限りがある。また、演算時には、書き込み回路は不用であるので、仮想回路の書き込みが終了したときには削除するのが望ましい。そこで、演算ボード50に並列演算回路56等を書き込むその一方で、仮想回路データ書き込み回路が最後に書き込まれた演算装置40−1から最初に書き込まれた演算装置40−1まで順に、書き込み・入出力ボード60のFPGA61に書き込んだ書き込み回路66と仮想回路データ入出力回路67を消去する。このとき、書き込み・入出力ボード60には各種データ入出力回路68が、また演算ボード50には並列演算回路56等が書き込まれた状態となる(図14D)。
【0118】
また、仮想回路データ書き込み回路が最後に書き込まれた演算装置40−1から最初に書き込まれた演算装置40−1まで順に、書き込み・入出力ボード60のFPGA61に書き込んだ書き込み回路66と仮想回路データ入出力回路67を消去するとしたが、この例に限られない。すなわち、ホストプロセッサ11が全ての演算装置40−1について演算回路等の書き込み動作が正常かどうかを確認できればよく、適切な順番で、書き込み・入出力ボード60の書き込み回路66と仮想回路データ入出力回路67を消去していけばよい。
【0119】
さらに上述した例では、仮想回路データ入出力回路67と各種データ入出力回路68を別々に構成したが、データ転送回路などとして一体に構成してもよい。
【0120】
図15は、演算回路等の仮想回路を書き込んだ後の演算装置アレイの状態を示したものである。
この例では、第1の演算装置の演算ボード50−1と隣接する第2の演算装置の演算ボード50−2が接続し、第1の演算装置の書き込み・入出力ボード60−1と隣接する第2の演算装置の書き込み・入出力ボード60−2が接続している。第1の演算装置はハードウェア・モジュールを介してハードウェア・モジュール30(ホストプロセッサ11側)と接続しているとする。
【0121】
第1の演算装置の演算ボード50−1の並列演算回路56で生成された演算結果データは、対応する書き込み・入出力ボード60−1の各種データ入出力回路68からハードウェア・モジュール30へ送信され、ハードウェア・モジュール30からバス14を介してホストプロセッサ11へ転送される。
【0122】
一方、第2の演算装置の演算ボード50−2の並列演算回路56で生成された演算結果データは、対応する書き込み・入出力ボード60−2の各種データ入出力回路68からまずはホストプロセッサ11側に近い第2の演算装置の書き込み・入出力ボード60−2へ送信される。それから、書き込み・入出力ボード60−2の各種データ入出力回路68によって、第2の演算装置の当該演算結果データが通信路36を介してハードウェア・モジュール30へ送信され、ハードウェア・モジュール30からバス14を介してホストプロセッサ11へ転送される。
【0123】
本例では、説明の便宜上、隣接する2個の演算装置間の演算結果データの転送処理について説明したが、それ以上の個数の演算装置間、あるいは3次元配置された複数の演算装置間においても技術思想の基本は同じである。
【0124】
上述のように構成された本実施の形態によれば、演算装置アレイを構成する全ての演算装置(FPGA等)は隣接演算装置に対してのみ演算結果等のデータを転送する処理を実行すればよく、データ転送処理が情報処理装置の処理能力のボトルネックになることを回避することができる。
【0125】
また、従来の演算装置は全てのデータ転送にバスを介して行っていたため消費電力が膨大なものになり、データ転送の高速化を実現する上で障害となっていたが、上記実施の形態では演算装置間のデータ転送にバスを用いずコネクタ直結によるデータ転送を行うようにしたので、バスを用いた場合と比較して消費電力を小さくできる。
【0126】
また、従来は通信路での高速性と低消費電力を実現するために光通信を利用することが行われていたが、本実施の形態では光通信を用いずに処理能力の向上および低消費電力を実現するので、大規模演算用の情報処理装置を安価に提供できる。したがって、個人であっても、予約待ちをすることなく、大規模演算用のコンピュータを利用できるようになる。
【0127】
[9.本発明の他の実施の形態に係る演算装置アレイ]
3次元構造の演算装置アレイ40において、図12に示したように、一つの演算装置40−1の演算ボード50には、隣接FPGAデータ転送回路が3対ある。この隣接FPGAデータ転送回路の接続先を電気的に変えることで、3次元領域の中に2次元領域を畳み込むことができる。すなわち、3次元に構成した演算装置アレイの各演算装置を電気的に制御することにより、2次元または3次元の演算装置アレイとして使用することが可能になる。
【0128】
例えば、図16に示す演算装置アレイ70は、XY領域に配列された4つの演算装置アレイ71,72,73,74が順に連接された構成である。末端の演算装置、例えばX端の演算装置においてZ方向の演算装置に接続することでXY領域はZ方向に向きを変え、上層の演算装置アレイで逆方向に進むことが可能である。
【0129】
すなわち、演算装置アレイ71のX端に位置する演算装置71−1,71−2,71−3と、対応する下層の演算装置アレイ72のX端に位置する演算装置72−10,72−11,72−12をそれぞれケーブル76で接続している。一方、演算装置アレイ72と演算装置アレイ73との関係では、演算装置アレイ71と演算装置アレイ72の接続部分とは反対側のX端を接続する。同様にして、演算装置アレイ73と演算装置アレイ74との関係では、演算装置アレイ72と演算装置アレイ73の接続部分とは反対側のX端を接続する。
【0130】
結果として、最下層にある演算装置アレイ74の演算装置74−1,71−2,71−3から、演算装置アレイ72および演算装置アレイ73を経由して、最上層にある演算装置アレイ71の演算装置71−10,71−11,71−12までが2次元に接続され、演算装置アレイ70を2次元領域で構成することができる。
【0131】
これらの接続態様は、ホストプロセッサ11が演算対象に合わせて決定する。つまり、演算装置アレイを構成する複数の演算装置のうちいずれの演算装置間を接続するかをホストプロセッサ11が決定し、その決定事項を「演算結果の転送先」として各演算装置に送るようにする。
【0132】
このようにして、コネクタを用いて物理的に3次元に配置した演算装置アレイであっても、より低次(2次元、1次元)の演算対象となる問題領域を畳み込んで演算が行えるよう各演算装置に所望の演算回路等を書き込むことで、隣接する演算装置と物理的な接続を変えることなく電気的に接続を変更することができる。
【0133】
[10.本発明のさらに他の実施の形態に係る演算装置アレイ]
次に、演算対象が周期境界条件を満たす場合の演算装置アレイについて説明する。
演算対象が周期境界条件を満たす場合、演算装置アレイを構成する複数のハードウェア・ネットすなわち演算装置のうち周期境界に位置する演算装置同士を電気的に接続し、トーラス状(円環)を形成する。
【0134】
例えば、図17に示す2次元の演算装置アレイ80において、周期境界に該当する最終段の演算装置80−10,80−11,80−12と、一方の周期境界に該当する初段の演算装置80−1,80−2,80−3をコネクタ81を介して電気的に接続する。この時、各演算装置間で発生する遅延時間が同一になるように各演算装置のコネクタはフレシキブルな配線を用いて適用する事も勿論である.このようにして、演算装置80−10,80−11,80−12の各々の演算結果データを、最初に演算を行う演算装置80−1,80−2,80−3に戻すことにより、繰り返し処理が行える。なお、図17に示す例では、2次元的周期境界条件を満たす場合を説明したが、3次元の周期境界条件を満たす場合にも適用できることは勿論である。
【0135】
以上に述べた実施の形態は、本発明を実施するための好適な形態の具体例であるから、技術的に好ましい種々の限定が付されている。ただし、本発明は、以上の実施の形態の説明において特に本発明を限定する旨の記載がない限り、これらの実施の形態に限られるものではない。したがって、例えば、以上の説明で挙げた使用材料とその使用量、処理時間、処理順序および各パラメータの数値的条件等は好適例に過ぎず、また、説明に用いた各図における寸法、形状および配置関係等も実施の形態の一例を示す概略的なものである。したがって、本発明は、上述した実施の形態の例に限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【0136】
例えば、図12に示す演算装置41−1において、演算ボード50と書き込み・入出力ボード60に、それぞれメモリ52とメモリ62を備えるようにしたがこれらは一つで代用してもよい。例えば、メモリ62は搭載せずメモリ52だけを使用するようにしてもよい。また、メモリ52とメモリ62に代えて大規模なメモリボードを用意したり、ハードディスク等の大容量記録装置を設けるようにしたりしてもよい。
【図面の簡単な説明】
【0137】
【図1】従来のシステムの概要を示す構成図である。
【図2】スイッチボックスの説明に供する概略図である。
【図3】演算対象の一例を示す模式図である。
【図4】本発明の一実施の形態に係る演算装置アレイを示す概略図である。
【図5】本発明の一実施の形態に係る演算装置(演算ボード)のコネクタ配置を示す図である。
【図6】本発明の一実施の形態に係る演算装置(演算ボード)の相互接続の説明に供する図である。
【図7】本発明の一実施の形態に係る演算装置の分解斜視図である。
【図8】本発明の一実施の形態に係る情報処理装置の概要を示す図である。
【図9】本発明の一実施の形態に係るホストプロセッサとハードウェア・ネット間の制御概要を示す図である。
【図10】本発明の一実施の形態に係る情報処理装置の全体構成を示す概略図である。
【図11】本発明の一実施の形態に係るホストプロセッサの階層を示す構成図である。
【図12】本発明の一実施の形態に係る演算装置(演算ボード、書き込み・入出力ボード)の機能を示すブロック図である。
【図13】本発明の一実施の形態に係る演算回路等書き込み処理を示すフローチャートである。
【図14】A〜Dは、本発明の一実施の形態に係る演算回路等書き込み時の状態遷移を示す図である。
【図15】本発明の一実施の形態に係る演算回路等書き込み後の状態を示す図である。
【図16】本発明の他の実施の形態に係る3次元領域に2次元領域を畳み込む場合の演算装置アレイを示す図である。
【図17】本発明のさらに他の実施の形態に係る周期境界条件を満たす場合の演算装置アレイを示す図である。
【符号の説明】
【0138】
6−1A〜6−1C…格子点、11…ホストプロセッサ、12…メモリ、13…PLD、14…バス、21…アプリケーション、22…オブジェクト・マネジャー、23…ハードウェア・モジュール・ドライバ、25…バス、26…ハードウェア・オブジェクト、27…ハードウェア・ドライバ、28…インターフェース、29…ハードウェア・ネット、30…ハードウェア・モジュール、31…標準バス・インターフェース、32…ローカルメモリ、33…ローカルプロセッサ、34…FPGA、35…入出力インターフェース、36…通信路、40…演算装置アレイ、40−1…演算装置、50…演算ボード、51…FPGA、52…メモリ、53F,53B,53L,53R,53U,53D,54…コネクタ、55…メモリ制御回路、56…並列演算回路、56A,56B…論理ブロック、57…演算対象データ入出力回路、58…演算結果データ入出力回路、59X,59Y,59Z…隣接FPGAデータ転送回路、60…書き込み・入出力ボード、60A1…切り欠き、61…FPGA、62…メモリ、63F,63B,64…コネクタ、65…メモリ制御回路、66…書き込み回路、67…仮想回路データ入出力回路、68…各種データ入出力回路


【特許請求の範囲】
【請求項1】
演算対象について所定の演算を行うアプリケーション・プログラムを記憶するメモリと、
前記演算対象の各々の問題領域に対応して隣接する演算装置間で直接データ通信可能に接続されて配置され、また前記アプリケーション・プログラムの実行に用いられ前記各々の問題領域に対応した演算を行う演算回路が再構成され、隣接する演算装置間で前記問題領域についての演算結果データを送受信する複数の演算装置からなる演算装置アレイと、
前記アプリケーション・プログラムを実行し、前記演算装置アレイを構成する各演算装置から各問題領域についての演算結果データを取得し、前記演算対象について演算結果を算出するホストプロセッサと、
前記メモリ、前記ホストプロセッサおよび前記演算装置アレイとの間で、データを通信するバスと、を含む
情報処理装置。
【請求項2】
前記複数の演算装置は、ホストプロセッサによって予め決められた演算結果の転送先に従い、当該演算装置の演算結果データを隣接する所定の演算装置に転送する
請求項1に記載の情報処理装置。
【請求項3】
前記演算装置アレイを構成する前記複数の演算装置に対して、前記ホストプロセッサの指示に基づいて、前記演算回路を書き込むための仮想回路データ書き込み回路を所定の順序で書き込む
請求項2に記載の情報処理装置。
【請求項4】
前記演算装置アレイを構成する前記複数の演算装置において、全ての演算装置について前記仮想回路データ書き込み回路の書き込みが終了後、前記仮想回路データ書き込み回路が最後に書き込まれた演算装置から最初に書き込まれた演算装置まで前記全ての演算装置について前記演算回路を書き込む
請求項3に記載の情報処理装置。
【請求項5】
前記演算装置は、前記演算回路が書き込まれる演算ボードと、前記仮想回路データ書き込み回路が書き込まれる書き込みボードから一対の演算装置が構成される
請求項4に記載の情報処理装置。
【請求項6】
前記演算装置アレイを構成する前記複数の演算装置において、前記演算回路の書き込みとともに、前記ホストプロセッサと送受信するデータを転送するためのデータ入出力回路を書き込む
請求項5に記載の情報処理装置。
【請求項7】
前記演算装置の前記演算ボードは、上下左右前後の隣接する演算ボードと接続するための第1のコネクタおよび対をなす前記書き込みボードと接続するための第2のコネクタを備え、また前記書き込みボードは、対をなす前記演算ボードと接続するための第3のコネクタを備え、
前記演算ボードの演算回路は、第1のコネクタを介して隣接する演算ボードの演算回路と前記演算結果データの送受信を行うとともに、第2および第3のコネクタを介して前記書き込みボードの前記書き込み回路および前記データ入出力回路とデータの送受信を行う
請求項6に記載の情報処理装置。
【請求項8】
前記ホストプロセッサは、前記演算装置アレイを構成する複数の演算ボードのうち所定の演算ボード同士を第1のコネクタを介して電気的に接続するように制御する
請求項7に記載の情報処理装置。
【請求項9】
前記演算対象が周期境界条件を満たす場合、前記ホストプロセッサは、前記演算装置アレイを構成する複数の演算装置のうち周期境界に該当する演算装置同士を第1のコネクタを介して電気的に接続するように制御する
請求項7に記載の情報処理装置。
【請求項10】
演算対象の各々の問題領域に対応して隣接する演算装置間で直接データ通信可能に接続されて配置された複数の演算装置の各々に対して、ホストプロセッサの指示に基づき演算回路を書き込むための仮想回路データ書き込み回路を所定の順序で書き込むステップと、
全ての演算装置について前記仮想回路データ書き込み回路の書き込みが終了後、前記仮想回路データ書き込み回路が最後に書き込まれた演算装置から最初に書き込まれた演算装置まで前記全ての演算装置について前記演算回路を書き込むステップと、
を含む仮想回路書き込み方法。


【図1】

【図2】

【図3】

【図4】

【図5】

【図6】

【図7】

【図8】

【図9】

【図10】

【図11】

【図12】

【図13】

【図14】

【図15】

【図16】

【図17】


【公開番号】特開2010−26607(P2010−26607A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
物理学 | 計算;計数 | 電気的デジタルデータ処理 | デジタル計算機一般 | 各々が少くとも算術演算ユニット,プログラム・ユニットおよびレジスタをもつ2つ以上のデジタル計算機が結合されたもの,例.数個のプログラムの同時処理を行うためのもの | プロセッサ間通信 | 相互接続ネットワークを用いるもの,例.マトリックス,シャフル,ピラミッド,スター,スノーフレーク
物理学 | 計算;計数 | 電気的デジタルデータ処理 | グループ3/00〜13/00および21/00に包含されないデータ処理装置の細部 | 構造上の細部または配置 | 実装または電力の分配
【出願番号】特願2008−184301(P2008−184301)
【出願日】平成20年7月15日(2008.7.15)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成20年1月9日 社団法人電子情報通信学会発行の「電子情報通信学会技術研究報告 信学技報 Vol.107 No.414」に発表
【出願人】(504132881)国立大学法人東京農工大学
【Fターム(参考)】
マルチプロセッサ | 通信、転送方式 | 転送先の指定
マルチプロセッサ | 通信、転送方式 | 系路の接続、切替方式 | バスによるもの
マルチプロセッサ | 通信、転送方式 | 系路の接続、切替方式 | 接続、切替の対象 | 処理装置(CPU)
マルチプロセッサ | 通信、転送方式 | 通信、転送方式 | 転送の対象
マルチプロセッサ | プログラム、命令の実行処理 | 並列処理 | アレイプロセッサ、行列配置によるもの
マルチプロセッサ | プログラム、命令の実行処理 | 並列処理 | アレイプロセッサ、行列配置によるもの | 三次元配列によるもの
マルチプロセッサ | その他 | 構造、システム構成