(57)【特許請求の範囲】
【請求項２】
複数の成分からなるデータを記憶するデータ記憶装置と、重要度の高い成分を選別する重要成分選択装置と、各成分に関してプログラムされた演算処理を行う演算処理装置とで構成されており、重要成分選択装置はある成分の重要度とそれがどの成分であるかを表す成分識別子を一組として、その複数組を重要度が高いものから順位付けして記憶する機能と重要度が最も高い成分の成分識別子を優先して出力する機能とを備え、演算処理装置は重要成分選択装置が指し示す重要度の高い成分に関係する成分について演算処理し、その結果に従ってデータ記憶装置の成分のデータを更新するとともに、変更された成分に関する重要度を再評価して、その更新値を重要成分選択装置に送出する機能を備えるものであって、その重要成分選択装置において、複数個のレジスタと各レジスタに付属する比較器と、レジスタへのデータ入出力と各レジスタ間のデータのシフト動作を制御する制御回路を備え、各レジスタのデータは重要度データと成分識別子を含み、重要度の大きさの順にデータを整列して保持するとともに、最重要データを出力し、その最重要データが読み出されると、残りの各データの重要度の順位を１つ上げる機能を備え、各比較器は対応する各レジスタの重要度データ部と入力データの重要度データ部とを大小比較するとともに、対応する各レジスタのデータの成分識別子と入力データの成分識別子とを一致比較し、入力データ制御回路はその比較結果を基に、成分識別子について入力データと同じものがどのレジスタにも存在しない場合は、入力データよりも重要度が高いデータと低いデータとの間の順位に入力データを追加挿入し、入力データの成分識別子と同じ成分識別子を保持するレジスタが存在し、かつ、そのレジスタの重要度データが入力データの重要度よりも低い場合は、そのレジスタのデータを削除するとともに、入力データよりも重要度が高いデータと低いデータとの間の順位に入力データを挿入することを特徴とする重要成分優先計算方式ならびに装置。
【請求項３】
上記第２項の重要成分選択装置において、各レジスタの重要度データ部のデータに対して演算処理を実行する演算回路を付加したことを特徴とする重要成分優先計算方式ならびに装置。
【請求項４】
複数の成分からなるデータを記憶するデータ記憶装置と、重要度の高い成分を選別する重要成分選択装置と、各成分に関してプログラムされた演算処理を行う演算処理装置とで構成されており、重要成分選択装置はある成分の重要度とそれがどの成分であるかを表す成分識別子を一組として、その複数組を重要度が高いものから順位付けして記憶する機能と重要度が最も高い成分の成分識別子を優先して出力する機能とを備え、演算処理装置は重要成分選択装置が指し示す重要度の高い成分に関係する成分について演算処理し、その結果に従ってデータ記憶装置の成分のデータを更新するとともに、変更された成分に関する重要度を再評価して、その更新値を重要成分選択装置に送出する機能を備えるものであって、そのデータ記憶装置において、複数個の成分データの一つ一つに対して複数個の候補値データを保持し、演算処理装置ではその複数個の候補値の統計量をその成分の代表値とみなして各成分データについてプログラムで指定された演算処理を行い、各成分データの新しい更新値を算出し、その更新値と最も大きく異なる候補値をその更新値で置き換えるとともに、成分データの複数個の候補値のばらつきの大きさをその成分データの重要度とみなして、重要成分選択装置において候補値のばらつきの大きさの順位に基づいて重要成分を選択することを特徴とする重要成分優先計算方式ならびに装置。
【発明の詳細な説明】
【技術分野】
【０００１】
高速なディジタル計算によるシミュレーション、特に、主として局所的相互作用が重要となる物理モデル、ネットワーク上の信号伝搬、高分子の立体構造予測などを対象とした高速シミュレーションを低コストで効率よく実行するための装置に関するものである。
【背景技術】
【０００２】
従来、物理現象や社会現象など多数の成分からなるシステムのシミュレーションにおいては、システムの時間変化やエネルギー最小化、自己矛盾性の緩和などを計算するために、すべての成分の状態値とそれに関する条件式や状態遷移式を順番に逐一計算し、それを何度も繰り返して、状態値を少しずつ更新することにより、正しい数値を求めることを行なっていた。そのため、全成分数のべき乗に比例する程の計算時間を要し、成分数が膨大になると計算時間がかかり過ぎて結果を得る事が困難になるという欠点があった。
【０００３】
特に、物理系の時間変化のシミュレーションの場合には、一つの時刻における全ての状態値を決めるためだけでも、エネルギー最小化や自己矛盾性の緩和計算が要求され、各状態値の修正計算を何度も繰り返して行なう必要があった。そのような計算を各時刻毎に繰り返し計算するため、膨大な計算時間を要した。全ての成分が大きく変動するようなシステムであったり、非常に精密な計算結果を得るためのものである場合など、どうしてもそれだけの計算時間が必要となることもあるが、そうではない場合においてさえも、従来の計算方式ではいつも同じ程度の計算時間を要するという欠点があった。
【０００４】
探索や最適化問題の計算機による解法においては、分枝限定法のように、成分の全てを順番に計算せずに、計算の優先順位を表す成分リストを設けて、このリストに従って計算を進める手法がある。しかし、この手法は正確な演算を目指したもので、成分データの計算過程と優先順位リストの更新はソフトウェアのアルゴリズムとして逐次的に処理されるため、リストの更新に時間がかかり、その分、全体の処理時間も長くなるという欠点があった。また、このようなソフト的な工夫を前述の物理シミュレーションのように各成分の演算処理が比較的単純な場合に適用しようとすると、各成分の演算処理コストに比べて優先順位の計算にかかるコストの比率が大きく、計算効率があまり改善されないという欠点があった。なお、本発明の類似技術分野においては、例えば特許文献１の並列計算機システムのように、複数の演算装置の処理内容を制御するためにスケジューラ計算機を設ける発明がなされているが、負荷分散のための発明であるため、シミュレーション計算の各成分の計算を細かく振り分ける処理には適用できない。また、特許文献２のソート装置のように、データの整列をハードウェアで高速に行う装置がすでに発明されているが、各データを重要度によって再整列する仕組みがなく、本発明の目的では使用できない。
【特許文献１】
特開平１１−３３２１号公報
【特許文献２】
特開平１１−３０５９９３号公報
【発明の開示】
【発明が解決しようとする課題】
［０００５］
例えば、実際の物理現象や社会現象などでは、ある時刻においてほんの一部の成分のみが変化し、それ以外の大多数の成分はほとんど変化しない場合がある。また、もともとシステム内外のノイズが大きい場合や、外部条件が種々雑多で統計的、確率的に取り扱うべき場合など、もともとの数値データの精度が低いものに対して必要以上に精密な計算をすることが無意味な場合もある。このような場合、従来技術の計算処理においては最終結果にあまり影響を与えないような無駄な計算の繰り返しが多く含まれていた。本発明はこのような無駄な計算を省き、シミュレーション計算を低コストで効率よく行なうためのものである。
【課題を解決するための手段】
［０００６］
本発明では計算の重要度の高い成分を選択し、重要度の高い成分から優先的に計算を行い、計算対象となった成分の重要度を再評価して、その結果をその後の重要成分の選択に反映させる。重要度の低い成分に対する計算は後回しにするか、または一定の基準で無視することにより、できるだけ早く効率よく概算結果を獲得し、その後は必要に応じて時間をかけて計算精度を向上させる。
【０００７】
そのため、各成分の値の計算以外に各成分の重要度を計算する過程を加え、それを処理するための専用装置として重要成分選択装置を設け、その装置によって各成分をその重要度に応じて順位付ける。また、各成分の状態値の計算においては重要成分選択装置の指示する最重要成分を優先して計算処理を行なう。各成分の状態値の計算を独立に行なってもよいとする計算モデルに対しては、一つの共有メモリにアクセスできる複数個の演算処理装置を設け、演算処理を同時並列化し、さらなる高速化を実現する。なお、演算処理装置と重要成分選択装置とはそれぞれ同時並列に動けるようにしておく。演算処理装置は一つの成分に関する処理が終わるとすぐに次の重要成分を読み出してその処理を実行するようにしておく。重要成分選択装置もその内部処理は独立に動作できるようにしておく。応用事例によっては、一つの成分のみが連続して最重要成分となってその計算処理が繰り返されることを防ぐために、重要度の更新において一定の時間遅れを設定したり、可変に調整できるようにしておく。
【０００８】
重要成分選択装置において最高速の処理を要求される計算モデルに対しては、重要成分の順位付け計算をハードウェアで実現する。具体的には、データの重要度を表す重要度データ部とそれがどのデータのものであるかを指し示す成分識別子を保持するレジスタを設け、それを複数個、上位から下位へ順番に並べる。各レジスタは隣接レジスタ同士でデータをシフトできるようにしておく。また、各レジスタに付属する比較器を置き、各レジスタのデータと入力データを同時に比較して、その結果に従って入力データを重要度の順位を満たす位置に挿入する。ただし、入力データの成分識別子と同じものがすでに記憶されている場合には、入力データの重要度の方が記憶されているものより大きい場合のみ挿入され、重要度の値が低いデータは削除する。初期値として整列した状態に設定しておけば、その後に順次入力されるデータは常に重要度の順位に整列して保持される。また、同じ成分識別子のデータが2個以上記憶される事はない。このハードウェアを使えば、入力データの挿入動作と出力動作を１マシンサイクルで同時に処理できるので、重要度によるデータの整列を高速に実行することができる。
［０００９］
重要成分選択装置において、重要度の高いデータは次々に出力されて処理され、重要度の低いデータは最下位レベルの方向へ押し出されていくが、重要度が中程度のデータが長い期間残留し、なかなか演算対象にならない場合が出てくる。そのような古いデータの残留を防ぐ必要がある場合には、各レジスタの重要度データに対する演算処理を施すことができる演算器を設ける。この演算器を利用して各データに対して一定値を加算またはビットシフトや乗算することにより、各データの順序関係を壊さないように重要度データを大きな値に書き換えると、古いデータの重要度が増して演算処理がなされるように調整できる。逆に重要度データを小さな値に書き換えることにより、古いデータをできるだけ早く消去するように調整することもできる。
［００１０］
変化の少ない成分に関する無駄な演算処理を省略するため、記憶装置において複数個の成分データの一つ一つに対して複数個の候補値データを保持するものとする。演算処理装置ではその複数個の候補値の統計量を代表値として成分データの値とみなし、各成分データについて計算処理を行ってその更新値を算出し、その更新値と最も大きく異なる候補値をその更新値で置き換える。この場合の統計量としては平均値や中央値などを用いる。そして、重要成分選択装置では候補値のばらつきの大きさをその成分データの重要度とみなして、候補値のばらつきの大きさの順位で重要成分を選択する。候補値のばらつきを重要度とみなす理由は、そのことによりシミュレーションにおいて成分データの値が十分に収束していない状況や時間変化が大きい状況を表すことができ、変動の少ない成分データよりも変動の大きい成分データの計算処理を優先させることができるためである。これにより、計算の最終結果に対して影響の少ない計算過程を省略することができ、より高速に概算結果を得ることが可能になる。
［００１１］
なお、一部の成分のみが重要度が高くなり、それらの計算処理に偏る可能性がある場合には、他の成分が大きな重要度をもつように調節する機能を入れておく。例えば、演算処理のプログラムの一部に、乱数によって選ばれた成分に大きな重要度を与えて重要成分選択装置に送る処理を加える方法、一定時間ごとに全成分を計算する処理を割り込ませる方法などを加えてソフトウェアで調整する。あるいは、重要成分選択装置において重要度をすべて一斉に最大値にセットし、そこに記憶されている成分の全てを順番に計算処理する方法などを用いる。
【発明の効果】
【００１２】
シミュレーションの対象となる物理現象や社会現象において、ノイズが大きいとか初期値依存性が小さいなど、高精度の演算を必要としない場合に、重要度の高い計算を優先して、無駄な計算を無視または後回しにすることにより、少ない計算資源で効率良く概算結果を得ることができ、計算時間が短縮され、計算コストが削減されるという効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態を示す基本ブロック構成図
【図２】第１の実施形態の動作の概要説明図
【図３】本発明の第２の実施形態を示す基本ブロック構成図
【図４】第２の実施形態の動作の概要説明図
【図５】本発明の第３の実施形態を示す基本ブロック構成図
【図６】第３の実施形態のためのデータ記憶装置の一例を示すブロック回路図
【図７】本発明の第４の実施形態である重要成分選択装置用ハードウェアの基本ブロック構成図
【図８】第４の実施形態の基本回路構成の具体例を示すブロック回路図
【図９】第４の実施形態の比較器の一例を示すブロック回路図
【図１０】第４の実施形態のバイパス配線用比較器の一例を示すブロック回路図
【図１１】第４の実施形態のバイパス配線の具体例による説明図
【図１２】第４の実施形態のバイパス配線方法の一例に関する説明図
【図１３】第４の実施形態のセレクタ・演算処理器の一例を示すブロック回路図
【図１４】第４の実施形態のセレクタ・演算処理器の制御信号と出力の関係表
【図１５】第４の実施形態のＰＵＳＨの動作例を示す説明図
【図１６】第４の実施形態のＰＯＰの動作例１を示す説明図
【図１７】第４の実施形態のＰＯＰの動作例２を示す説明図
【図１８】成分データの記憶と演算処理方法に関する本発明の第５の実施形態図
［図１９］成分データの記憶と演算処理方法に関する本発明の第６の実施形態図
［図２０］第６の実施形態における成分データと処理事項の関係の説明図
【符号の説明】
［００１４］
１１，２１，３１，４１，５１，６１  データ記憶装置
１２，２２，３２，４２，５２，６２  演算処理装置
１３，２３，３３，４３，５３，６３  重要成分選択装置
３４  メモリ入出力制御回路
３５  データ転送制御回路
３６  ＦＩＦＯバッファレジスタ
３７  書き込み制御回路
３８  記憶素子
３９  データセレクタ
４１０  レジスタ
４２０  データ整列制御回路
４２１  比較器
４２２  セレクタ・演算処理器
４２３  大小比較器
４２４  一致比較器
４２５  データセレクタ
４２６  演算処理器
４２７  出力セレクタ
【発明を実施するための最良の形態】
［００１５］
以下、本発明の実施の形態を図１〜図２０に基づいて説明する。
［００１６］
本発明の装置の第一の実施形態の基本ブロック構成図を図１に示す。また、各ブロックの動作の概要を図２に示す。本装置は主としてデータ記憶装置１１と演算処理装置１２と重要成分選択装置１３とで構成される。データ記憶装置１１は成分１から成分ＮまでのＮ個のデータを記憶する。演算処理装置１２は各成分に対応した処理内容を実行する。処理内容はプログラムで設定する。重要成分選択装置１３は、各成分の重要度とそれが１からNまでのどの成分のものかを表す成分識別子を記憶し、その中で最も重要度の高い成分を選択する機能を有する。重要成分選択装置１３に一つの成分の重要度と成分識別子が入力されると、その度に、重要度の大きさの順序に重要度と成分識別子を整列させる。この場合の処理は、一つの成分が入力される時にはその前にすでに入力された成分は整列している状態なので、重要度の大小関係を満たす位置を探してそこに挿入する処理となる。なお、この実施形態においては、成分識別子として成分番号を用いている。
【００１７】
本装置を動作させるには、まず各成分データに初期値を設定し、演算処理装置１２は初期化ルーチンを実行する。初期化ルーチンとしては全成分に関する演算を順番に逐次実行する方法、一部成分についてランダムに演算を実行する方法などにより、演算に必要な成分の値をデータ記憶装置１１から読み出し、各成分に関する演算処理を実行して、成分の更新値を求める。また、各成分の重要度を計算し、重要成分選択装置１３に各成分の重要度と成分識別子（成分番号）を入力する。そして、各成分の更新値をデータ記憶装置１１に記憶させる。
【００１８】
初期化ルーチンの代わりに、重要成分選択装置１３のM個のレジスタに各成分に対応する成分識別子と重要度データを初期値として代入しておいてもよい。それらの重要度全てに最大値を設定しておけば、初期値として設定した成分すべてが優先され、それらが成分識別子（成分番号）の並び順に従って順番に演算処理される。
【００１９】
初期化処理後の主要な実行処理内容の概要を図２に示す。演算処理装置１２はまず重要成分選択装置１３から重要度が最大の成分識別子（成分番号）を読出す。その成分番号をｉとすると、次に演算処理装置１２は成分ｉをデータ記憶装置１１から読み出し、成分ｉに関する処理を実行する。具体的処理内容は応用目的に応じて演算処理装置１２のソフトウェアとして最適なプログラムを組むことを可能としておく。この処理において、成分ｉのみならず、その他の一つ以上の成分、例えば成分ｊについても更新することができるものとし、更新する成分についてはその成分の重要度を計算する。この後、更新する成分に関して、その重要度と成分番号を重要成分選択装置１３に送出し、成分の更新値をデータ記憶装置１１に送出する。この一連の処理が終わると、直ちに重要成分選択装置１３から最重要成分を読み出して同様の処理を繰り返す。演算処理装置１２はこのループ処理をプログラムで設定された終了条件に達するまで続ける。
［００２０］
重要成分選択装置１３は演算処理装置１２によって最重要度の成分識別子（成分番号）が読み出されると、そのデータを削除し、その他の成分識別子の順位をそれぞれ一つ上げる。演算処理装置１２から重要度と成分番号の一組の入力データが入力されると、その度毎に重要度の順序に従うように整列させる。整列の順位がｋ番目のデータの重要度の値をＰ（ｋ）で表すと、整列によりＰ（ｋ）≧Ｐ（ｋ＋１）となっているので、入力データの重要度をＰｉｎとすると、Ｐ（ｋ）≧Ｐｉｎ＞Ｐ（ｋ＋１）となるｋ番目の位置を探し、ｋ＋１番目以降のデータのすべてについて順位を一つ下げて、入力データをｋ＋１番目におく。最下位のＭ番目にあったデータは捨てられる。ただし、もし記憶データの中に入力データの成分識別子と同じ成分識別子をもつデータがある場合は、両者の重要度を比較して、入力データの重要度の方が小さいときには挿入はしない。逆に入力データの重要度の方が大きいときには上述のように挿入し、記憶されていた方のデータは削除する。この入れ替えのため、記憶されていたデータよりも重要度の低いデータの順位は変わらない。
［００２１］
第２の実施形態を図３に、その主要な動作概要を図４に示す。第１の実施形態と異なる点は、データ記憶装置２１に成分データとともに各成分データが選択されたときに実行すべき処理事項を記憶させ、演算装置２２においてその情報を利用して実行処理内容を制御するようにしておく点である。こうすることにより、成分データの内容に応じて処理事項を適宜変更する必要がある場合に、効率良く演算処理が出来る。処理事項として記憶すべきデータは、例えば、同時に計算処理すべき他の成分データの識別子のリストであるとか、その成分が属するクラスの名称または識別子などである。
［００２２］
第３の実施形態を図５に示す。重要成分選択装置３３、演算処理装置３２、データ記憶装置３１についてそれぞれ複数個を並列化して、各装置が同時並行してそれぞれの処理を実行することで、全体の演算処理を高速化する。複数個の演算処理装置３２と複数個の重要成分選択装置３３との間のデータ転送はデータ転送制御回路３５によって制御する。また、複数個の演算処理装置３２と複数個のデータ記憶装置３１との間のデータ転送もメモリ入出力制御回路３４によって制御する。なお、演算処理装置３２を複数個にし、それぞれが、一つの共通の重要成分選択装置に時分割でアクセスするようにしてもよい。
【００２３】
データ転送制御回路３５の制御の方法としては様々な方法が適用可能である。例えば、データ転送制御回路３５にスイッチングマトリクスを利用し、任意の演算処理装置３２から任意の重要成分選択装置３３へデータ転送できるようにしておき、その接続の対応関係を適宜変更可能なようにしておく。ただし、演算処理装置３２から重要成分選択装置３３へデータ転送する場合のみ接続の組み合わせを替え、重要成分装置３３から演算処理装置３２へのデータ転送では常に同じ組み合わせの接続に固定しておいてもよい。逆に、演算処理装置３２から重要成分選択装置３３へのデータ転送の接続組み合わせを固定し、重要成分装置３３から演算処理装置３２へのデータ転送の接続の組み合わせを変化させてもよい。また、一つの重要成分装置３３への入力データが同時に多数集中する可能性がある場合には、各演算処理装置側にＦＩＦＯバッファレジスタを設置して、演算処理装置３２に無駄な待ち時間が生じないようにする。
【００２４】
メモリ入出力制御回路３４の制御は分散共有メモリのための入出力に関する従来技術を使用する。さらに、データの読出し効率を上げる場合には記憶装置のデータ出力をマルチポートにして異なる複数のデータを同時に出力できるように並列化する。このためのデータ記憶装置３４の実施形態を図６に示す。複数個の記憶素子３８のデータを複数個のデータセレクタ３９で同時並列に読み出せるようになっている。この場合、書込みデータは一時的にＦＩＦＯバッファレジスタ３６に保存し、その後書き込み制御回路３７によって順番に記憶素子３８に書込みを行なう。複数の演算処理装置から書込みデータが同時に多数集中する可能性がある場合には、さらに各演算処理装置側にＦＩＦＯバッファレジスタを設置して、演算処理装置に無駄な待ち時間が生じないようにする。
【００２５】
重要成分選択装置をハードウェアで実現する場合の第４の実施形態における重要成分選択装置の基本ブロック構成図を図７に示す。この装置はデータ整列制御回路４２０とｎ個のデータを保持するｎ個のレジスタ４１０とからなる。各レジスタ４１０のデータをＲ（1）、R（2）、・・・R（n）と表すと、データ整列制御回路４２０はデータに含まれる重要度が最も高いデータをR（1）に、次に高いデータをＲ（2）に、というように大小の順番に従って、データを整列してレジスタに保持する。入力データがある場合はデータ整列制御回路４２０に制御信号としてＰＵＳＨを入力する。入力データをＤｉｎと表すと、入力データＤｉｎの重要度ＰｉｎがR（ｎ）の重要度Ｐ（ｎ）より高ければ、適切なレジスタに入力データを挿入して、全体の大小の順序関係を保つようにレジスタのデータを並べ替える。また、出力からはＲ（1）のデータを読み出すことができる。読出しの場合にはデータ整列制御回路４２０に制御信号としてＰＯＰを入力する。すると、各データは順位を一つ上げ、R（ｋ+1）はＲ（k）へとシフトする。ただし、Ｒ（ｎ）に対しては重要度が最低の値、たとえば、全ビットに０を入力する。なお、番号が小さい程、重要度が高いので、番号が小さい方のレジスタを上位のレジスタ、番号が大きい方のレジスタを下位のレジスタとみなす。
【００２６】
データ整列制御回路４２０の詳細な構造を説明するため、ｎ＝４の場合の例を図８に示す。各レジスタ４１０に対応して比較器４２１とセレクタ・演算処理器４２２を備えている。制御信号は各回路ブロックを制御するレジスタ制御信号と比較制御信号と選択・演算制御信号とからなる。レジスタ制御信号はレジスタのデータ取り込みを制御する。レジスタｋに対応する比較器ｋは入力データＤｉｎとレジスタｋのデータＲ（ｋ）を比較して、その結果を出力する。セレクタ・演算処理器ｋはレジスタｋに保存すべきデータとして入力データＤｉｎ、レジスタのデータＲ（ｋ‐１），Ｒ（ｋ），Ｒ（ｋ＋１）の４つのいずれかを選択して出力することができる。どのデータを選択するかは比較器ｋ、（ｋ−１）、（ｋ＋１）の比較出力によって制御される。また、セレクタ・演算処理器ｋはＲ（ｋ）のデータに対して加減乗除、ビットシフト等の演算処理を施した値を出力する。
【００２７】
比較器４２１のさらに詳細な構成を図９に示す。入力データならびにレジスタに保持されるデータは重要度と成分識別子を含む。比較制御信号はデータに含まれる重要度と成分識別子の部分を抽出するための情報としてそれぞれのビット構成を設定するマスクデータを含み、大小比較および一致比較すべきデータを制御する。大小比較器４２３では入力データＤｉｎの重要度Ｐｉｎとレジスタｋのデータの重要度Ｐ（ｋ）を比較して、入力データの方が大きい場合、すなわちＰｉｎ＞Ｐ（ｋ）のときにＧ（ｋ）＝１を出力し、それ以外の場合にはＧ（ｋ）＝０を出力する。一致比較器４２４は入力データの成分識別子とレジスタｋのデータの成分識別子を比較して、両方が一致する場合にＳ（ｋ）＝１を出力し、それ以外の場合にはＳ（ｋ）＝０を出力する。また、上位の比較器のうち一つでもＳ（ｋ）＝１となる場合はＬＳ（ｋ）＝１を出力し、それ以外の場合はＬＳ（ｋ）＝０を出力する。そのため、Ｓ（ｋ）＝１の出力を下位の比較器すべてに伝達する回路が設けられている。すなわち、比較器（ｋ−１）の出力ＳＤ（ｋ−１）を比較器ｋの入力ＳＵ（ｋ）に入力し、その信号をＬＳ（ｋ）として出力するとともに、ＳＵ（ｋ）とS（ｋ）の論理和をＳＤ（ｋ）に出力して、下位の比較器（ｋ＋１）のＳＵ（ｋ＋１）に接続する。
【００２８】
レジスタ数が多い場合は、ＬＳ（ｋ）出力の下位比較器への伝播に時間がかかり、処理速度を低下させる原因になることがあるので、伝播時間を短縮するため、信号の伝播回路にバイパスを設ける。バイパス回路を使用する場合の実施形態を図１０に示す。3入力ＯＲの入力の一つには入力端子B（ｋ）を接続する。入力端子B（ｋ）には（ｋ−１）よりも上位の比較器ｈの出力ＳＤ（ｈ）を接続する。ＯＲの入力数を４以上にしてさらに上位の比較器と接続してもよい。
【００２９】
図１１はレジスタ数が１９個の場合に3入力のＯＲを利用したバイパス配線の実施形態を示す。ＬＳ（２）からＬＳ（１９）までの出力を生成するために論理素子ＯＲがＯＲ（１）からＯＲ（１８）まで１８個使用されている。ただし、最上位の比較器には上位からの入力はなく、ＯＲ（１）の入力Ｓ（０）は常に０に固定する。従って、ＯＲ（１）を省略してＳ（１）を直接ＯＲ（２）とＬＳ（２）に接続しても良い。バイパス配線については、全部のＯＲをほぼ３等分して、上位から約２／３の位置にあるＯＲ（１３）を３入力とし、この一つの入力に上位から約１／３の位置にあるＯＲ（６）の出力をバイパス配線として接続する。これにより、入力Ｓから出力ＬＳまでの最長論理段数は１８から１２へと短縮される。更に最長論理段数を低減するためには、ＯＲ（１）からＯＲ（６）までをブロックＢ（１，１）、ＯＲ（７）からＯＲ（１２）までをブロックＢ（１，２）、ＯＲ（１４）からＯＲ（１８）までをブロックＢ（１，３）とし、各ブロック内でバイパス配線を行なう。各ブロックを上位と下位のほぼ同規模のサブブロックに分け、ブロックの最下位と中間のＯＲを３入力としてそれぞれのすぐ上位のサブブロックをバイパスする配線を設ける。例えば、ブロックＢ（１，２）の場合、サブブロックＢ（２，３）とＢ（２，４）に分け、ＯＲ（９）とＯＲ（１２）を３入力としてそれぞれにＯＲ（６）の出力とＯＲ（９）の出力を接続する。ただし、最上位のサブブロックＢ（２，１）と最下位のサブブロックＢ（２，６）に対してはバイパス配線を設ける効果はほとんどないので省略している。サブブロックのバイパス配線を追加した結果、最長論理段数は８に改善される。
【００３０】
レジスタ数が更に多い場合には図１２に示すようにサブブロックＢ（ｉ、ｊ）内をさらにほぼ２等分してサブブロックＢ（ｉ＋１，２ｊ−１）とＢ（ｉ＋１，２ｊ）に分け、それぞれのバイパス線を設けることによりサブブロック内の最長論理段数は約半分に短縮される。この方法を一般的に適用して、最小のサブブロック内の論理段数をすべてＮｂ、サブブロックの階層数（すなわちバイパス線の階層数）をＭｈとすると、バイパス線の総本数が  ３（２Ｍｈ−１）−２Ｍｈ  で、最長論理段数が  ２Ｎｂ＋３Ｍｈ−２  で、レジスタ数が  ３Ｎｂ２（Ｍｈ−１）＋３（２Ｍｈ−１）−Ｍｈ  となる回路を構成する事が出来る。なお、図１１の場合はＮｂ＝２、Ｍｈ＝２であり、バイパス線の総数は５、最長論理段数は８、レジスタ数は１９である。
【００３１】
レジスタｋに対応するセレクタ・演算処理器ｋの詳細な構造を図１３に示す。レジスタｋに入力するデータを選択するデータセレクタ４２５とレジスタｋのデータＲ（ｋ）に演算処理を施してその結果を出力する演算処理器４２６とデータセレクタ４２５の出力と演算処理器４２６の出力のどちらかを選択する出力セレクタ４２７から構成されている。データセレクタ４２５は入力データＤｉｎ、レジスタのデータＲ（ｋ-1）、Ｒ（ｋ）、Ｒ（ｋ+1）の４つのいずれかを選択して出力する。選択・演算制御信号は出力セレクタ４２７の選択制御を行うとともに、加数、ビットシフト数などの演算パラメータを含み、演算処理も制御する。制御信号はデータを入力処理するＰＵＳＨ、データを出力処理するＰＯＰ、加算処理をするＡＤＤ、ＭＳＢ方向へのビットシフトＳＦＴＬ、ＬＳＢ方向へのビットシフトＳＦＴＲの５種類の動作を制御する。
【００３２】
セレクタ・演算処理器ｋの制御信号とセレクタ・演算処理出力の関係を図１４に表形式で示す。詳細条件として重要度と同一成分順位に関する条件により出力は異なる。各条件は比較器出力の組み合わせ論理で表される。ただし、記号＊は無条件または論理値としてのドントケアを表す。Ｋｓは入力データＤｉｎと同じ成分識別子のデータがレジスタに記録されている場合のレジスタ番号を表す。すなわちＳ（Ｋｓ）＝１である。入力データと同じ成分識別子のデータがレジスタに記録されていない場合はすべてのｋにおいてＳ（ｋ）＝０で、ＬＳ（ｎ）＝０となるので、便宜上、Ｋｓ＝ｎ＋１とみなしてよい。
［００３３］
ＰＵＳＨの場合、レジスタｋのデータＲ（ｋ）の重要度の値Ｐ（ｋ）よりも入力データＤｉｎの重要度の値Ｐｉｎが以下となる条件、すなわち、Ｐ（ｋ）≧Ｐｉｎの場合はＲ（ｋ）を変更する必要がないので、セレクタ・演算処理出力はＲ（ｋ）となる。この条件は比較器出力Ｇ（ｋ）＝０のみで表され、他の比較器出力には依存せず、Ｇ（ｋ−１）＝＊、Ｇ（ｋ＋１）＝＊、Ｓ（ｋ）＝＊、ＬＳ（ｋ）＝＊である。条件がＰ（Ｋ−１）≧Ｐｉｎ＞Ｐ（ｋ）かつｋ≦ＫｓというのはＤｉｎの挿入位置の条件である。すなわち、Ｇ（ｋ−１）＝０、Ｇ（ｋ）＝１、Ｇ（ｋ＋１）＝＊、Ｓ（ｋ）＝＊、ＬＳ（ｋ）＝０で表され、このｋに対してセレクタ・演算処理出力はＤｉｎとなる。条件がＰｉｎ＞Ｐ（ｋ−１）≧Ｐ（ｋ）かつｋ≦ＫｓというのはＤｉｎよりも重要度が低いデータで、かつ、Ｐ（ｋ）≧Ｐ（Ｋｓ）なので、Ｄｉｎの挿入により順位が一つ下がるＲ（ｋ）を意味しており、Ｇ（ｋ−１）＝１、Ｇ（ｋ）＝１、Ｇ（ｋ＋１）＝＊、Ｓ（ｋ）＝＊、ＬＳ（ｋ）＝０の条件で、一つ上の順位のＲ（ｋ−１）をＲ（ｋ）に代入するため、セレクタ・演算処理出力はＲ（ｋ−１）となる。また、ｋ＞Ｋｓの場合はＤｉｎを挿入してもＲ（Ｋｓ）が削除されるので順位が変わらない条件を表す。Ｄｉｎが挿入されない場合も順位は変わらないので、これは重要度の値によらず、Ｇ（ｋ−１）＝＊、Ｇ（ｋ）＝＊、Ｇ（ｋ＋１）＝＊、Ｓ（ｋ）＝＊、ＬＳ（ｋ）＝１の条件でセレクタ・演算処理出力はＲ（ｋ）となる。
［００３４］
ＰＯＰの場合、Ｐ（ｋ）≧Ｐ（ｋ＋１）≧Ｐｉｎ、すなわち、Ｇ（ｋ−１）＝＊、Ｇ（ｋ）＝０、Ｇ（ｋ＋１）＝０、Ｓ（ｋ）＝＊、ＬＳ（ｋ）＝＊の条件においてＲ（ｋ＋１）は入力データの影響を受けないので、Ｒ（１）の読出し後に順位が一つ上がり、Ｒ（ｋ＋１）はＲ（ｋ）に移動する。すなわち、Ｒ（ｋ）には一つ下位のＲ（ｋ＋１）が代入されるので、セレクタ・演算処理出力はＲ（ｋ＋１）となる。Ｐ（ｋ）≧Ｐｉｎ＞Ｐ（ｋ＋１）かつｋ＜Ｋｓ、すなわち、Ｇ（ｋ−１）＝＊、Ｇ（ｋ）＝０、Ｇ（ｋ＋１）＝１、Ｓ（ｋ）＝０、ＬＳ（ｋ）＝０の条件はＤｉｎを挿入する条件でセレクタ・演算処理出力はＤｉｎとなる。Ｐｉｎ＞Ｐ（ｋ）かつｋ＜Ｋｓ、すなわち、Ｇ（ｋ−１）＝＊、Ｇ（ｋ）＝１、Ｇ（ｋ＋１）＝＊、Ｓ（ｋ）＝０、ＬＳ（ｋ）＝０の条件はＲ（１）を読出してもＤｉｎが挿入されるので順位が変わらないことを表す条件で、セレクタ・演算処理出力はＲ（ｋ）となる。最後に、ｋ＝ＫｓすなわちＳ（ｋ）＝１またはｋ＞ＫｓすなわちＬＳ（ｋ）＝１の条件は他の条件によらず、この位置のｋでは上位においてＤｉｎの挿入があったとしても上位のＲ（Ｋｓ）が削除されるので、Ｄｉｎの挿入の有無にかかわらず、Ｒ（１）の読出し後に下位の順位を一つ上げるため、セレクタ・演算処理出力はＲ（ｋ＋１）となる。
【００３５】
演算処理はＲ（ｋ）に含まれる重要度Ｐ（ｋ）に対して施される。ＡＤＤは選択・演算制御信号に含まれる演算パラメータａをＰ（ｋ）に加算する。ＳＦＴＬはａビットだけＭＳＢ方向にビットシフトする。ＳＦＴＲはａビットだけＬＳＢ方向にビットシフトする。これらの処理により、重要度Ｐ（ｋ）の値を変化させ、記憶されたデータが出力される可能性を高めたり、あるいは逆に削除される可能性を高めることにより、古いデータが長時間にわたってレジスタに留まることを防止することができる。
【００３６】
次に、図７の重要成分選択装置の動作について以下に説明する。最初に全レジスタに一定値を記憶させ、新しいデータが入力されると、その入力データの重要度データと各レジスタの記憶データの重要度データとを即時に比較し、重要度データ部の値が入力データより大きいかまたは等しいレジスタの記憶データはそのままの状態とし、重要度データ部の値が入力データより小さいレジスタの記憶データはすべて下位方向へシフトさせ、記憶データが入力データより大きいレジスタ群と小さいレジスタ群との間に一つ空いたレジスタに入力データを挿入する。ただし、入力データの成分識別子と同じデータがレジスタに記憶されている場合にはこのレジスタに保持されている重要度が入力データの重要度より大きい場合には挿入されない。逆に入力データの重要度より小さい場合にはこのレジスタのデータを削除し、入力データを適切な位置に挿入する。同じ成分識別子のデータが重複して記憶されることはない。このようにして順次入力データを追加していくと、上位から下位へ重要度の高いものから低いデータへと整列して保持される。重要度が最高のデータは上位のレジスタから読み出され、その際、全レジスタを上位方向に一つシフトして、次に重要なデータを出力できるように準備する。入力データの挿入動作と出力動作を１マシンサイクルで同時に処理できるので、重要度によるデータの整列を高速に実行することができる。
【００３７】
このような場合の動作の具体例を図１５、１６、１７に示す。いずれも図１４の規則に従う。図１５はＰＵＳＨの場合で、入力データＤｉｎ（Ｐｉｎ＝６０）をＰ（３）＝６０とＰ（４）＝３３の間に挿入するため、ＤｉｎはＲ（４）に代入され、Ｒ（４）、Ｒ（５）はそれぞれＲ（５）、Ｒ（６）に移動する。Ｒ（６）の成分識別子５５５は入力データの成分識別子と同じで、重要度がＰ（６）＝１５と低いので、Ｒ（６）は削除される。Ｒ（７）、Ｒ（８）は変化しない。図１６は同じ入力データがあるときのＰＯＰの場合で、Ｒ（１）が読出された後に重要度が６０以上のＲ（２）、Ｒ（３）はそれぞれ順位を一つ上げる。Ｒ（４）の重要度Ｐ（４）＝３３は入力データより低いので、ＤｉｎがＲ（３）に挿入され、Ｒ（４）の順位は変化しない。Ｒ（５）も変化しない。Ｒ（６）は入力データの成分識別子と同じで重要度が低いので削除されるため、下位のＲ（７）、Ｒ（８）がそれぞれＲ（６）、Ｒ（７）に移動する。最下位のＲ（８）はデータがクリアされる。これは重要度が最小値０で、成分識別子がＮＵＬＬであることに相当する。図１７はＰＯＰの場合であるが、入力データの重要度がＰｉｎ＝７で、同じ成分識別子５５５を記憶するＲ（６）の重要度Ｐ（６）＝１５より低いので入力データが挿入される事はなく、Ｒ（１）の読み出し直後に全てのレジスタのデータが順位を一つ上げる。すなわち、ｋ＞１についてＲ（ｋ）はＲ（ｋ−１）に移動し、Ｒ（８）はクリアされる。
［００３８］
図１８は変化の少ない成分に関する無駄な演算処理を省略するための成分データの表現方式に関する説明図で、本発明の第５の実施形態を示す。データ記憶装置５１において、１つの成分に対して複数個の候補値データを保持しておく。例えば、ｉ番目の成分ｙ（ｉ）の候補値としてｘ（ｉ，１），ｘ（ｉ，２），．．．ｘ（ｉ，ｍ）のｍ個を保持する。演算処理装置５２では、この複数の候補値の代表値をｙ（ｉ）とみなして演算処理を行なう。代表値としてはｘ（ｉ，１），ｘ（ｉ，２），．．．ｘ（ｉ，ｍ）の統計量として、例えば、平均値、中央値などを用いる。演算処理はプログラムによって制御される。この演算処理の結果、ｙ（ｉ）の更新値としてｚ（ｉ）が得られると、候補値の中で更新値ｚ（ｉ）からもっとも距離の遠い候補値を更新値ｚ（ｉ）で置き換える。なお、更新された値を使って、再度代表値ｙ（ｉ）を計算しなおし、これをデータ記憶装置５１に記憶しておけば、次回の計算ですぐに利用できるので、計算効率が良くなる場合がある。
［００３９］
各成分の重要度としては、ｘ（ｉ，１），ｘ（ｉ，２），．．．ｘ（ｉ，ｍ）のばらっきの大きさを△ｘ（ｉ）と表し、これを成分の重要度とみなす。ばらつきの大きさとしては、例えば、候補値ｘ（ｉ，１），ｘ（ｉ，２），．．．ｘ（ｉ，ｍ）の最大値と最小値の差の絶対値ｍａｘ｛｜ｘ（ｉ，ｕ）−ｘ（ｉ，ｖ）｜｝や標準偏差などを用いる。成分データの候補値のばらつきが大きい成分は、演算処理による更新値の変動が大きい事を意味しており、シミュレーションなどにおいては成分データの値が十分に収束していない状況や時間変化が大きい状況を表している。ばらつきの大きさを重要度とみなす事により、変動の少ない成分データよりも変動の大きい成分データの計算処理を優先させて演算処理を進める事になる。これにより、変化の少ない計算過程を省略することができ、より高速に概算結果を得ることが可能になる。
【００４０】
重要成分選択装置５３で△ｘ（ｉ）が最も大きいとして成分ｉが出力されると、演算処理装置５２はプログラムに従ってｉ成分に関する演算処理を実行するが、必要に応じてプログラムによりｉ成分と関連性の深い他の成分についても演算処理を行い、これを更新する。他の成分として例えばｈ成分も演算処理すると、更新の結果としてｉ成分とｈ成分の候補値を更新するとともに、演算処理装置５２はｉ成分の重要度とｈ成分の重要度を重要成分選択装置５３に送る。演算処理装置は、一つの演算処理ループを終了すると、直ちに重要成分選択装置５３からその時点の最重要成分の出力を読み出して、次のループ処理に入る。もし重要成分選択装置５３の処理時間に遅れがあったとしても、それを待たずに実行できるようにしておく。
【００４１】
図１９は成分データの表現方式に関する説明図で、本発明の第６の実施形態を示す。成分ｉの値の変化に伴って、成分ｉに関して演算処理すべき内容が変化する場合に、各成分に付属する情報として処理事項の情報を各成分毎にデータ記憶装置６１に保持しておく。図１９においては、処理事項をａ、ｂ、ｃなどで表している。具体的には、例えば、成分ｉの処理事項ｈは成分識別子ｈを表しており、成分ｉに関する演算処理において参照する必要のある他の成分識別子である。この処理で成分ｈの値を更新してもよい。あるいは、成分２の処理事項ｄを成分2が属するクラスの名称または識別子名としてもよい。クラスに属している成分全てを同時に演算処理する必要があるときなどに用いる事が出来る。
【００４２】
応用例として、多粒子系の物理学的シミュレーションの場合を以下に説明する。ある一つの粒子の位置座標を一つの成分として表し、各粒子に働く相互作用がある一定距離以内の粒子のみに働く物理系とする。粒子が運動する空間を複数の領域に分割し、各領域をそれぞれ一つのクラスとする。例えば、空間が一次元の場合、図２０に示すように、長さＬの等間隔の５つの領域に分割し、各領域に位置する粒子をそれぞれクラスＣ（１）、Ｃ（２）， ．．．Ｃ（５）に属するとする。Ｃ（ｊ）の境界位置をｂ（ｊ）、ｂ（ｊ＋１）とし、粒子の位置座標がＹ（ｉ）で表されるとすると、ｂ（ｊ）≦Ｙ（ｉ）＜ｂ（ｊ＋１）ならば粒子が属するクラスはｉ∈Ｃ（ｊ）ということになり、一意に決定されるので、各クラスの所属粒子に関する情報は容易に決定でる。また、位置座標の更新により所属粒子を変更する事も容易である。この情報を記憶しておけば、あるクラスにどのような粒子が所属しているかがすぐにわかる。そこで成分ｉの処理事項として所属クラスＣ（ｊ）を記憶しておく。もし、相互作用が及ぶ距離がＬであるとすると、自分が属するクラスと隣り合うクラス以外のクラスに属する粒子との相互作用を計算する必要はなく、隣り合うクラスに属する粒子のみを考慮して計算すればよい。従って、最重要成分として成分ｉが演算処理される場合には、３つのクラスＣ（ｊ−１）、Ｃ（ｊ）、Ｃ（ｊ＋１）に属する成分のみを対象として計算すればよい。このことは三次元空間の場合にも拡張できる。その場合、粒子の三次元座標を表す三次元ベクトルを一つの成分とみなして処理する。
【産業上の利用可能性】
【００４３】
本発明を利用する計算処理問題としては以下の事例が考えられる。多数のパラメータを含むエネルギー関数を最小化するような最適化問題において準最適解を求める問題の数値解法。熱揺らぎのある溶媒中におけるタンパク質の一次構造から立体構造が形成されるフォールディングのシミュレーション。確率的変動のある大規模ネットワーク上の部分的信号伝搬のシミュレーション。以上のように、確率的な変動があっても、状態値が急激に発散することなく、最終的にある収束状態の付近に落ち着く傾向のあるシステムのシミュレーションを行なう場合に、効率良く、低コストで結果を得ることが出来る。
【図１】
0004310500.tif 000002
【図２】
0004310500.tif 000003
【図３】
0004310500.tif 000004
【図４】
0004310500.tif 000005
【図５】
0004310500.tif 000006
【図６】
0004310500.tif 000007
【図７】
0004310500.tif 000008
【図８】
0004310500.tif 000009
【図９】
0004310500.tif 000010
【図１０】
0004310500.tif 000011
【図１１】
0004310500.tif 000012
【図１２】
0004310500.tif 000013
【図１３】
0004310500.tif 000014
【図１４】
0004310500.tif 000015
【図１５】
0004310500.tif 000016
【図１６】
0004310500.tif 000017
【図１７】
0004310500.tif 000018
【図１８】
0004310500.tif 000019
【図１９】
0004310500.tif 000020
【図２０】
0004310500.tif 000021