(57)【要約】【課題】  演算処理装置を用いて数値計算を高速に実行し、汎用性を確保する。【解決手段】  レジスタファイルＲを有する複数の要素プロセッサＰ11〜ＰKMと、制御プロセッサ１４とを備えてなる演算処理装置１であって、複数の要素プロセッサの少なくとも二つの要素プロセッサは、予め異なるパラメータを受け取ってレジスタファイルに格納し、制御プロセッサから同報される同一の命令と同一のメモリアドレスとを受け取り、メモリアドレスに基づいて外部メモリから同一のデータをメモリーポートを通じて読み込み、同一のデータに対して同一の命令に応じて異なるパラメータに基づいて、論理演算または算術演算の少なくともいずれかを行なう。【選択図】        図２
2006039790.tif 000002
【特許請求の範囲】
【請求項１】
同一のメモリーポートを通じて外部メモリと通信可能な複数の要素プロセッサと、
該要素プロセッサに命令とアドレスとを送り、該要素プロセッサを動作させるための制御プロセッサと
を備えてなる演算処理装置であって、
前記複数の要素プロセッサのそれぞれは、論理演算器と算術演算器とレジスタファイルとを備えており、
前記複数の要素プロセッサのうちの少なくとも二つの要素プロセッサは、前記動作に用いる異なるパラメータデータを予め受け取って前記レジスタファイルに格納し、前記制御プロセッサから前記動作のために同報される同一の命令を受け取り、前記外部メモリから同一のデータを前記メモリーポートを通じて読み込み、該同一のデータと前記異なるパラメータデータとに対して、前記同一の命令に応じた論理演算または算術演算の少なくともいずれかの演算を行なうものである、演算処理装置。
【請求項２】
前記複数の要素プロセッサは、少なくとも二つの要素プロセッサをそれぞれが含む複数のグループにグループ化されており、該グループごとに共有メモリが備えられている、請求項１に記載の演算処理装置。
【請求項３】
前記外部メモリから前記レジスタファイルへの書き込みモードは、複数の要素プロセッサに対する同報モードと個々の要素プロセッサに対するランダムアクセスモードとを有し、
前記レジスタファイルから前記外部メモリへの読み出しモードは、個々の要素プロセッサに対するランダムアクセスモードを有する、請求項１に記載の演算処理装置。
【請求項４】
前記共有メモリから前記外部メモリへの読み出しモードにはランダムアクセスとグループをまたがった縮約を伴う読み出しモードとを有し、
前記外部メモリから前記共有メモリへの書き込みモードには、複数の要素プロセッサに対する同報モード、個々の要素プロセッサに対するランダムアクセスの転送モードを有し、
前記外部メモリから前記レジスタファイルへの書き込みモードは、グループ内の全ての要素プロセッサに対する第１同報モード、複数のグループ内の要素プロセッサに対する第２同報モードを有する、請求項２に記載の演算処理装置。
【請求項５】
前記命令にはベクトル命令が含まれており、該ベクトル命令のベクトル長は所定の範囲内において任意に指定可能なものである、請求項１〜４のいずれかに記載の演算処理装置。
【請求項６】
前記データには、１ビットの符号ビットと１１ビットの指数ビットと６０ビットの仮数部ビットとから構成される７２ビット長の浮動小数点形式のデータが含まれており、
前記算術演算器には乗算器と加算器が含まれており、
前記命令には、単精度乗算命令および倍精度乗算命令を有する乗算命令と、通常浮動小数点加減算命令およびモードビットを含むブロック浮動小数点加減算命令を有する加減算命令とが含まれており、
前記乗算器は、入力データが該乗算器へ入力される前に、該入力データの仮数部のバイアスを修正し、前記単精度乗算命令を受け取ると、乗算の演算結果を丸め処理によって２５ビットにし、前記倍精度乗算命令を受け取ると、乗算の演算結果に丸め処理を行なわないものであり、
前記加算器は、通常浮動小数点加減算命令を受け取ると、演算結果に丸め処理を行なって演算を行い、ブロック浮動小数点加減算命令を受け取ると、演算に用いる少なくとも二つの浮動小数点データのオペランドにより指定された入力のうち、前記モードビットで指定された側のソースオペランドに対応する入力における指数に合わせて他方のソースオペランドの指数をシフトして演算を行い、演算結果に対する正規化を行なわないものである、請求項１に記載の演算処理装置。
【請求項７】
前記丸め処理の少なくともいずれかが強制１丸め処理である、請求項６に記載の演算処理装置。
【請求項８】
前記レジスタファイルに対するアドレスの指定において、アドレスオフセットを用いた間接アドレッシングを行なうことができる、請求項１〜６のいずれかに記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの演算処理装置に関する。特に、本発明は、浮動小数点演算などの数値演算を行なう演算処理装置に関する。
【背景技術】
【０００２】
従来より、コンピュータの高速化が要望されている。特に計算負荷の高い科学技術シミュレーションなどの分野において、数値計算を高速に処理する演算処理装置が求められている。
【０００３】
従来のコンピュータは、殆どがフォン・ノイマン型コンピュータ（ストアードプログラム型コンピュータ）といわれるコンピュータである。このフォン・ノイマン型コンピュータにおいては、中央演算処理装置（ＣＰＵ）とメモリとの間のバンド幅（通信速度）が演算処理の性能を制限する。この制限はフォン・ノイマン・ボトルネックと呼ばれている。現在の半導体プロセス技術においては、ＣＰＵとメモリとの製造工程は互いに両立しにくいため、通常は、これらは異なる半導体集積回路によって実現され、ＣＰＵとメモリとの間のバンド幅が演算速度に与える影響が顕著となってきている。このため、フォン・ノイマン・ボトルネックの解消が試みられている。
【０００４】
フォン・ノイマン・ボトルネックを解消するために、本願発明者らは、汎用のホストコンピュータに専用計算機部を接続し、この専用計算機部で計算負荷の高い処理を行なわせるコンピュータシステムを開発し、ＧＲＡＰＥ（GRAvity PipE）と命名している。ＧＲＡＰＥは、粒子系のシミュレーション計算に特化した計算を行なう専用計算機部を有している。この専用計算機部には、粒子間の相互作用計算を効率よく行なうための演算をハードウエアによって実現したパイプラインを多数有している半導体チップが用いられる。また、この専用計算機部には、多数のパイプラインによって共有されるメモリユニットが備えられている。このような構成により、ＧＲＡＰＥは、小さな回路規模であるにもかかわらず、目的とする計算についてはスーパーコンピュータ以上の演算処理性能を有している（例えば、非特許文献１）。
【０００５】
また、フォン・ノイマン・ボトルネックを解消するための計算機として、ＦＰＧＡ（Field Programmable Gate Array）を用いた再構成可能計算機（リコンフィギャラブル・コンピュータ、ＲＣ）が用いられている。ＲＣを用いて高速に数値計算を行なう場合のコンピュータシステムの構成はＧＲＡＰＥと類似しており、ホスト計算機とＦＰＧＡボードとを用いる。ＦＰＧＡボードにはＦＰＧＡを用いて構成されたＦＰＧＡのネットワークと外部メモリとが搭載されている。
【０００６】
さらに、数値計算を効率よく行なうための計算機として、ＳＩＭＤ（Single Instruction Multiple Data）超並列計算機が用いられている。このＳＩＭＤ超並列計算機は、それぞれがローカルメモリとレジスタファイルを有するプロセッサユニットを複数集積したプロセッサチップを用い、このプロセッサチップを更に複数用いて処理を行なう。（特許文献１）。
【特許文献１】特開平５−１７４１６６号公報
【非特許文献１】Makino, J., Kokubo, E., and Taiji, M. (1993). HARP: A special-purpose computer for N-body simulations, Publ. Astron. Soc. Japan, 45, 349-360.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＧＲＡＰＥ型の計算機は、目的とする計算を高速に実現可能であるものの、パイプラインをハードウエアに実現する段階で扱える計算が限定されてしまい、汎用性が欠如してしまう。
【０００８】
ＲＣは、使用するＦＰＧＡ自体が再構成可能に構成されているので、回路規模が制限されており、また、動作速度が他のプロセッサに比べて高くできないという問題がある。また、通常の数値計算で用いられる倍精度浮動小数点演算をＲＣにより行なうと、計算速度が低下してしまうために、ＲＣにより計算を高速に実行できるのは、計算精度が低くてよいもの（固定小数点演算の数値計算等）に限定されてしまう。さらに、ＲＣによって目的とする計算を行なうためには、例えばＶＨＤＬ等のハードウエアに近いレベルの言語を駆使して、ユーザーがＦＰＧＡの構成を行なう必要があり、アプリケーションの開発が困難である。
【０００９】
ＳＩＭＤ超並列計算機においては、多数のプロセッサユニットを一つのチップに集積しようとすると、メモリバンド幅が相対的に不足してしまい、フォン・ノイマン・ボトルネックと同様の制約が生じてしまう。したがって、半導体製造技術が進歩しても、その進歩に応じてプロセッサユニットの集積度を上げられないという制約がある。
【課題を解決するための手段】
【００１０】
本発明は、上記問題の少なくともいくつかを解決することを課題とする。
【００１１】
すなわち、本発明においては、同一のメモリーポートを通じて外部メモリと通信可能な複数の要素プロセッサと、該要素プロセッサに命令とアドレスとを送り、該要素プロセッサを動作させるための制御プロセッサとを備えてなる演算処理装置であって、前記複数の要素プロセッサのそれぞれは、論理演算器と算術演算器とレジスタファイルとを備えており、前記複数の要素プロセッサのうちの少なくとも二つの要素プロセッサは、前記動作に用いる異なるパラメータデータを予め受け取って前記レジスタファイルに格納し、前記制御プロセッサから前記動作のために同報される同一の命令を受け取り、前記外部メモリから同一のデータを前記メモリーポートを通じて読み込み、該同一のデータと前記異なるパラメータデータとに対して、前記同一の命令に応じた論理演算または算術演算の少なくともいずれかの演算を行なうものである、演算処理装置が提供される。
【００１２】
また、上記本発明の演算処理装置において、前記データには、１ビットの符号ビットと１１ビットの指数ビットと６０ビットの仮数部ビットとから構成される７２ビット長の浮動小数点形式のデータが含まれており、前記算術演算器には乗算器と加算器が含まれており、前記命令には、単精度乗算命令および倍精度乗算命令を有する乗算命令と、通常浮動小数点加減算命令およびモードビットを含むブロック浮動小数点加減算命令を有する加減算命令とが含まれており、前記乗算器は、入力データが該乗算器へ入力される前に、該入力データの仮数部のバイアスを修正し、前記単精度乗算命令を受け取ると、乗算の演算結果を丸め処理によって２５ビットにし、前記倍精度乗算命令を受け取ると、乗算の演算結果に丸め処理を行なわないものであり、前記加算器は、通常浮動小数点加減算命令を受け取ると、演算結果に丸め処理を行なって演算を行い、ブロック浮動小数点加減算命令を受け取ると、演算に用いる少なくとも二つの浮動小数点データのオペランドにより指定された入力のうち、前記モードビットで指定された側のソースオペランドに対応する入力における指数に合わせて他方のソースオペランドの指数をシフトして演算を行い、演算結果に対する正規化を行なわないものであってよい。
【発明の効果】
【００１３】
本発明の演算処理装置においては、複数の要素プロセッサが、同一のデータと異なるパラメータデータとを用いて同一の命令に応じた演算を並行して行なうため、メモリバンド幅の問題を生じることなく、計算処理速度を改善することができる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施の形態を、図面を参照しながら説明する。
［全体構成］
図１は、本発明の演算処理装置の実施の形態を用いて計算を行なうためのコンピュータシステム１００の構成を示すブロック図である。コンピュータシステム１００は、ホストコンピュータ２０と専用計算機部１０から構成されていることができる。ホストコンピュータ２０は、例えば市販されているパーソナルコンピュータなどであり、中央演算装置（ＣＰＵ）２２には主記憶装置（メモリ）２４が接続されており、例えばハードディスクドライブなどの補助記憶装置２８、ディスプレイアダプタなどの表示手段３０、キーボードやマウスなどの入力操作手段３２が、ＰＣＩやＩＳＡなどの適切な規格による適切なバス２６を介してＣＰＵ２２と接続されている。バス２６には適当な通信または入出力手段３４（例えば、ＰＣＩバススロット、あるいはＰＣＩバスに接続された適当なＩＯカード等）を介して、専用計算機部１０が接続されている。コンピュータシステム１００は、以下に説明する演算処理装置を実装した専用計算機部１０をホストコンピュータ２０によって制御することにより、目的とする計算を実行する。
【００１５】
専用計算機部１０は、例えば複数のアダプタカード１０−１〜１０−Ｚ（Ｚは、自然数）により構成されている。他の構成の例としては、単独のアダプタカードにより構成されていたり、適当な筐体に専用計算機部１０が格納されて、ホストコンピュータ２０との間を適当な通信手段によって接続するように構成されていることもできる。
【００１６】
［アダプタカード］
本実施の形態におけるアダプタカードの構成を図２に示す。アダプタカード１０−Ｉ（Ｉは１〜Ｚの自然数）においては、本発明の実施の形態に係る演算処理装置１と外部メモリ２とが適当な外部バスインターフェース１２２を介して接続するように実装されている。外部メモリ２は、任意のメモリとすることができ、例えば、各種の方式のランダムアクセスメモリ（ＲＡＭ）の中から、記憶容量とデータ転送速度に応じて適宜選択される。図２においては、外部メモリ２を一つだけ記載しているが、外部メモリをデータ用と命令用に分けて実装することもできる。外部メモリ２と外部バスインターフェース１２２とは、外部バス１２４を通じて接続されている。外部バスインターフェース１２４は外部メモリ２のメモリーポートを介してメモリにアクセスできる。このため、複数の要素プロセッサが外部メモリ２の同一のメモリーポートを通じて外部メモリ２とアクセスする。
【００１７】
［演算処理装置］
演算処理装置１は、一片の半導体ダイ１２に集積された集積回路を有している。ダイ１２には、要素プロセッサＰ11〜ＰKMのＫ×Ｍ個（Ｋ、Ｍは自然数）の要素プロセッサが備えられている。要素プロセッサのそれぞれにはレジスタファイルＲが備えられている。ここで、例えば、ＫとＭはともに１６であり、半導体ダイ１２上には２５６個の要素プロセッサが集積されている。図２においては、アダプタカード上に半導体ダイ１２を一つだけ記載しているが、アダプタカード上に複数の半導体ダイ１２を実装しても良い。
【００１８】
要素プロセッサＰ11〜ＰKMは、Ｋ個のプロセッサグループＰＧ1〜ＰＧKにグループ化されていて、それぞれに、要素プロセッサ（Ｐ11〜Ｐ1M）〜（ＰK1〜ＰKM）が含まれている。プロセッサグループＰＧ1〜ＰＧKのそれぞれのグループには、共有レジスタファイルＳＲ1〜ＳＲKが備えられている。
【００１９】
制御プロセッサ１４は、適当な通信または入出力手段３４（図１）を介してホストコンピュータ２０から制御されており、要素プロセッサＰ11〜ＰKMを動作させるための命令を各要素プロセッサに送り、外部メモリのメモリアドレスを送る。外部メモリ２には、計算に用いるデータがホストコンピュータ２０から書き込まれる。制御プロセッサ１４と半導体ダイ１２とは、図２においては別の装置であるように記載されているが、制御プロセッサ１４と要素プロセッサとが共に半導体ダイ１２に集積されていても良い。
【００２０】
レジスタファイルＲは、要素プロセッサＰ11〜ＰKMの演算に使用される。図示しないが、それぞれの要素プロセッサには、論理演算器、算術演算器が備えられている。
【００２１】
次に、本実施の形態の演算処理装置１の動作について説明する。
［動作］
演算処理装置１の動作上の特徴の一つは、同一の命令にしたがって、同一のデータを、各要素プロセッサが並行して処理を行なう点である。この際、要素プロセッサのそれぞれのレジスタファイルＲには、予め計算目的に合わせたパラメータデータが転送されている。各要素プロセッサは、パラメータデータと他の要素プロセッサと同じデータとを用いて、当該同一の命令に応じた演算を行う。パラメータデータは、専用計算機部１０全体として目的の計算を行なうように各要素プロセッサに与えられるデータであり、一般には要素プロセッサごとに異なるデータとなっている。したがって、各要素プロセッサが同一のデータを対象に同一の命令に従った演算を行っても、演算結果は一般には要素プロセッサごとに異なっている。同一の命令とは、少なくともニモニック（またはオペコード）が同一である命令をいう。つまり、ニモニックが同一でオペランドに指定されるレジスタも同一である命令や、ニモニックが同一でオペランドに指定されるレジスタが異なる命令等をいう。これらの場合、各要素プロセッサのレジスタには一般には異なるデータが格納されているので演算の種類が同一であっても、一般には、異なる演算結果となる。
【００２２】
［命令による演算処理装置の動作変更］
各要素プロセッサは、命令に従ってレジスタファイルＲや共有レジスタファイルＳＲに対して演算を行い、その結果をメモリに格納する。ここで、数値計算の中には、外部メモリへのアクセスを行なう必要がなく、要素プロセッサ内のレジスタファイルを用いて行なえる演算が殆どとなるものがある。この非限定的な例としては、従来技術であるＧＲＡＰＥ型計算機によって行なってきた多数粒子の重力等の計算や、大規模な次元の行列の積の数値計算などがある。本発明では、演算処理装置１の各要素プロセッサの処理がプログラムに基づく命令によって制御されるため、専用計算機部１０を処理に合わせて適切に動作させるプログラムを組むことにより、同一のハードウエア構成を用いて、複数の種類の計算を高速に行なうことができる。例えば、プログラムを変更するだけで、同一のハードウエア構成によって多数粒子の重力等の計算を行なったり、行列の積の計算を行なったりすることができる。
【００２３】
［要素プロセッサのグループ化］
複数の要素プロセッサはグループ化されていることができる。図２においては、要素プロセッサはプロセッサグループＰＧ1〜ＰＧKにグループ化され、それぞれのプロセッサグループＰＧ1〜ＰＧKには、共有レジスタファイルＳＲ1〜ＳＲKが備えられている。共有レジスタファイルＳＲ1〜ＳＲKはグループ内の各要素プロセッサからアクセス可能である。共有レジスタファイルを用いることにより、グループ内のある要素プロセッサによって演算されたデータを、外部メモリ２にアクセスすることなく他の要素プロセッサによって参照することができる。
【００２４】
［外部メモリと要素プロセッサとの転送モード］
本実施の形態の演算処理装置１においては、各要素プロセッサのレジスタやプロセッサグループの共有レジスタと外部メモリとの間において、さまざまな転送モードを有する。外部メモリから要素プロセッサのレジスタファイルへの書き込みモードは、複数の要素プロセッサに対する同報モードと個々の要素プロセッサに対するランダムアクセスモードとを有し、レジスタファイルから外部メモリへの読み出しモードは、個々の要素プロセッサに対するランダムアクセスモードを有している。また、要素プロセッサがグループ化されている場合には、共有メモリから外部メモリへの読み出モード、または、外部メモリから共有メモリへの書き込みモードの少なくともいずれかには、複数の要素プロセッサに対する同報モード、個々の要素プロセッサに対するランダムアクセスの転送モードを有している。この場合には、外部メモリからレジスタファイルへの書き込みモードは、グループ内の全ての要素プロセッサに対する同報モード、複数のグループ内の要素プロセッサに対する同報モードをさらに有しレジスタファイルから外部メモリへの読み出しは、グループ内の縮約を伴う読み出しモードをさらに有している。
【００２５】
［ベクトル命令］
本実施の形態の演算処理装置１においては、ベクトル命令を備えていることができる。ベクトル命令を用いれば、多数のオペランドの組合わせに対して同一の命令を実行することができ、複数の要素プロセッサによって並行して計算を行なう本実施の形態の演算処理装置１において命令を同報する際のバンド幅が節約できる。本実施の形態の演算処理装置１においては、ベクトル命令のベクトル長（命令長）は様々に変更することができ、ベクトル長を直接または間接的に指定するためのオペランドをそのベクトル命令に含めることができる。これにより、計算目的に合わせた柔軟なベクトル長を選択することができる。
【００２６】
［間接アドレッシング］
本実施の形態の演算処理装置１においては、アドレスオフセットを用いた間接アドレッシングを用いることができる。間接アドレッシングを用いることにより区分多項式を用いて演算を行うことができ、べき乗や初等関数の数値計算がより高速に行なうことができる。
【００２７】
［データ構造］
一般に浮動小数点で積算の演算を行う場合には、演算順序によって結果が変わる。本実施の形態の演算処理装置１においては、この問題を解決するために、実質的に固定小数点演算となる手法によって積算を行なうことができる。すなわち、本実施の形態においては、演算結果に正規化を行なわない浮動小数点加算を導入する。要素プロセッサに備えられるアキュムレータの指数に、積算途中で表れ得る値よりも大きな指数を設定しておいて、加算後の正規化を実行しない演算を行えば、積算結果が積算の順序に依存しなくなる。このような演算を可能にするために、本実施の形態においては、そのために何れのソースオペランドの指数を用いるかを定めるフラグ（モードビット）を設けることができる。
【００２８】
さらに、本実施の形態では、上記問題を解決するために、１ビットの符号部、１１ビットの指数部、６０ビットの仮数部を持つ７２ビット数値データを扱うことができる。つまり、演算後に正規化を行なわない浮動小数点の演算においては、１ビットの符号部、１１ビットの指数部、５２ビットの仮数部を用いて６４ビットの倍精度データを表現するＩＥＥＥ-７５４の規格どおり５２ビットの仮数部を用いるのではなく、仮数部を６０ビットにする。これにより、正規化を行なわない場合の倍精度演算における精度低下を防止する。このとき、単精度演算を行うときには、仮数を丸めてから演算を行って、強制１丸め処理を行なって２５ビットにするが、その結果は、仮数部が長いままメモリに格納する。また、本発明においては、ＩＥＥＥ７５４に用いられるような仮数部の暗黙ビット（隠しビット）を用いる表現（いわゆるケチ表現）は用いない。
【００２９】
本実施の形態において倍精度乗算を行なう場合には、単精度乗算器を用いて演算を行う。これは、仮数をシフトしてから乗算する命令を設けることにより行なうことができる。乗算結果は基本的に全ビットがレジスタに保持されるので、倍精度乗算は部分積を計算した後にそれらを加算するだけで実現される。
【００３０】
［論理演算器］
本実施の形態の演算処理装置１においては、主たる計算の用途は数値計算であるが、各種の条件処理を行なうために論理演算器を用いることができる。なお、乗算や除算の演算器の論理構成は、従来のＡＬＵに見られる論理構成と同様である。
【００３１】
［パイプライン化］
本実施の形態の演算処理装置１の各要素プロセッサにおける算術演算器には、パイプラインを用いることができる。また、複数の要素プロセッサを一つのパイプラインとするようにパイプライン構成とすることもできる。このようにパイプラインを用いて実装すれば、メモリアクセスの少ない本実施の形態の演算処理装置１の演算処理効率がさらに高くなる。
【００３２】
以下、本発明の演算処理装置によって各種の計算をする場合の具体例を説明する。
【実施例１】
【００３３】
［重力、クーロン力による粒子間相互作用］
図３に基づいて、多数の粒子が重力、クーロン力により相互作用する場合の計算について、本発明の演算処理装置を用いて計算を行なう場合の動作について説明する。多数の粒子に対して式（１）に示す中心力ポテンシャルによる相互作用の力を計算し、その相互作用の合力を求めることにより、運動方程式を用いてその後の各粒子の位置を算出することができる。本実施例においては、各要素プロセッサは特定の粒子を担当し、その担当する粒子に作用する他の粒子（作用粒子）からの力を作用粒子を順次変更しながら積算する。計算は、全般に浮動小数点演算によって行なう。
【数１】
2006039790.tif 000003
【００３４】
本実施例では、まず、ホストコンピュータにより、個々の粒子のデータを専用計算機部の外部メモリに格納する（Ｓ１０２）。
【００３５】
次に、要素プロセッサのレジスタファイルに、その要素プロセッサが計算を担当する粒子のデータを書き込む（Ｓ１０４）。例えば、第１番目の粒子から第Ｎ番目の粒子の計算を図２に示したようなＫ×Ｍ個の要素プロセッサを用いて計算を行なうことを考える。この場合、Ｎ≦Ｍである場合には、Ｎ個の粒子がＭ個の要素プロセッサのいずれかによって担当される。別のグループの同じ番号のプロセッサは同じ粒子を担当する。計算に用いるデータは、例えば、位置や質量、電荷など、粒子ごとに決まる計算に必要なデータである。この場合、グループ内の各要素プロセッサには異なる粒子データが書き込まれるので、粒子データをこのように書き込むことは、本願において予め異なるパラメータを要素プロセッサがレジスタファイルに格納することに対応する。この書き込みは、要素プロセッサごとに異なるデータを書き込むランダムアクセスモードにより行なう。なお、Ｎ＞Ｍである場合には、同じアダプタカードや他のアダプタカードに実装された他の半導体ダイ１２の要素プロセッサを使って分担して計算を行なったり、力を受ける粒子数を計算可能な数に限定した計算を繰り返せばよいので、原理的には同様である。
【００３６】
次に、グループ内の複数の要素プロセッサそれぞれのレジスタファイルに、その要素プロセッサによって分担されている粒子に対して重力やクーロン力の作用を及ぼす粒子（作用粒子）のデータを書き込む（Ｓ１０６）。このとき、グループ内の各要素プロセッサには同報により同じ作用粒子の粒子データを書き込み、異なるグループの要素プロセッサには違う作用粒子の粒子データを書き込む。ここでも、計算に用いるデータは、例えば、位置や質量、電荷など、粒子ごとに決まる計算に必要なデータである。
【００３７】
例えば、図２に示した演算処理装置１の場合であれば、プロセッサグループＰＧ1の全ての要素プロセッサＰ11からＰ1Mの全てのレジスタファイルに、第１番目の作用粒子の粒子データを同報によって書き込み、プロセッサグループＰＧ2の要素プロセッサＰ21からＰ2Mに第２番目の作用粒子の粒子データを同報によって書き込む。同じ作用粒子の粒子データが書き込まれる要素プロセッサには、グループ内で粒子データが同報されることにより、メモリアクセスの回数が最小になる。
【００３８】
なお、粒子間の相互作用の計算においては、ある粒子に作用する力はその粒子自体を除いた他の粒子によって作用するものであるので、同じ粒子同士での計算は行なわれないように除外されている。
【００３９】
そして、要素プロセッサのレジスタファイルにある二つの粒子の位置データ（ｘ，ｙ，ｚ）間の差を求める（Ｓ１０８）。これにより位置データの差ｄｘ＝ｘi―ｘj（ｉ，ｊは異なる粒子のインデックス）が求まるので、各要素プロセッサのレジスタファイルに格納する。ｙ、ｚについても、同様にｄｙ、ｄｚを求める。この処理は、要素プロセッサ内でレジスタファイルのみの演算処理であるために、ｘ、ｙ、ｚの各要素の計算を順次行なっても３クロックで処理が完了する。また、ｘ、ｙ、ｚの３つの成分の差を同時に減算できるベクトル命令を備えている場合には、１クロックで処理が完了する。この差の算出は、同時に動作する要素プロセッサにおいて並行して行なわれるため、計算が非常に効率よく進行する。
【００４０】
そして、ｄｘ、ｄｙ、ｄｚの値をそれぞれ二乗して和を求めることにより、距離の二乗（ｄｒ２）を求める（Ｓ１１０）。この計算においても、各要素プロセッサが用いるデータはレジスタファイル上のみに存在する。
【００４１】
さらに、ｉｎｖｄｒ３＝ｄｒ２-1.5の計算を各要素プロセッサで行なう（Ｓ１１２）。この際、べき乗の演算については、区分多項式補間計算を行なう。アドレスオフセットによる間接アドレッシングが可能な本発明の実施の形態の演算処理装置１では演算が高速に行える。各要素プロセッサで算出されたｉｎｖｄｒ３は、レジスタファイルに格納される。
【００４２】
ステップＳ１１２において求めたｉｎｖｄｒ３に、ステップＳ１０８で求めたｄｘ、ｄｙ、ｄｘをそれぞれ乗じて、相互作用による力ｆの各成分ｆｘ、ｆｙ、ｆｚを算出し、レジスタファイルに格納する（Ｓ１１４）。なお、図においては、質量や重力定数、あるいは電荷等の定数を記載していないが、必要に応じてこれらも乗じる。これにより、各要素プロセッサのレジスタファイルには、その要素プロセッサが担当している粒子にある作用粒子が及ぼす力の計算データが格納される。
【００４３】
各粒子には、他の粒子全てが作用粒子となるので、ステップＳ１０６からステップＳ１１４を計算すべき作用粒子に対して繰り返す（ステップＳ１１６）。これにより、各要素プロセッサのレジスタファイルには、その要素プロセッサが担当する粒子に対して他の作用粒子が及ぼす力が積算されて格納される。なお、２番目以降の作用粒子については計算中に次の作用粒子のデータを共有メモリに転送する。これにより演算とデータ転送が並行に行われ、演算を高速化できる。
【００４４】
最後に、グループに跨ったリダクション（縮約）を行ないながら、ホスト計算機に粒子ごとの力のデータを回収する（Ｓ１１８）。
【００４５】
以上のような計算によって、多数の粒子間の相互作用による力を算出することができ、運動方程式にしたがって運動する多数の粒子の運動をシミュレートすることができる。なお、相互作用の計算において、計算を多数回に分けて部分的に進めることにより、データのオーバーフローが防止でき、同時に動作可能な要素プロセッサの数より多数の粒子数を扱うことができる。
【実施例２】
【００４６】
［行列積の計算］
図４に基づいて、ｎ×ｎの正方行列同士の行列積を求める計算について、本発明の演算処理装置で計算を行なう場合の動作について説明する。行列Ａ、Ｂの行列積Ｃは、ｃij＝Σkａikｂkj）を計算することにより求められる。ここで、ａik、ｂkj、ｃijは、Ａ，Ｂ，Ｃそれぞれの要素である。本実施例においては、ｃ11を算出する計算は要素プロセッサＰ11が担当し、ｃ12を算出する計算は要素プロセッサＰ12が担当する。同様に、ｃ21を算出する計算は要素プロセッサＰ21が担当する。このようにして、ｃ11〜ｃnnは要素プロセッサＰ11〜Ｐnnが計算を担当する。
【００４７】
まず、ホストコンピュータにより、行列Ａ，Ｂの部分行列を専用計算機部１０の各アダプタカードの外部メモリ２に格納する。（Ｓ２０２）。この行列Ａ，Ｂの部分行列は、アダプタカードの外部メモリ２の容量とデータ量によっては、行列Ａ，Ｂそのものとすることもできる。
【００４８】
次に、Ｂの部分行列を各要素プロセッサのレジスタファイルに格納する（Ｓ２０４）。このとき、プロセッサＰ11のレジスタＲには、ｂ11、ｂ21、・・・ｂn1が格納され、プロセッサＰ12のレジスタＲには、ｂ12、ｂ22、・・・ｂn2が格納される。このように、プロセッサグループＰＧ1には、（ｂ11、ｂ21、・・・ｂn1）、（ｂ12、ｂ22、・・・ｂn2）、・・・（ｂ1n、ｂ2n、・・・ｂnn）が要素プロセッサごとに格納される。
【００４９】
そして、外部メモリ２からＡの部分行列を要素プロセッサに同報する（Ｓ２０６）。このとき、異なるプロセッサグループには、別の行のデータが送られる。例えば、プロセッサグループＰＧ1の各要素プロセッサにはａ11，ａ12，・・・，ａ1nが送られ、プロセッサグループＰＧ2の各要素プロセッサにはａ21，ａ22，・・・，ａ2nが送られる。プロセッサグループ内の全ての要素プロセッサには同じデータが同報されるが、このためには、図２の共有レジスタＳＲを用いることができるし、また、各要素プロセッサのレジスタに同報により直接書き込まれても良い。これにより、外部メモリ２のアクセスが最小限にされて、メモリバンド幅が計算速度を律速しにくくなる。
【００５０】
更に、各要素プロセッサにおいて、ｃijの部分和を計算する（Ｓ２０８）。例えば、プロセッサグループＰＧ1のプロセッサＰ11では、ａ11＊ｂ11＋ａ12＊ｂ21＋・・・＋ａ1n＊ｂn1を計算し、プロセッサグループＰＧ2のプロセッサＰ21では、ａ21＊ｂ11＋ａ22＊ｂ21＋・・・＋ａ2n＊ｂn1を計算する。これらの計算は、要素プロセッサが並行して行なうため、同時に複数の要素が計算される。また、本実施の形態の演算処理装置１において乗算を並行して行なえるベクトル命令を備えていれば、複数の項を一度の命令で計算することができて、処理効率が高くなる。
【００５１】
ここで、計算に用いる要素プロセッサの数が行列要素の数よりも小さい場合、正方行列同士の積ではない場合などの場合等には、計算を分けて行なう必要がある。このとき、Ｃの要素の計算には、必ずしもには、一般に、計算を分けて行なう必要がある。その場合には、計算すべきＡ，Ｂの要素があれば（Ｓ２１０）、外部メモリ２から、（あるいは、必要に応じてホストコンピュータ２０から）その要素を読み込んで計算を継続する。
【００５２】
各要素プロセッサで担当したＣの要素の計算が完了した後は、グループに跨ったリダクションを行ないながら、Ｃの要素を外部メモリ２に格納する（Ｓ２１２）。Ｃの全ての要素の計算が終了するまで（Ｓ２１４）、以上のステップを繰り返し、計算が終了すれば、計算結果をホスト計算機に回収する（Ｓ２１６）。
【００５３】
以上、本発明の実施の形態につき述べたが、これらの実施の形態および実施例は本発明の思想を具体化する一例に過ぎない。すなわち、本発明は既述の実施の形態に限定されるものではなく、本発明の技術的思想に基づいて各種の変形、変更および組合わせが可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態のコンピュータシステムの構成を示すブロック図。
【図２】本発明の実施の形態の専用計算機部のアダプタカードの構成を示すブロック図。
【図３】本発明の実施例１の処理を示すフローチャート。
【図４】本発明の実施例２の処理を示すフローチャート。
【符号の説明】
【００５５】
１  演算処理装置
１４  制御プロセッサ
１２  半導体ダイ
ＰＧ1〜ＰＧK  プロセッサグループ
ＳＲ1〜ＳＲK  共有レジスタ
Ｐ11〜ＰKM  要素プロセッサ
Ｒ  レジスタファイル
１２２  外部バスインターフェース
２  外部メモリ
１００  コンピュータシステム
１０  専用計算機部
１０−１〜１０−Ｚ  アダプタカード
２０  ホストコンピュータ
２２  中央演算装置（ＣＰＵ）
２４  主記憶装置
２８  補助記憶装置
３０  表示手段
３２  入力操作手段
２６  バス
３４  入出力手段
【図１】
2006039790.tif 000004
【図２】
2006039790.tif 000005
【図３】
2006039790.tif 000006
【図４】
2006039790.tif 000007