JPH08241200A - Vliwプロセッサ - Google Patents

Vliwプロセッサ

Info

Publication number
JPH08241200A
JPH08241200A JP7314333A JP31433395A JPH08241200A JP H08241200 A JPH08241200 A JP H08241200A JP 7314333 A JP7314333 A JP 7314333A JP 31433395 A JP31433395 A JP 31433395A JP H08241200 A JPH08241200 A JP H08241200A
Authority
JP
Japan
Prior art keywords
vliw
program
instruction
vliw processor
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7314333A
Other languages
English (en)
Inventor
Ookami Takahide
タカヒデ・オオカミ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Research Laboratories Inc
Original Assignee
Mitsubishi Electric Research Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Research Laboratories Inc filed Critical Mitsubishi Electric Research Laboratories Inc
Publication of JPH08241200A publication Critical patent/JPH08241200A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【解決手段】 オブジェクトレベル・コード互換性が異
なるアプリケーションに必要とされる同じVLIWプロ
セッサ構成の異なるプロセッサのために保たれるよう
に、プログラム16の固定長VLIW命令を実行する前
に、プログラムの並列処理のレベルLOP(つまり、論
理プロセッサの数)にそのレベルを一致させるVLIW
(超長命令語)プロセッサ10の効率を増すためのシス
テムが提供される。整合はプロセッサ10の機能ユニッ
トを停止することを通じてプロセッサ10のLOPを減
少させることによるか、またはプログラム内の各VLI
W命令の順次一部分を実行するプロセッサ10を通じて
プログラムのLOPを効果的に減少させることにより達
成され、その一部分の長さはVLIW命令として扱うこ
とが出来る動作数以下である。 【効果】 並列処理の効率を向上できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、並列処理プロセ
ッサの一種であるVLIW(Very Long Instruction Wo
rd:超長命令語)プロセッサに関するものである。特
に、VLIW命令語の命令フィールドにより指令される
並列処理の制御に関するものである。
【0002】
【従来の技術】VLIW(超長命令語)プロセッサは、
各々が各々一動作に対応する複数のフィールドから成る
超長命令語を実行することにより複数の動作を同時に実
行する並列処理プロセッサの一種である。VLIWプロ
セッサの主な問題の一つは、実行可能コード(プログラ
ム)がVLIWプロセッサにより扱うことが出来ない対
応命令セットを有する時に起こる。命令セットを扱うこ
とができない理由は、しばしばプログラムがタスクを行
うために採用される特定VLIWプロセッサと相入れな
いVLIWコンパイラによりコンパイルされるからであ
る。これは、プログラムが異なるVLIWプロセッサの
ために事前にコンパイルされている時に起こる。従っ
て、プログラムとVLIWプロセッサ間の互換性にまつ
わる問題は、オペレーティングシステム・ライブラリ
ー、ユーティリティー・ライブラリー、そして事前にコ
ンパイルされている頻繁に使用されるアプリケーション
・プログラムの場合に最も頻繁に起こる。
【0003】実例として、全てのタイプの処理に一般に
使用される編集ユーティリティーは、編集ユーティリテ
ィーが走らされる特定のプロセッサを顧慮しないで大抵
はコンパイルされる。例えば、典型的VLIWプロセッ
サは4、または8の並列処理能力を有する。これは、V
LIWプロセッサは4、または8の命令を並行に処理す
ることが出来ることを意味する。但し、コンパイルされ
たプログラムは6、または12の命令の並列処理を必要
とする。VLIWプロセッサの能力とプログラムの要件
との間に何の必要な一致もないことは理解されよう。故
に、そのような不一致を整合する必要がある。
【0004】背景として、VLIWプロセッサは他の種
類の並列処理プロセッサと比較され、それらの内、シム
ド(SIMD)、単一命令多重データ処理と、ミムド
(MIMD)、多重命令多重データ処理の種類が良く知
られている。SIMDプロセッサにおいて、命令は全て
の処理ユニットに同報され、それらはその命令により指
定された同じ動作を同期的に並行して実行する。MIM
Dプロセッサにおいて、命令を自律的に実行する構成C
PU、または中央処理ユニットは、動作を同期的に並行
して実行する。
【0005】VLIWプロセッサは、異なるデータにつ
いて異なる動作を並行して実行できるのでSIMDプロ
セッサよりも更に柔軟な並列処理を、そして並行して実
行できる動作が超長命令語に符号化されるのでMIMD
プロセッサよりも更に効率的な同期並列処理とを提供す
る。
【0006】その命令が一動作を符号化する従来のプロ
セッサと違って、VLIWプロセッサは、各々が幾つか
の命令フィールドを含む超長命令語を実行する。VLI
Wプロセッサのための命令はVLIWコンパイラにより
生成され、それはC言語のような高級プログラミング言
語で書かれたプログラムを読み取り、高レベル構造をプ
ロセッサにより支持される原始的な動作に翻訳し、並行
に実行できる動作を発見するために動作の依存性をチェ
ックして、動作をVLIW命令に符号化する。もしもそ
のコンパイラがVLIW命令を満たすのに多くの並列動
作を発見できなければ、それはそのフィールドの幾つか
で、NOP、例えば無動作を符号化しなければならな
い。
【0007】NOPフィールド数は、プログラム(実行
可能コード)のサイズだけでなくVLIWプロセッサの
効率に大きな影響を及ぼす。並列処理が豊富なプログラ
ムは少数のNOPフィールドを含む小さなプログラムに
コンパイルされるが、並列処理が豊富でないプログラム
は多数のNOPフィールドを含む大きなプログラムにコ
ンパイルされる。コード効率も、プログラム内の並列処
理を検出するためのコンパイラの能力によりかなり影響
を受けることに留意すべきである。
【0008】VLIW命令のフィールドはVLIWプロ
セッサ内に実装される機能ユニットに相当する。その機
能ユニットは必ずしも同種類のものである必要はない。
例えば、整数ユニットと浮動小数点ユニットとは動作が
異なる。一度、VLIWプロセッサが一定数の機能ユニ
ットで実装されると、コンピューターや半導体技術の進
歩に追い付くためにそれらの数とそれらの機能性とを後
で変更することは非常に困難である。機能ユニットの数
と機能性へのいかなる変更も、全てのプログラムの完全
な再コンパイルを必要とし、明かに不都合である。
【0009】VLIW命令フォーマットは機能ユニット
に関してVLIWプロセッサの内部構造に直接的に反映
するので、異なる構造を有するVLIWプロセッサのた
めの同じVLIW命令セットを使用することは非常に難
しく、そして可能であっても、非常に非効率的である。
従って、異なるVLIWプロセッサ間でオブジェクトレ
ベル・コードの互換性を保つことはほとんど不可能であ
り、それらは異なるアプリケーションが必要とされる。
従って、従来のVLIWプロセッサ構成はスケーラブル
ではない。
【0010】
【発明が解決しようとする課題】以下は、従来のVLI
Wプロセッサにまつわる問題を列挙する。最初に、VL
IWプロセッサは並列処理量の異なる広範囲のプログラ
ムを効率的に支持することができない。第二に、VLI
Wコンパイラは、VLIW命令内に少数のNOPフィー
ルドを含む品質コードを生成するために高度化されてい
るが、時間のかかる技術を使用しなければならないの
で、大規模で、且つ非常に複雑となる傾向がある。第三
に、VLIWプロセッサ内の機能ユニットのいかなる変
更もプログラムの全ての完全な再コンパイルを引き起こ
す。最後に、異なるVLIWプロセッサのために同VL
IW命令セットを使用することは非常に難しく、そして
可能であっても、非効率的である。
【0011】従来のVLIWプロセッサの欠点を克服す
るために、本発明は、機能ユニットに関して異なるプロ
セッサでの実施を可能にする新しいスケーラブルなVL
IWプロセッサを得ることを目的とする。特に、VLI
Wプロセッサの並列処理のレベルをプログラム(実行可
能コード)の並列処理のレベルと比較して、二つの並列
処理のレベルが一致するように整合する。
【0012】
【課題を解決するための手段】この発明に係るVLIW
プロセッサは、相互に独立的で、並行して実行できる動
作数に匹敵する並列処理のレベル、つまりLOP(Logi
c Processor:論理プロセッサ)はVLIWプロセッサ
と、固定長VLIW命令から成るコンパイルされたプロ
グラムとのために定義される。本発明のVLIWプロセ
ッサは、コードのVLIW命令を実際に実行する前にそ
のLOPをプログラムのLOPと突合わせる。もしプロ
グラムのLOPがVLIWプロセッサのLOPよりも小
さければ、残留機能ユニットのLOPがプログラムのも
のと一致するようにそのプロセッサは単にその機能ユニ
ットを停止する。他方、もしプログラムのLOPがVL
IWプロセッサのLOPよりも大きければ、VLIW命
令を、VLIWプロセッサにより扱うことが出来るセグ
メントに分割することによりVLIWプロセッサにより
実行される。それ以後、これらの命令は順次に実行され
る。その結果は、VLIWプロセッサのLOPがプログ
ラムのLOPに一致させられることである。
【0013】VLIWプロセッサ構成の一部分として定
義されるVLIW命令は、各々が一つの固定長単位命令
を含む、N命令フィールドから成り、それは演算および
論理的命令などの従来の順次の、即ち、非並列処理プロ
セッサで使用される伝統的命令の一つ、またはVLIW
プロセッサ構成のために新たに定義された特別の命令の
一つである。
【0014】N命令フィールドを有するVLIW命令は
N長命令と呼ばれる。N長命令のセットはN長命令セッ
トと呼ばれる。各命令フィールドは、各々が一つの動作
を実行する単位命令の一つを指定する。N長命令内に包
含されたN単位命令は、例えばレジスタやメモリアクセ
スなどの資源アクセスに関していかなる相互依存性も持
たないので、それらは並行して実行できる。これはVL
IWコンパイラにより保証される。
【0015】N長命令セットを実行できるVLIWプロ
セッサはLOP=Nを有すると言われる。つまり、その
プロセッサはN長命令内のN単位命令により指定される
N動作を並行して実行できる。LOP=Nを有するVL
IWプロセッサは、各々がN長命令の一命令フィールド
により指定される一単位命令を実行するN機能ユニット
を有する。N機能ユニットの各々は、N機能ユニットの
全てが一命令取り出しブロック、一シーケンス・コント
ロールブロック、一レジスタ・ファイルブロック、そし
て一メモリ・コントロールブロックを共有すること以
外、従来の順次処理プロセッサ内の独立CPU、または
中央処理ユニットと同様に動作する。
【0016】並列処理のレベルも、コンパイルされたプ
ログラムのために定義される。LOP=Nを有するプロ
グラムは、N長命令としてN単位命令のシーケンスを実
行することにより実行可能である。VLIWコンパイラ
が元のプログラムをLOP=Nを有する実行可能コード
にコンパイルすると、それは、N長命令として取り出さ
れるいかなるシーケンス内のN単位命令も資源アクセス
に関して相互依存性を持たないことを保証するので、そ
れらは並行して実行可能である。
【0017】ある形態において、LOP命令と呼ばれる
一つの命令がプログラムの並列処理のレベルを示すため
に定義される。それがVLIWプロセッサ内で実行され
ると、プロセッサの並列処理整合機構はプロセッサのL
OPを変更することにより並列処理LOPのコードのレ
ベルで並列処理のそのレベルを調整する。
【0018】実例として、もしVLIWプロセッサのL
OPがLで、そしてプログラムのLOPがMである場合
は、もしL=Mであるならば、そのプロセッサはその機
能ユニットでM長命令を実行する準備が出来ているの
で、何の特別な行動もとられない。もしL>Mであるな
らば、そのプロセッサは、M機能ユニットでM長命令を
実行するためにLーM機能ユニットを停止させることに
よりプログラムのLOPに一致するようにそのLOPを
減少させる。
【0019】もしL<Mならば、そのプロセッサはその
LOPを変更しないが、そのプロセッサがM長命令の実
行を完了するためにQ個のL長命令と1つのR長命令を
順次実行する不定LOPモードと呼ばれる特別のモード
にその実行モードを設定する。ここで、M=L×Q+
R、但しQ>0で、且つ0≦R<Lである。そのプロセ
ッサが最後のR長命令を実行する前に、それはLーR機
能ユニットを停止することによりそのLOPをRに減少
させ、そして次のM長命令のためのR長命令の終了後に
オリジナルLOPであるLを回復する。M長命令を実行
するこの方法は、M長命令内のいかなる後続L、または
R単位命令も並行して実行できるので、何の問題も引き
起こさない。これは、M長命令内のM単位命令がいかな
る相互依存性も持たないからである。その命令内に包含
されたL、またはR単位命令のいずれも相互依存性を持
たない。
【0020】上述の一般の場合は複雑な命令実行機構を
必要とする。命令実行機構を単純にするために、VLI
WプロセッサのLOP、つまり論理プロセッサの数Lと
プログラムのLOP、つまり論理プロセッサの数Mと
は、2の累乗、つまりL、M=1、2、4、8、...
として選ばれる。それで、L<Mに対して、M=L×Q
+Rとなり、ここでR=0である。つまり、VLIWプ
ロセッサはM長命令を完了するためにQ個のL長命令を
順次実行する。このスキームは本質的にその不定LOP
モードを排除して、命令実行での特別な行動を代用す
る。これは、プログラム内のM長命令のシーケンスがい
かなる特別行動も必要としないでM長命令当りQ個のL
長命令を有するL長命令のシーケンスとして簡単に解読
できるので、可能である。従って、LOP命令内に組み
込まれた並列処理のレベルとVLIWプロセッサ内の並
列処理整合機構とで、プログラムは異なるレベルの並列
処理を有する異なるVLIWプロセッサで実行できる。
逆に、異なるレベルの並列処理を有する異なるプログラ
ムはVLIWプロセッサで実行できる。
【0021】要約すれば、プログラムの固定長VLIW
命令を実行する前にプログラムのLOPに並列処理のそ
のレベルを一致させるVLIWの効率を増すためのVL
IWプロセッサが提供される。これは異なるアプリケー
ションのために要求される同じVLIWプロセッサ構成
の異なるプロセッサのためにオブジェクトレベル・コー
ド互換性が保たれるようにする。整合(突合わせ)は、
プロセッサの機能ユニットを停止することを通じてプロ
セッサのLOPを減少させることによるか、またはプロ
グラム内の各VLIW命令の順次一部分を実行するプロ
セッサを通じてプログラムのLOPを効果的に減少させ
ることによるいずれかで達成される。順次一部分の長さ
は、プロセッサがVLIW命令として扱うことが出来る
動作数以下である。ある形態においては、LOPは、各
々が固定長単位命令により指定され、相互依存性を持た
ないVLIW命令に符号化され、そして並行して実行さ
れる動作数で規定される。この形態において、VLIW
プロセッサのLOPは、プロセッサが実行できる命令内
に包含された単位命令数に等しいVLIW命令の長さと
なるように定義される。プログラムのLOPは、VLI
Wプロセッサ用のVLIWコンパイラにより生成された
VLIW命令としてグループ化された単位命令数となる
ように定義される。従って、プログラム内のVLIW命
令を構成する単位命令の全ては相互に独立しており、そ
して並行して実行可能であるので、そしてVLIW命令
内のいかなる後続単位命令も並行して実行可能である。
故にVLIWプロセッサのLOPがプログラムのLOP
よりも小さい時にはVLIWプロセッサがプログラム内
の各VLIW命令の一部分のみを順次読み取ることが可
能となる。
【0022】
【発明の実施の形態】
実施の形態1.図1において、VLIWプロセッサ10
は、論理プロセッサ(LOP)12を有し、LOP比較
ユニット14に結合される。コンパイルされたプログラ
ム(実行可能コード:executable code)16は、論理
プロセッサ(LOP)18を有し、同様にLOP比較ユ
ニット14に結合される。VLIWプロセッサ10の論
理プロセッサ12は、VLIWプロセッサ内の機能ユニ
ットの数により定義され、またVLIW命令語の命令フ
ィールドの数を定義する。各命令フィールドは所定の機
能ユニットの制御に応ずることは理解されよう。この制
御により、VLIWプロセッサ10は、並列に、各命令
フィールド内に符号化された複数の単位命令を処理でき
る。各命令フィールドは、いかなるタイプの単位命令、
すなわち対応機能ユニットの動作を指定する単位命令に
適応するように設計される。
【0023】コンパイルされると、プログラムは、一つ
のVLIW命令語として並列に実行できる単位命令の数
により定義された論理プロセッサを有する。一般に、V
LIW命令語の長さは、前記VLIWプロセッサと前記
プログラムとの両方の論理プロセッサを定義する。従っ
て、VLIWプロセッサの機能ユニットの数は、適用で
きるVLIW命令語の長さを規定する。別のプロセッサ
でコンパイルされたプログラムを走らせる時、所定のプ
ロセッサのVLIW命令語の長さは、前記プログラムに
対応するVLIW命令語の長さと異なることは良く知ら
れている。
【0024】VLIWプロセッサ10の論理プロセッサ
の数が前記プログラムの論理プロセッサの数よりも大き
い場合は、VLIWプロセッサ内の所定の機能ユニット
を停止させることによりVLIWプロセッサの論理プロ
セッサの数を減少させる。停止された機能ユニットは他
の動作にも利用可能であることは理解されよう。他方、
VLIWプロセッサ10の論理プロセッサの数が前記プ
ログラムの論理プロセッサの数よりも小さい場合は、前
記プログラムの有効VLIW命令語の長さは、前記プロ
グラム内の各VLIW命令語の一部分のみを実行するこ
とにより低減される。プログラム内のVLIW命令語の
一部分は、全部のVLIW命令語がフェッチされて実行
されるまで、VLIWプロセッサ10により順次フェッ
チされる。ある形態においては、前記プログラムのVL
IW命令語は順次等しい長さのセグメントでフェッチさ
れ、最後にVLIW命令語の半端な残りがフェッチされ
る。但し、説明されるように、前記半端な残りのフェッ
チシーケンスは、論理プロセッサの数が2の累乗で表現
されるときには存在しない。なぜなら、上記のように分
割されたVLIW命令語は半端な残りをもたないからで
ある。
【0025】図2において、プログラム20は、VLI
W命令語22とプログラムの論理プロセッサの数の指示
24とから成る。この例においては、指示24はLOP
−Xでラベル付けされ、プログラムの論理プロセッサは
ここではXにより表されている。プログラム20の論理
プロセッサの数はMであり、それはVLIWプロセッサ
により実行されるべき並列動作数を表すことに留意すべ
きである。符号26は、VLIWプロセッサ10の論理
プロセッサの数を示し、ここではLOPーPでラベル付
けされ、その値はLにより示される。LOPーXとLO
PーPとは、判断ブロック32により示されるように、
並列処理整合部30のLOP比較ユニット28で比較さ
れる。もしもMがLよりも大きければ、不定LOPモー
ド制御部34が起動され、フェッチ部36によりVLI
W命令語22から単位命令が取り出される。現在の論理
プロセッサの数の指示LOPーCが符号38で示される
ようにLに設定される。それ以後、不定LOPモード制
御部34はVLIW命令語22の一部分、つまり単位命
令を順次読み取る。これはそのVLIW命令語をLのQ
倍に分割することにより達成される。もしも残留単位命
令があれば、この残留単位命令は最後に実行される。V
LIW命令語の残留部分が実行されるようにLOPーC
はRに設定されることは理解されよう。
【0026】もしもMがLよりも小さければ、M個の機
能ユニット40はVLIWプロセッサ10で起動され、
(L−M)個の機能ユニットは停止される。故に、VL
IWプロセッサとプログラムの論理プロセッサの数が整
合し、後述する不整合問題がなくなる。
【0027】図3において、従来のVLIWプロセッサ
は、3つの整数ユニット(IU)42、44、46と、
2つの浮動小数点ユニット(FPU)48、50と、2
つのメモリユニット(MU)52、54と、1つのシー
ケンス制御ユニット(SCU)56とを含む。前記整数
ユニットは、整数加算や論理積などの整数計算および論
理演算を行う。前記浮動小数点ユニットは、浮動小数点
加算および乗算などの浮動小数点演算を行う。前記メモ
リユニットは、ロードや記憶などのメモリアクセス動作
を行う。最後に、前記シーケンス制御ユニットは、ブラ
ンチ動作を行う。前記整数ユニット、前記浮動小数点ユ
ニット、及び前記メモリユニットは、レジスタを含むレ
ジスタファイル58を共有することに留意すべきであ
る。
【0028】このVLIWプロセッサのVLIW命令語
は、f0からf7までに対応する8つの命令フィールド
60、62、64、66、68、70、72、74から
成る。命令フィールドf0、f1、f2は前記整数ユニ
ットの動作を各々制御する。命令フィールドf3とf4
は前記浮動小数点ユニットの動作を各々制御する。命令
フィールドf5とf6は前記メモリユニットの動作を制
御する。また、命令フィールドf7はシーケンス制御ユ
ニットの動作を制御する。
【0029】図3のVLIWプロセッサは並行して8つ
の動作まで実行できる。図3に示すように、従来のVL
IWプロセッサのVLIW命令語の各命令フィールド
は、VLIWプロセッサ内に実装された複数の機能ユニ
ットに対応し、そしてその機能ユニットは必ずしも同種
類のものである必要はない。一旦、VLIWプロセッサ
がある種類の一定数の機能ユニットで実装されると、コ
ンピュータや半導体技術の進歩に追い付くためにそれら
の数や機能性を後で変更することは非常に困難である。
機能ユニットの数や機能性に関するいかなる変更もプロ
グラムの全ての完全な再コンパイルを必要とする。これ
は明かに不都合である。
【0030】図4は、従来のVLIWプロセッサと、こ
の発明に係るVLIWプロセッサの動作を説明するため
に、プログラミング言語Cで書かれたプログラム断片の
ソースコードを示す。
【0031】図5は、図9に列挙された命令語を用い
て、図4のプログラム断片から翻訳されたアッセンブリ
コードである。このコードにおいて、「#xyz」はレ
ジスタを示し、変数xyzの値を保持する。簡単にする
ために、異なる変数の全てが異なるレジスタ内に記憶で
きるほど多くのレジスタがあると仮定する。
【0032】図6は、図5に示すアッセンブリコードの
各命令の基本ブロック、タイプ、及びデータ依存性を示
す。基本ブロックは、最後に位置したものを除いて、い
かなる分岐命令も含まない命令の順序ブロックである。
図7は、基本ブロック間の関係を示す。各基本ブロック
は符号100、102、104、106、108、11
0が付されている。Bー1とラベル付けされた基本ブロ
ック100は、命令01と02を含む。Bー2とラベル
付けされた基本ブロック102は、命令03を含む。B
ー3とラベル付けされた基本ブロック104は、命令0
4と05を含む。Bー4とラベル付けされた基本ブロッ
ク106は、命令06から45までを含む。Bー5とラ
ベル付けされた基本ブロック108は、命令46から4
8までを含む。最後に、Bー6とラベル付けされた基本
ブロック110は、命令49を含む。基本ブロック10
0からの矢印111と112は、基本ブロック102へ
の順次実行路と、基本ブロック110への分岐路を各々
示す。これらの経路の何れかが、条件付分岐命令02に
よる条件判断の結果により決められる。矢印113は、
実行が基本ブロック102から基本ブロック104へ無
条件に進むことを示す。矢印114と115は基本ブロ
ック106への順次実行路と基本ブロック108への分
岐路を各々示す。それらの経路のいずれかが、条件付分
岐命令05による条件判断の結果により決められる。基
本ブロック106から基本ブロック104への矢印11
6は、分岐命令45により分岐される無条件分岐路を示
す。基本ブロック108から基本ブロック110への矢
印117は順次実行路を示す。これらの矢印は制御の流
れに関する基本ブロックの実行順序を決定し、上記制御
の流れは分岐命令により規定される。
【0033】最後に位置するものを除いていかなる分岐
命令も含まない基本ブロックの範囲内で、命令のデータ
依存性がチェックされ、これらの命令が並列に実行でき
るかどうかを検査する。一般に、2つの命令間に3つの
タイプのデータ依存性がある。次の命令シーケンスを考
えてみよう。 (A) add r1、r2、r3 (B) add r4、r5、r1 (C) add r2、r6、r7 (D) add r2、r2、r9
【0034】データ依存性の第1のタイプは、命令によ
り記憶された値がある他の命令で使用されるときに生ず
るものである。この依存性は命令(A)と(B)間に見
つけられる。命令(A)はレジスタr2とr3内に記憶
された2つの値を加えて、その結果をレジスタr1に記
憶し、前記レジスタr1は命令(B)により使用され
る。この依存関係のため、前記命令(B)は命令(A)
の後に実行されなければならない。
【0035】データ依存性の第2のタイプは、値がある
他の命令で使用された後に命令により重ね書きされると
きに生ずるものである。この依存性は命令(A)と
(C)間に見つけられる。その命令(C)は、命令
(A)がレジスタr2内の値を使用した後にr2へ値を
記憶する。この依存性のため、その命令(A)は命令
(C)に先行しなければならない。
【0036】データ依存性の第3のタイプは、値がある
他の命令により書かれた後に命令により重ね書きされる
とき生ずるものである。この依存性は命令(C)と
(D)間に見つけられる。命令(D)は、命令(C)が
同じレジスタr2内に値を記憶した後にr2に値を記憶
する。この依存関係のため、命令(C)は命令(D)に
先行しなければならない。
【0037】図5に示されるアッセンブリコードにおい
ては、各命令の間には第1のタイプのデータ依存性しか
存在しない。
【0038】図8は、図5のアッセンブリコードの依存
性グラフを示し、上位ノードの命令は、上位ノードの命
令に依存する下位ノードの命令の前に実行されなければ
ならない。この指向グラフにおいて、表される各ノード
の番号は命令を識別する番号である。故に、そのグラフ
は命令の実行順序を指定する。幾つかの命令、即ち命令
06、16、33及び38が並列に実行できることが分
かる。命令08、10、12、14及び18は独立して
いるので、それらもまた並列に実行できる。故に、この
グラフは命令の並列実行の可能性を示す。
【0039】図9は、図5で使用された命令を要約す
る。図9に示された命令のリストは、図5で使用された
命令のみを含み、そして要約された命令は整数命令、浮
動小数点命令、メモリ命令、及びシーケンス制御命令を
記述していることに留意すべきである。
【0040】図10は、図3に示されるVLIWプロセ
ッサのような、従来のVLIWプロセッサのための図5
のアッセンブリコードから発生されたプログラム(の行
番号)を示す。それは、並列に実行できる8つの命令ま
でVLIW命令語にパックすることにより発生される。
同図において「−」はNOP(No Operation)、つまり
無動作を示すことに留意すべきである。
【0041】NOPで占有されるフィールドの数は、プ
ログラムのサイズだけでなく、VLIWプロセッサの効
率にも大いに影響を及ぼす。並列処理が豊富なプログラ
ムは、少数のNOPフィールドを含む小さなプログラム
にコンパイルされることが予想される。他方、並列処理
が豊富でないプログラムは、多数のNOPフィールドを
含む大きな非高率なプログラムにコンパイルされること
が予想される。前記コード変換の効率は、プログラムの
並列処理を検出するコンパイラの能力によっても非常に
影響を受ける。
【0042】VLIW命令語のフォーマットが機能ユニ
ットに関するVLIWプロセッサの内部構造を直接的に
反映するので、異なる構造を有するVLIWプロセッサ
に同じVLIW命令語を使用することは非常に難しい、
そして可能であっても非常に非効率的である。従って、
異なるVLIWプロセッサの間でオブジェクトレベルの
コードの互換性を保つことはほとんど不可能であり、異
なるアプリケーションを必要とする。
【0043】以下は、従来のVLIWプロセッサにまつ
わる問題を列挙する。第1に、VLIWプロセッサは並
列処理量が異なる広範囲のプログラムを効率的に支持で
きない。第2に、VLIWコンパイラは、VLIW命令
語内に少数のNOPフィールドを含む品質コードを生成
するために精巧であるが、時間のかかる技術を使用しな
ければならないので、大規模で、且つ非常に複雑となる
傾向がある。第3に、VLIWプロセッサ内の機能ユニ
ットのいかなる変更もプログラムの全ての完全な再コン
パイルを必要とする。最後に、異なるVLIWプロセッ
サの導入のために同じVLIW命令語セットを使用する
ことは非常に難しく、そして非効率的である。従って、
従来のVLIWプロセッサのアーキテクチャは、スケー
ラブルではない。
【0044】従来のVLIWプロセッサの欠点を解消す
るために、この発明は、機能ユニットに関して異なるプ
ロセッサの導入を可能にする新しいスケーラブルなVL
IWプロセッサのアーキテクチャに関するものである。
【0045】図11は、この発明に係るVLIWプロセ
ッサ、即ち図1及び図2のVLIWプロセッサを示すブ
ロック図である。VLIWプロセッサ10はFU0から
FU7までラベル付けした8つの同じユニットを有する
機能ユニット120を含む。一般に、機能ユニットの数
は何個でも良い。VLIWプロセッサ10は、命令バッ
ファ(IBUF)122を含み、それは命令レジスタ
(IR)124に接続され、さらに命令レジスタ124
は命令デコーダ(IDEC)126に接続される。この
命令デコーダ126は、VLIWプロセッサ10内の種
々のブロックに、ライン130を通じてレジスタファイ
ル(RF)128に結合されたレジスタアドレスを含む
コントロール情報を提供する。命令デコーダ126は、
機能ユニットにより実行されるべき動作のタイプを表す
コントロール情報もライン132を通じて供給する。
【0046】また、命令デコーダ126は、ライン13
4を通じてシーケンス制御部(SCU)136に信号を
出力し、命令フェッチ部138の命令フェッチ動作を制
御する。適切なアドレスをメモリ142に供給すること
により、命令がメモリ142からメモリ制御部(MC
U)140を介して取り出される。それが、命令バッフ
ァ122へのメモリ142の読み出しである。メモリ制
御部140は、メモリ142からデータを取り出して、
このデータをレジスタファイル128内のレジスタに記
憶するためにも使用される。更に、メモリ制御部140
は、レジスタファイル128内のレジスタからのデータ
をメモリ142に記憶するために使用される。
【0047】図12は、図11に示されるVLIWプロ
セッサのためのVLIW命令語のフォーマットを示す。
それはf0からf7により指示される8つの命令フィー
ルド150、152、154、156、158、16
0、162及び164から成る。各命令フィールドは、
機能ユニットの一つで実行すべき動作を指定する一つの
単位命令以外を保持する。各命令フィールドが特定の種
類の機能ユニットにおける特定の動作に決められる従来
のVLIW命令語と違って、この発明のVLIW命令語
はいろいろな単位命令をいずれの命令フィールドにも配
置できるようにする。
【0048】VLIWプロセッサのアーキテクチャの一
部として定義されるVLIW命令語は、N個の命令フィ
ールドから成り、各々が一つの単位命令を含む。前記単
位命令は、演算および論理命令などの、従来の順次処理
プロセッサ、即ち、非並列処理プロセッサで使用される
伝統的な命令の一つ、またはVLIWプロセッサのアー
キテクチャのために新たに定義された特別な命令の一つ
である。
【0049】一般に、N個の命令フィールドを有するV
LIW命令語はN長命令と呼ばれ、N長命令のセットは
N長命令セットと呼ばれる。N長命令内に含まれるN個
の単位命令は資源アクセス(例えば、レジスタやメモリ
のアクセス)に関していかなる相互依存性をも持たない
ので、それらは並列に実行できる。図12で示されたV
LIW命令語は8長命令である。
【0050】VLIWプロセッサ10は、(8−k)個
の機能ユニットを停止することによりk個の機能ユニッ
トを使用することができる。但し、0<k≦8の関係が
ある。図13(a)〜(d)は、実行すべき単位命令1
70の数により8、4、2及び1個の機能ユニットを各
々組込む機能ユニット120の4つの構成を示す。機能
ユニットの数は、8つの機能ユニットからなるオリジナ
ルセットから0、4、6及び7個の機能ユニットを停止
することによる一実施例で得られる。
【0051】この発明の一実施例において、並列に単位
命令により各々実行できる動作数に等しい並列処理の
数、つまり論理プロセッサの数は、VLIWプロセッサ
と、VLIW命令語から成るコンパイルされたプログラ
ムのために規定される。前記VLIWプロセッサは、自
己の論理プロセッサの数を前記プログラムの論理プロセ
ッサの数に一致させる。
【0052】N長命令セットを実行できるVLIWプロ
セッサは論理プロセッサの数がN(LOP=N)を有す
ると言われる、つまりそのVLIWプロセッサはN長命
令内のN個の単位命令により指定されるN個の動作を並
列に実行できる。N個の論理プロセッサを有するVLI
Wプロセッサは、各々がN長命令の一つの命令フィール
ドにより指定される一つの単位命令を実行できるN個の
機能ユニットを持つ。N個の機能ユニットの各々は、N
個の機能ユニットの全てが命令フェッチ部、シーケンス
制御部、レジスタファイル、及びメモリ制御部を共用す
ることを除いて、従来の順次処理プロセッサ内の独立C
PU(中央処理装置)のように動作する。
【0053】並列処理の数は、コンパイルされたプログ
ラムのためにも定義される。N個の論理プロセッサ(L
OP=N)を有するプログラムは、N長命令としてN個
の単位命令のシーケンスを実行することにより達成でき
る。VLIWコンパイラが元のプログラムをN個の論理
プロセッサを有するプログラムにコンパイルする時、N
長命令として取り出されるシーケンスにおけるN個の単
位命令は資源アクセスに関して何の相互依存性も持たな
いので、それらが並列に実行できることを保証する。
【0054】本発明において、LOP命令と呼ばれる命
令は、プログラムの並列処理のレベル、つまり数を指示
するために定義される。それがVLIWプロセッサ内で
実行されると、VLIWプロセッサの並列処理整合機構
はプログラムの並列処理の数(LOP)で並列処理の数
(LOP)を調整する。
【0055】図14において、前記並列処理整合機構の
動作を表すフローチャートを示す。前記並列処理整合機
構の動作はステップ180で開始し、ステップ182に
おいてプログラムの論理プロセッサの数(LOP−X=
M)を取得する。VLIWプロセッサの論理プロセッサ
の数(LOP−P=L)はステップ184で得られ、プ
ログラムとVLIWプロセッサの論理プロセッサの数は
ステップ188の判断ブロックを介してステップ186
で比較される。もしもMがLに等しければ、不定LOP
モードはステップ190でオフに切り換えられる。もし
もMがLよりも小さければ、VLIWプロセッサの現在
の論理プロセッサの数はステップ198でMに設定され
る。ステップ200において、(L−M)個の機能ユニ
ットを停止して、同様にステップ190において不定L
OPモードをオフに切り換える。もしもMがLよりも大
きければ、現在の論理プロセッサの数はステップ192
においてLに設定される。それ以後、不定LOPモード
はステップ194においてオンに切り換えられて、不定
LOPモード制御部はステップ196において起動され
る。前記不定LOPモードは、VLIWプロセッサがプ
ログラムから一部のVLIW命令を取り出す特別のモー
ドである。
【0056】一例として、VLIWプロセッサの論理プ
ロセッサの数がLであり、プログラムの論理プロセッサ
の数がMである場合、もしL=Mであるならば、VLI
WプロセッサはM個の機能ユニットでM長命令を実行す
る準備ができているので、何の動作もとられない。もし
L>Mであるならば、VLIWプロセッサは(LーM)
個の機能ユニットを停止することによりその論理プロセ
ッサの数を減少させて、プログラムの論理プロセッサの
数に一致させる。
【0057】もしL<Mであるならば、VLIWプロセ
ッサは自分の論理プロセッサの数を変更しないが、その
実行モードを不定LOPモードと呼ばれる特別のモード
に設定する。そのモードでVLIWプロセッサはM長命
令の実行を完了するためにQ回のL長命令と1回のR長
命令とを実行する。ここで、M=L×Q+Rである。但
し、Q>0、0≦R<Lである。VLIWプロセッサが
最後のR長命令を実行するときは、(LーR)個の機能
ユニットを停止することによりVLIWプロセッサの論
理プロセッサの数をRに減少させる。M長命令内のM個
の単位命令はいかなる相互依存性も持たないので、M長
命令内のL個、またはR個の単位命令は並列に実行でき
る。故にM長命令を実行するこの方法は何の問題も起こ
さない。
【0058】図15は、不定LOPモードの動作を示す
図である。ステップ202から始まって、コードの終了
はステップ204でチェックされる。もしも前記コード
の終了がステップ204で検出されるならば、その動作
はステップ206で終了する。もしそうでなければ、M
長命令はステップ208で取り出されて実行される。M
長命令の取り出しと実行は、前記コードの終了がステッ
プ204で検出されるまで繰り返される。
【0059】M長命令取り出しと実行ブロック208
で、MをLで割ることにより得られた商Qは、ステップ
210において「i」に割り当てられる。判断ステップ
212では、iの値がゼロに等しいかどうかをチェック
する。もしそうでなければ、L個の単位命令はステップ
214で取り出されて、ステップ216で実行される。
iの値はステップ218で1だけ減算されて、判断ステ
ップ212に戻る。もしiの値がステップ212でゼロ
であることが分かれば、MをLで割ることにより得られ
た余りであるRの値は、ステップ220でチェックされ
る。もし余りRがゼロであるならば、M長命令取り出し
と実行ブロック208は終了する。もし余りRがゼロに
等しくなければ、現在のLOPであるLOPーC、つま
り論理プロセッサの数は、ステップ222においてRに
設定される。次に、R個の単位命令はステップ224で
取り出されて、ステップ226で実行される。ステップ
226でのR個の単位命令の実行後、現在のLOPはス
テップ228においてLに戻るように設定され、M長命
令取り出しと実行ブロック208は終了する。
【0060】一実施例では、プログラムのLOPは、そ
のフォーマットが整合lopである、整合(match)命
令と呼ばれる特別の命令によりVLIWプロセッサに転
送される。
【0061】VLIWプロセッサのこの整合命令の実行
は、並列処理整合機構を起動し、自身のLOP、つまり
論理プロセッサの数を、前記整合命令のオペランドによ
り規定されるプログラムのLOP、つまり論理プロセッ
サの数に調整する。
【0062】図16は、並列処理整合機構と不定LOP
モード制御部の一形態をハードウェアで示す。IRとラ
ベル付けされた命令レジスタ124は、その値がこの例
ではMであるプログラムのLOPを保持する。例えば、
そのオペランドとしてプログラムのLOPを有する上述
の整合命令は命令レジスタ124内に記憶される。VL
IWプロセッサのLOPは、LOPーPとラベル付けさ
れたレジスタ230内に記憶される。VLIWプロセッ
サのLOPの値はこの例においてはLである。命令レジ
スタ124とLOPーPレジスタ230とはライン25
4と256とを介してコンパレータ232に各々接続さ
れる。このコンパレータ232はプログラムのLOPと
VLIWプロセッサのLOPとを比較する。コンパレー
タ232の出力は、もしMがLよりも大きければ、ライ
ン258を介して不定LOPモードフラグILM234
をオンに切り換える。コンパレータ232で生成された
現在のLOP値はライン260を介してLOPーCレジ
スタ236内に記憶される。LOPーCレジスタ236
内に記憶された値はライン262を介して起動デコーダ
(ADEC)238に送られる。この起動デコーダ23
8は機能ユニットの起動信号を発生し、それらをライン
264を介して機能ユニット起動レジスタ(FUAR)
240に送る。前記起動レジスタ240からの起動信号
は、ライン266、268、270、272、274、
276、278及び280を介して機能ユニット120
を制御する。
【0063】LOPーPレジスタ230は、ライン25
6を介してLOPーCレジスタ236に接続される。レ
ジスタ230内に記憶されたVLIWプロセッサのオリ
ジナルLOPがLOPーCレジスタ236にコピーされ
る。このコピーは、VLIW命令語の残留部分が不定L
OPモードシーケンス内で取り出されて実行された後に
行われる。
【0064】命令レジスタ124とLOPーPレジスタ
230とはライン254と256とを介して除算器(Q
R)242にも各々接続される。この除算器242は、
MをLで割ることにより商Qと余りRとを計算し、ライ
ン282と284とを介して商レジスタ(QR)246
と余りレジスタ(RR)248に商Qと余りRを各々送
る。除算器242で計算された商Qは、ライン282を
介してLレジスタ(LR)244内にも記憶される。こ
のLレジスタ244は、取り出すべきVLIW命令語の
部分の数を保持するために使用される。VLIW命令が
プログラムから取り出される度に、商レジスタ246か
ら商QがLレジスタ244内にライン286を介して記
憶される。Lレジスタ244は、Lレジスタ244の値
が1だけ減算される減算器(DECR)250にライン
290を介して接続される。減算器250はその更新さ
れたカウント値を記憶するためにライン292を介して
Lレジスタ244に接続される。Lレジスタ244は、
Lレジスタ244のカウント値がゼロか否かをチェック
するゼロチェッカ(ZERO)252にも290を介し
て接続される。
【0065】余りレジスタ248は、ライン288を介
してゼロチェッカ(ZERO)254とLOPーCレジ
スタ236に接続される。Lレジスタ244内のカウン
ト値がゼロになり、これがゼロチェッカ252で検出さ
れると、余りレジスタ248内の値は、それがゼロチェ
ッカ254においてゼロであるかどうかを確認するため
にチェックされる。もし余りレジスタ248がゼロでな
い所定の値を保持するならば、その値はライン288を
介してLOPーCレジスタ236内に記憶されるので、
VLIW命令の最後の部分は実行のためにプログラムか
ら取り出すことができる。
【0066】図17は、プログラム20の論理プロセッ
サの数(LOP)が8で、VLIWプロセッサ10の論
理プロセッサの数(LOP)が3である不定LOPモー
ドの場合を示す。VLIW命令22はf0からf7まで
ラベル付けされた8つの命令フィールドを有する。VL
IWプロセッサ10のLOPはプログラム20のLOP
よりも小さいので、VLIWプロセッサ10はVLIW
命令22を3つに分割することによりVLIW命令22
を取り出して実行する。第1の部分は命令フィールドf
0からf2までの3つの単位命令から成り、第2の部分
は命令フィールドf3からf5までの3つの単位命令か
ら成り、そして最後の部分は命令フィールドf6及びf
7の2つの単位命令から成る。これらの部分はVLIW
プロセッサ10内で順次取り出されて実行される。
【0067】論理プロセッサの数(LOP)がVLIW
プロセッサのLOPよりも大きいプログラムは、VLI
WコンパイラによりVLIWプロセッサのLOPに等し
く容易に変換できる。この変換は、VLIWプロセッサ
の不定LOPモードが必ずしも効率的でないので、実行
能力に関して時には望ましい。
【0068】図18は、前記のような変換を示す。同図
において、VLIWプロセッサは3のLOPを有し、プ
ログラムは8のLOPを有する。プログラムは2つの8
長命令260と262から成る。8長命令260はa0
からa7までの8つの単位命令を含み、8長命令262
はb0からb7までの8つの単位命令を含む。各8長命
令を3つの3長命令に変換することによりプログラムが
3のLOPを有するものに変換される。8長命令260
は3つの3長命令264、266及び268に、そして
8長命令262は3つの3長命令270、272及び2
74に変換される。完全な3長命令を作るために、NO
P単位命令が3長命令268と274内に挿入される。
【0069】上述の一般的な場合は、複雑な命令実行機
構を必要とする。この命令実行機構を簡単にするため
に、VLIWプロセッサの並列処理のレベル、つまり論
理プロセッサの数Lと、プログラムの並列処理のレベ
ル、つまり論理プロセッサの数Mとは2の累乗として選
ばれる。すなわち、L、M=1、2、4、8、・・・。
従って、L<Mに対して、M=L×Q+R、ここでR=
0、つまり、VLIWプロセッサはM長命令を完了する
ためにQ個のL長命令を実行する。プログラムのM長命
令のシーケンスが、いかなる特別の動作も要求すること
無く、M長命令についてQ個のL長命令であるL長命令
のシーケンスとして単純に解読できるので、前記のスキ
ーム、つまり論理プロセッサの数(LOP)が2の累乗
に選ばれた機構は、命令実行で残留部分のための特別な
動作を取るための不定LOPモードを本質的に無くす。
【0070】図19は、プログラム20のLOPが8で
あり、VLIWプロセッサ10のLOPが4である不定
LOPモードの場合の様子を示す。プログラム20内の
VLIW命令22はf0からf7までラベル付けされた
8つの命令フィールドから成る。VLIWプロセッサ1
0のLOPはプログラム20のLOPよりも小さいの
で、VLIWプロセッサ10はVLIW命令22の2つ
の部分を順次に取り出す。この場合、取り出す必要があ
る残留部分がないことに留意すべきである。
【0071】図20は、LOP=8を有するプログラム
からLOP=4を有するものとLOP=2を有するもの
への変換を示す。プログラムは2つの8長命令260と
262とから成り、それらは図18と同様の命令であ
る。8長命令260と262とは、4つの4長命令28
0、282、284及び286と、8つの2長命令29
0、292、294、296、298、300、302
及び304とに変換される。全てのLOPは2の累乗で
あるので、図18のように考慮すべき残留部分は存在し
ない。各変換は単に単位命令のシーケンスの異なる解読
でしかない。
【0072】図21は、本発明に係るLOP=4を有す
るVLIWプロセッサのための図5のアッセンブリコー
ドから得られるプログラムの各ステップを示す。プログ
ラムは01から17までの17個の4長命令から成る。
図7のブロック106に包含される40個の単位命令は
06から45までの10個の4長命令にパックされるこ
とに留意すべきである。
【0073】従って、LOP命令内に組み込まれた並列
処理のレベル、つまり論理プロセッサの数とVLIWプ
ロセッサ内の並列処理整合機構とで、プログラムは並列
処理の異なるレベル、つまり異なる論理プロセッサの数
を有する別のVLIWプロセッサで実行できる。逆に、
並列処理の異なるレベル、つまり異なる論理プロセッサ
の数を有する別のプログラムはVLIWプロセッサで実
行できる。
【0074】本発明の幾つかの形態を説明してきたが、
修正や変形が本発明の範囲内で実施可能であることは当
業者には想起されよう。故に、本願発明は特許請求の範
囲に記載に制限されるものではない。
【0075】
【発明の効果】この発明に係るVLIWプロセッサは、
以上説明したとおり、コンパイルされたプログラムに組
み込まれたVLIW命令の並列処理のための機能ユニッ
トを有するVLIWプロセッサにおいて、前記VLIW
プロセッサの並列処理のレベルを規定する手段と、前記
プログラムの並列処理のレベルを規定する手段と、前記
VLIWプロセッサの並列処理のレベルが前記プログラ
ムのものを超えるときは、前記VLIWプロセッサの並
列処理のレベルと等価である前記機能ユニットのうち所
定の数を停止し前記VLIWプロセッサの並列処理のレ
ベルを前記プログラムのものと一致させる手段と、前記
VLIWプロセッサの並列処理のレベルが前記プログラ
ムのものよりも小さいときは、前記VLIWプロセッサ
の機能ユニット毎に前記プログラムの一部分を順次読み
出し、前記VLIWプロセッサと前記プログラムの並列
処理のレベルを一致させる手段とを備えたので、並列処
理の効率を向上することができるという効果を奏する。
【0076】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記プログラムが、固定長命
令を有するので、並列処理の効率を向上することができ
るという効果を奏する。
【0077】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記VLIWプロセッサに読
み出された前記プログラムの一部分の長さが、前記VL
IWプロセッサが命令として扱うことができる動作数以
下であるので、並列処理の効率を向上することができる
という効果を奏する。
【0078】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記並列処理のレベルが、動
作が並列に実行できるように相互に独立している動作数
に等しいので、並列処理の効率を向上することができる
という効果を奏する。
【0079】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記VLIW命令が、いかな
る単位命令もとることができ、N長命令に対応し各々が
1つの単位命令を規定するN個の命令フィールドを有
し、前記VLIWプロセッサは、N長命令内のN個の単
位命令により規定されるN個の動作を並列に実行し、そ
れにより並列処理を達成するための命令フィールドにい
かなる命令を割り当てても何の制限もないので、並列処
理の効率を向上することができるという効果を奏する。
【0080】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記並列処理のレベルが、N
に等しいので、並列処理の効率を向上することができる
という効果を奏する。
【0081】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記プログラムが、並列処理
のレベルNを有し、前記プログラムの一部分を順次読み
出す手段は、N単位命令のシーケンスを実行する手段を
含むので、並列処理の効率を向上することができるとい
う効果を奏する。
【0082】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記プログラムが、等分の部
分と残留部分とを有し、前記順次読み出し手段は、最初
に全ての等分の部分を読み出してから前記残留部分を読
み出す手段を含むので、並列処理の効率を向上すること
ができるという効果を奏する。
【0083】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、前記VLIWプロセッサと前
記プログラムの並列処理のレベルが、2の累乗であるの
で、並列処理の効率を向上することができるという効果
を奏する。
【0084】また、この発明に係るVLIWプロセッサ
は、以上説明したとおり、コンパイルされたプログラム
に組み込まれたVLIW命令の並列処理のための機能ユ
ニットを有するVLIWプロセッサにおいて、前記VL
IWプロセッサの並列処理のレベルを規定する手段と、
前記プログラムの並列処理のレベルを規定する手段と、
前記VLIWプロセッサの並列処理のレベルが前記プロ
グラムのものを超えるときは、前記VLIWプロセッサ
の並列処理のレベルと等価である前記機能ユニットのう
ち所定の数を停止し前記VLIWプロセッサの並列処理
のレベルを前記プログラムのものと一致させる手段とを
備えたので、並列処理の効率を向上することができると
いう効果を奏する。
【0085】さらに、この発明に係るVLIWプロセッ
サは、以上説明したとおり、コンパイルされたプログラ
ムに組み込まれたVLIW命令の並列処理のための機能
ユニットを有するVLIWプロセッサにおいて、前記V
LIWプロセッサの並列処理のレベルを規定する手段
と、前記プログラムの並列処理のレベルを規定する手段
と、前記VLIWプロセッサの並列処理のレベルが前記
プログラムのものよりも小さいときは、前記VLIWプ
ロセッサの機能ユニット毎に前記プログラムの一部分を
順次読み出し、前記VLIWプロセッサと前記プログラ
ムの並列処理のレベルを一致させる手段とを備えたの
で、並列処理の効率を向上することができるという効果
を奏する。
【図面の簡単な説明】
【図1】 この発明に係るVLIWプロセッサのシステ
ムの概要を示す図である。
【図2】 この発明に係るVLIWプロセッサの構成を
示す図である。
【図3】 従来のVLIWプロセッサのためのVLIW
命令語を示す図である。
【図4】 従来のVLIWプロセッサに係る簡易高速フ
ーリエ変換アルゴリズムをC言語で表したプログラムリ
ストを示す図である。
【図5】 図4のプログラムをコンパイルしたコードの
リストを示す図である。
【図6】 図4のプログラムをコンパイルした命令のタ
イプと依存性のリストを示す図である。
【図7】 図5のコンパイルされたコードの基本ブロッ
クの関係を示す図である。
【図8】 図5のコンパイルされた命令の全ての依存性
のグラフを示す図である。
【図9】 図5で使用された命令の注釈を示す図であ
る。
【図10】 図5のコンパイルされた命令をVLIW命
令にパックすることにより得られるVLIW命令のリス
トを示す図である。
【図11】 この発明に係るVLIWプロセッサの構成
を示す図である。
【図12】 この発明に係るVLIWプロセッサのVL
IW命令を示す図である。
【図13】 この発明に係るVLIWプロセッサの概略
動作を示す図である。
【図14】 この発明に係るVLIWプロセッサの動作
を示すフローチャートである。
【図15】 この発明に係るVLIWプロセッサの不定
LOPモードの動作を示すフローチャートである。
【図16】 この発明に係るVLIWプロセッサのハー
ドウェア構成を示するブロック図である。
【図17】 この発明に係るVLIWプロセッサの動作
を説明するための図である。
【図18】 この発明に係るVLIWプロセッサの動作
を説明するための図である。
【図19】 この発明に係るVLIWプロセッサの動作
を説明するための図である。
【図20】 この発明に係るVLIWプロセッサの動作
を説明するための図である。
【図21】 この発明に係るVLIWプロセッサのため
のVLIW命令のリストを示す図である。
【符号の説明】
10 VLIWプロセッサ、12 並列処理のレベル
(LOP)、14 LOP比較ユニット、16 コンパ
イルされたプログラム、18 並列処理のレベル(LO
P)、22 VLIW命令。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 595151497 201 BROADWAY, CAMBRI DGE, MASSACHUSETTS 02139, U.S.A.

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 コンパイルされたプログラムに組み込ま
    れたVLIW命令の並列処理のための機能ユニットを有
    するVLIWプロセッサにおいて、 前記VLIWプロセッサの並列処理のレベルを規定する
    手段と、 前記プログラムの並列処理のレベルを規定する手段と、 前記VLIWプロセッサの並列処理のレベルが前記プロ
    グラムのものを超えるときは、前記VLIWプロセッサ
    の並列処理のレベルと等価である前記機能ユニットのう
    ち所定の数を停止し前記VLIWプロセッサの並列処理
    のレベルを前記プログラムのものと一致させる手段と、 前記VLIWプロセッサの並列処理のレベルが前記プロ
    グラムのものよりも小さいときは、前記VLIWプロセ
    ッサの機能ユニット毎に前記プログラムの一部分を順次
    読み出し、前記VLIWプロセッサと前記プログラムの
    並列処理のレベルを一致させる手段とを備えたことを特
    徴とするVLIWプロセッサ。
  2. 【請求項2】 前記プログラムは、固定長命令を有する
    ことを特徴とする請求項1に記載のVLIWプロセッ
    サ。
  3. 【請求項3】 前記VLIWプロセッサに読み出された
    前記プログラムの一部分の長さは、前記VLIWプロセ
    ッサが命令として扱うことができる動作数以下であるこ
    とを特徴とする請求項2に記載のVLIWプロセッサ。
  4. 【請求項4】 前記並列処理のレベルは、動作が並列に
    実行できるように相互に独立している動作数に等しいこ
    とを特徴とする請求項2に記載のVLIWプロセッサ。
  5. 【請求項5】 前記VLIW命令は、いかなる単位命令
    もとることができ、N長命令に対応し各々が1つの単位
    命令を規定するN個の命令フィールドを有し、前記VL
    IWプロセッサは、N長命令内のN個の単位命令により
    規定されるN個の動作を並列に実行し、それにより並列
    処理を達成するための命令フィールドにいかなる命令を
    割り当てても何の制限もないことを特徴とする請求項4
    に記載のVLIWプロセッサ。
  6. 【請求項6】 前記並列処理のレベルは、Nに等しいこ
    とを特徴とする請求項5に記載のVLIWプロセッサ。
  7. 【請求項7】 前記プログラムは、並列処理のレベルN
    を有し、前記プログラムの一部分を順次読み出す手段
    は、N単位命令のシーケンスを実行する手段を含むこと
    を特徴とする請求項6に記載のVLIWプロセッサ。
  8. 【請求項8】 前記プログラムは、等分の部分と残留部
    分とを有し、前記順次読み出し手段は、最初に全ての等
    分の部分を読み出してから前記残留部分を読み出す手段
    を含むことを特徴とする請求項6に記載のVLIWプロ
    セッサ。
  9. 【請求項9】 前記VLIWプロセッサと前記プログラ
    ムの並列処理のレベルは、2の累乗であることを特徴と
    する請求項8に記載のVLIWプロセッサ。
  10. 【請求項10】 コンパイルされたプログラムに組み込
    まれたVLIW命令の並列処理のための機能ユニットを
    有するVLIWプロセッサにおいて、 前記VLIWプロセッサの並列処理のレベルを規定する
    手段と、 前記プログラムの並列処理のレベルを規定する手段と、 前記VLIWプロセッサの並列処理のレベルが前記プロ
    グラムのものを超えるときは、前記VLIWプロセッサ
    の並列処理のレベルと等価である前記機能ユニットのう
    ち所定の数を停止し前記VLIWプロセッサの並列処理
    のレベルを前記プログラムのものと一致させる手段とを
    備えたことを特徴とするVLIWプロセッサ。
  11. 【請求項11】 コンパイルされたプログラムに組み込
    まれたVLIW命令の並列処理のための機能ユニットを
    有するVLIWプロセッサにおいて、 前記VLIWプロセッサの並列処理のレベルを規定する
    手段と、 前記プログラムの並列処理のレベルを規定する手段と、 前記VLIWプロセッサの並列処理のレベルが前記プロ
    グラムのものよりも小さいときは、前記VLIWプロセ
    ッサの機能ユニット毎に前記プログラムの一部分を順次
    読み出し、前記VLIWプロセッサと前記プログラムの
    並列処理のレベルを一致させる手段とを備えたことを特
    徴とするVLIWプロセッサ。
