JP2007526571A - Simdデバイスにおける制御フロー管理のための方法及び装置 - Google Patents

Simdデバイスにおける制御フロー管理のための方法及び装置 Download PDF

Info

Publication number
JP2007526571A
JP2007526571A JP2007501344A JP2007501344A JP2007526571A JP 2007526571 A JP2007526571 A JP 2007526571A JP 2007501344 A JP2007501344 A JP 2007501344A JP 2007501344 A JP2007501344 A JP 2007501344A JP 2007526571 A JP2007526571 A JP 2007526571A
Authority
JP
Japan
Prior art keywords
emc
register
data
instruction
simd
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
JP2007501344A
Other languages
English (en)
Other versions
JP4484925B2 (ja
JP2007526571A5 (ja
Inventor
サイモン フェニー
Original Assignee
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2007526571A publication Critical patent/JP2007526571A/ja
Publication of JP2007526571A5 publication Critical patent/JP2007526571A5/ja
Application granted granted Critical
Publication of JP4484925B2 publication Critical patent/JP4484925B2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • 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
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

単一命令複数データ処理デバイス(SIMD)は複数のプロセッシングエレメント(PE)を含む。各PEは、複数のビットを格納するための実行マスクカウンタ(EMC)レジスタを含む。EMCレジスタ内に格納されたマルチビットデータに応じてPE内のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする手段が存在する。
【選択図】図2

Description

本発明は、単一命令複数データ(SIMD)デバイスにおけるメソッドフロー管理の方法及び装置に関する。
コンピューティングデバイスは、一般に4つの大きなカテゴリーに分類される。
1.単一命令/単一データ(SISD)
2.複数命令/単一データ(MISD)(稀なカテゴリー)
3.単一命令/複数データ(SIMD)
4.複数命令/複数データ(MIMD)
一番目のカテゴリーであるSISDは、単一命令ストリームがデータの単一のセットに作用する、大半の既存のコンピュータデバイスを表す。四番目のMIMDは、N個のプロセッサ(すなわち命令)がデータのN個のセットに対して独立して実行することができる、プロセッサファーム及びあるスーパーコンピュータのようなシステムを表す。
三番目のカテゴリーであるSIMDは、これら2つの両極端の組み合わせである。図1を参照すると、一般的にSIMDデバイスは、命令ストリーム「11」を解釈する単一の制御ユニット(CU)「10」と、CUの誘導により同期進行で動作する複数の一様で並列のプロセッシングエレメント(PE)「12」のアレイを有する。通常、各PEは、演算/論理ユニット(ALU)、レジスタ、及び/又はメモリ及び/又は隣接するPEへのインターフェースを含む。
x86及びパワーPCなどの最新のCPUの多くは、SIMDサブユニットを制御する命令を含む。SIMDシステムは、コンピュータグラフィックスを含む数多くのアプリケーションで用いられており、マルチメディアはより一般的になりつつある。
各サイクルにおいて、CUは、同一のオペレーションを行うように全てのPEに命令する。実際には各PEは、同一のプログラム、更にデータが異なることを除いては他のPEと同じコードラインを実行している。このことは、幾つかの興味深い制御フロー問題につながる。例えば、単純なIF−THEN−ELSE構成を有する以下の擬似コードを考える。
Figure 2007526571
各PEは同一の命令を実行しているので、「IF」命令文に到達した時にジレンマに陥る。例えば「条件_1」は、ローカルなPEのデータレジスタ値の判定値であると仮定する。PEjにおいて、「条件_1」は「真」と評価し、「コードブロック_3」ではなく「コードブロック_2」の実行を要求し、PEkにはその逆を適用することができる。
従来技術の解決策は「マスキング」として知られる機能を含むことである。各PEはブール型の「イネーブルレジスタ」ER「13」を含み、イネーブルレジスタが「偽」の場合には、PE内のデータレジスタへの書き込みがディスエーブルになるようにする。従って、上記で与えられた単純な例は以下のようにリエンコードされる。
Figure 2007526571
PEjの場合には、「コードブロック_3」が処理されるが、関連のERがコードのその部分において「偽」に設定されているときには、あらゆる記憶レジスタを更新することは許されないので、完全に問題ではない。しかしながらこれは、特に単純な実施例であった点に留意すべきであり、より複雑な及び/又はネストされた制御フローコードではより綿密なコーディングが必要であることは明らかであろう。
「C」等の最新のプログラミング言語で一般に見られる他の構造化制御フロー構成が存在する。以下にこれらの構成の幾つかの極めて簡潔な要約を示す。
ネスティング:
制御フロー構成はネストすることができ、すなわち1つのものを別のものの中に埋め込むことができる。以下はネストした「IF」構成を用いた簡単な実施例である。
Figure 2007526571
「コードブロック_2」は、「条件_1」、次いで「条件_2」の両方が通った場合にのみ実行されることになる。「コードブロック_3」は、「コードブロック_1」又は「コードブロック_2」に到達した場合には「実行」されない。
複数方式IF−THEN−ELSIF−ELSE:
複雑な判断を生成するためにIF−THEN−ELSEはネストすることができるが、以下の形態のチェーンとして表す方が好ましい場合がある。
Figure 2007526571
これは機能的に等価な以下のものよりも表現がより簡便である点に留意されたい。
Figure 2007526571
ループ:
例えばwhileループである前置判定ループは、以下の形態をとる。
Figure 2007526571
この実施例では、「コードブロック_1」を実行後に「条件_1」が「真」の場合には、「コードブロック_2」が実行されることになる。次いで、この条件が再判定され、「真」である場合には「コードブロック_2」が再実行されることになる。このプロセスは、条件が成立しなくなるまで繰返し、その後「コードブロック_3」が処理される。単純な変形形態である、後置判定ループは、「コードブロック_2」が常に少なくとも一度は実行されるように最初の条件判定を行わない。
「breakloop」及び「continueloop」:
ループは、「breakloop」及び/又は「continueloop」命令文を使用することによって拡張することができる。ループ内で「breakloop」に遭遇した場合には、その時点でループが直ちに終了したかのように、ループの内側(最も内側)の全ての後続の命令はスキップされ、制御はループの後に続く命令に進む。以下にコーディングの実施例を示す。
Figure 2007526571
「コードブロック_1」を実行後に「条件_2」が「偽」である場合には、「コードブロック_3」が実行され、ループ条件は再判定されることになる。他方、「条件_2」が「真」である場合には、「コードブロック_2」が実行され、「breakloop」コマンドに遭遇し、次いで、制御は直ちに「コードブロック_4」に渡される。
「continueloop」命令文は、ループ本体内部の残りの命令をスキップするが、ループを終了しない。代わりに制御は次の反復に続く。上述の実施例において「breakloop」を「continueloop」に置き換えると、「continueloop」に遭遇した後で制御は、ループの開始点に進み、「条件_1」等を再判定することになる。
breakloop及びcontinueloop命令文は、これらが最も深くネストされたループではなく、外側のいずれかの親ループを参照するように拡張することができる点を留意されたい。
Return及びExitコマンド:
「breakloop」構成に関連して、幾つかの言語では、プロシージャが早期に終了し親関数に戻るべきことを示すために「Return」命令文を採用している。「Exit」コマンドは、現時点でのプロセスを終了させる点で更に強いものであり、これはエラー処理において用いられる場合がある。
Case構成:
case命令文は、IF−THEN−ELSEの変形であり、単一の式の値に応じて異なるコードセクションを実行するために用いられる。典型的な実施例は以下の通りである。
Figure 2007526571
上述の実施例では、「式_1」が「定数_A」又は「定数_B」のいずれかであると評価された場合、「コードブロック_1」が実行されることになる。「コードブロック_1」の後の後続の「DONE」は、case命令文がここで終了しなければならないことを示している。他方、式が「定数_C」であると評価された場合、「コードブロック_2」が実行される。このセクションの終了点には「DONE」がないので、実行は「コードブロック_3」に続く。「DEFAULT」のcaseは、式が列挙された値のいずれにも一致しない場合に選ばれる。
再帰:
この最後の構成は、コードセクションが自己を参照する場合を表す。これは最新のコンピュータ言語の一般的な機能であり、ほとんどの教科書で記載を見ることができる。一般に、かかる機能のサポートは、プログラムカウンタ及び他の関連する状態を保存するためのプログラムスタックを必要とする。
従来技術において複雑な条件コードを処理する1つの手法は、各PEに適正なER値を計算させるようにCUが指示する命令を明示的に記述することである。次いで、各PE内の例えばローカルなプログラムレジスタ内に中間値が格納される。これは確かに極めて融通性を有するが、パフォーマンスを低下させる可能性の高い多くの追加命令を必要とする。
「SIMDグラフィックスプロセッサ」(Computer Graphics(SIGGRAPH84会報)、18、(3)77〜82ページ、1984年7月)においてLevinthal及びPorterは、ビットレジスタの「スタック」からなる「フラグ実行スタック」を追加することによりER制御フラグを強化している。スタックとERとの間で値をプッシュ及びポップするための命令を追加することで、ネストされた条件コードの幾つかの形態の極めて容易な実装を可能にしている。CHAP制御ユニットもまた、全てのER値が「偽」であるかどうかを判定する手段を含むように強化される。これにより、例えば、全てのPEにわたる「while」ループの効率的な実装が可能になる。特に、個々のPEが「ループ判定ができない」場合は常に、他のPEがディスエーブルでなければループ反復を続けねばならないので、そのPEは、ERを「偽」に設定するのみである。ERがいつ「偽」であるかについての判定を用いる特殊な条件分岐命令は、全てのPEがループを完了したときに、ループ終了後の命令にCUがジャンプすることを可能にする。
「フラグ実行スタック」強化は、他のシステムが後に用いている強力な構成であるが、幾つかの欠点が無い訳ではない。第1に、ERビットのみが直接アクセス可能であるので、「continueloop」等の上述の制御形態の幾つかは容易にはサポートされない。第2に、スタックの深さがN(すなわちPE毎にNビットの記憶領域)である場合に、制御の最大ネスティングの深さは〜Nレベルのみに制限される。
Levinthal及びPorterの方法の変形形態が、WO0246885(Redford)で提示されている。このシステムでは、スタックはカウンタ値によって置き換えられている。ER値が「保存される」ときに、ERが「偽」である時は常に格納されているカウンタ値がインクリメントされ、そうでない場合は格納されたカウンタは修正されない。「リストア」時では、カウンタ値が(議論を進めるために)非ゼロである場合にはカウンタはデクリメントされてERが「偽」に設定され、そうでない場合には、カウンタは修正されないままで、ERが「真」に設定される。これは、インクリメント及びデクリメントユニットの追加によるコストがあるが、Nビットのカウンタに対して条件ネスティングの保証される安全最大レベルが最大2Nであるという点で、Levinthal他の方法を改善している。実際にはこれは単にスタックのデータ圧縮の一形態であるので、幾つかの一般的な制御演算と全く同じ問題を依然として有している。
EPO035647では、根本的に異なる手法がとられている。このシステムでは、各PEは「プログラムカウンタ格納」及び「優先レジスタ」を含む幾つかの追加のマルチビットレジスタを有する。プログラムソースコードは、ラベルによって開始するか又は分岐後に生じ、更に分岐(条件及び非条件の)又は別のラベルによって終了するブロックに分割される興味深い方法で事前処理される。次いで、これらのブロックは解析され、一意の整数優先コードが割当てられる。優先値を用いる特殊な命令は、ブロックの開始点及び/又は終了点に追加される。
実行プロセスは複雑であり、最も低い優先度のものを見つけ出すために、全てのイナクティブPEの優先コード全体を検索することができる特定のハードウェアを必要とする。システムがブロック終了点に到達した時には、このシステムは上述のハードウェアを用いて最低優先度値を有するコードブロックを識別し処理する(プロセス内の全ての他のPEをディスエーブルにする)。
このシステムは、「スパゲティコード」と呼ばれる場合がある構成を含む任意の条件コードをある程度処理することができるが、ソースコードの静的な事前解析に起因して、この方法は再帰を取り扱うことができない。更に、最低優先度値を特定するための検索ハードウェアは極めて少数のPEにも許容できるが、極めて高価で、及び/又は中程度の数のPEでも大きなタイミング遅延を生じる可能性が高い。
WO0246885(Redford)公報 EPO035647公報 「SIMDグラフィックスプロセッサ」(Computer Graphics(SIGGRAPH84会報)、18、(3)77〜82ページ、1984年7月)
本発明の好ましい実施形態は、多数のPEを備えながら実装が比較的安価であり、「構造化プログラミング」において用いられる制御フロー構成の事実上全ての一般的な形態を容易にサポートすることを可能にする。これは、上述のような従来技術に伴う制御の制限及び/又はコストを回避し、更にソースコードの大きな事前処理を必要としないので、従ってコンパイルプロセスが簡素になる。
本出願人は、単一ビットのERフラグをマルチビットに拡張することにより、これらのビットの少数の事前決定値について判定することができ、更に、小さな制御フロー命令セットを含めることで、SIMDプロセッサ上での制御フローの管理を効率的にする手段を得ることができることを確認した。これは、命令実行の制御に単一ビットのERフラグを用い、このフラグの管理が明示的なローカルレジスタ、スタック、カウンタ、又は優先値などの補助構造を用いて行われる従来技術とは異なる点に留意されたい。
本発明の実施形態によれば、複数のプロセッシングエレメント(PE)を含み単一命令複数データ処理デバイス(SIMD)であって、各PEが、複数のビットを格納するための実行マスクカウント(EMC)レジスタと、このEMCレジスタ内に格納されたマルチビットデータに応じてそのPE内のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする手段とを含むSIMDが提供される。
本発明の実施形態によれば、複数のPEを含むSIMD上でプログラムフローを制御するための方法であって、該PEに命令及びデータのシーケンスを供給する段階と、該PE上でこれらの命令を実行する段階と、各PE上のEMCレジスタ内に格納されたマルチビットデータ値に応じて各PE内のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする段階と、あるPEのEMCレジスタ内のマルチビット値をそのPE上のレジスタへのデータの書き込みがディスエーブルにされ、他のPE内のレジスタへのデータの書き込みがイネーブルにされているときに修正する段階を含む。
ここで本発明の好ましい実施形態を、添付図面を参照しながら例証として詳詳細に説明する。本明細書では本発明の2つの特定の実施形態を説明する。第1のものは説明がより簡単であるので、本発明の作用をより良好に例示している。第2の実施形態は、利用される値の幾つかをコード化する方法の改善を詳述しており、この結果ハードウェア実装のコストが低減される。
図2を参照すると、第1の実施形態において各PEの従来技術のERフラグがマルチビットの「実行マスクカウント」レジスタ又はEMC「20」と置き換えられている。各EMCは、関連する判定論理ユニット「21」を有し、これはEMCが幾つかの事前定義値の1つであるときに報告することができ、例えば、これらの事前定義判定は、「EMCがゼロ」、「EMC=1」、及び「EMC=2」である。他の値も利用可能である。関連の事前定義EMC判定の結果を含むPE毎の信号のセット「22」がCUに供給される。これらの信号の目的は、以下で詳述されることになる。
EMCは、内部PEレジスタに対する命令結果の書き戻しをディスエーブル/イネーブルにするのに用いられ、値が「ゼロ」のときには、書き戻しはイネーブルにされ、全ての非ゼロ値に対してはディスエーブルにされる。従来技術とは異なり、これはEMCレジスタ内の全てのビットの判定である点に留意されたい。
プログラム又はプロセスの開始点において、全てのEMCは事前決定値に初期化される。通常これらの値にはゼロが選ばれ、従って最初は全てのPEはイネーブルにされる。
(命令)
好ましい実施形態では、構造化制御フローをサポートするために5つの追加の制御命令が定義される。これらの命令は以下の通りである。
CondStart − 条件開始
CondElseIf − 条件ELSE IF
CondSetMask − 条件マスク設定
CondLoopTest − 条件ループ判定
CondEnd − 条件終了
しかしながら、これらの命令の変形形態(例えば追加又は修正)は当業者には明らかである点に留意されたい。
各制御命令は、当該命令の動作をパラメータ化するのに用いられる2つ又は3つの「即値データ」フィールドを有し、これらは擬似コードフォーマットを用いて簡潔に記述されることになる。これは明瞭化のために行われ、直接ハードウェア実装に対して最も効率的なものとはならない可能性がある点に留意されたい。よりハードウェア向きの実装は、後で説明されることになるが、他の代替形態は当業者には明らかになるであろう。次に上述の説明に続き、制御フローを実装するためにこれらを如何にして利用するのかに関する実施例を挙げる。
1)CondStart(条件、MaskAdjustAmount、JumpTarget)
CondStart命令は、ほとんどの制御フローブロックを開始するのに用いられ、3つのフィールドをとる。最初の「条件」は、PEのALUによって行うことができるなんらかのブール判定を意味している。実施形態における説明を簡単にするために、これは、CPU命令セットにおいて一般に見られる「条件コード」の判定(例えば、「負である」、「ゼロではない」、又は「真」)であるが、当業者であれば他の可能性も想定できるであろう。
2番目のフィールドであるMaskAdjustAmountは、ローカルのEMC値を如何に調節するかを記述する。好ましい実施形態においては、これは2つの可能な値「1」又は「2」の選択だけを必要とする。最後のフィールドであるJumpTargetは、特定の条件が適合するときにCUのプログラムカウンタを変更するのに用いられる。
要約すると、各PEに対して、条件判定が成立しない、又はEMCが非ゼロである場合には、EMCはMaskAdjustAmountによって調節/インクリメントされる。全てのEMCが非ゼロである場合には、CUはJumpTargetによって指示された命令にジャンプする。
命令の動作は次の擬似コードによって簡潔に要約される。
Figure 2007526571
動作はまた、図3に概略図で示されている。命令は、段階「100」において「最初の」PEを調べることから始まる。段階「101」で、全てのPEが調べられたかをチェックし、段階「102」に進む。ここでPEの状態に対する命令で要求されている条件を判定し、更にEMC値を調べる。条件が「偽」と評価され、或いはEMC値が非ゼロである場合には、処理は段階「103」に進み、そこでEMCは、命令で指定される「MaskAdjustAmount」だけインクリメントされる。次いで処理は段階「104」に進む。段階「102」において判定が「いいえ」の経路をとった場合、処理は段階「104」に進む。
段階「104」では、命令は次のPE(存在する場合)に進み、段階「101」に戻る。全てのPEが102及び103によって処理されると、命令は段階「110」に進む。尚もゼロEMC値を有する幾つかのPEが存在する場合、標準的な方法でプログラムカウンタは次の命令「111」に進む。或いは、全てのPEがこの時点でディスエーブルであり、すなわち全てのEMC≠0である場合には、命令は段階「112」において「JumpTarget」に分岐する。
2)CondElseIf(条件、MaskAdjustAmount、JumpTarget)
CondElseIf命令は主に、else/elseif文節に対して用いられ、並びにcontinueloop及びbreakloop命令文を実装するためにも用いられる。これは、CondStartと同じ3つのパラメータをとる。この機能は以下の通りである。
Figure 2007526571
この機能はまた、図4にも示されている。段階「100」、「101」、「104」、「110」、「111」、及び「112」は、既に説明したものと同一である。段階「103」に代わる段階「120」では、EMCがゼロに対する等価性が判定され、等しい場合、EMCは命令の「MaskAdjustAmount」に設定され「121」、制御は段階「104」に進む。段階「120」においてEMCが非ゼロであれば、EMCは段階「122」において1に対する等価性が判定され、条件が判定される。これらの判定のいずれかが成立しない場合には、制御はこの場合もやはり段階「104」に進む。両方が通った場合には、EMC値は段階「123」においてゼロに設定され、制御はやはり段階「104」に進む。
3)CondSetMask(条件、MaskAdjustAmount、JumpTarget)
この命令は、breakloop/continueloop、早期のreturn、及びexit用に用いることができる。命令は以下のように動作する。
Figure 2007526571
この動作はまた図5に要約されている。これは、段階「102」及び「103」が「130」及び「131」でそれぞれ置き換えられている点を除けば、動作においてCondStart(すなわち図3)とほぼ同一である。段階「130」では、EMCはゼロに対する等価性について判定され、これが満たされ、且つ条件が「真」である場合には、制御は段階「131」に進み、ここでEMCは命令で指定されているMaskAdjustAmountに設定される。「130」の判定が成立しない場合には、制御は前と同様に段階「104」に渡される。
4)CondLoopTest(条件、MaskAdjustAmount、JumpTarget)
これは、ループ構造の終了点において前置判定ループ及び後置判定ループの両方に対して用いられる。好ましい実施形態では、MaskAdjustAmountはやはり1又は2の値に制限されている。
Figure 2007526571
ここでも同様に、上述の説明の形態は簡単にすることが意図されている。効率化のために、ハードウェア実装は異なる構成を用いることができる。
この動作は図6に示されている。最初の段階「140」は、ブールフラグ「ExitLoop」を「真」に設定するものであり、次いで段階「100」に進む。段階「100」、「101」、及び「104」は、前の命令において説明されたものと同じ関数を実行する。段階「101」の後で尚PEを処理している場合、方法は段階「141」に進む。いずれかのPEが尚も実行を必要としていることを示している、すなわち条件が「真」でありEMCがゼロである場合、段階「142」へと進み、そうでなければ「104」へと進む。段階「142」においてExitLoopのブール値は「偽」に設定される。
段階「101」で、全てのPEが判定されたと判断すると、制御は「143」に進み、ここでExitLoopフラグを調べ、これが「偽」であれば制御は段階「150」に進み、そうでなければ「160」に進む。段階「150」はPEを通じて別の反復パスを開始し、「151」に続いて、反復が完了した時点を検出する。特定のPEを処理する際に、段階「152」では、そのPEがそのループを終了した直後であるかどうか、すなわちEMC=0で且つ条件が「偽」であるかどうかを判断する。これが満たされない場合には、制御は段階「154」へと渡され、その他の場合には段階「153」に渡される。段階「153」では、MaskAdjustAmountがEMC値に加算され、制御は段階「154」に進み、ここで、次のPEへ移り、引続いて段階「151」へと移る。「151」で、全てのPEが処理されたことを示す場合には、段階「155」はCUプログラムカウンタを「JumpTarget」に設定する。
段階「160」が選ばれた場合には、制御はPEを通じて異なる反復パスを開始し、段階「161」では全てのPEが処理された時点を判断する。段階162では、PEのEMC値が調べられ、この値がMaskAdjustAmountよりも小さい(或いは等しい)場合には、EMCはゼロに設定され「163」、その他の場合にはEMCからこの値が減算される「164」。次いで、制御は段階「165」へ続き、ここで次のPEに進む。「161」で、全てのPEが処理されたと判断した場合には、段階「166」はCUプログラムカウンタを次の命令に進める。
5)CondEnd(MaskAdjustAmount、JumpTarget)
最後の命令は、制御フロー命令の終了点で用いられる。これは以下のように動作する。
Figure 2007526571
この動作はまた図7に示されている。この動作はcondstart(図3)のものと極めて類似しており、段階「100」、「101」、「104」、「110」、「111」、及び「112」は同一であるが、段階「102」及び「103」は、以下のように「170」、「171」、及び「172」と置き換えられている。段階「170」において、EMC値がMaskAdjustAmountよりも小さいか、又はこれと等しい場合には、EMCは段階171において単純にゼロに設定され、その他の場合には段階「172」においてEMCからMaskAdjustAmountが減算される。好ましい実施形態ではMaskAdjustAmountはここでも1又は2の値に制限されている。
(制御フロー構成の変換)
上述の命令は、前に説明した制御フロー構成を実装するのに用いられる。含まれる単純な原理をコンパイラの当業者に教示するためには、完全というには遠いが十分であるはずの幾つかの例を提示する。
例:「IF」構成:
以下のものは単純なif/else命令文である。
Figure 2007526571
これは、次のように変換することができる。
Figure 2007526571
これは以下のように動作し、すなわちCondStartは「IF」への進入時に実行される。PEがイネーブルであり(EMC=0)、且つ「条件_1」が「真」の場合は常に「コードブロック_1」が実行されることになる。全ての他のPEにおいて、EMCはMaskAdjustAmount、すなわち「+1」だけインクリメントされる。アクティブなPEがない場合は、CUは直ちにELSE_ADDRに分岐し、「コードブロック_1」内の全ての命令をスキップする。
ELSE_ADDRでは、CondElseIfはあらゆるイネーブルのPEをディスエーブルに設定し、「条件_1」が成立しなかったあらゆるもの(すなわちEMC=1であるもの)をイネーブルにすることになる。「IF」の終了点では、元のEMC値がCondEnd命令によってリストアされる。
「ELSIF」文節を伴う「IF」はこれよりも若干複雑である。例えば次の擬似コードがある。
Figure 2007526571
これは、次のように変換されることになる。
Figure 2007526571
このコードでは、条件ループの開始点においてイネーブルにされたいずれかのPEが、コードセクションを実行すると、そのEMCは2に設定されることになる。未だ判定を満たしていない全てのものが1のEMCを有する。
修正されたCondElseIf命令が、条件コードの更に「短絡」を実行することができるように、2つの「分岐アドレス」を有する別の実施形態を生成することが可能である。
実施例:ループ構成:
次の単純な「while」命令文:
Figure 2007526571
は、以下のように変換することができる。
Figure 2007526571
「breakloop」及び「continueloop」機能を伴うループをサポートするために、例えば以下:
Figure 2007526571
では、最初の「MaskAdjustAmount」は代わりに「2」に設定され、「continueloop」及び「breakloop」の状態を監視することができる。
例えば:
Figure 2007526571
「breakloop」又は「continueloop」が「IF」内の唯一のコードである場合、単一のCondSetMask命令は、その実装において十分なものとなる。CondSetMask値を増大させることにより、最内側のループだけでなく親ループも制御する拡張「breakloop/continueloop」コマンドを実装することも可能である。
Case命令文はELSIFコードと極めて類似する方法で取り扱われるが、CUのプログラムカウンタスタック及びEMC内のビット数によって決定される最大値までの再帰は、説明の手法によって自動的に処理される。
(ハードウェア構造)
ここで命令の演算のための好ましい構成を図8を参照しながら説明する。CUが上述の制御フロー命令、命令「条件」「50」、Operand「51」、MaskAdjustAmount「52」、及びJumpTarget「53」の1つを処理するときに、フィールドが抽出される。
「条件」「50」は全てのM個のPEユニットに同時通信され、特定のレジスタ又は条件フラグ「61」に対して判定される。各PEに対して判定によってブールフラグが発生し、M個の結果ビット「62」が生成される。上記で説明されたように、各PEについてのEMC値「20」が判定され「21」、3つの事前決定値、すなわち0、1、又は2のうちの1つに一致するかどうかを判断し、3つのブールフラグが発生する。各フラグは他のM個のPEからの一致する値と共にグループ化され、「Is0」、「Is1」、及び「Is2」に対応するMビットの3つのセット「63」「64」「65」を生成する。明らかにM個のPEのうちの1つに対応する特定のビット位置は、「63」、「64」、又は「65」のうちの多くても1つだけが「真」となる可能性がある。
「判断演算」ユニット「70」は、ConditionResult「62」、EMC値フラグの3つのセット「63」から「65」まで、及び命令オペランド「51」、及び命令マスク「52」をとり、命令に応答するため全てのPEのEMC値を調節する方法を決定する。選択可能な6つの可能な演算がある(些細な非演算選択肢を無視する)。これらの演算は以下のものである。
EMCに2を加算
EMCに1を加算
EMCを0にクリア
EMCを命令のMaskAdjustAmount「52」に設定
EMCから1を減算
EMCから2を減算
これらの選択は3ビットを用いて明確にコード化することができる。
あらゆる特定の命令においても、これらの演算のうち多くても1つが、特定のPEのEMCへの適用を必要とし、更に全てのPEにわたって多くても2つだけの異なる演算が用いられることになる。第1の演算選択である「演算 1」「71」は3ビットでコード化され、全ての「EMC更新ユニット」「76」にコピーされる。Mビットマスクである「演算1選択」「72」は、M個のEMC更新ユニットのどのサブセットがこの演算を実行するべきであるかを示している。EMC更新ユニットは要求された演算を単純に実行する。
同様に第2の可能な演算選択「演算2」「73」もまた、これらのユニットのどれが演算を実行すべきかを示す別のMビットマスク「演算2選択」「74」と共に、全てのEMC更新ユニットに同時通信される。ここでもやはり、あらゆる特定のEMC更新ユニットも、2つの演算のうち多くとも1つのみを実行することになる。
「Set EMC to MaskAdjustAmount」コマンドを実行するために、MaskAdjustAmount「52」もまた全てのEMC更新ユニットに同時通信される。
ユニット「70」の残りの要求される関数は、CUがどのようにプログラムカウンタを調整するべきかを決定するものである。CUが「DoBranchフラグ」「80」をセットすると、CUの「命令取り出しユニット」「81」は、命令の「JumpTarget」「53」からの命令の取り出しを始めるためにプログラムカウンタを更新することになる。
ここで「演算判断」ユニット「70」の動作の詳細は、以下の擬似コードにより要約される。
Figure 2007526571

