(57)【要約】  データ処理回路は、読み出しポート及び書き込みポートを有するレジスタ・ファイル(14)を備えている。複数の機能単位（21a乃至21c）が、読み出しポートの同じ組合せからオペランド・データを受け取るよう結合される。各機能単位は、それぞれの結果を書くために書き込みポートのうちのそれぞれの書き込みポートに結合される。命令発行スロットは、レジスタ選択情報を組み合わせ読み取りポートに供給し、書き込みポートのうちのそれぞれの書き込みポートに供給するための出力を有する。発行スロットの出力は、動作コードも供給する。上記複数内の機能単位（21a乃至21c）は、同じ組み合わせからの同じオペランドを用いて個別の動作をそれぞれが実行することによって動作コードの少なくとも１つの値に応答するよう構成されており、各機能単位は、書き込みポートのうちのそれぞれの書き込みポートにおいて個別の結果をもたらす。
2008513878.tif 000002
【特許請求の範囲】
【請求項１】
データ処理回路であって、
読み出しポート及び書き込みポートを有するレジスタ・ファイルと、
複数の機能単位であって、少なくとも、前記読み出しポートの少なくとも１つを有する同じ組み合わせからオペランド・データを受け取るようそれぞれが結合されており、各機能単位が、個別の結果を書き込むために前記書き込みポートのうちの個別の書き込みポートに結合されている複数の機能単位と、
レジスタ選択情報を前記組み合わせに供給し、前記書き込みポートのうちのそれぞれの書き込みポートに供給する出力、及び、動作コードの出力を有する少なくとも１つの命令発行スロットとを備えており、前記複数の機能単位は、前記動作コードの前記出力に結合されており、前記組み合わせからの同じオペランドを用いて個別の動作をそれぞれが実行することによって前記動作コードの少なくとも１つの値に応答するよう構成されており、前記複数の機能単位のうちの各機能単位は、前記同じオペランドを処理することによって得られる個別の結果を前記書き込みポートのうちの個別の書き込みポートにおいてもたらすデータ処理回路。
【請求項２】
請求項１記載のデータ処理回路であって、前記複数の機能単位及び少なくとも１つの更なる機能単位を備える機能単位群を備えており、前記機能単位群それぞれは、少なくとも、前記読み出しポートの少なくとも１つの前記同じ組み合わせからオペランド・データを受け取るよう結合されており、前記機能単位群それぞれは、個別の結果を書き込むために、前記書き込みポートのうちの少なくとも１つに結合されており、前記群それぞれは、前記動作コードを供給するための前記出力に供給されており、前記動作コードによって選択された動作をそれぞれが実行することによって前記動作コードに応答するよう構成されるデータ処理回路。
【請求項３】
請求項２記載のデータ処理回路であって、N個の機能単位を有している前記機能単位群間に結合された多重化回路であって、Nが3以上の整数である多重化回路と、M個の書き込みポートであって、Mが、2以上であり、Nよりも小さな整数である書き込みポートとを備えており、前記群からの、前記動作コードによって選択されたそれぞれの別々の、必ずしも重なっていない訳でない複数のM個の機能単位の別々の値は、前記複数のうちの個別の機能単位からの前記M個の機能単位が、読み出しポートの前記同じ組み合わせ、及び前記機能単位からのオペランドを用いて動作を実行するように、前記動作コードのそれぞれの値に応答し、個別の値それぞれに応答するよう構成されており、前記多重化回路は、前記動作コードの前記それぞれの値によって選択された機能単位から、前記書き込みポートのうちの前記それぞれの書き込みポートにM個の結果を供給するよう構成されるデータ処理回路。
【請求項４】
請求項１記載のデータ処理回路であって、前記複数からの前記機能単位は、少なくとも１つの読み出しポートの前記同じ組み合わせからのオペランドを用いて前記機能単位のうちの個別の機能単位が個別の動作を個別の更なる値それぞれに応じて実行するように前記動作コードのそれぞれの更なる値に応答するよう構成されており、前記機能単位のうちの前記個別の機能単位以外の、前記複数における前記機能単位は、前記読み出しポートの少なくとも１つの前記同じ組み合わせからの前記オペランドを用いないで、前記個別の更なる値に応じて前記書き込みポートにおいて結果をもたらすデータ処理回路。
【請求項５】
請求項１記載のデータ処理回路であって、前記読み出しポートの少なくとも１つの前記組み合わせは、２つの読み取りポートであって、前記動作コードの前記少なくとも１つの値に応じて前記複数の機能単位それぞれによって少なくとも２つのオペランドが前記２つの読み取りポートから用いられる２つの読み取りポートを有しているデータ処理回路。
【請求項６】
請求項１記載のデータ処理回路であって、前記書き込みポートはそれぞれの結果語長を有しており、前記書き込みポートの少なくとも１つは、少なくとも更なる１つの書き込みポートの結果語長とは異なる結果語長を有しているデータ処理回路。
【請求項７】
請求項６記載のデータ処理回路であって、前記レジスタ・ファイルは、前記書き込みポートのうちのそれぞれの書き込みポートに結合された複数の部分を備えており、各部分は、前記部分が結合されている前記書き込みポートの語長に対応する個別の語長のレジスタを有しているデータ処理回路。
【請求項８】
請求項１記載のデータ処理回路であって、前記レジスタ・ファイルは、互いに異なる第１のビット・サイズ及び第２のビット・サイズをそれぞれ有する第１のレジスタ・ファイル部分及び第２のレジスタ・ファイル部分を備えており、前記書き込みポートは、第１のレジスタ・ファイル及び第２のレジスタ・ファイルそれぞれに結果を書き込むために第１の書き込みポート及び第２の書き込みポートを備えており、前記データ処理回路は、前記第１の書き込みポート及び前記第２の書き込みポートに結合されており、前記命令発行スロットに結合されており、更なる機能単位は、特定の動作に応じて結果をもたらし、前記第１のビット・サイズ及び前記第２のビット・サイズを備えた結果を表すバージョンを前記第１の書き込みポート及び前記第２の書き込みポートそれぞれに書き込むデータ処理回路。
【請求項９】
請求項８記載のデータ処理回路であって、第１の複数のビットは、第２の複数のビットよりも少ないビットを有しており、前記第１のレジスタ・ファイル部分は更なる書き込みポートを有しており、前記第１の書き込みポート及び更なる書き込みポートは、前記発行スロットからのそれぞれのレジスタ選択コードを並列に受け取り、前記機能単位は、前記第１の書き込みポート及び前記更なる書き込みポートに結合された出力を有しており、前記更なる機能単位は、前記結果の最上位部分及び最下位部分を前記第１の書き込みポート及び前記更なる書き込みポートそれぞれに書き込むよう構成されたデータ処理回路。
【請求項１０】
請求項８記載のデータ処理回路であって、前記第２のレジスタ・ファイルのレジスタは、前記第１のレジスタ・ファイルのレジスタのビット・サイズの2倍のビット・サイズを有しているデータ処理回路。
【請求項１１】
複数の機能単位を有している処理回路を用いてコンピュータ・プログラムを実行する方法であって、
動作コード、オペランド・レジスタのアドレス、及び結果レジスタのアドレスを示す命令を発行する工程と、
前記オペランド・レジスタのアドレスを用いてレジスタを選択し、前記選択されたレジスタからのオペランドを供給する工程と、
それぞれの機能単位において複数の動作を同時に行うことによって前記動作コードに応答する工程であって、各動作は、前記選択されたレジスタからの少なくとも１つのオペランドの少なくとも同じ組み合わせを用いる工程と、
前記それぞれの機能単位からのそれぞれの結果を、前記結果レジスタの前記アドレスによって選択されるそれぞれのレジスタに書き込む工程とを備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理回路に関し、前述のデータ処理回路を用いてプログラムを実行する方法に関する。
【背景技術】
【０００２】
米国特許第6076154号明細書から、複数の発行スロットを有するVLIWデータ処理回路を提供することが知られている。VLIW（長大命令語）プロセッサは、複数の動作を備える命令を複数の機能単位に向けて並列に発行する命令発行回路を用いる。それぞれの動作を規定する情報は、命令発行装置のそれぞれの発行スロットにおいて発行される。各発行スロットは、動作コード（動作を識別する）、及び複数のレジスタ選択コード（そこから、規定された動作のオペランドをロードしなければならない、かつ／又は、規定された動作の結果を書き込まなければならない、レジスタ・ファイル内のレジスタの場所を規定する）を供給する。レジスタ・ファイルは、独立した１つ又は複数のレジスタ・ファイル部分（それぞれ自体がレジスタ・ファイルである）を備え得る。オペランドのレジスタ選択コードは、レジスタ・ファイルの読み出しポートに供給される。お返しに、読み出しポートはオペランドを供給する。動作コードは機能単位に供給される。機能単位は、指定された動作をオペランドに施し、動作の結果をレジスタ・ファイルの書き込みポートに供給する。発行スロットからのレジスタ選択コードを書き込みポートに供給して、結果が書き込まれるレジスタを制御する。
【０００３】
多くの実用的なVLIWプロセッサでは、それぞれの機能単位群は、それぞれの発行スロットに結合される。群内の機能単位は、レジスタ・ファイルの同じ読み出しポートをオペランド入力に結合させており、レジスタ・ファイルの同じ書き込みポートに結果出力を結合させている。機能単位群が発行スロットに取り付けられている場合、動作コードは、上記群からの機能単位のどれが、動作を行い、その動作の結果を動作コ―ドに応じて書き込むかを定める。適切な機能単位が、別々の動作を実行することができる場合、動作コードは、機能単位内の動作も選択する。
【０００４】
VLIWプロセッサを用いることは、命令を並列に実行することが可能である（それによって、プログラムを実行するのに必要な時間が削減される）という利点を有する。しかし、このことは、例えば、複数の発行スロットを実現するために、単一の命令発行プロセッサにおいてハードウェアがより多く必要になることを犠牲とする。特定のタスクを行うプログラムの実行にVLIWプロセッサが消費する合計電力量は一般に、単一命令発行プロセッサによって同じタスクを実行するために消費される電力と少なくとも同じである。一般にプログラム毎電力は高くなる。多くの命令の場合、発行スロットの一部は、未使用状態に留まるからである。更に、特定のタスクを行う、VLIWプログラムによって占有されるメモリ空間は一般に、単一命令発行プロセッサの場合の同じタスクのためのプログラムのメモリ空間と少なくとも同じである。一般に、所要メモリ空間は、未使用コード空間によって、より大きくなる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的はとりわけ、プログラム可能なプロセッサ回路に特定タスクを行わせるプログラムを記憶するのに必要なメモリ空間量を削減することである。
【０００６】
本発明の目的はとりわけ、プログラム可能なプロセッサ回路に特定タスクを行わせるのに必要な合計電力量を削減することである。
【課題を解決するための手段】
【０００７】
本発明のデータ処理回路は、請求項１に記載している。本発明によれば、１つの発行スロットに対応する複数の機能単位は、レジスタ・ファイルの１つ又は複数の共有読み出しポートから少なくとも１つの、好ましくは2つ以上のオペランドを受け取る。複数の機能単位は、別々の書き込みポートにおけるそれぞれの結果をレジスタ・ファイルに向けて生成する。複数の機能単位に向けて発行される動作コードは、１つ又は複数の共有読み出しポートからの1つ又は複数のオペランドを用いた、複数の機能単位による動作が同時に行われるか否か、及び／又は、その動作の組み合わせを制御する。よって、単一に発行されるコマンドが、別々の機能単位の少なくとも１つの、好ましくは２つ以上の共有オペランドの共有レジスタ・アドレスを用いて複数の機能単位を同時に制御する。このようにして、データ処理回路のプログラムにおいて必要なコマンドは少なくなる。それによって、プログラムを記憶するのに必要なメモリ量、及び命令の組み合わせを実行するのに必要な電力消費が共に削減される。コマンドは、動作コード及びその対応するレジスタ・アドレス（1つ又は複数のオペランド及び1つ又は複数の結果に対して）を備える。
【０００８】
好ましくは、更なる機能単位が、発行スロットに、複数の機能単位と並列に結合される。よって、同じオペランドを用いた別々の動作の同時実行を伴う動作に加えて、他の動作も選択することが可能である。好ましくは、動作コードの別々の値は、機能単位群からの、それぞれの別々の、必ずしも重なっていない複数を選択する（同じオペランドを用いた別々の動作の同時実行を伴う）。これによって、別々の機能単位のオペランドの共有レジスタ・アドレスを用いてプログラム内の複数の機能単位を制御するコマンドを用いる機会が増える。これによって、プログラム内のコマンドが少なくなる。
【０００９】
好ましくは、1つ又は複数の読み出しポートからのオペランドを用いて一度に一動作を機能単位のうちの１つのみに行わせる一次動作コード、及び、1つ又は複数の読み出しポートからの共有オペランドを用いて動作を同時に複数の機能単位に行わせる二次動作コードがサポートされる。このことによって、機能単位の１つのみからの結果がプログラム内で必要な場合に複数の機能単位を伴う動作を用いることを回避することが可能になる。このことによって、必要に応じて単独で何れかの動作を実行する可能性を犠牲にすることなく、共有オペランドを用いた複数の機能単位による同時実行をもたらす動作コードの数を制限することも可能になる。このようにして、最も頻繁に生起する組み合わせについてのみ同時実行をもたらす動作コードを導入することによって合計命令数が少ない状態に維持することが可能である。
【００１０】
一実施例では、書き込みポートは、それぞれ別々の結果語長を有する。よって、同じオペランドから別々の語長をもたらす別々の動作（乗算や加算など）を、同じオペランドを用いて同時に実行することが可能である。好ましくは、レジスタ・ファイルは、書き込みポートのそれぞれに結合された複数の部分を備えており、各部分は、別々の結果を受け取るための、個別の語長のレジスタを有している。
【００１１】
別の実施例では、更なる機能単位が、第１のビット・サイズ及び第２のビット・サイズを有する同じ結果を表すバージョンを第１の書き込みポート及び第２の書き込みポートそれぞれに書き込むために、互いに異なる語長を有するレジスタ・ファイル部分の書き込みポートに結合される。これによって、変換のための更なる命令を必要とすることなく動作の結果を用いることが可能になる。これによって、プログラム内の命令の数が削減される。更なる実施例では、結果の最上位部分及び最下位部分が別々の書き込みポートに書き込まれ、より大きな語長を有するレジスタ・ファイル部分の第３の書き込みポートに、完全な結果が書き込まれる。これによって、変換のための更なる命令を必要とすることなく動作の結果を用いることが可能になる。
【発明を実施するための最良の形態】
【００１２】
前述並びにその他の本発明の目的及び利点は、非限定的な例によって図を用いて説明する。
【実施例】
【００１３】
図１は、命令発行回路１０、機能単位群１２及びレジスタ・ファイル１４を備えるデータ処理回路を示す。命令発行回路１０は、複数の発行スロットを有する。各発行スロットは機能単位群１２の個別のものに結合され、レジスタ・ファイル１４に結合されるコマンド・ライン群１１を有している。
【００１４】
レジスタ・ファイル１４は、複数のレジスタ（別個に図示せず）を有している。レジスタ・ファイル１４は、複数の読み出しポート及び複数の書き込みポート（詳細に図示せず）を有している。各読み出しポートは、レジスタ・アドレスを受け取るための接続、及び、アドレス指定されたレジスタに記憶されたデータのビットを返すための接続を有している。各書き込みポートは、レジスタ・アドレスを受け取るための接続、及び、アドレス指定されたレジスタに記憶しなければならないデータのビットを受け取るための接続を有している。明確にするために、単一のラインを発行スロット１１において個別のレジスタ・ファイル１４に向けて示しているが、単一のラインそれぞれは、複数のレジスタをアドレス指定するための、それぞれの読み出しポート及び／又は書き込みポートへの複数の接続を表す。
【００１５】
機能単位群12それぞれは、発行スロット及びオペランド入力の個別のものに結合されたコマンド入力、及びレジスタ・ファイル14に結合された結果出力を有する。２つの機能単位群12（個別の発行スロットにそれぞれが結合される）を明示的に示しているが、更に多くの機能単位群が存在し得る。明確にするために、単一のラインを、個別のレジスタ・ファイル１４と機能単位１２との間のポート毎に示しているが、単一のラインそれぞれは、アドレス指定されたレジスタにビットを供給し、かつ／又は、前述のレジスタからビットを受け取るための、個別の読み出しポート及び書き込みポートとの間の複数の接続を表す。
【００１６】
命令発行回路は、本質的に知られている。命令発行回路１０は、通常、命令メモリ（図示せず）に結合され、通常、命令メモリ内に命令アドレスを生成するプログラム・カウンタ（図示せず）を有する。命令発行回路１０は、前述の命令を受け取り、複数のコマンドを命令から得る。命令発行回路１０はコマンドを並列に、それぞれの発行スロット１１において発行する。各コマンドは、動作コード（機能単位群１２に供給される）、及びいくつかのレジスタ選択コード（レジスタ・ファイル１４に供給される）を有している。各レジスタ選択コードは、レジスタ選択コードが供給されるレジスタ・ファイル内の、選択されたレジスタを示す。発行スロットからのレジスタ選択コードは、動作のための入力として必要なオペランドのレジスタ場所、及び動作の結果が記憶されるレジスタのレジスタ場所を選択するのに役立つ。前述のレジスタ選択コードは概念的には単一のコマンドに属するが、実際には、コマンドの別々のレジスタ選択コードは、コマンドの実行中の別々の段階で必要であり得るので、時間上互いにオフセットして発行することができる。このことは、パイプライン処理中（例えば、同じコマンドの別々の部分を別々の命令サイクル内に発行され得る時点）に行われる。
【００１７】
図2aは機能単位群１２の例を示す。群１２は２つの機能単位２１a、２１bを有している。レジスタ・ファイル（図示せず）からのそれぞれのオペランドを受け取るための２つの入力接続２０を示す。入力接続２０は、機能単位21a及び機能単位21b共に結合される。第１のレジスタ・ファイル（図示せず）に結果を供給するための２つの出力接続２６を示す。各出力接続は、機能単位21a及び機能単位21bのそれぞれの機能単位の出力から結合される。単一のラインを用いて接続を表しているが、各接続は通常、個別の複数の導体（個別ビットに対するそれぞれの導体）を有している。よって、レジスタ・ファイルへの各接続は、例えば３２個の導体を有している。
【００１８】
動作中、図２の群に対する各コマンドは、２つのオペランドのレジスタ・アドレス及び２つの結果のレジスタ・アドレスを有している。命令発行回路１０は、コマンドを有する命令を受けると、このコマンドの動作コードを機能単位群１２に向けて発行し、２つのオペランド・レジスタ・アドレスをレジスタ・ファイル14の読み出しポートに向けて発行し、２つの結果レジスタ・アドレスをレジスタ・ファイル14の書き込みポートに向けて発行する。これに応じて、レジスタ・ファイル１４は２つのオペランドを取り出す。レジスタ・ファイル１４はその読み出しポートからの前述のオペランドを機能単位21a、21b何れにも供給する。
【００１９】
コマンドの動作コードは、別々の動作を選択する別々の値を呈し得る。少なくとも１つの値によって、レジスタ・ファイル14から受け取られた同じオペランドに対して機能単位21a、21b両方によって個別の動作が実行される。動作コードのこの値に応じて、機能単位21a、21bは、それぞれの書き込みポートへの接続26に結果を書き込む。
【００２０】
一実施例では、第１の機能単位21aは加算器回路を有しており、第２の機能単位21bは減算器回路を有している。よって、オペランドの和及び差が、それぞれの結果として出力される。加算器回路及び減算器回路は、それぞれの機能単位内のそれぞれのプログラム可能な算術演算装置（又は算術論理演算装置）の一部であり得る。この場合、機能単位21a、21bは、同じオペランド上の動作コードに応じて行われるそれぞれの算術演算を選択するよう構成することができる。
【００２１】
別の実施例では、第1の機能単位21aは両方のオペランドで最も小さい数を表すオペランドのうちの１つを選択し、出力する回路を有しており、第2の機能単位21bは両方のオペランドで最も大きな数を表すオペランドを選択し、出力する回路を有している。よって、オペランドの最小値及び最大値が、それぞれの結果として出力される。更に別の実施例では、第１の機能単位21aは加算器回路を有しており、第２の機能単位21bはシフト回路を有している。よって、オペランドの和、及びオペランドの１つのシフトされたバージョンが、それぞれの結果として出力される。
【００２２】
当然、本発明は、図に示される特定タイプの機能単位群に限定されるものでない。例えば、3つ以上の読み出しポートは、機能単位群12に結合し、その群内の機能単位21a、21bそれぞれに結合することができる。このようにして、機能単位は、動作コードの特定値に応じて、より複雑な動作を実行するよう構成することが可能である。
【００２３】
図2bは、3つのそれぞれの機能単位21a乃至21cが結合される（レジスタ・ファイル（図示せず）の読み出しポートへの同じ接続20にそれぞれが結合される）別の実施例を示す。この群は、レジスタ・ファイル（図示せず）のそれぞれの書き込みポートへの3つの接続26を有する。3つの機能単位21a乃至21cは全て、動作コードを受け取るために、発行スロットに結合される。この実施例では、機能単位に対するコマンドそれぞれは、3つの結果レジスタ・アドレスを有している。結果レジスタ・アドレスは、発行スロット11を介して、レジスタ・ファイルの３つのそれぞれの書き込みポートに向けて発行される。機能単位21a乃至21cは、接続20からの同じオペランドを用いてそれぞれの動作を実行することによって動作コードの少なくとも１つの値に応答する。如何に多い数の機能単位も、同じ読み出しポート、及び個別の書き込みポートに結合させて、動作コードに応じてそれぞれの動作を実行することが可能である。
【００２４】
図2cは、機能単位21a乃至21cの結果出力間に3対2多重化回路27が加えられた実施例を示す。この実施例では、群12は、レジスタ・ファイル（図示せず）のそれぞれの書き込みポートに結合された２つの出力26を有する。この実施例では、機能単位に対する各コマンドは、2つの結果レジスタ・アドレスを有する。動作コードは、機能単位21a乃至21cのどれから結果がレジスタ・ファイルに書き込まれるかについて制御する。動作コードは、選択された機能単位21a乃至cからの結果を、書き込みポートへの接続26に供給するよう多重化回路27を制御する。機能単位21a乃至21cそれぞれは、その機能単位21a乃至21cの結果が書き込みポートに供給されない旨を動作コードが示す場合、動作コードに応じてそれ自体をディセーブルするよう構成することができる。このようにして、N（3より大きな数）個の機能単位21a乃至21cを組み合わせることができる。それぞれの書き込みポートへのM（１よりも大きく、Nよりも小さな何れかの数）個の接続を用いることができる。多重化回路は、その入力及び出力間の任意の接続を実現するよう構成することができる。しかし、実施例では、多重化回路は、（例えば、1つの機能単位21aを一方の出力26に常に接続することによって、かつ、動作コードによって選択された他の機能単位21b乃至21cのうちの1つを他方の出力26に接続することによって）部分的な接続のみを設けるよう構成することができる。
【００２５】
この実施例では、N個の機能単位21a乃至21c（例えば、N=3）から別々の複数のM個の機能単位（例えば、M=2）を選択して、同じ読み出しポートからのオペランドを少なくとも部分的に用いてM個の結果をもたらすよう、別々の動作コードを用いることができる。
【００２６】
複数の読み出しポートに（例えば、3つ以上の読み出しポートに）群12が結合される特定の実施例では、全ての機能単位21a及び21bが、動作コードの特定値に応じて読み出しポート全てからのオペランドを用いることは必要でない。例えば、動作コードの特定値に応じて、読み出しポートからのいくつかのコア・オペランドのみを機能単位全てによって用いることができる。残りのオペランドは、選択された機能単位のみによって用いられる。
【００２７】
更に、結果をもたらすよう複数の機能単位が動作するという効果を動作コード値全てが有することは必要でない。結果をもたらすためにオペランドを用いるよう、群12の機能単位21a乃至21cのうちの１つのみ、又は、結果を並列に書き込むことができるM未満の個数の機能単位21a乃至21cを起動させるという効果を少なくとも動作コード値の一部が有し得る。この目的で、ダミー機能単位を群内に備えることができる。ダミー機能単位は、前述の動作コード値に応じて、未使用書き込みポートにおいて標準的な結果を出力するよう設計されている。
【００２８】
図は、動作コードに対する群12の入力が、別々の機能単位21a乃至21cに直接接続している実施例を示す。この実施例では、機能単位21a乃至21c（、及び、任意的には、マルチプレクサ27）それぞれは、オペランドを処理する機能単位21a乃至21cの動作回路（図示せず）に対する制御信号に動作コードを変換する復号器回路（図示せず）を有している。別の実施例では、複数の機能単位21a乃至21cの動作回路（図示せず）に対する制御信号に動作コードを変換する通常の復号器回路を提供することができる。
【００２９】
一実施例では、群の別々の機能単位21a乃至21cはそれぞれプログラム可能である（すなわち、それぞれは、選択可能な別々の動作を実行することができる）。前述の実施例では、コマンドの動作コードは別々のフィールドを備え得る。各フィールドは、群内の機能単位21a乃至21cのそれぞれの機能単位の選択可能な動作の何れか１つを選択することができる動作コードを備える。しかし、このことは、かなりのサイズの動作コードにつながり得る。したがって、好ましくは、利用可能な動作コードは、個々の機能単位21a乃至21cの選択可能な動作の考えられる組合せ全てのうちの選択されたものだけを利用可能にするよう選択される。例えば、一次動作コード値は、個々の機能単位に、その選択可能な動作の何れかを、他の機能単位21a乃至21cをパッシブ状態に留めて行わせるものに、同じオペランドを用いて別々の動作を行うよう機能単位21a乃至21cの組み合わせを各値が起動させるいくつかの二次動作コード値を加えたものであり得る。この場合、別々の二次動作コード値の数は、考えられる組み合わせの合計数よりもかなり少ないことがあり得る。動作コードは、例えば、通常のプログラムにおいて頻繁に生起する組み合わせの場合にのみ利用可能である。
【００３０】
本発明は、同じサイズの語をレジスタ全てが記憶するレジスタ・ファイルを有する実施例について説明したが、これは必要でない。別の実施形態では、レジスタ・ファイル14は、複数の部分（それぞれは、それ自体がレジスタ・ファイル（読み出しポート及び書き込みポートを有する）を構成する）を備え得る。個別の部分それぞれは、個別の語長のレジスタを有している。別々の部分のそれぞれの語長は異なり得る。
【００３１】
図3は、命令発行回路10、群機能単位12、並びに第１のレジスタ・ファイル14a及び第２のレジスタ・ファイル14bを備えるデータ処理回路を示す。レジスタ・ファイル14a及び14bそれぞれは、複数のレジスタ（別個に図示せず）を有している。第1のレジスタ・ファイル14a内の各レジスタは、第1数のビット（例えば、32ビット）を記憶する。第2のレジスタ・ファイル14b内の各レジスタは、第2数のビット（第1数よりも大きい（例えば、64ビット））を記憶する。
【００３２】
レジスタ・ファイル14a及び14bそれぞれは、複数の読み出しポート及び複数の書き込みポート（詳細に図示せず）を有する。各読み出しポートは、レジスタ・アドレスを受け取るための接続、及びアドレス指定されたレジスタに記憶されたデータのビットを返すための接続を有している。各書き込みポートは、レジスタ・アドレスを受け取るための接続、及びアドレス指定されたレジスタに記憶されなければならないデータのビットを受け取るための接続を有している。
【００３３】
単一のラインは、明確にするため、発行スロット11においてそれぞれのレジスタ・ファイル14a、14bに向けて示しているが、複数のレジスタをアドレス指定するための、それぞれの読出しポート及び／又は書込みポートとの複数の接続を表す。各機能単位群12は、発行スロット及びオペランド入力の個別の１つに結合されたコマンド入力、並びにレジスタ・ファイル14a、14bに結合された結果出力を有する。２つの機能単位群12を明示しているが、より多くの数の機能単位群（それぞれが、個別の発行スロットに結合される）が存在し得る。明確にするため、それぞれのレジスタ・ファイル14a、14b及び機能単位12の間に単一のラインを示しているが、単一のラインそれぞれは、複数のレジスタにビットを供給し、かつ／又は複数のレジスタからビットを受け取るための、それぞれの読み出しポート及び書き込みポートとの間の複数の接続を表す。
【００３４】
図2a乃至図2cのタイプの群12が図3の回路において用いられる場合、機能単位21a乃至21cの別々のものを、互いに異なる語長を有する結果をもたらすよう構成することができる。例えば、1つの機能単位は、nビットのオペランド語を有しており、nビットの結果語をもたらす算術演算装置であり得る一方、機能単位21a乃至21cの別のものは、nビットのオペランド語を有しており、2nビット（例えば、n=32）の結果語をもたらす乗算器であり得る。
【００３５】
図4は、機能単位群12の実施例を示す。レジスタ・ファイル14a、14b（図示せず）の読み出しポートからそれぞれのオペランドを供給するための接続は別に示す。オペランドを受け取るための4つの入力接続20、24を示す。3つの第1の入力接続20が、第1のレジスタ・ファイル14a（図示せず）に結合されており、１つの第２の入力接続が、第2のレジスタ・ファイル14bに結合されている。2つの第1の出力接続が、第1のレジスタ・ファイル14aに結合されており、1つの第2の出力接続が、第2のレジスタ・ファイル14bに結合されている。単一のラインを用いて接続を表しているが、各接続は通常、個別の複数の導体を有しており、各導体は、別個のビットに対するものであり、よって、第1のレジスタ・ファイル14aへの各接続は例えば、32個の導体を有しており、第2のレジスタ・ファイル14bへの各接続は例えば、64個の導体を有している。
【００３６】
通常、群12は、同じオペランド入力20に少なくとも部分的に結合されており、それぞれの結果をもたらす（図２a乃至図2cに関して説明したように）よう構成される複数の機能単位を有している。
【００３７】
図5は、群12内の機能単位のうちの少なくとも1つが機能単位のうちの別のものによってもたらされる結果を用いる実施例を示す。機能単位は、乗算器30、加算器32、及び結果分割器34を有している。第1のレジスタ・ファイル14a（図示せず）の第１の読み出しポート及び第２の読み出しポートのデータ部分20は、乗算器30のそれぞれの入力に結合される。入力それぞれは、第1の複数のN（例えば、N=32）ビットを並列に供給するための導体を有している。乗算器30の出力、及び第2のレジスタ・ファイル14b（図示せず）からの読み出しポートのデータ部分24は、加算器32の入力に結合される。加算器32の入力それぞれは、第1の複数の2*N（例えば、2*N=64）ビットを並列に供給するための導体を有している。加算器32の出力は、加算結果の2*N（例えば、2*N=32）ビットに並列に供給するための導体を有している。加算器32の出力は、第2のレジスタ・ファイル14b（図示せず）への書き込みポートのデータ部分26に結合される。結果分割器34は、乗算器30からの出力の導体の分岐を（それぞれ、N個の最上位ビット及びN個の最下位ビットの）２つの群に分割する。このMADD命令のコマンドは、
MADD  R1、R2、R3、R4、R5、R6
によって表すことができる。
【００３８】
ここで、MADDは動作コードを象徴し、R1、R2は、第1のレジスタ・ファイル14aの読み出しポートに供給されるレジスタ・アドレスを象徴し、R3は、第2のレジスタ・ファイル14bの読み出しポートに供給されるレジスタ・アドレスを象徴し、R4、R5は、第1のレジスタ・ファイル14aの書き込みポートに供給されるレジスタ・アドレスを象徴し、R6は、第2のレジスタ・ファイル14bの書き込みポートに供給されるレジスタ・アドレスを象徴する。命令発行回路10によって取り出されるコマンドは好ましくは、動作コードおよびそれぞれのレジスタ・アドレスを表すそれぞれのフィールドに分割することが可能な複数のビットを有している。
【００３９】
MADDコマンドには、発行された命令内のレジスタ・アドレスによって全て別個に選択された３つの結果レジスタが関係する。別々の結果レジスタは、結果（の一部）を用いるために後の命令によって別個にアドレス指定することが可能である。別の実施例では、2つのNビット出力は、2*N個のビット語を有するレジスタ・ファイル14bに結合された単一の2*N出力に合成することができる。
【００４０】
更なる機能単位が、複数の結果を別々の書き込みポートに書き込む群に存在し得る。この場合、同じオペランドを処理する複数の別々の機能単位がそれぞれの書き込みポートに結合されるか否か、又は、複数の結果をもたらす1つの機能単位が、別々の書き込みポートに結合されるか否かを選択するようマルチプレクサを設けることができる。当然、前述の更なる機能単位を、それ自体（すなわち、同じオペランドを共有する、別々の機能単位が結合される同じ書き込みポートに結合されない）によって用いることができる。同じオペランドを共有する、別々の機能単位が結合される同じ書き込みポートに結果出力が結合された、前述の更なる機能単位の組み合わせは、書き込みポートをより効率的に用いることが可能であるという利点を有する。
【００４１】
図6は、別のタイプのMADD（乗算加算）命令に応じて起動させられる機能単位の一部を示す。機能単位は、乗算器30、加算器32及び結果分離器34を有している。第1のレジスタ・ファイル14a（図示せず）の第１の読み出しポート及び第２の読み出しポートのデータ部分20は、乗算器30のそれぞれの入力に結合される。各入力は、第1の複数のN（例えば、N=32）ビットを並列に供給するための導体を有している。乗算器30の出力、及び第2のレジスタ・ファイル14b（図示せず）からの読み出しポートのデータ部分24は、加算器32の入力に結合される。加算器32の入力それぞれは、第1の複数の2*N（例えば、2*N=64）ビットを並列に供給するための導体を有している。加算器32の出力は、加算結果の2*N（例えば、2*N=32）ビットを並列に供給するための導体を有している。加算器32の出力は、第2のレジスタ・ファイル14b（図示せず）への書き込みポートのデータ部分26に結合され、第２のレジスタ・ファイル14bのそれぞれのデータ部分22に結合される（結果のN個の最上位ビット及び結果のN個の最下位ビットそれぞれを受け取る）。結果分割器34は、加算器22からの出力の導体の分岐を2つの群（N個の最上位ビット群、及びN個の最下位ビット群）に分割するにすぎない。このMADD命令のコマンドは
MADD  R1、R2、R3、R4、R5、R6
によって表すことができる。
【００４２】
ここで、MADDは動作コードを象徴し、R1、R2は、第1のレジスタ・ファイル14aの読み出しポートに供給されるレジスタ・アドレスを象徴し、R3は、第2のレジスタ・ファイル14bの読み出しポートに供給されるレジスタ・アドレスを象徴し、R4、R5は、第1のレジスタ・ファイル14aの書き込みポートに供給されるレジスタ・アドレスを象徴し、R6は、第2のレジスタ・ファイル14bの書き込みポートに供給されるレジスタ・アドレスを象徴する。命令発行回路10によって取り出されるコマンドは好ましくは、動作コードおよびそれぞれのレジスタ・アドレスを表すそれぞれのフィールドに分割することが可能な複数のビットを有している。
【００４３】
MADDコマンドは、同じ結果が二回（第２のレジスタ・ファイル14b内のレジスタに全体として一回、第1のレジスタ・ファイル14b内のそれぞれのレジスタに2つの部分で一回）書き込まれるという効果を有する。このことには、発行される命令内のレジスタ・アドレスによって全て別個に選択される３つの結果レジスタが関係する。これは、処理回路に対する命令のプログラムをコンパイルするコンパイラに、レジスタ使用を最適化するうえでの完全な自由度を与える。別々の結果レジスタは、事前の変換を必要とすることなく、結果（の一部）を用いるよう後の命令によって別個にアドレス指定することが可能である。Nビットの結果レジスタを例えば、１つの機能単位群に用いることができ、2*Nビットの結果を例えば、別の機能単位群に用いることができる。
【００４４】
MADDコマンドは、発行スロットに供給することができるコマンドの一例にすぎない。別々のコマンドも利用可能であり得る。別々のコマンドは、コマンド（MADDコマンドの例におけるMADDによって象徴される）の動作コード部分によって識別される。規定されたコマンドに応じて、機能単位の別々の回路（図3に示していない）を起動させることができるか、又は、同じ発行スロットに接続された機能単位群からの別々の機能単位を起動させることができる。通常、機能単位（または機能単位群）は、機能単位の出力に、かつ／又は、機能単位内の他の回路に回路出力のどれから出力が供給されるかを判定するためのマルチプレクサ（図示せず）を有している。図は、MADDコマンドと関係している回路を示しているにすぎない。他のコマンドは、オペランド・レジスタと同程度多くであるか、より少ないか、若しくは、より多くのレジスタを用いることができ、かつ／又は、結果レジスタと同程度多くであるか、より少ないか、若しくは、より多くのレジスタを用いることができる。より少ないレジスタが用いられる場合、デフォルト・レジスタ選択コードを発行することができ、レジスタ・ファイル14a、14bは、前述の選択コードに応じてデフォルト・データを供給するか、又は、デフォルト選択コードに応じて何れかのレジスタの内容の修正を阻止するよう構成することができる。
【００４５】
図7は、MSHADD命令（乗算・シフト・加算）に応じて起動される機能単位の別の一部を示す。この機能単位は、第１のレジスタ・ファイル14aの読み出しポートのデータ部分20からの更なるオペランドによって制御されるいくつかのビット位置だけ積をシフトさせるためのバレル・シフタ36を乗算器30と加算器32との間に有している。MSHADD命令は、発行スロットによって許容される最大数の入力及び出力を用いる。
【００４６】
本発明は、特定の実施例を参照することによって説明したが、前述の実施例に限定されるものでない。例えば、2つのレジスタ・ファイル14a、14bの代わりに、より多数のレジスタ・ファイル（例えば、Nビットのレジスタを有するレジスタ・ファイル群、及び2*Nビット・レジスタを有するレジスタ・ファイル群）を用いることができる。この場合、別々の機能単位（機能単位群）及びそれらの対応する発行スロットは、それぞれの別々のレジスタ・ファイルに結合することができる。単一の機能単位群は、Nビットまたは2*Nビットのレジスタを有する複数のレジスタ・ファイルにも接続することができる。
【００４７】
好ましくは、発行スロットは全て、同じ幅を有する。それぞれは、同じ数のオペランド・レジスタ（それぞれの別々のオペランド・サイズを有する）、及び同じ数の結果レジスタ（それぞれの別々のオペランド・サイズを有する）をサポートする。これは、コンパイルの間、別々の発行スロットへの命令の割り当てを自由に用いてプロセッサ速度を最適化することが可能であるという効果がある。好ましくは、各発行スロットは、3つの結果レジスタをサポートしている（そのうち、2つは幅がNビットであり、1つは幅が2*Nビット（例えば、N=32）である）。このことは、複数の結果と関係しているオーバヘッドと、複数の発行スロット内の同数の結果レジスタによるプログラム可能性との間の好適な妥協策を備えることが明らかになった。好ましくは4つのオペランド・レジスタを用いる。そのうち、3つは、幅がNビットであり、1つは、幅が2*Nビットである。このことは、複数のオペランドと関係しているオーバヘッドと、複数の発行スロット内の同数の結果レジスタによるプログラム可能性との間の好適な妥協策を備えることが明らかになった。
【００４８】
別の実施例では、3つ以上の別々のマルチビットのオペランド、及び／又は結果サイズを発行スロットにおいて用いることができる。例えば、32ビット・レジスタを有するレジスタ・ファイル及び64ビット・レジスタを有するレジスタ・ファイルに加えて、8ビット・レジスタを有するレジスタ・ファイルを、発行スロットにおいて供給し、アドレス指定することができる。
【００４９】
好ましくは、同じ機能単位に接続されており、同じ発行スロットから制御される同じ少なくとも2つのレジスタ・ファイルを用いる。一方のレジスタ・ファイル内のレジスタ毎のビット数Nは、他方内のレジスタ毎のビット数2Nの半分である。これによって、1つの命令の結果として、結果の倍精度バージョン、及び、互いに同じサイズを有する結果の2つの単精度部分を書き込むことが可能になる。しかし、本発明から逸脱することなく、レジスタ・サイズが2倍違わないレジスタ・ファイルを用いることができる。例えば、レジスタそれぞれにおけるオーバフローを表すことができるために、第1のレジスタ・ファイル内のレジスタのサイズはN+1ビットであり得るものであり、第2のレジスタ・ファイル内のレジスタのサイズは2*N+1ビットであり得る。
【図面の簡単な説明】
【００５０】
【図１】データ処理回路を示す図である。
【図２ａ】機能単位群を示す図である。
【図２ｂ】機能単位群を示す図である。
【図２ｃ】機能単位群を示す図である。
【図３】データ処理回路を示す図である。
【図４】機能単位の部分を示す図である。
【図５】機能単位の部分を示す図である。
【図６】機能単位の部分を示す図である。
【図７】機能単位の部分を示す図である。
【図１】
2008513878.tif 000003
【図２ａ】
2008513878.tif 000004
【図２ｂ】
2008513878.tif 000005
【図２ｃ】
2008513878.tif 000006
【図３】
2008513878.tif 000007
【図４】
2008513878.tif 000008
【図５】
2008513878.tif 000009
【図６】
2008513878.tif 000010
【図７】
2008513878.tif 000011
【国際調査報告】
2008513878.tif 000012
2008513878.tif 000013
2008513878.tif 000014