JP7314333A 1994-12-09 1995-12-01 Vliwプロセッサ Pending JPH08241200A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/352927 1994-12-09
US08/352,927 US5600810A (en) 1994-12-09 1994-12-09 Scaleable very long instruction word processor with parallelism matching

Publications (1)

Publication Number Publication Date
JPH08241200A true JPH08241200A (ja) 1996-09-17

Family

ID=23387045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7314333A Pending JPH08241200A (ja) 1994-12-09 1995-12-01 Vliwプロセッサ

Country Status (2)

Country Link
US (1) US5600810A (ja)
JP (1) JPH08241200A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002323982A (ja) * 2001-04-25 2002-11-08 Fujitsu Ltd 命令処理方法
JP2009116458A (ja) * 2007-11-02 2009-05-28 Mitsubishi Electric Corp 信号処理プロセッサ

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100325658B1 (ko) * 1995-03-17 2002-08-08 가부시끼가이샤 히다치 세이사꾸쇼 프로세서
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6912647B1 (en) * 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6779106B1 (en) 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7249242B2 (en) * 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7400668B2 (en) * 2001-03-22 2008-07-15 Qst Holdings, Llc Method and system for implementing a system acquisition function for use with a communication device
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US20030023830A1 (en) * 2001-07-25 2003-01-30 Hogenauer Eugene B. Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
US7046635B2 (en) * 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) * 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7602740B2 (en) * 2001-12-10 2009-10-13 Qst Holdings, Inc. System for adapting device standards after manufacture
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7088825B2 (en) * 2001-12-12 2006-08-08 Quicksilver Technology, Inc. Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7231508B2 (en) * 2001-12-13 2007-06-12 Quicksilver Technologies Configurable finite state machine for operation of microinstruction providing execution enable control value
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US7493375B2 (en) 2002-04-29 2009-02-17 Qst Holding, Llc Storage and delivery of device features
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7328414B1 (en) * 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7478031B2 (en) 2002-11-07 2009-01-13 Qst Holdings, Llc Method, system and program for developing and scheduling adaptive integrated circuity and corresponding control or configuration information
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US20040148489A1 (en) * 2003-01-28 2004-07-29 Sun Microsystems, Inc. Sideband VLIW processor
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US7609297B2 (en) * 2003-06-25 2009-10-27 Qst Holdings, Inc. Configurable hardware based digital imaging apparatus
US7200837B2 (en) * 2003-08-21 2007-04-03 Qst Holdings, Llc System, method and software for static and dynamic programming and configuration of an adaptive computing architecture
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US7856618B2 (en) * 2005-08-04 2010-12-21 International Business Machines Corporation Adaptively generating code for a computer program
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US8904151B2 (en) * 2006-05-02 2014-12-02 International Business Machines Corporation Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath
KR101814221B1 (ko) 2010-01-21 2018-01-02 스비랄 인크 스트림 기반 계산을 구현하기 위한 범용 다중 코어 시스템을 위한 방법 및 장치
US20140095896A1 (en) * 2012-09-28 2014-04-03 Nicholas P. Carter Exposing control of power and clock gating for software
EP2866138B1 (en) * 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553808A (ja) * 1991-08-28 1993-03-05 Oki Electric Ind Co Ltd 演算処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
US5408658A (en) * 1991-07-15 1995-04-18 International Business Machines Corporation Self-scheduling parallel computer system and method
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553808A (ja) * 1991-08-28 1993-03-05 Oki Electric Ind Co Ltd 演算処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002323982A (ja) * 2001-04-25 2002-11-08 Fujitsu Ltd 命令処理方法
JP2009116458A (ja) * 2007-11-02 2009-05-28 Mitsubishi Electric Corp 信号処理プロセッサ

