JP2010271799A - 並列計算装置 - Google Patents

並列計算装置 Download PDF

Info

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
Application number
JP2009121389A
Other languages
English (en)
Other versions
JP5358287B2 (ja
Inventor
Shinjiro Toyoda
新次郎 豊田
Nobuaki Miyagawa
宣明 宮川
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.)
Honda Motor Co Ltd
Original Assignee
Honda Motor Co Ltd
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 Honda Motor Co Ltd filed Critical Honda Motor Co Ltd
Priority to JP2009121389A priority Critical patent/JP5358287B2/ja
Publication of JP2010271799A publication Critical patent/JP2010271799A/ja
Application granted granted Critical
Publication of JP5358287B2 publication Critical patent/JP5358287B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

本発明は、並列計算装置に関する。
近年、半導体技術の進歩により汎用プロセッサー(CPU(Central Processing Unit)等)の性能は飛躍的に向上したが(たとえば数Gflops/プロセッサー)、科学技術計算や画像処理等の分野において、更に大幅な性能向上が求められている。たとえば、数Tflops(Tera Floating point number Operations Per Second)、又は、数100GOPS(Giga Operation Per Second)以上の性能が求められている。こうした要求に応える為に、複数のプロセッサーを一個のLSI(Large Scale Integration)に集積する並列計算装置(並列プロセッサー)が研究開発されている。このような並列計算装置には、汎用CPUをコアとして、それを1つのLSI中に複数個集積する物もある。
こうした性能要求に応える物としては例えば、株式会社ソニー・コンピュータエンタテインメントと株式会社東芝とIBM社とが共同開発したCell Broadband Engine(以下Cellとする)(画像処理及び科学技術計算用)、日本電気株式会社が開発したIMAP(画像処理用)、CONNEX社が開発したLine Dancer (画像処理用)などがある(非特許文献1から3参照)。
ところで科学技術計算や画像処理では、膨大な量のデータに対してほぼ同一の処理を行うという特徴がある。この特徴を生かして上記プロセッサーではSIMD(Single Instruction Multi Data)型のアーキテクチャが採用されている。つまり、多数のプロセッサーに対して別々のデータを与えるが、命令は同一とする制御方式である。
命令を同一にする理由は、異なる命令をインストラクションメモリから同時に読み出して、各プロセッサーに供給するMIMD(Multi Instruction Multi Data)方式では、複数のインストラクションメモリとそのデコード回路が必要となるのでハードウェアコストが増大し、かつソフトウェア開発の大幅な複雑化及び、ソフトおよびハードのデバッグが非常に困難になるからである。
次に、構造化について説明する。図40は分岐の有るプログラムのフローチャートの一部である。このプログラムでは、変数abcと変数defの内容を比較し、変数abcの方が大きければ変数x1に変数abcの値を加え、そうでなければ変数x2に変数defの値を加えている。図41は図40のフローチャートをC言語で記述したものある。こうした記述方法は構造化プログラミングと呼ばれている。図42は図41のコードを計算機の機械語に近いアセンブラ言語へ変換したものである。ここでは、変数abcをレジスターR2(レジスター2)に、変数defをレジスターR3に、変数x1をレジスターR4に、変数x2をレジスターR5に、それぞれCコンパイラーが割り付けたと仮定している。図42で注意すべき点は、図40のフローを実装する為に、条件ジャンプ命令BGT(比較結果が大きかった場合にジャンプする)を用いていることである。因みに、BR命令は常にジャンプする命令である。
ところでSIMD型アーキテクチャでは、並列計算する場合において、条件ジャンプ命令を使ってプログラム分岐を実装することができない。例えば、8個のプロセッサーで構成されるSIMD型計算機を考える。レジスターR2やレジスターR3は8個のプロセッサーでそれぞれ別なので、それらに格納されているデータは異なる。したがって、レジスターR2とレジスターR3との比較結果が各プロセッサーでバラバラなので、或るプロセッサーではジャンプし、別のプロセッサーではジャンプしないという状態が生じるが、SIMD型なので別々の命令を実行できない。そのため、このままでは図40のフローを実現できないことになる。なお、この問題はプログラム実行時にプロセッサーごとにジャンプ条件が異なる場合についてのみ発生し、予め回数が決まっているループの制御などのように、常に全てのプロセッサーでジャンプ条件が一致するような制御は、SIMD型アーキテクチャでも実装可能である。
前述のSIMD型アーキテクチャの欠点を回避する方法として、通常の命令を条件付にするアーキテクチャがある。これについてはSIMD型ではないが、ARM社のARMプロセッサーのマニュアル「ARMアーキテクチャリファレンスマニュアル」(ARM v6.pdf)の第A3章に詳しい記述がある。ARMプロセッサーのほぼ全ての命令は条件付で実行できるので、これらを使うと図41のコードは例えば図43のように記述できる。図43中の「AL」は常に実行することを、「HI」は比較結果が大きかった場合に、「LS」は比較結果が小さいか等しい場合に実行することを示している。ここで「ADD HI, R4, R4, R2」という命令に“S”が付加されていないので、この命令ではCMP命令でセットされた条件が変更されない点に留意する。(上記マニュアルA3-7ページ参照)
ここで「命令を実行しない」ということの意味を確認しておく。一般的なプロセッサーに於いて命令は通常、命令フェッチ(IF)、命令解読(DEC)、オペランドフェッチ(OF)、演算実行(EXE)、演算結果の書き込み(WB)という手順で実行されている。現在の高速なプロセッサーではこの手順は、例えば図44のタイミングチャートに示すように5つに分割されパイプライン化されている。CMP命令の比較結果はその命令のEXE部の最後、又はWB部にならないと確定しない。したがって、CMP命令の結果によって次のADD命令をNOP(ノーオペレーション)命令に変更するのは間に合わない。
しかしながら、次に続くADD命令の演算結果を所定の位置に書き込まなければ、何も実行しなかったことと等価である(ただし、オペランドフェッチ時等にプロセッサーの内部状態が変化してしまう場合を除く。こうしたことが起こる場合は後で補正が必要である。)。つまり、CMP命令の結果によって次のADD命令のWBを制御し、R4への書き込みを無効にしてしまえば、ADD命令はNOP命令と等価になる。CELL、IMAP、Line Dancer等のSIMD型プロセッサーは、このアイデアを元に条件付命令を実装している。
"CELLプログラミングチュートリアル"、「2.5 SIMD演算における条件分岐」、2009年4月13日検索、インターネット<URL:http://www.fixstars.com> "An Integrated Memory Array Processor Architecture for Embedded Image Recognition System", Kyo,S.;Okazaki,S.;Arai,T.,Computer Architecture, 2005. ISCA apos;05. Proceedings. 32nd International Symposium on Volume, Issue, 4-8 June 2005 Page(s):134 - 145, §5.3 2005 IEEE "The CA1024 :A fully programmable system-on-chip for cost-effective HDTV media processing", Lazar Bivolarski, Bogdan Mitu, Anand Sheel,Gheorghe Stefan, Tom Thomson, Dan Tomescu、CA1024資料 P9、2009年4月13日検索、<URL:http://www.hotchips.org/archives/hc18/2_Mon/HC18.S5/HC18.S5T2.pdf>
従来のSIMD型アーキテクチャを用いた技術では、分岐が一層までのフローには対応できるが、2層以上の分岐が有るネスト(入れ子)した構造化プログラムに対応するのは困難である。図45に2重にネストしたプログラムの例を示す。この例では、符号(2)の比較命令のところでコンディションフラグが書き換えられてしまうので、符号(1)の比較結果(コンディションフラグ)を符号(2)の命令実行前に一旦どこかに退避しておき、符号(3)のelse文で復帰させなければならない。ARMプロセッサーではコンディションフラグをレジスターに書き込むことで退避可能である。図46にプログラム例を示す。
MRS命令がコンディションフラグをレジスターR9に書き込む命令であり、MSR命令がレジスターから戻す命令である。ところがCELLやIMAP及びLine Dancerではコンディションコードを退避できない。したがって、図45のコードは図47のようにネストしないコードに書き換えなければならない(図47のプログラムは変数x1の値によっては図45と同じ動作にならない点に要注意)。通常のプログラムではネストが3重4重と深くなることも珍しくなく、そうした場合には書き換えが複雑になりプログラムの記述性が低下する。つまり、従来のSIMD型アーキテクチャの技術ではネストした構造化プログラミングへの対応が困難となる。
すなわち、従来の技術においては、並列計算装置において、複数のネストを持つ構造化プログラムを容易に実行することが難しいという問題があった。
本発明は、このような事情に鑑みてなされたもので、その目的は、複数のネストを持つ構造化プログラムを容易に実行できる並列計算装置を提供することにある。
上記問題を解決するために、請求項1に記載した発明は、並列して演算処理を行う複数の演算プロセッサー(例えば、実施の形態における演算プロセッサーPE102)と、前記複数の演算プロセッサーのそれぞれに制御命令を供給する制御信号生成部(例えば、実施の形態における制御信号生成部(PE-I)3)と、を備え、前記複数の演算プロセッサーのそれぞれが、入力されたデータを前記制御命令に基づいて演算処理する第1演算部(例えば、実施の形態におけるALU95A)と、スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第1制御情報保持部(例えば、実施の形態におけるGフラグスタック11)と、前記第1制御情報保持部に蓄積されたフラグ情報を合成する第1合成部(例えば、実施の形態における合成部19)と、前記第1合成部が合成した合成フラグ情報に基づいて前記第1演算部に演算処理させる第1制御部(例えば、実施の形態におけるSPE制御部199A)と、を備える特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE102A)と、入力されたデータを前記制御命令に基づいて演算処理する第2演算部(例えば、実施の形態におけるALU95B〜95D)と、前記第1合成部が合成した合成フラグ情報に基づいて前記第2演算部に演算処理させる第2制御部(例えば、実施の形態におけるSPE制御部199B〜199D)と、を備えるサブプロセッサー(例えば、実施の形態におけるSPE102B〜SPE102D)と、を備えることを特徴とする並列計算装置(例えば、実施の形態における並列計算装置1)である。
請求項2に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるSPE202B〜SPE202D)は、前記演算プロセッサーごとに蓄積され、前記第1合成部によって合成された合成フラグ情報によって該サブプロセッサーの命令を実行するか否かを選択する選択部(例えば、実施の形態における実行選択部24B〜24D)を備え、前記第2制御部(例えば、実施の形態におけるSPE制御部299B〜299D)が、前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE202A)と同期して第2演算部(例えば、実施の形態におけるALU95B〜95D)に命令を実行させることを特徴とする。
請求項3に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるSPE302B〜SPE302D)は、スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部(例えば、実施の形態におけるGフラグスタック11B)と、前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部(例えば、実施の形態における合成部19B)と、前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び自サブプロセッサーの前記第2制御情報保持部のいずれかに保持され、合成された合成フラグ情報を選択する選択部(例えば、実施の形態における実行選択部34B)と、を備え、前記第2制御部(例えば、実施の形態におけるSPE制御部399B)が、前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE302A)と同期して第2演算部に命令を実行させることを特徴とする。
請求項4に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE402B〜SPE402D)は、スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部(例えば、実施の形態におけるGフラグスタック11B)と、前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部(例えば、実施の形態における合成部19B)と、前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び任意のサブプロセッサーの前記第2制御情報保持部のいずれかに保持され、合成された合成フラグ情報を選択する選択部(例えば、実施の形態における実行選択部44B)と、を備え、前記第1制御部又は第2制御部(例えば、実施の形態におけるSPE制御部499A又は499B)が、前記選択部により選択されたフラグ情報に応じて、該フラグ情報を保持していた前記特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE402A)及び前記サブプロセッサーと同期して前記第1演算部又は前記第2演算部に命令を実行させることを特徴とする。
請求項5に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE502B)は、前記特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE502A)が蓄積するフラグ情報及び前記第2演算部におけるフラグ情報のいずれかを選択する選択部(例えば、実施の形態における実行選択部55B)と、スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、前記特定サブプロセッサーと同期して順次蓄積される第2制御情報保持部(例えば、実施の形態におけるGフラグスタック51B)と、前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部(例えば、実施の形態における合成部59B)と、を備えることを特徴とする。
請求項6に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるSPE602B)は、前記特定サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE602A)及び任意のサブプロセッサー(例えば、実施の形態におけるSPE602B〜SPE602D)が蓄積するフラグ情報のいずれかを選択する選択部(例えば、実施の形態における実行選択部645B)と、スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、選択されたフラグ情報を蓄積する前記特定サブプロセッサー及び任意のサブプロセッサーのいずれかと同期して順次蓄積される第2制御情報保持部(例えば、実施の形態におけるGフラグスタック51B)と、前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部(例えば、実施の形態における合成部59B〜59D)と、を備えることを特徴とする。
請求項7に記載した発明は、前記サブプロセッサー(例えば、実施の形態におけるサブプロセッサーSPE702B〜SPE702D)は、入力される前記合成フラグ情報、前記合成フラグ情報を反転した反転フラグ情報、常に命令実行を可能にするフラグ情報のいずれかを選択する選択部(例えば、実施の形態における処理選択部75B〜75D)と、を備え、前記第2制御部(例えば、実施の形態におけるSPE制御部799B〜799D)は、前記選択部によって選択された結果に応じて前記第2演算部に命令を実行させることを特徴とする。
請求項1から請求項7に記載した発明によれば、本発明の技術を使うことで、SIMD型にVLIW型を組み合わせた並列計算装置において、多重にネストした構造化プログラムをサポートするハードウェアを容易に実現できる。したがって、多数の演算素子(プロセッサー)を効率的に並列動作させられるので、科学技術計算や画像処理に必要とされる数Tflops又は数100GOPSの演算能力を持つ並列計算装置を容易に実現できる。
本発明の第1実施形態を示す概略ブロック図である。 本発明の実施形態による演算プロセッサー2における各サブプロセッサーが参照可能な記憶部を示す図である。 本発明の実施形態による演算プロセッサー2の構成を示すブロック図である。 本発明の実施形態による構造化プログラミング用に導入する6個の命令を示す。 本発明の実施形態によるフラグ処理部の構成例を示すブロック図である。 る。 本発明の実施形態によるアキュムレータへの書き込み制御回路の構成例を示すブロック図である。 本発明の実施形態によるプログラム例を示す。 第1実施形態のプログラム例の変数とレジスターとの対応を示す。 第1実施形態のプログラム例の命令の動作を示す。 第1実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第1実施形態の演算プロセッサーにおける演算制御処理を行う構成を示すブロック図である。 第1実施形態のGフラグ処理部とSPE制御部を示すブロック図である。 第1実施形態による高速化処理が行えるプログラムを示す。 第1実施形態による並列演算処理のプログラムを示す。 第2実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第2実施形態の構成において追加する命令を示す。 第2実施形態のGフラグ処理部とSPE制御部を示すブロック図である。 第2実施形態の並列計算装置1において、図13のプログラムを実行するために4並列処理を行うVLIW型用に変換した例を示す。 第3実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第3実施形態の構成において追加する命令を示す。 第3実施形態のGフラグ処理部とSPE制御部を示すブロック図である。 第3実施形態の並列計算装置1において、図13のプログラムを実行するために4並列処理を行うVLIW型用に変換した例を示す。 第4実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第4実施形態の構成において追加する命令を示す。 第4実施形態のGフラグ処理部とSPE制御部を示すブロック図である。 第4実施形態のセレクターの制御を示す図である。 第4実施形態の並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に変換した例を示す。 第5実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第5実施形態の構成において追加する命令を示す。 第5実施形態のSPEの同期化回路を示すブロック図である。 第5実施形態の図13のプログラムを並列化した例を示す。 第6実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第6実施形態の構成において追加する命令を示す。 第6実施形態のSPEの同期化回路を示すブロック図である。 第6実施形態の並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に変換した例を示す。 第7実施形態の並列計算装置1の演算処理部の概略構成を示すブロック図である。 第7実施形態の構成において追加する命令を示す。 第7実施形態のSPEの同期化回路を示すブロック図である。 第7実施形態の並列計算装置1において、図13のプログラムを実行するために4並列のVLIW型用に変換した例を示す。 分岐の有るプログラムのフローチャートの一部である。 図40のフローチャートをC言語で記述したものある。 図41のコードを計算機の機械語に近いアセンブラ言語へ変換したものである。 図41のコードを計算機の機械語に近いアセンブラ言語へ変換したものである。 従来技術によるプログラム例によるタイミングチャートを示す。 従来技術によるプログラム例を示す。 従来技術によるプログラム例を示す。 従来技術によるプログラム例を示す。
(第1実施形態)
図を参照し、並列計算装置の一実施形態について示す。
図1は、本発明の第1実施形態を示す概略ブロック図である。
この図に示される並列計算装置1は、演算処理部100に含まれる複数のプロセッサーによって並列処理を行う。各実施形態の詳細な説明に先立ち、並列計算装置1の構成概要について説明する。
並列計算装置1は、演算処理部100、IO−CPU4、命令メモリ5、外部メモリ9を備える。
演算処理部100は、108個の演算プロセッサー(PE)2−0〜2−107(まとめて「演算プロセッサー(PE)2」という。)、及びPE2のそれぞれに制御命令を供給する制御信号生成部(PE−I)3が実装されている。
演算プロセッサー2は、それぞれが4個のサブプロセッサー(SPE)2A〜2Dを有する。
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−I)3は、演算プロセッサー2の命令の実行順序を制御する。
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は、本発明の実施形態における演算プロセッサー2における各サブプロセッサーが参照可能な記憶部を示す図である。この図に示されるR0からR15は、各SPEが参照できる記憶領域を示す。
各サブプロセッサーは、アキュムレータ(Acc)方式で形成されている。つまり、ALU(Arithmetic and Logic Unit)の入力の一方はAccに固定され、他方の入力だけ入力するデータの参照先を指定することできる。また、演算結果は通常、Accに格納される。このように限定することで命令に必要なオペランドを少なくでき、機械語のビット数を減らすことができる。
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には書き込むことはできない。
図3は、本発明の実施形態における演算プロセッサー2の構成を示すブロック図である。
演算プロセッサー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〜2Dに共通する構成について示し、SPE2Aを代表して説明する。
SPE2Aにおいて、ALU95Aの一方の入力は、Acc93Aからのデータが供給される。ALU95Aの他方の入力は、セレクター94Aにより、レジスター91、Acc93AとAcc93BとAcc93CとAcc93Dからのデータが選択され供給される。ALU95Aによる演算結果は通常はAcc93Aに書き込まれるが、Acc93Aのデータをレジスター91へ転送する命令を使って、レジスターR4〜R15のいずれかを選択して書き込むことができる。但し、SPE2A以外の他のSPEのAcc93B〜Acc93Dに書き込むことはできない。
SPE2B〜SPE2Dにおいても、SPE2Aと同じ構成を有する。
また、フラグレジスター97Aは、ALU95Aにおける演算処理の結果を示すフラグの値を記録し、保持する。フラグレジスター97Aが保持するフラグは、ALU95Aが出力する4つのフラグ(C、N、V、Z)がある。C(キャリー)フラグは、演算結果に桁上がりが生じたことを示す。N(ネガティブ)フラグは、演算処理により値が負となったことを示す。V(オーバーフロー)フラグは、演算処理により値がオーバーフローしたことを示す。Z(ゼロ)フラグは、演算処理により値が0になったことを示す。
制御部99Aは、フラグレジスター97Aなどに記録されているフラグの値や、PE-I3からの制御により、アキュムレータAcc93Aやレジスター91(R4-R15)及びフラグレジスター97Aを制御する。
なお、フラグレジスター97A〜97D及び制御部99A〜99Dは、構成、機能の定義を代えることにより、いくつかの並列処理の方法を設定することができる。詳細については、以下に示す実施形態を参照する。
続いて、並列計算装置1における多重ネスト(入れ子)を可能とする条件分岐処理を実現する構成例について説明する。
各実施形態に共通する基本構成として、各ALUにおける命令の実行制御を命令ごとに判断するのではなく、一つのフラグ(G)を設けて、その値が「1」ならば命令を実行し、「0」ならば実行しないという判定を行うこととする。このような構成にすることで命令ごとの条件判断フィールド(ビット)が不要になり、オブジェクトコードをコンパクトにできる。さらに、スタック構造を設けたGフラグスタックによってこのフラグの値を保持することで、PE2の処理は、多重ネストを可能とする条件分岐処理が実現できる。
また、Gフラグスタック内に保持される全ての値の論理積を取った信号をGフラグと呼ぶことにする。各SPEでは、Gフラグの値が「1」の場合に命令を実行し、「0」の場合には命令は実行しないように制御することが容易になる。また、PE2をリセット(初期化)した直後は、Gフラグスタック内の値は全て1とする。これにより、リセット直後の命令の実行は、Gフラグにより制限されることはない。
図4は、本発明の実施形態における構造化プログラミング用に導入する6個の命令を示す。
これら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にする。
図5は、本発明の実施形態におけるフラグ処理部の構成例を示すブロック図である。
図に示されるフラグ処理部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内部の基本クロックの立ち上がりで変化する。
図において、cnt_xxxとして示す信号はPE-I3でPE2の命令をデコードし、各PE2に含まれる同じ種類(例えばSPE2A)の全てのSPEに共通に与えられる制御信号である。上記の同じ種類の全てのSPEは、SIMD構成により同じ命令による処理が並列処理されるものであり、その単位でSPE群を形成する。これらの制御信号は、SPE群ごとに異なる。
一方、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」命令が発行されるとアクティブになる。
「PSH」命令が発行されるとcnt_PSH信号がアクティブになり、Gフラグスタックがプシュされる。すなわち、スタックG0に保持された値がスタックG1へ、スタックG1に保持された値がスタックG2へ、スタックG2に保持された値がスタックG3へとシフトされる。スタックG3に保持された値は捨てられる。同時に「PSH」命令のオペランド指定に応じてcnt_C_en、cnt_N_en、cnt_V_en、cnt_Z_en信号がアクティブになり、キャリーフラグ(C)、ネガティブフラグ(N)、オーバーフローフラグ(V)、ゼロフラグ(Z)との論理和が取られて、その値がスタックG0に書き込まれる。また、「PSHI」命令は、前述の「PSH」命令のプッシュ動作と同様な動作をする。であるが、各コンディションフラグの論理和を取った後で反転されてからスタックG0に書き込まれる。
「GINV」命令が発行されるとcnt_GINV信号がアクティブになり、スタックG0の値が反転される。
「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ごとに異なる。
PE2の制御において、「命令を実行しない」という動作を、「演算結果を書き込まない」ということで実現できる。そこで、PE-I3に在る命令デコーダ(図示しない)から供給されるAccの書き込み制御信号やレジスターR4〜R15の書き込み制御信号、或いはC、N、V、Zのコンディションフラグの書き込み制御信号に、Gフラグ(Global_Inst_en信号)との論理積をとることにより、命令の実行制御機構を実現する。
図6は、本発明の実施形態におけるAccへの書き込み制御回路の構成例を示すブロック図である。
図には、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、図8、図9を参照し、第1実施形態のプログラム例を示す。
図7は、2重にネスト(入れ子)したプログラムを、並列計算装置1のアセンブラプログラムで記述した例を示す。このプログラムでは、図7のコード中の各変数を、図8に示すように各レジスターヘ割り付けてあると仮定している。また、図42に示した命令以外に図7で用いる命令については、図9にその動作が説明されている。図7中で”//”記号の後には、プログラムの動作を理解し易くする為のコメントをC言語的に示す。これらのコメントは、図45に示されたコードに対応している。この様に、本発明の技術を用いることで構造化されたプログラムを、容易にアセンブラコードに変換できる。すなわち容易に機械語に変換できる。
図10は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理に関する基本構成は図3を参照する。
図に示される演算処理部100は、並列して演算処理を行う複数の演算プロセッサー(PE)102と、複数のPE102にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3とを備える。
PE102のそれぞれが、サブプロセッサー102A(SPE102A)と、サブプロセッサー102B〜102D(SPE102B〜102D)を備える。
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における演算制御を行う。
図11は、演算プロセッサーにおける演算制御処理を行う構成を示すブロック図である。
この図には、PE102におけるSPE102A〜102Dの構成が示される。
SPE102Aでは、SPE演算処理部190AとGフラグ処理部10の詳細構成、SPE102Bでは、SPE演算処理部190Bの詳細構成が示される。SPE102CとSPE102Dでは、SPE102Bと同様の構成を備えることから、記載を省略する。また、前述の図5と同じ構成には同じ数字の符号を附し、異なる構成について説明する。
SPE102AにおけるSPE演算処理部190Aは、前述の図3に示したAcc93A、セレクター94A、ALU95A、フラグレジスター97A、SPE制御部199Aを備える。
フラグレジスター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信号をそれぞれ出力する。
SPE102Aにおける制御部199Aは、Acc制御部92Aとフラグ制御部96Aを備える。
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フラグの値との論理積が取られる。
同様にSPE102BにおけるSPE演算処理部190Bは、前述の図3に示したAcc93B、セレクター94B、ALU95B、SPE制御部199Bを備える。SPE演算処理部190Bは、図3に示したフラグレジスター97Bを備えていない。
SPE演算処理部190BにおけるSPE制御部199Bは、Acc制御部92Bを備える。Acc制御部92Bは、Acc制御部92Aと同じ構成であり、PE-I3に在る命令デコーダ(図示しない)からのAcc93Bへの書き込み信号cnt_Acc_wr_Bと、Gフラグ(Global_Inst_en信号)との論理積をとってAcc93Bのロードイネーブル信号としている。
また、SPE102AにおけるGフラグ処理部10について、Gフラグ処理部とSPE制御部との関係を示し説明する。
図12は、Gフラグ処理部とSPE制御部を示すブロック図である。
この図には、Gフラグ処理部10と、各SPEが備えるSPE制御部199A〜199Dが示される。前述の図10に示したように、Gフラグ処理部10は、出力するGフラグ信号(Global_Inst_en)をSPE制御部199A〜199Dに入力する。
図に示されるGフラグ処理部10は、図5に示したGフラグ処理部10と同じ構成を有する。
以上に示した構成により、GフラグスタックをSPE2Aにだけ設け、ここから出力されるGlobal_Inst_en信号を、SPE102AだけでなくSPE102B、SPE102C、SPE102Dの全ての実行制御に用いる。これにより、SPE102Aで条件判断を行って、その結果をGフラグスタックに書き込むと同時に、他の全てのSPEもその条件判断の結果にしたがって命令を実行する。
図を参照し、第1実施形態に示す並列計算装置1によって処理が高速化されることを、プログラム例を用いて示す。
図13は、高速化処理が行えるプログラムを示す。
この図に示されるプログラムは、前述の図7と同じであるが、後の説明を分かり易くする為に処理単位ごとに「*印」をつけ分類する。
図14は、第1実施形態による並列演算処理のプログラムを示す。
この図に示されるプログラムは、第1実施形態に示した構成を用いてプログラムを4並列に変換した例を示す。SPE102Aで条件判断を行い、SPE102B等ではその結果に応じて命令実行が制御される。
先ず「*1」を付した命令部分を説明する。SPE102Aで条件判断する(ステップ3)までの間に、SPE102Bによって「ADD R7」命令まで実行する。SPE102Bは、「PSHI C,Z」命令を実行した直後のステップ4の「MV R7」命令で、演算結果をレジスターR7に書き込む。
「*2」を付した命令の部分も同様に、予めSPE102Bで「CLR」命令でAcc−Bを「0」にしておき、SPE102Aで「CMP R6」命令の結果をGフラグスタックにプッシュしたステップ6の直後にレジスターR7に「0」を書き込む。
「*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クロックと約半分で終えることができる。
なお、図14においてSPE102A〜102Dで有効に使われていない部分を空白又は網掛けで示す。空白部分には任意の命令を配置することができるが、網掛け部分にはSPE102Aの状態に同期して実行する命令(図13のコード中には対象無し)か、図示する「NOP」命令を配置することができる。
本実施形態によると、複数の演算プロセッサーPE102のそれぞれが、サブプロセッサーSPE102AとサブプロセッサーSPE102B〜102Dによって形成される。
サブプロセッサー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実施形態)
次に本発明の第2実施形態について説明する。
図15は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部200は、並列して演算処理を行う複数の演算プロセッサー(PE)202と、複数のPE202にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部20B〜20Dを備える。
PE202のそれぞれが、サブプロセッサー(SPE)202Aと、サブプロセッサー(SPE)202B〜202Dを備える。
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の演算制御を行う。
図16は、第2実施形態の構成において追加する命令を示す。
前述の図15に示すように、Gフラグ処理部10は、SPE202Aにだけ設ける。SPE202A以外のSPEは、SPE202Aが出力するGフラグの値に応じて命令実行が制御されるか、又はSPE202AのGフラグに影響されず常に命令を実行するかを選択できるようにする。
この選択を行うために、この図に示される命令を追加する。これらの命令はSPE202B、SPE202C、SPE202Dで常に実行可能である。
例えば、SPE202Bにおいて「SYNC」命令を実行すると、SPE202Bは、それ以降はSPE202AのGフラグの値を命令実行制御に使うようになり、「ASYNC」命令を実行すると、それ以降はSPE202AのGフラグの値とは無関係に命令を実行するようになる。
また、SPE102AにおけるGフラグ処理部10を参照し、Gフラグ処理部とSPE制御部の接続を示しつつ説明する。
図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は、図示しないPE-I3からの制御信号によりSPE202Bの実行を制御する制御信号(en0_B)を出力する。
実行制御部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フラグに応じて、その命令実行が制御される。
「ASYNC」命令が発行されるとcnt_ASYNC_B信号がアクティブになり、フリップフロップ21の出力en0_Bは「1」になる。なお、フリップフロップ21は、図示しない並列計算装置1内部の基本クロックの立ち上がりで変化する。
実行制御部20C及び20Dは、実行制御部20Bと同じ構成であり、入力される信号がそれぞれSPE202C及びSPE202Dの制御信号である点が異なる。
実行選択部24C及び24Dは、それぞれ実行制御部20C及び20Dからの制御信号en0_C及びen0_Dによって制御され、出力に接続されるSPE制御部299C及び299Dを介してSPE202C及びSPE202Dの制御を行う。
以上に示した構成により、GフラグスタックをSPE202Aにだけ設け、SPE202A以外のSPEは、SPE202AのGフラグに応じて命令実行が制御されるか、又はSPE202AのGフラグに影響されず常に命令を実行するかを選択できる。
第2の実施形態に示すように並列計算装置1によって処理が高速化されることを、プログラム例を用いて示す。
図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への書き込みを行える。
SPE202Dによって実行される「*4」を付した命令部分については注意が必要である。これらの命令はSPE202Aにおける「GINV」命令(ステップ7)の後で、実行するかしないかが決定される。つまり、SPE202Cのように事前にデータを用意することができない。そこで、SPE202Dは、SPE202AのGフラグの値とは無関係に「MVA R10」命令と「INC」命令を実行しておき、SPE202Aでの「GINV」命令と同時に「SYNC」命令を実行することで、「MV R10」命令の実行制御をSPE202Aと同期させている。
このように4つのSPEで並列処理することで、図13では21クロックかかった処理が、本実施形態では12クロックで行える。
なお、図18においてSPE202B〜202Dで使われていない部分を空白又は網掛けで示した。空白部分には任意の命令をおくことができ、SPE202Aと同期する必要が無い命令を並列実行できる。一方、網掛けの部分には、SPE202Aと同期した命令か、「NOP」命令が配置できる。本実施形態では、第1実施形態に比べて1クロック余計に掛かっているが、空白部分に他の命令を配置することができる。したがって、実施形態1よりも実行効率を高めることができるため、演算処理全体では短時間で処理を終了することが可能となる。
(第3実施形態)
次に本発明の第3実施形態について説明する。
図19は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部300は、並列して演算処理を行う複数の演算プロセッサー(PE)302と、複数のPE302にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部30B〜30Dを備える。
PE302のそれぞれが、サブプロセッサー(SPE)302Aと、サブプロセッサー(SPE)302B〜302Dを備える。
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と同様の構成を有する。
Gフラグ処理部10Aは、SPE制御部399Aと、実行選択部34B〜34Dを介してSPE制御部399B〜399DにGフラグ信号を供給する。Gフラグ処理部10Bは、実行選択部34Bを介してSPE制御部399BにGbフラグ信号を供給する。Gフラグ処理部10Cは、実行選択部34Cを介してSPE制御部399CにGcフラグ信号を供給する。Gフラグ処理部10Dは、実行選択部34Dを介してSPE制御部399DにGdフラグ信号を供給する。
実行選択部34Bは、供給されたGフラグ信号とGbフラグ信号のいずれかを、SPE制御部399Bの実行許可信号として出力する。実行選択部34Cは、供給されたGフラグ信号とGcフラグ信号のいずれかを、SPE制御部399Cの実行許可信号として出力する。実行選択部34Dは、供給されたGフラグ信号とGdフラグ信号のいずれかを、SPE制御部399Dの実行許可信号として出力する。
SPE制御部399A〜399Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
本実施形態では、図5に示すGフラグスタックをSPE302A、SPE302B、SPE302C及びSPE302Dにそれぞれ設けた構成である。各SPEは通常はそれぞれのG、Gb、Gc、Gdフラグで個別に命令実行が制御されるが、必要に応じて特定のSPEのGフラグに応じて命令実行が制御されるようにする。ここでは例として特定のSPEをSPE302Aとする。
実行選択部の制御を行うために、この図に示される命令を追加する。
図20は、第3実施形態の構成において追加する命令を示す。
これらの命令はSPE302B、SPE302C、SPE302Dで実行可能である。
例えば、SPE302Bにおいて「SYNC」命令を実行すると、SPE302Bは、それ以降はSPE302AのGフラグを命令実行制御に使うようになり、「ASYNC」命令を実行すると、それ以降はSPE302AのGフラグから切り替えて、SPE302Bが有するGフラグ(Gb)の値を命令実行制御に使うようになる。SPE302C、SPE302Dについても、同様である。
また、SPE102AにおけるGフラグ処理部10を参照し、Gフラグ処理部とSPE制御部の接続を示しつつ説明する。
図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は、PE-I3からの制御信号によりSPE302Bの実行を制御する制御信号(sel_B)を出力する。
実行制御部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フラグで命令実行が制御される。
「SYNC」命令が発行されるとcnt_SYNC_B信号がアクティブになるが、その時cnt_ASYNC_B信号がノンアクティブのままなので、sel_B信号が「0」になる。したがって、セレクター34Bにおいて、Global_Inst_en_A信号が選ばれてlobal_Inst_en_act_B信号になる。つまり、SPE302Bは、SPE302AのGフラグに応じて命令実行が制御される。
「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)となるところが異なる。
第3の実施形態に示す並列計算装置1によって処理が高速化されることを、プログラム例を用いて示す。
図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クロックで終了することができる。
なお、図22においてSPE302B、SPE302C、SPE302Dで使われていない部分が空白又は網掛けで示されている。空白部分には任意の命令を配置することができ、SPE302Aと同期する必要が無い命令を並列実行できる。一方、網掛けの部分にはSPE302Aと同期した命令か、「NOP」命令を配置できる。
この例では、前述の第2実施形態と同じ結果になっているが、各SPEが独立にネストしたプログラムを実行できるので命令実行の柔軟性が上がり、演算処理全体では第2実施形態よりも短時間で処理できる。
(第4実施形態)
次に、本発明の第4の実施形態について説明する。
図23は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部400は、並列して演算処理を行う複数の演算プロセッサー(PE)402と、複数のPE402にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部40A〜40Dを備える。
PE402のそれぞれが、サブプロセッサー(SPE)402Aと、サブプロセッサー(SPE)402B〜402Dを備える。
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と同様の構成を有する。
Gフラグ処理部10Aは、実行選択部44A〜44Dを介してSPE制御部499A〜499DにGフラグ信号を供給する。Gフラグ処理部10Bは、実行選択部44A〜44Dを介してSPE制御部499A〜499DにGbフラグ信号を供給する。Gフラグ処理部10Cは、実行選択部44A〜44Dを介してSPE制御部499A〜499DにGcフラグ信号を供給する。Gフラグ処理部10Dは、実行選択部44A〜44Dを介してSPE制御部499A〜499DにGdフラグ信号を供給する。
実行選択部44A〜44Dは、Gフラグ信号とGbフラグ信号〜Gdフラグ信号のいずれかをそれぞれ選択し、SPE制御部499A〜499Dの実行許可信号として出力する。
SPE制御部499A〜499Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
本実施形態では、図5に示すGフラグスタックをSPE402A、SPE402B、SPE402C及びSPE402Dにそれぞれ設けた構成である。各SPEは通常はそれぞれのG、Gb、Gc、Gdフラグの値で個別に命令実行が制御されるが、必要に応じて特定のSPEのGフラグの値に応じて命令実行が制御されるようにする。
図24は、第4実施形態の構成において追加する命令を示す。
前述の図20との違いは「SYNC」命令にA、B、C又はDの何れか一つのオペランドを指定できることである。例えば、SPE402Aにおいて「SYNC B」命令を実行すると、それ以降はSPE402BのGフラグの値を命令実行制御に使うようになる。「ASYNC」命令を実行すると、それ以降は各SPE402内に備えるGフラグを参照し、その値命令実行制御に使うようになる。
図25は、Gフラグ処理部とSPE制御部を示すブロック図である。
また、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)についても同様である。
この回路の動作をSPE402Aの場合について示す。Global_Inst_en_A(Ga)は、図5のGlobal_Inst_en信号と同じであるが、他のSPEの信号と識別する為に最後に_Aを付加している。 Global_Inst_en_Bなども同様である。
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になる。
図26は、フリップフロップ41A、42Aの制御を示す図である。
フリップフロップ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)である。
第4の実施形態によって処理が高速化されることを、プログラム例を用いて示す。
図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への書き込みを行える。
SPE402Dで実行される「*4」を付した命令部分については注意が必要である。これらの命令はSPE402Bにおける「GINV」命令の後で、実行するか否かが決定される。つまり、SPE402Cのように事前にデータを用意することができない。そこで、SPE402BのGフラグの値とは無関係に「MVA R10」命令と「INC」命令を実行しておき、SPE402Bでの「GINV」命令と同時に「SYNC B」命令を実行することで、「MV R10」命令だけをSPE402Bと同期させている。このように4つのSPEで並列処理することで、図13では21クロックかかる処理を12クロックで終了することができる。
なお、図27でSPE402A、SPE402C、SPE402Dで使われていない部分が空白又は網掛けで示される。空白部分には任意の命令を配置することができ、SPE402Bと同期する必要が無い命令を並列実行できる。一方、網掛け部分にはSPE402Bと同期した命令か、「NOP」命令を配置することができる。この例では第3実施形態と処理速度が同じであるが、どのSPEでも条件判断を行うマスターPEに設定できるので、SPEを使う上での柔軟性が格段に向上し、演算処理全体では第3実施形態よりも短時間で処理できる。
(第5実施形態)
本発明の第5の実施形態について説明する。
ここでは例としてSPE502Aを特別なSPEとし、他のSPEがそれに同期するか否かを制御できるようにする。
図28は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部500は、並列して演算処理を行う複数の演算プロセッサー(PE)502と、複数のPE502にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部50SCB〜50SCDを備える。
PE502のそれぞれが、サブプロセッサー(SPE)502Aと、サブプロセッサー(SPE)502B〜502Dを備える。
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と同様の構成を有する。
Gフラグソース50FSAは、Gフラグスタック50STA〜50STDにGフラグソース信号を供給する。Gフラグソース50FSBは、実行選択部55Bを介してGフラグスタック50STBにGフラグソース信号を供給する。Gフラグソース50FSCは、実行選択部55Cを介してGフラグスタック50STCにGフラグソース信号を供給する。Gフラグソース50FSDは、実行選択部55Dを介してGフラグスタック50STDにGフラグソース信号を供給する。
実行選択部55B〜55Dは、Gフラグソース信号又はGbフラグソース信号〜Gdフラグソース信号のいずれかをそれぞれ選択し、それぞれのGフラグスタック50STB〜50STDに蓄積する。それぞれのGフラグスタック50STB〜50STDは、蓄積されたGフラグソース信号に基づいて、SPE制御部599A〜599Dの実行制御信号を出力する。
SPE制御部599A〜599Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
本実施形態では、図5に示すGフラグスタックをSPE502A、SPE502B、SPE502C及びSPE502Dにそれぞれ設けた構成である。各SPEは通常はそれぞれのG、Gb、Gc、Gdフラグソース信号に基づいて個別に命令実行が制御されるが、必要に応じて特定のSPEのGフラグソースに応じて命令実行が制御されるようにする。
図29は、第5実施形態の構成において追加する命令を示す。
これらの命令はSPE502B、SPE502C、SPE502Dでのみ有効であり、SPE502Aで「PSH」命令又は「PSHI」命令でGフラグスタックをプッシュするタイミングでのみ実行できる。
図30は、SPE502Bの同期化回路を示すブロック図である。
この図には、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に相当する。
SPE502Bは、Gフラグソース50FSB、フラグスタック50STB及びSPE制御部599B、実行選択部55B及び実行制御部50SCBが示されている。
Gフラグソース50FSB及びSPE制御部599Bは、前述のSPE502Aと同じ構成を有する。
実行選択部55Bは、入力されるGフラグソース50FSA及びGフラグソース50FSBの信号を選択してフラグスタック50STBに出力する。
実行制御部50SCBは、SPE502Bにおける「PSH」命令か「PSHI」命令に応じて、実行制御部55Bの入力信号の選択を制御する。
フラグスタック50STBは、実行選択部55Bで選択された結果を、Gフラグスタック51Bに順次蓄積する。
SPE502Bについて示したが、SPE502C、SPE502Dについても同じ構成で接続される。
この実施形態ではGフラグスタック50STA〜50STDを全てのSPEに設け、そこにプッシュされる値自体を制御している点が、前述の実施形態2、3、4と異なる。SPE502AのGフラグスタックは図5と基本的に同じであるが、オペランドの論理和をとった信号Gflag_org_Aを引き出して、他のSPEに供給するところが異なる。
SPE502Bにおいて「PSH」命令か「PSHI」命令が実行された場合は、Gフラグスタックにプッシュされる値は図5の場合と同じである。したがって、SPE502BはSPE502Aと非同期にネスト(入れ子)したプログラムを実行できる。SPE502Bにおいて「SYNC」命令又は「SYNCI」命令が発行されると、cnt_SYNC_B又はcnt_SYNCI_B信号がアクティブになり、sel1で選択されたGflag_org_Aが、Gフラグスタックにプッシュされる。「SYNCI」命令と「PSHI」命令の場合には、sel1で選択されたコンディションコードの値が反転されてからGフラグスタックに書き込まれる。その他、「POP」命令や「FLSH」命令が発行された時の動作や、システムリセット信号system_resetがアクティブになった時の動作は、図5の場合と同様である。
第5の実施形態によって処理が高速化されることを、プログラム例を用いて説明する。
図31は、並列計算装置1において、図13のプログラムを実行するために図13のプログラムを並列化した例を示す。
SPE502Aで条件判断を2回行って「PSHI」命令でGフラグスタックにプッシュしている。同時にSPE502BとSPE502Cでは2回とも「SYNCI」命令でGフラグスタックにプッシュしている。この結果、SPE502BとSPE502CのGフラグはSPE502AのGフラグ同じ値を保持しているので、SPE502Aで実行される命令はSPE502BとSPE502Cでも実行され、SPE502Aで実行されない命令はSPE502BとSPE502Cでも実行されない。
特徴的なのはSPE502Dの動作である。SPE502DではSPE502Aで最初の「PSHI C,Z」命令が実行される時に、「SYNC」命令でSPE502AのGフラグスタックにプッシュされる値の反転を、自身のGフラグスタックにプッシュしている。したがって、SPE502Dでは「else文」以降に相当する「*5」を付した命令部分を直ぐに実行できる。
そこで、予め「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クロックで終了する。
SPE502Aでは最後に「POP」命令を2度繰り返しているが、SPE502Bなどと同様に1つの「FLSH」命令に置き換えることができる。また、SPE502A、SPE502B、SPE502Cで使われていない部分が空白となっているが、ここには任意の命令をおくことができ、SPE502Aとシンクロする必要が無い命令を並列に実行できる。
(第6実施形態)
本発明の第6の実施形態について説明する。
図32は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部600は、並列して演算処理を行う複数の演算プロセッサー(PE)602と、複数のPE602にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部50SCA〜50SCDを備える。
PE602のそれぞれが、サブプロセッサー(SPE)602Aと、サブプロセッサー(SPE)602B〜602Dを備える。
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と同様の構成を有する。
Gフラグソース50FSA〜50FSDは、実行選択部645A〜645Dを介してGフラグスタック60STA〜60STDにGフラグソース信号を供給する。
実行選択部645A〜645Dは、Gフラグソース50FSA〜50FSDから供給されたGフラグソース信号(Gaフラグソース信号〜Gdフラグソース信号)のいずれかをそれぞれ選択し、選択された信号の値をそれぞれのGフラグスタック60STA〜60STDに蓄積する。それぞれのGフラグスタック60STA〜60STDは、蓄積されたGフラグソース信号に基づいて、SPE制御部699A〜699Dの実行制御信号を出力する。
SPE制御部699A〜699Dは、供給された実行許可信号に基づいて、それぞれのSPEの演算制御を行う。
本実施形態では、図5に示すGフラグスタックをSPE602A、SPE602B、SPE602C及びSPE602Dにそれぞれ設けた構成である。各SPEは通常はそれぞれのGa、Gb、Gc、Gdフラグソース信号の値に基づいて個別に命令実行が制御されるが、必要に応じての任意のSPEのGフラグに応じて命令実行が制御される。
図33は、第6実施形態の構成において追加する命令を示す。
図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の構成を合わせて備える。
実行選択部645Aにおける実行選択部64Aは、入力されるGフラグソース50FSAからGフラグソース50FSDの信号のいずれかを選択してその値を出力する。また、実行選択部65Aは、実行選択部64Aから出力されたフラグソース信号とGフラグソース50FSAからの信号のいずれかを選択してその値をフラグスタック60STAに出力する。
実行制御部60SCAは、SPE602Aにおける「PSH」命令か「PSHI」命令に応じて、実行制御部645Aの入力信号の選択を制御する。
フラグスタック60STAは、実行選択部645Aで選択された結果を、Gフラグスタック51Aに順次蓄積する。
SPE602Aについて示したが、SPE602B、SPE602C、SPE602Dについても同じ構成で接続される。
「SYNC」命令と「SYNCI」命令はオペランドにA, B, C, Dの何れか一つを指定でき、それに応じて、前述の図26のようにcnt_Gsel_1_Aとcnt_Gsel_0_A信号が決定される。これらの命令にしたがって、実行制御部60SCAにおける実行制御部40Aは、SPEの実行制御の条件を他の任意のSPEのGフラグを参照させることにより、SPEの実行制御を他の任意のSPEに同期させる。
また、「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の場合と同じである。
第6の実施形態によって処理が高速化されることを、プログラム例を用いて説明する。
図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でも実行されない。
特徴的なのはSPE602Dの動作である。ここではSPE602Bで最初の「PSHI C,Z」命令が実行される時に、「SYNC B」命令でSPE602BのGフラグスタックにプッシュされる値の反転を、自身のGフラグスタックにプッシュしている。したがって、SPE602Dでは「else文」以降に相当する「*5」を付した命令部分を直ぐに実行できる。そこで、予め「MVA R8」命令と「ADD R5」命令でデータを用意しておき、「SYNC B」命令の直後に「MV R8」命令で結果をレジスターR8に書き込んでいる。「MV R8」命令直後の「GINV」命令は注意が必要である。図13の「*4」を付した命令部分はSPE602Bでの最初の条件判断が真で、2番目の条件判断が偽の場合に実行される。SPE602Dでは最初の条件判断でSPE602Bとは反対の値をGフラグスタックにプッシュしているので、そのままでは「*4」を付した命令部分を実行することができない。そこで「GINV」命令によって、最初にプッシュした値を反転している。そして、SPE602Bで2度目の「PSHI C,Z」命令が実行される時に、「SYNC B」命令でSPE602Bとは反対の値をプッシュすることで「*4」を付した命令部分を担当できる。この実施形態では全ての処理が10クロックで終了している。
なお、SPE602A、SPE602B、SPE602Cで使われていない部分が空白となっているが、ここには任意の命令をおくことができ、SPE602Bと同期する必要が無い命令を並列に実行できる。 このプログラム例では処理に必要なクロック数が実施形態5と同じであるが、条件判断するSPEを任意に設定できるので、SPEの使い方の柔軟性が向上し、一般的には実施形態5よりも処理を高速化できる。
(第7実施形態)
次に本発明の第7の実施形態について説明する。
この実施形態では、図5に示すGフラグスタックをSPE702Aにだけ設け、SPE702A以外のSPEはSPE702AのGフラグ又はGフラグの反転信号に応じて命令実行が制御されるか、又はSPE702AのGフラグに影響されず常に命令を実行するかを選択する。
図36は、並列計算装置1の演算処理部の概略構成を示すブロック図である。
ここでは、演算制御処理の説明に必要な主たる構成を示す。演算処理については、図に示される演算処理部700は、並列して演算処理を行う複数の演算プロセッサー(PE)702と、複数のPE702にSPE制御信号線を介して制御命令を供給する制御信号生成部(PE−I)3と、PE−I3の制御を受けて各SPEを同期させる実行制御部70SCB〜70SCD、PE−I3の制御を受けてGフラグの信号を反転させる反転制御部79B〜79Dを備える。
PE702のそれぞれが、サブプロセッサー(SPE)702Aと、サブプロセッサー(SPE)702B〜702Dを備える。SPE702Aは、Gフラグ処理部10とSPE制御部799Aを備える。SPE702B〜702Dは、それぞれSPE制御部799B〜799D、処理選択部75B〜75Dを備える。
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の演算制御を行う。
図37は、第7実施形態の構成において追加する命令を示す。
これらの命令はSPE702B、SPE702C及びSPE702Dでのみ実行可能である。例えば、SPE702Bにおいて「SYNC」命令を実行するとSPE702AのGフラグを命令実行制御に使うようになり、「SYNCI」命令を実行するとSPE702AのGフラグの値の反転を命令実行制御に使うようになり、「ASYNC」命令を実行するとSPE702AのGフラグの値とは無関係に命令を実行するようになる。
図38は、SPEの同期化回路を示すブロック図である。
この例は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信号と同じである。
実行制御部70SCBは、PE-I3からの制御信号によりSPE702Bの実行を制御する制御信号(Async_B)を出力する。実行制御部70SCBは、実行選択部74Bを制御して制御信号Global_Inst_en_B信号を生成する。反転処理部78Bは、Gフラグの値の反転処理を行う。ここではEXOR回路で示す。反転制御部79Bは、PE−I3からの制御信号によりSPE702Bの実行を制御する制御信号(Inv_B)を出力する。
Global_Inst_en_BはSPE702Bで命令実行制御に使われる信号である。system_resetがアクティブ(「1」)になると、フリップフロップ71BがセットされてAsync_B信号が「1」になる。よって、Global_Inst_en_Bが常に「1」になるので、SPE702Bでは常に命令が実行される。「SYNC」命令が発行されるとcnt_SYNC_B信号がアクティブになり、Inv_B信号は「0」にAsync_B信号も「0」になる。したがって、Global_Inst_en_BはGlobal_Inst_en_Aと同じになる。つまり、SPE702BはSPE702AのGフラグの値に応じて、その命令実行が制御される。
「SYNCI」命令が発行されるとcnt_SYNCI_B信号がアクティブになり、Inv_B信号は「1」にAsync_B信号は「0」になる。したがって、Global_Inst_en_BはGlobal_Inst_en_Aの反転になる。つまり、SPE702BはSPE702AのGフラグの値の反転に応じて、その命令実行が制御される。「ASYNC」命令が発行されるとcnt_ASYNC_B信号がアクティブになり、Inv_B信号は「0」に、Async_B信号は「1」になる。なお、フリップフロップ71Bと反転制御部79Bは、図示しない並列計算装置1内部の基本クロックの立ち上がりで変化する。
SPE702C、SPE702DについてもSPE702Bに示した構成と同じである。
第7の実施形態によって処理が高速化されることを、プログラム例を用いて示す。
図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への書き込みを行える。
SPE702Dの「*5」を付した命令部分では、先ずSPE702Aの状態に拠らず「MVA R8」命令と「ADD R5」命令まで実行しておき、SPE702Aで「PSHI C,Z」命令を実行した時に「SYNCI」命令を実行している。したがって、SPE702AのGフラグの値の反転で実行制御されるので、「else文」以降に相当する「MV R8」命令を直ぐに実行できる。「*4」を付した命令部分も同様で、一旦「ASYNC」命令を実行してSPE702AのGフラグの値とは無関係に「MVA R10」命令と「INC」命令を実行しておき、SPE702Aでの「GINV」命令の後で「SYNC」命令を実行することで、「MV R10」命令だけをSPE702Aと同期させている。このように4つのSPEで並列処理することで、図13では21クロックかかった処理が10クロックで終わる。
なお、図39でSPE702B、SPE702C、SPE702Dで使われていない部分が空白又は網掛けで示されている。空白部分には任意の命令を配置することができ、SPE702Aと同期する必要が無い命令を並列実行できる。一方、網掛けの部分にはSPE702Aと同期した命令か、「NOP」命令が配置できる。本実施形態では、第2実施形態に比べて2クロック少なくて処理できる。したがって、演算処理全体でも第2実施形態より短時間で終わる可能性が高い。
以上に示された本発明の実施形態によれば、SIMD型にVLIW型を組み合わせた並列計算装置において、多重にネストした構造化プログラムをサポートするハードウェアを容易に実現できる。したがって、多数の演算素子(プロセッサー)を効率的に並列動作させられるので、科学技術計算や画像処理に必要とされる数Tflops又は数100GOPSの演算能力を持つ計算機を容易に実現できる。
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、本発明の1個の並列処理装置1に内蔵される演算プロセッサーの個数を108としたが、本発明はこれに制限されるものではなく、一般的に2以上の演算プロセッサーを内蔵する計算機に適用できる。また、プログラムのネストの階層を4としたが、本発明はこれに制限されるものではなく、一般的に2以上のネストを持つ構造に有効である。
また、VLIW型で並列化するサブプロセッサーの個数を演算プロセッサーごとに4としたが、本発明はこれに制限されるものではなく、2以上のサブプロセッサーを持つシステムに適用できる。
また、命令実行を制御するフラグ情報として、キャリー(C)フラグ、ネガティブ(N)フラグ、オーバーフロー(V)フラグ、ゼロ(Z)フラグの4つを用いているが、本発明はこれに制限されるものではなく、これらの中のいくつか、例えばVフラグを省略することが可能であるし、或いは逆にハーフキャリー(H)を採用することも可能である。
また、本発明の実施形態では、特にアキュムレーター(Acc)やALUのビット数について言及しなかったが、任意のビット数を持つ並列計算装置に、本発明を適用可能である。
102 演算プロセッサー(PE)
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演算部に演算処理させる第1制御部と、
    を備える特定サブプロセッサーと、
    入力されたデータを前記制御命令に基づいて演算処理する第2演算部と、
    前記第1合成部が合成した合成フラグ情報に基づいて前記第2演算部に演算処理させる第2制御部と、
    を備えるサブプロセッサーと、
    を備えることを特徴とする並列計算装置。
  2. 前記サブプロセッサーは、
    前記演算プロセッサーごとに蓄積され、前記第1合成部によって合成された合成フラグ情報によって該サブプロセッサーの命令を実行するか否かを選択する選択部
    を備え、
    前記第2制御部が、
    前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサーと同期して第2演算部に命令を実行させる
    ことを特徴とする請求項1に記載の並列計算装置。
  3. 前記サブプロセッサーは、
    スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部と、
    前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
    前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び自サブプロセッサーの前記第2制御情報保持部のいずれかに保持され、前記合成された合成フラグ情報を選択する選択部と、
    を備え、
    前記第2制御部が、
    前記選択部で選択されたフラグ情報に応じて、前記特定サブプロセッサーと同期して第2演算部に命令を実行させる
    ことを特徴とする請求項1に記載の並列計算装置。
  4. 前記サブプロセッサーは、
    スタック構造であり、演算処理された結果に基づいたフラグ情報が順次蓄積される第2制御情報保持部と、
    前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
    前記演算プロセッサー内の前記特定サブプロセッサーの前記第1制御情報保持部及び任意のサブプロセッサーの前記第2制御情報保持部のいずれかに保持され、前記合成された合成フラグ情報を選択する選択部と、
    を備え、
    前記第1制御部又は第2制御部が、
    前記選択部により選択されたフラグ情報に応じて、該フラグ情報を保持していた前記特定サブプロセッサー又は前記サブプロセッサーと同期して前記第1制御部又は第2演算部に命令を実行させる
    ことを特徴とする請求項1に記載の並列計算装置。
  5. 前記サブプロセッサーは、
    前記特定サブプロセッサーが蓄積するフラグ情報及び前記第2演算部におけるフラグ情報のいずれかを選択する選択部と、
    スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、前記特定サブプロセッサーと同期して順次蓄積される第2制御情報保持部と、
    前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
    を備えることを特徴とする請求項1に記載の並列計算装置。
  6. 前記サブプロセッサーは、
    前記特定サブプロセッサー及び任意のサブプロセッサーが蓄積するフラグ情報のいずれかを選択する選択部と、
    スタック構造であり、前記選択部によって選択された結果に基づいたフラグ情報が前記スタック構造に、前記選択されたフラグ情報を蓄積する前記特定サブプロセッサー又は任意のサブプロセッサーと同期して順次蓄積される第2制御情報保持部と、
    前記第2制御情報保持部に蓄積されたフラグ情報を合成する第2合成部と、
    を備えることを特徴とする請求項1に記載の並列計算装置。
  7. 前記サブプロセッサーは、
    入力される前記合成フラグ情報を選択的に反転する反転処理部と、
    前記反転処理部が出力するフラグ情報出力か、常に命令実行を可能にする制御情報のいずれかを選択する選択部と、
    を備え、
    前記第2制御部は、
    前記選択部によって選択された結果に応じて前記第2演算部に命令を実行させる
    ことを特徴とする請求項1に記載の並列計算装置。
JP2009121389A 2009-05-19 2009-05-19 並列計算装置 Expired - Fee Related JP5358287B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 並列計算装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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) 演算処理装置
JP4986431B2 (ja) プロセッサ
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
JP5699554B2 (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
JP2000305781A (ja) Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
JP2011090592A (ja) 情報処理装置とその命令デコーダ
JP2008242647A (ja) プロセッサ
JP2009099097A (ja) データ処理装置
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
KR100316078B1 (ko) 파이프라인방식프로세서
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
JP5786719B2 (ja) ベクトルプロセッサ
CN216527140U (zh) 一种分支预测的装置及处理器

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