(57)【要約】命令の符号化効率の差は、即値を必要とせずまたは小さい即値を必要とする演算ではなく、ある種の演算が非常に大きい即値をオペランドとして必要とする場合に生じる。本発明は、データを処理し、大きい即値データを必要とする命令の使用を可能にさせ、同時に命令の効率的な符号化および解読を維持する処理装置、コンパイラ、並びに、方法を説明する。処理装置は複数の発行スロット（ＵＣ０，ＵＣ１，ＵＣ２，ＵＣ３）を具備し、各発行スロットは複数の機能ユニット（ＦＵ２０，ＦＵ２１，ＦＵ２２）を具備する。処理装置は、並列に実行される命令のセットから生成された制御信号に基づいて、データを処理するように構成される。処理装置は、専用命令（ＩＭＭ）に応じて即値（ＩＭＶ１）をロードするように構成された専用発行スロット（ＵＣ４）をさらに具備する。即値（ＩＭＶ１）は専用レジスタファイル（ＲＦ２）に記憶され、この値を必要とする発行スロットは専用レジスタファイル（ＲＦ２）からその値を取り出すことができる。
2006500673.tif 000002
【特許請求の範囲】
【請求項１】
並列に実行される命令のセットから生成された制御信号に基づいてデータを処理する処理装置であって、
複数の発行スロットであって、各発行スロットが複数の機能ユニットを具備し、前記複数の発行スロットが前記命令のセットに対応した制御語のセットによって制御される、複数の発行スロットを備え、
さらに、即値を含む専用命令に応じて即値をロードするように構成された専用発行スロットを具備する、処理装置。
【請求項２】
前記専用発行スロットが、前記専用命令を実行するためだけに構成された単一の機能ユニットを含む、請求項１に記載の装置。
【請求項３】
前記即値を記憶する専用レジスタファイルをさらに具備し、
前記専用レジスタファイルが前記専用発行スロットによってアクセス可能である、
請求項１に記載の装置。
【請求項４】
当該処理装置がＶＬＩＷプロセッサであり、
前記命令のセットがＶＬＩＷ命令にグループ化される、
請求項１に記載の装置。
【請求項５】
前記ＶＬＩＷ命令が、ＮＯＰ演算を符号化するための専用ビットを含む圧縮ＶＬＩＷ命令である、請求項４に記載の装置。
【請求項６】
前記複数の発行スロットと関連付けられたレジスタファイルをさらに具備する、請求項１に記載の装置。
【請求項７】
前記複数の発行スロットと前記レジスタファイルを結合するコネクションネットワークＣＮをさらに具備する、請求項６に記載の装置。
【請求項８】
入力データをレジスタファイルに記憶するステップと、
命令のセットから生成された制御語のセットによって制御される複数の発行スロットであって各々の発行スロットが複数の機能ユニットを具備する複数の発行スロットを使用して、並列に実行される前記命令のセットから生成された制御信号に基づいて、前記レジスタファイルから取り出されたデータを処理するステップと、
即値を含む専用命令に応じて前記即値を専用発行スロットにロードするステップをさらに含む、データ処理方法。
【請求項９】
請求項１のプリアンブル部分に記載された処理装置によって実行される複数の命令を具備する命令セットであって、
即値を含む専用命令をさらに具備し、
前記専用命令は、専用発行スロットによって実行されるとき、前記専用発行スロットに前記即値をロードさせる、
命令セット。
【請求項１０】
コンピュータシステムに請求項８に記載の方法のステップを実行するよう指示するコンピュータプログラムコード手段を含む、コンピュータプログラム。
【請求項１１】
請求項１のプリアンブル部分に記載された処理装置により実行されるように構成された命令のセットのシーケンスを生成するコンパイラプログラムであって、
前記命令のセットのシーケンスが即値を有する専用命令をさらに含み、
前記専用命令は、専用発行スロットによって実行されるとき、前記専用発行スロットに前記即値をロードさせる、
コンパイラプログラム。
【請求項１２】
請求項１のプリアンブル部分に記載された処理装置により実行されるように構成された命令のセットのシーケンスを含む情報担体であって、
前記命令のセットのシーケンスが即値を有する専用命令をさらに含み、
前記専用命令は、専用発行スロットによって実行されるとき、前記専用発行スロットに前記即値をロードさせる、
情報担体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列に実行される命令のセットから生成された制御信号に基づいてデータを処理する処理装置に関し、この処理装置は複数の発行スロットを具備し、各発行スロットが複数の機能ユニットを具備し、複数の発行スロットが命令のセットに対応した制御語のセットによって制御される。
【０００２】
本発明はさらにデータを処理する方法に関し、上記方法は、
入力データをレジスタファイルに記憶するステップと、
命令のセットから生成された制御語のセットによって制御される複数の発行スロットを使用し、並列に実行される命令のセットから生成された制御信号に基づいて、レジスタファイルから取り出されたデータを処理するステップと、
を含み、
各発行スロットが複数の機能ユニットを具備する。
【０００３】
本発明はさらに上記処理装置による実行のための複数の命令を含む命令セットに関する。
【０００４】
本発明はさらにコンピュータシステムに上記方法のステップを実行するよう命令するコンピュータプログラムコード手段を含むコンピュータプログラムに関する。
【０００５】
本発明はさらに上記処理装置による実行のために構成された命令のセットのシーケンスを生成するコンパイラプログラムプロダクトに関係する。
【０００６】
本発明はさらに上記処理装置による実行のために構成された命令のセットのシーケンスを含む情報担体に関係する。
【背景技術】
【０００７】
コンピュータアーキテクチャは制御語のセットによって制御される固定データパスで構成される。各制御語はデータパスの一部分を制御し、これらの部分は、レジスタアドレス、および、演算論理装置（ＡＬＵ）もしくはその他の機能ユニットの演算コードを含む。命令のセットのそれぞれは、一般にバイナリフォーマットの命令を対応した制御語に翻訳する命令デコーダ、または、マイクロ記憶装置、すなわち、制御語をそのまま格納するメモリを用いて、新しい制御語のセットを生成する。典型的に、制御語は、演算コード、２個のオペレンドレジスタインデックス、および、結果レジスタインデックスを含むＲＩＳＣのような演算を表現する。オペランドレジスタインデックスおよび結果レジスタインデックスはレジスタフィル内のレジスタを参照する。
【０００８】
超長命令語（ＶＬＩＷ）プロセッサの場合、多数の命令が一つの長い命令、いわゆるＶＬＩＷ命令に詰め込まれる。ＶＬＩＷプロセッサは、これらの多数の命令を並列に実行するため多数の独立した機能ユニットを使用する。プロセッサは、プログラムで命令レベルの並列性を利用することを可能にさせ、したがって、２個以上の命令を同時に実行する。ソフトウェアプログラムがＶＬＩＷプロセッサ上で動くために、ソフトウェアプログラムはＶＬＩＷ命令のセットに翻訳されるべきである。コンパイラは並列性を最適化することによりプログラムを実行するために要する時間を最小限に抑えようとする。コンパイラは、単一のＶＬＩＷ命令に割り当たられた複数の命令を並列に実行可能であるという制約、並びに、データ依存性制約の下で、命令をＶＬＩＷ命令に統合する。命令の解読は、データ固定型ＶＬＩＷプロセッサおよび時間固定型ＶＬＩＷプロセッサのそれぞれのための２種類の方式で行われる。データ固定型ＶＬＩＷプロセッサの場合、所定のデータ項目について実行されるべき演算の所定のパイプラインに関係したすべての情報が単一のＶＬＩＷ命令に符号化される。時間固定型ＶＬＩＷプロセッサの場合、所定のデータ項目について実行されるべき演算のパイプラインに関係した情報が種々のＶＬＩＷ命令中の多数の命令に分散されるので、プログラム中にプロセッサの上記パイプラインが現れる。
【０００９】
実際的なアプリケーションにおいて、機能ユニットのすべてが一緒に動作中になることは稀である。したがって、一部のＶＬＩＷプロセッサでは、機能ユニットのすべてに対して同時に必要となる命令よりも少ない命令が各ＶＬＩＷ命令に与えられる。各命令は、たとえば、マルチプレクサを使用して、動作状態であるべき選択された機能ユニットに向けられる。このようにして、性能を殆ど犠牲にすることなく、命令メモリサイズを節約することが可能である。このアーキテクチャでは、命令は異なるクロックサイクルで異なる機能ユニットへ向けられる。対応した制御語はＶＬＩＷ発行レジスタのそれぞれの発行スロットへ発行される。各発行スロットには機能ユニットのグループが関連付けられる。特定の制御語は、特定の発行スロットと関連付けられたグループに含まれる機能ユニットのうちの特定の一つに向けられる。
【００１０】
ＶＬＩＷ命令中の並列命令の符号化はコードサイズの深刻な増加を招く。大きなコードサイズは、必要なメモリサイズ、並びに、必要なメモリ帯域幅の両方の点でプログラムメモリのコストを増加させる。最新のＶＬＩＷプロセッサでは、コードサイズを縮小するため種々の手段が講じられる。一つの重要な例は、データ固定型ＶＬＩＷプロセッサにおけるノーオペレーション（ＮＯＰ）演算のコンパクト表現であり、すなわち、ＮＯＰ演算は、ＶＬＩＷ命令の前方に添付された特殊なヘッダ内の単一ビットによって符号化され、これにより、圧縮ＶＬＩＷ命令が得られる。
【００１１】
命令ビットがそれでもなおＶＬＩＷ命令の各命令で無駄に使用される可能性があるのは、一部の命令が他の命令よりもコンパクトな形で符号化できるからである。命令の符号化効率の差が生じるのは、たとえば、ある種の演算がオペランドとして非常に大きい即値を必要とするのに対して、他の演算が即値を必要としないか、もしくは、小さい即値を必要とするからである。非常に大きい即値を必要とする命令は、一般的にレジスタ値の初期化のため使用される。特に広いデータパス幅、典型的に１６ビットよりも広いデータパス幅を備えたプロセッサでは、単一命令を使用してレジスタを初期化することは非常にコストがかかる可能性がある。即値を符号化するだけでも既にデータパス幅と同数のビットが必要であり、演算コードおよびレジスタインデックスを符号化するための余分なビットが同様に必要である。同じ発行スロットに対して様々な命令を符号化する必要があり、これらの命令が必要とするビット数が少ない場合には、非常に非効率的な命令符号化がこの特定の発行スロットのために行われる。これは、たとえば、命令幅の変化に伴って解読プロセスの効率が徐々に低下するため、固定制御語幅のＶＬＩＷアーキテクチャの事例に相当する。米国特許第５，７４５，７２２号は、即値データを含むプログラムを実行する装置と、装置が実行する命令を生成するプログラム変換方法とを開示する。このプログラム変換方法は、プログラムを希望のプログラムフォーマットに変換する時に即値データを符号化するため使用されるので、命令コードのサイズを縮小する。このプログラム変換方法は主としてコンパイラによって使用される。結果として生じるプログラムを実行するとき、即値データを有する命令を含む命令は順番にフェッチされ、解読され、実行部はフェッチされた命令を実行する。命令コードが即値データを含むことが命令デコーダによって検出されたとき、即値データはデータデコーダへ送られる。即値データが符号化されたとき、データデコーダは所定のルールに従ってデータを解読し、これにより、解読された即値データを生成する。解読された即値データは、次に、実行ユニットへ送られ、処理される。供給された即値データが符号化されていないとき、データデコーダはそのままのデータを実行ユニットへ送る。
【００１２】
従来技術の処理装置の欠点は、命令の解読中、符号化された即値データを解読するため付加的なステップが必要になることである。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、命令の効率的な符号化と解読を維持すると共に、大きい即値をオペランドとして使用可能にさせる処理装置を提供することである。
【課題を解決するための手段】
【００１４】
上記目的は、上記の種類の処理装置であって、即値を含む専用命令に応じて即値をロードするように構成された専用発行スロットをさらに具備することを特徴とする処理装置によって実現される。本発明による処理装置では、大きい即値は、複数の発行スロットへ発行される命令内に符号化する必要がなく、専用発行スロットへ発行される専用命令内に符号化することができる。その結果として、対応した命令の幅が減少し、これはその特定の発行スロット用の命令のより効率的な解読を可能にさせる。大きい即値は一般的にレジスタ値を初期化するためだけに使用されるので、効率の著しい増加が達成される。
【００１５】
本発明による処理装置の一実施形態は、専用発行スロットが、専用命令を実行するためだけに構成された単一の機能ユニットを具備する。その結果として、１タイプだけの命令を専用発行スロットのため符号化すればよく、すなわち、演算コードを符号化するためのビットが不要であり、専用命令の幅を縮小する。
【００１６】
本発明による処理装置の一実施形態は、上記即値を記憶する専用レジスタファイルをさらに具備し、専用レジスタファイルが専用発行スロットによってアクセス可能であることを特徴とする。したがって、結果データの宛先を符号化するために必要な専用命令内のビット数が削減される。
【００１７】
本発明による装置の一実施形態は、上記装置がＶＬＩＷプロセッサであり、上記命令のセットがＶＬＩＷ命令にグループ化される。ＶＬＩＷプロセッサは、多数の命令を並列に実行することを可能にさせ、全体的な演算速度を増加させ、その一方で比較的簡単なハードウェアを有する。
【００１８】
本発明によれば、データを処理する方法は、即値を含む専用命令に応じて即値を専用発行スロットにロードするステップをさらに有することを特徴とする。この方法は、効率的な符号化プロセスおよび解読プロセスを維持すると共に、大きい即値を必要とする命令の使用を可能にさせる。
【００１９】
本発明によれば、命令セットは即値を含む専用命令をさらに有し、その専用命令が、専用発行スロットによって実行されるとき、専用発行スロットに即値をロードさせることを特徴とする。本発明による命令セットは、命令の符号化および解読の効率を犠牲にすることなく、大きい即値を使用する演算の使用を可能にさせる。
【００２０】
本発明によれば、コンパイラプログラムプロダクトは、命令のセットのシーケンスが即値を有する専用命令をさらに含み、その専用命令が、専用発行スロットによって実行されるとき、専用発行スロットに即値をロードさせることを特徴とする。本発明によるコンパイラは、効率的に符号化された命令を生成し、大きい即値の使用を可能にさせ、同時に、その命令に対する効率的な解読プロセスを維持する。
【００２１】
本発明の好ましい実施形態は従属請求項に記載されている。本発明によるデータ処理方法を実施するコンピュータプログラムは請求項１０に記載されている。本発明によるデータを処理する処理装置によって実行するように構成された命令のセットのシーケンスを含む情報担体は請求項１２に記載されている。
【発明を実施するための最良の形態】
【００２２】
図１を参照すると、概略的なブロック図は、発行スロットＵＣ０、ＵＣ１、ＵＣ２およびＵＣ３を含む複数の発行スロットと、レジスタファイルセグメントＲＦ０およびＲＦ１を含むレジスタファイルと、を具備するＶＬＩＷプロセッサを示す。プロセッサは、コントローラＳＱと、レジスタファイルセグメントＲＦ０およびＲＦ１と発行スロットＵＣ０、ＵＣ１、ＵＣ２およびＵＣ３を結合するコネクションネットワークＣＮとを有する。レジスタファイルセグメントＲＦ０およびＲＦ１は、図１に示されないバスに結合され、このバスを介してレジスタファイルセグメントは入力データを受信する。発行スロットＵＣ０、ＵＣ１、ＵＣ２およびＵＣ３へ発行される命令は、２個のオペランドだけを必要とし、１個の結果だけを生成するＲＩＳＣのような演算と、３個以上のオペランドを使い及び／又は２個以上の結果を生成し得るカスタム演算とを含む。一部の命令は、オペランドデータとして小さい即値または大きい即値を必要とする。コネクションネットワークＣＮは、レジスタファイルセグメントＲＦ０およびＲＦ１と、発行スロットＵＣ０、ＵＣ１、ＵＣ２およびＵＣ３との間で入力データおよび結果データの受け渡しを可能にさせる。
【００２３】
ＶＬＩＷプロセッサは、専用発行スロットＵＣ４および専用レジスタファイルＲＦ２をさらに具備する。専用発行スロットＵＣ４は専用レジスタファイルＲＦ２に結合される。専用レジスタファイルＲＦ２はコネクションネットワークＣＮを介して複数の発行スロットＵＣ０−ＵＣ３に結合される。専用命令は発行スロットＵＣ４へ発行され、この命令は即値を含み、この即値は複数の発行スロットＵＣ０−ＵＣ３のうちの一つの発行スロットにおける命令の実行中に要求される。専用発行スロットＵＣ４は単一の機能ユニットＩＭＵを具備し、この機能ユニットは専用命令を実行する能力を備えている。この命令を実行するとき、対応した即値が専用発行スロットＵＣ４によって専用レジスタファイルＲＦ２へ送られる。この即値は、複数の発行スロットＵＣ０−ＵＣ３によって、コネクションネットワークＣＮを経由して、専用レジスタファイルＲＦ２から読み出し可能であり、その後、さらなる処理のため使用される。
【００２４】
有利な一実施形態において、専用レジスタファイルＲＦ２は単一のレジスタを具備する。その結果として、レジスタアドレスを符号化するためのビットは専用命令において必要ない。さらに、発行スロットＵＣ４だけがその専用レジスタファイルＲＦ２にデータを書き込むことが許されるので、データが書き込まれるべきレジスタファイルの選択を符号化するためのビットは専用命令において必要ない。最後に、発行スロットＵＣ４は単一の機能ユニットＩＭＵだけを具備し、１タイプの命令、すなわち、専用命令だけが発行スロットＵＣ４へ発行される。その結果として、１個の命令だけが発効スロットＵＣ４のため符号化されるべきであり、演算コードを符号化するためのビットは専用命令において必要ない。即値のローディングはオペランドを全く必要としないので、オペランドレジスタインデックスも専用命令において符号化する必要がない。最終的な結果として、即値のローディングのための専用命令は即値自体の幅に一致するビット数で符号化することが可能である。
【００２５】
一部の実施形態では、レジスタファイルセグメントＲＦ０およびＲＦ１は分散レジスタファイルであり、すなわち、限定された発行スロットの組に対して一つずつの複数のレジスタファイルが、全発行スロットＵＣ０−ＵＣ３のための一つの中央レジスタファイルの代わりに使用される。分散レジスタファイルの利点は、１レジスタファイルセグメント当たりに必要な読み出しポートおよび書き込みポートが減少し、レジスタファイル帯域幅が狭くなることである。さらに、分散レジスタファイルは、中央レジスタファイルの場合よりもプロセッサの拡張可能性を高める。
【００２６】
一部の実施態様では、コネクションネットワークＣＮは、部分的に接続されたネットワークであり、すなわち、それぞれの発行スロットＵＣ０−ＵＣ３がそれぞれのレジスタファイルセグメントＲＦ０およびＲＦ１に結合されるのではない。部分的に接続された通信ネットワークの使用は、消費電力だけでなくコードサイズを削減し、また、プロセッサの性能を向上させる。さらに、部分的に接続された通信ネットワークは、完全に接続されたコネクションネットワークよりもプロセッサの拡張可能性を向上させる。
【００２７】
図２を参照すると、概略的なブロック図は発行スロットＵＣ２の一実施形態を表す。発行スロットＵＣ２は、デコーダＤＥＣ、タイムシェイプ（ｔｉｍｅ  ｓｈａｐｅ）コントローラＴＳＣ、入力ルーティングネットワークＩＲＮ、出力ルーティングネットワークＯＲＮ、並びに、複数の機能ユニットＦＵ２０、ＦＵ２１およびＦＵ２２を具備する。デコーダＤＥＣは、各クロックサイクルで発行スロットに供給された制御語ＣＷを解読する。解読ステップの結果は、実行されるべき演算のためのオペランドデータが記憶されるレジスタファイルセグメントＲＦ０およびＲＦ１内のレジスタを指定するオペランドレジスタインデックスＯＲＩである。解読ステップのさらなる結果は、結果データが記憶されるべきレジスタファイルセグメントＲＦ０およびＲＦ１内のレジスタを指定する結果ファイルインデックスＲＦＩおよび結果レジスタインデックスＲＲＩである。デコーダＤＥＣは、カップリングＩを介してインデックスＯＲＩ、ＲＦＩおよびＲＲＩをタイムシェイプコントローラＴＳＣへ渡す。タイムシェイプコントローラＴＳＣは、演算が実行される機能ユニットの入力／出力挙動に応じてインデックスＯＲＩ、ＲＦＩおよびＲＲＩを適当な量だけ遅延させ、図１に示されるように、インデックスをコネクションネットワークＣＮへ渡す。ＶＬＩＷ命令が発行スロットＵＣ２のための命令を含むならば、デコーダＤＥＣは、カップリングＳＥＬを介して、機能ユニットＦＵ２０、Ｆ２１またはＦＵ２２のうちの一つを選択し、演算を実行する。さらに、デコーダＤＥＣは、カップリングＯＰＴを用いて、実行されるべき演算のタイプに関する情報をその機能ユニットへ渡す。入力ルーティングネットワークＩＲＮは、カップリングＩＤを介して、オペランドデータＯＰＤを機能ユニットＦＵ２０、Ｆ２１およびＦＵ２２へ渡す。機能ユニット機能ユニットＦＵ２０、Ｆ２１およびＦＵ２２は、カップリングＯＤを介してそれらの結果データを出力ルーティングネットワークＯＲＮへ渡し、次に、出力ルーティングネットワークＯＲＮは、図１に示されるように、その結果データＲＤをコネクションネットワークＣＮへ渡す。コネクションネットワークＣＮを介して、結果データＲＤはレジスタファイルセグメントＲＦ０およびＲＦ１に記憶される。命令有効ビットＩＶはデコーダＤＥＣへ渡され、ＮＯＰ演算の場合に、このビットはゼロと一致する。デコーダＤＥＣは機能ユニットの選択中にこの情報を使用し、命令有効ビットＩＶがゼロと一致するならば、結果データＲＤはその機能ユニットによって出力ルーティングネットワークＯＲＮに書き込まれることはなく、レジスタファイルＲＦ０およびＲＦ１に記憶されたデータの汚染を防止する。命令有効ビットは図４に詳しく説明される。カスタム演算を実行するため、機能ユニットＦＵ２０およびＦＵ２１は３個のオペランドデータを取り扱うことが可能であり、機能ユニットＦＵ２１およびＦＵ２２は２個の出力データを生成することが可能である。さらに、機能ユニットは大きい即値をオペランドとして使用してもよい。
【００２８】
発行スロットＵＣ０、ＵＣ１およびＵＣ３の実施形態は図示されていない。これらの発行スロットも、ＲＩＳＣのような命令またはそれよりも複雑な命令を実行し、３個以上のオペランドを要求し、および／または、２個以上の結果データを生成する能力を備えた機能ユニットの組を具備する。これらの機能ユニットもまたオペランドデータとして小さい即値または大きい即値を要求してもよい。
【００２９】
図３を参照すると、専用発行スロットＵＣ４の有利な実施形態が示される。専用発行スロットＵＣ４は、専用命令を実行する能力だけを備えた単一の機能ユニットＩＭＵと、デコーダＤＥＣ４を具備する。専用発行スロットＵＣ４へ発行された専用命令は大きい即値だけを含み、オペランドデータレジスタ、レジスタファイルインデックスおよび結果レジスタインデックスを符号化するためのビットと、オペランドコードは必要ない。対応した制御語ＣＷ４は同様に大きい即値だけを含む。制御語ＣＷ４はカップリング３０１を介してデコーダＤＥＣ４へ供給され、対応した大きい即値ＩＭＶは、カップリング３０３を介して、デコーダＤＥＣ４の出力への経路に沿ってそのまま送られる。大きい即値ＩＭＶはさらに、カップリング３０５を介して、機能ユニットＩＭＵの即値データ入力へ渡される。機能ユニットＩＭＵの内部で、大きい即値ＩＭＶは、カップリング３０７を介して、機能ユニットの結果データ出力への経路に沿ってそのまま送られる。最後に、大きい即値ＩＭＶは、カップリング３０９を介して、専用レジスタファイルＲＦ４へ渡される。命令有効ビットＩＶ４はデコーダＤＥＣ４によって受信され、カップリング３１１、３１３および３１５を介して機能ユニット選択入力へ渡される。機能ユニットＩＭＵの結果有効出力は、カップリング３１７を介して、機能ユニット選択入力へそのまま接続される。ＮＯＰ演算の場合に、命令有効ビットＩＶ４はゼロと一致する。結果有効出力ビットＲＶ４もゼロと一致し、その結果として、大きい即値ＩＭＶは専用レジスタファイルＲＦ２へ渡されない。命令有効ビットは図４に詳しく説明される。実際には、デコーダＤＥＣ４および機能ユニットＩＭＵは空である。制御語ＣＷ４に対応する大きい即値ＩＭＶは、カップリング３０１、３０３、３０５および３０７を介して、機能ユニットＩＭＵの結果データ出力への経路に沿ってそのまま送られる。命令有効ビットＩＶ４は、カップリング３１１、３１３、３１５および３１７を介して、機能ユニットＩＭＵの結果有効出力への経路に沿ってそのまま送られる。発行スロットＵＣ４は入力または出力ルーティングネットワークを必要としない。発行スロットＵＣ４はタイムシェイプコントローラも不要であり、その理由は結果ファイルインデックスと結果レジスタインデックスが必要とされないからである。
【００３０】
図４を参照すると、図１に示されたＶＬＩＷプロセッサのためのＶＬＩＷ命令の例が表されている。ＶＬＩＷ命令４０１は５個の制御語４１１〜４１９を含む。制御語４１３〜４１９には、対応した発行スロットＵＣ０、ＵＣ１、ＵＣ２およびＵＣ３のそれぞれの命令がマッピングされる。制御語４１１には、専用発行スロットＵＣ４のための専用命令がマッピングされる。制御語４１３、４１５および４１９は、発行スロットＵＣ０、ＵＣ１およびＵＣ３のそれぞれと関連付けられたＮＯＰ演算を含む。制御語４１１は専用発行スロットＵＣ４に対応した専用命令ＩＭＭを含み、制御語４１７は発行スロットＵＣ２に対応した命令ＩｎｓｔｒＣを含む。有利な一実施形態では、命令ＩＭＭのための命令フォーマットが命令４０３によって示され、この命令フォーマットは大きい即値ＩＭＶ１だけを含む。命令ＩｎｓｔｒＣに対して考えられる命令フォーマットは命令４０５によって示され、演算コードＯＣ１と、２個の結果レジスタインデックスＤ１およびＤ２と、３個のオペランドレジスタインデックスＳ１、Ｓ２およびＳ３のそれぞれに関連付けられた６個のフィールド４２１〜４３１を有する。同じ制御語４１１〜４１９にマッピングされた異なる命令のための異なる命令フォーマットを使用してもよい。命令フォーマットは、たとえば、実行されるべき命令のタイプに応じて、または、レジスタファイルからオペランドを取り出すのではなく、オペランドとしての即値の使用に応じて変わる。たとえば、命令４０５には、より多数のビットがより多くの演算もしくは小さい即値の符号化に用いられ、より少ないビットがオペランドレジスタインデックスに用いられる。制御語４１１は、専用発行スロットＵＣ４によって即値をロードする必要がない場合、ＮＯＰ演算を含んでもよい。
【００３１】
非圧縮ＶＬＩＷ命令４０１は、専用ビットの組を使用してＮＯＰ演算を符号化することにより圧縮することが可能である。圧縮命令の一実施例は、ＶＬＩＷ命令４０１の圧縮後のＶＬＩＷ命令４０７によって表され、この圧縮命令は、専用ビットの組を有するフィールド４３３と、命令ＩＭＭおよびＩｎｓｔｒＣをそれぞれ有する制御語４３５および４３７と、を含む。専用ビットの組の中の単一ビットは、ＶＬＩＷ命令４０１の制御語４１３、４１５および４１９にマッピングされたＮＯＰ演算を符号化する。ビット「０」はＮＯＰ演算を表し、フィールド４３３内のビットの位置はこのＮＯＰ演算を保持するＶＬＩＷ命令４０１内の制御語を指定する。フィールド４３３内の位置２、位置３および位置５における「０」ビットは、それぞれ、制御語４１３、４１５および４１９内のＶＬＩＷ命令４０１に存在するＮＯＰ演算を表す。フィールド４３３に存在するビット「１」は、非ＮＯＰ演算を有する命令を表し、フィールド４３３内でのこのビットの位置は、この命令がマッピングされたＶＬＩＷ命令４０１内の制御語を指定する。フィールド４３３内の位置１および位置４における「１」ビットは、それぞれ、制御語４１１および４１７内の命令ＩＭＭおよびＩｎｓｔｒＣを表す。他の実施態様では、当業者に知られているように、ＶＬＩＷ命令を圧縮する異なる方式が適用される。
【００３２】
図１に示されたＶＬＩＷプロセッサは、大きい即値を必要とする命令を実行する能力を備えている。ＶＬＩＷプロセッサ上で動かすためのソフトウェアプログラムのコンパイル中に、コンパイラはソフトウェアプログラムに存在する定数を認識する。これらの定数が単一の命令内に即値として符号化され得ない場合、コンパイラはこの即値をローディングするための専用命令を作成する。即値を必要とする命令において、専用レジスタファイルＲＦ２のアドレスは、即値を取り出すため符号化される。たとえば、命令ＩｎｓｔｒＣによって要求される大きい即値ＩＭＶ１をローディングするため、専用命令ＩＭＭが符号化される。大きい即値ＩＭＶ１は、次に、オペランドレジスタインデックスＳ３として、命令４０５内でレジスタファイルＲＦ２のアドレスによって置き換えられる。このようにして、ＶＬＩＷ命令の効率的な符号化が実現されるのは、命令幅の減少が許されるからである。有利な一実施形態において、ＶＬＩＷ命令は、コードサイズをさらに縮小するため、圧縮ＶＬＩＷ命令４０７である。フィールド４３３における専用ビットは、それらの対応した発行スロットのため、命令有効ビットＩＶおよびＩＶ４として同時に使用可能である。圧縮ＶＬＩＷ命令４０７は、フィールド４３３内の「０」ビットおよびその位置を使用して、ＮＯＰ演算を含む制御語をＶＬＩＷ命令４０７に追加することにより、コントローラＳＱ内に存在する伸長ロジックによって伸長される。ＶＬＩＷ命令４０１を実行するときに、大きい即値ＩＭＶ１は専用発行スロットＵＣ４によってロードされ、専用レジスタファイルＲＦ２に記憶される。命令ＩｎｓｔｒＣを実行するときに、発行スロットＵＣ２は、オペランドレジスタインデックスＳ３を使用して、コネクションネットワークＣＮを介して、この値を専用レジスタファイルＲＦ２から取り出す。効率的な解読プロセスは、付加的な解読ステップを必要とすることなく、命令がデコーダＤＥＣによって解読されるときに実現される。専用発行スロットＵＣ４のハードウェアは、制御ロジックを必要としない配線を用いることにより、非常に簡単にすることができる。大きい即値をローディングすることが特定のＶＬＩＷ命令において要求されない場合に、ＮＯＰ演算が制御語４１１にマッピングされる。
【００３３】
スーパースカラプロセッサは、ＶＬＩＷプロセッサの場合と同様に、多数の演算を並列に実行可能である複数の発行スロットを具備する。しかし、そのプロセッサのハードウェア自体は、存在する演算依存性をランタイムで判定し、その依存性に基づいて並列に実行すべき演算を決定し、同時にリソース衝突が生じないことを保証する。この欄で説明されたＶＬＩＷプロセッサの実施形態の原理はスーパースカラプロセッサにも同様に適用される。一般に、ＶＬＩＷプロセッサは、スーパースカラプロセッサよりも多数の発行スロットを有する。ＶＬＩＷプロセッサのハードウェアはスーパースカラプロセッサよりも複雑さの程度が低く、より優れた拡張可能性のあるアーキテクチャをもたらす。発行スロットの個数と各発行スロットの複雑さは、特に、本発明を使用して達成できる利益の大きさを決める。
【００３４】
上記の実施形態は本発明を限定するのではなく本発明を例示するものであり、当業者が請求項に記載された事項の範囲から逸脱することなく多数の代替的な実施形態を設計可能であることに注意すべきである。用語「具備する、含む（ｃｏｍｐｒｉｓｉｎｇ）」は請求項に列挙されていない要素またはステップを除外しない。要素の前に置かれた冠詞（「ａ」または「ａｎ」）はこのような要素が複数個であることを除外しない。複数の手段を列挙する装置請求項において、これらの手段の幾つかは全く同一のハードウェアによって具現化できる。単にある特定の手段が相互に異なる従属請求項に記載されていることは、これらの手段の組み合わせを有利になるように使用できないことを示すものではない。
【図面の簡単な説明】
【００３５】
【図１】本発明によるＶＬＩＷプロセッサの概略図である。
【図２】３台の機能ユニットを具備する発行スロットＵＣ２の概略図である。
【図３】単一の機能ユニットを具備する専用発行スロットＵＣ４の概略図である。
【図４】ＶＬＩＷ命令および対応した圧縮ＶＬＩＷ命令を表す図である。
【図１】
2006500673.tif 000003
【図２】
2006500673.tif 000004
【図３】
2006500673.tif 000005
【図４】
2006500673.tif 000006
【国際調査報告】
2006500673.tif 000007
2006500673.tif 000008