Also Published As

Publication number Publication date
US5600810A (en) 1997-02-04

Similar Documents

Publication Publication Date Title
JPH08241200A (ja) Vliwプロセッサ
US5649135A (en) Parallel processing system and method using surrogate instructions
US5699536A (en) Computer processing system employing dynamic instruction formatting
US8166450B2 (en) Methods and apparatus for compiling instructions for a data processor
US8312424B2 (en) Methods for generating code for an architecture encoding an extended register specification
US5502826A (en) System and method for obtaining parallel existing instructions in a particular data processing configuration by compounding instructions
JP3976082B2 (ja) 異なった幅のvliwプロセッサコマンド
US7313671B2 (en) Processing apparatus, processing method and compiler
US6965991B1 (en) Methods and apparatus for power control in a scalable array of processor elements
US7181730B2 (en) Methods and apparatus for indirect VLIW memory allocation
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
WO1996029646A1 (en) Processor
US7302557B1 (en) Method and apparatus for modulo scheduled loop execution in a processor architecture
JPH11296381A (ja) 仮想マシン及びコンパイラ
KR100259738B1 (ko) 병렬 연산 기능을 가지는 데이터 처리 장치
CN1114857C (zh) 执行程序指令的装置与方法
JP3146707B2 (ja) 並列演算機能を有する計算機
US7673294B2 (en) Mechanism for pipelining loops with irregular loop control
US6886091B1 (en) Replacing VLIW operation with equivalent operation requiring fewer issue slots
JP5068529B2 (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP2004021890A (ja) データ処理装置
WO2005036384A2 (en) Instruction encoding for vliw processors
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP3419268B2 (ja) プロセッサ
CN120469774A (zh) 指令调度方法、装置、芯片和存储介质