(57)【要約】スカラー／ベクトルプロセッサは、複数の機能ユニット（２５２、２６０、２６２、２６４、２６６、２６８、２７０）を含む。機能ユニットの少なくとも一つは、少なくとも一つのベクトルに働くためのベクトル部（２１０）と少なくとも一つのスカラーに働くためのスカラー部（２２０）を含む。機能ユニットのベクトル部とスカラー部は、機能ユニットのベクトル部によって要求されるおよび／またはそれによって供給される少なくとも一つのスカラーを提供および／消費するように配置されたスカラー部によって協働する。
2005527038.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能ユニットを含むスカラー／ベクトルプロセッサであって、前記機能ユニットの少なくとも一つは、少なくとも一つのベクトルに対して動作するベクトル部と少なくとも一つのスカラーに対して動作するスカラー部とを含み、前記スカラー部によって共に動作する前記機能ユニットの前記ベクトル部と前記スカラー部は、前記機能ユニットのベクトル部によって要求および／または供給される少なくとも一つのスカラーを提供および／または消費するように配置されるスカラー／ベクトルプロセッサ。
【請求項２】
複数の前記機能ユニットは、夫々ベクトル部を含み、前記ベクトル部は、第１のパイプラインに配置される、請求項１に記載のスカラー／ベクトルプロセッサ。
【請求項３】
複数の前記機能ユニットは、夫々スカラー部を含み、前記スカラー部は、第２のパイプラインに配置される、請求項１に記載のスカラー／ベクトルプロセッサ。
【請求項４】
前記第１と第２のパイプラインは、互いに独立して構成可能である、請求項２および３に記載のスカラー／ベクトルプロセッサ。
【請求項５】
前記パイプラインの少なくとも一方は、プロセッサ命令毎に構成可能である、請求項２、３または４に記載のスカラー／ベクトルプロセッサ。
【請求項６】
前記スカラー／ベクトルプロセッサは、各機能ユニットに対する個別の命令セグメントを含むＶＬＩＷ命令によって制御される、請求項１に記載のスカラー／ベクトルプロセッサ。
【請求項７】
ベクトル部とスカラー部の両方を有する機能ユニットに対する命令セグメントは、そのベクトル部に対するおよびその機能ユニットのスカラー部に対する夫々の命令を含む、請求項６に記載のスカラー／ベクトルプロセッサ。
【請求項８】
前記ＶＬＩＷ命令は、前記第１および／または第２のパイプラインの構成を含む、請求項５および６に記載のスカラー／ベクトルプロセッサ。
【請求項９】
前記第１のパイプラインは、前記第１のパイプラインに取り付けられた各ベクトル部毎に、ベクトルを転送するための各関連するパイプラインパスを含む、および／または前記第２のパイプラインは、前記第２のパイプラインに取り付けられた各スカラー部毎に、スカラーを転送するための各関連するパイプラインパスを含む、請求項７および８に記載のスカラー／ベクトルプロセッサ。
【請求項１０】
機能ユニットのベクトル部に対する命令は、ベクトルの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定することおよび／または機能ユニットのスカラー部に対する命令は、スカラーの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定する、請求項８および９に記載のスカラー／ベクトルプロセッサ。
【請求項１１】
前記機能ユニットの内の少なくとも一つは、シフトユニットであり、前記シフトユニットのベクトル部は、ベクトルを少なくとも一つスカラーを越えるようにシフトするように動作し、且つ前記シフトユニットのスカラー部は、前記ベクトル中へまたはベクトルからシフトされている少なくとも一つのスカラーを前記ベクトル部へ供給しおよび／またはそれから受信するように動作する、請求項１に記載のスカラー／ベクトルプロセッサ。
【請求項１２】
スカラープロセッサおよび請求項１に記載のスカラー／ベクトルプロセッサを含む処理システムであって、前記スカラー／ベクトルプロセッサは、前記スカラープロセッサに対するコプロセッサとして配置され、前記スカラープロセッサは、前記スカラー／ベクトルプロセッサを制御するように配置され、前記スカラー／ベクトルプロセッサのスカラー部は、ループ内スカラー処理を実行するように配置され、且つスカラープロセッサは、不定期のループ外スカラー処理を実行するように配置される、処理プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スカラー／ベクトルプロセッサに関する。
【背景技術】
【０００２】
ＵＭＴＳ／ＦＤＤ、ＴＤＤ、ＩＳ２０００、およびＴＤ−ＳＣＤＭＡのような第３世代ワイヤレス通信標準は、非常に高い周波数で動作する。ＵＭＴＳのような３Ｇモバイル通信標準用のモデム（トランシーバ）は、ＧＳＭよりも１００倍以上のデジタル信号処理パワーを必要とする。異なる標準を処理出来且つ新たな標準にフレキシブルに適応出来るために、プログラム可能アーキテクチャを使用してこのような標準用のトランシーバを実施することが望まれる。従来の周波数で動作する従来のＤＳＰテクノロジーを使用することは、必要な性能を提供するために３０ＤＳＰを必要とする。このようなアプローチは、単一標準のためのトランシーバの従来のハードウエアベースアプローチに比較して、コスト効率的ではないし、且つパワーが効率的でもない。
【０００３】
プロセッサの性能を向上するための公知のアプローチは、ベクトルアーキテクチャを使用することである。ベクトルプロセッサにおいて、ベクトルは、一つよりも多くの、例えば、１６個の１６ビットエレメントを備える。このプロセッサの機能ユニットは、一つの命令によって起動された、ベクトルの全ての個々のデータ要素で並列に動作する。パイプライン化ベクトルプロセッサを使用して、その性能が、更に向上され得る。
【０００４】
ベクトルプロセッサは、伝統的に、科学的処理のために主に使用されている。原則的には、ベクトルプロセッサは信号処理のためにも使用されることが出来る。しかしながら、従来のベクトルプロセッサアーキテクチャは、「アムダール法則（Ａｍｄａｈｌ‘ｓ  Ｌａｗ）」によって、１００％ベクトル化出来ないアプリケーションに対して効率的ではない。この法則は、ベクトル化出来るコードのフラクションの関数（ｆ）として、Ｐ個の処理エレメントを有するベクトルプロセッサでベクトル化から得られる全体のスピードアップは、（１−ｆ+ｆ／Ｐ）−１に等しい。このことは、コードの５０％がベクトル化出来る時、（３２の理論的最大スピードアップの代わりに）２未満のスピードアップが実現される。これは、コードの残りの５０％がベクトル化されることが出来ないためであり、従って、コードのこの部分のためにスピードアップが達成されない。コードの９０％がたとえベクトル化出来るとしても、スピードアップは、まだ８のファクタ未満である。消費者アプリケーション、特にモバイル通信での使用のためには、ベクトルプロセッサの追加のコストは、顕著なスピードアップが達成できる場合に容認され得るに過ぎない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、高性能タスク、特に、モバイル通信システム用の信号処理のためにより良好に適するプロセッサアーキテクチャを提供することである。
【課題を解決するための手段】
【０００６】
上記目的を満足するために、スカラー／ベクトルプロセッサは、複数の機能ユニットを含み、これらの機能ユニットの内の少なくとも一つは、少なくとも一つのベクトルに対して動作するベクトル部と少なくとも一つのスカラーに対して動作するスカラー部とを含み、スカラー部によって共に動作する機能ユニットのベクトル部とスカラー部は、機能ユニットのベクトル部によって要求および／または供給される少なくとも一つのスカラーを提供および／または消費するように配置されている。
【０００７】
本願の発明者等は、アムダール法則を突破するために、データの非ベクトル化可能部分が、効率的な方法で処理されなければならないことが必要であることを実現した。非ベクトル化可能部分は、スカラーデータを扱う。これらのスカラーは、しばしば、ベクトル演算によって生成および／または消費される。実施例（Ｅｘａｍｐｌｅ）は、ベクトルの全ての要素の合計、最大、最初（最後）のベクトル要素の選択である。他の場合、スカラーデータは、ベクトル演算から独立してもよい。このようなスカラーデータを最適に扱うために、プロセッサの少なくとも１個の機能ユニットは、ベクトル部のみならずスカラー部を含む。スカラー部は、機能ユニットのベクトル部によって要求および／または提供されるスカラーを提供および／または消費する。このように、プロセッサのスカラー部分は、ベクトル部分のために要求される或いはそれによって生成されるスカラーを更に準備或いは処理出来、ベクトル部が、ベクトルのストリーム化処理をより良好に続けることを保障する。米国特許第５，６５９，７０６号は、別個のスカラープロセッサ部とベクトルプロセッサ部とを有するスカラー／ベクトルプロセッサを記述している。これらのプロセッサ部の各々は、機能ユニット内に配置されている。しかしながら、スカラープロセッサ部の機能ユニットとベクトルプロセッサ部の機能ユニットとの間の密接な協働演算はない。両方の部分が、完全に独立して動作する。
【０００８】
従属の請求項２と３に記述されているように、機能ユニットのベクトル部とスカラー部は、夫々、夫々のパイプラインに配置されている。これは、プロセッサのベクトル部とスカラー部の性能を向上する。
【０００９】
従属の請求項４に記述されているように、これらのパイプラインは、互いから独立して構成され得る。これによって、生のデータ処理のためにベクトルパイプラインの最適構成が可能となり、スカラーパイプラインの他の最適構成が、ベクトル処理のためのスカラーの最適消費／生成のために選択され得る。この構成可能性は、性能を向上すると共にプロセッサのプログラミングを単純化出来る。また、このように、プログラムコードが減少され得る。
【００１０】
従属の請求項５に記述されているように、これらのパイプラインの少なくとも一つは、命令毎に構成可能である。このように、性能は、一層向上され、且つコードは、更に減少される。
【００１１】
従属の請求項６に記述されているように、スカラー／ベクトルプロセッサは、各機能ユニット毎に個別のセグメントを有するＶＬＩＷ命令を使用して制御される。好ましくは、ＶＬＩＷ命令は、機能ユニットのスカラー部とベクトル部に対する個別の命令を含む。このように、両部は、それらのタスクを最適に実行出来る。
【００１２】
従属の請求項８に記述されているように、これらのパイプラインは、ＶＬＩＷ命令を介して構成され得る。これは、命令毎にパイプラインを構成する効果的方法である。
【００１３】
従属の請求項９に記述されているように、パイプラインは、そのパイプラインに取付けられる機能ユニットと同じく多くのパイプラインパスを含む。これらの機能ユニットの各々は、これらのパスの一つに関連する。例えば、このようなパスは、機能ユニットがベクトル（またはスカラーパイプラインに対してスカラー）を同報するパスである。従属の請求項１０に記述されているように、機能ユニットに対する命令は、機能ユニットが消費すべきベクトルがどのベクトルパイプラインパスからか（および／またはその機能ユニットが消費すべきスカラーがどのスカラーパイプラインパスからか）を指示する。或いは、機能ユニットに対する命令は、機能ユニットが生成すべきベクトル出力がどのベクトルパイプラインパス上へか（および／またはその機能ユニットが生成すべきスカラー出力がどのスカラーパイプラインパス上へかを指示し、後続のサイクルの一つでそのパスと関連する機能ユニットは、そのユニットに与えられた命令に依存して生成されたデータを消費する。このように、フルパイプライン構成可能性が達成され得ると共に、パイプライン当り一つのみのパスを指示する合理的レベルでネットワークアドレシングを維持する。パスと機能ユニットとの間の固定関係によって、パスを指示することは、機能ユニットを指示すること同じであることが理解される。
【００１４】
従属の請求項１１に記述されているように、シフトユニットは、機能ユニットのスカラー部とベクトル部との協働動作から最適に利益を得る機能ユニットの例である。
【００１５】
本発明の目的を満足するために、処理システムは、スカラープロセッサおよび請求項１に記載のスカラー／ベクトルプロセッサを含み、このスカラー／ベクトルプロセッサは、スカラープロセッサに対するコプロセッサとして配置され、スカラープロセッサは、スカラー／ベクトルプロセッサを制御するように配置され、スカラー／ベクトルプロセッサのスカラー部は、ループ内スカラー処理を実行するように配置され、且つスカラープロセッサは、不定期のループ外スカラー処理を実行するように配置される。スカラー／ベクトルプロセッサを不定期のスカラー演算を処理しないですむようにすることによって、アムダール法則が、重要な部分に対して克服され得る。本発明に従うスカラー／ベクトルプロセッサは、スカラー部とベクトル部の間の緊密な強調が、ベクトル処理が可能な限り続くことを保障するループ内スカラー演算を扱うのに対して最適である。（ＣＭＯＳテクノロジー、演算の周期等のような）テクノロジーは、コスト効率的システムを与えることによって、両プロセッサに対して最適に選択され得る。
【００１６】
本発明のこれらおよび他の態様は、以下に記述される実施の形態から明らかであると共にそれを参照して説明される。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明に従うスカラー／ベクトルプロセッサが使用可能な好適な構成を示す。この構成において、３個の主コンポーネントが、バス１１０を介して接続される。これら３個の主コンポーネントを接続するこのバス１１０は、任意の好適なバスでよく、例えば、ＡＭＢＡ高速バス（ＡＨＢ）である。これらの主コンポーネントは、
・本発明に従うプログラム可能スカラー／ベクトルプロセッサ１２０であり、機能ユニットと（図１では、ベクトルメモリと呼ばれる）ローカルデータメモリを備える。
・マイクロコントローラまたはＤＳＰサブシステム１３０であり、限られたオンチッププログラムとデータメモリを含む。
・インターフェースブロック１４０である。
【００１８】
スカラー／ベクトルプロセッサ１２０は、主に、定期的な「ヘビー／デューティ」処理、特にループ内処理のために使用される。スカラー／ベクトルプロセッサは、ベクトル処理機能性を含む。そのように、このスカラー／ベクトルプロセッサは、実行されるべきコードのベクトル化可能部分に対する大規模並列化を提供する。全ての信号処理の非常に多くの部分は、スカラー／ベクトルプロセッサのベクトル部によって実行される。例えば、同じ命令を実行する３２個の同じ処理エレメントのアレイの場合、このアレイは、大量の並列化を提供する。３２ワード幅メモリインタフェースを組み合わせると、これは、低コストで空前のプログラム可能性能レベルに繋がると共にパワー−消費を緩和する。しかしながら、多くのアルゴリズムが、正しい形態の十分なデータ並列化を示さないので、この並列化を十分に活用することは、常に実現可能ではない。アムダール法則によれば、コードの直接的ベクトル化可能部分のベクトル化の後に、大部分の時間が、残りのコードに費やされる。この残りのコードは、４つのカテゴリーに分割されることが出来る。
【００１９】
・アドレス関連命令（例えば、モジュロアドレス指定を使用して、ポインターをサークルバッファへ増分すること）
・定期的スカラー演算（即ち、ベクトルプロセッサの主ループに対応するスカラー演算）
・ルーピング
・不定期のスカラー演算
これらのカテゴリーの各々に対するコードのフラクションは、実行されるアルゴリズムに大きく依存する。例えば、（Ｐ−ＳＣＨサーチに使用される）ゴレイ（Ｇｏｌａｙ）相関器は、多数のアドレス関連命令を必要とするが、レーキ（Ｒａｋｅ）のような他のアルゴリズムでは、それは適用できない。しかしながら、本発明者等が研究した全てのアルゴリズムの一つの共通の特性は、不定期のスカラー演算の部分は、非常に限られることである。この特性は、スカラー／ベクトルプロセッサ（１２０）とマイクロコントローラまたはＤＳＰ（１３０）の間でタスクの分離を可能とする。
【００２０】
本発明に従うアーキテクチャは、ベクトル処理と緊密に統合されたスカラー／ベクトルプロセッサ１２０のスカラー処理機能性を組み込むことによって、最初の３つの問題を克服する。４番目の問題は、不定期タスクを実行する、好ましくは、良好にスカラー／ベクトルプロセッサを制御する別個のマイクロコントローラまたはＤＳＰ１３０を使用することによって、克服され得る。この好適な構成において、スカラー／ベクトルプロセッサ１２０は、プログラム可能コプロセッサ（後で、ＣＶＰ、コベクトルプロセッサ（Ｃｏ−Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｏｒ）と呼ばれる事もある）として働く。スカラー／ベクトルプロセッサ（１２０）とマイクロコントローラ１３０とのインターフェースは、（例えば、共用メモリを介する）通信と（例えば、共用メモリと状態信号を介する）同期を扱う。このインターフェースは、好ましくは、メモリマッピングされる。
【００２１】
インターフェースブロック１４０は、プロセッサがシステムの残りの部分と対話することを可能とする。好適な実施の形態において、スカラー／ベクトルプロセッサは、２Ｇ／３Ｇモバイルネットワークに対するソフトウエアモデム（トランシーバ）として使用される。このようなソフトウエアモデム機能に対して、無線を制御しインターフェースすることは、スカラー／ベクトルプロセッサ（制御は、不定期であり、データは、本来直列に通信される）または、マイクロコントローラ１３０（割込みレートが高過ぎる）によっては簡単に実行されることが出来ない。このようなアプリケーションに対して、マイクロコントローラ１３０の制御下で、制御およびデータワードをベクトルメモリ、例えばＤＭＡへパスするメインタスクを有するフロントエンドとして専用のハードウエアを使用することが好ましい。次に、ベクトルメモリのデータは、スカラー／ベクトルプロセッサによって処理される。ソフトウエアモデムに対して、スカラー／ベクトルプロセッサによって実行される受信機機能は、フィルタ、レーキ受信機、チャネル予測器、サーチャー、デインターリーバ、アップリンク、ターボデコーダ、ビタビデコーダ、およびデマルチプレクサを含むことが出来る。スカラー／ベクトルプロセッサによって実行される送信機機能は、マルチプレクサ、チャネルデコーダ、インターリーバ、送信機、およびフィルタを含むことが出来る。それ自体、これらの機能は、公知であり、更には述べない。
【００２２】
スカラー／ベクトルプロセッサ１２０は、バス１１０に対してスレーブであり、マイクロコントローラ１３０と（ＤＭＡユニットを含んでいても良い）インターフェースブロック１４０は、マスターとして働く。プログラム、データ或いは制御である、ＣＶＰを有する全ての通信は、メモリマッピングされるのが好ましい。メモリは、オフチップＤＲＡＭでもよく、このＤＲＡＭは、スカラー／ベクトルプロセッサによって（デ）インターリーブメモリとして使用される。
【００２３】
図２は、本発明に従うプロセッサの主構造を示す。このプロセッサは、パイプラインベクトル処理セクション２１０を含む。図２の好適な実施の形態では、ベクトル部は、以下に詳細に記述される７個の機能ユニットを含む。当業者は、指定のタスクに対して最適な機能ユニットを選択出来る。このベクトル部の動作をサポートするために、スカラー／ベクトルプロセッサは、ベクトル部と並列に動作可能に配置されるスカラー処理セクション２２０を含む。好ましくは、スカラー／ベクトルプロセッサは、パイプライン化される。ベクトル部の動作をサポートするために、ベクトル部の少なくとも一つの機能ユニットは、スカラー部の対応する部分の機能性を提供する。例えば、シフト機能ユニットのベクトル部は、ベクトルを機能的にシフト出来、そこでは、スカラーコンポーネントは、シフト機能ユニットのスカラー部によって供給される（スカラー部に引き渡される。このように、シフト機能ユニットは、ベクトル部とスカラー部の両方をカバーする。従って、少なくとも幾つかの機能ユニットは、ベクトル部のみならずスカラー部を有し、ベクトル部とスカラー部がスカラーデータの交換によって協働出来る。機能ユニットのベクトル部は、生の処理パワーを提供し、対応するスカラー部（即ち、同じ機能ユニットのスカラー部）は、スカラーデータを供給および／または消費することによってベクトル部の動作をサポートする。ベクトル部に対するベクトルデータは、ベクトルパイプラインを介して供給される。
【００２４】
複数の機能ユニット（ＦＵ）は、並列に動作する。各ＦＵは、ベクトルデータを受信および送信出来る。多くのＦＵは、スカラーデータも受信および送信出来る。ＦＵの一つは、指定のＦＵであり、命令配信ユニット（ＩＤＵ２５０）と呼ばれる。このユニットは、プルグラムメモリ２５２を含み、命令を順番に配列し、命令セグメントをそれ自体と他のＦＵに配信するように働く。原則的には、各ＦＵは、３個のセクション、制御２３０、スカラー２２０、およびベクトル２１０を有する。以下に詳細に記述されるように、幾つかのＦＵの制御部とスカラー部は、空である。
【００２５】
本発明に従うスカラー／ベクトルプロセッサは、二つの主要な方法で命令レベルの並列化を適用する。
【００２６】
１．ベクトル処理、ここでは、単一の命令が（スカラー）データのベクトルに働く。このアプローチは、単一命令ストリーム、複数データストリーム或いはＳＩＭＤとして知られている。
【００２７】
２．複数の機能ユニットの並列処理、各ユニットは、ベクトルに働く。これは、ＶＬＩＷ命令レベルの並列化の（限られた）形態として見られる。
【００２８】
命令レベルの並列化のこれら二つの形態は、互いに独立しており、それらの効果は、累積的である。
【００２９】
機能ユニット（ＦＵ）（複数）の概要
好適な実施の形態において、ＣＶＰは、以下の７個の特殊化機能ユニットを含む。
【００３０】
・命令配信ユニット（ＩＤＵ２５０）。このＩＤＵは、プログラムメモリ２５２を含み、連続するＶＬＩＷ命令を読み出し、各命令の７個のセグメントを７個の機能ユニットに配信する。このましくは、このＩＤＵは、３個までのゼロオーバーヘッドループの入れ子レベルをサポートするループを含む。好適な実施の形態では、このＩＤＵは、分岐、ジャンプ、または割込みをサポートしない。初期プログラムカウンタは、以下で詳細に述べられるスティント（ｓｔｉｎｔ）記述子からロードされる。
【００３１】
・ベクトルメモリユニット（ＶＭＵ２６０）。このＶＭＵは、（図２には示されていない）ベクトルメモリを含む。各命令中に、このＶＭＵは、ラインまたはベクトルをベクトルメモリから送信でき、或いは、ラインをベクトルメモリに受信出来る。更に、同じ命令は、スカラー送信演算および／または受信演算を指定出来る。ＶＭＵは、外部世界、即ち、外部バス１１０に接続される唯一の機能ユニットである。
【００３２】
・コード発生ユニット（ＣＧＵ２６２）．このＣＧＵは、有限体算術に特化される。例えば、ＣＧＵは、ＣＤＭＡコードチップのベクトル、並びにチャネルコーディングおよびＣＲＣのような関連する関数を発生するために使用され得る。
【００３３】
・ＡＬＵ−ＭＡＣユニット（ＡＭＵ２６４）。このＡＭＵは、正則整数と固定点算術に特化されている。このＡＭＵは、イナーベクトル演算をサポートし、そこでは、算術は、複数のベクトルに対して要素毎に実行される。好適な実施の形態では、ＡＭＵは、幾つかのイントラベクトル演算を提供し、そこでは、算術は、単一ベクトル内で要素に対して実行される。
【００３４】
・シャッフルユニット（ＳＦＵ２６６）。このＳＦＵは、指定されたシャッフルパターンに従って、ベクトルの要素を再配置出来る。
【００３５】
・左シフトユニット（ＳＬＵ２６８）。ＳＬＵは、ワード、ダブルワードまたはクワォドワードのような単位によってベクトルの要素を左にシフト出来る。生成されたスカラーは、そのスカラー部に提供される。発行されたＳＬＵベクトル演算のタイプによって、消費されたスカラーは、ゼロであったり、そのスカラー部から取り出される。
【００３６】
・右シフトユニット（ＳＲＵ２７０）。このＳＲＵは、ＳＬＵと同様であるが、それは、右にシフトする。更に、このＳＲＵは、ＡＭＵ上のイントラベクトル演算からの累算結果を併合する能力がいる。
【００３７】
以下の表は、全てのＦＵが機能ベクトル部を有することを示し、そこでは、幾つかが、制御部やスカラー部を持たない。
【表１】
2005527038.tif 000003
【００３８】
指定のアプリケーションに対して、他のＦＵが選択されてもよいことが理解される。好ましくは、基本プロセッサにおいて、ＡＭＵとＶＭＵは、ＩＤＵと組合されて使用される。パワー消費が、重要である場合、ＳＦＵはドロップできる。この理由は、このユニットは、シャッフル動作を助けることが出来るシャッフルユニットよりも多くのパワーを消費するからである。ＳＦＵは、特にビタビコーディングにとって有用である。ＣＧＵとＣＧＵの指定の形態は、従来のＡＭＵ命令、例えば、ガロア体計算およびスクランブル化コードの発生を使用して、生成するのが困難であるコードの計算要求によって選択される。あるアプリケーションでは、ＦＵのより高い平均負荷を得るために、一つまたはそれより多くのＡＭＵを追加することが有利である。また、他の専用ＦＵが、例えば、あるビットレベル計算を実行するために追加されてもよい。
【００３９】
好ましくは、ＦＵの少なくとも一つは、ＦＵの動作がＦＵに格納されているパラメータによって影響を及ぼされるという意味で構成可能である。好ましくは、このようなパラメータ（「構成データ」）は、ベクトルメモリから読み出される。このような構成は、プロセッサのプログラミングを簡単化し且つコードサイズを減少するのを助ける。
【００４０】
インターＦＵ通信
全ての機能ユニットは、並列に動作する。それらへの命令のセグメントを受信すると、機能ユニットは、データと、ベクトルデータおよびスカラーデータ（適用出来る場合）の両方とを入力、処理および出力する。ＦＵ同士間において、通信は、スカラー部同士間およびベクトル部同士間（インターＦＵ通信）では、厳格である。即ち、ＩＤＵを除き、全てのＦＵのベクトル部は、パイプラインで接続される。好適な実施の形態において、このパイプラインは、命令ベースで構成可能である。その結果、好ましくは、ＦＵは、相互接続ネットワークによって相互接続され、原則的には、各ベクトル部が各サイクル中に他のベクトル部の何れかからのベクトルを受信出来る。とりわけ、この特徴によって、（ＩＤＵを除く）ＦＵの任意のパイプラインの生成が可能となる。ベクトルパスへ寄与する機能ユニットの６個は、各クロックサイクル中に、ベクトルを出力出来、且つそれを他のユニットに並列に送信出来る。これらのユニットは、他のユニットからベクトルを受信出来る。ネットワークは、略完全に接続される。重要ではないリンクのみが、省略される。ベクトルパスの接続性は、以下に表にされる（！は、接続を示す）。ＡＭＵは、同時に二つのベクトルを受信出来ることに留意すべきである。
【表２】
2005527038.tif 000004
【００４１】
図２に示されるように、ネットワークは、（ディスクによって指示される）信号ソースとして一つのネットワークパスに接続される各ＦＵによって形成されるのが好ましい。ネットワークは、（三角形によって指示される）信号シンクとして全ての他のパスに接続される。ＦＵに対するＶＬＩＷ命令のセクションは、どのパスからのベクトルを消費すべきかを指示する。このように、パイプラインは、命令ベースで構成される。各パスは、例えば、２５６個の並列ワイヤを使用して、フルベクトルを転送出来る。同様に、ＦＵのスカラー部の少なくとも幾つかは、別個のパイプラインによって接続される。このパイプラインもまた、命令ベースで構成され得る。ＦＵのスカラー部同士間の相互接続ネットワークは、スカラーが少なくとも一つのＦＵのスカラー部へ送信されないまたはそれから受信されないという意味で部分的でもよい。従って、より少ない数のパイプライン順序付けが指定され得る。スカラーおよびベクトルパイプラインは、互いから独立していることが出来る。例えば、関連するＶＬＩＷセクションを指示することによって、スカラーパイプラインとベクトルパイプラインの両方が、機能ユニットによって読み出される。データを出力するための固定の関連するパスを有するＦＵの代わりに、データを受信するための固定の関連するパスを持っても良く、ＶＩＬＷ命令は、データが出力されるべきパスを指示することが理解される。
【表３】
2005527038.tif 000005
【００４２】
構成可能性の例として、最初のＶＬＩＷは、ＣＧＵによって生成されたベクトルとＶＭＵによって生成されたものとをＡＮＵに消費させる。次の命令は、ＶＭＵからのベクトルをＳＦＵに消費させ、且つＳＦＵからのベクトルをＡＭＵに消費させる。３番目の命令は、ＶＭＵからのベクトルをＡＭＵに消費させ、且つＡＭＵからのベクトルをＳＦＵに消費させる。
【００４３】
異なる機能ユニットの制御部同士間で指定される接続性はない。これらの制御部は、ＩＤＵからＶＬＩＷ命令のセグメントを受信し、それら自体の状態を更新し、それらの夫々のスカラー部とベクトル部を制御する。
【００４４】
イントラＦＵ通信
ＦＵ内には、これらのセクション同士間には強固な相互作用（イントラＦＵ通信）がある。相互作用は、ＦＵの演算の整数部である。例は、ＳＬＵとＳＲＵであり、生成および／または消費されたスカラーは、ＦＵの対応するスカラー部へ提供および／またはそれから取り出される。より詳細は、ＦＵの詳細な説明の部分として示される。
【００４５】
命令は、典型的には、単一サイクルで実行される。例外は、ベクトルメモリでの混雑によって引き起こされ、停止サイクルとしてそれら自体を明らかにする。
【００４６】
データ幅とデータタイプ
好適な実施の形態において、スカラー／ベクトルプロセッサは、図３に示されるように、複数のデータ幅とデータタイプをサポートする。メモリアドレス指定の基本単位は、シングルワードとも呼ばれるワードである。好ましくは、データ幅は、シングルワード（Ｗ）、ダブルワード（ＤＷ）、またはクワォド（ＱＷ）ワードである。サイズは、Ｗ＝８ビットである。ダブルワード（２Ｗ＝１６ビット）は、１対のワードであり、そのアドレスは、常に偶数値である。クワォドワード（４Ｗ＝３２ビット）は、１対のダブルワードであり、クワォドワードアドレスは、４の倍数である。シングルワードの対またはダブルワードは、複素数として使用出来る。ベクトルは、ＰＱ個のクワォドワードよりなり、それは、２ＰＱ個のダブルワードおよび４ＰＱ個のシングルワードに対応する。全ベクトル幅を与えるＰＱ＝８は、８ビットの好適なワードサイズに対して２５６ビットである。
【００４７】
好適な実施の形態において、ＣＶＰは、以下のデータタイプ：整数と複素整数をサポートする。
【００４８】
１．整数（ｉｎｔ）は、三つのサイズ：ワード、ダブルワードおよびクワォドワード、即ち、Ｎが、Ｗ、２Ｗまたは４Ｗに等しい時、整数範囲［−２Ｎ−１…２Ｎ−１−１］に入る。
２．複素整数タイプ、即ち、図３にｉｎｔ．ｒｅａｌとして示される１対の整数（実数、虚数）。複素整数は、２つのサイズ：ダブルワードとクワォドワードに入る。
【００４９】
スカラーは、データタイプ、整数または複素整数のいずれかの値である。従って、スカラーは、三つのサイズ：（シングル）ワード、ダブルワード、およびクワォドワードに入る。ベクトルは、ＰＱ個のクワォドワードの固定サイズを有する。ベクトルは、三つの以下のフォーマットの内の一つに構造化される。
【００５０】
１．サイズクワォドワードのＰＱ個の要素
２．サイズダブルワードのＰＤ＝２ＰＱ個の要素
３．サイズ（シングル）ワードのＰＳ＝２ＰＤ＝４ＰＱ個の要素
ベクトル要素指標付け範囲は、［０…４ＰＱ−１］である。従って、ダブルワードは、偶数の指標を有し、クワォドワードの指標は、４の倍数である。図３は、データサイズとデータタイプとの間の関係の概観を示している。アーキテクチャは、ＰＱにおいて十分にスケーラブルであり、任意のベクトルサイズＰＱ＞１に対して定義される。しかしながら、多くの場合、ＰＱに対して２のべき乗を選択することが好ましい。
【００５１】
好適な実施の形態において、３２ワードのデータパス幅とメモリ幅を含む場合、ＰＱは、８である。
【００５２】
関連する数学演算は、データタイプにおけるばらつきを処理するように構成またはプログラムされ得る。例えば、４個の基本的（低精度）マルチプレクサは、２倍精度のマルチプレクサまたは複素マルチプレクサに組み合わせられる。このような技術は、ＤＳＰおよび回路設計において周知であり、更には記述しない。
【００５３】
プログラム実行
スティント（ｓｔｉｎｔ）は、ＣＶＰ−プログラム実行と同期の単位である。スティントは、有限シーケンスのＣＶＰ命令によって記述される有限で割り込みの無いタスクである。スティント（ｓｔｉｎｔ）は、典型的には、連続するアクティブＤＳＰカーネルの時間スライスであり、その記述には２〜３ダースの命令を必要とし、その実行には２〜３百のサイクルを必要とする。
【００５４】
ＣＶＰプログラムメモリは、多くのスティントプログラムを含む。どのスティントをどの順序で実行すべきかをマイクロコントローラ１３０に指定する。このために、マイクロコントローラ１３０は、いわゆるスティント記述子のリンクリストをベクトルメモリに書き込むことが出来る。各スティント記述子は、対応するオブジェクトコードを参照し、そのスティントが完了すると可能な信号（単数または複数）をサクセッサのｓｔｉｎｔ記述子に発生する。スティント記述子は、３つのフィールドよりなるベクトルメモリ中の構造である。
【００５５】
・プログラムメモリ中のオブジェクトコードのスタートアドレス
・ベクトルメモリ中のサクセッサスティント（実行されるべき次のスティント）のアドレス；サクセッサがない場合はnil
・信号送信記述子
ベクトルメモリ中にスティント記述子を配置する代わりに、スティント記述子は、ＣＶＰプログラムメモリに配されても良い。
【００５６】
好適な構成において、スティントの実行は、以下の方法で起動されることが出来る。
【００５７】
１．ＣＶＰは、アイドル状態にある。マイクロコントローラ１３０は、ＳＤののアドレスを指定されたＶＭアドレスに書き込むことによってスティントの実行を起動することが出来る。この特定のＶＭ位置は、現在アクティブのスティントのアドレスを含み、ＣＶＰがアイドルである時のニル（nil）値を含む。
２．スティントが完了すると、ＣＶＰプログラムの明確なＥＯＳ（ｅｎｄ  ｏｆ  ｓｔｉｎｔ（スティントの終了））によって指摘されるように、サクセッサが現在のＳＤに指定されると、ＣＶＰは、サクセッサスティントを続ける。そのようなサクセッサが存在しないならば、ＣＶＰはアイドル状態に戻る。
【００５８】
スティントの状態（アクティブ／完了）は、マイクロコントローラ１３０によってＶＭの中の指定された「現在のスティント（ｃｕｒｒｅｎｔ−ｓｔｉｎｔ）」位置を検出することによってポーリングされる。スティントが完了すると、ＣＶＰは、任意ではあるが、その環境に信号を送ることが出来る。１セットの信号ワイヤ（出力ワイヤ、少なくとも一つ）に対して、それを引き上げる、引き下げる、或いはその状態をトグルすることが指定され得る。これらの信号は、例えば、マイクロコントローラ１３０とインターフェースブロック１４０の入力に割り込むように接続されることが出来る。
【００５９】
命令
ＣＶＰ命令は、制御命令またはＶＬＩＷ命令である。制御命令は、ゼロ−オーバーラップループ初期化またはスティント終了である。ブランチ、ジャンプまたはサブルーチンはない。ＶＬＩＷ命令は、セグメントに区分され、各命令セグメントは、対応する機能ユニットによって実行されるべき動作（単数または複数）を指定する。セグメントは、ベクトル部および（もしあるなら）スカラー部に対して更に部分に細分割され得る。また、セグメントは、両方の部分に対して、データ（ベクトル部に対する一つまたはそれより多くのベクトルおよびスカラー部に対する一つまたはそれより多くのスカラー）を受信するために使用されるべきネットワーク部分に関する情報を含む。
【００６０】
スカラー／ベクトルプロセッサの状態
ＣＶＰの状態は、その機能ユニットの組合された状態である。好適な実施の形態において、ＣＶＰは、
・ベクトルメモリ（ＶＭＵの部分）
・プログラムメモリ（ＩＤＵの部分）
・ベクトルレジスタ（全ての機能ユニット）
・プログラムカウンタを含む制御レジスタ、およびアドレスオフセットレジスタ
プログラマー可視レジスタに加えて、ＣＶＰ実現は、典型的には、パイプライン化とキャシングのための追加の（ベクトル、スカラーおよび制御）レジスタを含む。これらは、ＣＶＰ命令セット構成の一部ではない。
【００６１】
（ベクトル、スカラーおよび制御）レジスタのいくつかは、いわゆる構成レジスタ（コンフィギュレーションレジスタ）である。構成レジスタの内容は、ベクトルメモリからロードされるだけである（その値を変化する他の方法はない）。構成レジスタは、機能ユニットの構成をサポートし、典型的には、機能パラメータを定義する。これらの半一定「機能パラメータ」を構成レジスタに格納することによって、命令幅とメモリトラフィックの両方が、大きく減少される。
【００６２】
ＣＶＰ状態のコンポーネントの概略は、以下の表に示される。
【表４】
2005527038.tif 000006
【００６３】
全てのプログラマー可視レジスタは、ベクトルメモリからロードされる。構成レジスタを除く全てのレジスタは、ベクトルメモリにセーブされ得る。スティントの終わりにＣＶＰレジスタをセーブすることによって、およびそれらを後で回復することによって、ＣＶＰは、他方であたかも他のスティントが実行されないように、特定のタスクを続ける。これらのセーブおよび回復動作は、任意であり、部分的であっても良く、明確にプログラムされなければならない。
【００６４】
命令レベル実行
スティントのプログラムは、ＩＤＵ内のプログラムメモリに格納される。ＩＤＵは、プログラムカウンタを制御し、現在の命令を読み出し、且つ６個の機能ユニットの命令の６個のセグメントを配分する。典型的には、各クロックサイクル毎に、一つの命令が発行される。そのルールに対する唯一の例外は、複数のベクトルメモリアクセスが一つのサイクルで実現出来ない時に、ＶＭＵの停止サイクルによって引き起こされる。メモリの輻輳と関連する停止サイクルは、単一のサイクルに複数のキャッシャミスがある場合に、発生し得る。
【００６５】
データ依存制御はないので、ＩＤＵから他の機能ユニットへのトラフィクは、一方向である。これは、ＣＶＰ命令のパイプライン化の実行を顕著に簡単化する。このパイプライン化は、可能な限りプログラマーから隠される。例えば、一つの命令のソースレジスタは、前の命令のターゲットレジスタであり得る。この唯一の可視パイプライン効果は、ベクトルパスにおける乗算のような「高価な」リソースに関連する。多くの動作は、多数のクロックサイクルの待ち時間を有する。更に、これらのサイクルの幾つかは、多数のクロックサイクルの開始インターバルを有する。（動作がｎ個のサイクルの開始インターバルを有する時、そのソートの二つの動作は、時間に関して（ｎ−１）個のサイクルだけ分離されなければならない。）
【００６６】
好適な機能ユニットの詳細な記述
ＣＶＰの各機能ユニットは、制御、スカラーおよびベクトル部に区分され得る。これらのセクションは、５つの要素：入力、出力、状態、次の状態関数、および出力関数からなるムーア・マシンモデルに従って、モデル化される。
【００６７】
ムーア・マシンの状態は、利用可能なメモリおよび／またはレジスタ（単数または複数）によって決定される。各機能ユニットに対して、対応するガードを含む全ての許可された遷移の表が与えられる。ガードは、遷移の発生に対して真であることが必要な条件である。遷移は、ムーア・マシンの次の状態の関数と出力関数を定義する。実際のデータから遷移表におけるタイプを抽出出来るために、以下の規定が使用される。
【００６８】
・Ｐは、処理要素の数を示す。データサイズに依存して、Ｐは、ＰＳ（ＷＯＲＤデータ要素）、ＰＤ（ＤＷＯＲＤデータ要素）またはＰＱ（ＱＷＯＲＤデータ要素）へ評価する
・そうでないとの指定が無い限り、Ｃ−スタイルシンタックスが使用される。
【００６９】
・矩形括弧は、ベクトル内の要素を選択するように使用される。例えば、ｖ［ｐ］は、ベクトルｖの要素ｐを指す
・複素数値ｘの真数部と虚数部は、夫々、Ｒｅ（ｘ）とＩｍ（ｘ）によって示される。
【００７０】
・括弧〈および〉は、複素数対を指すために使用される。例えば、〈ｒｅ，ｉｍ〉は、複素数ｒｅ＋ｊ・ｉｍを指す
・演算子∀（「ｆｏｒ  ａｌｌ」）は、演算がベクトル要素の範囲に対して実行されなければならないことを示すのに用いられる。演算子は、順序を全く含まない（即ち、範囲内の全ての要素は、並列に処理され得る）。例えば、∀ｐ：０＜ｐ＜Ｐ{ｖ［ｐ］＝０}は、ベクトルｖの全ての要素は、０にセットされる。範囲（例のｐ）を指すために使用されるダミー変数は、関数的意味を持たない
・演算子∧（「ａｎｄ」）は、並列に実行され得る演算を分離するために使用される。換言すれば、Ｃ−セパレータ「；」と異なり、∧演算子は、演算がシーケンシャルに実行されなければならないということを含まない。
【００７１】
・Ｃ：「ｃｏｎｄ？ｅｘｐ１：ｅｘｐ２」から知られる「ｉｆ−ｔｈｅｎ−ｅｌｓｅ」演算子は、ｃｏｎｄが真で、ｅｘｐ２がそうで無い場合に評価される。
【００７２】
命令配信ユニット
図４は、命令配信ユニット（ＩＤＵ４００）のブロック図である。ＩＤＵは、以下の機能を含む：
・ＩＤＵは、プログラムメモリ４１０を含む
・ＩＤＵは、操作４２０を他の機能ユニットに配信する
・ＩＤＵは、スティント記述子を解釈し、マイクロコントローラ１３０によって発行されるカーネルの実行を制御する
後者の場合、ＩＤＵは、プログラムカウンタ４３０を維持し、且つ三つの入れ子レベルを含むゼロ−オーバーヘッドルーピンングをサポートする。
【００７３】
命令配信ユニット（ＩＤＵ）は、５つの命令タイプの一つを出すことが出来る：
１．ノーマルＶＬＩＷ命令（ＮＯＲＭＡＬ）
２．ゼロ−オーバーヘッド−ループ初期化命令（ＬＯＯＰ）
３．エンドオブスティント（スティントの終了）命令（ＥＯＳ）
４．サブルーチン呼出命令（ＣＡＬＬ）
５．サブルーチンリターン命令（ＲＥＴＵＲＮ）
命令＝（ＮＯＲＭＡＬ、ｃｏｍｍａｎｄｓ）｜（ＩＤＵ_ｃｍｄ，ｐａｄｄｒ，  ｃｏｕｎｔ）
コマンド＝（ＶＭＵ_ｃｍｄ，ＣＧＵ_ｃｍｄ，ＡＭＵ_ｃｍｄ，ＳＦＵ_ｃｍｄ，ＳＬＵ_ｃｍｄ，ＳＲＵ_ｃｍｄ）
ＩＤＵ_ｃｍｄ＝ＬＯＯＰ｜ＥＯＳ｜ＣＡＬＬ｜ＲＥＴＵＲＮ
ｐａｄｄｒ＝{０，．．．，６５５３５}
ｃｏｕｎｔ＝{１，．．．，６５５３６}
入／出力は、
【表５】
2005527038.tif 000007
【００７４】
ＩＤＵベクトル部は、ＣＶＰプログラムメモリ４１０を含む：
【表６】
2005527038.tif 000008
【００７５】
（ＣＶＰがＶＭＵによって停止されない場合）各サイクル毎に、ＣＶＰ命令は、プログラムカウンタ（ＰＣ４３０）によってポイントされるプログラムメモリ位置から取り出される。この命令は、以下の５つのタイプの一つであり得る。
【００７６】
１．ノーマルＶＬＩＷ命令：命令のコマンドフィールドに符号化されたコマンドは、その他の機能ユニットに配信される。
【００７７】
２．ＩＤＵループ初期化命令（ＬＯＯＰ）：ループ制御レジスタは、命令のＰＡＤＤＲおよびＣＯＵＮＴフィールドに従って設定される。ＬＯＯＰ命令に従う命令よりなり、ＰＡＤＤＲフィールドによって指定される命令を含む）ループボディは、少なくとも一つの命令を含むべきである。１命令のループボディは、「特別ケース」として自動的に認識され、且つＲ．Ｅ．Ａ．Ｌ．ＤＳＰの繰り返し命令と同様に処理されることに留意すべきである。入れ子ループは、同じエンドアドレスを有することが可能である。物理的に実施されたプログラムメモリの範囲外にあるエンドアドレスに対する動作は、定義されない。追加のアドレスビットが、プログラムメモリの将来の拡張のためにリザーブされる。ループスタートアドレスは、ＬＯＯＰ命令に従う第１の命令のアドレスに自動的に設定される。非動作コマンドが、全ての他の機能ユニットへ配信される
３．スティント命令のＩＤＵエンド（ＥＯＳ）：現在のスティント記述子で指示される場合、一つまたはそれより多くの信号は、スティントの完了を指示するために発生される。次に、次のスティントポインタは、評価される。それがnilである場合、ＣＶＰは、アイドルモードに入り、そうでない場合、次のスティントポインタがロードされ、プログラムカウンタ（ＰＣ）の初期化後に、対応するスティントの実行が開始する。
【００７８】
４．サブルーチン呼出の最小形態をサポートする、ＩＤＵサブルーチン呼出命令（ＣＡＬＬ）．サブルーチン呼出メカニズムは、入れ子の３つのレベルをサポートし、且つリターンアドレスをセーブするに過ぎない。破壊されてはならないレジスタ内容のセービングは、プログラマーの責任であり、プログラマーは、どの呼出規定（呼者セーブまたは被呼者セーブ）を使用するか選択出来る。ＰＡＤＤＲフィールドは、呼び出されるべきサブルーチンの第１の命令のアドレスを含み、従って、プログラムカウンタに直接ロードされ得る。リターンアドレススタックにセーブされたリターンアドレスは、ＣＡＬＬ命令に続く命令のアドレスである。
【００７９】
５．ＩＤＵサブルーチンリターン命令（ＲＥＴＵＲＮ）であり、これは、プログラムカウンタを対応するＣＡＬＬ命令に続く命令に戻す（上記を参照）。
【００８０】
ＩＤＵ制御部は、ＣＶＰプログラムカウンタ（ＰＣ）を含む。また、このセクションは、ゼロ−オーバーヘッドルーピングおよびサブルーチン呼出を可能とし、それらは、次の入れ子に対する３つのレベルをサポートする。
【表７】
2005527038.tif 000009
【００８１】
ベクトル−メモリユニット
図５Ａは、ベクトル−メモリユニット（ＶＭＵ５００）のブロック図を示す。ＶＭＵは、ベクトルメモリ５１０を含むと共にそれを制御し、巨大なデータバンド幅を他の機能ユニットに提供する。物理的ベクトルメモリ５１０は、単一ポートＳＲＡＭに基づくことが好ましい。Ｐｓ*Ｗ幅である埋め込みＳＲＡＭは、一般的に利用出来ないので、物理的メモリが、並列に配置される幅広のランダムアクセスメモリ（ＲＡＭ）の一つまたはそれより多くのバンクによって形成される。好適な実施の形態では、ベクトルは、メモリにおいて、ベクトル境界で一列に並べられる必要はない。このように、ＰＳワードよりなるベクトルは、任意のメモリアドレスを有することが出来る。メモリラインは、同じサイズを有するが、そのスタートアドレスは、定義によって、Ｐｓの倍数である。（ラインアドレスに対して、アドレスの最小自乗ｌｏｇＰｓは無視される）。ベクトルの任意のアラインメント（典型的には、最小ワード境界のアラインメント）を可能とすることによって、メモリは、空位置をより少なくしてより良く利用されることが出来る。以下でより詳細に述べられるように、スカラー／ベクトルプロセッサが個々のベクトルを読み出し／書き込みを可能とするための対策が採られると共に、ベクトルは、物理的メモリの二つの連続するラインに格納されることが出来る。好ましくは、スカラーデータは、ベクトルデータを格納するために使用されるのと同じメモリに格納される。このようなシステムにおいて、スカラーは、それらに対応するベクトルとインターミックスされる。コスト効率とメモリへの最適アクセス時間のためには、好ましくは、メモリは、全ベクトルラインの読み出しと書き込みを可能とすることに過ぎない。このように、論理的には、物理的メモリは、複数のラインからなり、各ラインは、ベクトルのサイズである。スカラーの読み出しと書き込みをサポートするために、追加のハードウエア（ライン内のスカラー部に対するラインキャッシュ５３０とサポート５４０）は、スカラー様式でベクトル幅の物理的メモリにアクセスするために使用される。Ｎｒ個のスカラー読み出しポートとＮｗ個のスカラー書き込みポートが利用可能であると仮定するならば、１セットの少なくともＮｒ+Ｎｗ個のベクトル幅レジスタが、キャッシュ５３０に存在する。各スカラー読出しポート毎に、キャッシュの対応するレジスタが、（ベクトル幅の）物理的メモリ５１０の読み出しポートに接続される。サポートハードウエア５４０は、レジスタからの関連するスカラーデータを選択するために、デマルチプレクサを含む。デマルチプレクサは、（例えば、３２個の８ビットワードを有する２５６ビットベクトルを使用して、スカラーは、５個の最下位ビットによって指示される）アドレスの最下位ビットによって指定されるように、レジスタのスカラーの番号によって制御され得る。デマルチプレクサは、公知であり、更には記述しない。各スカラー書き込みポート毎に、キャッシュ５３０の対応するレジスタは、どのキャッシュラインが物理的メモリに書き戻されるかを選択するためにＮｗ個の入力のベクトル幅マルチプレクサに接続される。一つのＶＭＵ命令が、書き戻されるべき多数のキャッシュラインを必要と���る場合、これは、シーケンシャルに行われ、全ての書き込みが完了するまで、全ての他の機能ユニットを停止する。同じ命令ではなくて異なる書き込みポートへのアクセスは、物理的メモリにおける同じラインへのアクセスを許可されない。連続するスカラーアクセスにおける空間的場所（例えば、一つの処理ループに属する連続するスカラーは、物理的メモリ５１０に実質的に連続して格納される）を仮定すると、これらのレジスタにロード／格納するために物理的メモリ５１０へのアクセス頻度は、これらのレジスタへのスカラーのアクセス頻度よりもかなり少ない。ベクトルメモリ周りのキャッシングは、プログラマーから隠されることが好ましい。マルチポートベクトルメモリを単一ポートＳＲＡＭに匹敵させるためにキャッシュの使用にも拘らず、プログラマーは、コヒーレントベクトルメモリを想定出来る。各レジスタが物理的メモリ内に潜在的に同じデータのコピーを含むことが出来るので、コヒーレンシーは、プログラマーがガードコヒーレンシーを持たなければならない代わりに、自動的に維持されるべきである。この結果、チェックは、アドレスコンフリクトに対して実行され、即ち、ラインアドレスに対して発生するレジスタへの書き込みを有し、そこでは、同じラインは、また、他のレジスタの一つに格納される。このようなチェックに対して、各レジスタ毎に、レジスタに格納されるラインアドレス（アドレスの最上位部）を格納することで十分である。起こり得るコンフリクトが検出されると、訂正対策が取られる。例えば、同じラインを有するレジスタへの書き込み動作が発生すると、読出しレジスタは、無効であるとマークされる。（書込みレジスタが最初にメモリに書き戻された後）レジスタがメモリから再び読み出されなかったならば、そのレジスタは、更には使用されない。或いは、書込みレジスタの内容は、書込みレジスタへの書込みが発生した後、同じラインを有する全ての読出しレジスタにコピーされ得る。三つ目の可能性は、読出しおよび書込みポート間でレジスタを共有することである。この後者のアプローチは、追加のベクトル幅マルチプレクサを必要とし、コストを増加するが、性能面での利点を提供する。同じコヒーレンシーチェックと対策は、ベクトルが書込みポートに関連するレジスタへ（部分的に）格納されるベクトル読出しに対しても取られる。物理的メモリからのライン読出しやそれへのライン書込みは、物理的メモリ５１０への単一アクセスによって、単一クロックサイクルで実行される。
【００８２】
物理的メモリは、ライン境界でアクセスされるに過ぎないので、アラインメントユニットが、ベクトル送出動作のために必要である。アラインメントユニットは、二つのラインキャッシュよりなり、要求されたベクトルによってスパンされる両ラインを含む。連続のベクトルがアクセスされると、一方の新たなラインのみが、物理的メモリから取り出されなければならない。理由は、他方のラインは、これらのラインキャッシュの一方にまだ存在するからである。要求されたベクトルを形成する二つのキャッシュされたラインの部分は、マルチプレクサよりなるネットワークを組み合わされ、次に、ベクトル幅パイプラインレジスタに格納される。このパイプラインレジスタから、その値は、ＶＭＵ同報バス上に送信される。
【００８３】
ベクトルメモリユニットは、単一ＶＭＵ命令において、四つまでの「サブ動作」をサポート出来る。
【００８４】
１．ベクトルを送出すること、ラインを送出すること、またはＶＭ位置からのライン／ＶＭ位置へのラインを受信すること
２．ＶＭ位置からスカラーを送出すること
３．ＶＭ位置からスカラーを受信すること
４．アドレス消費ユニットの状態／出力を変更すること
ＶＭＵ_ｃｍｄ＝（ｖｏｐｃ，ａｉｄ_ｖ，ａｉｎｅ_ｖ，ｓｏｐｃ，ａｉｄ_ｓ，ａｉｎｃ_ｓ，ｓｉｚｅ，ｓｒｅｖ，ａｉｄ_ｒ，ａｉｎｅ_ｒ，ａｏｐｃ，ａｉｄ_ａ，ｉｍｍ_ａｄｄｒ）
ｖｏｐｃ＝ＮＯＰ｜ＳＥＮＤＬ｜ＳＥＮＤＶ｜ＲＣＶＬ_ＣＧＧＵ｜ＲＣＶＬ_ＡＭＵ｜ＲＣＶＬ_ＳＦＵ｜ＲＣＶＬ_ＳＬＵ｜ＲＣＶＬ_ＳＲＵ
Ａｉｄ_ｖ＝{０，．．．，７}
Ａｉｎｃ_ｖ＝ＮＯＰ｜ＩＮＣ
ｓｏｐｃ＝ＮＯＰ｜ＳＥＮＤ
ａｉｄ_ｓ＝{０，．．．，７}
ａｉｎｃ_ｓ＝ＮＯＰ｜ＩＮＣ
ｓｉｚｅ＝ＷＯＲＤ｜ＤＷＯＲＤ｜ＱＷＯＲＤ
ｓｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＡＭＵ｜ＳＬＵ｜ＳＲＵ
ａｉｄ_ｒ＝{０，．．．，７}
ａｉｎｃ_ｒ＝ＮＯＰ｜ＩＮＣ
ａｏｐｃ＝ＮＯＰ｜ＩＭＭ｜ＬＤＢＡＳＥ｜ＬＤＯＦＦＳ｜ＬＤＩＮＣＲ｜ＬＤＢＯＵＮＤ
ａｉｄ_ａ＝{０，．．．，７}
ｉｍｍ_ａｄｄｒ＝{０．０，．．．，５２４２８８．３１}｜{−２６２１４４．０，．．．，２６２１４３．３１}
ＶＭＵ命令は、サブ演算の数とアドレスシーケンスの連続性により、可変数のクロックサイクルを取ることが出来る。
【００８５】
ＶＭＵ入力／出力は、
【表８】
2005527038.tif 000010
【００８６】
更に、外部バスに接続されるべき二つのスカラーポート（一方は、送信用、他方は、受信用）がある。ＣＶＰ命令でのこれらのメモリアクセスの同期は、マイクロコントローラ１３０のタスクである。
【００８７】
ＶＭＵベクトル部は、物理的メモリ５１０を含む：
【表９】
2005527038.tif 000011
【００８８】
ベクトルのサブ演算は、スカラーメモリにアクセス出来ないことに留意すべきである。従って、最上位アドレスビットは、ベクトルサブ演算に対して無視される。ＶＭＵのベクトル部は、命令のＶＯＰＣフィールドで符号化された７個のサブ演算：ベクトル送信（ＳＥＮＤＶ）、ライン送信（ＳＥＮＤＬ）、および５個のライン受信サブ演算（ＲＣＶＬ_ＣＧＵ、ＲＣＶＬ_ＡＭＵ、ＲＣＶＬ_ＳＦＵ、ＲＣＶＬ_ＳＬＵおよびＲＣＶＬ_ＳＲＵ）をサポートする。受信のソースである機能ユニットは、対応するライン受信サブ演算において明示的に符号化される。各サブ動作に対する読出しアドレスや書込みアドレスは、対応するアドレス演算ユニットに指定される。ＡＩＮＣ_Ｖフィールドは、全てのベクトルサブ演算同士間で共有される。ＡＩＮＣ_Ｖフィールドは、ＡＩＤ_Ｖフィールドで符号化されたＡＣＵへパスされる。ＡＩＮＣ_Ｖフィールドは、影響を及ぼされたアドレス演算ユニットがポスト増分演算を行うべきか否かを指定する。
【表１０】
2005527038.tif 000012
【００８９】
これらの演算は、送信（または）受信動作として割り当てられるのであって、ディスティネーション（またはソース）を含むロード（または格納）動作としてではない。後者は、他の機能ユニットにおける演算によって指定される。ライン送信は、同じアドレスを有するベクトル送信と機能的に等価である。ライン送信サブ演算は、典型的には、機能ユニットを構成するため或いは種々のレジスタにおけるタスクの状態を復元するために使用される。ライン送信のために特別のモードを導入することによって、連続するベクトル送信（「ベクトルストリーミング２」）のアクセス時間が、キャッシュの効率使用によって最適化され得る。
【００９０】
ＶＭＵのスカラーサブ演算は、命令のＳＯＰＣフィールドに符号化される。このＶＭＵは、唯一のサブ演算：スカラー送信（ＳＥＮＤ）をサポートする。読出しアドレスは、ＡＩＤ_Ｓフィールドにおいて指定されたアドレス演算ユニットによって指定される。命令のＡＩＮＣ_Ｓフィールドは、このアドレス演算ユニットがポスト増分演算を実行すべきか否かを指定する。スカラーサブ演算のオペランドサイズ（ＷＯＲＤ、ＤＷＯＲＤ、またはＱＷＯＲＤ）は、命令のＳＩＺＥフィールドによって決定される。
【表１１】
2005527038.tif 000013
【００９１】
ＶＭＵのスカラー受信サブ演算は、命令のＳＲＣＶフィールドに符号化される。その値が、ＮＯＮＥであるならば、スカラー受信は、実行されない。そうで無い場合、命令のＳＲＣＶフィールドは、どの機能ユニットがスカラー受信のためのソースとして使用されるかを決定する。書込みアドレスは、ＡＩＤ_Ｒフィールドにおいて指定されたアドレス演算ユニットによって指定される。命令のＡＩＮＣ_Ｒは、このアドレス演算ユニットが、ポスト増分演算を実行すべきか否かを指定する。スカラー受信サブ演算のオペランドサイズ（ＷＯＲＤ、ＤＷＯＲＤ、またはＱＷＯＲＤ）は、ソーススカラーのサイズによって決定される。
【表１２】
2005527038.tif 000014
【００９２】
送信と受信のサブ演算は、一つのＶＭ位置から他のＶＭ位置へのスカラー移動演算に組合され得る。各アクセス毎のアドレスは、対応するアドレス演算ユニットによって指定される。
【００９３】
ＶＭＵ制御部５５０は、主に、一セットのアドレス演算ユニット（ＡＣＬ）または従来のＤＳＰにおけるのと同様のアドレス指定モードをサポートするアドレス発生ユニット（ＡＧＵ）である。このようなユニットは、プロセッサの主データパスを使用することなく、命令に対して一つまたはそれより多くのアドレス演算を実行する。これによって、データに対する算術演算と並行にアドレス演算が起こり得る。サポートされるセットのアドレス指定モードに依存して、このようなＡＣＵは、例えば、多数のレジスタへのアクセスを必要とする。
【００９４】
関連アドレス指定、即ち、所謂ベースアドレスに関連するアドレス指定は、ベースレジスタ「ｂａｓｅ」を必要とする。
【００９５】
・ベースアドレスに関するオフセットは、オフセットレジスタ「ｏｆｆｓ」に格納される。
【００９６】
増分レジスタ「ｉｎｃｒ」に格納された値だけオフセットをプレ／ポスト増分する。
【００９７】
・境界レジスタ「ｂｏｕｎｄ」に格納されたアドレスに関してモジュロアドレス指定する。
【００９８】
このセットのアドレス指定モードの場合、以下がサポートされる。オフセットレジスタ「ｏｆｆｓ」を想定する。アドレス「ｂａｓｅ+ｐｆｆｓ」で各メモリアクセス（読出しまたは書き込み）の後に、レジスタ「ｏｆｆｓ」がｏｆｆｓ：＝（ｏｆｆｓ+ｉｎｃｒ）モジュロｂｏｕｎｄに従って更新される。従って、「ｏｆｆｓ」は、（各アクセス後毎に）しばしば変化するが、「ｂａｓｅ」、「ｉｎｃｒ」、および「ｂｏｕｎｄ」に格納された値は、めったに変化しない。典型的には、これら３個の後者のレジスタは、プログラムループに先立って、初期化される。残余の部分では、レジスタは、ＡＣＵの部分であると仮定される。レジスタの初期化は、「ＡＣＵの構成」として記述される。スカラー／ベクトルプロセッサは、複数のＡＣＵを含むことが好ましい。好適な実施の形態においては、スカラー／ベクトルプロセッサは、８個のＡＣＵを含む。個々のＡＣＵの構成のためには、１個のＡＣＵ当り２〜３クロックサイクル掛かる。このように、ＡＣＵの構成に必要な時間は、アムダール法則のますます多くのハードルにかかると、障害となる。このような構成遅延を克服するために、好適な実施の形態において、１個のＡＣＵに関連する少なくとも２個のレジスタが単一演算で構成され得る。これは、これらのＡＣＵレジスタの全てを単一のベクトルにマッピングし且つベクトルメモリからＡＣＵメモリへの専用のロードおよび格納命令を使用することによって実現され得る。ＡＣＵの関連するレジスタの全てのセットは、好ましくは一クロックサイクルの単一演算において構成されるのが好ましい。メモリ幅が許すならば、１個より多くのＡＣＵが、以下でより詳細に記述されるように、１回の演算で構成できるので有利である。
【００９９】
ベクトルメモリが２Ｌ本のラインを備えていると仮定すれば、スカラーまたはベクトルアドレスは、Ｌ＋２ｌｏｇ４ＰＱビット必要である。例えば、ＰＱ＝８およびＬ＝１２とすると、これは、１７ビットを意味する。過剰に長い命令を回避し且つ可能な限りアドレス演算に関する個別の命令を回避するために、ＶＭＵの制御部は、上述のように、多数のアドレス演算ユニットを保持する。各アドレス演算ユニット（ＡＣＵ）は、多数のアドレスレジスタと、関連する増分演算を含む。これらのＡＣＵ５２０は、とりわけ、サーキュラーバッファをサポートすることを意図する。ＶＭＵ制御部は、８個のＡＣＵを含み、各ＡＣＵは、ＶＭＵサブ演算のいずれかにフレキシブルに割当てられ得る。制限は、各ＡＣＵは、ＡＣＵサブ演算、即ち、ＡＩＤ_Ｖ≠ＡＩＤ_Ｓ≠ＡＩＤ_Ｒを除いて、ＶＭＵサブ演算の一つに対して使用されるに過ぎないことである。
【０１００】
ＶＭＵ制御部は、ＶＭＵ命令のＡＯＰＣフィールドに符号化された一つのサブ演算をサポートする。ＶＭＵ制御部は、一つのサブ演算がＡＣＵの出力を中間アドレス値（ＩＭＭ）にセットすることおよび４つのサブ演算が中間アドレス値をＡＣＵレジスタ（ＬＤＢＡＳＥ、ＬＤＯＦＦＳ、ＬＤＩＮＣＲ、およびＬＤＢＯＵＮＤ）の一つにロードすることをサポートする。対応する中間アドレスは、ＩＭＭ_ＡＤＤＲフィールドで符号化される。ＡＩＤ_Ａフィールドは、ＡＯＰＣサブ演算によってどのＡＣＵが影響を及ぼされるかを指定し、ＶＭＵ命令のＡＯＰＣフィールドとＩＭＭ_ＡＤＤＲフィールドは、直接この特定のＡＣＵにパスされ、且つ全ての他のＡＣＵのＡＯＰＣフィールドは、非演算（ＮＯＰ）へセットされる。
【０１０１】
各ＡＣＵは、４個のアドレスレジスタからなることが好ましい：
【表１３】
2005527038.tif 000015
【０１０２】
好適なアドレス範囲とタイプ（符号付／符号無し）は、この表で指定される。この構成において、４個のＡＣＵレジスタは、４*２４＝９６ビットを必要とする。先に述べたように、ベクトルは２５６ビット幅であることが好ましい。このような場合、複数のＡＣＵのレジスタを一つのベクトルにマッピングすることによって、ＡＣＵ構成スピードを更に一層増加することが好ましい。この例では、２セットのＡＣＵレジスタが一つのレジスタにマッピングされる。これはまた、図５Ｂに例示されている。ベクトルは、参照番号５８０によって指定され、クワォドワード境界が示される。２セットのＡＣＵレジスタ５９０と５９５もまた示され、それらの各々は、異なるＡＣＵに対応する。この例では、ＡＣＵレジスタは、２４ビットであり、従ってベクトルの標準データサイズの一つとは対応しない。ベクトルメモリを介して容易に個々のＡＣＵレジスタにアクセス出来るために、ＡＣＵレジスタをメモリにロード／格納するための特別の命令は、個々のＡＣＵレジスタがワード境界（本例では、２４ビットレジスタがクワォドワード境界に並べられる）に並べられることを保障する。当業者は、ＡＣＵレジスタサイズとベクトルサイズに依存して、最適なマッピングを定義出来る。例えば、１６個のビットＡＣＵレジスタと２５６ビットベクトルを使用することによって、４セットのＡＣＵレジスタを一個のベクトルにマッピングすることが可能となる。命令において、格納／ロードされるべきＡＣＵの数が指定される必要がある。分離されたまたは組合された命令は、単一のＡＣＵまたは１群のＡＣＵのレジスタセットをロードするために使用されることが出来る。
【０１０３】
アドレス演算ユニット（ＡＣＵ）は、単一のＡＣＵ演算中二つの「サブ演算」をサポートする：
１．ポスト命令サブ演算
２．中間アドレス操作サブ演算
ＡＣＵ_ｃｍｄ＝（ａｉｎｃ，ａｏｐｃ，ｉｍｍ_ａｄｄｒ）
ａｉｎｃ＝ＮＯＰ｜ＩＮＣ
ａｏｐｃ＝ＮＯＰ｜ＩＭＭ｜ＬＤＢＡＳＥ｜ＬＤＯＦＦＳ｜ＬＤＩＮＣＲ｜ＬＤＢＯＵＮＤ
ｉｍｍ_ａｄｄｒ＝｛０．０，．．．，５２４２８８．３１｝｜｛−２６２１４４．０，．．．，２６２１４３．３１｝
ポスト増分サブ演算は、命令のＡＩＮＣフィールドに符号化される。このサブ演算は、唯一つのサブ演算：ポスト増分（ＩｎＣ）をサポートする。このサブ演算は、過剰な明示的アドレス演算命令を回避するために使用される。
【表１４】
2005527038.tif 000016
【０１０４】
中間アドレス操作サブ演算は、命令のＡＯＰＣフィールドに符号化される。このサブ演算は、中間アドレス（ＩＭＭ）を出力するために一つのサブ演算をサポートすると共に中間アドレスをＡＣＵレジスタ（ＬＤＢＡＳＥ、ＬＤＯＦＦＳ、ＬＤＩＮＣＥＲ、およびＬＤＢＯＵＮＤ）にロードするために４つのサブ演算をサポートする。中間アドレスは、命令のＩＭＭ_ＡＤＤＲフィールドで符号化される。
【表１５】
2005527038.tif 000017
【０１０５】
ＡＣＵ入力／出力は：
【表１６】
2005527038.tif 000018
【０１０６】
コード発生ユニット
図６は、ＣＧＵ（コード発生ユニット６００）のブロック図である。ＣＧＵのタスクは、ＰＤまたはＰＳ長のベクトルにフォーマット化された複素記号のコードシーケンスを発生することである。好適な実施の形態において、このコードシーケンスは、（Ｗ−）ＣＤＭＡのために必要な調整が施され、スクランブル化コードとチャネル化コードの二つのシーケンスの積として構成され得る。このようなアプリケーションのために、ＣＧＵは、スクランブル化コード発生器（ＳＣＧ６１０）とチャネル化コード発生器（ＣＣＧ６２０）を備える。スクランブル化コードは、構成可能発生器によって発生される。チャネル化コード発生器は、ルックアップテーブルで置き換えられても良い。このテーブルは、ベクトルメモリ内に常駐してもよい。ＣＧＵは、ＵＭＴＳ−ＦＤＤダウンリンクコードをサポートするのみのように、唯限られた機能性を有しても良い。このコード発生ユニット（ＣＧＵ）は、次の二つのサブ演算をサポートする：
１．スクランブル化コード発生器サブ演算
２．チャネル化コード発生器サブ演算
ＣＧＵ_ｃｍｄ＝（ｓｃｒａｍ_ｏｐｃ，ｓｃｒａｍ_ｒｅｇ，ｃｈａｎ_ｏｐｃ，ｃｈａｎ_ｒｅｇ，ｃｈａｎ_ｃｏｎｆｉｇ）
ｓｃｒａｍ_ｏｐｃ＝ＯＦＦ｜ＮＯＰ｜ＬＯＡＤ_ＣＯＮＦＩＦ｜ＬＯＡＤ_ＳＴＡＴＥ｜ＳＡＶＥ_ＳＴＡＴＥ｜ＬＯＡＤ_ＲＥＧＳ_Ｘ｜ＬＯＡＤ_ＲＥＧＳ_Ｙ｜ＳＡＶＥ_ＲＥＧＳ_Ｘ｜ＳＡＶＥ_ＲＥＧＳ_Ｙ｜ＳＴＥＰ_１｜ＳＴＥＰ_Ｐ_Ｄ｜ＳＴＥＰ_１_Ｘ｜ＳＴＥＰ_Ｐ_Ｄ_Ｘ
ｓｃｒａｍ_ｒｅｇ＝{ｃｇｕｓ０，ｃｇｕｓ１}
ｃｈａｎ_ｏｐｃ＝ＯＦＦ｜ＮＯＰ｜ＣＯＮＦＩＦ｜ＬＯＡＤ_ＳＴＡＴＥ｜ＳＡＶＥ_ＳＴＡＴＥ｜ＳＴＥＰ_１｜ＳＴＥＰ_Ｐ_Ｄ
ｃｈａｎ_ｒｅｇ＝{ｃｇｕｃ０，ｃｇｕｃ１}
ｃｈａｎ_ｃｏｎｆｉｇ＝０，．．，２ｌｏｇ（ＳＦＭＡＸ）−１
入力／出力は：
【表１７】
2005527038.tif 000019
【０１０７】
ＣＧＵベクトル部は、以下のレジスタ（ファイル）を含む：
【表１８】
2005527038.tif 000020
【０１０８】
ＣＧＵ命令のＳＣＲＡＭ_ＯＰＣフィールドは、以下のＳＣＧベクトルサブ演算の一つを指定する。
【０１０９】
・スクランブル化コード発生器をオフにする（ＣＧＵＳ_ＯＦＦ）
・非演算（ＣＧＵＳ_ＮＯＰ）
・ｖｍｕ（ＣＧＵＳ_ＬＯＡＤ_ＣＯＮＦＩＧ）から構成ベクトルをロードする
・構成ベクトル（ＣＧＵＳ_ＣＯＮＦＩＧ）でＬＦＳＲ  ＸとＬＦＳＲ  Ｙを構成する
・ＳＣＲＡＭ_ＲＧＥフィールド（ＣＧＵＳ_ＬＯＡＤ_ＳＴＡＴＥ）で指定された内部レジスタからＬＦＳＲ  ＸとＬＦＳＲ  Ｙ状態をロードする
・ＳＣＲＡＭ_ＲＧＥフィールド（ＣＧＵＳ_ＳＡＶＥ_ＳＴＡＴＥ）で指定された内部レジスタにＬＦＳＲ  ＸとＬＦＳＲ  Ｙ状態をセーブする
・ＶＭＵ（ＣＧＵＳ_ＬＯＡＤ_ＲＥＧＳ_Ｘ）から全ＬＦＳＲ  Ｘ内部レジスタファイルをロードする
・ＶＭＵ（ＣＧＵＳ_ＬＯＡＤ_ＲＥＧＳ_Ｙ）から全ＬＦＳＲ  Ｙ内部レジスタファイルをロードする
・ＶＭＵ（ＣＧＵＳ_ＳＡＶＥ_ＲＥＧＳ_Ｘ）に全ＬＦＳＲ  Ｘ内部レジスタファイルをセーブする
・ＶＭＵ（ＣＧＵＳ_ＳＡＶＥ_ＲＥＧＳ_Ｙ）に全ＬＦＳＲ  Ｙ内部レジスタファイルをセーブする
・ＬＦＳＲ  ＸとＬＦＳＲ  Ｙを単一ステップ（ＣＧＵＳ_ＳＴＥＰ_１）だけ進める
・ＬＦＳＲ  ＸとＬＦＳＲ  ＹをＰＤ個ステップ（ＣＧＵＳ_ＳＴＥＰ_Ｐ_Ｄ）だけ進める
・ＬＦＳＲ  Ｘを単一ステップ（ＣＧＵＳ_ＳＴＥＰ_１_Ｘ）だけ進める
・ＬＦＳＲ  ＸをＰＤ個のステップ（ＣＧＵＳ_ＳＴＥＰ_Ｐ_Ｄ_Ｘ）だけ進める。
【０１１０】
ＣＧＵ命令のＣＨＡＮ_ＯＰＣフィールドは、以下のＣＣＧベクトルサブ演算の一つを指定する：
・チャネル化コード発生器をオフにする（ＣＧＵＣ_ＯＦＦ）
・非演算（ＣＧＵＣ_ＮＯＰ）
・ＣＨＡＮ_ＣＯＮＦＩＧフィールド（ＣＧＵＣ_ＣＯＮＦＩＧ）で指定されたコード番号でチャネル化コード発生器を構成する
・ＣＨＡＮ_ＲＥＧフィールド（ＣＧＵＣ_ＬＯＡＤ_ＳＴＡＴＥ）で指定された内部レジスタからＯＶＳＦ状態をロードする
・ＣＨＡＮ_ＲＥＧフィールド（ＣＧＵＣ_ＳＡＶＥ_ＳＴＡＴＥ）で指定された内部レジスタにＯＶＳＦ状態をセーブする
・ＯＶＳＦカウンタを単一ステップ（ＣＧＵＣ_ＳＴＥＰ_１）だけ進める
・ＯＶＳＦカウンタをＰＤ個のステップ（ＣＧＵＳ_ＳＴＥＰ_Ｐ_Ｄ）だけ進める。
【０１１１】
ＡＬＵ−ＭＡＣユニット
図７は、ＡＬＵ−ＭＡＣユニット（ＡＭＵ）のブロック図を示す。このＡＭＵは、ＡＭＵが実際の信号演算を含んでおり、且つその他のユニットは、それへオペランドと結果をベクトルフォーマットの形態で転送するだけであるという意味でマシンの心臓部である。また、このＡＭＵは、比較的大きなベクトルレジスタファイル（好ましくは、１６個のベクトルレジスタ）を含んでいる。アキュムレータベクトルは、二つの（正規）ベクトルレジスタ+拡張精度ビットを含む所謂拡張ベクトルを必要とする。従って、拡張レジスタファイルと共に、ＡＭＵレジスタファイルは、８個のアキュムレータベクトルレジスタをサポートすることが好ましい。好適な実施の形態において、ＡＭＵベクトル部は、５個の独立した内部処理ユニットを含む。
【０１１２】
・算術と論理タイプのインターベクトル（ベクトル間）演算を処理するＡＬＵユニット７１０：加算（ＡＤＤ）、減算（ＳＵＢ）、ビット毎のＡＮＤ（ＡＮＤ），ビット毎のＯＲ（ＯＲ）、ビット毎の排他的ＯＲ（ＸＯＲ）、およびハミング距離計算。
【０１１３】
・乗算と乗算累算タイプのインターベクトル演算を処理するＭＡＣユニット７２０：絶対値（ＭＡＧＮ）、乗算（ＭＵＬ）、および乗算−累算（ＭＡＣ）
・（相関）イントラ加算ベクトル演算を処理する（Ｃ）Ｉ−ＡＤＤユニット７３０：イントラ加算（ＩＡＤＤ）、ダブル精度結果を有するイントラ加算（ＩＡＤＤＤ）、およびイントラ加算が続くイントラ加算相関（ＣＩＡ）
・イントラベクトル最大とイントラベクトル最小演算を処理するＩ−ＭＡＸ／ＭＩＮユニット７４０：イントラ最大（ＩＭＡＸ）およびイントラ最小（ＩＭＩＮ）および
・整数演算をフレキシブル固定点サポートに提供するために使用されるスケーリングユニット。
【０１１４】
アプリケーションによっては、これらのサブユニットの幾つかは必要ないことがあることが理解されるべきである。同様に、他のサブユニットが追加されてもよい。例えば、外部のトランシーバアルゴリズムに対するサポートが追加されると、ＡＭＵは、２個の追加の処理ユニットを含むことが好ましい：
・ビタビ加算−比較−選択演算を処理するａｃｓユニット（ａｃｓ）
・ターボ符号化に必要なαβ∧演算（ａｂｌ）を処理するａｂｌユニット。
【０１１５】
どの処理ユニットが使用されるべきかは、ＡＭＵ命令で明示的に符号化されないが、ｖｏｐｃフィールドから黙示的に引き出される。このことは、引き続くベクトル命令が異なる処理ユニットへ発行される限り、開始間隔は、性能を拘束しない。
【０１１６】
ＡＬＵ−ＭＡＣユニット（ＡＭＵ）は、単一ＡＭＵ演算中４回までの「サブ演算」をサポートする：
１．タイプＡＬＵ（算術および論理）、ＭＡＣ（乗算−累算）、（Ｃ）Ｉ−ＡＤＤ（（相関）イントラ加算）、またはＩ−ＭＡＸ／ＭＩＮ（イントラ最大またはイントラ最小）のベクトル演算を実行する
２．ＡＭＵベクトルレジスタファイルへのベクトル値を受信する
３．ＡＭＵベクトルレジスタファイルへの第２のベクトル値を受信する
４．ＡＭＵ同報レジスタ（ＢＣＳＴ）へのスカラー値を受信する
ＡＭＵ_ｃｍｄ＝（ｖｏｐｃ，ｔｙｐｅ，ｓｒｃ１，ｓｒｃ２，ｓｒｃ３４ｘ，ｒｃｖ１，ｄｓｔ１，ｒｅｖ２，ｄｓｔ２，ｓｒｃ）
ｖｏｐｅ＝ＮＯＰ｜ＳＮＤ｜ＡＤＤ｜ＳＵＢ｜ＡＢＳ｜ＮＥＧ｜ＭＡＸ｜ＭＩＮ｜ＣＯＮＪ｜ＭＡＧＮ｜ＬＡＤＤ｜ＤＩＡＤＤ｜ＩＭＡＸ｜ＩＭＩＮ｜ＣＩＡ｜ＡＮＤ｜ＯＲ｜ＸＯＲ｜ＭＵＬ｜ＭＡＸ｜ＳＧＮＸ
ｔｙｐｅ＝ｃｖｐ_ｉｎｔ｜ｃｖｐ_ｄｉｎｔ｜ｃｖｐ_ｃｉｎｔ｜ｃｖｐ_ｑｉｎｔ｜ｃｖｐ_ｃｄｉｔ
ｓｒｅｌ＝{ａｍｕ０，．．．，ａｍｕ１５}
ｓｒｃ２＝{ａｍｕ０，．．．，ａｍｕ１５}｜{ｂｅｓｔ}
ｓｒｃ３４ｘ＝ｓｒｃ３∈{ａｍｕ０，．．．，ａｍｕ１５}｜ａｃｃ∈{ａｃｃ０，．．．，ａｃｃ７}｜１ｓｅｇ∈{１，２，３，．．．，２ｌｏｇＰｓ}  
ｒｃｖ１＝ＮＯＮＥ｜ＶＭＵ｜ＣＧＵ｜ＡＭＵ｜ＳＦＵ｜ＳＬＵ｜ＳＲＵ
ｄｓｔ１＝{ａｍｕ０，．．．，ａｍｕ１５}
ｒｅｖ２＝ＮＯＮＥ｜ＶＭＵ｜ＣＧＵ｜ＡＭＵ｜ＳＦＵ｜ＳＬＵ｜ＳＲＵ
ｄｓｔ２＝{ａｍｕ０，．．．，ａｍｕ１５}；ｄｓｔ２≠ｄｓｔ１
ｓｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＳＬＵ｜ＳＲＵ
入力／出力は：
【表１９】
2005527038.tif 000021
【０１１７】
ＡＭＵベクトル部は、以下のレジスタファイルを含む：
【表２０】
2005527038.tif 000022
【０１１８】
各アキュムレータレジスタは、図８に示されるように、２個のＡＭＵレジスタ８１０、８２０+１個の拡張レジスタ８３０を必要とする。例えば、レジスタＡＣＣ３は、レジスタＡＭＵ６、ＡＭＵ７およびＥＸＴ３を占有する。拡張レジスタファイルは、アキュムレータ値の拡張精度部分を格納するために使用されるに過ぎないことに留意すべきである。従って、拡張レジスタファイルは、それ自身によってアクセスされることが出来ないし、従って、プログラマーには見えない。
【０１１９】
ベクトルサブ演算は、ＡＭＵ命令のＶＯＰＣフィールドに符号化される。
【０１２０】
このベクトルサブ演算は、４種類のサブ演算をサポートする。
【０１２１】
１．算術および論理タイプのインターベクトル演算：レジスタ値の送信（ＳＮＤ）、加算（ＡＤＤ）、減算（ＳＵＢ）、絶対値（ＡＢＳ）、否定（ＮＥＧ）、最大（ＭＡＸ）、最小（ＭＩＮ）、ビット毎のＡＮＤ（ＡＮＤ）、ビット毎のＯＲ（ＯＲ），ビット毎の排他的ＯＲ（ＸＯＲ）、および符号拡張（ＳＧＮＸ）
２．乗算および乗算累算タイプのインターベクトル演算：大きさ（ＭＡＧＮ）、乗算（ＭＵＬ）、および乗算−累算（ＭＡＣ）
３．（相関）イントラ加算ベクトル演算：イントラ加算（ＩＡＤＤ）、ダブル精度結果を有するイントラ加算（ＤＩＡＤＤ）、およびイントラ加算が続くイントラ加算相関（ＣＩＡ）
４．イントラ最大（ＩＭＡＸ）、およびイントラ最小（ＩＭＩＮ）演算。
【０１２２】
使用されるべきデータタイプは、ＡＭＵ命令のＴＹＰＥフィールドに符号化される。ＳＲＣ１とＳＲＣ２フィールドは、夫々、ベクトルサブ演算のソース１およびソース２としてどのレジスタが使用されるべきか示す。ＳＲＣ２データは、正規レジスタファイルＲＦＡＭＵの代わりに、スカラー同報レジスタＲＣＳＴから来ることに留意すべきである。この場合、同じスカラー値は、各処理エレメントへ送信される。同様に、ＳＲＣ３４ｘフィールドは、３個のベクトルソースを必要とするサブ演算のための（ＳＲＣ３として示される）ソース３としてどのレジスタが使用されるべきかを示す。乗算（−累算）サブ演算の場合、ＳＲＣ３４ｘフィールドは、（ソースとしてとディスティネーションとしての両方で）（ＡＣＣとして示される）どのアキュムレータレジスタが使用されるべきかを示す。イントラベクトル演算（ＩＡＤＤ、ＤＩＡＤＤ、ＩＭＡＸ、ＩＭＩＮ、およびＣＩＡ）の場合、ＳＲＣ３４ｘフィールドは、底が２の対数のセグメントサイズ：２ｌｏｇ（ＳＥＧ）を含む。最少セグメントサイズは、２（ＳＲＣ３４Ｘ＝１）。上限は、データサイズ：ＷＯＲＤサイズのオペランドに対してはＰＳ、ＤＷＯＲＤサイズのオペランドに対してはＰＤ（ＬＳＥＧ＝４）、およびＱＷＯＲＤサイズのオペランドに対してはＰＱ（ＬＳＥＧ＝３）に依存する。
【表２１】
2005527038.tif 000023
【０１２３】
イントラベクトル演算の結果は、疎ベクトルであり、そこでは、各セグメントの位置０のみが計算される。ターゲットレジスタのその他の一は、０に設定される。右シフトユニットに関連して、シャッフルユニットは、疎ベクトルの内容を再順序付けするために使用されることが出来る。
【表２２】
2005527038.tif 000024
【０１２４】
大部分のベクトル演算は、以下に示される例外を除いて、全てのデータタイプをサポートする。
【０１２５】
・ＣＯＮＪ、ＭＡＧＮ：複素データタイプをサポートするに過ぎない。
【０１２６】
・ＡＢＳ、ＭＡＸ、ＭＩＮ、ＩＭＡＸ、ＩＭＩＮ：複素データタイプをサポートしない。
【０１２７】
・ＤＩＡＤＤ＆ＳＧＮＸ：クワォドワードサイズのデータタイプをサポートしない。
【０１２８】
・ＣＩＡ：複素単一精度整数タイプをサポートするに過ぎない。
【０１２９】
・ＡＮＤ、ＯＲ、ＸＯＲ：非複素整数をサポートするに過ぎない。
【０１３０】
・ＮＯＰ＆ＳＮＤ：タイプは無視される。
【０１３１】
ベクトルサブ演算に加えて、ＡＭＵベクトル部は、任意の機能ユニットから、ローカルレジスタファイル（ＲＦＡＭＵ）への二つのベクトル値を受信出来る。受信サブ演算は、ＲＣＶ１とＲＣＶ２フィールドに符号化され、且つ対応するＲＦＡＭＵディスティネーションレジスタは、ＤＳＴ１とＤＳＴ２フィールドに夫々符号化される。
【表２３】
2005527038.tif 000025
【０１３２】
ＡＭＵスカラー部は、以下のレジスタを含む。
【表２４】
2005527038.tif 000026
【０１３３】
ＡＭＵスカラー部は、ＶＭＵ、ＳＬＵまたはＳＲＵからの、同報レジスタ（ＢＣＳＴ）へのスカラー値を受信する。対応する受信サブ演算は、ＳＲＣＶフィールドに符号化される。
【表２５】
2005527038.tif 000027
【０１３４】
全ベクトルを通して複製されたＢＣＳＴレジスタの内容は、（正規のＡＭＵレジスタの代わりに）ベクトル演算に対する代わりのＳＲＣ２として使用される。
【表２６】
2005527038.tif 000028
【０１３５】
ＡＭＵ制御部は、１個のレジスタを含む：
【表２７】
2005527038.tif 000029
【０１３６】
シャッフルユニット
図９は、シャッフルユニット９００のブロック図を示す。ベクトルシャッフル関数の基本的アイデアは、各（ベクトル）ターゲット要素９１０毎に、一つの（ベクトル）ソース要素９２０を指定することである。ソース要素は、専用の構成レジスタ９３０に指定される。シャッフルは、単一ワード細分性（これはまた、全ての可能なダブルワードとクワァドワードシャッフルパターンを包含することに留意すべきである）で指定される。フルシャッフルは、ＣＭＯＳクロスバー９４０によって実施されることが出来る。このコストは、ターゲットの数とソースの数の積に略比例する。４ＰＱワードの実現されたバンド幅は、多くの場合必要ない。従って、好適な実施の形態において、ハーフシャッフルのみがサポートされる。
【０１３７】
シャッフルユニット（ＳＦＵ）は、二つまでの同時発生サブ演算をサポートする。
【０１３８】
１．構成またはハーフシャッフルベクトル演算
２．ベクトル受信
ＳＦＵ_ｃｍｄ＝（ｖｏｐｃ，ｃｆｇ，ｒｃｖ）
ｖｏｐｃ＝ＮＯＰ｜ＣＯＮＦ｜ＯＤＤ｜ＥＶＥＮ｜ＤＵＰＬ０｜ＤＵＰＬ１
ｃｆｇ＝{ｓｆｕｃ０，．．．，ｓｆｕｃ１}
ｒｅｖ＝ＮＯＮＥ｜ＶＭＵ｜ＣＧＵ｜ＡＭＵ｜ＳＦＵ｜ＳＬＵ｜ＳＲＵ
入力／出力は：
【表２８】
2005527038.tif 000030
【０１３９】
ＳＦＵベクトル部は、以下のレジスタファイルを含む：
【表２９】
2005527038.tif 000031
【０１４０】
注：黙示のシャッフルターゲットレジスタもあるが、これは、プログラマーによって直接的にはアクセス出来ない。種々のタイプのシャッフル演算の結果として自動的に書き込まれる。
【０１４１】
ＳＦＵは、ＳＦＵ命令のＶＯＰＣフィールドで指定される２種類のベクトルサブ演算をサポートする。
【０１４２】
１．シャッフルパターンをＲＦＣＦＧ（ＣＯＮＦ）に受信する
２．ＲＦＣＦＧからのパターンに従ってレジスタＳＦＵのベクトルをシャッフルし、その結果を（黙示の）シャッフルターゲットレジスタの影響を及ぼされる部分に格納する。奇数ターゲット要素（ＯＤＤ）、偶数ターゲット要素（ＥＶＥＮ）をシャッフルすること、或いはソース要素を奇数および偶数ターゲット要素に複製すること（ＤＵＰＬ０およびＤＵＰＬ１）が可能である。
【０１４３】
中間結果が、（黙示の）シャッフルターゲットレジスタに格納されるので、フルシャッフルは、ＯＤＤとＥＶＥＮサブ演算を逐次実行することによって、実行され得る。構成サブ演算（ＶＯＰＣ＝ＣＯＮＦ）の場合、命令のＣＦＧフィールドは、どの構成レジスタがロードされるべきかを指定する。そうでない場合、それは、どの構成レジスタがシャッフルパターンとして使用されるかを指定する。
【表３０】
2005527038.tif 000032
【０１４４】
ベクトル演算に加えて、ＳＦＵは、（ローカルＳＦＵレジスタへの）ベクトル受信演算をサポートし、命令のＲＣＶフィールドに符号化される。ベクトルサブ演算ＣＯＮＦとベクトル受信サブ演算と組み合わせることによって、（ＶＭＵから）シャッフルパターンを受信出来ると同時に（任意の他の機能ユニットから）新たなシャッフルソースを受信することが出来る。
【表３１】
2005527038.tif 000033
【０１４５】
注：シフト演算との組合せで、シャッフル演算は、イントラベクトルＡＬＵ演算の結果として疎ベクトル要素を効率的に再順序付けするために使用されることが出来る。
【０１４６】
左シフトユニット
図１０は、左シフトユニット（ＳＬＵ１０００）のブロック図を示す。ＳＬＵは、スカラーステップによって、即ち、３つのスカラーサイズ（ＷＯＲＤ、ＤＷＯＲＤまたはＱＷＯＲＤ）によって左にシフトされることが出来る二つのベクトルレジスタを保持する。右手側は、０またはローカルスカラー受信レジスタのスカラー値が添えられる。ベクトルは、何れかの機能ユニットから受信またはそれに送信されることが出来る。左シフトユニット（ＳＬＵ）は、３個までの同時発生サブ演算をサポートする。
【０１４７】
１．ベクトル左シフトまたは送信演算
２．ベクトル受信演算
３．スカラー受信演算
ＳＬＵ−ｃｍｄ＝（ｖｏｐｃ，ｓｒｃ，ｓｉｚｅ，  ｒｅｃｖ，  ｄｓｔ，  ｓｒｃｖ）
ｖｏｐｃ＝ＮＯＰ｜ＳＮＤ｜ＳＨＩＦＴ０｜ＳＨＩＦＴＳ
ｓｒｃ＝{ｓｌｕ０，ｓｌｕ１}
ｓｉｚｅ＝ＷＯＲＤ｜ＤＷＯＲＤ｜ＱＷＯＲＤ
ｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＣＧＵ｜ＡＭＵ｜ＳＦＵ｜ＳＬＵ｜ＳＲＵ
ｄｓｔ＝{ｓｌｕ０，ｓｌｕ１}
ｓｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＡＭＵ｜ＳＬＵ｜ＳＲＵ
入力／出力は：
【表３２】
2005527038.tif 000034
【０１４８】
左シフトユニット（ＳＬＵ）のベクトル部は、二つの汎用目的ベクトルレジスタ１０１０を含む：
【表３３】
2005527038.tif 000035
【０１４９】
命令のＶＯＰＣフィールドに符号化されたＳＬＵによってサポートされるベクトル演算は：
・ｎｏ−ｏｐ、即ち、現在のベクトルを移動しない（ＮＯＰ）、
・選択されたソースレジスタの内容を送信、同報する（ＳＮＤ）、
・左にシフトし、０を追加する（ＳＨＩＦＴ０）、
・左にシフトし、スカラー受信レジスタからスカラーを追加する（ＳＨＩＦＴＳ）。
【０１５０】
命令のＳＲＣフィールドは、どのＳＬＵレジスタがシフトされるかを決定する。ＳＨＩＦ０演算の場合、命令のＳＩＺＥフィールドは、スカラーステップのサイズを決定する。ＳＨＩＦＴＳ演算の場合、スカラーステップサイズは、スカラー受信レジスタＳＳＬＵにおけるスカラーによって決定され、（従って、ＳＩＺＥフィールドは、無視される）。
【表３４】
2005527038.tif 000036
【０１５１】
ベクトル演算に加えて、ＳＬＵは、また、（ローカルＳＬＵレジスタ１０１０の一つへの）ベクトル受信演算をサポートし、命令のＲＣＶフィールドに符号化される。ＤＳＴフィールドは、受信されたベクトルが、どのローカルレジスタに書き込まれるかを指定する。
【表３５】
2005527038.tif 000037
【０１５２】
左シフトユニット（ＳＬＵ）のスカラー部は、スカラーレジスタ１０２０を含む：
【表３６】
2005527038.tif 000038
【０１５３】
ＳＬＵからシフトされたスカラーは、Ｓ_ＳＥＮＤポートを介して全ての機能ユニットへ送信される。更に、ＳＬＵは、（スカラー受信レジスタＳＳＬＵ１０２０への）スカラー受信演算をサポートし、命令のＳＲＣＶフィールドに符号化される。ＳＳＬＵレジスタのスカラー値は、次のＳＨＩＦＴＳベクトルサブ演算中に右からベクトルにシフトされることが出来る。
【表３７】
2005527038.tif 000039
【０１５４】
右シフトユニット
図１１は、右シフトユニット（ＳＲＵ１１００）のブロック図である。ＳＲＵは、ＡＭＵ上のイントラベクトル演算からの疎の結果を併合するために使用される特別の受信モード（ＩＡＭＵ）を除いて、ＳＬＵと類似する。右シフトユニット（ＳＲＵ）は、３つまでの同時発生サブ演算をサポートする。
【０１５５】
・ベクトル右シフトまたは送信演算
・ベクトル受信演算
・スカラー受信演算
ＳＲＵ_ｃｍｄ＝（ｖｏｐｃ，ｓｒｃ，ｓｉｚｅ，ｒｅｖ，ｄｓｔ，ｓｒｃｖ）
ｖｏｐｃ＝ＮＯＰ｜ＳＮＤ｜ＳＨＩＦＴ０｜ＳＨＩＦＴＳ
ｓｒｃ＝{ｓｒｕ０，ｓｒｕ１}
ｓｉｚｅ＝ＷＯＲＤ｜ＤＷＯＲＤ｜ＱＷＯＲＤ
ｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＣＧＵ｜ＡＭＵ｜ＩＡＭＵ｜ＳＦＵ｜ＳＬＵ｜ＳＲＵ
ｄｓｔ＝{ｓｒｕ０，ｓｒｕ１}
ｓｒｃｖ＝ＮＯＮＥ｜ＶＭＵ｜ＡＭＵ｜ＳＬＵ｜ＳＲＵ
入力／出力は：
【表３８】
2005527038.tif 000040
【表３９】
2005527038.tif 000041
【０１５６】
右シフトユニット（ＳＲＵ）のベクトル部は、二つの汎用目的ベクトルレジスタ１１１０を含む：
【表４０】
2005527038.tif 000042
【０１５７】
命令のＶＯＰＣフィールドに符号化された、ＳＲＵによってサポートされるベクトル演算は：
・ｎｏ−ｏｐ、即ち、現在のベクトルを移動しない（ＮＯＰ）、
・選択されたソースレジスタの内容を送信、同報する（ＳＮＤ）、
・右にシフトし、０を追加する（ＳＨＩＦＴ０）、
・右にシフトし、スカラー受信レジスタからスカラーを追加する（ＳＨＩＦＴＳ）。
【０１５８】
命令のＳＲＣフィールドは、どのＳＲＵレジスタがシフトされるかを決定する。ＳＨＩＦＴ０演算の場合、命令のＳＩＺＥフィールドは、スカラーステップのサイズを決定する。ＳＨＩＦＴＳ演算の場合、スカラーステップサイズは、スカラー受信レジスタＳＳＲＵのスカラーによって決定され、（従って、ＳＩＺＥフィールドは、無視される）。
【表４１】
2005527038.tif 000043
【０１５９】
ベクトル演算に加えて、ＳＲＵは、（ローカルＳＲＵレジスタの一つへの）ベクトル受信演算をサポートし、命令のＲＣＶフィールドに符号化される。ＤＳＴフィールドは、受信されたベクトルが、どのローカルレジスタへ書き込まれるかを指定する。
【表４２】
2005527038.tif 000044
【０１６０】
左シフトユニット（ＳＲＵ）のスカラー部は、スカラー受信レジスタ１１２０を含む：
【表４３】
2005527038.tif 000045
【０１６１】
ＳＲＵからシフトされたスカラーは、Ｓ_ＳＮＤポートを介して全ての機能ユニットに送信される。更に、ＳＲＵは、（スカラー受信レジスタＳＳＲＵ１１２０への）スカラー受信演算をサポートし、命令のＳＲＣＶフィールドに符号化される。ＳＳＲＵレジスタのスカラー値は、次のＳＨＩＦＴＳベクトルサブ演算中に左からベクトルにシフトされることが出来る。
【表４４】
2005527038.tif 000046
【０１６２】
上述の実施の形態は、本発明を制限するのではなくて例示するものであり、当業者は、添付の請求項の範囲を逸脱することなく多くの代替の実施の形態を設計出来ることに留意すべきである。請求項において、括弧の間に配される参照符号は、請求項を制限するものとして構成されない。用語「ｃｏｍｐｒｉｓｉｎｇ（備える、よりなる）」および「ｉｎｃｌｕｄｉｎｇ（含む）」は、請求項にリストアップされた要素やステップ以外の存在を排除しない。
【図面の簡単な説明】
【０１６３】
【図１】本発明に従うスカラー／ベクトルプロセッサが使用可能な好適な構成を示す図。
【図２】本発明に従うスカラー／ベクトルプロセッサ主構造を示す図。
【図３】サポートされたデータ幅とデータタイプを示す図。
【図４】命令分配ユニットのブロック図。
【図５Ａ】ベクトルメモリユニットのブロック図。
【図５Ｂ】１個のベクトルレジスタに対するＡＣＵレジスタのマッピングセットを示す図。
【図６】コード発生ユニットのブロック図。
【図７】ＡＬＵ−ＭＡＣユニットのブロック図。
【図８】アキュムレータレジスタの構造を示す図。
【図９】シャッフルユニットのブロック図。
【図１０】シフト左ユニットのブロック図。
【図１１】シフト右ユニットのブロック図。
【図１】
2005527038.tif 000047
【図２】
2005527038.tif 000048
【図３】
2005527038.tif 000049
【図４】
2005527038.tif 000050
【図５Ａ】
2005527038.tif 000051
2005527038.tif 000052
【図６】
2005527038.tif 000053
【図７】
2005527038.tif 000054
【図８】
2005527038.tif 000055
【図９】
2005527038.tif 000056
【図１０】
2005527038.tif 000057
【図１１】
2005527038.tif 000058
【国際調査報告】
2005527038.tif 000059
2005527038.tif 000060