(57)【特許請求の範囲】
【請求項１】
プロセッサで算術条件フラグ（ＡＣＦ）に基づいて条件付き実行を行う装置であって、
第１の命令の実行に応答して、前記プロセッサのパイプラインが、前記第１の命令で特定される第１及び第２のデータ要素への第１のオペレーションを制御して第１の条件結果（Ｆt,n）を生成し、
前記第１の命令に含まれるコードで特定される第２のオペレーションを制御して、前記第１の条件結果と以前格納された算術条件フラグ（ＡＣＦ）の値とから、第２の条件結果（Ｆn）を生成し、
前記第２の条件結果を前記算術条件フラグ（ＡＣＦ）に格納し、
第２の命令で特定される前記算術条件フラグ（ＡＣＦ）の値に基づいて、前記第２の命令を条件付きで実行する、前記プロセッサパイプライン内の実行ユニット（ＡＬＵ）、を有することを特徴とする装置。
【請求項２】
前記第１の命令は比較命令であり、前記第１の条件結果は、第１のパック化データユニットの前記第１のデータ要素と、第２のパック化データユニットの前記第２のデータ要素を特定するデータタイプ位置に対応し、前記第２のオペレーションは前記第１の条件結果と以前格納された前記算術条件フラグの値とのブール組合わせであることを特徴とする請求項１に記載の装置。
【請求項３】
以前格納された前記算術条件フラグの値は、以前の命令の実行による条件結果を保存するように特定した以前の命令の実行に応答して以前のサイクルで決定されることを特徴とする請求項１に記載の装置。
【請求項４】
前記以前の命令の実行による条件結果は、前記以前のサイクルの終わりまでに前記算術条件フラグに格納されることを特徴とする請求項３に記載の装置。
【請求項５】
前記実行ユニットは、前記第１及び第２のデータ要素から前記第１の条件結果を生成し、前記第１の条件結果及び以前記憶された前記算術条件フラグの値から、前記第１の命令に応答して前記第２の条件結果を生成することを特徴とする請求項１に記載の装置。
【請求項６】
第３及び第４のデータ要素から第３の条件結果を生成し、前記第３の条件結果及び以前記憶された前記算術条件フラグの値から、第３の命令に応答して第４の条件結果を生成する、前記プロセッサパイプラインの第２の実行ユニットを更に有し、前記算術条件フラグは前記プロセッサパイプラインで特定された前記第２の条件結果或いは前記第４の条件結果を格納することを特徴とする請求項１に記載の装置。
【請求項７】
プロセッサで算術条件フラグ（ＡＣＦ）に基づいて条件付き実行を行う方法であって、
第１の命令に応答して、前記プロセッサのパイプラインが、前記第１の命令で特定される第１及び第２のデータ要素への第１のオペレーションを制御して第１の条件結果（Ｆt,n）を生成する工程と、
前記第１の命令に含まれるコードで特定される第２のオペレーションを制御して、前記第１の条件結果と以前格納された算術条件フラグ（ＡＣＦ）の値とから、第２の条件結果（Ｆn）を生成する工程と、
前記第２の条件結果を前記算術条件フラグ（ＡＣＦ）に格納する工程と、
第２の命令で特定される前記算術条件フラグ（ＡＣＦ）の値に基づいて、前記第２の命令を条件付きで実行する工程と、
を有することを特徴とする方法。
【請求項８】
前記プロセッサパイプラインで第３及び第４のデータ要素への前記第１のオペレーションを制御して第３の条件結果を生成し、前記プロセッサパイプラインで前記第３の条件結果及び以前記憶された前記算術条件フラグの値への前記第２のオペレーションを制御し、前記第１の命令の実行に応答した第４の条件結果を生成する工程と、
第２の算術条件フラグ（ＡＣＦ）に前記第４の条件結果を格納する工程と、
前記算術条件フラグ（ＡＣＦ）の値と第３の命令で特定された前記第２の算術条件フラグ（ＡＣＦ）の値との組合せ結果に基づいて、前記プロセッサパイプライン内で第３の命令を条件付きで実行する工程と、
を更に有することを特徴とする請求項７に記載の方法。
【請求項９】
前記第１及び第２のオペレーションは、比較命令で定義されることを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、「Method and Apparatus to Support Conditional Execution in a VLIW-Based Array Processor with Subword Execution」という名称の米国仮出願第６０／０７２９１５号の特典を主張する。
【０００２】
本発明は、一般にデジタル処理の改良に関し、より詳細には、サブワード（sub-word）実行を用いる超長命令語（ＶＬＩＷ）ベースのアレイプロセッサ中で条件付き実行をサポートする方法及び装置に関する。
【背景技術】
【０００３】
プリディケイテッド（predicated）実行とも呼ばれる条件付き実行は、プログラマが非分岐タイプの命令を実行すべきかどうかを、前に生成されたマシン状態に基づいて指定できるようにする。このデータ依存条件付き実行機能は、条件付き分岐の必要を最小にする。パイプラインプロセッサ上の分岐遅延の犠牲を招く分岐の使用を回避することによって、性能は向上する。加えて、多くのタイプの順次制御依存関係は、並列データ依存関係に変えることができることに留意されたい。したがって、条件付き分岐のみをサポートする単一命令多重データストリーム（ＳＩＭＤ）マシン上で利用不可能な、あるレベルのデータ依存並列性を提供するために、パイプラインＳＩＭＤアレイプロセッサが各処理要素（ＰＥ）中で条件付き実行をサポートすることが望ましい。並列条件付き実行では、多数の条件付き分岐を回避することができるので、性能利得は重要となる可能性がある。
【０００４】
所与の範囲のオペレーションに対して、並列アレイ間接ＶＬＩＷプロセッサのアーキテクチャを作成する際、オペレーションを指定するのに必要なフォーマットは、オペレーションのタイプに依存して要件が変わることがわかる。例えば、並列アレイオペレーションは、制御及び分岐オペレーションと、ロード及び格納オペレーションと、算術オペレーションの３つのタイプにグループ化することができる。これらの各タイプは、最適な実施に対して異なるエンコーディング要件を有することになる。命令フォーマットは一般に固定のビット数であるので、少なくとも一部のオペレーションに対して機能的能力を制限することなく、プロセッサ中の全ての命令にわたる条件付き実行について単一の仕様をサポートする機構を定義することは難しい。命令タイプに依存してサポートの度合いを変えなければならない場合でも、条件付き実行をサポートすることが望ましいと考えると、命令タイプに基づく、統一された、しかし可変仕様の条件付き実行機構をどのように定義するかについての問題に遭遇する。
【０００５】
条件付き分岐または条件付き実行をより効率的にするために、条件付きオペレーションが、［ａ＞ｂ  ＯＲ  ｃ＜ｄ］などの関係のブール組合せによって形成される複合条件に基づくことが望ましい。これは、所望の結果を効果的に達成する多重単一テスト条件付き分岐を順次使用することによって達成される。多重単一テスト条件付き分岐を使用することに関連する問題は、分岐遅延の犠牲のために、必要な各分岐に対して性能低下効果があることである。この性能低下効果は、非分岐複合条件付実行を使用して軽減させることができる。
【０００６】
ＳＩＭＤアーキテクチャを備えるマシンでは、ＰＥ中で生成された条件付き状態情報を集めることを可能とするために、ＰＥ中の独立な条件付きオペレーションを生成し、条件情報をＰＥ間で転送することが望ましい。条件がアレイＰＥ中で作成されるＳＩＭＤアレイプロセッサのコントローラ、シーケンス・プロセッサ（ＳＰ）中で条件付き分岐を提供することも望ましい。条件状態情報をＰＥ間で移動することを可能にすることによって、条件生成オペレーションを１つのＰＥ中で実行し、条件付き結果に基づく条件付きオペレーションを別をＰＥ中で実行することができる。条件付き情報がＰＥ及びＳＰ間で移動することを可能にすることによって、条件付きオペレーションをＰＥ条件に基づいてＳＰ中で実行することができる。そのような機能をアーキテクチャ中にどのように最良に加えるかが、更なる問題を提起する。
【０００７】
ＶＬＩＷマシンでは、並列に実行することができる複数の実行ユニットが存在し、各実行ユニットは、可能な限り多重命令ＶＬＩＷの各サブ命令についての条件情報または状態情報を生成する。データ依存条件付き実行の決定を行うために、マシン状態の合計量を所望のテスト条件に減少させることが必要である。１つまたは複数の他の実行ユニットの実行を制御するために、多数の実行ユニットのうちの１つから条件結果を選択する機構を有することも望ましい。このタイプの状況の例は、比較がシフトとは異なる実行ユニットで実行される、比較命令と、その後に続く条件的依存シフト命令である。したがって、解決すべき問題は、条件情報の量を指定のテスト条件に低減する方法であり、ＶＬＩＷマシン中で同期して動作する多数の実行ユニット間の相互依存の条件実行に対する機構を提供する方法である。
【０００８】
サブワード実行は、単一実行ユニット内の１ワードまたはダブルワードよりも小さいデータに関して同時に実行される多数の個々のオペレーションを参照する。多数のサブワードオペレーションの総計は、パック化データ・オペレーションと呼ばれ、例えば、カッド（４個）１６ビットオペレーションまたはオクタル（８個）８ビットオペレーションが、パック化６４ビットデータタイプ上で並列に生じる。サブワード実行を条件付き実行をサポートするマシンで実行したとき、サブワードレベルの条件付き実行細分性を、命令を実行する際に達成することが望ましい。問題は、そのような機能をアーキテクチャ中でサポートする方法である。
【発明の概要】
【０００９】
本発明は、好ましくはＭａｎＡｒｒａｙアーキテクチャを使用して、命令タイプに基づく階層条件付き実行指定、コントローラ・シーケンスプロセッサ（ＳＰ）及びＰＥでの現在及び前の条件状態に基づく複合条件に対するサポート、ＰＥ及びＳＰの間の条件状態情報を配布する機構、ＶＬＩＷマシン中の多数の実行ユニット間の相互依存条件付き実行に対する機構、及びサブワード条件付き実行に対する機構を提供することによってそのような問題に有利に対処する。
【００１０】
ＭａｎＡｒｒａｙアーキテクチャでは、現在適合するのと同様に、３つのレベルの階層仕様が使用され、それによれば、１，２または３ビット条件付き実行指定が、命令タイプ及びフォーマット・エンコーディング制限に依存して命令フォーマット中で使用される。操作を加えるべき条件状態は、これら３ビットで指定されると同様に、命令がパック化データであっても、ＶＬＩＷオペレーションであっても、その命令を実行することによって並列に生成される通常の副次作用状態から別々に生成される状態情報の縮小セットである。概念的には、命令実行から生成される通常の副次作用状態は、算術スカラフラグ（ＡＳＦ）、即ち、桁上げ（Ｃ）、オーバーフロー（Ｖ）、符号（Ｎ）、及びゼロ（Ｚ）フラグ中に保存される。一部の制限がデータタイプに依存して適用される。別々に生成された条件付き状態は、算術条件フラグ（ＡＣＦ）、即ち、Ｆ７〜Ｆ０中に保存される。ここでＦｉはパック化データ要素ｉに対応している。ＡＳＦは、条件付き分岐に対してのみ使用することができ、一方、ＡＣＦは、条件付き分岐及び条件付き実行の両方で使用される。加えて、ＡＣＦは、命令実行の結果として、または現在の比較命令及び前の命令実行から生成される状態情報のブール組合せの結果として設定される状態情報を含む。これらのＡＣＦをＳＰ中で条件付き命令によって指定し、テストすることができ、それによって条件付き分岐の使用を最小にする。最も単純なケースでは、ＰＥ命令は条件付きで実行することができ、ＳＰ命令は、直前の先行する命令の条件結果に関して、条件付きで実行または分岐することができる。直前の先行する命令がフラグに影響を与えなかった場合、一般条件付き実行は、条件状態情報のＡＣＦまたはブール組合せに影響を与えたその最後の命令の条件結果に基づく。
【００１１】
ＭａｎＡｒｒａｙは、本発明に従って作成され、プログラムされ、操作されるとき、条件に操作を加える命令と共にＡＣＦを使用する方法を指定するだけではなく、ＡＣＦが条件を生成する命令によって設定される方法、またはＡＣＦを使用する方法のいずれかを指定するプログラマの規約を使用する。この規約は、Ｆｎと呼ばれる１又は０を含む単一の真または偽フラグをオペレーションごとに生成する。比較命令に対しては、プログラマは、ＡＣＦのセッティングで使用するために、より大、等しい、より小などの、どの条件状態かを指定しなければならない。加えて、算術論理ユニット（ＡＬＵ）中の比較命令は、フラグのセッティングを、現在の比較結果状態及び過去の命令ＡＣＦ状態のブール組合せに基づいて指定することができる。算術オペレーションに対しては、本発明によるＭａｎＡｒｒａｙアーキテクチャの１つの実施形態では、Ｃ（桁上げフラグ）、Ｖ（オーバーフロー・フラグ）、Ｎ（負号フラグ）、又はＺ（ゼロ・フラグ）の４つのＡＳＦ条件のうちの１つを使用してＡＣＦ条件フラグを更新する方法を命令ごとに選択できることが、有利に提供される。
【００１２】
ＶＬＩＷオペレーションを実行する時、プログラマは、算術ユニットのうちのどれが、ＡＣＦの単一セットに影響を与えることが可能かを選択しなければならない。フラグの単一セットは、ＶＬＩＷ実行中で、各ＶＬＩＷユニットの実行を条件付きで制御するために使用することができる。各サイクルの間、条件フラグの所有権及びセッティングは、実行中の命令によって動的に決定される。実行されるがＡＣＦに影響を与えるように選択されない、またはプログラマの可視ＡＳＦに影響を与える条件は、効果を引き起こさず、一般に保存されない。
【００１３】
ＭａｎＡｒｒａｙ命令セットの一実施形態の別の態様は、条件付きで実行する命令が条件フラグ自体に影響を与えないものである。この特徴により、比較の後の第１命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、（ａ＞ｂ）？ｚ＝ｘ＋ｙ：ｒ＝ｑ＋ｓの形のＣスタイルの条件付き式演算子を実行できるようになる。命令は、ＡＣＦに基づく条件付き実行、またはＡＣＦを設定する方法のいずれかを指定することができるが、両方を指定することはできない。
【００１４】
条件付き命令によって指定され、テストすることができる各ＰＥで、複合条件を生成する手段について効果的な機構を有することが望ましい。これは、ＳＰ条件付き分岐を、ＰＥデータ依存実行オペレーションに変更する効果を有する。並列アレイ条件付き実行についての効果的な手段を有することは、ＰＥ条件に基づく条件付き分岐をサポートする目的で、時間や実施費用のかかる、ＰＥに条件信号をコントローラに送り返すようにさせる必要を最小にする。並列アレイ条件付き実行を有することの含意は、ＰＥ条件フィードバックをアレイコントローラに提供するために選んだ手法を単純な性質にでき、各ＰＥからの条件信号パスを提供するよりも費用がかからないようにできることである。ＰＥのレジスタファイルにコピーまたは移動することができるプログラマアクセス可能レジスタ空間中に条件フラグを保存することにより、フラグを容易にＰＥ間で通信することができる。「Methods and Apparatus for Dynamically Merging an Array Controller with an Array Processor Element」という名称の１９９８年１０月９日出願の米国特許出願第０９／１６９０７２号により完全に記載されているようなマージされたＳＰ／ＰＥに関連して、ＰＥ０中に保存されるフラグは、容易にＳＰに転送される。Ｎをアレイ中のＰＥの数として、ｌｏｇＮ縮小方法を使用して、ｌｏｇＮステップ中の全てのＰＥの間で、ＰＥフラグ情報を交換することが可能である。条件情報の転送は、既存のＭａｎＡｒｒａｙネットワークの設計と適合し、ＰＥとＳＰコントローラの間の条件信号パスの追加を必要としない。
【００１５】
条件付きサブワード実行についての多くのアプリケーションによる必要と共に、条件付き実行の３ビット形態は、特定の命令または特定のグループの命令に対して、命令が真または偽テストと指定される命令に対する適切な値の対応するＡＣＦを有するパック化データタイプのデータ要素に関してだけ操作すべきであることを指定する。
【００１６】
本発明のこれら及び他の利点と、態様とは、以下の図面及び詳細な説明から明らかとなろう。
【図面の簡単な説明】
【００１７】
【図１】本発明で使用するのに適したＭａｎＡｒｒａｙアーキテクチャを示す図である。
【図２Ａ】本発明に係る比較命令エンコーディングシーケンスの一例を示す図である。
【図２Ｂ】図２Ａの比較命令のＣＣビットフィールド及びＣｃｏｍｂｏフィールドビットの例示的に説明する図である。
【図３Ａ】本発明に係る６４ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。
【図３Ｂ】本発明に係る３２ビットパック化データタイプ・オペレーション及び算術条件フラグへのそれらの関係を示す図である。
【図４Ａ】本発明のＣＥ１の単一ビット条件付き実行指定を使用する例示的ロード直接命令エンコーディングシーケンスを示す図である。
【図４Ｂ】本発明のＣＥ２の２ビット条件付き実行指定を使用するコピー命令エンコーディングシーケンスの一例を示す図である。
【図４Ｃ】本発明のＣＥ３ｂの３ビット条件付き実行指定を使用する論理命令エンコーディングシーケンスの一例を示す図である。
【図５Ａ】本発明に係る条件付き実行を実施するためのハードウェアの１つの適切な実施の詳細を示す図である。
【図５Ｂ】本発明に係るＶＬＩＷプロセッサ中に条件付き実行を実装するためのハードウェアの１つの適切な実施の別の詳細を示す図である。
【発明を実施するための形態】
【００１８】
本発明と共に使用するための現在のところ好ましいＭａｎＡｒｒａｙアーキテクチャのさらなる詳細は、１９９７年６月３０日出願の米国特許出願第０８／８８５３１０号、１９９７年１０月１０日出願の米国特許出願第０８／９４９１２２号、１９９８年１０月９日出願の米国特許出願第０９／１６９２５５号、１９９８年１０月９日出願の米国特許出願第０９／１６９２５６号、１９９８年１０月９日出願の米国特許出願第０９／１６９０７２号、１９９８年１１月６日出願の米国特許出願第０９／１８７５３９号、１９９８年１２月４日出願の米国特許出願第０９／２０５５５８号、１９９８年１２月１８日出願の米国特許出願第０９／２１５０８１号、「Method and Apparatus to Dynamically Reconfigure the Instruction Pipeline of an Indirect Very Long Instruction Word Scalable Processor」という名称の１９９９年１月１２日出願の米国特許出願、「Methods and Apparatus to Dynamically Expand the Instruction Pipeline of a Very Long Instruction Word Processor」という名称の１９９８年１月１２日出願の仮出願第６０／０７１２４８号、「Method and Apparatus to Support Conditional Execution in a VLIW-Based Array Processor with Subword Execution」という名称の１９９８年１月２８日出願の仮出願第６０／０７２９１５号、「Register File Indexing Methods and Apparatus for Providing Indirect Control of Register in a VLIW Processor」という名称の１９９８年３月１２日出願の仮出願第６０／０７７７６６号、「Methods and Apparatus for Instruction Addressing in Indirect VLIW Processors」という名称の１９９８年７月９日出願の仮出願第６０／０９２１３０号、「Efficient Complex Multiplication and Fast Fourier Transform (FFT) Implementation on the ManArray」という名称の１９９８年１０月９日出願の仮出願第６０／１０３７１２号、「Methods and Apparatus for Improved Motion Estimation for Video Encoding」という名称の１９９８年１１月３日出願の仮出願第６０／１０６８６７号、「Method and Apparatus for Providing Direct Memory Access (DMA) Engine」という名称の１９９８年１２月２３日出願の仮出願第６０／１１３６３７号、及び「Methods and Apparatus Providing Transfer Control」という名称の１９９８年１２月２３日出願の仮出願第６０／１１３５５５号にそれぞれ記載されており、それら全体を参照により本明細書に組み込む。
【００１９】
本発明の現在のところ好ましい実施形態では、図１に示すＭａｎＡｒｒａｙ ２×２  ｉＶＬＩＷ単一命令多重データ・ストリーム（ＳＩＭＤ）プロセッサ１００は、「Method and Apparatus for Dynamic Merging an Array Controller with an Array Processing Element」という名称の米国出願第０９／１６９０７２号でさらに詳細が記載されている、処理要素０（ＰＥ０）ＳＰ／ＰＥ０ １０１と組み合わされたコントローラ・シーケンス・プロセッサ（ＳＰ）を含む。３つの追加されたＰＥ１５１，１５３，１５５は、本発明による条件付き実行装置及び方法を実演するのにも使用される。ＰＥ０（ＰＥ００）１０１、ＰＥ１（ＰＥ０１）１５１、ＰＥ２（ＰＥ１０）１５３、及びＰＥ３（ＰＥ１１）１５５の括弧に示すように、これらＰＥは、それらの行列位置に応じて符号をつけることもできることに留意されたい。ＳＰ／ＰＥ０ １０１は、３２ビット命令メモリ１０５からの短命令語（ＳＩＷ）のフェッチングを可能とするフェッチコントローラ１０３を含む。このフェッチコントローラ１０３は、プログラムカウンタ（ＰＣ）、分岐機能、デジタル信号処理ループ・オペレーション、割り込みのサポートなどの、プログラム可能プロセッサで必要な典型的な機能を提供し、アプリケーションで必要とされる場合に命令キャッシュを含むことができる命令メモリ管理制御を提供する。加えて、ＳＩＷ Ｉフェッチ・コントローラ１０３は、３２ビット命令バス１０２によって、３２ビットＳＩＷをシステム中の他のＰＥにディスパッチする。
【００２０】
この例示的システムでは、共通要素は、説明を単純化するために一貫して使用される。しかし実際の実装はこの制限に限定されない。例えば、組み合わされたＳＰ／ＰＥ０ １０１中の実行ユニット１３１は、制御機能、例えば固定小数点実行ユニットのために最適化された１組の実行ユニットに分離することができ、ＰＥ０ならびに他のＰＥ１５１，１５３，及び１５５は、浮動小数点アプリケーション用に最適化することができる。この説明では、実行ユニット１３１はＳＰ／ＰＥ０及び他のＰＥで同じタイプであると仮定する。同様に、ＳＰ／ＰＥ０及び他のＰＥは、超長命令語メモリ（ＶＩＭ）メモリ１０９と、ＳＰ／ＰＥ０のＩフェッチユニット１０３からディスパッチされる時に命令を受け取り、メモリ１０９中の文字ＳＬＡＭＤで識別され、ＶＩＭに格納される、ｉＶＬＩＷにアクセスするために必要なＶＩＭアドレス及び制御信号１０８を生成する命令デコード及びＶＩＭコントローラ機能ユニット１０７とを含む５個の命令スロットｉＶＬＩＷアーキテクチャを使用する。ｉＶＬＩＷのローディングは、「Method and Apparatus for Efficient Synchronous MIMD Operations with iVLIW PE-to-PE Communication」という名称の米国特許出願第０９／１８７５３９号にさらに詳細に記載されている。同様にＳＰ／ＰＥ０及び他のＰＥには、「Method and Apparatus for Dynamic Instruction Controlled Reconfiguration Register File with Extended Precision」という名称の米国出願第０９／１６９２５５号にさらに詳細に記載されている共通のＰＥ構成可能レジスタファイル１２７が含まれる。
【００２１】
ＳＰ／ＰＥ０の組み合わされた性質のために、データメモリインターフェースコントローラ１２５は、メモリ１２１中にＳＰデータを有するＳＰコントローラと、メモリ１２３中にＰＥ０データを有するＰＥ０の両方のデータ処理の必要を扱わなければならない。ＳＰ／ＰＥ０コントローラ１２５も、３２ビットのブロードキャストデータバス１２６を介して送られるデータのソースである。他のＰＥ１５１，１５３，及び１５５は、共通物理データメモリユニット１２３'，１２３''，及び１２３'''を含むが、それらに格納されるデータは、各ＰＥで行われるローカル処理で必要とされるものとは一般に異なる。これらのＰＥデータメモリへのインターフェースも、ＰＥ１，２，及び３で共通の設計であり、ＰＥローカルメモリ及びデータバス・インターフェースロジック１５７，１５７'，１５７''によって示される。ＰＥをデータ転送通信のために相互接続することは、「Manifold Array Processor」という名称の米国特許出願第０８／８８５３１０号と、「Methods and Apparatus for Manifold Array Processing」という名称の米国出願第０９／９４９１２２号と、「Methods and Apparatus for ManArray PE-to-PE Switch Control」という名称の米国出願第０９／１６９２５６号とにより完全に記載されているクラスタスイッチ１７１である。ホストプロセッサ、他の周辺装置、及び／又は外部メモリへのインターフェースは、多くの方式で行うことができる。完全を期するために示す主機構は、ＭａｎＡｒｒａｙコアの外部の装置及びインターフェースユニットに接続するスケーラブルＭａｎＡｒｒａｙデータバス１８３を提供するＤＭＡ制御ユニット１８１中に含まれる。ＤＭＡ制御ユニット１８１は、これらの外部装置がバス１８５を介してＭａｎＡｒｒａｙコアメモリとインターフェースを取るのに必要なデータフロー及びバスアービトレーション機構を提供する。
【００２２】
前述の特許すべては、本発明の譲受人に譲渡され、それら全体を参照により本明細書に組み込む。
【００２３】
ＭａｎＡｒｒａｙプロセッサ条件付き実行方法及び装置の特定の詳細に話を転じると、この手法は、前述の並列アレイｉＶＬＩＷ条件付き実行問題を、単純なプログラミングモデルと最小限のハードウェア要件で有利に解決する。
【００２４】
［算術条件フラグ］
ＭａｎＡｒｒａｙアーキテクチャは、例えば比較命令の結果など、命令実行の指定した結果を格納する１組の算術条件フラグ（ＡＣＦ）を定義する。これらのＡＣＦは、一般化条件付き実行に対して使用される。分岐待ち時間を最小にするために、ほぼ全ての命令は、ＡＣＦに基づいて条件付きで実行することができる。ＰＥのアレイ中の各ＰＥ中で条件付きで実行すべき命令に対しては、テスト可能条件は、各ＰＥ中でローカルに生成しなければならない。このローカルテスト可能条件は、ｉＶＬＩＷがパック化データタイプに関して実行するために各ＰＥ中で実行することができる多数の条件から導出される。命令ストリームのサイクルごとの条件付き実行に対しては、命令コーディングは、命令を実行するかどうかを決定するために、どの条件を使用するかを指定できなければならない。多くのタイプの条件があるので、各命令フォーマット中で指定を適切に行うために４つ以上のビットを確保しなければならないことになる。条件付き分岐は一般に単一条件テストを指定し、マルチメディアデータ依存コードは、主に単一条件テスティングを利用することが予想されるので、本明細書では、単一レベルの条件付き実行は、より複雑なネストされた条件付き実行のシナリオに亙って最良の性能利得を提供することになると仮定する。しかし、本明細書で論じる本発明の概念は、単一レベルの条件付き実行の状況のもとで作成されるものの、条件フラグの多数のセットを有する、より複雑にネストされた条件は、この教示によって除外されない。これを念頭におくと、ＭａｎＡｒｒａｙ条件付き実行についてのプログラミングモデルでは、パック化データｉＶＬＩＷオペレーションの後に得られる条件状態情報の量を軽減するために、どのようにＡＣＦを設定すべきかについての指定が必要となる。
【００２５】
２つのタイプのフラグを指定する。桁上げ（Ｃ）、オーバーフロー（Ｖ）、符号（Ｎ）、及びゼロ（Ｚ）は、算術スカラフラグ（ＡＳＦ）と呼ばれ、Ｆ７〜Ｆ０フラグは、算術条件フラグ（ＡＣＦ）と呼ばれる。プログラマ可視ＡＳＦは、常に各命令実行の後に、命令によって指定される通り、パック化データタイプ、即ち、バイト０（ｂ０）、半ワード０（Ｈ０）、ワード０（Ｗ０）、またはダブルワード（Ｄ）に関して実行される最小有効オペレーションに基づいて設定され、従来のオペレーションの副次作用を表す。分岐オペレーション中の条件を指定することにより、これらのスカラフラグの条件に基づいて、分岐が実行される。表１は、命令実行の結果として、その命令によって定義されるように生成することができるスカラ条件の例を示す。
【００２６】
【表１】
0005474014.tif 000002
【００２７】
しかし、一般化条件付き実行は、ＡＣＦだけに基づく。ＡＣＦは、比較などの命令の選択されたセットによってのみ変更される。しかし、アーキテクチャ的には、この実行は、命令の大部分に拡張することができることに留意されたい。これらのある命令によるＡＣＦの生成は、実行の副次作用ではなく、プログラマによって指定される。ＡＣＦは、条件戻り位相の間に、実行の副次作用から、パイプラインの命令中で指定される通りに導出される−−ＣＮＶＺ−−。加えて、ＡＣＦは、次の命令によって待機の犠牲なしで使用可能である。自明の事として、ＶＬＩＷアーキテクチャ中の実行ユニット数と無関係に、図１のＳＰ１０１と、図１の各ＰＥ１０１，１５１，１５３及び１５５ごとに１組のＡＣＦがある。このようにして、条件は、例えばＡＬＵ中の比較命令からの、１つの実行ユニット中で生成することができ、他の実行ユニットは、この条件に基づいて条件付きで実行することができる。
【００２８】
［ＡＣＦへの条件転送］
命令セットの特性は、ある命令を使用する際に、プログラマがＡＣＦ条件フラグをどのように設定するかを指定する必要があることである。図２Ａに示すような命令２０などのＡＬＵ比較命令については、プログラマは、どの図２Ｂの条件テストＣＣ２０２を、ＡＣＦ Ｆ７〜Ｆ０をセットする際に使用するかを指定しなければならない。例えば、「以上（ＧＥ）」２０５或いは「以下（ＬＥ）」２０７などの有効条件結果を、適切なＡＣＦを設定するために指定することができる。図２Ｂで示すように、記号は論理ＯＲオペレーションを表す。＆＆記号はＡＮＤオペレーションを表し、！記号は等しくないことを表す。
【００２９】
このアーキテクチャは、実行真（execute True）、実行偽（executeｅ False）、無条件実行、及び他の特定のオペレーションを命令ごとに、階層式に指定する。真及び負フラグ・セッティングは、条件が真の場合の実行、及び条件が偽の場合の実行オペレーションに対して使用される。分岐もこれらのフラグの真または偽状態に基づいて実行することができる。あるＤＳＵ命令、シフト／回転、ＰＥＸＣＨＧ（通信命令）、及び選択された他の命令に対しては、ＭａｎＡｒｒａｙアーキテクチャにより、４つのスカラ条件Ｃ、Ｖ、Ｎ、またはＺの副次効果のうちの１つを使用してＡＣＦをどのように更新するかを命令ごとに指定することができる。ＶＬＩＷオペレーションを実行するとき、プログラマは、算術ユニット（この機能は拡張することができることを理解されたいが、現在のところＡＬＵまたはＤＳＵのみである）のうちのどれがフラグの単一セットのセッティングを制御するかを選択しなければならない。各サイクルでは、条件フラグのセッティングは命令によって明示的に指定される。
【００３０】
ＭａｎＡｒｒａｙ命令セットの別の特徴は、条件付きで実行する命令が条件フラグ自体に影響を与えないことである。この特徴により、比較の後の第１命令がフラグを変更し、望ましくない結果を生成するという心配なしに、プログラマは、（ａ＞ｂ）？ｚ＝ｘ＋ｙ：ｒ＝ｑ＋ｓの形のＣスタイルの条件付き式演算子を実行できるようになる。命令は、ＡＣＦに基づく条件付き実行、またはフラグをセットする方法のいずれかを指定することができるが、両方を指定することはできない。
【００３１】
［階層条件付き実行命令フォーマット］
条件付き実行の仕様についての階層フォーマットは、命令ビットのより良い使用法を可能にするＭａｎＡｒｒａｙ命令セットアーキテクチャ中で使用される。３ビット、２ビット、または１ビットのサブセットオペコード拡張エンコーディングが、条件付き実行をサポートする各命令に対して定義される。ＡＣＦが影響を受けるかどうかに関わりなく、ＡＳＦスカラフラグは、常にｂ０、Ｈ０、Ｗ０、及びＤオペレーションに関して影響を受けることにやはり留意されたい。
【００３２】
［パック化オペレーションについての算術条件付きフラグ（ＡＣＦ）］
パック化データオペレーションは、命令によって指定された多数のデータ要素のそれぞれに関して同じオペレーションを実行するように定義される。これらの個々のデータ要素オペレーションのそれぞれは、パック化データ命令によって定義されるように適切なＡＳＦ及び／またはＡＣＦをセットすることができる副次作用を生成することができる。ＭａｎＡｒｒａｙアーキテクチャは、最大８つの同時パック化データ命令をサポートするので、８つの定義されたＡＣＦ Ｆ０〜Ｆ７がある。以下の表２に示すように、フラグとオペレーション並列性との間には対応がある。フラグは、比較命令中のＣＣｃｏｄｅフィールドと、以下でより詳細に説明する、選択された命令中のＣＥ３ａフィールドとによって指定されるように影響を受ける。図３Ａ及び図３Ｂは、パック化データ要素オペレーションと、その対応するＡＣＦとの関係を示す。例えば、６４ビットパック化データオペレーション３００を示す図３Ａのデュアルワード・オペレーションでは、Ｗ０上のオペレーション３０２はＦ０に影響を与え、Ｗ１上のオペレーション３０４はＦ１に影響を与える。別の例では、３２ビットのパック化データオペレーション３５０を表す図３Ｂのカッド（４）バイト・オペレーションでは、ｂ０上のオペレーション３５２はＦ０に影響を与え、ｂ１上のオペレーション３５４はＦ１に影響を与え、ｂ２上のオペレーション３５６はＦ２に影響を与え、ｂ３上のオペレーション３５８はＦ３に影響を与える。
【００３３】
【表２】
0005474014.tif 000003
【００３４】
［ＣＥ１：１ビット条件付き実行オペコード拡張エンコーディング］
以下の表３に示すようなＣＥ１ １ビット拡張フィールドを有するオペコードは、ＡＣＦに影響を与えずに、真のときに条件付きで実行するか、無条件で実行することができる。ＡＳＦは、命令によって定義されるように設定される。例えば、図４Ａの命令４００などのロード及びストア命令は、ＡＣＦフラグに決して影響を与えず、真の条件時に条件付きで実行することができる。
【００３５】
【表３】
0005474014.tif 000004
【００３６】
［ＣＥ２：２ビット条件付き実行オペコード拡張エンコーディング］
以下の表４に示すようなＣＥ２の２ビット拡張フィールドを有するオペコードは、真または偽に対して条件付きで実行したり、無条件で実行し、かつＡＣＦに影響を与えない、または命令特有の条件付き実行機能を提供することができる。ＡＳＦは、命令によって定義されるように設定される。ビット０及び１でＣＥ２の２ビット拡張フィールドを有する例示的コピー命令エンコーディング４１０を図４Ｂに示す。
【００３７】
【表４】
0005474014.tif 000005
【００３８】
［ＣＥ３ａ：３ビット条件付き実行オペコード拡張エンコーディング］
以下の表５に示すような条件付き実行ＣＥ３ａの３ビット実行フィールドを用いたＤＳＵ固有命令シフト／回転、受信タイプ、浮動小数点／整数変換命令、及び他を選択（select others）は、命令をどのように実行すべきか、ＡＣＦがどのように影響を受けるかを指定する。Ｃ，Ｎ，Ｚ，及びＶフラグは、実行中の命令からの副次効果を表す。□が＋，−，×，論理ＯＲなどの算術関数であるとして、Ａ←Ｘ□ＹまたはＸ←Ｘ□Ｙ□Ｚの形の算術命令は、フラグに影響を与えることなく、真または偽条件に対して条件付きで実行することができる。それらは、フラグに影響を与えることなく無条件で実行、または無条件で実行し、条件Ｃ，Ｖ，Ｎ又はＺフラグのうちの１つに基づくフラグに影響を与えることができる。
【００３９】
【表５】
0005474014.tif 000006
【００４０】
［ＣＥ３ｂ：３ビット条件付き実行オペコード拡張エンコーディング］
ＣＥ３ｂの３ビットアーキテクチャでアドレス指定される３つの状況がある。第１の状況は、オペレーションを無条件で実行することである。第２は、全てのパック化データ要素に対するオペレーションを条件付きで実行することである。第３は、どのデータ要素を条件付きで実行すべきかを選択することである。この第１ケースでは、オペレーションは、いつでも全てのデータ要素に対して実行される。第２ケースでは、オペレーションは、全てのデータ要素に対して実行されるか、全く実行されないかのいずれかである。第３ケースでは、オペレーションはいつでも実行されるが、指定した真又は偽コーディングについての適切な値の対応するＡＣＦを有するデータ要素に対してのみ実行される。この第３のケースでは、パック化データ命令は、ＳＰ中の宛先レジスタの更新の点で部分的に実行するか、又は対応するＡＣＦが指定された条件の場合だけ、ＰＥ中で並列に実行すると考えられる。全ての３つの手法は、ＣＥ３ｂエンコーディングを使用することによって利用可能である。ＣＥ３ｂの３ビット実行フィールドを備えるビット３，４，及び５を有する例示的な論理命令エンコーディング４２０を図４Ｃに示す。
【００４１】
第３ケースのオペレーションを定義する構文は、「Ｔｍ」及び「Ｆｍ」である。これらは、「真多重（True Multiple）」及び「偽多重（False Multiple）」を表す。この多重ケースは、オペレーション中で考慮すべきフラグの数を決定するために現行命令中のデータ要素カウントを使用する。例えば、「Ｔｍ．ａｄｄ．ｓａ．４ｈ」は、Ｆ０，Ｆ１，Ｆ２及びＦ３の現在の設定状態に基づいて、各４半ワードに対する加算命令を実行することになる。この実行は、これらの４つのフラグがどのように設定されたかに関わらず実行される。この手法により、１つのデータ・タイプのテスティングが、第２データ・タイプに対するオペレーションと共に可能となる。例えば、カッド（４つの）バイト・セッティングフラグＦ３〜Ｆ０に対して操作することができ、次いで条件付きカッド（４）半ワードオペレーションをフラグＦ３〜Ｆ０に基づいて指定することができる。ある命令、主にＭＡＵ及びＡＬＵ中の命令により、条件付き実行ＣＥ３ｂの３ビット拡張フィールドを指定することが可能となる。命令をどのように実行すべきか、ＡＣＦがどのように影響を受けるかを以下の表６に示す。
【００４２】
【表６】
0005474014.tif 000007
【００４３】
「１００」及び「１０１」のエンコーディングを含むことについての原理は、「００１」及び「０１０」のエンコーディングと類似している。言い換えれば、この特徴により、プログラマは、（ａ＞ｂ）？ｚ＝ｘ＋ｙ：ｒ＝ｑ＋ｓの形のＣスタイルの条件付き式演算子を実行できるようになる。但し、ａ，ｂ，ｘ，ｙ，ｚ，ｑ，ｒ及びｓは、全てパック化データ・ベクトル要素である。
【００４４】
［条件付き分岐タイプ命令］
本明細書で説明するＭａｎＡｒｒａｙアーキテクチャは、スカラ条件フラグＣ，Ｖ，Ｎ，またはＺ，ならびにＡＣＦに基づくＳＰ中の無条件及び条件付き分岐タイプ命令をサポートする。ＡＣＦを設定するための条件コードは、比較命令、ならびに図２Ｂに示す他の具体的に定義された命令中で指定されるので、制御コードがスカラ条件付き分岐命令を利用することができるものの、条件付き分岐は、真に対する分岐または偽に対する分岐だけしか指定する必要がない。パック化データに対する命令によって生成された多数の条件を収容するために、分岐命令は、全て（ＡＮＤ縮小）又は任意（ＯＲ縮小）の縮小オペレーションも指定しなければならない。１つのオペレーションだけがあるときに、２つの縮小は等しいものの、非パック化単一データ（ＭＯＮＯ）オペレーションに対する命令は、直交性に対するパック化データオペレーションのサブセットとして扱われる。
【００４５】
表７は、１つの適切な縮小方法を表す。ここでやはり、多数の概念を使用する。構文フォーマットは、以下の表７に示す通りである。ただし、考慮すべきフラグの数は、構文中の２，４，及び８桁によって指定される。
【００４６】
【表７】
0005474014.tif 000008
【００４７】
［比較命令］
比較命令は、いつでも実行され、いつでもフラグに影響を与える。汎用フラグ（ＡＣＦ）は、比較命令の一部として指定される条件コードに基づいて影響を受ける。条件の組合せを使用して、フラグの前の状態は、現行比較命令によって指定される条件コードテストの結果と共に組み合わせることができる。この手法により、複合条件を多重分岐に復元することなく作成することが可能となる。図２Ｂでは、ＣＣは、「より大（ＧＴ）」２０６、「より小（ＬＴ）」２０８、「等しい（ＥＱ）」２０４、または「以下（ＬＥＱ）」２０７などの条件コード２０２を表す。図２Ａの比較（ＣＭＰｃｃ）命令２００は、テストすべき所望の条件ＣＣ（図２Ｂ）、比較すべき２つのソースレジスタ、パック化形態をカバーするデータタイプ、及びＣＣｏｍｂと符号を付けたブール組合せ指定フィールドを指定する。
【００４８】
以下の表８では、Ｆt,nは、サイクルｔで生成される「ｎ」真／偽条件フラグ（Ｆ）を指定する。具体的には、文字「ｎ」は、比較命令がそれぞれモノ、デュアル、カッド、またはオクタルであるかに依存して、ＡＣＦ ｎ＝１：Ｆ０、ｎ＝２：Ｆ１−Ｆ０、ｎ＝４：Ｆ３−Ｆ０、またはｎ＝８：Ｆ７−Ｆ０のセットを表す。Ｆt-1,nは、添字ｔ−１によって示されるように、前のサイクルに対するＡＣＦの状態を指定する。Ｆnは、比較オペレーションを完了するのに使用されるｎマシンＡＣＦのセットである、真／偽値の最後のセットを表す。この条件フラグエンコーディングを以下の表８に示す。
【００４９】
【表８】
0005474014.tif 000009
【００５０】
条件を組合せることにより、プログラマは、多数の条件のブール組合せに対して、ＳＰ中で分岐する、又はＳＰ及びＰＥ中で条件付きで実行することが可能となる。この手法は、多数の分岐と、条件の組合せなしに同じ効果を達成するために必要なそれらの関連する犠牲との代わりに使用することができる。条件付き実行は、単一条件ではなく、多数の条件の組合せに基づいても実行することができる。最終的に、条件の組合せは、算術命令条件コードの限定化セットからは直接利用可能ではない複合条件を生成するために、先行する算術命令と共に使用することができる。任意の複雑さの組み合わされた条件は、条件フラグを多くのプロセッサレジスタのうちのどれか１つにコピーし、次いでそれらに対する論理演算を算術ユニット中で実行することによって得ることができることに留意されたい。所望の条件が計算され、レジスタ中に格納された後、所望の条件は、条件付き実行のために、それに対して使用することができる条件フラグに戻すことができる。この方法論を使用して、いくつかのプログラミングのオーバヘッドによって、複合条件を得る非常に一般的な方法が得られる。この方法論は、計算レジスタファイル中で生成し、常駐することができる条件結果の多数のセットを必要とする、Ｃスタイルの条件付きで実行されるステートメントのネスティングをサポートするためにも使用することができる。次いでプロセッサレジスタファイル中に常駐するこれらの条件結果は、条件付き実行の前にＡＣＦにコピーされることになる。
【００５１】
［ＶＬＩＷ条件付き実行］
ＶＬＩＷメモリ（ＶＩＭ）中に格納される各命令は、そのＣＥ１、ＣＥ２又はＣＥ３ａ／ｂ仕様を含む。ＶＬＩＷが実行ＶＬＩＷ（ＸＶ）命令に応答して実行されるために読み出されるとき、個々のユニット内に多数のフラグを生成することができる。ＡＣＦの１つのセットがあり、潜在的にＶＬＩＷ中の各命令がフラグに影響を与える可能性があるので、どの算術ユニットがある所与のサイクルのためのフラグに対して影響を与えることになるかを選ぶための選択機構が必要である。本発明によるＭａｎＡｒｒａｙの１つの実施形態では、これを達成するための２つの機構がある。これらの機構は、それぞれＳＩＭＤ及び同期多重命令多重データストリーム（ＳＭＩＭＤ）コードの必要を満たす。
【００５２】
ＳＭＩＭＤでは、異なるＶＬＩＷが、同じＶＬＩＭアドレスに存在することができ、次いでＶＬＩＷ並列性についての様々な必要を伴う様々なアプリケーションで性能を最適化する目的で並列に実行することができる。ＳＭＩＭＤコードに対して、プログラマは、ＶＬＩＷがロードＶＬＩＷ（ＬＶ）命令の一部としてロードされるときに、どの算術ユニットがフラグに影響を与えるかを指定する。この手法により、異なるＰＥが、異なるユニットにフラグに影響を与えさせることが可能となる。ＳＩＭＤコードに対して、プログラマは、どのユニットが実行時間にＸＶ命令の一部としてフラグに影響を与えるかを指定する。ＸＶ命令指定は、ＬＶ命令で指定されたユニットを上書きすることができる。これにより、プログラマは、多数の非オーバーラッピングＶＬＩＷを、ＶＬＩＷの実行毎に、条件フラグに影響を与える種々の算術ユニットを用いて、同じＶＩＭアドレスにパックすることが可能となる。
【００５３】
［ＰＥ間で条件フラグを伝送する］
ＰＥ ＤＳＵ受信命令（ＰＥＸＣＨＧ）は、ＰＥ間の通信オペレーションを指定する。このＰＥＸＣＨＧ命令により、ＡＣＦ及びＡＳＦを含むプログラマ可視ステータスレジスタにアクセス可能にすることによって、１つのＰＥから別のＰＥに条件状態情報を効果的に転送することが可能となる。ＳＰ受信命令（ＳＰＲＥＣＶ）は、条件をＰＥとＳＰとの間で伝送するために使用することができる。条件状態は、異なるＰＥの計算レジスタファイル中に受信されることになり、次いで、それ自体のプログラマ可視フラグレジスタにコピーすることができ、条件付き実行のために使用される。
【００５４】
［拡張条件付き実行定義］
現在、図４ＣのＣＥ３フィールド４２２、又は図４ＢのＣＥ２フィールド４１２を有する各命令は、それぞれ表５及び６及び表４に示すように予約される少なくとも１つのエンコーディングを有する。以下の機構は、命令が算術条件フラグ（Ｆ７〜Ｆ０）を「ＳｅｔＣＣ」命令によって特定されるプログラム可能「複合条件」で更新することが可能となるように、この予約エンコーディングを使用することになる。例として、予約フィールドを使用するためのＣＥ２のエンコーディングを以下の表９に示す。ＣＥ３ａ及びＣＥ３ｂフィールドはどちらも、それらの等しい予約エンコーディングに対する同じエンコーディング定義を使用することになる。
【００５５】
【表９】
0005474014.tif 000010
【００５６】
ＳｅｔＣＣ命令は、特定のユニットに対する命令がこのタイプの条件生成を指定するとき、その実行ユニットの算術条件フラグ（Ｆ７〜Ｆ０）中で生成され、保存すべき複合条件を指定する。現在の好ましいＣＥ３ａエンコーディングにより、４つの可能な条件Ｃ（桁上げ）、Ｎ（符号）、Ｖ（オーバーフロー）、またはＺ（ゼロ）のうちの１つを指定することが可能となる。ＳｅｔＣＣ命令により、「より大」、「より小」、「以下」、「以上」などの標準の１６個の条件を含む、最大３２個の複合条件を指定することが可能となる。例えば、オーバーフローがパック化データ実行内で何らかのデータオペレーションに対して生じたかどうかを検出するために、条件を指定することができる。このようにして、オクタルパック化データ実行内でオーバーフローを有するデータオペレーション６は、設定すべきフラグＡＣＦＦ６の設定を生じさせることができる。条件に影響を与えることができるＣＥ３又はＣＥ２エンコーディングを有する命令によって、これらのうちのどれかが選択されても良い。異なる複合条件の選択がデータ依存となることができるように、一部のデータに基づいてＳｅｔＣＣ命令を条件付きで実行可能にすることも可能である。例示的ＳｅｔＣＣ命令を以下の表１０に示す。
【００５７】
【表１０】
0005474014.tif 000011
【００５８】
そのオペコード・エンコーディングによって識別されるＳｅｔＣＣ命令は、以下の２つのパラメータを指定する。
【００５９】
・実行ユニット：このフィールドは、指定した複合条件が当てはまる実行ユニットを指定する。各実行ユニットは、異なる複合条件を有することができるか、又はＡＬＬエンコーディングが選ばれる場合、全てのユニットが同じ複合条件を使用する。
【００６０】
・選択された条件：このフィールドは、３２個の条件のうちの１つを指定する。命令フォーマットによりそれが可能にになると仮定すると、このフィールドはテストすべき他の条件が生じる場合に拡張することができる。
【００６１】
［条件付き実行装置］
図５Ａは、本発明による条件付き処理の実装に適する条件付き処理ハードウェア５００の態様を示す。ハードウェア５００は、例えば算術論理ユニット（ＡＬＵ）、または図１のＭａｎＡｒｒａｙアーキテクチャの他の実行ユニットなどの算術ユニット５１０を含む。ＡＬＵ５１０は、ＭａｎＡｒｒａｙレジスタファイルからオペランド５０７及び５０９を受け取る。命令制御線５０１は、プロセッサパイプライン中の登録した命令から導出される。この命令制御線は、命令中で指定されたように条件付きオペレーションを制御するために、条件付き実行制御線５０３を含む。図４Ａは、ビット２２がＣＥ１フィールド４０２を有する例示的ロード直接命令４００を示す。図４Ｂは、ビット１及び０がＣＥ２フィールド４１２を表す例示的コピー命令４１０を示す。図４Ｃは、ビット５〜３がＣＥ３ｂフィールド４２２を表す例示的論理命令４２０を示す。例えば加算器５０２などの算術ユニット５１０内の動作ユニットは、結果５１５及びラッチされた算術スカラ条件状態５１９を生成する。ラッチ５１２及び５１４は、実行サイクルの終わりでのラッチ入力値を保持し、したがって実行サイクルの終了した命令に対する算術スカラ条件及び命令制御信号を表す。実行ユニットに対するパイプラインは、実装に依存して変動する可能性があり、その結果、所望の条件付きオペレーションを達成するために、パイプライン効果を調節しなければならないことに留意されたい。結果５１５は、プロセッサまたは処理要素のレジスタファイルに送られる。算術スカラ条件信号５１９は、ＡＣＦ生成ユニット５０８中で、信号選択及び条件組合せユニット５０６によって、実行された命令に対する制御５０５によって指示される通りにさらに処理される。ＡＣＦ生成ユニットの出力５２１は、プログラマ可視レジスタ５１８中に格納される前のＡＣＦ生成信号Ｆ７〜Ｆ０を表す。選択された命令に対するＡＣＦ生成ユニットは、前の状態５２５と共に現在の選択された状態のブール組合せも提供する。前で示したように、多くの命令は、アーキテクチャによって指定されるように、フラグに影響を与えないことに留意されたい。これらの影響なし（no-affect）の場合では、フラグは、依然として前にセットされたのと同様である。マルチプレクサ５２０は、実行中の命令中で指定されるテストの結果に依存してレジスタファイル中に結果出力５１５を書き込むかどうかを制御するために、算術ユニット中の条件付きテストのための出力５２７として使用されるＡＣＦ生成信号５２１またはＡＣＦラッチ５１８出力５２５のいずれかを選択する。マルチプレクサ５２０の出力５２７は、ＳＰ中の分岐ロジックのみに送られ、プログラマ可視ステータスビットを表すラッチ５１８中に次のサイクルでラッチされる。同様に、マルチプレクサ５２２は、ラッチされたＣＮＶＺラッチ出力５１７の部分、又はＣＮＶＺラッチ５１６の出力５２３のいずれかを、ＳＰ中の分岐ロジックのみに送り、プログラマ可視ステータスビットを表すラッチ５１６中に次のサイクルでラッチするために選択する。以下の表１１に示すように、ラッチ中のこれらのビット５１６及び５１８は、ＣＮＶＺ５１６の値がプログラマの可視ステータス及び制御レジスタ０（ＳＣＲ０）のビット１９〜１６中にそれぞれ位置付けられる共通プログラマ可視ステータスレジスタ中で組み合わせることができ、ＡＣＦ Ｆ７〜Ｆ０ ５１８の値は、ビット７〜０中にそれぞれ位置付けられる。
【００６２】
【表１１】
0005474014.tif 000012
【００６３】
３２ビットステータス及び制御レジスタ０（ＳＣＲ０）は、主ステータス及び制御情報を含む。尚、ブランクフィールドは予約済みである。
【００６４】
ＭａｎＡｒｒａｙプロセッサでは、図５Ａに表す概念は、図５Ｂに示すＶＬＩＷアーキテクチャに拡張される。図５Ｂでは、データ選択ユニット（ＤＳＵ）５６０、ＡＬＵ５７０、及び乗算加算ユニット（ＭＡＵ）５８０の３つの実行ユニットを含む条件付き実行ＶＬＩＷユニット５５０を示す。このハードウェアは、図１に示すプロセッサ１００などのＭａｎＡｒｒａｙプロセッサのＳＰ及び各ＰＥ中に取り込まれる。これらのユニットの内部には、基本動作要素及びそれらのＡＳＦ生成とラッチユニットが、ＤＳＵ５６０中の機能ユニットｆｎ５６２、ＡＬＵ加算器５７２、及びＭＡＵ乗算器５８２中にある。概念の汎用性を実演するために３つのタイプのフラグの機能性を示し、それらは典型的なアプリケーションの必要を代表する。ＤＳＵ５６０では、ＡＳＦ、（Ｃ Ｎ Ｖ Ｚ）が、ＤＳＵ命令の必要に応じて生成される。ＡＣＦ５６１は、プログラマ可視ラッチ５９８からの格納されたＡＣＦ状態のフィードバックなしに、ＡＦＣ生成ユニット５６８で、ＡＳＦ５６３に基づいて生成される。ＡＬＵ５７０は図５Ａで示した手法の機能性を維持する。ＡＬＵ５７０では、ＡＣＦ５７１は、プログラマ可視ラッチ５９８からフィードバックされたＡＳＦ５７３及び格納されたＡＣＦ状態５９９に基づいて、ＡＣＦ生成ユニット５７８で生成される。ＭＡＵ５８０は、ＭＡＵ命令の結果として生成されるＡＣＦを用いない、比較的単純な機構を使用する。ＭＡＵは、この例示的実施で示すように、ＡＣＦのセッティングから一般に排除されない。これらのフラグに影響を与えるＭＡＵ命令の最下位オペレーションについてアーキテクチャ的に定義されたＡＳＦ，（Ｃ Ｎ Ｖ Ｚ）５８７のみが、マルチプレクサ５９２に送られ、そこから、選択された場合に、そのＡＳＦ５８７がマルチプレクサ出力５９７に進み、プログラマ可視状態ラッチ５９６中にラッチされる。マルチプレクサ５９２は、ＣＮＶＺｍｕｘ制御信号５９１によって制御されるように、ＭＡＵ５８７，ＡＬＵ５７７，ＤＳＵ５６７、またはＣＮＶＺ状態ラッチ５８９から生成されたＡＳＦを選択する。ＶＬＩＷ実行に対しては、ＸＶ命令のＵＡＦと共に、ロードＶＬＩＷ（ＬＶ）命令中のユニット影響フラグ（ＵＡＦ）フィールド、このＭａｎＡｒｒａｙアーキテクチャでは２ビットフィールドは、マルチプレクサ制御信号５９１及びＡＣＦＭｕｘ制御５９３を以下のように決定する。ＬＶ命令のユニット影響フラグ（ＵＡＦ）ビットは、どの算術命令スロット（Ａ＝ＡＬＵ，Ｍ＝ＭＡＵ，Ｄ＝ＤＳＵ）が、実行時に、指定したＶＬＩＷに対する条件フラグをセットすることが可能かを選択するために使用される。ＸＶ命令のユニット影響フラグ（ＵＡＦ）ビットは、それがＬＶ命令を介してロードされたときに、ＶＬＩＷに対して指定されたＵＡＦを上書きする。この上書きは、ＶＬＩＷのこの実行に対してどの算術命令スロット（Ａ＝ＡＬＵ，Ｍ＝ＭＡＵ，Ｄ＝ＤＳＵ）が条件フラグをセットすることが可能であるか、またはどれも可能ではない（Ｎ＝ＮＯＮＥ）かを選択する。この上書きは、これらがＶＩＭ中の指定されたＶＬＩＷアドレスにロードされるので、ＬＶ命令を介して指定されたＵＡＦセッティングに影響を与えない。この命令構文では、命令のためのＵＡＦを指定するためにフラグパラメータを使用する。ブランクパラメータ、即ち、「Ｆ＝」は、ＶＬＩＷがロードされて命令の実行に使用され、後続のマルチプレクサ５９２及び５９４が適切なフラグをプログラマ可視レジスタ５９６及び５９８中にロードするように制御するために使用されるときに、特定されるＵＡＦを選択する。例えば、ＭＡＵがフラグに影響を与えるべきことを示すＵＡＦと共に、マルチプレクサ５９２は、ＣＮＶＺＭｕｘ制御５９１信号に応答して、マルチプレクサ出力５９７に進むパス５８７を選択し、生成されたＣＮＶＺＡＳＦをＣＮＶＺ状態ラッチ５９６にロードする。ＭＡＵは、例示的ＭＡＵ５８０に示すように、どんなＡＣＦも生成しないので、プログラマ可視ＡＣＦ状態ラッチ５９８中にラッチすべきＡＣＦはなく、プログラマ可視ＡＣＦ状態ラッチ５９８は前の状態を保持する。ＭＡＵは、依然としてそのパイプラインシーケンスに従う別の実行ユニット５９５によって生成されたＡＣＦ値に基づいて条件付きで実行することができる。どの命令シーケンスも、ＣＮＶＺ又はＡＣＦ状態ラッチ５９６及び５９８をそれぞれどの実行ユニットでも更新する必要がない場合、ｍｕｘ制御信号５９１及び５９３は、マルチプレクサ５９２及び５９４が、状態ラッチ出力５８９及び５９９を選択し、それらのマルチプレクサ出力５９７及び５９５にそれぞれ進ませるようにする。ＭａｎＡｒｒａｙの実施に対して、ＣＮＶＺ及びＡＣＦ信号のためのバス幅を図５Ｂに示す。図５Ｂでは、ＣＮＶＺパス５８７，５７７及び５６７は、全てＣ，Ｎ，Ｖ及びＺ値に対応する４ビット信号である。ＡＣＦパス５７１及び５６１は、それぞれＦ７〜Ｆ０に対応する８ビット信号である。マルチプレクサ５９２及び５９４の出力はそれぞれ４ビット信号及び８ビット信号であり、そのどちらも、分岐ロジックで使用される。ＡＣＦマルチプレクサ出力信号５９５は、各実行ユニット５６０，５７０及び５８０中の制御条件付き実行に使用される。ＳＰ中では、マルチプレクサ出力信号５９５及び５９７は、条件付き実行のために分岐ロジック中で使用される。
【００６５】
このＭａｎＡｒｒａｙアーキテクチャは、ロードイミーディエイト命令によってロードすることができる、メモリからロードすることができる、または計算レジスタからコピーすることができるプログラマ可視ステータス及び制御レジスタのうちの１つに格納すべきＡＣＦ状態ラッチ５９８及びＣＮＶＺ状態ラッチ５９６を定義する。このレジスタをメモリ中に保存し、実行ユニットで利用可能な計算レジスタのうちの１つにコピーすることもできる。
【００６６】
前述の方法及び装置を、条件付き実行のための条件フラグ情報及び命令エンコーディングを実施するために使用すると、条件付き実行は、１ビットの追加のオペコード空間だけでサポートされ、機能性の程度の変動に伴って最大３ビットでサポートされることがわかる。加えて、命令機能指定と条件付き実行指定との間のより良い合致を得ることができる。例えば、１ビット条件付き実行エンコーディングは、ロード及びストア命令に対して十分であり、機能エンコーディングに対して最大数のビットが可能となる。各追加された条件実行ビットは、前の機能性のスーパーセットを提供する。さらに、この手法では、条件ビットの全体数は減少する。これは、１つのフラグが各サブワードオペレーションに対して定義されるパック化データに対して操作する命令とよくマップし、サブワードごとの命令の部分的実行が可能となる。
【００６７】
別の条件フラグの減少は、ＶＬＩＷ中の全ての実行ユニットが同じ条件フラグを共用する場合に指定される。ＭａｎＡｒｒａｙネットワーク及び通信命令を使用することによって、異なるＰＥ中で実行する命令が互いの条件情報を使用することが可能となる。加えて、条件組合せでは、複合条件の場合に対して多数の分岐を使用することを避けることができ、複合条件は、条件付き実行に対して使用することができる。
【００６８】
本発明を現在のところ好ましい実施形態で説明したが、有利には、本発明の教示は、添付の請求の範囲と一致する様々な処理アレイに適用することができることを理解されたい。
【図１】
0005474014.tif 000013
【図２Ａ】
0005474014.tif 000014
【図２Ｂ】
0005474014.tif 000015
【図３Ａ】
0005474014.tif 000016
【図３Ｂ】
0005474014.tif 000017
【図４Ａ】
0005474014.tif 000018
【図４Ｂ】
0005474014.tif 000019
【図４Ｃ】
0005474014.tif 000020
【図５Ａ】
0005474014.tif 000021
【図５Ｂ】
0005474014.tif 000022