Figure 2007526571

Figure 2007526571
上述の機能はまた、図9に例示されている。段階「200」において、現在の命令タイプが判定される。命令がCondStart又はCondLoopTestのいずれかであれば、段階「210」に進み、その他の場合には段階「201」に進む。段階「201」において、命令がCondSetMask命令であれば、段階「211」に進み、その他の場合には段階「202」に進む。段階「202」において、命令がCondEndであれば、段階「212」に進み、その他の場合には命令はCondElsifのはずであり、段階「213」に進む。
段階「210」においてM個のブールフラグ「ActivePE」は、ConditionResultを伴うIs0フラグのビット単位ANDに設定される。
段階「211」ではActivePEは、ConditionResultのNOT(否定)を伴うIs0フラグのビット単位ANDであるように設定される。
段階「212」では、命令のMaskAdjustAmountが判定される。これが1に設定されている場合は、制御は「214」に進み、その他の場合(2のはずである)には、制御は「215」に進む。「214」では、ActivePEは、「Is0 or Isl」に設定され、「215」では、ActivePEは、「Is0 or Is1 or Is2」に設定される。
段階「213」では、命令のMaskAdjustAmountが判定される。これが0に設定されている場合、制御は段階「216」に渡され、その他の場合には「217」に渡される。「216」ではActivePEは、「Is0 or (Is1 and ConditionResult)」に設定され、「217」ではActivePEは、「Is1 and ConditionResult」に設定される。
段階「210」、「211」、「214」、「215」、「216」、又は「217」の後、制御は段階「230」に渡され、ここでActivePEがゼロベクトルである場合、ブールフラグ「DoBranch」が「真」に設定され、その他の場合には「偽」に設定される。
段階「231」及び「232」では、命令タイプが再び判定され、CondLoopTestであった場合にはDoBranch信号は反転される。制御は「250」に進む。
段階「250」では、命令がCondStartである場合、制御は段階「260」に進み、その他の場合には「251」に進み、ここで命令がCondElsifである場合には、制御は段階「261」に進み、その他の場合には「252」に進み、ここで命令がCondSetMaskである場合には、制御は段階「262」に進み、その他の場合には「253」に進む。「253」において命令がCondLoopTestである場合には、制御は「263」に進み、その他の場合には段階「264」に進む。
段階「260」では、Oper_1は、全ての非アクティブのPEについてイネーブルにされ、Oper_2はディスエーブルにされ、制御は「270」に渡され、ここで命令のMaskAdjustAmountを判定する。これが1である場合、制御は段階「271」に渡され、ここで「EMCAdd1」がOper_1として選ばれ、その他の場合には制御は「272」に渡され、ここで「EMCAdd2」がOper_1として選ばれる。
段階「261」では、Oper_1は「EMCSet」に設定され、EMC=0により全てのPEについてイネーブルにされる。Oper_2は「EMCClear」に設定され、EMC=1及び条件「真」で全てのPEについてイネーブルにされる。
段階「262」では、Oper_1は「EMCSet」に設定され、EMC=0且つ条件=「真」で、全てのPEについてイネーブルにされる。
段階「263」は、DoBranchフラグを調べることによってループが演算を続けるべきか、又は終了するべきかを判断する。DoBranchフラグが「真」である場合、制御は段階「280」に進み、その他の場合には段階「264」に進み、ここでもCondEndコードを処理する。段階「280」で、EMC=0且つ条件が「偽」で、Oper_1は全てのPEについてイネーブルにされ、Oper_2はディスエーブルにされる。制御は段階「270」に渡される。
段階「264」では、MaskAdjustAmountが判定され、この値が1である場合、制御は段階「281」に渡され、その他の場合には段階「282」に渡される。「281」では、Oper_1は「EMCSub1」に設定され、非ゼロのEMCで全てのPEについてイネーブルにされ、Oper_2はディスエーブルにされる。
段階「282」では、Oper_1は「EMCClear」に設定され、0又は1のいずれかのEMCで全てのPEについてイネーブルにされ、Oper_2は、全ての他のPEについて「EMCSub2」に設定される。
(第2の実施形態)
第2の好ましい実施形態では、EMC値は整数として表す必要はなく、別の数学上の群を用い得る点認識することでハードウェアコストの節約を達成することができる。詳細には、この実施形態では、2を法とするプリミティブ多項式に基づくフィールドを用いる。これらは線形フィードバックシフトレジスタ又はLFSRにおいて頻繁に用いられている。
このシステムにおける基本的な値/演算は以下のように置換される。
第1の実施形態の値又は演算 第2の実施形態における置換
値0 値1
1を加算 2を法とする多項式を乗算
2を加算 4を法とする多項式を乗算
2を減算 1/4を法とする多項を乗算
1を減算 1/2を法とする多項式を乗算
EMCの所与のサイズ、すなわちMビットについて、プリミティブ多項式は最小の利用可能な項数を有するように選ばれる。この実施形態においてMは9であり、選ばれたプリミティブ多項式はx9+x5+1である。「1を加算」に対する置換を実装するために、VHDLなどのハードウェア記述言語に翻訳するのには自明である以下の擬似コードが用いられる。
Figure 2007526571
「1を減算」の置換は同様に以下の通りである。
Figure 2007526571
「2を加算」及び「2を減算」の等価物を評価するためには、これらの関数を2回用いる。
これらの演算はハードウェア内への実装が相当安価となり、評価時間が一定であるといった利点をも有することは当業者には明らかであろう。これは、直線的な労力を要する可能性がある通常の整数の加算及び減算と比較すると極めて有利である。このシステムの極めて僅かな不利点は、(2M−1)の一意の値だけしか表すことができない(整数の2Mに対し)点であるが、加算/減算ハードウェアの実質的な節約を考慮すれば、Mを容易に増大させることができる。
別の実施形態では、異なるサイズのEMCを対応するプリミティブ多項式と共に用いることができる。
SIMDデバイスの典型的な構成を示す図である。 本発明の広範な概略図である。 好ましい実施形態のCondStart命令のフローチャートである。 好ましい実施形態のCondElsif命令のフローチャートである。 好ましい実施形態のCondSetMask命令のフローチャートである。 好ましい実施形態のCondLoopTest命令のフローチャートである。 好ましい実施形態のCondEnd命令のフローチャートである。 本発明の実施形態における制御フロー命令に応答してPEのイネーブル/ディスエーブルを制御するのに用いられるロジックの概要を示す図である。 図8のロジックのサブセットのフローチャートである。
符号の説明
10 制御ユニット
11 プログラムメモリ
12 プロセッシングエレメント
20 実行マスクカウントレジスタ
21 判定論理ユニット

