(57)【要約】【課題】フロントエンド計算機にＦＰＧＡ等搭載ボードをＰＣＩバス等で接続して特定方程式の高速計算を実現する。また、計算実行に当たっては、多くの人々が利用しているＦｏｒｔｒａｎ等から容易に利用可能な仕組みを提供することにより利便性を向上を併せて可能にすることにある。【解決手段】ＦＰＧＡ等、素子の並列処理機能を利用し、方程式解法に特化・最適化した論理回路を事前編成（ｎ段のパイプラインをＭ本並列動作可能な状態を準備）させることによって、アプリケーションプログラムから与えられた計算コードの高速計算実現を図る。また、Ｃ言語等の高級言語から引数を伴ったサブルーチンコールを実現することにより利便性を高める。【選択図】図４
2008299825.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡ等、素子の並列処理機能を利用し、行列式の求解計算を効率的に行うため、行列式等計算用途に最適化かつ事前準備したｎ段のパイプラインをＭ本並列動作させる計算機構。
【請求項２】
行列式等の並列計算を実施するために、Ｃ言語等の高級言語から引数を伴ったサブルーチンコールを実現する駆動機構。
【請求項３】
コンピュータのアプリケーションプログラムにおいて、固有で存在する方程式の解法を並列計算可能な状態（計算励起状態）に展開する最適変換機構。
【請求項４】
ハードウェア実装したＦＰＧＡ等の能力・規模と、アプリケーションより抽出した展開式を最大効率で計算動作させるための計算アルゴリズム決定方法。
【請求項５】
ＦＰＧＡ等、並列計算機能を用いた高速計算能力をパーソナルコンピュータの汎用アプリケーションから利用可能とし、利用者の体感速度向上でシステム全体の価値訴求を行う構成方法。
【請求項６】
従来方法において計算時間が比較的長い特定方程式（行列式等）の計算処理高速化だけに着目し、この部分を高速化しつつ、従来の逐次実効型プログラム処理のために、既存コンピュータシステムを組み合わせ、計算時間の極小化と、利用者の総合的な利便性の極大化を同時実現する構成方法。
【請求項７】
ＰＣＩバスのＩ／Ｏスピードのボトルネックを解消するために、行列式の行又は列の一方のデータをＦＰＧＡ内メモリに保存し、他の一方のデータで入出力ラインを占有することにより２倍の入出力スピードを実現する計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】本発明は、コンピュータに関するものであり、とりわけ、多次元の行列式等の強力な計算能力を必要とする問題を解決するための効率的な計算方法に関するものである。
【背景技術】
【０００２】
【特許文献１】計算機システム構成方法（特許公開平６−３０１５２２）
【特許文献２】単一命令・多データ型並列計算機の命令生成・分配装置（特許公開平８−２３５１４９）
【特許文献３】並列効率計算方法及び装置（特許公開２００３−５０７２１）
【特許文献４】半導体回路制御装置及び半導体回路制御プログラム（特許公開２００３−２０８３１１）
【特許文献５】
【非特許文献１】永山、笹尾「ＦＰＧＡ実装に適した多項式近似に基づく数値計算回路」  電子情報通信学会技術研究報告．ＲＥＣＯＮＦ，リコンフィギャラブルシステム，ＩＥＩＣＥ  ｔｅｃｈｎｉｃａｌｒｅｐｏｒｔ  Ｖｏｌ．１０６，Ｎｏ．２４７（２００６０９０８）ｐｐ．１３−１８
【背景技術】
【０００３】現在の汎用コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がメモリ内に記憶されたプログラムを逐次解釈しながら、計算を進めていく。このため、１つの処理が終わるまで、他の処理は待機状態にあり、計算速度を向上させるにはＣＰＵ動作クロックの向上が図られて来た。しかし、ＣＰＵ動作クロックの向上は消費電力増加と発熱処置の問題を解決する必要があり、現技術では３．４ＧＨｚ程度が上限とされ計算速度の向上は、クラスタ化やグリッド化による高価な並列処理機構で実現していた。【０００４】また、ＣＰＵは実行すべき計算をソフトウェア単位で実現するものであり、必ずしもその計算に対して最適なハードウェアが準備されておらず、必ずしも必要でない処理を含めた命令群を実行するため、最終的な計算結果を得るまでに多くの遅延時間が存在する。【０００５】これに対して、プログラムの実行をハードウェアで直接的に実現するための技術として、例えば、半導体回路制御装置及び半導体回路制御プログラム（特許公開２００３−２０８３１１）に示されているような、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を効果的に利用した計算システムが知られている。【０００６】ＦＰＧＡは、プログラムとして論理データを与えることで論理回路間の結線論理再構築し、ハードウェア的最適化された環境から高速な計算結果を得ることを可能にしたものである。ＦＰＧＡを利用して並列計算を行うことによって、特定演算専用に設計されたハードウェア回路に劣らず、従来の汎用コンピュータのようなＣＰＵによる演算に比べると、非常に高速に演算結果を得ることができる。【０００７】しかし、従来のＦＰＧＡ利用法は，ＡＳＩＣ−ＬＳＩの置き換えを目的とした方向性と新しい利用法としてソフトの一部としてハード（仮想回路）を動作させるための技術活用の視点に立っており、
スーパーコンピュータに匹敵する計算能力の可能性を秘めながらこれをいる技術開発は未踏破であった。【０００８】ＦＰＧＡの並列計算機能を利用した製品は、米国市場（日本では組み込み市場）で散見されるものの、ダイレクトにＣＰＵ負荷の高い計算部分だけに的を絞った取り組みはまだなされておらず、さらにその機能を、汎用アプリケーションから気軽に利用できるソリューションは存在していない。【０００９】一方、ＦＰＧＡを動作させるためには、集積回路設計において同期デジタル回路を記述する手法の一種である、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ）などの特殊なハードウェア記述言語（ＨＤＬ）を用いる必要がある。ＲＴＬ設計では、回路の動作をハードウェアレジスタ（フリップフロップなど）とブール論理回路の間の信号の流れ（データ転送）として定義し、ＲＴＬ抽象化は、ＶｅｒｉｌｏｇやＶＨＤＬのようなハードウェア記述言語で高レベルの回路表現手法として使われる複雑な設計過程が存在している。【００１０】上記のハードウェア分野における高度な専門性があるため、一般的なコンピュータ利用者、ソフト技術者から、ＦＰＧＡを用いた並列計算利用環境は実現していない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】本発明は、アプリケーションプログラムの中にあって多大な現在の逐次計算時間を必要とする特定方程式の計算時間をＦＰＧＡ素子の並列計算、およびプログラマブル論理装置としての特徴を引き出し、専門的な知識が無くてもスーパーコンピュータに匹敵する計算能力を低コスト、汎用的に扱える環境を提供しようとするものである。
【課題を解決するための手段】
【００１２】本発明は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の特徴である並列計算実行機能及び、再構成可能な回路というメリットを最大限に活用し、行列式等の解法に時間が必要となる特定方程式に関してスーパーコンピュータクラスの計算能力を、汎用パーソナルコンピュータに低コストで提供可能とする。【００１３】ＦＰＧＡの利用にあたり、計算速度を向上させるために再構成に必要な配備時間（ｄｅｐｌｏｙｍｅｎｔ  ｔｉｍｅ）を極力無くすことが重要となってくる。このため、解を求めるべき特定方程式の規模、粒度等をいたずらに変更することなく、計算中はできる限り同一の回路構成にて実行することにより、消費電力も抑えられ、計算遅延時間抑制の観点からも有利となる。【００１４】以下、並列計算方法の実現手段に関して説明する。【００１５】ＦＰＧＡの入力端子を複数用意し、各入力信号を同時並列に各々のパイプライン計算機構に導入する。したがって、複数の入力信号に対して同時並行的に処理することが可能になる。【００１６】マイクロプロセッサの場合、アキュムレータ数は１または２のものが通常であるのに対しＦＰＧＡではコンフィグレーションにより並列数を数十に高めることは容易である。【００１７】ＦＰＧＡ中には数百万個の基本論理素子が装備されており、結合はされずにコンフィグレーションのロードを待っている状態である。従って同時実行可能なようにコンフィグレーションデータを作ることにより並列入力個数に比例したパイプラインの個数と段数を生成・実現することが可能である。【００１８】アプリケーションプログラムの構成から並列処理可能なＤＯループ等の繰り返し回数とループ内演算作業数が決定できる。この繰り返し数とループ長に対しＦＰＧＡ素子の仕様を比較することにより、計算操作の限界が導き出せるので、与えられた条件下で、最効率な処理を行うための入力信号の並列数とパイプラインの段数を導出できる。【００１９】このデータを元に、フロントエンド計算機からＦＰＧＡに対し、コンフィグレーションプログラム形式でＦＰＧＡ内部の接続方法のデータを送出し、計算準備を完了する。
計算準備の整ったＦＰＧＡに対し数値データを読み込ませると演算が同時並列的に実行される。この時の速度は使用しているクロック速度に対して入力データ分（パイプラインの本数）だけ倍増して加速される。
【発明の効果】
【００２０】マイクロプロセッサはチップ全体で一つ一つ命令を順次実行するものであるのに対し、ＦＰＧＡ等は電気回路であるので、必要に応じてどの部分でも同時に並行して動作可能である。【００２１】この特性を利用して、方程式の解法に出現する行列式の計算を並列動作させ、計算速度の向上を図る。これを実現する上で問題となるのはソフトウェアでのＤＯループ等をハードウェアに展開する方法が複雑となる点であるが、逆に、その部分だけの行列式等特定の計算に効果を絞ることにより、利用者が容易に計算能力を活用することが可能になる。【００２２】本発明は既存ＦＰＧＡデバイスを用いて一般的な汎用ソフト（マイクロソフト社Ｅｘｃｅｌ等）に対し容易にスーパーコンピュータ級の計算能力提供が実現できるものであり、デバイス自体に依存しないため，将来開発されるであろうより高度・高集積なＦＰＧＡ等の同種のＬＳＩへの置き換えも容易となっている。
【実施例】
【００２３】本発明を実施例に基づいて具体的に説明する。
図１のフロントエンド計算機１には、ＣＰＵ、記憶部、ハードディスク、ＯＳ、アプリケーションプログラム、オブジェクトコード、コンフィグレーションデータが格納、若しくは機能体として実装されている。【００２４】図２の拡張可能なＦＰＧＡボードは、ＰＣＩバス２若しくはＰＣＩ  Ｅｘｐｒｅｓｓバスを介して、フロントエンド計算機１に接続される。
ＦＰＧＡボードは、標準搭載のＦＰＧＡ素子に加え拡張用のインターフェース経由で増設が可能な構成としている。【００２５】ＦＰＧＡボードはＰＣＩバス２もしくはＰＣＩ  Ｅｘｐｒｅｓｓからの書き込み／読み出し命令に従って、フロントエンド計算機１に対し実装するＦＰＧＡの能力、規模、変態可能なパターンなどの基本情報をあらかじめ通知する。図１３【００２６】フロントエンド計算機１は、ＦＰＧＡボードのハードウェアリソースであるＦＰＧＡの実装数と個々のＦＰＧＡ内のロジック数、乗算機数等の基礎情報を抽出。【００２７】一方、利用者が要請する、アプリケーションプログラム中の特定方程式（行列式等、図３）の求解に対しＦＰＧＡで計算可能な適合部分（例として以下は行列式で説明）を抽出。【００２８】計算を行う行列式規模の決定（通常はＤＯループなどの繰り返し数がこれに該当）。
利用者が方程式解法に必要とする計算領域と計算可能領域が整合する場合（図６）、若しくは計算領域を分割し、数回に分けて最適化する場合（図７、図８、図９、図１０、図１１、図１２）に関しても要求計算規模に対して、ハードウェアリソースを最適適合させる。【００２９】次に、パイプライン構成の決定プロセスについて説明する。【００３０】科学技術計算においては、６４ビットの浮動小数点演算を用いる。【００３１】しかし、ＦＰＧＡは１６ビット固定小数点しか扱えない。【００３２】そこで、１６ビット固定小数点乗算機を複数組み合わせて、６４ビットの浮動小数点演算を実現可能なサブルーチンを準備しておく。【００３３】このサブルーチンに９個の１６ビット乗算機を用いる。従って、６４ビットの浮動小数の乗算には、乗算機数の１／９が並列実行可能となる。【００３４】１６ビット乗算機数は通常入手可能なＦＰＧＡでは１００から２００程度であり、並列実行数は１０から２０程度が可能となりうる。【００３５】次に、Ｉ／Ｏ速度からの処理限界を検討する。【００３６】通常のＦＰＧＡパッケージにおいては、Ｉ／Ｏピン数は多くて７００本程度であることから、６４ビット並列でデータの入出力を行う時は、１０データの並列入出力は可能となりうる。
パイプライン入口と出口での利用を想定すれば、５本のパイプライン化が可能となる。【００３７】結論として、６４ビット処理系ではＦＰＧＡ１個当たり２から４段のパイプライン５本分の構成が実現できる。【００３８】次に、ＰＣＩ等バスの速度制限による処理限界を検討する。【００３９】ＦＰＧＡが２００ＭＨｚの動作周波数で駆動すると、６４ビットデータが１０並列では、８０バイト２００ＭＨｚとなり、１６Ｇバイト／ｓの入出力レートとなる。【００４０】一方、ＰＣＩバスでは、３３ＭＨｚ・３２ビットの場合、１３２Ｍバイト／ｓ明らかにこの部分がボトルネックとなる。【００４１】この例では、同一データを１００回以上計算する場合でなければＦＰＧＡの能力を使い切れない。
従って、行もしくは列の一方のデータをＦＰＧＡ内に蓄積しておき、１軸のみ入出力データとして取り扱うことによる速度向上手法が考えられる。【００４２】上記により、アプリケーション内に存在する計算規模の大きい方程式に関してはＦＰＧＡを利用し、その他の逐次計算等はフロントエンド計算機で処理し、総合的にシステム能力を最大限に引き出し、効率的な計算を実現することが可能となる。
【産業上の利用可能性】
【利用分野】
【００４３】科学技術計算市場では計算速度の向上はクラスタ化された並列コンピュータ、及びグリッドコンピュータを利用した取り組みが行われている。しかし、規模・価格共に個人や中小企業が取り扱えず、高い計算能力を活用した産業開発・応用利用はわずかな人々に限られている現状がある。ブロードバンド通信環境が一般化した現在、高度な科学技術計算処理を分野を問わず大勢の人が利用し、さらなる工夫をそれぞれの人々が提起・提案する事は潜在的な需要として未開拓な領域と考えられる。そこで、簡易な超高速計算能力の提供を可能とする今回の発明はこれら課題を解決し、ＦＰＧＡ素子の規模拡大と機能向上の恩恵を受けつつ、より低コストで発展成長する仕組みとなる。
【００４４】本発明の利用が期待される分野としては、以下の市場が考えられる。
【００４５】科学技術計算分野、ビジネスインテリジェンス分野、金融工学分野及び半導体検査など従来はグリッドコンピュータ、ハイエンドコンピュータのクラスタリングにて計算能力を向上させている分野、若しくは準スーパーコンピュータ適用の膨大な計算能力を必要とする市場
【００４６】高速科学技術計算を活用したハード、ソフト境界領域における教育・ホビー分野
具体的な方程式としては、行列式、モンテカルロシュミレーション、流体計算、重力計算、基本行列演算，連立１次方程式（直接法），連立１次方程式（反復法），最小二乗法，固有値・固有ベクトル，フーリエ変換とその応用／時系列分析，近似・補間，スプライン関数，数値微分，数値積分，方程式の根，極値問題・最適化，常微分方程式・積分方程式，特殊関数，乱数
【図面の簡単な説明】
【００４７】
【図１】フロントエンド計算機を示す図である。
【図２】ＦＰＧＡボードを示す図である。
【図３】アプリケーションが計算するｎ×ｎ行の行列式を示す図である。
【図４】入力された行列式特性より、利用可能なＦＰＧＡハードウェアリソースを計算し最適規模の並列入力数とパイプライン本数を決定するフロー図である。
【図５】コンフィグレーションデータよりＦＰＧＡが動作方式回路を生成を示す図である。
【図６】動作方式回路を生成後、ダイレクトに計算データを計算できるフロー図を示す
【図７】行列式の求解規模とＦＰＧＡにより求解可能な領域の関係を示す図である。
【図８】行列式の求解規模がＦＰＧＡ求解可能領域より大きい場合の関係を示す図である。
【図９】行列式の求解領域が分割可能な場合の関係を示す図である。
【図１０】上記の分割後、ＦＰＧＡ求解可能領域に整合した場合の関係を示す図である。
【図１１】行列式の求解規模がＦＰＧＡ求解可能領域よりさらに大きい場合の関係を示す図である（４分割）。
【図１２】上記の分割後、ＦＰＧＡ求解可能領域に整合した場合の関係を示す図である。
【図１３】ＦＰＧＡ搭載のハードウェア情報により最適コンフィグレーションデータを生成するフロー図である。
【図１４】アプリケーションから、計算結果を得るまでのフロー図である。
【図１５】プログラム開発を行う場合のフロー図である。
【符号の説明】
【００４８】１：フロントエンド計算機、２：ＰＣＩバス若しくはＰＣＩ  Ｅｘｐｒｅｓｓ、
３：ＦＰＧＡ搭載ボード、４：制御素子部、
５：プログラマブルゲートアレイ（ＦＰＧＡ）、
６：記憶素子部、７：拡張用コネクタ、８：拡張用ＦＰＧＡ
９：搭載されたＦＰＧＡリソースで計算可能な規模領域
１０：利用者が方程式解法に必要とする計算領域
１１：利用者が方程式解法に必要とする計算領域であって、ａ，ｂ領域に分割可能な計算の場合
１２：分解された領域に整合した計算可能な規模領域
１３：利用者が方程式解法に必要とする計算領域であって、ａ，ｂ，ｃ，ｄの４領域に分割可能な計算の場合
１４：分割予定領域として１回で計算可能な規模領域
１５：利用者が方程式解法に必要とする計算領域の４分割イメージ
１６：分解された領域に整合した計算可能な規模領域
【図１】
2008299825.tif 000003
【図２】
2008299825.tif 000004
【図３】
2008299825.tif 000005
【図４】
2008299825.tif 000006
【図５】
2008299825.tif 000007
【図６】
2008299825.tif 000008
【図７】
2008299825.tif 000009
【図８】
2008299825.tif 000010
【図９】
2008299825.tif 000011
【図１０】
2008299825.tif 000012
【図１１】
2008299825.tif 000013
【図１２】
2008299825.tif 000014
【図１３】
2008299825.tif 000015
【図１４】
2008299825.tif 000016
【図１５】
2008299825.tif 000017