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