Claims (23)

  1. 複数のプロセッシングエレメント(PE)を含む単一命令複数データ処理デバイス(SIMD)であって、
    前記各PEが、複数のビットを格納するための実行マスクカウント(EMC)レジスタと、該EMCレジスタ内に格納されたマルチビットデータに応じて前記PE内のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする手段とを含む単一命令複数データ処理デバイス(SIMD)。
  2. 前記PEは、前記EMCレジスタ内に格納された前記データの事前決定値との比較に応じてディスエーブル及びイネーブルにされることを特徴とする請求項1に記載のSIMD。
  3. イネーブル及びディスエーブルにするための前記手段は、条件又はループ命令の実行中に動作することを特徴とする請求項1又は請求項2に記載のSIMD。
  4. PEの前記EMCレジスタ内に格納された前記データを修正する手段を含む請求項1、請求項2、又は請求項3に記載のSIMD。
  5. 前記EMCレジスタ内に格納された前記データを修正する手段は、前記データへの複数の修正のうちの選択されたものを行う手段を含むことを特徴とする請求項4に記載のSIMD。
  6. 前記EMCレジスタ内に格納された前記データを修正する手段は、前記データ値を事前決定量だけインクリメントする手段を含むことを特徴とする請求項4又は請求項5に記載のSIMD。
  7. 前記EMCレジスタ内に格納された前記データを修正する手段は、前記データ値を事前決定量だけデクリメントする手段を含むことを特徴とする請求項4又は請求項5に記載のSIMD。
  8. 前記EMCレジスタ内に格納された前記データを修正する手段は、前記データ値に事前決定量を乗算する手段を含むことを特徴とする請求項4又は請求項5に記載のSIMD。
  9. 前記EMCレジスタ内に格納された前記データを修正する手段は、前記データ値を事前決定量で除算する手段を含むことを特徴とする請求項4又は請求項5に記載のSIMD。
  10. 前記EMCレジスタ内の前記データ値は、プリミティブ多項式に基づくフィールドを用いることを特徴とする前記請求項のいずれかに記載のSIMD。
  11. 同一の命令を実行するように構成された複数のプロセッサ要素PEを含み、該PEの各々がマルチビットEMCレジスタを含むSIMDデバイス上でプログラムフローを制御する方法であって、
    前記PEによって実行されるべき条件命令を含む実行命令を前記各PEに供給する段階と、
    格納された前記EMC値と実行中の条件命令で行われる条件判定とに応じて前記PE内のレジスタへのデータの書き込みをイネーブル/ディスエーブルにする段階と、
    を含む方法。
  12. 前記各PEの前記EMCレジスタ内に格納された前記データを修正する段階を含む請求項11に記載の方法。
  13. 前記EMCレジスタ内に格納された前記データへの複数の可能な修正の中から選択する段階を含む請求項12に記載の方法。
  14. 複数のPE内のレジスタへのデータの書き込みがイネーブル又はディスエーブルのいずれであるかを判断し、該判断結果に応じて新しい命令に分岐する段階を含む請求項4から請求項12のいずれかに記載の方法。
  15. 前記修正段階は、前記EMCレジスタ内に格納された前記データを事前決定量だけインクリメントする段階を含む請求項12に記載の方法。
  16. 前記修正段階は、前記EMCレジスタ内に格納された前記データを事前決定量だけデクリメントする段階を含む請求項12に記載の方法。
  17. 前記修正段階は、前記EMCレジスタ内に格納された前記データに事前決定量を乗算する段階を含む請求項12に記載の方法。
  18. 前記修正段階は、前記EMCレジスタ内に格納された前記データを事前決定量で除算する段階を含む請求項12に記載の方法。
  19. 前記EMCレジスタ内の前記データ値が、プリミティブ多項式に基づくフィールドを用いることを特徴とする請求項12に記載の方法。
  20. 複数のPEを含むSIMD上でプログラムフローを制御するための方法であって、
    前記PEに命令及びデータのシーケンスを供給する段階と、
    前記PE上で前記命令を実行する段階と、
    各PE上のEMCレジスタ内に格納されたマルチビットデータ値に応じて各PE内のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする段階と、
    あるPEのレジスタへのデータの書き込みがディスエーブルにされ、他のPEのレジスタへのデータの書き込みがイネーブルにされているときに、当該PEのEMCレジスタ内のマルチビット値を修正する段階と、
    を含む方法。
  21. 全てのPEにおけるレジスタへのデータの書き込みがディスエーブルであるか否かを判定し、該判定の結果に応じて別の命令に分岐する段階を含む請求項12に記載の方法。
  22. 複数のPEから構成され、各PEが、EMCレジスタと、実行のために前記PEに命令及びデータのシーケンスを供給する手段と、前記各PEのEMCレジスタ内に格納されたマルチビットデータ値に応じて前記各PE上のレジスタへのデータの書き込みをイネーブル及びディスエーブルにする手段と、あるPE内のレジスタへのデータの書き込みがディスエーブルにされ、他のPE内のレジスタへのデータの書き込みがイネーブルにされているときに前記あるPEのEMCレジスタ内のマルチビット値を修正する手段とを含むSIMD。
  23. 全ての前記PE内のレジスタへのデータの書き込みがディスエーブルであるか否かを判定する手段と、前記判定の結果に応じて別の命令に分岐する手段とを含む請求項22に記載のSIMD。
