JP2010067278A - プロセッサでの条件付き実行をサポートする装置及びその方法 - Google Patents

プロセッサでの条件付き実行をサポートする装置及びその方法 Download PDF

Info

Publication number
JP2010067278A
JP2010067278A JP2009241873A JP2009241873A JP2010067278A JP 2010067278 A JP2010067278 A JP 2010067278A JP 2009241873 A JP2009241873 A JP 2009241873A JP 2009241873 A JP2009241873 A JP 2009241873A JP 2010067278 A JP2010067278 A JP 2010067278A
Authority
JP
Japan
Prior art keywords
instruction
execution
acf
condition
arithmetic
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
JP2009241873A
Other languages
English (en)
Other versions
JP4879307B2 (ja
Inventor
Thomas L Drabenstott
トーマス, エル. ドラベンストット,
Gerald G Pechanek
ジェラルド, ジー. ペカネック,
Edwin F Barry
エドウィン, エフ. バリー,
Charles W Kurak Jr
チャールズ, ダブリュー., ジュニア クーラック,
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.)
Altera Corp
Original Assignee
Altera Corp
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 Altera Corp filed Critical Altera Corp
Publication of JP2010067278A publication Critical patent/JP2010067278A/ja
Application granted granted Critical
Publication of JP4879307B2 publication Critical patent/JP4879307B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30181Instruction operation extension or modification
    • 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
    • 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
    • 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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

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)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Peptides Or Proteins (AREA)

Abstract

【課題】SIMDアレイプロセッサの各処理要素(PE)中で条件付き実行をサポートさせる。
【解決手段】汎用フラグ(ACF)(571又は561)は、階層1,2または3ビットエンコーディングを使用して定義され、エンコードされる。加えられた各ビットは、前の機能性のスーパーセットを提供する。ACFの生成(578又は568)は、プログラマによって指定することができる。プログラマが、条件を転送するための処理要素の間の通信インターフェースを使用して、異なるプロセッサ中で生成された条件に基づいて1つのプロセッサ中の条件付き実行を指定することを可能にして、多数のPEは、条件情報を同時に生成することができる。多数のプロセッサアレイ中の各プロセッサは、異なるユニットをそれらのACFに基づいて条件付きで独立に動作させることができる。
【選択図】図5B

Description

