(57)【特許請求の範囲】
【請求項１】
１又は複数のプログラマブル論理デバイスから構成され所定の演算処理を行う演算部と、
該演算部の入力段と出力段の一方または双方に置かれ演算データを一時的に保存する複数の脱着可能なモジュール構成の外部メモリであるRAMから成るRAM部と、
該プログラマブル論理デバイスに実装され該RAM部と該演算部との演算データの入出力の制御を行うRAMIF部
とを演算基本構成部とし、
前記RAMIF部が、データ入出力のタイミングをFIFO方式によって同期をとるものであり、
前記RAMIF部は前記演算部から出力される演算データを前記RAM部の複数のRAMに分散させて格納するものであり、
複数の該演算基本構成部がマトリックス状に配置され、
隣接する該演算基本構成部の間に片方向または双方向に演算データを受け渡すデータ転送手段をもち、
且つ前記演算部は前記データ転送手段を介して接続される相手の演算部とスループットが同一であるパイプライン構造を成し、
前記複数の演算基本構成部のうち少なくとも１つはメモリスケジューラ機能を有し、
該メモリスケジューラ機能を有する演算基本構成部のRAMIF部は、次段の演算部が読み出す順序に応じて、演算データの順序を入れ替えて前記RAM部に格納可能に構成されていることを特徴とする計算機。
【請求項２】
前記プログラマブル論理デバイスはFPGA(=Field Programmable Gate Array)であり大規模計算用プログラムコードの一部または全部を前記演算基本構成部によって構成した請求項１に記載の計算機。
【請求項３】
前記メモリスケジューラ機能を有する演算基本構成部のRAMIF部が、前記演算データの転送元、転送先、転送タイミングから成るスケジュールに従ってデータリード／ライト制御を行う請求項１又は２に記載の計算機。
【請求項４】
前記演算部、前記RAM部および前記RAMIF部の全部または一部分が基板(ボード)上に脱着交換可能に実装された基本モジュールを基本単位とし、該基本モジュールが縦横整数倍に接続されたモジュールフレームが所定の間隔を隔てて直方体ラック中に積層されて成る請求項１から３の何れかに記載の計算機。
【請求項５】
前記演算部、前記RAM部および前記RAMIF部の全部または一部分が基板(ボード)上に脱着交換可能に実装された基本モジュールを基本単位とし、該基本モジュールが縦横整数倍に接続されたモジュールフレームが多角形ラックの内周面に配設されて成る請求項１から４の何れかに記載の計算機。
【請求項６】
前記演算基本構成部により行われる処理以外の所定の機能を専門的に行う論理デバイスを備えた別機能モジュールが前記基本モジュールと共に用いられ前記モジュールフレームを構成する請求項４又は５に記載の計算機。
【請求項７】
前記別機能モジュールが通信を専門的に行う構成を有し、電磁波により無線であるいは光ファイバを介して基本モジュール、他の別機能モジュール又は前記モジュールフレーム間のデータ転送を行うものを含む請求項６に記載の計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、特に浮動小数点等の高精度データを扱う数値解析プログラム等の大規模計算において高速な処理を実現するいわゆる大規模計算用カスタムメイド計算機に関する。
【背景技術】
【０００２】
計算流体力学(ＣＦＤ)等の計算科学分野に見られるように、近年の解析技術および計算機技術の発達により、航空機の翼周辺の空気の流れ、エンジン内部における空気の流れ或いは燃焼ガスの流れを高精度かつ大規模に数値シミュレーションすることが可能となった。当然のことではあるが、数値シミュレーションの大規模化や、センシング技術の高度化等により、コンピュータが処理すべきデータ量は膨大な量になってきている。従来は、これらの数値シミュレーションはスーパーコンピュータ或いはワークステーションといった高度の演算処理機能を持ったコンピュータにより行われていたが、近年の数値シミュレーションの大規模化は、ワークステーションの演算処理能力を超えるまでに到っている。一方、スーパーコンピュータにおいては、並列処理技術による処理速度の向上、ならびにソフトウェア技術による処理速度の向上を図ってきたが、装置自体、かなり高額である上に、運用コストも高額であり、全ての研究者、技術者が研究・開発用にこれらを自由に使うことができる状況にはまだ達していない。
ところで、FPGA(=Field Programmable Gate Array)等のハードウェアでありながらソフトウェアのように書き換え可能な、いわゆる再構成可能なプログラマブル論理デバイスが様々な電子技術応用分野において広く用いられるようになってきている。従来は、コンピュータ・アーキテクチャをシミュレーションするためには、ユーザは膨大な数の個別ＩＣをブレッドボードに実装したり、設計したアーキテクチャを試作機としてシリコン上にマッピングしたりする作業をしなければならなかった。しかし、膨大なコストと労力を必要とするこれらの作業と違い、FPGA等のプログラマブル論理デバイスの場合、ユーザは設計した回路のレイアウト情報を複数のFPGAが実装された試作用ボードに転送することにより、設計した回路の動作を即実現することが出来るようになる。それに加えて、処理対象やアルゴリズムに応じて回路の仕様（アーキテクチャ）を容易に修正・変更することが可能であるため、ユーザは所望の論理機能を持った専用ＬＳＩを従来よりも短期間かつ低コストで設計・開発することが出来るようになった。
ところで、プログラムの中で特に処理負荷の高い処理部分を、その処理部分を専門に実行する専用計算機に任せ、ホストコンピュータはその専用計算機からの処理結果を受け取るコンピュータシステムが広く実用化されている。そして、このような専用計算機としてFPGAによって構成された専用計算機もまた実用化されている。例えば、ゲーム機等の画像信号処理装置、携帯電話地上局におけるデジタル信号処理装置、及びオーディオ製品等の音声信号処理装置等において上記FPGA等のプログラマブル論理デバイスは多用されている（例えば、特許文献１を参照。）。
【０００３】
【特許文献１】特開２００５−２０２５０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記画像信号処理装置等のように、ＣＦＤ等の大規模数値計算プログラムの中で特に計算負荷の高い演算処理部分（サブルーチン）を、その処理を専門に実行する専用計算機に任せるようにシステム（ホストコンピュータ←→専用計算機）を構成し、その専用計算機をFPGAによって構成する案が容易に考えられる。専用計算機をFPGAによって構成することにより、低コストで高速な演算処理システムを実現することが可能となる。
しかし、FPGAは、ＣＦＤ等の大規模数値シミュレーションの演算処理においては一部の研究発表はあるが、一般的には実用されていない。その大きな理由は、ＣＦＤでは高精度データ、例えば64bitの浮動小数点データを扱うため、これらの高精度データを処理するためには大規模なFPGAの演算システムが必要となるからである。FPGAの演算システムが大規模となった場合、大量のデータが入出力されることになるが、演算部でのレイテンシが極めて小さくなるように、大量のデータを演算部に転送する方法、或いは大量のデータをメモリに格納（保存）する方法、さらには大規模FPGA演算システムの実装方法等といった、FPGA演算システムをＣＦＤ等の大規模計算の分野でも利用可能とするためには解決すべき課題がある。画像処理または通信処理等のFPGA演算装置は主として整数データを扱うため、小規模のFPGAの演算システムで足りていた。
また、FPGA等のプログラマブル論理デバイスを用いた大規模計算用カスタムメイド計算機を実現するには、専用の論理を実装した多数・多種類の大規模ボードを用途毎に開発する必要があり、膨大な開発費用が必要とされていた。このため、実現できた場合の多大な効果（高性能、低価格、低消費電力）について研究がなされ、その成果から実現が期待されているにもかかわらず、実現できることを証明することが非常に困難であるために、このような計算機が開発され一般に実用されるにはまだ至っていない。
そこで、本発明は、かかる従来技術の問題点に鑑みなされたものであって、浮動小数点等の高精度データを扱う数値解析プログラム等の大規模計算において高速な処理を実現する大規模計算用カスタムメイド計算機を提供することにある。
【課題を解決するための手段】
【０００５】
前記目的を達成するために請求項１に記載の計算機は、１又は複数のプログラマブル論理デバイスから構成され所定の演算処理を行う演算部と、
該演算部の入力段と出力段の一方または双方に置かれ演算データを一時的に保存する複数の脱着可能なモジュール構成の外部メモリであるRAMから成るRAM部と、
該プログラマブル論理デバイスに実装され該RAM部と該演算部との演算データの入出力の制御を行うRAMIF部
とを演算基本構成部とし、
前記RAMIF部が、データ入出力のタイミングをFIFO方式によって同期をとるものであり
前記RAMIF部は前記演算部から出力される演算データを前記RAM部の複数のRAMに分散させて格納するものであり、
複数の該演算基本構成部がマトリックス状に配置され
隣接する該演算基本構成部の間に片方向または双方向に演算データを受け渡すデータ転送手段をもち、
且つ前記演算部は前記データ転送手段を介して接続される相手の演算部とスループットが同一であるパイプライン構造を成し、
前記複数の演算基本構成部のうち少なくとも１つはメモリスケジューラ機能を有し、
該メモリスケジューラ機能を有する演算基本構成部のRAMIF部は、次段の演算基本構成部が読み出す順序に応じて、演算データの順序を入れ替えて前記RAM部に格納可能に構成されていることを特徴とする。
上記計算機では、演算基本構成部がマトリックス状に配置されたプログラマブル論理デバイスによる大規模演算システムが構成されているため、大量の演算データの並列処理が可能となる。また、各演算部がスループットが１であるパイプライン構造を成している例では、演算部の動作周波数で１クロック毎に演算データが各演算部に入力されるのと同時に、パイプライン通過後の演算データがその演算部から出力される。更に、各演算部とRAM部との間にデータリード／ライト制御を行うRAMIF部が各演算部の入力段と出力段に各々配置されているため、各演算部におけるレイテンシが極めて小さくなるような大量の演算データの入出力制御が可能となる。従って、大量の演算データをスループット「１」のタイミングで大規模FPGA群(演算部）に順々に入力させ、そしてパイプライン通過後(処理済み)の演算データを順々に出力させることが可能となる。従って、上記演算基本構成部によって構成される計算機は高精度のデータを扱う数値解析プログラム等の大規模計算に適用させることが可能となる。
また、上記計算機では、演算データは複数のRAMに分散されて格納されることにより、演算部がデータを読み込む際に複数のRAMからデータを供給され、単一RAMのデータ転送速度(データ供給速度)と演算部でのデータ取り込み速度とのアンバランスが是正されることになる。これにより、演算部は演算データを高速に読み出すことが可能となる。また、演算データが複数のRAMに分散されて格納されているため、RAMIF部が演算データを転送するタイミングを調整することにより、演算部での処理内容に適した転送形態で演算データを転送することが可能となり、大量の演算データに対する処理速度の高速化に寄与するようになる。
また、前記計算機を構成する単位は、数種類の基本的な回路基板（ボード）を開発すればよく、一旦開発されればその後はその基板を製作するだけでよく、あるいは別の大規模計算用途に組み立てられたもの(基板)から不要になったものを取り外して再利用するか、又は利用時期を分けてこれらを共用するのみでよいので、ほとんどの大規模数値演算用途において、ボードを都度専用に開発する必要がなく、膨大な開発費用と期間の問題を解決することができる。
また、各ボードは、縦横がそれぞれ所定の長さの直方形に統一することが可能であり、複数の演算基本構成部を組み合わせて全体を構成する場合に演算機能の全体最適配置を行う自由度が高い。
前記統一サイズのボードを組み合わせて構成される機能ユニットのうち、汎用性が高いものは全体を一体化して作ることが有利である場合があり、この場合、一体化したボードのサイズを、縦横それぞれが前記統一サイズのボードの整数倍である直方形にすることで、一体化したボードに前記統一サイズのボードを自由に組み合わせて大規模計算システムを構成することができる。また、一体化したボードは前記統一サイズのボードを組み合わせて構成される同一サイズの機能ユニットに比べてボード間を接続するためのコネクタが少ないため、同一サイズでより多くの機能を実装することが可能である。
前記一体化ボードの形は、必ずしも直方形である必要はなく、例えば十字形のような多角形であってもよい。
【０００６】
請求項２に記載の計算機では、前記プログラマブル論理デバイスはFPGA(=Field Programmable Gate Array)であり計算流体力学等の数値解析プログラムコードの一部または全部を前記演算基本構成部によって構成した。
上記計算機では、演算部およびRAMIF部がFPGAによって構成されているため、処理対象(アプリケーションソフトウェア）毎に処理速度が向上するように回路の再配置ならびに処理の内容に見合ったハードウェアのリソース配分が可能となる。従って、大規模計算用プログラム、例えば計算流体力学等の数値解析プログラムコードの内、計算負荷の高い（処理コストの高い）部分にはより多くの演算基本構成部を配分することにより、専用のボードを新規に開発することなく、数値シミュレーションにおける演算データの処理速度を大幅に向上させることが可能となる。
【０００８】
請求項３に記載の計算機では、前記メモリスケジューラ機能を有する演算基本構成部のRAMIF部が、前記演算データの転送元、転送先、転送タイミングから成るスケジュールに従ってデータリード／ライト制御を行うこととした。
上記計算機では、RAMIF部はRAM部に対する演算データの分散配置／読み出し、ならびに演算部に対する(演算)データ転送を所定のスケジュールに基づいて行うため、大量の演算データを所望のレイテンシ且つタイミングで各演算部へ並列に入力させると共に、大量の演算データを次段の各演算部へ並列に出力させることが可能となる。
【０００９】
また、請求項１〜３に記載の手段によれば、各演算部に直結された専用のＲＡＭに演算データが格納されるので、既存の演算専用計算機システムのようにInfiniBand(登録商標)などのように高価な高性能通信路スイッチ手段を必要としない。
【００１０】
請求項４に記載の計算機では、前記演算部、前記RAM部および前記RAMIF部の全部または一部分が基板(ボード)上に脱着交換可能に実装された基本モジュールを基本単位とし、該基本モジュールが縦横整数倍に接続されたモジュールフレームが所定の間隔を隔てて直方体ラック中に積層されて成ることとした。
上記計算機では、大規模FPGA演算システムをコンパクトに実装することが可能となる。
【００１１】
請求項５に記載の計算機では、前記演算部、前記RAM部および前記RAMIF部の全部または一部分が基板(ボード)上に脱着交換可能に実装された基本モジュールを基本単位とし、該基本モジュールが縦横整数倍に接続されたモジュールフレームが多角形ラックの内周面に配設されて成ることとした。
上記大規模計算用カスタムメイド計算機では、大規模FPGA演算システムをコンパクトに実装することが可能となる。
【００１２】
請求項６に記載の計算機では、前記演算基本構成部により行われる処理以外の所定の機能を専門的に行う論理デバイスを備えた別機能モジュールが前記基本モジュールと共に用いられ前記モジュールフレームを構成することとした。
FPGAというデバイスが柔軟にその内部構造を変更できるという特性を持っており、これにより、大規模計算を高効率に実行できるシステムの実現が可能になるわけであるが、一方でFPGAというデバイスが超えることの出来ない限界が存在する。それが、例えば光通信であり、複雑な計算のコンパクトな回路による実施である。
そこで、上記計算機では、上記限界に対し、その処理等を専門に行う論理デバイス、例えばCPUや複数のFPGAを備えた別機能モジュールを上記モジュールフレームに追加することにより、システムにおける機能配分が最適化され、システムの機能が最大限に発揮されることになる。
【００１３】
請求項７に記載の計算機では、前記別機能モジュールが通信を専門的に行う構成を有し、電磁波により無線であるいは光ファイバを介して基本モジュール、他の別機能モジュール又は前記モジュールフレーム間のデータ転送を行うものを含むこととした。
上記計算機では、基本モジュール、他の別機能モジュール又はモジュールフレーム間のデータ転送が電磁波による無線あるいは光ファイバを介して成されるため、接続可能な演算基本構成部の物理的な配置に関する制約が小さくなり、複数の演算基本構成部の最適な全体配置が可能となり、演算処理速度の高速化に寄与することができる。
なお、電気無線変換手段や光電気変換手段は演算基本構成部に実装されてもよく、コネクタを介して電気信号で接続された別の専用モジュール（FPGAなどが実装されていないモジュール）に実装されていてもよい。後者の場合、演算基本構成部により多くの演算に必要な機能を集積することができる。
【発明の効果】
【００１４】
本発明の計算機によれば、処理速度についてはIntel社のItanium系64bit-CPUを使用したワークステーションに比較して約３８倍から４６８倍の演算処理速度を得ることが可能となる。また、製作コストについてはこれらのワークステーションの約１０倍程度のコストで製作することが可能である。
FPGA等のプログラマブル論理デバイスを用いた大規模計算用カスタムメイド計算機を実現するには、専用の論理を実装した多数・多種類の大規模ボードを用途毎に開発する必要があり、膨大な開発費用が必要とされていた。本発明によれば、数種類の基本的な回路基板（ボード）を開発すればよく、一旦開発されればその後はその基板を製作するだけでよく、あるいは別の大規模演算用途に組み立てられたものから不要になったものを取り外して再利用するか、又は利用時期を分けて共用することのみでよいので、ほとんどの大規模数値計算用途において、ボードを都度専用に開発する必要がなく、膨大な開発費用と期間の問題を解決することができる。
また、本発明は下記のようにFPGA等のプログラマブル論理デバイスを用いた大規模専用装置の実証試作に適用することができる。
特定の大規模計算用カスタムメイド計算機を実現し利用する場合で、かつその利用による経済効果が非常に大きい用途においては、専用に開発された大規模ボードによるほうが、本発明によるよりも、所要部品を最適に選択し配置することが可能であり、演算部間を直結することで演算データ転送も高速化できるため、より高性能・低価格・低消費電力を実現することができる。しかし、例えばFPGAを数百個以上使うような大規模な装置を実現する場合の開発リスクは大きく、実機を試作する前にその実現性を詳細に検証しておくことは必要であるが、このような大規模な事前検証をシミュレーション等で行うことは膨大な時間・費用・工数を必要とするため、現実的には不可能である。
それに対し本発明によれば、従来その実用化が期待されていながら実現できなかった大規模計算用カスタムメイド計算機を開発する際の、実証試作機を比較的容易に実現することができ、かつ実用して検証することが可能であるため、不可能な程の大規模な事前検証を行うことなく実現性を実証することが可能である。これにより、FPGA等のプログラマブル論理デバイスを用いた専用ボードによる大規模計算用カスタムメイド計算機の実現にも道を開くことが可能となり、産業の発展に貢献することができるので、本発明は実施する効果が非常に大きいと考えられる。
【発明を実施するための最良の形態】
【００１５】
以下、図に示す実施の形態により本発明をさらに詳細に説明する。なお、本実施形態では、プログラマブル論理デバイスとしてFPGAを使用した実施例を説明する。
【００１６】
図１は、本発明の計算機の演算基本構成部１００を示す説明図である。
この演算基本構成部１００は、演算データを受け取り所定の演算処理を行うFPGA群１０と、その入力段と出力段に各々配置され且つ複数のRAM（メモリ）から成るRAM群２０,３０とを具備して構成されている。なお、詳細については図２を参照しながら後述するが、FPGA群１０中の演算部１１はパイプライン構造を成して構成され、大量の演算データ（例えば浮動小数点データ）が、例えばスループット「１」のタイミングでRAM群２０→FPGA群１０→RAM群３０→・・・と順々に受け渡される。その際、演算部１１におけるレイテンシが極めて小さくなるように、演算部１１に対する演算データの転送ならびにRAM群２０,３０に対するデータリード／ライト制御を行う専用のFPGAがRAM群２０,３０と演算部１１との間にRAMIF部１２,１３として配置されている。
【００１７】
演算部１１は、隣接する演算部とスループットが同一であるパイプライン構造を採用する。本実施例では、スループットが「１」であるため、演算データの入出力については、RAM群２０から演算部の周波数で１クロック毎に演算データが入力され、パイプライン通過後の演算結果が１クロック毎にRAM群３０に出力される構造を採る。また、演算部１１は、内部メモリとしてBRAMを備えている。
【００１８】
RAMIF部１２,１３は、RAM群２０,３０に対してはRAMの動作周波数で動作し、演算部１１に対しては演算部１１の動作周波数で動作する。また、詳細については、図７を参照しながら後述するが、RAMIF部１２,１３は演算部へ設定する演算データの保存場所(RAM群,BRAM)、演算部へ設定するデータ構造、演算部へ設定する各演算データの設定順、演算部から出力する演算結果の保存先(RAM群,BRAM)を予め決められた所定のスケジュールに従って処理するメモリスケジューラとしても機能する。従って、RAMIF部１２,１３がメモリスケジューラとして機能するおかげで、スループット「１」のタイミング且つ所望のレイテンシで大量の演算データがパイプライン構造の演算部を順々に通過することが可能となる。
【００１９】
使用されるFPGAとしては、例えばXilinx社製の「Virtex-4」である。
【００２０】
RAM群２０,３０は、外部メモリであり、使用されるRAMとしては、例えばエルピーダメモリ社DDR2SDRAM 533Mbps 256Mbitである。また、後述するように、RAM群の一部または全部が各コネクタに実装され、脱着可能なモジュールで構成されており、演算部１１での必要性に応じて、例えばRAM当り０〜２ギガバイトの最適な容量を選択して実装することができるように構成されている。
【００２１】
図２は、FPGA群１０の詳細を示す説明図である。
このFPGA群１０は、演算処理を行う演算部１１と、RAM群２０,３０に対するデータリード／ライト制御を行うRAMIF部１２,１３とから成る。
【００２２】
RAM群２０,３０に対するデータリード／ライト制御を行うRAMIF部１２,１３が演算部へのデータ入出力口として、演算回路、例えば浮動小数点演算回路が次々に演算結果を渡していくように演算器(FPGA)が配置されている。なお、図２においてRAMIFコントローラや演算回路がFPGA１チップを占有しているかの様に描かれてあるが、実際にはチップ単位で、RAMIFコントローラや演算回路を割り当てる訳ではない。そのため、分割損による、リソース消費効率の低下や、レイテンシの増大が発生すると考えられる。しかし、レイテンシが増大したとしても、本システムのスループットが「１」であるため、演算性能への影響は微小である。
【００２３】
演算部１１およびRAMIF部１２,１３は、FPGAによって構成されているため、処理対象(アプリケーションソフト）の特性に応じて、最適な処理が行えるように回路の再配置が可能である。
【００２４】
従って、本発明の大規模計算用カスタムメイド計算機は、ＣＦＤコードの中で処理コストが高いコードを抽出し、そのコードの演算処理内容を演算基本構成部１００によってFPGA化(ハードウェア処理化)することによって、数値シミュレーションの演算処理速度を飛躍的に向上させる。また、ＣＦＤコードの全てをFPGA化してもよく、ＣＦＤコードの一部分をPFGA化とし、その他の処理をホストコンピュータに実行させるようにしても良い。以下、ＣＦＤコードのFPGA化について説明する。
【００２５】
図３は、ＣＦＤコードのあるサブルーチンをFPGA化した場合のブロック間接続を示す説明図である。なおブロック(1)とブロック(5)は回路的に処理をする必要がないのでここでは省略してある。
このブロック図は、ＣＦＤコード（例えばFORTRANプログラム：UPACS)の構造を解析し、その中で処理コストの高いサブルーチン、例えば、図４に示すサブルーチン(muscl_2ndorder)内を適当な処理ブロック(ブロック(1)から(8)）に分けてFPGA化したものである。
【００２６】
ここで、ブロック(2)とは、FORTRANソースコード「muscl_2ndorder.f90」の112〜115行に該当する演算を行う。
ブロック(3)とは、FORTRANソースコード「muscl_2ndorder.f90」の117〜120行に該当する演算を行う。
ブロック(4)とは、FORTRANソースコード「muscl_2ndorder.f90」の122〜125行に該当する演算を行う。
ブロック(6)とは、FORTRANソースコード「muscl_2ndorder.f90」の131〜132行に該当する演算を行う。
ブロック(7)とは、FORTRANソースコード「muscl_2ndorder.f90」の134〜135行に該当する演算を行う。
ブロック(8)とは、FORTRANソースコード「muscl_2ndorder.f90」の137〜138行に該当する演算を行う。
【００２７】
図５は、ブロック(2)の内部構造を示す説明図である。なお、図中の「(数値１,数値２）」という表記は、数値１がスループットを、数値２がレイテンシを示している。
この内部構造は演算器レベルまでブレイクダウンしたものである。他のブロックもこれと同様に複数の演算器が結合された内部構造を持っている。
【００２８】
図６は、各ブロックにおけるFF(=Flip-Flop)数、加算器、減算器、乗算器、除算器の各個数を示す説明図である。
参考として、この場合の演算時間ｔは、格子点数＝４０×４０×４０、回路の動作周波数＝100MHz、回路レイテンシ＝３３８[クロック]、回路スループット数＝１[クロック]とした場合、
演算時間ｔ＝(403×１＋338)×３÷(100×106)＝１.９３×１０-3[sec.]となる。
Intel社製のItanium2系CPU(１.５GHz)の演算時間は７.３７×１０-2[sec.]であるから、処理速度比ａ＝７.３７×１０-2÷１.９３×１０-3＝３７.８（倍）となる。
【００２９】
また、データ入出力のタイミング調整は図９に示すように、FIFO方式によって同期をとる。なお、図８に示すように、Flip-Flopによって同期をとっても良い。
【００３０】
図７は、メモリスケジューラに特化した演算基本構成部を示す説明図である。なお、説明の都合上、演算部の入力段のメモリスケジューラと出力段のメモリスケジューラは一つにまとめて表されている。
上述した通り、FPGA群（演算部）はパイプライン構造を成して、大量の演算データがスループット「１」のタイミングで入出力される。例えば、サブルーチン「muscl_2ndorder」の計算を実行する演算部では、14.4GB/sの転送レートでの演算データの入力が必要であるが、DDR-SDRAMの転送レートが5.3GB/sであるから、単一のDDR-SDRAMでは演算データの供給が追いつかない。そこで、複数のDDR-SDRAMに演算データを分散させて保存する必要がある。その際の演算データの入出力の管理を行うのがメモリスケジューラである。
【００３１】
メモリスケジューラは、演算部へ設定するデータの保存場所(SDRAM,BRAM）、演算部へ設定するデータの構造、演算部へ設定する各データの設定順、演算部から出力する演算結果の保存場所(SDRAM,BRAM)等を一括して処理するものである。
【００３２】
メモリスケジューラはデータの転送元、転送先、転送タイミングを設定した予め決められたスケジュールを持っている。従って、そのスケジュールに従って大量の演算データがスループット「１」のタイミングでメモリ(RAM群）から演算部へ読み込まれ、そして演算部のパイプライン構造を通過した大量の演算データがメモリ(RAM群)へ分散保存されることになる。
【００３３】
BRAMは演算部の内部メモリであり、SDRAM(DDR2-SDRAM)から読み出したデータの一時的な保存のほか、演算結果をすぐに使用する場合（データをフィードバックして演算する時）にデータを一時的に保存する為にも使用される。全てのデータがBRAMに収まり、フィードバック処理が頻繁に発生する様な演算の場合、SDRAM上のデータをBRAMに格納してから演算を行う場合もある（手順の簡素化）。従って、どの演算部も、図７のような構造を持つ為、スケジュールが異なるだけで、１種類のスケジューラでメモリ(RAM群）−演算部間のデータのやり取りをスケジューリングすることが可能となる。
【００３４】
メモリスケジューラは、次段の演算部(FPGA)がRAM群(SDRAM)から読み出す順序を考慮して、演算データを複数のSDRAMに分散させて保存する。
【００３５】
また、メモリスケジューラはSDRAMとのインタフェース(メモリコントローラ)においてはSDRAMの動作周波数で動作し、一方演算部とのインタフェースにおいては演算部内部の演算器の動作周波数で動作する。また、SDRAM等のRAMにはリフレッシュ等のアクセス不能の時間帯が存在する。従って、メモリデータの入出力のタイミング調整は図９に示すようにFIFO方式によって行う。なお、図８に示すようなFlip-Flop方式であっても良い。
【００３６】
図１０に示すようにSDRAM上に演算データが格納されていた場合、最初の演算ではA1〜D1,２回目はA2〜D2・・・がBRAMに格納される。この場合、SDRAMからバーストリードができなくなり、An,Bn,Cn,Dnの各データ毎にPrecharge〜Bank Activatingの処理が発生する(この時間は、使用するSDRAMの性能にもよる)。例として、この時間を28word(7クロック)とすると、各データのバーストリード長が8wordの時、SDRAMは8/(8+28)=22%の性能しか出せない事になる。従って、そのための対策として、SDRAMの性能を引き出すには、バースト長を大きくとる必要がある。例えば、上の例の条件で80％以上の性能を得ようとした場合、バースト長は112word以上とする必要がある。さらに、リフレッシュ等のロスを考慮すると、150word以上のバースト長を必要とすると考えられる。
【００３７】
また、１回のバースト長を大きくとる方法として、演算データをA1〜A4、B1〜B4・・・ではなくA1,B1,C1,D1、A2,B2,C2,D2・・・と演算で使用する順番に格納する方法が考えられる。
図１１(a)に示すように、前段のFPGAの出力がＡ,Ｂ,Ｃ,Ｄが同時に揃う、若しくは揃うようにアルゴリズムを修正できるのであれば次段のFPGAが使用する順番に格納できる。しかし、図１１(b)に示すように、Ａの演算が終わらなければＢの演算ができないのであれば、BRAMを用いて演算データをバッファリングする必要がある。従って、メモリスケジューラは、演算部に対するスケジューリングだけでなく、次段FPGAがSDRAMから読み出す順序を考慮したスケジューリングも行う。
【００３８】
従って、入力段のメモリスケジュールが参照するスケジュールには、転送すべき演算データの格納場所、転送すべき演算データの構造、転送すべき演算データの転送タイミングが記載されている。他方、出力段のメモリスケジュールが参照するスケジュールには、演算部から出力される演算データの格納場所等が記載されている。なお、出力される演算データについては、上述した通り次段の演算部が呼び出す順序を考慮して複数のSDRAMに分散して保存される。このように、大量の演算データの入出力の管理をメモリスケジューラが上記スケジュールに従って行うことにより、大量の演算データをスループット「１」のタイミングで大規模FPGA群(演算部）に順々に入力させ、そしてパイプライン通過後(処理済み)の演算データを順々に出力させることが可能となる。つまり、大量の演算データをスループット「１」のタイミングで並列処理することが可能となる。従って、ＣＦＤコード等の数値解析プログラムの内、処理コストの高いコードを、上記演算基本構成部１００によってFPGA化することによって、処理速度が飛躍的に向上するようになる。
【００３９】
図１２は、大規模計算用カスタムメイド計算機の実装を示す説明図である。
先ず、データ入出力用インタフェースを備えた基板４０に、FPGA10aおよびRAM20a,30aを実装して基本モジュール２００を作成する。次に、この基本モジュール２００を横３列および縦４列で直方体ラック３００に固定してモジュールフレーム４００とする。なお、基本モジュール２００の直方体ラック３００への固定はネジによって行い、基本モジュール２００間の電気的接続はフラットケーブル等で接続する。そして、このモジュールフレーム４００を複数段、例えば２段に重ねる。また、モジュールフレーム４００間の接続はフラットケーブルで行う。
【００４０】
また、基板４０は、他種類の規模構成実現の容易化または全体構成の自由度向上を考慮する場合、縦横がそれぞれ所定の長さの１種類のサイズの直方形のボードであることが望ましい。
【００４１】
また、基板４０は、データ転送手段による転送レイテンシーの削減、コネクタによる信号線数ネックの改善、またはコネクタ削減による面積あたりの機能の増大を考慮する場合、縦横がそれぞれ所定の長さの複数種類のサイズの直方形のボードであることが望ましい。あるいは、上記単一サイズの直方形のボードが組み合わされた多角形のボード（例えば十字形）であることが望ましい。
【００４２】
図１３は、別機能モジュールの例を示す説明図である。
モジュールフレームを構成する基本モジュールとしては、基本的には図１２に示すように、基板４０にFPGA10aとRAM20a,30aが実装された基本モジュール２００である。しかし、システム全体が行う処理の中で基本モジュール２００では効率が悪い処理、あるいは基本モジュール２００のみの構成だけでは、実現することが出来ない機能が存在する。このような処理または機能を専門に行う別機能モジュールを基本モジュール２００に代えて、或いは基本モジュールと共に使用することにより、システム全体の効率を格段に向上させることが可能となる。例えば演算の占める割合が大きい処理の場合は、図１３(ａ)に示すように基板４０に複数のFPGA、例えば４個のFPGA10a,10a,10a,10aが実装された別機能モジュール２１０が基本モジュール２００と共に使用されモジュールフレームを構成する。あるいは、隣接していない離れた基本モジュール間において有線または無線(赤外線、電磁波等）によるデータ転送、例えば光ファイバケーブルによるデータ転送を行わせたい場合は、データ入出力インタフェースとして電気光変換モジュール５０,５０を備え光通信機能を有する別機能モジュール２２０が基本モジュール２００と共に使用されモジュールフレームを構成する。或いは、無線によるデータ転送を行わせたい場合はデータを所定の電磁波(キャリア)に変調／受信した電磁波(キャリア)を復調し所望のデータを抽出する電気無線変換モジュール６０,６０を備えた別機能モジュールが基本モジュール２００と共に使用されモジュールフレームを構成する。また、FPGA10aよりは汎用のCPU10bで処理した方が効率的な部分がある場合には、FPGA10aに代えてCPU10bが実装された別機能モジュール２３０が基本モジュール２００と共に使用されモジュールフレームを構成する。
【００４３】
つまり、大規模計算用プログラムの一部または全部をFPGA化するに際し、システムを基本モジュール２００のみによって構成するのではなく、FPGAで実現すると効率が悪い処理に対しては、その処理を専門とする別機能モジュール２１０,２２０,２３０を当てることにより、システムにおける機能配分が最適化され、システム全体の機能が最大限に発揮されることになる。なお、基本モジュール２００が不得手な処理を行う別機能モジュール２１０,２２０,２３０は例示であり、これらに限定されるものではない。
【００４４】
図１４は、光通信機能を備えたモジュールフレームを示す説明図である。
このモジュールフレームは、基本モジュール２００に別機能モジュール２１０および別機能モジュール２２０が組み合わされて構成されている。
【００４５】
図１５は、大規模計算用カスタムメイド計算機の他の実装を示す説明図である。
この実装は、基本モジュール２００と別機能モジュール２２０を例えば横２列および縦３列で多角形柱ラック３１０の内周面に固定してモジュールフレーム４１０とする。別機能モジュール２２０には電気信号を光信号に変調または光信号を電気信号に復調する電気光変換モジュールが備わっている。従って、モジュールフレーム４１０間の通信を光信号によって成すことが可能となる。なお、光伝送媒体としては光ファイバ７０を使用する。
【産業上の利用可能性】
【００４６】
本発明の計算機は、浮動小数点等の高精度データを扱う大規模計算用プログラムの演算処理に好適に適用することが可能である。
【図面の簡単な説明】
【００４７】
【図１】本発明の計算機の演算基本構成部を示す説明図である。
【図２】FPGA群の詳細を示す説明図である。
【図３】ＣＦＤコードのあるサブルーチンをFPGA化した場合のブロック間接続を示す説明図である。
【図４】ＣＦＤコードのサブルーチンのフロー図である。
【図５】ブロック(2)の内部構造を示す説明図である。
【図６】各ブロックにおけるFF(=Flip-Flop)数、加算器、減算器、乗算器、除算器の各個数を示す説明図である。
【図７】メモリスケジューラに特化した演算基本構成部を示す説明図である。
【図８】Flip-Flopによる同期方式を示す説明図である。
【図９】FIFO方式による同期方式を示す説明図である。
【図１０】メモリ上のデータ構造の例を示す説明図である。
【図１１】データの転送形態の例を示す説明図である。
【図１２】大規模計算用カスタムメイド計算機の実装を示す説明図である。
【図１３】別機能モジュールの例を示す説明図である。
【図１４】光通信機能を備えたモジュールフレームを示す説明図である。
【図１５】大規模計算用カスタムメイド計算機の他の実装を示す説明図である。
【符号の説明】
【００４８】
１０              FPGA群
２０，３０        RAM群
４０              基板
５０              電気光変換モジュール
６０              電気無線変換モジュール
７０              光ファイバ
１００            演算基本構成部
２００            基本モジュール
３００            直方体ラック
３１０            多角形ラック
４００，４１０    モジュールフレーム
【図１】
0005388323.tif 000002
【図２】
0005388323.tif 000003
【図３】
0005388323.tif 000004
【図４】
0005388323.tif 000005
【図５】
0005388323.tif 000006
【図６】
0005388323.tif 000007
【図７】
0005388323.tif 000008
【図８】
0005388323.tif 000009
【図９】
0005388323.tif 000010
【図１０】
0005388323.tif 000011
【図１１】
0005388323.tif 000012
【図１２】
0005388323.tif 000013
【図１３】
0005388323.tif 000014
【図１４】
0005388323.tif 000015
【図１５】
0005388323.tif 000016