(57)【特許請求の範囲】
【請求項１】
第１、第２，及び第３のオペランドフィールド、オペランド規則子フィールドを有して、論理演算を指定する命令を実行する方法であって、
第１のレジスタと第１のレジスタファイル出力の間から選択された第１の値、及び第２のレジスタと第２のレジスタファイル出力の間から選択された第２の値で指定された論理演算を実行して、結果を生成するステップであって、前記オペランド規則子フィールドが前記第１及び第２の値をどこから選択するかを指定する、ステップと、
前記第３のオペランド及び前記オペランド規則子フィールドにより識別された位置に論理演算の結果を記憶するステップと、
前記第１のオペランドフィールドに従って前記第１のレジスタの中の値を更新するステップと、及び
前記第２のオペランドフィールドに従って前記第２のレジスタの中の値を更新するステップと
を含む、方法。
【請求項２】
前記第１のレジスタの中の値を更新する前記ステップが、
前記第１のオペランドフィールドの中の第１の索引をアドレスレジスタファイルに供給するサブステップと、及び
該第１の索引からアドレスを保持する該アドレスレジスタファイルの中の第１のアドレスレジスタを選択するサブステップと
を含む、請求項１の方法。
【請求項３】
該アドレスにより指定される値をアドレス指定可能なメモリから検索するステップと、及び
前記第１のオペランドフィールドにより指定されたアドレス指定方式に従って該アドレスを更新するステップと
を更に含む、請求項２の方法。
【請求項４】
前記第１のレジスタの中の検索された値を記憶するステップを更に含む、請求項３の方法。
【請求項５】
前記第３のオペランド及び前記オペランド規則子フィールドにより識別された位置が、レジスタファイルの中のレジスタを含む、請求項１の方法。
【請求項６】
前記第３のオペランド及び前記オペランド規則子フィールドにより識別された位置が、アドレス指定可能なメモリを含む、請求項１の方法。
【請求項７】
前記論理演算が算術論理演算である、請求項１の方法。
【請求項８】
前記第１及び第２のオペランドフィールドが、第１及び第２のアドレス指定方式をそれぞれ指定して、前記更新ステップが、該第１及び第２のアドレス指定方式に従って前記第１及び第２のレジスタの中の値をそれぞれ更新する、請求項１の方法。
【請求項９】
前記第１及び第２のレジスタがストリームレジスタを含む、請求項１の方法。
【請求項１０】
第１、第２、及び第３のオペランド、及びオペランドの組合わせを指定する命令を実行するためのメディアプロセッサであって、
前記オペランドの組合わせにより決定された第１及び第２の入力を受け取り、出力を生成する論理ユニットであって、該出力を前記第３のオペランド及び前記オペランドの組合わせにより指定された位置に記憶する、論理ユニットと、
レジスタセットの第１及び第２のグループを有するアドレスレジスタファイルであって、前記第１のオペランドが、該第１のグループ及び第１のアドレス指定方式の中の第１のレジスタセットを指定して、前記第２のオペランドが、該第２のグループ及び第２のアドレス指定方式の中の第２のレジスタセットを指定して、また前記第１及び第２のレジスタセット、及びアドレス指定方式が、前記論理ユニットへの前記第１及び第２の入力をそれぞれ更新する、アドレスレジスタファイルと、及び
複数の汎用レジスタを有する汎用レジスタファイルであって、前記第１及び第２のオペランドが、該汎用レジスタファイルの中の第１及び第２の汎用レジスタをそれぞれ指定して、該第１及び第２の汎用レジスタが、前記論理ユニットへの前記第１及び第２の入力をそれぞれ更新する、汎用レジスタファイルと
を含む、メディアプロセッサ。
【請求項１１】
前記アドレスレジスタファイルの中の各レジスタセットが、
ベースレジスタと、
ステップレジスタと、及び
モジュロレジスタとを含み、
前記ステップレジスタ及びモジュロレジスタを使用して、指定されたアドレス指定方式に従って該ベースレジスタを修正する、請求項１０のメディアプロセッサ。
【請求項１２】
前記指定されたアドレス指定方式、前記ステップレジスタ、及び前記モジュロレジスタに従って前記ベースレジスタを修正するためのアドレス生成ユニットを更に含む、請求項１１のメディアプロセッサ。
【請求項１３】
第１及び第２のメモリを更に含み、前記第１のグループの中の第１のレジスタセットが、該第１のメモリの中に第１の位置を指定して、前記第２のグループの中の第２のレジスタセットが、該第２のメモリの中に第２の位置を指定する、請求項１０のメディアプロセッサ。
【請求項１４】
前記論理ユニットへの前記第１及び第２の入力が、
第１及び第２のストリームレジスタをそれぞれ含み、該第１のストリームレジスタがメモリの中の前記第１の位置から第１の値を保持して、該第２のストリームレジスタがメモリの中の前記第２の位置から第２の値を保持する、請求項１３のメディアプロセッサ。
【請求項１５】
前記第１及び第２のメモリと前記第１及び第２のストリームレジスタとの間に配置されたロード／記憶ユニットを更に含み、該ロード／記憶ユニットが前記第１及び第２の値を前記第１及び第２のメモリから前記第１及び第２のストリームレジスタに転送する、請求項１４のメディアプロセッサ。
【請求項１６】
命令を処理するためのプロセッサであって、アドレスレジスタファイル及び汎用レジスタファイルを有し、第１及び第２のメモリと通信する、プロセッサにおいて、前記命令が、
第１及び第２の入力で実行するために論理演算を指定するオペレーションフィールドと、
第１のオペランドを指定する第１のフィールドであって、該第１のオペランドを前記アドレスレジスタファイルと前記汎用レジスタファイルの間から選択して、前記第１の入力を更新する、第１のフィールドと、
第２のオペランドを指定する第２のフィールドであって、該第２のオペランドを前記アドレスレジスタファイルと前記汎用レジスタファイルの間から選択して、前記第２の入力を更新する、第２のフィールドと、及び
論理演算の結果をどこに記憶するかを表す第３のオペランドを指定する第３のフィールドであって、該第３のオペランドを前記汎用レジスタファイルと第１及び第２のメモリとの間から選択する、第３のフィールドと
を含む、プロセッサ。
【請求項１７】
前記アドレスレジスタファイルが第１及び第２のアドレスレジスタセットから成り、前記第１のフィールドが前記第１のアドレスレジスタセットの中の第１のレジスタを指定して、前記第２のフィールドが前記第２のアドレスレジスタセットの中の第２のレジスタを指定する、請求項１６のプロセッサ。
【請求項１８】
前記第１及び第２のフィールドが複数のビットをそれぞれ含み、前記汎用レジスタファイルの中の特定の汎用レジスタを選択するために、前記アドレスレジスタファイル及びアドレス指定方式の中のアドレスレジスタを選択するビットと同じビットを使用する、請求項１６のプロセッサ。
【請求項１９】
前記第１、第２、及び第３のオペランドの選択を指定する第４のフィールドを更に含み、該第４のフィールドが前記アドレスレジスタファイルから選択される前記第１及び第２のオペランドを指定する場合、前記第１及び第２のフィールドが第１及び第２のアドレス指定方式をそれぞれ指定する、請求項１６のプロセッサ。
【請求項２０】
前記アドレスレジスタファイルの前記第１及び第２のフィールド及びアドレス指定方式における指定と、前記汎用レジスタファイルの指定がオーバーラップする、請求項１９のプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は一般にマイクロプロセッサに関し、特にメディア演算を実行するためのプロセッサに関する。より詳細には、本発明は修正されたハーバードメモリアーキテクチャを有して、ストリーミングＡＬＵ演算を実行するプロセッサに関するものである。
【０００２】
【背景技術の説明】
コンピュータのプロセッサ速度を上げるという一般的な要望がある。この要望は、ディジタル信号処理（ＤＳＰ）、グラフィックス処理、音声処理、及び映像処理を含むメディア処理の分野において特に際だっている。この分野において、典型的なアルゴリズムは、各エレメントを１度だけ使用しながら多数のエレメントを処理する。例えば、典型的なＤＳＰフィルタループは、多数の異なる入力サンプルを処理して、大きな係数のアレイからの異なるオペランドを各入力サンプルに適用する。従って、このような処理環境において演算の典型的なサイクルには以下のことが必要である。１）サンプルのアドレス及び係数を決定すること。２）サンプル及び係数をメモリから検索すること。３）サンプル及び係数を処理すること。４）演算の結果を記憶すること。
【０００３】
メディア処理の要求を満たすために、さまざまな技術を用いてプロセッサのクロック速度を上げたり、プロセッサによる命令処理の効率が改善されたりしてきた。そのような技術の１つは、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャである。ＲＩＳＣアーキテクチャは、高速度と高性能を得るために単純な命令の小さいセットを処理するように適合した複雑性の少ない設計を用いている。更に、ＲＩＳＣアーキテクチャは、命令形式内でレジスタの索引のような特定のオペランドフィールドに関して非常に少ない命令形式と固定位置を備える固定長の命令を使用する。このアーキテクチャは複雑性の少ない命令デコーダ及び制御論理を考慮して、このより少ない複雑性によりプロセッサの他の部分から増大した性能へ影響を及ぼすことができる。
【０００４】
ＲＩＳＣをベースとするプロセッサにおいて複雑性を低減するための別の方法は、レジスタファイルとメモリの間のオペランドの移動から論理演算装置（ＡＬＵ）の機能を切り離すことである。この切り離しは、メモリのアクセスを明示的なロードと記憶によってのみ可能とするロードストアアーキテクチャをもたらす。その結果として、このロードストアアーキテクチャは、各メモリアクセス毎に命令が明示的に呼び出されなければならないため、コードサイズの拡張をもたらす。従って、上述のようなＤＳＰステップを実行するために、ＲＩＳＣプロセッサはＤＳＰフィルタループの単一の繰返しに関して２つのロードと１つの記憶を発しなければならない。
【０００５】
ＲＩＳＣプロセッサとは異なって、多くの複雑命令セットコンピュータ（ＣＩＳＣ）のプロセッサは、２つの異なるメモリ位置から同時にメモリアクセスを可能にする命令を有する。これらの命令を使用して、プログラマーは単一の命令サイクルにおいて入力サンプルと係数の双方を検索ことが可能である。更に、このようなプロセッサは同時のＡＬＵ演算を可能とする。従って、ＤＳＰフィルタループを実行するために必要な命令の数は、減少する。
【０００６】
しかしながら、この機能的並行状態を達成するために、いくつかのオペランドが命令に関して暗黙であり、ロード／記憶メカニズムがＡＬＵ演算符号化に結合されている複雑な命令デコーディングスキームを、ＣＩＳＣプロセッサは一般的に有する。従って、ほんのわずかな演算により並列ロード記憶を可能とする。更に、これらの演算でも、小さいレジスタファイルへの、及び小さいレジスタファイルからの組合わせに制限されて、並列ＡＬＵ演算の制限されたサブセットのみをサポートする。また、このようなプロセッサは複雑な命令デコーダを必要とし、従って、より低いクロック速度を有する。
【０００７】
プロセッサの効率を増大するための別の技術は、スーパースケーラ命令スケジューリングである。スーパースケーラ命令スケジューリングをサポートするプロセッサは、命令ストリームから命令レベルの並行状態を動的に抽出して、ＡＬＵ演算を用いてグループをロードして記憶する。このようにして、命令がプロセッサの中で並列機能ユニットを利用することが可能である。しかしながら、このようなプロセッサは設計及びサイズに関して非常に複雑である。
【０００８】
処理効率を増大するために使用される更に別のアプローチは、超長命令語（ＶＬＩＷ）形式である。ＶＬＩＷ形式は、命令レベル並行状態を超長命令語に明示的に符号化する。ＶＬＩＷは典型的には、ＡＬＵ演算やメモリアクセスのような頻繁に実行される演算に関するフィールドを備えている。ＶＬＩＷを用いることにより、ＤＳＰフィルタループに必要な命令が、単一の命令語に結合されることが可能である。更に、ＶＬＩＷ形式は複雑性の少ないデコーダの使用を可能とし、プロセッサ内の複数の機能ユニットの使用を並行にすることにより高性能の可能性を備える。
【０００９】
しかしながら、ＶＬＩＷ形式は、プログラムがコンパイルされる場合、決定される命令ストリームの中でその並行状態を本質的に要求する。この要求は非常に複雑なプログラミングモデル原因となり、従って困難なプログラムのコンパイルとなる。このように、ＶＬＩＷ形式を用いることによりなされた処理効率における改善は、コンパイル時間の困った問題によって相殺される。
【００１０】
【発明の概要】
上述の問題は、本発明に従って構成されたデータストリーミングのための新規なプロセッサと方法によって除去される。プロセッサは好適には、第１及び第２のアドレス指定可能なメモリ、アドレスレジスタセットの第１及び第２のグループを有するアドレスレジスタファイル、アドレスレジスタセットの第１及び第２のグループにそれぞれ結合された第１及び第２のアドレス生成ユニット、第１及び第２のストリームレジスタ、汎用レジスタ（ＧＰＲ）ファイル、及び論理演算装置（ＡＬＵ）を有する修正されたハーバードメモリアーキテクチャを備える。
【００１１】
アドレスレジスタファイルは好適には、各４つのレジスタセットからなる２つのグループに分割された８つのレジスタセットを含む。各レジスタのセットには、ベースレジスタ、ステップレジスタ、及びモジュロレジスタが含まれる。アドレスレジスタセットの第１及び第２のグループは、第１及び第２のアドレス指定可能なメモリにそれぞれアドレス指定する。メモリアクセスがアドレスレジスタセットになされると、そのアドレスレジスタセットの内容は、アドレスと同じそれぞれのアドレス可能なメモリに送くられる。第１及び第２のアドレス生成ユニットは、それぞれ、６つのアドレス指定方式の１つに従って第１及び第２のグループの中で選択されたアドレスレジスタセットの内容を更新する。
【００１２】
第１及び第２のアドレス指定可能なメモリは、アドレスレジスタセットからアドレスの受信に応じてデータを出力する。これらのデータは、第１及び第２のストリームレジスタにそれぞれ記憶される。ＧＰＲレジスタファイルには、３２個のＧＰＲが含まれる。ＡＬＵは入力として２つのオペランドを受け取る。それらのうちの１番目のものは第１のストリームレジスタ、またはＧＰＲであり、それらのうちの２番目のものは第２のストリームレジスタ、またはＧＰＲである。ＡＬＵの出力を、第１または第２のアドレス指定可能なメモリ、またはＧＰＲに記憶することが可能である。
【００１３】
プロセッサは命令ストリームを実行する。命令ストリームは３つの動作を並列に実行する。即ち、１）ストリームレジスタまたはＧＰＲの中のオペランドで指定されたＡＬＵ演算を実行し、ＧＰＲまたはメモリに結果を記憶する。２）アドレスレジスタファイルからのアドレスを使用することにより、ストリームレジスタを更新して新たな値をロードする。３）アドレスレジスタファイルの中のアドレスを更新する。
【００１４】
これらの３つの動作を実行するため、命令ストリームは、オペランド選択フィールド及び３つのオペランドフィールドを符号化する。オペランド選択フィールドは、ＡＬＵ演算に関するオペランドを選択して、第１または第２のアドレス指定可能なメモリ、またはＧＰＲに結果を記憶するかどうかを指定する。第１及び第２のオペランドフィールドは、後続の命令ストリームにより実行されるＡＬＵ演算によって使用するためのオペランドを指定する。第１のオペランドは、アドレスレジスタファイル及びアドレス指定方式の中の第１のグループにおけるレジスタセット、またはＧＰＲを指定することが可能である。同様に、第２のオペランドは、第２のグループ及びアドレス指定方式の中のレジスタセット、またはＧＰＲを指定することが可能である。レジスタセット及びアドレス指定方式、または特定のＧＰＲを選択するために５ビットを必要とする。従って、ＧＰＲをアドレス指定するためのビットは、レジスタセット及びアドレス指定方式を選択するためのビットと位置的に同じである。
【００１５】
【好ましい実施例の詳細な説明】
図１は、従来技術のハーバードメモリアーキテクチャ100の高レベルブロック図を示す。ハーバードアーキテクチャにおいて、プロセッサの心臓部論理回路110は、２つの独立したバスＸ、Ｙのセットを介して２つの独立したメモリバンク112、114に結合される。プロセッサの心臓部110は、アドレスバス116とデータバス118を有するＸバスを介してＸメモリ112に結合される。更に、プロセッサの心臓部110は、アドレスバス120とデータバス122を有するＹバスを介してＹメモリ114に結合される。伝統的に、ハーバードアーキテクチャは、１つのメモリバンクにデータを保持し、もう１つのメモリバンクに命令を保持する。従って、２つのメモリバンクにデータが保持され、命令が３番目のメモリバンクに保持されるアーキテクチャを「修正されたハーバードアーキテクチャ」と呼ぶ。
【００１６】
修正されたハーバードアーキテクチャの利点は、２つのメモリアクセスを単一の命令サイクルで実行可能であることである。該アーキテクチャを有するプロセッサがメディア演算を実行する場合に、この利点が理解される。このような演算において、プロセッサは典型的にはデータの２つのアレイ（係数の１つのアレイとサンプルの１つのアレイ）を処理する。各アレイが異なるメモリに記憶される場合、プロセッサは単一の命令サイクルでデータのアレイ双方にアクセス可能である。
【００１７】
図２は、本発明の実施態様により構成されたプロセッサ200の特定の機能構成要素を示す高レベルブロック図である。命令メモリ210、命令デコーダ214、Ｘ及びＹアドレスレジスタファイル216、及び汎用レジスタ（ＧＰＲ）ファイル218が示されている。また、Ｘ及びＹアドレス生成ユニット（ＡＧＵ）、ロード／記憶ユニット222、Ｘメモリ224Ｘ、及びＹメモリ224Ｙも示されている。更に、図２は、Ｘ及びＹストリームレジスタ226、Ｘ及びＹマルチプレクサ（ＭＵＸ）228、論理演算装置（ＡＬＵ）230、及びＧＰＲ ＭＵＸ232を示す。
【００１８】
命令メモリ210は命令デコーダ214に結合されて、プロセッサ200により実行されるプログラムに関する命令を保持する。命令メモリ210は、命令デコーダ214から、メモリ210の中の命令を識別するプログラムカウンタを受信する。識別された命令は、命令メモリ210から命令デコーダ214に送られる。
【００１９】
命令デコーダ214は、命令メモリ210、Ｘ及びＹアドレスレジスタファイル216、及びＧＰＲファイル218に結合される。更に、命令デコーダ214は制御ライン（図２に波線として示されている）を介して、Ｘ及びＹアドレスレジスタファイル216、ロード／記憶ユニット222、Ｘ及びＹ ＭＵＸ228、ＡＬＵ230、及びＧＰＲ ＭＵＸ232に結合されている。命令デコーダは命令メモリ210から受信した命令を復号し、それに応じてプロセッサ200の動作を制御する。この考察のために、受信された命令がストリーミングＡＬＵ命令であると仮定する。以下により詳細に述べるように、ストリーミングＡＬＵ命令は３つのオペランドを指定する。即ち、２つの出所と１つの宛先である。出所オペランドは、Ｘ及びＹストリームレジスタ226及びＧＰＲファイル218の間から選択される。宛先オペランドは、ＸまたはＹメモリ224、またはＧＰＲファイル218から選択される。命令を復号する間に、命令デコーダ214は第１のオペランドからＸアドレスレジスタファイル216Ｘに第１の索引を送り、第２の索引を第２のオペランドからＹアドレスレジスタファイル216Ｙに送り、また３つのオペランドすべてをＧＰＲファイル218に送る。更に、命令デコーダ214は、命令のアドレスモードを表すＡＧＵ220に、及びＧＰＲ ＭＵＸ232がＧＰＲファイル218に書き込むかどうかを表すＧＰＲファイル218に制御信号を送る。
【００２０】
Ｘ及びＹアドレスレジスタファイル216は、命令デコーダ214からＸ及びＹの索引をそれぞれ受信する。更に、Ｘ及びＹアドレスレジスタファイル216は、それぞれ、各々のＡＧＵ220に、及びロード／記憶ユニット222に結合される。図３は、アドレスレジスタファイル216のより詳細な図を示す。アドレスレジスタファイル216は、各４つのレジスタセットの２つのグループＡ０〜Ａ３、Ａ４〜Ａ７に分割された８つのアドレスレジスタセットＡ０〜Ａ７を有する。４つのレジスタセットの第１のグループは、Ｘレジスタファイル216Ｘを形成し、他方４つのレジスタセットの第２のグループはＹレジスタファイル216Ｙを形成する。それぞれのアドレスレジスタセット、例えばそれらのうちのレジスタセットＡ０は、１つの３２ビットベースレジスタＢ０、１つの１６ビットステップレジスタＳ０、及び１つの１６ビットモジュロレジスタＭ０を備える。各グループＡ０〜Ａ３、Ａ４〜Ａ７の中に４つのレジスタセットのみが存在するため、グループの中の特定のレジスタセットを選択するために必要とされるのは２ビットの索引だけである。命令デコーダ214から受信されたＸ及びＹの索引は、それぞれ、Ｘ及びＹアドレスレジスタファイル216の中のレジスタを選択する。選択されたＸ及びＹアドレスレジスタ216の内容は、各々のＡＧＵ220に送られて、選択されたＸ及びＹベースレジスタ216の内容は、ロード／記憶ユニット222に送られる。
【００２１】
Ｘ及びＹ ＡＧＵ220は、それぞれ、Ｘ及びＹアドレスレジスタの内容、及び命令デコーダ214からのアドレスモード制御信号を受信し、またＸ及びＹアドレスレジスタファイル216の入力に結合された出力を備える。アドレスレジスタの内容を受信することに応じて、ＡＧＵ220は、アドレス指定方式及びステップレジスタＳ０とモジュロレジスタＭ０に従って選択されたベースレジスタＢ０を後修正する。ＡＧＵ220によりサポートされるモードには以下のものが含まれる。即ち、１）自動ポストディクリメント、２）自動ポストインクリメント、３）ステップポストディクリメント、４）ステップポストインクリメント、５）ベース（修正なし）、及び６）予約されたビットである。１及び２のモードにおいて、ベースレジスタＢ０はユーザプロセッサ状態レジスタ（不図示）の内容に従って修正される。３及び４のモードにおいて、ベースレジスタＢ０は、ステップレジスタＳ０の内容に従ってインクリメントまたはディクリメントされる。ポストディクリメント／インクリメントモード、モード１から４において、モジュロレジスタＭ０の中のモジュロ値が、循環バッファに関するアドレス指定を与えるためにアドレス計算を修飾する。６つのアドレスモードが存在するため、特定のモードを選択するために３ビットを必要とする。
【００２２】
各々のＸ及びＹアドレスレジスタファイル216も、選択されたベースレジスタの内容をロード／記憶ユニット222に送る。ロード／記憶ユニット222は、Ｘ及びＹアドレスレジスタファイル216、Ｘ及びＹストリームレジスタ226、ＡＬＵ230、ＧＰＲ ＭＵＸ232、及びＧＰＲファイル218に結合されて、命令デコーダ214から制御信号を受信する。更に、ロード／記憶ユニット222はＸ及びＹメモリ224に双方向に結合されている。ロード／記憶ユニット222とメモリ224の間の各カップリング223は、図１に示されているような分離したアドレスバスとデータバスを備えており、従って修正されたハーバードアーキテクチャを形成する。
【００２３】
ロード／記憶ユニット222は、Ｘ及びＹメモリ224を含むプロセッサ200内のアドレス指定可能なメモリ位置からデータをロードして、該位置にデータを記憶する。ストリームアクセスの場合、ロード／記憶ユニット222は、Ｘ及びＹメモリ224からのデータをＸ及びＹストリームレジスタ228にそれぞれロードする。通常のアクセスの場合、ロード／記憶ユニット222はメモリからのデータを、ＧＰＲ ＭＵＸ232を介してＧＰＲファイル218にロードする。ストリーミング命令によって指定される場合、ロード／記憶ユニット222は、ＡＬＵ230から受信された入力データをＸまたはＹメモリ224に記憶する。ロード／記憶ユニット222は、またＧＰＲファイル218から受信された入力データを明示ストア命令に応じてメモリに記憶する。
【００２４】
Ｘレジスタファイル216ＸはＸメモリ216Ｘの中のアドレスだけを参照することが可能であり、他方Ｙレジスタファイル216ＹはＹメモリ216Ｙの中のアドレスだけを参照することが可能である。従って、ロード／記憶ユニット222は、アドレスレジスタファイル216から受信されたアドレスを適用するメモリ224を決定する必要がない。非ストリームアクセスの場合、ロード／記憶ユニット222により受信されたアドレスは、アドレスを適用するメモリを明示的に識別する。
【００２５】
Ｘ及びＹメモリ224は、ロード／記憶ユニット222に結合され、またアドレス指定可能なメモリである。ロード／記憶ユニット222からのメモリアドレスと制御信号を受信することに応じて、メモリは、参照されたメモリアドレスにある入力を記憶するか、または参照されたメモリアドレスの内容を出力する。
【００２６】
Ｘ及びＹストリームレジスタ226はロード／記憶ユニット222からの入力を受信し、Ｘ及びＹ ＭＵＸ228に出力する。Ｘ及びＹストリームレジスタ226は少なくとも３２ビット長である。ストリーミングＡＬＵ230命令が実行される場合、Ｘ及びＹストリームレジスタ226は、Ｘ及びＹメモリ224から、ロード／記憶ユニット222によりそれぞれフェッチされたデータを記憶する。
【００２７】
ＧＰＲファイル218は命令デコーダ214及びＧＰＲ ＭＵＸ232に結合された入力と、Ｘ及びＹ ＭＵＸ228及びロード／記憶ユニット222に結合された出力を備える。ＧＰＲファイル218の中に３２個のＧＰＲが存在し、各ＧＰＲは少なくとも３２ビット長である。ＧＰＲ218はプロセッサ200により使用される汎用データを保持する。従って、ファイル218内のＧＰＲの内容を、明示的なロードと記憶の命令に応じて、ロード／記憶ユニット222を介してメモリからロードしたり、メモリに記憶したりすることが可能である。
【００２８】
命令ストリームを復号する場合、命令デコーダ214は、命令ストリームの中の３つのオペランドフィールドをＧＰＲファイル218に送る。第１の２つのオペランドはストリーミングＡＬＵ230演算に関する出所を指定する。ファイル218の中に３２個のＧＰＲが存在するため、第１の２つのオペランドフィールドのそれぞれにおける５ビットの索引が、ＧＰＲファイル218の中で特定のＧＰＲを指定する。第１のオペランドにより指定されたＧＰＲの内容は、Ｘレジスタ226Ｘに対応するＭＵＸ228Ｘに送られ、第２のオペランドにより指定されたＧＰＲの内容は、Ｙレジスタ226Ｙに対応するＭＵＸ228Ｙに送られる。第３のオペランドは、以下に説明されるオペランド選択フィールドと共に、ＡＬＵ230演算の結果の宛先を指定する。この宛先がＧＰＲである場合、ＧＰＲファイル218はＧＰＲ ＭＵＸ232を介してＡＬＵ230から結果を受信して、第３のオペランドにより識別されるＧＰＲにそれを記憶する。
【００２９】
Ｘ及びＹ ＭＵＸ228は、それぞれ、Ｘ及びＹストリームレジスタ226の内容、及び指定された第１及び第２のＧＰＲの内容を受信する。ＭＵＸ228の出力はＡＬＵ230に送られる。各ＭＵＸは、そのＭＵＸがＡＬＵ230に出力するその入力を指定する制御信号を命令デコーダ214から受信する。
【００３０】
ＡＬＵ230はＭＵＸ228からの入力を受信し、命令デコーダ214から制御信号を受信して、またロード／記憶ユニット222及びＧＰＲ ＭＵＸ232に結合された出力を備える。ＡＬＵ230はその入力で算術演算を実行して、出力を生成する。実行される演算の種類は、命令デコーダ214から受信される制御信号により指定される。
【００３１】
ＧＰＲ ＭＵＸ232は、ＡＬＵ230の出力に結合された入力と、ロード／記憶ユニット222の出力に結合された入力を備えて、命令デコーダ214からの制御信号を受信し、またＧＰＲファイル218に結合された出力を備える。命令デコーダ214によりそのように制御される場合、ＧＰＲ ＭＵＸ232は、受信された入力をＧＰＲファイル218に出力する。
【００３２】
図４は、命令デコーダ214により復号される種類のストリーミングＡＬＵ命令に関する命令符号化を示す。図４に明らかなように、８つの命令符号化形式が存在して、各命令符号化形式は、その形式に関するオペランドを指定する３文字コードにより識別される。３文字は、それぞれ、第１のオペランドの出所、第２のオペランドの出所、及びＡＬＵ230演算の結果に関する宛先を指定する。１番目又は２番目の位置において、文字「Ｘ」はＸストリームレジスタ226Ｘを指定し、文字「Ｙ」はＹストリームレジスタ226Ｙを指定し、また文字「Ｒ」はＧＰＲを指定する。３番目の位置において、文字「Ｘ」はＸメモリ224Ｘを指定し、文字「Ｙ」はＹメモリ224Ｙを指定し、また文字「Ｒ」はＧＰＲを指定する。例えば、命令形式414を「ＸＹＲ」と表示すると、出所オペランドがＸ及びＹストリームレジスタ226からそれぞれ生じて、宛先がＧＰＲであることを表している。
【００３３】
命令形式400は長さ３２ビットが好ましい。ビット14〜10は「Ａ」と表示され第１のオペランドを識別し、ビット９〜５は「Ｂ」と表示され第２のオペランドを識別し、またビット20〜16は「Ｃ」と表示され第３のオペランドを識別する。Ｏｐ６ビット２〜０は「Ｄ」と表示され命令形式によって使用される符号化（オペランド）の種類を指定する。Ｏｐ１〜５のビット27〜21、15、及び４〜３は「Ｅ」と表示され命令形式に関する演算コード（opcode）を含む。最後に、ＣＯＮＤビット31〜28は「Ｆ」と表示され命令が実行する条件を識別する。
【００３４】
フィールドＤは、ＡＬＵの第１及び第２のオペランドが読出されるところ、及びＡＬＵ230演算の結果が記憶されるところを指定する（オペランド ３）３ビットのオペランド選択フィールドである。表１は、予想されるオペランドの組み合わせ、フィールドＤ（Ｏｐ６）の対応する値、及び図４で対応する参照符号を表している。
【００３５】
【表１】
0003866513.tif 000002
【００３６】
第１のオペランドは、ＧＰＲまたはＸストリームレジスタ226Ｘから選択される。一方、第２のオペランドは、ＧＰＲまたはＹストリームレジスタ226Ｙから選択される。第３のオペランドをＸメモリ224Ｘ、Ｙメモリ224Ｙ、またはＧＰＲに記憶することが可能である。
【００３７】
フィールドＡ、Ｂ及びＣは、それぞれ、第１、第２、及び第３のオペランドを指定する。第１のＡ及び第２のＢオペランドを使用して、後続のＡＬＵ230演算により使用するためにＡＬＵ230（ストリームレジスタ226及びＧＰＲファイル218）に対する入力を更新する。第１及び第２のオペランドにより指定された値は、ストリームレジスタ226にすでに保持されていた値に上書きされる。上述のように、第３のオペランドは、現在のＡＬＵ230演算の結果を記憶するところを表す。
【００３８】
ＧＰＲファイル218の中に３２個のＧＰＲが存在するため、オペランドフィールドＡ、Ｂ、Ｃのそれぞれは、５ビット長である。Ｘ及びＹアドレスレジスタファイル216のそれぞれの中に４つのレジスタセットのみが存在するため、及び第１のオペランドＡがＸレジスタファイル216Ｘの中のレジスタセットだけを選択することが可能であり、第２のオペランドＢがＹレジスタファイル216Ｙの中のレジスタセットだけを選択することが可能であるため、アドレスレジスタファイル216内の特定のレジスタセットを選択するために必要とされるのは、第１のＡ及び第２のＢオペランドフィールド内の２ビットの符号化だけである。更に、予想されるアドレス指定方式の間で選択するために３ビットの符号化を必要とする。表２は、予想されるアドレス指定方式、及び関連するアドレスモードビットを表す。
【００３９】
【表２】
0003866513.tif 000003
【００４０】
オペランドフィールドＡ、Ｂ、Ｃにおいて、ＧＰＲを選択するために使用される５ビットと、アドレスレジスタの索引に関する２ビットのサブフィールド及びアドレス指定方式に関する３ビットのサブフィールドがオーバーラップする。従って、単一の５ビットフィールドＡ、Ｂ、Ｃが、３つのオペランドのそれぞれに関して単に必要とされるだけである。例えば、命令形式410は、ＲＲＲ命令に関するものであり、従って、３つのオペランドすべてが、５ビットフィールドＡ、Ｂ、Ｃとして示される。一方、命令形式420はＲＹＸ命令であり、第２のＢ及び第３のＣオペランドに関する５ビットフィールドが、３ビット及び２ビットのサブフィールドに分割されて示されている。
【００４１】
プログラマが出所オペランドの１つとしてＧＰＲを使用したい場合、プログラマは５ビットのオペランドフィールドを使用してＧＰＲを指定する。プログラマが第１のオペランドとしてＸストリームレジスタ226Ｘを使用したい場合、プログラマはレジスタセットに関する２ビットの索引、及び第１のオペランドフィールドＡにアドレス指定方式を指定する３ビットを使用する。プログラマは、同じ方法で第２のオペランドとしてＹストリームレジスタ226Ｙを使用することが可能である。アドレスモードビットが、000にセットされる場合、ＸまたはＹストリームレジスタ226の中の値は、メモリフェッチを開始する、またはアドレスレジスタ216を更新することなしに使用される。
【００４２】
ＯｐフィールドＥはプロセッサにより実行されるべき計算を記述する。ＣＯＮＤフィールドＦは、計算が実行される前に検査されるべき条件を記述する。
【００４３】
図５は、図４に示されているような命令ストリームを実行する際プロセッサ200により実行されるステップを示すタイミングチャートである。図５において、時間は、図の左側に矢印500により示された方向に流れ、右側の囲い枠は、示されたステップがプロセッサ200の機能ユニットにより実行される順序を示す。プロセッサ200の機能ユニットは並列に動作するため、図５は、時間正規化されたステップが同時に発生することを示すと解釈されるべきではなく、むしろステップが実行される概略のシーケンスを示しているにすぎない。
【００４４】
最初に、図４に示されるような命令ストリームが、Ｔ0で命令デコーダ214により受信される。次にＴ1で、命令デコーダ214が第１及び第２のオペランドの索引ビットをＸ及びＹアドレスレジスタファイル216にそれぞれ送る。同じ時間Ｔ1で、命令デコーダ214が３つのオペランドすべてをＧＰＲファイル218に送る。
【００４５】
更に、命令デコーダはＯｐ６フィールドを復号して、現在のＡＬＵ230演算に対する、及び結果が記憶されるべきオペランドを決定する。以下の擬似コードは、Ｏｐ６フィールドを復号する際にデコーダ214により実行される命令デコーディングを明らかにする。
0003866513.tif 000004
いったんＯｐ６フィールドが復号されると、ＡＬＵ230は命令デコーダ214から選択された入力を読取る。
【００４６】
次のＴ2で、アドレスレジスタファイル216は選択されたレジスタの内容をロード／記憶ユニット222に送り、Ｘ及びＹストリームレジスタ226へロードされるべき適切な値を生じさせる。更に、ＡＧＵ220は索引ビットにより選択されたアドレスレジスタを更新する。同時に、復号された命令により示されたＡＬＵ230演算が、あらかじめ読出されたオペランドで実行される。
【００４７】
次に、完了したＡＬＵ230演算の結果を、Ｏｐ６フィールド、及び以下の擬似コードにより示されるような第３のオペランドにより示された位置に記憶する。
0003866513.tif 000005
従って、ストリーム演算は、並列に３つのタスクを行う。即ち、
１）Ｘ及びＹストリームレジスタ226またはＧＰＲファイル218の中のオペランド上で指定されたＡＬＵ230演算を実行して、結果を記憶する。
２）Ｘ及びＹストリームレジスタ226の中のデータを更新して、２つのＧＰＲの内容をＧＰＲファイルからＸ及びＹ ＭＵＸ228に与えることによりＡＬＵ230に対するオペランドを更新する。
３）ＡＧＵ220を使用する次の２つのメモリ参照に関するアドレスを計算して、該アドレスをアドレスレジスタファイルに記憶する。
【００４８】
例えば、形式「加算  出所１  出所２  結果（add source1 source2 result）」を使用する「加算（add）」命令のストリーミングの実施を考察する。出所オペランドとしてＸストリームレジスタ226Ｘ及びＹストリームレジスタ226Ｙを用いて、ＧＰＲファイル218の中のＧＰＲに加算の結果を記憶して、出所オペランドを事後インクリメントするストリーミング加算命令は、「add［ｘ＋＋］［ｙ＋＋］ＧＰＲ」として表示される。ここで「ｘ」及び「ｙ」はそれぞれＸ及びＹアドレスレジスタファイル216内のレジスタを参照して、「ＧＰＲ」はＧＰＲファイル218内のレジスタを参照する。この加算命令は命令形式414に対応する。
【００４９】
この命令がプロセッサ200により実行される場合、Ｘストリーミングレジスタ228Ｘの中のデータは、ＡＬＵ230によりＹストリーミングレジスタ228Ｙの中のデータに加算される。この加算演算の結果は識別されたＧＰＲに記憶される。更に、フェッチが［ｘ］によりアドレス指定されるデータのためのＸメモリ224Ｘから開始されて、Ｘストリーミングレジスタ226Ｘに記憶される。同様に、フェッチが［ｙ］によりアドレス指定されるデータのためのＹメモリ224Ｙから開始されて、Ｙストリーミングレジスタ226Ｙに記憶される。最後に、アドレスレジスタファイル216内の［ｘ］及び［ｙ］レジスタのベースレジスタが、更新される。ストリーミング加算命令が「addＸ［ｙ＋＋］ＧＰＲ」として表示された場合、Ｘメモリ224Ｘからのメモリフェッチ及び［ｘ］レジスタの更新は、Ｘストリームレジスタ226の内容が再使用されるという理由で実行されない。
【００５０】
別の例において、「add［ｘ＋＋］ＧＰＲ［ｙ＋＋］」と表示された命令を考察する。プロセッサ200がこの命令を実行する場合、Ｘストリームレジスタ226Ｘの中のデータは、識別されたＧＰＲの中のデータに加算されて、加算演算の結果が［ｙ］により識別されたＹメモリ224Ｙ内の位置に記憶される。更に、フェッチが［ｘ］により識別されたデータのためのＸメモリ224Ｘから開始される。フェッチされたデータはＸストリーミングレジスタ226Ｘに記憶される。最後に、アドレスレジスタファイル内の［ｘ］及び［ｙ］レジスタのベースレジスタが、更新される。
【図面の簡単な説明】
【図１】  従来技術のハーバードメモリアーキテクチャを示す高レベルブロック図である。
【図２】  データストリーミングをサポートするプロセッサの機能構成要素を示す高レベルブロック図である。
【図３】  アドレスレジスタファイルを示す高レベルブロック図である。
【図４】  図２のプロセッサによって使用される命令語形式を示す図表である。
【図５】  命令ストリームを実行する場合、図２のプロセッサによって実行されるステップを示すタイミングチャートである。
【図１】
0003866513.tif 000006
【図３】
0003866513.tif 000007
【図２】
0003866513.tif 000008
【図４】
0003866513.tif 000009
【図５】
0003866513.tif 000010