(関連出願の相互参照)
本出願は、「Method and Apparatus to Support Conditional Execution in a VLIW-Based Array Processor with Subword Execution」という名称の米国仮出願第60/072915号の特典を主張する。
本発明は、一般にデジタル処理の改良に関し、より詳細には、サブワード(sub-word)実行を用いる超長命令語(VLIW)ベースのアレイプロセッサ中で条件付き実行をサポートする方法及び装置に関する。
プリディケイテッド(predicated)実行とも呼ばれる条件付き実行は、プログラマが非分岐タイプの命令を実行すべきかどうかを、前に生成されたマシン状態に基づいて指定できるようにする。このデータ依存条件付き実行機能は、条件付き分岐の必要を最小にする。パイプラインプロセッサ上の分岐遅延の犠牲を招く分岐の使用を回避することによって、性能は向上する。加えて、多くのタイプの順次制御依存関係は、並列データ依存関係に変えることができることに留意されたい。したがって、条件付き分岐のみをサポートする単一命令多重データストリーム(SIMD)マシン上で利用不可能な、あるレベルのデータ依存並列性を提供するために、パイプラインSIMDアレイプロセッサが各処理要素(PE)中で条件付き実行をサポートすることが望ましい。並列条件付き実行では、多数の条件付き分岐を回避することができるので、性能利得は重要となる可能性がある。
所与の範囲のオペレーションに対して、並列アレイ間接VLIWプロセッサのアーキテクチャを作成する際、オペレーションを指定するのに必要なフォーマットは、オペレーションのタイプに依存して要件が変わることがわかる。例えば、並列アレイオペレーションは、制御及び分岐オペレーションと、ロード及び格納オペレーションと、算術オペレーションの3つのタイプにグループ化することができる。これらの各タイプは、最適な実施に対して異なるエンコーディング要件を有することになる。命令フォーマットは一般に固定のビット数であるので、少なくとも一部のオペレーションに対して機能的能力を制限することなく、プロセッサ中の全ての命令にわたる条件付き実行について単一の仕様をサポートする機構を定義することは難しい。命令タイプに依存してサポートの度合いを変えなければならない場合でも、条件付き実行をサポートすることが望ましいと考えると、命令タイプに基づく、統一された、しかし可変仕様の条件付き実行機構をどのように定義するかについての問題に遭遇する。
条件付き分岐または条件付き実行をより効率的にするために、条件付きオペレーションが、[a>b OR c<d]などの関係のブール組合せによって形成される複合条件に基づくことが望ましい。これは、所望の結果を効果的に達成する多重単一テスト条件付き分岐を順次使用することによって達成される。多重単一テスト条件付き分岐を使用することに関連する問題は、分岐遅延の犠牲のために、必要な各分岐に対して性能低下効果があることである。この性能低下効果は、非分岐複合条件付実行を使用して軽減させることができる。
SIMDアーキテクチャを備えるマシンでは、PE中で生成された条件付き状態情報を集めることを可能とするために、PE中の独立な条件付きオペレーションを生成し、条件情報をPE間で転送することが望ましい。条件がアレイPE中で作成されるSIMDアレイプロセッサのコントローラ、シーケンス・プロセッサ(SP)中で条件付き分岐を提供することも望ましい。条件状態情報をPE間で移動することを可能にすることによって、条件生成オペレーションを1つのPE中で実行し、条件付き結果に基づく条件付きオペレーションを別をPE中で実行することができる。条件付き情報がPE及びSP間で移動することを可能にすることによって、条件付きオペレーションをPE条件に基づいてSP中で実行することができる。そのような機能をアーキテクチャ中にどのように最良に加えるかが、更なる問題を提起する。
VLIWマシンでは、並列に実行することができる複数の実行ユニットが存在し、各実行ユニットは、可能な限り多重命令VLIWの各サブ命令についての条件情報または状態情報を生成する。データ依存条件付き実行の決定を行うために、マシン状態の合計量を所望のテスト条件に減少させることが必要である。1つまたは複数の他の実行ユニットの実行を制御するために、多数の実行ユニットのうちの1つから条件結果を選択する機構を有することも望ましい。このタイプの状況の例は、比較がシフトとは異なる実行ユニットで実行される、比較命令と、その後に続く条件的依存シフト命令である。したがって、解決すべき問題は、条件情報の量を指定のテスト条件に低減する方法であり、VLIWマシン中で同期して動作する多数の実行ユニット間の相互依存の条件実行に対する機構を提供する方法である。
サブワード実行は、単一実行ユニット内の1ワードまたはダブルワードよりも小さいデータに関して同時に実行される多数の個々のオペレーションを参照する。多数のサブワードオペレーションの総計は、パック化データ・オペレーションと呼ばれ、例えば、カッド(4個)16ビットオペレーションまたはオクタル(8個)8ビットオペレーションが、パック化64ビットデータタイプ上で並列に生じる。サブワード実行を条件付き実行をサポートするマシンで実行したとき、サブワードレベルの条件付き実行細分性を、命令を実行する際に達成することが望ましい。問題は、そのような機能をアーキテクチャ中でサポートする方法である。
本発明は、好ましくはManArrayアーキテクチャを使用して、命令タイプに基づく階層条件付き実行指定、コントローラ・シーケンスプロセッサ(SP)及びPEでの現在及び前の条件状態に基づく複合条件に対するサポート、PE及びSPの間の条件状態情報を配布する機構、VLIWマシン中の多数の実行ユニット間の相互依存条件付き実行に対する機構、及びサブワード条件付き実行に対する機構を提供することによってそのような問題に有利に対処する。
ManArrayアーキテクチャでは、現在適合するのと同様に、3つのレベルの階層仕様が使用され、それによれば、1,2または3ビット条件付き実行指定が、命令タイプ及びフォーマット・エンコーディング制限に依存して命令フォーマット中で使用される。操作を加えるべき条件状態は、これら3ビットで指定されると同様に、命令がパック化データであっても、VLIWオペレーションであっても、その命令を実行することによって並列に生成される通常の副次作用状態から別々に生成される状態情報の縮小セットである。概念的には、命令実行から生成される通常の副次作用状態は、算術スカラフラグ(ASF)、即ち、桁上げ(C)、オーバーフロー(V)、符号(N)、及びゼロ(Z)フラグ中に保存される。一部の制限がデータタイプに依存して適用される。別々に生成された条件付き状態は、算術条件フラグ(ACF)、即ち、F7〜F0中に保存される。ここでFiはパック化データ要素iに対応している。ASFは、条件付き分岐に対してのみ使用することができ、一方、ACFは、条件付き分岐及び条件付き実行の両方で使用される。加えて、ACFは、命令実行の結果として、または現在の比較命令及び前の命令実行から生成される状態情報のブール組合せの結果として設定される状態情報を含む。これらのACFをSP中で条件付き命令によって指定し、テストすることができ、それによって条件付き分岐の使用を最小にする。最も単純なケースでは、PE命令は条件付きで実行することができ、SP命令は、直前の先行する命令の条件結果に関して、条件付きで実行または分岐することができる。直前の先行する命令がフラグに影響を与えなかった場合、一般条件付き実行は、条件状態情報のACFまたはブール組合せに影響を与えたその最後の命令の条件結果に基づく。
ManArrayは、本発明に従って作成され、プログラムされ、操作されるとき、条件に操作を加える命令と共にACFを使用する方法を指定するだけではなく、ACFが条件を生成する命令によって設定される方法、またはACFを使用する方法のいずれかを指定するプログラマの規約を使用する。この規約は、Fnと呼ばれる1又は0を含む単一の真または偽フラグをオペレーションごとに生成する。比較命令に対しては、プログラマは、ACFのセッティングで使用するために、より大、等しい、より小などの、どの条件状態かを指定しなければならない。加えて、算術論理ユニット(ALU)中の比較命令は、フラグのセッティングを、現在の比較結果状態及び過去の命令ACF状態のブール組合せに基づいて指定することができる。算術オペレーションに対しては、本発明によるManArrayアーキテクチャの1つの実施形態では、C(桁上げフラグ)、V(オーバーフロー・フラグ)、N(負号フラグ)、又はZ(ゼロ・フラグ)の4つのASF条件のうちの1つを使用してACF条件フラグを更新する方法を命令ごとに選択できることが、有利に提供される。
VLIWオペレーションを実行する時、プログラマは、算術ユニットのうちのどれが、ACFの単一セットに影響を与えることが可能かを選択しなければならない。フラグの単一セットは、VLIW実行中で、各VLIWユニットの実行を条件付きで制御するために使用することができる。各サイクルの間、条件フラグの所有権及びセッティングは、実行中の命令によって動的に決定される。実行されるがACFに影響を与えるように選択されない、またはプログラマの可視ASFに影響を与える条件は、効果を引き起こさず、一般に保存されない。
ManArray命令セットの一実施形態の別の態様は、条件付きで実行する命令が条件フラグ自体に影響を与えないものである。この特徴により、比較の後の第1命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。命令は、ACFに基づく条件付き実行、またはACFを設定する方法のいずれかを指定することができるが、両方を指定することはできない。
条件付き命令によって指定され、テストすることができる各PEで、複合条件を生成する手段について効果的な機構を有することが望ましい。これは、SP条件付き分岐を、PEデータ依存実行オペレーションに変更する効果を有する。並列アレイ条件付き実行についての効果的な手段を有することは、PE条件に基づく条件付き分岐をサポートする目的で、時間や実施費用のかかる、PEに条件信号をコントローラに送り返すようにさせる必要を最小にする。並列アレイ条件付き実行を有することの含意は、PE条件フィードバックをアレイコントローラに提供するために選んだ手法を単純な性質にでき、各PEからの条件信号パスを提供するよりも費用がかからないようにできることである。PEのレジスタファイルにコピーまたは移動することができるプログラマアクセス可能レジスタ空間中に条件フラグを保存することにより、フラグを容易にPE間で通信することができる。「Methods and Apparatus for Dynamically Merging an Array Controller with an Array Processor Element」という名称の1998年10月9日出願の米国特許出願第09/169072号により完全に記載されているようなマージされたSP/PEに関連して、PE0中に保存されるフラグは、容易にSPに転送される。Nをアレイ中のPEの数として、logN縮小方法を使用して、logNステップ中の全てのPEの間で、PEフラグ情報を交換することが可能である。条件情報の転送は、既存のManArrayネットワークの設計と適合し、PEとSPコントローラの間の条件信号パスの追加を必要としない。
条件付きサブワード実行についての多くのアプリケーションによる必要と共に、条件付き実行の3ビット形態は、特定の命令または特定のグループの命令に対して、命令が真または偽テストと指定される命令に対する適切な値の対応するACFを有するパック化データタイプのデータ要素に関してだけ操作すべきであることを指定する。
本発明のこれら及び他の利点と、態様とは、以下の図面及び詳細な説明から明らかとなろう。
本発明で使用するのに適したManArrayアーキテクチャを示す図である。 本発明に係る比較命令エンコーディングシーケンスの一例を示す図である。 図2Aの比較命令のCCビットフィールド及びCcomboフィールドビットの例示的に説明する図である。 本発明に係る64ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。 本発明に係る32ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。 本発明のCE1の単一ビット条件付き実行指定を使用する例示的ロード直接命令エンコーディングシーケンスを示す図である。 本発明のCE2の2ビット条件付き実行指定を使用するコピー命令エンコーディングシーケンスの一例を示す図である。 本発明のCE3bの3ビット条件付き実行指定を使用する論理命令エンコーディングシーケンスの一例を示す図である。 本発明に係る条件付き実行を実施するためのハードウェアの1つの適切な実施の詳細を示す図である。 本発明に係るVLIWプロセッサ中に条件付き実行を実装するためのハードウェアの1つの適切な実施の別の詳細を示す図である。
本発明と共に使用するための現在のところ好ましいManArrayアーキテクチャのさらなる詳細は、1997年6月30日出願の米国特許出願第08/885310号、1997年10月10日出願の米国特許出願第08/949122号、1998年10月9日出願の米国特許出願第09/169255号、1998年10月9日出願の米国特許出願第09/169256号、1998年10月9日出願の米国特許出願第09/169072号、1998年11月6日出願の米国特許出願第09/187539号、1998年12月4日出願の米国特許出願第09/205558号、1998年12月18日出願の米国特許出願第09/215081号、「Method and Apparatus to Dynamically Reconfigure the Instruction Pipeline of an Indirect Very Long Instruction Word Scalable Processor」という名称の1999年1月12日出願の米国特許出願、「Methods and Apparatus to Dynamically Expand the Instruction Pipeline of a Very Long Instruction Word Processor」という名称の1998年1月12日出願の仮出願第60/071248号、「Method and Apparatus to Support Conditional Execution in a VLIW-Based Array Processor with Subword Execution」という名称の1998年1月28日出願の仮出願第60/072915号、「Register File Indexing Methods and Apparatus for Providing Indirect Control of Register in a VLIW Processor」という名称の1998年3月12日出願の仮出願第60/077766号、「Methods and Apparatus for Instruction Addressing in Indirect VLIW Processors」という名称の1998年7月9日出願の仮出願第60/092130号、「Efficient Complex Multiplication and Fast Fourier Transform (FFT) Implementation on the ManArray」という名称の1998年10月9日出願の仮出願第60/103712号、「Methods and Apparatus for Improved Motion Estimation for Video Encoding」という名称の1998年11月3日出願の仮出願第60/106867号、「Method and Apparatus for Providing Direct Memory Access (DMA) Engine」という名称の1998年12月23日出願の仮出願第60/113637号、及び「Methods and Apparatus Providing Transfer Control」という名称の1998年12月23日出願の仮出願第60/113555号にそれぞれ記載されており、それら全体を参照により本明細書に組み込む。
本発明の現在のところ好ましい実施形態では、図1に示すManArray 2×2 iVLIW単一命令多重データ・ストリーム(SIMD)プロセッサ100は、「Method and Apparatus for Dynamic Merging an Array Controller with an Array Processing Element」という名称の米国出願第09/169072号でさらに詳細が記載されている、処理要素0(PE0)SP/PE0 101と組み合わされたコントローラ・シーケンス・プロセッサ(SP)を含む。3つの追加されたPE151,153,155は、本発明による条件付き実行装置及び方法を実演するのにも使用される。PE0(PE00)101、PE1(PE01)151、PE2(PE10)153、及びPE3(PE11)155の括弧に示すように、これらPEは、それらの行列位置に応じて符号をつけることもできることに留意されたい。SP/PE0 101は、32ビット命令メモリ105からの短命令語(SIW)のフェッチングを可能とするフェッチコントローラ103を含む。このフェッチコントローラ103は、プログラムカウンタ(PC)、分岐機能、デジタル信号処理ループ・オペレーション、割り込みのサポートなどの、プログラム可能プロセッサで必要な典型的な機能を提供し、アプリケーションで必要とされる場合に命令キャッシュを含むことができる命令メモリ管理制御を提供する。加えて、SIW Iフェッチ・コントローラ103は、32ビット命令バス102によって、32ビットSIWをシステム中の他のPEにディスパッチする。
この例示的システムでは、共通要素は、説明を単純化するために一貫して使用される。しかし実際の実装はこの制限に限定されない。例えば、組み合わされたSP/PE0 101中の実行ユニット131は、制御機能、例えば固定小数点実行ユニットのために最適化された1組の実行ユニットに分離することができ、PE0ならびに他のPE151,153,及び155は、浮動小数点アプリケーション用に最適化することができる。この説明では、実行ユニット131はSP/PE0及び他のPEで同じタイプであると仮定する。同様に、SP/PE0及び他のPEは、超長命令語メモリ(VIM)メモリ109と、SP/PE0のIフェッチユニット103からディスパッチされる時に命令を受け取り、メモリ109中の文字SLAMDで識別され、VIMに格納される、iVLIWにアクセスするために必要なVIMアドレス及び制御信号108を生成する命令デコード及びVIMコントローラ機能ユニット107とを含む5個の命令スロットiVLIWアーキテクチャを使用する。iVLIWのローディングは、「Method and Apparatus for Efficient Synchronous MIMD Operations with iVLIW PE-to-PE Communication」という名称の米国特許出願第09/187539号にさらに詳細に記載されている。同様にSP/PE0及び他のPEには、「Method and Apparatus for Dynamic Instruction Controlled Reconfiguration Register File with Extended Precision」という名称の米国出願第09/169255号にさらに詳細に記載されている共通のPE構成可能レジスタファイル127が含まれる。
SP/PE0の組み合わされた性質のために、データメモリインターフェースコントローラ125は、メモリ121中にSPデータを有するSPコントローラと、メモリ123中にPE0データを有するPE0の両方のデータ処理の必要を扱わなければならない。SP/PE0コントローラ125も、32ビットのブロードキャストデータバス126を介して送られるデータのソースである。他のPE151,153,及び155は、共通物理データメモリユニット123',123'',及び123'''を含むが、それらに格納されるデータは、各PEで行われるローカル処理で必要とされるものとは一般に異なる。これらのPEデータメモリへのインターフェースも、PE1,2,及び3で共通の設計であり、PEローカルメモリ及びデータバス・インターフェースロジック157,157',157''によって示される。PEをデータ転送通信のために相互接続することは、「Manifold Array Processor」という名称の米国特許出願第08/885310号と、「Methods and Apparatus for Manifold Array Processing」という名称の米国出願第09/949122号と、「Methods and Apparatus for ManArray PE-to-PE Switch Control」という名称の米国出願第09/169256号とにより完全に記載されているクラスタスイッチ171である。ホストプロセッサ、他の周辺装置、及び/又は外部メモリへのインターフェースは、多くの方式で行うことができる。完全を期するために示す主機構は、ManArrayコアの外部の装置及びインターフェースユニットに接続するスケーラブルManArrayデータバス183を提供するDMA制御ユニット181中に含まれる。DMA制御ユニット181は、これらの外部装置がバス185を介してManArrayコアメモリとインターフェースを取るのに必要なデータフロー及びバスアービトレーション機構を提供する。
前述の特許すべては、本発明の譲受人に譲渡され、それら全体を参照により本明細書に組み込む。
ManArrayプロセッサ条件付き実行方法及び装置の特定の詳細に話を転じると、この手法は、前述の並列アレイiVLIW条件付き実行問題を、単純なプログラミングモデルと最小限のハードウェア要件で有利に解決する。
[算術条件フラグ]
ManArrayアーキテクチャは、例えば比較命令の結果など、命令実行の指定した結果を格納する1組の算術条件フラグ(ACF)を定義する。これらのACFは、一般化条件付き実行に対して使用される。分岐待ち時間を最小にするために、ほぼ全ての命令は、ACFに基づいて条件付きで実行することができる。PEのアレイ中の各PE中で条件付きで実行すべき命令に対しては、テスト可能条件は、各PE中でローカルに生成しなければならない。このローカルテスト可能条件は、iVLIWがパック化データタイプに関して実行するために各PE中で実行することができる多数の条件から導出される。命令ストリームのサイクルごとの条件付き実行に対しては、命令コーディングは、命令を実行するかどうかを決定するために、どの条件を使用するかを指定できなければならない。多くのタイプの条件があるので、各命令フォーマット中で指定を適切に行うために4つ以上のビットを確保しなければならないことになる。条件付き分岐は一般に単一条件テストを指定し、マルチメディアデータ依存コードは、主に単一条件テスティングを利用することが予想されるので、本明細書では、単一レベルの条件付き実行は、より複雑なネストされた条件付き実行のシナリオに亙って最良の性能利得を提供することになると仮定する。しかし、本明細書で論じる本発明の概念は、単一レベルの条件付き実行の状況のもとで作成されるものの、条件フラグの多数のセットを有する、より複雑にネストされた条件は、この教示によって除外されない。これを念頭におくと、ManArray条件付き実行についてのプログラミングモデルでは、パック化データiVLIWオペレーションの後に得られる条件状態情報の量を軽減するために、どのようにACFを設定すべきかについての指定が必要となる。
2つのタイプのフラグを指定する。桁上げ(C)、オーバーフロー(V)、符号(N)、及びゼロ(Z)は、算術スカラフラグ(ASF)と呼ばれ、F7〜F0フラグは、算術条件フラグ(ACF)と呼ばれる。プログラマ可視ASFは、常に各命令実行の後に、命令によって指定される通り、パック化データタイプ、即ち、バイト0(b0)、半ワード0(H0)、ワード0(W0)、またはダブルワード(D)に関して実行される最小有効オペレーションに基づいて設定され、従来のオペレーションの副次作用を表す。分岐オペレーション中の条件を指定することにより、これらのスカラフラグの条件に基づいて、分岐が実行される。表1は、命令実行の結果として、その命令によって定義されるように生成することができるスカラ条件の例を示す。
Figure 2010067278
しかし、一般化条件付き実行は、ACFだけに基づく。ACFは、比較などの命令の選択されたセットによってのみ変更される。しかし、アーキテクチャ的には、この実行は、命令の大部分に拡張することができることに留意されたい。これらのある命令によるACFの生成は、実行の副次作用ではなく、プログラマによって指定される。ACFは、条件戻り位相の間に、実行の副次作用から、パイプラインの命令中で指定される通りに導出される−−CNVZ−−。加えて、ACFは、次の命令によって待機の犠牲なしで使用可能である。自明の事として、VLIWアーキテクチャ中の実行ユニット数と無関係に、図1のSP101と、図1の各PE101,151,153及び155ごとに1組のACFがある。このようにして、条件は、例えばALU中の比較命令からの、1つの実行ユニット中で生成することができ、他の実行ユニットは、この条件に基づいて条件付きで実行することができる。
[ACFへの条件転送]
命令セットの特性は、ある命令を使用する際に、プログラマがACF条件フラグをどのように設定するかを指定する必要があることである。図2Aに示すような命令20などのALU比較命令については、プログラマは、どの図2Bの条件テストCC202を、ACF F7〜F0をセットする際に使用するかを指定しなければならない。例えば、「以上(GE)」205或いは「以下(LE)」207などの有効条件結果を、適切なACFを設定するために指定することができる。図2Bで示すように、記号は論理ORオペレーションを表す。&&記号はANDオペレーションを表し、!記号は等しくないことを表す。
このアーキテクチャは、実行真(execute True)、実行偽(executee False)、無条件実行、及び他の特定のオペレーションを命令ごとに、階層式に指定する。真及び負フラグ・セッティングは、条件が真の場合の実行、及び条件が偽の場合の実行オペレーションに対して使用される。分岐もこれらのフラグの真または偽状態に基づいて実行することができる。あるDSU命令、シフト/回転、PEXCHG(通信命令)、及び選択された他の命令に対しては、ManArrayアーキテクチャにより、4つのスカラ条件C、V、N、またはZの副次効果のうちの1つを使用してACFをどのように更新するかを命令ごとに指定することができる。VLIWオペレーションを実行するとき、プログラマは、算術ユニット(この機能は拡張することができることを理解されたいが、現在のところALUまたはDSUのみである)のうちのどれがフラグの単一セットのセッティングを制御するかを選択しなければならない。各サイクルでは、条件フラグのセッティングは命令によって明示的に指定される。
ManArray命令セットの別の特徴は、条件付きで実行する命令が条件フラグ自体に影響を与えないことである。この特徴により、比較の後の第1命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。命令は、ACFに基づく条件付き実行、またはフラグをセットする方法のいずれかを指定することができるが、両方を指定することはできない。
[階層条件付き実行命令フォーマット]
条件付き実行の仕様についての階層フォーマットは、命令ビットのより良い使用法を可能にするManArray命令セットアーキテクチャ中で使用される。3ビット、2ビット、または1ビットのサブセットオペコード拡張エンコーディングが、条件付き実行をサポートする各命令に対して定義される。ACFが影響を受けるかどうかに関わりなく、ASFスカラフラグは、常にb0、H0、W0、及びDオペレーションに関して影響を受けることにやはり留意されたい。
[パック化オペレーションについての算術条件付きフラグ(ACF)]
パック化データオペレーションは、命令によって指定された多数のデータ要素のそれぞれに関して同じオペレーションを実行するように定義される。これらの個々のデータ要素オペレーションのそれぞれは、パック化データ命令によって定義されるように適切なASF及び/またはACFをセットすることができる副次作用を生成することができる。ManArrayアーキテクチャは、最大8つの同時パック化データ命令をサポートするので、8つの定義されたACF F0〜F7がある。以下の表2に示すように、フラグとオペレーション並列性との間には対応がある。フラグは、比較命令中のCCcodeフィールドと、以下でより詳細に説明する、選択された命令中のCE3aフィールドとによって指定されるように影響を受ける。図3A及び図3Bは、パック化データ要素オペレーションと、その対応するACFとの関係を示す。例えば、64ビットパック化データオペレーション300を示す図3Aのデュアルワード・オペレーションでは、W0上のオペレーション302はF0に影響を与え、W1上のオペレーション304はF1に影響を与える。別の例では、32ビットのパック化データオペレーション350を表す図3Bのカッド(4)バイト・オペレーションでは、b0上のオペレーション352はF0に影響を与え、b1上のオペレーション354はF1に影響を与え、b2上のオペレーション356はF2に影響を与え、b3上のオペレーション358はF3に影響を与える。
Figure 2010067278
[CE1:1ビット条件付き実行オペコード拡張エンコーディング]
以下の表3に示すようなCE1 1ビット拡張フィールドを有するオペコードは、ACFに影響を与えずに、真のときに条件付きで実行するか、無条件で実行することができる。ASFは、命令によって定義されるように設定される。例えば、図4Aの命令400などのロード及びストア命令は、ACFフラグに決して影響を与えず、真の条件時に条件付きで実行することができる。
Figure 2010067278
[CE2:2ビット条件付き実行オペコード拡張エンコーディング]
以下の表4に示すようなCE2の2ビット拡張フィールドを有するオペコードは、真または偽に対して条件付きで実行したり、無条件で実行し、かつACFに影響を与えない、または命令特有の条件付き実行機能を提供することができる。ASFは、命令によって定義されるように設定される。ビット0及び1でCE2の2ビット拡張フィールドを有する例示的コピー命令エンコーディング410を図4Bに示す。
Figure 2010067278
[CE3a:3ビット条件付き実行オペコード拡張エンコーディング]
以下の表5に示すような条件付き実行CE3aの3ビット実行フィールドを用いたDSU固有命令シフト/回転、受信タイプ、浮動小数点/整数変換命令、及び他を選択(select others)は、命令をどのように実行すべきか、ACFがどのように影響を受けるかを指定する。C,N,Z,及びVフラグは、実行中の命令からの副次効果を表す。□が+,−,×,論理ORなどの算術関数であるとして、A←X□YまたはX←X□Y□Zの形の算術命令は、フラグに影響を与えることなく、真または偽条件に対して条件付きで実行することができる。それらは、フラグに影響を与えることなく無条件で実行、または無条件で実行し、条件C,V,N又はZフラグのうちの1つに基づくフラグに影響を与えることができる。
Figure 2010067278
[CE3b:3ビット条件付き実行オペコード拡張エンコーディング]
CE3bの3ビットアーキテクチャでアドレス指定される3つの状況がある。第1の状況は、オペレーションを無条件で実行することである。第2は、全てのパック化データ要素に対するオペレーションを条件付きで実行することである。第3は、どのデータ要素を条件付きで実行すべきかを選択することである。この第1ケースでは、オペレーションは、いつでも全てのデータ要素に対して実行される。第2ケースでは、オペレーションは、全てのデータ要素に対して実行されるか、全く実行されないかのいずれかである。第3ケースでは、オペレーションはいつでも実行されるが、指定した真又は偽コーディングについての適切な値の対応するACFを有するデータ要素に対してのみ実行される。この第3のケースでは、パック化データ命令は、SP中の宛先レジスタの更新の点で部分的に実行するか、又は対応するACFが指定された条件の場合だけ、PE中で並列に実行すると考えられる。全ての3つの手法は、CE3bエンコーディングを使用することによって利用可能である。CE3bの3ビット実行フィールドを備えるビット3,4,及び5を有する例示的な論理命令エンコーディング420を図4Cに示す。
第3ケースのオペレーションを定義する構文は、「Tm」及び「Fm」である。これらは、「真多重(True Multiple)」及び「偽多重(False Multiple)」を表す。この多重ケースは、オペレーション中で考慮すべきフラグの数を決定するために現行命令中のデータ要素カウントを使用する。例えば、「Tm.add.sa.4h」は、F0,F1,F2及びF3の現在の設定状態に基づいて、各4半ワードに対する加算命令を実行することになる。この実行は、これらの4つのフラグがどのように設定されたかに関わらず実行される。この手法により、1つのデータ・タイプのテスティングが、第2データ・タイプに対するオペレーションと共に可能となる。例えば、カッド(4つの)バイト・セッティングフラグF3〜F0に対して操作することができ、次いで条件付きカッド(4)半ワードオペレーションをフラグF3〜F0に基づいて指定することができる。ある命令、主にMAU及びALU中の命令により、条件付き実行CE3bの3ビット拡張フィールドを指定することが可能となる。命令をどのように実行すべきか、ACFがどのように影響を受けるかを以下の表6に示す。
Figure 2010067278
「100」及び「101」のエンコーディングを含むことについての原理は、「001」及び「010」のエンコーディングと類似している。言い換えれば、この特徴により、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。但し、a,b,x,y,z,q,r及びsは、全てパック化データ・ベクトル要素である。
[条件付き分岐タイプ命令]
本明細書で説明するManArrayアーキテクチャは、スカラ条件フラグC,V,N,またはZ,ならびにACFに基づくSP中の無条件及び条件付き分岐タイプ命令をサポートする。ACFを設定するための条件コードは、比較命令、ならびに図2Bに示す他の具体的に定義された命令中で指定されるので、制御コードがスカラ条件付き分岐命令を利用することができるものの、条件付き分岐は、真に対する分岐または偽に対する分岐だけしか指定する必要がない。パック化データに対する命令によって生成された多数の条件を収容するために、分岐命令は、全て(AND縮小)又は任意(OR縮小)の縮小オペレーションも指定しなければならない。1つのオペレーションだけがあるときに、2つの縮小は等しいものの、非パック化単一データ(MONO)オペレーションに対する命令は、直交性に対するパック化データオペレーションのサブセットとして扱われる。
表7は、1つの適切な縮小方法を表す。ここでやはり、多数の概念を使用する。構文フォーマットは、以下の表7に示す通りである。ただし、考慮すべきフラグの数は、構文中の2,4,及び8桁によって指定される。
Figure 2010067278
[比較命令]
比較命令は、いつでも実行され、いつでもフラグに影響を与える。汎用フラグ(ACF)は、比較命令の一部として指定される条件コードに基づいて影響を受ける。条件の組合せを使用して、フラグの前の状態は、現行比較命令によって指定される条件コードテストの結果と共に組み合わせることができる。この手法により、複合条件を多重分岐に復元することなく作成することが可能となる。図2Bでは、CCは、「より大(GT)」206、「より小(LT)」208、「等しい(EQ)」204、または「以下(LEQ)」207などの条件コード202を表す。図2Aの比較(CMPcc)命令200は、テストすべき所望の条件CC(図2B)、比較すべき2つのソースレジスタ、パック化形態をカバーするデータタイプ、及びCCombと符号を付けたブール組合せ指定フィールドを指定する。
以下の表8では、Ft,nは、サイクルtで生成される「n」真/偽条件フラグ(F)を指定する。具体的には、文字「n」は、比較命令がそれぞれモノ、デュアル、カッド、またはオクタルであるかに依存して、ACF n=1:F0、n=2:F1−F0、n=4:F3−F0、またはn=8:F7−F0のセットを表す。Ft-1,nは、添字t−1によって示されるように、前のサイクルに対するACFの状態を指定する。Fnは、比較オペレーションを完了するのに使用されるnマシンACFのセットである、真/偽値の最後のセットを表す。この条件フラグエンコーディングを以下の表8に示す。
Figure 2010067278
条件を組合せることにより、プログラマは、多数の条件のブール組合せに対して、SP中で分岐する、又はSP及びPE中で条件付きで実行することが可能となる。この手法は、多数の分岐と、条件の組合せなしに同じ効果を達成するために必要なそれらの関連する犠牲との代わりに使用することができる。条件付き実行は、単一条件ではなく、多数の条件の組合せに基づいても実行することができる。最終的に、条件の組合せは、算術命令条件コードの限定化セットからは直接利用可能ではない複合条件を生成するために、先行する算術命令と共に使用することができる。任意の複雑さの組み合わされた条件は、条件フラグを多くのプロセッサレジスタのうちのどれか1つにコピーし、次いでそれらに対する論理演算を算術ユニット中で実行することによって得ることができることに留意されたい。所望の条件が計算され、レジスタ中に格納された後、所望の条件は、条件付き実行のために、それに対して使用することができる条件フラグに戻すことができる。この方法論を使用して、いくつかのプログラミングのオーバヘッドによって、複合条件を得る非常に一般的な方法が得られる。この方法論は、計算レジスタファイル中で生成し、常駐することができる条件結果の多数のセットを必要とする、Cスタイルの条件付きで実行されるステートメントのネスティングをサポートするためにも使用することができる。次いでプロセッサレジスタファイル中に常駐するこれらの条件結果は、条件付き実行の前にACFにコピーされることになる。
[VLIW条件付き実行]
VLIWメモリ(VIM)中に格納される各命令は、そのCE1、CE2又はCE3a/b仕様を含む。VLIWが実行VLIW(XV)命令に応答して実行されるために読み出されるとき、個々のユニット内に多数のフラグを生成することができる。ACFの1つのセットがあり、潜在的にVLIW中の各命令がフラグに影響を与える可能性があるので、どの算術ユニットがある所与のサイクルのためのフラグに対して影響を与えることになるかを選ぶための選択機構が必要である。本発明によるManArrayの1つの実施形態では、これを達成するための2つの機構がある。これらの機構は、それぞれSIMD及び同期多重命令多重データストリーム(SMIMD)コードの必要を満たす。
SMIMDでは、異なるVLIWが、同じVLIMアドレスに存在することができ、次いでVLIW並列性についての様々な必要を伴う様々なアプリケーションで性能を最適化する目的で並列に実行することができる。SMIMDコードに対して、プログラマは、VLIWがロードVLIW(LV)命令の一部としてロードされるときに、どの算術ユニットがフラグに影響を与えるかを指定する。この手法により、異なるPEが、異なるユニットにフラグに影響を与えさせることが可能となる。SIMDコードに対して、プログラマは、どのユニットが実行時間にXV命令の一部としてフラグに影響を与えるかを指定する。XV命令指定は、LV命令で指定されたユニットを上書きすることができる。これにより、プログラマは、多数の非オーバーラッピングVLIWを、VLIWの実行毎に、条件フラグに影響を与える種々の算術ユニットを用いて、同じVIMアドレスにパックすることが可能となる。
[PE間で条件フラグを伝送する]
PE DSU受信命令(PEXCHG)は、PE間の通信オペレーションを指定する。このPEXCHG命令により、ACF及びASFを含むプログラマ可視ステータスレジスタにアクセス可能にすることによって、1つのPEから別のPEに条件状態情報を効果的に転送することが可能となる。SP受信命令(SPRECV)は、条件をPEとSPとの間で伝送するために使用することができる。条件状態は、異なるPEの計算レジスタファイル中に受信されることになり、次いで、それ自体のプログラマ可視フラグレジスタにコピーすることができ、条件付き実行のために使用される。
[拡張条件付き実行定義]
現在、図4CのCE3フィールド422、又は図4BのCE2フィールド412を有する各命令は、それぞれ表5及び6及び表4に示すように予約される少なくとも1つのエンコーディングを有する。以下の機構は、命令が算術条件フラグ(F7〜F0)を「SetCC」命令によって特定されるプログラム可能「複合条件」で更新することが可能となるように、この予約エンコーディングを使用することになる。例として、予約フィールドを使用するためのCE2のエンコーディングを以下の表9に示す。CE3a及びCE3bフィールドはどちらも、それらの等しい予約エンコーディングに対する同じエンコーディング定義を使用することになる。
Figure 2010067278
SetCC命令は、特定のユニットに対する命令がこのタイプの条件生成を指定するとき、その実行ユニットの算術条件フラグ(F7〜F0)中で生成され、保存すべき複合条件を指定する。現在の好ましいCE3aエンコーディングにより、4つの可能な条件C(桁上げ)、N(符号)、V(オーバーフロー)、またはZ(ゼロ)のうちの1つを指定することが可能となる。SetCC命令により、「より大」、「より小」、「以下」、「以上」などの標準の16個の条件を含む、最大32個の複合条件を指定することが可能となる。例えば、オーバーフローがパック化データ実行内で何らかのデータオペレーションに対して生じたかどうかを検出するために、条件を指定することができる。このようにして、オクタルパック化データ実行内でオーバーフローを有するデータオペレーション6は、設定すべきフラグACFF6の設定を生じさせることができる。条件に影響を与えることができるCE3又はCE2エンコーディングを有する命令によって、これらのうちのどれかが選択されても良い。異なる複合条件の選択がデータ依存となることができるように、一部のデータに基づいてSetCC命令を条件付きで実行可能にすることも可能である。例示的SetCC命令を以下の表10に示す。
Figure 2010067278
そのオペコード・エンコーディングによって識別されるSetCC命令は、以下の2つのパラメータを指定する。
・実行ユニット:このフィールドは、指定した複合条件が当てはまる実行ユニットを指定する。各実行ユニットは、異なる複合条件を有することができるか、又はALLエンコーディングが選ばれる場合、全てのユニットが同じ複合条件を使用する。
・選択された条件:このフィールドは、32個の条件のうちの1つを指定する。命令フォーマットによりそれが可能にになると仮定すると、このフィールドはテストすべき他の条件が生じる場合に拡張することができる。
[条件付き実行装置]
図5Aは、本発明による条件付き処理の実装に適する条件付き処理ハードウェア500の態様を示す。ハードウェア500は、例えば算術論理ユニット(ALU)、または図1のManArrayアーキテクチャの他の実行ユニットなどの算術ユニット510を含む。ALU510は、ManArrayレジスタファイルからオペランド507及び509を受け取る。命令制御線501は、プロセッサパイプライン中の登録した命令から導出される。この命令制御線は、命令中で指定されたように条件付きオペレーションを制御するために、条件付き実行制御線503を含む。図4Aは、ビット22がCE1フィールド402を有する例示的ロード直接命令400を示す。図4Bは、ビット1及び0がCE2フィールド412を表す例示的コピー命令410を示す。図4Cは、ビット5〜3がCE3bフィールド422を表す例示的論理命令420を示す。例えば加算器502などの算術ユニット510内の動作ユニットは、結果515及びラッチされた算術スカラ条件状態519を生成する。ラッチ512及び514は、実行サイクルの終わりでのラッチ入力値を保持し、したがって実行サイクルの終了した命令に対する算術スカラ条件及び命令制御信号を表す。実行ユニットに対するパイプラインは、実装に依存して変動する可能性があり、その結果、所望の条件付きオペレーションを達成するために、パイプライン効果を調節しなければならないことに留意されたい。結果515は、プロセッサまたは処理要素のレジスタファイルに送られる。算術スカラ条件信号519は、ACF生成ユニット508中で、信号選択及び条件組合せユニット506によって、実行された命令に対する制御505によって指示される通りにさらに処理される。ACF生成ユニットの出力521は、プログラマ可視レジスタ518中に格納される前のACF生成信号F7〜F0を表す。選択された命令に対するACF生成ユニットは、前の状態525と共に現在の選択された状態のブール組合せも提供する。前で示したように、多くの命令は、アーキテクチャによって指定されるように、フラグに影響を与えないことに留意されたい。これらの影響なし(no-affect)の場合では、フラグは、依然として前にセットされたのと同様である。マルチプレクサ520は、実行中の命令中で指定されるテストの結果に依存してレジスタファイル中に結果出力515を書き込むかどうかを制御するために、算術ユニット中の条件付きテストのための出力527として使用されるACF生成信号521またはACFラッチ518出力525のいずれかを選択する。マルチプレクサ520の出力527は、SP中の分岐ロジックのみに送られ、プログラマ可視ステータスビットを表すラッチ518中に次のサイクルでラッチされる。同様に、マルチプレクサ522は、ラッチされたCNVZラッチ出力517の部分、又はCNVZラッチ516の出力523のいずれかを、SP中の分岐ロジックのみに送り、プログラマ可視ステータスビットを表すラッチ516中に次のサイクルでラッチするために選択する。以下の表11に示すように、ラッチ中のこれらのビット516及び518は、CNVZ516の値がプログラマの可視ステータス及び制御レジスタ0(SCR0)のビット19〜16中にそれぞれ位置付けられる共通プログラマ可視ステータスレジスタ中で組み合わせることができ、ACF F7〜F0 518の値は、ビット7〜0中にそれぞれ位置付けられる。
Figure 2010067278
32ビットステータス及び制御レジスタ0(SCR0)は、主ステータス及び制御情報を含む。尚、ブランクフィールドは予約済みである。
ManArrayプロセッサでは、図5Aに表す概念は、図5Bに示すVLIWアーキテクチャに拡張される。図5Bでは、データ選択ユニット(DSU)560、ALU570、及び乗算加算ユニット(MAU)580の3つの実行ユニットを含む条件付き実行VLIWユニット550を示す。このハードウェアは、図1に示すプロセッサ100などのManArrayプロセッサのSP及び各PE中に取り込まれる。これらのユニットの内部には、基本動作要素及びそれらのASF生成とラッチユニットが、DSU560中の機能ユニットfn562、ALU加算器572、及びMAU乗算器582中にある。概念の汎用性を実演するために3つのタイプのフラグの機能性を示し、それらは典型的なアプリケーションの必要を代表する。DSU560では、ASF、(C N V Z)が、DSU命令の必要に応じて生成される。ACF561は、プログラマ可視ラッチ598からの格納されたACF状態のフィードバックなしに、AFC生成ユニット568で、ASF563に基づいて生成される。ALU570は図5Aで示した手法の機能性を維持する。ALU570では、ACF571は、プログラマ可視ラッチ598からフィードバックされたASF573及び格納されたACF状態599に基づいて、ACF生成ユニット578で生成される。MAU580は、MAU命令の結果として生成されるACFを用いない、比較的単純な機構を使用する。MAUは、この例示的実施で示すように、ACFのセッティングから一般に排除されない。これらのフラグに影響を与えるMAU命令の最下位オペレーションについてアーキテクチャ的に定義されたASF,(C N V Z)587のみが、マルチプレクサ592に送られ、そこから、選択された場合に、そのASF587がマルチプレクサ出力597に進み、プログラマ可視状態ラッチ596中にラッチされる。マルチプレクサ592は、CNVZmux制御信号591によって制御されるように、MAU587,ALU577,DSU567、またはCNVZ状態ラッチ589から生成されたASFを選択する。VLIW実行に対しては、XV命令のUAFと共に、ロードVLIW(LV)命令中のユニット影響フラグ(UAF)フィールド、このManArrayアーキテクチャでは2ビットフィールドは、マルチプレクサ制御信号591及びACFMux制御593を以下のように決定する。LV命令のユニット影響フラグ(UAF)ビットは、どの算術命令スロット(A=ALU,M=MAU,D=DSU)が、実行時に、指定したVLIWに対する条件フラグをセットすることが可能かを選択するために使用される。XV命令のユニット影響フラグ(UAF)ビットは、それがLV命令を介してロードされたときに、VLIWに対して指定されたUAFを上書きする。この上書きは、VLIWのこの実行に対してどの算術命令スロット(A=ALU,M=MAU,D=DSU)が条件フラグをセットすることが可能であるか、またはどれも可能ではない(N=NONE)かを選択する。この上書きは、これらがVIM中の指定されたVLIWアドレスにロードされるので、LV命令を介して指定されたUAFセッティングに影響を与えない。この命令構文では、命令のためのUAFを指定するためにフラグパラメータを使用する。ブランクパラメータ、即ち、「F=」は、VLIWがロードされて命令の実行に使用され、後続のマルチプレクサ592及び594が適切なフラグをプログラマ可視レジスタ596及び598中にロードするように制御するために使用されるときに、特定されるUAFを選択する。例えば、MAUがフラグに影響を与えるべきことを示すUAFと共に、マルチプレクサ592は、CNVZMux制御591信号に応答して、マルチプレクサ出力597に進むパス587を選択し、生成されたCNVZASFをCNVZ状態ラッチ596にロードする。MAUは、例示的MAU580に示すように、どんなACFも生成しないので、プログラマ可視ACF状態ラッチ598中にラッチすべきACFはなく、プログラマ可視ACF状態ラッチ598は前の状態を保持する。MAUは、依然としてそのパイプラインシーケンスに従う別の実行ユニット595によって生成されたACF値に基づいて条件付きで実行することができる。どの命令シーケンスも、CNVZ又はACF状態ラッチ596及び598をそれぞれどの実行ユニットでも更新する必要がない場合、mux制御信号591及び593は、マルチプレクサ592及び594が、状態ラッチ出力589及び599を選択し、それらのマルチプレクサ出力597及び595にそれぞれ進ませるようにする。ManArrayの実施に対して、CNVZ及びACF信号のためのバス幅を図5Bに示す。図5Bでは、CNVZパス587,577及び567は、全てC,N,V及びZ値に対応する4ビット信号である。ACFパス571及び561は、それぞれF7〜F0に対応する8ビット信号である。マルチプレクサ592及び594の出力はそれぞれ4ビット信号及び8ビット信号であり、そのどちらも、分岐ロジックで使用される。ACFマルチプレクサ出力信号595は、各実行ユニット560,570及び580中の制御条件付き実行に使用される。SP中では、マルチプレクサ出力信号595及び597は、条件付き実行のために分岐ロジック中で使用される。
このManArrayアーキテクチャは、ロードイミーディエイト命令によってロードすることができる、メモリからロードすることができる、または計算レジスタからコピーすることができるプログラマ可視ステータス及び制御レジスタのうちの1つに格納すべきACF状態ラッチ598及びCNVZ状態ラッチ596を定義する。このレジスタをメモリ中に保存し、実行ユニットで利用可能な計算レジスタのうちの1つにコピーすることもできる。
前述の方法及び装置を、条件付き実行のための条件フラグ情報及び命令エンコーディングを実施するために使用すると、条件付き実行は、1ビットの追加のオペコード空間だけでサポートされ、機能性の程度の変動に伴って最大3ビットでサポートされることがわかる。加えて、命令機能指定と条件付き実行指定との間のより良い合致を得ることができる。例えば、1ビット条件付き実行エンコーディングは、ロード及びストア命令に対して十分であり、機能エンコーディングに対して最大数のビットが可能となる。各追加された条件実行ビットは、前の機能性のスーパーセットを提供する。さらに、この手法では、条件ビットの全体数は減少する。これは、1つのフラグが各サブワードオペレーションに対して定義されるパック化データに対して操作する命令とよくマップし、サブワードごとの命令の部分的実行が可能となる。
別の条件フラグの減少は、VLIW中の全ての実行ユニットが同じ条件フラグを共用する場合に指定される。ManArrayネットワーク及び通信命令を使用することによって、異なるPE中で実行する命令が互いの条件情報を使用することが可能となる。加えて、条件組合せでは、複合条件の場合に対して多数の分岐を使用することを避けることができ、複合条件は、条件付き実行に対して使用することができる。
本発明を現在のところ好ましい実施形態で説明したが、有利には、本発明の教示は、添付の請求の範囲と一致する様々な処理アレイに適用することができることを理解されたい。

