(57)【特許請求の範囲】
【請求項１】
並列に実行すべき複数の演算を指定する極めて長い極長命令語のシーケンスを実行する極長命令語（ＶＬＩＷ）プロセッサであって、
極長命令語により指定される前記複数の演算の少なくともいくつかを並列に実行する複数の機能ユニットと、
極長命令語を蓄積する命令レジスタとを具え、
前記極超命令語は複数のフィールドを有し、各フィールドが選択された機能ユニットが実行すべき演算の指定及び前記演算を禁止するかしないかを示すガード値を含み、且つ
前記複数の機能ユニット及び前記命令レジスタに結合され、前記複数のフィールドのそれぞれからの演算の指定を前記複数の機能ユニットのそれぞれに送付するルーティング回路を具えたＶＬＩＷプロセッサにおいて、
前記ルーティング回路は、前記複数の機能ユニットの特定の１つに対し与えられた前記複数のフィールドの少なくとも２つから、前記少なくとも２つのフィールド内の前記ガード値に基づいて１つのフィールドを選択し、該１つのフィールドから演算指定を前記特定の１つの機能ユニットに送付するように構成されていることを特徴とするＶＬＩＷプロセッサ。
【請求項２】
前記ルーティング回路は、前記ガード値が演算を禁止しないことを示すときにのみ、前記命令レジスタから前記特定の１つの機能ユニットが実行すべき演算の指定を前記特定の１つの機能ユニットに送付するように構成されていることを特徴とする請求項１記載のＶＬＩＷプロセッサ。
【請求項３】
前記複数のフィールドの少なくとも２つのうちの１つが前記演算を禁止しないことを示すガード値を有し、前記複数のフィールドの少なくとも２つのうちの残りの各フィールドが前記演算を禁止することを示すガード値を有することを特徴とする請求項２記載のＶＬＩＷプロセッサ。
【請求項４】
前記複数のフィールドの少なくとも２つの各々が前記複数の機能ユニットの１つを選択する識別子を含み、前記ルーティング回路が、前記少なくとも２つのフィールドから、これらのフィールドに含まれる識別子の前記特定の１つの機能ユニットを指定するものを選択するように構成されていることを特徴とする請求項１記載のＶＬＩＷプロセッサ。
【請求項５】
前記ルーティング回路が、前記特定の１つの機能ユニットと前記命令レジスタとの間に結合され、前記複数のフィールドのうちの前記選択された機能ユニットを示す識別子を含むフィールドから実行すべき演算の指定を選択するマルチプレクサを具えることを特徴とする請求項４記載のＶＬＩＷプロセッサ。
【請求項６】
前記マルチプレクサは、前記選択された機能ユニットを示す識別子を含むフィールドのガード値に従ってスイッチされることを特徴とする請求項５記載のＬＩＷプログラム。
【請求項７】
フィールドの数が機能ユニットの数より多く、各フィールドが少なくとも１つの機能ユニットと関連し、少なくとも２つのフィールドがともに前記特定の１つの機能ユニットと関連し、前記ルーティング回路が各フィールドからの演算指定をこのフィールドに関連する機能ユニットに送付するように構成されていることを特徴とする請求項１記載のＶＬＩＷプロセッサ。
【請求項８】
前記ルーティング回路が、前記特定の１つの機能ユニットと前記命令レジスタの前記少なくとも２つのフィールドを含む所定の部分との間に結合され、前記少なくとも２つのフィールドのうちの１つから実行すべき演算の指定を選択するマルチプレクサを具えることを特徴とする請求項７記載のＶＬＩＷプロセッサ。
【請求項９】
前記マルチプレクサはフィールドのガード値に従ってスイッチされることを特徴とする請求項８記載のＶＬＩＷプロセッサ。
【請求項１０】
前記特定の１つの機能ユニットはデータメモリ機能ユニットであることを特徴とする請求項１記載のＶＬＩＷプロセッサ。
【発明の詳細な説明】
発明の分野
本発明は、極長命令語（ＶＬＩＷ）プロセッサのアーキテクチャに関するものであり、特にＶＬＩＷプロセッサに命令をディスパッチする方法及び装置に関するものである。
発明の背景
コンピュータ処理に対する急激な性能向上要求の結果、多数の演算を同時に実行する高度に並列なコンピュータアーキテクチャが導入されている。高水準言語プログラムに固有の微小粒度並列処理を利用するように設計された極長命令語（ＶＬＩＷ）プロセッサは極めて長い極長命令語（即ち１００ビット以上）によりサイクル単位で制御される多数の並列機能ユニットを具える。極長命令語はフィールド又は「配布スロット」の連結を具え、各フィールド又はスロットが機能ユニットの演算を独立に指定する。ＬＶＩＷプロセッサはスーパーコンピュータ及びメインフレーム、ワークステーション及びパーソナルコンピュータ、及びオーディオ及びビデオコンシューマプロダクツ内の専用プロセッサを含む種々のアプリケーションに使用される。
図１は慣例のＶＬＩＷプロセッサ１００を示す。各マシンサイクルごとに、極長命令語が命令メモリ１１０から命令配布レジスタ１２０にロード又は「配布」される。ランダムアクセスメモリ（ＲＡＭ）又はリードオンリメモリ（ＲＯＭ）とし得る命令メモリ１１０は、実行スループットを向上させるために、代表的にはパイプライン制御されるとともに命令キャッシュ（図示せず）により捕捉される。命令配布レジスタ１２０内にロードされた各命令語は多数の配布スロット１２１−１２７を含み、各配布スロットはＶＬＩＷプロセッサ１００内の対応する機能ユニット１３１-１３７を制御する。一般に、ＶＬＩＷプロセッサは機能ユニットの任意の有用な組合せを具えることができ、図１はこのような組合せの一例を示す。個々の実施に応じて、もっと多数又は少数の機能ユニットを具えることができるとともに、異なるタイプの機能ユニットを具えることができる。機能ユニットは演算コード（opcode）により選択される種々の演算を実行することができ、例えば算術論理演算機能ユニットは２つの値を加算及び減算することができる。
命令配布レジスタ１２０にロードされた命令内の各配布スロット１２１-１２７は対応する機能ユニット１３１-１３７が現クロックサイクルにおいて開始すべき演算を指定する。特に、各配布スロット１２１−１２７は代表的には対応する機能ユニット１３１-１３７に対する演算コード及びオペランドを含む。演算コードは種々の演算を実行する機能ユニットに有用である。機能ユニット１３１-１３７に対するオペランドは共用マルチポートレジスタファイル１４０から読み出され、機能ユニット１３１-１３７からの結果がレジスタファイル１４０に書き込まれる。従って、各配布スロット１２１-１２７は対応する機能ユニット１３１-１３７により実行されるべき演算の指定を含む。ここで使用する「演算の指定」とは機能ユニットの演算を指定するのに使用される演算コード（必要であれば）とオペランド（必要であれば）の組合せをいう。
図２につき説明すると、配布スロット１２１は定数発生ユニット１３１の演算指定２１０、即ち定数値ＣＯＮＳＴＡＮＴ及びこの定数値を保持するレジスタＲＤを含む。配布スロット１２２及び１２３にそれぞれ含まれる算術論理演算ユニット（ＡＬＵ）１３２及び１３３の演算指定２２０はＡＬＵ演算コードと、それぞれの演算に対する２つの出所レジスタＲＡ及びＲＢ及び宛先レジスタＲＤとを保持する。代表的なＡＬＵ演算コードは、加算、減算、否定、論離積、論理和、排他的論理和、論理コンプリメンテーション等のような演算を示す。配布スロット１２４は乗算ユニット１３４に対する演算指定２４０を保持し、この演算指定２４０は乗算、除算又は平方根を示すＭＵＬ演算コードと、出所レジスタＲＡ及びＲＢ及び宛先レジスタＲＤを含む。配布スロット１２５は浮動小数点ユニット１３５に対する演算指定２５０を含み、この演算指定２５０はＦＰＵ演算コード（例えば加算、減算及び比較）と出所レジスタＲＡ及びＲＢ及び宛先レジスタＲＤを有する。データメモリユニット１３６は配布スロット１２６により制御され、このスロットはロード又は格納演算を示すＭＥＭ演算コードと出所レジスタＲＡ及びＲＢ及び宛先レジスタＲＤとを含む演算指定２６０を有する。分岐制御ユニット１３７は対応する配布スロット１３７内の演算指定２７０と関連し、出所レジスタＲＡ及びＲＢを用いて条件値と命令メモリ１１０内の分岐先アドレスを指定する。この演算指定２７０は常時分岐（無条件分岐）か、条件値レジスタが真であれば分岐するのか、条件値レジスタが偽であれば分岐するのか、全く分岐しない（ＮＯＰ）のかを指定するＪＭＰ演算コードも保持する。これらの配布スロット１２１-１２７の内容、機能ユニット１３１-１３７の演算、及び演算指定２１０-２７０のフォーマットは一例であって、任意の有用な構成に適合するよう調整することができる。
ソフトウエアプログラムをＶＬＩＷマシンで実行するためには、「微小粒度並列」又は「命令レベル並列」変換を見つけ出す必要がある。これは、ＡＮＳＩ−Ｃのような慣例の高水準プログラミング言語をＶＬＩＷ命令に翻訳するコンパイラにより達成される。このようなコンパイラは、John R. Ellis著、「ＢＵＬＬＤＯＧ：A Compiler for VLIW Architectures」、MIT Press 1985、ISBN0-262-05034-Xに記載されている。慣例のＶＬＩＷプロセッサ内の各機能ユニットは命令語内の正確に１つの配布スロットにより制御される。例えば、図１に示すＶＬＩＷプロセッサ１００は７つの機能ユニット１３１-１３７に対応する７つの配布スロット１２１-１２７を含む。従って、慣例のＶＬＩＷプロセッサ用のコンパイラが発生する命令は各機能ユニットを単一の配布スロット内の値により制御するものである。
ＶＬＩＷプロセッサを含む高性能プロセッサは、命令メモリの待ち時間により生ずる所謂「分岐遅延」問題を被る。これは、命令メモリへの命令アドレスの伝送と実行のための対応する命令語の受信との間の時間（マシンサイクル単位）である。逐次的実行中は、次の命令のアドレスを予測し、命令メモリをパイプライン制御して実効命令メモリ待ち時間を１マシンサイクルにすることができる。しかし、条件分岐に対しては、次の命令のアドレスを予測することができない。その理由は、宛先アドレスは条件式の評価の結果に依存するためである。従って、宛先アドレスの命令語は条件式の評価及び命令メモリの待ち時間のために複数のマシンサイクルの間得られず、ブランチ遅延はこの複数マシンサイクルに相当する。機能ユニットは、例えば積極的なパイプライン処理によりもっと高速になるので、この待ち時間が増大する。高速パイプライン構成では、命令の実行を続ける前に命令メモリからの分岐命令の宛先の命令語のフェッチを待つのは極めて不所望である。
分岐遅延問題の１つの解決方法がP.Y-I.Hsu著、「Highly Concurrent Scalar Processing」Thesis,University of Illinois at Urbana-Champaign,1986,に提案されており、この方法は、限定数の機能ユニットにより許される限り、命令をブランチ遅延期間中に全ての可能なプログラムパスに並列に配布し続けるものである。しかし、各演算は論理式により「ガード」され、論理式又は「ガード値」を満足する演算のみを実行可能にしている。これらのガード値はコンパイラにより、予定のプログラムパスでの演算のみを実行するように構成される。
現在のＶＬＩＷプロセッサの１つの欠点は、分岐遅延期間内の２以上の並列プログラムパスが浮動小数点ユニット１３５のような同一の機能ユニットに属する演算を含むときに明らかになる。各機能ユニットは命令語内の正確に１つの配布スロットにより制御されるため、種々の並列プログラムパスに沿う同一の機能ユニットに対する演算は別々の命令に配布する必要がある。例えば、数値分析プログラムの２つのプログラムパスが条件分岐後に浮動小数点演算を用いることがある。１つの浮動小数点ユニット１３５を有するＶＬＩＷプロセッサでは、１つの浮動小数点演算を各命令内に配布し得るのみである。従って、１つのパス、例えば「条件真」パスに沿う浮動小数点演算は他のパス、例えば「条件偽」パスに沿う浮動小数点演算と異なる命令内に配布する必要がある。従って、余分の命令をコンパイラによりスケジュールする必要があり、コードサイズが増大するとともに実行時間が減少する。
図１に示すように、この欠点を軽減する１つの慣例の方法は同一機能ユニットを別にもう一つ用意するものである。例えば、慣例のＶＬＩＷプロセッサ１００は２つの算術論理演算ユニット１３２及び１３３を含む。第２算術演算ユニットはそれほど費用がかからないが、第２浮動小数点ユニットはモノリシック半導体デバイス上に実現するのに、表面積及び電力消費の点で費用がかかる。乗算器、バレルシフタ及びデータメモリユニットのような他の複雑な機能ユニットも２重化には費用がかかる。
発明の概要
従って、１つの機能ユニットに対する各別のプログラムパスに沿う複数の演算を単一の命令語に配布することができる命令ディスパッチ方法及び機構が必要とされている。また、１つの共通機能ユニットに対する２以上の演算を単一の命令語に配布する費用有効方法及び機構も必要とされている。
これらの必要性及び他の必要性は、単一の命令語内に指定された複数のガード付き演算のうちの１つをこれらの演算と関連するガード値に基づいて共通機能ユニットに送る本発明手段により満足される。この手段によれば、コンパイラは共通機能ユニットを条件付き制御する２以上の配布スロットを有する命令を発生するもとすることができる。実際上、命令語は存在する機能ユニットより多数の配布スロットを含むことができる。
本発明の特徴の一つは、多数の演算を指定する極長命令語のシーケンスを並列に実行する極長命令語（ＶＬＩＷ）プロセッサである。このＶＬＩＷプロセッサは極長命令語により指定される少なくともいくつかの演算を並列に実行する多数の機能ユニットを具える。命令レジスタが極長命令語を格納する。極長命令語は多数のフィールドを有し、各フィールドは多数の機能ユニットのうちの１つを選択する識別子、選択した機能ユニットが実行すべき演算の指定、及びその演算を禁止するかしないかを示すガード値を含む。ルーティング回路が命令レジスタから実行すべき演算の指定を、関連するガード値に従って、例えばガード値が当該演算を禁止しないことを示す場合にのみ、選択した機能ユニットに送付する。
本発明の他の特徴は、多数の演算を指定する極長命令語のシーケンスを並列に実行するＶＬＩＷプロセッサである。このＶＬＩＷプロセッサはそれぞれの演算を並列に実行する多数の機能ユニットと、極長命令語を格納する命令レジスタとを具える。極長命令語は機能ユニットの数より多数のフィールドを有する。ルーティング回路が命令レジスタから命令内の多数のフィールドのうちの１つの内容を関連する機能ユニットに送付する。例えば、各フィールドは関連する機能ユニットが実行すべき演算の指定及びその演算を禁止するかしないかを示すとともにルーティング回路を制御するガード値を含むことができる。
本発明の更に他の特徴は、多数の演算を指定する極長命令語を配布するステップを具える極長命令語（ＶＬＩＷ）プロセッサに命令をディスパッチする方法である。各フィールドは多数の機能ユニットのうちの１つを選択する識別子、選択した機能ユニットが実行すべき演算の指定、及びその演算を禁止するかしないかを示すガード値を含む。フィールド内の演算指定をガード値に基づいて対応する機能ユニットに送付し、送付された演算指定により指定された演算を実行する。
本発明の更に他の特徴は、多数の演算を指定する極長命令語を配布するステップを具える極長命令語（ＶＬＩＷ）プロセッサに命令をディスパッチする方法である。フィールド内の内容を、極長命令語内のフィールド数より少数の関連する機能ユニットに送付し、送付された内容により指定された演算を実行する。各フィールドは多数の機能ユニットのうちの関連する機能ユニットが実行すべき演算の指定及びその演算を禁止するかしないかを示すとともにフィールド内容の送付を制御するガード値を含む。
本発明の他の目的及び利点は本発明を実施する最適モードの例示として以下に記載する詳細な説明から明らかになる。本発明は他の種々の実施例が可能であり、それらのいくつかの細部は本発明の範囲内において種々に変更することができる。従って、図面及び明細書は本発明を説明するものであって、本発明を限定するものではない。
【図面の簡単な説明】
本発明を添付図面を参照して一例として説明するが、本発明はこれに限定されるものではない。図面において、類似の素子は類似の参照番号で示し、
図１は慣例のＶＬＩＷプロセッサを示し、
図２は慣例のＶＬＩＷ配布ステップのフォーマットを示し、
図３は本発明の一実施例に従うＶＬＩＷプロセッサを示し、
図４は本発明の一実施例に従うＶＬＩＷ配布ステップのフォーマットを示し、
図５は本発明の他の実施例に従うＶＬＩＷプロセッサを示し、
図６は本発明の他の実施例に従うＶＬＩＷ配布ステップのフォーマットを示す。
好適実施例の説明
改善されたＶＬＩＷ命令ディスパッチ方法及び機構について説明する。以下において、本発明の十分な理解を与えるために多数の特定の細部について述べる。しかし、当業者であれば、本発明はこれらの特定の細部を用いずに実施することができること明かである。本発明を不必要に不明瞭にするのを避けるために公知の構造及び装置はブロック図で示してある。
本発明は慣例のＶＬＩＷプロセッサにおける分岐遅延期間中の低い柔軟性の演算スケジューリングと関連する問題を２以上の配布スロットから機能ユニットへの入力をガード値に基づいて多重化することにより解決するものである。ガード値は条件分岐後の別々プログラムパスを示す。各配布スロットはガード値を含むため、配布スロット内の演算は条件分岐後のプログラムパスと関連する。共通の機能ユニットに対する単一の命令語内の２つの配布スロットのガード値が互いに排他的なプログラムパスを示す場合には、２つの配布スロットの一方がそのガード値により禁止され、他方がそのガード値により禁止されないため、２つの配布スロットは競合しない。従って、命令を２以上の配布スロットに配布して共通の機能ユニットを互いに排他的なプログラムパスに沿って制御することができる。この方法は費用有効である。その理由は、追加のマルチプレクサはデータメモリユニット、浮動小数点ユニット、乗算器及びバレルシフタのような第２機能ユニットを実現するより遥かに安価であるためである。
本発明の一実施例では、追加の配布スロットを特定の機能ユニットに対し指定する。従って、命令配布レジスタは存在する機能ユニットより多数の配布スロットを含む。図３を参照すると、ＶＬＩＷプロセッサ３００が示され、このプロセッサでは配布スロット３２１-３２７が対応する機能ユニット３３１-３３７と位置的に関連している。即ち、命令配布レジスタ３２０内の個々の位置が特定の機能ユニットに対し指定されている。図３には７つの機能ユニット３３１-３３７、即ち上述した機能ユニット１３１-１３７にそれぞれ対応する定数発生ユニット３１１、第１算術論理演算ユニット３３２、第２算術論理演算ユニット３３３、乗算器３３５、浮動小数点ユニット３３５、データメモリユニット３３６及び分岐制御ユニット３３７が示されている。
７つの機能ユニット３３１-３３７の各々と９つの配布スロット３２１-３２７が関連し、ここでは浮動小数点ユニット３３５が２つの配布スロット３２５ａ及び３２５ｂと関連し、データメモリユニット３３６が２つの配布スロット３２６ａ及び３２６ｂと関連する。図４につき説明すると、配布スロット３２１-３２７はガード値Ｇと演算指定（例えば演算コード及びもしあればオペランド）を含む演算パーセル４１０-４７０を含む。ガード値Ｇはどのプログラムパスが演算を実行すべきかを示す。ガード値の一つの実現法は米国特許第5,450,556号、１９９５年９月１２日登録、Slavenbrug等、に記載されており、この方法ではガード値は分岐制御ユニット１３７により発生されるパス情報と一致するパス表現式を指定する。例えば、分岐制御ユニット１３７が３路分岐を実施する場合には、プログラムパスは２ビットのガード値で表現することができる。ガード値は連結により分岐遅延期間中の次の分岐による条件付きプログラムパスを表現することもできる。演算パーセル４１０-４７０内の演算指定は図２の演算指定２１０−２７０について説明した演算コード及びオペランドのような類似のサブフィールドを含む。これらの配布スロット３２１-３２７の内容、機能ユニット３３１-３３７の演算及び演算パーセル４１０-４７０の演算指定のフォーマットは一例であって、任意の有用な構成に適合するよう調整することができる。
マルチプレクサ３５５は命令レジスタ３２０に配布スロット３２５ａ及び３２５ｂで結合された入力端子を有している。マルチプレクサ３５５の出力端子は浮動小数点ユニット３３５に結合されている。従って、マルチプレクサ３３５は配布スロット３２５ａ及び３２５ｂのうちの１つからの演算コード及びオペランドを浮動小数点ユニット３３５に送付する。同様に、マルチプレクサ３５６は命令レジスタ３２０に配布スロット３２６ａ及び３２６ｂで結合された入力端子を有するとともに、データメモリユニット３３６に結合された出力端子を有する。従って、このマルチプレクサ３５６は配布スロット３２６ａ及び３２６ｂのうちの１つからの演算コード及びオペランドをデータメモリユニット３３６に送付する。
両マルチプレクサ３３５及び３３６は関連する配布スロット３２５ａ/３２５ｂ及び３２６ａ/３２６ｂから取り出されるガード値によりそれぞれスイッチされ、禁止されてない配布スロットに対する演算コード及びオペランドを関連する機能ユニットに送付する。一実施例では、ガード値を分岐制御ユニット３３７により維持されている現プログラムパスと比較する。例えば、配布スロット３２５ａは分岐パスが真条件であることを示すガード値"１"を含むが、配布スロット３２５ｂは分岐パスが偽条件であることを示すガード値"０"を含む。従って、真条件分岐パスが選択される場合には、現プログラムパスは"１"になり、マルチプレクサ３５５が現プログラムパスと一致するガード値を有する配布スロット、即ち配布スロット３２５ａからの演算コード及びオペランドを選択する。他方、偽条件分岐パスが選択される場合には、現プログラムパスが"０"になり、マルチプレクサ３５５が他方の配布スロット３２５ｂからの演算コード及びオペランドを選択する。従って、命令を命令メモリ３１０から命令配布レジスタ３２０に、浮動小数点ユニット３３５のような共通機能ユニットを何れかの分岐パスに沿って制御し得るように配布することができる。この状態では、コンパイラは、配布スロットに対するガード値が互いに排他的である限り、共通機能ユニットを制御する複数の配布スロットを有する命令を発生することができる。
動作中に、極長命令語がＲＡＭ又はＲＯＭに結合されたパイプラインキャッシュとし得る命令メモリ３１０からフェッチされ、命令配布レジスタ３２０に格納される。命令配布レジスタ３２０は機能ユニット３３１-３３７に対応する配布スロット３２１-３２７のための複数のフィールドを含む。配布スロットのいくつか、例えば配布スロット３２５ａ及び３２５ｂは共通の機能ユニット、例えば浮動小数点ユニット３３５に対応し、この場合にはマルチプレクサ３５５が不同小数点ユニット３３５により実行すべき演算の指定を配布スロット３２５ａ及び３２５ｂの一つから送付するように構成されている。マルチプレクサ３５５は更に配布スロット３２５ａ及び３２５ｂの一つからの演算コード及びオペランドを、そこに格納されたそれぞれのガード値に基づいて選択するように構成されている。他の例として、配布す３２６ａ及び３２６ｂはデータメモリユニット３３６に対応し、マルチプレクサ３５６がデータメモリユニット３３６により実行すべき演算の指定を配布スロット３２６ａ及び３２６ｂの一つから送るように構成されている。マルチプレクサ３５６は更に配布スロット３２６ａ及び３２６ｂの一つからの演算コード及びオペランドをそこに格納されているそれぞれのガード値に基づいて選択するように構成されている。従って、分岐遅延中に実行される単一の命令語が選択された機能ユニット、例えば浮動小数点ユニット及びデータメモリユニット３３６をすべての相互排他プログラムパスに沿って使用することができる。種々の機能ユニットがマシンサイクル中動作するとき、命令配布レジスタ３２０の配布スロット３２１-３２７から対応する機能ユニット３３１-３３７に送られるオペランドに基づいてデータがレジスタファイル３４０から取り出され、結果がレジスタファイル３４０に書き戻される。
上述したように、図３に示す本発明の実施例は所望の機能ユニットに対する追加の配布スロットを指定するために命令語のサイズを伸長する。しかし、ある実現環鏡では、本発明のこの実施例はいくつかの欠点を被る。例えば、シーケンシャル動作では、所定の機能ユニットに対する配布スロットの１つのみが使用され、ＶＬＩＷプロセッサをほぼピーク性能に維持するためには帯域幅要件が増大する。更に、命令語の増大したサイズは命令メモリ、キャッシュ及びバスのコストを上昇させる。最後に，ＶＬＩＷコンパイルプログラムに対するコンパイルコードのサイズが大きくなり、プログラムの総合コストパフォーマンスが低下する。
同時継続出願中の米国特許出願第08/715,060号に記載されている、これらの欠点を解決する一つの方法は各配布スロットにおいて機能ユニット識別子を協働させるものである。図５に示す本発明の他の実施例では、ＶＬＩＷプロセッサ５００は命令配布レジスタ５２０内のたった３つの配布スロット５２１−５２３有する命令語を使用する。このＶＬＩＷプロセッサ５００は、命令配布レジスタ５２０に各配布スロット５２１-５２３で結合され、そこに含まれるオペランドを識別された機能ユニット５３１-５３７に送付するマルチプレクサ５５１-５５７を具えるルーティング回路を含む。図５には７つの機能ユニット５３１−５３７、即ち上述した機能ユニット１３１-１３７にそれぞれ対応する定数発生ユニット５３１、第１算術論理演算ユニット５３２、第２算術論理演算ユニット５３３、乗算器５３４、浮動小数点ユニット５３５、データメモリユニット５３６及び分岐制御ユニット５３７が示されている。
図６につき説明すると、配布スロット５２１-５２３は、ガード値Ｇ、機能ユニット識別子ＦＵ及び演算指定（例えば演算コード及びもしあればオペランド）を含む演算パーセル６１０-６７０を含む。先に詳細に説明したように、ガード値Ｇはどのプログラムパスが演算を実行すべきかを示す。機能ユニット識別子ＦＵは整数又は他のスカラ値、例えば０-７の３ビット値とすることができ、この場合には"１"の値が図５の定数発生ユニット５３１を示す。演算パーセル６１０-６７０内の演算指定は図２の演算指定２１０-２７０について説明した演算コード及びオペランドのような類似のサブフィールドを含む。これらの配布スロット５２１-５２３の内容、機能ユニット５３１-５３７の演算及び演算パーセル６１０-６７０内の演算指定のフォーマットは一例であって、任意の有用な構成に適合するように調整することができる。
各マルチプレクサ５５１-５５７は配布スロット５２１-５２３の一つを、そこに含まれるガード値及び機能ユニット識別子に基づいて選択し、選択された配布スロット５２１-５２３の内容をそれぞれの機能ユニット５３１-５３７に出力する。例えば、マルチプレクサ５５１は定数発生ユニット５３１と関連し、選択された配布スロット５２１-５２３の内容をこれを出力する。もっと詳しく説明すると、マルチプレクサ５５１-５５７は関連する機能ユニット５３１-５３７の機能ユニット識別子を含む配布スロット５２１-５２３のみの内容を選択する。更に、米国特許出願第08/715,060号に記載された構成と相違して、マルチプレクサ５５１−５５７は現プログラムパスが禁止されていないことを示すガード値を含む配布スロット５２１−５２３のみの内容を選択する。マルチプレクサ５５１−５５７は直列に結合された２つのマルチプレクサとして実現し、第１マルチプレクサにより、機能ユニット識別子ＦＵの比較に基づいて配布スロット５２１−５２３の中から機能ユニットに一致するものを選択し、第２マルチプレクサにより、ガード値Ｇの比較に基づいて残存する配布スロットの中から現プログラムパスに一致するものを選択する。
例えば、マルチプレクサ５５１は３つの配布スロット５２１−５２３の中から定数発生ユニット５３１に予定された演算パーセルを選択するよう構成する。もっと詳しく説明すると、マルチプレクサ５５１は配布スロット５２１−５２３が定数発ユニット５３１を識別する機能ユニット識別子を有しているか否かに基づいて配布スロット５２１−５２３の選択を行う。本例では、定数発生ユニット５３１は数"１"で識別されるため、含まれる機能ユニット識別子ＦＵ１、ＦＵ２及びＦＵ３が"１"である配布スロット５２１−５２３のみが選択される。更に、マルチプレクサ５５１は、ガード値が現プログラムパスが禁止されていないことを示すか否かに基づいて配布スロット５２１−５２３の選択を行う。一実施例では、ガード値を分岐制御ユニット５３７により維持されている現プログラムと比較する。例えば、配布スロット５２１は分岐パス内の真条件を示す"１"のガード値Ｇ１を含むとともに定数発生ユニット５３１を示す"１"の機能ユニット識別子ＦＵ１を含む。配布スロット５２２は分岐パス内の偽条件を示す"０"のガード値Ｇ２を有するとともに"１"の機能ユニット識別子ＦＵ２を有し、配布スロット５２３は"１"のガード値を有するとともに"２"の機能ユニット識別子ＦＵ３を有する。マルチプレクサ５５１に対し、配布スロット５２３は選択されない。その理由はその機能ユニット識別子ＦＵ３が"２"であって、対応する機能ユニット５３１に指定された識別子"１"と一致しないためである。真条件の分岐パスが選択される場合には、現プログラムパスは"１"になり、マルチプレクサ５５１が現プログラムパスと一致するガード値を有する残存する配布スロット、即ち配布スロット５２１からの演算コード及びオペランドを選択する。他方、偽条件の分岐パスが選択される場合には、現プログラムパスは"０"になり、マルチプレクサ５５１が他の配布スロット５２２からの演算コード及びオペランドを選択する。
従って、配布スロット５２１−５２３がマルチプレクサ５５１−５５７により選択されるためには、機能ユニット識別子がマルチプレクサ５５１−５５７と関連する機能ユニット５３１−５３７に対応する必要があるとともに、ガード値が現プログラムパスが禁止されていないことを示す必要がある。２つ以上の配布スロット５２１−５２３は、それらのガード値が相互排他プログラムパスを示す場合には、同一機能ユニットに対する機能ユニット識別子を含むことができる。例えば、２つの配布スロット５２１及び５２２は、ガード値が相違し、相互排他プログラムパスを示す場合には、定数発生ユニット５３１に対する機能ユニット識別子を含むことができる。従って、どれかのプログラムパスが現在実行中であるにもかかわらず定数発生ユニット５３１を単一ガード付き命令により動作させることができる。
動作中に、極長命令語がＲＡＭ又はＲＯＭに結合されたパイプラインキャッシュとし得る命令メモリ５１０からフェッチされ、命令配布レジスタ５２０に格納される。命令配布レジスタ５２０は配布スロット５２１−５２３用の複数のフィールドを含み、各フィールドは機能ユニット識別子及びガード値を含む。命令配布レジスタ５２０の各配布スロット５２１−５２３には機能ユニット５３１−５３７とそれぞれ関連し結合されたマルチプレクサ５５１−５５７が結合される。マルチプレクサ５５１−５５７は、配布スロット５２１−５２３に対する機能ユニット識別子が各別の機能ユニット５３１−５３７を識別するとともにガード値が禁止でない場合に、配布スロット５２１−５２３の一つの内容を選択する。従って、分岐遅延中に実行される単一命令語は選択された機能ユニット、例えば定数発生ユニット５３１を全ての相互排他プログラムパスに沿って有効に使用することができる。機能ユニットがマシンサイクル中に動作するとき、命令配布レジスタ５２０の配布スロット５２１−５２３から対応する機能ユニット５３１−５３７へ送られるオペランドに基づいてデータがレジスタファイル５４０からフェッチされ、結果がレジスタファイル５４０に書き戻される。
本発明を最も実用的な好適実施例について説明したが、本発明はこれらの実施例に限定されず、種々の変更や変形が本発明の範囲内に含まれること勿論である。
【図１】
0003829166.tif 000002
【図２】
0003829166.tif 000003
【図３】
0003829166.tif 000004
【図４】
0003829166.tif 000005
【図５】
0003829166.tif 000006
【図６】
0003829166.tif 000007