JP2003536132A - Vliwプロセッサでの部分的パイプライン式命令の同期 - Google Patents

Vliwプロセッサでの部分的パイプライン式命令の同期

Info

Publication number
JP2003536132A
JP2003536132A JP2002502587A JP2002502587A JP2003536132A JP 2003536132 A JP2003536132 A JP 2003536132A JP 2002502587 A JP2002502587 A JP 2002502587A JP 2002502587 A JP2002502587 A JP 2002502587A JP 2003536132 A JP2003536132 A JP 2003536132A
Authority
JP
Japan
Prior art keywords
subcommand
pipeline
helper
instruction
stage
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
JP2002502587A
Other languages
English (en)
Inventor
トレンブレイ,マーク
イェルリ,シャレイダ
チャン,ジェフリー・メン・ワ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003536132A publication Critical patent/JP2003536132A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 VLIWプロセッサは、VLIW命令のサブコマンドを並列に実行するための複数のパイプライン(410、425)を有する。各パイプラインは、少なくとも1つの実行ステージ(412、414)およびトラップ・ステージ(422、430)を有する。少なくとも1つのパイプラインは、第1ワード長および第2ワード長のオペランドに対して演算することができ、第2ワード長は第1ワード長よりも長く、第1ワード長は、パイプライン(410、425)のデータ・パス幅と同じである。第2ワード長のオペランドに対するオペレーションの実行は、パイプラインの少なくとも1つの実行ステージ(412、414)で複数のサイクルを必要とする。命令デコーダ(404)は、VLIW命令のシーケンスのサブコマンドをパイプライン・サブコマンドにデコードし、それを第1パイプラインおよび第2パイプライン(410、425)にディスパッチし、VLIW命令の第1サブコマンドが第2ワード長のオペランドに対して演算するとき、命令デコーダ(404)は、少なくとも1つのヘルパ・サブコマンドを第1パイプライン(410)に投入する。同じVLIW命令の第2サブコマンドに関連し、かつ第2パイプライン(425)にディスパッチされる情報が第2パイプライン(425)のトラップ・ステージ(430)に到達すると同時に、第1サブコマンドに関連する情報が第1パイプライン(410)のトラップ・ステージ(422)に進入することが必要であるとき、命令デコーダは、ノーオペレーション・ヘルパ・サブコマンドも第2パイプライン(425)に挿入する。このノーオペレーション・ヘルパ・サブコマンドは、第1サブコマンドが第2ワード長のオペランドに対して演算し、第2サブコマンドが第1ワード長のオペランドに対して演算する場合であっても、トラップ・ステージ(422、425)で情報が同期して到達することを維持する。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本発明は、超長命令ワード(VLIW)プロセッサ・アーキテクチャの分野に
関する。詳細には、本発明は、VLIWマシンのパイプライン中のサブコマンド
の同期に関する。
【0002】 (発明の背景) 今日製造されている、すべての高性能マシンを含むほとんどのマシンは、少な
くともある程度パイプライン化されている。パイプラインは一般に、それぞれが
1つまたは複数のクロック・サイクルを占有する複数の実行ステージを備えるハ
ードウェア実行ユニットである。さらに、複数の実行ステージのうちの異なる各
ステージに、同時に実行されているいくつかの命令が存在することができる。
【0003】 現代のコンピューティング・マシンは、しばしば2つ以上の実行ユニット・パ
イプラインを有する。この各パイプラインは、複数の実行ステージを有する。例
えば、プロセッサは、整数サブコマンド実行用の整数実行パイプラインと、浮動
小数点サブコマンド実行用の浮動小数点実行パイプラインとを有することができ
る。マシンの整数実行パイプラインと浮動小数点実行パイプラインが、サブコマ
ンドのうち1つまたは複数のステージを同時に実行することが多い。
【0004】 典型的な実行パイプラインにしばしば見られる後ろのステージは、「トラップ
」ステージである。トラップ・ステージは、(IEEE 754仕様でのトラッ
プ条件のいずれかを含む)プロセッサ例外を行うべきか、または現在実行中の命
令シーケンスの実行を中断すべきかが判定されるステージである。
【0005】 トラップまたは割込みが行われるとき、トラップまたは割込みが行われるとき
のプロセッサの状態を判定することがしばしば必要となる。プロセッサの状態を
容易に診断し、可能な補正を行い、かつ実行を再開することができるようにトラ
ップを正確に処理することが好ましい。トラップを正確に処理すべき場合、トラ
ップが必要かどうかを判定することができるときは、現命令を実行するすべての
パイプラインがトラップ・ステージに到達する前に、前の状態のデータを現命令
または後の命令で上書きしてしまわないことが望ましい。
【0006】 多くの技術者は、命令をデコードすることができ、オペランドをフェッチする
ことができ、かつそれらを並列に高速でパイプラインに供給することができるこ
とを条件として、並列に実行することができる多数のパイプラインを有するプロ
セッサの方がパイプラインの少ないプロセッサよりも良好な総合性能を実現でき
ると考えている。
【0007】 遺憾ながら、多くのプロセッサは、固有の並列性を有さない2進の命令言語を
理解する。この2進言語を実行して、並列に命令を実行するプロセッサの場合、
プロセッサは、その命令シーケンスを構文解析し、どの命令が並列に実行するこ
とができるかを見つけなければならず、それは自明のタスクではない。さらに、
潜在的並列性を求めるこの構文解析は実行時に行われるので、非常に複雑なハー
ドウェアで迅速に行わなければならない。
【0008】 VLIWプロセッサは通常、明示的並列性を有する2進命令言語を実行する。
明示的並列性を有する2進命令言語では、各命令が、別々のパイプラインで並列
に同時実行するためのサブコマンドを組み込むことができる。VLIWプロセッ
サは、従来型プロセッサに対して必要な2進命令ワードあたりのビット数よりも
多くのビットを必要とする。各サブコマンドが、命令ワード中にビット・フィー
ルドを必要とし、したがってこれらの命令ワードは非常に長くなるからである。
このために超長命令ワードという用語が用いられている。
【0009】 VLIWプロセッサにより、潜在的並列性を求める構文解析を、実行から分離
することが可能となる。したがってこの構文解析は、別々の命令変換ユニットで
行うことができ、またはコンパイル時に行うことができる。コンパイル時に潜在
的並列性を求める構文解析を行うことは、普通なら同様の高い性能を実現するの
に必要となるハードウェアよりも単純なハードウェアを使用することができると
いう利点を有する。
【0010】 多くのプロセッサは、すべての命令を全く同じクロック・サイクル数では実行
しないパイプラインを有する。除算は一般に乗算よりも多くのクロック・サイク
ルを必要とすることが知られている。さらに、整数オペレーションは浮動小数点
オペレーションよりも実行がずっと単純であり、したがって浮動小数点パイプラ
インは、一般に、加算を実行するのに整数パイプラインよりも多くのクロック・
サイクルを必要とすることが知られている。パイプラインが命令を実行するのに
かかるクロック・サイクル数は、パイプラインのレイテンシィである。整数パイ
プラインが同じマシンの浮動小数点パイプラインと同じレイテンシィを有するよ
うに余分なステージを整数パイプラインに加えることができ、かつすべての命令
が同じレイテンシィを有するように余分なステージを浮動小数点パイプラインに
加えることができるが、これは非効率的であることが知られている。パイプライ
ンで実行中のサブコマンドは、依存関係により別のパイプラインが実行を完了す
るのを待つことが必要である場合を除き、可能な限り早期に完了することが望ま
しい。
【0011】 VLIWプロセッサを含む多くの現代のプロセッサは、32ビット・データの
実行用に最適化されている。
【0012】 IEEE−754浮動小数点仕様に記載されているような倍精度浮動小数点命
令などの64ビット・オペランド命令は、32ビット実行ハードウェアと非常に
似たハードウェアで実行することができる。しかし一般には、64ビット・デー
タに対しては32ビット・データよりも多くのクロック・サイクルが必要となる
。例えば、64ビットの乗算は、整数パイプラインの32ビット・アレイ乗算器
ステージで、そのアレイ乗算器を4回通すことによって実行できるのに対し、3
2ビットの乗算はアレイ乗算器を1回通すだけでよい。
【0013】 パイプライン中の64ビット命令の実行は、基本命令と、それに続くヘルパ命
令とをパイプラインに通すことによって制御することができる。例えば基本命令
は、64ビット加算の下半分を処理し、その加算からの桁上げ出力を保存するこ
とができる。次いでそのパイプラインに対する後のヘルパ命令が64ビット加算
の上半分を処理し、その加算中に、保存した桁上げを投入することができる。
【0014】 VLIWプロセッサは、複数のしばしば異なるパイプラインで、命令のサブコ
マンドの並列実行を提供する。これらのサブコマンドは、特に一部が32ビット
、一部が64ビットであり、かつパイプラインが32ビット・データ用に最適化
されている場合、わずかに異なる時間に完了する傾向がある。さらに悪いことに
、所与のパイプラインは、一部のサブコマンドを他のサブコマンドよりもかなり
迅速に完了することがある。したがって、所与のパイプラインは、命令ごとに異
なるレイテンシィを有する可能性がある。
【0015】 トラップを正確に処理するために、特定のVLIW命令のすべてのサブコマン
ドがパイプラインのトラップ・ステージに同時に到達することが望ましい。効率
的な高速オペレーションを維持するために、任意のサブコマンドが、同じ命令の
他の任意のサブコマンドの実際のレイテンシィより長く待機しないことが望まし
い。したがって、命令のサブコマンドを最初に完了するパイプラインにストール
を入れるか、または制御された最小の遅延をそのパイプラインに導入し、それに
よって、その命令のサブコマンドを最後に完了するパイプラインと同時にトラッ
プ・ステージに到達することが望ましい。
【0016】 (発明の概要) 命令のサブコマンドを最初に完了するVLIWプロセッサのパイプラインにス
トールを入れ、それによって高速なパイプラインが、その命令のサブコマンドを
最後に完了する低速なパイプラインと同時にトラップ・ステージに到達するハー
ドウェアを説明する。このハードウェアは、命令のデコードに応じてストール・
ヘルパ命令を生成し、次いでそのストール・ヘルパ命令が、ストールを必要とす
るパイプライン・ステージに投入され、それによって各パイプライン中の有効な
結果が、より低速に命令のサブコマンドを実行するパイプラインと同時にトラッ
プ・ステージに到達する。
【0017】 本発明の上述の特徴および他の特徴、有用性、ならびに利点は、添付の図面に
図示される、以下の本発明の好ましい実施形態のより具体的な説明から明らかと
なろう。
【0018】 (好ましい実施例の詳細な説明) コンピュータ・システムは、内部第1レベル・キャッシュを有する少なくとも
1つのプロセッサ100(図1)を有する。このシステムはまた、第2レベル・
キャッシュ101も有し、必須ではないが、第3レベル・キャッシュ102も有
することができる。必須ではないが、それ自体の第2レベルキャッシュおよび任
意選択の第3レベル・キャッシュ(図示せず)を有する追加のプロセッサ105
があってもよい。キャッシュによって満たされないプロセッサ100からの参照
は、高速ローカル・バス106を介してメイン・メモリ107に向けて送られ、
またはバス・ブリッジ108を介してシステム・バス109に向けて送られる。
システム・バス109はPCIバスであることが好ましい。
【0019】 PCIバスには、1つまたは複数の記憶サブシステム116を接続するための
ストレージ・コントローラ115が取り付けられる。ストレージ・コントローラ
115は、典型的にはUltra Wide SCSIタイプである。記憶サブ
システム116は、一般にCDリーダおよび/またはライタ、ならびにディスク
・ドライブを含む。RAID記憶システムおよびテープ・ドライブなどの他の周
辺機器と同様に、複数のディスク・ドライブを使用することができる。多くのコ
ンピュータ・システムは、ビデオ表示装置サブシステム118、ネットワーク・
インターフェース120、USB(ユニバーサル・シリアル・バス)インターフ
ェース122、ならびにキーボード・ポート、マウス・ポート、シリアル・ポー
ト、プリンタ・ポート、およびフロッピィ・ディスク・ポート124も有する。
【0020】 プロセッサ100の第1レベル・キャッシュは、別々の命令キャッシュ126
およびデータ・キャッシュ128として実装することができる。あるいは、これ
らを組み合わせて単一の高速組合せキャッシュとすることもできる。
【0021】 コンピュータ・システムのプロセッサ100はVLIWプロセッサでよい。V
LIWプロセッサでは、命令キャッシュ126からの命令は、命令アライナ20
0(図2)によって整列させられ、命令バッファ202内に入れられる。次いで
命令は命令デコーダおよびディスパッチャ204によって処理され、プロセッサ
の様々な実行パイプライン206、208、および210にディスパッチされる
。図が見やすいように、図2には、4つ以上のパイプラインを有することができ
るマシンの3つのパイプラインを示す。図示するパイプラインは、レジスタ・フ
ァイル218に接続され、かつレジスタ・ファイル218からオペランドをフェ
ッチすることができるオペランド・フェッチ・ステージ212、214、および
216と、レジスタ・ファイル218に接続され、かつレジスタ・ファイル21
8への結果を格納することができるオペランド格納ステージ220、222、お
よび224とを有する。このプロセッサはまた、データ・キャッシュ128とレ
ジスタ・ファイル218との間で転送するためのロード/ストア・ユニット22
6も有する。
【0022】 VLIW命令が、32ビット減算サブコマンドをあるパイプラインにディスパ
ッチし、64ビット加算サブコマンドを別のパイプラインにディスパッチすると
仮定する。さらに、本発明の好ましい実施形態と同様に、64ビット・オペレー
ションが32ビット・サブオペレーションのシーケンスの実行によって実行され
ると仮定する。すると図3に示すように、64ビット・サブコマンドは、オペラ
ンドをフェッチするために、実行されるパイプラインのフェッチ・ステージでそ
れぞれ1サイクルかかる一対のフェッチ・オペレーション300を必要とし、か
つ一対の演算サイクル301を必要とするのに対して、32ビット・オペランド
はパイプラインのデータ・パスの幅と一致するので、32ビット・サブコマンド
は、オペランドをフェッチするためのサイクル302と、そのオペランドに対す
る演算303とが少なくて済む。トラップ・ステージは、64ビット・オペレー
ションが完了するまで開始することができないと仮定し、したがって加算301
aの2番目のヘルパ・サイクルが終わるまでトラップ・ステージには進入するこ
とができないと仮定する。これを保証するためにパイプラインのストール・ステ
ージ307を使用する。ストール・ステージ307がより長いオペランド、中間
結果、または最終結果用にリサイクル・バッファ内に十分な記憶域を有すると仮
定して、ストール・ステージ307は、パイプラインのステージ内のオペレーシ
ョンをリサイクルした形を取ることができる。したがって、32ビットサブコマ
ンドにストールが投入されない場合、32ビット・サブコマンドがそのトラップ
・サイクル306に到達した後に、64ビット・サブコマンドがそのトラップ・
サイクル305に到達することになる。
【0023】 本発明によるプロセッサでは、命令が、命令キャッシュ126から命令アライ
ナ400(図4)および命令バッファ402に受け取られ、命令デコーダおよび
ディスパッチャ404によって処理される。ヘルパ・サブコマンド・インサータ
406は、命令デコーダおよびディスパッチャ404の一部でよく、任意の64
ビット・サブコマンド、あるいは実行に追加の時間を必要とする他のサブコマン
ドを適切に実行するのに必要なヘルパ・サブコマンドを挿入する。
【0024】 プロセッサの第1パイプラインが32ビット・データ・パスに基づいていると
きに、その第1パイプライン410で64ビット加算を実行する場合を考慮する
。したがってパイプラインのフェッチ・ステージ412が、サイクル500(図
5)でオペランドの下半分をフェッチし、演算ステージ414がオペランド50
2の下半分に対する加算を実行する間、フェッチ・ステージ412は、後のサイ
クル501でオペランドの上半分をフェッチする。次のサイクルでは、ヘルパ・
サブコマンドが演算ステージ414で504を実行する間、オペランドの下半分
の結果が、506で演算ステージのリサイクル・バッファ416内、またはパイ
プラインのストール・ステージ内に保持される。次のサイクル510では、任意
のトラップ条件を解決し、次のサイクル512および514では、オペレーショ
ンの結果が、パイプラインの格納ステージ418によってレジスタ・ファイル4
20内に格納される。
【0025】 トラップ・ステージの前に、同じVLIW命令ワードからの32ビット・サブ
コマンドのタイミングを超過して1オペレーション・サイクルを必要とする64
ビット・サブコマンドが処理されるとき、ヘルパ・サブコマンド・インサータ4
06は、その32ビット・サブコマンドが実行される第2パイプライン425に
対する命令ストリーム・フローに、NOPヘルパ・サブコマンド、すなわちノー
オペレーション・ヘルパ・サブコマンドも挿入し、そのサブコマンドをストール
を有するものとしてマークする。NOPヘルパ・サブコマンドはヘルパ・ストー
ル・サブコマンドとしても知られ、各NOPヘルパ・サブコマンドは、パイプラ
インにディスパッチされるサブコマンドの後に挿入される。各NOPヘルパ・サ
ブコマンドにより、関連するパイプラインのトラップ・ステージより前のステー
ジは変化せず、または1サイクルだけリサイクルされる。これにより、トラップ
・ステージの前のステージのデータは、ヘルパ・ストール・サブコマンドの任意
のシーケンスの最後が完了するまで変化しない。第2パイプライン425のため
のタイミングと同様のタイミングを有する32ビット・サブコマンドを第1パイ
プライン410が受け取る場合、このNOPヘルパ・サブコマンドは投入されな
い。したがってこの32ビット・サブコマンドは、フェッチ・ステージで、第1
サイクル530でのフェッチと、第2サイクル532でのNOPを用いて実行さ
れる。第2サイクルでは、演算ステージはオペレーション534を実行し、第3
サイクルでは、演算ステージはNOP536を行う。サブコマンドはストールを
有するものとしてマークされるので、オペレーションの結果は538で保持され
、それによってオペレーションの結果は、第1パイプライン410中で実行中の
64ビット・サブコマンドの結果がそのトラップ・ステージ422に到達するの
と同時に、第2パイプライン425のトラップ・サイクル540、すなわちステ
ージ430に進入する。したがって、長い64ビットオペレーションの結果と、
短い32ビット・オペレーションの結果は、トラップ・ステージで同期する。
【0026】 代替実施形態では、トラップ・ステージの前に、同じVLIW命令ワードから
の32ビット・サブコマンドのタイミングを超過して1オペレーション・サイク
ルを必要とする64ビット・サブコマンドが処理されるとき、ヘルパ・サブコマ
ンド・インサータ406は、その32ビット・サブコマンドが実行される第2パ
イプライン425に対する命令ストリーム・フローに、NOPヘルパ・サブコマ
ンド、すなわちノーオペレーション・ヘルパ・サブコマンドも挿入する。NOP
ヘルパ・サブコマンドはヘルパ・ストール・サブコマンドとしても知られ、図6
に示すように、各NOPヘルパ・サブコマンドは、関連する32ビット命令の前
にディスパッチされる。第2パイプライン425のためのタイミングと同様のタ
イミングを有する32ビット・サブコマンドを第1パイプライン410が受け取
る場合、このNOPヘルパ・サブコマンドは投入されない。この実施形態での6
4ビット・サブコマンドの実行は、図5に示すのと同様である。
【0027】 したがって32ビット・サブコマンドは、フェッチ・ステージで、第2サイク
ル630でのフェッチと、第1サイクル632でのNOPとを用いて実行される
。第3サイクルでは、演算ステージはオペレーション534を実行し、第2サイ
クルでは、演算ステージはNOP536を行う。次いでこのサブコマンドに関連
するデータは、第1パイプライン410中で実行中の64ビット・サブコマンド
の結果が512でそのトラップ・ステージ422に到達するのと同時に、第2パ
イプライン425のトラップ・サイクル640、すなわちステージ430に進入
する。したがって、長い64ビットオペレーションの結果と、短い32ビット・
オペレーションの結果は、トラップ・ステージで同期する。
【0028】 トラップ・ステージで64ビット・サブコマンドの結果が32ビット・サブコ
マンドの結果と同期することを保証するために、複数のNOPヘルパ・サブコマ
ンドをパイプラインに進入させなければならないサブコマンドが存在する。好ま
しい実施形態では、64ビット乗算オペレーションは32ビット・アレイ乗算器
で実行される。32ビット乗算器で一対の64ビット・オペランドを乗算し、1
28ビットの結果を生成するには乗算器を4回通す必要がある。したがってVL
IW命令ワードがデコードされ、64ビット乗算サブコマンドを受け取るパイプ
ラインの命令ストリームに3つのヘルパ・サブコマンドが挿入される。このよう
な乗算サブコマンドを有するVLIW命令ワードがデコードされ、64ビット加
算を実行するときに必要なNOPヘルパ・サブコマンドの代わりに、同時に実行
される各32ビット加算オペレーションまたは32ビット減算オペレーションの
後に3つのNOPヘルパ・サブコマンドが投入される。同様に、同時に実行され
る任意の64ビット加算は、2つのNOPヘルパ・サブコマンドを受け取り、そ
れによってその結果が実行ステージのリサイクル・バッファ内に保持され、64
ビット乗算サブコマンドの結果と同時にトラップ・ステージに進入する。
【0029】 本発明をその好ましい実施形態を参照しながら具体的に図示し、説明したが、
本発明の精神および範囲から逸脱することなく、形態および細部に他の様々な変
更を行えることを当業者は理解されよう。具体的には、パイプライン・ステージ
の数を、ここで論じた数から変更することができ、かつ加算および減算以外のオ
ペレーションが実行できることが予想される。本明細書で開示した32ビット・
ハードウェア上で動作する32ビット長および64ビット長以外のワード単位の
データを処理するマシンに対して本発明が適用可能であり、ハードウェアの幅よ
りも長いデータ・ワードに対して実行することができる複数のパイプラインを有
するマシンに対して適用可能であることも予想される。
【0030】 32ビット・サブコマンドの後ろにあるものとして本明細書で説明したノーオ
ペレーション・ヘルパ・サブコマンドを、代わりに32ビット・サブコマンドの
前に投入し、それによって32ビット・サブコマンドの結果が64ビット・サブ
コマンドの結果と同時にトラップ・ステージに到達するようにできることも予想
される。
【図面の簡単な説明】
【図1】 VLIWプロセッサを有するコンピュータ・システムのブロック図である。
【図2】 精密なトラップを実施しないいくつかのパイプラインを有する、従来技術のV
LIWプロセッサのブロック図である。
【図3】 ストールが投入されない場合にサブコマンドが異なる時間にトラップ・ステー
ジに到達する傾向を示す、VLIWプロセッサのパイプライン中のデータ・フロ
ーのタイミング図である。
【図4】 本発明を組み込むVLIWプロセッサのブロック図である。
【図5】 命令の実行後にいくつかのパイプラインのトラップ・ステージを整列するのに
必要なストール状態を示す、本発明のVLIWプロセッサの好ましい実施形態の
パイプライン中のデータ・フローのタイミング図である。
【図6】 命令の実行中にいくつかのパイプラインのトラップ・ステージを整列するのに
必要なストール状態を示す、本発明のVLIWプロセッサのパイプライン中のデ
ータ・フローのタイミング図である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/30 350 G06F 9/30 350F (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,UZ,VN, YU,ZA,ZW (72)発明者 イェルリ,シャレイダ アメリカ合衆国・95131・カリフォルニア 州・サン ノゼ・フミア ドライブ・1720 (72)発明者 チャン,ジェフリー・メン・ワ アメリカ合衆国・94040・カリフォルニア 州・マウンテン ビュー・レイザム スト リート・1984・ナンバー10 Fターム(参考) 5B013 AA05 AA13 AA17 AA18 DD00 5B033 AA13 AA14 BE05 DC01 【要約の続き】 投入する。同じVLIW命令の第2サブコマンドに関連 し、かつ第2パイプライン(425)にディスパッチさ れる情報が第2パイプライン(425)のトラップ・ス テージ(430)に到達すると同時に、第1サブコマン ドに関連する情報が第1パイプライン(410)のトラ ップ・ステージ(422)に進入することが必要である とき、命令デコーダは、ノーオペレーション・ヘルパ・ サブコマンドも第2パイプライン(425)に挿入す る。このノーオペレーション・ヘルパ・サブコマンド は、第1サブコマンドが第2ワード長のオペランドに対 して演算し、第2サブコマンドが第1ワード長のオペラ ンドに対して演算する場合であっても、トラップ・ステ ージ(422、425)で情報が同期して到達すること を維持する。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 サブコマンドを実行し、かつ少なくとも1つの実行ステージ
    およびトラップ・ステージを有する第1パイプラインと、 サブコマンドを実行し、かつ少なくとも1つの実行ステージおよびトラップ・
    ステージを有する第2パイプラインであって、第1パイプラインと並列に演算す
    ることができ、第1パイプラインが、第1ワード長および第2ワード長のオペラ
    ンドに対して演算することができ、ただし第2ワード長が第1ワード長よりも長
    く、第1ワード長が第1パイプラインのデータ・パス幅と同じであり、かつ第2
    ワード長のオペランドに対するオペレーションの実行が、第1パイプラインの少
    なくとも1つの実行ステージで複数のサイクルを必要とする第2パイプラインと
    、 VLIW命令のシーケンスのサブコマンドをパイプライン・サブコマンドにデ
    コードし、かつパイプライン・サブコマンドを第1パイプラインおよび第2パイ
    プラインにディスパッチする命令デコーダであって、VLIW命令の第1サブコ
    マンドが第2ワード長のオペランドに対するオペレーション用のコマンドであり
    、かつ第1パイプラインにディスパッチされるとき、少なくとも1つのヘルパ・
    サブコマンドを第1パイプラインに投入する命令デコーダとを備え、 第1サブコマンドに関連する情報が、同じVLIW命令の第2サブコマンドに
    関連し、かつ第2パイプラインのトラップ・ステージに到達する第2パイプライ
    ンにディスパッチされた情報と同時に、確実に第1パイプラインのトラップ・ス
    テージに進入するために必要であるとき、命令デコーダが、ノーオペレーション
    ・ヘルパ・サブコマンドを第2パイプラインに挿入することができ、 ノーオペレーション・ヘルパ・サブコマンドの投入が、第1サブコマンドおよ
    び第2サブコマンドに対して調整されるVLIWプロセッサ。
  2. 【請求項2】 第1パイプラインのトラップ・ステージに進入する第1サブ
    コマンドに関連する情報が、第2ワード長のオペランドに対して実行され、かつ
    第1パイプライン中の第1パイプライン・サブコマンドおよびヘルパ・サブコマ
    ンドの実行によって生成された算術オペレーションの結果であり、第2パイプラ
    インのトラップ・ステージに進入する第2サブコマンドに関連する情報が、第1
    ワード長のオペランドに対して実行された算術オペレーションの結果である請求
    項1に記載のVLIWプロセッサ。
  3. 【請求項3】 第1ワード長が32ビットであり、第2ワード長が64ビッ
    トである請求項1に記載のVLIWプロセッサ。
  4. 【請求項4】 プロセッサの複数のパイプラインでのデータの到達を、前記
    複数のパイプラインのトラップ・ステージに対して同期する方法であって、 プロセッサの命令を、プロセッサのパイプライン上で実行するための少なくと
    も1つのサブコマンドにデコードするステップであって、プロセッサの可能な命
    令の少なくとも一部の組が、複数のサブコマンドにデコードする命令であるステ
    ップと、 少なくとも1つのサブコマンドをプロセッサのパイプラインにディスパッチす
    るステップと、 各サブコマンドに関連するいくつかのヘルパ・ストール・サブコマンドを決定
    するステップであって、サブコマンドを受け取る各パイプライン中に投入するた
    めに、ヘルパ・ストール・サブコマンドの数が非負整数の集合からなるグループ
    から選択され、所与の命令からデコードされる各サブコマンドの実行に関連する
    情報が、同じ命令からデコードされた任意の他のサブコマンドの実行に関連する
    情報と同時に、そのサブコマンドがディスパッチされるパイプラインのトラップ
    ・ステージを実行するようにヘルパ・ストール・サブコマンドの数が決定される
    ステップと、 決定したヘルパ・ストール・サブコマンドの数を命令のサブコマンドがディス
    パッチされる各パイプラインに投入するステップとを含む方法。
  5. 【請求項5】 いくつかのヘルパ・ストール・サブコマンドを決定する前記
    ステップが、命令と、命令からデコードされたサブコマンドの組とからなるグル
    ープから選択されるビット・パターンをデコードすることによって実行される請
    求項4に記載の方法。
  6. 【請求項6】 Nを正の整数として、前記パイプラインが、幅Nビットのデ
    ータと、Nビットの2倍の幅のデータに対するサブコマンドを実行することがで
    き、Mを0より大きい正の整数として、Nビットの2倍の幅のデータに対する、
    トラップ・ステージまでの所与のオペレーションの実行が、幅Nビットのデータ
    に対するトラップ・ステージまでの実行よりもMサイクル多くかかる請求項5に
    記載の方法。
  7. 【請求項7】 第1サブコマンドが幅Nビットのデータに対して実行され、
    第2サブコマンドがNビットの2倍の幅のデータに対して実行され、第1サブコ
    マンドがディスパッチされるパイプラインに投入されるヘルパ・サブコマンドの
    数がMである請求項6に記載の方法。
  8. 【請求項8】 前記ヘルパ・ストール・サブコマンドが、実行するためにパ
    イプラインのうちの少なくとも1つにそのサブコマンドがディスパッチされる前
    に、前記パイプラインに投入される請求項5に記載の方法。
  9. 【請求項9】 前記ヘルパ・ストール・サブコマンドが、実行するためにパ
    イプラインのうちの少なくとも1つにそのサブコマンドがディスパッチされた後
    に、前記パイプラインに投入される請求項5に記載の方法。
JP2002502587A 2000-06-02 2001-05-30 Vliwプロセッサでの部分的パイプライン式命令の同期 Pending JP2003536132A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US58619000A 2000-06-02 2000-06-02
US09/586,190 2000-06-02
PCT/US2001/010839 WO2001095101A2 (en) 2000-06-02 2001-05-30 Synchronizing partially pipelined instructions in vliw processors

Publications (1)

Publication Number Publication Date
JP2003536132A true JP2003536132A (ja) 2003-12-02

Family

ID=24344684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002502587A Pending JP2003536132A (ja) 2000-06-02 2001-05-30 Vliwプロセッサでの部分的パイプライン式命令の同期

Country Status (5)

Country Link
EP (1) EP1290548A2 (ja)
JP (1) JP2003536132A (ja)
KR (1) KR20030017982A (ja)
AU (1) AU2001264560A1 (ja)
WO (1) WO2001095101A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
JP2005518293A (ja) * 2002-02-26 2005-06-23 泳成 松村 プリンタ制御装置
JP5395383B2 (ja) 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0649085B1 (en) * 1993-10-18 1998-03-04 Cyrix Corporation Microprocessor pipe control and register translation
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor

Also Published As

Publication number Publication date
KR20030017982A (ko) 2003-03-04
AU2001264560A1 (en) 2001-12-17
WO2001095101A3 (en) 2002-03-21
EP1290548A2 (en) 2003-03-12
WO2001095101A2 (en) 2001-12-13

Similar Documents

Publication Publication Date Title
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
EP1019806B9 (en) Data processor with parallel decoding and execution of data and address instructions
US6418528B1 (en) Floating point unit pipeline synchronized with processor pipeline
US6279105B1 (en) Pipelined two-cycle branch target address cache
WO1985000453A1 (en) Data processing system
JP3607476B2 (ja) マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置
JPH09185506A (ja) プロセッサ内で命令を実行する方法およびシステム
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US6317821B1 (en) Virtual single-cycle execution in pipelined processors
US6163837A (en) Writing of instruction results produced by instruction execution circuits to result destinations
US6799266B1 (en) Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands
US7047397B2 (en) Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
WO1990010267A1 (en) Distributed pipeline control for a computer
JP2003536132A (ja) Vliwプロセッサでの部分的パイプライン式命令の同期
JPH09138748A (ja) 浮動小数点命令の早期完了方法および装置
US7779231B2 (en) Pipelined processing using option bits encoded in an instruction
JPH05197547A (ja) Vliw型演算処理装置
JP3158107B2 (ja) 浮動小数点状態および制御レジスタ(fpscr)命令を直接実行するための方法および装置
Richardson et al. Precise exception handling for a self-timed processor
CN112579168B (zh) 指令执行单元、处理器以及信号处理方法
US7434036B1 (en) System and method for executing software program instructions using a condition specified within a conditional execution instruction
JP2861234B2 (ja) 命令処理装置