Claims (55)

  1. 少なくとも1つの処理要素(PE)を備えるアレイ及びアレイ制御プロセッサを備えるSIMD機器であって、
    前記アレイ制御プロセッサ及び前記PEのそれぞれが、
    算術ユニット条件レジスタと、
    分岐または条件付き実行のために使用される減縮条件情報を含む複数の汎用フラグ(ACF)と、
    を有することを特徴とするSIMD機器。
  2. 前記複数のACFが、並行して動作するいくつかの実行ユニットからの条件情報を格納する1つまたは複数のビットを具備するフォーマットを有することを特徴とする請求項1に記載のSIMD機器。
  3. 条件付きで実行される命令を格納するための命令メモリを更に備え、前記命令の実行がACFに影響を与えないことを特徴とする請求項1に記載のSIMD機器。
  4. 前記SIMD機器がパック化データ命令に関して動作し、1つのACFが各パック化データオペレーションに対して影響を受けることを特徴とする請求項1に記載のSIMD機器。
  5. その中で多数のPEが利用され、異なるPEがACFに影響を与えるための異なるユニットを選択することを特徴とする請求項1に記載の装置。
  6. 条件付き実行をサブワード実行を伴う超長命令語(VLIW)ベースのアレイプロセッサでサポートする方法であって、
    分岐または条件付き実行に対して使用される減縮条件情報を含む汎用フラグビット(ACF)を提供する工程と、
    ACF中の条件を、条件を生成する命令中でエンコードされる条件コード仕様に基づいて指定し、設定する工程と、
    を有することを特徴とする方法。
  7. 前記条件付き実行の命令がACFに影響を与えないことを特徴とする請求項6に記載の方法。
  8. 前記ACFに影響を与える命令が無条件で実行することを特徴とする請求項6に記載の方法。
  9. パック化データオペレーションの各サブワードの実行が、関連するサブワードACFに依存するパック化データ命令を実行する工程を更に含むことを特徴とする請求項6に記載の方法。
  10. 階層条件付き実行命令フォーマットであって、
    命令を定義する複数の命令ビットと、
    条件付き実行をサポートする各命令に対してオペコード拡張エンコーディングを提供する前記複数の命令ビットの3ビット、2ビット又は1ビットのサブセットと、
    命令実行からの指定した結果を格納する1組の汎用算術条件フラグ(ACF)と、
    1組の算術スカラ・フラグ(ASF)と、
    を有することを特徴とする階層条件付き実行命令フォーマット。
  11. 前記1ビットのオペコード拡張が利用され、前記1ビットが1の場合に、前記命令が真のAFC条件に関して条件付きで実行するか、又は前記命令が前記1ビットがゼロの場合に前記AFCに影響を与えることなく、偽のAFC条件に関して条件付きで実行することを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  12. 前記2ビットのオペコード拡張が利用され、両方のビットが真である場合に前記命令が無条件で実行され、前記ACFがSetCC命令によって定義されるように影響を受けることを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  13. 前記SetCC命令が、指定された条件がどの実行ユニットに当てはまるかを指定する第1オペコード・エンコーディングフィールドを含むことを特徴とする請求項12に記載の階層条件付き実行命令フォーマット。
  14. 前記SetCC命令が、複数のテスト条件を指定する第2オペコード・エンコーディング・フィールドを含むことを特徴とする請求項13に記載の階層条件付き実行命令フォーマット。
  15. 各実行ユニットが異なる指定された条件を有するか、前記SetCC命令のALLエンコーディングが選ばれる場合に、全ての実行ユニットが同じ指定された条件を使用することを特徴とする請求項13に記載の階層条件付き実行命令フォーマット。
  16. オーバーフローがパック化データ実行内の何らかのデータオペレーションに関して生じたかどうかを検出するためにテスト条件を指定することができることを特徴とする請求項14に記載の階層条件付き実行命令フォーマット。
  17. 前記2ビットオペコード拡張が利用され、前記ビットのうちの一方が真、前記ビットの他方が偽である場合に、前記命令を前記ACFの状態に依存して前記ACFに影響を与えることなく条件付きで実行することを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  18. 前記2ビットオペコード拡張が利用され、両方のビットが偽の場合に、前記命令を、前記ACFに影響を与えることなく無条件で実行することを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  19. 前記3ビットオペコード拡張が利用され、前記命令を、どのように前記ACFに基づいて無条件で、または条件付きで実行すべきか、どのように前記3ビットオペコード拡張のビットを使用することにより前記ACFが影響を受けるかを指定することを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  20. 前記ASFフラグの組が、実行中の命令からの副次効果を表し、前記3ビットのオペコード拡張の2つ以上のビットが真である場合に、前記AFCが前記ASFの組の条件のうちの1つに基づいて影響を受けることを特徴とする請求項15に記載の階層条件付き実行命令フォーマット。
  21. 前記ASFが桁上げ(C)、オーバーフロー(V)、符号(N)、及びゼロ(Z)フラグを含むことを特徴とする請求項20に記載の階層条件付き実行命令フォーマット。
  22. 前記3ビット・オペコード拡張が、パック化データ命令の1つまたは複数のデータ要素上で実行すべきオペレーションを指定するために利用され、前記3ビット・オペコード拡張中の全てのビットが偽である場合に、前記命令が、全ての前記データ要素上の命令によって指定されるオペレーションをACFに影響を与えることなく無条件に実行する請求項10に記載の階層条件付き実行命令フォーマット。
  23. 前記3ビットのオペコード拡張が、パック化データ命令の1つまたは複数のデータ要素上で実行すべきオペレーションを指定するために利用され、前記命令が、全ての前記データ要素上の命令によって指定されるAFCオペレーションの状態に基づいて条件付きで実行するか、又はオペレーショが全く行われないことを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  24. 前記3ビットのオペコード拡張が、パック化データ命令の1つまたは複数のデータ要素上で実行すべきオペレーションを指定するために利用され、前記命令が、前記3ビットのオペコード拡張の指定された真または偽コーディングに対する適切な値の対応するACFフラグを有するデータ要素のみを条件付きで実行することを特徴とする請求項10に記載の階層条件付き実行命令フォーマット。
  25. 条件生成の方法であって、
    1組の算術条件フラグ(ACF)を定義する工程と、
    命令に関する複数のスカラ条件の副次効果を命令ごとに決定する工程と、
    前記決定した副次効果を保存するために1組の算術スカラフラグ(ASF)を設定する工程と、
    比較命令を使用する条件コードを指定する工程と、
    指定した条件コードに基づいて前記ACFを更新する工程と、
    を有することを特徴とする方法。
  26. 前記ACFの前の状態を、複合条件を作成するために現行比較命令によって指定された条件コードテストの結果と組み合わせる工程を更に含むことを特徴とする請求項25に記載の方法。
  27. 前記条件コードが、より大(GT)、より小(LT)、等しい(EQ)、または以下(LEQ)などの条件を指定することを特徴とする請求項25に記載の方法。
  28. 前記比較命令が、テストすべき所望の条件と、比較すべき2つのソースレジスタとを指定するために更に使用されることを特徴とする請求項27に記載の方法。
  29. 前記比較命令が、パック化データ形態をカバーするデータタイプを指定するために更に使用されることを特徴とする請求項28に記載の方法。
  30. 前記比較命令が、ブール組合せ指定フィールドを指定するためにさらに使用されることを特徴とする請求項28に記載の方法。
  31. 作成された複合条件に基づいて、シーケンスプロセッサ(SP)中の分岐を制御する工程を更に有することを特徴とする請求項26に記載の方法。
  32. 作成された複合条件に基づく多数の条件のブール組合せからなる作成されたカプレックス(couplex)に基づいて、シーケンスプロセッサ(SP)及び少なくとも1つの処理要素(PE)中で条件付き実行を行う工程をさらに含むことを特徴とする請求項26に記載の方法。
  33. 作成された複合条件に基づいて、多数の条件の組合せに関して条件付きで実行する工程を更に含むことを特徴とする請求項26に記載の方法。
  34. 関係のブール組合せによって形成される複合条件を生成するためのシステムであって、
    レジスタファイルから少なくとも2つのオペランドを受け取る算術ユニットと、
    プロセッサパイプライン中の登録された命令から導出される命令制御線であって、命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含む命令制御線と、
    結果及びラッチされた算術スカラ条件状態を生成する算術ユニットと、
    命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチと、
    命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチと、
    現在選択した状態と前の状態とのブール組合せを提供するための算術条件フラグ(ACF)生成ユニットと、
    前の状態を格納し、前の状態を前記ACF生成ユニットにフィードバックするためのACFラッチと、
    を有することを特徴とするシステム。
  35. 前記ACFラッチは、プログラマ可視ラッチであることを特徴とする請求項34に記載のシステム。
  36. 前記ブール組合せを前記ACF生成ユニットから受け取り、前記ブール組合せ又は前記AFCラッチをシーケンスプロセッサ(SP)中の分岐ロジックに制御可能に切り替えるために接続されるマルチプレクサを更に有することを特徴とする請求項34に記載のシステム。
  37. 前記算術ユニットの前記第1ラッチ算術スカラ条件状態出力に切り替え可能に接続される算術スカラフラグ(ASF)ラッチを更に備えることを特徴とする請求項34に記載のシステム。
  38. 前記算術ユニット及び前記ASFラッチの前記第1ラッチ算術スカラ条件状態出力の切り替え可能接続が、制御可能マルチプレクサを備えることを特徴とする請求項37に記載のシステム。
  39. 前記制御可能マルチプレクサの出力が、前記算術スカラ条件状態またはASFラッチ出力を、前記シーケンスプロセッサ(SP)中の分岐ロジックへ制御可能に切り替えることを特徴とする請求項38に記載のシステム。
  40. 前記ASFラッチがプログラマ可視ラッチであることを特徴とする請求項37に記載のシステム。
  41. コントローラ(SP)及び少なくとも2つの処理要素(PE)を備える単一命令多重データストリーム(SIMD)機器であって、
    前記SIMD機器の各PEが、
    レジスタファイルから少なくとも2つのオペランドを受け取る算術ユニットと、
    プロセッサパイプライン中の、前記SPから受け取られた登録された命令から導出される命令制御線であって、命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含む命令制御線と、
    結果及びラッチされた算術スカラ条件状態を生成する算術ユニットと、
    命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチと、
    命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチと、
    現在選択した状態と前の状態とのブール組合せを提供するための算術条件フラグ(ACF)生成ユニットと、
    前の状態を格納し、前の状態を前記ACF生成ユニットにフィードバックするためのACFラッチと、
    を有することを特徴とするSIMD機器。
  42. 各PEのACFラッチがプログラマ可視ラッチであることを特徴とする請求項41に記載のSIMD機器。
  43. 各PEが、前記ブール組合せを前記ACF生成ユニットから受け取り、前記ブール組合せ又は前記ACFラッチをシーケンスプロセッサ(SP)中の分岐ロジックに制御可能に切り替えるために接続されるマルチプレクサを更に有することを特徴とする請求項41に記載のSIMD機器。
  44. 各PEが、前記算術ユニットの前記第1ラッチ算術スカラ条件状態出力に切り替え可能に接続される算術スカラフラグ(ASF)ラッチを更に備えることを特徴とする請求項41に記載のSIMD機器。
  45. 各PEの算術ユニット及び前記ASFラッチの前記第1ラッチ算術スカラ条件状態出力の切り替え可能接続が、制御可能マルチプレクサを備えることを特徴とする請求項44に記載のSIMD機器。
  46. 各PEの制御可能マルチプレクサの出力が、前記算術スカラ条件状態又は前記ASFラッチ出力を、前記シーケンスプロセッサ(SP)中の分岐ロジックへ制御可能に切り替えることを特徴とする請求項45に記載のSIMD機器。
  47. 各PEの算術ユニットが、それぞれ関連する算術条件フラグ(ACF)生成ユニットを有する乗算累算ユニット(MAU)、算術論理ユニット(ALU)、及びデータ選択ユニット(DSU)を備える1組の実行ユニットのうちの1つであることを特徴とする請求項41に記載のSIMD機器。
  48. MAU、ALU、DSU及びACFラッチについてのACF生成ユニットからの出力が、マルチプレクサによって前記シーケンスプロセッサ中の分岐ロジックに制御可能に切り替えられることを特徴とする請求項47に記載のSIMD機器。
  49. 間接超長命令語(VLIW)処理システムであって、
    VIMメモリ内のスロット中に命令を格納するためのVLIW命令メモリ(VIM)を有する第1処理要素(PE)と、
    命令タイプを定義する複数のグループビットと、実行ユニットタイプを定義する複数のユニットフィールドビットとを有する機能命令を格納するための第1レジスタと、
    複数のグループビット及び複数のユニットフィールドビットをデコードするための事前デコーダと、
    前記デコーディングに基づいて機能命令をVIM中の前記スロットのうちの適切な1つにロードするためのロード機構とを備え、
    第1プロセッサ更には、
    少なくとも2つの実行ユニットを備え、各実行ユニットがレジスタファイルから少なくとも2つのオペランドを受け取り、
    各実行ユニットが、プロセッサパイプライン中の登録された命令から導出される命令制御線を有し、命令制御線が、実行すべき命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含み、
    各実行ユニットが、結果及びラッチされた算術スカラ条件状態を生成し、
    各実行ユニットが、命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチを有し、
    各実行ユニットが、命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチを有し、
    各実行ユニットが、現在選択した状態と前の状態とのブール組合せを提供するための算術条件フラグ(ACF)生成ユニットを有し、
    前の状態を格納し、前の状態を各ACF生成ユニットにフィードバックするための全ての実行ユニットについての単一ACFラッチを備えることを特徴とするシステム。
  50. 前記ACFラッチがプログラマ可視ラッチであることを特徴とする請求項49に記載のシステム。
  51. 前記PEが、前記ブール組合せを各ACF生成ユニットから受け取り、前記ブール組合せをシーケンスプロセッサ(SP)中の分岐ロジックに制御可能に切り替えるために接続されるマルチプレクサを更に備えることを特徴とする請求項49に記載のシステム。
  52. 前記PEが、各実行ユニットの出力に切り替え可能に接続される算術スカラフラグ(ASF)ラッチを更に備えることを特徴とする請求項49に記載のシステム。
  53. 複合条件を生成するためのシステムであって、
    レジスタファイルから少なくとも2つのオペランドを受け取る算術ユニットと、
    プロセッサパイプライン中の登録された命令から導出される命令制御線であって、命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含む命令制御線と、
    結果及びラッチされた算術スカラ条件状態を生成する算術ユニットと、
    命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチと、
    命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチと、
    複数の算術条件フラグ(ACF)の現在選択した状態を提供するための算術条件フラグ(ACF)生成ユニットと、
    ACF用に前の状態を格納し、前の状態を前記ACF生成ユニットにフィードバックするためのACFラッチと、
    を有することを特徴とするシステム。
  54. コントローラ(SP)及び少なくとも2つの処理要素(PE)を備える単一命令多重データストリーム(SIMD)機器であって、
    前記SIMDマシン中の各PEが、
    レジスタファイルから少なくとも2つのオペランドを受け取る算術ユニットと、
    プロセッサパイプライン中の、前記SPから受け取られた登録された命令から導出される命令制御線であって、命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含む命令制御線と、
    結果及びラッチされた算術スカラ条件状態を生成する算術ユニットと、
    命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチと、
    命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチと、
    複数の算術条件フラグ(ACF)の現在選択した状態を提供するための算術条件フラグ(ACF)生成ユニットと、
    ACF用に前の状態を格納し、前の状態を前記ACF生成ユニットにフィードバックするためのACFラッチと、
    を有することを特徴とするマシン。
  55. 間接超長命令語(VLIW)処理システムであって、
    VIMメモリ内のスロット中に命令を格納するためのVLIW命令メモリ(VIM)を有する第1処理要素(PE)と、
    命令タイプを定義する複数のグループビットと、実行ユニットタイプを定義する複数のユニットフィールドビットとを有する機能命令を格納するための第1レジスタと、
    複数のグループビット及び複数のユニットフィールドビットをデコードするための事前デコーダと、
    前記デコーディングに基づいて機能命令をVIM中の前記スロットのうちの適切な1つにロードするためのロード機構とを備え、
    第1プロセッサが、
    少なくとも2つの実行ユニットを備え、各実行ユニットがレジスタファイルから少なくとも2つのオペランドを受け取り、
    各実行ユニットが、プロセッサパイプライン中の登録された命令から導出される命令制御線を有し、命令制御線が、実行すべき命令中で指定されるように条件付きオペレーションを制御するために条件付き実行制御線を含み、
    各実行ユニットが、結果及びラッチされた算術スカラ条件状態を生成し、
    各実行ユニットが、命令がその実行状態を完了した後に、命令用に算術スカラ条件状態を保持するための第1ラッチを有し、
    各実行ユニットが、命令がその実行状態を完了した後に、命令用に命令制御信号を保持するための、条件付き実行制御線に接続された第2ラッチを有し、
    各実行ユニットが、複数の算術条件フラグ(ACF)の現在選択した状態を提供するための算術条件フラグ(ACF)生成ユニットを有し、
    ACF用に前の状態を格納し、前の状態を各ACF生成ユニットにフィードバックするための全ての実行ユニットについての単一ACFラッチを備えることを特徴とするシステム。
JP2009241873A 1999-01-28 2009-10-20 プロセッサでの条件付き実行をサポートする装置及びその方法 Expired - Fee Related JP4879307B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/238,446 1999-01-28
US09/238,446 US6366999B1 (en) 1998-01-28 1999-01-28 Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000596471A Division JP4943584B2 (ja) 1999-01-28 2000-01-24 超長命令語の条件付き実行をサポートする方法

Publications (2)

Publication Number Publication Date
JP2010067278A true JP2010067278A (ja) 2010-03-25
JP4879307B2 JP4879307B2 (ja) 2012-02-22

Family

ID=22897931

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2000596471A Expired - Fee Related JP4943584B2 (ja) 1999-01-28 2000-01-24 超長命令語の条件付き実行をサポートする方法
JP2009241873A Expired - Fee Related JP4879307B2 (ja) 1999-01-28 2009-10-20 プロセッサでの条件付き実行をサポートする装置及びその方法
JP2011195330A Expired - Fee Related JP5474014B2 (ja) 1999-01-28 2011-09-07 サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000596471A Expired - Fee Related JP4943584B2 (ja) 1999-01-28 2000-01-24 超長命令語の条件付き実行をサポートする方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011195330A Expired - Fee Related JP5474014B2 (ja) 1999-01-28 2011-09-07 サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置