JP2007501344A 2004-03-02 2005-03-02 Simdデバイスにおける制御フロー管理のための方法及び装置 Active JP4484925B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0404683A GB2411745B (en) 2004-03-02 2004-03-02 Method and apparatus for management of control flow in a simd device
PCT/GB2005/000797 WO2005086017A1 (en) 2004-03-02 2005-03-02 Method and apparatus for management of control flow in a simd device

Publications (3)

Publication Number Publication Date
JP2007526571A true JP2007526571A (ja) 2007-09-13
JP2007526571A5 JP2007526571A5 (ja) 2008-05-01
JP4484925B2 JP4484925B2 (ja) 2010-06-16

Family

ID=32088578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007501344A Active JP4484925B2 (ja) 2004-03-02 2005-03-02 Simdデバイスにおける制御フロー管理のための方法及び装置

Country Status (6)

Country Link
US (1) US7428628B2 (ja)
EP (1) EP1723543B1 (ja)
JP (1) JP4484925B2 (ja)
DE (1) DE602005019986D1 (ja)
GB (1) GB2411745B (ja)
WO (1) WO2005086017A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010257200A (ja) * 2009-04-24 2010-11-11 Honda Motor Co Ltd 並列計算装置
JP2010271799A (ja) * 2009-05-19 2010-12-02 Honda Motor Co Ltd 並列計算装置
JP2012529096A (ja) * 2009-06-05 2012-11-15 アーム・リミテッド ベクトル命令を取り扱うためのデータ処理装置および方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
JP2009523292A (ja) * 2006-01-10 2009-06-18 ブライトスケール インコーポレイテッド 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置
US20070268201A1 (en) * 2006-05-22 2007-11-22 Sampsell Jeffrey B Back-to-back displays
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US8726252B2 (en) * 2011-01-28 2014-05-13 International Business Machines Corporation Management of conditional branches within a data parallel system
US20130290674A1 (en) * 2012-04-30 2013-10-31 Biju George Modeling Structured SIMD Control FLow Constructs in an Explicit SIMD Language
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
KR20160046331A (ko) * 2013-08-19 2016-04-28 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법
CN104424129B (zh) * 2013-08-19 2019-07-26 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
US9952876B2 (en) 2014-08-26 2018-04-24 International Business Machines Corporation Optimize control-flow convergence on SIMD engine using divergence depth
US10445106B2 (en) 2017-03-22 2019-10-15 Vmware, Inc. Persistent enrollment of a computing device using a BIOS
GB202008299D0 (en) * 2020-06-02 2020-07-15 Imagination Tech Ltd Manipulation of data in a memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756892A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd マスク付きベクトル演算器を持つ計算機
JPH11296498A (ja) * 1998-04-13 1999-10-29 Mitsubishi Electric Corp 並列演算処理装置
WO2002046885A2 (en) * 2000-11-28 2002-06-13 Chipwrights Design, Inc. Handling conditional processing in a single instruction multiple datapath processor architecture
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
JP2003520360A (ja) * 1999-01-28 2003-07-02 ボプス インコーポレイテッド サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167501A (en) * 1998-06-05 2000-12-26 Billions Of Operations Per Second, Inc. Methods and apparatus for manarray PE-PE switch control
GB2348981A (en) * 1999-04-09 2000-10-18 Pixelfusion Ltd Parallel data processing system with SIMD array

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756892A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd マスク付きベクトル演算器を持つ計算機
JPH11296498A (ja) * 1998-04-13 1999-10-29 Mitsubishi Electric Corp 並列演算処理装置
JP2003520360A (ja) * 1999-01-28 2003-07-02 ボプス インコーポレイテッド サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
WO2002046885A2 (en) * 2000-11-28 2002-06-13 Chipwrights Design, Inc. Handling conditional processing in a single instruction multiple datapath processor architecture

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010257200A (ja) * 2009-04-24 2010-11-11 Honda Motor Co Ltd 並列計算装置
JP2010271799A (ja) * 2009-05-19 2010-12-02 Honda Motor Co Ltd 並列計算装置
JP2012529096A (ja) * 2009-06-05 2012-11-15 アーム・リミテッド ベクトル命令を取り扱うためのデータ処理装置および方法
US8661225B2 (en) 2009-06-05 2014-02-25 Arm Limited Data processing apparatus and method for handling vector instructions

