(57)【特許請求の範囲】
【請求項１】
データフィールドの各々一つからの数値をデータプロセッサに別個に処理させる命令を実行するために所定の前記データフィールドに細分され得る記憶装置を用いるデータプロセッサであって、前記データプロセッサの命令セットは、記憶位置をアドレス指定するためのオペランド位置を備える条件付き割当て命令を有し、前記データプロセッサは、各々の前記データフィールドに対する各演算を並列に実行することによって前記条件付き割当て命令に応答するように構成され、各々の特定の前記データフィールドに対する前記各演算は、前記特定のデータフィールドに対する各条件データによって条件付けられる、データプロセッサにおいて、前記データプロセッサは、各々の前記特定のデータフィールドに対して、前記特定のデータフィールドに対する前記条件データによって制御される各マルチプレクサを有し、各々の前記特定のデータフィールドに対する前記マルチプレクサは、
−前記オペランド位置のうちの第１及び第２オペランド位置によって各々アドレス指定される第１及び第２記憶位置において前記特定のデータフィールドの内容を受取るためのポートに結合される第１及び第２入力部と、
−前記条件付き割当て命令の結果において多重化出力を前記特定のデータフィールドに供給するための出力部と
を持ち、
前記データプロセッサは、前記オペランド位置のうちの第３オペランド位置においてアドレス指定される記憶位置の内容の各データフィールドから前記条件データを取得するように構成され、
前記データプロセッサは、
−少なくとも第１、第２、及び第３読取りポートを備えると共に、命令フィールドにおいてアドレス指定された内容をフェッチする出所となるマルチポートレジスタファイルと、
−前記命令フィールドからの演算コードに従って前記命令を処理し、前記マルチポートレジスタファイルに対する処理の結果を、前記命令フィールド中のアドレスによりアドレス指定された前記レジスタに書き戻すと共に、２つ以下の前記オペランド位置を持つ他の命令を実行するための第１及び第２機能ユニットと、
−前記命令フィールドからの前記演算コードに従って前記命令を処理し、前記マルチポートレジスタファイルに対する処理の結果を、前記命令フィールド中のアドレスによりアドレス指定された前記レジスタに書き戻すと共に、前記条件付き割当て命令を実行するための第３機能ユニットと
を有し、前記第１機能ユニットは、常に前記第１読取りポート及び前記第２読取りポートから自身の命令の前記オペランド位置によりアドレス指定された内容を読取り、該第２機能ユニットは、常に少なくとも前記第３読取りポートから自身の命令の前記オペランド位置によりアドレス指定された内容を読取り、前記第３機能ユニットは、各々常に前記第１、第２、及び第３ポートから前記条件付き割当て命令の前記第１、第２、及び第３オペランド位置によりアドレス指定された前記内容を読取ることを特徴とするデータプロセッサ。
【請求項２】
前記命令セットが比較命令を有し、当該データプロセッサは、
−前記記憶装置において対応するデータフィールドの内容を比較するステップと、
−前記各データフィールドに対して、
前記条件データの少なくとも３つの異なる値から選択される、前記データフィールドの各々の間の指定された関係の真及び偽を表わす２つのとり得る値のうち１つを比較結果として生成するステップと、
−前記記憶装置のうちアドレス指定された１つに該比較結果を書き戻すステップと
により前記比較命令に応答することを特徴とする請求項１に記載のデータプロセッサ。
【請求項３】
前記比較命令のインスタンス及び前記条件付き割当て命令のインスタンスを含むプログラムでプログラムされ、該条件付き割当て命令の該インスタンスは前記比較命令の結果を前記記憶装置の第３記憶位置としてアドレス指定することを特徴とする請求項２に記載のデータプロセッサ。
【請求項４】
前記命令セットは、前記条件付き割当て命令と同様に前記記憶装置を参照するオペランド位置を持つ他の命令を有し、該他の命令は当該プロセッサに前記データフィールドを一緒に処理させ、各前記記憶装置の内容が単独の数値として処理されることを特徴とする請求項１に記載のデータプロセッサ。
【請求項５】
命令を実行するために所定のデータフィールドに細分可能である記憶装置を用いる請求項１に記載のデータプロセッサで、条件付き割当てを実行する方法であって、該命令が、前記記憶装置内の記憶位置を該命令の命令フィールドでアドレス指定して、該データプロセッサに前記アドレス指定した記憶位置の各データフィールドからの数値を個別に処理させ、当該方法は、
−該データプロセッサに、各々前記記憶装置のうちの第１及び第２記憶位置内の該特定のデータフィールド中に記憶された数値を個別に比較する、各前記特定のデータフィールドに対する各比較演算を実行させ、
−該特定のデータフィールドに対する前記各比較演算の各結果を前記記憶装置のうちの第３記憶位置の中の該特定のデータフィールド中に書込ませる
比較演算を実行し、該結果は少なくとも３つの値から選択されるステップと、前記記憶装置のうちの前記第３記憶位置をアドレス指定すると共に、前記データプロセッサに、
−第４記憶位置の各前記特定のデータフィールドへ前記記憶装置のうちの第５又は第６記憶位置における該特定のデータフィールドの内容を書込ませる条件付き割当て命令を実行し、前記記憶装置のうちの前記第５記憶位置又は前記第６記憶位置が前記記憶装置の前記第３記憶位置における前記特定のデータフィールドの内容の制御の下で選択されるステップと
を有することを特徴とする方法。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明はベクトルプロセッサに関する。
【０００２】
【背景技術】
米国特許番号第5,623,650号はベクトルプロセッサを開示している。ベクトルプロセッサは多くのベクトル成分（vector component）により構成されるオペランドを用いるベクトル命令を実行する。ベクトル命令に応じて、ベクトルプロセッサはオペランドの種々のベクトル成分を用いて並列に多くの回数演算を実行する。
【０００３】
一般にデータプロセッサに関して、命令の条件付き実行（conditional execution）の使用は既知である。データプロセッサは条件値（condition value）に依存して条件付き命令（conditional instruction）を実行する。
【０００４】
米国特許番号第5,623,650号のベクトルプロセッサは、ベクトル処理のための条件付き実行の概念を改善している。このベクトルプロセッサは、各ベクトル成分に対する条件値の各々を書込むことが出来るベクトル条件レジスタ（vector condition register）を持つ。条件付き命令を実行すると、ベクトルプロセッサは、対応する条件値が真であるオペランドのベクトル成分についてのみ演算を実行する。
【０００５】
このことは、互いに独立している条件付き命令の結果の成分を書き戻す機能を必要とする。斯様な機能はデータプロセッサの複雑な設計を必要とする。この機能は、条件的に全成分を書き戻すか又は全く書き戻さないかのいずれかの間で選択することしか出来ないより簡素な設計と一致しない。
【０００６】
これは、例えば“通常（normal）”（非ベクトル）演算のための命令及びベクトル演算のための命令の両方を持つプロセッサでの場合である。通常演算のための命令は、該通常演算によりNビット数（例えばN=64）として扱われる、Nビットを各々が記憶する結果レジスタ及びオペランドを参照する。ベクトル演算のための命令は、通常演算と同様に同じオペランド及び結果レジスタを参照するが、ベクトル演算においてはレジスタ中のビットがM（例えばM=4）N／Mビット数として扱われる。通常演算はNビットの結果を全体的に書き戻す。Nビットの一部を選択的に書き戻し、Nビットの他の部分は書込み前のままにするためのなんの備えも必要としない。このことは、レジスタへの簡素なアクセス機構をもたらす。ベクトルの全成分を書き戻すこと又はベクトルの全成分を書き戻さないことのみが可能な未変形のアクセス機構を備えるベクトル演算のためには、このアクセス機構を変形することは望ましくない。
【０００７】
【発明の開示】
本発明の第１の特徴によるデータプロセッサは、各フィールドに対して関連のマルチプレクサを有する。当該プロセッサが条件付き割当て命令を実行する場合、マルチプレクサは、好ましくはオペランド以外の何かとして命令中でアドレス指定される記憶装置から取得される当該特定のフィールドに対する条件データにより制御される。斯くして結果の全フィールドを書き戻すことができ、各フィールドの内容は条件データに依存する。
【０００８】
一実施例において、条件データは各フィールドに対して３つ以上の値をとることができ、３つ以上の値の間で多重化することを可能にする。
【０００９】
本発明によるプロセッサは、比較入力の間で各々小なり（less than）、同一（equal to）、大なり（greater than）の関係を反映する３つ以上の値を仮定することが出来る比較結果を生成する比較命令を持つ。
【００１０】
好ましくは、マルチプレクサの入力は、２つの読取りポートにしか接続されない２つ以上の機能ユニットを備えるレジスタファイルへの読取りポートを共用する。
【００１１】
VLIWプロセッサ（超長命令語プロセッサ）等の幾つかのプロセッサは並列に異なる命令を実行することが可能な多くの機能ユニットを含む。このプロセッサは読取りポートを備えるマルチポートレジスタファイルを含む。命令は関連の発行スロットにおいて発行され、レジスタのアドレスを含む。該アドレスは発行スロット中の所定のポジションから取得される。各所定のポジションは固定読取りポートと対応付けられる。ポジションから取得されるアドレスは、このポジションと対応付けられた読取りポートに供給される。斯くして、前記命令が更にデコードされる前に該アドレスを供給することが出来る。前記読取りポートは、命令のオペランドを供給する機能ユニットに結合される。
【００１２】
通常の機能ユニットは多くて２つのオペランドを必要とする。しかし、多重化演算（multiplex operation）等を実施する機能ユニットはレジスタファイルの少なくとも３つの読取りポートに接続されなければならない。多くの命令サイクルにおいてこの機能ユニットは用いられないだろう。そこで、これらのサイクルにおいてその読取りポートを無駄にしないために、多重化機能ユニットに対する命令を２つ以上の発行スロットに広げる。斯くして、十分な読取りポートが利用可能になり、多重化機能ユニットが用いられない処理サイクル中に、２つ以上の通常の機能ユニットが前記発行スロットを用いることが出来る。
【００１３】
本発明のこれらの及び他の特徴を、以下の図を用いて説明する。
【００１４】
【本発明を実施するための最良の形態】
図１はデータプロセッサのアーキテクチャを示している。一例としてVLIWプロセッサが示されているが、本発明はVLIWプロセッサに限定されるものではない。このプロセッサは、レジスタファイル１０、多数の機能ユニット１２ａ乃至１２ｆ及び命令発行ユニット（instruction issue unit）１４を含む。命令発行ユニット１４は機能ユニット１２ａ乃至１２ｆに対する命令発行接続（instruction issue connections）を持つ。機能ユニット１２ａ乃至１２ｆは読取りポート及び書込みポートを介してレジスタフィルタ１０に接続される。
【００１５】
演算中、命令発行ユニット１４は、命令メモリ（明確には図示せず）から逐次命令語をフェッチする。各命令語は機能ユニット１２ａ乃至１２ｆに対する幾つかの命令を含んでも良い。
【００１６】
図２は命令の例を示している。この命令は多数のフィールド、即ち、演算コードのためのフィールドOPC、第１ソースレジスタのアドレスのためのフィールドR1、第２ソースレジスタのアドレスのためのフィールドR2、結果レジスタのアドレスのためのフィールドRdest及び任意に保護レジスタのアドレスのためのフィールドRgを含む。
【００１７】
命令発行ユニット１４は、機能ユニット１２ａ乃至１２ｆの関連の１つに対して並列に命令語から個別の命令を発行する。該命令に応じて、ソースレジスタのアドレスのためのフィールドR1及びR2においてアドレス指定されたソースレジスタの内容が、レジスタファイル１０からフェッチされる。機能ユニット１２ａ乃至１２ｆは、演算コードのためのフィールドからの演算コードに従って命令を処理し、レジスタファイル１０に対する処理の結果を、結果レジスタのアドレスのためのフィールドRdest中のアドレスによりアドレス指定されたレジスタに書き戻す。任意に、書き戻しは、保護レジスタのアドレスのためのフィールドRgによりアドレス指定されたレジスタの内容次第とする。
【００１８】
多数の機能ユニット１２ａ乃至１２ｆは、アドレス指定されたレジスタの内容をパックデータフォーマット中の数のベクトルとして扱うことが可能である。
【００１９】
通常の命令は、ソースレジスタ及び行先レジスタの各々の内容を単一の数として用いる。例えば、レジスタが６４ビットの長さである場合、通常の“ADD”命令により機能ユニット１２ａ乃至１２ｆが、レジスタファイル１０中のソースレジスタからロードされる２つの６４ビットの数を加算し、レジスタファイル１０中の行先レジスタ中に６４ビットの結果を置く。同様に通常のシフト命令により機能ユニット１２ａ乃至１２ｆが、６４ビットレジスタを介してビットをシフトする。斯様な通常の命令の実行は、レジスタファイル１０からデータをロードする工程、関連の演算を実行する工程及び結果を書込む工程を必要とする。
【００２０】
更に、１つ以上の機能ユニット１２ａ乃至１２ｆが、レジスタの内容をパックデータのベクトルとして用いる命令を実行することが可能である。
【００２１】
図３はパックデータフォーマットの例を示している。このデータフォーマットは可能なレジスタの内容を示している。レジスタの内容３０は、ビットにおいて等しい長さの４つのフィールド３２ａ乃至３２ｄに細分される。一例として、このレジスタの内容は６４ビットから成ることができ、各フィールドは１６ビットから成ることが出来る。
【００２２】
機能ユニット１２ａ乃至１２ｆがある命令を実行する際、該機能ユニットは当該命令のソースレジスタ及び／又は行先レジスタ中のデータをパックデータとして扱う。例えば、加算命令の場合には、対応するフィールド３２ａ乃至３２ｄのペアが加算され、各ペアは第１ソースレジスタからの１フィールド及び第２ソースレジスタからの１フィールドから成っても良い。この例において、各ペアの加算の結果は行先レジスタ中のフィールド３２ａ乃至３２ｄの関連の１つに書込まれる。一方のフィールドから他方のフィールドへのけた上げ対話（carry interaction）がないので、異なるペアの加算は無関係である。
【００２３】
レジスタの内容をパックデータとして扱う命令を実行するために必要とされる工程の数は、同時に複数の演算を行うことが出来るので、通常の命令を実行するために必要とされる工程の数と一般的に同じである。概して、ソースレジスタの内容をロードするために１工程を使う（即ち、単一の数として扱われるレジスタの内容をロードするために使われるのと同じタイムスパンにおける１工程においてパックデータの全てがロードされる）。概して、関連した演算を実行するために１工程を用いる、即ち、１つのレジスタからの種々のパックされた数についての演算が並列に実行される。概して、行先レジスタに書込むために１工程を使う。即ち、単一の数として扱われるレジスタの内容を書込むために使われるのと同じタイムスパンにおける１工程においてパックデータの全てが書込まれる。
【００２４】
図４はデータプロセッサにおいて用いる機能ユニットを示している。この機能ユニットは、第１中間レジスタ４０及び第２中間レジスタ４２、比較ユニット４４ａ乃至４４ｄ、出力ポート４６、並びに命令デコーダ４７を含む。第１及び第２中間レジスタは各々、比較ユニット４４ａ乃至４４ｄの関連の１つに結合される４つの出力セクション４１ａ乃至４１ｄ及び４３ａ乃至４３ｄを持つ。比較ユニット４４ａ乃至４４ｄの各々は出力を持つ。比較ユニットの出力は、出力ポート４６の関連の入力セクション４５ａ乃至４５ｄに結合される。命令デコーダ４７は機能ユニット４４ａ乃至４４ｄに並列に結合される出力を持つ。
【００２５】
前記プロセッサのアーキテクチャにおいて、第１中間レジスタ４０及び第２中間レジスタ４２は、命令によりソースレジスタとしてアドレス指定されるレジスタの内容を受取るために前記レジスタファイルの関連の読取りポートに接続される。命令デコーダ４７の入力は、命令の演算コード又はこの演算コードのデリバティブ（derivative）を受取る。前記出力ポートの出力は、命令においてアドレス指定された結果レジスタに結果を書込むために前記レジスタファイルの書込みポートに結合される。
【００２６】
演算中、中間レジスタ４０及び４２は、命令においてアドレス指定されるソースレジスタの内容を受取る。出力セクション４１ａ乃至４１ｄ及び４３ａ乃至４３ｄは、この内容から関連のフィールドを比較ユニット４４ａ乃至４４ｄに出力する。各比較ユニット４４ａ乃至４４ｄは関連のポジションにおけるフィールドと対応付けられる。各比較ユニット４４ａ乃至４４ｄは、比較ユニット４４ａ乃至４４ｄが対応付けられるポジションにおける２つのソースレジスタからのフィールドの内容を受取る。比較ユニット４４ａ乃至４４ｄは全てが、２つのフィールドの内容の間で同タイプの比較演算、例えば“同一比較（compare equal）”演算又は“非同一比較（compare not equal）”演算又は“小なり（compare less than）”演算等を行う。命令デコーダ４７は前記演算コードから導き出される制御信号で適切な比較演算を選択する。
【００２７】
各比較ユニット４４ａ乃至４４ｄは、その特定の入力に対する比較結果を形成し、出力ポート４６の関連の入力セクション４５ａ乃至４５ｄにこの結果を供給する。出力ポート４６は前記レジスタファイルに結果を送り込む。この結果は前記ソースレジスタと同様にフィールドに細分される。各フィールドはフィールドの関連のペアに対する比較結果を含む。
【００２８】
比較ユニット４４ａ乃至４４ｄは、比較命令の実行のみが可能な専用の比較ユニット、又は加算、減算等のような算術演算の結果として生じる数値データを表わす出力を生成することも可能な論理演算装置（ALU’s）であっても良い。これに関連して、 “非同一（not equal）”等の指定された関係が２つのソースフィールドの内容の間で成り立つかどうかを比較結果が表わすことに注意されたい。比較結果は、限定された数の値のうちの１つしかとることが出来ず、関係を成り立つ限り前記内容のとり得る値の全範囲に対して同じである。これは、非常に大きい範囲から値をとることができ、ソースフィールドの内容が変化するに連れ、変動する算術演算からの数値データと対照的である。
【００２９】
比較命令は下記のように示され得る。
eql_4 R1, R2, R3
【００３０】
ここで、eql_4は２つのソースレジスタ中の４つのフィールドの同一性（equality）に関するテストを参照する演算コードの簡略記号である。R1及びR2はソースレジスタへの参照を、R3は行先レジスタへの参照を示す。これらのレジスタ中のフィールドの内容は、R1[0]、R1[1]、R1[2]及びR1[3]（各々レジスタR1の0乃至15ビット、16乃至31ビット、32乃至47ビット及び48乃至63ビット）により示され、R2及びR3に関しても同様に示されるだろう。“eql_4”命令の作用は、
R1[0]=R2[0]の場合R3[0]=1、その他の場合R3[0]=0
R1[1]=R2[1]の場合R3[1]=1、その他の場合R3[1]=0
R1[2]=R2[2]の場合R3[2]=1、その他の場合R3[2]=0
R1[3]=R2[3]の場合R3[3]=1、その他の場合R3[3]=0
である。大なり命令gtr_4は、
gtr_4 R1, R2, R3
により示されても良く、
R1[0]>R2[0]の場合R3[0]=1、その他の場合R3[0]=0
R1[1]>R2[1]の場合R3[1]=1、その他の場合R3[1]=0
R1[2]>R2[2]の場合R3[2]=1、その他の場合R3[2]=0
R1[3]>R2[3]の場合R3[3]=1、その他の場合R3[3]=0
という作用を持つ。
【００３１】
eql_4及びgtr_4等の比較演算の数は、ソースフィールド各々の間の指定された関係の真及び偽を表わす２つのとり得る値のうち１つを生成する。本発明によると、比較演算の幾つかは、より多くのとり得る比較の値（数は当該演算に対して固定される）のうち１つを生成し得る。例えば、“小なり／同一／大なり”比較の比較演算は、比較ユニット４４ａ乃至４４ｄにより受取られる第１入力が第２入力より小さいか、等しいか、又は大きいかどうかに依存して選択される３つの結果のうち１つを生成し得る。
【００３２】
cmp_4は斯様な命令の例である。この命令cmp_4 R1, R2, R3は、
R1[0]>R2[0]の場合R3[0]=2、R1[0]=R2[0]の場合R3[0]=1、その他の場合R3[0]=0R1[1]>R2[1]の場合R3[1]=2、R1[1]=R2[1]の場合R3[1]=1、その他の場合R3[1]=0R1[2]>R2[2]の場合R3[2]=2、R1[2]=R2[2]の場合R3[2]=1、その他の場合R3[2]=0R1[3]>R2[3]の場合R3[3]=2、R1[3]=R2[3]の場合R3[3]=1、その他の場合R3[3]=0という作用を持つ。
【００３３】
図４は、レジスタの内容を４つの独立した数（例えば、６４ビットレジスタのうちの４つの１６ビットの数）を含む４つのフィールドとして処理する機能ユニットを示しているが、レジスタのフィールドへの他の細分も用いられても良い。例えば、その１つは、
R1[0]=R2[0]の場合R3[0]=1、その他の場合R3[0]=0
R1[1]=R2[1]の場合R3[1]=1、その他の場合R3[1]=0
の作用を備えるeq_2 R1, R2, R3のようなeq_２命令が用いられても良い（この場合、64ビットレジスタの場合にはR1[0]は0乃至31ビットを示し、R1[1]は32乃至64ビットを示す）。
【００３４】
好ましくは、前記機能ユニットは、命令デコーダ４７により受取られた演算コードに依存してフィールドへの細分を適合させる。これを実現するため、例えば、命令デコーダ４７が演算コードにより指定された細分を表わす制御信号を導き出す。この制御信号は、中間レジスタ４０及び４２の出力セクション４１ａ乃至４１ｄ及び４３ａ乃至４３ｄに供給される。応答において、例えば、出力セクション４１ａ乃至４１ｄ及び４３ａ乃至４３ｄは、必要な場合に適当なビット数を比較ユニット４４ａ乃至４４ｄに提供するように付加的なビットで拡張される、各々8ビット、16ビット、32ビット又は64ビットのフィールドのいずれかを比較ユニット４４ａ乃至４４ｄに供給する。
【００３５】
同様に、出力ポート４６の入力セクション４５ａ乃至４５ｄは入力デコーダ４７から制御信号を受取り、応答において例えば比較ユニット４４ａ乃至４４ｄの１つ、２つ、４つ又は８つ（４つは図示せず）からの比較結果を取得し、結果レジスタへの結果出力における各々６４、３２、１６又は８ビットの１、２、４又は８フィールド中にこれらの結果を置く。
【００３６】
異なる大きさのフィールドを処理するために、比較ユニット４４ａ乃至４４ｄのうちの少なくとも幾つかは、該比較ユニットが中間レジスタ４０及び４２から受取るフィールドにおいてとり得る最大ビット数を処理することが出来るような大きさにされるべきである。より多くのフィールドのためにより多くの比較ユニット４４ａ乃至４４ｄが必要とされる場合にフィールドはより小さくなるであろうから、比較ユニットの全てがこのビット数を処理することが出来る必要はない。例えば、６４ビットレジスタの場合、第１比較ユニット４４ａは６４ビット幅、第２比較ユニット４４ｂは３２ビット幅、第３及び第４比較ユニット４４ｃ及び４４ｄは１６ビット幅、次の４つの比較ユニット（図示せず）は８ビット幅であっても良い。
【００３７】
図５は他のプロセッサアーキテクチャを示している。このアーキテクチャは、命令発行ユニット５０、マルチポートレジスタファイル５１並びに多数の通常の機能ユニット５２ａ乃至５２ｃ及び特別な機能ユニット５３を含む。命令発行ユニット５０は、レジスタファイル５１の読取り及び書込みポートのアドレス入力、並びに機能ユニット５２ａ乃至５２ｃ及び５３の演算コード入力に結合される出力を持つ。レジスタファイル５１は、前記機能ユニットに結合される読取りポートデータ出力及び書込みポートデータ入力を持つ。
【００３８】
特別な機能ユニット５３は、第１、第２、第３及び第４中間レジスタ５３０及び５３２ａ乃至５３２ｃ、４つのマルチプレクサ５３４ａ乃至５３４ｄ、出力ポート５３６並びに命令デコーダ５３８を含む。前記命令デコーダの入力は、通常の機能ユニット５２ａ乃至５２ｃのうちの第１機能ユニットに並列に命令発行ユニット５０の演算コード出力に結合される。中間レジスタ５３０及び５３２ａ乃至５３２ｃの入力は、通常の機能ユニットのうちの第１機能ユニット５２ａ及び第２機能ユニット５２ｂの第１及び第２入力に並列に接続される。前記特別な機能ユニットの出力は機能ユニットのうちの第１機能ユニット５２ａの出力と並列に結合される。
【００３９】
中間レジスタ５３２ａ乃至５３２ｃ及び５３０は、マルチプレクサ５３４ａ乃至５３４ｄの関連のマルチプレクサに結合され、該レジスタの内容が細分される、フィールドの関連の１つの各々に対する出力セクションを持つ。マルチプレクサ５３４ａ乃至５３４ｄは、出力ポート５３６の関連の入力セクションに結合される出力を持つ。
【００４０】
演算中、前記命令発行ユニットにより発行される命令のソースレジスタのフィールドは、レジスタファイル５１の読取りポートに供給される。これら命令の演算コードのフィールドは機能ユニット５２ａ乃至５２ｃ及び５３に発行される。演算コードのフィールドの内容に依存して、通常の機能ユニット５２ａ、通常の機能ユニット５２ｂ又は特別な機能ユニット５３のいずれかが、前記レジスタのソースオペランドフィールドからアドレスを受取っている読取りポートからのオペランドデータを用いて命令の実行を開始する。斯くして、（読取りポートを介して読取られる）ソースレジスタの内容が、２つの異なる命令を実行する２つの通常の機能ユニット５２ａ及び５２ｂ、又は１つの命令のための１つの特別な機能ユニット５３のいずれかにより並列に用いられ得る。一方の通常の機能ユニット５２ａ及び５２ｂと特別な機能ユニット５３とは同時に命令の実行を開始することが出来ないが、他方の機能ユニット５２ｃと特別な機能ユニット５３とは同時に命令の実行を開始することが出来る。
【００４１】
命令発行ユニット５０により発行される命令語は通常多くの命令から成り、各命令は関連の所謂“発行スロット（issue slot）”により発行される。発行スロットは２つのソースレジスタアドレス、１つの結果レジスタアドレス及び演算コードを提供する。各発行スロットは、ソースレジスタアドレス及び結果レジスタアドレスを各々に供給するために、２つの読取りポート及び１つの書込みポートのアドレス入力に接続される。発行スロットは、演算コードを供給するために機能ユニットのグループにも接続される。
【００４２】
各通常の機能ユニット５２ａ乃至５２ｃは、１つの発行スロットの演算コードのための出力、並びにこの発行スロットのデータ入力及びデータ出力に接続される。従って、通常の機能ユニット５２ａ乃至５２ｃは最大で２つのオペランドを持つことが出来る。特別な機能ユニット５３は、２つの斯様な発行スロットの読取りポート及びこれら発行スロットのうち１つの演算コード出力に接続される。命令発行ユニット５０により発行される演算コードに依存して、特別な機能ユニット５３、同一発行スロットに接続される２つの通常の機能ユニット５２ａ及び５２ｂ、若しくはこれら通常の機能ユニット５２ａ及び５２ｂのうち１つが起動されても良く、又はそれらのどれもが起動されなくても良い。
【００４３】
命令が特別な機能ユニット５３により実行されるべきであるということを演算コードが指示する場合、特別な機能ユニット５３はマルチプレクサ５３４ａ乃至５３４ｄの関連の１つを制御するために第１中間レジスタ５３０の関連のフィールドからの情報を用いる。応答において、各マルチプレクサは、第２、第３及び第４中間レジスタ５３２ａ乃至５３２ｃのうち選択された１つからのデータの所定のポジションにおけるフィールドの内容を渡す。出力ポート５３６は、レジスタファイルに書き戻される結果の関連のフィールドにおいてマルチプレクサにより渡されるフィールドを、命令において行先アドレスによりアドレス指定されたレジスタに置く。
【００４４】
特別な機能ユニットのための命令は、例えば、
R1[0]=0の場合R5[0]=R2[0]、R1[0]=1の場合R5[0]=R3[0] 、その他の場合R5[0]=R4[0]
R1[1]=0の場合R5[1]=R2[1]、R1[1]=1の場合R5[1]=R3[1] 、その他の場合R5[1]=R4[1]
R1[2]=0の場合R5[2]=R2[2]、R1[2]=1の場合R5[2]=R3[2] 、その他の場合R5[2]=R4[2]
R1[3]=0の場合R5[3]=R2[3]、R1[3]=1の場合R5[3]=R3[3] 、その他の場合R5[3]=R4[3]
という作用を備える
MUX R1, R2, R3, R4, R5
により示され得る。
【００４５】
レジスタファイル５１から第１中間レジスタ５３０がロードされるような該レジスタファイル５１からのレジスタR1の内容は、好ましくは、図４のコンテキストにおいて記載されたタイプの比較命令（eq_2、eq_4、cmp_4等）により書込まれている。
【００４６】
故に、例えば命令シーケンス
cmp_4 R1, R2, R3
mux_4 R3, R2, R2, R1, R4
が、R1及びR2の対応するフィールドの内容のうち最大のものをR4のフィールドの各々においてロードする。即ち、
R4[0]=max(R1[0],R2[0])
R4[1]=max(R1[1],R2[1])
R4[2]=max(R1[2],R2[2])
R4[3]=max(R1[3],R2[3])
【００４７】
これらの命令を他の用途に用いることが出来る。例えば、
cmp_4 R1, R2, R3
mux_4 R3, R5, R6, R7, R8
が、R1及びR2のフィールドの相対値に依存してR5、R6又はR7いずれかのフィールドからの値をR8にロードするために用いられても良い。
【００４８】
特別な機能ユニット５３は、レジスタが４つのフィールドに細分される例について示されているが、本発明から逸脱することなしに、２つ又は８つのフィールドへの細分等の他の細分が用いられても良い。別個の特別な機能ユニットが、例えば特別な機能ユニット５３に並列に、各タイプの細分に対して用いられても良く、又は前記特別な機能ユニットが、命令の演算コードにより指定される細分のタイプに応じて該細分に適合するように設計されても良い。
【００４９】
特別な機能ユニット５３は、マルチプレクサにより多重化されるフィールドを備える３つの中間レジスタ５３２ａ乃至５３２ｃを持つように示されているが、特別な機能ユニット５３は、とりわけ、２つの値のうち１つの値しか生成しない比較命令との組み合わせにおいては、２つ以下の斯様な中間レジスタを、入力の多重化及びこれら２つのレジスタの内容の間での多重化のために用いても良い。
【００５０】
更に、特別な機能ユニット５３は１つの出力ポート５３６を持つように示されているが、特別な機能ユニット５３は、例えば、異なるフィールドの内容を一方の出力ポートにおいて対応するフィールド又は他方の出力ポートにおいて対応するフィールドのいずれかに切り換えるために２つの出力ポートを用いても良い。このタイプの命令の例は、
R1[0]=1の場合R4[0]=R2[0]、その他の場合R4[0]=R3[0]
R1[1]=1の場合R4[1]=R2[1]、その他の場合R4[1]=R3[1]
R1[2]=1の場合R4[2]=R2[2]、その他の場合R4[2]=R3[2]
R1[3]=1の場合R4[3]=R2[3]、その他の場合R4[3]=R3[3]
R1[0]=1の場合R5[0]=R3[0]、その他の場合R5[0]=R2[0]
R1[1]=1の場合R5[1]=R3[1]、その他の場合R5[1]=R2[1]
R1[2]=1の場合R5[2]=R3[2]、その他の場合R5[2]=R2[2]
R1[3]=1の場合R5[3]=R3[3]、その他の場合R5[3]=R2[3]
という作用を備える
switch R1, R2, R3, R4, R5
である。これは、例えば、図５に示されている１セットのマルチプレクサ５３４ａ乃至５３４ｄ及び出力ポート５３６の代わりに、並列に２セットのマルチプレクサ及び（２つの）出力ポートを用いることにより実現されても良い。
【００５１】
更に、オペランドにおいて対応するフィールドからの値に対する多重化の間異なるフィールドに割り当てられ得る値を限定することは必要とされない。その代わりに、マルチプレクサの制御信号がある値を持つ場合に所定の一定値を割り当てても良い。例えば、MUX0命令、
MUX0 R1, R2, R3, R4, R5
は、
R1[0]=0の場合R5[0]=R2[0]、R1[0]=1の場合R5[0]=R3[0]、R1[0]=2の場合R5[0]=R4[0]、その他の場合R5[0]=0
R1[1]=0の場合R5[1]=R2[1]、R1[1]=1の場合R5[1]=R3[1]、R1[1]=2の場合R5[1]=R4[1]、その他の場合R5[1]=0
R1[2]=0の場合R5[2]=R2[2]、R1[2]=1の場合R5[2]=R3[2]、R1[2]=2の場合R5[2]=R4[2]、その他の場合R5[2]=0
R1[3]=0の場合R5[3]=R2[3]、R1[3]=1の場合R5[3]=R3[3]、R1[3]=2の場合R5[3]=R4[3]、その他の場合R5[3]=0
というように実施されても良い。これは、より多くの入力を備えるマルチプレクサを装備し、１つの入力を０データ設定に結合することにより実現されても良い。勿論、より少ない又はより多くのソースレジスタR2、R3及びR4の間で多重化する同様の割り当てを適用する命令も、マルチプレクサに対する入力の数を変更することにより実現されても良い。また、レジスタR1における条件値に応じてより多くの所定の選択可能な値（例えば、0、1、-1等）を割り当てることが出来る命令が設けられても良い。
【００５２】
マルチプレクサが異なる処理を受けているデータの間で選択することが出来るように、中間レジスタとマルチプレクサの入力との間に付加的な処理回路を挿入されても良い。例えば、中間レジスタの各出力セクションを異なるマルチプレクサの入力に一度直接的に及び一度算術インバータ回路を介して接続することにより、
R1[0]=1の場合R3[0]=R2[0]、その他の場合R3[0]=-R2[0]
R1[1]=1の場合R3[1]=R2[1]、その他の場合R3[1]=-R2[1]
R1[2]=1の場合R3[2]=R2[2]、その他の場合R3[2]=-R2[2]
R1[3]=1の場合R3[3]=R2[3]、その他の場合R3[3]=-R2[3]
の作用を備えるMUX_PLUS_MINUS命令、
MUX_PLUS_MINUS R1, R2, R3
を実現されても良い。この場合には、レジスタファイルに接続される２つの入力及びレジスタファイルに結合される１つの結果出力を備える通常の機能ユニットが用いられても良い。他の演算も挿入されても良い。Eg加算器及び減算器は、
R1[0]=1の場合R4[0]=R2[0]+R3[0] 、その他の場合R4[0]=R2[0]-R3[0]
R1[1]=1の場合R4[1]=R2[1]+R3[1] 、その他の場合R4[1]=R2[1]-R3[1]
R1[2]=1の場合R4[2]=R2[2]+R3[2] 、その他の場合R4[2]=R2[2]-R3[2]
R1[3]=1の場合R4[3]=R2[3]+R3[3] 、その他の場合R4[3]=R2[3]-R3[3]
の作用を備えるMUXAB_PLUS_MINUS命令、
MUXAB_PLUS_MINUS R1, R2, R3, R4
を実現するために挿入されても良い。これらの対策のいずれも、例えば選択可能な定数をレジスタの関連のフィールドに加算するために、組合わせて用いられても良い。
【図面の簡単な説明】
【図１】  データプロセッサのアーキテクチャを示す。
【図２】  命令フォーマットを示す。
【図３】  パックデータフォーマットを示す。
【図４】  データプロセッサにおいて用いる機能ユニットを示す。
【図５】  データプロセッサの別のアーキテクチャを示す
【符号の説明】
５０      命令発行ユニット
５１      レジスタファイル
５２ａ    通常の機能ユニット
５２ｂ    通常の機能ユニット
５２ｃ    通常の機能ユニット
５３      特別な機能ユニット
５３０    中間レジスタ
５３２ａ  中間レジスタ
５３２ｂ  中間レジスタ
５３２ｃ  中間レジスタ
５３４ａ  マルチプレクサ
５３４ｂ  マルチプレクサ
５３４ｃ  マルチプレクサ
５３４ｄ  マルチプレクサ
５３６    出力ポート
５３８    命令デコーダ
【図１】
0005052713.tif 000002
【図２】
0005052713.tif 000003
【図３】
0005052713.tif 000004
【図４】
0005052713.tif 000005
【図５】
0005052713.tif 000006