Country Status (7)

Country Link
US (5) US6366999B1 (ja)
EP (1) EP1196855B1 (ja)
JP (3) JP4943584B2 (ja)
AT (1) ATE469391T1 (ja)
DE (1) DE60044460D1 (ja)
IL (1) IL144562A0 (ja)
WO (1) WO2000045282A1 (ja)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE59710317D1 (de) 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6826522B1 (en) * 1999-06-21 2004-11-30 Pts Corporation Methods and apparatus for improved efficiency in pipeline simulation and emulation
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
US6842811B2 (en) * 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
WO2001067234A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US7080234B2 (en) * 2000-03-08 2006-07-18 Sun Microsystems, Inc. VLIW computer processing architecture having the problem counter stored in a register file register
TW514931B (en) * 2000-09-29 2002-12-21 Agilent Technologies Inc Apparatus and method for performing conditional calculations
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US20020184291A1 (en) * 2001-05-31 2002-12-05 Hogenauer Eugene B. Method and system for scheduling in an adaptable computing engine
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US6874079B2 (en) * 2001-07-25 2005-03-29 Quicksilver Technology Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
GB2382673B (en) * 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7062762B2 (en) * 2001-12-12 2006-06-13 Texas Instruments Incorporated Partitioning symmetric nodes efficiently in a split register file architecture
US7215701B2 (en) * 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
JP3851228B2 (ja) 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
US7194609B2 (en) * 2002-08-08 2007-03-20 Hewlett-Packard Development Company, L.P. Branch reconfigurable systems and methods
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
CN100342328C (zh) * 2002-11-20 2007-10-10 皇家飞利浦电子股份有限公司 带有复制寄存器文件的vliw处理器
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
TW594570B (en) * 2003-04-15 2004-06-21 Sunplus Technology Co Ltd Processor for executing conditional instruction and the method thereof
CN1826583A (zh) * 2003-04-29 2006-08-30 皇家飞利浦电子股份有限公司 时间-固定处理器中零开销的分支和循环
US7043518B2 (en) * 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
GB2411745B (en) * 2004-03-02 2006-08-02 Imagination Tech Ltd Method and apparatus for management of control flow in a simd device
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
KR100722770B1 (ko) * 2005-01-31 2007-05-30 재단법인서울대학교산학협력재단 조건실행을 지원하는 재구성 가능한 프로세싱 요소의배열구조
CN101120310B (zh) 2005-02-14 2010-06-09 皇家飞利浦电子股份有限公司 一种用于并行地处理多个操作数的电子电路
WO2006112045A1 (ja) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. 演算処理装置
US20060294345A1 (en) * 2005-06-23 2006-12-28 Tellabs Operations, Inc. Methods and apparatus for implementing branching instructions within a processor
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
AT503171A2 (de) * 2006-01-16 2007-08-15 On Demand Microelectronics Gmb Verfahren und prozessoreinrichtung zur bedingten ausführung von instruktionen
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
US20090046105A1 (en) 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US7818552B2 (en) * 2007-12-20 2010-10-19 The United States Of America As Represented By The Secretary Of The Army Operation, compare, branch VLIW processor
US8990543B2 (en) * 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
US8356162B2 (en) * 2008-03-18 2013-01-15 International Business Machines Corporation Execution unit with data dependent conditional write instructions
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
KR101645001B1 (ko) 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
JP5495707B2 (ja) * 2009-10-16 2014-05-21 三菱電機株式会社 並列信号処理装置
KR101814221B1 (ko) 2010-01-21 2018-01-02 스비랄 인크 스트림 기반 계산을 구현하기 위한 범용 다중 코어 시스템을 위한 방법 및 장치
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
JP5813484B2 (ja) 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US9652242B2 (en) * 2012-05-02 2017-05-16 Apple Inc. Apparatus for predicate calculation in processor instruction set
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9632777B2 (en) 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9569211B2 (en) * 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9558003B2 (en) * 2012-11-29 2017-01-31 Samsung Electronics Co., Ltd. Reconfigurable processor for parallel processing and operation method of the reconfigurable processor
US9256427B2 (en) 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9639371B2 (en) * 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
GB2514397B (en) 2013-05-23 2017-10-11 Linear Algebra Tech Ltd Corner detection
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US9934043B2 (en) 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
CN103607195A (zh) * 2013-10-17 2014-02-26 陕西万达信息工程有限公司 一种二加数时序单元
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US9507565B1 (en) 2014-02-14 2016-11-29 Altera Corporation Programmable device implementing fixed and floating point functionality in a mixed architecture
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
CN108804138A (zh) * 2018-06-05 2018-11-13 Oppo(重庆)智能科技有限公司 应用操作优化方法、装置、存储介质及终端设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254359A (ja) * 1985-06-24 1987-03-10 ピクサ− コンピユ−タ装置
JPH07302199A (ja) * 1994-04-28 1995-11-14 Internatl Business Mach Corp <Ibm> 複数の処理要素による多重条件コードに基づく1命令分岐に適応したデータ処理装置及び方法
JPH08249293A (ja) * 1995-01-17 1996-09-27 Internatl Business Mach Corp <Ibm> 代理命令を用いる並列処理システム及び方法
JPH08305563A (ja) * 1995-05-11 1996-11-22 Hitachi Ltd データ処理装置
JPH09106346A (ja) * 1995-10-11 1997-04-22 Oki Electric Ind Co Ltd 並列計算機
JPH09134288A (ja) * 1995-11-08 1997-05-20 Oki Electric Ind Co Ltd 並列命令処理装置
JPH1049368A (ja) * 1996-07-30 1998-02-20 Mitsubishi Electric Corp 条件実行命令を有するマイクロプロセッサ
WO1998033115A1 (fr) * 1997-01-24 1998-07-30 Mitsubishi Denki Kabushiki Kaisha Processeur de donnees
JPH113226A (ja) * 1996-10-10 1999-01-06 Sun Microsyst Inc 統合グラフィックス機能を有するcpu用のビジュアル命令セット
JP2001523023A (ja) * 1997-11-07 2001-11-20 ボプス インコーポレイテッド iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4783738A (en) * 1986-03-13 1988-11-08 International Business Machines Corporation Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element
US4827403A (en) * 1986-11-24 1989-05-02 Thinking Machines Corporation Virtual processor techniques in a SIMD multiprocessor array
US4896265A (en) * 1988-03-28 1990-01-23 General Electric Company Parallel broadcasting method and apparatus
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5101484A (en) * 1989-02-14 1992-03-31 Intel Corporation Method and apparatus for implementing an iterative program loop by comparing the loop decrement with the loop value
US5349671A (en) * 1989-03-23 1994-09-20 Matsushita Electric Industrial Co., Ltd. Microprocessor system generating instruction fetch addresses at high speed
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics N.V., Eindhoven Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5926644A (en) * 1991-10-24 1999-07-20 Intel Corporation Instruction formats/instruction encoding
US5581773A (en) * 1992-05-12 1996-12-03 Glover; Michael A. Massively parallel SIMD processor which selectively transfers individual contiguously disposed serial memory elements
JP2642039B2 (ja) * 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
GB2273377A (en) * 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
US5465374A (en) * 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
US5737561A (en) * 1993-01-22 1998-04-07 Intel Corporation Method and apparatus for executing an instruction with multiple brancing options in one cycle
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH06314203A (ja) * 1993-04-28 1994-11-08 Fujitsu Ltd コンパイラの最適化方法および装置
US5528550A (en) * 1993-05-28 1996-06-18 Texas Instruments Incorporated Apparatus, systems and methods for implementing memory embedded search arithmetic logic unit
JP2832899B2 (ja) * 1993-05-31 1998-12-09 松下電器産業株式会社 データ処理装置およびデータ処理方法
JP2536726B2 (ja) * 1993-07-07 1996-09-18 日本電気株式会社 マイクロプロセッサ
WO1995009399A1 (fr) * 1993-09-27 1995-04-06 Ntt Mobile Communications Network Inc. Multiprocesseur
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
JP3105738B2 (ja) * 1994-06-10 2000-11-06 日本電気株式会社 情報処理装置
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
US5872965A (en) * 1997-06-30 1999-02-16 Sun Microsystems, Inc. System and method for performing multiway branches using a visual instruction set
US6061707A (en) * 1998-01-16 2000-05-09 International Business Machines Corporation Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6254359A (ja) * 1985-06-24 1987-03-10 ピクサ− コンピユ−タ装置
JPH07302199A (ja) * 1994-04-28 1995-11-14 Internatl Business Mach Corp <Ibm> 複数の処理要素による多重条件コードに基づく1命令分岐に適応したデータ処理装置及び方法
JPH08249293A (ja) * 1995-01-17 1996-09-27 Internatl Business Mach Corp <Ibm> 代理命令を用いる並列処理システム及び方法
JPH08305563A (ja) * 1995-05-11 1996-11-22 Hitachi Ltd データ処理装置
JPH09106346A (ja) * 1995-10-11 1997-04-22 Oki Electric Ind Co Ltd 並列計算機
JPH09134288A (ja) * 1995-11-08 1997-05-20 Oki Electric Ind Co Ltd 並列命令処理装置
JPH1049368A (ja) * 1996-07-30 1998-02-20 Mitsubishi Electric Corp 条件実行命令を有するマイクロプロセッサ
JPH113226A (ja) * 1996-10-10 1999-01-06 Sun Microsyst Inc 統合グラフィックス機能を有するcpu用のビジュアル命令セット
WO1998033115A1 (fr) * 1997-01-24 1998-07-30 Mitsubishi Denki Kabushiki Kaisha Processeur de donnees
JP2001523023A (ja) * 1997-11-07 2001-11-20 ボプス インコーポレイテッド iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置

Also Published As

Publication number Publication date
JP4879307B2 (ja) 2012-02-22
IL144562A0 (en) 2002-05-23
US6366999B1 (en) 2002-04-02
JP5474014B2 (ja) 2014-04-16
US6954842B2 (en) 2005-10-11
US20040039899A1 (en) 2004-02-26
US20040049664A1 (en) 2004-03-11
EP1196855A4 (en) 2007-02-21
JP2012033176A (ja) 2012-02-16
US20020178345A1 (en) 2002-11-28
EP1196855A1 (en) 2002-04-17
DE60044460D1 (de) 2010-07-08
US7146487B2 (en) 2006-12-05
EP1196855B1 (en) 2010-05-26
US6760831B2 (en) 2004-07-06
WO2000045282A1 (en) 2000-08-03
JP4943584B2 (ja) 2012-05-30
JP2003520360A (ja) 2003-07-02
US7010668B2 (en) 2006-03-07
ATE469391T1 (de) 2010-06-15
US20040107333A1 (en) 2004-06-03

Similar Documents

Publication Publication Date Title
JP4879307B2 (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
JP3149348B2 (ja) 代理命令を用いる並列処理システム及び方法
JP4156794B2 (ja) iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置
JP3120152B2 (ja) コンピューターシステム
US6851041B2 (en) Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
JP3559046B2 (ja) データ処理マネージメントシステム
JP4657455B2 (ja) データプロセッサ
JP4500363B2 (ja) プロセッサ装置、デュアルプロセッサを動作させる方法及びアレイプロセッサの動作方法
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
JP2001134436A (ja) 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法
JP2003005954A (ja) データ処理装置およびその制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100604

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110428

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110726

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111013

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141209

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees