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
Application number
JP3226149A
Other languages
English (en)
Other versions
JP3098071B2 (ja
Inventor
Gerrit A Slavenburg
ヘリット アリ スラヴェンブルフ
Jean-Michel J Labrousse
ジャン ミッシェル ラブルース
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
Koninklijke Philips Electronics NV
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 Philips Gloeilampenfabrieken NV, Koninklijke Philips Electronics NV filed Critical Philips Gloeilampenfabrieken NV
Publication of JPH04245540A publication Critical patent/JPH04245540A/ja
Application granted granted Critical
Publication of JP3098071B2 publication Critical patent/JP3098071B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マシンサイクルにおい
て少なくとも1つの分岐オペレーションおよび少なくと
も1つの非分岐オペレーションを始動させるのに適し、
且つ少なくとも1つのマシンサイクルの分岐遅延を与え
るかもしれないようなパイプラインシステムの如きコン
ピュータに関する。
【0002】
【従来の技術】多くの非数字プログラムに存在するパラ
レイズムは、そのプログラムのうちの比較的に小さな部
分に限られており、従って、主として、局部的である。 一方、並行処理アーキテクチャーは、せいぜい、多くの
科学的課題および通信処理において遭遇するような、相
当に長いステップに亘る大規模コアースグレインパラレ
イズムでプログラムを取り扱うときのものである。これ
らの理由のため、並行処理アーキテクチャーは、多くの
非数字またはアルゴリズムプログラムの実行をスピード
アップするのには不適当なものであるとわかった。
【0003】非常に長い命令語(VLIW)アーキテク
チャーと呼ばれる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
つの複数のオペレーションサブフィールドの連結である
【0004】すべての機能ユニットは、共用マルチポー
トレジスタファイルに接続されており、それら機能ユニ
ットは、そのファイルからそれらのオペランドを取り出
したり、それらの結果をそのファイルへ書き込んだりす
る。したがって、前に計算された結果は、すべて、どの
機能ユニットに対してもオペランドとして使用されうる
。VLIW命令は、サイクル毎にロードされる。各機能
ユニットは、そのサイクル中、そのマルチポートレジス
タファイルにおけるソースおよび指定ロケーション、並
びにスタートすべきオペレーションを識別するそれ自身
の制御フィールドによって制御される。典型的なアーキ
テクチャは、複数のアリスメチックおよびロジックユニ
ットと、複数のメモリインターフェースユニットと、1
つの分岐制御ユニットとを含む。これらの3つの型の機
能ユニットのすべては、オペレーションの速度を最大と
するために、パイプライン制御される。しかしながら、
特定のアプリケーションのために必要とされるファンク
ションに依存して、任意の型の機能ユニットを設けるこ
とができる。バレルシフタ、マルチプライアおよびその
他の任意の機能ユニットは、それらがマシンサイクル毎
にオペレーションの始動を許すようなパイプライン機構
を有するならば、含めうる。VLIWマシンにおいて“
オペレーション”は、VLIW命令の対応するフィール
ドの制御の下で単一の機能ユニットによって行われる原
始動作である。それから、VLIW“命令”は、そのア
ーキテクチャにおける機能ユニットのすべてのオペレー
ションを並列に制御するための、複数のそのようなオペ
レーションフィールドの連結である。
【0005】Proceedings of ASPL
OS, 1987 の“A VLIW Archite
cture for a Trace Schedul
ing Compiler”においてR.P.Colw
ell 等によって教示されるように、VLIWマシン
の如き高度の並列マシンを効率的にプログラムするため
に、トレーススケジューリングと呼ばれるコンパイラー
技法が使用されている。トレーススケジューリングコン
パイラーは、その入力として、あるプログラムの命令お
よびそのプログラムにおける各異なるパスの実行の見込
みを指示する実行プロフィールを取り込む。そのトレー
ススケジューリングコンパイラーは、これらの入力を使
用して、もっとも実行されそうな命令パスの“トレース
”を構成する。このトレースは、それから、VLIWマ
シンにおいて利用しうるすべてのアリスメチックおよび
制御ユニットを使用して、できるだけ並列に実行するよ
うにスケジュールされる。
【0006】VLIWマシンを含む非常に高い性能のパ
イプラインプロセッサの場合には、いわゆる分岐遅延の
問題を解決する必要がある。システムが積極的パイプラ
イニングによってより速いものとされるにつれて、待ち
時間が増大する。この待ち時間は、マシンサイクルにお
ける、命令メモリへのある命令アドレスの送信と、実行
のためのその命令メモリからのその命令の受信との間の
時間である。条件付きジャンプオペレーションの場合に
は、その分岐条件を評価するのに必要な時間が、その待
ち時間に加えられねばならない。その合計時間が、“分
岐遅延”と呼ばれる。分岐遅延は、命令の実行がジャン
プオペレーションの結果によって影響されないような、
そのジャンプオペレーションに続く多数のマシンサイク
ルを表している。高速度パイプラインアーキテクチャに
おいては、命令の実行を継続する前に単に待つだけであ
るのは、非常に好ましくない。
【0007】ブランチ遅延の問題の1つの解決方法が、
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つの異なるジャンプ条件
評価の結果である。このような演算式を評価するための
ハードウエアは、比較的簡単である。しかしながら、マ
ルチポートレジスタファイルを、各機能ユニットに対す
るファクタのすべてにアクセスするのに必要な読出しポ
ートで拡張するためのコストは、禁止的である。
【0008】それから、問題は、相当な分岐遅延の存在
において、VLIWアーキテクチャーの如き高レベルに
パイプライン化されたコンピュータプロセッサアーキテ
クチャーの処理能力を最大にすることである。特に、分
岐遅延の問題に対する従来のブールガード演算式による
解決方法の主たる問題点は、より大きなマルチポートレ
ジスタファイルのコストが高いことである。
【0009】
【本発明の概要】本発明によれば、コンピュータの中央
プロセッサーにおいて発生するが、しかし分岐遅延が終
了していない全ての分岐条件の評価結果の符号化された
表現を与える分岐制御ユニットを内蔵することによって
上述の問題が解決される。この符号化された表現は「パ
ス情報」と呼ばれ、そしてそれ自身分岐制御ユニットを
有するプロセッサーの全ての機能ユニットに割り当てら
れる。パス情報はオペレーションの効果を可能或いは不
可能にするために各々の選択されたオペレーションに関
連しているパス表現フィールドに対してマッチしている
。このパス表現フィールドの適当な使用によって、プロ
グラマー或いはコンパイラーは正しいプログラムパスに
関するオペレーションのみがマシンの状態に関するそれ
らの効果を有していることを保証することができる。 従って、有用なオペレーションは条件付き分岐の分岐遅
延の間になされ、その条件の下でオペレーションが実行
される条件にマッチしているオペレーションのみが進む
ことを許されるから正しいプログラムの働きを保証する
【0010】本発明の一つの見方によれば、プログラマ
ーにマシンの状態を見うるように変更するこれらのオペ
レーションのみがパス表現フィールドに与えられる必要
がある。これらのオペレーションは変数(VLIWマシ
ンのマルチポートのレジスタファイルを含まない)、条
件付きジャンプオペレーション及び除外条件を生じる得
るオペレーションの割当を含んでいる。
【0011】本発明の他の見方によれば、全ての可能な
アクティブプログラムパスから一つだけのオペレーショ
ンを可能にするように、或いは全ての可能なアクティブ
プログラムパスの任意のサブセットのオペレーションを
可能にするように、パス表現フィールドは符号化するこ
とが可能である。後者の場合、パス表現フィールドはパ
スセットフィールドと呼ばれる。
【0012】本発明の完全な理解は添付図面と共に下記
の詳細な説明から得られるであろう。
【0013】
【実施例】本発明の技術は2サイクル以上の分岐遅延を
有する任意のパイプライン化コンピュータに適用できる
。しかしながら、図解のため、VLIWコンピュータの
アーキテクチャーについて説明する。この例示した実施
例は如何なる点においても限定することを意図したもの
ではなく、その進歩的な技術は本願特許請求の範囲から
逸脱することなく当業者によって他の多くのコンピュー
タのアーキテクチャーに適用できるものである。
【0014】図1は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
から得られる。
【0015】機能ユニット11〜15は複数(N)個の
演算・論理ユニット(ALU)から成る。これらのAL
Uの数は特定のアプリケーションにより許容できる並列
の量により決まり、代表的には2ないし8の間のオーダ
である。N個のALUの各々の制御フィールドは命令レ
ジスタ21の各命令に含まれる。したがって、制御フィ
ールド16がALU11を制御し、制御フィールド17
がALU12を制御する。ALU11〜12の各々は、
レジスタファイル10からALUに供給されるオペラン
ドについて複数の種々の演算・論理オペレーションを実
行する標準的な周知の回路から成る。このようなALU
の構造及びオペレーションは周知であり本発明の一部を
構成するものではないので、ここではこれ以上説明しな
い。
【0016】機能ユニット11〜15には、複数(K)
個のデータメモリインタフェース(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に
ついて説明する。
【0017】機能ユニット11〜15の最後の機能ユニ
ットはブランチ制御ユニット(BCU)15である。ブ
ランチ制御ユニット15は命令レジスタ21内の命令の
ジャンプ制御フィールド20の飛び越しオペレーション
に応答する。VLIW命令のジャンプ制御フィールド2
0に含まれるジャンプオペレーションが分岐制御ユニッ
ト15に送られ、図5について後述するように、図1の
中央処理装置において実行されるプログラムにおける別
の命令経路への条件付き分岐を制御するために使用され
る。この目的のために、条件付きジャンプオペレーショ
ンで表現される条件により決まるような、図1の中央処
理装置が従う複数の別の命令経路のどれかを決定するこ
とにより、分岐制御ユニット15が命令発令パイプライ
ン22の命令に入るアドレスを発生する。以下、分岐制
御ユニット15を図5について説明する。
【0018】図1の中央処理装置はVLIWプロセッサ
ーである。その理由は、その中央処理装置がすべてが一
つの命令レジスタ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の論文
「多数の計算ユニットを利用する効率的なアルゴリズム
」に記載されている。
【0019】高度のパイプライン化コンピュータプロセ
ッサーをプログラミングするときの一つの大きな問題は
、そのようなアーキテクチャに固有のその条件付き分岐
遅延である。もし条件が(例えばa>b)ステートメン
ト1とステートメント2というような、プログラム内の
2つの路の間での選択を決定するのであれば、中央処理
装置はステ−トメント1もしくはステ−トメント2の蓄
積コ−ドへ条件付きジャンプを実施しなければならない
。このようなジャンプは連続した2つの遅延を必ず含む
。すなわち、1)条件(例えばa>b)を評価し、そし
てその決定の結果が出たら、2)ステートメント1もし
くはステートメント2の命令アドレスを命令発令パイプ
ライン22に送り、そこでは命令発令の待ち時間が生じ
る。現代の集積チップ装置はその条件を非常に迅速に評
価する。パイプラインが複雑化した、マルチプル・チッ
プ命令発令パイプラインでは、命令メモリへの命令アド
レスの伝達と命令レジスタへの該当命令の発令との間の
、マシンのサイクルの待ち時間は幾つもの命令実施サイ
クルとなることがある。転送中の命令はこの分岐遅延期
間中は入手できないので、この分岐遅延期間中に有用な
仕事をすることは、不可能ではないまでも、困難である
。本発明はこの問題の緩和を指向することである。
【0020】高度に並列で、多機能となっているユニッ
トコンピュータプロセッサー・アーキテクチャーのプロ
グラミングをするときは、プログラマーは必要なオペレ
ーションを直列の形で表現する。このようなマシンのコ
ンパイラーは多数のそのようなオペレーションを単一の
命令語に折り込んで並列処理の発生量を最大とし、そし
て全スループットを最大とする。この目的を達成するた
め各命令語に関連のオペレーションはプログラムの直列
形式における順次のオペレーションと必ずしも一致しな
い。利用できる先のオペレーションの結果によって変わ
ってくるオペレーションのスケジュールが次のマシンサ
イクルでつくられる。それでも、相互の出力に依存しな
い複数のオペレーションを同時に実行することによりか
なりの時間を節約できる。
【0021】条件付きジャンプオペレーションの分岐遅
延のため特別なスケジュール作成問題が生じる。ジャン
プオペレーションが条件付きジャンプを規定する時間と
行き先命令を命令レジスタへ送ることができる時間との
間で幾つかの命令を実行できる。既に説明したように、
このことはジャンプ条件を評価するに要する時間と命令
パイプラインの待ち時間(すなわち、命令アドレスの発
送とそのアドレスされた命令が命令レジスタへ送られる
時間との間の期間)とによるのである。本発明の目的の
一つは、この分岐遅延時間中にできる仕事の量を最大と
することである。簡単のため本発明の詳細な説明では分
岐遅延は2つのマシーンサイクルであるとしているが、
異なる分岐遅延に対しても本発明を簡単に拡大適用でき
る。
【0022】先ず、VLIW命令の詳細の構成を、それ
らが分岐制御に関係しているので、説明する。 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に示す。
【0023】
【表1】
【0024】本発明に従えば、図2のパス表現サブフィ
ールド45はこのジャンプオペレーションが可能化され
るパスを規定する。すなわち、ジャンプオペレーション
を実行し、そしてその規定されたジャンプが実際に起き
るのは、そのOPコードの条件となり、そしてパス表現
フィールド45が図5に関連して説明されたパス情報に
マッチしたときである。フィールド37−39における
3つのジャンプのどれもが満足された両方の条件を有し
ないと、ジャンプは起きず、そしてその次の命令が実行
される。こうして、jの明白な分岐の行き先を規定する
各分岐オペレーションは実際に(j+1)枝を決め、そ
こでは余分の行き先はその次の命令である。
【0025】選択(SELECT)サブフィールド46
、47は、OPコード比較条件が満足されたか、否かを
決定するため比較しなければならない2つのオペランド
の場所を明らかにする。サブフィールド46、47の内
容は、所望のオペランドが貯蔵されている図1のレジス
タ・ファイル10のレジスタのアドレスを含んでいる。 最後のサブフィールド48は転送しようとする命令の行
き先のアドレスを規定する。行き先は絶対的アドレス、
相対的アドレス、間接的アドレス、インデックスされた
アドレス等である。
【0026】図3は、VLIW命令語の一部を形成する
典型的な演算・論理制御ユニットオペレーションフィー
ルド51の分解を示す。ALU制御フィールド51は、
算術・論理ユニットが達成すべきオペレーションを特定
するオペレーションコードサブフィールド52に分解さ
れる。パス表現フィールド53は、後で或る程度詳しく
説明されるが、一般に、図2のパス表現フィールド45
と全く同様に、以下に説明されるパス選択判断基準に基
づいてオペレーションの実行の条件付を行う。サブフィ
ールド54及び55は、サブフィールド52内のオペレ
ーションコードによって特定されるオペレーション内で
使用されるべき2つのオペランドの、レジスタファイル
10(図1)内での位置を特定する。最終に、サブフィ
ールド56は、オペレーションの結果が向けられるべき
、レジスタファイル10内の、行き先を識別する。
【0027】図4においては、VLIW命令語の部分を
形成する典型的メモリフィールド120の分解を示して
いる。フィールド120は、読み出し又は書き込みオペ
レーションを特定するオペレーションコードサブフィー
ルド121に分解される。パス表現サブフィールド12
2は、それぞれ図2及び図3内のパス表現フィールド4
5及び55と類似する機能を達成するが、更に以下で議
論される。サブフィールド123は、(読出し時)デー
タが取り出されるべき、または(書込み時)データが送
られるべきメモリー内のアドレスを特定する。サブフィ
ールド123は、図2のサブフィールド48と全く同様
に、多くの方法でこの様なアドレスを識別する。サブフ
ィールド124は、(読出し時)データが送られるべき
、または(書込み時)データが取り出されるべきレジス
タファイル10(図1)内のレジスタを特定する。読出
しオペレーションに対しては、データがRAMデータメ
モリから取り出され、レジスタファイル10に送られる
。書込みオペレーションに対しては、データがレジスタ
ファイル10から取り出され、RAMデータメモリに送
られる。
【0028】図2乃至4に示されるVLIW命令語構成
は、図1に示されるVLIW機構と同様に、それらが簡
単で理解しやすいとの理由から本発明を説明するために
選択された。しかしながら、ALUオペレーション及び
DMIオペレーション間でフィールドを共有したり、バ
レルシフタ及び乗算ユニットの様な異なる形態の機能ユ
ニットを付加したりの別の構成が可能である。この様な
別の構成は、本発明に直ちに利用可能であるが、記述を
不必要に複雑にする。 分岐制御ユニット 図5は、図1の分岐制御ユニットの詳細ブロック図であ
る。これは、図2に示される様な条件ジャンプ操作を実
行するための必要な制御機能の全てを達成する。簡単の
ために、図2と同じ4方向分岐が適用され、「分岐遅延
」は再び2マシンサイクルであると仮定される。
【0029】3つの目的値及び3つのOPコード状態は
図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以下に詳細に記述される。
【0030】
【表2】
【0031】表に示される様に、プログラム67にロー
ドされる新たな値67は所望の値である。真を導く状態
であり、パス情報整合する最高優先ジャンプは、プログ
ラムカウンタレジスタ67内にラッチされたアドレスを
有する。ジャンプがいずれの比較状態を満足しない場合
、プログラムカンター67に次のアドレスがロードされ
る。プログラムカウンター67の出力は命令発令パイプ
ライン22(図1に示される)に加えられ、2つのサイ
クル待ち期間の後、命令レジスタ21にロードされる適
当なインストラクションを結果する。要素22はパイプ
ライン化され、アドレスが各サイクル毎に要素22に送
られる様にされる。対応する命令が、2サイクル待ちの
後、要素22及び23の結合から発生する。命令発令パ
イプライン22は、高度な読出し専用(ROM)又はラ
ンダムアクセスメモリ(RAM)素子から成る特殊な命
令専用メモリとすることができ、また、図1のデータメ
モリインターフェースと共用されるメモリーシステムへ
の別のポートとすることもできる。
【0032】優先権エンコーダ63の出力はレジスタ6
4及び65によって2つの連続サイクル分だけ遅延させ
られる。レジスタ64及び65の連続した(ここでは4
ビット)出力はパス情報を形成し、例えば要素21及び
22から成る命令パイプラインを未だ通過していない2
つの最も近いジャンプのエンコードした結果を形成する
。このパス情報は、分岐制御ユニット自体を含む全機能
ユニットに用いられ、パス表現マッチングオペレーショ
ンを実施する。
【0033】同等(EQUALS)コンパレータ73〜
75は、図2の3つのジャンプ制御オペレーションに対
して、本発明の第1実施例(ここでは単一のプログラム
パスに対して1つのパス表示コードを特定するオペレー
ションが許される)によってマッチングオペレーション
を実施する。レジスタ64及び65のパス情報出力が、
対応するジャンプ制御サブフィールドのパス表示フィー
ルド45(図2)にマッチする場合(及びその場合にの
み)、同等コンパレータ73〜75は真(TRUE)出
力を発生する。
【0034】同等コンパレータで成る回路は、図7を参
照して後に記載するように、コンパレータ73〜75の
代わりに3つの16入力(1出力)マルチプレクサを使
用することにより、本発明の第2実施例(実行されるべ
きパスのセットを1つのオペレーションが特定できる)
によってマッチングを取扱うように修正され得る。図5
の分岐制御ユニットは全条件付きジャンプオペレーショ
ンの結果を決定するのに必要な比較及びパス情報のよう
な比較の結果をエンコードするのに必要な比較の全てを
行う。同時に、分岐制御ユニットはプログラムカウンタ
に適正なアドレスを発生して、条件付きジャンプオペレ
ーションに続く適正な“次の”命令へのアクセスを許す
。正確に1つのプログラム分岐パスでのオペレーション
の実行を確保するためのメカニズムは図6及び図7に関
連して記載される。しかしながら、このメカニズムは、
条件付きジャンプオペレーション自身の実行を条件付け
するための、図5のものと似ている。
【0035】2つまたはそれ以上の条件付きジャンプオ
ペレーションが、ジャンプの失敗の結果としてあるいは
実際に生じたジャンプの結果として、プログラムの連続
命令サイクルの中で直接相互に続いてもよい。複数の条
件付きジャンプオペレーションが連続命令サイクルの中
で直接相互に続く場合、2つの命令サイクルの分岐遅延
後の行き先の可能な数は、第1の条件付きジャンプオペ
レーションの可能な行き先の数に第2の条件付きジャン
プオペレーションの可能な行き先の数を掛けた積である
。レジスタ64及び65からのパス情報は、そのパス情
報が2つの最も近い命令のジャンプの結果を表示するの
で、前記の可能なものの全てを符号化する。
【0036】図5の分岐制御ユニットからのパス情報は
、ジャンプオペレーションによって選択され得る可能な
パスの全てにおけるオペレーションの実行を条件付けす
るのに使用される。しかしながら、プログラマーに見得
る結果を作るオペレーションの実行を条件付けするのは
必要である。図4に示すような、メモリ格納オペレーシ
ョンはその最も自明なものであり、各メモリ格納オペレ
ーションはパス表現フィールド(図4のサブフィールド
122)を含む。しかしながら、他の条件付きジャンプ
オペレーションもコンピュータオペレーションのプログ
ラマー可視状態に影響を及ぼすことがあり、該オペレー
ションは図2に示すようにパス情報表現サブフィールド
45を含む。プログラムの制御流れを変更するような演
算オーバフローの如くいわゆる“例外提起”オペレーシ
ョンは、それ程自明ではないが同じく重要である。従っ
て、ALUオペレーションでさえ、図3に示すパス選択
を許すようにパス表現サブフィールド53を含む。この
パス情報コードは、発生しているがその結果は未だ命令
発生パイプラインを通っていない条件付きジャンプオペ
レーションによって選択されたプログラムパスに対応す
る前記のオペレーションのみをイネーブルにするのに使
用される。
【0037】分岐の遅延がn個のマシンサイクルであり
且つ各条件付き分岐オペレーションのジャンプ制御サブ
フィールドの数がkであれば、選択した1つの分岐パス
の識別をエンコードするのに必要なビット数は次式n・
log2(k+1) によって与えられる(ここでlog2 は2を底とした
対数である)。図5の3つのジャンプ制御サブフィール
ドの仮定と2つのサイクル分岐遅延に対して、4ビット
がプログラムパスの識別をエンコードするのに必要とさ
れる。このコードは、2つの連続条件付きジャンプオペ
レーションの結果として選択された16個の可能なプロ
グラムパスからの1つを識別するので、パス表現と呼ば
れる。
【0038】2つ以上の分岐パスによって共有されるオ
ペレーションをスケジュールするのは時々は可能である
。その場合、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
も含まれている。
【0039】図6において、活動中のRAMメモリに対
するポートがデータメモリ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には示されていない
【0040】図6の特定の例では、フィールド123は
レジスタ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に与えられたパス情報との整合
によって調整されるというものである。
【0041】図7の変形により、ある所定時間に活発に
され得る1つ以上のパス上(On Path)でオペレ
ーションが可能とされる。図7は、コンパレータ86が
マルチプレクサ94に置き換えられたことを除けば、図
6のそれと同様の回路を示す。パスセットフィールド1
22は16ビットフィールドであり、メモリオペレーシ
ョンがイネイブルされるパスの任意サブセットを特定す
ることができる。回路は、これをマルチプレクサ94に
よって達成するように動作する。マルチプレクサ94は
、パスセットフィールド122からの16個の入力の1
つを、パス情報リード88上のコードに従って、マルチ
プレクサ94の出力へと接続する。パスセットフィール
ド122内の特定のロケーションに「1」ビットが存在
するかどうかにより、その特定のパスセットコードに対
してオペレーションがイネイブルされるかどうかが決定
されるであろう。パスセットコードのビットを選択的に
設定することにより、全ての可能な活動中のパスのいづ
れのサブセット(空のサブセットや満杯のセットを含む
)をも選択することができる。
【0042】状態ブランチオペレーションの後に続くパ
ス表示フィールドあるいはパスセットフィールドは、発
生はされたがまだ命令発令システムを遂行していないよ
うな分岐状態の所定の結果に対して、そのようなオペレ
ーションが実際に実行されていないかどうかを判断する
ように見ることができる。特に、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の
コストが含まれるだけである。
【図面の簡単な説明】
【図1】高度の並列コンピュータプロセッサー、例えば
本発明の条件付き分岐技術が使用できる非常に長いワー
ドプロセッサーの一般的なブロック図である。
【図2】図1のプロッセサーに適している典型的なVL
IWのホーマットであり、ジャンプ制御フィールドがど
のようにして4−ウエイ分岐能力のあるマシンのマルチ
ジャンプ制御フィールドに分解されるかを示しており、
且つ分岐制御ユニット自身のオペレーションのためのパ
ス表現フィールドの存在を示している。
【図3】図1のプロセッサーに適している典型的なVL
IWの一部のホーマットであり、算術及び論理制御フィ
ールドがどのようにしてパス表現フィールドを示すため
に分解されるかを示している。
【図4】図1のプロセッサーに適した典型的なVLIW
の一部のフォーマットを示し、且つパス表現フィールド
を示すために如何にしてメモリ制御フィールドが分解さ
れるかを示している。
【図5】図1の並列プロセッサーにおいて使用される本
発明による分岐制御ユニットとして示している。
【図6】本発明による高度の並列プロセッサーのメモリ
へのアクセスを条件とするパス表現フィールドを使用す
るメモリインターフェイス制御回路を示す。
【図7】本発明による高度の並列プロセッサーのメモリ
へのアクセスを条件とするパスセットフィールドを使用
するメモリインターフェイス制御回路を示す。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】  各マシンサイクルにおいて少なくとも
    一つの分岐オペレーションと少なくとも一つの非分岐オ
    ペレーションとを開始するように設けられ、上記各マシ
    ンサイクルの少なくとも一つの分岐遅延を有するパイプ
    ライン化されたコンピュータシステムにおいて、上記分
    岐遅延中に条件付きの分岐オペレーションのパス認識の
    結果を符号化する分岐制御回路と、上記分岐操作の次の
    少なくとも一つのオペレーションにおいて、実行される
    べきそのようなオペレーションのプログラムパスを認識
    する制御フィールドと、上記パス認識と上記制御フィー
    ルドを用いて上記分岐オペレーションの次のオペレーシ
    ョンを可能とする手段と、を有することを特徴とするコ
    ンピュータシステム。
  2. 【請求項2】  上記制御フィールドが、上記コンピュ
    ータシステムによって実行される各オペレーションの全
    てに現れることを特徴とする請求項1記載のパイプライ
    ン化されたコンピュータシステム。
  3. 【請求項3】  上記制御フィールドが、上記コンピュ
    ータシステムのプログラマー可視状態に作用するオペレ
    ーションのみに現れることを特徴とする請求項1記載の
    パイプライン化されたコンピュータシステム。
  4. 【請求項4】  上記制御フィールドが、実行のための
    一若しくはそれ以上のプログラムパスの任意の部分集合
    を特定することが出来ることを特徴とする請求項1乃至
    請求項3のいずれかに記載のパイプライン化されたコン
    ピュータシステム。
  5. 【請求項5】  デジタル・コンピュータ処理装置であ
    って、並行オペレーションのために結合された複数の機
    能ユニットと、上記機能ユニットの全てを同時にオペレ
    ーションを開始することが可能な命令を記憶する命令登
    録手段と、条件付きの分岐オペレーションにおいて分岐
    の条件をテストする条件付き分岐制御手段と、上記テス
    トの結果を符号化してパス認識を行う手段と、上記パス
    認識と一致しない制御フィールドを含む上記条件付きの
    分岐オペレーションの次の操作の実行を禁止する手段と
    、を有することを特徴とするデジタル・コンピュータ処
    理装置。
  6. 【請求項6】  上記条件付きの分岐オペレーションの
    次の各オペレーションが、上記パス認識と一致すべきフ
    ィールドを含むことを特徴とする請求項5に記載のデジ
    タル・コンピュータ処理装置。
  7. 【請求項7】  上記デジタル・コンピュータのプログ
    ラマー可視状態に作用するオペレーションのみが、上記
    パス認認識一致すべきフィールドを含むことを特徴とす
    る請求項5に記載のデジタル・コンピュータ処理装置。
  8. 【請求項8】  上記符号化手段が、一若しくはそれ以
    上の目的パスを認識するコードにおいて上記パス認識を
    符号化する手段を有することを特徴とする請求項6又は
    請求項7記載のデジタル・コンピュータ処理装置。
  9. 【請求項9】  上記分岐遅延は、少なくとも二つのマ
    シンサイクルであることを特徴とする請求項1乃至請求
    項4の何れかに記載のコンピュータシステム。
JP03226149A 1990-09-05 1991-09-05 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム Expired - Lifetime JP3098071B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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