JP4477959B2 - ブロードキャスト型並列処理のための演算処理装置 - Google Patents

ブロードキャスト型並列処理のための演算処理装置 Download PDF

Info

Publication number
JP4477959B2
JP4477959B2 JP2004216728A JP2004216728A JP4477959B2 JP 4477959 B2 JP4477959 B2 JP 4477959B2 JP 2004216728 A JP2004216728 A JP 2004216728A JP 2004216728 A JP2004216728 A JP 2004216728A JP 4477959 B2 JP4477959 B2 JP 4477959B2
Authority
JP
Japan
Prior art keywords
instruction
register file
mode
element processors
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2004216728A
Other languages
English (en)
Other versions
JP2006039790A (ja
Inventor
淳一郎 牧野
俊一 戎崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RIKEN Institute of Physical and Chemical Research
Original Assignee
RIKEN Institute of Physical and Chemical Research
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by RIKEN Institute of Physical and Chemical Research filed Critical RIKEN Institute of Physical and Chemical Research
Priority to JP2004216728A priority Critical patent/JP4477959B2/ja
Priority to US11/189,186 priority patent/US7558943B2/en
Publication of JP2006039790A publication Critical patent/JP2006039790A/ja
Application granted granted Critical
Publication of JP4477959B2 publication Critical patent/JP4477959B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Description

本発明は、コンピュータの演算処理装置に関する。特に、本発明は、浮動小数点演算などの数値演算を行なう演算処理装置に関する。
従来より、コンピュータの高速化が要望されている。特に計算負荷の高い科学技術シミュレーションなどの分野において、数値計算を高速に処理する演算処理装置が求められている。
従来のコンピュータは、殆どがフォン・ノイマン型コンピュータ(ストアードプログラム型コンピュータ)といわれるコンピュータである。このフォン・ノイマン型コンピュータにおいては、中央演算処理装置(CPU)とメモリとの間のバンド幅(通信速度)が演算処理の性能を制限する。この制限はフォン・ノイマン・ボトルネックと呼ばれている。現在の半導体プロセス技術においては、CPUとメモリとの製造工程は互いに両立しにくいため、通常は、これらは異なる半導体集積回路によって実現され、CPUとメモリとの間のバンド幅が演算速度に与える影響が顕著となってきている。このため、フォン・ノイマン・ボトルネックの解消が試みられている。
フォン・ノイマン・ボトルネックを解消するために、本願発明者らは、汎用のホストコンピュータに専用計算機部を接続し、この専用計算機部で計算負荷の高い処理を行なわせるコンピュータシステムを開発し、GRAPE(GRAvity PipE)と命名している。GRAPEは、粒子系のシミュレーション計算に特化した計算を行なう専用計算機部を有している。この専用計算機部には、粒子間の相互作用計算を効率よく行なうための演算をハードウエアによって実現したパイプラインを多数有している半導体チップが用いられる。また、この専用計算機部には、多数のパイプラインによって共有されるメモリユニットが備えられている。このような構成により、GRAPEは、小さな回路規模であるにもかかわらず、目的とする計算についてはスーパーコンピュータ以上の演算処理性能を有している(例えば、非特許文献1)。
また、フォン・ノイマン・ボトルネックを解消するための計算機として、FPGA(Field Programmable Gate Array)を用いた再構成可能計算機(リコンフィギャラブル・コンピュータ、RC)が用いられている。RCを用いて高速に数値計算を行なう場合のコンピュータシステムの構成はGRAPEと類似しており、ホスト計算機とFPGAボードとを用いる。FPGAボードにはFPGAを用いて構成されたFPGAのネットワークと外部メモリとが搭載されている。
さらに、数値計算を効率よく行なうための計算機として、SIMD(Single Instruction Multiple Data)超並列計算機が用いられている。このSIMD超並列計算機は、それぞれがローカルメモリとレジスタファイルを有するプロセッサユニットを複数集積したプロセッサチップを用い、このプロセッサチップを更に複数用いて処理を行なう。(特許文献1)。
特開平5−174166号公報 Makino, J., Kokubo, E., and Taiji, M. (1993). HARP: A special-purpose computer for N-body simulations, Publ. Astron. Soc. Japan, 45, 349-360.
GRAPE型の計算機は、目的とする計算を高速に実現可能であるものの、パイプラインをハードウエアに実現する段階で扱える計算が限定されてしまい、汎用性が欠如してしまう。
RCは、使用するFPGA自体が再構成可能に構成されているので、回路規模が制限されており、また、動作速度が他のプロセッサに比べて高くできないという問題がある。また、通常の数値計算で用いられる倍精度浮動小数点演算をRCにより行なうと、計算速度が低下してしまうために、RCにより計算を高速に実行できるのは、計算精度が低くてよいもの(固定小数点演算の数値計算等)に限定されてしまう。さらに、RCによって目的とする計算を行なうためには、例えばVHDL等のハードウエアに近いレベルの言語を駆使して、ユーザーがFPGAの構成を行なう必要があり、アプリケーションの開発が困難である。
SIMD超並列計算機においては、多数のプロセッサユニットを一つのチップに集積しようとすると、メモリバンド幅が相対的に不足してしまい、フォン・ノイマン・ボトルネックと同様の制約が生じてしまう。したがって、半導体製造技術が進歩しても、その進歩に応じてプロセッサユニットの集積度を上げられないという制約がある。
本発明は、上記問題の少なくともいくつかを解決することを課題とする。
すなわち、本発明においては、同一のメモリーポートを通じて外部メモリと通信可能な複数の要素プロセッサと、該要素プロセッサに命令とアドレスとを送り、該要素プロセッサを動作させるための制御プロセッサとを備えてなる演算処理装置であって、前記複数の要素プロセッサのそれぞれは、論理演算器と算術演算器とレジスタファイルとを備えており、前記複数の要素プロセッサのうちの少なくとも二つの要素プロセッサは、前記動作に用いる異なるパラメータデータを予め受け取って前記レジスタファイルに格納し、前記制御プロセッサから前記動作のために同報される同一の命令を受け取り、前記外部メモリから同一のデータを前記メモリーポートを通じて読み込み、該同一のデータと前記異なるパラメータデータとに対して、前記同一の命令に応じた論理演算または算術演算の少なくともいずれかの演算を行なうものである、演算処理装置が提供される。
また、上記本発明の演算処理装置において、前記データには、1ビットの符号ビットと11ビットの指数ビットと60ビットの仮数部ビットとから構成される72ビット長の浮動小数点形式のデータが含まれており、前記算術演算器には乗算器と加算器が含まれており、前記命令には、単精度乗算命令および倍精度乗算命令を有する乗算命令と、通常浮動小数点加減算命令およびモードビットを含むブロック浮動小数点加減算命令を有する加減算命令とが含まれており、前記乗算器は、入力データが該乗算器へ入力される前に、該入力データの仮数部のバイアスを修正し、前記単精度乗算命令を受け取ると、乗算の演算結果を丸め処理によって25ビットにし、前記倍精度乗算命令を受け取ると、乗算の演算結果に丸め処理を行なわないものであり、前記加算器は、通常浮動小数点加減算命令を受け取ると、演算結果に丸め処理を行なって演算を行い、ブロック浮動小数点加減算命令を受け取ると、演算に用いる少なくとも二つの浮動小数点データのオペランドにより指定された入力のうち、前記モードビットで指定された側のソースオペランドに対応する入力における指数に合わせて他方のソースオペランドの指数をシフトして演算を行い、演算結果に対する正規化を行なわないものであってよい。
本発明の演算処理装置においては、複数の要素プロセッサが、同一のデータと異なるパラメータデータとを用いて同一の命令に応じた演算を並行して行なうため、メモリバンド幅の問題を生じることなく、計算処理速度を改善することができる。
本発明の実施の形態を、図面を参照しながら説明する。
[全体構成]
図1は、本発明の演算処理装置の実施の形態を用いて計算を行なうためのコンピュータシステム100の構成を示すブロック図である。コンピュータシステム100は、ホストコンピュータ20と専用計算機部10から構成されていることができる。ホストコンピュータ20は、例えば市販されているパーソナルコンピュータなどであり、中央演算装置(CPU)22には主記憶装置(メモリ)24が接続されており、例えばハードディスクドライブなどの補助記憶装置28、ディスプレイアダプタなどの表示手段30、キーボードやマウスなどの入力操作手段32が、PCIやISAなどの適切な規格による適切なバス26を介してCPU22と接続されている。バス26には適当な通信または入出力手段34(例えば、PCIバススロット、あるいはPCIバスに接続された適当なIOカード等)を介して、専用計算機部10が接続されている。コンピュータシステム100は、以下に説明する演算処理装置を実装した専用計算機部10をホストコンピュータ20によって制御することにより、目的とする計算を実行する。
専用計算機部10は、例えば複数のアダプタカード10−1〜10−Z(Zは、自然数)により構成されている。他の構成の例としては、単独のアダプタカードにより構成されていたり、適当な筐体に専用計算機部10が格納されて、ホストコンピュータ20との間を適当な通信手段によって接続するように構成されていることもできる。
[アダプタカード]
本実施の形態におけるアダプタカードの構成を図2に示す。アダプタカード10−I(Iは1〜Zの自然数)においては、本発明の実施の形態に係る演算処理装置1と外部メモリ2とが適当な外部バスインターフェース122を介して接続するように実装されている。外部メモリ2は、任意のメモリとすることができ、例えば、各種の方式のランダムアクセスメモリ(RAM)の中から、記憶容量とデータ転送速度に応じて適宜選択される。図2においては、外部メモリ2を一つだけ記載しているが、外部メモリをデータ用と命令用に分けて実装することもできる。外部メモリ2と外部バスインターフェース122とは、外部バス124を通じて接続されている。外部バスインターフェース124は外部メモリ2のメモリーポートを介してメモリにアクセスできる。このため、複数の要素プロセッサが外部メモリ2の同一のメモリーポートを通じて外部メモリ2とアクセスする。
[演算処理装置]
演算処理装置1は、一片の半導体ダイ12に集積された集積回路を有している。ダイ12には、要素プロセッサP11〜PKMのK×M個(K、Mは自然数)の要素プロセッサが備えられている。要素プロセッサのそれぞれにはレジスタファイルRが備えられている。ここで、例えば、KとMはともに16であり、半導体ダイ12上には256個の要素プロセッサが集積されている。図2においては、アダプタカード上に半導体ダイ12を一つだけ記載しているが、アダプタカード上に複数の半導体ダイ12を実装しても良い。
要素プロセッサP11〜PKMは、K個のプロセッサグループPG1〜PGKにグループ化されていて、それぞれに、要素プロセッサ(P11〜P1M)〜(PK1〜PKM)が含まれている。プロセッサグループPG1〜PGKのそれぞれのグループには、共有レジスタファイルSR1〜SRKが備えられている。
制御プロセッサ14は、適当な通信または入出力手段34(図1)を介してホストコンピュータ20から制御されており、要素プロセッサP11〜PKMを動作させるための命令を各要素プロセッサに送り、外部メモリのメモリアドレスを送る。外部メモリ2には、計算に用いるデータがホストコンピュータ20から書き込まれる。制御プロセッサ14と半導体ダイ12とは、図2においては別の装置であるように記載されているが、制御プロセッサ14と要素プロセッサとが共に半導体ダイ12に集積されていても良い。
レジスタファイルRは、要素プロセッサP11〜PKMの演算に使用される。図示しないが、それぞれの要素プロセッサには、論理演算器、算術演算器が備えられている。
次に、本実施の形態の演算処理装置1の動作について説明する。
[動作]
演算処理装置1の動作上の特徴の一つは、同一の命令にしたがって、同一のデータを、各要素プロセッサが並行して処理を行なう点である。この際、要素プロセッサのそれぞれのレジスタファイルRには、予め計算目的に合わせたパラメータデータが転送されている。各要素プロセッサは、パラメータデータと他の要素プロセッサと同じデータとを用いて、当該同一の命令に応じた演算を行う。パラメータデータは、専用計算機部10全体として目的の計算を行なうように各要素プロセッサに与えられるデータであり、一般には要素プロセッサごとに異なるデータとなっている。したがって、各要素プロセッサが同一のデータを対象に同一の命令に従った演算を行っても、演算結果は一般には要素プロセッサごとに異なっている。同一の命令とは、少なくともニモニック(またはオペコード)が同一である命令をいう。つまり、ニモニックが同一でオペランドに指定されるレジスタも同一である命令や、ニモニックが同一でオペランドに指定されるレジスタが異なる命令等をいう。これらの場合、各要素プロセッサのレジスタには一般には異なるデータが格納されているので演算の種類が同一であっても、一般には、異なる演算結果となる。
[命令による演算処理装置の動作変更]
各要素プロセッサは、命令に従ってレジスタファイルRや共有レジスタファイルSRに対して演算を行い、その結果をメモリに格納する。ここで、数値計算の中には、外部メモリへのアクセスを行なう必要がなく、要素プロセッサ内のレジスタファイルを用いて行なえる演算が殆どとなるものがある。この非限定的な例としては、従来技術であるGRAPE型計算機によって行なってきた多数粒子の重力等の計算や、大規模な次元の行列の積の数値計算などがある。本発明では、演算処理装置1の各要素プロセッサの処理がプログラムに基づく命令によって制御されるため、専用計算機部10を処理に合わせて適切に動作させるプログラムを組むことにより、同一のハードウエア構成を用いて、複数の種類の計算を高速に行なうことができる。例えば、プログラムを変更するだけで、同一のハードウエア構成によって多数粒子の重力等の計算を行なったり、行列の積の計算を行なったりすることができる。
[要素プロセッサのグループ化]
複数の要素プロセッサはグループ化されていることができる。図2においては、要素プロセッサはプロセッサグループPG1〜PGKにグループ化され、それぞれのプロセッサグループPG1〜PGKには、共有レジスタファイルSR1〜SRKが備えられている。共有レジスタファイルSR1〜SRKはグループ内の各要素プロセッサからアクセス可能である。共有レジスタファイルを用いることにより、グループ内のある要素プロセッサによって演算されたデータを、外部メモリ2にアクセスすることなく他の要素プロセッサによって参照することができる。
[外部メモリと要素プロセッサとの転送モード]
本実施の形態の演算処理装置1においては、各要素プロセッサのレジスタやプロセッサグループの共有レジスタと外部メモリとの間において、さまざまな転送モードを有する。外部メモリから要素プロセッサのレジスタファイルへの書き込みモードは、複数の要素プロセッサに対する同報モードと個々の要素プロセッサに対するランダムアクセスモードとを有し、レジスタファイルから外部メモリへの読み出しモードは、個々の要素プロセッサに対するランダムアクセスモードを有している。また、要素プロセッサがグループ化されている場合には、共有レジスタファイルから外部メモリへの読み出モード、または、外部メモリから共有レジスタファイルへの書き込みモードの少なくともいずれかには、複数の要素プロセッサに対する同報モード、個々の要素プロセッサに対するランダムアクセスの転送モードを有している。この場合には、外部メモリからレジスタファイルへの書き込みモードは、グループ内の全ての要素プロセッサに対する同報モード、複数のグループ内の要素プロセッサに対する同報モードをさらに有しレジスタファイルから外部メモリへの読み出しは、グループ内の縮約を伴う読み出しモードをさらに有している。
[ベクトル命令]
本実施の形態の演算処理装置1においては、ベクトル命令を備えていることができる。ベクトル命令を用いれば、多数のオペランドの組合わせに対して同一の命令を実行することができ、複数の要素プロセッサによって並行して計算を行なう本実施の形態の演算処理装置1において命令を同報する際のバンド幅が節約できる。本実施の形態の演算処理装置1においては、ベクトル命令のベクトル長(命令長)は様々に変更することができ、ベクトル長を直接または間接的に指定するためのオペランドをそのベクトル命令に含めることができる。これにより、計算目的に合わせた柔軟なベクトル長を選択することができる。
[間接アドレッシング]
本実施の形態の演算処理装置1においては、アドレスオフセットを用いた間接アドレッシングを用いることができる。間接アドレッシングを用いることにより区分多項式を用いて演算を行うことができ、べき乗や初等関数の数値計算がより高速に行なうことができる。
[データ構造]
一般に浮動小数点で積算の演算を行う場合には、演算順序によって結果が変わる。本実施の形態の演算処理装置1においては、この問題を解決するために、実質的に固定小数点演算となる手法によって積算を行なうことができる。すなわち、本実施の形態においては、演算結果に正規化を行なわない浮動小数点加算を導入する。要素プロセッサに備えられるアキュムレータの指数に、積算途中で表れ得る値よりも大きな指数を設定しておいて、加算後の正規化を実行しない演算を行えば、積算結果が積算の順序に依存しなくなる。このような演算を可能にするために、本実施の形態においては、そのために何れのソースオペランドの指数を用いるかを定めるフラグ(モードビット)を設けることができる。
さらに、本実施の形態では、上記問題を解決するために、1ビットの符号部、11ビットの指数部、60ビットの仮数部を持つ72ビット数値データを扱うことができる。つまり、演算後に正規化を行なわない浮動小数点の演算においては、1ビットの符号部、11ビットの指数部、52ビットの仮数部を用いて64ビットの倍精度データを表現するIEEE-754の規格どおり52ビットの仮数部を用いるのではなく、仮数部を60ビットにする。これにより、正規化を行なわない場合の倍精度演算における精度低下を防止する。このとき、単精度演算を行うときには、仮数を丸めてから演算を行って、強制1丸め処理を行なって25ビットにするが、その結果は、仮数部が長いままメモリに格納する。また、本発明においては、IEEE754に用いられるような仮数部の暗黙ビット(隠しビット)を用いる表現(いわゆるケチ表現)は用いない。
本実施の形態において倍精度乗算を行なう場合には、単精度乗算器を用いて演算を行う。これは、仮数をシフトしてから乗算する命令を設けることにより行なうことができる。乗算結果は基本的に全ビットがレジスタに保持されるので、倍精度乗算は部分積を計算した後にそれらを加算するだけで実現される。
[論理演算器]
本実施の形態の演算処理装置1においては、主たる計算の用途は数値計算であるが、各種の条件処理を行なうために論理演算器を用いることができる。なお、乗算や除算の演算器の論理構成は、従来のALUに見られる論理構成と同様である。
[パイプライン化]
本実施の形態の演算処理装置1の各要素プロセッサにおける算術演算器には、パイプラインを用いることができる。また、複数の要素プロセッサを一つのパイプラインとするようにパイプライン構成とすることもできる。このようにパイプラインを用いて実装すれば、メモリアクセスの少ない本実施の形態の演算処理装置1の演算処理効率がさらに高くなる。
以下、本発明の演算処理装置によって各種の計算をする場合の具体例を説明する。
[重力、クーロン力による粒子間相互作用]
図3に基づいて、多数の粒子が重力、クーロン力により相互作用する場合の計算について、本発明の演算処理装置を用いて計算を行なう場合の動作について説明する。多数の粒子に対して式(1)に示す中心力ポテンシャルによる相互作用の力を計算し、その相互作用の合力を求めることにより、運動方程式を用いてその後の各粒子の位置を算出することができる。本実施例においては、各要素プロセッサは特定の粒子を担当し、その担当する粒子に作用する他の粒子(作用粒子)からの力を作用粒子を順次変更しながら積算する。計算は、全般に浮動小数点演算によって行なう。
Figure 0004477959
本実施例では、まず、ホストコンピュータにより、個々の粒子のデータを専用計算機部の外部メモリに格納する(S102)。
次に、要素プロセッサのレジスタファイルに、その要素プロセッサが計算を担当する粒子のデータを書き込む(S104)。例えば、第1番目の粒子から第N番目の粒子の計算を図2に示したようなK×M個の要素プロセッサを用いて計算を行なうことを考える。この場合、N≦Mである場合には、N個の粒子がM個の要素プロセッサのいずれかによって担当される。別のグループの同じ番号のプロセッサは同じ粒子を担当する。計算に用いるデータは、例えば、位置や質量、電荷など、粒子ごとに決まる計算に必要なデータである。この場合、グループ内の各要素プロセッサには異なる粒子データが書き込まれるので、粒子データをこのように書き込むことは、本願において予め異なるパラメータを要素プロセッサがレジスタファイルに格納することに対応する。この書き込みは、要素プロセッサごとに異なるデータを書き込むランダムアクセスモードにより行なう。なお、N>Mである場合には、同じアダプタカードや他のアダプタカードに実装された他の半導体ダイ12の要素プロセッサを使って分担して計算を行なったり、力を受ける粒子数を計算可能な数に限定した計算を繰り返せばよいので、原理的には同様である。
次に、グループ内の複数の要素プロセッサそれぞれのレジスタファイルに、その要素プロセッサによって分担されている粒子に対して重力やクーロン力の作用を及ぼす粒子(作用粒子)のデータを書き込む(S106)。このとき、グループ内の各要素プロセッサには同報により同じ作用粒子の粒子データを書き込み、異なるグループの要素プロセッサには違う作用粒子の粒子データを書き込む。ここでも、計算に用いるデータは、例えば、位置や質量、電荷など、粒子ごとに決まる計算に必要なデータである。
例えば、図2に示した演算処理装置1の場合であれば、プロセッサグループPG1の全ての要素プロセッサP11からP1Mの全てのレジスタファイルに、第1番目の作用粒子の粒子データを同報によって書き込み、プロセッサグループPG2の要素プロセッサP21からP2Mに第2番目の作用粒子の粒子データを同報によって書き込む。同じ作用粒子の粒子データが書き込まれる要素プロセッサには、グループ内で粒子データが同報されることにより、メモリアクセスの回数が最小になる。
なお、粒子間の相互作用の計算においては、ある粒子に作用する力はその粒子自体を除いた他の粒子によって作用するものであるので、同じ粒子同士での計算は行なわれないように除外されている。
そして、要素プロセッサのレジスタファイルにある二つの粒子の位置データ(x,y,z)間の差を求める(S108)。これにより位置データの差dx=xi―xj(i,jは異なる粒子のインデックス)が求まるので、各要素プロセッサのレジスタファイルに格納する。y、zについても、同様にdy、dzを求める。この処理は、要素プロセッサ内でレジスタファイルのみの演算処理であるために、x、y、zの各要素の計算を順次行なっても3クロックで処理が完了する。また、x、y、zの3つの成分の差を同時に減算できるベクトル命令を備えている場合には、1クロックで処理が完了する。この差の算出は、同時に動作する要素プロセッサにおいて並行して行なわれるため、計算が非常に効率よく進行する。
そして、dx、dy、dzの値をそれぞれ二乗して和を求めることにより、距離の二乗(dr2)を求める(S110)。この計算においても、各要素プロセッサが用いるデータはレジスタファイル上のみに存在する。
さらに、invdr3=dr2-1.5の計算を各要素プロセッサで行なう(S112)。この際、べき乗の演算については、区分多項式補間計算を行なう。アドレスオフセットによる間接アドレッシングが可能な本発明の実施の形態の演算処理装置1では演算が高速に行える。各要素プロセッサで算出されたinvdr3は、レジスタファイルに格納される。
ステップS112において求めたinvdr3に、ステップS108で求めたdx、dy、dxをそれぞれ乗じて、相互作用による力fの各成分fx、fy、fzを算出し、レジスタファイルに格納する(S114)。なお、図においては、質量や重力定数、あるいは電荷等の定数を記載していないが、必要に応じてこれらも乗じる。これにより、各要素プロセッサのレジスタファイルには、その要素プロセッサが担当している粒子にある作用粒子が及ぼす力の計算データが格納される。
各粒子には、他の粒子全てが作用粒子となるので、ステップS106からステップS114を計算すべき作用粒子に対して繰り返す(ステップS116)。これにより、各要素プロセッサのレジスタファイルには、その要素プロセッサが担当する粒子に対して他の作用粒子が及ぼす力が積算されて格納される。なお、2番目以降の作用粒子については計算中に次の作用粒子のデータを共有メモリに転送する。これにより演算とデータ転送が並行に行われ、演算を高速化できる。
最後に、グループに跨ったリダクション(縮約)を行ないながら、ホスト計算機に粒子ごとの力のデータを回収する(S118)。
以上のような計算によって、多数の粒子間の相互作用による力を算出することができ、運動方程式にしたがって運動する多数の粒子の運動をシミュレートすることができる。なお、相互作用の計算において、計算を多数回に分けて部分的に進めることにより、データのオーバーフローが防止でき、同時に動作可能な要素プロセッサの数より多数の粒子数を扱うことができる。
[行列積の計算]
図4に基づいて、n×nの正方行列同士の行列積を求める計算について、本発明の演算処理装置で計算を行なう場合の動作について説明する。行列A、Bの行列積Cは、cij=Σkikkj)を計算することにより求められる。ここで、aik、bkj、cijは、A,B,Cそれぞれの要素である。本実施例においては、c11を算出する計算は要素プロセッサP11が担当し、c12を算出する計算は要素プロセッサP12が担当する。同様に、c21を算出する計算は要素プロセッサP21が担当する。このようにして、c11〜cnnは要素プロセッサP11〜Pnnが計算を担当する。
まず、ホストコンピュータにより、行列A,Bの部分行列を専用計算機部10の各アダプタカードの外部メモリ2に格納する。(S202)。この行列A,Bの部分行列は、アダプタカードの外部メモリ2の容量とデータ量によっては、行列A,Bそのものとすることもできる。
次に、Bの部分行列を各要素プロセッサのレジスタファイルに格納する(S204)。このとき、プロセッサP11のレジスタRには、b11、b21、・・・bn1が格納され、プロセッサP12のレジスタRには、b12、b22、・・・bn2が格納される。このように、プロセッサグループPG1には、(b11、b21、・・・bn1)、(b12、b22、・・・bn2)、・・・(b1n、b2n、・・・bnn)が要素プロセッサごとに格納される。
そして、外部メモリ2からAの部分行列を要素プロセッサに同報する(S206)。このとき、異なるプロセッサグループには、別の行のデータが送られる。例えば、プロセッサグループPG1の各要素プロセッサにはa11,a12,・・・,a1nが送られ、プロセッサグループPG2の各要素プロセッサにはa21,a22,・・・,a2nが送られる。プロセッサグループ内の全ての要素プロセッサには同じデータが同報されるが、このためには、図2の共有レジスタSRを用いることができるし、また、各要素プロセッサのレジスタに同報により直接書き込まれても良い。これにより、外部メモリ2のアクセスが最小限にされて、メモリバンド幅が計算速度を律速しにくくなる。
更に、各要素プロセッサにおいて、cijの部分和を計算する(S208)。例えば、プロセッサグループPG1のプロセッサP11では、a11*b11+a12*b21+・・・+a1n*bn1を計算し、プロセッサグループPG2のプロセッサP21では、a21*b11+a22*b21+・・・+a2n*bn1を計算する。これらの計算は、要素プロセッサが並行して行なうため、同時に複数の要素が計算される。また、本実施の形態の演算処理装置1において乗算を並行して行なえるベクトル命令を備えていれば、複数の項を一度の命令で計算することができて、処理効率が高くなる。
ここで、計算に用いる要素プロセッサの数が行列要素の数よりも小さい場合、正方行列同士の積ではない場合などの場合等には、計算を分けて行なう必要がある。このとき、Cの要素の計算には、必ずしもには、一般に、計算を分けて行なう必要がある。その場合には、計算すべきA,Bの要素があれば(S210)、外部メモリ2から、(あるいは、必要に応じてホストコンピュータ20から)その要素を読み込んで計算を継続する。
各要素プロセッサで担当したCの要素の計算が完了した後は、グループに跨ったリダクションを行ないながら、Cの要素を外部メモリ2に格納する(S212)。Cの全ての要素の計算が終了するまで(S214)、以上のステップを繰り返し、計算が終了すれば、計算結果をホスト計算機に回収する(S216)。
以上、本発明の実施の形態につき述べたが、これらの実施の形態および実施例は本発明の思想を具体化する一例に過ぎない。すなわち、本発明は既述の実施の形態に限定されるものではなく、本発明の技術的思想に基づいて各種の変形、変更および組合わせが可能である。
本発明の実施の形態のコンピュータシステムの構成を示すブロック図。 本発明の実施の形態の専用計算機部のアダプタカードの構成を示すブロック図。 本発明の実施例1の処理を示すフローチャート。 本発明の実施例2の処理を示すフローチャート。
符号の説明
1 演算処理装置
14 制御プロセッサ
12 半導体ダイ
PG1〜PGK プロセッサグループ
SR1〜SRK 共有レジスタ
11〜PKM 要素プロセッサ
R レジスタファイル
122 外部バスインターフェース
2 外部メモリ
100 コンピュータシステム
10 専用計算機部
10−1〜10−Z アダプタカード
20 ホストコンピュータ
22 中央演算装置(CPU)
24 主記憶装置
28 補助記憶装置
30 表示手段
32 入力操作手段
26 バス
34 入出力手段

Claims (7)

  1. 同一のメモリーポートを通じて外部メモリと通信可能な複数の要素プロセッサと、
    該要素プロセッサに命令とアドレスとを送り、該要素プロセッサを動作させるための制御プロセッサと
    を備えてなる演算処理装置であって、
    前記複数の要素プロセッサのそれぞれは、論理演算器と算術演算器とレジスタファイルとを備えており、
    前記複数の要素プロセッサのうちの少なくとも二つの要素プロセッサは、前記動作に用いる異なるパラメータデータを予め受け取って前記レジスタファイルに格納し、前記制御プロセッサから前記動作のために同報される同一の命令を受け取り、前記外部メモリから同一のデータを前記メモリーポートを通じて読み込み、該同一のデータと前記異なるパラメータデータとに対して、前記同一の命令に応じた論理演算または算術演算の少なくともいずれかの演算を行なうものであり、
    前記複数の要素プロセッサは、少なくとも二つの要素プロセッサをそれぞれが含む複数のグループにグループ化されており、該グループごとに共有レジスタファイルが備えられており、
    前記共有レジスタファイルから前記外部メモリへの読み出しモードにはランダムアクセスとグループをまたがった縮約を伴う読み出しモードとを有する、演算処理装置。
  2. 前記外部メモリから前記レジスタファイルへの書き込みモードは、複数の要素プロセッサに対する同報モードと個々の要素プロセッサに対するランダムアクセスモードとを有し、
    前記レジスタファイルから前記外部メモリへの読み出しモードは、個々の要素プロセッ
    サに対するランダムアクセスモードを有する、請求項1に記載の演算処理装置。
  3. 前記外部メモリから前記共有レジスタファイルへの書き込みモードには、複数の要素プロセッサに対する同報モード、個々の要素プロセッサに対するランダムアクセスの転送モードを有し、
    前記外部メモリから前記レジスタファイルへの書き込みモードは、グループ内の全ての要素プロセッサに対する第1同報モード、複数のグループ内の要素プロセッサに対する第2同報モードを有する、請求項1に記載の演算処理装置。
  4. 前記命令にはベクトル命令が含まれており、該ベクトル命令のベクトル長は所定の範囲内において任意に指定可能なものである、請求項1〜3のいずれかに記載の演算処理装置。
  5. 前記データには、1ビットの符号ビットと11ビットの指数ビットと60ビットの仮数部ビットとから構成される72ビット長の浮動小数点形式のデータが含まれており、
    前記算術演算器には乗算器と加算器が含まれており、
    前記命令には、単精度乗算命令および倍精度乗算命令を有する乗算命令と、通常浮動小数点加減算命令およびモードビットを含むブロック浮動小数点加減算命令を有する加減算命令とが含まれており、
    前記乗算器は、入力データが該乗算器へ入力される前に、該入力データの仮数部のバイアスを修正し、前記単精度乗算命令を受け取ると、乗算の演算結果を丸め処理によって25ビットにし、前記倍精度乗算命令を受け取ると、乗算の演算結果に丸め処理を行なわないものであり、
    前記加算器は、通常浮動小数点加減算命令を受け取ると、演算結果に丸め処理を行なって演算を行い、ブロック浮動小数点加減算命令を受け取ると、演算に用いる少なくとも二つの浮動小数点データのオペランドにより指定された入力のうち、前記モードビットで指定された側のソースオペランドに対応する入力における指数に合わせて他方のソースオペランドの指数をシフトして演算を行い、演算結果に対する正規化を行なわないものである、請求項1に記載の演算処理装置。
  6. 前記丸め処理の少なくともいずれかが強制1丸め処理である、請求項5に記載の演算処理装置。
  7. 前記レジスタファイルに対するアドレスの指定において、アドレスオフセットを用いた間接アドレッシングを行なうことができる、請求項1〜5のいずれかに記載の演算処理装置。
JP2004216728A 2004-07-26 2004-07-26 ブロードキャスト型並列処理のための演算処理装置 Active JP4477959B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004216728A JP4477959B2 (ja) 2004-07-26 2004-07-26 ブロードキャスト型並列処理のための演算処理装置
US11/189,186 US7558943B2 (en) 2004-07-26 2005-07-26 Processing unit for broadcast parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004216728A JP4477959B2 (ja) 2004-07-26 2004-07-26 ブロードキャスト型並列処理のための演算処理装置

Publications (2)

Publication Number Publication Date
JP2006039790A JP2006039790A (ja) 2006-02-09
JP4477959B2 true JP4477959B2 (ja) 2010-06-09

Family

ID=35658612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004216728A Active JP4477959B2 (ja) 2004-07-26 2004-07-26 ブロードキャスト型並列処理のための演算処理装置

Country Status (2)

Country Link
US (1) US7558943B2 (ja)
JP (1) JP4477959B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271325A1 (en) * 2006-05-08 2007-11-22 Nvidia Corporation Matrix multiply with reduced bandwidth requirements
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
JP4513865B2 (ja) 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
US8595467B2 (en) * 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
WO2011105408A1 (ja) * 2010-02-24 2011-09-01 日本電気株式会社 Simdプロセッサ
US8976352B2 (en) * 2011-08-30 2015-03-10 Sony Corporation Microparticle analysis apparatus
US9495154B2 (en) * 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
EP3757754B1 (en) * 2016-11-14 2023-01-04 Google LLC Sorting for data-parallel computing devices
JP7172068B2 (ja) * 2018-03-12 2022-11-16 富士通株式会社 情報処理装置、演算処理装置及び情報処理装置の制御方法
US11157237B2 (en) 2018-11-13 2021-10-26 Hewlett Packard Enterprise Development Lp Memristive dot product circuit based floating point computations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6135645A (ja) 1984-07-27 1986-02-20 Fujitsu Ltd 郡別同報通信方式
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
JP3223549B2 (ja) 1991-12-24 2001-10-29 ソニー株式会社 Simd型並列演算装置
CA2129882A1 (en) * 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
JPH0830577A (ja) * 1994-07-15 1996-02-02 Mitsubishi Electric Corp Simdプロセッサ
JP2657903B2 (ja) 1994-11-29 1997-09-30 乾彌 呉 パイプライン式及び心収縮式の単命令多重データストリームのアレイプロセッサ及びその方法
US5680597A (en) * 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
US6173386B1 (en) * 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US7191310B2 (en) * 2000-01-19 2007-03-13 Ricoh Company, Ltd. Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs

Also Published As

Publication number Publication date
US7558943B2 (en) 2009-07-07
US20060020770A1 (en) 2006-01-26
JP2006039790A (ja) 2006-02-09

Similar Documents

Publication Publication Date Title
JP7374236B2 (ja) 加速数学エンジン
EP3552090B1 (en) Block floating point for neural network implementations
US20210311734A1 (en) Generalized acceleration of matrix multiply accumulate operations
JP6599522B2 (ja) コンパクトな演算処理要素を用いたプロセッシング
US7558943B2 (en) Processing unit for broadcast parallel processing
EP0377837B1 (en) Floating point unit having simultaneous multiply and add
CN111542826A (zh) 支持模拟协处理器的数字架构
JP2018055677A (ja) 外積累算演算のためのプロセッサおよび方法
Allan et al. Parameterised floating-point arithmetic on FPGAs
US10943039B1 (en) Software-driven design optimization for fixed-point multiply-accumulate circuitry
US8805914B2 (en) Method and apparatus for performing numerical calculations
US10678509B1 (en) Software-driven design optimization for mapping between floating-point and fixed-point multiply accumulators
US20210326111A1 (en) FPGA Processing Block for Machine Learning or Digital Signal Processing Operations
Reddy et al. Quantization aware approximate multiplier and hardware accelerator for edge computing of deep learning applications
Lei et al. FPGA implementation of an exact dot product and its application in variable-precision floating-point arithmetic
US20210389948A1 (en) Mixed-element-size instruction
CN110199255B (zh) 组合若干执行单元以计算单一宽标量结果
Isupov et al. Computing the Sparse Matrix-Vector Product in High-Precision Arithmetic for GPU Architectures
US20230110383A1 (en) Floating-point logarithmic number system scaling system for machine learning
Tan et al. A Multi-level Parallel Integer/Floating-Point Arithmetic Architecture for Deep Learning Instructions
Chen et al. Implementation of vector floating-point processing unit on FPGAs for high performance computing
Arndt et al. Hardware Accelerated Matrix Multiplication for Embedded Systems
Sajish et al. Floating point matrix multiplication on a reconfigurable computing system
Akella et al. Sparse matrix-vector multiplication kernel on a reconfigurable computer
CN116997888A (zh) 矩阵乘法运算的矩阵的近似

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090518

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100305

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100312

R150 Certificate of patent or registration of utility model

Ref document number: 4477959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250