JP3098071B2 - 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム - Google Patents
条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステムInfo
- Publication number
- JP3098071B2 JP3098071B2 JP03226149A JP22614991A JP3098071B2 JP 3098071 B2 JP3098071 B2 JP 3098071B2 JP 03226149 A JP03226149 A JP 03226149A JP 22614991 A JP22614991 A JP 22614991A JP 3098071 B2 JP3098071 B2 JP 3098071B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- computer system
- path
- jump
- 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.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 15
- 238000000034 method Methods 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims 2
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 49
- 230000014509 gene expression Effects 0.000 description 25
- 230000001934 delay Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000001143 conditioned effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000006854 communication Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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)
- Multi Processors (AREA)
Description
て少なくとも1つの分岐オペレーションおよび少なくと
も1つの非分岐オペレーションを始動させるのに適し、
且つ少なくとも1つのマシンサイクルの分岐遅延を与え
るかもしれないようなパイプラインシステムの如きコン
ピュータに関する。
レイズムは、そのプログラムのうちの比較的に小さな部
分に限られており、従って、主として、局部的である。
一方、並行処理アーキテクチャーは、せいぜい、多くの
科学的課題および通信処理において遭遇するような、相
当に長いステップに亘る大規模コアースグレインパラレ
イズムでプログラムを取り扱うときのものである。これ
らの理由のため、並行処理アーキテクチャーは、多くの
非数字またはアルゴリズムプログラムの実行をスピード
アップするのには不適当なものであるとわかった。
チャーと呼ばれる1つの高度の並列コンピュータは、通
常の高度の言語プログラムにおいて固有の適度なファイ
ングレインパラレイズムを開発するために、Proceeding
s of the 10th Annual Symposium on Computer Archite
cture, June 1983の“Very Long Instruction Word Arc
hitectures and the ELI-512”において、J.A.Fisherに
よって提案されている。VLIWマシンは、非常に長い
命令語(100またはそれ以上のビット)によってサイ
クル−サイクルベースで制御される多数の独立した機能
ユニットからなる。それら機能ユニットのすべては、任
意にパイプライン制御されうるものであり、すなわち、
それらは、サイクル毎に新しいオペレーションをスター
トすることができ、ある1つのオペレーションを完了す
るのに一定数のサイクルを必要とする。しかし、ある1
つのオペレーションを完了するために必要なサイクルの
数は、機能ユニット毎に異なることがある。すべてのユ
ニットのパイプラインステージは、単一のグローバルク
ロックによって制御されるロックステップで動作する。
VLIW命令は、制御すべき各機能ユニットに対して1
つの複数のオペレーションサブフィールドの連結であ
る。
トレジスタファイルに接続されており、それら機能ユニ
ットは、そのファイルからそれらのオペランドを取り出
したり、それらの結果をそのファイルへ書き込んだりす
る。したがって、前に計算された結果は、すべて、どの
機能ユニットに対してもオペランドとして使用されう
る。VLIW命令は、サイクル毎にロードされる。各機
能ユニットは、そのサイクル中、そのマルチポートレジ
スタファイルにおけるソースおよび指定ロケーション、
並びにスタートすべきオペレーションを識別するそれ自
身の制御フィールドによって制御される。典型的なアー
キテクチャは、複数のアリスメチックおよびロジックユ
ニットと、複数のメモリインターフェースユニットと、
1つの分岐制御ユニットとを含む。これらの3つの型の
機能ユニットのすべては、オペレーションの速度を最大
とするために、パイプライン制御される。しかしなが
ら、特定のアプリケーションのために必要とされるファ
ンクションに依存して、任意の型の機能ユニットを設け
ることができる。バレルシフタ、マルチプライアおよび
その他の任意の機能ユニットは、それらがマシンサイク
ル毎にオペレーションの始動を許すようなパイプライン
機構を有するならば、含めうる。VLIWマシンにおい
て“オペレーション”は、VLIW命令の対応するフィ
ールドの制御の下で単一の機能ユニットによって行われ
る原始動作である。それから、VLIW“命令”は、そ
のアーキテクチャにおける機能ユニットのすべてのオペ
レーションを並列に制御するための、複数のそのような
オペレーションフィールドの連結である。
Architecture for a Trace Scheduling Compiler"にお
いてR.P.Colwell 等によって教示されるように、VLI
Wマシンの如き高度の並列マシンを効率的にプログラム
するために、トレーススケジューリングと呼ばれるコン
パイラー技法が使用されている。トレーススケジューリ
ングコンパイラーは、その入力として、あるプログラム
の命令およびそのプログラムにおける各異なるパスの実
行の見込みを指示する実行プロフィールを取り込む。そ
のトレーススケジューリングコンパイラーは、これらの
入力を使用して、もっとも実行されそうな命令パスの
“トレース”を構成する。このトレースは、それから、
VLIWマシンにおいて利用しうるすべてのアリスメチ
ックおよび制御ユニットを使用して、できるだけ並列に
実行するようにスケジュールされる。
イプラインプロセッサの場合には、いわゆる分岐遅延の
問題を解決する必要がある。システムが積極的パイプラ
イニングによってより速いものとされるにつれて、待ち
時間が増大する。この待ち時間は、マシンサイクルにお
ける、命令メモリへのある命令アドレスの送信と、実行
のためのその命令メモリからのその命令の受信との間の
時間である。条件付きジャンプオペレーションの場合に
は、その分岐条件を評価するのに必要な時間が、その待
ち時間に加えられねばならない。その合計時間が、“分
岐遅延”と呼ばれる。分岐遅延は、命令の実行がジャン
プオペレーションの結果によって影響されないような、
そのジャンプオペレーションに続く多数のマシンサイク
ルを表している。高速度パイプラインアーキテクチャに
おいては、命令の実行を継続する前に単に待つだけであ
るのは、非常に好ましくない。
Urbana-Chmpaign のUniversity of IllinoisのP.Y-T.Hs
u の1986年の論文“Highly Concurrent Scalar Pro
cessing"において示されている。彼の解決方法によれ
ば、分岐遅延中に、すべての可能なプログラムパスを並
列に実行するが(限定数の機能ユニットによって許容さ
れる限り)、ブール演算式を用いて各オペレーションを
“ガード”する。ブール演算式を満足するオペレーショ
ンのみが、VLIWマシンの状態に影響を与えることが
許される。このようなブール演算式は、意図されたプロ
グラムパスにおいてこれらのオペレーションのみが実行
されるようにするような仕方で、コンパイラーによって
構成される。Hsu は、一定数のファクタ、例えば、3を
有する通常形式のブール演算式を評価するため、各機能
ユニットに特別のハードウエアを設けることを提案して
いる。こうすることにより、形式a&b&cまたはa&
反転b&c等の演算式の評価を行うことができるように
なる。ここで、ファクタa、bおよびcは、3つの異な
るジャンプ条件評価の結果である。このような演算式を
評価するためのハードウエアは、比較的簡単である。し
かしながら、マルチポートレジスタファイルを、各機能
ユニットに対するファクタのすべてにアクセスするのに
必要な読出しポートで拡張するためのコストは、禁止的
である。
において、VLIWアーキテクチャーの如き高レベルに
パイプライン化されたコンピュータプロセッサアーキテ
クチャーの処理能力を最大にすることである。特に、分
岐遅延の問題に対する従来のブールガード演算式による
解決方法の主たる問題点は、より大きなマルチポートレ
ジスタファイルのコストが高いことである。
プロセッサーにおいて発生するが、しかし分岐遅延が終
了していない全ての分岐条件の評価結果の符号化された
表現を与える分岐制御ユニットを内蔵することによって
上述の問題が解決される。この符号化された表現は「パ
ス情報」と呼ばれ、そしてそれ自身分岐制御ユニットを
有するプロセッサーの全ての機能ユニットに割り当てら
れる。パス情報はオペレーションの効果を可能或いは不
可能にするために各々の選択されたオペレーションに関
連しているパス表現フィールドに対してマッチしてい
る。このパス表現フィールドの適当な使用によって、プ
ログラマー或いはコンパイラーは正しいプログラムパス
に関するオペレーションのみがマシンの状態に関するそ
れらの効果を有していることを保証することができる。
従って、有用なオペレーションは条件付き分岐の分岐遅
延の間になされ、その条件の下でオペレーションが実行
される条件にマッチしているオペレーションのみが進む
ことを許されるから正しいプログラムの働きを保証す
る。
ーにマシンの状態を見うるように変更するこれらのオペ
レーションのみがパス表現フィールドに与えられる必要
がある。これらのオペレーションは変数(VLIWマシ
ンのマルチポートのレジスタファイルを含まない)、条
件付きジャンプオペレーション及び除外条件を生じる得
るオペレーションの割当を含んでいる。
アクティブプログラムパスから一つだけのオペレーショ
ンを可能にするように、或いは全ての可能なアクティブ
プログラムパスの任意のサブセットのオペレーションを
可能にするように、パス表現フィールドは符号化するこ
とが可能である。後者の場合、パス表現フィールドはパ
スセットフィールドと呼ばれる。
の詳細な説明から得られるであろう。
有する任意のパイプライン化コンピュータに適用でき
る。しかしながら、図解のため、VLIWコンピュータ
のアーキテクチャーについて説明する。この例示した実
施例は如何なる点においても限定することを意図したも
のではなく、その進歩的な技術は本願特許請求の範囲か
ら逸脱することなく当業者によって他の多くのコンピュ
ータのアーキテクチャーに適用できるものである。
ャー用中央処理装置の全体的なブロック図である。図1
の中央処理装置は複数のプロセッサー機能ユニット11
〜15の間の通信に使用されるマルチポートレジスタフ
ァイル10である。レジスタファイル10はマシンサイ
クルの間の値を記憶する記憶容量を有するユニット11
〜15用のユニバーサルアクセス接続装置である。この
ようなレジスタファイルは当業界において周知であり、
その一つがS.Borkar他著、"iWap: Integrated Solution
to High Speed Parallel Computing", IEEE Proceedin
g on Supercomputing, pages 330-339, 1988 (IEEE Cat
alog #88CH2617-9) に記載されている。VLIW命令レ
ジスタ21は機能ユニット11〜15の各々の動作を制
御するための制御フィールドを与えている。命令レジス
タ21に配置された命令は命令発令パイプライン22か
ら得られる。
演算・論理ユニット(ALU)から成る。これらのAL
Uの数は特定のアプリケーションにより許容できる並列
の量により決まり、代表的には2ないし8の間のオーダ
である。N個のALUの各々の制御フィールドは命令レ
ジスタ21の各命令に含まれる。したがって、制御フィ
ールド16がALU11を制御し、制御フィールド17
がALU12を制御する。ALU11〜12の各々は、
レジスタファイル10からALUに供給されるオペラン
ドについて複数の種々の演算・論理オペレーションを実
行する標準的な周知の回路から成る。このようなALU
の構造及びオペレーションは周知であり本発明の一部を
構成するものではないので、ここではこれ以上説明しな
い。
個のデータメモリインタフェース(DMI)回路13,
……14も含まれる。このようなDMIの数は、他の機
能ユニットの動作に適応するために各マシンサイクル毎
に行なわなければならないメモリアクセスの数により決
まり、代表的には1ないし5のオーダである。K個のD
MI回路の各々の制御フィールドは命令レジスタ21の
各命令に含まれる。このように、制御フィールド18は
データメモリインタフェース13を制御し、一方制御フ
ィールド19はDMI14を制御する。DMI13〜1
4は、図1の中央処理装置の外部のデータを記憶するた
めに使用されるランダムアクセスメモリ(RAM)ユニ
ットのアクセスポートを表すことに注目されたい。DM
I13〜14の各々が別のデータRAMとインタフェー
スしてもよいし、各DMIが一つのデータRAMの別の
ポートとインタフェースしてもよいし、又はそのDMI
13〜14が命令発布パイプライン22により一つの又
は多数のRAMへのアクセスを共用してもよい。これら
のRAMメモリの各々は、マルチバンキング、インター
リービング等の、何れも本発明の一部を構成しないよう
な周知のメモリ技術を用いる複雑な高性能のコンピュー
タメモリシステムで構成してもよい。命令レジスタ21
の各命令がデータを記憶するか又はアクセスためのデー
タメモリを参照するオペレーションをK個まで含んでい
ることが必要なだけである。以下、このようなデータメ
モリインタフェースのオペレーションを図6及び図7に
ついて説明する。
ットはブランチ制御ユニット(BCU)15である。ブ
ランチ制御ユニット15は命令レジスタ21内の命令の
ジャンプ制御フィールド20の飛び越しオペレーション
に応答する。VLIW命令のジャンプ制御フィールド2
0に含まれるジャンプオペレーションが分岐制御ユニッ
ト15に送られ、図5について後述するように、図1の
中央処理装置において実行されるプログラムにおける別
の命令経路への条件付き分岐を制御するために使用され
る。この目的のために、条件付きジャンプオペレーショ
ンで表現される条件により決まるような、図1の中央処
理装置が従う複数の別の命令経路のどれかを決定するこ
とにより、分岐制御ユニット15が命令発令パイプライ
ン22の命令に入るアドレスを発生する。以下、分岐制
御ユニット15を図5について説明する。
ーである。その理由は、その中央処理装置がすべてが一
つの命令レジスタ21の内容により同時に制御される複
数の機能ユニット11〜15を含むからである。これは
それぞれユニット11〜15の動作に応答してその動作
を制御する複数のフィールド16〜20を有する。その
マルチポートレジスタファイル10はユニット11〜1
5間の相互動作を許容し、必要時にはオペランド値のバ
ッファ記憶を行う。特定のマシンサイクルの間に特定の
機能ユニット11〜15についてオペレーションが全く
計画されなければ、NOP(オペレーション無し)コー
ドがその機能ユニットの制御フィールドに入れられる。プログラミング 図1に示すようなVLIWプロセッサ・アーキテクチャ
ーをプログラムするコンパイラーは、コンピュ−タの全
スループットを最適化するように非常に長い命令語を発
生する。このような先行技術は、IBM Journal of Re
search and Development 11巻、25−33頁、19
67年1月に掲載されている、R. M. Tomasuloの論文
「多数の計算ユニットを利用する効率的なアルゴリズ
ム」に記載されている。
ッサーをプログラミングするときの一つの大きな問題
は、そのようなアーキテクチャに固有のその条件付き分
岐遅延である。もし条件が(例えばa>b)ステートメ
ント1とステートメント2というような、プログラム内
の2つの路の間での選択を決定するのであれば、中央処
理装置はステ−トメント1もしくはステ−トメント2の
蓄積コ−ドへ条件付きジャンプを実施しなければならな
い。このようなジャンプは連続した2つの遅延を必ず含
む。すなわち、1)条件(例えばa>b)を評価し、そ
してその決定の結果が出たら、2)ステートメント1も
しくはステートメント2の命令アドレスを命令発令パイ
プライン22に送り、そこでは命令発令の待ち時間が生
じる。現代の集積チップ装置はその条件を非常に迅速に
評価する。パイプラインが複雑化した、マルチプル・チ
ップ命令発令パイプラインでは、命令メモリへの命令ア
ドレスの伝達と命令レジスタへの該当命令の発令との間
の、マシンのサイクルの待ち時間は幾つもの命令実施サ
イクルとなることがある。転送中の命令はこの分岐遅延
期間中は入手できないので、この分岐遅延期間中に有用
な仕事をすることは、不可能ではないまでも、困難であ
る。本発明はこの問題の緩和を指向することである。
トコンピュータプロセッサー・アーキテクチャーのプロ
グラミングをするときは、プログラマーは必要なオペレ
ーションを直列の形で表現する。このようなマシンのコ
ンパイラーは多数のそのようなオペレーションを単一の
命令語に折り込んで並列処理の発生量を最大とし、そし
て全スループットを最大とする。この目的を達成するた
め各命令語に関連のオペレーションはプログラムの直列
形式における順次のオペレーションと必ずしも一致しな
い。利用できる先のオペレーションの結果によって変わ
ってくるオペレーションのスケジュールが次のマシンサ
イクルでつくられる。それでも、相互の出力に依存しな
い複数のオペレーションを同時に実行することによりか
なりの時間を節約できる。
延のため特別なスケジュール作成問題が生じる。ジャン
プオペレーションが条件付きジャンプを規定する時間と
行き先命令を命令レジスタへ送ることができる時間との
間で幾つかの命令を実行できる。既に説明したように、
このことはジャンプ条件を評価するに要する時間と命令
パイプラインの待ち時間(すなわち、命令アドレスの発
送とそのアドレスされた命令が命令レジスタへ送られる
時間との間の期間)とによるのである。本発明の目的の
一つは、この分岐遅延時間中にできる仕事の量を最大と
することである。簡単のため本発明の詳細な説明では分
岐遅延は2つのマシーンサイクルであるとしているが、
異なる分岐遅延に対しても本発明を簡単に拡大適用でき
る。
らが分岐制御に関係しているので、説明する。VLIW命令 図2は、典型的なVLIW指令50の構造を分解して示
すグラフである。命令50は複数のフィールド30−3
6を備え、各フィールドは図1の中央プロセッサーの異
なる一つの機能ユニットのための別々のオペレーション
制御コードを含んでいる。フィールド30−32は図1
の演算・論理ユニット11−12をそれぞれ制御する。
フィールド34−36は、図1のデータメモリ13−1
4へのアクセスを制御する。フィールド33はノーマル
なプログラム実施順序内でのジャンプを制御する。フィ
ールド33は複数のサブフィールドから成り、各サブフ
ィールドはその特定のプロセッサのアーキテクチャで許
される複数の多重分岐のそれぞれに割り当てられてい
る。説明のため、3つのジャンプ制御のサブフィールド
37−39を図2に示す。各ジャンプ制御のサブフィー
ルド(例えば、サブフィールド38)は5つのサブフィ
ールド44−48から成る。行き先アドレス(DESTINAT
ION ADDRESS )のサブフィールド48の規定するアドレ
スへのジャンプが生じるときの条件をOPコード(OPCO
DE) サブフィールド44が規定する。他にもあるが、典
型的な一組みのジャンプオペレーション・コードを表1
に示す。
ールド45はこのジャンプオペレーションが可能化され
るパスを規定する。すなわち、ジャンプオペレーション
を実行し、そしてその規定されたジャンプが実際に起き
るのは、そのOPコードの条件となり、そしてパス表現
フィールド45が図5に関連して説明されたパス情報に
マッチしたときである。フィールド37−39における
3つのジャンプのどれもが満足された両方の条件を有し
ないと、ジャンプは起きず、そしてその次の命令が実行
される。こうして、jの明白な分岐の行き先を規定する
各分岐オペレーションは実際に(j+1)枝を決め、そ
こでは余分の行き先はその次の命令である。
は、OPコード比較条件が満足されたか、否かを決定す
るため比較しなければならない2つのオペランドの場所
を明らかにする。サブフィールド46、47の内容は、
所望のオペランドが貯蔵されている図1のレジスタ・フ
ァイル10のレジスタのアドレスを含んでいる。最後の
サブフィールド48は転送しようとする命令の行き先の
アドレスを規定する。行き先は絶対的アドレス、相対的
アドレス、間接的アドレス、インデックスされたアドレ
ス等である。
典型的な演算・論理制御ユニットオペレーションフィー
ルド51の分解を示す。ALU制御フィールド51は、
算術・論理ユニットが達成すべきオペレーションを特定
するオペレーションコードサブフィールド52に分解さ
れる。パス表現フィールド53は、後で或る程度詳しく
説明されるが、一般に、図2のパス表現フィールド45
と全く同様に、以下に説明されるパス選択判断基準に基
づいてオペレーションの実行の条件付を行う。サブフィ
ールド54及び55は、サブフィールド52内のオペレ
ーションコードによって特定されるオペレーション内で
使用されるべき2つのオペランドの、レジスタファイル
10(図1)内での位置を特定する。最終に、サブフィ
ールド56は、オペレーションの結果が向けられるべ
き、レジスタファイル10内の、行き先を識別する。
形成する典型的メモリフィールド120の分解を示して
いる。フィールド120は、読み出し又は書き込みオペ
レーションを特定するオペレーションコードサブフィー
ルド121に分解される。パス表現サブフィールド12
2は、それぞれ図2及び図3内のパス表現フィールド4
5及び55と類似する機能を達成するが、更に以下で議
論される。サブフィールド123は、(読出し時)デー
タが取り出されるべき、または(書込み時)データが送
られるべきメモリー内のアドレスを特定する。サブフィ
ールド123は、図2のサブフィールド48と全く同様
に、多くの方法でこの様なアドレスを識別する。サブフ
ィールド124は、(読出し時)データが送られるべ
き、または(書込み時)データが取り出されるべきレジ
スタファイル10(図1)内のレジスタを特定する。読
出しオペレーションに対しては、データがRAMデータ
メモリから取り出され、レジスタファイル10に送られ
る。書込みオペレーションに対しては、データがレジス
タファイル10から取り出され、RAMデータメモリに
送られる。
は、図1に示されるVLIW機構と同様に、それらが簡
単で理解しやすいとの理由から本発明を説明するために
選択された。しかしながら、ALUオペレーション及び
DMIオペレーション間でフィールドを共有したり、バ
レルシフタ及び乗算ユニットの様な異なる形態の機能ユ
ニットを付加したりの別の構成が可能である。この様な
別の構成は、本発明に直ちに利用可能であるが、記述を
不必要に複雑にする。分岐制御ユニット 図5は、図1の分岐制御ユニットの詳細ブロック図であ
る。これは、図2に示される様な条件ジャンプ操作を実
行するための必要な制御機能の全てを達成する。簡単の
ために、図2と同じ4方向分岐が適用され、「分岐遅
延」は再び2マシンサイクルであると仮定される。
図2の状態分岐操作33で特定されるので、3つの比較
ユニットが60、61及び62は、分岐条件を評価する
ために必要な3つの比較をなすために与えられる。条件
分岐操作の条件部分のA選択及びB選択フィールド46
及び47は、図1のレジスタファイル10からのA1、
A2、A3、B1、B1、B2及びB3値の位置を指定
し、比較ユニット60−62の適当なものに通す。比較
ユニット60−62は、表1(例えば、<、≦、=及び
≠)に与えられる基本比較条件の幾つかを実行すること
ができ、図2のサブフィールド44のOPコードに符号
化される。コード化された条件は、比較器60−62に
与えられて、この特定の条件分岐パスに対する適当な比
較を選択する。全ての3つの比較結果がANDゲート7
0、71及び72をそれぞれ通して、優先権エンコーダ
回路63に送られる。ANDゲート70−72は、ジャ
ンプ条件の評価の結果を、以下に議論されるパス情報一
致の結果と結合する。ゲート70−72の一つ(又はそ
れ以上)の真出力は、ジャンプが取られることを結果す
る。コパイラーを、3つのジャンプ条件が相互に排他的
である様に設計することが可能である。本実施例におい
て、しかしながら、ジャンプ条件は互いに排他的でな
く、優先権エンコーダ63は最高の優先ジャンプを選択
する。エンコーダ63は2ビット出力信号を発生する。
この信号はマルチプレクサ66に命令して、適当な入力
をプログラムカウンターレジスタ67に接続する。優先
権エンコーダ63及びマルチプレクサー66のオペレー
ションは表2以下に詳細に記述される。
ドされる新たな値67は所望の値である。真を導く状態
であり、パス情報整合する最高優先ジャンプは、プログ
ラムカウンタレジスタ67内にラッチされたアドレスを
有する。ジャンプがいずれの比較状態を満足しない場
合、プログラムカンター67に次のアドレスがロードさ
れる。プログラムカウンター67の出力は命令発令パイ
プライン22(図1に示される)に加えられ、2つのサ
イクル待ち期間の後、命令レジスタ21にロードされる
適当なインストラクションを結果する。要素22はパイ
プライン化され、アドレスが各サイクル毎に要素22に
送られる様にされる。対応する命令が、2サイクル待ち
の後、要素22及び23の結合から発生する。命令発令
パイプライン22は、高度な読出し専用(ROM)又は
ランダムアクセスメモリ(RAM)素子から成る特殊な
命令専用メモリとすることができ、また、図1のデータ
メモリインターフェースと共用されるメモリーシステム
への別のポートとすることもできる。
4及び65によって2つの連続サイクル分だけ遅延させ
られる。レジスタ64及び65の連続した(ここでは4
ビット)出力はパス情報を形成し、例えば要素21及び
22から成る命令パイプラインを未だ通過していない2
つの最も近いジャンプのエンコードした結果を形成す
る。このパス情報は、分岐制御ユニット自体を含む全機
能ユニットに用いられ、パス表現マッチングオペレーシ
ョンを実施する。
は、図2の3つのジャンプ制御オペレーションに対し
て、本発明の第1実施例(ここでは単一のプログラムパ
スに対して1つのパス表示コードを特定するオペレーシ
ョンが許される)によってマッチングオペレーションを
実施する。レジスタ64及び65のパス情報出力が、対
応するジャンプ制御サブフィールドのパス表示フィール
ド45(図2)にマッチする場合(及びその場合にの
み)、同等コンパレータ73〜75は真(TRUE)出力を
発生する。
照して後に記載するように、コンパレータ73〜75の
代わりに3つの16入力(1出力)マルチプレクサを使
用することにより、本発明の第2実施例(実行されるべ
きパスのセットを1つのオペレーションが特定できる)
によってマッチングを取扱うように修正され得る。図5
の分岐制御ユニットは全条件付きジャンプオペレーショ
ンの結果を決定するのに必要な比較及びパス情報のよう
な比較の結果をエンコードするのに必要な比較の全てを
行う。同時に、分岐制御ユニットはプログラムカウンタ
に適正なアドレスを発生して、条件付きジャンプオペレ
ーションに続く適正な“次の”命令へのアクセスを許
す。正確に1つのプログラム分岐パスでのオペレーショ
ンの実行を確保するためのメカニズムは図6及び図7に
関連して記載される。しかしながら、このメカニズム
は、条件付きジャンプオペレーション自身の実行を条件
付けするための、図5のものと似ている。
ペレーションが、ジャンプの失敗の結果としてあるいは
実際に生じたジャンプの結果として、プログラムの連続
命令サイクルの中で直接相互に続いてもよい。複数の条
件付きジャンプオペレーションが連続命令サイクルの中
で直接相互に続く場合、2つの命令サイクルの分岐遅延
後の行き先の可能な数は、第1の条件付きジャンプオペ
レーションの可能な行き先の数に第2の条件付きジャン
プオペレーションの可能な行き先の数を掛けた積であ
る。レジスタ64及び65からのパス情報は、そのパス
情報が2つの最も近い命令のジャンプの結果を表示する
ので、前記の可能なものの全てを符号化する。
は、ジャンプオペレーションによって選択され得る可能
なパスの全てにおけるオペレーションの実行を条件付け
するのに使用される。しかしながら、プログラマーに見
得る結果を作るオペレーションの実行を条件付けするの
は必要である。図4に示すような、メモリ格納オペレー
ションはその最も自明なものであり、各メモリ格納オペ
レーションはパス表現フィールド(図4のサブフィール
ド122)を含む。しかしながら、他の条件付きジャン
プオペレーションもコンピュータオペレーションのプロ
グラマー可視状態に影響を及ぼすことがあり、該オペレ
ーションは図2に示すようにパス情報表現サブフィール
ド45を含む。プログラムの制御流れを変更するような
演算オーバフローの如くいわゆる“例外提起”オペレー
ションは、それ程自明ではないが同じく重要である。従
って、ALUオペレーションでさえ、図3に示すパス選
択を許すようにパス表現サブフィールド53を含む。こ
のパス情報コードは、発生しているがその結果は未だ命
令発生パイプラインを通っていない条件付きジャンプオ
ペレーションによって選択されたプログラムパスに対応
する前記のオペレーションのみをイネーブルにするのに
使用される。
且つ各条件付き分岐オペレーションのジャンプ制御サブ
フィールドの数がkであれば、選択した1つの分岐パス
の識別をエンコードするのに必要なビット数は次式 n・log2(k+1) によって与えられる(ここでlog2 は2を底とした対
数である)。図5の3つのジャンプ制御サブフィールド
の仮定と2つのサイクル分岐遅延に対して、4ビットが
プログラムパスの識別をエンコードするのに必要とされ
る。このコードは、2つの連続条件付きジャンプオペレ
ーションの結果として選択された16個の可能なプログ
ラムパスからの1つを識別するので、パス表現と呼ばれ
る。
ペレーションをスケジュールするのは時々は可能であ
る。その場合、2以上の可能なパスが選択されればオペ
レーションがエネーブルにされるのが望ましい。(たっ
た1つではなくて)可能なパスの全てを特定するのに、
必要なビット数は次式 2n ・log2(k+1) によって与えられる(nとkは既に定義したものであ
る)。2つのサイクル分岐遅延と4方ジャンプオペレー
ションに対しては、16個のビットが16個までの違う
パスを識別しサブセットを作るのに必要とされる。この
コードは、“パスセット(pathset)”コードと呼ばれ、
2以上のこのコードは2以上の違うパスの特定のオペレ
ーションをイネーブルするのにセットされ得る。図6及
び図7に開示された本発明の各実施例はそれぞれパス表
現及びパスセットコードを利用する。 メモリアクセス 図6は、図1のデータメモリインタフェース13〜14
のメモリアクセス回路を図示したものである。前に述べ
たように、図1のデータメモリインタフェース13〜1
4で実行される書き込みオペレーションは、プログラマ
ーにとって分かりやすいシステム状態変更を行うことが
可能である。それ故、これらの書き込みオペレーション
の実行は、前の2つのマシンサイクルから収集されたパ
ス情報によってイネイブル(あるいはディスエイブル)
されなければならない。図6は、命令レジスタ21内の
命令フィールド121〜124を示しており、この命令
レジスタは図1の装置13〜14のようなデータメモリ
インタフェース機能ユニットと結びつけられている。こ
れらのフィールドには、読み出しあるいは書き込みを特
定するオペレーションコードフィールド121、このオ
ペレーションがイネイブルされるべきプログラムパスを
識別するパス表示フィールド122、(読み出しに基づ
いて)データが取り寄せられるべきアドレスはどれであ
るか、あるいは(書き込みに基づいて)データが配達さ
れるべきアドレスはどれであるかを特定するアドレス選
択フィールド123が含まれる。図6の実施例におい
て、アドレス選択フィールド123は、アドレスを含む
レジスタファイル10内のレジスタを識別する。また、
命令レジスタ21には、データを配達すべきあるいはま
たデータが配達されるべきレジスタファイル内のレジス
タを識別するデータソース/行き先サブフィールド12
4も含まれている。
するポートがデータメモリ87として示されている。ア
ドレスはリード91を経由してメモリ87に与えられ、
一方、データはボックス87の頭部においてメモリ87
から与えられまた受け取られる。ライン89上の制御入
力は、読み出しオペレーションがメモリから起こるの
か、あるいは書き込みオペレーションがメモリに対して
起こるのかを決定する。図5からのパス情報は、リード
88上に同等コンパレータ86に向けて与えられる。ま
た、命令レジスタ21内のメモリ制御オペレーションの
パス表現サブフィールド122の内容も、同等コンパレ
ータ86に与えられる。パス表現フィールドの内容がパ
ス情報と等しい場合には、メモリ書き込みオペレーショ
ンがイネイブルされる。この結果、コンパレータ86の
出力は制御論理回路81の一方の入力に与えられ、制御
論理回路81のもう一方の入力には命令レジスタ21内
のメモリ制御オレーションのフィールド121からのオ
ペレーションコードが与えられる。制御論理回路81の
一方の出力は、リード89上の書き込みあるいは読み出
しイネイブル信号である。制御論理回路81はまた、制
御信号をリード90上に与え、マルチポートレジスタフ
ァイル10へのデータ移動の方向を制御する。制御論理
回路81の詳細は、リード90と91上の制御信号に対
するタイミング要求によるため、図6には示されていな
い。
レジスタ10内のレジスタを特定してメモリオペレーシ
ョンのアドレスを見つける。従って、フィールド123
は、リード92上のマルチポートレジスタファイル10
の読み出しポート(i)に対するアドレスを、直接的に
形成する。読み出しポート(i)の出力は、リード91
上にデータメモリ87に対するアドレスを形成する。フ
ィールド124は、レジスタファイル10内のレジスタ
を特定し、(読み出しオペレーションに基づいて)取り
出され、あるいは(書き込みオペレーションに基づい
て)書き込まれるデータを識別する。故に、フィールド
124は、レジスタファイル10の読み出し/書き込み
ポート(i+1)に対するアドレスとして用いられる。
メモリからポート(i+1)に対するデータ、あるいは
ポート(i+1)からメモリに対するデータは、データ
メモリ87の頭部に示されたリード上に転送される。図
6の回路は、他のメモリアドレッシング技術を利用する
ために拡張され得る。図6の回路オペレーションでは、
メモリ書き込みオペレーション(もし望むなら、メモリ
読み出し動作も)は、読み出しあるいは書き込みオペレ
ーションのパス表現フィールド122と図5のブランチ
制御装置からリード88に与えられたパス情報との整合
によって調整されるというものである。
され得る1つ以上のパス上(On Path)でオペレーション
が可能とされる。図7は、コンパレータ86がマルチプ
レクサ94に置き換えられたことを除けば、図6のそれ
と同様の回路を示す。パスセットフィールド122は1
6ビットフィールドであり、メモリオペレーションがイ
ネイブルされるパスの任意サブセットを特定することが
できる。回路は、これをマルチプレクサ94によって達
成するように動作する。マルチプレクサ94は、パスセ
ットフィールド122からの16個の入力の1つを、パ
ス情報リード88上のコードに従って、マルチプレクサ
94の出力へと接続する。パスセットフィールド122
内の特定のロケーションに「1」ビットが存在するかど
うかにより、その特定のパスセットコードに対してオペ
レーションがイネイブルされるかどうかが決定されるで
あろう。パスセットコードのビットを選択的に設定する
ことにより、全ての可能な活動中のパスのいづれのサブ
セット(空のサブセットや満杯のセットを含む)をも選
択することができる。
ス表示フィールドあるいはパスセットフィールドは、発
生はされたがまだ命令発令システムを遂行していないよ
うな分岐状態の所定の結果に対して、そのようなオペレ
ーションが実際に実行されていないかどうかを判断する
ように見ることができる。特に、2つのサイクル分岐遅
延と4方向の分岐能力を有するような図示した実施例の
場合にあっては、サイクルiでスケジュールされたオペ
レーションは、サイクル(i─2)におけるジャンプが
方向「1」内に進んだ場合と、サイクル(i−1)にお
けるジャンプが方向「3」(2進「11」)に進んだ場
合にのみ、それを2進表示値0111(方向「3」に対
する2進コードがその後に続く方向「1」に対するバイ
ナリコード)に割り当てることによって実行されるよう
調整され得る。これによってコンパイラーは、サイクル
(i−2)でそれらを配置しなければならない代わり
に、あたかもサイクルiに対する分岐オペレーション
(i−1)のデスティネイションにおけるものであるか
のようにそれらのオペレーションを移動させることがで
きる。故に、分岐遅延サイクルタイムを利用し、一方、
それと同時に、そのプログラムはマシーンの状態をプロ
グラマに明らかにするという同一の効果を作りだすであ
ろうことを保証できる。本発明の回路のコストは、最小
のものである。即ち、各々が図5の分岐制御回路に付加
されるような2つのビットの2つのレジスタと、更に、
マシンが有する並行オペレーションと同じ数だけのバイ
ナリ平等検出器が必要となる。その他には、図5のAN
Dゲート70〜72と、図6あるいは図7の論理回路8
1のコストが含まれるだけである。
本発明の条件付き分岐技術が使用できる非常に長いワー
ドプロセッサーの一般的なブロック図である。
IWのホーマットであり、ジャンプ制御フィールドがど
のようにして4−ウエイ分岐能力のあるマシンのマルチ
ジャンプ制御フィールドに分解されるかを示しており、
且つ分岐制御ユニット自身のオペレーションのためのパ
ス表現フィールドの存在を示している。
IWの一部のホーマットであり、算術及び論理制御フィ
ールドがどのようにしてパス表現フィールドを示すため
に分解されるかを示している。
の一部のフォーマットを示し、且つパス表現フィールド
を示すために如何にしてメモリ制御フィールドが分解さ
れるかを示している。
発明による分岐制御ユニットとして示している。
へのアクセスを条件とするパス表現フィールドを使用す
るメモリインターフェイス制御回路を示す。
へのアクセスを条件とするパスセットフィールドを使用
するメモリインターフェイス制御回路を示す。
Claims (9)
- 【請求項1】 各マシンサイクルにおいて少なくとも一
つの分岐オペレーションと少なくとも一つの非分岐オペ
レーションとを開始するように設けられ、上記各マシン
サイクルの少なくとも一つの分岐遅延を有するパイプラ
イン化されたコンピュータシステムにおいて、上記分岐
遅延中に条件付きの分岐オペレーションのパス認識の結
果を符号化する分岐制御回路と、上記分岐操作の次の少
なくとも一つのオペレーションにおいて、実行されるべ
きそのようなオペレーションのプログラムパスを認識す
る制御フィールドと、上記パス認識と上記制御フィール
ドを用いて上記分岐オペレーションの次のオペレーショ
ンを可能とする手段と、を有することを特徴とするコン
ピュータシステム。 - 【請求項2】 上記制御フィールドが、上記コンピュー
タシステムによって実行される各オペレーションの全て
に現れることを特徴とする請求項1記載のパイプライン
化されたコンピュータシステム。 - 【請求項3】 上記制御フィールドが、上記コンピュー
タシステムのプログラマー可視状態に作用するオペレー
ションのみに現れることを特徴とする請求項1記載のパ
イプライン化されたコンピュータシステム。 - 【請求項4】 上記制御フィールドが、実行のための一
若しくはそれ以上のプログラムパスの任意の部分集合を
特定することが出来ることを特徴とする請求項1乃至請
求項3のいずれかに記載のパイプライン化されたコンピ
ュータシステム。 - 【請求項5】 デジタル・コンピュータ処理装置であっ
て、並行オペレーションのために結合された複数の機能
ユニットと、上記機能ユニットの全てを同時にオペレー
ションを開始することが可能な命令を記憶する命令登録
手段と、条件付きの分岐オペレーションにおいて分岐の
条件をテストする条件付き分岐制御手段と、上記テスト
の結果を符号化してパス認識を行う手段と、上記パス認
識と一致しない制御フィールドを含む上記条件付きの分
岐オペレーションの次の操作の実行を禁止する手段と、
を有することを特徴とするデジタル・コンピュータ処理
装置。 - 【請求項6】 上記条件付きの分岐オペレーションの次
の各オペレーションが、上記パス認識と一致すべきフィ
ールドを含むことを特徴とする請求項5に記載のデジタ
ル・コンピュータ処理装置。 - 【請求項7】 上記デジタル・コンピュータのプログラ
マー可視状態に作用するオペレーションのみが、上記パ
ス認認識一致すべきフィールドを含むことを特徴とする
請求項5に記載のデジタル・コンピュータ処理装置。 - 【請求項8】 上記符号化手段が、一若しくはそれ以上
の目的パスを認識するコードにおいて上記パス認識を符
号化する手段を有することを特徴とする請求項6又は請
求項7記載のデジタル・コンピュータ処理装置。 - 【請求項9】 上記分岐遅延は、少なくとも二つのマシ
ンサイクルであることを特徴とする請求項1乃至請求項
4の何れかに記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57897690A | 1990-09-05 | 1990-09-05 | |
US578976 | 1990-09-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04245540A JPH04245540A (ja) | 1992-09-02 |
JP3098071B2 true JP3098071B2 (ja) | 2000-10-10 |
Family
ID=24315095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03226149A Expired - Lifetime JP3098071B2 (ja) | 1990-09-05 | 1991-09-05 | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム |
Country Status (5)
Country | Link |
---|---|
US (1) | US5450556A (ja) |
EP (1) | EP0474297B1 (ja) |
JP (1) | JP3098071B2 (ja) |
KR (1) | KR100242617B1 (ja) |
DE (1) | DE69129569T2 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370623B1 (en) * | 1988-12-28 | 2002-04-09 | Philips Electronics North America Corporation | Multiport register file to accommodate data of differing lengths |
US5832202A (en) * | 1988-12-28 | 1998-11-03 | U.S. Philips Corporation | Exception recovery in a data processing system |
JPH05233281A (ja) * | 1992-02-21 | 1993-09-10 | Toshiba Corp | 電子計算機 |
US5721854A (en) * | 1993-11-02 | 1998-02-24 | International Business Machines Corporation | Method and apparatus for dynamic conversion of computer instructions |
JP3212213B2 (ja) * | 1994-03-16 | 2001-09-25 | 株式会社日立製作所 | データ処理装置 |
JP3547482B2 (ja) * | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
US5581776A (en) * | 1995-02-03 | 1996-12-03 | Nokia Mobile Phones Limited | Branch control system for rom-programmed processor |
JP3547139B2 (ja) * | 1995-03-17 | 2004-07-28 | 株式会社 日立製作所 | プロセッサ |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5815701A (en) * | 1995-06-29 | 1998-09-29 | Philips Electronics North America Corporation | Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time |
DE69625790T2 (de) * | 1995-09-01 | 2003-11-20 | Philips Electronics Na | Verfahren und vorrichtung für anpassbare operationen durch einen prozessor |
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 |
US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
JP3442225B2 (ja) * | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
US5742804A (en) * | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
US6374346B1 (en) | 1997-01-24 | 2002-04-16 | Texas Instruments Incorporated | Processor with conditional execution of every instruction |
US6055628A (en) * | 1997-01-24 | 2000-04-25 | Texas Instruments Incorporated | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks |
US5974538A (en) * | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
JP3412462B2 (ja) * | 1997-07-30 | 2003-06-03 | 松下電器産業株式会社 | プロセッサ |
US6170051B1 (en) | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6105051A (en) * | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
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 |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6216223B1 (en) | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
US6366999B1 (en) * | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
US6178495B1 (en) * | 1998-04-30 | 2001-01-23 | International Business Machines Corporation | Processor E-unit to I-unit interface instruction modification with E-unit opcode computer logic in the unit |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6453407B1 (en) | 1999-02-10 | 2002-09-17 | Infineon Technologies Ag | Configurable long instruction word architecture and instruction set |
US6405300B1 (en) * | 1999-03-22 | 2002-06-11 | Sun Microsystems, Inc. | Combining results of selectively executed remaining sub-instructions with that of emulated sub-instruction causing exception in VLIW processor |
US6654870B1 (en) * | 1999-06-21 | 2003-11-25 | Pts Corporation | Methods and apparatus for establishing port priority functions in a VLIW processor |
US7007156B2 (en) * | 2000-12-28 | 2006-02-28 | Intel Corporation | Multiple coprocessor architecture to process a plurality of subtasks in parallel |
AU2002329475A1 (en) * | 2001-10-12 | 2003-04-28 | Pts Corporation | Late resolving instructions |
US7200738B2 (en) | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
JP4283131B2 (ja) * | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
WO2005111793A2 (en) * | 2004-05-13 | 2005-11-24 | Koninklijke Philips Electronics N.V. | Run-time selection of feed-back connections in a multiple-instruction word processor |
US8190669B1 (en) | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
US8037119B1 (en) | 2006-02-21 | 2011-10-11 | Nvidia Corporation | Multipurpose functional unit with single-precision and double-precision operations |
JP2007272353A (ja) * | 2006-03-30 | 2007-10-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US7818552B2 (en) * | 2007-12-20 | 2010-10-19 | The United States Of America As Represented By The Secretary Of The Army | Operation, compare, branch VLIW processor |
US9928074B2 (en) * | 2013-09-06 | 2018-03-27 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with token-based very long instruction word architecture |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611306A (en) * | 1969-02-05 | 1971-10-05 | Burroughs Corp | Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system |
US3781814A (en) * | 1971-10-07 | 1973-12-25 | Raytheon Co | Method and apparatus for applying source language statements to a digital computer |
US4920538A (en) * | 1985-06-28 | 1990-04-24 | International Business Machines Corporation | Method of checking the execution of microcode sequences |
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
US4943912A (en) * | 1987-10-13 | 1990-07-24 | Hitachi, Ltd. | Parallel processor system having control processor and array control apparatus for selectively activating different processors |
US5050068A (en) * | 1988-10-03 | 1991-09-17 | Duke University | Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams |
US5313551A (en) * | 1988-12-28 | 1994-05-17 | North American Philips Corporation | Multiport memory bypass under software control |
US5127092A (en) * | 1989-06-15 | 1992-06-30 | North American Philips Corp. | Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition |
US5203002A (en) * | 1989-12-27 | 1993-04-13 | Wetzel Glen F | System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
-
1991
- 1991-09-02 EP EP91202217A patent/EP0474297B1/en not_active Expired - Lifetime
- 1991-09-02 DE DE69129569T patent/DE69129569T2/de not_active Expired - Lifetime
- 1991-09-05 JP JP03226149A patent/JP3098071B2/ja not_active Expired - Lifetime
- 1991-09-05 KR KR1019910015485A patent/KR100242617B1/ko not_active IP Right Cessation
-
1993
- 1993-10-25 US US08/142,648 patent/US5450556A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR100242617B1 (ko) | 2000-08-01 |
EP0474297A2 (en) | 1992-03-11 |
EP0474297A3 (en) | 1993-09-01 |
JPH04245540A (ja) | 1992-09-02 |
EP0474297B1 (en) | 1998-06-10 |
DE69129569T2 (de) | 1999-02-04 |
DE69129569D1 (de) | 1998-07-16 |
US5450556A (en) | 1995-09-12 |
KR920006845A (ko) | 1992-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3098071B2 (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
US10817360B2 (en) | Apparatus and methods for debugging on a memory device | |
US5313551A (en) | Multiport memory bypass under software control | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
US5421022A (en) | Apparatus and method for speculatively executing instructions in a computer system | |
EP0114304B1 (en) | Vector processing hardware assist and method | |
JP3120152B2 (ja) | コンピューターシステム | |
US7526636B2 (en) | Parallel multithread processor (PMT) with split contexts | |
US6081887A (en) | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction | |
US5428807A (en) | Method and apparatus for propagating exception conditions of a computer system | |
US5771377A (en) | System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage | |
JP2620511B2 (ja) | データ・プロセッサ | |
US5761467A (en) | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field | |
EP0378415A2 (en) | Multiple instruction dispatch mechanism | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
GB2293670A (en) | Instruction cache | |
CN1124546C (zh) | 一种超标量处理器及在该超标量处理器中完成指令的方法 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US4812970A (en) | Microprogram control system | |
US7134000B2 (en) | Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information | |
US5396640A (en) | Boosting method and apparatus in a parallel computer | |
US11416261B2 (en) | Group load register of a graph streaming processor | |
US6775735B2 (en) | Instruction pair detection and pseudo ports for cache array | |
US6763421B2 (en) | Instruction pair detection and pseudo ports for cache array | |
JP2005535045A (ja) | Vliw命令を処理するためのプロセッサおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080811 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080811 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090811 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090811 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100811 Year of fee payment: 10 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100811 Year of fee payment: 10 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 12 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |