(57)【要約】処理システムは、プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポート（５０５）を有する上記物理メモリ（５００）とを有する。上記プロセッサは、少なくとも第１のデータサイズおよびそれよりも小さな第２のデータサイズのデータに対して演算を行うように配列されている。上記第１のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さい。上記処理システムは、上記メモリポート（５０５）に接続された上記第１のデータサイズの少なくとも１つのデータレジスタ（５１４）と、データレジスタ（５２５）および上記プロセッサに接続されて第２のサイズのデータ要素へのアクセスを可能とする上記第２のデータサイズの少なくとも１つのデータポート（５２５）とを備える。
2005527035.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポートを有する前記物理メモリとを有する処理システムであって、
前記プロセッサは、少なくとも第１のデータサイズおよびそれよりも小さな第２のデータサイズのデータに対して演算を行うように配列され、
前記第１のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さく、
前記処理システムは、前記メモリポートに接続された前記第１のデータサイズの少なくとも１つのデータレジスタと、前記データレジスタおよび前記プロセッサに接続されて第２のサイズのデータ要素へのアクセスを可能とする前記第２のデータサイズの少なくとも１つのデータポートとを備える、処理システム。
【請求項２】
メモリポートの大きさは、前記第２のデータサイズの少なくとも２倍である、請求項１に記載の処理システム。
【請求項３】
前記データポートは読み出しポートであり、前記処理システムは、読み出しアドレスの制御の下で前記データレジスタから前記第２のデータサイズのデータ要素を選択して抽出するマルチプレクサを備える、請求項２に記載の処理システム。
【請求項４】
前記データポートは書き込みポートであり、前記処理システムは、書き込みアドレスの制御の下で前記データレジスタ内の選択可能な場所で前記第２のデータサイズのデータ要素を挿入するデマルチプレクサを備える、請求項２に記載の処理システム。
【請求項５】
前記処理システムは、前記プロセッサに接続された前記第２のデータサイズの複数のデータポートと、前記各データポートに対して、前記各データポートおよび前記物理メモリのポートに接続された関連したそれぞれのデータレジスタとを備える、請求項１または２に記載の処理システム。
【請求項６】
前記データポートは書き込みポートであり、前記処理システムは、前記データレジスタ内に格納されたデータを識別する情報を格納するための関連した整合性チェッカをデータレジスタ毎に含む可干渉性チェッカを備え、前記可干渉性チェッカは、メモリにアクセスするための読み出しアドレスを前記可干渉性レジスタに格納された識別情報と比較することによって、前記メモリからの読み出し対象となっているデータが前記データレジスタに格納されているデータと一致するかを確認する動作を行うことができる、請求項１に記載の処理システム。
【請求項７】
前記識別情報は物理メモリ内のワードにアクセスするための物理アドレスを含み、前記ワードはメモリポートの幅を有している、請求項６に記載の処理システム。
【請求項８】
前記可干渉性チェッカは、整合性の競合の可能性の検出に応じて補正ステップを行う競合解消装置を含む、請求項６に記載の処理システム。
【請求項９】
前記競合解消装置は、読み出しアクセスに対して無効とするようにデータレジスタにマークを付けることによって補正ステップを行うように配列され、それによってデータレジスタへの読み出しアクセスに応答して前記メモリからデータレジスタの内容が再ロードされる、請求項８に記載の処理システム。
【請求項１０】
前記可干渉性チェッカは、各データレジスタ内に格納されたデータを識別する情報を格納するための可干渉性レジスタをデータレジスタ毎に含み、コレクタは、データレジスタの１つへの書き込みアクセスおよび／または物理メモリへの書き込みアクセスに応答して、データレジスタまたはメモリに書き込まれた内容を他のすべてのデータレジスタ、および／または識別情報に従って同一のデータを記憶しているメモリの記憶場所へコピーすることによって補正ステップを行うように配列されている、請求項５、６および８に記載の処理システム。
【請求項１１】
前記データレジスタの少なくとも１つ（以下「読み出しレジスタ」）は読み出しデータポートに接続され、前記データレジスタの少なくとも１つ（以下「書き込みレジスタ」）は書き込みデータポートに接続され、前記プロセッサは、前記書き込みレジスタから前記読み出しポートへデータを選択可能に供給するバイパス経路を備え、前記可干渉性チェッカは、関連するデータレジスタに格納されたデータを識別する情報を記憶するための可干渉性レジスタをデータレジスタ毎に含み、前記競合解消装置は、読み出しレジスタが前記識別情報に基づいて同一のデータ要素を記憶している場合は、書き込みレジスタへのデータの書き込みに応答して、読み出しレジスタへの連続的な読み出しアクセスを行うバイパス経路を作動させることによって補正ステップを行うように配列されている、請求項５、６および８に記載の処理システム。
【請求項１２】
前記物理メモリは、単一ポート型のＳＲＡＭに基づいている、請求項１に記載の処理システム。
【請求項１３】
前記物理メモリは、平行に配列された複数のＲＡＭの列によって形成されている、請求項１１に記載の処理システム。
【請求項１４】
前記プロセッサは、前記第１のデータサイズのベクトルおよび前記第２のデータサイズのスカラに対して演算を行うように配列され、第１のデータ幅は第２のデータ幅の少なくとも２倍である、請求項１に記載の処理システム。
【請求項１５】
前記メモリは前記プロセッサの中に埋め込まれる、請求項１に記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理システムに関する。
【背景技術】
【０００２】
ＵＭＴＳ−ＦＤＤ、ＵＭＴＳ−ＴＤＤ、ＩＳ２０００およびＴＤ−ＳＣＤＭＡ等の第３世代無線通信規格では、非常に高い周波数で演算を行う。ＵＭＴＳ等の第３世代移動通信規格のモデム（トランシーバ）は、ＧＳＭのおよそ１００倍以上のデジタル信号処理能力を必要とする。異なる規格に対応することを可能とし且つ新たな規格に柔軟に適応することを可能とするために、プログラム可能なアーキテクチャを用いてこのような規格に対するトランシーバを実現することが望まれている。性能を向上させる方法として、メモリの１つのラインに複数のデータ要素（スカラ）を記憶させ、一度に二つ以上のデータ要素に対して演算を行う方法が知られている。このようなシステムは、例えばＳＩＭＤ（単一命令、複数データ）またはＭＩＭＤ（複数命令、複数データ）として知られている。ベクトルプロセッサはＳＩＭＤプロセッサの一例である。通常、幅の広いメモリは、メモリの少なくとも１つのラインの単位に対する読み出しおよび書き込みアクセスを可能とするポートを１つ有している。この例においては、メモリはベクトルを記憶するための線幅を有しており、１つ以上のベクトルを一度に読み出すことまたは書き込むことができる。ベクトルよりも小さな単位にアクセスするためには特に何も設けられていない。メモリを最適に使用するためには、効率良くメモリラインの全幅を有するデータ要素よりも小さなデータ要素にもアクセスすることが可能であることが望ましい。従来、このようなより小さなユニットをその一部が使用されていないメモリのラインに格納することができたが、記憶装置のコストを増大させていた。または、より小さなユニットを連鎖状に１つのラインに格納してもよいが、その場合にはライン全体の読み出しまたは書き込みを行う必要があり、さらなる処理命令およびサイクルで、メモリライン全体に対して所望のより小さなユニットを抽出または挿入する必要がある。このために性能が低下する。これらの問題は、メモリの幅がより小さなユニットの大きさを大きく越えた場合には一層重大なものとなる。例えば、音声認識の音声特徴ベクトルの成分を記憶するデータ要素の幅は通常、８から１６ビットである。電話通信の場合、コード化／変調されたデータ要素は通常８ビット（または、複素数値では２×８ビット）である。この大きさを増す必要はない。さらに新しい電話通信システムまたはさらに高い音声認識性能に対しては、処理の速度を向上させることが望まれる。より幅の広いメモリを用いて処理速度を上げる場合、特別な手段を講じなければ、データを記憶するために必要とされるメモリの量が増大するか、または上述のようにある種のメモリアクセスの速度が落ちる可能性がある。
【発明の開示】
【０００３】
本発明の目的は、より小さなデータ要素に対しても幅の広いメモリへの高速メモリアクセスを提供することができるプロセッサアーキテクチャを提供することである。
【０００４】
この目的を達成するため、プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポートを有する前記物理メモリとを有する処理システムにおいて、前記プロセッサは、少なくとも第１のデータサイズおよびそれよりも小さな第２のデータサイズのデータに対して演算を行うように配列され、前記第１のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さく、前記処理システムは、前記メモリポートに接続された前記第１のデータサイズの少なくとも１つのデータレジスタと、前記データレジスタおよび前記プロセッサに接続されて第２のサイズのデータ要素へのアクセスを可能とする前記第２のデータサイズの少なくとも１つのデータポートとを備える。
【０００５】
このようにして、１つのワードサイズを有する従来のメモリを使用することができる。これによってメモリのコストが抑えられる。通常、メモリのワードサイズはプロセッサの最も大きなワードサイズに対応している。より小さなデータ要素にアクセスする場合は、中間レジスタが使用される。さらなるポートが付加され、レジスタ内のより小さなデータ要素へのアクセスを可能にしている。中間レジスタの使用は完全にトランスペアレントにすることができる。プロセッサコアおよびプログラマにとっては、メモリが大きさの異なるポートを有しているように見える。このようにして、より大きなデータ要素の一部であるより小さなデータ要素へアクセスするために、大きなデータ要素の選択および／またはシフト等の命令の費用を付加することなく小さなデータ要素に高速でアクセスすることができる。
【０００６】
従属請求項２に記載されているように、メモリポートの大きさは、前記第２のデータサイズの少なくとも２倍である。このようにして、レジスタは少なくとも２つの小さなデータ要素を記憶することができる。特に、小さなデータ要素が順次アクセスされる場合は、物理メモリへの１度のアクセスによって、少なくとも２つの連続したより小さなデータ要素への高速のアクセスが可能となる。これによって物理メモリへのアクセスで損失される時間が削減される。
【０００７】
従属請求項３に記載されているように、読み出しデータポートに対しては、読み出しアドレスの制御の下でデータレジスタから前記第２のデータサイズのデータ要素を選択して抽出するマルチプレクサが使用される。例えば、読み出しアドレスの最上位部分を使用してデータ要素が既にレジスタ内にあるかを確認することができ（さもなければ、この部分を用いて物理メモリからデータ要素を検索する）、最下位部分を用いてレジスタ内のデータ要素を選択することができる。
【０００８】
従属請求項４に記載されているように、書き込みデータポートに対しては、書き込みアドレスの制御の下でデータレジスタ内の選択可能な記憶場所で前記第２のデータサイズのデータ要素を挿入するデマルチプレクサが使用される。読み出しポートに関して説明した場合と同様に選択を行うことができる。
【０００９】
従属請求項５に記載されているように、前記処理システムは、前記プロセッサに接続された前記第２のデータサイズの複数のデータポートと、前記各データポートに対して、前記各データポートおよび前記物理メモリのポートに接続された関連したそれぞれのデータレジスタとを備えることができる。このようにして、データへアクセスする平均時間をさらに短縮することができる。例えば、アルゴリズムが２つの連続データストリームを処理する場合、各ストリームは前記レジスタおよびデータポートのいずれかを用いるようにしてもよい。その場合、各ストリームは、前記物理メモリへの１回のアクセスのみを利用して少なくとも２つの連続データ要素にアクセスすることができる。
【００１０】
従属請求項６に記載されているように、前記メモリ内および／または２つ以上のレジスタ内のデータの「コピー」を含むレジスタによって引き起こされる可能性のある整合性の競合に対するチェックが行われる。このシステムはレジスタ内のデータを更新された状態に維持することが可能であるため、小さなデータ要素の更新によって必ずしも物理メモリへの書き込み動作が行われるわけではない。さらに、更新された小さなデータ要素をレジスタから直接読み出すことも可能であるため、メモリへのアクセス時間もさらに節約される。書き込みデータポート（またそのため、書き込みアクセスを可能とする関連するレジスタ）に対しては、前記プロセッサは前記レジスタに格納されているデータに関する情報をさらなる整合性レジスタに格納する。このデータを用いて、（物理メモリまたはレジスタの１つから）読み出し中のデータが変更された（が、メモリまたは読み出しレジスタに対してまだ更新されていない可能性のある）データにアクセスしているかを確認する。識別情報は物理メモリ内のワードにアクセスするための物理アドレスであり、前記ワードはメモリポートの幅を有していることが好ましい。このようにして、物理メモリへの直接のアクセスがレジスタに格納されたデータと競合している可能性がないかを確認することが容易となる。
【００１１】
従属請求項８に記載されているように、可干渉性チェッカは、整合性の競合の可能性の検出に応じて補正ステップを行う競合解消装置を含む。このようにして、プログラマはプログラムの設計中にこのような手段を講ずる必要から開放される。従属請求項９に記載されているように、補正ステップを行う１つの方法としては、読み出しアクセスに対して無効とするようにデータレジスタにマークを付け、データレジスタへの読み出しアクセスに応答してメモリからデータレジスタの内容を再ロードする。
【００１２】
または、従属請求項１０に記載されているように、可干渉性チェッカは各データレジスタ内に格納されたデータを識別する情報を格納するための可干渉性レジスタをデータレジスタ毎に含み、コレクタは、データレジスタの１つへの書き込みアクセスおよび／または物理メモリへの書き込みアクセスに応答して、データレジスタまたはメモリに書き込まれた内容を他のすべてのデータレジスタ、および／または識別情報に従って同一のデータを記憶しているメモリの記憶場所へコピーすることによって補正ステップを行うように配列されている。この実施の形態においては、更新されたデータは、可干渉性レジスタに基づいて同一のデータを記憶するすべてのレジスタにコピーされる。物理メモリへの直接のアクセスが許可されない場合、データは物理メモリへコピーされない。大きなデータ要素に対する物理メモリへの直接のアクセスは中間レジスタを介しても行われ、その場合、レジスタへの書き込みによってメモリへの書き込みアクセスを自動的に必要とすることはない。
【００１３】
従属請求項１１に記載されているように、データレジスタの少なくとも１つ（以下「読み出しレジスタ」）は読み出しデータポートに接続され、前記データレジスタの少なくとも１つ（以下「書き込みレジスタ」）は書き込みデータポートに接続され、前記プロセッサは、書き込みレジスタから読み出しデータポートへデータを選択可能に供給するバイパス経路を備え、可干渉性チェッカは、関連するデータレジスタに格納されたデータを識別する情報を記憶するための可干渉性レジスタをデータレジスタ毎に含み、競合解消装置は、読み出しレジスタが前記識別情報に基づいて同一のデータ要素を記憶している場合は、書き込みレジスタへのデータの書き込みに応答して、読み出しレジスタへの連続的な読み出しアクセスを行うバイパス経路を作動させることによって補正ステップを行うように配列されている。バイパスを用いることによって、同一の内容を有する書き込みレジスタが更新されるとすぐに読み出しレジスタが再ロードされる必要はない。その代わり、データは更新された書き込みレジスタから直接読み出される。このようにして、物理メモリへのアクセスは少なく抑えられる。書き込みレジスタにアクセスする際に遅延が発生する場合もある。
【００１４】
物理メモリは費用効率の良い単一ポート型のＳＲＡＭに基づいていることが好ましい。費用効率の良い幅の広い物理メモリを得るため、１つのメモリワードに多くの小さなデータ要素を格納できるように、平行に配列された複数のＲＡＭの列によって形成された物理メモリを使用することが好ましい。メモリはプロセッサの中に埋め込むことが好ましい。
【００１５】
上述のアーキテクチャをスカラ／ベクトルプロセッサに有利に用いることができ、ベクトルセクションは第１のデータサイズのベクトルに対して演算を行い、スカラセクションは第２のデータサイズのスカラに対して演算を行い、第１のデータ幅は第２のデータ幅の少なくとも２倍である。このような配列において、同一のメモリをベクトルおよびスカラを格納するために使用することができる。それにより、ベクトルの要素に対してスカラ演算を行うことも容易になる。
【００１６】
本発明のこれらおよび他の態様は、以下に説明される実施の形態を参照することで明らかとなるであろう。
【発明を実施するための最良の形態】
【００１７】
信号処理に対して最適化されたプロセッサにおいて、アドレス発生ユニット（ＡＧＵ）およびメモリユニットを使用することが好ましい。このようなプロセッサは、ＤＳＰまたはどのような他の適切なプロセッサ／マイクロコントローラであってもよい。説明の残りでは、これらのユニットを高性能のスカラ／ベクトルプロセッサに使用した場合について記載する。このようなプロセッサを、独立してまたは他のプロセッサと組み合わせて使用してもよい。図１は、スカラ／ベクトルプロセッサを使用してもよい好ましい構成を示している。この構成において、３つの主要な構成要素がバス１１０を介して接続されている。これら３つの構成要素を接続しているバス１１０は、例えばＡＭＢＡ高速バス（ＡＨＢ）等のどのような適切なバスであってもよい。これらの主要な構成要素は、
機能ユニットおよびローカルデータメモリ（図１ではベクトルメモリと呼ぶ）を備えるプログラム可能なスカラ／ベクトルプロセッサ１２０と、
限定されたオンチッププログラムおよびデータメモリを含むマイクロコントローラまたはＤＳＰサブシステム１３０と、
インタフェースブロック１４０と、である。
【００１８】
スカラ／ベクトルプロセッサ１２０は、通常の重い／負荷処理、特に内側ループの処理に主に使用される。スカラ／ベクトルプロセッサはベクトル処理機能性を含む。従って、実行されるコードのベクトル化可能な部分に大規模な並列性が与えられる。すべての信号処理の大部分は、スカラ／ベクトルプロセッサのベクトルセクションによって実行される。同一の命令を実行する例えば３２個の同一の処理要素のアレイを用いると、大規模な並列性が与えられる。これを３２ワードの幅の広いメモリインタフェースと組み合わせると、低コストで消費電力の抑えられた前例のないプログラム可能な性能レベルとなる。しかし、多くのアルゴリズムは正しい形式の十分なデータ並列性を示さないため、この並列性を完全に利用することは必ずしも実現可能なことではない。アムダールの法則によると、コードの直接ベクトル化可能な部分をベクトル化した後は、ほとんどの時間が残りのコードに費やされる。残りのコードは以下の４つのカテゴリに分けることができる。
アドレス関連の命令（例えば、ポインタを環状バッファにインクリメントすること、モジュロアドレス指定の利用すること）
通常のスカラ演算（即ち、ベクトルプロセッサのメインループに対応するスカラ演算
ルーピング
変則的なスカラ演算
【００１９】
これらの各カテゴリのコードの割合は実行されるアルゴリズムに大きく依存する。例えば、（Ｐ−ＳＣＨ検索に使用される）Ｇｏｌａｙ相関器は多くのアドレス関連命令を必要とするが、これはＲａｋｅ等の他のアルゴリズムには当てはまらない。本発明によるＡＧＵ／メモリユニットを用いることによって、アドレス関連命令およびルーピングの性能を最適化することができる。スカラおよびベクトル処理を１つのプロセッサに緊密に統合することによって通常のスカラ演算の動作を最適化することができる。本発明者らによる第３世代モデムに関連したすべてのアルゴリズムの研究によって、変則的なスカラ演算の割合は非常に限定されていることが明らかとなった。この特性によって、スカラ／ベクトルプロセッサ１２０とマイクロコントローラまたはＤＳＰ１３０との間のタスクを分離することが可能となり、別個のマイクロコントローラまたはＤＳＰ１３０は変則的なタスクを行い、好ましくはスカラ／ベクトルプロセッサの制御も行う。この好ましい構成において、スカラ／ベクトルプロセッサ１２０は、プログラム可能なコプロセッサ（後にＣＶＰ、コベクトルプロセッサとも呼ばれる）としての機能を果たす。スカラ／ベクトルプロセッサ１２０とマイクロコントローラ１３０との間のインタフェースは（例えば、共有メモリによる）通信および（例えば、共有メモリおよびステータス信号による）同期化を処理する。このインタフェースに対してはメモリマッピングを行うことが好ましい。
【００２０】
インタフェースブロック１４０は、プロセッサがシステムの残りの部分と相互に作用することを可能とする。好ましい実施の形態においては、スカラ／ベクトルプロセッサは第２世代／第３世代の携帯ネットワークのためのソフトウェアモデム（トランシーバ）として使用される。このようなソフトウェアモデム機能のために、インタフェースブロック１４０は、マイクロコントローラ１３０の制御の下で、例えばＤＭＡ等のベクトルメモリに制御およびデータワードを送ることを主なタスクとして、フロントエンドとしての専用ハードウェアを含んでもよい。その場合、ベクトルメモリ内のデータはスカラ／ベクトルプロセッサによって処理される。
【００２１】
スカラ／ベクトルプロセッサ１２０はバス１１０のスレーブであってよく、マイクロコントローラ１３０および（ＤＭＡユニットを含んでもよい）インタフェースブロック１４０はマスタとしての機能を果たしてもよい。プログラム、データまたは制御であれＣＶＰとのすべての通信に対してメモリマッピングを行うことが好ましい。メモリはオフチップＤＲＡＭであってよく、このＤＲＡＭはスカラ／ベクトルプロセッサによって（デインターリーブ）インターリーブメモリとして用いられてもよい。
【００２２】
本明細書においては、「アドレス計算ユニット」またはＡＣＵという語句が主に使用される。便宜上、これを「アドレス発生ユニット」またはＡＧＵと同一のものと見なす。本明細書では、このようなユニットをデータアドレスの計算に使用することに焦点を当てる。当業者は、同一の機能性を命令アドレス（「ループ制御」）の計算に使用することもできるであろう。
【００２３】
図２は、本発明によるプロセッサの主構造を示している。このプロセッサはパイプライン型ベクトル処理セクション２１０を備える。このベクトルセクションの動作に対応するため、スカラ／ベクトルプロセッサは、ベクトルセクションと並列して動作するように配列されたスカラ処理セクション２２０を備える。このスカラ処理セクションもパイプライン型であることが好ましい。ベクトルセクションの動作に対応するため、ベクトルセクションの少なくとも１つの機能ユニットもスカラセクションの対応する部分の機能性を提供する。例えば、シフト機能ユニットのベクトルセクションは機能的にベクトルをシフトしてもよく、スカラ成分がシフト機能ユニットのスカラセクションによって供給される（またはそれに供給される）。そのため、シフト機能ユニットはベクトルおよびスカラセクションの両方をカバーする。従って、少なくともいくつかの機能ユニットはベクトルセクションを有しているだけでなくスカラセクションも有しており、ベクトルセクションおよびスカラセクションはスカラデータを交換することによって協働する。機能ユニットのベクトルセクションは未加工の処理電力を供給し、対応するスカラセクション（即ち、同一の機能ユニットのスカラセクション）は、スカラデータを供給および／または消費することによってベクトルセクションの動作をサポートする。ベクトルセクションに対するベクトルデータはベクトルパイプラインを介して供給される。
【００２４】
図２の好ましい実施の形態において、スカラ／ベクトルプロセッサは以下の７つの特殊化された機能ユニットを備える。
【００２５】
命令配信ユニット（ＩＤＵ２５０）。ＩＤＵはプログラムメモリ２５２を含み、連続ＶＬＩＷ命令を読み出して各命令の７つの部分を７つの機能ユニットへ配信する。これは、ゼロオーバーヘッドルーピングの３つの入れ子にされたレベルまでをサポートするループユニットを含むことが好ましい。好ましい実施の形態において、ブランチ、ジャンプおよび割込みはサポートしない。イニシャルプログラムカウンタが以下により詳細に説明される割当記述子からロードされる。
【００２６】
ベクトルメモリユニット（ＶＭＵ２６０）。ＶＭＵはベクトルメモリ（図２には示さず）を含む。各命令の間、ラインまたはベクトルをベクトルメモリから送信するかベクトルメモリ内に受信することができる。さらに、同一の命令によってスカラ送信動作および／または受信動作を指定するようにしてもよい。ＶＭＵは外界、即ち外部バス１１０に接続された唯一の機能ユニットである。
【００２７】
コード発生ユニット（ＣＧＵ２６２）。ＣＧＵは有限フィールド算術を専門とする。例えば、ＣＤＭＡコードチップ、およびチャンネルコーディングおよびＣＲＣ等の関連する機能のベクトルを発生させるためにＣＧＵを使用することができる。
【００２８】
ＡＬＵ−ＭＡＣユニット（ＡＭＵ２６４）。ＡＭＵは通常の整数および固定小数点演算を専門とする。これはベクトル間演算をサポートし、複数のベクトルに対して要素の観点から演算が行われる。好ましい実施の形態において、ＡＭＵもいくつかのベクトル内演算を行い、要素に対して単一のベクトル内で演算が行われる。
【００２９】
シャッフルユニット（ＳＦＵ２６６）。ＳＦＵは指定されたシャッフルパターンに基づいてベクトルの要素を再配列する。
【００３０】
左シフトユニット（ＳＬＵ２６８）。ＳＬＵは、ベクトルの要素を１ワード、２ワードまたは４ワード等の単位で左に移動させることができる。発生したスカラはそのスカラセクションに与えられる。発行されたＳＬＵベクトル演算の種類によって、消費されたスカラはゼロとなるか、またはそのスカラセクションから取られる。
【００３１】
右シフトユニット（ＳＲＵ２７０）。ＳＲＵはＳＬＵと同様であるが、右にシフトする。さらに、これはＡＭＵ上でのベクトル内演算からの連続的な結果を融合させる能力を有する。
【００３２】
以下の表は、すべてのＦＵは機能ベクトルセクション２１０を有し、いくつかは制御セクション２３０またはスカラセクション２２０を有していないことを示している。
【表１】
2005527035.tif 000003
【００３３】
本発明によるスカラ／ベクトルプロセッサは以下の２つの主要な方法で命令レベル並列性を適用する。
ベクトル処理の場合、単一の命令によって（スカラ）データのベクトルに対して演算を行う。この方法は、単一命令ストリーム、複数データストリームまたはＳＩＭＤとしても知られている。複数の機能ユニットの並列処理の場合、各々がベクトルを演算する。これを、ＶＬＩＷ命令レベル並列性の（限定された）形式と見ることができる。
【００３４】
これら２つの命令レベル並列性の形態は独立したものであり、その効果は累積することに留意されたい。
【００３５】
ＦＵ間通信
機能ユニット（ＦＵ）は並列して動作する。各ＦＵは、ベクトルデータの受信および送信が可能である。多くのＦＵはスカラデータの受信および送信も可能である。
【表２】
2005527035.tif 000004
【００３６】
すべての機能ユニットは並列して動作する。命令の機能ユニットのセグメントを受信すると、機能ユニットはベクトルデータ、および適用可能であればスカラデータの両方を入力、処理および出力する。ＦＵの間では、通信は厳密にスカラセクション間またはベクトルセクション間とされる（ＦＵ間通信）。即ち、ＩＤＵを除くすべてのＦＵのベクトルセクションはパイプラインによって接続されている。好ましい実施の形態において、このパイプラインは命令に基づいて構成可能である。この目的のため、ＦＵは相互接続ネットワークによって相互接続され、原則として、各ベクトルが各サイクルの間に他のベクトルセクションのいずれかからベクトルを受信することを可能とする。この特徴によって、特に（ＩＤＵを除く）ＦＵの任意のパイプラインの作成が可能となる。ベクトル経路に貢献する機能ユニットのうちの６つはベクトルを出力して、それを各クロックサイクルの間に平行して他のユニットへ送信することができる。これらは他のユニットからベクトルを受信することもできる。ネットワークはほぼ完全に接続されている。意味のない他のリンクは省略されている。ＡＭＵは２つのベクトルを同時に受信することができる。図２に示されているように、ネットワークは、１つのネットワーク経路へ単一のソース（ディスクとして示されている）として接続されている各ＦＵによって形成されることが好ましい。これは、（三角で示される）信号シンクとして他のすべての経路に接続されている。ＦＵに対するＶＬＩＷ命令のセクションは、どの経路からベクトルを消費すべきかを示す。このようにして、命令に基づいてパイプラインを構成することができる。各経路は、例えば２５６本の平行な配線を用いて完全なベクトルを転送することができる。同様に、ＦＵのスカラセクションの少なくともいくつかは別個のパイプラインによって接続されている。このパイプラインも命令に基づいて構成可能であることが好ましい。ＦＵのスカラセクション間の相互接続ネットワークは、スカラを少なくとも１つのＦＵのスカラセクションへ送信またはそれから受信することができないという意味において部分的なものとすることができる。従って、より少ないパイプラインの順序付けを指定することができる。スカラおよびベクトルパイプラインを独立して構成することができる。例えば、機能ユニットによって読み出されるスカラパイプラインおよびベクトルパイプラインの両方を関連するＶＬＩＷセクションにおいて示すことによってである。
【００３７】
異なる機能ユニットの制御セクションの間で指定される接続性はない。これらの制御セクションはＩＤＵからＶＬＩＷ命令のセグメントを受信し、自身の状態を更新し、それらの各スカラおよびベクトルセクションを制御する。
【００３８】
ＦＵ内通信
ＦＵ内では、これらのセクションの間で密接な相互作用（ＦＵ内通信）がある。相互作用は、ＦＵの動作の一体的な部分である。例としてはＳＬＵおよびＳＲＵであり、発生したおよび／または消費されたスカラはＦＵの対応するスカラセクションへ供給されるか、またはそれから取られる。
【００３９】
命令は通常単一のサイクルで実行される。例外はベクトルメモリでの混雑によって引き起こされ、ストールサイクルとして現れる。
【００４０】
データ幅
好ましい実施の形態において、スカラ／ベクトルプロセッサは図３に示されるような複数のデータ幅およびデータタイプに対応する。メモリアドレス指定の基本単位は単一のワードとも呼ばれるワードである。データ幅は、単一のワード（Ｗ）、２ワード（ＤＷ、または２Ｗ＝１６ビット）、または４ワード（ＱＷ、または４Ｗ＝３２ビット）とすることが好ましい。ワードの大きさはＷ＝８ビットである。スカラは、（単一の）ワード、２ワードまたは４ワードの３つのサイズとすることが好ましい。ベクトルはＰＱ４ワードワードの固定された大きさである。これは、好ましくは以下の３つのフォーマットのいずれかで構成されることが可能である。
４ワードの大きさのＰＱ要素
２ワードの大きさのＰＤ＝２ＰＱ要素
（単一）ワードの大きさのＰＳ＝２ＰＤ＝４ＰＱ要素
【００４１】
ベクトル要素指標付け範囲は［０．．．４ＰＱ−１］である。従って、２ワードは偶数の指標を有し、４ワードの指標は４の倍数である。図３はデータサイズの概要を示している。このアーキテクチャはＰＱでは完全に測定可能であり、どのようなベクトルの大きさＰＱ≧１に対しても定義される。しかし、ほとんどの場合、ＰＱには２の累乗を選択することが好ましい。好ましい実施の形態において、ＰＱは８であり、データ経路幅および３２ワードのメモリ幅を示している。
【００４２】
命令
ＣＶＰ命令は制御命令またはＶＬＩＷ命令のいずれかである。制御命令は、例えばゼロオーバーヘッドループ初期化であってよい。ブランチ、ジャンプまたはサブルーチンはない。ＶＬＩＷ命令はセグメントに区切られ、各命令セグメントは対応する機能ユニットによって行われる演算を指定する。セグメントはさらに一部がベクトルセクション、および（存在する場合は）スカラセクションに対して細分される。セグメントは両方の部分に対して、どのネットワーク部を用いてデータ（ベクトルセクションに対する一つ以上のベクトルおよびスカラセクションに対する一つ以上のスカラ）を受信するかに関する情報も含む。
【００４３】
スカラ／ベクトルプロセッサの状態
ＣＶＰの状態はその機能ユニットの組み合わされた状態である。好ましい実施の形態において、これは
ベクトルメモリ（ＶＭＵの一部）と、
プログラムメモリ（ＩＤＵの一部）と、
ベクトルレジスタ（すべての機能ユニット）と、
スカラレジスタ（ほとんどの機能ユニット）と、
プログラムカウンタを含む制御レジスタおよびアドレスオフセットレジスタと、を備える。
【００４４】
プログラマに見えるレジスタに加えて、ＣＶＰの実現は通常、パイプラインおよびキャッシュためのさらなるレジスタ（ベクトル、スカラおよび制御）を含む。これらは、ＣＶＰ命令設定アーキテクチャの一部ではない。
【００４５】
（ベクトル、スカラおよび制御）レジスタのいくつかはいわゆる構成レジスタである。構成レジスタの内容はベクトルメモリからのみロードすることができ、その値を変更する他の方法はない。構成レジスタは機能ユニットの構成に対応し、通常は機能パラメータを定義する。構成レジスタにこれらの「半一定」の機能パラメータを格納することによって、命令幅およびメモリトラヒックの両方が大幅に減少する。
【００４６】
ＣＶＰ状態の成分の概要は以下の表に示されている。
【表３】
2005527035.tif 000005
【００４７】
プログラマに見えるすべてのレジスタはベクトルメモリからロードすることができる。構成レジスタを除くすべてのレジスタをベクトルメモリ内に残すことができる。割当の最後にＣＶＰレジスタを残しておき、それらを後に復元することによって、その間に他の割当は行われなかったかのようにＣＶＰは特定のタスクを継続することができる。これらの保存および復元作業は任意のものであり、部分的であってよく、明示的にプログラムされなければならない。
【００４８】
メモリユニット
図４は、本発明によるメモリ配列が使用されているメモリユニット（ＶＭＵ４００）のブロック図である。以下に説明する好ましい実施の形態において、メモリユニットは、ベクトル全体を記憶することができる幅を有する物理メモリとの組み合わせにおいてベクトルプロセッサ内で使用される。尚、同一の概念を従来のＤＳＰ等のスカラプロセッサに適用してもよい。ＶＭＵは、他の機能ユニットに対して非常に大きなデータ帯域幅を提供するベクトルメモリ４１０を含み且つ制御する。物理ベクトルメモリ４１０は単一ポート型のＳＲＡＭに基づいていることが好ましい。ＰＳ×Ｗ幅の埋め込みＳＲＡＭは一般的に入手できるものではないため、物理メモリは平行に配列された１つ以上の列の幅の広いランダムアクセスメモリ（ＲＡＭ）によって形成するようにしてもよい。スカラデータはベクトルデータを記憶するために使用されるメモリと同一のメモリに格納されることが好ましい。このようなシステムにおいては、スカラをそれらが対応するベクトルと混合させることができる。費用効率およびメモリへの最適なアクセス時間のために、メモリは完全なベクトル線の読み出しおよび書き込みのみを許容することが好ましい。従って、論理的には、物理メモリはそれぞれがベクトルの大きさの線からなっている。スカラの読み出しおよび書き込みに対応するため、さらなるハードウェア（ラインキャッシュ４３０および線内でスカラを選択するサポート４４０）を用いてスカラのようにベクトル幅の物理メモリへアクセスする。
【００４９】
図５は、この配列のさらなる詳細を示している。全幅ポート５０５（この例においては、ベクトルの幅を有する）を１つ有する物理メモリ５００が示されている。図において、読み出しポートのみが示されている。当業者はデータの書き込みのための同様の配列を容易に決定することができるであろう。この配列は、物理メモリポート５０５として同一の幅の少なくとも１つのレジスタを含む。４つのレジスタ５１０、５１２、５１４、５１６が示されている。すべてのレジスタはデータを受信する読み出しポート５０５に選択可能に接続することができる。図において、１つのレジスタ５１４はより小さなデータ要素、この例においてはスカラの読み出し専用とされている。より小さなデータ要素のうちの少なくとも２つがこのレジスタに適応することが好ましい。データレジスタ５１４は処理ユニット（より一般的にはデータシンク）に接続された読み出しポート５２５と関連している。マルチプレクサ５２０はレジスタ５１４と連結してこのレジスタから関連するスカラデータを選択することが好ましい。アドレスの最下位ビットによって指定されるように（例えば、３２個の８ビットワードを有する２５６ビットのベクトルを用いて、スカラを５つの最下位ビットによって示す）、レジスタ内のスカラの数によってマルチプレクサを制御するようにしてもよい。マルチプレクサについては知られており、さらなる説明は行わない。レジスタは、データ（全幅）を受信する物理メモリの読み出しポート５０５に接続されている。一般的に、それぞれがベクトル幅レジスタに接続されたＮｒスカラ読み出しポートがある。これは別個のレジスタまたは同一のものであってもよい。これらのレジスタは図４のキャッシュ４３０の一部である。マルチプレクサはスカラ選択ブロック４４０の一部である。図示されていないが同様にして、キャッシュ４３０にはＮｗベクトル幅レジスタを有するＮｗスカラ書き込みポートが存在することが可能である。各スカラ書き込みポートには、キャッシュ４３０内の対応するレジスタがＮｗ入力のベクトル幅デマルチプレクサに接続されて、どのキャッシュラインを物理メモリに書き戻すかを選択する。１つのＶＭＵ命令によって複数のキャッシュラインを書き戻することが要求される場合、これは順次行われ、すべての書き込みが完了するまで他のすべての機能ユニットを停止する。同一の命令で異なる書き込みポートへアクセスする場合、物理メモリの同一の線にアクセスすることは許容されない。連続的なスカラアクセスにおける空間的局所性（例えば、１つの処理ループに属する連続スカラは物理メモリ４１０に実質的に順次格納される）を仮定すると、これらのレジスタに対してロードする／格納するための物理メモリ４１０へのアクセス周波数は、これらのレジスタへのスカラアクセス周波数を大きく下回る場合がある。
【００５０】
好ましい実施の形態において、ベクトルをメモリ内でベクトル境界に揃える必要はない。従って、ＰＳワードからなるベクトルは任意のメモリアドレスを有してもよい。メモリラインは同一の大きさを有しているが、その開始アドレスは当然、ＰＳの倍数である。（ラインアクセスの場合、アドレスの最下位２ｌｏｇＰＳビットは無視される。）ベクトルの任意の配置（通常は最も小さなワード境界での配置）を許容することによって、空き場所がより少ない状態でメモリをよりよく使用することができる。スカラ／ベクトルプロセッサが個々のベクトルの読み出し／書き込みを行うことを可能とする対策は取られているが、ベクトルを物理メモリの２つの連続する線に格納してもよい。この目的のため、アライメントユニットをベクトル送信動作に使用する。アライメントユニットは図４のブロック４４０に示されている。図５にはさらに詳細に示されている、アライメントユニット５３０は、いずれも要求されたベクトルによる長さの線を含む２つのラインキャッシュ５１０および５１２に（即ち、２つのベクトル幅レジスタに）接続されている。連続的するベクトルにアクセスする場合、他の線がこれらのラインキャッシュのいずれかにまだ存在しているので、１つの新たな線のみを物理メモリから取り出さなければならない。要求されたベクトルを形成する２つのキャッシュラインの一部はマルチプレクサ５３０からなるネットワークと組み合わされた後、ベクトル幅パイプラインレジスタに格納される。パイプラインレジスタはベクトル読み出しポート５３５を介してデータを受信する。パイプラインレジスタから、値がＶＭＵ同時通信バス上で伝送される。
【００５１】
また、図５は、さらなるベクトル幅レジスタ５１６、およびメモリから線の直接読み出しを可能にする関連するベクトル幅読み出しポート５４０を示しており、この場合レジスタはキャッシュとしての働きをする。
【００５２】
ベクトルメモリの周囲でのキャッシングはプログラマから隠されていることが好ましい。単一ポート型ＳＲＡＭを有するマルチポートベクトルメモリをエミュレートするためにキャッシュを使用しているにもかかわらず、プログラマはこの場合コヒーレントベクトルメモリを仮定することができる。各レジスタは物理メモリに可能な限り同一のデータのコピーを含むことができるので、プログラマが可干渉性を守らなければならない代わりに可干渉性が自動的に維持される。この目的のため、アドレス競合、即ちラインアドレスに発生したレジスタへの書き込みを行い、同一の線が他のレジスタの一つにも格納されることに対するチェックを行う。このようなチェックの場合、レジスタに格納された線のラインアドレス（アドレスの最上位の部分）をレジスタごとに格納することで十分である。競合の可能性が検出された場合、補正措置が取られる。例えば、同一の線を有するレジスタに書き込み動作が行われるとすぐに、読み出しレジスタに対して無効をマークする。（書き込みレジスタがメモリにはじめて書き戻された後）物理メモリから再度読み出されなければ、レジスタをそれ以上使用することはできない。または、書き込みレジスタに書き込みが行われた後に、書き込みレジスタの内容を同一の線を有するすべての読み出しレジスタにコピーするようにしてもよい。第３の可能性としては、読み出しおよび書き込みポートの間でレジスタを共有することである。この後者の方法はさらなるベクトル幅マルチプレクサを必要とし、コストが増加するが、性能上の利点がある。実際、バイパスが作成されるので、読み出しポートに接続された読み出しレジスタにバイパスが設置され、データが読み出しポートを通って書き込みレジスタから実際に読み出される。これらすべての補正措置は、まとめて「可干渉性チェッカ」と呼ばれる機能性を用いて行われる。どこにデータが（整合性の問題の可能性がある）コピーされた形で記憶されている可能性があるかを決定するために可干渉性レジスタが用いられ、この可干渉性レジスタは、この可干渉性レジスタが関連するデータレジスタに記憶された内容に関する情報を記憶するものである。可干渉性レジスタは、対応するデータレジスタに格納されたデータの物理アドレスを記憶することが好ましい。同一の可干渉性チェックおよび対策をスカラへのアクセスに対してだけでなく、書き込みポートに関係するレジスタにベクトルが（部分的に）記憶されるベクトル読み出しに対しても取ることができる。物理メモリ５１０への１回のアクセスによって、物理メモリへのライン読み出しまたは書き込みが単一のクロックサイクルで行われる。
【００５３】
ベクトルメモリユニットは、単一のＶＭＵ命令で以下の４つの同時のサブオペレーションまで対応することができる。
ベクトルの送信、またはラインの送信、またはＶＭ記憶場所から／ＶＭ記憶場所への受信
ＶＭ記憶場所からのスカラの送信
ＶＭ記憶場所へのスカラの受信
アドレス計算ユニットの状態／出力の変更
ＶＭＵ＿ｃｍｄ＝（ｖｏｐｃ，ａｉｄ＿ｖ，ａｉｎｃ＿ｖ，ｓｏｐｃ，ａｉｄ＿ｓ，ａｉｎｃ＿ｓ，ｓｉｚｅ，ｓｒｃｖ，ａｉｄ＿ｒ，ａｉｎｃ＿ｒ，ａｏｐｃ，ａｉｄ＿ａ，ｉｍｍ＿ａｄｄｒ）
Ｖｏｐｃ＝ＮＯＰ│ＳＥＮＤＬ│ＳＥＮＤＶ│ＲＣＶＬ＿ＣＧＵ│ＲＣＶＬ＿ＡＭＵ│ＲＣＶＬ＿ＳＦＵ│ＲＣＶＬ＿ＳＬＵ│ＲＣＶＬ＿ＳＲＵ
Ａｉｄ＿ｖ＝｛０，  ．．．，  ７｝
Ａｉｎｃ＿ｖ＝ＮＯＰ│ＩＮＣ
ｓｏｐｃ＝ＮＯＰ│ＳＥＮＤ
ａｉｄ＿ｓ＝｛０，  ．．．，  ７｝
ａｉｎｃ＿ｓ＝ＮＯＰ│ＩＮＣ
ｓｉｚｅ＝ＷＯＲＤ│ＤＷＯＲＤ│ＱＷＯＲＤ
ｓｒｃｖ＝ＮＯＮＥ│ＶＭＵ│ＡＭＵ│ＳＬＵ│ＳＲＵ
ａｉｄ＿ｒ＝｛０，  ．．．，  ７｝
ａｉｎｃ＿ｒ＝ＮＯＰ│ＩＮＣ
ａｏｐｃ＝  ＮＯＰ│ＩＭＭ│ＬＤＢＡＳＥ│ＬＤＯＦＦＳ│ＬＤＩＮＣＲ│ＬＤＢＯＵＮＤ
ａｉｄ＿ａ＝｛０，  ．．．，  ７｝
ｉｍｍ＿ａｄｄｒ＝｛０．０，  ．．．，  ５２４２８８．３１｝│｛−２６２１４４．０，  ．．．，  ２６２１４３．３１｝
【００５４】
ＶＭＵ命令は、サブオペレーションの数およびアドレス配列の連続性に応じてクロックサイクルの変数を取るようにしてもよい。
【００５５】
ＶＭＵ入力／出力は以下のとおりである。
【表４】
2005527035.tif 000006
【００５６】
尚、外部バスに接続されるスカラポートは２つある（一方は送信、他方は受信）。ＣＶＰ命令とのこれらのメモリアクセスとの同期化は、マイクロコントローラ１３０のタスクである。
【００５７】
ＶＭＵベクトルセクションは、物理ベクトルメモリ５１０を含む。
【表５】
2005527035.tif 000007
【００５８】
ベクトルサブオペレーションではスカラメモリにアクセスすることはできない点に留意されたい。従って、ベクトルサブオペレーションの場合には最上位のアドレスビットは無視される。ＶＭＵのベクトルセクションは、命令のＶＯＰＣフィールドにエンコードされる７つのサブオペレーション、即ちベクトル送信（ＳＥＮＤＶ）、ライン送信（ＳＥＮＤＬ）、および５つのライン受信サブオペレーション（ＲＣＶＬ＿ＣＧＵ、ＲＣＶＬ＿ＡＭＵ、ＲＣＶＬ＿ＳＦＵ、ＲＣＶＬ＿ＳＬＵ、およびＲＣＶＬ＿ＳＲＵ）に対応する。受信源である機能ユニットは対応するライン受信サブオペレーションに明示的にエンコードされる。各サブオペレーションに対する読み出しアドレスまたは書き込みアドレスは、対応するアドレス計算ユニットによって指定される。ＡＩＮＣ＿Ｖフィールドは、すべてのベクトルサブオペレーションの間で共有される。これはＡＩＤ＿ＶフィールドでエンコードされるＡＣＵへ送られる。ＡＩＮＣ＿Ｖフィールドは影響を受けたアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。
【表６】
2005527035.tif 000008
【００５９】
演算は、転送先（転送元）を含むロード（または格納）動作としてではなく、送信（または受信）動作として行われる点に留意されたい。後者は、他の機能ユニットでの演算によって指定される。ライン送信は、同一のアドレスを有するベクトル送信と機能的に同等である。ライン送信サブオペレーションは通常、機能ユニットを構成するため、または様々なレジスタでのタスクの状態を復元するために用いられる。ライン送信に対して特殊なモードを導入することによって、連続的なベクトル送信（「ベクトルストリーミング」）のアクセス時間をキャッシュの効率的な使用により最適化することができる。
【００６０】
ＶＭＵのスカラサブオペレーションは、命令のＳＯＰＣフィールドでエンコードされる。これは１つのサブオペレーション、即ちスカラ送信（ＳＥＮＤ）のみに対応する。読み出しアドレスは、ＡＩＤ＿Ｓフィールドで指定されるアドレス計算ユニットによって指定される。命令のＡＩＮＣ＿Ｓフィールドは、このアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。スカラサブオペレーションのオペランドの大きさ（ＷＯＲＤ、ＤＷＯＲＤまたはＱＷＯＲＤ）は命令のＳＩＺＥフィールドによって決定される。
【表７】
2005527035.tif 000009
【００６１】
ＶＭＵのスカラ受信サブオペレーションは、命令のＳＲＣＶフィールドでエンコードされる。その値がＮＯＮＥである場合、スカラ受信は行われない。さもなければ、命令のＳＲＣＶフィールドはスカラの受信源としてどの機能ユニットを使用するかを決定する。書き込みアドレスは、ＡＩＤ＿Ｒフィールドで指定されるアドレス計算ユニットによって指定される。命令のＡＩＮＣ＿Ｒフィールドは、このアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。スカラ受信サブオペレーションのオペランドの大きさ（ＷＯＲＤ、ＤＷＯＲＤまたはＱＷＯＲＤ）は、ソーススカラの大きさによって決定される。
【表８】
2005527035.tif 000010
【００６２】
送信および受信サブオペレーションを、あるＶＭ記憶場所から別のＶＭ記憶場所へスカラ移動演算に統合することができる。各アクセスのアドレスは対応するアドレス計算ユニットによって指定される。
【００６３】
ＶＭＵ制御セクション５５０は主に、従来のＤＳＰと同様のアドレス指定モードに対応するアドレス計算ユニット（ＡＣＵ）またはアドレス発生ユニット（ＡＧＵ）の組である。このようなユニットは、プロセッサの主要なデータ経路を使用せずに命令ごとに１つ以上のアドレス計算を行う。例えば、スカラのアドレスは各スカラ読み出しアクセスの後にインクリメントすることができる。これによって、データの算術演算と並列してアドレス計算を行うことが可能となり、プロセッサの性能が向上する。サポートされたアドレス指定モードの組によっては、このようなＡＣＵはいくつかのレジスタにアクセスする必要がある。例えば、
関連するアドレス指定、即ちいわゆるベースアドレスに関連するアドレス指定はベースレジスタｂａｓｅを必要とし、
ベースアドレスに関するオフセットはオフセットレジスタｏｆｆｓに格納され、
インクリメントレジスタｉｎｃｒに記憶された値によってオフセットを前／後インクリメントし、
バウンドレジスタｂｏｕｎｄに記憶されたアドレスに関してモジュロアドレス指定を行う。
【００６４】
このアドレス指定モードの組を用いて、次の事をサポートすることができる。オフセットレジスタｏｆｆｓを仮定する。アドレスｂａｓｅ＋ｏｆｆｓでの各メモリアクセス（読み出しおよび書き込み）の後、レジスタｏｆｆｓをｏｆｆｓ：＝（ｏｆｆｓ＋ｉｎｃｒ）モジュロｂｏｕｎｄに基づいて更新する。従って、ｏｆｆｓは（各アクセス後に）頻繁に変化し、ｂａｓｅ、ｉｎｃｒおよびｂｏｕｎｄに記憶された値はほとんど変化しない。通常、これら３つの後者のレジスタはプログラムループの前に初期化される。ＡＣＵの動作についてはここでは詳細に説明しない。
【００６５】
尚、上述の実施の形態は例証であって本発明を限定するものではなく、当業者は添付された請求の範囲から逸脱せずに他の多くの実施の形態を設計することが可能であろう。請求の範囲において、括弧内の参照符号はいずれも請求の範囲を限定するものではない。「備える（ｃｏｍｐｒｉｓｉｎｇ）」および「含む（ｉｎｃｌｕｄｉｎｇ）」という言葉は、請求の範囲に記載された以外の要素またはステップの存在を排除するものではない。
【図面の簡単な説明】
【００６６】
【図１】図１は、本発明によるスカラ／ベクトルプロセッサを使用してもよい好ましい構成を示している。
【図２】図２は、本発明によるスカラ／ベクトルプロセッサの主構造を示している。
【図３】図３は、サポートされているデータ幅およびデータタイプを示している。
【図４】図４は、ベクトルメモリユニットのブロック図を示している。
【図５】図５は、中間レジスタおよび２つのポートサイズを使用する場合を示している。
【図１】
2005527035.tif 000011
【図２】
2005527035.tif 000012
【図３】
2005527035.tif 000013
【図４】
2005527035.tif 000014
【図５】
2005527035.tif 000015
【国際調査報告】
2005527035.tif 000016
2005527035.tif 000017
2005527035.tif 000018