JP2010271799A - 並列計算装置 - Google Patents
並列計算装置 Download PDFInfo
- Publication number
- JP2010271799A JP2010271799A JP2009121389A JP2009121389A JP2010271799A JP 2010271799 A JP2010271799 A JP 2010271799A JP 2009121389 A JP2009121389 A JP 2009121389A JP 2009121389 A JP2009121389 A JP 2009121389A JP 2010271799 A JP2010271799 A JP 2010271799A
- Authority
- JP
- Japan
- Prior art keywords
- spe
- flag
- unit
- instruction
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】並列計算装置は、複数の演算プロセッサーのそれぞれが、複数のサブプロセッサーを用いて並列演算処理を行う。サブプロセッサー(SPE)102Aは、入力されたデータを制御命令に基づいて演算処理するALU95Aと、演算処理された結果に基づいたフラグ情報が順次蓄積されるGフラグスタック11と、蓄積されたフラグ情報を合成部19が合成した合成フラグ情報に基づいてALU95Aに演算処理させるSPE制御部199Aとを備える。サブプロセッサー102Bは、入力されたデータを前記制御命令に基づいて演算処理するALU95Bと、合成部19が合成した合成フラグ情報に基づいてALU95Bに演算処理させるSPE制御部199Bとを備える。
【選択図】図11
Description
図を参照し、並列計算装置の一実施形態について示す。
図1は、本発明の第1実施形態を示す概略ブロック図である。
この図に示される並列計算装置1は、演算処理部100に含まれる複数のプロセッサーによって並列処理を行う。各実施形態の詳細な説明に先立ち、並列計算装置1の構成概要について説明する。
並列計算装置1は、演算処理部100、IO−CPU4、命令メモリ5、外部メモリ9を備える。
演算処理部100は、108個の演算プロセッサー(PE)2−0〜2−107(まとめて「演算プロセッサー(PE)2」という。)、及びPE2のそれぞれに制御命令を供給する制御信号生成部(PE−I)3が実装されている。
SPE2A〜2Dは、それぞれが異なる命令を実行するVLIW(Very Long Instruction Word)型の構成を有している。それぞれのPE2は、SPEが組み合わされた同じ構成である。また、全てのPE2が有する108個のSPE2Aは、SIMD(Single Instruction Multi Data)型で構成され、全てのSPE2Aで同一の命令を実行する。また、SPE2B、SPE2C、SPE2Dについても同様である。
それらのSPE2A〜2Dは、構成の異なる2種類のSPEの組み合わせで構成される。演算プロセッサー2の基本制御機能を有するSPE2Aと、SPE2Aの制御を受けるSPE2B〜SPE2Dの組み合わせを例にして説明する。
PE−I3は、演算プロセッサー2のプログラムにおけるループ処理やサブルーチンコールなどの条件分岐を必要とする処理の制御を行う。PE-I3及びPE2の命令をアセンブラプログラムで記述すると、SPE2AからSPE2D及びPE-I3の命令の5命令を並列に実行するVLIW型の命令として記述される。
SIMD+VLIW型の並列計算装置1で実行されるプログラムコードは、計算開始前にIO−CPU4によって外部メモリ9から予め読み込まれ、PE-I3に付属する命令メモリ5に書き込まれる。その後、IO−CPU4がPE-I3に計算開始信号を送ると、PE-I3は命令メモリから自分自身で実行する命令と、SPE2AからSPE2Dで実行すべき4個の命令とを読み出して計算を開始する。計算対象のデータはIO−CPU4によって外部から取り込まれ、PE2のデータ入力レジスターにそれぞれ分割して転送される。また、計算結果はIO−CPU4によって演算処理部100から読み出され、外部機器又は外部メモリ9へ転送される。
このように、演算処理部100における複数のPE2は、並列して演算処理を行うことができる。
図2は、本発明の実施形態における演算プロセッサー2における各サブプロセッサーが参照可能な記憶部を示す図である。この図に示されるR0からR15は、各SPEが参照できる記憶領域を示す。
4個のSPEから共通に参照可能な12個のレジスターR4〜R15がある。これらのレジスターは各SPEから読み書きできるが、2つ以上のSPEからの書き込み処理が重なる場合は、SPE2A、SPE2B、SPE2C、SPE2Dの順で優先的に処理される。SPE2AのAccは、SPE2Aが参照するほかに、他のSPEからはレジスターR0として参照することにより読み出すことができる。また、SPE2AのAccは、SPE2Aは書き込むことができるが、SPE2A以外のSPEからは書き込むことはできない。同様に、SPE2B、SPE2C、SPE2DのAccは、それぞれレジスターR1、R2、R3として参照することにより読み出すことができるが、同じSPEにないAccには書き込むことはできない。
演算プロセッサー2は、SPE2A〜2Dと、各SPEから参照されるレジスター91を備える
SPE2Aは、Acc93A、セレクター94A、ALU95A、フラグレジスター97A、SPE制御部99Aを備える。同様に、SPE2Bは、Acc93B、セレクター94B、ALU95B、フラグレジスター97B、SPE制御部99Bを備える。SPE2Cは、Acc93C、セレクター94C、ALU95C、フラグレジスター97C、制御部99Cを備える。SPE2Dは、Acc93D、セレクター94D、ALU95D、フラグレジスター97D、制御部99Dを備える。
Acc93A〜Acc93Dは、ALU95A〜95Dが参照するアキュムレータである。セレクター94A〜94Dは、Acc93A〜Acc93Dからの入力を選択する。ALU95A〜95Dは、各SPEにおいて演算を行うALUである。
SPE2Aにおいて、ALU95Aの一方の入力は、Acc93Aからのデータが供給される。ALU95Aの他方の入力は、セレクター94Aにより、レジスター91、Acc93AとAcc93BとAcc93CとAcc93Dからのデータが選択され供給される。ALU95Aによる演算結果は通常はAcc93Aに書き込まれるが、Acc93Aのデータをレジスター91へ転送する命令を使って、レジスターR4〜R15のいずれかを選択して書き込むことができる。但し、SPE2A以外の他のSPEのAcc93B〜Acc93Dに書き込むことはできない。
SPE2B〜SPE2Dにおいても、SPE2Aと同じ構成を有する。
なお、フラグレジスター97A〜97D及び制御部99A〜99Dは、構成、機能の定義を代えることにより、いくつかの並列処理の方法を設定することができる。詳細については、以下に示す実施形態を参照する。
各実施形態に共通する基本構成として、各ALUにおける命令の実行制御を命令ごとに判断するのではなく、一つのフラグ(G)を設けて、その値が「1」ならば命令を実行し、「0」ならば実行しないという判定を行うこととする。このような構成にすることで命令ごとの条件判断フィールド(ビット)が不要になり、オブジェクトコードをコンパクトにできる。さらに、スタック構造を設けたGフラグスタックによってこのフラグの値を保持することで、PE2の処理は、多重ネストを可能とする条件分岐処理が実現できる。
また、Gフラグスタック内に保持される全ての値の論理積を取った信号をGフラグと呼ぶことにする。各SPEでは、Gフラグの値が「1」の場合に命令を実行し、「0」の場合には命令は実行しないように制御することが容易になる。また、PE2をリセット(初期化)した直後は、Gフラグスタック内の値は全て1とする。これにより、リセット直後の命令の実行は、Gフラグにより制限されることはない。
これら6個の命令は、Gフラグの値に拘らず実行される。
「PSH」命令はオペランドにC、N、V、Zの各コンディションフラグの中から任意の数のコンディションフラグを選択し、条件判定の条件に指定できる。この命令はGフラグスタックを1段下にプッシュし、最上段に新たな値を設定する。例えば、「PSH C, Z」命令とすると、C(キャリー)フラグとZ(ゼロ)フラグの論理和を取って、それが「1」ならばGフラグスタックの最上段の値を1にし、「0」ならば最上段の値を0にする。
「PSHI」命令は、Gフラグスタックを1段下にプッシュし、最上段に新たな値を設定する。この命令は、オペランド指定されたフラグの論理和を取った後で、それが「0」ならば、Gフラグスタックの最上段の値を1にし、「1」ならば最上段の値を0にする。これらの命令は「if 〜 then 文」によって示される処理に相当する。
「GINV」命令は、Gフラグスタックの最上段の値を反転するので、「else文」に相当する。
「POP」命令は、Gフラグスタックを1段上にポップ(シフト)し、最下層に1をセットする。これは「if文」の最後に相当する。
「POPI」命令は、「POP」命令と「GINV」命令を一つに纏めたものである。
「FLSH」命令は、Gフラグスタックに保持される値を全て1にする。
図に示されるフラグ処理部10は、Gフラグスタック11、OR回路12、AND回路13、OR回路14、OR回路17、EXOR回路18及び合成部(AND回路)19が示されている。フラグ処理部10は、PEごとに少なくとも1個が設けられる。
Gフラグスタック11は、フラグの値を記憶するスタック構造化された記憶部である。例としてスタックの階層を4層として示す。したがって、4層までのネスティングに対応可能である。同様の構成が全てのPE2に必要である。Gフラグスタックは常に、図示されない並列計算装置1内部の基本クロックの立ち上がりで変化する。
一方、flag_xとして示す信号は、ALU(例えば、図2におけるALU95A)が出力したコンディションフラグをフラグレジスター(例えば、図2におけるフラグレジスター97A)で保持した値を出力する出力信号を示す。flag_xという信号は、個々のSPEから出力される固有のコンディションフラグの値を示す信号である。したがって、全てのSPEにそれぞれフラグレジスターを配置した構成では、PE2が108個在り、各PE2にSPEが4個在るので、合計432本の異なる信号になる。
system_resetとして示す信号は、並列計算装置1のシステム全体をリセットする共通信号であり、この信号又はcnt_FLSH信号がアクティブになると、Gフラグスタックの値は全て1になる。
cnt_FLSH信号は、「FLSH」命令が発行されるとアクティブになる。
「POP」命令が発行されるとcnt_POP信号がアクティブになり、Gフラグスタックがポップされる。すなわち、スタックG1に保持された値がスタックG0へ、スタックG2に保持された値がスタックG1へ、スタックG3に保持された値がスタックG2へとシフトされる。また、スタックG3には1がセットされる。
「POPI」命令は、「POP」命令と「GINV」命令を組み合わせて一度に行う。すなわち、Gフラグスタックを1段ポップして、その後で最上段のスタックG0を反転する。
合成部19は、スタックG0からスタックG3の全ての値の論理積を取った結果を示す信号が、命令の実行を制御する信号Global_Inst_en(Gフラグ)になる。この信号はSPEごとに異なる。
図には、Acc制御部92とAcc93が示され、ALU_out信号は、ALU(例えば、ALU95A)が出力する信号であり、Acc_out信号は、Acc93がALU(例えば、ALU95A)に入力する信号である。また、Acc制御部92は、PE-I3に在る命令デコーダ(図示しない)からのAcc93への書き込み制御信号cnt_Acc_wrと、Gフラグ(Global_Inst_en信号)との論理積をとってAcc93のロードイネーブル信号としている。ロードイネーブル信号がアクティブになると、図示されない並列計算装置1内部の基本クロックの立ち上がりでAcc93の状態が変化する。
図7は、2重にネスト(入れ子)したプログラムを、並列計算装置1のアセンブラプログラムで記述した例を示す。このプログラムでは、図7のコード中の各変数を、図8に示すように各レジスターヘ割り付けてあると仮定している。また、図42に示した命令以外に図7で用いる命令については、図9にその動作が説明されている。図7中で”//”記号の後には、プログラムの動作を理解し易くする為のコメントをC言語的に示す。これらのコメントは、図45に示されたコードに対応している。この様に、本発明の技術を用いることで構造化されたプログラムを、容易にアセンブラコードに変換できる。すなわち容易に機械語に変換できる。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理に関する基本構成は図3を参照する。
図に示される演算処理部100は、並列して演算処理を行う複数の演算プロセッサー(PE)102と、複数のPE102にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3とを備える。
SPE102A〜SPE102Dは、図3のSPE2A〜2Dの演算処理の基本構成と同じ構成を有するほかに、それぞれ次の構成を有する。
SPE102Aは、Gフラグ処理部10とSPE制御部199Aを備え、SPE102B〜102Dは、SPE制御部199B〜199Dを備える。
また、SPE102AにおけるGフラグ処理部10は、SPE制御部199A〜199DにGフラグ信号を供給する。SPE制御部199A〜199Dは、供給されたGフラグ信号に基づいて、それぞれのSPEにおける演算制御を行う。
この図には、PE102におけるSPE102A〜102Dの構成が示される。
SPE102Aでは、SPE演算処理部190AとGフラグ処理部10の詳細構成、SPE102Bでは、SPE演算処理部190Bの詳細構成が示される。SPE102CとSPE102Dでは、SPE102Bと同様の構成を備えることから、記載を省略する。また、前述の図5と同じ構成には同じ数字の符号を附し、異なる構成について説明する。
フラグレジスター97Aは、フラグレジスター97A−C、97A−N、97A−V、97A−Zを備え、それぞれが、ALU95Aの演算結果に応じて変化するコンディションフラグC、N、V、Zの値を記録し、保持する。フラグレジスター97A−C、97A−N、97A−V、97A−Zは、記録された値の基づいてflag-C信号、flag-N信号、flag-V信号、flag-Z信号をそれぞれ出力する。
Acc制御部92Aは、図6に示したAcc制御部92と同じ構成であるが、SPE102Aの構成であることを示すため符号に「A」を付している。Acc制御部92Aは、PE-I3に在る命令デコーダ(図示しない)からのアキュムレータへの書き込み信号cnt_Acc_wr_Aと、Gフラグ(Global_Inst_en信号)との論理積をとってAcc93Aのロードイネーブル信号としている。
フラグ制御部96Aは、フラグレジスター97Aに記憶される各コンディションフラグの値の書き込みをGフラグとPE-I3からの制御信号に応じて制御する。Gフラグがアクティブであり、それぞれのフラグの状態の書き込みを行う指令がPE-I3から出力されているときに、フラグレジスター97Aは書き込まれる。コンディションフラグの書き込みを行う指令は、cnt_C_wr_A、cnt_N_wr_A、cnt_V_wr_A、cnt_Z_wr_A信号がアクティブであるとき、それぞれキャリーフラグ(C)、ネガティブフラグ(N)、オーバーフローフラグ(V)、ゼロフラグ(Z)の値が書き込まれる。レジスター91(R4-R15)も同様に、PE−I3から出力される書き込みを行う指令に、Gフラグの値との論理積が取られる。
SPE演算処理部190BにおけるSPE制御部199Bは、Acc制御部92Bを備える。Acc制御部92Bは、Acc制御部92Aと同じ構成であり、PE-I3に在る命令デコーダ(図示しない)からのAcc93Bへの書き込み信号cnt_Acc_wr_Bと、Gフラグ(Global_Inst_en信号)との論理積をとってAcc93Bのロードイネーブル信号としている。
図12は、Gフラグ処理部とSPE制御部を示すブロック図である。
この図には、Gフラグ処理部10と、各SPEが備えるSPE制御部199A〜199Dが示される。前述の図10に示したように、Gフラグ処理部10は、出力するGフラグ信号(Global_Inst_en)をSPE制御部199A〜199Dに入力する。
図に示されるGフラグ処理部10は、図5に示したGフラグ処理部10と同じ構成を有する。
図13は、高速化処理が行えるプログラムを示す。
この図に示されるプログラムは、前述の図7と同じであるが、後の説明を分かり易くする為に処理単位ごとに「*印」をつけ分類する。
図14は、第1実施形態による並列演算処理のプログラムを示す。
この図に示されるプログラムは、第1実施形態に示した構成を用いてプログラムを4並列に変換した例を示す。SPE102Aで条件判断を行い、SPE102B等ではその結果に応じて命令実行が制御される。
先ず「*1」を付した命令部分を説明する。SPE102Aで条件判断する(ステップ3)までの間に、SPE102Bによって「ADD R7」命令まで実行する。SPE102Bは、「PSHI C,Z」命令を実行した直後のステップ4の「MV R7」命令で、演算結果をレジスターR7に書き込む。
「*3」と「*4」を付した命令の部分は、注意が必要である。SPE102CとSPE102Dで予めデータを用意しておいて、命令実行条件が決定した直後に用意したデータを続けて書き込みたいが、ステップ3ではSPE102Aで「PSHI C,Z」命令が実行される。
SPE102Aでステップ3の「PSHI C,Z」命令が実行された後では、条件判断が行われることからSPE102CとSPE102Dで命令が実行されるかどうか不明である。そこで、SPE102Aにおいてステップ3の「PSHI C,Z」命令が実行される前に、SPE102CとSPE102Dでは、データを準備している。このように4つのSPEで並列処理することで、図13では21クロックかかった処理が、図14では11クロックと約半分で終えることができる。
サブプロセッサーSPE102Aにおいて、ALU95Aは、入力されたデータを前記制御命令に基づいて演算処理する。Gフラグスタック11は、スタック構造を有する記憶部であり、演算処理された結果に基づいたフラグ情報が順次蓄積される。合成部19は、Gフラグスタック11に蓄積されたフラグ情報を合成する。SPE制御部199Aは、合成部19が合成した合成フラグ情報に基づいてAcc93Aやフラグレジスター97A及びレジスター91への書き込みを制御する。
サブプロセッサーSPE102B〜102Dにおいて、ALU95B〜95Dは、入力されたデータを制御命令に基づいて演算処理する。SPE制御部199B〜199Dは、合成部19が合成した合成フラグ情報に基づいてAcc93B及びレジスター91への書き込みを制御する。
これにより、SIMD型にVLIW型を組み合わせた並列計算装置において、多重にネストした構造化プログラムをサポートするハードウェアを容易に実現できる。
次に本発明の第2実施形態について説明する。
図15は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部200は、並列して演算処理を行う複数の演算プロセッサー(PE)202と、複数のPE202にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部20B〜20Dを備える。
SPE202Aは、Gフラグ処理部10とSPE制御部299Aを備える。
SPE202B〜202Dは、それぞれSPE制御部299B〜299Dと実行選択部24B〜24Dを備える。
Gフラグ処理部10は、SPE制御部299A〜299DにGフラグ信号を供給する。
実行選択部24B〜24Dは、供給されたGフラグ信号と実行許可信号に基づいて、SPE制御部299B〜299Dにそれぞれ実行許可信号を出力する。
SPE制御部299A〜299Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
前述の図15に示すように、Gフラグ処理部10は、SPE202Aにだけ設ける。SPE202A以外のSPEは、SPE202Aが出力するGフラグの値に応じて命令実行が制御されるか、又はSPE202AのGフラグに影響されず常に命令を実行するかを選択できるようにする。
この選択を行うために、この図に示される命令を追加する。これらの命令はSPE202B、SPE202C、SPE202Dで常に実行可能である。
例えば、SPE202Bにおいて「SYNC」命令を実行すると、SPE202Bは、それ以降はSPE202AのGフラグの値を命令実行制御に使うようになり、「ASYNC」命令を実行すると、それ以降はSPE202AのGフラグの値とは無関係に命令を実行するようになる。
図17は、Gフラグ処理部とSPE制御部を示すブロック図である。
この図には、Gフラグ処理部10と、各SPEが備えるSPE制御部299A〜299D、実行選択部24B〜24D及び実行制御部20B〜20Dが示される。前述の図10、12、15に示した構成と同じ構成には、同じ符号を附す。
Gフラグ処理部10は、前述の図5に示した構成と同じであり、出力する信号をGlobal_Inst_en_Aとする。Global_Inst_en_Aは、SPE202Aの信号であることを明示する以外は、図5のGlobal_Inst_en信号と同じである。
実行制御部20Bからの出力en0_Bは、実行選択部24Bに入り、SPE制御部299Bを制御する制御信号Global_Inst_en_B信号を生成する。Global_Inst_en_B信号は、SPE202Bにおいて、命令実行制御に使われる。並列計算装置1を初期化するsystem_reset信号がアクティブ(「1」)になると、フリップフロップ21がセットされてen0_B信号が「1」になる。これにより、実行選択部24BがSPE制御部299Bに入力するGlobal_Inst_en_B信号が常に「1」になるので、SPE202Bでは、常に命令が実行される。
また、「SYNC」命令が発行されるとcnt_SYNC_B信号がアクティブになるが、cnt_ASYNC_B信号はノンアクティブ(「0」)のままなので、フリップフロップ21の出力en0_Bが「0」になる。したがって、Global_Inst_en_Aの状態に応じてGlobal_Inst_en_ Bの状態が定まる。 つまり、SPE202BはSPE202AのGフラグに応じて、その命令実行が制御される。
実行制御部20C及び20Dは、実行制御部20Bと同じ構成であり、入力される信号がそれぞれSPE202C及びSPE202Dの制御信号である点が異なる。
実行選択部24C及び24Dは、それぞれ実行制御部20C及び20Dからの制御信号en0_C及びen0_Dによって制御され、出力に接続されるSPE制御部299C及び299Dを介してSPE202C及びSPE202Dの制御を行う。
図18は、本実施形態に示した並列計算装置1において、図13のプログラムを実行するために、4並列処理を行うVLIW型用に変換した例を示す。
SPE202Aにおいて、条件判断等を行い、SPE202B等ではその結果に同期して命令を実行する。
先ず、「*1」を付した命令の部分であるが、SPE202Aで条件判断する(ステップ3)までの間にSPE202Bで「ADD R7」命令まで実行する。SPE202Aで「PSHI C,Z」命令を実行した直後に「MV R7」命令で結果をレジスターR7に書き込む。「*2」を付した命令の部分も同様であり、ステップ6において、Acc−Bに予め「0」を用意しておくことで、SPE202Aで「CMP R6」命令の結果をGフラグスタックにプッシュした直後にレジスターR7を「0」を書き込む。同時に「*3」を付した命令で示すようにSPE202Cでも予めデータを用意しておき、直ぐにレジスターR9への書き込みを行える。
なお、図18においてSPE202B〜202Dで使われていない部分を空白又は網掛けで示した。空白部分には任意の命令をおくことができ、SPE202Aと同期する必要が無い命令を並列実行できる。一方、網掛けの部分には、SPE202Aと同期した命令か、「NOP」命令が配置できる。本実施形態では、第1実施形態に比べて1クロック余計に掛かっているが、空白部分に他の命令を配置することができる。したがって、実施形態1よりも実行効率を高めることができるため、演算処理全体では短時間で処理を終了することが可能となる。
次に本発明の第3実施形態について説明する。
図19は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部300は、並列して演算処理を行う複数の演算プロセッサー(PE)302と、複数のPE302にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部30B〜30Dを備える。
SPE302Aは、Gフラグ処理部10AとSPE制御部399Aを備える。
SPE302Bは、Gフラグ処理部10BとSPE制御部399Bと実行選択部34Bを備える。SPE302Bは、前述の図11に示したSPE102Aに相当する構成に加え、実行選択部34Bを備える。Gフラグ処理部10BとSPE制御部399Bは、それぞれGフラグ処理部10とSPE制御部199Aに相当し、入出力信号が、SPE302Bとしての接続に代わる。また、Gフラグ処理部10BとSPE制御部399Bは、実行選択部34Bを介して接続する。
また、SPE302Cは、Gフラグ処理部10CとSPE制御部399Cと実行選択部34Cを備える。SPE302Dは、Gフラグ処理部10DとSPE制御部399Dと実行選択部34Dを備える。SPE302CとSPE302Dは、SPE302Bと同様の構成を有する。
実行選択部34Bは、供給されたGフラグ信号とGbフラグ信号のいずれかを、SPE制御部399Bの実行許可信号として出力する。実行選択部34Cは、供給されたGフラグ信号とGcフラグ信号のいずれかを、SPE制御部399Cの実行許可信号として出力する。実行選択部34Dは、供給されたGフラグ信号とGdフラグ信号のいずれかを、SPE制御部399Dの実行許可信号として出力する。
SPE制御部399A〜399Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
図20は、第3実施形態の構成において追加する命令を示す。
これらの命令はSPE302B、SPE302C、SPE302Dで実行可能である。
例えば、SPE302Bにおいて「SYNC」命令を実行すると、SPE302Bは、それ以降はSPE302AのGフラグを命令実行制御に使うようになり、「ASYNC」命令を実行すると、それ以降はSPE302AのGフラグから切り替えて、SPE302Bが有するGフラグ(Gb)の値を命令実行制御に使うようになる。SPE302C、SPE302Dについても、同様である。
図21は、Gフラグ処理部とSPE制御部を示すブロック図である。
この図には、Gフラグ処理部10A〜10Dと、各SPEが備えるSPE制御部399A〜399D、実行選択部34B〜34Dは、及び実行制御部30B〜30Dが示される。前述の図10、12に示した構成と同じ構成には、同じ数字の符号を附す。
Gフラグ処理部10A〜10Dは、前述の図5に示した構成と同じであり、それぞれ出力する信号をGlobal_Inst_en_A(「G」と示す。)〜Global_Inst_en_D(「Gd」と示す。)とする。Global_Inst_en_Aは、SPE302Aの信号であることを明示する以外は、図5のGlobal_Inst_en信号と同じである。Global_Inst_en_B(Gb)〜Global_Inst_en_D(Gd)についても同様である。
実行制御部30Bは、実行選択部34Bを制御する制御信号sel_B信号を生成する。並列計算装置1を初期化するsystem_reset信号がアクティブ(「1」)になると、フリップフロップ31Bはセットされsel_B信号が「1」になる。したがって、セレクター34BでGlobal_Inst_en_B信号が選ばれて、SPEB302Bの命令を制御するGlobal_Inst_en_act_B(Gba)信号になる。つまり、リセット直後はSPE302BのGbフラグで命令実行が制御される。
「ASYNC」命令が発行されるとcnt_ASYNC_B信号がアクティブになり、フリップフロップ31Bには「1」が書き込まれる。したがって、SPE302Bは、Gbフラグの値を実行制御に使うようになる。なお、フリップフロップ31Bは図示しない並列計算装置1内部の基本クロックの立ち上がりで変化する。
SPE302C、SPE302Dの実行制御回路30Cと30D(シンクロナイズ回路)も実行制御回路30Bと同様であるが、図示されないセレクターのB入力への信号がGlobal_Inst_en_Bではなく、それぞれGlobal_Inst_en_CとGlobal_Inst_en_Dとなり、セレクターのS入力への信号がsel_Bではなく、それぞれsel_Cとsel_Dとなり、またセレクターの出力がGlobal_Inst_en_act_C(Gca)とGlobal_Inst_en_act_D(Gda)となるところが異なる。
図22に並列計算装置1において、図13のプログラムを実行するために4並列処理を行うVLIW型用に図13のプログラムを変換した例を示す。
SPE302Aで条件判断等を行い、SPE302B等ではその結果に同期して命令を実行する。
先ず、「*1」を付した命令の部分であるが、SPE302Aで条件判断する(ステップ3)までの間にSPE302Bによって「ADD R7」命令まで実行する。SPE302Aで「PSHI C,Z」命令を実行した直後に「MV R7」命令で結果をレジスターR7に書き込む。「*2」を付した命令の部分も同様であり、Acc−Bに予め0を用意しておくことで、SPE302Aで「CMP R6」命令の結果をGフラグスタック11Aにプッシュした直後にレジスターR7をクリアできる。同時に「*3」を付した命令で示すようにSPE302Cでも予めデータを用意しておき、直ぐにレジスターR9への書き込みを行える。
SPE302Dで実行される「*4」を付した命令部分については注意が必要である。これらの命令はSPE302Aにおける「GINV」命令の後で、実行するかしないかが決定される。つまり、SPE302Cのように事前にデータを用意することができない。そこで、SPE302AのGフラグとは無関係に「MVA R10」命令と「INC」命令を実行しておき、SPE302Aでの「GINV」命令と同時に「SYNC」命令を実行することで、「MV R10」命令だけをSPE302Aと同期させている。このように4つのSPEで並列処理することで、図13では21クロックかかった処理が12クロックで終了することができる。
この例では、前述の第2実施形態と同じ結果になっているが、各SPEが独立にネストしたプログラムを実行できるので命令実行の柔軟性が上がり、演算処理全体では第2実施形態よりも短時間で処理できる。
次に、本発明の第4の実施形態について説明する。
図23は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部400は、並列して演算処理を行う複数の演算プロセッサー(PE)402と、複数のPE402にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部40A〜40Dを備える。
SPE402Aは、Gフラグ処理部10AとSPE制御部499Aと実行選択部44Aを備える。SPE402Aは、前述の図11に示したSPE102Aに相当する構成に加え、実行選択部44Aを備える。Gフラグ処理部10AとSPE制御部499Aは、それぞれGフラグ処理部10とSPE制御部199Aに相当し、入出力信号が、SPE402Aとしての接続を示す。また、Gフラグ処理部10AとSPE制御部499Aは、実行選択部44Aを介して接続する。
SPE402Bは、Gフラグ処理部10BとSPE制御部499Bと実行選択部44Bを備える。SPE402Bは、前述の図11に示したSPE102Aに相当する構成に加え、実行選択部44Bを備える。Gフラグ処理部10BとSPE制御部499Bは、それぞれGフラグ処理部10とSPE制御部199Aに相当し、入出力信号が、SPE402Bとしての接続に代わる。また、Gフラグ処理部10BとSPE制御部499Bは、実行選択部44Bを介して接続する。
また、SPE402Cは、Gフラグ処理部10CとSPE制御部499Cと実行選択部44Cを備える。SPE402Dは、Gフラグ処理部10DとSPE制御部499Dと実行選択部44Dを備える。SPE402CとSPE402Dは、SPE402Bと同様の構成を有する。
実行選択部44A〜44Dは、Gフラグ信号とGbフラグ信号〜Gdフラグ信号のいずれかをそれぞれ選択し、SPE制御部499A〜499Dの実行許可信号として出力する。
SPE制御部499A〜499Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
前述の図20との違いは「SYNC」命令にA、B、C又はDの何れか一つのオペランドを指定できることである。例えば、SPE402Aにおいて「SYNC B」命令を実行すると、それ以降はSPE402BのGフラグの値を命令実行制御に使うようになる。「ASYNC」命令を実行すると、それ以降は各SPE402内に備えるGフラグを参照し、その値命令実行制御に使うようになる。
また、SPE102AにおけるGフラグ処理部10を参照し、Gフラグ処理部とSPE制御部の接続を示しつつ説明する。
この図には、Gフラグ処理部10A〜10Dと、各SPEが備えるSPE制御部499A〜499D、実行選択部44B〜44Dは、及び実行制御部40B〜40Dが示される。前述の図10、12、15に示した構成と同じ構成には、同じ符号を附す。
Gフラグ処理部10A〜10Dは、前述の図10に示した構成と同じであり、それぞれ出力する信号をGlobal_Inst_en_A(「Ga」と示す。)〜Global_Inst_en_D(「Gd」と示す。)とする。Global_Inst_en_Aは、SPE402Aの信号であることを明示する以外は、図10のGlobal_Inst_en信号と同じである。Global_Inst_en_B(Gb)〜Global_Inst_en_D(Gd)についても同様である。
system_resetか又は、「ASYNC」命令が発行されてcnt_ASYNC_Aがアクティブになると、図中の2つのフリップフロップ41A、42Aはリセットされてsel1_A信号とsel0_A信号は共に「0」になる。よって、セレクター44AでGlobal_Inst_en_A(Ga)が選ばれて、SPE402Aの命令を制御する信号Global_Inst_en_act_Aになる。つまり、リセット直後は自分自身のGフラグの値を実行制御に使う。「SYNC」命令が発行されるとcnt_SYNC_Aがアクティブになり、cnt_Gsel_1_Aとcnt_Gsel_0_Aの値をフリップフロップ41A、42Aに書き込む。これらの値によって選ばれたGフラグ信号がGlobal_Inst_en_act_Aになる。
フリップフロップ41A、42Aの制御は、cnt_Gsel_1_Aとcnt_Gsel_0_Aの設定により行う。
この図に示されるように、「SYNC」命令のオペランドに応じて値が決まる。図25に示したフリップフロップ41A、42Aは、SPE402Aの場合である。SPE402B、SPE402C、SPE402Dの実行制御回路40B〜40Dも同様である。ただし、system_resetかcnt_ASYNC_B〜cnt_ASYNC_Dがアクティブになった時のsel1_B〜sel1_Dとsel0_B〜sel0_Dを保持するフリップフロップ41B〜41D、42B〜42Dが出力する値が異なり、SPE402Bは(0,1)、SPE402Cは(1,0)、そしてSPE402Dは(1,1)である。
図27は、並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に図13のプログラムを変換した例を示す。
条件判断はどのSPEでも実行できるが、ここではSPE402Bで条件判断等を行い、他のSPEはその結果に同期して命令を実行する。先ず、「*1」を付した命令の部分であるが、SPE402Bで条件判断する間にSPE402Aによって「ADD R7」命令(ステップ3)まで実行しておき、SPE402Bで「PSHI C,Z」命令を実行した直後に「MV R7」命令で結果をレジスターR7に書き込む。「*2」を付した命令の部分も同様であり、Acc93Aを予めSPE402Aで「0」にしておくことで、SPE402Bで「CMP R6」命令の結果をGフラグスタックにプッシュした(ステップ6)直後にレジスターR7をクリアできる。同時に「*3」を付した命令で示すようにSPE402Cでも予めデータを用意しておき、直ぐにレジスターR9への書き込みを行える。
本発明の第5の実施形態について説明する。
ここでは例としてSPE502Aを特別なSPEとし、他のSPEがそれに同期するか否かを制御できるようにする。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部500は、並列して演算処理を行う複数の演算プロセッサー(PE)502と、複数のPE502にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部50SCB〜50SCDを備える。
SPE502Aは、Gフラグソース50FSAとGフラグスタック50STAとSPE制御部599Aを備える。
SPE502Aは、前述の図11に示したSPE102Aに相当する構成において、Gフラグ処理部10を2つに分けた構成を有する。一方の前段処理を行うGフラグソース50FSAは、選択されたフラグレジスターの出力を1つの信号にまとめ、出力する。他方の後段処理を行うGフラグスタック50STAは、前述のGフラグスタック11と合成部19に相当する。Gフラグスタック50STAは、前段のフラグソース50FSAが出力した信号を条件に応じて記録する。SPE制御部599Aは、SPE制御部199Aに相当する。
SPE502Bは、Gフラグソース50FSBとGフラグスタック50STBとSPE制御部599Bと実行選択部55Bを備える。すなわち、SPE502Bは、前述のSPE502Aに相当する構成に加え、実行選択部55Bを備える。また、Gフラグソース50FSBとGフラグスタック50STBは、実行選択部55Bを介して接続する。
また、SPE502Cは、Gフラグソース50FSCとGフラグスタック50STCとSPE制御部599Cと実行選択部55Cを備える。SPE502Dは、Gフラグソース50FSDとGフラグスタック50STDとSPE制御部599Dと実行選択部55Dを備える。SPE502CとSPE502Dは、SPE502Bと同様の構成を有する。
実行選択部55B〜55Dは、Gフラグソース信号又はGbフラグソース信号〜Gdフラグソース信号のいずれかをそれぞれ選択し、それぞれのGフラグスタック50STB〜50STDに蓄積する。それぞれのGフラグスタック50STB〜50STDは、蓄積されたGフラグソース信号に基づいて、SPE制御部599A〜599Dの実行制御信号を出力する。
SPE制御部599A〜599Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
これらの命令はSPE502B、SPE502C、SPE502Dでのみ有効であり、SPE502Aで「PSH」命令又は「PSHI」命令でGフラグスタックをプッシュするタイミングでのみ実行できる。
この図には、SPE502Aの概略構成と、SPE502Bの構成を示す。
SPE502Aは、Gフラグソース50FSA、フラグスタック50STA及びSPE制御部599Aが示されている。
Gフラグソース50FSAは、図示されないフラグレジスター97から出力されるコンディションフラグの値と、PE−I3が指定した制御信号とのゲート処理を行って、判定するコンディションフラグの状態を検出したGフラグソース信号(Gflag_org_A)を出力する。入力される各信号は、前述の図5と同じである。
Gフラグソース50FSAは、SPE502AにおけるGフラグスタック50STAにGフラグソース信号(Gflag_org_A)を供給し、SPE502Aの制御を行う。また、Gフラグソース50FSAは、SPE502B及び図示されないSPE502C、SPE502DにGフラグソース信号(Gflag_org_A)を供給する。SPE制御部599Aは、SPE制御部199Aに相当する。
Gフラグソース50FSB及びSPE制御部599Bは、前述のSPE502Aと同じ構成を有する。
実行選択部55Bは、入力されるGフラグソース50FSA及びGフラグソース50FSBの信号を選択してフラグスタック50STBに出力する。
実行制御部50SCBは、SPE502Bにおける「PSH」命令か「PSHI」命令に応じて、実行制御部55Bの入力信号の選択を制御する。
フラグスタック50STBは、実行選択部55Bで選択された結果を、Gフラグスタック51Bに順次蓄積する。
SPE502Bについて示したが、SPE502C、SPE502Dについても同じ構成で接続される。
図31は、並列計算装置1において、図13のプログラムを実行するために図13のプログラムを並列化した例を示す。
SPE502Aで条件判断を2回行って「PSHI」命令でGフラグスタックにプッシュしている。同時にSPE502BとSPE502Cでは2回とも「SYNCI」命令でGフラグスタックにプッシュしている。この結果、SPE502BとSPE502CのGフラグはSPE502AのGフラグ同じ値を保持しているので、SPE502Aで実行される命令はSPE502BとSPE502Cでも実行され、SPE502Aで実行されない命令はSPE502BとSPE502Cでも実行されない。
そこで、予め「MVA R8」命令と「ADD R5」命令でデータを用意しておき、「SYNC」命令の直後に「MV R8」命令で結果をレジスターR8に書き込んでいる。「MV R8」命令直後の「GINV」命令には注意が必要である。図13の「*4」を付した命令部分はSPE502Aでの最初の条件判断が真で、2番目の条件判断が偽の場合に実行される。SPE502Dでは最初の条件判断でSPE502Aとは反対の値をGフラグスタックにプッシュしているので、そのままでは「*4」を付した命令部分を実行できない。そこで「GINV」命令によって最初にプッシュした値を反転している。その後、SPE502Aで2度目の「PSHI C,Z」命令が実行される時に、「SYNC」命令でSPE502Aとは反対の値をプッシュすることで「*4」を付した命令部分を担当できるようになる。この実施形態では全ての処理が10クロックで終了する。
本発明の第6の実施形態について説明する。
図32は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部600は、並列して演算処理を行う複数の演算プロセッサー(PE)602と、複数のPE602にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部50SCA〜50SCDを備える。
SPE602Aは、Gフラグソース50FSA、Gフラグスタック60STA、SPE制御部699A及び実行選択部645Aを備える。
SPE602Aは、前述のSPE502Aに相当する構成に加え、入力されるGフラグソース信号を実行選択部645Aからの制御信号に基づいて選択する構成を備える。Gフラグスタック60STAは、Gフラグスタック50STAと同じ構成である。SPE制御部699Aは、SPE制御部199Aに相当する。
SPE602Bは、Gフラグソース50FSBとGフラグスタック60STBとSPE制御部699Bと実行選択部645Bを備える。SPE602Cは、Gフラグソース50FSCとGフラグスタック60STCとSPE制御部699Cと実行選択部645Cを備える。SPE602Dは、Gフラグソース50FSDとGフラグスタック60STDとSPE制御部699Dと実行選択部645Dを備える。
SPE602B〜SPE602Dは、SPE602Aと同様の構成を有する。
実行選択部645A〜645Dは、Gフラグソース50FSA〜50FSDから供給されたGフラグソース信号(Gaフラグソース信号〜Gdフラグソース信号)のいずれかをそれぞれ選択し、選択された信号の値をそれぞれのGフラグスタック60STA〜60STDに蓄積する。それぞれのGフラグスタック60STA〜60STDは、蓄積されたGフラグソース信号に基づいて、SPE制御部699A〜699Dの実行制御信号を出力する。
SPE制御部699A〜699Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
図34は、第6実施形態のSPEの同期化回路を示すブロック図である。
図34には、代表してSPE602Aの構成例を示す。SPE602Aは、Gフラグソース50FSAとGフラグスタック60STAとSPE制御部699Aと実行選択部645Aを備える。
実行選択部645Aは、実行選択部64Aと65Aを備える。
実行選択部64Aは、図25に示す実行選択部44Aと同じで構成であり、実行選択部65Aは、図30に示した実行選択部55Bと同じ構成である。
また、実行制御部60SCAは、図30に示した実行制御部50SCBに相当する実行制御部50SCAの構成と図25に示した実行制御部40Aの構成を合わせて備える。
実行制御部60SCAは、SPE602Aにおける「PSH」命令か「PSHI」命令に応じて、実行制御部645Aの入力信号の選択を制御する。
フラグスタック60STAは、実行選択部645Aで選択された結果を、Gフラグスタック51Aに順次蓄積する。
SPE602Aについて示したが、SPE602B、SPE602C、SPE602Dについても同じ構成で接続される。
また、「PSH」命令か又は「PSHI」命令が実行された場合に、Gフラグスタックにプッシュされる値は、図5の場合と同じである。これらの命令のオペランドによって選択されたコンディションフラグは、Gflag_org_Aとして他のSPEにも供給される。Gflag_org_B、Gflag_org_C、Gflag_org_Dは、それぞれSPE602B、SPE602C、SPE602Dで生成される信号である。
「SYNC」命令又は「SYNCI」命令が発行されると、cnt_SYNC_A又はcnt_SYNCI_A信号がアクティブになり、実行選択部64Aで選択されたコンディションコードが、実行選択部65Aによって選択されてその値がGフラグスタックにプッシュされる。「SYNCI」命令と「PSHI」命令の場合には、選択されたコンディションコードの値が反転されてからGフラグスタックに書き込まれる。「POP」命令、「POPI」命令、「GINV」命令及び「FLSH」命令が発行された時の動作や、システムリセット信号system_resetがアクティブになった時の動作は、図5の場合と同じである。
図35は、第6実施形態の並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に図13のプログラムを変換した例を示す。
この例ではSPE602Bで2回条件判断を行い、「PSHI」命令でGフラグスタックにプッシュしている。
同時にSPE602AとSPE602Cでは「SYNCI B」命令でGフラグスタックをプッシュしている。したがって、SPE602AとSPE602CのGフラグはSPE602BのGフラグと同じ値を保持しているので、SPE602Bで実行される命令はSPE602A及びSPE602Cでも実行され、SPE602Bで実行されない命令はSPE602A又はSPE602Cでも実行されない。
次に本発明の第7の実施形態について説明する。
この実施形態では、図5に示すGフラグスタックをSPE702Aにだけ設け、SPE702A以外のSPEはSPE702AのGフラグ又はGフラグの反転信号に応じて命令実行が制御されるか、又はSPE702AのGフラグに影響されず常に命令を実行するかを選択する。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部700は、並列して演算処理を行う複数の演算プロセッサー(PE)702と、複数のPE702にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部70SCB〜70SCD、PE−I3の制御を受けてGフラグの信号を反転させる反転制御部79B〜79Dを備える。
SPE702B〜702Dにおける処理選択部75B〜75Dは、それぞれ実行選択部74B〜74Dと反転処理部78B〜78Dを備える。
Gフラグ処理部10は、SPE制御部799Aと、反転処理部78B〜78D、実行選択部74B〜74Dを介してSPE制御部799B〜799DにGフラグ信号を供給する。
反転処理部78B〜78Dは、Gフラグ処理部10から供給されるGフラグに対し、反転制御部79B〜79Dからの制御信号に基づいて反転処理を行う。実行選択部74B〜74Dは、供給されたGフラグ信号又は反転されたGフラグ信号と、実行制御部70SCB〜70SCDの実行許可信号に基づいて、SPE制御部799B〜799Dにそれぞれ実行許可信号を出力する。
SPE制御部799A〜799Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
これらの命令はSPE702B、SPE702C及びSPE702Dでのみ実行可能である。例えば、SPE702Bにおいて「SYNC」命令を実行するとSPE702AのGフラグを命令実行制御に使うようになり、「SYNCI」命令を実行するとSPE702AのGフラグの値の反転を命令実行制御に使うようになり、「ASYNC」命令を実行するとSPE702AのGフラグの値とは無関係に命令を実行するようになる。
この例はSPE702Bの場合であり、煩雑になるので図5と同じ回路の図示を省略している。
この図には、Gフラグ処理部10と、SPE702Aと702Bが備えるSPE制御部799Aと799B、実行選択部74B及び実行制御部70SCB、反転制御部79B、反転処理部78Bが示される。前述の図10、12、15に示した構成と同じ構成には、同じ符号を附す。
Gフラグ処理部10は、前述の図5に示した構成と同じであり、出力する信号をGlobal_Inst_en_Aとする。Global_Inst_en_Aは、SPE702Aの信号であることを明示する以外は、図5のGlobal_Inst_en信号と同じである。
SPE702C、SPE702DについてもSPE702Bに示した構成と同じである。
図39は、第7実施形態の並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に図13のプログラムを変換した例を示す。
SPE702Aで条件判断等を行い、SPE702B等ではその結果に同期して命令を実行する。先ず、「*1」を付した命令の部分であるが、SPE702Aで条件判断するまでの間にSPE702Bで「ADD R7」命令まで実行しておき、SPE702Aで「PSHI C,Z」命令を実行した直後に「MV R7」命令で結果をレジスターR7に書き込む。「*2」を付した命令の部分も同様であり、「CLR」命令でAcc−Aを予め「0」にしておくことで、SPE702Aで「CMP R6」命令の結果をGフラグスタックにプッシュした直後にレジスターR7をクリアできる。
同様に「*3」を付した命令で示すようにSPE702Cでも予めデータを用意しておき、直ぐにレジスターR9への書き込みを行える。
例えば、本発明の1個の並列処理装置1に内蔵される演算プロセッサーの個数を108としたが、本発明はこれに制限されるものではなく、一般的に2以上の演算プロセッサーを内蔵する計算機に適用できる。また、プログラムのネストの階層を4としたが、本発明はこれに制限されるものではなく、一般的に2以上のネストを持つ構造に有効である。
また、VLIW型で並列化するサブプロセッサーの個数を演算プロセッサーごとに4としたが、本発明はこれに制限されるものではなく、2以上のサブプロセッサーを持つシステムに適用できる。
また、命令実行を制御するフラグ情報として、キャリー(C)フラグ、ネガティブ(N)フラグ、オーバーフロー(V)フラグ、ゼロ(Z)フラグの4つを用いているが、本発明はこれに制限されるものではなく、これらの中のいくつか、例えばVフラグを省略することが可能であるし、或いは逆にハーフキャリー(H)を採用することも可能である。
また、本発明の実施形態では、特にアキュムレーター(Acc)やALUのビット数について言及しなかったが、任意のビット数を持つ並列計算装置に、本発明を適用可能である。
102A サブ演算プロセッサー(SPE、特定サブプロセッサー)
102B、102C、102D サブ演算プロセッサー(SPE、サブプロセッサー)
11 Gフラグスタック(第1制御情報保持部)
19 合成部(第1合成部)
95A ALU(第1演算部)
199A SPE制御部(第1制御部)
95B ALU(第2演算部)
Claims (7)
- 並列して演算処理を行う複数の演算プロセッサーと、
前記複数の演算プロセッサーのそれぞれに制御命令を供給する制御信号生成部と、
を備え、
前記複数の演算プロセッサーのそれぞれが、
入力されたデータを前記制御命令に基づいて演算処理する第1演算部と、
スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第1制御情報保持部と、
前記第1制御情報保持部に蓄積されたフラグ情報を合成する第1合成部と、
前記第1合成部が合成した合成フラグ情報に基づいて前記第1演算部に演算処理させる第1制御部と、
を備える特定サブプロセッサーと、
入力されたデータを前記制御命令に基づいて演算処理する第2演算部と、
前記第1合成部が合成した合成フラグ情報に基づいて前記第2演算部に演算処理させる第2制御部と、
を備えるサブプロセッサーと、
を備えることを特徴とする並列計算装置。 - 前記サブプロセッサーは、
前記演算プロセッサーごとに蓄積され、前記第1合成部によって合成された合成フラグ情報によって該サブプロセッサーの命令を実行するか否かを選択する選択部
を備え、
前記第2制御部が、
前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサーと同期して第2演算部に命令を実行させる
ことを特徴とする請求項1に記載の並列計算装置。 - 前記サブプロセッサーは、
スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部と、
前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び自サブプロセッサーの前記第2制御情報保持部のいずれかに保持され、前記合成された合成フラグ情報を選択する選択部と、
を備え、
前記第2制御部が、
前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサーと同期して第2演算部に命令を実行させる
ことを特徴とする請求項1に記載の並列計算装置。 - 前記サブプロセッサーは、
スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部と、
前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び任意のサブプロセッサーの前記第2制御情報保持部のいずれかに保持され、前記合成された合成フラグ情報を選択する選択部と、
を備え、
前記第1制御部又は第2制御部が、
前記選択部により選択されたフラグ情報に応じて、該フラグ情報を保持していた前記特定サブプロセッサー又は前記サブプロセッサーと同期して前記第1制御部又は第2演算部に命令を実行させる
ことを特徴とする請求項1に記載の並列計算装置。 - 前記サブプロセッサーは、
前記特定サブプロセッサーが蓄積するフラグ情報及び前記第2演算部におけるフラグ情報のいずれかを選択する選択部と、
スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、前記特定サブプロセッサーと同期して順次蓄積される第2制御情報保持部と、
前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
を備えることを特徴とする請求項1に記載の並列計算装置。 - 前記サブプロセッサーは、
前記特定サブプロセッサー及び任意のサブプロセッサーが蓄積するフラグ情報のいずれかを選択する選択部と、
スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、前記選択されたフラグ情報を蓄積する前記特定サブプロセッサー又は任意のサブプロセッサーと同期して順次蓄積される第2制御情報保持部と、
前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
を備えることを特徴とする請求項1に記載の並列計算装置。 - 前記サブプロセッサーは、
入力される前記合成フラグ情報を選択的に反転する反転処理部と、
前記反転処理部が出力するフラグ情報出力か、常に命令実行を可能にする制御情報のいずれかを選択する選択部と、
を備え、
前記第2制御部は、
前記選択部によって選択された結果に応じて前記第2演算部に命令を実行させる
ことを特徴とする請求項1に記載の並列計算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009121389A JP5358287B2 (ja) | 2009-05-19 | 2009-05-19 | 並列計算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009121389A JP5358287B2 (ja) | 2009-05-19 | 2009-05-19 | 並列計算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010271799A true JP2010271799A (ja) | 2010-12-02 |
JP5358287B2 JP5358287B2 (ja) | 2013-12-04 |
Family
ID=43419790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009121389A Expired - Fee Related JP5358287B2 (ja) | 2009-05-19 | 2009-05-19 | 並列計算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5358287B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011008416A (ja) * | 2009-06-24 | 2011-01-13 | Honda Motor Co Ltd | 並列計算装置 |
JP2013205235A (ja) * | 2012-03-28 | 2013-10-07 | Mitsubishi Heavy Ind Ltd | 電波反射特性評価システム及び電波反射特性評価方法 |
JP2023506553A (ja) * | 2019-12-23 | 2023-02-16 | 株式会社アドバンテスト | 入力サンプルのセットに基づいて複数の出力サンプルを提供するための信号処理装置、および入力サンプルのセットに基づいて複数の出力サンプルを提供するための方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6254359A (ja) * | 1985-06-24 | 1987-03-10 | ピクサ− | コンピユ−タ装置 |
JPH06236448A (ja) * | 1992-12-11 | 1994-08-23 | Hughes Aircraft Co | アレイプロセッサ用の多重マスク |
JPH07500437A (ja) * | 1991-10-24 | 1995-01-12 | インテル コーポレイシヨン | データ処理システム |
JPH1027102A (ja) * | 1996-07-11 | 1998-01-27 | Hitachi Ltd | 演算処理装置 |
JPH10124315A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
JP2007526571A (ja) * | 2004-03-02 | 2007-09-13 | イマジネイション テクノロジーズ リミテッド | Simdデバイスにおける制御フロー管理のための方法及び装置 |
JP2008503838A (ja) * | 2004-06-29 | 2008-02-07 | インテル コーポレイション | 単一命令多重データ実行エンジンのための条件命令 |
JP2010257200A (ja) * | 2009-04-24 | 2010-11-11 | Honda Motor Co Ltd | 並列計算装置 |
-
2009
- 2009-05-19 JP JP2009121389A patent/JP5358287B2/ja not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6254359A (ja) * | 1985-06-24 | 1987-03-10 | ピクサ− | コンピユ−タ装置 |
JPH07500437A (ja) * | 1991-10-24 | 1995-01-12 | インテル コーポレイシヨン | データ処理システム |
JPH06236448A (ja) * | 1992-12-11 | 1994-08-23 | Hughes Aircraft Co | アレイプロセッサ用の多重マスク |
JPH1027102A (ja) * | 1996-07-11 | 1998-01-27 | Hitachi Ltd | 演算処理装置 |
JPH10124315A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
JP2007526571A (ja) * | 2004-03-02 | 2007-09-13 | イマジネイション テクノロジーズ リミテッド | Simdデバイスにおける制御フロー管理のための方法及び装置 |
JP2008503838A (ja) * | 2004-06-29 | 2008-02-07 | インテル コーポレイション | 単一命令多重データ実行エンジンのための条件命令 |
JP2010257200A (ja) * | 2009-04-24 | 2010-11-11 | Honda Motor Co Ltd | 並列計算装置 |
Non-Patent Citations (9)
Title |
---|
CSND200700343003; 西脇大輔,外4名: '安心・安全を実現する自動車向け画像認識技術' 映像情報インダストリアル 第39巻,第2号, 20070201, Pages:61-69, 産業開発機構(株) * |
CSNG200701077010; 岡崎信一郎: '高並列プロセッサIMAPCARと車載画像認識への適用' 電子情報通信学会技術研究報告 第107巻,第57号,(PRMU2007-1〜26), 20070517, Pages:53-58, 社団法人電子情報通信学会 * |
CSNG200701081007; 京昭倫: '高並列アレイ型プロセッサIMAPCARのアーキテクチャとその技術展望' 電子情報通信学会技術研究報告 第107巻,第76号,(ICD2007-17〜36), 20070524, Pages:97-102, 社団法人電子情報通信学会 * |
CSNH200700028001; 細田寛人: '車載用画像認識プロセッサIMAPCAR' NEC技報 第59巻,第5号, 20061120, Pages:22-25, 日本電気株式会社 * |
JPN6013025512; 細田寛人: '車載用画像認識プロセッサIMAPCAR' NEC技報 第59巻,第5号, 20061120, Pages:22-25, 日本電気株式会社 * |
JPN6013025513; 西脇大輔,外4名: '安心・安全を実現する自動車向け画像認識技術' 映像情報インダストリアル 第39巻,第2号, 20070201, Pages:61-69, 産業開発機構(株) * |
JPN6013025514; 岡崎信一郎: '高並列プロセッサIMAPCARと車載画像認識への適用' 電子情報通信学会技術研究報告 第107巻,第57号,(PRMU2007-1〜26), 20070517, Pages:53-58, 社団法人電子情報通信学会 * |
JPN6013025515; 京昭倫: '高並列アレイ型プロセッサIMAPCARのアーキテクチャとその技術展望' 電子情報通信学会技術研究報告 第107巻,第76号,(ICD2007-17〜36), 20070524, Pages:97-102, 社団法人電子情報通信学会 * |
JPN6013025516; Shorin Kyo et al.: 'An Integrated Memory Array Processor Architecture for Embedded Image Recognition Systems' Proceedings of 32nd International Symposium on Computer Architecture (ISCA'05) , 20050604, Pages:134-145, IEEE * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011008416A (ja) * | 2009-06-24 | 2011-01-13 | Honda Motor Co Ltd | 並列計算装置 |
JP2013205235A (ja) * | 2012-03-28 | 2013-10-07 | Mitsubishi Heavy Ind Ltd | 電波反射特性評価システム及び電波反射特性評価方法 |
JP2023506553A (ja) * | 2019-12-23 | 2023-02-16 | 株式会社アドバンテスト | 入力サンプルのセットに基づいて複数の出力サンプルを提供するための信号処理装置、および入力サンプルのセットに基づいて複数の出力サンプルを提供するための方法 |
JP7507863B2 (ja) | 2019-12-23 | 2024-06-28 | 株式会社アドバンテスト | 入力サンプルのセットに基づいて複数の出力サンプルを提供するための信号処理装置、および入力サンプルのセットに基づいて複数の出力サンプルを提供するための方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5358287B2 (ja) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111213125B (zh) | 使用simd指令进行高效的直接卷积 | |
JP5145809B2 (ja) | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
JP4277042B2 (ja) | 演算処理装置 | |
JP5699554B2 (ja) | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム | |
JP4986431B2 (ja) | プロセッサ | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
JP2000305781A (ja) | Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体 | |
JP2011090592A (ja) | 情報処理装置とその命令デコーダ | |
JP2008242647A (ja) | プロセッサ | |
JP2009099097A (ja) | データ処理装置 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
KR100316078B1 (ko) | 파이프라인방식프로세서 | |
TW201941047A (zh) | 執行雙輸入值絕對值及加總運算的電路 | |
US8655935B2 (en) | Processing apparatus and control method performing taylor series operation associated with executing floating point instruction | |
JP5358287B2 (ja) | 並列計算装置 | |
US7558816B2 (en) | Methods and apparatus for performing pixel average operations | |
CN114168197B (zh) | 指令执行方法、处理器以及电子装置 | |
US20240004663A1 (en) | Processing device with vector transformation execution | |
CN112486907B (zh) | 可重构处理器上多层循环任务的硬件实现方法 | |
US6938149B2 (en) | Renaming apparatus and processor | |
JP5452066B2 (ja) | 並列計算装置 | |
GB2380283A (en) | A processing arrangement comprising a special purpose and a general purpose processing unit and means for supplying an instruction to cooperate to these units | |
JP2008242947A (ja) | 半導体装置 | |
JP5786719B2 (ja) | ベクトルプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111124 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120518 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130521 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130604 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130725 |
|
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: 20130806 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130902 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |