(57)【特許請求の範囲】
【請求項１】
レジスタファイル索引付けを有するデータプロセッサであって、
前記データプロセッサは、複数のプロセッサ要素（ＰＥｓ）、命令メモリ（１０５）及び命令シーケンサ（１０３）を有し、前記複数のプロセッサ要素（ＰＥｓ）のそれぞれはＮ（Ｎは複数）個の実行ユニット（ＡＬＵ，ＤＳＵ，ＭＡＵ，ＬＵ，ＳＵ）、レジスタファイル、超長命令語制御部（１０７）及び超長命令語メモリ（１０９）を備え、
前記命令シーケンサは、前記複数のプロセッサ要素（ＰＥｓ）に接続され、前記命令メモリ（１０５）から読み出した超長命令語実行命令（ＸＶ命令）中で指定された、各プロセッサ要素（ＰＥ）の前記超長命令語メモリ（１０９）のオフセットアドレスを前記複数のプロセッサ要素（ＰＥｓ）に送信することにより、前記ＸＶ命令が前記超長命令語制御部（１０７）に前記超長命令語メモリから超長命令語をフェッチして前記Ｎ個の実行ユニットで実行するように指示し、
前記Ｎ個の実行ユニットはそれぞれ各実行ユニットに関連付けられた読み取りポート及び書込みポートを有し、前記読み取りポート及び書込みポートはレジスタファイル索引（ＲＦＩ）制御レジスタ、ルックアヘッドレジスタ及び制御回路を備え、
前記制御回路は、
（ｉ）最初に受信したレジスタファイル間接指定付きの超長命令実行語命令（ＲＦＩ  ＸＶ命令）で指示された最初の超長命令語の実行においては、該超長命令語のフィールドが直接前記レジスタファイル中の１つのレジスタをアドレスしてアクセスし、並行して、前記レジスタファイル索引（ＲＦＩ）制御レジスタの内容に基づいて該アドレス値を更新して前記ルックアヘッドレジスタにロードするように制御し、
（ｉｉ）２回目に受信したレジスタファイル間接指定付きの超長命令実行語命令（ＲＦＩ  ＸＶ命令）で指示された超長命令語の実行においては、前記ルックアヘッドレジスタの更新されたアドレスが前記レジスタファイル中の１つのレジスタをアドレスしてアクセスし、並行して、前記レジスタファイル索引（ＲＦＩ）制御レジスタの内容に基づいて該アドレス値を更新して前記ルックアヘッドレジスタにロードするように制御することをことを特徴とするデータプロセッサ。
【請求項２】
前記プロセッサ要素が超長命令語プロセッサであることを特徴とする請求項１に記載のデータプロセッサ。
【請求項３】
前記データプロセッサが、実行するための超長命令語を、前記超長命令語実行命令（ＸＶ命令）の前記オフセットアドレスを使用して前記超長命令語メモリから間接的にアクセスする間接超長命令語プロセッサであることを特徴とする請求項１に記載のデータプロセッサ。
【請求項４】
前記プロセッサ要素が、アレイプロセッサアーキテクチャに含まれる、それぞれ同じ構成の複数のプロセッサ要素の１つであることを特徴とする請求項１に記載のデータプロセッサ。
【請求項５】
前記制御回路は、実行するためのデータオペランドを記憶している前記レジスタファイルの更新したアドレスの供給を指示するために、１つ又は複数のレジスタファイル索引制御レジスタを使用することを特徴とする請求項１に記載のデータプロセッサ。
【請求項６】
前記制御回路は、前記ルックアヘッドレジスタが指定され、定数を現在のアドレスに加算或いは減算することにより前記現在のアドレスを更新して、別のレジスタアドレスを選択することを特徴とする請求項１に記載のデータプロセッサ。
【請求項７】
前記制御回路による前記更新により更に、多数のプログラム可能な前記レジスタのセットの特定の１つから開始して選択するレジスタアドレスを前記レジスタのセット内で巡回することを特徴とする請求項６に記載のデータプロセッサ。
【請求項８】
各ポートの前記制御回路を、更新方法及びレジスタのアドレスのセットについて独立して構成することができ、或いは、レジスタファイル索引付けを選択的に使用不可にできる制御機構をさらに含むことを特徴とする請求項１に記載のデータプロセッサ。
【発明の詳細な説明】
【０００１】
（関連出願の相互参照）
本願出願は、１９９８年３月１２日出願の「Register File Indexing Method and Apparatus for Providing Indirect Control of Register in a VLIW Processor」という名称の米国仮特許出願第６０／０７７，７６６号の利点を主張する。
【０００２】
（発明の分野）
本発明は、一般に、超長命令語（ＶＬＩＷ）処理における改良に関し、より詳細には、ＶＬＩＷプロセッサにおけるレジスタ・アドレッシングの間接制御を提供するための有利なレジスタファイル索引付け（ＲＦＩ）技術に関する。
【０００３】
（発明の背景）
１つの重要なプロセッサ・モデルは、ベクトル処理のものである。このモデルは、従来のスーパーコンピュータにおいて長年使用されてきた。このモデルの典型的な特徴は、専用ベクトル命令、専用ベクトル・ハードウェア、及びデータのブロックに効率的に操作を加える能力の使用である。まさにこの、典型的にはベクトル・データ・タイプのみに操作を加える能力により、このモデルには柔軟性がなく、多様な処理要件に効率的に対処できない。加えて、従来のベクトル・プロセッサでは、制御スカラ処理のサポートが典型的には、分離したハードウェアにおいて、或いは分離した制御プロセッサにおいて行われた。もう１つのプロセッサモデルは、従来の超長命令語（ＶＬＩＷ）プロセッサモデルであり、これは、標準の単一プロセッサタイプの単一機能動作を長い命令語に、専用のマルチサイクル・ベクトル処理機能なしに連結することに基づいた、並列処理モデルに相当する。ブロックデータ・ベクトル・パイプラインを効率的に動作するには、個別のベクトル要素を引き渡すための効率的なインターフェイスを有することが重要である。このため、成功したクラスの従来技術のベクトルマシンは、レジスタベースであった。このレジスタベースのベクトルプロセッサは、ベクトル要素用の高性能レジスタを提供し、要素の効率的なアクセスを機能実行ユニットによって可能にする。実施特有のベクトル長の値に結合された単一のベクトル命令が、ブロック・データ・マルチサイクル動作を引き起こす。加えて、多数のベクトルマシンが連鎖機能を提供しており、個別のベクトル要素への操作が直接、他のベクトル関数ユニットへ経路指定されて、性能が向上される。これらの従前の特徴及び能力が、本発明のための背景を提供する。本発明の一目的は、スカラ、ＶＬＩＷ、及び柔軟性のあるベクトル処理能力を、間接的なＶＬＩＷプロセッサにおいて効率的に組み込むことである。
【０００４】
典型的な限定命令セット・コンピュータ（ＲＩＳＣ）及びＶＬＩＷプロセッサでは、レジスタオペランドのアクセスが、レジスタファイルに格納されたオペランドのレジスタアドレスを表す短命令語（ＳＩＷ）ビット・フィールドから決定される。レジスタベースのベクトルプロセッサでは、専用のハードウェアが使用される。このハードウェアは単一ベクトル命令によって開始され、専用ベクトルレジスタからのベクトル要素（オペランドデータ）のアクセスを自動化する。データのブロックにおけるマルチサイクル実行も自動化される。
【０００５】
従来は、レジスタ・オペランド・データの自動アクセスをサポートするために使用された、専用のハードウェア技術もあった。例えば、米国特許第５，６８０，６００号は、レジスタファイル・アドレッシングを自動化するためにループ又は繰り返し命令を使用して、レジスタファイルにアクセスするための技術を記載している。この手法は、レジスタ・アドレッシングをループ又は繰り返し命令に結合し、これにより、レジスタアドレスに、レジスタファイルのアドレス空間を介して増分するように指示する間に、ロード又は格納命令を繰り返させる。電子回路が、多数の逐次命令のためのコントローラメモリの必要量を低減するために指定される。従って、この従来技術の手法は、特殊なループ又は繰り返し命令によって呼び出されたロード及び格納タイプの動作にのみ適用されるようにみえる。このように、これは、以下で更に対象とされるような間接ＶＬＩＷ ＭａｎＡｒｒａｙ（マンアレイ）プロセッサに容易に適用可能ではない。
【０００６】
（発明の概要）
ＭａｎＡｒｒａｙファミリのプロセッサは適切に、多数の「間接ＶＬＩＷ」（ｉＶＬＩＷ）プロセッサ及びプロセッサ要素（ＰＥ）からなることができ、これらが３２ビットの固定長の短命令語（ＳＩＷ）を利用する。ＳＩＷを、プロセッサにつき最大８つの実行ユニットの１つによって個別に、かつ、ＳＩＭＤモードの動作において、多数のＰＥを同期させて実行することができる。もう１つのタイプのＳＩＷは、ＶＬＩＷを間接的に参照して、最大８つのＳＩＷ命令の発行を、各プロセッサにおいて並行して、多数のＰＥを同期させて、並行して実行させることができる。
【０００７】
オペランドがレジスタファイルに格納され、各実行ユニットが１つ又は複数の読取り及び書込みポートを有し、これがレジスタファイル或いは複数ファイルに接続される。大抵のプロセッサでは、各ポート用に選択されたレジスタが、命令におけるビットフィールドを使用してアドレス指定される。ＭａｎＡｒｒａｙプロセッサにおいて使用された間接ＶＬＩＷ技術により、ＶＬＩＷを作成するＳＩＷがＶＬＩＷメモリに格納される。各ＳＩＷがレジスタオペランド・フィールドを、レジスタによりアクセスされたオペランドデータにおける単一の動作のための定義によって固定するので、単一のオペランドフィールドが処理アルゴリズムによって必要とされるように異なっていなければならないときはいつでも、多数のＶＬＩＷが必要とされる。従って、このようなプロセッサ、及び、より一般には並列アレイプロセッサに拡張可能なものと共に使用するための、データのブロックにおける動作のための適切なレジスタファイル索引付け技術が、大変有利となる。
【０００８】
このオペランド・データ固定レジスタ指定の問題が、本発明によって、間接ＶＬＩＷ命令を使用して、データのブロックにおけるパイプライン計算を達成する小型の手段を提供することにより解決される。レジスタファイルにおけるデータのブロックにアクセスする二重間接方法が使用されて、専用のベクトル処理ハードウェアを使用しない効率的な実施が可能となる。加えて、レジスタ・アドレッシングの自動修正が、単一ベクトル命令にも、繰り返し又はループ命令にも結合されない。むしろこの技術は、レジスタファイル索引付け（ＲＦＩ）と呼ばれ、ブロックデータ操作機能の制御において十分なプログラマの柔軟性を可能にし、非ＲＦＩ命令をＲＦＩ命令と混合するための能力を提供する。ブロックデータ操作機能がｉＶＬＩＷ  ＭａｎＡｒｒａｙアーキテクチャに埋め込まれ、命令セット・アーキテクチャにわたるその汎用の使用を、専用のベクトル命令なしに、かつ、繰り返し又はループ命令と使用するのみに限定されることなく可能にする。本発明を利用すると、連鎖動作が、機能ユニットの間のいかなる直接経路指定もなしに、固有に使用可能であり、さらに実施を簡素化する。加えて、このレジスタファイル索引付けアーキテクチャが、コード化されるアルゴリズムのタイプに応じて特に著しくなる可能性のあるＶＬＩＷメモリの必要量を低減する。
【０００９】
更に、ＶＬＩＷ命令のアンロールされたループ(unrolled loop)として表現されたとき、多数の計算が明確なレジスタ使用パターンを示す。これらのパターンは計算パイプラインの特性であり、本明細書で更に記載され、適合されるように、間接ＶＬＩＷプロセッサに埋め込まれたＭａｎＡｒｒａｙ間接ベクトル処理と共に利用することができる。
【００１０】
その他の態様の中で、本発明は、オペランドレジスタ・アドレスを生成するためのユニークな初期化方法、ユニークな二重間接実行機構、ユニークな制御方法を提供し、レジスタファイルを、独立した循環バッファに区分することができる。これはまた、ＲＦＩ及び非ＲＦＩ命令を混合すること、及び、ＶＬＩＷ処理要素の多数のアレイ編成に適用可能なスケーラブルな設計も可能にする。以下で更に詳細に対象とするように、本発明は、ｉＶＬＩＷアレイプロセッサにおける並列命令実行のための、ＶＬＩＷメモリ、及び、結果として、ＳＩＷメモリの必要量を低減する。
【００１１】
【発明の実施の形態】
本発明のこれら及び他の特徴、態様及び利点は、添付の図面と共に取られた以下の詳細な説明から、当業者には明らかになるであろう。
【００１２】
【発明の実施の形態】
（詳細な説明）
本発明と共に使用するために現在好ましいＭａｎＡｒｒａｙアーキテクチャのさらなる詳細は、１９９７年６月３０日出願の米国特許出願第０８／８８５，３１０号、１９９７年１０月１０日出願の米国特許出願第０８／９４９，１２２号、１９９８年１０月９日出願の米国特許出願第０９／１６９，２５５号、１９９８年１０月９日出願の米国特許出願第０９／１６９，２５６号、１９９８年１０月９日出願の米国特許出願第０９／１６９，０７２号、１９９８年１１月６日出願の米国特許出願第０９／１８７，５３９号、１９９８年１２月４日出願の米国特許出願第０９／２０５，５５８号、１９９８年１２月１８日出願の米国特許出願第０９／２１５，０８１号、１９９９年１月１２日出願の米国特許出願第０９／２２８，３７４号、及び１９９９年１月２８日出願の米国特許出願第０９／２３８，４４６号、ならびに、１９９８年７月９日出願の「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」という名称の仮特許出願第６０／１０６，８６７号、１９９８年１２月２３日出願の「Methods and Apparatus for Providing Direct Memory Access（DMA） Engine」という名称の仮特許出願第６０／１１３，６３７号、及び１９９８年１２月２３日出願の「Methods and Appratus Providing Transfer Control」という名称の仮特許出願第６０／１１３，５５５号においてそれぞれ判明し、全体として、参照により本明細書に組み込まれる。
【００１３】
本発明の現在の好ましい実施形態では、図１Ａに示されたＭａｎＡｒｒａｙの２×２ ｉＶＬＩＷ単一命令多重データ・ストリーム（ＳＩＭＤ）プロセッサ１００が、処理要素０（ＰＥ0）ＳＰ／ＰＥ0 １０１に結合されたコントローラ・シーケンス・プロセッサ（ＳＰ）を含み、これは「Methods and Apparatus for Dynamically Merging an Array Controller with an Array Processing Element」という名称の米国特許出願第０９／１６９，０７２号において、更に詳細に記載されている。本発明によれば、３つの追加のＰＥ１５１、１５３及び１５５も、レジスタファイル索引付け及びそのスケーラブルな性質を示すために利用される。ＰＥに、それらの行列位置により、ＰＥ0（ＰＥ00）１０１、ＰＥ1（ＰＥ01）１５１、ＰＥ2（ＰＥ10）１５３、及びＰＥ3（ＰＥ11）１５５について括弧において示されたように、ラベルを付けることもできることに留意されたい。ＳＰ／ＰＥ0 １０１はフェッチコントローラ１０３を含み、３２ビット命令メモリ１０５からの短命令語（ＳＩＷ）のフェッチを可能にする。このフェッチコントローラ１０３が、プログラムカウンタ（ＰＣ）、分岐機能、デジタル信号処理ループ動作、割り込みのサポートなど、プログラム可能プロセッサにおいて必要とされた典型的な機能を提供し、命令メモリ管理制御を提供し、これは、アプリケーションによって必要とされた場合、命令キャッシュを含むことができる。加えて、ＳＩＷ Ｉ−フェッチ・コントローラ１０３は、３２ビットのＳＩＷをシステムにおける他のＰＥに、３２ビット命令バス１０２によってディスパッチする。
【００１４】
この例示的システムでは、説明を簡素化するために共通の要素が全体を通して使用されるが、実際の使用はそのように限定されない。例えば、結合されたＳＰ／ＰＥ0 １０１における実行ユニット１３１を、制御機能に合わせて最適化された１組の実行ユニット、例えば、固定小数点実行ユニットに分離することができ、ＰＥ0、ならびに他のＰＥ１５１、１５３及び１５５を、浮動小数点の応用例に合わせて最適化することができる。この記載のために、実行ユニット１３１が、ＳＰ／ＰＥ0及び他のＰＥにおける同じタイプのものであると仮定される。類似の方法において、ＳＰ／ＰＥ0及び他のＰＥが５命令スロットｉＶＬＩＷアーキテクチャを使用し、これは、超長命令語メモリ（ＶＩＭ）メモリ１０９、及び、命令復号化及びＶＩＭコントローラ機能ユニット１０７を含み、これがＳＰ／ＰＥ0のＩ−フェッチ・ユニット１０３からディスパッチされたような命令を受信してＶＩＭアドレス及び制御信号１０８を生成し、これがｉＶＬＩＷにアクセスするために必要とされ、１０９における文字ＳＬＡＭＤによって識別され、ＶＩＭに格納される。ＭａｎＡｒｒａｙパイプライン設計は、分岐待ち時間を増大させることなく、間接ＶＬＩＷメモリ・アクセス機構を提供し、これは、間接実行ＬＶＩＷ（ＸＶ）命令のための動的に再構成可能な命令パイプラインを提供することによって行い、これは「Methods and Apparatus to Dynamically Reconfigure the Instruction Pipeline of an Indirect Very Long Instruction Word Scalable Processor」という名称の米国特許出願第０９／２２８，３７４号において、さらに詳細に記載されている。ｉＶＬＩＷのローディングは、「Methods and Apparatus for Efficient Synchronous MIMD Operations with iVLIW PE-to-PE Communication」という名称の米国特許出願第０９／１８７，５３９号において、さらに詳細に記載されている。また、ＳＰ／ＰＥ0及び他のＰＥに含まれているものは、共通のＰＥ構成可能レジスタファイル１２７であり、これは、「Methods and Apparatus for Dynamic Instruction Controlled Reconfiguration Register File with Extended Precision」という名称の米国特許出願第０９／１６９，２５５号において、更に詳細に記載されている。
【００１５】
ＳＰ／ＰＥ0の結合された特性により、データメモリ・インターフェイス・コントローラ１２５が、メモリ１２１におけるＳＰデータによりＳＰコントローラの、及び、メモリ１２３におけるＰＥ0データによりＰＥ0の、データ処理必要性に対処しなければならない。ＳＰ／ＰＥ0コントローラ１２５は、３２ビット・ブロードキャスト・データバス１２６を介して送信されるデータのソースでもある。他のＰＥ１５１、１５３及び１５５は、共通の物理データメモリ・ユニット１２３'、１２３”及び１２３'''を含むが、それらに格納されたデータは一般に、各ＰＥにおいて行われるローカル処理によって必要とされるように異なる。これらのＰＥデータ・メモリへのインターフェイスも、ＰＥ1、2及び3における共通の設計であり、ＰＥローカルメモリ及びデータバス・インターフェイス論理１５７、１５７'及び１５７”によって示される。データ転送通信のためにＰＥを相互接続するものは、クラスタスイッチ１７１であり、「Manifold Array Processor」という名称の米国特許出願第０８／８８５，３１０号、「Methods and Apparatus for Manifold Array Processing」という名称の米国特許出願第０９／９４９，１２２号、及び「Methods and Apparatus for ManArray PE-to-PE Switch Control」という名称の米国特許出願第０９／１６９，２５６号において、より完全に記載されている。ホストプロセッサへのインターフェイス、他の周辺デバイス、及び／又は外部メモリを、多数の方法において行うことができる。完全性のために示された主要な機構が、ＤＭＡ制御装置１８１に含まれ、これは、スケーラブルなＭａｎＡｒｒａｙデータバス１８３を提供し、これがＭａｎＡｒｒａｙコアの外部のデバイス及びインターフェイスユニットに接続される。ＤＭＡ制御装置１８１が、これらの外部デバイスがバス１８５を介してＭａｎＡｒｒａｙコアメモリとインターフェイスを取るために必要とされた、データフロー及びバス裁定機構を提供する。
【００１６】
上に示された全ての特許は本発明の譲受人に譲渡され、全体として、参照により本明細書に組み込まれる。
【００１７】
このとき、本発明に適合されるようなＭａｎＡｒｒａｙプロセッサ装置の特定の詳細を参照すると、この手法は、二重間接機構を介した、効率的かつ柔軟性のあるブロックデータ操作能力を提供するので、有利である。
（レジスタファイル索引付けプログラミング考察）
本発明の一態様によるレジスタファイル索引付け（ＲＦＩ）は、各処理要素における、かつ、オペランドレジスタファイルを、直接ＳＩＷのフィールドを介するのではなく、二重間接機構を介して、或いは、専用ベクトル命令及びベクトルハードウェアを介して、或いは、要求された繰り返し又はループ命令により、アドレス指定するためのアレイコントローラにおける、方法及び装置を指す。各実行ユニットが、１つ又は複数のレジスタファイルの読取り及び書込みポートを動作する。読取り又は書込みポートは、レジスタファイルに供給されたレジスタ選択アドレス及び制御線、レジスタファイルから読み取り中であるレジスタデータのための読取りポート用のデータバス、及び、レジスタファイルへ書き込み中であるレジスタデータのための書込みポート用のデータバスからなる。これらのポートのレジスタ選択論理への入力は、典型的には図１Ｂの従来技術の装置において図示されたように、実行中である命令のビットフィールドからのみ来たものである。図１Ｂでは、プロセッサの命令レジスタ１０において受信された命令が、典型的にはレジスタファイル・アドレスを含み、これらが典型的には、レジスタ１２、１４及び１６など、ポートアドレス・レジスタにおいてラッチされ、次いで、レジスタファイル２０など、レジスタファイルをアドレス指定するために直接使用されて、図１Ｂの格納ユニット２２、ロードユニット２４、ＡＬＵ２６、ＭＡＵ２８及びＤＳＵ３０など、ユニットによる命令実行がサポートされた。
【００１８】
この典型的なレジスタ選択のための方法に加えて、本発明によるＲＦＩ動作により、各実行ユニットの各レジスタファイルポートを、以下で更に対象とされるような簡素な制御回路を使用して、二重間接機構を介して独立して制御することもできる。
【００１９】
（ＲＦＩ動作）
ＲＦＩ動作を、ＭａｎＡｒｒａｙ  ｉＶＬＩＷアーキテクチャに埋め込み、二重間接機構によって呼び出すことができるので、有利である。３２ビット符号化フォーマット２０１を有する例示的実行ＶＬＩＷ（ＸＶ）命令２００が、図２Ａに示される。命令構文、パラメータ又はオペランド、命令２００によって実行された動作を要約する構文／動作テーブル２０３が図２Ｂに示される。ＭａｎＡｒｒａｙ  ＲＦＩ動作が、ビット２０及び２１であるＲＦＩ動作ビット２０２を、実行ＶＬＩＷ（ＸＶ）命令２００において、図２Ａに示されたように使用して、ＲＦＩ動作を使用可能にする。
【００２０】
更なる詳細においては、ＸＶ命令２００が使用されて、指定されたＳＰ又はＰＥ  ＶＬＩＷメモリ（ＶＩＭ）の個々の命令スロットが間接的に実行させられる。ＶＩＭアドレスが、ベースＶＩＭアドレス・レジスタＶｂ（Ｖ0又はＶ1）に、符号なし８ビットのオフセットＶＩＭＯＦＦＳを加えた和として計算される。個々の命令スロットのいかなる組み合わせも、実行スロット・パラメータ「Ｅ＝｛ＳＬＡＭＤ｝」を介して実行することができ、但し、Ｓ＝格納ユニット（ＳＵ）、Ｌ＝ロードユニット（ＬＵ）、Ａ＝論理演算装置（ＡＬＵ）、Ｍ＝乗算累算ユニット（ＭＡＵ）、及びＤ＝データ選択ユニット（ＤＳＵ）である。空の「Ｅ＝」パラメータは、いかなるスロットも実行しない。ユニット影響フラグ（ＵＡＦ）パラメータ「Ｆ＝［ＡＭＤＮ］」が、ＶＬＩＷについて指定されたＵＡＦを、それがロードＶＬＩＷ（ＬＶ）命令を介してロードされたとき、オーバーライドする。オーバーライドは、どの算術命令スロット（Ａ＝ＡＬＵ、Ｍ＝ＭＡＵ、Ｄ＝ＤＳＵ）又は、なし（Ｎ＝ＮＯＮＥ）が、ＶＬＩＷのこの実行について条件フラグを設定するために可能とされるかを選択する。オーバーライドは、ＬＶ命令を介して指定されたＵＡＦ設定に影響を与えない。空の「Ｆ＝」は、ＶＬＩＷがロードされたときに、指定されたＵＡＦを選択する。レジスタファイル索引付け（ＲＦＩ）パラメータ「Ｒ＝［０１Ｎ］」が使用されて、このＸＶの命令スロットの間接実行についてＲＦＩが使用可能或いは使用不可にされる。「Ｒ＝０」（図２ＡにおけるＲＦＩ動作ビット２０２＝００）であれば、ＲＦＩ動作が使用可能にされ、ＲＦＩ制御レジスタグループ０が選択される。「Ｒ＝１」（ビット２０２＝０１）であれば、ＲＦＩ動作が使用可能にされ、ＲＦＩ制御レジスタグループ１が選択される。「Ｒ＝Ｎ」（ビット２０２＝１１）であれば、ＲＦＩ動作が使用不可にされる。
【００２１】
ＲＦＩが使用可能にされたＸＶ命令により、第２の間接動作が開始される。第２の間接動作は、実行される次のＸＶ命令において活動し始め、レジスタポート・アドレスが、分離したＲＦＩ制御パラメータによって指定された方法において制御されたハードウェアを自動的に増分することを介して、間接的に指定される。ＲＦＩ動作が以下で、ＭａｎＡｒｒａｙパイプラインに関連して、主として、パイプラインの復号化及び実行段階に関して記載される。ＲＦＩ制御は、４つの部分、即ち、１）ＲＦＩ制御指定、２）ＲＦＩ初期化制御、３）ＲＦＩ更新制御、及び、４）ＲＦＩ命令実行からなる。
【００２２】
（ＲＦＩ制御指定）
ＲＦＩ制御指定は、ＲＦＩ制御レジスタを介して実行されることが好ましい。各制御レジスタが、特定の実行ユニットによって使用されたレジスタポートについての全てのＲＦＩ制御情報を指定する。制御フィールドが各ポート用の制御レジスタにあり、このフィールドが、ＲＦＩ動作がこの特定のポートについて使用可能にされるかどうかを指定し、使用可能にされた場合、ＲＦＩレジスタ更新ポリシーを指定する。
【００２３】
ＲＦＩ制御レジスタは、図３Ａにおいて例示されたＭａｎＡｒｒａｙ雑レジスタファイル（ＭＲＦ）３００を介してアクセスされる。このレジスタファイルは、追加のレジスタを、制限されたＭＲＦアドレス空間内に、追加のレジスタを単一のＭＲＦアドレスにアドレス対応することによって追加できることにおいて、ユニークである。ＭＲＦ拡張レジスタ３０５及び３１５は、図３Ｂ及び図３Ｃにおいてそれぞれ示され、ＭＲＦ拡張アドレスレジスタ（ＭＲＦＸＡＲ）３０１及びＭＲＦ拡張データレジスタ（ＭＲＦＸＤＲ）３０２及び３０３を使用してアクセスされる。２つのＭＲＦ拡張データレジスタ３０２及び３０３が提供されて、実施が簡素化され、各組の拡張レジスタの所期の使用が分離される。レジスタアドレスが、図４の３２ビットＭＲＦＸＡＲレジスタ４１０のハーフワードＨ1又はＨ0部分に、図７Ａ及び図７Ｂにおいて例示されたようなロード即値命令を使用して書き込まれる。図３Ａ乃至図３Ｃ、及び図４Ａ及び図４Ｂの各部分の関係が、以下でより十分に述べられる。
【００２４】
【表１】
0004657455.tif 000002
【００２５】
現在好ましい実施形態では、５つの実行ユニットがＲＦＩ制御を有する。図３Ｃは、例示的なセットのＲＦＩ制御レジスタの要約を示す。これらのＭＲＦＸレジスタ５１０、５２０、５３０、５４０、５５０、５６０、５７０及び５８０が、図５において更に詳細に示され、各制御レジスタが、指定された実行ユニット用の読取り／書込みポートに割り当てられる。これらの実行ユニットには、論理演算装置（ＡＬＵ）、乗算累算ユニット（ＭＡＵ）、データ選択ユニット（ＤＳＵ）、ロードユニット及び格納ユニットが含まれる。
【００２６】
レジスタが２つの制御グループ（５１０〜５４０）、２つの保存及び復元コンテキストレジスタ（５５０及び５６０）、及び１つのレジスタ５８０において使用されて、各制御グループのためのＲＦＩ制御の初期化が制御される。予約済レジスタ５７０も示される。第１の制御グループ０が、図３ＣにおけるＲＦＩＤＬＳ0 ３１０及びＲＦＩＡＭ0 ３２０を含む。さらなる詳細が、図５のレジスタ５１０及び５２０において示される。第２の制御グループ１が、ＲＦＩＤＬＳ1 ３３０及びＲＦＩＡＭ1 ３４０を含み、さらなる詳細がレジスタ５３０及び５４０において示される。
【００２７】
ｉＶＬＩＷが実行されたとき、制御グループの１つがＸＶ命令において、ビット２１及び２０という、図２の命令２００のＲＦＩビット２０２を介して指定されて、このＶＬＩＷにおける命令によって使用された、いかなるポートのＲＦＩ制御も可能にされる。本発明が、制御情報又は制御情報の部分集合を、直接命令においてなど、指定するための別の機構を使用することを除外しないことは、理解されよう。
【００２８】
具体的には、制御グループ０において、図５におけるＲＦＩＤＬＳ0 ５１０が、単一のロードＲtポート５０１、単一の格納Ｒsポート５０２、ＤＳＵ Ｒy５０３、Ｒx５０４及びＲt５０５用の３つのオペランド・ポートのためのポート制御情報を含む。制御グループ０における第２のレジスタ、ＲＦＩＡＭ0 ５２０が、ＭＡＵ Ｒy５２１、Ｒx５２２、Ｒt５２３用の３つのオペランドポート、及び、ＡＬＵ Ｒy５２４、Ｒx５２５及びＲt５２６用の３つのオペランドポートのための、ポート制御情報を含む。２つの制御グループに関連付けられたものは、初期化開始ビットであり、これらは、図３ＣのＲＦＩＳｔａｒｔレジスタ３８０における、より詳細には図５のレジスタ５８０における、制御グループ０及び１について含まれる。制御グループ０では、初期化開始ビットがＨ0ハーフワード５８１に、以下のように実行ユニットにつき単一のビットと共に位置する。即ち、格納ポート開始０ビット−４  ５８７、ロード・ポート開始０ビット−３  ５８６、ＡＬＵポート開始０ビット−２  ５８５、ＭＡＵポート開始０ビット−１  ５８４、及び、ＤＳＵポート開始０ビット−０  ５８３である。類似の方法において、第２の制御グループ１のための制御レジスタＲＦＩＤＬＳ1 ５３０、ＲＦＩＡＭ1 ５４０が、図５に示されるようにセット・アップされる。制御グループ１のための初期化開始ビットは、ＲＦＩＳｔａｒｔ５８０のＨ1ハーフワード５８２に位置する。他の２つのＲＦＩレジスタＲＦＩＤＬＳＩ５５０及びＲＦＩＡＭＩ５６０が、コンテキスト保存及び復元動作のサポートにおける割り込みにおいて、ポートアドレス値を格納してポートアドレスの値を保存する。
【００２９】
制御パラメータが、必要とされたセットの制御情報を表現することができる、いかなるフォーマットを有する可能性もあり、これは、本発明が特定のフォーマットを必要としないからであることに留意されたい。レジスタファイル・ポートのための例示的フォーマット６００が、より詳細に図６に示される。ＲＦＩパラメータが４ビットに、列６０１及び６０２において示されたように符号化される。この制御情報が、次のＲＦＩ命令実行において選択される次のレジスタのアドレスを生成するために適用される、更新のタイプを指定する。現時点の好ましい実施形態では、制御パラメータが使用されて、レジスタアドレスに加算される更新増分値６０３が選択され、選択することができる最大順次（１ずつ増分する）レジスタファイルアドレス範囲（ＲＦＢＳ）６０４が指定される。以下で更に記載されるように、開始レジスタがこれらのパラメータと共に、索引によって選択することができる実際のレジスタセットを決定する。列６０５〜６１１が使用されて、図８及び図９に示された間接ベクトル装置の動作が記載される。これらの列６０５〜６１１では、「ｘ」が「配慮しない」状態を表す。列６１２は、適用可能ユニット列であり、どの実行ユニットに制御パラメータが適用されるかを指定する。
【００３０】
（ＲＦＩ初期化制御）
ＲＦＩ初期化は２つのステップにおいて行われ、これらは図８及び図９を参照して最適に理解される。図８は、算術演算装置におけるポート論理のための例示的ＲＦＩ装置８００を示す。図９は、ロード及び格納ユニットにおけるポート論理のための例示的ＲＦＩ装置９００を示す。この例示的記載は低コストの構成を表し、これは、ＡＬＵ、ＭＡＵ及びＤＳＵユニット用の制御グループ０、及び、ロード及び格納ユニット用の制御グループ０及び１を使用する。これは、図５において概説されたアーキテクチャの記述の部分集合であり、プログラマの制約を表し、全てのオプションが、制御グループ０における全ての実行ユニットについて使用可能であるが、制御グループ１は主としてブロック移動、保存及び復元動作について使用される。ＲＦＩ ＸＶ命令が、第２の制御グループ１を実施において選択し、算術演算装置上の制御グループ０のみを可能とし、算術演算装置は、制御グループ１が指定されたときでも、制御グループ０指定に省略時指定される。この部分集合が実施の費用を最小化し、以下のようにより詳細に記載される。
【００３１】
最初に、各レジスタファイルポートについての、図６に例示されたような制御情報が、ＲＦＩ制御レジスタ８１０及び９１０に、ロード即値（ＬＩＭ）命令７００の使用によって書き込まれ、この符号化フォーマットが図７Ａに示され、この構文／動作７１０が図７Ｂに示される。ＬＩＭ命令７００が最初に使用されて、図４のロードＭＲＦＸＡＲハーフワードＨ1 ４１０がロードされて、図３ＡにおけるＭＲＦＸＤＲ2 ３０３へマップされる所望の拡張ＲＦＩ制御レジスタがセットアップされる。次いで、ＬＩＭ命令がデータ値を所望の制御レジスタへ、ＭＲＦＸＤＲ２用のアドレスを使用することによってロードする。制御レジスタの各ハーフワード区間が別々に、ＬＩＭ命令の定義によってロードされる。
【００３２】
明瞭にするため、命令レジスタ８１４Ｈ0ハーフワードビット(１５−０)からのＬＩＭデータパスが図示されない。このデータパスが選択的に制御されて、ＬＩＭ命令のＨ0ハーフワードが、図５において列挙されたＭＲＦ拡張レジスタのいずれかの低又は高ハーフワード部分にロードされる。例えば、ＬＩＭ命令が、図５のＲＦＩＡＭ0レジスタ５２０のＨ1部分への、そのＨ0ハーフワードのローディングを引き起こすことができる。図８の共通の算術ＲＦＩポート制御論理の参照において、ＲＦＩＡＭ0の３つの制御部分のうち１つが、８１０など、このポート用の更新制御レジスタ０において、この場合はＡＬＵ８５２についてロードされる。類似の方法において、他の２つのポート制御値が、それら自体のＲＦＩポート制御論理に含まれたそれら自体のポート更新制御レジスタ０にロードされる。他のＭａｎＡｒｒａｙ命令がＲＦＩ制御レジスタを、ＭＲＦデータバス８０９の使用を介してロードすることができる。ＭＲＦデータバス８０９は、ＲＦＩポートレジスタを、例えば、文脈切換え動作中に保存するためにも使用される。特定のＬＩＭ命令の記載は、以下の通りである。ＬＩＭ命令のハーフワード形式が、１６ビットの即値（イミーディエイト値）をＳＰ又はＰＥ目標レジスタＲtの上位ハーフワード（Ｈ1）又は下位ハーフワード（Ｈ0）にロードする。１６ビット即値が、符号「中間」値として解釈され、「−３２７６８」から「６５５３５」の範囲におけるいかなる値も受け入れられることを意味する。これは、「−３２７６８」から「＋３２７６７」の２の補数符号付き値範囲、及び、「０」から「６５５３５」の符号なし値範囲を包含する。
【００３３】
ＬＩＭ命令のワード形式が、符号付き拡張１７ビット即値を目標レジスタにロードする。１７ビット符号付き値を、「−６５５３６」から「６５５３５」の範囲におけるいかなる値にすることもできる。ＬＩＭのワード形式のための符号化が、値の絶対値をＩＭＭ１６フィールドに置き、符号ビットが図７Ａに示されたＬＯＣフィールドビット２３及び２２である。ＬＯＣフィールドが、上位ハーフワードが全て１のビットで満たされるか、全て０のビットで満たされるかを決定する。
【００３４】
ＲＦＩ初期化の第２のステップでは、開始ビット、例えば、ＤＳＵ８５４のためのビット５８３が、ＲＦＩ開始レジスタ、図５のＲＦＩＳｔａｒｔにおいて設定され、これが、各算術実行ユニットのポートのための開始ビット及びｍｕｘ制御ブロック８１２、及び、ロード又は格納ユニットのポートのためのブロック９１２に位置する。各開始ビットが、実行ユニットに属する全てのポートのための初期化を制御する。これが現時点での好ましいフォーマットであるが、本発明はこのフォーマットに制限されない。このビットを設定する動作が、このレジスタに書き込むことができるいかなる命令によっても実行される。このタイプの少なくとも１つの命令が使用可能である。このビットの設定の後、この特定のグループ及び実行ユニットのためのＲＦＩ制御を呼び出す次の命令が、以下で「ＲＦＩ命令」と呼ばれ、命令語におけるフィールドによって最初に選択されたその実行ユニットのオペランドレジスタを有し、次いで、このグループ及び実行ユニットのための次のＲＦＩ命令により、図８及び図９に示されたＲＦＩ論理の制御下で選択されたその実行ユニットのオペランドレジスタを有する。ＲＦＩ ＸＶ命令により、図２Ａ及び図２Ｂにおいて記載されたように、ＳＩＷのＶＬＩＷセットがローカルのＶＩＭ（本明細書で図１ＡにおけるようなＭａｎＡｒｒａｙ実施のために記載されたような５つのＳＩＷ）から間接的に検索される。例えば、５つのＳＩＷのセットの１つが、図８に示されたような命令レジスタ８１４にロードされる。フェッチされたＳＩＷ ＲtのポートのためのポートＲＦＩ論理も、図８に示される。フェッチされた命令の最初の実行では、Ｒtポートアドレス８１６がＲＦＩブロック動作のための開始アドレスである。Ｒtポート・アドレス８１６がマルチプレクサ８１４を介して、開始ビット及びｍｕｘ制御ブロック８１２によって制御信号８１３を介して制御されるように、ポートアドレス・レジスタ８１６へ、マルチプレクサ出力８１１を介して渡される。Ｒtポートアドレスは、このとき出力８１１において含まれ、復号化パイプライン段階の最後でポートアドレス・レジスタ８１６にラッチされる。ポートアドレス・レジスタ８１６の出力が直接、レジスタファイル８１８を、信号パス８１７を介してアドレス指定する。オペランドがレジスタファイル８１８から選択され、ＳＩＷ動作が、指定された実行ユニットにおいて実行される。
【００３５】
ＲＦＩ ＸＶ命令の次の発行において、オペランドが間接的にＲＦＩ論理から指定される。これは、動作シーケンスにおける第２の間接指定である。第１の間接指定は、ＲＦＩ ＸＶ命令を介したものであり、これは間接的にＳＩＷを指定し、第２の間接指定は、ＲＦＩ制御パラメータを介してセット・アップされたようなＲＦＩ論理を介したものである。これを実施するため、動作更新制御レジスタ０ ８１０、更新加算器論理８３０、索引付きポート・ルック・アヘッド・レジスタ８２０、マルチプレクサ８１４及び８２２、及び、更新制御論理８２４が使用されて、更新されたポートアドレスが生成され、これが、後に続くＲＦＩ命令実行において使用される。
【００３６】
基本概念は、マルチプレクサ８１４のアドレス出力８１１が、復号化サイクルにおいて十分早期に使用可能であり、更新加算器論理８３０が更新制御論理８２４信号に基づいてアドレスを更新できるようにすることである。更新されたアドレス８１９がｍｕｘ制御信号８１５によって選択されてマルチプレクサ８２２を通過し、索引ポート・ルック・アヘッド・レジスタ８２０に、復号化の最後に、現在のポートアドレス８１１がポートアドレス・レジスタ８１６にロードされると同時にロードされる。次のＲＦＩ命令において、ルック・アヘッド・レジスタ値８２１が、フェッチされたＳＩＷオペランド・ポート・アドレス値の代りに使用され、次の実行サイクルのためのポートアドレス・レジスタ８１６にラッチされ、その間に、更新加算器論理が再度、使用される次のポートアドレスを準備中である。ＲＦＩ開始ビットの設定の後に続く最初のＲＦＩ命令の後、開始ビットがクリアされ、後続のＲＦＩ命令に、それらのＳＩＷオペランドレジスタを、対応する索引付きポート・ルック・アヘッド・レジスタによって選択させるようにする。開始ビット及びｍｕｘ制御ブロック８１２が、命令のレジスタが命令フィールドによって選択されるか、ＲＦＩ索引付きポート・ルック・アヘッド・レジスタによって選択されるかを決定するための制御を提供する。その入力は、命令演算コード８０７、更新制御レジスタ０ ８１０、及びＲＦＩイネーブル信号８２５から来る。これらの信号が、パイプラインにおける命令の進行を指示するパイプライン制御信号（図示せず）と共に、レジスタ選択ソースを、マルチプレクサ８１４を介して決定する。
【００３７】
索引付きポート・ルック・アヘッド・レジスタ８２０の使用により、非ＲＦＩ命令を、ＲＦＩレジスタアドレス・シーケンスに影響を与えることなく、ＲＦＩ動作の間で混合することができる。非ＲＦＩ命令が検出されたとき、ＲＦＩ論理が、非ＲＦＩ命令の実行中に、必要とされたＲＦＩ状態を保持する。
【００３８】
（ＲＦＩ更新制御）
ＲＦＩ動作が呼び出されたとき、レジスタファイル８１８における１つ又は複数のレジスタのアドレスが、ＲＦＩ論理によって供給される。この論理が、次のサイクルのためのレジスタアドレスを、復号化サイクルの早期の段階において使用可能なアドレスから定数を加算或いは減算し、特定のセットのレジスタアドレス内で生成されたポートアドレスを維持することによって、更新する。現在の好ましい実施形態では、これが、増分値、及び、図６に示されたようなレジスタファイル・ブロック・サイズ（ＲＦＢＳ）６０４を、制御される各ポートについて指定することによって行われる。好ましい実施形態では、ＲＦＢＳ値が、１、２、４、８など、２の整数の累乗であり、論理的に、レジスタファイルを、ブロックにつきＲＦＢＳ順次アドレス指定されたレジスタを有するレジスタのブロックに区分させる。開始レジスタＲs（Ｒcurrent＝最初の更新におけるＲs）、ＲＦＢＳ値Ｍ、下限の商Ｑ＝［Ｒs／Ｍ］、及び正更新増分ｋと仮定すると、シーケンスにおける次のレジスタ番号、Ｒnextが、以下によって与えられる。
【００３９】
Ｒnext＝（（Ｒcurrent＋ｋ）ｍｏｄ  Ｍ）＋Ｑ×Ｍ
Ｒs／Ｍの余りが、下限演算により無視されるので、Ｑ×Ｍの値≠Ｒsである。
【００４０】
一例として、開始レジスタポート・アドレスが「５」であり、即ち、最初の演算のためのＲcurrentとも等しいＲs＝Ｒ５であると仮定する。また、更新増分がｋ＝２であり、ＲＦＢＳがＭ＝８であると仮定する。図６において、この例示的設定が行６２０に対応し、これは、図８で対応する信号値を以下のように列挙する。即ち、Ｇ３＝ｘ  ６０６及び８３１、Ｇ２＝０  ６０７及び８３２、Ｇ１＝１  ６０８及び８３３、Ｇ０＝１  ６０９及び８３４、Ｘ１＝１  ６１０及び８３５、及びＸ０＝０  ６１１及び８３６である。信号Ｘ１及びＸ０が、更新加算器論理８３０への２入力による増分を提供する。ゲート信号Ｇ３、Ｇ２、Ｇ１、及びＧ０が、任意の開始レジスタが与えられたブロックサイズを維持する。更新加算器論理８３０は、５つの標準全加算器８６１、８６２、８６３、８６４及び８６５からなり、図１０において更に詳細に示される。図１０の全加算器１０００の実行信号Ｃi+1 １００５が、更新加算器８３０の各段階からの実行信号８４１〜８４４に対応する。これらの実行信号が、ＡＮＤゲート８４５〜８４８、及び、図６の指定された制御記述によって必要とされたモジュロ加算器を効果的に作成するゲート制御信号８３１〜８３４によってゲートされる。これらの仮定では、ＲＦＩを使用してこのポートを指定する連続命令が、レジスタに、以下の順序でアクセスする。即ち、Ｒ５、Ｒ７、Ｒ１、Ｒ３、Ｒ５、Ｒ７などである。開始レジスタがＲ８であった場合、シーケンスは、Ｒ８、Ｒ１０、Ｒ１２、Ｒ１４、Ｒ８、Ｒ１０などである。本発明は、２の累乗でない増分及び／又はＲＦＢＳを使用することを除外せず、その内部で動作するためのレジスタアドレス・シーケンスを指定する別の機構を使用することも除外しない。例えば、読取り専用メモリを使用して、更新制御論理８２４及び更新加算器論理８３０を置き換えて、望まれたいかなる所望のレジスタポート・アドレス・シーケンスも提供することができる。メモリ・ブロックを使用することで実施配線問題を引き起こす可能性があるので、離散論理において更新機能を実施できるようにすることが、現在好ましい方法である。
【００４１】
図９は、ロード及び格納ユニットのためのＲＦＩ論理９００を示し、これらは２つの制御レジスタグループ９１０及び９５０をそれぞれ使用するように識別されている。ＸＶ命令が、どのグループが使用されるかを、図２のビット２１〜２０  ２０２を介して指定する。例示的システムでは、制御レジスタグループ１が間接的に指定されたとき、ＶＩＭからフェッチされたロード及び格納ＳＩＷが、ｍｕｘ制御信号９５１を介してマルチプレクサ９５２を通じて選択されたような更新制御レジスタ１  ９５０を使用するが、算術演算装置は制御レジスタグループ０を使用することに省略時指定される。代替実施では、図９のＲＦＩポート論理を、各算術実行ユニットについて使用することができ、全ての実行ユニットについて２つのＲＦＩコンテキストを提供する。
【００４２】
ＶＬＩＷプロセッサでは、レジスタファイルの全てのポートを、現在記載されたＸＶ命令など、単一の命令のためのＲＦＩ制御下で有することが可能である。ＲＦＩポート論理は実行ユニットの間で独立しているので、ポートを個別に、ＳＩＷ実行ユニット特有の命令によって制御することができる。これは、別の命令又は命令のグループが、ＸＶ命令に加えて、独立ＲＦＩ制御（即ち、異なる組の制御パラメータ）を必要とした場合、別の制御レジスタのグループを割り当てることができるという意味である。ＲＦＩセット・アップ待ち時間が相対的に短いので、図５において記載されたような制御レジスタ・セットを、容易に他のＲＦＩ命令と共有することができる。
【００４３】
別のレジスタファイル索引付け装置１１００が、図１１に示される。このＲＦＩ機構はなお、図８及び図９に関して論じられた他のＲＦＩ手法において概説された二重間接機構を使用する。しかし、図１１の手法では、プログラミングの制約が強制され、処理中のデータのブロックについて、ＲＦＩ動作を非ＲＦＩ動作と混合できないことが必要である。この手法は、図８及び図９において使用された、ＲＦＩ及び非ＲＦＩ命令を混合することができる手法とは異なる。いくつかの製品定義では、これは問題ではなく、図１１の簡素化されたハードウェア手法を使用することができる。
【００４４】
図１１の装置１１００の動作は、先のＲＦＩ手法の動作と類似している。例えば、ＲＦＩ初期化のための開始ビットが、先に記載されたように使用される。図１１における主な違いは、図８のレジスタ８２０のような、索引付きポート・ルック・アヘッド・レジスタが使用されないことである。むしろ、ポート・アドレス・レジスタ１１１６がなおレジスタファイル１１１８をアドレス指定するが、更新加算器論理１１３０動作が時間において変位され、図８において使用された手法と比較されるように、ラッチされたポート・アドレス・レジスタ出力１１１７において実行サイクル中に動作する。次の実行サイクルのための準備において、更新加算器論理１１３０がポート・アドレス・レジスタ１１１６の出力１１１７を、このポートのためのＲＦＩ更新制御レジスタ１１１０によって指定されたように更新する。この実行サイクルの終了まで、マルチプレクサ１１１４が制御入力１１１３を介して制御されて、更新加算器論理出力１１１９が選択されて、マルチプレクサ１１１４を介して出力１１１１に渡される。次いで、マルチプレクサ１１１４出力１１１１がポート・アドレス・レジスタ１１１６において、次の実行サイクルの開始のときにラッチされ、それにより、先にＲＦＩ制御セット・アップによって指定されたようなレジスタファイル・ポート・アドレスを更新する。
【００４５】
ＸＶ  ＲＦＩ使用可能装置に加えて、ＲＦＩを使用可能にする他の手段が使用される。この追加の機構の目的は、ＲＦＩ順序付けを、ＶＬＩＷ（ＸＶ）プログラミング・モデルにおいてのみ使用されることから切り離すことである。ブロック・ロード、ブロック格納、及びブロック移動動作を単一の命令実行によりサポートし、これを、ＳＰにおいて独立で、或いは、ＰＥにおいて同時に行うことができることが望ましい。追加のビットをＳＩＷにおいて使用してこの動作を指定するよりもむしろ、これは本発明によって除外されないが、ＲＦＩを使用可能にする代替間接機構が使用される。このＳＩＷにおけるビットの節約は、標準動作符号化のための命令フォーマットのよりよい使用を可能にするが、本発明によって提供されたＲＦＩ機能性を達成するための能力を除外しない。この代替機構は、ＭＲＦにおいて特定の場所をアドレス指定することができるいかなるＳＩＷによっても動作する。ＭＲＦにおける多数の場所をこのために提供することができるが、これを除外する可能性のある、特定の実施における他の使用がある。この代替ＲＦＩ使用可能機能を記載するため、図３ＡにおけるＲＦＩＬＳＤ３０４について示されたような、ＭＲＦにおける１つの場所が使用される。
【００４６】
このＲＦＩ使用可能機構を使用するため、ハードウェア復号化論理が拡張されて、ＲＦＩイネーブル信号が、ＸＶ  ＲＦＩ命令が受信されたときだけでなく、ロード、格納又はＤＳＵ命令がＳＰ又はＰＥ命令レジスタにおいて受信されたときにも生成され、これがＲＦＩＬＳＤアドレスを、ロードＲt、格納Ｒs又はＤＳＵ  Ｒt又はＲsオペランドとして指定する。この代替ＲＦＩ使用可能機構を使用する前に、ＲＦＩ制御レジスタがセットアップされ、ブロック・ロード、格納又はＤＳＵ動作において使用される初期レジスタを指定することが必要とされる。開始ビットは、この代替ＲＦＩ使用可能機構において使用されず、これは、ブロック・シーケンスの開始アドレスがポート制御レジスタに格納されるからである。ロード、格納又はＤＳＵ命令を受信すると、これはＲＦＩＬＤＳビットをオペランド・アドレスとして使用し、ＲＦＩモードが使用可能にされ、各レジスタ・オペランド・アドレスが、事前にセットアップされたポート（オペランド）アドレスで、図８、図９及び図１１の各ＲＦＩ論理において示されたようなＲＦＩポート論理によって、置換される。ＲＦＩ及び非ＲＦＩ動作は、図８及び図９のハードウェアを使用するときに混合することができる。実際に、ロード、格納及びＤＳＵ制御レジスタ、図９に示されたようなグループ０及び１のために２つのコンテキストを使用することによって、次いで、第１のデータのブロックにおけるＲＦＩ  ＸＶ動作、第２のデータのブロックにおけるＲＦＩＬＳＤを使用するＲＦＩ動作、及び非ＲＦＩ動作を混合することができる。算術ポート・レジスタ・オペランド・アドレス範囲の適切な拡張によって、算術命令が、ＲＦＩＬＳＤアドレスを参照することによって、ＲＦＩを算術命令実行のために呼び出させることができることを理解されたい。
【００４７】
（ＲＦＩ命令実行）
ＲＦＩ動作は、命令語に含まれた制御情報を介して使用可能にされる。この制御情報が使用されて、従来のレジスタアドレス選択フィールド（命令に含まれたオペランドアドレス・フィールド）が使用されるかどうか、或いは、レジスタのＲＦＩ選択が使用されるかどうかが指定される。現在好ましい実施形態では、命令における制御情報、図２の間接ＶＬＩＷ  ＸＶ命令ビット２１及び２０  ２０２が、ＲＦＩ動作を制御するために使用される制御レジスタ又はレジスタのセットを間接的に指定する。これらの制御レジスタ・グループの１つ又は複数が、図５においてみられるように、ＲＦＩ制御のために使用可能である。ＸＶ  ＲＦＩ命令が、ＲＦＩモードを使用可能にし、ＲＦＩ動作を制御するための制御レジスタ・グループを選択する。図５に示されたＲＦＩ制御レジスタのグループ５１０〜５８０が、すべてのレジスタ・ポートがＲＦＩ制御されることを可能にし、あらゆる実行ユニットがＲＦＩモードで同時に動作できることを意味する。
【００４８】
ＭａｎＡｒｒａｙプロセッサがそのパイプラインの実行段階を、レジスタファイルへのライト・バックにより終了することに留意されたい。この手法は、ライト・バック・サイクルの後の次のサイクルが、この結果を次の動作において使用できるようにする。懸命なプログラミングによって、次いで、ベクトル演算の連鎖がアーキテクチャにおいて固有である。分離した迂回パスを、実行ユニットにおいて連鎖をサポートするために設ける必要はない。
【００４９】
本発明に係るＲＦＩの例示的使用に関する考察がこのとき提示されて、本発明のいくつかの有利な態様が例示される。増分値１、ＲＦＢＳ値（Ｍ）２の累乗、開始レジスタＲ２と仮定すると、レジスタアドレスが、偶数レジスタＲ２及びその対応する奇数レジスタ（アドレス＋１）Ｒ３という、２つのレジスタの間で交替する。ＲＦＢＳ＝４では、レジスタがサイクルを、増分１で４つの値の中でアドレス指定する。以下の表は、いくつかのアドレス・シーケンスを示す。
【００５０】
【表２】
0004657455.tif 000003
【００５１】
簡素な行列ベクトル乗算を、図１Ａのプロセッサ１００など、４−ＰＥ  ＳＩＭＤ  ＶＬＩＷ  ＭａｎＡｒｒａｙプロセッサにおいて計算することが望まれると仮定する。さらに、以下の命令タイプが使用可能であると仮定する。
【００５２】
【表３】
0004657455.tif 000004
【００５３】
また、４×４行列Ａが４つのＰＥであるＰＥ0、ＰＥ1、ＰＥ2及びＰＥ3に分配され、以下の表に示されたように、各ＰＥが行列の行を、レジスタＲ４、Ｒ５、Ｒ６及びＲ７において含むようにする（ＰＥ０が行０を得る、ＰＥ1が行１を得る、など）と仮定する。
【００５４】
【表４】
0004657455.tif 000005
【００５５】
４×１ベクトルのシーケンスがメイン（ＳＰ）メモリ１０５から読み込まれ、行列によって乗算され、結果がローカルのＰＥメモリ１２３、１２３'、１２３”及び１２３'''に格納された場合、適切な順序アルゴリズムが、Ｒ２が最初にゼロであったと仮定された場合、以下のようになる可能性がある。
【００５６】
【表５】
0004657455.tif 000006
【００５７】
このアルゴリズムをＶＬＩＷ命令により実行すると、以下を生じる。
【００５８】
【表６】
0004657455.tif 000007
【００５９】
これらのＶＬＩＷ命令の間の唯一の違いがＭＡＣ命令の第２のレジスタ指定であっても、これは、４ＶＬＩＷタイプの命令に加えて、単一のロードＬＤＢ及び単一の格納ＳＴ命令を必要とする。
【００６０】
このとき、この例がＲＦＩを使用して実行された場合、処理は以下のようになる。すなわち、Ｒ２及びＲ０が共にゼロに初期化され、レジスタファイル索引付けが、ＸＶ命令によって間接的に実行されたＶＬＩＷに関連付けられた以下のパラメータと共に使用されると仮定する。
【００６１】
【表７】
0004657455.tif 000008
【００６２】
このとき、コードを小型のＶＬＩＷ形式において書くことができ、第２のレジスタＲＦＩシーケンスがＲ７→Ｒ４→Ｒ５→Ｒ６→Ｒ７などで開始する。
【００６３】
【表８】
0004657455.tif 000009
【００６４】
最終的な効果は、９個の命令を４個の命令に減らすことである。より少ないＶＬＩＷが使用される事実が、実行されるｉＶＬＩＷの数、及び、ＭａｎＡｒｒａｙアーキテクチャにおいてロードされなければならないＶＬＩＷの数も減らす。これらの節約は間接的であるが、微々たるものではなく、これは、ＶＬＩＷメモリ（ＶＩＭ）がチップの資源において高価なものに相当するからである。ＲＦＩ動作が、必要とされるＶＬＩＷメモリの量を減らし、従って、より高価でないチップを可能にする。
【００６５】
本発明を、現在好ましい実施形態の様々な態様に関連して開示したが、本発明を適切に、後に続く特許請求の範囲に適合する他の環境及び応用例に適用できることは、理解されよう。
【図面の簡単な説明】
【図１Ａ】  本発明と共に使用するために適した、２×２のマンアレイｉＶＬＩＷプロセッサを例示する図である。
【図１Ｂ】  典型的な従来技術のレジスタ・アドレッシング機構を例示する図である。
【図２Ａ】  本発明に係るＲＦＩ使用可能ビットによるＸＶ命令符号化を例示する図である。
【図２Ｂ】  本発明における使用のために適したＸＶ構文／動作の記述を例示する図である。
【図３Ａ】  ＲＦＩ制御レジスタの場所を識別するＭａｎＡｒｒａｙ雑レジスタファイル（ＭＲＦ）を例示する図である。
【図３Ｂ】  ＭＲＦＸ１拡張レジスタを例示する図である。
【図３Ｃ】  ＭＲＦＸ２拡張レジスタを例示し、シーケンスプロセッサ（ＳＰ）及び処理要素（ＰＥ）において使用されたＲＦＩレジスタを識別する図である。
【図４Ａ】  拡張レジスタの選択を制御するＭＲＦＸＡＲレジスタを例示する図である。
【図４Ｂ】  ＭＲＦＸＤＲ１及びＭＲＦＸＤＲ２のためのデータフォーマットを例示し、ＲＦＩ制御レジスタが、図４ＡのＭＲＦＸＡＲレジスタ値によって指定されたようにマップされる図である。
【図５】  本発明と共に使用するための好ましいＲＦＩ制御レジスタを例示する図である。
【図６】  各ＲＦＩポートについて使用された例示的な特定の制御符号化を例示する図である。
【図７Ａ】  本発明のＲＦＩ制御値をロードするために使用することができる、適切なロード即値（ＬＩＭ）命令符号化を例示する図である。
【図７Ｂ】  ＬＩＭ構文／動作の記述を例示する図である。
【図８】  本発明に係る算術実行ユニットのための例示的ＲＦＩ制御ブロック図を例示する図である。
【図９】  本発明に係るロード及び格納実行ユニットのための例示的ＲＦＩ制御ブロック図を例示する図である。
【図１０】  本発明に係る一実施形態における、各ＲＦＩポート論理における更新加算器論理ユニットにおける使用のための、従来の全加算器を例示する図である。
【図１１】  本発明に係る一実施形態における、算術実行ユニットのためのコスト削減型ＲＦＩ制御ブロック図を例示する図である。
【図１Ａ】
0004657455.tif 000010
【図１Ｂ】
0004657455.tif 000011
【図２Ａ】
0004657455.tif 000012
【図２Ｂ】
0004657455.tif 000013
【図３Ａ】
0004657455.tif 000014
【図３Ｂ】
0004657455.tif 000015
【図３Ｃ】
0004657455.tif 000016
【図４Ａ】
0004657455.tif 000017
【図４Ｂ】
0004657455.tif 000018
【図５】
0004657455.tif 000019
【図６】
0004657455.tif 000020
【図７Ａ】
0004657455.tif 000021
【図７Ｂ】
0004657455.tif 000022
【図８】
0004657455.tif 000023
【図９】
0004657455.tif 000024
【図１０】
0004657455.tif 000025
【図１１】
0004657455.tif 000026