PLAINセンターニュース第98号
page 1

数値シミュレーションエンジン

(3) 専用エンジンの開発過程

薄田竜太郎
理化学研究所 計算科学技術推進室

図1: 専用エンジン開発の流れ

 数値シミュレーション専用エンジンの開発の流れを図1に示します。この中で最も重要なのは専用エンジンに搭載するプロセッサーの開発です。プロセッサーの開発の流れを図2に示します。その後は汎用部品を使ったボードの開発と同様です。

図2: 専用エンジンプロセッサーの開発の流れ

 まず、数値シミュレーションの計算のうちどの部分を専用エンジンで行うことにするかを決めます。専用エンジンの機能を増やし過ぎますと、シミュレーションの計算速度は上がりますが、専用エンジンが複雑になり、開発のコストと時間が増えます。専用エンジンが必ず行う計算を増やし過ぎますと、その計算が必要ないシミュレーションに使えなくなります。

 専用エンジンの機能が決まりますと、それを実現するためのプロセッサーの機能、ボードの構成、ボードの枚数などを決めます。現在数値シミュレーション専用エンジンではプロセッサーは主にASIC(Application Specific Integrated Circuit)です。ASICはある用途のためだけに開発するLSIです。1つのプロセッサーに集積できる回路規模やプロセッサーの動作速度、入出力速度、消費電力などはその時点のLSI技術で決まります。コスト面からは1つのプロセッサーにできるだけ回路を集積した方が有利です。

 また、開発する専用エンジンと同じ機能をもつソフトウェアモデルを作ります。簡単のために、符合付き2ビット整数の加算を行う専用エンジンを開発するとしますと、ソフトウェアモデルは、

のようになります。ソフトウェアモデルが正しいかを検証するために、数値シミュレーションプログラムから専用エンジンを使うためのライブラリを作成します。 ライブラリはソフトウェアモデルを使って計算をします。このライブラリを使って数値シミュレーションプログラムを作成して、計算結果が正しいかを調べます。

 次にプロセッサーの回路をHDL(Hardware Description Language)で記述します。
符合付き2ビット整数の加算の回路をHDLで記述しますと次のようになります。

 

 この記述はHDLの1つであるVHDLを使っています。HDLで書かれた回路は合成ツールと呼ばれるソフトウェアを使って、ゲート回路に変換できます。この回路は簡単なのでHDLの記述とソフトウェアモデルは似ていますが、実際の回路ではHDLの記述はソフトウェアモデルより複雑な記述になり、信号のタイミングも考慮する必要があります。また実際のASICをHDLで完全に記述するにはASICベンダーのライブラリも必要です。

 回路の記述と並行して、HDLシミュレーターでプロセッサーの各部分の回路、全体の回路が正しく動作するか検証します。HDLシミュレーターはHDLで書かれた回路の動作をシミュレートするソフトウェアです。回路内部の各信号の波形を見ることができます。HDLでは回路への入力信号をファイルなど外部から入力し、回路の出力信号を外部へ出力するような記述ができます。ソフトウェアモデルとHDLで書かれた回路に同じ入力を与え、ソフトウェアモデルとHDLシミュレーターの出力が一致するかどうかを調べます。HDLシミュレーターの動作速度は実際の回路に比べて非常に遅いので、実際のシミュレーション計算のような長時間の回路の動作をシミュレートことはできません。シミュレートできる数の入力パターンでできるだけいろいろな場合を検証できるように入力パターンを作ります。ASICの開発ではこの検証過程が最も重要です。ASICを製造した後で実際の回路が正しく動かないことがわかった場合、原因を特定するのに時間がかかり、もう1度製造し直すのにもコストと時間がかかるからです。

 HDLシミュレーターでプロセッサーの回路全体が正しく動きましたら、ASICの場合はHDLで書かれた回路をASICベンダーに引き渡し、この段階からプロセッサーの製造までは通常ASICベンダーが行います。

 プロセッサーができますと、それを搭載するボードを製作し、プログラムが専用エンジンにアクセスするためのデバイスドライバとライブラリを作成します。これは汎用部品を使ったボードの製作の場合と同様です。ライブラリはプロセッサーのソフトウェアモデルの検証のために作成したものと同じ機能をもち、ソフトウェアモデルを使って計算する代わりにデバイスドライバを使って専用エンジンにアクセスして計算するように書きます。

 専用エンジンが正しく動作しない場合、専用エンジン内部で最も複雑な部分であるプロセッサー内部の信号は調べることができません。正しく動作しない場合のプロセッサーへの入力パターンを特定し、HDLで書かれたプロセッサーの回路に同じ入力を与えてHDLシミュレーターでプロセッサー内部の信号を調べます。

 専用エンジンに向いている数値演算の条件は2つあります。1つは単純な処理の繰り返しが計算時間全体の大部分を占めていることです。単純な処理の繰り返しは単純な回路で行えるので、専用エンジンの開発のコストと時間が少なくてすみます。また、大部分を占める処理を高速に行うと、計算時間全体を短くできます。重力多体シミュレーション専用エンジンと分子シミュレーション専用エンジンの場合は質点や粒子の間に働く力の計算を専用エンジンが行います。