Also Published As

Publication number Publication date
GB0404683D0 (en) 2004-04-07
US20050198467A1 (en) 2005-09-08
GB2411745B (en) 2006-08-02
JP4484925B2 (ja) 2010-06-16
US7428628B2 (en) 2008-09-23
DE602005019986D1 (de) 2010-04-29
EP1723543B1 (en) 2010-03-17
GB2411745A (en) 2005-09-07
WO2005086017A1 (en) 2005-09-15
EP1723543A1 (en) 2006-11-22

Similar Documents

Publication Publication Date Title
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
EP2569694B1 (en) Conditional compare instruction
JP7002462B2 (ja) ベクトル述語命令
KR20010030587A (ko) 데이터 처리장치
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
KR20100132032A (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
KR20070080089A (ko) 재구성 어레이에서의 인터럽트 처리 방법 및 장치
JP2005332361A (ja) プログラム命令圧縮装置および方法
TW201716993A (zh) 向量資料轉換指令
US7895417B2 (en) Select-and-insert instruction within data processing systems
US11681594B2 (en) Multi-lane solutions for addressing vector elements using vector index registers
KR20000006302A (ko) 브랜치제어를하는데이터처리시스템및그방법
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
JP2006508414A (ja) 拡張命令エンコーディングのシステムおよびその方法
Kim et al. Dynamic binary translation for accumulator-oriented architectures
US6910123B1 (en) Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
JP3738253B2 (ja) プログラム・ループを並列に処理する方法および装置
US6115807A (en) Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued
US20220414051A1 (en) Apparatus for Array Processor with Program Packets and Associated Methods
JP2004062909A (ja) 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法
JP2004021890A (ja) データ処理装置
US11275712B2 (en) SIMD controller and SIMD predication scheme
JP2000163266A (ja) 命令実行方式
US20130298129A1 (en) Controlling a sequence of parallel executions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080303

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090817

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100217

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: 20100315

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: 20100323

R150 Certificate of patent or registration of utility model

Ref document number: 4484925

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: 20130402

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140402

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

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

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