JPH11249897A - Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置 - Google Patents

Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置

Info

Publication number
JPH11249897A
JPH11249897A JP10325230A JP32523098A JPH11249897A JP H11249897 A JPH11249897 A JP H11249897A JP 10325230 A JP10325230 A JP 10325230A JP 32523098 A JP32523098 A JP 32523098A JP H11249897 A JPH11249897 A JP H11249897A
Authority
JP
Japan
Prior art keywords
instruction
branch
partitions
cache
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10325230A
Other languages
English (en)
Inventor
Kemal Ebcioglu
ケマル・エブジオウル
Kenneth J Kiefer
ケニス・ジェイ・キーファー
David Arnold Luick
デーヴィッド・アーノルド・ルイック
Gabriel Mauricio Silberman
ガブリエル・マウリチオ・シルバーマン
Philip Braun Winterfield
フィリップ・ブラウン・ウィンターフィールド
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH11249897A publication Critical patent/JPH11249897A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 VLIW命令をVLIWプロセッサに送る高
周波数で大容量の単一サイクルの命令キャッシュを提供
する。 【解決手段】 コンピュータが並列実行可能ないくつか
の基本命令をコンパイルして各区画が1つの操作に対応
する複数の区画を有する単一の命令にする、スーパース
カラおよび超長命令語命令を実行することができるコン
ピュータにおいて、本発明は、すべての可能な後続命令
を記憶する改良された命令キャッシュと、いくつかの可
能な分岐が考えられ、評価しなければならない場合に後
続命令を選択する方法とである。1つの命令の可能性の
あるすべての後続命令のすべての分岐条件とすべてのア
ドレスを複製して命令キャッシュに記憶する。すべての
可能性のある後続命令が、同じ次アドレスを有する命令
キャッシュの同じブロックに記憶される。個々の命令
は、複製されたオフセット・アドレスによって識別され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本出願はコンピュータ、特に
VLIW命令の処理に関する。
【0002】
【従来の技術】最新のコンピュータの基本構造は、外界
との間で情報を通信する周辺装置を含む。このような周
辺装置には、キーボード、モニタ、テープ装置、ネット
ワークに結合された通信回線などがある。コンピュータ
内には、外界との間でこの情報の受信、処理、および配
信を行うのに必要なハードウェアがあり、これにはバ
ス、メモリ装置、入出力(I/O)コントローラ、記憶
装置、および少なくとも1つの中央処理装置(CPU)
が含まれる。CPUおよびその他のプロセッサは、コン
ピュータ・アプリケーション・プログラムの命令を実行
し、他のすべてのシステム構成要素の動作を指示する。
プロセッサは実際には、論理比較、算術演算、および一
つの場所から他の場所へのデータの移動などの基本操作
を高速で行う。ユーザがコンピュータ・システムの新機
能または改良機能として知覚するのは、実際にはこのよ
うな同じ単純な操作をはるかに高速で行うプロセッサで
ある。したがって、コンピュータ・システムをさらに改
良するには、これらのシステムをさらに高速にすること
が必要である。
【0003】「スループット」とも呼ばれるコンピュー
タ・システムの全体的速度の1つの測定値は、単位時間
当たりにプロセッサが実行する命令数で測られる。した
がって、システム速度に加えられる可能なすべての改良
のうち最も単純な改良は、様々な構成要素のクロック速
度、特にプロセッサのクロック速度を向上させることで
ある。すべてが2倍の速度で稼働し、その他はまったく
同じように動作する場合、システムは所与のタスクを半
分の時間で実行する。プロセッサは数年前には個別の構
成要素から作られていたが、サイズを小型化し、構成要
素数を減らし、それによって最終的にプロセッサ全体を
単一のチップ上の集積回路としてパッケージ化したこと
によって、実行速度が大幅に向上した。サイズの小型化
によって、プロセッサのクロック速度が向上し、したが
ってシステム速度の向上が可能になった。
【0004】集積回路から得られる速度の大幅な向上に
もかかわらず、さらに高速なコンピュータ・システムを
求める要求が依然として存在する。ハードウェア設計者
は、これまで、集積度の向上、回路サイズの小型化、お
よびその他の様々な技法によって、速度をさらに向上さ
せることができた。しかし、設計者は、物理的なサイズ
の小型化を無限に続けることはできず、プロセッサのク
ロック速度をとどまることなく向上させることには限界
があることを知っている。したがって、コンピュータ・
システムの全体的速度を向上させるために、新しいコン
ピュータ・アーキテクチャを含む他の手法に注意が向け
られるようになっている。
【0005】集積回路チップ上に個々のプロセッサをパ
ッケージ化するコストは低いため、クロック速度を変え
ずに複数のプロセッサを使用してシステム速度を向上さ
せるのが実際的である。さらに、CPUの作業負荷を、
限定された機能を持つスレーブ・プロセッサに肩代わり
させることによって、システム速度が大幅に向上する。
たとえば、スレーブ・プロセッサは、入出力装置の通信
や制御などの反復的な単一の特殊目的プログラムを機械
的に実行する。また、単一のコンピュータ・システム、
一般には同時に複数のユーザにサービスを提供するホス
ト・ペースのシステム内に、複数のCPUを搭載するこ
とも可能である。異なるCPUの各CPUが異なるユー
ザのために異なるタスクを同時に実行してシステムの全
体的速度を向上させる。図1にこの技法を示し、通信ネ
ットワークによって接続され、複数のプロセッサが異な
るタスクを同時に実行することができるように制御され
るいくつかのプロセッサCPU1、CPU2、...を
例示する。タスクの下の短い各横線は1つの命令を表
し、1タスクについて多くの命令がある。実際の状況で
は、おそらく図1に図示されているよりもはるかに多く
の1タスク当たりの命令が存在するであろう。各CPU
は一度に1つの命令を実行し、したがって複数のCPU
が同時に命令を実行する並列プロセッサによって、所要
時間が節約される。しかし、別々のプロセッサで別々の
タスクをすべて開始し、タスク間の通信を同期させ、そ
れらの部分的な結果をまとめて全体的な結果を生成する
オーバーヘッドがかなりある。特定の用途でこの種の従
来の並列プロセッサを使用するには、プログラマまたは
高度なコンパイラは問題を細かく砕き、適切な通信と制
御をセットアップしなければならない。並列実行によっ
て節約された時間よりも多くの時間がこのオーバーヘッ
ドに費やされる場合、並列プロセッサ手法には限界があ
る。この従来の並列処理は、科学数値計算の方法やその
他の高度に構造化された問題など、互いに通信をほとん
ど必要としない大きな部分に自然に分かれる問題にとっ
ては最もサイクルの節約になる。しかし、現実には、複
数の実行経路があったり、プロセッサ間で大量の共用と
通信を必要としたりする問題の場合、複数のCPUでの
並列処理の適用分野は限定される。
【0006】縮小命令セット・コンピュータ(RIS
C)、スーパースカラ、および超長命令語(VLIW)
機のコンピュータ・アーキテクチャは、命令が単純なほ
どハードウェアによって効率的に実行可能であるという
前提に基づいている。これらのアーキテクチャは、アプ
リケーション・コードの並列処理のための複数の実行ユ
ニットとマルチウェイ分岐機構を有する。さらに、これ
らのアーキテクチャは、アプリケーションで使用可能な
並列処理を、その並列処理を高度に最適化されたコード
で表現する特別な言語に頼ることなく利用するコンパイ
ラ技法の開発を促した。コンパイル処理中に可能な限り
多くの決定を行って、プログラム実行中にハードウェア
が決定を行わなくても済むようにする。
【0007】他の手法は、細粒度の並列処理を実施する
ように単一のCPUがユニプロセッサと並列機の両方の
特性を持つハイブリッドである。この手法では、単一の
命令レジスタおよび命令シーケンス・ユニットが単一の
フロー制御下でプログラムを実行するが、CPU内の複
数の演算/論理ユニット(ALU)が同時に複数の基本
操作を実行することができる。同時に実行可能な操作を
判断するのにハードウェアに依存するのではなく、コン
パイラが、実行の前に並列操作を指定するように命令を
形式設定する。スーパスカラ・コンピュータは典型的に
は1プロセッサ・クロック・サイクルに最大4命令を実
行する。さらに、命令レジスタに入っている命令語を拡
張して異なるALUによって複数の独立した操作が行わ
れるようにするには、きわめて長い命令語が必要であ
る。超長命令語(VLIW)コンピュータは1プロセッ
サ・サイクル当たり16命令以上を実行することができ
る。
【0008】いくつかの学術論文によると、多くの応用
分野では、VLIWアーキテクチャの方が、並列動作す
る複数の独立したプロセッサよりも並列度が高く、高速
であると示唆されている。図2に、タスク内の機械命令
レベルでの細粒度の並列機能を有するVLIWコンピュ
ータの一例のモデルを示す。図のように、典型的なアプ
リケーション・プログラムは図の左側に沿ったタイム・
ラインによって示されている単一の制御フローを有する
が、このフロー内の基本操作は並列して実行される。V
LIWコンパイラは、プログラム内の同時実行可能な基
本操作を「発見」し、次にそれらの操作の命令を複合命
令、すなわち超長命令語にコンパイルする。そのためV
LIWというコンピュータ・アーキテクチャおよび命令
の名称が付いている。したがって、VLIW機の自動コ
ンパイラは、プログラムの流れを変える必要がない。こ
れは並列プロセッサ機ではほとんど不可能だったことで
ある。VLIW機のコンパイラはどの基本操作を並列で
実行できるかを判断し、ハードウェアによって実行され
る複合命令を作成するだけでよい。さらに、うまく作成
されたコンパイラは、可能な限り多くの機械クロック・
サイクル中に別々のハードウェア・ユニットの有用な作
業を最適化するように命令ストリームを作り出す。基本
命令(プリミティブ)とは、VLIW命令のうちの別個
のハードウェア・ユニットを制御する部分である。CP
U内のこれらの別々のハードウェア・ユニットは算術演
算論理ユニット(ALU)を含み、ALUには、指数算
術演算を行う浮動小数点ユニット、CPUの外部にある
メモリ記憶域への直接経路を提供するレジスタ−記憶域
(RS)ユニット、およびプロセッサ内の他のレジスタ
への直接経路を提供するレジスタ−レジスタ(RR)ユ
ニットが含まれる。したがって、1サイクル中にVLI
W機内のこれらの別々の資源をすべて使用することがで
き、それによっていくつかの基本機械命令を同時に実行
することができる。その利点は、従来のユニプロセッサ
で可能なよりも少ない機械サイクルでタスクを完了する
ことができることである。言い換えると、タスクの開始
からタスクの完了までの「ターンアラウンド・タイム」
が短縮され、その結果をより早期に入手することができ
る。各トランザクションが長い一連の順次操作を必要と
し、トランザクション処理タスク間の通信が無視できる
程度であるトランザクション処理の応用分野では、この
考え方には従来の並列処理よりもすぐれた固有の利点が
ある。
【0009】VLIWのサイズと形式は特別な考慮を必
要とする。命令語の予想サイズは、メモリ、命令キャッ
シュ、バスなど、CPUの外部のサポート・ハードウェ
アに大きな負担をかける。VLIW設計で大きな命令語
を使用するのはいくつかの理由がある。VLIWは並列
操作を行うために複数のハードウェア・ユニットが同時
に動作する必要があることを想起されたい。これらのハ
ードウェア・ユニットのそれぞれが独自のコマンドを必
要とし、そのコマンドは命令コード、ソースおよび宛先
の指定などを含む。さらに、次に実行する命令を決定す
る機構がなければならない。この決定は、しばしば制御
フローと呼ばれ、どのようなコンピュータでもそれ独自
の特徴を示すが、それらの特徴はVLIWコンピュータ
ではさらにきわだって増大する。次の命令を決定する選
択肢または条件がない場合、制御フローは次の命令に
「ジャンプ」すると言う。制御フローの変更が条件付き
の場合、制御フローは次の命令に「分岐」する。VLI
Wを含むほとんどのコンピュータでは、条件付き分岐が
制御フローを変更する主な機構を構成する。
【0010】条件付き分岐機能を利用するために、コン
パイラはすべての条件付き分岐ステートメントを2つの
構成部分に分解する。すなわち、条件レジスタの検査お
よび設定を行う命令と、前に設定された条件レジスタを
検査する分岐命令である。コンパイラは、依存関係を乱
すことなく、条件レジスタの検査と設定を行う命令をそ
の可能な最も早い実行時点にスケジュールする。分岐ツ
リーをたどる可能な経路を決定する条件レジスタが設定
されている場合、コンパイラは最大16個の条件レジス
タを検査する分岐条件命令をVLIWに形成することが
できる。コンパイラは次に、このVLIWに至る分岐経
路に存在する可能な限り多くの命令をスケジュールす
る。好ましくは6または8である任意の数までの分岐経
路上と1つの順次経路上の非依存命令が単一のVLIW
に形成されるまで、上記のステップを繰り返す。
【0011】適切な分岐を決定する条件の評価は、従来
いくつかの方法で行われている。第1の方法は、実行中
の命令内の条件コードと呼ばれる特別なビットを使用す
る。この条件コードは暗黙的または明示的に設定するこ
とができる。暗黙的に設定された条件コードは、分岐が
決定された時点を見つける困難さと、分岐遅延をスケジ
ュールする困難さが増す。これによって、条件評価と分
岐との間にスケジュールすることができる命令を見つけ
るのが難しくなり、条件コードが命令の大きなサブセッ
トまたは無計画に選択されたサブセットによって設定さ
れている場合には特に困難である。多くの新しいアーキ
テクチャは、条件コードを回避するか、または命令内の
ビットの制御下で条件コードを明示的に設定する。
【0012】分岐条件を検査する他の技法は、たとえ
ば、(a)加算A+Bの結果がゼロ以上の場合はCに進
む、または(b)論理命令の結果がTRUE/FALS
Eに等しい/等しくない場合はDに進むという単純な等
価または不等価検査を必要とする。たとえば図10とそ
れに付随する説明を参照されたい。通常、単純な比較と
分岐命令は分岐の一部であるが、浮動小数点比較などの
より複雑な比較の場合は、条件レジスタを実施する。比
較の結果をレジスタに格納されている値を使用して検査
し、比較に応じて分岐を指定する。いずれにしても、分
岐条件を評価することによって次の命令を決定するのは
単純な処理ではない。次のVLIWを決定するために評
価する必要があるn個の分岐条件があるため、VLIW
では問題がN倍に複雑化する。
【0013】典型的なオペレーティング・システムおよ
びその他のタイプのコードは、分岐によって分離された
数個の命令のシーケンスを特徴とする。VLIWのよう
に複数の並列実行ユニットを備えるプロセッサでは、1
VLIW命令サイクル当たり1つの分岐しか行うことが
できない場合、コードを操作することによって使用可能
な実行ユニットを満たすコンパイラの能力がきわめて制
限される。問題は、複雑な分岐構造がコード移動を最適
化するコンパイラの能力に与える影響だけでなくVLI
Wプロセッサ・ハードウェアのクリティカル・パスとサ
イクル時間に与える影響も最小限にすることである。N
ウェイVLIWまたはスーパスカラ・プロセッサ(ただ
しNは分岐数であり、多数、すなわち16個以上であ
る)は、ほとんど毎サイクルに分岐しなければならない
確率がきわめて高く、最大8ウェイの分岐となることが
あり、恐らくは3〜4ウェイの分岐が存在するという問
題に直面する。プロセッサ複合体内の命令およびデータ
用のクリティカル・レジスタおよびキャッシュへのアク
セス時間が、サイクル時間にスーパースカラ・プロセッ
サまたはVLIWプロセッサのクロックおよびラッチ・
オーバーヘッドを加えた時間にほぼ等しいとすると、現
在のすべての縮小命令セット・コンピュータ(RIS
C)アーキテクチャはすでに、成立した1分岐当たり2
サイクルのレイテンシを必要とする。分岐の解決とフェ
ッチを行う1反復当たり2サイクルでは、プロセッサの
有効実行速度は、分岐のない場合の半分に低下する。さ
らに、分岐予測失敗の場合の余分な1または2サイクル
があるのが一般的であり、平均分岐成立レイテンシは3
サイクル近くになる可能性がある。これは受け入れ不可
能なペナルティである。VLIW機における分岐予測の
問題をさらに悪化させることには、95パーセントの総
合確度で8個の同時分岐を予測するという要件は不可能
な作業である。仮に、8個の可能な分岐ターゲットを持
つ16ウェイ並列プロセッサで、きわめて高くつく8ポ
ート命令キャッシュを実装するか、または何らかのタイ
プの分岐予測方式を使用しなければならない。
【0014】前述のように、VLIW機の能力は、どの
基本操作(プリミティブ)を並列して実行することがで
きるかを評価し、次にすべての基本操作(プリミティ
ブ)を並列して実行し、さらに処理のために次のVLI
Wを選択することである。したがって、Nウェイ分岐と
呼ばれる特性である、単一のVLIWから複数の分岐タ
ーゲットへの条件付き分岐を可能にする必要がある。さ
らに、命令に分岐条件と分岐ターゲットをすべて指定し
なければならない。
【0015】エール大学のジョセフ・フィッシャー(Jo
seph Fisher)とそのグループは、特定のプログラム内
の分岐は予測可能な経路をたどる時間の割合が高いこと
を認めた。フィッシャー等はエクストラ長命令(EL
I)を作成し、最も一般的な実行経路を判断し、それら
の経路を同時に実行することができるかどうかを判断す
る分岐機構を設計した。フィッシャーが開発し、コルウ
ェル等の「HierarchicalPriority Branch Handling for
Parallel Execution in a Parallel Processor」とい
う名称の米国特許第4833599号で開示されている
トレース・スケジューリング技法と、Multiflow Corpor
ationのVLIWプロセッサは、プログラム分岐ツリー
内の最も可能性の高い経路のコンパイル時間予測を必要
とする。予測可能度の高い科学技術計算の場合、この手
法はかなりうまく機能する。しかし、コードが予測可能
な経路からそれる場合、高いペナルティを払わなければ
ならない。商業アプリケーションやオペレーティング・
システムにおけるものなどその他のコード構造は、予測
可能な分岐を持たず、したがってフィッシャーによって
開示されたトレース・スケジューリング技法を使用する
とVLIWユニットにおける使用可能な並列資源の使用
効率が悪くなる。
【0016】商業アプリケーションおよびオペレーティ
ング・システムで使用される他の技法はパーコレーショ
ン・スケジューリングであり、多くの分岐を同時に実行
する。ケマル・エブジオウル(Kemal
【外1】 )が作成したこのシステムは、分岐経路の予測は行わな
い。図3に、パーコレーションによって命令が命令スト
リームの上流に移動し、それによってそれらの命令のデ
ータが入手可能になったらただちにそれらの命令が実行
されるようになる様子を示す。図3の点線矢印は、フォ
ン・ノイマン実行の元のストリームにおける位置からV
LIW命令における区画(parcel)としての最終位置へ
の命令の移動を示す。1つの命令300が条件付き分岐
320の上方に移動している。命令ストリームにおける
元の位置では、命令300の実行は条件付き分岐320
の結果に依存するが、結果としてのVLIW命令ストリ
ームでは命令300は分岐条件を検査する前に実行され
ることになる。これは、投機的実行の一例である。投機
的実行とは、作業が必要か否かがわかる前に作業を行う
ことを意味する。他の作業を妨げずにこの投機的作業を
行うのに十分な資源がVLIW機にある場合、その投機
的作業が必要であることが後でわかれば必ず利得があ
る。資源が多くなるにつれて投機的実行はますます効果
的になる。たとえば、条件付き分岐の後でプログラムが
2つの枝に分かれ、両方の枝からいくつかの命令を分岐
点の上まで移動するのに十分な資源がある場合、投機的
実行はそのプログラムを完了するのに必要な時間を明ら
かに短縮する。シルバーマン(Silberman)、ガブリエ
ル(Gabriel)M.およびエブジオウルの「An Architect
ural Framework for Supporting Heterogeneous Instru
ction-Set Architectures」(IEEE COMPUTER 39-56、1
993年6月)を参照されたい。
【0017】
【発明が解決しようとする課題】したがって、本発明の
目的は、VLIW命令をVLIWプロセッサに送る高周
波数で大容量の単一サイクルの命令キャッシュを提供す
ることである。通常、キャッシュ設計では、これらの要
件は両立しない。この命令キャッシュの周波数は1ナノ
秒未満であることが好ましく、大容量、単一サイクル
で、広範囲な並列アクセスを提供する。この目的を満た
す本発明の特徴は、各ブロックがミニIキャッシュと呼
ばれる4キロバイトのブロックに物理的に分割された大
容量の64キロバイト命令キャッシュである。この4キ
ロバイト・ブロックのミニIキャッシュ設計により、各
ミニIキャッシュは他のミニIキャッシュからほぼ自律
することができる。したがって非常にわずかな配線しか
必要とせず、設計が大幅に簡素化される。したがって、
この命令キャッシュはスケーリング遅延の影響を受けな
い。
【0018】本発明の他の目的は、高速で安価な1ポー
ト設計を使用して、命令キャッシュから実行中のVLI
W命令の可能なすべての複数経路分岐をフェッチするこ
とによって、VLIW命令内のすべての分岐のNウェイ
分岐の評価を可能にすることである。この目的を可能に
する本発明の特徴は、VLIW命令の次の順次VLIW
命令以外のすべてのターゲットVLIW命令が命令キャ
ッシュの同じ1キロバイト・ブロックに配置されること
である。さらに、ほとんどの状況では、この1キロバイ
ト・ブロックの境界を越えない。しかし、順次制御フロ
ーが1キロバイト境界を越えることができるようにする
ことによって、コンパイラの制約が緩和され、本発明を
(N+1)ウェイ分岐と呼ぶことができる。
【0019】本発明の他の目的は、VLIW命令の処理
のためにスケーラブルな命令キャッシュと不変一定の命
令キャッシュを提供することである。スケーラビリティ
を可能にする本発明の特徴は、命令内、およびそれに対
応して命令キャッシュ内における物理区画の使用であ
る。したがって、どのような幅のVLIW命令にでも対
応することができる。ミニIキャッシュが独立してお
り、VLIW命令の1つの物理区画をミニIキャッシュ
に入れることができるようにし、より多くの物理区画を
追加することによって、設計者は命令キャッシュの幅を
増やし、サイズを大きくすることができる。命令キャッ
シュは統計的および物理的に影響を受けないという点で
不変である。すべての分岐条件とターゲット・アドレス
をその中に含む物理区画をミニキャッシュに入れる構成
には、命令キャッシュのブロックの構築が含まれる。物
理区画の数を増やしたり物理区画のサイズを大きくした
りすることによって、4個、5個、8個、16個、17
個、または32個あるいは64個を含む任意の数の区画
を有する命令語であっても新たな問題が生じることはな
い。
【0020】本発明の他の目的は、分岐条件を評価して
次のVLIW命令のアドレスの判断と計算を行うために
わずかなコンピュータの費用とオーバーヘッドを加える
だけで、コンピュータの効率を向上させることである。
次のアドレス、条件コード、および分岐条件を判断する
のに必要な余分なビットと計算は、それらを複製された
物理区画に入れ、次にすべての条件分岐を同時に評価す
ることによって軽減される。したがって、VLIW命令
を収容するのに既存のレジスタのサイズを最小限増やす
だけで済む。すべての条件付き分岐を同時に評価する他
の利点は、本発明によって誤った分岐予測を取り消す不
経済なペナルティが回避されることである。
【0021】
【課題を解決するための手段】本発明は、予測可能な分
岐経路をコンパイル時に知る必要はなく、単に、分岐経
路がわかるまで完全に、可能なすべての経路の同時実行
の備えをするに過ぎない。単一の命令内に含まれる条件
付き分岐の複数同時投機評価の結果、並列実行ユニット
の使用効率が高まる。その結果、スーパースカラ処理お
よびVLIW処理の全体的パフォーマンスが向上する。
【0022】したがって、本発明の一態様は、まず、分
岐区画に付随する各オフセットを含むすべてのターゲッ
ト・アドレスと、複数の区画を有する命令のすべての分
岐区画内に含まれるすべての分岐条件を複製することに
よる、ディジタル計算の方法である。区画には分岐区画
と操作(operational)区画があるが、いずれの場合も
すべての区画がプロセッサで独立実行可能である。この
方法は、命令を、複製されたターゲット・アドレスおよ
び分岐条件を持つ区画と共に命令キャッシュにロード
し、次に、実行する命令を選択するステップをさらに含
む。以下の3つのイベントが同時に行われる。すなわ
ち、(1)各ユニットがそれぞれ1つの区画専用である
プロセッサの複数の実行ユニットで操作区画を実行し、
(2)命令のすべての分岐区画のすべての分岐条件を、
複数の条件コード・レジスタに照らして評価して成立す
る制御フロー分岐を判断し、(3)命令のすべての複製
されたオフセット・ターゲット・アドレスを論理回路に
よってデコードする。成立する制御フロー分岐の評価さ
れた分岐条件は、デコードされたターゲット・アドレス
と、操作区画の実行結果とに関連づけられる。成立する
制御フロー分岐の実行結果はメモリに記憶され、実行結
果によって生じる条件コードが、選択された命令の分岐
条件と照合して評価するために条件コード・レジスタに
格納される。
【0023】本発明は、並列して実行することができる
最大N個の基本コンピュータ操作を第1の命令にコンパ
イルすることによる計算の方法でもある。第1の命令は
少なくともN個の区画を含み、そのうちのいくつかはタ
ーゲット・アドレスと、第2の命令を判断するために評
価される分岐条件とを有する分岐区画であり、いくつか
はコンピュータプロセッサで処理するために操作区画で
ある。第1の命令のN個の区画のすべてのターゲット・
アドレスとすべての分岐条件がN回複製されて命令キャ
ッシュに記憶される。第1の命令のすべての分岐区画内
のすべてのターゲット・アドレスによって示されたすべ
ての可能な後続命令が、次のアドレスによって識別され
た命令キャッシュの指定セクションに記憶され、可能な
各後続命令はオフセットによって個別にアドレス指定さ
れる。命令キャッシュ内では、複製されたターゲット・
アドレスと分岐条件を有するN個の区画の各1つの区画
が、命令キャッシュ内の複数のミニ・キャッシュの各1
つのミニキャッシュに位置合わせされる。この場合も、
この方法では3つの並行したイベントが行われる。すな
わち、(1)第1の命令のすべての分岐条件が同時にN
回評価されてすべての可能な後続命令のうちのどの命令
が第2の命令になるかを判断し、(2)第1の命令のす
べてのオフセットをN回デコードして第2の命令のター
ゲット・アドレスを選択し、(3)第1の命令のすべて
の操作区画を実行して、第2の命令の少なくとも1つの
条件コードを判断し、操作区画の論理結果を様々なメモ
リに記憶する。第2の命令のターゲット・アドレスは命
令キャッシュに転送され、第2の命令が実行のために命
令レジスタにロードされる。第1の命令の実行の結果と
して得られた少なくとも1つの条件コードが、第2の命
令の分岐条件に適用するために条件コード・レジスタに
送られる。
【0024】本発明は、命令を命令レジスタに配信する
ことができる命令キャッシュを有するプロセッサでもあ
る。命令キャッシュはN個のミニキャッシュに位置合わ
せされた列と、区画の行とを有し、各区画は物理的にN
個のミニキャッシュの1つに入れられる。各区画が並列
実行可能な基本コンピュータ操作を有する任意の数の区
画が、1つの命令を構成することができる。プロセッサ
は、N個のターゲット・アドレス選択回路も有し、各タ
ーゲット・アドレス選択回路はN個のミニキャッシュの
うちのそれぞれ1つのミニキャッシュに接続され、最大
N個のターゲット・アドレスをデコードして、命令レジ
スタに配信する命令を選択する。命令レジスタはL個の
分岐区画を有し(ただしLはN以下の数である)、L個
の分岐区画の各分岐区画が、後続命令のL個のターゲッ
ト・アドレスとL個の分岐条件とを有し、命令レジスタ
はさらにM個の操作区画を有する。L個の分岐区画のす
べてのターゲット・アドレスが次のアドレスとL個のオ
フセット・アドレスを含む。プロセッサは、N個の実行
ユニットも有し、N個の実行ユニットのうちの少なくと
も1つの実行ユニットがM個の操作区画のうちのそれぞ
れ1つの操作区画に操作可能に接続され、操作区画を実
行する。N個の選択回路にはオフセット・アドレス・デ
コード論理回路が操作可能に接続され、L個の分岐区画
の各分岐区画内のすべてのターゲット・アドレスをデコ
ードする。命令レジスタには条件コード・レジスタが操
作可能に接続され、L個の分岐区画の各分岐区画を評価
し、次にN個のターゲット・アドレス選択回路と通信し
て次の命令を選択する。
【0025】プロセッサ内では、命令キャッシュはさら
にブロックに構成され、次アドレスが、すべてのターゲ
ット・アドレスによって示されたすべての後続命令が格
納される特定のブロックを示し、L個のオフセット・ア
ドレスの各オフセット・アドレスがそのブロック内の個
々の命令を示す。命令は命令キャッシュの行全体を占有
することができ、その場合、1つの区画は物理的に1つ
のミニキャッシュに入れられ、(L+M)=Nである。
しかし、命令は命令キャッシュの行全体に満たない部分
を占有することもでき、その場合1つの区画は物理的に
各ミニキャッシュに1つ入れられ、(L+M)<Nであ
る。あるいは、命令は命令キャッシュの複数の行を占有
することができ、その場合、1つの区画はそれぞれ1つ
のミニキャッシュに入れられ、(L+M)>Nである。
このプロセッサと命令キャッシュは、命令キャッシュに
一度に様々なサイズの命令を記憶することができる事例
に対応するように意図されている。
【0026】本発明は、各区画を並列して実行すること
ができる複数の区画を有する命令を実行することができ
るプロセッサを含む、中央処理装置を有するデータ処理
システムでもある。中央処理装置は、ミニキャッシュに
分割された命令キャッシュも有し、各ミニキャッシュは
命令内の区画に対応する。中央処理装置は、少なくとも
1つの条件コード・レジスタに接続された分岐条件評価
論理ユニットとオフセット・デコード論理ユニットも有
する。これらのユニットは、レイト選択装置に接続さ
れ、レイト選択ユニットは命令レジスタにも機能可能に
接続されている。中央処理装置は、複数の実行ユニット
と、少なくとも1つの条件コード・レジスタとマルチポ
ート・レジスタを含む複数のレジスタと、複数のキャッ
シュ・メモリと、メイン・メモリも有する。実行ユニッ
トと、論理ユニットおよびレイト選択ユニット、レジス
タ、メモリ、命令レジスタ、および命令キャッシュは機
能的に相互接続されている。データ処理システムは、バ
ス・インタフェース、バス、少なくとも1つの入出力プ
ロセッサを含む複数の外部接続も含む。入出力プロセッ
サは、テープ・ドライブ・データ記憶装置、コンピュー
タ・ネットワーク、光ファイバ通信、ワークステーショ
ン、周辺装置、情報ネットワークのうちの少なくとも1
つに接続され、これらのいずれもバスを介して中央処理
装置にデータおよび命令を送信することができる。デー
タ処理システムでは、命令の実行と評価の結果として発
生する次の可能な命令の、すべての分岐条件、次アドレ
ス(仮想アドレスであってもよい)、およびすべてのオ
フセット・アドレスを複製し、すべての複製された情報
の命令キャッシュに記憶することによって、次の命令の
選択が行われる。可能な次の命令はすべて命令キャッシ
ュ内の次アドレスによって指定されたブロックにロード
される。中央処理装置の分岐条件評価ユニットと条件コ
ード・レジスタが組合わさってすべての条件を評価し、
オフセット・デコード論理ユニットが命令のすべてのオ
フセット・アドレスをデコードする。これらのデコード
されたアドレスは、命令レジスタに接続され、命令レジ
スタの次アドレスを選択するレイト選択ユニットに送ら
れる。正しい分岐として評価された分岐の結果のみが次
の命令を決定し、その分岐の実行結果のみがレジスタま
たはメモリのうちの少なくとも1つに保管されたり外部
接続のうちの少なくとも1つに転送されたりする。
【0027】本発明は、まったく単純に、プロセッサで
実行する命令のすべての分岐情報が複製され、次に命令
キャッシュ内のN個のミニキャッシュに位置合わせさ
れ、各ミニキャッシュに複製されたすべての分岐情報が
入れられる方法である。すべての分岐情報が同時に評価
されて、プロセッサで実行する次の命令が判断される。
【0028】本発明は、並列して実行可能な少なくとも
1つの分岐区画と少なくとも1つの操作(operationa
l)区画を有する命令内のすべての分岐区画を複製する
手段と、複製された区画の各1つの区画と操作区画の各
1つの区画が各1つのミニIキャッシュに記憶されるよ
うに複製された分岐区画を有する命令を命令キャッシュ
に記憶する手段と、すべての可能な次の命令を命令キャ
ッシュ内の同じブロックに記憶する手段と、命令レジス
タに入れる命令を選択する手段と、すべてのミニIキャ
ッシュ内の命令のすべての分岐区画内のすべての分岐条
件を同時に評価する手段と、評価手段と並列して機能
し、すべてのミニIキャッシュ内の命令のすべての可能
な次の命令のすべてのアドレスを同時にデコードする手
段と、評価手段およびデコード手段と並列して、命令の
すべての操作区画を実行する手段と、評価手段の結果を
デコード手段と実行手段に相関させる手段と、命令キャ
ッシュから命令レジスタに送る次の命令を選択する手段
とを含む、コンピュータ処理のための装置である。
【0029】
【発明の実施の形態】本発明の好ましい実施形態による
VLIWプロセッサ・アーキテクチャを使用するコンピ
ュータ・システム400の主なハードウェア構成要素を
図4に示す。命令を処理するCPU401が別々のキャ
ッシュ403および404に結合されている。キャッシ
ュは、CPU401によって頻繁に使用される情報と最
も最近に使用された情報を記憶する高速メモリである。
図のように、命令キャッシュとデータ・キャッシュは実
際にはキャッシュの階層である。レベル1キャッシュ
(L1キャッシュ)は最も高速で、CPUに最も近い。
レベル2キャッシュ(L2キャッシュ)はレベル1キャ
ッシュよりも低速でCPUから遠いが、メイン・メモリ
402よりは実質的に高速でCPUの近くにある。レベ
ル1キャッシュとプロセッサの間、またはレベル1キャ
ッシュとレベル2キャッシュの間、またはレベル2キャ
ッシュとメモリの間の中間にキャッシュがある場合もあ
る。データ・キャッシュと命令キャッシュ(Dキャッシ
ュおよびIキャッシュ)の両方に複数のレベルがあり、
本発明および本明細書のキャッシュの説明はこのキャッ
シュの階層を含むことを意図している。命令キャッシュ
(Iキャッシュ)403にはCPU401によって実行
される命令が記憶される。データ・キャッシュ(Dキャ
ッシュ)404にはCPU401によって使用されるデ
ータが記憶される。両方のキャッシュは、命令とデータ
の両方が入っているランダム・アクセス・メイン・メモ
リ402と通信する。このアーキテクチャは、上述のよ
うに別々のキャッシュを組み込むことによって、VLI
W機またはスーパースカラ機における正常な実行に必要
な命令とデータの両方のための帯域幅を備える。CPU
401とメイン・メモリ402はバス・インタフェース
405を介してシステム・バス410とも通信する。様
々な入出力(I/O)処理装置(IOP)411〜41
5がシステム・バス410に接続され、直接アクセス記
憶装置(DASD)、テープ装置、ワークステーショ
ン、プリンタ、遠隔通信回線などの様々な記憶装置およ
びI/O装置との通信をサポートする。図4は、システ
ム400の代表的な主要構成要素を高水準で図示するこ
とを意図したものであり、そのような構成要素の数とタ
イプは変わることがあることを理解されたい。
【0030】VLIWはその名前が示すように、約50
0〜1000ビット以上というきわめて長いコンピュー
タ命令を有する。VLIWは複数の区画から成り、各区
画は同時に実行可能な操作に関連づけられている。これ
らの操作を実行するハードウェアはこれらの各区画専用
である。したがって、各個々の区画に関連づけられた、
算術演算論理ユニット、浮動小数点ユニット、レジスタ
・レジスタ・ユニット、レジスタ・ストア・ユニットな
どの処理ユニットがある。VLIW処理の特徴は、命令
依存関係違反または資源競合を検出するための特別なハ
ードウェアを必要とせずに、単一の語内のすべての操作
が並列して進行することである。コンパイラは命令を生
成する前にこれらのすべての検査を行い、したがって各
長命令内のすべての操作の並列実行が可能になる。各区
画が並列して実行され、単一サイクル中にいくつかの分
岐命令と、分岐条件がTRUEでない順次経路が実行さ
れる。
【0031】VLIW機の略ブロック図を図5に示す。
VLIW命令は、図4で403として図示されているI
キャッシュから命令レジスタ500にロードされるとハ
ードウェアと一体化した一部になる。1サイクル中にハ
ードウェアを制御するのに命令全体が必要なため、この
命令レジスタ500は各サイクルに全VLIW命令を収
容するのに十分な大きさでなければならない。従来の技
術の項で言及したように、命令レジスタ500はいくつ
かの区画510(parcel)を含み、各区画は1つの基本
操作すなわちプリミティブに相当する。各区画510は
命令レジスタ500にロードされると特定のビット位置
を占有し、それらの位置にハード結線されたハードウェ
ア・ユニットを制御する。コンパイラがプログラムの当
該箇所について十分な並列処理を見つけることができな
いために、命令が最大区画数を含まない場合、未使用の
ビット位置はそれに応じてリセットされる。命令は、条
件コード・レジスタの比較対照となる値である分岐条件
520も含む。命令レジスタ500内のVLIWの各分
岐ターゲット522には、条件コードが分岐条件520
と一致する場合に次に命令レジスタ500にロードされ
るターゲットVLIW命令の次アドレスが含まれる。
【0032】各ALU区画510が1つのALU55
0、552、554、556に命令を供給する。たとえ
ば1つのALU区画にADD命令が含まれているとす
る。この同じ区画にALUが付加するオペレーティング
ランドを見つけることができるようにする情報が入って
おり、オペレーティングランドは、場合によっては命令
レジスタ500自体内の分岐ターゲット・データ522
内に入っているが、より一般的にはオペランドはマルチ
ポート・レジスタ・ファイル540に入っている。マル
チポート・レジスタ・ファイル540は、すべてのAL
Uが使用することができる1組の汎用レジスタであり、
たとえば特許出願第764004号に記載されている
「マルチポートおよびインタリーブ・キャッシュ・メモ
リ」とすることができ、同出願は参照により本明細書に
組み込まれる。実際には、マルチポート・レジスタ・フ
ァイル540内のレジスタがしばしば同一サイクル中に
複数のALUによって使用され、各ALUは同一サイク
ル中にマルチポート・レジスタ・ファイル540内の複
数のレジスタにアクセスすることができる。したがっ
て、レジスタ・ファイル540の「マルチポート」機能
はVLIW機にとってきわめて重要である。
【0033】マルチポート・レジスタ・ファイル540
はロード命令によってデータ・キャッシュ404との間
でやりとりされるデータを一時的に記憶するために使用
される。通常はロード命令が実行されてから後続ALU
操作でそのデータが使用され、その後でALU操作の結
果がただちにマルチポート・レジスタ・ファイル540
に入れられる。ストア命令は、マルチポート・レジスタ
・ファイル540からより大容量の主記憶装置402に
データを移動すると共にデータ・キャッシュ404にコ
ピーを送る。
【0034】各ALU550、552、554、556
は、各サイクル時に1つの条件コードを生成することが
できる。これらの条件コードは次のサイクル時に使用す
るために次アドレス生成機構530に転送され、そこで
実行中のVLIW命令の分岐条件520と比較されて命
令レジスタ500にロードする次のVLIW命令が判断
される。次アドレス生成機構530は、条件コードの設
定値を使用して各サイクルの終わりにALUの結果を保
管するかどうかも判断する。「IF(条件)THEN
(処理を行う)」形式の条件付き操作は2サイクルで解
決される。最初のサイクルでは条件を検査して条件コー
ドを設定し、次のサイクルでその条件コードを使用して
処置を制御する。たとえば、条件付き処置がR1=R1
+R2である場合(ただし、R1およびR2マルチポー
ト・レジスタ・ファイル540内の値である)、次のV
LIW命令にはその区画が含まれ、条件コードによって
各サイクルの終わりにレジスタ・ファイル540R1を
更新するかどうかが決まる。
【0035】1つのVLIW命令の実際の実行を図6お
よび図7に示す。この2つの図は同時に参照されたい。
図7で、VLIWコンパイラ720が通常のコード70
5の特定の命令711、712、...718のコンパ
イルとパーコレートを行い、並列実行可能な単一のVL
IW命令710にする。1つのVLIW命令710が実
行される全時間は垂直線に沿って示された1機械サイク
ルであり、2つの図で同一またはほぼ同じ水平次元上に
ある機能は並列して行われる。たとえば、図6で、ステ
ップ610、612、および614は同時に行われる。
まず最初に、ステップ605で、N個の区画(図7の例
では5個の区画)を有するVLIW命令710が命令レ
ジスタ500にロードされる。次に、ステップ612お
よび614のように区画722、723、714、71
5、718がアクティブにされ、それらの区画が「ハー
ド結線」されているハードウェア要素の実行を制御す
る。それと同時に、ステップ610で、すべての条件コ
ードの直前の機械サイクルから現行設定値が解析され
る。ステップ624でマルチポート・レジスタ・ファイ
ル540からALUにデータがロードされる間に、ステ
ップ620で次アドレス生成機構530が次の命令アド
レスを判断し、ステップ622に示すように、次に実行
するVLIWを決定するために条件コードのどの結果を
使用するかを判断する。この時点で、ステップ632の
ようにALU区画711、712、715が実行され、
ステップ634で区画718がデータ記憶装置(データ
・キャッシュ404または主記憶装置402)からCP
Uにデータをロードすると、プロセッサにおける作業が
行われ、それと同時に命令キャッシュ403から次のV
LIW命令が入手される。最後に、ステップ636で条
件コード解析の結果を使用して、すべてのALUの結果
をゲートし、それによって「成立した」分岐上の区画だ
けがその実行結果を保管し、したがって、たとえば区画
711が次のサイクルに条件コード1を設定すると、ス
テップ642で次のVLIWの条件コードが設定され、
データが適切な記憶装置(マルチポート・レジスタ・フ
ァイル540、データ・キャッシュ404、または主記
憶装置402)に保管される。分岐ツリーの最後の葉は
「GOTO」命令に相当するため、命令内の「成立」分
岐を決定する条件コードの同じ解析によって、次に実行
するVLIW命令も決定し、ステップ650で単一のV
LIWの実行制御が終了する。本明細書に記載の本発明
では、図6の中央にある破線の左側の事象と機構につい
て説明する。
【0036】アーキテクチャ設計と選好に応じて、命令
レジスタ500にロードされるVLIW命令には任意の
数の区画を含めることができ、各区画は任意のサイズと
することができる。各区画が32ビットまたは64ビッ
トを有する8個〜16個の区画のVLIW命令の例を図
8および図9に示す。VLIW命令の例、区画の形式、
および各区画のビット構造の詳細は、本出願人が所有す
る米国特許出願第08/780839号に記載されてお
り、参照により本明細書に組み込まれる。図8および図
9で、BPxは、次アドレス生成機構530で評価する
分岐条件を有する分岐区画を示す。図7の区画714、
IF CC3−1GOTO ENDが分岐区画の例であ
る。RRxは、CPU内の1つのレジスタから他のレジ
スタにデータが転送されるレジスタ−レジスタ操作を示
す。図7に示す区画のうちで、区画711のIF R2
/ R4 CC1=1、712のR2=R2+4、71
5のR1=R1+R8はすべて、RRx区画の例であ
る。図7に示す区画718のLOAD R5 FROM
Addrは、CPU内のレジスタからメモリ階層へデ
ータを転送するレジスタ−記憶域操作を示すRSx区画
の例である。
【0037】本明細書に記載の本発明は、1つの命令が
とることができるいくつかの分岐がある場合に次のVL
IW命令を決定し、それによって分岐区画のより精細な
検査が保証される方法を教示する。VLIW命令におい
て6ウェイ分岐をサポートするVLIW分岐区画のビッ
ト位置の形式の例を図10に示す。VLIW命令では、
分岐が次の順次命令への分岐であっても、すべてのVL
IW命令が、図8、図9、および図10の分岐区画BP
0とBP1の組合せによって決まる少なくとも1つの分
岐を有するという仮定がある。図9および図10に示す
分岐区画2ないし6(BP2〜BP6)は、VLIW命
令の分岐条件に応じて任意選択である。たとえば4個の
区画を有する小さなVLIW命令では、順次VLIW命
令であることを示すビットをVLIW命令に付加するこ
とが好ましいことがある。図10に示す分岐区画には以
下の特徴が含まれる。分岐区画BP0のopコード90
は、VLIWの長さ、分岐ターゲットのソース、および
VLIW命令に含まれる分岐の数を指定することができ
るビット・フィールドを有する。命令仮想アドレス(I
VA)フィールドは、主記憶中の当該区画を識別するた
めにプログラマが使用できる追加ビットを提供する。次
アドレス(NA)は、当該VLIW命令内のすべての分
岐のターゲットであるすべてのVLIWを有するレベル
1命令キャッシュの1キロバイト・ブロック/モジュー
ルを指定する。これは、命令アドレス・レジスタに連結
され、ターゲット・ブロックのアドレス全体を生成す
る。条件コード(CCX)ビット選択フィールドは、分
岐がないかどうかを検査する条件レジスタ・ビットを指
定する。VLIWプロセッサでは、検査する好ましい最
大条件ビット数は5である。分岐条件(BC)フィール
ドは、実行する各分岐ごとに満たさなければならない条
件を指定する。分岐条件フィールドは条件コード・ビッ
ト選択フィールドに対応する。各条件について、0、
1、およびX(ドントケア)の3つの状態を検査するこ
とが好ましい。ターゲット実行マスク(TEM)フィー
ルドは、当該区画の条件コードが満たされた場合に現行
VLIW命令のどの区間を実行すべきかを指定する。オ
フセット・フィールドは、分岐のターゲットである1キ
ロバイト・ブロック内の次のVLIW命令のアドレスを
示す。各分岐について1つのオフセットがある。
【0038】実行する次のVLIWの決定は、1プロセ
ッサ・サイクル中に行う必要があるため、複雑な作業で
あり、さらに重要になる。1処理サイクル以内でのこれ
らの分岐区画の評価は、後続VLIWを特定の構成のレ
ベル1命令キャッシュ403にロードし、それと同時
に、次アドレス生成機構530で分岐条件を評価するこ
とによって行うことができる。大部分のVLIWは順次
であるが、平均すると、5命令ごとに実行パイプライン
を分岐させることが経験的にわかっている。典型的に
は、1つのVLIW命令当たり3個の条件付き分岐があ
る。1つのVLIW内に最大8個以上の分岐条件区画を
入れることができるが、実際には、VLIWコンピュー
タ・システムを成功裏に実施するには6個の分岐条件区
画で十分である。6個を超える分岐条件区画は、論理的
に実施が難しく、めったに必要ではない。各条件レジス
タを条件コード・マスクによって検査する。このマスク
の評価は、ハードウェアのクリティカル・パス上にあ
り、したがって位置的にコード化してデコード論理を高
速化する。分岐成立経路上にあると評価された区画のA
LLUの結果だけがメモリ(キャッシュ・メモリまたは
メイン・メモリ)に記憶するためにコミットされ、次の
サイクルのために条件コード・レジスタで使用される。
【0039】条件分岐を有する制御フローを図11に視
覚的に示す。前に実行された条件付き命令の結果に応じ
て次のVLIW命令が実行される。CPUで実行される
操作は、制御フローまたはツリーの分岐を表す線と交差
する短い線op1〜op6によって表されている。ツリ
ーのノードは評価する条件cc0、cc1、cc2に対
応し、そこで制御フローは方向を変えることができる。
ノードでは、条件コードについて二進検査を行う。ノー
ドから左側に出るノードはテストの偽の結果に対応し、
右側に出る分岐は検査の真の結果に対応する。たとえ
ば、図11に示すように左端の分岐をたどり、まず、条
件cco=LTを評価して、第1の命令の結果が何らか
の任意の値(一般にはゼロ)よりも小さいかどうかを判
断する。これが偽の場合、左の制御フロー経路をop1
として識別されている操作まで進む、他の条件cc1=
GTについてop1の結果を評価する。すなわち、op
1の結果が何らかの任意の値よりも大きくない場合、o
p3に進み、その後次の命令L0に進む。同様に、cc
0=LTが真の場合、op2が実行され、cc2=EQ
も真の場合op6が実行され、L3が次の命令になる。
【0040】VLIWアーキテクチャの実施の成功は、
レベル1命令キャッシュ(L1Iキャッシュ)の構造に
よって決まる。ゼロ・サイクルのレイテンシで最大6ウ
ェイ分岐に対適応させる第1の要件は、プロセッサに最
も近いレベル1命令キャッシュを、多くのシステムで一
般にマイクロコードのために使用される制御記憶メモリ
として扱うことである。また、完全即値アドレス・フィ
ールドのように、命令キャッシュ・アドレスが完全に命
令から取り出されるようにレベル1命令キャッシュを直
接アドレスすることも必要である。あるいは、命令アド
レス・レジスタから上位アドレスの一部を取り出し、残
りの下位アドレス・ビットは命令から直接取り出され、
このように取り出されたアドレスはN個の命令のモジュ
ール空間内の命令制御語の絶対アドレスのサブユニット
である。
【0041】図12に示すレベル1命令キャッシュ(L
1Iキャッシュ)403はCPUと共に集積され、好ま
しくは列ブロックまたはそれぞれ4キロバイトのミニI
キャッシュ1100に構成された64キロバイトを有す
る。ミニIキャッシュ内のバイト数と1VLIW命令当
たりのバイト数との間には関係がある。ミニIキャッシ
ュの数は、異なるフィールド幅と異なる区画サイズを有
するVLIW命令の処理に対応するように変化すること
ができる。さらに、レベル1命令キャッシュは1ポート
・レイト選択アレイとして簡単に構成できるようにする
ことが重要である。レベル1命令キャッシュは、可能な
最高速の単一サイクル・アクセスを可能にするようにダ
イレクト・マッピングされるが、アソシアティブ・キャ
ッシュも機能し、その場合はアクセス時間が長くなる。
レベル1命令キャッシュでは、VLIWコンパイラが分
岐ターゲットをVLIW命令から手配し、それによって
前に実行しているVLIW命令のすべての可能なVLI
W命令が命令のうちの1キロバイトの境界上に位置合わ
せされた同じ1キロバイト・ブロック内に入れられるよ
うにする必要がある。すなわち6ウェイ分岐方式では、
可能な6個のターゲットVLIW命令すべてを、16×
64バイト=1024バイトの16個のVLIW命令か
ら成るモジュールに構成する必要がある。
【0042】図12には、1キロバイト・ブロック11
20と、もう一つの1キロバイト・ブロック1122の
最初の2つのVLIW命令が示されている。各1キロバ
イト・ブロック1120内には、各行に1つずつ16個
のVLIW命令1124がある。本発明は、VLIW命
令がレベル1命令キャッシュ403内の1キロバイトの
境界上に位置合わせされるため、可変数の区画を有する
VLIW命令に対応する。各列1100〜1115の個
々の行内に各VLIW命令1124の個々の区画112
6を位置合わせすることによって、1つのVLIW命令
は4個または8個の区画しか持つことができないが、後
続のVLIW命令は16個の区画を持つことができる。
【0043】VLIW機の重要な特徴は、命令キャッシ
ュにロードされる前に、VLIW命令1124の各区画
1126が、各区画内に複製された各区画の次アドレ
ス、オフセット、および分岐条件を有することである。
1サイクル・プリプロセッサが、分岐条件、次アドレ
ス、オフセットを、1区画について1アレイずつのフラ
グ・アレイ1310(図17に図示)に移動させ、次
に、命令キャッシュにロードする前に各区画を複製す
る。より小さい列1111には、メイン・メモリ内の1
キロバイト・ブロックの次アドレスの数ビット(11ビ
ット)が含まれる。その結果、このより小さい列111
1のビットの数と値は1キロバイト・ブロック1120
全体を通じて同じになる。
【0044】VLIW命令の複数の1キロバイト・ブロ
ック(典型的には4〜8個の1キロバイト・ブロック)
が、メイン・メモリからレベル1命令キャッシュにロー
ドされる。たとえば、11ビットの分岐アドレスがあ
り、そのうちの事前デコードされた8ビットによってメ
イン・メモリ内のブロックが識別され、コード化された
3ビットによって、メモリからロードされたうちの1キ
ロバイト・ブロックのアドレスが識別される。このアド
レスは、各区画の次アドレス(NA)フィールドにも入
れられる。レベル1命令キャッシュは、仮想アドレスを
使用してアドレスされ、それによって仮想−実アドレス
・マッピングを待つ必要がなくなる。アドレスは加算機
を通らずにVLIW命令から直接入手される。あるい
は、アドレスの上位ビットがいくつかのレジスタのうち
の1つのレジスタから取り出される。オフセット選択1
130およびレイト選択1140がさらにオフセットを
デコードして、次に命令レジスタ500にロードする個
々のVLIW命令を得る。
【0045】図13から図15に示す3つのイベントは
同時に発生する。まず、1220で、分岐条件を条件コ
ード・レジスタと比較することによって、VLIW命令
のすべての区画を同じ分岐条件について並列して評価す
る。直前のVLIW命令によって1ミニIキャッシュ当
たり1つずつ、16コピーの条件コード・レジスタがロ
ードされた。これと同時に、1240ですべての区画が
並列評価され、可能なすべてのオフセットアドレスがデ
コードされて次のVLIWが何であるかが判断される。
分岐条件を解決してどの条件付き分岐が成立したかが判
断されると、その分岐に付随するオフセット・アドレス
が選択され、その情報がオフセット選択1130および
1140に転送され、キャッシュの1キロバイト・ブロ
ック内の16個のVLIWから次のVLIWが選択され
る。これと同時に、1260でミニIキャッシュのすべ
ての分岐が実行され、それによって、次のVLIW命令
の分岐条件の評価のために条件コード・レジスタをその
実行結果と共にロードすることができるようになるとと
もに、「成立」分岐であると評価された分岐の結果を記
憶することができる。直前のVLIWn−1によって条
件コードが設定される。VLIWnはその条件をそれら
の条件コードと照らして評価させ、そのオフセット・ア
ドレスをデコードさせ、すべての区画を実行してどの結
果を記憶するかを判断する。
【0046】したがって、かなり自律的に動作する16
個(およびそれ以上またはそれ以下の数であってもよ
い)のミニIキャッシュに分割されたレベル1命令キャ
ッシュの設計によって、VLIW命令のすべての条件付
き分岐を評価してどの分岐が正しい分岐であるかを判断
することが可能になる。正しい分岐の演算結果と条件コ
ードだけが保管される。この同時評価を可能にするため
に、各区画の次アドレス、条件コード、および分岐条件
が16回(またはミニIキャッシュの数と同数回)複製
される。次アドレスは、すべての条件分岐のターゲット
VLIW命令をすべて含む命令キャッシュ内の1キロバ
イト・ブロックを示す。オフセット・アドレスはデコー
ドされ、当該1キロバイト・ブロックのどの特定のVL
IW命令が次に実行するVLIW命令になるかが判断さ
れる。
【0047】図16および図17に、単一の自律ミニI
キャッシュ100の関係内での本発明のプロセスを示
す。分岐条件と次アドレスとオフセットを持つ複製され
た分岐区画ビットが、ミニIキャッシュ1100のフラ
グ・アレイ1310に記憶される。本発明を説明するた
めに、図16および図17に、現行サイクル中に実行さ
れ、評価される、複製された分岐区画ビットを持つ命令
1126を示す。命令1126内の分岐条件BC
1...BC6が、分岐条件評価論理ユニット1350
内の条件コード・レジスタ1320の選択された条件コ
ードと照らして評価される。条件コード・レジスタ13
20内の値は、前の命令の実行結果によって決定してい
る。これと同時に、命令1126のオフセットOFF
1...OFF2がオフセット・デコード論理回路13
30に転送される。分岐条件論理回路の結果はオフセッ
ト選択回路1130に転送され、そこで、分岐条件によ
って判断された後続命令となる可能性がある各命令の、
デコードされたオフセットが選択される。デコードされ
たこれらのアドレスは次にレイト選択ユニット1140
に転送され、命令レジスタ500のためにミニIキャッ
シュ1100から次の命令が選択される。選択された命
令は命令1126になり、プロセスが再び開始される。
【0048】本発明について、現在のところ最も実際的
で好ましいと考えられる実施形態と関係づけて説明した
が、本発明は開示した実施形態に限定されるものではな
く、請求の範囲に記載の主旨および範囲内に含まれる様
々な修正および同等の構成も含むものである。たとえ
ば、すでに述べたように、命令キャッシュの設計はVL
IW命令内の多様な数の区画に適応させることができ
る。本発明の柔軟性を高めるために、スーパスカラ・コ
ンピュータにおけるように、命令キャッシュ内のミニI
キャッシュの数を命令内のより少数またはより多数の区
画またはクワド語に合わせて変えることができる。動作
周波数を向上させるために、設計者はALUにおける実
行のサイクル数を増やし、パイプラインを縮小すること
もできる。
【0049】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0050】(1)コンピュータの方法であって、
(a)いくつかの区画が分岐区画であり、いくつかの区
画が操作区画であり、すべての区画がプロセッサにおけ
る独立実行が可能である、複数の区画を有する命令のす
べての分岐区画内に含まれるすべてのターゲット・アド
レスとすべての分岐条件を複製するステップと、(b)
複数の区画を有する命令を前記複製されたターゲット・
アドレスおよび分岐条件と共に命令キャッシュにロード
するステップと、(c)実行のために命令を選択するス
テップと、(d)各実行ユニットが前記区画のうちのそ
れぞれの区画専用である、プロセッサの複数の実行ユニ
ットにおいて操作区画を実行するステップと、(e)前
記命令のすべての分岐区画のすべての分岐条件を同時に
評価して成立する制御フロー分岐を判断するステップ
と、(f)デコード論理回路を使用して前記命令のすべ
てのターゲット・アドレスを同時にデコードするステッ
プと、(g)評価した前記分岐条件の各1つの分岐条件
を前記デコードされたターゲット・アドレスの各1つの
ターゲット・アドレスと前記操作区画の実行結果とに相
関させるステップと、その結果として、(h)前記成立
する制御フロー分岐を実行のために選択するステップ
と、(i)前記成立する制御フロー分岐の実行結果を記
憶するステップと、(j)前記成立する制御フロー分岐
の次の命令を実行のために選択するステップとを含む方
法。 (2)前記成立する制御フロー分岐の実行結果を記憶す
る前記ステップ(g)が、(g1)前記実行結果をメモ
リに記憶するステップと、(g2)前記実行結果によっ
て生じる複数の条件コードを複数の条件コード・レジス
タに記憶するステップとをさらに含む、上記(1)に記
載の方法。 (3)すべてのターゲット・アドレスを複製する前記ス
テップ(a)が、(a1)各オフセットが分岐区画に関
連づけられた複数のオフセットをすべて複製するステッ
プをさらに含み、デコード論理回路を使用してすべての
ターゲット・アドレスを同時にデコードする前記ステッ
プ(f)が、(f1)前記複製されたオフセットをすべ
てデコードするステップをさらに含む、上記(2)に記
載の方法。 (4)前記命令のすべての分岐区画のすべての分岐条件
を評価する前記ステップ(e)が、(e1)前記分岐条
件の各1つの分岐条件を、前記複数の条件コード・レジ
スタにそれぞれ入っている前記複数の分岐条件の各1つ
の分岐条件と比較するステップをさらに含む、上記
(2)に記載の方法。 (5)(a)第1の命令が少なくともN個の区画を含
み、前記N個の区画のうちのいくつかが後続命令のター
ゲット・アドレスと第2の命令を判断するために評価す
る分岐条件とを有する分岐区画であり、前記N個の区画
のうちのいくつかがプロセッサで実行するための操作区
画である、並列して実行可能な最大N個の基本コンピュ
ータ操作を第1の命令にコンパイルするステップと、
(b)命令キャッシュに記憶するために前記第1の命令
のN個の区画のすべてのターゲット・アドレスとすべて
の分岐条件をN回複製するステップと、(c)各可能な
後続命令がオフセットによって個別にアドレスされる、
第1の命令のすべての分岐区画内のすべてのターゲット
・アドレスによって示されたすべての可能な後続命令
を、次アドレスによって識別された命令キャッシュの指
定セクション内に記憶するステップと、(d)前記複製
されたターゲット・アドレスと分岐条件とを有するN個
の区画の各1つの区画を前記命令キャッシュ内の複数の
ミニキャッシュの各1つのミニキャッシュに位置合わせ
するステップと、(e)前記第1の命令のすべての分岐
条件をN回評価し、同時に、すべての可能な後続命令の
うちのどの命令が第2の命令になるかを判断するステッ
プと、(f)ステップ(e)と同時に、前記第1の命令
のすべてのオフセットをN回デコードして前記第2の命
令に対応するターゲット・アドレスを選択するステップ
と、(g)ステップ(f)と同時に、前記第1の命令の
すべての操作区画を実行して前記第2の命令の少なくと
も1つの条件コードを判断し、前記操作区画の結果を少
なくとも1つのレジスタまたはメモリあるいはその両方
に記憶するステップと、(h)前記命令キャッシュに、
前記第2の命令のターゲット・アドレスを伝達し、前記
第1の命令の結果生じる少なくとも1つの条件コードを
少なくとも1つの条件コード・レジスタに伝達するステ
ップとを含む方法。 (6)(a)任意の数の区画が命令を構成し、各区画が
N個のミニキャッシュのうちの1つのミニキャッシュに
物理的に入れられる、N個のミニキャッシュに位置合わ
せされた列と複数の区画に位置合わせされた行とを有す
る命令キャッシュと、(b)各ターゲット・アドレス選
択回路がN個のミニキャッシュのうちのそれぞれ1つの
ミニキャッシュに直接接続され、N個のターゲット・ア
ドレスをデコードし、前記命令レジスタに送る命令を選
択する、N個のターゲット・アドレス選択回路と、
(c)LがN以下であり、命令レジスタがL個の分岐区
画を有し、各L個の分岐区画が後続命令のL個のターゲ
ット・アドレスとL個の分岐条件とを有し、前記命令レ
ジスタがM個の操作区画をさらに有する、前記命令を受
け取って実行を開始する命令レジスタと、(d)N個の
実行ユニットのうちの少なくとも1つの実行ユニットが
M個の操作区画の各1つの操作区画に操作可能に接続さ
れ、前記操作区画を実行するN個の実行ユニットと、
(e)前記N個の選択回路に操作可能に接続され、前記
L個の分岐区画の各分岐区画内のすべてのターゲット・
アドレスをデコードする、オフセット・アドレス・デコ
ード論理回路と、(f)前記N個のターゲット・アドレ
ス選択回路に操作可能に接続され、前記L個の分岐区画
の各分岐区画を評価する条件コード・レジスタとを含む
プロセッサ。 (7)前記命令キャッシュがさらに複数のブロックに構
成され、前記L個の分岐区画のすべてのターゲット・ア
ドレスが次アドレスとL個のオフセット・アドレスを含
み、次アドレスはすべてのターゲット・アドレスによっ
て示されたすべての後続命令が記憶されている複数のブ
ロックのうちの選択された1つのブロックを示し、L個
のオフセット・アドレスの各オフセット・アドレスは前
記複数のブロックのうちの選択された1つのブロック内
の個々の命令を示す、上記(6)に記載のプロセッサ。 (8)前記命令が前記命令キャッシュの1行全体を占有
することができ、前記区画の各1つの区画がN個のミニ
キャッシュの各ミニキャッシュに物理的に入れられ、
(L+M)=Nである、上記(6)に記載のプロセッ
サ。 (9)前記命令が前記命令キャッシュの1行全体未満を
占有することができ、前記区画の各1つの区画がN個の
ミニキャッシュの各ミニキャッシュに物理的に入れら
れ、(L+M)<Nである、上記(6)に記載のプロセ
ッサ。 (10)前記命令が前記命令キャッシュの複数の行を占
有することができ、前記区画の各1つの区画がN個のミ
ニキャッシュの各1つのミニキャッシュに入れられ、
(L+M)>Nである、上記(6)に記載のプロセッ
サ。 (11)(L+M)=N=16である、上記(8)に記
載のプロセッサ。 (12)N=16であり、(L+M)=4または8であ
る、上記(9)に記載のプロセッサ。 (13)N=16であり、(L+M)=32または64
である、上記(10)に記載のコンピュータ。 (14)(a)各区画が並列して実行可能な複数の区画
を有する命令を実行することができるプロセッサと、各
ミニキャッシュが前記命令の区画に対応するミニキャッ
シュに分割された命令キャッシュと、少なくとも1つの
条件コード・レジスタおよびオフセット・デコード論理
ユニットに接続された条件評価論理ユニットと、命令レ
ジスタに接続されたレイト選択ユニットと、複数の実行
ユニットと、少なくとも1つの条件コード・レジスタお
よびマルチポート・レジスタ・ファイルを含む複数のレ
ジスタと、複数のキャッシュ・メモリと、メイン・メモ
リとを含み、前記実行ユニットと、前記論理ユニット
と、前記レイト選択ユニットと、前記レジスタと、前記
メモリと、前記命令レジスタと、前記命令キャッシュと
が機能的に相互接続されている中央処理装置と、(b)
バス・インタフェースと、バスと、いずれもがバスを介
してデータおよび命令を前記中央処理装置に送信するこ
とができるテープ・ドライブ、データ記憶装置、コンピ
ュータ・ネットワーク、光ファイバ通信、ワークステー
ション、周辺装置、情報ネットワークのうちの少なくと
も1つに接続された少なくとも1つの入出力プロセッサ
とを含む複数の外部接続とを含み、次の命令の選択が、
前記命令の実行と評価の結果として生じたすべての分岐
条件と次アドレスとすべてのオフセット・アドレスとを
複製し、複製されたすべての情報を前記命令キャッシュ
に記憶することによって行われ、可能なすべての次の命
令が前記命令キャッシュ内の前記次アドレスによって指
定されたブロックにロードされ、前記条件コード・レジ
スタと前記分岐条件評価論理ユニットがすべての分岐条
件を評価し、前記オフセット・デコード論理ユニットが
前記命令のすべてのオフセット・アドレスをデコード
し、前記分岐条件評価論理ユニットが前記少なくとも1
つの条件コード・レジスタと少なくとも1つの他のレジ
スタとに伝達し、次の命令を決定する前記分岐条件評価
論理ユニットの結果のみを保管し、前記オフセット・デ
コード論理ユニットおよびレイト選択ユニットが前記命
令レジスタのために前記命令キャッシュから次の命令を
選択する、データ処理システム。 (15)(a)プロセッサで実行される命令のすべての
分岐情報を複製するステップと、(b)各ミニキャッシ
ュにすべての前記複製された情報が入れられる、前記命
令の前記複製された分岐情報を命令キャッシュ内のN個
のミニキャッシュに位置合わせするステップと、(c)
前記分岐情報をすべて同時に評価して前記プロセッサで
実行する次の命令を判断するステップとを含む、コンピ
ュータ処理の方法。 (16)(a)並列して実行可能な少なくとも1つの分
岐区画と少なくとも1つの操作区画とを有する命令内の
すべての分岐区画を複製する手段と、(b)それによっ
て前記複製された区画の各1つの区画と前記操作区画の
各1つの操作区画が各1つのミニIキャッシュに記憶さ
れるように、前記命令を前記複製された分岐区画と共に
命令キャッシュに記憶するステップと、(c)前記命令
キャッシュ内の同じブロックにすべての可能な次の命令
を記憶する手段と、(d)命令レジスタに入れる前記命
令を選択する手段と、(e)すべてのミニIキャッシュ
内の前記命令のすべての分岐区画内のすべての分岐条件
を同時に評価する手段と、(f)ステップ(e)と並列
して、すべてのミニIキャッシュ内の前記命令のすべて
の可能な次命令のすべてのアドレスを同時にデコードす
る手段と、(g)ステップ(e)および(f)と並列し
て前記命令のすべての操作区画を実行する手段と、
(h)前記評価手段の結果を前記デコード手段と前記実
行手段に相関させる手段と、(i)前記命令キャッシュ
から前記次の命令を選択して前記命令レジスタに入れる
手段とを含む、コンピュータ処理のための装置。(1
7)(a)各命令が独立実行または評価あるいはその両
方が可能な複数の実行区画を有する複数の命令を受け取
るためのメイン・メモリへのメモリ接続と、(b)各ミ
ニIキャッシュが前記命令の1つの実行区画のみが入る
ように構成されている、複数のミニIキャッシュと、
(c)前記区画の実行または評価あるいはその両方の独
立開始のために前記各区画を伝達するための命令レジス
タへの接続とを含む、コンピュータ処理において使用す
るための命令キャッシュ。
【図面の簡単な説明】
【図1】コードの順次行を並列して実行する複数のプロ
セッサを示す図である。
【図2】VLIWコンピュータの概念による、コードの
複数の行を並列して実行する単一のプロセッサを示す図
である。
【図3】VLIWコンピュータによってコンパイルされ
たVLIW命令を示す図である。
【図4】VLIWコンピュータの分岐機能を実施する高
水準コンピュータ・システムを示す図である。
【図5】本発明の分岐機能を実施するVLIWプロセッ
サの構成要素を示す図である。
【図6】VLIW命令の実行と並列して分岐条件を解決
する方法を示すフローチャートである。
【図7】VLIWコンピュータにおけるVLIW命令の
実行を示す図である。
【図8】8個の区画を有するVLIW命令の例を示す図
である。
【図9】16個の区画を有するVLIW命令の例を示す
図である。
【図10】VLIW命令内に含まれる分岐区画の形式を
示す図である。
【図11】VLIW命令の分岐機構と制御フローを示す
図である。
【図12】VLIWコンピュータのレベル1命令キャッ
シュを示す図である。
【図13】次のVLIW命令を判断する本発明の3つの
同時プロセスを示す図である。
【図14】次のVLIW命令を判断する本発明の3つの
同時プロセスを示す図である。
【図15】次のVLIW命令を判断する本発明の3つの
同時プロセスを示す図である。
【図16】ミニIキャッシュの関係内での3つのプロセ
スを示す図である。
【図17】ミニIキャッシュの関係内での3つのプロセ
スを示す図である。
【符号の説明】
400 コンピュータ・システム 401 中央処理装置 402 ランダム・アクセス・メモリ 403 命令キャッシュ 404 データ・キャッシュ 405 バス・インタフェース 410 システム・バス 500 命令レジスタ 510 ALU区画 550 算術演算/論理ユニット 540 マルチポート・レジスタ・ファイル
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI G06F 12/08 G06F 12/08 W (72)発明者 ケニス・ジェイ・キーファー アメリカ合衆国55906 ミネソタ州ロチェ スター クワリ・コート ノースイースト 1031 (72)発明者 デーヴィッド・アーノルド・ルイック アメリカ合衆国55906 ミネソタ州ロチェ スター ホーソーン・ヒル・ロード ノー スイースト 2317 (72)発明者 ガブリエル・マウリチオ・シルバーマン アメリカ合衆国10546 ニューヨーク州ミ ルウッド ヒドゥン・ホロー・レーン 141 (72)発明者 フィリップ・ブラウン・ウィンターフィー ルド アメリカ合衆国55902 ミネソタ州ロチェ スター エイトス・アベニュー サウスウ エスト 822

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】コンピュータの方法であって、 (a)いくつかの区画が分岐区画であり、いくつかの区
    画が操作区画であり、すべての区画がプロセッサにおけ
    る独立実行が可能である、複数の区画を有する命令のす
    べての分岐区画内に含まれるすべてのターゲット・アド
    レスとすべての分岐条件を複製するステップと、 (b)複数の区画を有する命令を前記複製されたターゲ
    ット・アドレスおよび分岐条件と共に命令キャッシュに
    ロードするステップと、 (c)実行のために命令を選択するステップと、 (d)各実行ユニットが前記区画のうちのそれぞれの区
    画専用である、プロセッサの複数の実行ユニットにおい
    て操作区画を実行するステップと、 (e)前記命令のすべての分岐区画のすべての分岐条件
    を同時に評価して成立する制御フロー分岐を判断するス
    テップと、 (f)デコード論理回路を使用して前記命令のすべての
    ターゲット・アドレスを同時にデコードするステップ
    と、 (g)評価した前記分岐条件の各1つの分岐条件を前記
    デコードされたターゲット・アドレスの各1つのターゲ
    ット・アドレスと前記操作区画の実行結果とに相関させ
    るステップと、その結果として、 (h)前記成立する制御フロー分岐を実行のために選択
    するステップと、 (i)前記成立する制御フロー分岐の実行結果を記憶す
    るステップと、 (j)前記成立する制御フロー分岐の次の命令を実行の
    ために選択するステップとを含む方法。
  2. 【請求項2】前記成立する制御フロー分岐の実行結果を
    記憶する前記ステップ(g)が、 (g1)前記実行結果をメモリに記憶するステップと、 (g2)前記実行結果によって生じる複数の条件コード
    を複数の条件コード・レジスタに記憶するステップとを
    さらに含む、請求項1に記載の方法。
  3. 【請求項3】すべてのターゲット・アドレスを複製する
    前記ステップ(a)が、 (a1)各オフセットが分岐区画に関連づけられた複数
    のオフセットをすべて複製するステップをさらに含み、
    デコード論理回路を使用してすべてのターゲット・アド
    レスを同時にデコードする前記ステップ(f)が、 (f1)前記複製されたオフセットをすべてデコードす
    るステップをさらに含む、請求項2に記載の方法。
  4. 【請求項4】前記命令のすべての分岐区画のすべての分
    岐条件を評価する前記ステップ(e)が、 (e1)前記分岐条件の各1つの分岐条件を、前記複数
    の条件コード・レジスタにそれぞれ入っている前記複数
    の分岐条件の各1つの分岐条件と比較するステップをさ
    らに含む、請求項2に記載の方法。
  5. 【請求項5】(a)第1の命令が少なくともN個の区画
    を含み、前記N個の区画のうちのいくつかが後続命令の
    ターゲット・アドレスと第2の命令を判断するために評
    価する分岐条件とを有する分岐区画であり、前記N個の
    区画のうちのいくつかがプロセッサで実行するための操
    作区画である、並列して実行可能な最大N個の基本コン
    ピュータ操作を第1の命令にコンパイルするステップ
    と、 (b)命令キャッシュに記憶するために前記第1の命令
    のN個の区画のすべてのターゲット・アドレスとすべて
    の分岐条件をN回複製するステップと、 (c)各可能な後続命令がオフセットによって個別にア
    ドレスされる、第1の命令のすべての分岐区画内のすべ
    てのターゲット・アドレスによって示されたすべての可
    能な後続命令を、次アドレスによって識別された命令キ
    ャッシュの指定セクション内に記憶するステップと、 (d)前記複製されたターゲット・アドレスと分岐条件
    とを有するN個の区画の各1つの区画を前記命令キャッ
    シュ内の複数のミニキャッシュの各1つのミニキャッシ
    ュに位置合わせするステップと、 (e)前記第1の命令のすべての分岐条件をN回評価
    し、同時に、すべての可能な後続命令のうちのどの命令
    が第2の命令になるかを判断するステップと、 (f)ステップ(e)と同時に、前記第1の命令のすべ
    てのオフセットをN回デコードして前記第2の命令に対
    応するターゲット・アドレスを選択するステップと、 (g)ステップ(f)と同時に、前記第1の命令のすべ
    ての操作区画を実行して前記第2の命令の少なくとも1
    つの条件コードを判断し、前記操作区画の結果を少なく
    とも1つのレジスタまたはメモリあるいはその両方に記
    憶するステップと、 (h)前記命令キャッシュに、前記第2の命令のターゲ
    ット・アドレスを伝達し、前記第1の命令の結果生じる
    少なくとも1つの条件コードを少なくとも1つの条件コ
    ード・レジスタに伝達するステップとを含む方法。
  6. 【請求項6】(a)任意の数の区画が命令を構成し、各
    区画がN個のミニキャッシュのうちの1つのミニキャッ
    シュに物理的に入れられる、N個のミニキャッシュに位
    置合わせされた列と複数の区画に位置合わせされた行と
    を有する命令キャッシュと、 (b)各ターゲット・アドレス選択回路がN個のミニキ
    ャッシュのうちのそれぞれ1つのミニキャッシュに直接
    接続され、N個のターゲット・アドレスをデコードし、
    前記命令レジスタに送る命令を選択する、N個のターゲ
    ット・アドレス選択回路と、 (c)LがN以下であり、命令レジスタがL個の分岐区
    画を有し、各L個の分岐区画が後続命令のL個のターゲ
    ット・アドレスとL個の分岐条件とを有し、前記命令レ
    ジスタがM個の操作区画をさらに有する、前記命令を受
    け取って実行を開始する命令レジスタと、 (d)N個の実行ユニットのうちの少なくとも1つの実
    行ユニットがM個の操作区画の各1つの操作区画に操作
    可能に接続され、前記操作区画を実行するN個の実行ユ
    ニットと、 (e)前記N個の選択回路に操作可能に接続され、前記
    L個の分岐区画の各分岐区画内のすべてのターゲット・
    アドレスをデコードする、オフセット・アドレス・デコ
    ード論理回路と、 (f)前記N個のターゲット・アドレス選択回路に操作
    可能に接続され、前記L個の分岐区画の各分岐区画を評
    価する条件コード・レジスタとを含むプロセッサ。
  7. 【請求項7】前記命令キャッシュがさらに複数のブロッ
    クに構成され、前記L個の分岐区画のすべてのターゲッ
    ト・アドレスが次アドレスとL個のオフセット・アドレ
    スを含み、次アドレスはすべてのターゲット・アドレス
    によって示されたすべての後続命令が記憶されている複
    数のブロックのうちの選択された1つのブロックを示
    し、L個のオフセット・アドレスの各オフセット・アド
    レスは前記複数のブロックのうちの選択された1つのブ
    ロック内の個々の命令を示す、請求項6に記載のプロセ
    ッサ。
  8. 【請求項8】前記命令が前記命令キャッシュの1行全体
    を占有することができ、前記区画の各1つの区画がN個
    のミニキャッシュの各ミニキャッシュに物理的に入れら
    れ、(L+M)=Nである、請求項6に記載のプロセッ
    サ。
  9. 【請求項9】前記命令が前記命令キャッシュの1行全体
    未満を占有することができ、前記区画の各1つの区画が
    N個のミニキャッシュの各ミニキャッシュに物理的に入
    れられ、(L+M)<Nである、請求項6に記載のプロ
    セッサ。
  10. 【請求項10】前記命令が前記命令キャッシュの複数の
    行を占有することができ、前記区画の各1つの区画がN
    個のミニキャッシュの各1つのミニキャッシュに入れら
    れ、(L+M)>Nである、請求項6に記載のプロセッ
    サ。
  11. 【請求項11】(L+M)=N=16である、請求項8
    に記載のプロセッサ。
  12. 【請求項12】N=16であり、(L+M)=4または
    8である、請求項9に記載のプロセッサ。
  13. 【請求項13】N=16であり、(L+M)=32また
    は64である、請求項10に記載のコンピュータ。
  14. 【請求項14】(a)各区画が並列して実行可能な複数
    の区画を有する命令を実行することができるプロセッサ
    と、各ミニキャッシュが前記命令の区画に対応するミニ
    キャッシュに分割された命令キャッシュと、少なくとも
    1つの条件コード・レジスタおよびオフセット・デコー
    ド論理ユニットに接続された条件評価論理ユニットと、
    命令レジスタに接続されたレイト選択ユニットと、複数
    の実行ユニットと、少なくとも1つの条件コード・レジ
    スタおよびマルチポート・レジスタ・ファイルを含む複
    数のレジスタと、複数のキャッシュ・メモリと、メイン
    ・メモリとを含み、前記実行ユニットと、前記論理ユニ
    ットと、前記レイト選択ユニットと、前記レジスタと、
    前記メモリと、前記命令レジスタと、前記命令キャッシ
    ュとが機能的に相互接続されている中央処理装置と、 (b)バス・インタフェースと、バスと、いずれもがバ
    スを介してデータおよび命令を前記中央処理装置に送信
    することができるテープ・ドライブ、データ記憶装置、
    コンピュータ・ネットワーク、光ファイバ通信、ワーク
    ステーション、周辺装置、情報ネットワークのうちの少
    なくとも1つに接続された少なくとも1つの入出力プロ
    セッサとを含む複数の外部接続とを含み、 次の命令の選択が、前記命令の実行と評価の結果として
    生じたすべての分岐条件と次アドレスとすべてのオフセ
    ット・アドレスとを複製し、複製されたすべての情報を
    前記命令キャッシュに記憶することによって行われ、可
    能なすべての次の命令が前記命令キャッシュ内の前記次
    アドレスによって指定されたブロックにロードされ、前
    記条件コード・レジスタと前記分岐条件評価論理ユニッ
    トがすべての分岐条件を評価し、前記オフセット・デコ
    ード論理ユニットが前記命令のすべてのオフセット・ア
    ドレスをデコードし、前記分岐条件評価論理ユニットが
    前記少なくとも1つの条件コード・レジスタと少なくと
    も1つの他のレジスタとに伝達し、次の命令を決定する
    前記分岐条件評価論理ユニットの結果のみを保管し、前
    記オフセット・デコード論理ユニットおよびレイト選択
    ユニットが前記命令レジスタのために前記命令キャッシ
    ュから次の命令を選択する、データ処理システム。
  15. 【請求項15】(a)プロセッサで実行される命令のす
    べての分岐情報を複製するステップと、 (b)各ミニキャッシュにすべての前記複製された情報
    が入れられる、前記命令の前記複製された分岐情報を命
    令キャッシュ内のN個のミニキャッシュに位置合わせす
    るステップと、 (c)前記分岐情報をすべて同時に評価して前記プロセ
    ッサで実行する次の命令を判断するステップとを含む、
    コンピュータ処理の方法。
  16. 【請求項16】(a)並列して実行可能な少なくとも1
    つの分岐区画と少なくとも1つの操作区画とを有する命
    令内のすべての分岐区画を複製する手段と、 (b)それによって前記複製された区画の各1つの区画
    と前記操作区画の各1つの操作区画が各1つのミニIキ
    ャッシュに記憶されるように、前記命令を前記複製され
    た分岐区画と共に命令キャッシュに記憶するステップ
    と、 (c)前記命令キャッシュ内の同じブロックにすべての
    可能な次の命令を記憶する手段と、 (d)命令レジスタに入れる前記命令を選択する手段
    と、 (e)すべてのミニIキャッシュ内の前記命令のすべて
    の分岐区画内のすべての分岐条件を同時に評価する手段
    と、 (f)ステップ(e)と並列して、すべてのミニIキャ
    ッシュ内の前記命令のすべての可能な次命令のすべての
    アドレスを同時にデコードする手段と、 (g)ステップ(e)および(f)と並列して前記命令
    のすべての操作区画を実行する手段と、 (h)前記評価手段の結果を前記デコード手段と前記実
    行手段に相関させる手段と、 (i)前記命令キャッシュから前記次の命令を選択して
    前記命令レジスタに入れる手段とを含む、コンピュータ
    処理のための装置。
  17. 【請求項17】(a)各命令が独立実行または評価ある
    いはその両方が可能な複数の実行区画を有する複数の命
    令を受け取るためのメイン・メモリへのメモリ接続と、 (b)各ミニIキャッシュが前記命令の1つの実行区画
    のみが入るように構成されている、複数のミニIキャッ
    シュと、 (c)前記区画の実行または評価あるいはその両方の独
    立開始のために前記各区画を伝達するための命令レジス
    タへの接続とを含む、コンピュータ処理において使用す
    るための命令キャッシュ。
JP10325230A 1997-12-31 1998-11-16 Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置 Pending JPH11249897A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/001527 1997-12-31
US09/001,527 US6112299A (en) 1997-12-31 1997-12-31 Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching

Publications (1)

Publication Number Publication Date
JPH11249897A true JPH11249897A (ja) 1999-09-17

Family

ID=21696501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10325230A Pending JPH11249897A (ja) 1997-12-31 1998-11-16 Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置

Country Status (6)

Country Link
US (1) US6112299A (ja)
EP (1) EP0927930A1 (ja)
JP (1) JPH11249897A (ja)
KR (1) KR100284789B1 (ja)
CN (1) CN1158597C (ja)
WO (1) WO1999034283A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334184B1 (en) * 1998-03-24 2001-12-25 International Business Machines Corporation Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
US6230260B1 (en) * 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
JP2000293371A (ja) * 1999-04-09 2000-10-20 Hitachi Ltd マイクロプログラム制御方法及び装置
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
US6408428B1 (en) * 1999-08-20 2002-06-18 Hewlett-Packard Company Automated design of processor systems using feedback from internal measurements of candidate systems
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US7343594B1 (en) * 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US6662296B1 (en) * 2000-10-02 2003-12-09 International Business Machines Corporation Method and system for testing millicode branch points
US6988189B1 (en) * 2000-10-31 2006-01-17 Altera Corporation Ternary content addressable memory based multi-dimensional multi-way branch selector and method of operating same
US6851046B1 (en) * 2000-11-14 2005-02-01 Globespanvirata, Inc. Jumping to a recombine target address which is encoded in a ternary branch instruction
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US20040008701A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Hierarchical finite-state machines
US20040008708A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Overhead engine for telecommunications nodes
US7349435B2 (en) * 2002-07-11 2008-03-25 Bay Microsystems, Inc. Multiport overhead cell processor for telecommunications nodes
US20040008673A1 (en) * 2002-07-11 2004-01-15 Ygal Arbel Overhead processing in telecommunications nodes
US7355743B2 (en) * 2002-10-25 2008-04-08 Pitney Bowes Inc. Statement level tracking in a document production and management process
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US20040268098A1 (en) * 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7606997B1 (en) 2003-07-18 2009-10-20 Guillermo Rozas Method and system for using one or more address bits and an instruction to increase an instruction set
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
US7945433B2 (en) * 2007-04-30 2011-05-17 International Business Machines Corporation Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
EP2738681A4 (en) * 2011-07-27 2014-07-30 Fujitsu Ltd ELECTRONIC DEVICE, METHOD FOR ACCESSING THIS DEVICE AND PROGRAM THEREFOR
EP2950211B1 (en) * 2013-01-23 2021-07-07 Waseda University Parallelism extraction method and method for making program
US9372736B2 (en) * 2014-05-06 2016-06-21 International Business Machines Corporation Leveraging path information to generate predictions for parallel business processes
GB2524126B (en) * 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
CN104765590B (zh) * 2015-04-29 2017-06-13 清华大学 一种支持超标量与超长指令字混合架构处理器的分支预测方法
CN106445466B (zh) * 2015-08-13 2019-07-09 深圳市中兴微电子技术有限公司 超长指令字指令集的指令处理方法及装置
US20170060591A1 (en) * 2015-08-26 2017-03-02 Huawei Technologies Co., Ltd. System and method for multi-branch switching
GB2544814B (en) * 2015-11-30 2019-06-19 Imagination Tech Ltd Modulo hardware generator

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4983342A (ja) * 1972-12-14 1974-08-10
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
JPH01214981A (ja) * 1988-02-24 1989-08-29 Hitachi Ltd 動画像表示装置
JPH0277940A (ja) * 1988-09-14 1990-03-19 Hitachi Ltd データ処理装置
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
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
US5450557A (en) * 1989-11-07 1995-09-12 Loral Aerospace Corp. Single-chip self-configurable parallel processor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
DE69132675T2 (de) * 1990-04-06 2002-06-13 Nec Corp., Tokio/Tokyo Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
US5317703A (en) * 1990-06-29 1994-05-31 Hitachi, Ltd. Information processing apparatus using an advanced pipeline control method
EP0474297B1 (en) * 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JPH04239324A (ja) * 1991-01-14 1992-08-27 Nec Corp 分岐先予測方式
JP2874351B2 (ja) * 1991-01-23 1999-03-24 日本電気株式会社 並列パイプライン命令処理装置
JPH0520066A (ja) * 1991-07-16 1993-01-29 Mitsubishi Electric Corp 並列計算機
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
US5784604A (en) * 1992-10-09 1998-07-21 International Business Machines Corporation Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
JPH06139075A (ja) * 1992-10-29 1994-05-20 Hitachi Ltd プログラムの命令配列方式およびコンパイラ
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
US5481736A (en) * 1993-02-17 1996-01-02 Hughes Aircraft Company Computer processing element having first and second functional units accessing shared memory output port on prioritized basis
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3461185B2 (ja) * 1993-06-30 2003-10-27 株式会社東芝 ロードモジュールへのソースコード行番号登録方法および装置
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
JPH07182169A (ja) * 1993-12-24 1995-07-21 Toshiba Corp 並列処理型コンピュータ
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
JP3578493B2 (ja) * 1994-08-24 2004-10-20 株式会社日立製作所 長語命令生成方法および命令処理装置
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5517442A (en) * 1995-03-13 1996-05-14 International Business Machines Corporation Random access memory and an improved bus arrangement therefor
WO1996029645A1 (en) * 1995-03-23 1996-09-26 International Business Machines Corporation Object-code compatible representation of very long instruction word programs
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory

Also Published As

Publication number Publication date
WO1999034283A1 (en) 1999-07-08
KR100284789B1 (ko) 2001-03-15
KR19990062575A (ko) 1999-07-26
CN1225469A (zh) 1999-08-11
CN1158597C (zh) 2004-07-21
EP0927930A1 (en) 1999-07-07
US6112299A (en) 2000-08-29

Similar Documents

Publication Publication Date Title
JPH11249897A (ja) Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置
Smith Dynamic instruction scheduling and the Astronautics ZS-1
Colwell et al. A VLIW architecture for a trace scheduling compiler
Goodman et al. PIPE: a VLSI decoupled architecture
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
KR101638225B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
KR101966712B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
US7124318B2 (en) Multiple parallel pipeline processor having self-repairing capability
JP3120152B2 (ja) コンピューターシステム
US6185668B1 (en) Method and apparatus for speculative execution of instructions
EP2368181B1 (en) Operation data structure
US6341348B1 (en) Software branch prediction filtering for a microprocessor
EP0518420A2 (en) Computer system for concurrent processing of multiple out-of-order instructions
JP2003526155A (ja) 配列境界をチェックする能力を有する処理アーキテクチャ
EP2353085B1 (en) Operand data structure
CN116802605A (zh) 用于根据触发条件执行指令的电路和方法
Saporito et al. Design of the IBM z15 microprocessor
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
Hum et al. A high-speed memory organization for hybrid dataflow/von Neumann computing
Thakkar et al. An instruction fetch unit for a graph reduction machine
Nicolau et al. ROPE: a statically scheduled supercomputer architecture