(57)【要約】  データ処理装置は、複数の機能ユニットを有し、連続した命令サイクルで命令を発行する。第１タイプの命令は、それぞれ一時に１つの機能ユニットに向けたものである。第２タイプの命令により、機能ユニットの組合せが同じ命令実行サイクルで応答するようになり、１つの機能ユニットからの結果が、同じ命令の実行の一環として別の機能ユニットによって使用される。好ましくは、この装置は、実行されるプログラム・セグメントが第２タイプの命令を含むかどうかに応じた、いくつかの異なる命令サイクル速度での選択的演算をサポートする。最も速い命令サイクル速度では、異なる機能ユニットによる演算が命令実行サイクル内に収まらないので、第２タイプの命令の実行は許容されない。可能であれば、この装置は、遅いクロック速度に切り換わることによって電力消費を節減し、その場合、第２タイプの命令が実行されて、発行されるべき命令の数を低減することにより電力消費をさらに節減する。
2007519052.tif 000002
【特許請求の範囲】
【請求項１】
命令セットから命令を発行するための発行スロットを有し、前記命令のそれぞれを連続した命令サイクルで発行する命令発行ユニットと、
読取りポートおよび書込みポートをもつレジスタ・ファイルと、
それぞれ前記発行スロットに結合された制御入力、前記読取りポートに結合されたオペランド入力、および前記書込みポートに結合された結果出力を有し、それぞれが他の機能ユニットが応答しない前記命令セットの該当のサブセットからの命令に応答する、機能ユニットのグループであって、前記命令セットがさらに、前記機能ユニットのうちの第１および第２機能ユニットが応答する組合せ命令を含む機能ユニットのグループと、
前記発行スロットに結合され、前記命令セットからの前記組合せ命令に応答して、前記機能ユニットのうちの前記第１機能ユニットの結果出力を、前記機能ユニットのうちの前記第２機能ユニットの前記オペランド入力に送る制御ユニットとを含む、命令制御式データ処理装置。
【請求項２】
ＶＬＩＷプロセッサとして構成され、前記発行スロットが、前記組合せ命令をその命令の１つとして含むＶＬＩＷ命令語を発行するための前記命令発行ユニットの複数の発行スロットの１つであり、前記レジスタ・ファイルが、複数組の読取りおよび書込みポートを有する命令制御式データ処理装置であって、それぞれ前記発行スロットの１つおよび前記複数組の読取りおよび書込みポートに結合された、前記ＶＬＩＷ命令語からの該当の命令を実行するための、機能ユニットまたは機能ユニット・グループを含み、前記機能ユニットのうちの前記第１および第２機能ユニットが、前記組合せ命令と同じ命令語中で発行された命令の実行と並列に、前記発行スロット内に発行された前記組合せ命令に応答する、請求項１に記載の命令制御式データ処理装置。
【請求項３】
前記機能ユニットのうちの前記第１および第２機能ユニットが、同じ命令実行サイクル内で前記組合せ命令に応答する、請求項１に記載の命令制御式データ処理装置。
【請求項４】
前記命令サイクルをクロック制御するためのクロック回路を含み、前記クロック回路が、命令実行サイクル内で前記組合せ命令を実行する際でも前記機能ユニットのうちの前記第１機能ユニットに適用されるオペランドに応答して前記命令実行サイクル内で前記機能ユニットのうちの前記第２機能ユニットからの結果を生成するのに伴う待ち時間に対応できるのに十分なほど遅い第１のクロック速度と、前記命令サイクル内で前記待ち時間に対応できるには速すぎるが前記サブセットからの命令の待ち時間には対応できる第２のクロック速度とを含む複数の選択可能なクロック速度を有する、請求項３に記載の命令制御式データ処理装置。
【請求項５】
前記命令発行ユニットがさらなる発行スロットを有し、前記レジスタ・ファイルがさらなる読取りポートを有する命令制御式データ処理装置であって、前記さらなる発行スロットに結合された制御入力を有するさらなる機能ユニットと、前記さらなる読取りポートに結合されたオペランド入力とを含み、前記制御ユニットが、前記さらなる機能ユニットの結果出力を、前記組合せ命令の制御下で前記レジスタ・ファイルをバイパスし、前記組合せ命令の制御下で前記機能ユニットのうちの前記第２機能ユニットのさらなるオペランド入力に送るように構成される、請求項１に記載の命令制御式データ処理装置。
【請求項６】
同じ命令サイクル内で発行される、前記さらなる機能ユニット用のコマンドと、前記機能ユニット・グループ用の前記組合せ命令とを含むＶＬＩＷ命令を含むプログラムが組み込まれる、請求項５に記載の命令制御式データ処理装置。
【請求項７】
前記制御ユニットが、前記機能ユニットのうちの前記第１機能ユニットが前記組合せ命令に応答する命令実行サイクルに続く命令実行サイクルで、前記機能ユニットのうちの前記第２機能ユニットに、前記組合せ命令に応答させるように構成される、請求項１に記載の命令制御式データ処理装置。
【請求項８】
前記機能ユニットのうちの前記第１機能ユニットの結果が、中間でラッチされずに、前記機能ユニットのうちの前記第１機能ユニットから、前記機能ユニットのうちの前記第２機能ユニットの前記オペランド入力に送られる、請求項７に記載の命令制御式データ処理装置。
【請求項９】
機能ユニット・グループを用意すること、
連続した命令を前記グループに発行すること、
前記命令のうちの第１タイプの命令を、それぞれ個々の前記機能ユニットで実行すること、
第２タイプの命令を、連続した前記機能ユニットの第１および第２機能ユニットで実行すること、および
前記第２タイプの前記命令に応答して、前記機能ユニットのうちの第１機能ユニットの結果を、前記機能ユニットのうちの第２機能ユニットのオペランドに送ることを含む、処理タスクを実行する方法。
【請求項１０】
前記機能ユニットのうちの前記第１および前記第２機能ユニットが、同じ命令実行サイクル内で前記第２タイプの前記命令に応答する方法であって、
第１の速度が、前記機能ユニットのうちの少なくとも２つのカスケードによる組合せ命令の実行が前記第１の速度における命令サイクル内に収まるほど遅く、第２の速度が、前記機能ユニットのうちの１つの機能ユニットによる命令の実行しか前記第２の速度における前記命令実行サイクル内に収まらないほど速く、前記組合せ命令の実行が、前記第２の速度における１命令実行サイクル内に収まらないように、少なくとも前記第１および前記第２の速度から命令サイクル速度を選択すること、および
前記処理タスクを実行するために使用される前記命令を、前記タスクが前記第１の速度で実行されるときは、前記組合せ命令が使用され、前記タスクが前記第２の速度で実行されるときは、前記組合せ命令が、対応する効果を有する前記第１タイプの命令によって置き換えられるように、前記選択された命令サイクル速度に適合させることを含む、請求項９に記載の方法。
【請求項１１】
それぞれのさらなる機能ユニット用の複数の命令を含む、ＶＬＩＷ命令語の一部である、前記連続した命令を発行すること、
前記第２タイプの前記命令を含む前記命令語中に、前記さらなる機能ユニットのうちのある特定の機能ユニット用のさらなる命令を含むこと、および
前記第２タイプの前記命令に応答して、前記さらなる機能ユニットのうちの前記特定の機能ユニットからの前記さらなる命令のさらなる結果を、前記機能ユニットのうちの前記第２機能ユニットのさらなるオペランド入力に送ることを含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令制御式データ処理装置に関する。
【背景技術】
【０００２】
ＰＣＴ特許出願公開第ＷＯ００／６０４５７号は、ＶＬＩＷ処理装置を開示している。ＶＬＩＷ処理装置は、それぞれ他の機能ユニットと並列に命令を実行可能な複数の機能ユニットを含んでいる。ＶＬＩＷ処理装置は、一般にそれぞれの機能ユニットによって並列に実行するための複数の命令を含む、ＶＬＩＷ命令語を処理する。ＶＬＩＷプロセッサは、プログラムされた処理タスクの高速な実行を可能にする利点があるが、この利点を得るには、メモリ使用量が多く電力消費が大きいという犠牲を伴う。ＷＯ００／６０４５７は、ＶＬＩＷ処理装置のためのプログラムに必要な命令メモリ・サイズを低減することを目的としている。この目的のために、処理装置は、メモリ内の命令に応答してＶＬＩＷ命令を作る。したがって、メモリからの元の命令は、ＶＬＩＷ命令語中の複数の命令に変換されて、異なる機能ユニットで並列に実行される。
【０００３】
電力消費が大きいのは、とりわけ、多数の命令を並列に発行する必要があり、また命令が発行されるごとにレジスタ・ファイルにアクセスする必要があることに起因する。これらの問題は、ＷＯ００／６０４５７によって対処されていない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の一目的は、とりわけ、命令制御式処理装置における電力消費を低減することである。
【０００５】
本発明の一目的は、とりわけ、特にＶＬＩＷ処理装置における電力消費を低減することである。
【課題を解決するための手段】
【０００６】
本発明による装置が請求項１に記載されている。この装置は、発行スロットおよびレジスタ・ファイルのポートに並列に接続され、発行スロットから発行された命令を少なくとも１つのポートからのオペランドを用いて実行し、結果を少なくとも１つのポートに書き込むことを交互に行うための、１つの機能ユニット・グループを含む。この装置は、それら交互の命令に加えて組合せ命令を提供し、その場合、組合せ命令に応答してそのグループの２つ以上の機能ユニットが応答し、組合せ命令に応答して機能ユニットの第１ユニットからの結果が機能ユニットの第２ユニットのオペランド入力に送られる。機能ユニットの第２ユニットの結果が使用されて、組合せ命令の結果が生成される。組合せ命令を使用することにより、所与のタスク用のプログラムを実行中に機能ユニット・グループに発行する必要のある命令数を、低減することができ、これにより消費電力が低減できる。Ｗ０００／６０４５７とは対照的に、組合せ命令は、個々に発行される必要のある複数の命令に分割されず、１つの発行スロット中に発行される。したがって、この装置は、もちろん同じＶＬＩＷ命令語中で組合せ命令と並列に他の命令を発行することができるけれども、異なる機能ユニットに対して並列に命令を発行する必要性を部分的に回避することにより、ＶＬＩＷ処理の理念に部分的に反する。
【０００７】
一実施形態では、処理装置は、命令サイクルに合わせて選択可能なクロック速度を有する。速いクロック速度を必要としない処理タスクの実行中に使用されるクロック速度を下げることにより、電力消費が低減される。処理タスクを高速で実行する必要があるときは、個々の機能ユニットがすべて１命令サイクル内で命令をちょうど実行できる最大速度まで、クロック速度が上げられる。本発明の一態様によれば、この装置は、２つ以上の機能ユニットが同じ命令サイクル内で組合せ命令に応答し、連続して働き、またクロック速度を、組合せ命令の連続実行が１命令サイクル内に収まらなくなる程、速い速度に上げることができるように構築される。クロック速度がそのようなレベルまで上がると、たとえば、組合せ命令を含まないプログラムのみを実行するか、またはそれぞれ同じタスクを完了するための組合せ命令を使用するプログラムのバージョンとそれを使用しないプログラムのバージョンとを二者択一的に切り換えることにより、あるいは組合せ命令を異なる機能ユニットによって連続したサイクル内で実行される命令に変換することにより、組合せ命令の使用が回避される。
【０００８】
このようにして、電力消費をより節減することができる。というのは、装置が低クロック速度で実行される場合、命令を組み合わせて、発行スロットが１命令サイクル内のみアクティブであればよい組合せ命令にすることにより、処理タスクを実行するために発行する必要のある命令の合計数を減らすことができるからである。組合せ命令が通常の命令よりも多くの命令サイクルを使い果たさない場合、組合せ命令の使用により、プログラムの実行に必要とされる時間が低減され、指定された期間内に実行される必要のある処理タスクについて、クロック速度をさらに一層下げることが可能になる。
【０００９】
もう１つの実施形態では、処理装置が、並列実行のために、命令語からの命令を並列に発行できる複数の機能ユニットを含むＶＬＩＷプロセッサである。この実施形態では、組合せ命令を受け取る機能ユニット・グループと並列に命令を受け取るさらなる機能ユニットの結果出力から、組合せ命令に応答しまた機能ユニットの第１ユニットの結果を受け取る機能ユニットの第２ユニットのオペランド入力への、バイパス結合が提供される。好ましくは、バイパス接続は、複数命令サイクルにわたって機能ユニットにより実行される実行ステージをパイプライン処理するためのラッチを含まない。したがって、１つのグループ用の組合せ命令を、その組合せ命令の実行中に使用されるオペランドを引き渡すある機能ユニット用の別の命令と一緒に含む、ＶＬＩＷ命令語を使用することができる。その結果、十分に遅いクロック速度では、十分な速度をなお維持しながら、発行する必要のある命令数が少なくて済む。
【００１０】
さらに他の一実施形態では、組合せ命令の実行が、１命令サイクルを超えて延長してもよい。したがって、組合せ命令を、連続実行が１命令サイクル内に収まらないクロック速度で実行することもできる。一実施形態では、機能ユニットがどちらも組合せ命令に応答するとき、１つの機能ユニットから別の機能ユニットに送られる結果をラッチするために、中間レジスタが提供される。しかし、これには、レジスタによる追加の電力消費が必要とされ、実行が分割される。もう１つの実施形態では、機能ユニット間でレジスタが使用されず、ウェーブ・パイプラインを使用して、１命令サイクルより長い期間の一部分中で１つの機能ユニットから別の機能ユニットに結果が渡される。
【００１１】
本発明の上記その他の目的および有利な諸態様は、添付の図面を用いて説明される。
【発明を実施するための最良の形態】
【００１２】
図１に、命令メモリ１７、発行スロット１１を有する命令発行ユニット１０、機能ユニット・グループ１２、レジスタ・ファイル１４、クロック回路１６、クロック速度選択回路１８、およびプログラム・カウンタ１９を含む処理装置を示す。プログラム・カウンタ１９は、命令メモリ１７のアドレス入力に結合された出力を有する。命令メモリ１７は、命令発行ユニット１０に結合された出力を有する。命令発行ユニット１０の発行スロット１１は、機能ユニット・グループ１２に結合されたオペレーションコードと、レジスタ・ファイル１４に結合された第１オペランド・レジスタ・アドレスおよび第２オペランド・レジスタ・アドレスおよび結果レジスタ・アドレスとのための出力を含む。機能ユニット・グループ１２は、レジスタ・ファイル１４の出力に結合されたオペランド入力と、レジスタ・ファイル１４の入力に結合された結果出力とを有する。
【００１３】
機能ユニット・グループ１２のみが示されているが、複数のグループが並列に存在してもよいことを理解されたい。この場合、命令発行ユニットは、機能ユニット・グループごとに、該当するグループのオペレーションコード入力に結合された出力と、レジスタ・ファイル１４に結合されたレジスタ・アドレス出力を有する発行スロットとを含む。また、この場合、レジスタ・ファイル１４は、機能ユニット・グループごとに、個別の結果入力ならびに個別のオペランド出力を有する。
【００１４】
クロック速度選択回路１８は、クロック回路１６およびプログラム・カウンタ１９の制御入力に結合された出力を有する。クロック回路１６は、命令発行ユニット１０およびレジスタ・ファイル１４に結合されたクロック出力を有する。命令発行ユニット１０は、プログラム・カウンタ１９に結合されている。動作においては、クロック回路１６からのクロック信号が、連続した命令サイクルを規定する。通常、それぞれの命令が、各命令サイクルで実行される。各命令サイクルでは、命令発行ユニット１０が、命令の一部であるコマンドのオペレーションコードを機能ユニット・グループ１２に発行する。同様に、命令発行ユニット１０は、各命令サイクル内で命令用のオペランド・レジスタ・アドレスをレジスタ・ファイル１４に発行し、各命令サイクル内で命令用の結果レジスタ・アドレスをレジスタ・ファイル１４に発行する。パイプライン処理のため、同じ命令サイクル内で発行されるオペレーションコード、オペランド・レジスタ・アドレス、および結果レジスタ・アドレスは、異なる命令に属することができる。
【００１５】
１命令サイクル内では、機能ユニット・グループ１２が、レジスタ・ファイル１４から受け取った１つまたは複数のオペランドを使用して、命令発行ユニット１０からのオペレーションコードによって識別されるコマンドを実行する。
【００１６】
図２に、機能ユニット・グループ１２をより詳細に示す。グループ１２は、複数の機能ユニット２０ａ、ｂ（わかりやすいように２つだけ示されているが、もっと多く存在してもよい）を含む。グループ１２のオペランド入力２２ａ、ｂが、機能ユニット２０ａ、ｂのオペランド入力に結合されている。機能ユニット２０ａ、ｂの結果出力が、出力マルチプレクサ２６を介してグループ１２の結果出力に結合されている。オペレーションコード入力２４が、機能ユニット２０ａ、ｂのオペレーションコード入力および出力マルチプレクサ２６に結合されている（好ましくは、オペレーションコード２４が、機能ユニット２０ａ、ｂおよび出力マルチプレクサ２６にプリデコーダを介して結合されるが、これはわかりやすくするために示されていない）。
【００１７】
グループ１２は、制御ユニット２８および入力マルチプレクサ２９も含んでいる。入力マルチプレクサ２９は、そのグループのオペランド入力２２ａに結合されている第１の入力と、第２機能ユニット２０ｂのオペランド入力に結合されている出力とを有する。入力マルチプレクサ２９の第２の入力が、第１機能ユニット２０ａの結果出力に結合されている。制御ユニット２８が、オペレーションコード入力２４に結合されており、入力マルチプレクサ２９の選択入力に結合されている出力を有する。
【００１８】
動作においては、受け取られた第１タイプのオペレーションコードがそれぞれ、オペレーションコードを実行する機能ユニット２０ａ、ｂのどちらか１つを識別する。この第１タイプのオペレーションコードの場合、制御ユニット２８が、入力マルチプレクサ２９にオペランド入力２２ｂからのオペランドを渡させる。識別された機能ユニット２０ａ、ｂが、そのオペランド入力に適用されるオペランドを用いて、オペレーションコードによって識別される処理演算（たとえばＡＤＤ、または乗算）を実行する。識別された機能ユニット２０ａ、ｂが、結果を出力する。出力マルチプレクサ２６は、識別された機能ユニット２０ａ、ｂからの結果を、機能ユニット・グループ１２の結果出力に渡す。
【００１９】
図３ａに、機能ユニット２０ａ、ｂによる演算実行のタイミングの諸側面を示す。最上部において、トレース３０は、連続した命令サイクルを示す。各命令サイクルは、持続時間Ｔ１だけ続く。最上行の下には、機能ユニット２０ａ、ｂが実行中に結果を生成するのに必要とされる最小期間３２、３４が示されている。期間３２、３４は、オペレーションコードによって選択される演算の種類と、演算を実行する機能ユニット２０ａ、ｂと、演算において使用されるオペランド・データとに依存し得る。ただし、結果は常に、命令サイクルの終了の前に利用可能になる、すなわちこれらの期間の持続時間はＴ１よりも短くなる。図３ａは、１つの機能ユニットでの実行に必要な期間だけを示していることに留意されたい。実際には、演算はパイプライン処理されてもよく、したがって、各命令の処理は、命令フェッチ段階、オペランド・フェッチ段階、実行段階、および結果書込段階を伴っており、中間結果をラッチした後に、必要であれば、連続した命令サイクルで前記種々の段階が実行される。期間３２、３４は、実行段階にのみ関係している。
【００２０】
オペレーションコードは、機能ユニット２０ａ、ｂのカスケード演算をもたらす第２タイプのオペレーションコードも含んでいる。第２タイプのオペレーションコードがオペランド入力２４に適用されたとき、制御ユニットは、入力マルチプレクサ２９に機能ユニットの第１ユニット２０ａからの結果を機能ユニットの第２ユニット２０ｂのオペランド入力に渡させる。出力マルチプレクサ２６は、機能ユニットの第２ユニット２０ｂからの結果を機能ユニット・グループ１２の結果出力に渡す。
【００２１】
第２タイプのオペレーションコードの例として、２乗とオペランドの和の計算用のオペレーションコードがある。
結果＝Ａ＊Ａ＋Ｂ
この例では、グループ１２の第１機能ユニット２０ａは乗算器であり、グループ１２の第２機能ユニット２０ｂは加算器である。この演算は、ＡおよびＢをオペランドとして含むレジスタのレジスタ・アドレスを有する。このオペレーションコードに応答して、グループ１２の第１機能ユニット２０ａは、積Ａ＊Ａを生成する。同じオペレーションコードに応答して、制御ユニット２８は、マルチプレクサ２９に、積Ａ＊Ａをオペランドとして、グループ１２の第２機能ユニット２０ｂに渡させる。さらに同じオペレーションコードに応答して、グループ１２の第２機能ユニット２０ｂは、受け取った積Ａ＊ＡとオペランドＢの合計であるＡ＊Ａ＋Ｂを生成する。このオペレーションコードは単なる例に過ぎないことを理解されたい。他の演算（たとえば、Ａ＊Ａ−Ｂ、Ａ／（Ａ＋Ｂ）など、Ａ＊Ｂ＋Ａ）用のオペレーションコードが提供されてもよく、このようなオペレーションコードが１つでも複数でもサポートされ得る。
【００２２】
コマンド内に３つ以上のオペランド・レジスタ・アドレスを含めることにより、または同じレジスタ内に２つ以上のオペランドを含めることにより、より多くのオペランドが利用可能な場合、より複雑な演算を実行することができる。たとえば、オペランドがそれぞれ複素数の実部および虚部を表す、数の対（ＲｅＡ、ＩｍＡ）および（ＲｅＢ、ＩｍＢ）を含む場合、組合せ演算は、乗算器機能ユニットに、それぞれ実部（ＲｅＡ＊ＲｅＢ）の積および虚部（ＩｍＡ＊ＩｍＢ）の積を生成するよう指令し、加算器にその積を合計するよう指令する。この場合、グループ１２は好ましくは、少なくとも２つの乗算器および１つの加算器を機能ユニットとして含み、また、加算器がオペランドを、オペランド入力２２ａ、ｂから受け取るか、それとも乗算器から受け取るかを選択する制御ユニット２８の制御下にあるマルチプレクサも含む。
【００２３】
図３ｂは、第２タイプのオペレーションコードによって選択される演算の実行の実行段階におけるタイミングの諸側面を示している。この場合、命令サイクルの持続時間がＴ２である。この演算の結果が利用可能になるまでに必要な期間３６の持続時間は、機能ユニットの第１ユニット２０ａによって必要とされる第１の期間３６ａの持続時間と、機能ユニットの第１ユニット２０ａの結果を機能ユニットの第２ユニット２０ｂのオペランド入力に渡す必要のある第２の期間３６ｂの持続時間と、機能ユニットの第２ユニット２０ｂによって必要とされる第３の期間３６ｃの持続時間との和である（より正確には、第２の期間３６ｂの持続時間の代わりに、機能ユニットの第１ユニット２０ａの出力からの結果を機能ユニットの第２ユニット２０ｂのオペランド入力に渡すのに必要とされる期間の持続時間から、外部のオペランドをこのオペランド入力に渡すのに必要とされる期間の持続時間を引いた差を考慮すべきである。この差は負になることもある）。
【００２４】
第２タイプの演算の結果が利用可能になるまでの期間３６の全持続時間は、その演算の構成要素である諸演算のために機能ユニット２０ａ、ｂによって必要とされる期間３６ａ、３６ｃの持続時間よりも長い。それでもやはり、この総持続時間は、１命令サイクルの持続時間Ｔ２内に収まるべきである。
【００２５】
クロック速度選択回路１８は、クロック速度、すなわち命令サイクルの持続時間Ｔ１またはＴ２を選択するための信号を、クロック回路１６に供給する。好ましくは、クロック速度は、必要な期間内に必要なタスクを実行する能力を損なわずに、できるだけ低く（命令サイクル持続時間ができるだけ長く）設定される。クロック速度を下げることにより、この装置の電力消費が低減される。
【００２６】
選択可能なクロック速度には、第２タイプの命令の持続実行が命令サイクル（持続時間Ｔ２）内に収まる遅いクロック速度と、第２タイプの命令の持続実行が命令サイクル（持続時間Ｔ１）内に収まらない速いクロック速度が含まれる。クロック速度が遅いクロック速度に設定された場合、タスクは、第２タイプのオペレーションコードをもつ命令を使用して実行される。クロック速度が速いクロック速度に設定された場合、タスクは、たとえば第２タイプのオペレーションコードをもつ各命令を第１タイプのオペレーションコードをもつ２つ以上の命令で置き換えることによって、第２タイプのオペレーションコードをもつ命令を使用せずに実行される。遅いクロック速度で第２タイプのオペレーションコードをもつ命令を使用することにより、タスクを実行するのに必要とされる命令サイクル数が低減される。それによって、実行速度が速くなる。
【００２７】
タスクを実行する際に用いられる命令を適用するためのどんな方法も使用することができる。一実施形態では、命令メモリ１７が、同じタスクを実行するための少なくとも２つのプログラムの命令を記憶し、その際に、あるものは第１タイプのオペレーションコードをもつ命令を使用するが、別のものはそのような命令を使用しない。この実施形態では、クロック速度選択回路１８は、クロック速度に加えて、たとえばタスクの実行開始時にプログラム・カウンタ１９の初期値を設定することにより、該当するプログラムも選択する。
【００２８】
ただし、タスクの実行中、第２タイプのオペレーションコードの使用を回避するために、他の多くの方法を使用することができる。たとえば、設定されているクロック速度に応じて、第２タイプのオペレーションコードをもつプログラム、またはそのタイプのオペレーションコードをもたないプログラムのどちらかにジャンプする命令を実行することができる。同様に、適切な命令を選択するために、選択されたクロック速度に応じて、命令アドレスの物理メモリ・アドレスへの変換を行うことができる。これらの場合には、タスクを実行するプログラム全体の二者択一のバージョン（第２タイプのオペレーションコードがあるものおよびないもの）を提供する必要はない。代わりに、そのような命令を含むプログラムのセクションについてのみ、二者択一のバージョンを提供することができる（この場合、第２タイプのオペレーションコードをもつ命令は、頻繁に実行されるセクションにのみ含まれることが好ましい）。速いクロック速度が選択されている場合、二者択一の命令として、発行ユニットを、第２タイプのオペレーションコードをもつ命令をそのタイプのオペレーションコードをもたない複数の命令に、その場で変換するように構成することもできる。
【００２９】
第２タイプのオペレーションコードは、頻繁に実行される命令をサポートすることが好ましい。
【００３０】
本発明は、クロック速度選択回路１８をもつ一実施形態によって説明されているが、クロック速度を、他の方法で、たとえばプログラム・カウンタ値の一部の制御下で、命令がそこから実行されているプログラムのセグメントに応じてクロック速度が設定されるように、選択することもできることが理解されよう。あるいは、クロック速度を、プログラムからの命令の制御下で、選択することもできることが理解されよう。
【００３１】
図２は、いくつかの機能ユニット２０ａ、ｂが、第２タイプの同じオペレーションコードに応答する一実施形態を示す。さらに、制御ユニット２８がこのオペレーションコードに応答し、出力マルチプレクサ２６が、応答する機能ユニット２０ａ、ｂのどれか１つのみからの結果を出力する。ただし、オペレーションコードに対応してどの機能ユニットをアクティブにすべきかを検出し、それらの機能ユニット２０ａ、ｂをアクティブにする（プリ）デコーダ（図示せず）を使用できることが理解されよう。この場合、（プリ）デコーダは、オペレーションコードが第１タイプである場合、機能ユニット２０ａ、ｂを命令サイクルあたり１つアクティブにし、オペレーションコードが第２タイプである場合、機能ユニットの組合せをアクティブにする。図に示すように、第２タイプのオペレーションコードに応答してアクティブにされた各機能ユニット２０ａ、ｂは、第１タイプのオペレーションコードに対して個別に応答することもできる。したがって、命令ユニット２０ａ、ｂは、効率的に再利用される。ただし、一代替実施形態では、カスケード接続された、第２タイプのオペレーションコードを実行するために使用される機能ユニット２０ａ、ｂの一部分が、第１タイプのどんなオペレーションコードにも個別に応答しないタイプであってよい。したがって、機能ユニット・グループ１２に、あるオーバヘッドを導入する必要がある。
【００３２】
入力マルチプレクサ２９は１つだけが例として示され、機能ユニット２０ａ、ｂは２つだけ示されているが、実際には、機能ユニット２０ａ、ｂの出力間、またはグループ１２における追加の機能ユニット（図示せず）間に、より複雑な接続網を備えることができることが理解されよう。
【００３３】
図４は、本発明のさらなる一態様を実装した、図１に示す処理装置で使用される機能ユニットの２つのグループ１２、４０を示す。各グループ１２、４０は、命令発行ユニット（図示せず）からの発行スロットにそれぞれ結合され、かつレジスタ・ファイル（図示せず）の読取りおよび書込みポートに結合された演算選択入力２４、４８を有する。したがって、この装置は、異なるグループ１２、４０について実質的に独立に選択可能な複数のコマンドを含む、ＶＬＩＷプロセッサ（超長命令語プロセッサ）である。グループ１２の第１グループが図２に示すとおりに配置されている。ただし、さらなるマルチプレクサ４４が追加されており、その第１の入力に、グループ１２の第２のオペランド入力２２ｂが結合されている。さらなるマルチプレクサ４４の出力が、第２機能ユニット２０ｂのオペランド入力に結合されている。さらなるマルチプレクサ４４は、制御ユニット２８に結合された制御入力を有する。
【００３４】
機能ユニット４０の第２グループは、いくつかの機能ユニット４０ａ、４０ｂを含んでいる。第２グループ４０の機能ユニット４０ｂの１つの出力が、バイパス接続４２を介して、さらなるマルチプレクサ４４の第２の入力に結合されている。
【００３５】
動作においては、制御装置２８は、組合せ命令のオペレーションコードが機能ユニット・グループ１２に発行されるとき、そのことを認識する。その場合、制御ユニット２８は、マルチプレクサ２９、４４に、グループ１２の第１機能ユニット２０ａからおよびさらなるグループ４０の機能ユニット４０ｂからのオペランドを、グループ１２の第２機能ユニット２０ｂのオペランド入力に渡させる。グループ１２の第１および第２の機能ユニット２０ａ、ｂはどちらも組合せ命令に応答し、第１機能ユニット２０ａはグループ１２のオペランド入力２２ａ、ｂからオペランドを受け取り、マルチプレクサ２６は、第２機能ユニット２０ｂからの結果をグループ１２用に提供されているレジスタ・ファイルの書込みポートに渡す。
【００３６】
命令メモリ１７に記憶されているプログラムは、グループ１２用のコマンドとグループ４０用のコマンドを含む命令を含んでいる。この命令は、第１グループ１２用の組合せ命令を含んでおり、第２グループ４０用のコマンドは、第２グループの第２機能ユニット４０ｂをアクティブにするオペレーションコードを含んでいる。したがって、この命令に応答して、第１グループ１２の第１機能ユニット２０ａと第２グループ４０の第２機能ユニット４０ｂはどちらも結果を生成し、その結果がグループ１２の第２機能ユニット２０ｂでオペランドとして使用される。第２グループ４０の第２機能ユニット４０ｂからの結果は、グループ１２と４０の間でバイパス接続４２を介して渡される。マルチプレクサ２９、４４は、その結果をオペランドとして第１グループ１２の第２機能ユニット２０ｂに渡す。
【００３７】
一例として、２対のオペランドの積が加算される乗算−加算演算に、このタイプの命令を使用することができる。
結果＝Ａ＊Ｂ＋Ｃ＊Ｄ
この例では、第１グループ１２の第１機能ユニット２０ａが乗算器であり、第２グループ４０の第２機能ユニット４０ｂが乗算器であり、また第１グループ１２の第２機能ユニット２０ｂが加算器である。この命令は、第１グループ１２に発行される乗算−加算コマンド（組合せコマンド）、および第２グループ４０に発行される乗算コマンドを含んでいる。乗算−加算コマンドは、ＡおよびＢをオペランドとして含むレジスタのレジスタ・アドレスを有し、乗算コマンドは、ＣおよびＤをオペランドとして含むレジスタのアドレスを有する。この命令に応答して、第１グループ１２の第１機能ユニット２０ａおよび第２グループ４０の第２機能ユニット４０ｂが、それぞれ積Ａ＊ＢおよびＣ＊Ｄを生成する。同じ乗算−加算命令に応答して、制御ユニット２８は、マルチプレクサ２９、４４に、これらの積をオペランドとして第１グループ１２の第２機能ユニット２０ｂに渡させる。さらに同じ乗算−加算命令に応答して、第１グループ１２の第２機能ユニット２０ｂが、受け取った積Ａ＊ＢおよびＣ＊Ｄの和Ａ＊Ｂ＋Ｃ＊Ｄを生成する。
【００３８】
このタイプの乗算と加算の組合せは、たとえば複素数の乗算で頻繁に発生する命令組合せであり、したがって、この命令により、このタイプの演算のために発行する必要のある命令数の大幅な節減が実現される。ただし、本発明はこの命令に限定されないことを理解されたい。たとえば、類似の技法を乗算と減算に適用してＡ＊Ｂ−Ｃ＊Ｄを計算することも、あるいはあるプログラムで発生する演算の他のどんな組合せに適用することもできる。この装置は、ただ１つの組合せ命令用のオペレーションコードをサポートすることも、あるいは複数の組合せ命令用のオペレーションコードをサポートすることもできる。
【００３９】
プログラムを図４の実施形態の機能ユニットを用いて実行する場合、命令サイクル速度が速すぎて、連続した第２グループ４０の第２機能ユニット４０ｂおよび第１グループ１２の第２機能ユニット２０ｂの遅延に対応できないときは、そのプログラムを、図２のコンテキストで論じたように、組合せ命令を排除するように適合させることができることに留意されたい。この組合せ命令により、第１グループ１２の第２機能ユニット２０ｂ用のオペランドとして使用するために、（第２グループ４０の第２機能ユニット４０ｂの代わりに）異なる機能ユニットからの結果を選択することができる。これらの異なる機能ユニットは、１つのグループ４０の一部でも、異なる複数のグループの一部でもよい。第２グループ４０は、本発明から逸脱せずに、ただ１つの機能ユニット（第２機能ユニット４０ｂ）を含むことができる。
【００４０】
図５は、この装置で使用される代替機能ユニット・グループ１２を示す。これまでに示した実施形態においては、組合せ演算が１つの命令サイクル内で実行される。図５の実施形態では、複数の命令サイクルが使用される。機能ユニット・グループ１２は、制御ユニット２８に結合された入力と、マルチプレクサ２９、４４および第２機能ユニット２０ｂの制御入力に結合された出力とをもつ制御レジスタ５０を含んでいる。マルチプレクサ２９、４４の第１のデータ入力がオペランド入力２２ａ、ｂに接続されている。結果レジスタ５２、５４は、マルチプレクサ２９、４４の第２のデータ入力に結合された出力を備えている。結果レジスタ５２、５４の入力は、グループ１２の１つまたは複数の機能ユニット（たとえば２０ａ）の結果出力に、かつ／または他のグループ（図示せず）の１つまたは複数の機能ユニットの結果出力に結合されている。見やすいように、これらの入力の接続は示されていない。
【００４１】
動作においては、制御ユニット２８は、制御レジスタ５０に、マルチプレクサ２９、４４および第１グループ１２の第２機能ユニット２０ｂを制御するための情報をロードさせることによって、第１の命令サイクル内で実行すべく発行された組合せ命令に応答する。この情報により、第１の命令サイクルに続く第２の命令サイクルで、マルチプレクサ２９、４４および第１グループ１２の第２機能ユニット２０ｂが制御される。第２の命令サイクルでは、結果レジスタ５２、５４にラッチされた結果が、オペランドとしてグループ１２の第２機能ユニット２０ｂに渡され、この第２機能ユニット２０ｂは、第２の命令サイクルにおける組合せ命令に示されているコマンドのその部分を実行するための制御信号を受け取る。それに応答して、第２の機能ユニット２０ｂは、第２の命令サイクルの終わりに結果を生成する。
【００４２】
このようにして、第２の命令サイクルで、第２機能ユニット２０ｂによる組合せ命令の一部を実行するのと並列して、グループ１２で次の命令を実行することができる。たとえば、第１の命令サイクルでＡ＊Ｂ−Ｃ＊Ｄを計算する第１の命令の実行を開始し、次の命令サイクルでＡ＊Ｄ＋Ｂ＊Ｃを計算する第２の命令を開始することもできる。したがって、２つの数Ａ＋ｉＣおよびＢ＋ｉＤの実部と虚部が、２つの命令を用いて計算される。
【００４３】
もちろん、組合せ命令の結果と次の命令の結果の間で矛盾が発生するのを回避すべきである。これは、様々な方法で実現することができる。一実施形態では、次の命令が、第２の命令サイクルにおいて結果を生成しない、命令のサブセットから選択される（たとえば、別の組合せ命令、あるいはＮＯＰ命令）。この実施形態では、制御レジスタ５０はまた、第２機能ユニット２０ｂからの結果を渡すようにマルチプレクサ２６を制御する。もう１つの実施形態では、次の命令に応答する機能ユニットからの結果と並列に、バイパス・レジスタ（図示せず）を使用して第２機能ユニット２０ｂの結果を渡すことができる。
【００４４】
図５の実施形態では、命令サイクル速度が速すぎて、１つの命令サイクルにおける第１および第２の機能ユニット２０ａ、ｂの遅延に対応できないときは、プログラムを適合させる必要はないことに留意されたい。
【００４５】
図５は、マルチプレクサ２９、４４の前に挿入された結果レジスタ５２、５４を示しているが、ウェーブ・パイプラインが使用される場合、これらのレジスタ５２、５４を省略することもできる。この場合は、機能ユニット２０ａ、ｂ内の伝播遅延を利用して、第２機能ユニット２０ｂおよび次の命令を実行する機能ユニットの出力に、組合せ命令および次の命令からの結果が同時に存在できるようにする。他の一実施形態では、第１グループ１２の第２機能ユニット２０ｂによって使用される結果を生成する特定の機能ユニットの前に、レジスタを設けることができる。これらのレジスタは、これらの機能ユニットのオペランドをラッチすることによって組合せ命令に応答し、これらのオペランドが、第１の命令サイクル内に入力２２ａ、ｂから直接適用された後、後続の命令サイクル内でもその特定の機能ユニットに供給されるように構成される。
【００４６】
本発明は、同じコマンドに応答する連続した２つの機能ユニットの連続実行を伴う組合せ命令を用いて説明されてきたが、連続した非常に多くの数の機能ユニットを伴う組合せ命令を提供することもできることが理解されよう。
【図面の簡単な説明】
【００４７】
【図１】処理装置を示す図である。
【図２】機能ユニット・グループを示す図である。
【図３】タイミングの諸態様を示す図である。
【図４】複数の機能ユニット・グループを示す図である。
【図５】さらなる機能ユニット・グループを示す図である。
【図１】
2007519052.tif 000003
【図２】
2007519052.tif 000004
2007519052.tif 000005
【図４】
2007519052.tif 000006
【図５】
2007519052.tif 000007
【国際調査報告】
2007519052.tif 000008
2007519052.tif 000009
2007519052.tif 000010