(57)【要約】【課題】  ホストコンピュータ１に外部バス３で多体問題演算用コンピュータ２を接続したシステムにおいて、外部バスアクセスのオーバーヘッドを圧縮して演算所要時間を短縮し、ホストコンピュータ１のＣＰＵ時間資源の使用効率の向上を実現する。【解決手段】  ホストコンピュータ１から提供された多数の粒子に係る粒子データに基づき、粒子間の相互作用力を全ての粒子について演算して当該演算結果をホストコンピュータにバイブバス３を介して提供する演算コンピュータ２を、粒子データ中で注目粒子を順に変更して、全ての粒子を注目粒子とした粒子間相互作用力の演算処理を行う制御手続き機能を有した構成として、全ての粒子についての演算処理を自律的に実行するようにした。これにより、注目粒子の設定処理を、ホストコンピュータ１によるランダムアクセスで繰り返し行うことなく演算コンピュータ２で自律的に行うことができ、オーバーヘッドを圧縮して演算所要時間の短縮を実現する。【選択図】  図１
2005173824.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と、ホスト装置に接続された演算装置とを備え、ホスト装置から提供された多数の粒子に係る粒子データに基づき、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して、演算装置が粒子間の相互作用力を全てのまたは必要な範囲の粒子について演算して当該演算結果をホスト装置へ提供する多体問題演算システムにおいて、
演算装置は、ホスト装置から提供された粒子データ中で注目粒子を順に変更して、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理を行う制御手続き機能を有し、全てのまたは必要な範囲の粒子についての演算処理を自律的に実行することを特徴とする多体問題演算システム。
【請求項２】
請求項１に記載の多体問題演算システムにおいて、
ホスト装置と演算装置はそれぞれコンピュータにより構成されて、ホスト装置と演算装置とは外部バスにより接続され、
外部バスは、コンピュータのプロセッサを介さずにメモリとの間で直接的にデータ転送するＤＭＡ機能を有し、
演算装置は注目粒子を変更する毎に得られる演算結果を一時保持する一時記憶手段を有し、
前記ＤＭＡ機能により演算装置の一時記憶手段に保持された演算結果をホスト装置の記憶手段に外部バスを介して転送することを特徴とする多体問題演算システム。
【請求項３】
請求項２に記載の多体問題演算システムにおいて、
演算装置の制御手続き機能は、演算装置がホスト装置から提供された制御手順コードを実行することにより構成され、
演算装置は、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると制御手順コードの先頭アドレスに処理開始アドレスを再設定する制御レジスタ機能を有していることを特徴とする多体問題演算システム。
【請求項４】
請求項２又は請求項３に記載の多体問題演算システムにおいて、
演算装置は、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると外部バスを介して割込み処理により演算処理の終了をホスト装置へ通知する通知機能を有し、
ホスト装置は、割込み通知に応答して、演算された粒子間相互作用力に基づいて粒子の座標を演算して更新し、更新された粒子データを外部バスを介して演算装置に提供して粒子間相互作用力の演算処理を再度行わせることを特徴とする多体問題演算システム。
【請求項５】
多数の粒子に係る粒子データに基づき、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して、粒子間の相互作用力を全てのまたは必要な範囲の粒子について演算する多体問題用の演算装置において、
粒子データ中で注目粒子を順に変更して、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理を行う制御手続き機能を有し、全てのまたは必要な範囲の粒子についての演算処理を自律的に実行することを特徴とする多体問題用演算装置。
【請求項６】
請求項５に記載の多体問題用演算装置において、
制御手続き機能は、制御手順コードを実行することにより構成され、
更に、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると制御手順コードの先頭アドレスに処理開始アドレスを再設定する制御レジスタ機能を有していることを特徴とする多体問題用演算装置。
【請求項７】
多数の粒子に係る粒子データに基づき、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して、粒子間の相互作用力を全てのまたは必要な範囲の粒子について演算する多体問題用の演算装置をコンピュータにより実現するプログラムにおいて、
粒子データ中で注目粒子を順に変更して全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理を行う制御手続きを、全てのまたは必要な範囲の粒子についての演算処理をコンピュータにより自律的に実行させることを特徴とする多体問題用演算プログラム。
【請求項８】
請求項７に記載の多体問題用演算プログラムにおいて、
制御手続きは制御手順コードを実行することにより実行され、
全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると制御手順コードの先頭アドレスに処理開始アドレスを再設定する制御レジスタ機能をコンピュータに実現することを特徴とする多体問題用演算プログラム。
【請求項９】
ホストコンピュータと、ホストコンピュータに接続された演算コンピュータとにより、多数の粒子に係る粒子データに基づいて、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して、粒子間の相互作用力を全てのまたは必要な範囲の粒子について演算する多体問題演算方法において、
ホストコンピュータが、多数の粒子に係る粒子データを演算コンピュータに提供し、
演算コンピュータが、粒子データに基づき、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して粒子間の相互作用力を演算し、更に、注目粒子を変更設定して演算を繰り返すことにより全てのまたは必要な範囲の粒子について演算して、当該演算結果をホストコンピュータへ提供する自律的処理を行うことを特徴とする多体問題演算方法。
【請求項１０】
請求項９に記載の多体問題演算方法において、
演算コンピュータは、注目粒子を変更する毎に得られる演算結果をメモリに一時保持し、
ホストコンピュータと演算コンピュータとを接続する外部バスに備えられるコンピュータプロセッサを介さずにメモリとの間で直接的にデータ転送するＤＭＡ機能が、演算コンピュータのメモリに一時保持された演算結果をホストコンピュータのメモリに転送することを特徴とする多体問題演算方法。
【請求項１１】
請求項９又は請求項１０に記載の多体問題演算方法において、
演算コンピュータは、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると外部バスを介して割込み処理により演算処理の終了をホスト装置へ通知し、
ホストコンピュータは、割込み通知に応答して、演算された粒子間相互作用力に基づいて粒子の座標を演算して更新し、更新された粒子データを外部バスを介して演算コンピュータに提供し、
演算コンピュータは、更新された粒子データに基づいて粒子間相互作用力の演算処理を再度行う、処理を繰り返し行うことを特徴とする多体問題演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数の粒子に関して粒子間相互作用力を演算する多体問題の演算技術に関し、原子や分子等といった相互作用力としてクーロン力が働く粒子のみならず、一般的に多体問題として扱われる多数の粒子の挙動を解析するための技術に関する。
【背景技術】
【０００２】
液体や固体或いは高分子などの挙動を、それらを構成する多数の原子又は分子の動きの結果として考え、その動きを計算機でシミュレーションして研究する分野は分子動力学と呼ばれる。分子動力学では原子又は分子を粒子と考え、それらの粒子間に働く力を計算して、微小時間後の粒子の位置を計算し、この計算を繰り返し行って各粒子の軌跡を求め、その結果としての物質の性質などを計算する多体問題としての演算が行われる。
したがって、多体問題演算を行う分子動力学では、粒子間に働く相互作用力は必ず計算しなければならない物理量である。
【０００３】
例えば粒子間に働く相互作用力の一種であるクーロン力は遠方まで到達するため、演算対象となる系をなす全ての粒子について、全ての組み合わせの粒子対の粒子間に働く力を計算する必要がある。これは粒子数の二乗に比例した計算量を要することを意味しており、このような問題を多体問題と呼び、膨大な計算能力を必要とする。
このような多体問題を低コストで解決する技術としては、以下に説明するように、複数の演算装置を並列動作させる並列パイプライン機構を用いた多体問題演算処理装置が知られている（特許文献１参照。）。
【０００４】
図８には、汎用パーソナルコンピュータ（汎用ＰＣ）で構成されるホストコンピュータ９０に接続する多体問題演算装置の従来例を示してある。
演算装置９１はＰＣＩアドインカードという形態をとり、ホストコンピュータ９０のＰＣＩアドインカード用の外部バス９３に挿入して使用される。ホストコンピュータ９０は、汎用外部バスの一種であるＰＣＩバス９３ を介して、演算装置９１の制御ＬＳＩ９４に接続される。
【０００５】
制御ＬＳＩ９４は、外部バス９３および内部バス９５のバスコントローラ機能、粒子データメモリ９６とのインタフェース機能、粒子データ送出機能等を備え、ホストコンピュータ９０の指令を受けるためにレジスタを有している。
粒子データメモリ９６は、粒子の座標や電荷や粒子種などを含む粒子データを記憶するメモリＬＳＩである。
図示の例で４つ備えられる相互作用演算ＬＳＩ９７は、注目粒子の粒子データの１つ又は複数個を記憶するレジスタを有し、内部バス９５に乗せて転送される粒子データを読み込んで、その粒子と注目粒子との間に働く相互作用力を演算し、その累積値を結果レジスタに保持する機能を有している。
関数表メモリ９８は、相互作用力を計算するための関数ルックアップテーブルのデータを記憶する装置であり、相互作用演算ＬＳＩ９７に接続される。
【０００６】
上記のような従来の多体問題演算システムでは、図９に示すような手順で演算処理がなされる。
演算処理が開始されると、まず最初に相互作用力を計算するための関数ルックアップテーブル９８の設定などの初期化処理が行われ（ステップＳ１０１）、次にホストコンピュータ９０から粒子データメモリ９６へ計算対象の全ての粒子データが転送される（ステップＳ１０２）。そして、各々の相互作用演算ＬＳＩ９７に多数の粒子の内から基準となる注目粒子を設定する（ステップＳ１０３）。なお、各々の相互作用演算ＬＳＩ９７の結果レジスタのリセットなどを含むその他の計算条件の設定も行われる。
図示の例では、１つの相互作用演算ＬＳＩ９７に２つの注目粒子を設定でき、相互作用演算ＬＳＩ９７は４つあるので、同時に８つの注目粒子について各々の粒子間に働く相互作用力を計算できる。
【０００７】
そして、制御ＬＳＩ９４の粒子データ送出部から内部バス９５へ全ての粒子について粒子データを送出して、各々の相互作用演算ＬＳＩ９７による演算処理を行う（ステップＳ１０４）。各々の相互作用演算ＬＳＩ９７は、設定された注目粒子と内部バス９５から転送された粒子データとの粒子間相互作用力の計算を行い、結果レジスタに積算していく。この処理は、多体問題を解く演算を行う本質的なもので、本明細書では、以後この処理をＣＡＬＣ処理と呼ぶ。
ＣＡＬＣ処理に要する時間は計算対象の系の粒子数に比例し、例えば、1つ分の粒子データを送出する時間を１６０マイクロ秒として、粒子数が１００００個だった場合は、１６０マイクロ秒×１００００＝１．６ミリ秒の時間を要する。
【０００８】
このように、例えば、演算対象の系の全ての粒子数が１００００個である場合、全ての粒子と注目粒子との間の相互作用力を演算するには１．６ミリ秒を要するが、この時間はホストコンピュータ９０にとってポーリングして待つには長すぎる時間である。そこで、図示の例では、ＣＡＬＣ処理が終了したことを演算装置９１が割込によってホストコンピュータ９０に通知し（ステップＳ１０５）、ホストコンピュータ９０が割込通知に応答して各々の相互作用演算ＬＳＩ９７の結果レジスタの内容をＰＣＩバス９３を介して読み出す（ステップＳ１０６）。すなわち、この処理により、各々の注目粒子と当該系に含まれる他の全ての粒子との間の相互作用力を得ることができる。
【０００９】
上記の一連の処理は、演算対象となる系に含まれている或る粒子を注目粒子として設定し、他の全ての粒子との間の相互作用力を演算するものであるので、注目粒子をこれら他の粒子の変更設定して上記一連の処理を繰り返し行い（ステップＳ１０３〜Ｓ１０６）、この繰り返し処理を全ての粒子を注目粒子に設定した演算処理が終了するまで行う（ステップＳ１０７）。
ここで、以下の説明では、便宜的に、この繰り返しループ（ステップＳ１０３〜Ｓ１０７）を内側ループと呼ぶ。内側ループ１回の処理につき、図示の例では８個の注目粒子について計算できるので、粒子数が１００００個の場合は、１００００÷８＝２５０回もの回数で内側ループを繰り返し処理する必要がある。
【００１０】
演算対象の系に含まれる全ての粒子を注目粒子として変更設定して相互作用力が算出されると、ホストコンピュータ９０がこの演算結果を用いて各々の粒子について運動方程式を演算し、微少時間後の各粒子の座標位置を演算する（ステップＳ１０８）。
なお、ここまでの一連の処理は１ステップと呼ばれ、１ステップでは、演算装置９１が或る時間における系に含まれる全ての粒子間の相互作用力を演算して、ホストコンピュータ９０が微少時間後の各粒子の座標位置を演算する処理がなされる。
【００１１】
次のステップの演算を行う場合は、ホストコンピュータ９０により座標位置が更新された全粒子データを演算装置９１へ再度転送して（ステップＳ１０２）、上記一連の処理（ステップＳ１０３〜１０８）を、オペレータが必要とするステップ数（設定ステップ数）だけ繰り返して処理を終了する（ステップＳ１０９）。
ここで、以下の説明では、便宜的に、この繰り返しループ（ステップＳ１０２〜Ｓ１０９）を外側ループと呼ぶ。
【００１２】
外側ループを１回演算処理する理論的な所要時間は、内側ループを１２５０回処理する時間に運動方程式の計算に要する時間を加えた時間である。つまり、１．６ミリ秒×１２５０回＝２秒に運動方程式の計算所要時間を加えた時間となる。現在のパーソナルコンピュータの計算能力を持ってすれば、たかだか１００００個の粒子について運動方程式の計算に要する時間は１ミリ秒以下であるので無視するとしても、１ステップ分の理論的な演算所要時間は２秒となる。
【００１３】
なおここで、上記と同じ条件の下で実機による測定によれば、演算に要する実時間が２１００ミリ秒となって、約１００ミリ秒ほど余計に時間を要することが知られている。これは、ＰＣＩバス９３のアクセスに要するオーバーヘッド時間が主要因である。
以下、外部バスアクセスのオーバーヘッドについて、図９を参照して検討する。
ホストコンピュータ９０がＰＣＩバス９３にアクセスする処理は、ステップＳ１０１、Ｓ１０２、Ｓ１０３、Ｓ１０６である。その内、図１０中に示すように、ステップＳ１０１とＳ１０２はバーストデータ転送であるが、ステップＳ１０３とＳ１０６はランダムアクセスであり、これら処理ステップは全て内側ループに含まれる。
【００１４】
一般に、ＰＣＩバスに代表されるアドインカード用の汎用外部バスは、内部バスに比べて転送速度が遅く、外部バスの転送スループット速度は内部バスの数分の一程度と比較的速度比は小さい。これに加えて、外部バスのアクセスレイテンシー時間が長いため、外部バスのランダムアクセス速度は非常に遅くなり、その速度比は１／１０〜１／１００程度である。
つまり、図８及び図９に示した従来例では、内側ループの中に非常にアクセス速度が遅い外部バス９３を介したランダムアクセスが多く存在するため、１ステップ分の演算を行う間に大量のオーバーヘッド時間が生じていると考えられる。
【００１５】
オーバーヘッド時間は、上記の従来例では、演算所要時間理論値の２秒に対して１００ミリ秒であり、オーバーヘッドは全体の５％程度でしかないが、深刻な問題をはらんでいる。
すなわち、演算装置を構成する半導体集積回路の技術向上により、演算装置の速度が向上していくことを考えると、半導体集積回路の速度向上に比べて、汎用外部バスの速度は電気的性質や互換性の問題からなかなか向上しない。特に、スループット速度は向上しえても、レイテンシー時間の短縮は困難である。そのため、今後のトレンドは、ランダムアクセス速度と内部バスとの速度比はますます大きくなり、ランダムアクセスの不利益性は増大する一方であると予測される。
例えば、外部バス速度が同じまま、半導体集積回路の速度が１０倍になった場合、演算所要時間理論値は１／１０の２００ミリ秒となるが、オーバーヘッド所要時間は１００ミリ秒のままであり、オーバーヘッドの影響は５０％となってかなり深刻である。
【００１６】
また、ＰＣＩバス９３のランダムアクセスは、実時間を要するだけではなく、ホストコンピュータ９０のプロセッサ（ＣＰＵ）時間資源にも大きな悪影響を及ぼす。つまり、外部バス９３へランダムアクセスする間、ＣＰＵは他の処理を行うことができず、時分割マルチタスクシステムにおいて、他のジョブの処理効率を大きく低下させてしまうという問題がある。
また、一般に、最近のコンピュータアーキテクチャにおける割込処理は、パイプラインを乱し、キャッシュミスを誘発するため、ＣＰＵ演算効率において大きな不利益性がある。上記の従来例では、内側ループ１回につき１回の割込が発生するため、１ステップ分の計算で１２５０回もの割込を発生させ、それによりホストコンピュータ９０のＣＰＵ演算効率を低下させてしまうという問題がある。
【特許文献１】特開平５―８９１５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明は、多体問題演算の処理手順や装置構成を改良することにより、演算所要時間の短縮を実現することを目的としている。
より具体的には、本発明は、ホストコンピュータと外部バスで接続される多体問題用演算コンピュータにおいて、外部バスアクセスのオーバーヘッドを圧縮することにより、計算所要時間の短縮や、ホストコンピュータのＣＰＵ時間資源の使用効率の向上を実現することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の特徴は、演算装置に演算処理の制御手順を保持させて、ホスト装置から独立した形で自律的に粒子間相互作用力の演算処理を実行するようにしている。
本発明は、多体問題演算システム、多体問題演算システムを構成する多体問題用演算装置、多体問題用演算装置をコンピュータハードウエアにより実現するための多体問題用演算プログラム、多体問題演算システムにより実施される多体問題演算方法として実現される。
【００１９】
具体的には、本発明は、ホスト装置と、ホスト装置に接続された演算装置とを備え、ホスト装置から提供された多数の粒子に係る粒子データに基づき、当該粒子データ中で演算処理の対象基準となる注目粒子を設定して、演算装置が粒子間の相互作用力を全てのまたは必要な範囲の粒子について演算して当該演算結果をホスト装置へ提供する多体問題演算システムであって、  演算装置は、ホスト装置から提供された粒子データ中で注目粒子を順に変更して、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理を行う制御手続き機能を有し、全てのまたは必要な範囲の粒子についての演算処理を自律的に実行する。
したがって、注目粒子の設定処理を、上記の従来例のように１ステップ内でホスト装置によるランダムアクセスで繰り返し行うことなく、演算装置側で自律的に行うことができ、よって、オーバーヘッドを圧縮して演算所要時間の短縮を実現することができる。
全ての粒子について演算処理を行うのではなく、不要な部分を除いた必要な範囲についてだけ、演算処理を自律的に行う場合でも同様に演算所要時間を短縮できる効果がある。また、一部の特殊な条件の粒子についてのみホスト装置で演算し、残りの大部分について演算装置で自律的に演算処理する場合も同様の効果がある。
【００２０】
ここで、本発明では、ホスト装置と演算装置は専用機として構成してもよいが、それぞれコンピュータにより構成するのが好ましく、これらホストコンピュータと演算コンピュータとをＰＣＩバス等の外部バスにより接続する。そして、外部バスをコンピュータのプロセッサを介さずにメモリとの間で直接的にデータ転送するＤＭＡ機能を有したものとすることにより、演算コンピュータは注目粒子を変更する毎に得られる演算結果を自己の一時記憶手段に一時保持させるだけで、ＤＭＡ（Direct Memory Access）機能によりその都度の演算結果をホストコンピュータに転送することができる。
したがって、上記の従来例のように注目粒子を変更設定する毎にホストコンピュータが外部バスにランダムアクセスして演算結果を読出す処理を繰り返し行うことなく、ホストコンピュータにその都度演算結果を転送することができ、よって、ホストコンピュータのＣＰＵ時間資源の使用効率を向上させることができる。
【００２１】
また、本発明では、演算装置の制御手続き機能を、演算装置に専用の回路構成を備えたり演算装置のコンピュータハードウエアで実行する制御手順コードを予めもたせることで実現するようにしてもよいが、種々な多体問題の演算処理に容易に対応できるようにするために、ホスト装置が制御手順コードを外部バスを介して演算装置に提供して実行するようにするのが好ましい。そして、この場合、演算装置は、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理（すなわち、上記の１ステップ）が終了すると、制御手順コードの先頭アドレスに処理開始アドレスを再設定する制御レジスタ機能を有しているのが好ましく、これによって、ステップ毎に同じ制御手順が繰り返される多体問題の演算処理を演算装置が自律的に実行することができる。
【００２２】
そして、本発明では、演算装置は、全てのまたは必要な範囲の粒子を注目粒子とした粒子間相互作用力の演算処理が終了すると外部バスを介して割込み処理により演算処理の終了をホスト装置へ通知する通知機能を有し、ホスト装置は、割込み通知に応答して、演算された粒子間相互作用力に基づいて粒子の座標を演算して更新し、更新された粒子データを外部バスを介して演算装置に提供して粒子間相互作用力の演算処理を再度行わせる。このように、ホスト装置が提供した粒子データに基づいて演算装置が全てのまたは必要な範囲の粒子間についての相互作用力を演算し、当該演算結果に基づいてホスト装置が粒子データを更新して更に演算装置に相互作用力を演算させるという処理を、必要なステップ繰り返すことにより、粒子の挙動を解析して多体問題系の性質をシミューレートすることができる。
【発明の効果】
【００２３】
本発明によると、粒子間相互作用力を演算する演算装置が自律的に演算処理を行うようにしたため、演算装置とホスト装置との間の転送に起因するオーバーヘッドを圧縮して総じて演算所要時間の短縮を実現することができる。また、本発明によると、演算装置とホスト装置とを接続する外部バスのＤＭＡ機能を利用して演算結果の転送を行うようにしたため、ホストコンピュータにその都度プロセッサに負担をかけることなく演算結果を転送することができ、プロセッサの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００２４】
本発明を実施例に基づいて具体的に説明する。
図１には本実施例に係る多体問題演算システムの全体的な構成を示してあり、本実施例では、汎用ＰＣから構成されるホストコンピュータ１に、必要なプログラムを実行するＰＣＩ（Peripheral Component Interconnect）アドインカードとして構成された複数（図示の例では、４つ）の演算コンピュータ２を外部バスであるＰＣＩバス３を介して接続している。
なお、本実施例のシステムではホストコンピュータ１に複数の演算コンピュータ２を接続した構成としているが、演算処理の必要に応じて、演算コンピュータ２の数は１以上の任意に数でよい。また、演算コンピュータ２は、ホストコンピュータと同様に汎用ＰＣにより構成してもよい。
【００２５】
各演算コンピュータ（多体問題計算用ＰＣＩアドインカード）２は同じ構成であり、本実施例では、計算能力を向上させるために複数のアドインカード２を並列して使用している。
図１に１つのＰＣＩアドインカード２の構成を代表して示すように、アドインカード２は、ＰＣＩバスコントローラ４、制御ＬＳＩ５、ＳＤＲＡＭ６、内部バス７、４つの相互作用演算ＬＳＩ８を有している。なお、相互作用演算ＬＳＩ８は、必要とされる演算能力に応じて任意の数を備えればよい。
【００２６】
ＰＣＩバスコントローラ４は、ＰＣＩバス３を介してホストコンピュータ１と接続され、また、制御ＬＳＩ５にも接続される。
なお、上記の従来例では、制御ＬＳＩ９４がＰＣＩバスコントローラの機能も併せもっていたが、本実施例ではＰＣＩバスコントローラの機能を別のＬＳＩに分離して構成してある。これは、現行の汎用ＰＣＩバスの信号電圧は５Ｖが主流であり、ＰＣＩバスコントローラは５ＶトレラントのＩ／Ｏをもつ必要があるが、高速に動作する半導体集積回路は低電圧で動作するプロセスを使用しており、５Ｖ以上の耐圧を持つＩ／Ｏ回路を搭載することは高コストになるので、これを避けるためである。ＰＣＩバスコントローラ用の汎用ＬＳＩは低コストで入手可能であるため、高速動作が必要な部分とＰＣＩバスコントローラ部を分離してコスト削減を実現している。
【００２７】
制御ＬＳＩ５は汎用メモリデバイスであるＳＤＲＡＭメモリ６に接続されており、ＳＤＲＡＭメモリ６は粒子データ及び一連の制御手続きコードを記憶する。なお、本発明では、粒子データの記憶装置と一連の制御手続きコードの記憶装置とを別々の手段を用いて構成してもよい。
制御ＬＳＩ５は内部バス７にも接続されており、本実施例の内部バス７の信号レベルにはプリント配線基板上の部品間を接続する高速バス用ロジックレベルのＧＬＴ+（Gunning Transceiver Logic plus）を採用している。
【００２８】
内部バス７には４つの相互作用演算ＬＳＩ８が接続されており、各相互作用演算ＬＳＩ８は関数ルックアップテーブル（関数表）のサイズを圧縮して同じ半導体集積回路に組み込んだものとしている。つまり、本実施例の相互作用演算ＬＳＩ８は、上記の従来例にある相互作用演算ＬＳＩ９７と関数表メモリ９８を合わせたものと同等の機能を有している。
【００２９】
図２には、制御ＬＳＩ５の詳細な機能構成を示してある。
制御ＬＳＩ５は、外部インタフェースとして、ＰＣＩバスコントローラインタフェース１１、ＳＤＲＡＭコントローラ１２、内部バスコントローラ１３の３つを有している。
ＰＣＩバスコントローラインタフェース１１はＰＣＩバスコントローラ４との通信を行い、ＳＤＲＡＭコントローラ１２はＳＤＲＡＭメモリ６と接続されたバス制御を行って粒子データ及び制御手続きコードの転送を行い、内部バスコントローラ１３は内部バス７を介して各相互作用演算ＬＳＩ８と通信を行う。
【００３０】
制御ＬＳＩ５の制御部１４は、制御レジスタ１５、制御手続きコードデコーダ１６、ステートマシン１７を有しており、ホストコンピュータ１からＰＣＩバス３を介して制御レジスタ１５に送られる制御指令や、制御手続きコードデコーダ１６が解釈する一連の制御手続きコードに基づいて、ステートマシン１７によって制御が行われる。
【００３１】
制御ＬＳＩ５の手続きコードＦＩＦＯ（First In First Out）バッファ１８は、一連の制御手続きコードを一時的に記憶するバッファである。本実施例では、一連の制御手続きコードはＳＤＲＡＭメモリ６に記憶され、それをＳＤＲＡＭコントローラ１２が読み出して手続きコードＦＩＦＯバッファ１８に一時的に記憶し、制御部１４の制御手続きコードデコーダ１６に渡されて解釈実行される。
制御ＬＳＩ５の座標変換パイプライン１９は、指定したパラメータにより粒子データに含まれる粒子位置座標について変換を行う手段である。座標変換は、周期座標系における計算を行う、又は、斜交座標系を用いる場合に必要となる。なお、座標変換パイプライン１９は、このような座標変換を行う場合に設ければよい。
【００３２】
制御ＬＳＩ５の計算結果一時記憶手段２０は、内部バスコントローラ１３により内部バス７を介して読み出された相互作用演算ＬＳＩ８の演算結果を一時的に記憶する手段である。この一時記憶した演算結果は、ＰＣＩバスコントローラ４及びＰＣＩバス３を介して、ホストコンピュータ１に転送された後に計算結果一時記憶手段２０から消去される。なお、この転送処理はＰＣＩバス３のＤＭＡ機能により行われ、これにより、演算結果データの転送と演算処理とを並列して同時に行うことができる。
【００３３】
図３には本実施例の制御レジスタの一覧を示し、図４には本実施例の制御手続きコードの命令一覧を示してある。
図５には本実施例の多体問題演算処理（主に、演算コンピュータ２により行われる粒子間相互作用力の演算）の概要を示してあり、同図を参照して処理を具体的に説明する。なお、本実施例では、上記の従来例と同じ条件の多体問題を演算している。すなわち、１００００個の粒子を含む系を演算対象として、ホストコンピュータ１から演算コンピュータ２にこれら各粒子についての少なくとも座標、電荷、粒子種を含む粒子データを提供し、これら全てのまたは必要な範囲の粒子を順次注目粒子に設定変更して演算コンピュータ２が相互作用力を演算する。
【００３４】
演算処理が開始されると、まず、ホストコンピュータ１がＰＣＩバス３を介して演算コンピュータ２にバーストアクセスして、相互作用力を計算するための関数ルックアップテーブルの設定などの初期化処理を行う（ステップＳ１）。なお、この処理は従来例の処理（ステップＳ１０１）と同じ処理である。
次いで、ホストコンピュータ１がＰＣＩバス３を介して演算コンピュータ２にバーストアクセスして、一連の制御手続きコードをホストコンピュータ１からＳＤＲＡＭメモリ６へ転送する（ステップＳ２）。この転送はＰＣＩバス３のバースト転送で行われるため、効率よく行われる。
【００３５】
次いで、演算コンピュータ２の制御部１４が、制御レジスタ１５に一連の制御手続きコードを記憶している領域の先頭アドレス（ＳＣＣ）を設定する（ステップＳ３）。このようにＳＣＣレジスタの設定が行われると、手続きコードＦＩＦＯバッファ１８は、制御手続きコードをＳＤＲＡＭ６から読み出して記憶する処理を開始する。この制御手続きコードの読み出しは、ＳＤＲＡＭコントローラ１２により他のデータを転送していないアイドル時間を利用して行われる。
【００３６】
次いで、ホストコンピュータ１がＰＣＩバス３を介して演算コンピュータ２にバーストアクセスして、ホストコンピュータ１から演算コンピュータ２のＳＤＲＡＭ６に演算対象の全ての粒子データを転送する（ステップＳ４）。これは従来例の処理（ステップＳ１０２）と同じ処理である。
そして、ホストコンピュータ１がＰＣＩバス３にランダムアクセスして、演算コンピュータ２に制御手続きコードの解釈実行開始コマンドを発行する（ステップＳ５）。これにより、制御手続きコードデコーダ１６が手続きコードに基づいて制御処理を開始する。
ここで、ステップＳ３の処理において、手続きコードＦＩＦＯバッファ１８へのコード読み込みが開始されているので、このステップＳ５に至る時点には、十分な量のコードが先読みされているため、演算コンピュータ２は素早く手続きコードを解釈して実行することができる（ステップＳ６）。
【００３７】
一連の制御手続きコードの実行（ステップＳ６）において、ＳＴＯＰ命令が解釈実行されると、制御手続きコードの実行を停止して、処理が終了したことを割込信号によってホストコンピュータ１に通知する（ステップＳ７）。
そして、ステップＳ３と同様な処理を行って、制御レジスタ１５一連の制御手続きコードの先頭アドレスを設定して（ステップＳ８）、次の処理ステップ（微小時間後についての再演算）に備える。
また、ホストコンピュータ１に終了通知した時点では、後述するように、一時記憶手段２０とＰＣＩバス３のＤＭＡ機能とにより、全ての演算結果つまり全てのまたは必要な範囲の粒子に働く相互作用力のホストコンピュータ１への転送は完了しているので、割込を通知されたことに応じて、ホストコンピュータ１は転送された演算結果に基づいて、各々の粒子について運動方程式を解き、微少時間後の粒子の座標位置を計算する（ステップＳ９）。これは従来例のステップＳ１０８と同じ処理である。
【００３８】
上記の一連の処理で１ステップ分の計算処理が完了し、次のステップの演算を行う場合にはステップＳ４の処理に戻って繰り返す（ステップＳ１０）。すなわち、従来例と同様に、ホストコンピュータ１が新しく算出した粒子座標の粒子データをＳＤＲＡＭ６に改めて転送して、演算処理を繰り返し行う。そして、ステップＳ４からＳ９までの処理を、必要とするステップ数だけ繰り返し行って、必要なステップ数の演算が行われたときに処理を終了する。
ここで、次のステップの演算を行うときに、一連の制御手続きコードを再転送する必要はない。なぜならば、次のステップの制御手順は前のステップと同じであるため、ステップＳ２で既にＳＤＲＡＭメモリ６に記憶されたコードを再利用すればよいためである。
【００３９】
このように制御手順コードを再利用するには、制御レジスタＳＣＣに先頭アドレスを再設定すればよく、本実施例では、ステップＳ９の運動方程式を解く処理の前のステップＳ８の処理において、制御部１４が制御レジスタ１５の再設定を行う。このように運動方程式を解く処理の前に先頭アドレスの再設定をするのは、運動方程式を解く処理はすべてホストコンピュータ１のみで行われ、その間、ＳＤＲＡＭコントローラ１２はアイドル状態となるので、手続きコードＦＩＦＯバッファ１８への制御コードの先読みを効率よく行うためである。
【００４０】
図６には、上記ステップＳ２の処理でＳＤＲＡＭ６に転送する一連の制御手続きコードの実例を示してある。この一連の制御手続きコード処理について、多体問題演算用ＰＣＩアドインカード２の内の１を用いて演算する場合を例にして説明する。
この一連の制御手続きコードは、注目粒子の設定を行うＳＥＴＩ命令を８ワード、ＣＡＬＣ処理を行うＣＡＬＣ命令が１ワード、演算結果の転送を行うＷＲＳＬＴ命令が１ワードの合計１０ワードで、先に説明した従来例の内側ループと同等の処理を行う制御手続きコードである。
【００４１】
この１０ワードを、注目粒子に設定する粒子番号をカウントアップして１２５０回繰り返し、最後に実行を停止するＳＴＯＰ命令を１ワードをつけ加えて構成されるコード列が、本実施例で使用する一連の制御手続きコードである。したがって、全体サイズは１２５０１ワードである。
このコードは、先に説明した従来例において１ステップ計算する時にホストコンピュータが制御９４に与える制御命令に似た形をしており、サイズもほぼ同じである。ここで、従来例では一つ一つの制御命令を離散的にランダムアクセスで行うため、オーバーヘッド時間が多くなり、また、ホストコンピュータのＣＰＵ時間資源を浪費するのに対して、本実施例では、一連の制御手続きコードという形式で一括してバースト転送できるため、ＰＣＩバス３の転送効率がよく、オーバーヘッド時間が短くなってホストコンピュータ１のＣＰＵの負荷がほとんどない。
【００４２】
また、従来例では演算結果のホストコンピュータへの転送は、ホストコンピュータのＣＰＵがＰＣＩバスを介して読み出したのに対して、本実施例では、演算結果を転送するＷＲＳＬＴ 命令に基づいて、ＰＣＩバス３のバスマスタＤＭＡ機能を用いて行われる。バスマスタＤＭＡ転送は、ホストコンピュータ１のＣＰＵと独立した処理で行われるため、ＣＰＵに負荷がかからない。
また、現行のＰＣアーキテクチャでは、ＣＰＵによる読出しは必ずランダムアクセスとなりバーストアクセスが不可能であるため、従来例では演算結果転送は、必然的に速度が遅いランダムアクセスとなっていたが、本実施例では、バスマスタＤＭＡによってバーストアクセス転送するため転送効率がよい。
【００４３】
更に、本実施例では、各相互作用演算ＬＳＩ８から回収した演算結果を、いったん計算結果一時記憶手段２０に記憶してから、ホストコンピュータ１にバスマスタＤＭＡ転送している。これは、ＰＣＩバス３を介した演算結果転送において、制御ＬＳＩ５の要素の内で、ＰＣＩバスコントローラインタフェース１１と計算結果一時記憶手段２０の２つしか使用しないことを意味する。つまり、演算コンピュータ２は、ＰＣＩバス３を介した演算結果転送と同時に並行して、次の注目粒子に関する演算を行うことが可能となる。なお、本実施例では、計算結果一時記憶手段２０は制御ＬＳＩ５に実装したが、ＰＣＩバスコントローラ４や制御ＬＳＩ５のいずれか一方又は両方に実装してもよい。
このように演算結果転送と演算処理を同時並列処理することにより、図７に示すように、演算結果転送が完了するまで次の演算処理を始めることができない従来例に比べて、本実施例は、１ステップ全体の演算時間を演算結果転送に要する分だけ短くすることができる。
【００４４】
ここで、上記一連の制御手続きコードの例は、多体問題演算用ＰＣＩアドインカード２の内の１つだけ用いるものであるが、本実施例にある４つのカードすべてを使用した場合には、同時並列的に演算処理が行われるため、演算結果の転送も４つすべてで同じタイミングとなる。このような場合、従来例では、ホストコンピュータのＣＰＵが制御レジスタを用いてアクセスするため、あるカードから演算結果を転送している間は他のカードの制御を行うことができず、その間の待ち時間が無駄なオーバーヘッド時間となり、また、ＣＰＵの負荷も高くなる。これに対して、本実施例では、４つのカード各々がバスマスタＤＭＡ機能を用いて演算結果データを転送するため、無駄な待ち時間が発生せず、またＣＰＵの負荷もない。
【００４５】
上記のように制御手続きコードの解釈実行において、最後のＳＴＯＰ命令に到達すると処理を停止して、割込によってホストコンピュータ１に処理が終了したことを通知するが（ステップＳ７）、従来例では、ＣＡＬＣ 処理が終了する毎に割込通知を行っていたため、１ステップの演算当り１２５０回もの割込が発生したのに対して、本実施例では１ステップの演算当りに１回しか割込が発生しない。現行のＰＣアーキテクチャでは割込処理の応答時間は数十マイクロ秒とかなりオーバーヘッド時間が長く、また、ＣＰＵ時間資源の負荷も大きい。そのため、割込発生頻度の減少は、オーバーヘッド時間の圧縮及びホストコンピュータＣＰＵの負荷低減に大きく寄与する。
【００４６】
次に、一連の制御手続きコードのデータの流れについて説明する。
上記実施例では、まず、ホストコンピュータ１がＰＣＩバス３を介してＳＤＲＡＭメモリ６に一連の制御手続きコードを転送し、その後に、手続きコードＦＩＦＯバッファ１８を介して、制御手続きコードデコーダ１６が一連の制御手続きコードを解釈実行している。
本発明では、一連の制御手続きコードをホストコンピュータ１から転送する必要性は必ずしもなく、一連の制御手続きコードを予め固定化された記憶手段に用意して各ＰＣＩアドインカード２に設定してもよく、本発明の目的である外部バスアクセスのオーバーヘッド時間の短縮及び外部バスアクセスに関わるホストコンピュータの負荷の軽減を実現することができる。なお、固定化した制御手続きでは自由度が低く、多種多様な演算需要に応えることが困難であるので、上記実施例のように、一連の制御手続きコードをホストコンピュータ１から転送し、それを記憶する手段を外部バスより制御手続きコードデコーダに近い位置にけ、これにより、大きい自由度をもたせるようにするのが好ましい。
【００４７】
ここで、上記実施例では、粒子データを記憶装置する機能をもつＳＤＲＡＭメモリ６に一連の制御手続きコードも記憶する機能を兼ねてもたせ、これにより、一連の制御手続きコードを記憶するために別に記憶デバイスを用意する必要がなくなり、コスト上昇をおさえることができる。
これに対して、粒子データと一連の制御手続きコードを同じ記憶装置に格納すると、同時に両データにアクセス要求が発生した状況に対応するために、メモリデバイスをデュアルポート構成にするか、バス調停回路を設けてアクセス要求の衝突を避けるなどの対策をとる必要が生じて、複雑かつ高コストになるという問題が懸念される。
【００４８】
このような懸念に対して、上記実施例では、制御手続きコードは分岐命令を設けない構成とすることにより、コードの読み込みが必ず連続的に行われることを保証し、ＦＩＯＦＯバッファのような一次元バッファでも命令の先読みキャッシュができるようにした。また、これを利用してＦＩＦＯバッファ１８を制御手続きコードデコーダ１６の前段に設け、ＳＤＲＡＭメモリ６から一連の制御手続きコードを先読みする構成とした。
【００４９】
また、ＣＡＬＣ処理を実行している間でも、粒子データのアクセス要求が発生しない期間が必ず存在することがわかっている。なぜならば、座標変換パイプライン１９及び相互作用演算ＬＳＩ８は長いパイプラインで構成されるため、入力したデータが演算結果に反映するまである程度の時間を要するからである。つまり、ＣＡＬＣ処理において、最後の粒子データをＳＤＲＡＭコントローラ１２がＳＤＲＡＭメモリ６から読み出して座標変換パイプライン１９へ送出してから、しばらく時間が経過しないと演算が終了しない。この待ち時間の間は粒子データのアクセス要求がないアイドル期間である。
【００５０】
このアイドル期間を利用して、ＳＤＲＡＭコントローラ１２は、ＳＤＲＡＭメモリ６から一連の制御手続きコードを読み出し、ＦＩＦＯバッファ１８に先読みする。この構成により、通常のシングルポート構成のままで、バス調停回路を要することなく、粒子データ転送に影響を与えずに一連の制御手続きデータを転送することができ、複雑かつ高コストになる構成を回避することができる。
また、制御手続きコードに分岐命令がないことは、最後にＳＴＯＰ命令を置けば、必ず有限時間内に制御手続きの実行が終了する。つまり、無限ループによる暴走がありえないことを保証できる効果もある。
【００５１】
一連の制御手続きコードの先読みを始めるタイミングは重要である。なぜならば、ＳＤＲＡＭメモリ６に一連の制御手続きコードを転送する前に、先読みを始めてしまうと、ＦＩＦＯバッファ１８には、不正なコードが格納されることになるからである。
上記実施例においては、制御手続きコードの先読みを始めるタイミングは２つある。
１つ目は、制御レジスタ１５の１つであるＳＣＣにアクセスし、制御手続きコードの格納先頭アドレスを設定する時であり、アドレス設定と同時に先読みを開始することを指定でき、また、アドレス設定のみ行い先読みを開始しないことも選択できる。２つ目は、制御レジスタの１つであるＣＭＤにアクセスし、制御手続きコードの解釈実行開始を指示した時である。この時、制御手続きコードの先読みが始まってない場合は、即座に先読みを開始する。すでに先読みが始まっていた場合は、そのまま先読みを続行する。このような構成をとることにより、任意のタイミングで先読みを開始でき、処理の自由度が高くなった。
【００５２】
続いて、制御手続きコードのＳＴＯＰ命令により解釈実行を終了した後、再び制御手続きコードの解釈実行を再開する場合を考える。もし、ＳＴＯＰ命令の直後以降に解釈実行したい一連の制御手続きコードを予め格納してあれば、そのコードは既にＦＩＦＯバッファ１８に先読みされている。
そこで、上記の実施例では、解釈実行の再開という指令を設け、ＦＩＦＯバッファ１８に先読みされた制御手続きコードを解釈実行できるようにしている。これにより、既に先読みされた制御手続きコードを有効に活用でき、消費電力の点でも有利になる。
【００５３】
また、手続きコードの解釈実行を再開する場合でも、改めて一連の制御手続きコードをＳＤＲＡＭメモリ６に転送した場合は、ＦＩＦＯバッファ１８に先読みされた内容と、ＳＤＲＡＭメモリ６に記憶された内容とに不一致が生じて、解釈実行の再開という指令を用いると正常に動作しないことが懸念される。
そこで、上記の実施例では、制御レジスタの１つであるＳＣＣにアクセスした時に、必ずＦＩＦＯバッファ１８の内容が破棄されるようにして、改めてＳＣＣに制御手続きコードの格納先頭アドレスを設定することにより、問題発生を回避している。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施例に係る多体問題演算システムを示す図である。
【図２】本発明の一実施例に係る演算コンピュータの要部構成を示す図である。
【図３】本発明の一実施例に係る制御レジスタ一覧を示す図である。
【図４】本発明の一実施例に係る制御手続きコードの命令一覧を示す図である。
【図５】本発明の一実施例に係る多体問題演算処理の概要を示す図である。
【図６】本発明の一実施例に係る一連の制御手続きコードの具体例を示す図である。
【図７】本発明の一実施例と従来例との演算結果転送と演算処理との所要時間を比較する図である。
【図８】従来例に係る多体問題演算システムを示す図である。
【図９】従来例に係る多体問題演算処理の概要を示す図である。
【符号の説明】
【００５５】
１：ホストコンピュータ、  ２：演算コンピュータ（ＰＣＩアドインカード）、
３：外部バス（ＰＣＩバス）、  ４：ＰＣＩバスコントローラ、
５：制御ＬＳＩ、  ６：ＳＤＲＡＭメモリ、
７：内部バス、  ８：相互作用演算ＬＳＩ、
１４：制御部、  １５：制御レジスタ、
１８：手続きコードバッファ、  ２０：一時記憶手段、
【図１】
2005173824.tif 000003
【図２】
2005173824.tif 000004
【図３】
2005173824.tif 000005
【図４】
2005173824.tif 000006
【図５】
2005173824.tif 000007
【図６】
2005173824.tif 000008
【図７】
2005173824.tif 000009
【図８】
2005173824.tif 000010
【図９】
2005173824.tif 000011