これらの計算はこれらの計算は単純な演算の繰り返しでシミュレーションの計算時間の大部分を占めています。さらに重力多体シミュレーションや分子シミュレーションでは系やアルゴリズムが違っても質点や粒子の間に働く力を計算することは共通ですので、いろいろなシミュレーションに同じ専用エンジンを使うことができます。もう1つの条件はその処理を専用エンジンで行った場合、ホストと専用エンジンの間の通信データ量が少ないことです。専用エンジンはホストの外部バスに接続されます。外部バスの通信速度はホスト内部や専用エンジン内部のバスよりも遅いので、通信データ量が多いと専用エンジン自体の計算が速くても、全体の計算速度は遅くなります。重力多体シミュレーション専用エンジンや分子シミュレーション専用エンジンの場合は、ホストと専用エンジンの通信データは専用エンジンが力を計算するために必要な質点や粒子の
位置と専用エンジンが計算した力などです。これらの通信データ量は(質点数×座標3成分)や(粒子数×座標3成分)で質点数や粒子数が増えても通信データ量が急激に増えることはありません。

 将来も数値演算の用途によっては専用エンジンが汎用CPUより有利であり続けるかどうかは2つの点にかかっていると思われます。1つは汎用コンピューターの外部バスの通信速度がどのように上昇していくかです。専用エンジンの計算速度が汎用CPUより常に速くても、専用エンジンを接続する外部バスの速度があまり上昇しないと、将来、計算時間全体の大部分がホストと専用エンジンの間の通信にかかるようになり、専用エンジンの利点がなくなります。標準的な外部バスを使わない方法で専用エンジンをホストに接続するようにしますと、全体の計算時間は外部バスの通信速度とは無関係になりますが、標準的でない製品や開発環境を使うことになります。その結果、専用エンジン開発のコストと時間が増え、専用エンジンの利点が損なわれます。外部バスの通信速度が十分上昇していけば、ホストと専用エンジンの間の通信に時間がかからないので専用エンジンは汎用CPUより有利であり続けます。もう1つは回路規模の大きいLSIを開発するための技術がどうなるかです。専用エンジンのプロセッサーの性能を向上させるために回路規模を大きくしますと、HDLシミュレーションにかかる時間が長くなり、開発期間が長くなります。この点については、よりプログラムに近い記述をゲート回路に変換する合成ツールが実用的になることで解決すると思われます。回路をよりプログラムに近い形で記述しますと、プログラムの実行速度に近い、より高速でシミュレートできます。合成ツールが最適なゲート回路に変換するのは逆に難しくなり、同じ機能の回路をゲート回路に近い形で記述した場合よりも、規模が大きく動作速度が遅い回路に変換されます。しかし、それによる性能低下は、1つのLSIに集積できる回路規模の増加や回路の動作速度の上昇で十分補えます。



この号の目次へ

DARTS 事業終了
0
Mail to CPISPLAINnews HOME
この号の目次へ

印刷用PDF
(108kb/4ページ)

第99号へ
第97号へ
バックナンバー一覧へ
著者一覧へ