JPH04245540A - 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム - Google Patents
条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステムInfo
- Publication number
- JPH04245540A JPH04245540A JP3226149A JP22614991A JPH04245540A JP H04245540 A JPH04245540 A JP H04245540A JP 3226149 A JP3226149 A JP 3226149A JP 22614991 A JP22614991 A JP 22614991A JP H04245540 A JPH04245540 A JP H04245540A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- path
- control
- operations
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000012360 testing method Methods 0.000 claims 2
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 230000001143 conditioned effect Effects 0.000 abstract description 2
- 230000015654 memory Effects 0.000 description 49
- 230000014509 gene expression Effects 0.000 description 19
- 230000001934 delay Effects 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 101000728490 Homo sapiens Tether containing UBX domain for GLUT4 Proteins 0.000 description 1
- 102100029773 Tether containing UBX domain for GLUT4 Human genes 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000012827 research and development 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, 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Abstract
め要約のデータは記録されません。
Description
て少なくとも1つの分岐オペレーションおよび少なくと
も1つの非分岐オペレーションを始動させるのに適し、
且つ少なくとも1つのマシンサイクルの分岐遅延を与え
るかもしれないようなパイプラインシステムの如きコン
ピュータに関する。
レイズムは、そのプログラムのうちの比較的に小さな部
分に限られており、従って、主として、局部的である。 一方、並行処理アーキテクチャーは、せいぜい、多くの
科学的課題および通信処理において遭遇するような、相
当に長いステップに亘る大規模コアースグレインパラレ
イズムでプログラムを取り扱うときのものである。これ
らの理由のため、並行処理アーキテクチャーは、多くの
非数字またはアルゴリズムプログラムの実行をスピード
アップするのには不適当なものであるとわかった。
チャーと呼ばれる1つの高度の並列コンピュータは、通
常の高度の言語プログラムにおいて固有の適度なファイ
ングレインパラレイズムを開発するために、Proce
edings of the 10th Annual
Symposium on Computer Ar
chitecture, June 1983の“Ve
ry Long Instruction Word
Architectures and the ELI
−512”において、J.A.Fisherによって提
案されている。VLIWマシンは、非常に長い命令語(
100またはそれ以上のビット)によってサイクル−サ
イクルベースで制御される多数の独立した機能ユニット
からなる。それら機能ユニットのすべては、任意にパイ
プライン制御されうるものであり、すなわち、それらは
、サイクル毎に新しいオペレーションをスタートするこ
とができ、ある1つのオペレーションを完了するのに一
定数のサイクルを必要とする。しかし、ある1つのオペ
レーションを完了するために必要なサイクルの数は、機
能ユニット毎に異なることがある。すべてのユニットの
パイプラインステージは、単一のグローバルクロックに
よって制御されるロックステップで動作する。 VLIW命令は、制御すべき各機能ユニットに対して1
つの複数のオペレーションサブフィールドの連結である
。
トレジスタファイルに接続されており、それら機能ユニ
ットは、そのファイルからそれらのオペランドを取り出
したり、それらの結果をそのファイルへ書き込んだりす
る。したがって、前に計算された結果は、すべて、どの
機能ユニットに対してもオペランドとして使用されうる
。VLIW命令は、サイクル毎にロードされる。各機能
ユニットは、そのサイクル中、そのマルチポートレジス
タファイルにおけるソースおよび指定ロケーション、並
びにスタートすべきオペレーションを識別するそれ自身
の制御フィールドによって制御される。典型的なアーキ
テクチャは、複数のアリスメチックおよびロジックユニ
ットと、複数のメモリインターフェースユニットと、1
つの分岐制御ユニットとを含む。これらの3つの型の機
能ユニットのすべては、オペレーションの速度を最大と
するために、パイプライン制御される。しかしながら、
特定のアプリケーションのために必要とされるファンク
ションに依存して、任意の型の機能ユニットを設けるこ
とができる。バレルシフタ、マルチプライアおよびその
他の任意の機能ユニットは、それらがマシンサイクル毎
にオペレーションの始動を許すようなパイプライン機構
を有するならば、含めうる。VLIWマシンにおいて“
オペレーション”は、VLIW命令の対応するフィール
ドの制御の下で単一の機能ユニットによって行われる原
始動作である。それから、VLIW“命令”は、そのア
ーキテクチャにおける機能ユニットのすべてのオペレー
ションを並列に制御するための、複数のそのようなオペ
レーションフィールドの連結である。
OS, 1987 の“A VLIW Archite
cture for a Trace Schedul
ing Compiler”においてR.P.Colw
ell 等によって教示されるように、VLIWマシン
の如き高度の並列マシンを効率的にプログラムするため
に、トレーススケジューリングと呼ばれるコンパイラー
技法が使用されている。トレーススケジューリングコン
パイラーは、その入力として、あるプログラムの命令お
よびそのプログラムにおける各異なるパスの実行の見込
みを指示する実行プロフィールを取り込む。そのトレー
ススケジューリングコンパイラーは、これらの入力を使
用して、もっとも実行されそうな命令パスの“トレース
”を構成する。このトレースは、それから、VLIWマ
シンにおいて利用しうるすべてのアリスメチックおよび
制御ユニットを使用して、できるだけ並列に実行するよ
うにスケジュールされる。
イプラインプロセッサの場合には、いわゆる分岐遅延の
問題を解決する必要がある。システムが積極的パイプラ
イニングによってより速いものとされるにつれて、待ち
時間が増大する。この待ち時間は、マシンサイクルにお
ける、命令メモリへのある命令アドレスの送信と、実行
のためのその命令メモリからのその命令の受信との間の
時間である。条件付きジャンプオペレーションの場合に
は、その分岐条件を評価するのに必要な時間が、その待
ち時間に加えられねばならない。その合計時間が、“分
岐遅延”と呼ばれる。分岐遅延は、命令の実行がジャン
プオペレーションの結果によって影響されないような、
そのジャンプオペレーションに続く多数のマシンサイク
ルを表している。高速度パイプラインアーキテクチャに
おいては、命令の実行を継続する前に単に待つだけであ
るのは、非常に好ましくない。
Urbana−Chmpaign のUniversi
ty of IllinoisのP.Y−T.Hsu
の1986年の論文“Highly Concurre
nt Scalar Processing”において
示されている。彼の解決方法によれば、分岐遅延中に、
すべての可能なプログラムパスを並列に実行するが(限
定数の機能ユニットによって許容される限り)、ブール
演算式を用いて各オペレーションを“ガード”する。ブ
ール演算式を満足するオペレーションのみが、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: In
tegrated Solution to High
Speed Parallel Computing
”, IEEE Proceeding on Sup
ercomputing, pages 330−33
9, 1988 (IEEE Catalog #88
CH2617−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 Journa
l of Research and Develop
ment 11巻、25−33頁、1967年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つのジャンプ制御のサブフィールド3
7−39を図2に示す。各ジャンプ制御のサブフィール
ド(例えば、サブフィールド38)は5つのサブフィー
ルド44−48から成る。行き先アドレス(DESTI
NATION ADDRESS )のサブフィールド4
8の規定するアドレスへのジャンプが生じるときの条件
をOPコード(OPCODE) サブフィールド44が
規定する。他にもあるが、典型的な一組みのジャンプオ
ペレーション・コードを表1に示す。
ールド45はこのジャンプオペレーションが可能化され
るパスを規定する。すなわち、ジャンプオペレーション
を実行し、そしてその規定されたジャンプが実際に起き
るのは、そのOPコードの条件となり、そしてパス表現
フィールド45が図5に関連して説明されたパス情報に
マッチしたときである。フィールド37−39における
3つのジャンプのどれもが満足された両方の条件を有し
ないと、ジャンプは起きず、そしてその次の命令が実行
される。こうして、jの明白な分岐の行き先を規定する
各分岐オペレーションは実際に(j+1)枝を決め、そ
こでは余分の行き先はその次の命令である。
、47は、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
つの最も近いジャンプのエンコードした結果を形成する
。このパス情報は、分岐制御ユニット自体を含む全機能
ユニットに用いられ、パス表現マッチングオペレーショ
ンを実施する。
75は、図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には、データを配達すべきあるいはまた
データが配達されるべきレジスタファイル内のレジスタ
を識別するデータソース/行き先サブフィールド124
も含まれている。
するポートがデータメモリ87として示されている。ア
ドレスはリード91を経由してメモリ87に与えられ、
一方、データはボックス87の頭部においてメモリ87
から与えられまた受け取られる。ライン89上の制御入
力は、読み出しオペレーションがメモリから起こるのか
、あるいは書き込みオペレーションがメモリに対して起
こるのかを決定する。図5からのパス情報は、リード8
8上に同等コンパレータ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内のレジスタ
を特定し、(読み出しオペレーションに基づいて)取り
出され、あるいは(書き込みオペレーションに基づいて
)書き込まれるデータを識別する。故に、フィールド1
24は、レジスタファイル10の読み出し/書き込みポ
ート(i+1)に対するアドレスとして用いられる。 メモリからポート(i+1)に対するデータ、あるいは
ポート(i+1)からメモリに対するデータは、データ
メモリ87の頭部に示されたリード上に転送される。図
6の回路は、他のメモリアドレッシング技術を利用する
ために拡張され得る。図6の回路オペレーションでは、
メモリ書き込みオペレーション(もし望むなら、メモリ
読み出し動作も)は、読み出しあるいは書き込みオペレ
ーションのパス表現フィールド122と図5のブランチ
制御装置からリード88に与えられたパス情報との整合
によって調整されるというものである。
され得る1つ以上のパス上(On Path)でオペレ
ーションが可能とされる。図7は、コンパレータ86が
マルチプレクサ94に置き換えられたことを除けば、図
6のそれと同様の回路を示す。パスセットフィールド1
22は16ビットフィールドであり、メモリオペレーシ
ョンがイネイブルされるパスの任意サブセットを特定す
ることができる。回路は、これをマルチプレクサ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のANDゲ
ート70〜72と、図6あるいは図7の論理回路81の
コストが含まれるだけである。
本発明の条件付き分岐技術が使用できる非常に長いワー
ドプロセッサーの一般的なブロック図である。
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 true JPH04245540A (ja) | 1992-09-02 |
JP3098071B2 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 |
US6141675A (en) * | 1995-09-01 | 2000-10-31 | Philips Electronics North America Corporation | Method and apparatus for custom operations |
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 |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
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 |
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 |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities 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 |
WO2000079395A1 (en) * | 1999-06-21 | 2000-12-28 | Bops Incorporated | 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 |
WO2003034201A2 (en) * | 2001-10-12 | 2003-04-24 | 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 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
EP1751655A2 (en) * | 2004-05-13 | 2007-02-14 | 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 |
---|---|
EP0474297A2 (en) | 1992-03-11 |
DE69129569D1 (de) | 1998-07-16 |
DE69129569T2 (de) | 1999-02-04 |
EP0474297A3 (en) | 1993-09-01 |
US5450556A (en) | 1995-09-12 |
JP3098071B2 (ja) | 2000-10-10 |
EP0474297B1 (en) | 1998-06-10 |
KR100242617B1 (ko) | 2000-08-01 |
KR920006845A (ko) | 1992-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3098071B2 (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
US11726791B2 (en) | Generating and executing a control flow | |
US10817360B2 (en) | Apparatus and methods for debugging on a memory device | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
US5872987A (en) | Massively parallel computer including auxiliary vector processor | |
US5758176A (en) | Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system | |
US4740893A (en) | Method for reducing the time for switching between programs | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
JP3678443B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ | |
US5771377A (en) | System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage | |
WO2019126793A2 (en) | A memory apparatus and method for controlling the same | |
JP2620511B2 (ja) | データ・プロセッサ | |
US5930520A (en) | Pipelining device in a parallel processing apparatus and an instruction supplying method therefor | |
JPH02227730A (ja) | データ処理システム | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
KR20210156860A (ko) | True/false 벡터 인덱스 레지스터 | |
KR20090101061A (ko) | 프로세서 및 정보 처리 장치 | |
JP3736866B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
CA2304609A1 (en) | Autonomously cycling data processing architecture | |
KR100374401B1 (ko) | 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치 | |
US5276853A (en) | Cache system | |
JP5786719B2 (ja) | ベクトルプロセッサ | |
EP0015276B1 (en) | A digital pipelined computer | |
JPH05143333A (ja) | 並列演算処理装置 |
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 |