説明

サブワード実行を用いるVLIWベースのアレイプロセッサで条件付き実行をサポートする方法及び装置

【課題】複合条件に基づくサブワード並列実行をサポートする。
【解決手段】汎用フラグ(ACF)は階層を使用して定義され、エンコードされる。加えられた各ビットは、前の機能性のスーパーセットを提供する。条件の組合せを用いて、複合条件に基づく条件付き分岐の順次シリーズを回避することができ、次いで複合条件を条件付き実行のために使用することができる。フラグの数を変えることによって、条件付きオペレーションの並列性は、例えばVLIW実行での単一の処理からオクタル処理まで、かつ処理要素のアレイにわたって広範に変化することができる。異なるプロセッサ中で生成された条件に基づいて1つのプロセッサ中の条件付き実行を指定することを可能にして、多数のPEは、条件情報を同時に生成することができる。多数のプロセッサアレイ中の各プロセッサは、異なるユニットをそれらのACFに基づいて条件付きで独立に動作させることができる。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、「Method and Apparatus to Support Conditional Execution in a VLIW-Based Array Processor with Subword Execution」という名称の米国仮出願第60/072915号の特典を主張する。
【0002】
本発明は、一般にデジタル処理の改良に関し、より詳細には、サブワード(sub-word)実行を用いる超長命令語(VLIW)ベースのアレイプロセッサ中で条件付き実行をサポートする方法及び装置に関する。
【背景技術】
【0003】
プリディケイテッド(predicated)実行とも呼ばれる条件付き実行は、プログラマが非分岐タイプの命令を実行すべきかどうかを、前に生成されたマシン状態に基づいて指定できるようにする。このデータ依存条件付き実行機能は、条件付き分岐の必要を最小にする。パイプラインプロセッサ上の分岐遅延の犠牲を招く分岐の使用を回避することによって、性能は向上する。加えて、多くのタイプの順次制御依存関係は、並列データ依存関係に変えることができることに留意されたい。したがって、条件付き分岐のみをサポートする単一命令多重データストリーム(SIMD)マシン上で利用不可能な、あるレベルのデータ依存並列性を提供するために、パイプラインSIMDアレイプロセッサが各処理要素(PE)中で条件付き実行をサポートすることが望ましい。並列条件付き実行では、多数の条件付き分岐を回避することができるので、性能利得は重要となる可能性がある。
【0004】
所与の範囲のオペレーションに対して、並列アレイ間接VLIWプロセッサのアーキテクチャを作成する際、オペレーションを指定するのに必要なフォーマットは、オペレーションのタイプに依存して要件が変わることがわかる。例えば、並列アレイオペレーションは、制御及び分岐オペレーションと、ロード及び格納オペレーションと、算術オペレーションの3つのタイプにグループ化することができる。これらの各タイプは、最適な実施に対して異なるエンコーディング要件を有することになる。命令フォーマットは一般に固定のビット数であるので、少なくとも一部のオペレーションに対して機能的能力を制限することなく、プロセッサ中の全ての命令にわたる条件付き実行について単一の仕様をサポートする機構を定義することは難しい。命令タイプに依存してサポートの度合いを変えなければならない場合でも、条件付き実行をサポートすることが望ましいと考えると、命令タイプに基づく、統一された、しかし可変仕様の条件付き実行機構をどのように定義するかについての問題に遭遇する。
【0005】
条件付き分岐または条件付き実行をより効率的にするために、条件付きオペレーションが、[a>b OR c<d]などの関係のブール組合せによって形成される複合条件に基づくことが望ましい。これは、所望の結果を効果的に達成する多重単一テスト条件付き分岐を順次使用することによって達成される。多重単一テスト条件付き分岐を使用することに関連する問題は、分岐遅延の犠牲のために、必要な各分岐に対して性能低下効果があることである。この性能低下効果は、非分岐複合条件付実行を使用して軽減させることができる。
【0006】
SIMDアーキテクチャを備えるマシンでは、PE中で生成された条件付き状態情報を集めることを可能とするために、PE中の独立な条件付きオペレーションを生成し、条件情報をPE間で転送することが望ましい。条件がアレイPE中で作成されるSIMDアレイプロセッサのコントローラ、シーケンス・プロセッサ(SP)中で条件付き分岐を提供することも望ましい。条件状態情報をPE間で移動することを可能にすることによって、条件生成オペレーションを1つのPE中で実行し、条件付き結果に基づく条件付きオペレーションを別をPE中で実行することができる。条件付き情報がPE及びSP間で移動することを可能にすることによって、条件付きオペレーションをPE条件に基づいてSP中で実行することができる。そのような機能をアーキテクチャ中にどのように最良に加えるかが、更なる問題を提起する。
【0007】
VLIWマシンでは、並列に実行することができる複数の実行ユニットが存在し、各実行ユニットは、可能な限り多重命令VLIWの各サブ命令についての条件情報または状態情報を生成する。データ依存条件付き実行の決定を行うために、マシン状態の合計量を所望のテスト条件に減少させることが必要である。1つまたは複数の他の実行ユニットの実行を制御するために、多数の実行ユニットのうちの1つから条件結果を選択する機構を有することも望ましい。このタイプの状況の例は、比較がシフトとは異なる実行ユニットで実行される、比較命令と、その後に続く条件的依存シフト命令である。したがって、解決すべき問題は、条件情報の量を指定のテスト条件に低減する方法であり、VLIWマシン中で同期して動作する多数の実行ユニット間の相互依存の条件実行に対する機構を提供する方法である。
【0008】
サブワード実行は、単一実行ユニット内の1ワードまたはダブルワードよりも小さいデータに関して同時に実行される多数の個々のオペレーションを参照する。多数のサブワードオペレーションの総計は、パック化データ・オペレーションと呼ばれ、例えば、カッド(4個)16ビットオペレーションまたはオクタル(8個)8ビットオペレーションが、パック化64ビットデータタイプ上で並列に生じる。サブワード実行を条件付き実行をサポートするマシンで実行したとき、サブワードレベルの条件付き実行細分性を、命令を実行する際に達成することが望ましい。問題は、そのような機能をアーキテクチャ中でサポートする方法である。
【発明の概要】
【0009】
本発明は、好ましくはManArrayアーキテクチャを使用して、命令タイプに基づく階層条件付き実行指定、コントローラ・シーケンスプロセッサ(SP)及びPEでの現在及び前の条件状態に基づく複合条件に対するサポート、PE及びSPの間の条件状態情報を配布する機構、VLIWマシン中の多数の実行ユニット間の相互依存条件付き実行に対する機構、及びサブワード条件付き実行に対する機構を提供することによってそのような問題に有利に対処する。
【0010】
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またはブール組合せに影響を与えたその最後の命令の条件結果に基づく。
【0011】
ManArrayは、本発明に従って作成され、プログラムされ、操作されるとき、条件に操作を加える命令と共にACFを使用する方法を指定するだけではなく、ACFが条件を生成する命令によって設定される方法、またはACFを使用する方法のいずれかを指定するプログラマの規約を使用する。この規約は、Fnと呼ばれる1又は0を含む単一の真または偽フラグをオペレーションごとに生成する。比較命令に対しては、プログラマは、ACFのセッティングで使用するために、より大、等しい、より小などの、どの条件状態かを指定しなければならない。加えて、算術論理ユニット(ALU)中の比較命令は、フラグのセッティングを、現在の比較結果状態及び過去の命令ACF状態のブール組合せに基づいて指定することができる。算術オペレーションに対しては、本発明によるManArrayアーキテクチャの1つの実施形態では、C(桁上げフラグ)、V(オーバーフロー・フラグ)、N(負号フラグ)、又はZ(ゼロ・フラグ)の4つのASF条件のうちの1つを使用してACF条件フラグを更新する方法を命令ごとに選択できることが、有利に提供される。
【0012】
VLIWオペレーションを実行する時、プログラマは、算術ユニットのうちのどれが、ACFの単一セットに影響を与えることが可能かを選択しなければならない。フラグの単一セットは、VLIW実行中で、各VLIWユニットの実行を条件付きで制御するために使用することができる。各サイクルの間、条件フラグの所有権及びセッティングは、実行中の命令によって動的に決定される。実行されるがACFに影響を与えるように選択されない、またはプログラマの可視ASFに影響を与える条件は、効果を引き起こさず、一般に保存されない。
【0013】
ManArray命令セットの一実施形態の別の態様は、条件付きで実行する命令が条件フラグ自体に影響を与えないものである。この特徴により、比較の後の第1命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。命令は、ACFに基づく条件付き実行、またはACFを設定する方法のいずれかを指定することができるが、両方を指定することはできない。
【0014】
条件付き命令によって指定され、テストすることができる各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コントローラの間の条件信号パスの追加を必要としない。
【0015】
条件付きサブワード実行についての多くのアプリケーションによる必要と共に、条件付き実行の3ビット形態は、特定の命令または特定のグループの命令に対して、命令が真または偽テストと指定される命令に対する適切な値の対応するACFを有するパック化データタイプのデータ要素に関してだけ操作すべきであることを指定する。
【0016】
本発明のこれら及び他の利点と、態様とは、以下の図面及び詳細な説明から明らかとなろう。
【図面の簡単な説明】
【0017】
【図1】本発明で使用するのに適したManArrayアーキテクチャを示す図である。
【図2A】本発明に係る比較命令エンコーディングシーケンスの一例を示す図である。
【図2B】図2Aの比較命令のCCビットフィールド及びCcomboフィールドビットの例示的に説明する図である。
【図3A】本発明に係る64ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。
【図3B】本発明に係る32ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。
【図4A】本発明のCE1の単一ビット条件付き実行指定を使用する例示的ロード直接命令エンコーディングシーケンスを示す図である。
【図4B】本発明のCE2の2ビット条件付き実行指定を使用するコピー命令エンコーディングシーケンスの一例を示す図である。
【図4C】本発明のCE3bの3ビット条件付き実行指定を使用する論理命令エンコーディングシーケンスの一例を示す図である。
【図5A】本発明に係る条件付き実行を実施するためのハードウェアの1つの適切な実施の詳細を示す図である。
【図5B】本発明に係るVLIWプロセッサ中に条件付き実行を実装するためのハードウェアの1つの適切な実施の別の詳細を示す図である。
【発明を実施するための形態】
【0018】
本発明と共に使用するための現在のところ好ましい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号にそれぞれ記載されており、それら全体を参照により本明細書に組み込む。
【0019】
本発明の現在のところ好ましい実施形態では、図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にディスパッチする。
【0020】
この例示的システムでは、共通要素は、説明を単純化するために一貫して使用される。しかし実際の実装はこの制限に限定されない。例えば、組み合わされた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が含まれる。
【0021】
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コアメモリとインターフェースを取るのに必要なデータフロー及びバスアービトレーション機構を提供する。
【0022】
前述の特許すべては、本発明の譲受人に譲渡され、それら全体を参照により本明細書に組み込む。
【0023】
ManArrayプロセッサ条件付き実行方法及び装置の特定の詳細に話を転じると、この手法は、前述の並列アレイiVLIW条件付き実行問題を、単純なプログラミングモデルと最小限のハードウェア要件で有利に解決する。
【0024】
[算術条件フラグ]
ManArrayアーキテクチャは、例えば比較命令の結果など、命令実行の指定した結果を格納する1組の算術条件フラグ(ACF)を定義する。これらのACFは、一般化条件付き実行に対して使用される。分岐待ち時間を最小にするために、ほぼ全ての命令は、ACFに基づいて条件付きで実行することができる。PEのアレイ中の各PE中で条件付きで実行すべき命令に対しては、テスト可能条件は、各PE中でローカルに生成しなければならない。このローカルテスト可能条件は、iVLIWがパック化データタイプに関して実行するために各PE中で実行することができる多数の条件から導出される。命令ストリームのサイクルごとの条件付き実行に対しては、命令コーディングは、命令を実行するかどうかを決定するために、どの条件を使用するかを指定できなければならない。多くのタイプの条件があるので、各命令フォーマット中で指定を適切に行うために4つ以上のビットを確保しなければならないことになる。条件付き分岐は一般に単一条件テストを指定し、マルチメディアデータ依存コードは、主に単一条件テスティングを利用することが予想されるので、本明細書では、単一レベルの条件付き実行は、より複雑なネストされた条件付き実行のシナリオに亙って最良の性能利得を提供することになると仮定する。しかし、本明細書で論じる本発明の概念は、単一レベルの条件付き実行の状況のもとで作成されるものの、条件フラグの多数のセットを有する、より複雑にネストされた条件は、この教示によって除外されない。これを念頭におくと、ManArray条件付き実行についてのプログラミングモデルでは、パック化データiVLIWオペレーションの後に得られる条件状態情報の量を軽減するために、どのようにACFを設定すべきかについての指定が必要となる。
【0025】
2つのタイプのフラグを指定する。桁上げ(C)、オーバーフロー(V)、符号(N)、及びゼロ(Z)は、算術スカラフラグ(ASF)と呼ばれ、F7〜F0フラグは、算術条件フラグ(ACF)と呼ばれる。プログラマ可視ASFは、常に各命令実行の後に、命令によって指定される通り、パック化データタイプ、即ち、バイト0(b0)、半ワード0(H0)、ワード0(W0)、またはダブルワード(D)に関して実行される最小有効オペレーションに基づいて設定され、従来のオペレーションの副次作用を表す。分岐オペレーション中の条件を指定することにより、これらのスカラフラグの条件に基づいて、分岐が実行される。表1は、命令実行の結果として、その命令によって定義されるように生成することができるスカラ条件の例を示す。
【0026】
【表1】

【0027】
しかし、一般化条件付き実行は、ACFだけに基づく。ACFは、比較などの命令の選択されたセットによってのみ変更される。しかし、アーキテクチャ的には、この実行は、命令の大部分に拡張することができることに留意されたい。これらのある命令によるACFの生成は、実行の副次作用ではなく、プログラマによって指定される。ACFは、条件戻り位相の間に、実行の副次作用から、パイプラインの命令中で指定される通りに導出される−−CNVZ−−。加えて、ACFは、次の命令によって待機の犠牲なしで使用可能である。自明の事として、VLIWアーキテクチャ中の実行ユニット数と無関係に、図1のSP101と、図1の各PE101,151,153及び155ごとに1組のACFがある。このようにして、条件は、例えばALU中の比較命令からの、1つの実行ユニット中で生成することができ、他の実行ユニットは、この条件に基づいて条件付きで実行することができる。
【0028】
[ACFへの条件転送]
命令セットの特性は、ある命令を使用する際に、プログラマがACF条件フラグをどのように設定するかを指定する必要があることである。図2Aに示すような命令20などのALU比較命令については、プログラマは、どの図2Bの条件テストCC202を、ACF F7〜F0をセットする際に使用するかを指定しなければならない。例えば、「以上(GE)」205或いは「以下(LE)」207などの有効条件結果を、適切なACFを設定するために指定することができる。図2Bで示すように、記号は論理ORオペレーションを表す。&&記号はANDオペレーションを表し、!記号は等しくないことを表す。
【0029】
このアーキテクチャは、実行真(execute True)、実行偽(executee False)、無条件実行、及び他の特定のオペレーションを命令ごとに、階層式に指定する。真及び負フラグ・セッティングは、条件が真の場合の実行、及び条件が偽の場合の実行オペレーションに対して使用される。分岐もこれらのフラグの真または偽状態に基づいて実行することができる。あるDSU命令、シフト/回転、PEXCHG(通信命令)、及び選択された他の命令に対しては、ManArrayアーキテクチャにより、4つのスカラ条件C、V、N、またはZの副次効果のうちの1つを使用してACFをどのように更新するかを命令ごとに指定することができる。VLIWオペレーションを実行するとき、プログラマは、算術ユニット(この機能は拡張することができることを理解されたいが、現在のところALUまたはDSUのみである)のうちのどれがフラグの単一セットのセッティングを制御するかを選択しなければならない。各サイクルでは、条件フラグのセッティングは命令によって明示的に指定される。
【0030】
ManArray命令セットの別の特徴は、条件付きで実行する命令が条件フラグ自体に影響を与えないことである。この特徴により、比較の後の第1命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。命令は、ACFに基づく条件付き実行、またはフラグをセットする方法のいずれかを指定することができるが、両方を指定することはできない。
【0031】
[階層条件付き実行命令フォーマット]
条件付き実行の仕様についての階層フォーマットは、命令ビットのより良い使用法を可能にするManArray命令セットアーキテクチャ中で使用される。3ビット、2ビット、または1ビットのサブセットオペコード拡張エンコーディングが、条件付き実行をサポートする各命令に対して定義される。ACFが影響を受けるかどうかに関わりなく、ASFスカラフラグは、常にb0、H0、W0、及びDオペレーションに関して影響を受けることにやはり留意されたい。
【0032】
[パック化オペレーションについての算術条件付きフラグ(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に影響を与える。
【0033】
【表2】

【0034】
[CE1:1ビット条件付き実行オペコード拡張エンコーディング]
以下の表3に示すようなCE1 1ビット拡張フィールドを有するオペコードは、ACFに影響を与えずに、真のときに条件付きで実行するか、無条件で実行することができる。ASFは、命令によって定義されるように設定される。例えば、図4Aの命令400などのロード及びストア命令は、ACFフラグに決して影響を与えず、真の条件時に条件付きで実行することができる。
【0035】
【表3】

【0036】
[CE2:2ビット条件付き実行オペコード拡張エンコーディング]
以下の表4に示すようなCE2の2ビット拡張フィールドを有するオペコードは、真または偽に対して条件付きで実行したり、無条件で実行し、かつACFに影響を与えない、または命令特有の条件付き実行機能を提供することができる。ASFは、命令によって定義されるように設定される。ビット0及び1でCE2の2ビット拡張フィールドを有する例示的コピー命令エンコーディング410を図4Bに示す。
【0037】
【表4】

【0038】
[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つに基づくフラグに影響を与えることができる。
【0039】
【表5】

【0040】
[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に示す。
【0041】
第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に示す。
【0042】
【表6】

【0043】
「100」及び「101」のエンコーディングを含むことについての原理は、「001」及び「010」のエンコーディングと類似している。言い換えれば、この特徴により、プログラマは、(a>b)?z=x+y:r=q+sの形のCスタイルの条件付き式演算子を実行できるようになる。但し、a,b,x,y,z,q,r及びsは、全てパック化データ・ベクトル要素である。
【0044】
[条件付き分岐タイプ命令]
本明細書で説明するManArrayアーキテクチャは、スカラ条件フラグC,V,N,またはZ,ならびにACFに基づくSP中の無条件及び条件付き分岐タイプ命令をサポートする。ACFを設定するための条件コードは、比較命令、ならびに図2Bに示す他の具体的に定義された命令中で指定されるので、制御コードがスカラ条件付き分岐命令を利用することができるものの、条件付き分岐は、真に対する分岐または偽に対する分岐だけしか指定する必要がない。パック化データに対する命令によって生成された多数の条件を収容するために、分岐命令は、全て(AND縮小)又は任意(OR縮小)の縮小オペレーションも指定しなければならない。1つのオペレーションだけがあるときに、2つの縮小は等しいものの、非パック化単一データ(MONO)オペレーションに対する命令は、直交性に対するパック化データオペレーションのサブセットとして扱われる。
【0045】
表7は、1つの適切な縮小方法を表す。ここでやはり、多数の概念を使用する。構文フォーマットは、以下の表7に示す通りである。ただし、考慮すべきフラグの数は、構文中の2,4,及び8桁によって指定される。
【0046】
【表7】

【0047】
[比較命令]
比較命令は、いつでも実行され、いつでもフラグに影響を与える。汎用フラグ(ACF)は、比較命令の一部として指定される条件コードに基づいて影響を受ける。条件の組合せを使用して、フラグの前の状態は、現行比較命令によって指定される条件コードテストの結果と共に組み合わせることができる。この手法により、複合条件を多重分岐に復元することなく作成することが可能となる。図2Bでは、CCは、「より大(GT)」206、「より小(LT)」208、「等しい(EQ)」204、または「以下(LEQ)」207などの条件コード202を表す。図2Aの比較(CMPcc)命令200は、テストすべき所望の条件CC(図2B)、比較すべき2つのソースレジスタ、パック化形態をカバーするデータタイプ、及びCCombと符号を付けたブール組合せ指定フィールドを指定する。
【0048】
以下の表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に示す。
【0049】
【表8】

【0050】
条件を組合せることにより、プログラマは、多数の条件のブール組合せに対して、SP中で分岐する、又はSP及びPE中で条件付きで実行することが可能となる。この手法は、多数の分岐と、条件の組合せなしに同じ効果を達成するために必要なそれらの関連する犠牲との代わりに使用することができる。条件付き実行は、単一条件ではなく、多数の条件の組合せに基づいても実行することができる。最終的に、条件の組合せは、算術命令条件コードの限定化セットからは直接利用可能ではない複合条件を生成するために、先行する算術命令と共に使用することができる。任意の複雑さの組み合わされた条件は、条件フラグを多くのプロセッサレジスタのうちのどれか1つにコピーし、次いでそれらに対する論理演算を算術ユニット中で実行することによって得ることができることに留意されたい。所望の条件が計算され、レジスタ中に格納された後、所望の条件は、条件付き実行のために、それに対して使用することができる条件フラグに戻すことができる。この方法論を使用して、いくつかのプログラミングのオーバヘッドによって、複合条件を得る非常に一般的な方法が得られる。この方法論は、計算レジスタファイル中で生成し、常駐することができる条件結果の多数のセットを必要とする、Cスタイルの条件付きで実行されるステートメントのネスティングをサポートするためにも使用することができる。次いでプロセッサレジスタファイル中に常駐するこれらの条件結果は、条件付き実行の前にACFにコピーされることになる。
【0051】
[VLIW条件付き実行]
VLIWメモリ(VIM)中に格納される各命令は、そのCE1、CE2又はCE3a/b仕様を含む。VLIWが実行VLIW(XV)命令に応答して実行されるために読み出されるとき、個々のユニット内に多数のフラグを生成することができる。ACFの1つのセットがあり、潜在的にVLIW中の各命令がフラグに影響を与える可能性があるので、どの算術ユニットがある所与のサイクルのためのフラグに対して影響を与えることになるかを選ぶための選択機構が必要である。本発明によるManArrayの1つの実施形態では、これを達成するための2つの機構がある。これらの機構は、それぞれSIMD及び同期多重命令多重データストリーム(SMIMD)コードの必要を満たす。
【0052】
SMIMDでは、異なるVLIWが、同じVLIMアドレスに存在することができ、次いでVLIW並列性についての様々な必要を伴う様々なアプリケーションで性能を最適化する目的で並列に実行することができる。SMIMDコードに対して、プログラマは、VLIWがロードVLIW(LV)命令の一部としてロードされるときに、どの算術ユニットがフラグに影響を与えるかを指定する。この手法により、異なるPEが、異なるユニットにフラグに影響を与えさせることが可能となる。SIMDコードに対して、プログラマは、どのユニットが実行時間にXV命令の一部としてフラグに影響を与えるかを指定する。XV命令指定は、LV命令で指定されたユニットを上書きすることができる。これにより、プログラマは、多数の非オーバーラッピングVLIWを、VLIWの実行毎に、条件フラグに影響を与える種々の算術ユニットを用いて、同じVIMアドレスにパックすることが可能となる。
【0053】
[PE間で条件フラグを伝送する]
PE DSU受信命令(PEXCHG)は、PE間の通信オペレーションを指定する。このPEXCHG命令により、ACF及びASFを含むプログラマ可視ステータスレジスタにアクセス可能にすることによって、1つのPEから別のPEに条件状態情報を効果的に転送することが可能となる。SP受信命令(SPRECV)は、条件をPEとSPとの間で伝送するために使用することができる。条件状態は、異なるPEの計算レジスタファイル中に受信されることになり、次いで、それ自体のプログラマ可視フラグレジスタにコピーすることができ、条件付き実行のために使用される。
【0054】
[拡張条件付き実行定義]
現在、図4CのCE3フィールド422、又は図4BのCE2フィールド412を有する各命令は、それぞれ表5及び6及び表4に示すように予約される少なくとも1つのエンコーディングを有する。以下の機構は、命令が算術条件フラグ(F7〜F0)を「SetCC」命令によって特定されるプログラム可能「複合条件」で更新することが可能となるように、この予約エンコーディングを使用することになる。例として、予約フィールドを使用するためのCE2のエンコーディングを以下の表9に示す。CE3a及びCE3bフィールドはどちらも、それらの等しい予約エンコーディングに対する同じエンコーディング定義を使用することになる。
【0055】
【表9】

【0056】
SetCC命令は、特定のユニットに対する命令がこのタイプの条件生成を指定するとき、その実行ユニットの算術条件フラグ(F7〜F0)中で生成され、保存すべき複合条件を指定する。現在の好ましいCE3aエンコーディングにより、4つの可能な条件C(桁上げ)、N(符号)、V(オーバーフロー)、またはZ(ゼロ)のうちの1つを指定することが可能となる。SetCC命令により、「より大」、「より小」、「以下」、「以上」などの標準の16個の条件を含む、最大32個の複合条件を指定することが可能となる。例えば、オーバーフローがパック化データ実行内で何らかのデータオペレーションに対して生じたかどうかを検出するために、条件を指定することができる。このようにして、オクタルパック化データ実行内でオーバーフローを有するデータオペレーション6は、設定すべきフラグACFF6の設定を生じさせることができる。条件に影響を与えることができるCE3又はCE2エンコーディングを有する命令によって、これらのうちのどれかが選択されても良い。異なる複合条件の選択がデータ依存となることができるように、一部のデータに基づいてSetCC命令を条件付きで実行可能にすることも可能である。例示的SetCC命令を以下の表10に示す。
【0057】
【表10】

【0058】
そのオペコード・エンコーディングによって識別されるSetCC命令は、以下の2つのパラメータを指定する。
【0059】
・実行ユニット:このフィールドは、指定した複合条件が当てはまる実行ユニットを指定する。各実行ユニットは、異なる複合条件を有することができるか、又はALLエンコーディングが選ばれる場合、全てのユニットが同じ複合条件を使用する。
【0060】
・選択された条件:このフィールドは、32個の条件のうちの1つを指定する。命令フォーマットによりそれが可能にになると仮定すると、このフィールドはテストすべき他の条件が生じる場合に拡張することができる。
【0061】
[条件付き実行装置]
図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中にそれぞれ位置付けられる。
【0062】
【表11】

【0063】
32ビットステータス及び制御レジスタ0(SCR0)は、主ステータス及び制御情報を含む。尚、ブランクフィールドは予約済みである。
【0064】
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は、条件付き実行のために分岐ロジック中で使用される。
【0065】
このManArrayアーキテクチャは、ロードイミーディエイト命令によってロードすることができる、メモリからロードすることができる、または計算レジスタからコピーすることができるプログラマ可視ステータス及び制御レジスタのうちの1つに格納すべきACF状態ラッチ598及びCNVZ状態ラッチ596を定義する。このレジスタをメモリ中に保存し、実行ユニットで利用可能な計算レジスタのうちの1つにコピーすることもできる。
【0066】
前述の方法及び装置を、条件付き実行のための条件フラグ情報及び命令エンコーディングを実施するために使用すると、条件付き実行は、1ビットの追加のオペコード空間だけでサポートされ、機能性の程度の変動に伴って最大3ビットでサポートされることがわかる。加えて、命令機能指定と条件付き実行指定との間のより良い合致を得ることができる。例えば、1ビット条件付き実行エンコーディングは、ロード及びストア命令に対して十分であり、機能エンコーディングに対して最大数のビットが可能となる。各追加された条件実行ビットは、前の機能性のスーパーセットを提供する。さらに、この手法では、条件ビットの全体数は減少する。これは、1つのフラグが各サブワードオペレーションに対して定義されるパック化データに対して操作する命令とよくマップし、サブワードごとの命令の部分的実行が可能となる。
【0067】
別の条件フラグの減少は、VLIW中の全ての実行ユニットが同じ条件フラグを共用する場合に指定される。ManArrayネットワーク及び通信命令を使用することによって、異なるPE中で実行する命令が互いの条件情報を使用することが可能となる。加えて、条件組合せでは、複合条件の場合に対して多数の分岐を使用することを避けることができ、複合条件は、条件付き実行に対して使用することができる。
【0068】
本発明を現在のところ好ましい実施形態で説明したが、有利には、本発明の教示は、添付の請求の範囲と一致する様々な処理アレイに適用することができることを理解されたい。

【特許請求の範囲】
【請求項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ラッチを備えることを特徴とするシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図5A】
image rotate

【図5B】
image rotate


【公開番号】特開2012−33176(P2012−33176A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−195330(P2011−195330)
【出願日】平成23年9月7日(2011.9.7)
【分割の表示】特願2000−596471(P2000−596471)の分割
【原出願日】平成12年1月24日(2000.1.24)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】