(57)【要約】コンピュータプログラムが、複数の機能ユニットと各々がこれら機能ユニットの関連するサブセットに結合された複数のレジスタファイルを含むＶＬＩＷプロセッサ内で実行される。第一の命令が実行されると、結果として、この第一の命令からの結果アドレスによってアドレスされるレジスタファイル内にその結果が書き込まれることとなるが、同時、その結果は、コピーレジスタファイル内のコピーレジスタにもコピーされる。このコピーレジスタは、その結果が書き込まれたレジスタファイルには依存するが、ただし、結果アドレスには少なくとも部分的に独立して選択され、こうしてレジスタファイル内の異なるアドレスを有するレジスタファイルに書き込まれた結果を、コピーレジスタファイル内の同一のレジスタにコピーすることが可能となる。その後、コピー命令が実行され、結果がコピーレジスタファイルから第二のレジスタファイルにコピーされ、これからの結果が別の命令のオペランドとして用いられる。
2006506727.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能ユニットと、
各々が前記機能ユニットのそれぞれのクラスタからの前記機能ユニットに結合されたポートを有する複数のレジスタファイルと、
前記機能ユニットのそれぞれによって一つの共通の命令サイクルにて実行されるための命令の組合せを含むことが可能な命令語を前記機能ユニットに発行するための命令語発行ユニットと、
前記レジスタファイルに結合され、前記レジスタファイルの任意の一つ内に書き込まれたデータのコピーを、そのデータの前記レジスタファイル内への書き込みの際に、受け入れるためのコピーレジスタファイルと、
前記コピーレジスタファイルに結合され、前記命令語からの命令を実行し前記コピーレジスタファイルからのあるレジスタの内容を前記レジスタファイル内のあるアドレスされたレジスタにコピーするように構成されたコピー機能ユニットと、
を備えていることを特徴とするデータ処理デバイス。
【請求項２】
前記コピーレジスタファイルは、前記レジスタファイルの前記ポートの少なくとも一部に、各々、それぞれのポート結合リンクを介して結合され、前記ポートのそれぞれに書き込まれたデータを、各々、前記コピーレジスタファイル内の一つ或いは複数のレジスタから成るそれぞれの組内のあるレジスタにコピーするように構成され、前記それぞれの組は前記ポートのそれぞれに依存して選択され、前記セット内の前記レジスタの選択は、存在する場合、前記データがそれに基づいて前記ポートの前記それぞれにに供給されたレジスタアドレスとは少なくとも部分的には無関係に行なわれることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記命令の少なくとも一つは、前記命令の前記少なくとも一つの結果が、前記命令の前記少なくとも１つがその結果をそれに書き込むところのポートに対する一つ或いは複数のレジスタなら成る前記それぞれの組内のレジスタにコピーされるべきことを示すためのフィールドを含み、前記ポート結合リンクは、前記フィールド内の値の制御下で、データがコピーされるべきか否かを制御するように構成されることを特徴とする請求項２記載のデータ処理装置。
【請求項４】
請求項１記載の複数の機能ユニットと、各々が前記機能ユニットのそれぞれのクラスタに結合されたポートとを有する複数のレジスタファイルとを備えるプロセッサに対するコンピュータプログラムをコンパイルするための方法であって、
あるタスクを実現するための複数の命令を生成するステップと、
各々の命令をそれぞれの機能ユニットに割当てるステップと、
前記複数の機能ユニットの第一の機能ユニットによって実行された前記複数の命令の第一の命令が前記複数の機能ユニットの前記第一の機能ユニットと前記複数のクラスタの内の同じクラスタに属さない、前記複数の機能ユニットの第二の機能ユニットによって生成された結果を必要とするか否かを決定するステップと、
前記結果をあるコピーレジスタファイルから前記複数の機能ユニットの前記第一の機能ユニットに結合された読出しポートを有する前記複数のレジスタファイルの第一のレジスタファイルにコピーする旨の、コピー機能ユニットに対するコピー命令を追加するステップと、
前記命令と前記コピー命令とを含む命令語を含むプログラムをコンピュータにて読出し可能な媒体内に、前記プロセッサによる実行において用いるために、格納するステップと、を含むことを特徴とする方法。
【請求項５】
前記複数の機能ユニットの前記第二の機能ユニットによる実行が結果的に、その結果が前記複数のレジスタファイルの第二のレジスタファイルに書き込まれる際に、前記コピーレジスタファイルにもその結果をコピーさせるように前記複数の命令の第二の命令を更新するステップを含み、前記更新ステップは、前記コピーレジスタファイルへのコピーを可能にする、前記複数の命令の前記第二の命令内のコピー制御フィールドをセットすることを特徴とする請求項４記載の方法。
【請求項６】
請求項１記載の処理デバイスに対する命令を含むコンピュータプログラム製品であって、前記命令は、結果を生成し、その結果を第一のレジスタファイルに書き込むとともに、その第一の命令の実行の一部としてコピーをコピーレジスタファイルに書き込むための第一の命令と、前記結果を前記コピーレジスタファイルから第二のレジスタファイルにコピーするための第二の命令と、前記第二のレジスタファイルからの前記結果を用いる第三の命令と、を含むことを特徴とするコンピュータプログラム製品。
【請求項７】
第一の命令を第一の機能ユニットにて実行することで、結果を生成し、その結果を前記第一の命令からの結果アドレスによってアドレスされる第一のレジスタ内の第一のレジスタファイルに書き込むとともに、前記結果のコピーを、前記結果アドレスとは少なくとも部分的に独立的に選択されたあるコピーレジスタファイルの内のあるコピーレジスタに書き込むステップと、
前記結果を前記コピーレジスタからある第二のレジスタファイルにコピーするためのコピー命令を実行するステップと、
第二の命令を第二の機能ユニットによって、前記第二のレジスタファイルからの前記結果をオペランドとして用いて実行するステップと、
を含むことを特徴とするプログラムを実行するための方法。
【請求項８】
前記コピーレジスタは、前記結果が前記第一のレジスタファイルに向けてそれに書き込まれるポートに依存して選択されることを特徴とする請求項７記載の方法。
【請求項９】
前記第一の命令からのコピー制御情報が前記結果が前記コピーレジスタファイルにコピーされるべきか否かを決定するためにテストされることを特徴とする請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＶＬＩＷ（Very Large Instruction Word ）処理デバイスような、パラレルな複数の機能ユニットに対する命令を含む命令語を備えるデータ処理デバイスに関する。
【背景技術】
【０００２】
ＶＬＩＷプロセッサはプログラムからの命令を実行する能力を有する複数の機能ユニットを含む。これら命令はパラレルな複数の機能ユニットに対する命令を含む命令語として発行される。オペランドデータがこれら機能ユニット間をレジスタファイルを介してパスされる。各レジスタファイルは、レジスタのい組と、選択されたレジスタにアクセスするための複数の読出し及び書込みポートとを含む。各々の機能ユニット（或いはこれら機能ユニットのグループ）は、ある異なる組のポートに結合される。このようにして、ある機能ユニットは、他の機能ユニットによって生成されたオペランドを読み出し、結果を他の機能ユニットによって用いるために書き込む能力を有する。
【０００３】
実際には、ＶＬＩＷプロセッサは非常に多数の機能ユニットを含むことがある。このような場合、全ての機能ユニットを単一のレジスタファイルに結合することは非現実的である。一つの代替アーキテクチャとして、これら機能ユニットを幾つかのクラスタにグループ化することが提唱されている。各々のクラスタに対して一つのレジスタファイルが設けられ、あるクラスタ内の全ての機能ユニットが、そのクラスタのポートに結合される。このアーキテクチャにおいては、ある特定の機能ユニットによって生成された結果は、その特定の機能ユニットと同一のクラスタに属する機能ユニットによってしか、そのレジスタファイルから読み出すことができない。このアイデアの背景として、結果の交換を必要とする異なるタスクからの命令は、一般には、機能ユニットのサブセット、つまり、ある一つの特定のクラスタ内の機能ユニットによってしか実行されないということがる。従って、これらタスクに対しては、クラスタの外側のレジスタファイルへの接続は必要とされない。
【０００４】
ただし、それでも、しばしば、異なるクラスタ内の機能ユニット間である限られた数のオペランド及び結果を交換する必要がある。ある１つのクラスタ内の機能ユニットによって生成された結果を別のクラスタ内の機能ユニットで利用することができるように、データをあるレジスタファイルから別のレジスタファイルに転送するための様々な解決手段が提唱されている。
【０００５】
米国特許第６，２６９，４３７号は、複数のレジスタファイルと、１つの複製器（duplicator）を備えるプロセッサを開示する。この複製器は、異なるレジスタファイル内のソースレジスタとターゲットレジスタを指定する命令を実行する。この複製器はこれらレジスタファイルの読出し及び書込みポートに結合される。これら命令に応答して、この複製器は、データをソースレジスタからターゲットレジスタにコピーする。
【０００６】
このプロセッサに対するプログラムがコンパイルされるとき、コンパイラは、これら様々な機能ユニットに対する命令の集合を生成するとともに、それぞれ、ある結果を生成する命令と、それらを用いる命令との間の依存関係を決定する。コンパイラは、同一のクラスタに属さない（ある共通のレジスタファイルのポートに結合されてない）機能ユニットによって実行される命令間にそのような依存関係が存在する場合、それを決定する。この場合、コンパイラは、複製器に対して命令を生成し、生成する側の命令（producing instruction）の結果を、使用する側の命令（using instruction）を実行する機能ユニットに結合されているレジスタファイル内のレジスタにコピーする。
【０００７】
この技術によると、命令語の生成に追加のスケジューリング制約が課される。生成する側の命令を実行した後、コピー命令をスケジューリングすることが必要となり、これに使用する側の命令が続く。関与するレジスタは、少なくとも関連する命令の実行を終えるまで、割当てられたままにとどまることを要求される。このため、プロセッサの効率が低減する。
【発明の開示】
【０００８】
とりわけ、本発明の一つの目的は、ある命令語からの命令をパラレルに実行する能力を有する複数の機能ユニットを備えるデータ処理デバイスの効率を、異なるレジスタファイル内に分散して存在するレジスタを用いることで向上させることにある。
【０００９】
本発明によるデータ処理デバイスが請求項１に記載されている。本発明によると、コピー機能ユニットに対するオペランドのソースとして機能する専用のコピーレジスタファイルが提供される。レジスタファイル内のレジスタに書込まれる結果は、その結果を生成する命令の実行の一部として、つまり、追加の命令を要求することなく、このコピーレジスタファイルにもコピーされる。コピー機能ユニットは、その命令語からの命令によって制御される。コピー機能ユニットに対するこれら命令は、どの結果が、コピーレジスタファイルから他のレジスタファイルにコピーされる必要があるかを示す。
【００１０】
好ましくは、このコピーレジスタファイルは、ポート結合リンクを介してレジスタファイルの複数のポートの少なくとも一部に結合され、これらポートのそれぞれに書込まれるデータを、各々、コピーレジスタファイル内の関連するレジスタにコピーするように構成され、これら関連するレジスタはこれらポートのそれぞれには依存するが、ただし、データがそれに基づいてそれらポートの関連する１つの供給されたレジスタアドレスとは少なくとも部分的に無関係に選択される。このようにして、ソースレジスタファイル当りコピーレジスタファイル内に必要とされるコピーレジスタの数は、ソースレジスタファイル内のレジスタの総数よりも少ない限られた数で済む。好適には、コピーレジスタは、レジスタアドレスと完全に独立的に選択される。
【００１１】
原理的には、通常のレジスタファイルに書き込まれる各々の結果をコピーレジスタファイルに自動的にコピーすることもできる。ただし、このやり方は、コピーレジスタファイルからコピーすることを必要とされる前の結果の上書きを招く。不必要なコピーを制限或いは阻止するために、本発明によるデータ処理装置の一つの実施例においては、それら命令の少なくとも一つの結果がコピーレジスタファイルにコピーされるべきか否かを示すためのフィールドを含む命令が用いられ、ポート結合リンクは、このフィールド内の値に依存してデータをコピーするように構成される。このようにして、プログラムによって不必要な上書きが防止され、この結果として、コピーレジスタファイルからのコピーのためのコピー命令のためのより多くの時間が捻出される。
【００１２】
本発明の主要な用途は、ポートが同一のレジスタファイルに結合されていない機能ユニットに対するレジスタファイル間で結果をコピーすることに向けられる。もう一つの用途は、レジスタ使用に対する逼迫を低減することにある。つまり、データを一時的にあるレジスタファイルの外側に、そのレジスタファイル内のレジスタが他のデータに対して利用できるように、保存することにある。この場合は、コピーレジスタファイルが、それが最初に書き込まれたレジスタファイル内では上書きされることとなる結果を保存するために用いられ、この結果は、後にその結果が必要となったとき、そのレジスタファイルに書き戻される。書き戻しはコピーレジスタファイルから直接に遂行することも、或いは別のレジスタファイルに格納した後に行うこともできる。
【００１３】
以下では、これらデータ処理デバイス、データ処理のための方法及び命令語をコンパイルするための方法について図面を用いて説明する。
【発明を実施するための最良の形態】
【００１４】
図１は、命令発行ユニット１０、機能ユニット１２ａ−ｄ、コピー機能ユニット１４、レジスタファイル１６ａ，ｂ及びコピーレジスタファイル１８を備えるデータ処理デバイスを示す。命令発行ユニット１０は発行スロット接続（issue slot connections）を有するが、これは機能ユニット１２ａ−ｄとコピー機能ユニット１４とに結合される。命令発行ユニット１０は、命令語を発行するように設計されているが、これら命令語は、各々、命令の組み合わせを含み、各々、これら機能ユニット１２ａ−ｄ及びコピー機能ユニット１４の関連する一つに向けられる。この目的のために、命令発行ユニット１０は、大雑把には、命令メモリ、プログラムカウンタ及びオプションとしての命令伸張回路を含むが、ただし、これらは公知であるとともに、本発明とは関係ないために、これらは別個には示されていない。
【００１５】
第一と第二の機能ユニット１２ａ，ｂのオペランド入力は、第一のレジスタファイル１６ａの読出しポート１５ａ，ｂに結合される。第一と第二の機能ユニット１２ａ，ｂの結果出力ポートは、第一のレジスタファイル１６ａの書込みポート１７ａ，ｂに結合される。同様にして、第三及び第四の機能ユニット１２ｃ，ｄのオペランド入力は、第二のレジスタファイル１６ｂの読出しポートに結合される。第三及び第四の機能ユニット１２ｃ，ｄの結果出力は、第二のレジスタファイル１６ｂの書込みポート１７ｃ，ｄに結合される。これら読出し及び書込みポートは、命令内のレジスタ選択フィールドの制御下でこれらレジスタファイル１２ａ，ｂ内のレジスタにアドレスするためのレジスタアドレシング部分（別個には示されていない）を備える。これら読出しポートは、各々、あるアドレスレジスタの内容をある機能ユニット１２ａ−ｄに供給するためのレジスタ内容接続（別個には示されていない）を備える。これら書込みポートは、各々、ある機能ユニット１２ａ−ｄからの結果をレジスタファイル１６ａ，ｂに供給するための結果接続（別個には図示されていない）を備える。
【００１６】
機能ユニット１２ａ−ｄは、任意のタイプ、例えば、演算論理ユニット（Arithmetic Logic Units,ＡＬＵ)或いはメモリアクセスユニット等であり得る。ある限られた数の機能ユニットしか示されていないが、理解できるように、実際にはもっと多くの機能ユニットを用意することもできる。同様に、もっと多くのレジスタファイルを用意することもできる。示されるように、各々のレジスタファイル１２ａ，ｂは、機能ユニット１２ａ−ｄのあるクラスタを定義し、そのクラスタがそのレジスタファイルに接続される。一例として、各々の機能ユニット１２ａ−ｄは一つのレジスタファイルにしか結合されていないが、ただし、理解できるように、レジスタファイル選択ハードウェアを介して幾つかの機能ユニット１２ａ−ｄの入力及び／或いは出力を一つより多くのレジスタファイル１６ａ，ｂに結合し、こうして命令の制御下で、機能ユニットからの読出し及び／或いはこれへの書込みのためにこれらレジスタファイルの任意の一つ内のレジスタを選択できるようにすることもできる。ただし、好ましくは、各々の機能ユニット１２ａ−ｄは、たった一つのレジスタファイルに結合される。これは、複数のレジスタファイルに接続するやり方では、要求されるポートの数、命令幅、ハードウェアコスト及び遅延が増加するためである。
【００１７】
以下では本発明は機能ユニット１２ａ−ｄとの関連で説明されるが、理解できるように、機能ユニット１２ａ−ｄの一つ或いは複数を同一の読出し及び書込みポートを共有し、命令を交互に実行する機能ユニットのグループにて置換することもできる。
【００１８】
コピーレジスタファイル１８の入力は、レジスタファイル１６ａ，ｂの書込みポート１７ａ−ｄの各々に結合される。コピーレジスタファイル１８は、更に、読出しポートを有し、これはコピー機能ユニット１４のオペランド入力に接続される。コピー機能ユニット１４の結果出力１９ａ，ｂは、レジスタファイル１６ａ，ｂのそれぞれに結合される。
【００１９】
動作において、発行ユニット１０は、命令語を発行するが、これら命令語は、各々、命令の組み合わせを含み、各々、機能ユニット１２ａ−ｄ及びコピー機能ユニット１４のそれぞれに向けられる。機能ユニット１２ａ−ｄに対する命令は、典型的には、オペレーションコード、第一及び第二のオペランドレジスタ選択コード及び結果レジスタ選択コードを含む。オペレーションコードは、機能ユニットに対して特定のオペレーションタイプを選択することを指令し、オペランドレジスタ選択コードと、結果レジスタ選択コードは、レジスタファイルのポートに、それぞれ、オペランドレジスタと、結果レジスタを選択するために供給される。
【００２０】
結果がレジスタファイル１６ａ，ｂ内に書き込まれる際に、これら結果の少なくとも幾つかがコピーレジスタファイル１８のレジスタ内に自動的にコピーされる。コピー機能ユニット１４は、コピーレジスタファイル１８の内のレジスタの内容をレジスタファイル１６ａ，ｂ内のアドレスされたレジスタ内にコピーすることを指令する命令を実行する。
【００２１】
コピー機能ユニット１４に対する命令は、典型的には、オペランドデータとそのデータがそこにコピーされるべき結果レジスタの指定（specification）を含む、コピー機能ユニット１８内のあるオペランドレジスタのアドレスを含む。この結果レジスタの指定は、典型的には、レジスタファイル選択フィールドと、レジスタ選択フィールドとを含み、これらは、それぞれ、ある選択されたレジスタファイル１６ａ，ｂにアドレシングするためと、そのレジスタファイル１６ａ，ｂ内のあるレジスタにアドレシングするためとに用いられる。この命令に応答して、データが、オペランドデータを有するアドレスされたレジスタから、選択されたレジスタファイル１６ａ，ｂ内のアドレスされたレジスタにコピーされる（実際には、こうして選択されるレジスタは、２つのレジスタファイル１６ａ，ｂの他にも多数存在することに注意する）。
【００２２】
このようにして、命令発行ユニット１０によってコピー機能ユニット１４に向けて発行されたコピー命令を実行するというやり方を用いることで、発生側の機能ユニット（originating functional unit）１２ａ，ｂによって実行されたオペレーションの結果を、発行側の機能ユニット１２ａ−ｄと同一のレジスタファイル１６ａ，ｂには結合されていない、利用側の機能ユニット（using functional unit）１２ａ−ｄによってオペランドとして利用することが可能となる。
【００２３】
一つの代替実施例においては、コピー機能ユニット１４は、レジスタファイル１６ａ，ｂ内の所定のレジスタにコピーする。この場合は、コピー機能ユニット１４に対する命令内に結果レジスタのアドレスは必要とされない。また、コピー機能ユニット１４は、これらコピーを、全てのレジスタファイル１６ａ，ｂにパラレルにブロードキャストすることもできる。この場合は、コピー機能ユニット１４に対する命令内にレジスタファイル選択フィールドは必要とされない。ただし、勿論、このやり方では、コピーが、レジスタファイル１６ａ，ｂの１つ或いは一部によって必要とされないところの多くの用途においては、不必要なレジスタの上書き（register overwriting）を招き得る。
【００２４】
図２はコピー機能ユニット１８の一つの実施例を示す。この実施例は、マルチプレクサ２０と、複数のレジスタ２２ａ−ｄを含む。レジスタファイル１６ａ，ｂの書き込みポート１７ａ−ｄのデータ部分は、レジスタ２２ａ−ｄのそれぞれの入力２８ａ−ｄに結合される。レジスタ２２ａ−ｄの出力は、コピー機能ユニット１４（図示せず）のオペランド入力２６にマルチプレクサ２０を介して結合される。制御入力２４は、コピー機能ユニット１４に対するコピー命令からのオペランドアドレスを受け取るために用いられる。
【００２５】
動作において、機能ユニット１２ａ−ｄがある結果を書込みポート１７ａ−ｄに書き込む際に、この結果は、その書込みポート１７ａ−ｄに対するレジスタ２２ａ−ｄ内にも自動的に書き込まれる。レジスタ２２ａ−ｄの選択された一つからのオペランドデータが、コピー命令の制御下にて、コピー機能ユニット１４のオペランド入力２６に供給される。
【００２６】
理解できるように、ある特定の書込みポート１７ａ−ｂからの全てのデータは、その書込みポート１７ａ−ｄのレジスタファイル１６ａ，ｂ内のどのレジスタが選択されたか関係なく、コピーレジスタファイル１８内のその特定の書込みポート１７ａ−ｂに対する同一のレジスタ２２ａ−ｄに供給される。このようにして、コピーレジスタファイル１８内のレジスタ２２ａ−ｄの数がレジスタファイル１６ａ−ｄ内のレジスタの数の総和よりも大幅に低減され、このため、コピーレジスタファイル１８内のレジスタ２２ａ−ｄに小さなアドレスフィールドにてアドレスすることが可能となる。ただし、代償として、さらなる手段なしには、レジスタ２２ａ−ｄの内容を、これが上書きされる前に、他のレジスタファイル１６ａ，ｂにコピーすることが必要となる。
【００２７】
このため、好ましくは、命令発行ユニット１０からの命令語によって、結果としてのデータを、コピーレジスタファイル１８内のレジスタ２２ａ−ｄ内にコピーすべきか否が制御される。これは、例えば、機能ユニット１２ａ−ｄに対する命令を、コピー制御情報にて増分することで実現される。例えば、この制御情報としては、各々の特定の命令内の、機能ユニット１２ａ−ｄがその特定の命令の結果をそのレジスタファイル１６ａ，ｂに書き込む際にその特定の命令の結果がコピー機能ユニット１８内のそれぞれのレジスタ２２ａ−ｄにコピーされるべきであるか否かを示す、コピー制御ビットが用いられる。この場合は、特定の命令に対するこのコピー制御ビットが、その命令を実行する機能ユニット１２ａ−ｄの書込みポート１７ａ−ｄに対するレジスタ２２ａ−ｄの書込み起動入力（図２には示されていない）に供給される。このコピー制御ビットを用いることで、レジスタ２２ａ−ｄ内のデータの上書きを遅延させることができ、このため、コピー機能ユニット１４に対するレジスタ２２ａ−ｄからデータをコピーすべき命令を、例えば、別のレジスタ２２ａ−ｄからのデータを先にコピーする必要があるとき、遅延させることが可能となる。
【００２８】
もう一つの代替実施例においては、コピーレジスタファイル１８の書込みポート１７ａ−ｄに対する各々のレジスタ２２ａ−ｄは複数にレジスタにて置換される。この場合は、コピー機能ユニットに対するコピー命令は、それぞれの書込みポート１７ａ−ｄのため複数のレジスタの間から選択するための選択コードを含む。書込みポート１７ａ−ｄからの結果は、書込みポート１７ａ−ｄのためのこれら複数のレジスタの異なる一つにラウンドロビン方式にてコピーされる。こうして、レジスタ２２ａ−ｄ内のデータの上書きが、コピー制御ビットを用いなくても、遅延される。
【００２９】
書込みポート１７ａ−ｄのそれぞれに対して別個のレジスタ２２ａ−ｄが提供されるように示されたが、書込みポートの複数のグループに対して、例えば、あるレジスタファイル１６ａ，ｂの全ての書込みポートに対して、共有のレジスタ（或いはセットのレジスタ）を提供することもできる。各々の命令サイクルにおいて、書込みポート１７ａ−ｄのこれらグループのたった１つからのデータが、書込みポートのそのグループに対するレジスタ（或いは複数のレジスタの１つ）に書き込まれる。こうすることで、コピーレジスタファイル１８内のレジスタへの接続の数を低減することが可能となる。例えば、コピー制御ビットを用いることで、書込みポートの関連するグループ内の複数の書込みポートのどれからデータをコピーすべきかを制御することもできる。
【００３０】
代替として、同一のレジスタファイル内のレジスタの異なるグループに対して別個のレジスタ２２ａ−ｄを提供することもできる。この場合は、書込みポート１７ａ−ｄに供給されるレジスタアドレスの一部が、コピーレジスタファイル１８内の適当なレジスタ２２ａ−ｄを選択するために、コピーレジスタファイル１８にも供給される。これによって、コピーレジスタファイル１８内のレジスタ２２ａ−ｄが上書きされる平均頻度が低減され、このためコピー機能ユニット１６に、データをコピーするためのより多くの時間が与えられる。コンパイルの段階（compilation phase）において、後に必要とされるデータがコピーレジスタファイル１８内で上書きされることがないように、異なる結果へのレジスタの割り当てを適合化することで、それらデータが引き続き利用可能にとどまることを確保することができる。この目的に対して、レジスタアドレスの全体が必要とされるわけではなく、この目的に対しては、コピーレジスタファイル１８内のあるレジスタを選択するためには、例えば、１或いは複数ビットから成る（レジスタアドレスの）サブセットのみで十分である。
【００３１】
図３は、図１の処理デバイスに対する命令語を生成するためのプルセスの流れ図を示す。命令を生成するためのこのようなプロセスは、図１のデバイスを含めて、任意のコンピュータにて実行することができる。このプロセスの結果として、命令発行ユニット１０内に、機能ユニット１２ａ−ｄ及びコピー機能ユニット１４によって実行されるべきセットの命令語が格納されることとなる。場合によっては、これら命令語は、ある媒体、例えば、磁気或いは光学ディスク上に中間的に格納される。
【００３２】
第一のステップ３１において、プログラムの仕様（specification）が、ある任意の形式、例えばC等のハイレベル言語にて受信される。この第一のステップにおいて、このプログラムが、機能ユニット１２ａ−ｄによってそのプログラム及びそれらオペレーション間のデータ依存性の仕様を実現するために実行されるべき組のマシーンオペレーションの仕様に変換される。第二のステップ３２において、これらオペレーションが機能ユニット１２ａ−ｄに割当てられ、異なる命令語に割当てることでスケジュールされる。一般には、全ての機能ユニット１２ａ−ｄが全てのオペレーションを実行する能力を有するわけではなく、このため、機能ユニット１２ａ−ｄへのオペレーションの割り当てはそれら機能ユニット１２ａ−ｄの能力によって制約される。更に、割当てにあたっては、実行を必要とされる命令の数が最小となるように、命令が異なる機能ユニット間に分配されるように配慮される。加えて、第二のステップ３２において、レジスタがこれらオペレーションの結果に割当てられる。
【００３３】
第三、第四及び第五のステップ３３、３４、３５において、これら命令語内の命令がそれら命令のオペランドの利用可能性が損なわれないように１つ１つ処理される。第三のステップ３３において、その命令のオペランドを生成する機能ユニット１２ａ−ｄがその命令を実行する機能ユニット１２ａ−ｄと同一のレジスタファイルに結合されているか否かテストされる。そうである場合は、その命令のオペランドは関連するレジスタをポイントするようにセットされる。そうでない場合は、第四のステップ３４が実行され、その命令を実行すべき機能ユニット１２ａ−ｄのレジスタファイル１６ａ，ｂ内の中間レジスタが割当てられる。命令のオペランドがその中間レジスタをポイントするようにセットされる。この第四のステップ３４は、命令語内に、コピー機能ユニット１４に対してコピーレジスタファイル１８からのオペランドをその中間レジスタにコピーする旨のコピー命令を追加する。第五のステップ３５は、その結果としてオペランドを生成する命令のコピー制御ビットをセットすることで、その結果がコピーレジスタファイル１８に書き込まれるようにする。第六のステップ３６は、全ての命令が処理されたか否かをテストする。そうでない場合は、第三から第五のステップ３３−３５が反復される。そうである場合は、第七のステップ３７が実行され、プログラムがアセンブルされ、これがコンピュータにて読出し可能な媒体、例えば、命令発行ユニット１０或いは中間媒体内のアドレス可能な半導体メモリ内に格納される。
【００３４】
理解できるように、図３は単に本発明と最も直接に関係があるステップのみを示す。実際には、それらの実現は公知であるところのより多くのステップを追加することもできる。例えば、必要であれば、コピー機能ユニット１４がデータをコピーするための十分な時間を確保できるように、或いは十分なレジスタが自由に利用できることが確保できるように、再スケジューリングステップを設けることもできる。
【００３５】
上の説明では、本発明は、同一のレジスタファイルにポートが結合されていない機能ユニットに対するレジスタ間での結果のコピーに向けられたが、理解できるように、本発明は、より一般的に適用可能である。例えば、コピー機能は、レジスタ使用に対する逼迫を低減するために用いることもできる。この場合は、このコピーレジスタファイルは当初書き込まれたレジスタファイル内では上書きされる恐れのある結果を保存するために用いられ、この結果は、その後、その結果が必要となったとき、そのレジスタファイルに書き戻される。書き戻しは、コピーレジスタファイルから直接に遂行することも、或いはメモリ等を介して遂行することもできる。こうして、あるソースレジスタファイル内のある値がある特定のレジスタファイル内で、コピー動作の後にもはや不要となった場合、そのレジスタを他のデータに対して、その後（その結果を）別のレジスタファイルにコピーすることができるために、再使用することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】データ処理デバイスを示す図である。
【図２】コピーレジスタファイルを示す図である。
【図３】処理デバイスに対するプログラムを生成するためのフローチャートを示す図である。
【図１】
2006506727.tif 000003
【図２】
2006506727.tif 000004
【図３】
2006506727.tif 000005
【国際調査報告】
2006506727.tif 000006
2006506727.tif 000007
2006506727.tif 000008