JP2001500641A - 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置 - Google Patents

並列データプロセッサにおけるアクティブ命令を回転させる方法および装置

Info

Publication number
JP2001500641A
JP2001500641A JP08536744A JP53674496A JP2001500641A JP 2001500641 A JP2001500641 A JP 2001500641A JP 08536744 A JP08536744 A JP 08536744A JP 53674496 A JP53674496 A JP 53674496A JP 2001500641 A JP2001500641 A JP 2001500641A
Authority
JP
Japan
Prior art keywords
instructions
instruction
order
classifier
issue
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
JP08536744A
Other languages
English (en)
Other versions
JP3597540B2 (ja
Inventor
サブカー,サニル
シェバノウ,マイケル,シー.
シェン,ジェン,ダブリュ.
サジャジアン,ファルナド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2001500641A publication Critical patent/JP2001500641A/ja
Application granted granted Critical
Publication of JP3597540B2 publication Critical patent/JP3597540B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)

Abstract

(57)【要約】 マイクロプロセッサにおいて、本装置および方法は、選択された発行順序命令の発行およびデスパッチに先立って、多重フェッチ命令を発行順序に回転することによって命令のフェッチおよび発行をコーディネートする。回転およびデスパッチブロックは、新しくフェッチされた命令を物理的メモリ順序で既にフェッチされているが発行されていない命令とミックスするためのミキサと、該ミックスされた命令を発行順序に回転するためのミックスおよび回転装置と、デスパッチに先立って発行順序命令を保持する命令ラッチとおよび、新しくフェッチされた命令とミックスする前に、非発行命令を発行順序から物理的メモリ順序に回転させるための回転解除装置を含んでいる。フェッチサイクルの期間、多重命令は記憶装置から物理的メモリ順序で同時にフェッチされ、かつ回転およびデスパッチブロック内でPC関連発行順序に回転させられる。次のクロックサイクルにおいて、既にフェッチされ回転された命令の選択されたものが、発行サイクルに入り、新しい命令セットが物理的メモリ順序でフェッチされ、既にフェッチされかつ回転されているが発行されていない命令が物理的メモリ順序に再配列されかつ新しくフェッチされた命令と物理的メモリ順序でミックスされ、同時に全てのフェッチされた命令および非発行命令が次の発行サイクルに先立って発行順序で回転され、さらに全命令がパイプラインを通過するまで、これが続けられる。

Description

【発明の詳細な説明】 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置 関連出願の相互参照 本願発明の主題は、下記に掲げる出願の主題と関連している。 出願番号 、「プログラマブル命令トラップシステムおよび方法」の 名称で、Sunil Savkar、Gene W.Shen、Farnad SajjadianおよびMichael C.She banowによって1995年6月1日に出願、 出願番号08/388,602、「スーパースケーラ マイクロプロセッサ用命令フロー 制御回路」の名称で、Takeshi Kitaharaによって1995年2月14日に出願、 出願番号08/388,389、「格納命令に関して負荷命令を順不同に実行するアドレ ス方法」の名称で、Michael A.SimoneおよびMichael C.Shebanowによって1995 年2月14日に出願、 出願番号08/388,606、「名前を付け替えられたレジスタに結果を効率的に書き 込む方法および装置」の名称で、DeForest W.Tovey、Michael C.Shebanowおよ びJohn Gmuenderによって1995年2月14日に出願、 出願番号08/388,364、「マイクロプロセッサにおける物理レジスタの利用を調 整する方法および装置」の名称で、DeForest W.Tovey、Michael C.Shebanowお よびJohn Gmuenderによって1995年2月14日に出願、 出願番号 、「精密な状態を保持するため命令状態をトラッキングす るプロセッサ構造および方法」の名称で、Gene W.Sh en、John Szeto、Niteen A.PatkarおよびMichael C.Shebanowによって1995年 2月14日に出願、 出願番号 、「アドレス変換の高速化のための並列アクセス マイク ロ−TLB」の名称で、Chih-Wei David Chang、Kioumars Dawallu、Joel F.Bo ney、Ming-Ying LiおよびJen-HongCharles Chenによって1995年3月3日に出願 、 出願番号 、「コンピュータシステムにおけるアドレス変換用ルック アサイドバッファ」の名称で、Leon Kuo-Liang Peng、Yolin LinおよびChih-Wei David Changによって1995年3月3日に出願、 出願番号08/397,893、「データプロセッサにおけるプロッセサ資源の再生利用 」の名称で、Michael C.Shebanow、Gene W.Shen、Ravi Swami、Niteen A.Pat karによって1995年3月3日に出願、 出願番号08/397,891、「実行準備ができたものから命令を選択する方法および 装置」の名称で、Michael C.Shebanow、John Gmuender、Michael A.Simone、J ohn R.F.S.Szeto、Takumi MaruyamaおよびDeForest W.Toveyによって1995年 3月3日に出願、 出願番号08/397,911、「不履行命令の高速ソフトウェア エミュレーション用 ハードウェアサポート」の名称で、Shalesh Thusoo、Farnad Sajjadian、Jaspal KohliおよびNiteen A.Patkarによって1995年3月3日に出願、 出願番号08/398,284、「制御転送リターンを加速する方法および装置」の名称 で、Akiro Katsuno、Sunil SavkarおよびMichael C.Shebanowによって1995年3 月3日に出願、 出願番号08/398,066、「フェッチプログラムカウンタの更新方法」の名称で、 Akira Katsuno、Niteen A.Patkar、Sunil SavkarおよびMichael C.Shebanowに よって1995年3月3日に出願、 出願番号08/397,910、「コンピュータシステムにおけるエラーの優先化および 処理方法および装置」の名称で、Chih-Wei DavidChang、Joel Fredrick Boney およびJaspal Kohliによって1995年3月3日に出願、 出願番号08/398,151、「制御転送命令の迅速な実行方法および装置」の名称で 、Sunil W.Savkarによって1995年3月3日に出願、 出願番号08/397,800、「マイクロプロセッサにおけるゼロビット状態フラッグ の生成方法および装置」の名称で、Michael Simoneによって1995年3月3日に出 願、 出願番号08/397,912、「パイプライン化読取り−修正−書込みアクセスを備え たECC保護メモリ編成」の名称で、Chien ChenおよびYuzhi Luによって1995年 3月3日に出願および、 出願番号08/398,299、「精密な状態を保持するため命令状態をトラッキングす るプロセッサ構造および方法」の名称で、Chien Chen、John R.F.S.Szeto、N iteen A.Patkar、Michael C.Shebanow、Hideki Osone、Takumi Maruyamaおよ びMichael A.Simoneによって1995年3月3日に出願、 参考として、上記の出願の全てを本願発明の全体に亘って取り入れている。 技術分野 本発明は一般的に多重命令を並列に発行し実行するデータプロセッサに関し、 特に実行サイクル中にマイクロプロセッサ中において、待機しフェッチされた命 令を並列処理のため発行順に回転させるための方法および装置に関する。 背景技術 典型的なスカラマイクロプロセッサでは、命令(instruction)は 直列にあるいはスカラ的に発行されかつ実行される。すなわち、命令は、プログ ラムカウンタによってインデックスされた順序でマイクロプロセッサによって一 回に一個発行され、実行される。この実行方法は効果的であるが、多くの場合最 適ではない。これは、コンピュータプログラムにおける命令シーケンスの多くは 他の命令シーケンスに対して独立しているからである。この様な場合、多くの命 令シーケンスは、処理能力を最適化するために並列に処理することが可能である 。命令の並列処理のための最近の技術は、レジスタの再命名、推論的実行および 順序外実行を含む。 レジスタの再命名は、命令発行の機能停止を避けるためにプロセッサが同じア ーキテクチャのレジスタを別の物理的レジスタに再マッピングするようなプロセ ッサによって使用される技術である。この技術は、アーキテクチャによって必要 な物よりも遙に大きな数の物理的レジスタのメインテナンスを必要とする。従っ てこのプロセッサは、所定の時間においてどれだけの物理的レジスタが使用され ているか、マッピングされた種々の物理的レジスタはどのアーキテクチャのレジ スタであるか、さらにどの物理的レジスタを使用することができるか、を含んで 、物理的レジスタリソースの状態を連続してモニタする必要がある。この仕事を 達成するために、プロセッサは、使用されていない物理的レジスタのリスト(フ リーリスト)を保持している。一個の命令が発行された場合、プロセッサは、ア ーキテクチャ上の宛て先レジスタをフリーリスト上の1個のレジスタに再マッピ ングする。この選択された物理的レジスタは次にフリーリストから除去される。 再命名された物理的レジスタが最早必要では無くなった場合は常に、これらの物 理的レジスタは、フリーリ ストのプールに加えられることによって、フリーであるとの標識が付けられる。 フリーリストから除かれた物理的レジスタリソースは、“使用中”であるか、あ るいはプロセッサによって更にマッピングすることが不可能であると見なされる 。1個の命令の合成レジスタが、後続順の命令に対する(アーキテクチャ的)ソ ースレジスタとして使用されるべき場合、このソースレジスタはフリーリストか ら再命名物理的レジスタにマッピングされる。このプロセッサが正しく関連した 物理的レジスタを使用するために、プロセッサは再命名マップを常に保持し、ど のアーキテクチャ的レジスタがどの物理的レジスタにマップされたかを識別する 必要がある。先行する順序の命令のアーキテクチャ的レジスタを参照する、全て の後続順序の命令は、再命名された物理的レジスタを使用する必要がある。 アーキテクチャ的レジスタが再命名される場合、間違って予測された分岐命令 に基づいてプロセッサがチェックポイントのバックアップをする時、または後続 順序の命令が先行順序の命令に基づいて実行の例外を検出する前にアーキテクチ ャ的レジスタを変更する時、アーキテクチャ的レジスタの正しい状態を効率的に 再記憶するために、準備が必要である。 推測的実行はプロセッサによって使用される技術であって、条件付き分岐命令 の条件を評価するためにデータを使用することが出来ない場合、プロセッサは、 次の命令のための次の分岐ターゲットアドレスを予測する。推測実行を使用する ことによって、条件を評価するために必要なデータを待つことによって生じる、 プロセッサ遅延が回避される。予測間違いがあった場合は常に、プロセッサは分 岐ステップの前に存在した状態に復帰し、さらに命令の正しい順序での実行を続 行するために正しい分岐を同定しなければならない。予測間違いの後、プロセッ サの状態を回復するための既に使用され ている技術は、チェックポイントと呼ばれ、これによってマシンの状態を各推測 命令の後で記憶(チェックポイント)する。 順序外実行は、多重実行ユニットを含むプロセッサによって使用される技術で あり、命令をシーケンスに従って発行するがしかし命令の実行時間の変化に基づ いて非シーケンス的に命令の実行を遂行するものである。これが、命令を並列に 、順序外で発行し実行する概念であり、並列プロセッサに関連した効果と困難性 の両者を強調するものである。 上記で議論したように、多重命令を発行するための種々の技術は、一度に発行 すべき命令の正しい順序を決定しその後予測された位置からフェッチするために 、予測(推測的実行、レジスタの再命名、または順序外実行)を使用している。 もしこの予測が正しい場合、時間は節約され;もし正しくない場合、間違った命 令がフェッチされこの命令は放棄される必要がある。 スーパースカラマシンにおいて、フェッチ、キューおよび発行命令は、フェッ チされ発行された一個の命令よりも大きな発行ウインドの使用と、分岐命令を有 するプログラムの処理によって、複雑化されている。命令の回転またはプログラ ム順序における発行の順序化を必要とする、命令の物理的順序でのフェッチング によって、処理はさらに複雑化する。同じサイクルにおいて発行すべき命令に替 えて、キュー中に挿入すべき同じ数の多重命令を同じサイクルにおいてキューか らはずれて発行することによって、さらに複雑化する。従って、並列プロセッサ において、予測間違いおよびそれに関連した時間およびリソースの損失を回避す るために、命令の発行および実行を整合するための効果的な方法および装置の開 発が必要である。さらに、マシン中への命令発行に遅れないようにする能力がマ シンに欠如しているために、命令発行におけるバブルによってサイ クルが最小化されるように、命令のキューを命令実行フローの前に維持するため の最適解決方法の必要性が存在する。 発明の開示 本発明によって、命令のフェッチおよび発行をコーディネートしさらにスーパ ースカラを使用するデータプロセッサによって生じうる処理における遅延を避け るために、命令をメモリ指定物理的順序から発行順序に回転させることによって 、複数のメモリを並列に発行するための装置および方法が提供される。 本発明を含むデータ処理システムは、データおよび命令キャッシュに要求を送 りさらにこれから情報を受信する中央処理ユニットを含んでいる。命令管理ユニ ットは、外部永久記憶ユニットをデータおよび命令キャッシュに接続し、記憶ユ ニット中のアドレス可能な位置をアクセスするため中央処理ユニットから要求を 受信し、記憶ユニット中の要求されたアドレスをアクセスし、さらに要求された データおよび命令を中央処理ユニット内のフェッチユニットに転送し、それによ って命令およびデータを操作する。フェッチユニットは、選択された命令の発行 およびデスパッチに先立って、フェッチされた命令を発行順序に回転させるため の、回転およびデスパッチブロックを含んでいる。この回転およびデスパッチブ ロックは、新しくフェッチされた命令を、既にフェッチされ発行されていない物 理的メモリ順序の命令とミックスするためのミキサと、このミックスされた命令 を発行順序に回転するためのミックスおよび回転装置と、デスパッチに先立って 発行順序の命令を保持するための命令ラッチと、および発行されていない命令を 新しくフェッチされた命令とのミックスに先立って、発行順序から元のメモリ指 定物理的順序に回転させるための回転解除(un-rotate)装置とを含んでいる。 スーパースカラ実行を実現するため、プロセッサは、最小のフェッチ、発行お よび実行ステージを含む多重命令を処理するためのパイプラインを実行する。フ ェッチサイクルにおいて、多重命令は、記憶装置から元のメモリ順序で同時にフ ェッチされ、発行順序に回転される。次のクロックサイクルにおいて、既にフェ ッチされ回転された命令の内の選択されたものが発行サイクルに入り、新しいセ ットの命令が物理的メモリ順序でフェッチされ、発行されていない既にフェッチ され回転された命令が物理的メモリ順序に再配置され、さらに新たにフェッチさ れた命令と物理的メモリ順序においてミックスされる。同時に、全ての命令がパ イプラインを通過するまで、全てのフェッチされ発行されていない命令等が、次 の発行サイクルに先立って発行順序に回転させられる。 図面の簡単な説明 図1は,データプロセッサのブロック図である。 図2Aは、図1のプロセッサによって実行された、固定小数点命令に対する、 通常の4段階パイプライン処理を示す図である。 図2Bは、図1のプロセッサによって実行された、固定小数点命令およびロー ド命令のそれぞれに対する、修正7段階および9段階パイプライン処理を示す図 である。 図3は、図1の中央処理装置(CPU)のブロック図である。 図4は、図1のキャッシュのブロック図である。 図5は、図1のメモリマネージメントユニット(MMU)のブロック図である 。 図6は、図3の発行ユニットによって使用されるリソース機能停止ユニットの ブロック図である。 図7は、図3のフェッチ、分岐および発行ユニットのブロック図 である。 図8は、図3のデータフローおよび機能ユニットのブロック図である。 図9は、正確なアーキテクチャ的状態を維持するために、図3のCPUによっ て使用されるアクティブ命令の象徴的A−リングを示す。 図10は、フェッチサイクルの間の命令処理を示すフェッチおよび発行ユニッ トの一部分のブロック図である。 図11は、フェッチされた命令を発行順序に回転させるための、図10のデコ ード/ディスパッチブロックによって使用される命令回転論理回路のブロック図 である。 図12は、図10のデコード/ディスパッチブロック内に示される回転論理を 伴った直列‘n’メモリ素子のブロック図である。 図13は、図10のデコード/ディスパッチブロック内のフェッチサイクルに おけるメモリのタイミング図である。 図14は、図11のディスパッチ回転論理回路の拡大ブロック図である。 図15Aは、図10のデコード/ディスパッチブロックの命令入力および出力 を示す。 図15Bは、デコード/ディスパッチブロックのその他の実施例の命令入力お よび出力を示す。 図15Cは、デコード/ディスパッチブロックのその他の実施例の命令入力お よび出力を示す。 図16は、フェッチおよび発行サイクル間の命令のフローを示すメモリ記憶ユ ニットとラッチのブロック図である。 発明を実施するための最良の形態 図1を参照すると、プロセッサ101にマウントされた一般的なプロセッサシ ステム100が示されている。このプロセッサ101は、例えば本発明を実施す るセラミックチップモジュール(MCM)上にマウントされたR1プロセッサで ある。プロセッサ101内において、スーパースカラCPUチップ103は、記 憶するためのアクセス要求を128−ビットアドレスバス113、115、11 7、119に送出し、128−ビットデータバス上からデータを受信しかつこの バス上にデータを送出し、さらに128−ビット命令バス125、127上の命 令を受信することによって、2個の64Kバイトデータキャッシュチップ105 、107と2個の64Kバイト命令のキャッシュチップ109、111とをイン ターフェースする。プロセッサシステム100において、メモリマネージメント ユニット(MMU)129は、市販されているような外部永久記憶ユニット13 1をデータおよび命令キャッシュ105、107、109、111に接続し、1 28ビットアドレスバス133、135、137を介して記憶ユニット131中 のアドレス可能な位置にアクセスするためのリクエストを受信し、128−ビッ トバス139を介して記憶ユニット131中のリクエストされたアドレスをアク セスし、さらに128−ビットデータおよび命令バス141および143を介し てリクエストされたデータおよび命令を転送する。MMU129はさらに、プロ セッサ101と、例えば診断プロセッサ147および入力/出力(I/O)装置 149のような外部装置間の通信を管理する。多重チップモジュールを使用する ことによって、CPU103は、合計で256ビットアドレスと256ビットの データであるような、大きなキャッシュとバンド幅が大きいバスを使用すること が可能である。クロックチップ145は、プロセッサ101内にクロック信号を 提供することによって、プロセッサ10 1内および外部で各素子間の通信を制御し同期を取る。プロセッサ チャによって実施することができ、さらにスーパースカラ命令発行、レジスタの 再命名およびデータフロー実行テクニックを備える命令レベル並列化を利用する ことによって、1クロックサイクル当たり4命令の最高命令発行速度を達成する 。 図2Aを参照すると、命令を処理するための一般的な4段階パイプライン20 1が、フェッチ、発行、実行および完了ステージ205、207、209、21 1を含む物として示されており、このパイプラインは固定小数点命令を処理する ために使用することができる。スーパースカラのパイプラインを次元4のプロセ ッサ101にロードするために、第1のセットの4個の命令が命令ステージ21 3においてフェッチされ、命令サイクル213のフェッチステージ205が完了 した後始まる命令ステージ215の期間中において第2のセットの4個の命令が フェッチされ、さらに同様にして、パイプラインが4個の命令セットによって完 全にロードされあるいは実行すべき命令の残りが無くなるまで、次の命令セット がフェッチされる。図2Bに示す一般的な6ステージのパイプライン203は、 各ロード命令を処理するために、フェッチ、発行、アドレス生成(ADDR G EN)、キャッシュアクセス、データリターンおよび完了ステージ205、20 7、203、217、219、211を含んでいる。パイプライン203は、パ イプライン201と同じ方法で充填され、全体で4セットの6個の命令がパイプ ライン中にある時、完全にロードされる。順序外実行に適応するため、プロセッ サ101は修正パイプライン221、223を実行して、デアクティベート(d eactivate)、コミット(commit)およびリタイア(retir e)ステージ225、227、229を 含む固定小数点およびロード命令をそれぞれ処理する。デアクティベートステー ジ225の期間中、命令は、エラーを生じることなく実行を完了した後、デアク ティベートされる。コミットステージ227の期間中、命令は、それがすでにデ アクティベートされており、以前の全ての命令がデアクティベートされている場 合、コミットされる。リタイアステージ229の期間中、命令は、その命令によ って消費された全てのマシンリソースが再クレームされた場合、リタイアされる 。コミットおよびリタイアステージに先立って、実行エラーまたは分岐の予測誤 りが検出された場合マシン状態を再記憶するためにプロセッサ101によって十 分な情報が保持される。 図3を参照すると、フェッチユニット301を含むCPU103のブロック図 が示されている。各サイクルの期間、フェッチユニット301によって、主キャ ッシュ109、111(図1)、2個の16命令ラインを保持する2個のプリフ ェッチバッファ305、または2次のプリコード命令キャッシュ307から、命 令バス303上に4個の命令がフェッチされ、発行ユニット309に転送される 。フェッチユニット301は、フェッチされた命令を発行ユニット提供し、この 発行ユニットはそれらをデータフローユニットにデスパッチする責任を有する。 サイクル時間を改善するため、主キャッシュにおける命令は既に部分的にデコー ドされあるいは再コード化されている。ダイナミック分岐予測は、分岐の方向を 予測するために使用される2ビット飽和カウンタを含む1024エントリーの分 岐履歴テーブル311によって提供される。間接的な分岐ターゲットを含むサブ ルーチンリターンを加速するため、ジャンプおよびリンク命令のサブセットに対 してリターンアドレスを予測するためにリターン予測テーブル313が使用され る。テーブル311、313からの情報は、分岐ユニット315に提供され、こ のユニット は次に分岐およびリターンアドレス予測情報を発行ユニット309に提供する。 使用可能なマシンリソースおよび発行制約条件は最終的に発行ユニット309に よって決定される。マシンソースが使用可能な場合、命令はフェッチユニット3 01によってフェッチされた順序で発行ユニット309によって発行される。あ る発行制約条件が、命令/サイクルの発行速度を減少させる。発行ユニット30 9は、命令に対するスタティックな制約と全てのダイナミックな制約条件を解決 する。命令はその後デコードされ予約ステーション317、319、321、3 23にデスパッチされる。発行ステージの期間において、4個の命令が発行ユニ ット309から4個の予約ステーション、即ち固定小数点ユニット(FXU)、 浮動小数点ユニット(FPU)、アドレス生成ユニット(AGEN)、およびロ ード記憶ユニット(LSU)の各予約ステーション317、319、321、3 23に推論的にデスパッチされる。一般に、4個の固定小数点、2個の浮動小数 点、2個のロード記憶または一個の分岐命令の全ての組み合わせが、与えられた クロックサイクルにおいて発行される。レジスタファイル325、327、32 9は発行サイクルにおいてアクセスされ、最大の発行バンド幅を維持するために 発行サイクルの期間において再命名される。整数レジスタファイルは4個のSP ARCレジスタウインドをサポートする。浮動小数点、固定小数点、および条件 コードレジスタ325、327、329は、データハザードを除去するために再 命名される。トラップレベルを再命名することによって、発行ステージの期間中 に検出されたトラップは、推論的にエンターされる。各デスパッチされた命令に は、固有の6ビットタグが割り当てられ、最大64個の未実行の命令のタグ付け を可能とする。分岐の様な幾つかの命令は、アーキテクチャ的状態の“スナップ ショット”を取ることによって、チェッ クポイントすることができる。分岐の予測誤りによってまたは例外的な条件によ って推論的命令のシーケンスが不正に発行されまたは実行されたことが発見され た場合、プロセッサ101の状態は、選択されたチェックポイントに後で再記憶 されることができる。プロセッサ101は、16個のレベルの予想分岐命令を可 能とする、最大で16個の命令がチェックポイントされることを可能とする。 デスパッチステージの期間中、命令は、4タイプの予約ステーション、即ち固 定小数点、浮動小数点、アドレス生成、ロード/記憶、の内の一個中に配置され る。固定小数点命令を、アドレス生成予約ステーションに送信することも可能で ある。一旦デスパッチされると、命令は、4個の予約ステーションの一個におい て実行の選択を待つ。選択は、オペランドの稼働率(アベイラビリティ)のデー タフロー原理のみに基づいている。一個の命令は、要求されたオペランドが使用 可能な場合に実行され、その結果複数の命令は順序がずれて実行されかつ自己ス ケジューリング的である。全体で7個の命令が各サイクルおいて実行のために選 択され得る。最初の固定小数点、アドレス生成およびロード記憶予約ステーショ ンはそれぞれ2個の命令を実行のために初期化することが可能であり、一方浮動 小数点予約ステーションは1個の命令を初期化することが可能である。浮動小数 点実行ユニットは、4サイクルのパイプライン化された乗算−加算(FMA)ユ ニット331と60ナノ秒のセルフタイム浮動小数点除算(FDIV)ユニット 333を備えている。整数実行ユニットは、64ビット乗算(IMUL)ユニッ ト335と、64ビットの除算(IDIV)ユニット337と、4個の論理演算 ユニット(ALU1、ALU3、ALU3、ALU4)339、341、343 、345を含んでいる。パイプラインによる効果を含むことなく、最高で10個 の命令が並列に実行され得る。ロード記 憶ユニット(LSU)は、2個の並列な、ロード記憶パイプライン(LSPIP E1、LSPIPE2)ユニット347、349を含み、これらのユニットは推 論的ロードを、ロード記憶バス351を介して記憶装置または初期のロードをバ イパスすることが許されたロードと共に、キャッシュ105、109に送信する 。LSUは2個の独立した64ビットロードまたは記憶装置を、それらが異なる キャッシュチップに向かうと仮定して、各サイクルの期間中に実行することがで きる。このキャッシュはブロック化されていない。即ちミスの後、このキャッシ ュは他のアドレスへのアクセスを処理することができる。 整数乗算および除算ユニット(MULDIV)335、337は、すべての整 数乗算(整数乗算ステップ命令を除いて)および除算オペレーションを実行する 。MULDIV335、337は内部でパイプライン化されておらず、さらに一 回に一個の乗算または除算命令のみを実行することができる。MULDIV33 5、337は共通の64ビットけた上げ伝搬加算器と共に64ビット乗算器と6 4ビット除算器を備えている。 乗算ユニット335は、全ての、符号付きおよび符号付きでない32ビットと 64ビットの乗算命令を実行する。32ビットの符号付きおよび符号付きでない 乗算は3サイクルで完了し、64ビットの符号付きおよび符号付きでない乗算は 5サイクルで完了する。乗算ユニット335は乗数ツリーを含んでおり、このツ リーは64ビット×16ビットの乗算を単一のクロックサイクルにおいて、けた 上げ保存の形式で計算することが可能である。32ビットの乗算のために、乗算 ユニット335は、乗数ツリー中を2サイクルループしてけた上げ保存形式にお いて2個の部分的な結果を減少させ、さらに最終結果を生成するために64ビッ トのけた上げ伝搬加算器の ためのもう1個のサイクルを必要とする。 除算ユニット337は、基数4SRTアルゴリズムを実行し、さらに1から3 9サイクルにおいて平均の待ち時間17サイクルと共に64ビットの除算を完了 する。 浮動小数点乗算−加算ユニット(FMA)331は、全ての単一および二重精 度の浮動小数点オペレーション(浮動小数点除算を除いて)、浮動小数点移動オ ペレーション、および指定された除算/加算/減算オペレーションの実行に責任 がある。FMA331は浮動小数点除算(FDIV)ユニット333と結果バス 809を共有する。 FMA331は、融合された乗算一加算命令(例えば、A*B+C)を実行す ることができる。‘融合された’乗算−加算オペレーションとは、結合されたオ ペレーションにおいて1個の丸めエラーしか招かない事を意味する。他の全ての 浮動小数点演算は、融合乗算/加算の特殊なケースとして実行される。例えば、 減算は、‘B’オペランドを強制的に1にし、さらに‘C’オペランドの符号を その補数にセットすることによる、融合乗算/加算として実行される。FMA3 31は、4ステージの完全なパイプラインユニットであり、サイクル毎に1個の 浮動小数点命令を受け入れる事が可能である。 FMAパイプライン中の第1のステージは、入カオペランドをフォーマットし 、けた上げ保存形式で乗算器の部分的結果の最初の半分を生成し、加算オペラン ドに対する整列シフトカウントを計算し、さらに乗算器の積に対して加算オペラ ンドの最初の半分を完了する。FMAパイプライン中の第2のステージは、けた 上げ保存形式で乗算器の結果を2個の部分的な積に減少させ、この部分的な積に ‘C’オペランドを加算し、先行0計算の最初の半分を完了する。 FMAパイプラインの第3ステージは、先行0計算を完了し、2個の部分積を合 計し、さらにその結果を正規化する。FMAパイプラインの第4ステージは、例 外と特別なケースを決定し、さらにその結果を要求される精度まで丸め、さらに 出力をフォーマットする。 浮動小数点除算ユニット(FDIV)331は全浮動小数点除算命令を実行す る。FDIV331は、セルフタイム的な機能ブロックであり、修正基数2SR Tアルゴリズムを用いて直接的に商デジットを計算するために、高速プリチャー ジ技術を利用する。FDIV333は一度に一回の浮動小数点除算命令を実行す る。FDIV333は、55ステージを実行し約6クロックサイクル後に結果を 送り返す、組み合わせアレイであると見なされる。プリチャージされたブロック は、リング内にループされさらにセルフタイミングによって制御される。セルフ タイムのリングは5ステージにおいて商仮数を計算する。5ステージは、リング の評価限界(および制御限界ではない)として選択されたものである。このリン グはステージにおいて内部ラッチ無しに展開される。5ステージのそれぞれは、 現在の剰余および商デジットを使用して次の剰余および商ビットを計算するのに 使用される。幾つかの短いけた上げ伝搬加算器を複製することによって、隣接す るステージの実行をオーバーラップすることが出来るので、実行時間を短縮する ことができる。各ステージは、隣接するステージの出力をモニタする完了検出器 によって制御されるプリチャージされた論理ブロックを備えている。データがセ ルフタイムのリングにおいて複数のステージ間を流れる間、各ステージで計算さ れた商ビットはシフトレジスタ中に蓄積される。最終的な丸めは、追加の1クロ ックサイクルにおいて実行され、一方全体のリングは次のオペレーションに対し てプリチャージされる。 ロード記憶ユニット(LSUs)347、349は、2個の非ブ ロック化データキャッシュチップ105、107をインターフェースする。キャ ッシュバス351は64個の境界上のキャッシュチップ間でインターリーブ(交 互配置)されている。LSUs347、349は、小エンディアン(littl e−endian)および大エンディアン(big−endian)の両者をサ ポートする。LSUs347、349は、サンマイクロシステムズ社からのSP ARC−V9アーキテクチャマニュアルによって定義される、弛緩メモリモデル (relaxed memory model、RMO)および全記憶順序(t otal store ordering、TSO)モードの両者をサポートす る。LSUs347、349は、固定小数点および浮動小数点ロード/記憶命令 の両者のスケジュールに対して責任があり、さらにサイクル毎に2個の要求をキ ャッシュ105、107に取り入れる。命令順序は、個別状態を維持するために 使用され、かつCPU103とキャッシュチップ105、107間のプロトコル 信号セットによって管理される。LSUs347、349は、12個のエントリ ー予約ステーションを含んでいる。RMOモードでは、ロード命令は推測的バイ パス記憶命令を許可する。3ステージパイプラインを、LSUs347、349 とデータキャッシュ105、107間の分割処理(split transac tion)をサポートするために使用する。第1ステージの期間中、推測的実行 に使用される命令、操作コード、連続番号、および制御ビットは、LSU347 (349)によってデータキャッシュ105(107)に送信される。第2ステ ージの期間中、記憶命令からのデータは、LSU347(349)からデータキ ャッシュ105(107)に送信され、さらに次のサイクルにおいて完了する命 令の連続番号および有効ビットはデータキャッシュ105(107)からLSU 347(349)に送信される。第3ス テージにおいて、データキャッシュ105(107)はそのステータスとロード データを取り戻す。キャッシュミスの場合、データキャッシュ105(107) は、使用されていないパイプラインスロット期間中にデータを取り戻し、あるい はデータに対してパイプラインスロットを開く信号を送出する。 命令が実行を完了すると、結果は予約ステーションにブロードキャスト送信さ れ、ステータス情報が個別状態ユニット(PSU)353に提供される。最大で 9個の命令を1サイクル内で完了することができる。PSU353(および予約 ステーション317、319、321、323)は、命令の追跡を維持するため に各発行された命令のタグ番号を使用する。PSU353は同時に、アーキテク チャ的状態とCTI’sに影響を与える命令に対して形成されたチェックポイン トを維持する。PSU353はエラーおよびステータスの完了を追跡し、さらに 命令を順番にコミットしかつリタイアする。各サイクルにおいて、8個の命令が コミットされかつ4個の命令がリタイアされる。PSU353は同時に、外部割 り込みと例外命令を順序化する。 図4を参照すると、キャッシュ105、107のブロック図が示されている。 キャッシュ105、107は、2個のキャッシュチップとタグ記憶ユニット40 1を備えている。各キャッシュチップは、4セットのアドレス可能なレジスタを 含む2個のデータバンクとして組織された、64Kバイトのデータ記憶装置を含 んでいる。タグ記憶ユニット401は、CPU103によってアクセスされ、こ のCPU103はキャッシュ105、107中に記憶されかつここから転送され たデータを仮想的にインデックスしかつタグ付けする。データキャッシュ105 、107(109、11)の両者に対して、128バイトのキャッシュラインが 2個のキャッシュチップ間 で分割され、各キャッシュチップは64バイトのデータまたは命令を受信する。 各キャッシュチップは、CPU103からの2個の独立した要求にサービスする 。CPUキャッシュインターフェースは非ブロッキングであり、そのためキャッ シュラインが再充填されまたは充満される間に、CPU103はキャッシュ10 5、107をアクセスする。アドレス生成からデータ使用までの待ち時間は、3 サイクルに渡る。バンク403、405およびMMU129は、再ロードおよび 記憶スタックバッファ409、411を介して接続される。2個の未解決のミス は、第3のミスをブロックする各キャッシュチップによってサービスされること ができる。同じキャッシュライン上への多重のミスは、合併され、単一のミスと してカウントされる。 図5を参照すると、MMU129のブロック図が示されている。MMU129 は、メモリ管理およびデータコヒーレンスに責任を有し、データバッファ501 と入力/出力(I/0)制御ユニット503を介してメモリとI/0システムを インターフェースし、エラーハンドリングおよびロジングユニット505を介し て、エラーハンドリングに責任を有する。MMU129は、3レベルのアドレス 空間を有している。これらは、プロセッサのための仮想アドレス(VA)空間、 I/O装置および診断プロセッサのための論理アドレス(LA)空間およびメモ リのための物理的アドレス空間である。これらの階層的アドレス空間は、64ビ ットアドレス空間を管理するためのメカニズムを提供する。数個のルックアサイ ドバッファがMMU129内に存在し、これらの多重レベルアドレス変換にサー ビスする。ビュー(view)ルックアサイドバッファ(VLB)507はCA Mベースの、完全連想の、128エントリーテーブルであり、これは仮想アドレ スを論理アドレスへ変換するのに責任が ある。変換ルックアサイドバッファ(TLB)509は、4ウエイのセットアソ シアティブな1024エントリーテーブルであって、このテーブルは論理アドレ スを実アドレス(LA)に変換するために使用される。キャッシュ実アドレステ ーブル(CRAT)511は、4ウエイセットアソシアティブテーブルであって 、このテーブルは実アドレスタグを記憶する。CRAT511は、キャッシュ制 御およびコマンドキューユニット513、515を介したキャッシュおよびメモ リ間のデータコヒーレンスに責任がある。 図6を参照すると、リソース機能停止ブロック回路601を、発行されたメモ リの臨界タイミングパスの遅延を短縮するために使用することができる。リソー ス機能停止ブロック601は、発行ユニット309を予約ステーション317、 319、321、323に接続し、命令(INST0、INST1、INST2 、INST3)が送信される経路を形成する。リソースの使用可能性および命令 からデコードされた属性に基づいて、3レベルの伝送ゲート603、605、6 07は機能停止ベクトルを生成し、タイミングの合わない命令の発行を防止する 。回路における遅延は、発行された命令の数に直線的に比例する。 図7を参照すると、フェッチ、分岐および発行ユニットが示されている。フェ ッチユニット301はチップ外命令キャッシュ109、111と分岐および発行 ユニット315、309間をインターフェースする。フェッチユニット301は 、カレントプログラムカウンタの前で2個の64バイトラインにプリフェッチし 、命令を4Kバイトの直接マップ命令キャッシュ701中に記録しかつ記憶し、 さらにサイクル当たり4セットの命令およびタグを発行ユニット309に転送す る。分岐履歴テーブル311は、ダイナミックな2ビットの予測アルゴリズムを 用いて、命令キャッシュ701の102 4位置の全てをマップする。 オンチップキャッシュ701からのフェッチは、アクセスがラインの終端に向 かうものでない限り、例えば2個のキャッシュラインを同時にアクセスすること が出来ない(オンチップキャッシュミス)限り、常に4個の命令を発行ユニット 309に返還する(オンチップキャッシュヒット)。データを記憶すること(ま たは書き込むこと)は、キャッシュ701からの読みだしと並行して発生し、従 って読みだしアクセスをブロックせずまたはミスを生成しない。ミスの場合、フ ェッチユニット301は、ミスしたアドレスに基づいてプリフェッチ制御論理イ ンターフェース703を活性化する。プリフェッチインターフェース703は、 分離トランザクションプロトコルを実行し、4語サポートを備える単一のオフチ ップキャッシュ、または例えば2個の命令語と別個のステータス情報を供給する キャッシュ109、111の様な2個のキャッシュへの接続をサポートする。リ クエストは、部分アドレスによって固有に識別される。 例えばキャッシュ109、111のような外部キャッシュは、データの前の1 サイクルで識別子を返還し、これらはプリフェッチキャッシュライン705に書 き込みをセットアップするために使用される。オフチップフェッチされた命令は 、制御転送および不法な命令を再コード化する再コード化ユニット707を通過 する。再コード化ユニット707は分岐およびコール(call)のための部分 的なターゲットアドレスを計算し、制御ビットをプリペンドし(pre−pen ds)さらに元の命令中に計算されたターゲットを記憶する。この技術は、結果 として各命令に対して1個の余分なビットのみを必要とし、さらに分岐ターゲッ ト計算を、プログラムカウンタ(図示せず)の上位ビットの一個の加数あるいは 減数にまで、 減少させる。 再コード化の後、次のサイクルにおいて命令はラッチされキャッシュ701中 に書き込まれる。命令はまた、例えばプリフェッチバッファ305のようなシス テムの他の成分に直接に転送される。 パリティエラー検出が実行され、その結果としてのエラーは各命令と共に送信 される。このようにして、命令インターフェース上のパリティエラーは、間違っ たデータを発行しようとした場合にのみ、発生する。 分岐履歴テーブル311は、命令あたり2ビットの、8ビットの分岐履歴情報 を提供し、それらを分岐および発行ユニット315、309に転送する。分岐履 歴テーブル311は、分岐が発行されるサイクル毎に1個の2ビット位置の更新 を取り扱う。分岐履歴テーブル311への更新に伴ってリターン予測テーブル3 13は分岐予測ビットと発行された分岐のアドレスを記憶する。誤って予測され た分岐に基づくバックアップに当たって、リターン予測テーブル313は、分岐 履歴テーブル311中の元の2ビット値を修正し更新っするための更新メカニズ ムを提供する。 分岐ユニット315は全分岐とジャンプおよびリンク(JMPLS’s)命令 に対するターゲット計算に責任を有する。分岐ユニット315は、アーキテクチ ャプログラムカウンタ(APC)とフェッチプログラムカウンタ(FPC)を維 持する。APCは発行されたプログラムの命令のアドレスを記憶する。FPCは 、フェッチすべき次の命令に対する次の順次アドレスを記憶する。オンチップ命 令キャッシュ701、プリフェッチバッファ305、分岐履歴テーブル311お よび、キャッシュ109、111のような外部キャッシュは、FPCを用いてア クセスされる。 プロセッサ103のような4発行推測プロセッサ内で、処理を追 跡し続けるために、CPU103内に5個のカウンタ、即ちAPC、次のAPC (NAPC)、チェックポイントPC(CPC)、次のチェックポイントPC( CPC)および別の次のPC(ANPC)、が維持される。APCおよびANP Cは、一般に発行ユニット309によって現在発行されている第1および次の命 令のアドレスを示す。チェックポイントRAM(図示せず)中に記憶されたCP CおよびCNPCはPCおよびNPCのコピーであり、個別の状態を維持するた めに使用される。ANPCは、予想された分岐からの別の経路のために第1の命 令のアドレスを記憶し、かつ予測誤りから回復するために使用される。APCは サイクル毎に発行された命令の数に基づいて更新される。APCは同様に制御転 送命令(CTI’s)、予測誤り、タップおよび例外に基づいて更新される。 発行ユニット309は、サイクル毎に、4エントリ命令バッファ(図示せず) から4個までの命令を発行するように試みる。命令は、サイクル毎にオンチップ キャッシュ701からアクセスされ、CTI命令の存在を確かめるためにデコー ドされる。CTI’sがバッファ中にあるいはキャッシュ701からアクセスし た命令中に存在しない場合は、FPCがバッファの終わりを示すために更新され る。CTIが発行ウインド内にあるいはキャッシュからアクセスされた命令中に 存在する場合、分岐履歴テーブル311からの予測ビットがCTIの方向を決定 するために使用される。次にFPCがバッファの終わりまであるいはCTIのタ ーゲットまで更新される。実際の実行は、遅延スロットおよび分岐に関連したア ニュアルビットの存在によって複雑となる。 リターン予測テーブル313は、サブルーチンリターン(JUMPR)に使用 される選択されたクラスのJMPL’sの高速予測をサポートする。リターン予 測テーブル313は、4個のアーキテク チャ的レジスタセットをコピーする、4個の64ビットレジスタのセットを含む 。CALLまたはJMPL_yCALL命令が発行される毎に、リターンアドレ スはこの4個のコピーレジスタ中に保存される。リターン予測テーブル313は カレントウインドポインタ(CWP)によって制御される。JUMPRが現れる と、RPTがCWPに基づいてアクセスされ、保存されたアドレスがリターン位 置を予測するために使用される。 発行サイクルの期間中、ソースオペランドはレジスタファイルまたはデータ転 送バスから読みだされ、関連する物理的レジスタアドレスと共に実行ユニットに 送信される。固定小数点レジスタおよびファイルユニット(FXRF)327は 10個の読みだしポートと4個の書き込みポートを有している。FXRF327 内において、レジスタファイルは、固定小数点レジスタの再命名を可能とする再 命名マップを記憶し、同じサイクルにおいて読みだす。浮動小数点レジスタおよ びファイルユニット(FPRF)325はFXRFと似ているがしかし6個の読 みだしポートと3個の書き込みポートを有している。 予約ステーションと実行制御論理との組み合わせは、データフローユニット( DEU)として言及され、予約ステーション317、319、321、323内 にエントリーを割り当てさらに実行するために機能ユニットに命令をスケジュー ルすることに対して、責任を負う。各予約ステーションエントリーは、オペレー ションコード情報、ソース/宛て先レジスタ番号、ソースデータ、連続番号およ びチェックポイント番号フィールドを含む。DFUは、タグおよび結果データの ためにデータ転送バスをモニタする。タグ一致の場合、要求されたデータは適切 な予約ステーション内に記憶され、その予約ステーション中の関連する従属ビッ トが更新される。一旦全て の従属ビットがセットされると、命令はそのソースデータと共に適切な機能ユニ ット中に送信される。一般に、予約ステーション内の2個以上の命令が実行レデ ィであると、もっも古い2個の命令が選択される。もし、予約ステーション内に 命令がなくかつ発行された命令が要求された全てのデータを有していると、それ らは機能ユニットに直接デスパッチされる。 DFUは、発行ユニット309が未解決の分岐を越えて命令を発行した場合の 出現をモニタし、分岐命令の予測された経路に位置する与えられた予約ステーシ ョン中の命令を殺す(kill)。予約ステーション317、319、321、 323はエントリ毎にチェックポイント番号の追跡を継続する。間違って予測さ れた分岐の場合、PSU353は、DFUに殺されるべきチェックポイント番号 を送信する。DFUは次にチェックポイント番号に一致した全ての命令を殺す。 図8を参照すると、予約ステーション317、319、321、323とCP U103の機能ユニット331〜337、801〜807、347、349を示 すブロック図が示されている。FX予約ステーション(DFMFXU)は、2個 の整数(FXU)ユニット801、803に対して固定小数点命令をスケジュー ルする。DXMFXU317は8エントリ予約ステーションを含んでいる。整数 乗算および除算ユニット335、337が同様にDFMFXUに接続されている 。命令を選択する基本的アルゴリズムは、“最も古いものがレディ”である。 FP予約ステーション(DFMFPU)319は、浮動小数点乗算−加算(F MA)および浮動小数点除算(FDIV)ユニット331、333を含む浮動小 数点ユニットに対して1サイクル1個の命令をスケジュールする。FMAユニッ ト331は、4サイクルの 完全にパイプライン化された従順な‘融合’浮動小数点乗算および加算ユニット であり、これは電気および電子技術者学会(IEEE)754によってコンパイ ルされている。FDIVユニット333はセルフタイムの、IEEE754でコ ンパイルされた浮動小数点除算ユニットである。 AGEN予約ステーション(DFMAGEN)321は固定小数点およびロー ド/記憶命令アドレス生成を2個の整数(AGEN/FXU)ユニット805、 807に対してスケジュールする。DFMAGENは、予約ステーション内にア クティブなより古い記憶が存在する場合、より新しいロードのアドレス生成の機 能を停止する点を除いて、DFMFXUと類似である。 LS予約ステーション(DFMLSU)323は、外部データキャッシュ10 5、107へのロード、記憶およびアトム命令を含むメモリオペレーションを、 ロードストア(LSPIPE1、LSPIPE2)ユニット347、349およ びバス351を介してスケジュールする。 CPU103は、単一サイクルの固定小数点数値演算および論理とシフトオペ レーションに対して、4個の専用機能ユニット(FX1−4)801、803、 805、807を含んでいる。バスの数を最小とするために、FX1・801は 整数乗算および除算ユニット335、337と、オペランドバスおよび結果バス を共有する。JMPL命令のための全てのターゲットは、FX2・803におい て計算される。FX2・803からの結果は同様にプロセッサ101の特権およ び状態レジスタからのリターンデータと共有される。FX3・805とFX4・ 807は主にロード記憶命令のためのアドレス計算に対して使用されるが、同様 に固定小数点計算に対しても使用することができる。FX3およびFX4はシフ トオペレーシ ョンをサポートしない。FXユニット801、803、805、807において 使用されるアドレスは、64ビットの高速けた上げ伝搬アドレスである。固定小 数点ユニット801、803、805、807は3個の別個のオペレーションユ ニットを含んでいる。加算ー減算ユニットは、全ての整数加算および減算命令に 加えて乗算ステップ命令を実行する。論理ユニットは、すべての論理的オペレー ション、移動オペレーションおよびあるプロセッサレジスタ読みだしオペレーシ ョンを実行する。シフトユニットは、全てのシフトオペレーションの実行に責任 がある。整数乗算および除算ユニット(MULDIV)335、337はオペラ ンドバスと結果バス809をFX1・801と共有し、FX1を乗算または除算 命令の開始および終了の1サイクルに対して使用する。 図9を参照すると、プロセッサ101内で処理されるアクティブ命令(A−リ ング)901の記号リングが示されている。このA−リングは、処理期間中にお いてプロセッサ101によって維持される複数の命令間の関係を示している。A −リングの大きさは、プロセッサ101内で一度にアクティブな最大64個の命 令に対応して、64命令である。既に述べたように、発行された全ての命令のそ れぞれに対して固有の連続番号が割り当てられる。命令が発行された場合、A− リングの関連するエントリーがセットされる。命令が実行される場合、その命令 がエラー無しで遂行されると、関連ビットはクリアされる。4個のポインタが命 令の状態を追跡しつづけるために使用される。発行連続番号ポインタ(ISN) は最後に発行された命令の連続番号をポイントする。コミットされた連続番号ポ インタ(CSN)は最後にコミットされた命令をポイントする。リソース再クレ ームポインタ(RRP)は最後にリタイアされた命令をポイントする。アクティ ブ命令は5個の状態、即ち発行(I)、 待機(W)、実行(E)、完了(C)、コミット(CM)に分類される。非メモ リコミット連続番号(NMCSN)が、ロード/記憶命令を積極的にスケジュー ルするために使用される。 個別の状態を維持するために、プロセッサ101はチェックポイントを使用す る。チェックポイントは、分岐の予測誤りまたは例外の場合に再記憶されるマシ ン状態のコピーを作る。プロセッサ101は、16個の分岐にわたって推測的発 行を許す16個のチェックポイントをサポートする。チェックポイントは、CT I命令に対してあるいは再命名されていないアーキテクチャ状態が修正された場 合に形成される。チェックポイントは同様に、一旦分岐の予測誤りまたは例外が PSU353によって検出された場合に、実行ユニットにおいて殺すべき命令を 識別する。 CPUチップ間ピンおよびオンチップ命令キャッシュ701は、パリティによ って保護され、これによってシステムに高度な信頼性をもたらす。パリティエラ ーの場合、情報をPSU353に送って新たな命令の発行を停止し、関連するフ ォールト命令をポイントするためにプロセッサの状態を再記憶する。エラーを命 令と関連付けることが出来ない場合、マシンは命令がコミットするのを待ち、そ の後キャッシュ701に3サイクルを与えて全ての完了していないトランザクシ ョンを完了させる。CPU103は次に、SPARC−V9ソフトウエアに定義 されたように、リセット、エラー、デバッグモード(RED)に入り、マシン状 態の回復を試みる。 CPU103を介してデスパッチされた命令は、以下に示すようにフォーマッ トされる。 表1: 命令フォーマット オペレーションコードフィールド(OPCODE)は、命令が条件付き分岐命 令(V9またはV8Bcc、FBcc、またはBrval)である場合またはそ の命令がCALLである場合を除いて、Sparc−V9オペレーションコード と同じビット〔31:0〕を含む。これらの命令のフォーマットを以下に簡単に 示す。制御フィールド(CNTL)はビット〔32〕を含み、条件付き分岐命令 およびCALLと共に使用される。再コード化フィールド(R1、R2)は、ビ ット〔33:34〕を含み、以下のエンコードを有している。 表2: 再コード化フィールドエンコード IMATRIXのみが2ビット再コード化フィールドに関係している。第1の再 コード化値は、A9アーキテクチャにおいて特定されているようにイリーガル命 令を表している。第2の再コード化値01は、リーガルでかつ有効な命令を表し ている。最後の2個のエンコードされた値は将来の使用のために保存される。I PCGを除いた全てのユニットに対して、上位ビットはインビジブル(invi sible)であり、パリティのために使用される。 CALLおよび条件付き分岐命令に対して、分岐偏位は分岐ターゲットセグメ ントおよびCntlビット中に再コード化される。V9において分岐偏位には4 個のフォーマット即ち16ビット、19ビット、22ビットおよび30ビットが ある。16ビット形式はレジスタ値(Brvl)上の分岐に対して使用される。 19ビット形式は、BccおよびFBcc(予測された形式)のV9バージョン に対して使用される。22ビット形式は、BccおよびFBccのV8バージョ ンに対して使用される。30ビット形式はCALLに対して使用される。全ての 偏位は符号付きである(2の補数)。この偏位は2ビットだけ左にシフトされ、 その後分岐命令のPCに加えられる前に64ビットに符号拡張される。 再コード化は、PCを偏位に事前加算し、次に最上位の符合無しビットの実行 を再コード化することによって発生する。この‘符合無しビット’は、偏位の符 号ビットのすぐ下のビットとして定義される。例えば、22ビット偏位に対して 、V9命令のビット〔20:0〕は分岐のPCのビット〔22:2〕に加算され 、合計〔20:0〕を形成する。このオペレーションの実行は、‘けた上げ’と してラベル付けされる。V9分岐のビット〔21〕は符号ビットである。例えば キャッシュ109、111のようなオフチップキャッシュからフェッチされた命 令に対して、合計〔20:0〕は元のオペレーションコードフィールド〔20: 0〕に置き変わる。即ちターゲットの実際の下位21ビットがオンチップ(入力 /出力即ちI/0)キャッシュ701中に記憶される。ビット〔21〕およびC ntlは下記の表に従って比較される。 表3: 再コードフォーマットけた上げ計算 ‘意味’と記されたコラムは、PC(PC〔63:23〕)の上位41ビット 上への効果を表している。即ち、+0は何も加算せず、“+1”は1をPC〔6 3:23〕に加算し、“−1”はPC〔63:23〕から1を引く。その他の幅 の偏位に対して、同様のプロセスが発生する。偏位再コード化は、R_PCおよ びR_INにおいて分岐ターゲット計算のスピードアップのために使用される。 分岐以外のその他のV9命令は再コード化されない。最終的に、4×42ビット よりも、4×35ビットの命令情報がFETCHサイクルの期間において分散さ れる。命令の再コード化は約3nSで実行することができ、これはFETCHの 前のパイプラインステージ期間において10nSサイクルタイムを許す。 図10を参照すると、CPU103のフェッチおよび発行ユニット301、3 09のブロック図が、フェッチサイクルと共に示されている。フェッチサイクル の命令アクセス部分の期間において、命令はI/O主キャッシュ701またはプ リフェッチバッファ305からフェッチされ、マルチプレックスユニット100 1に向けられる。フェッチサイクルの移送/分散部分の期間において、フェッチ された命令は、発行ユニット309内に位置するデコード/デスパッチブロック 1003に分散される。フェッチサイクルの、デコート/回転部分の期間におい て、以下に詳細に示すように、命令はデコード/回転ブロック1003内でデコ ードされかつ回転される。 フェッチサイクルのステップアップおよびスキュー部分の期間において、デコー ドされかつ回転された命令は、発行ユニット309内の命令ラッチブロック10 05によってラッチされる。 CPU103の1実施例では、3個のデコードデスパッチブロック1003が 実行される。 ・ IMX_DECODE -IMATRIXとBRUにサービスする ・ FX_DECODE_DISPATCH -fx_need_decode :2x-DFMFXUにサービスする -fx_op_decode :2x-DFMFXUにサービスする -fxrf_type_decode :4x-FXRFにサービスする -fxrf_decode :4x-FXRFにサービスする -fx_slot_select_decode :1x-FX_DECODE_DISPATCHに サービスする ・ FP_DECODE_DISPATCH -Isu_need_decode :2x-DFMLSUにサービスする -Isu_op_decode :2x-DFMLSUにサービスする -fxagen_need_decode :2x-DFMFXAGENにサービスする -fxagen_op_decode :2x-DFMFXAGENにサービスする -fp_need_decode :2x-DFMFPUにサービスする -fp_op_decode :2x-DFMFPUにサービスする -fprf_decode :4x-FPRFにサービスする -fp_slot_select_decode :1x-FP_DECODE_DISPATCHに サービスする CPU203の他の実施例では、4個のデコードデスパッチブロック1003 が実行される。 ・IMX_DECODE IMATRIXおよびR_INユニッ トにサービスする。 ・BRU_DECODE −R_PC中の分岐ユニットブロックにサ ービスする。 ・FP_DECODE_DISPATCH −FPRF、LSAGEN、D FMFPU、DFMLSUに サービスする。 ・FX_DECODE_DISPATCH −FXRFおよびDFMFXU にサービスする。 移送および分散時間は、命令ラッチと命令データの予定された宛て先に基づいて 変化する。セットアップ時間は、クロックスキュー0.3nSの場合約−0.2 nSであった。各デコード/回転ブロック1003は、全ての命令回転に対して −4nS以下を割り当てるべきであり、かつ10nSサイクル時間に適合するた めに所定のサイクル内でデコードする。 CPU103の1実施例において、以下の信号がチップ全体にわたって論理的 に分散される。 表4: フェッチサイクル信号 図11を参照すると、発行ユニット309内の命令回転論理回路1101のブ ロック図が示されており、この回路は、それぞれの宛て先デスパッチ/デコード ユニットにおいて要求される順序で正しく発行された命令を使用する。4個の命 令(INSTxx)信号が任意にデコーダ1103、1105、1107、11 09によって同時にデコードされる。デコードオペレーションの後で、命令は、 すでに受信された一番下の4:1マルチプレクサ1119、1121、1123 、1125セットからの命令出力と共に、2:1マルチプレクサ(muxes) 1111、1113、1115、1117(muxed)において多重化される 。ISELECT〔3:0〕制御信号からの各ビットは2:1マルチプレクサ1 111、1113、1115、1117の内の1個を制御するために使用される 。例えばISELECT信号の最下位ビットはINST00ベースの命令の多重 化を制御する。ISELECT〔nn〕の各ビットは次の様に定義される。即ち ‘1’は各マルチプレクサ1111〜1117がINSTnnを選択することを 信号で示し、さらに‘0’は最下部の4:1マルチプレクサ1119〜1125 からの初期のINSTnn出力を選択することを意味する。この多重化は物理的 メモリ順序の信号に対して実施される。 命令をPCの特定の発行順序で発行するために、命令は物理的メモリ順序から 回転させられる。INSTxxバスとラベル付けされた命令バスは、各バスの物 理的メモリ順序を識別する。IROTATEべクトル信号は、PC特定発行順序 を展開するために、INSTXXバスを回転するためのアドレス番号を表示する 。図5は、IROTATE信号に関して発行順序への命令の回転とそれぞれの命 令スロットをリストするものである。 表5: IROTATE状態の明細 発行順序への命令の回転は、表5に示すIROTATE制御信号に基づいて4 :1マルチプレクサ1127、1129、1131、1133によって実行され る。IROTATE信号は、アーキテクチャプログラムカウンタの第3および第 4ビットから生成される。 一旦発行順序に配置されると、命令は、ラッチ(ラッチxまたは発行スロット x)1135、1137、1139、1141中にラッチされる。これらのラッ チの出力は、発行サイクルの期間において、それぞれの予約ステーション317 〜323中の論理回路に向けられる。さらにラッチの出力は、逆回転(IROT ATE)ラッチ1143およびマップ論理回路によってラッチされた以前のクロ ックサイクルからのIROTATE信号の組み合わせを用いて、命令を発行順序 から物理的メモリ順序に回転解除する、4:1マルチプレクサに向けられる。I ROTATE信号の値によって特定された各回転状態は、発行順序の命令を物理 的メモリ順序の命令に回転させない別の回転状態に単独で対応している。マップ 論理回路は、図6に示すように以前のフェッチサイクルのIROTATE信号に 基づいてunROTATE信号を形成し、このunROTATE信号をIROT ATEラッチ1143の出力から接続された経路を介して各マルチプレクサ11 19〜1125に向ける。unROTATE信号は、マルチプレクサ1119〜 1125からの出力が物理 的メモリ順序となるように、マルチプレクサ1119〜1125に発行順序命令 を回転するよう命令する。以下の表を参照する。 表6: unROTATIONマップ論理 どの様にして命令ラッチにおいて命令の回転が実行されるかを説明するために 、表7に関して、以下のコードシーケンスを考える。 PC=1 i0 PC=1 i1 PC=2 i2 等 ... 表7: 命令シーケンス サイクル6の期間中、表7は、キャッシュラインの終わりに達し、サイクル7 において命令発行バブルに帰着することを示している。jnは以前のキャッシュ ラインに対応する命令ワードを示している。 表8から理解されるように、IROTATEはAPC〔3:2〕に等しい。 表8: IROTATE〔1:0〕 ISELECT〔3:0〕信号の値は、表9に示すように、ISSUE_VAL ID〔3:0〕およびAPC〔3:2〕制御信号に依存している。真理値表を以 下に示す。 表9: ISELECT〔3:0〕の真理表 ISELECT信号の値に影響を与える別の信号として、キャッシュライン不連 続およびマシン同期信号からの開始が含まれる。表9の実行は、キャッシュライ ン不連続を扱うために最適化され、さらにデッドロック状態を防止するためにマ シン同期から抜け出る場合最適化される必要がある。 回転論理回路1101(SREGnx4Ds)は、図10にリストするように インターフェース仕様を有している。 表10: SREGnx4Dインターフェース仕様 図12を参照すると、回転回路1101中の各メモリ素子1201は回転論理 と共に4個の独立したフリップフロップA、B、C、Dを有している。CPU1 03はサイクル当たり4個の命令を発行しデスパッチしようと試みるので、命令 ラッチは、フェッチサイクルの終了の時点でデスパッチされた命令ワードによっ て更新される必要がある。回転回路1101は、命令ラッチが命令ビットを8個 の可能なソース(4個の記憶ビットおよびデータ入力中の4個の新しいビット) の何れかから4個の命令スロットの何れかに移動することを許可する。‘n’の 場合の結果として、各SREGnx4Dは最小でn×4個のフリップフロップを 有する。制御信号をラッチするために、余分のフリップフロップが必要である。 図13を参照すると、回転回路1101のオペレーションのためのタイミング 図1301がl個のクロックサイクル‘tcyc’1303の期間において示され ている。クロック(CLK)信号1305が発行順序出力命令(Q〔n:0〕〔 A:D〕)信号1307、物理的メモリ順序入力命令(D〔n:0〕〔A:D〕 )信号1309およびIROTATE/ISELECT信号1311と共に示さ れている。表11から、v‘tcq’は、有効命令が出力される開始の時間を提供 し、‘tsu’は有効命令を受け取る終わりの時間を提供し、さらに‘tcontrol ’は有効制御信号の終了の時間を提供する。 表11:SREGnx4D論理回路のためのタイミングテーブル 図14を参照すると、回転回路1101に接続された、発行ユニット309内 の浮動小数点(FP)デコード/デスパッチブロック1401のブロック図が示 されている。IMATRIX、BRU、 固定小数点レジスタファイル(FXRF)および浮動小数点レジスタファイル( FPRF)デコード/デスパッチブロックと異なって、FPデコード/デスパッ チブロック1401(および同様にFXデコード/デスパッチブロック)は、恐 らく実行ユニットに関連するそれぞれの予約ステーションにデスパッチされた、 命令ラッチによって維持される最初の2個の命令からの属性のみを必要とする。 属性はデコードされ、属性レジスタ1403中に記憶される。ISSUEサイ クルの期間中、命令パケットがデスパッチされる前に、追加のマルチプレクサス テージが、マルチプレクサ1405、1707によって実行される。デスパッチ に先立って、スロット_選択論理回路1409は、実行ユニットに関係した適切 な予約ユニットへのデスパッチに対して正しいタイプの4個の命令発行ウインド 中に保持された最初の2個の命令を識別する。命令ラッチからの属性およびタイ プ(FPU_INST〔3:0〕)ビットは、前述の説明と同様にしてIROT ATEおよびISELECT信号によって制御される。 図15A〜Cを参照すると、各種の回転/デコードシステム1501のブロッ ク図が示されている。ある場合には、フェッチサイクルの期間中に分散されかつ 回転回路(SREGnX4Ds)1101中にラッチされた命令は、ステール( stale)となる。例えば、サイクルi中にラッチされた命令は、サイクルi 中の状態情報に基づいてデコードされる。命令はラッチ中に複数のサイクルにわ たって存在するので、デコードされた命令属性はステールまたは矛盾したものと なる。ステール性のその他の例は、アーキテクチャからロジカル(A2L)への レジスタタグ変換の期間中に発生することがある。サイクルiの期間において、 状態情報はCWP=2を含む。変換は、サイクルiにおけるINSTxxの値に 基づいて実行 され、さらに新しいレジスタタグが命令ラッチ中に書き込まれる。 CWPが1に変化した場合、サイクルi+1において2個の命令が発行される。 命令は、その前のサイクルから命令ラッチ中に留まり、残りの(または使用され ない)2個の命令はスロット0へ回転させられる。これらの命令は、CWPが1 に変化したので、今ステールである。 ステール性の問題を避けるために、図15Bまたは15Cに示す実施例のいず れかが使用される。図Bのデコード/デスパッチシステム1501は、回転回路 1101の命令ラッチに続く命令デコードブロック1503を示している。デコ ードは各サイクルにおいて実行されるので、矛盾またはステール属性を有する問 題は存在しない。このシステムはISSUEサイクルにおいて命令属性の分散を 遅延させることができる。図15Bの替わりのシステムは、命令デコードブロッ ク1503に続く回転論理ブロック1505を示している。デコードは従って回 転の後で生じ、各サイクルで命令属性の再評価を強制する。その上、このシステ ム1501は、デコードされていない命令値のラッチがSREGnX4Dレジス タにおいて起こるように、論理回路(SREGnX4D)1101の修正を企て る。 図16を参照すると、フェッチおよび発行サイクルにおけるプロセッサ103 内の命令の移動のブロック図が示されている。多重命令発行マシンにおいて、P Cアドレスの進行は発行された命令の数に依存する。例えば、4個の命令発行マ シンにおいて、4個の命令ラッチまたはスロット(スロット0、スロット1、ス ロット2およびスロット3)1135、1137、1139、1141が存在す る。これらの命令スロットは、一定の優先順位で発行される。すなわちスロット 0は、スロット1、スロット2またはスロット3より も高い優先度を有し、スロット1はスロット2またはスロット3よりも高い優先 度を有し、さらにスロット2はスロット3よりも高い優先度を有している。しか しながら、キャッシュからフェッチされた命令は、上述したのと同じ優先度で、 これらの命令スロットに向けられることはない。例えば、4個の命令発行マシン において、4個のキャッシュバンク(バンク0、バンク1、バンク2、バンク3 )1601、1603、1605、1607が存在する。PCアドレスが進行す るに伴って、この進行は以下の可能性、すなわち+0、+1、+2、+3、+4 の内の1個を有しており、さらに所定のアドレスの選択に当たって、キャッシュ バンクの内容は命令バス上に配置される。図16に示すように、もしPCアドレ スが+2だけ進行すると、アドレス02、03、04、05の内容は、命令バス 上に配置される。アドレス02はキャッシュバンク2・1605内に見いだされ るので、もし正しくない命令が命令スロット2中に配置されると、バンク0・1 601中に見いだされる命令Eはより高い優先度を有するスロット0・1135 中に配置される。この結果、発行サイクルにおいて正しくない命令の発行が行わ れる。従って発行サイクルに先立って、フェッチされた命令は、この命令が正し い命令スロット1135〜1141から発行されるように、物理的メモリ順序か ら発行順序への回転を要求する。表12を参照すると、フェッチ順序から発行順 序へ命令を多重化する、簡単な方法が示されている。 図12:発行された命令、PCアドレスおよびマルチプレクサ制御 注:Ox=OLDx、Nx=NEWx。 回転回路1101を有するプロセッサ103のフェッチおよび発行サイクルに おけるオペレーションの一例を、表13および14に示す。 表13.キャッシュバンクの例 表13は、4個のバンク中に記憶されたキャッシュ701の内容を示す。 表14.フェッチ/回転/発行の例 図14を参照すると、PCが最初にアドレス00において選択され、そのためこ のアドレスのキャッシュ内容は0、1、2、3である。これらの命令は次に、フ ェッチサイクルの間に命令スロット0、スロット1、スロット2、スロット3中 にラッチされる。最初の2個の命令(0、1)の発行によって、PCは2だけあ るいはアドレス10へ進められる。CPU103は、命令4、5、2、3をそれ ぞれ含む、キャッシュバンク0、バンク1、バンク2、バンク3か ら命令を読みだす。ISELECT信号に基づいて、命令4、5がマルチプレク サ1111、1113によって多重化され、さらに命令2、3が回転解除(un rotate)マルチプレクサ1123、1125から選択される。IROTA TE信号は次に、発行順序すなわち2、3、4、5で命令を回転し、それによっ て命令をそれぞれ命令スロット0、スロット1、スロット2、スロット3中にラ ッチする。発行サイクルにおいて1個の命令(命令2)が発行される。これによ って、PCは1だけ進む。このPCに基づいてCPU103は、命令4、5、6 、3をそれぞれ含むキャッシュから命令を読みだす。ISELECT信号に基づ いて、INSTR06がマルチプレクサ1115によって多重化され、INST R04,INSTR05,INSTR03が回転解除マルチプレクサ1119、 1121、1125から選択される。IROTATE信号は次に、命令を発行順 序、すなわち3、4、5、6に回転する。このプロセスは、全ての命令がフェッ チされ発行されるまで続けられる。
【手続補正書】特許法第184条の8第1項 【提出日】平成9年7月30日(1997.7.30) 【補正内容】 請求の範囲 1.複数のアドレス可能な記憶素子中に記憶された順次実行可能な命令セット を有する並列処理マイクロプロセッサにおいて、前記命令の発行をコーディネー トするための方法であって、 前記記憶素子から複数の命令を同時にフェッチングし、 物理的メモリ順序として定義される、順次アドレスされた記憶素子から受信し た順序で、並列に前記命令を記憶し、さらに 前記記憶された命令を発行順序に分類する、 各ステップからなる、命令の発行をコーディネートするための方法。 2.前記フェッチング、記憶、および分類ステップは、単一のクロックサイク ル内で完了される、第1項記載の方法。 3.前記発行順序の命令をデスパッチに先立ってラッチし、 前記発行順序に基づく優先度で、前記ラッチされた命令をデスパッチする、各 ステップを含む第1項記載の方法。 4.選択された数の前記発行順序の命令を実行のためにデスパッチし、 残りの数のデスパッチされていない命令を前記物理的メモリ順序に再分類し、 前記記憶素子から第2のセットの多重命令を同時にフェッチングし、 前記命令を物理的メモリ順序で並列に記憶し、 前記再分類された命令を前記第2のセットの命令にミックスし、 前記ミックスされた命令を物理的メモリ順序に再順序化し、さらに 前記再順序化されたメモリを実行のためのデスパッチに先立って 発行順序に分類する、各ステップを含む第1項記載の方法。 5.命令セットを有するアドレス可能な記憶装置を含む並列命令プロセッサ内 に命令の発行をコーディネートするための装置であって、該装置は、 前記アドレス可能な記憶装置に接続され、前記アドレス可能な記憶装置に関係 する物理的メモリ順序で受信された命令の第1のサブセットを発行順序に分類す る第1の分類器セットであって、前記発行順序は前記命令セットを実行するため に予め決められた順序であり、さらに前記命令の第1のサブセットは発行順序命 令として言及されるものと、および 前記第1のセットの分類器に接続され、さらに選択された前記発行順序命令が デスパッチされるまで前記発行順序命令を保持する、ラッチセット、 とを備える、命令の発行をコーディネートするための装置。 6.前記装置は、 前記アドレス可能な記憶装置を前記第1のセットの分類器に接続し、前記命令 のフェッチされたサブセットを受信するプレ分類器のセットと、および 前記ラッチを前記プレ分類器に接続し、前記ラッチから受信された非選択の命 令を物理的メモリ順序に再分類するための第2のセットの分類器であって、物理 的順序化された後、前記非選択の命令はアドレス順序非選択命令として言及され るものとを含み、 前記第2のセットの分類器はアドレス順序の非選択命令を前記プレ分類器に送 り、ここにおいて前記アドレス順序非選択命令および前記フェッチされた命令は 物理的メモリ順序にプレ分類され、 前記プレ分類器は前記プレ分類されたアドレス順序命令を前記第1の分類器セ ットに送るものである、第5項記載の装置。 7.前記プロセッサは、前記装置に選択および回転信号を提供して前記プレ分 類器および第1の分類器によってそれぞれ受信された命令の選択を指示し、前記 アドレス可能な記憶装置はバンクセットに組織され、前記命令セットは前記バン クにわたって実行順序で順次記憶されるものであり、 さらに前記装置は、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、前記フェッチされた 命令のサブセットを前記アドレス可能な記憶装置から受信し、かつ前記フェッチ された命令のサブセットを前記プレ分類器に配送する並列記憶素子セットであっ て、それぞれの並列記憶素子は前記バンクのそれぞれと前記プレ分類器のそれぞ れに関連しているものと、および 前記第1の分類器によって前記命令の選択を逆にするために前記回転信号を受 信して回転解除(unrotate)信号を展開し、かつ前記回転解除信号を前 記第2の分類器に供給して前記第2の分類器によって受信された命令の選択を指 示する、回転解除ユニットとを備え、 前記各分類器は関連する1個の前記記憶素子と前記第2の分類器の1個からか ら入力命令を受信し、前記選択信号は前記第1の分類器に出力された前記受信命 令の1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は関 連する1個のラッチに出力された前記受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記プレ分類器の関連する1個に出力された前記受信命令の1個の選択を指示する 、第6項記載の装置。 8.アドレス可能なメモリ位置において予め決められた実行順序 を有する命令セットを含む外部メモリと、 前記外部メモリに接続され選択された命令を並列に処理するプロセッサと、お よび 前記プロセッサに接続され前記プロセッサから情報を受信しかつ前記プロセッ サに情報を送信する入力/出力装置とを備える、並列命令処理システムにおいて 、 前記プロセッサは、前記メモリに接続され前記命令の発行をコーディネートす る発行ユニットを含み、 該発行ユニットは、 前記アドレス可能な記憶装置に接続し物理的メモリ順序で受信された命令の第 1のサブセットを発行順序に分類する第1の分類器セットであって、前記物理的 メモリ順序は前記アドレス可能な記憶装置に関係し、前記発行順序は前記命令セ ットを実行するための予め決められた順序であり、順序化後、前記命令の第1の サブセットは発行順序命令として言及されるものと、および 前記第1のセットの分類器に接続し、選択された発行順序命令がデスパッチさ れるまで前記発行順序命令を保持するラッチセット、とを備えるものである、並 列命令処理システム。 9.前記発行ユニットは、 前記アドレス可能な記憶装置を前記第1のセットの分類器に接続しかつ前記命 令のフェッチされたサブセットを受信するプレ分類器セットと、および 前記ラッチを前記プレ分類器に接続し、前記ラッチから受信された非選択命令 を物理的メモリ順序に再分類する第2の分類器セットであって、物理的メモリ順 序化の後、前記非選択命令はアドレス順序の非選択命令として言及されるもの、 とを含み、 前記第2のセットの分類器は前記アドレス順序の非選択命令を前 記プレ分類器に送信し、この時前記アドレス順序の非選択命令およびフェッチさ れた命令は物理的メモリ順序にプレ分類され、 前記プレ分類器は前記プレ分類されたアドレス順序の命令を第1の分類器セッ トに送信する、第8項記載のシステム。 10.前記プロセッサは選択および回転信号を前記発行ユニットに提供して前 記プレ分類器および第1の分類器によってそれぞれ受信された命令の選択を指示 し、前記アドレス可能な記憶装置はバンクセットに組織され、前記命令セットは 前記バンクにわたって実行順序で順次記憶され、 前記発行ユニットは、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、前記アドレス可能な 記憶装置から前記フェッチされた命令のサブセットを受信し、さらに前記フェッ チされた命令のサブセットを前記プレ分類器に配送する、並列記憶素子セットで あって、該各並列記憶素子は前記バンクのそれぞれの1個および前記プレ分類器 のそれぞれの1個に関連するものと、および 前記回転信号を受信し、前記第1の分類器による命令の選択を反転するために 前記回転信号を受信して回転解除信号を展開し、さらに前記回転解除信号を前記 第2の分類器に供給して前記第2の分類器によって受信された命令の選択を指示 する回転解除ユニットを備え、 前記各分類器は前記関連する1個の記憶素子および前記1個の第2の分類器か ら入力命令を受信し、前記選択信号は、前記第1の分類器に出力された前記受信 命令の1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は前 記ラッチの関連する1個に出力された前記受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記プレ分類器の関連する1個に出力された前記受信命令の1個の選択を指示する ものである、第8項記載のシステム。 11.複数のアドレス可能な記憶素子中に記憶された順次実行が可能な命令セ ットを有する並列処理マイクロプロセッサにおいて、前記命令の発行をコーディ ネートするための方法であって、 前記記憶素子から、物理的メモリ順序として定義される順序で、複数の命令を 同時にフェッチし、 順次アドレスされた記憶素子から受信した順序で、前記命令を並列に記憶し、 前記記憶された命令を発行順序に分類し、 前記発行順序の命令を発行に先立ってラッチし、 前記ラッチされた命令を実行のために前記発行順序に従った優先度で発行する 各ステップからなる、命令の発行をコーディネートするための方法。 12.前記フェッチング、記憶および分類ステップは単一のサイクル内で完了 されるものである、第11項記載の方法。 13.選択された数の前記発行順序命令を実行のために発行し、 デスパッチされていない残りの個数の命令を物理的メモリ順序に再分類し、 前記記憶素子から第2のセットの複数の命令を同時にフェッチし、 物理的メモリ順序で前記命令を並列に記憶し、 前記再分類された命令を前記第2のセットの命令とミックスし、 前記ミックスされた命令を物理的メモリ順序に再順序化し、さらに 実行のためにデスパッチに先立って前記再順序化された命令を発 行順序に分類する各ステップを含む、第11項記載の方法。 14.命令セットを有するアドレス可能な記憶装置を含んだ並列命令プロセッ サ内に命令の発行をコーディネートするための装置であって、該装置は、 フェッチされた命令のサブセットを受信するために前記アドレス可能な記憶装 置に結合されたプレ分類器セットと、 前記プレ分類器に結合され、前記アドレス可能な記憶装置に関係する物理的メ モリ順序で受信された前記命令の第1のサブセットを発行順序に分類する第1の 分類器セットであって、前記発行順序は前記命令セットを実行するための予め決 められた順序であり、さらに前記命令の第1のサブセットは発行順序命令として 言及されるものと、 前記第1の分類器セットに接続され、さらに前記発行順序の命令の選択された ものがデスパッチされるまで前記発行順序命令を保持するラッチセットと、 前記ラッチを前記プレ分類器に接続し、さらに前記ラッチから受信された非選 択命令を物理的メモリ順序に再分類する第2の分類器セットであって、この時物 理的メモリ順序化の後前記非選択命令はアドレス順序非選択命令として言及され 、前記分類器の第2のセットは前記アドレス順序非選択命令を前記プレ分類器に 送信し、この時前記アドレス順序非選択命令とフェッチされた命令は物理的メモ リ順序にプレ分類され、前記プレ分類器は前記プレ分類されたアドレス順序命令 を前記第1のセットの分類器に送信するものである、命令の発行をコーディネー トするための装置。 15.前記並列命令プロセッサは、選択および回転信号を前記装置に提供して 前記プレ分類器および第1の分類器によってそれぞれ受信された命令の選択を指 示し、前記アドレス可能な記憶装置はバ ンクセットに組織され、前記命令のセットは該バンクにわたって実行順序で順次 記憶されるものであり、 前記装置は、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、前記アドレス可能な 記憶装置から前記フェッチされた命令のサブセットを受信し、さらに前記フェッ チされた命令のサブセットを前記プレ分類器に配送する並列記憶素子セットであ って、該各並列記憶素子は前記バンクのそれぞれの1個および前記プレ分類器の それぞれの1個に関連したものと、および 前記回転信号を受信して前記第1の分類器によって前記選択された命令を逆転 するために回転解除信号を展開し、さらに該回転解除信号を前記第2の分類器に 供給して前記第2の分類器によって受信された命令の選択を指示する回転解除ユ ニットとを備え、 前記各分類器は前記記憶素子のそれぞれの1個および材料第2の分類器の1個 から入力命令を受信し、前記選択信号は前記第1の分類器に出力された前記受信 命令の1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は前 記ラッチの関連する1個に出力された、前記受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記関連する1個のプレ分類器に出力された前記受信命令の1個の選択を指示する ものである、第14項記載の装置。 16.アドレス可能なメモリ位置に予め決められた実行順序を有する命令のセ ットを含む外部メモリと、 前記外部メモリに接続され、選択された命令を並列に処理するプロセッサと、 および 前記プロセッサに接続し、さらに該プロセッサから情報を受信し かつ該プロセッサに情報を送信する入力/出力装置とを備え、 前記プロセッサは、前記メモリに接続し、前記命令の発行をコーディネートす る発行ユニットを含み、 該発行ユニットは、 フェッチされた命令のサブセットを受信するためのアドレス可能な記憶装置に 結合されたプレ分類器セットと、 前記プレ分類器のセットに結合されさらに物理的メモリ順序で受信された命令 の第1のサブセットを発行順序に分類する第1の分類器セットであって、前記物 理的メモリ順序は前記アドレス可能な記憶装置に関係し、前記発行順序は前記命 令セットを実行するための予め決められた順序であり、順序化の後、前記命令の 第1のサブセットは発行順序命令として言及されるものと、 前記分類器の第1のセットに接続し、選択された発行順序の命令がデスパッチ されるまで該発行順序の命令を保持するラッチセットと、 前記ラッチを前記プレ分類器に接続し、さらに前記ラッチから受信された非選 択命令を物理的メモリ順序に再分類する第2の分類器セットであり、この時物理 的メモリ順序化の後前記非選択命令はアドレス順序の非選択命令として言及され 、前記第2の分類器セットはアドレス順序の非選択命令を前記プレ分類器に送信 しこの時前記アドレス順序の非選択命令および前記フェッチされた命令は物理的 メモリ順序にプレ分類され、前記プレ分類器は前記プレ分類されたアドレス順序 の命令を前記第1の分類器セットに送信するものとを含む、並列命令処理システ ム。 17.前記プロセッサは選択および回転信号を前記発行ユニットに提供して前 記プレ分類器および第1の分類器によってそれぞれ受信された命令の選択を指示 し、前記アドレス可能な記憶装置はバン クセットに組織され、前記命令セットは前記バンクにわたって実行順序で順次記 憶され、 前記発行ユニットは、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、フェッチされた命令 のサブセットを前記アドレス可能な記憶装置から受信し、さらにフェッチされた 前記命令のサブセットを前記プレ分類器に配送する並列記憶素子のセットであっ て、該各並列記憶素子は前記バンクのそれぞれの一個および前記プレ分類器のそ れぞれの1個に関連したものと、および 前記回転信号を受信して前記第1の分類器によって命令の前記選択を反転する ために回転解除信号を展開し、さらに前記回転解除信号を前記第2の分類器に供 給して前記第2の分類器によって受信された命令の選択を指示する、回転解除ユ ニットとを含み、 前記各分類器は前記記憶素子の関連する1個と前記第2の分類器の1個から入 力命令を受信し、前記選択信号は前記第1の分類器に出力された前記受信命令の 1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は前 記関連する1個のラッチに出力された受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記関連する1個のプレ分類器に出力された受信命令の1個の選択を指示するもの である、第16項記載のシステム。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 シェン,ジェン,ダブリュ. アメリカ合衆国,カリフォルニア 94043, マウンテン ビュー セントラル アベニ ュー 181 エー (72)発明者 サジャジアン,ファルナド アメリカ合衆国,カリフォルニア 94087, サニーベール,サウス カスケード テラ ス 524 【要約の続き】 発行されていない命令が物理的メモリ順序に再配列され かつ新しくフェッチされた命令と物理的メモリ順序でミ ックスされ、同時に全てのフェッチされた命令および非 発行命令が次の発行サイクルに先立って発行順序で回転 され、さらに全命令がパイプラインを通過するまで、こ れが続けられる。

Claims (1)

  1. 【特許請求の範囲】 1.複数のアドレス可能な記憶素子中に記憶された順次実行可能な命令セット を有する並列処理マイクロプロセッサにおいて、前記命令の発行をコーディネー トするための方法であって、 前記記憶素子から複数の命令を同時にフェッチングし、 物理的メモリ順序として定義される、順次アドレスされた記憶素子から受信し た順序で、並列に前記命令を記憶し、さらに 前記記憶された命令を発行順序に分類する、 各ステップからなる、命令の発行をコーディネートするための方法。 2.前記フェッチング、記憶、および分類ステップは、単一のクロックサイク ル内で完了される、第1項記載の方法。 3.前記発行順序の命令をデスパッチに先立ってラッチし、 前記発行順序に基づく優先度で、前記ラッチされた命令をデスパッチする、各 ステップを含む第1項記載の方法。 4.選択された数の前記発行順序の命令を実行のためにデスパッチし、 残りの数のデスパッチされていない命令を前記物理的メモリ順序に再分類し、 前記記憶素子から第2のセットの多重命令を同時にフェッチングし、 前記命令を物理的メモリ順序で並列に記憶し、 前記再分類された命令を前記第2のセットの命令にミックスし、 前記ミックスされた命令を物理的メモリ順序に再順序化し、さらに 前記再順序化されたメモリを実行のためのデスパッチに先立って 発行順序に分類する、各ステップを含む第1項記載の方法。 5.命令セットを有するアドレス可能な記憶装置を含む並列命令プロセッサ内 に命令の発行をコーディネートするための装置であって、該装置は、 前記アドレス可能な記憶装置に接続され、前記アドレス可能な記憶装置に関係 する物理的メモリ順序で受信された命令の第1のサブセットを発行順序に分類す る第1の分類器セットであって、前記発行順序は前記命令セットを実行するため に予め決められた順序であり、さらに前記命令の第1のサブセットは発行順序命 令として言及されるものと、および 前記第1のセットの分類器に接続され、さらに選択された前記発行順序命令が デスパッチされるまで前記発行順序命令を保持する、ラッチセット、 とを備える、命令の発行をコーディネートするための装置。 6.前記装置は、 前記アドレス可能な記憶装置を前記第1のセットの分類器に接続し、前記命令 のフェッチされたサブセットを受信するプレ分類器のセットと、および 前記ラッチを前記プレ分類器に接続し、前記ラッチから受信された非選択の命 令を物理的メモリ順序に再分類するための第2のセットの分類器であって、物理 的順序化された後、前記非選択の命令はアドレス順序非選択命令として言及され るものとを含み、 前記第2のセットの分類器はアドレス順序の非選択命令を前記プレ分類器に送 り、ここにおいて前記アドレス順序非選択命令および前記フェッチされた命令は 物理的メモリ順序にプレ分類され、 前記プレ分類器は前記プレ分類されたアドレス順序命令を前記第1の分類器セ ットに送るものである、第5項記載の装置。 7.前記プロセッサは、前記装置に選択および回転信号を提供して前記プレ分 類器および第1の分類器によってそれぞれ受信された命令の選択を指示し、前記 アドレス可能な記憶装置はバンクセットに組織され、前記命令セットは前記バン クにわたって実行順序で順次記憶されるものであり、 さらに前記装置は、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、前記フェッチされた 命令のサブセットを前記アドレス可能な記憶装置から受信し、かつ前記フェッチ された命令のサブセットを前記プレ分類器に配送する並列記憶素子セットであっ て、それぞれの並列記憶素子は前記バンクのそれぞれと前記プレ分類器のそれぞ れに関連しているものと、および 前記第1の分類器によって前記命令の選択を逆にするために前記回転信号を受 信して回転解除(unrotate)信号を展開し、かつ前記回転解除信号を前 記第2の分類器に供給して前記第2の分類器によって受信された命令の選択を指 示する、回転解除ユニットとを備え、 前記各分類器は関連する1個の前記記憶素子と前記第2の分類器の1個からか ら入力命令を受信し、前記選択信号は前記第1の分類器に出力された前記受信命 令の1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は関 連する1個のラッチに出力された前記受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記プレ分類器の関連する1個に出力された前記受信命令の1個の選択を指示する 、第6項記載の装置。 8.アドレス可能なメモリ位置において予め決められた実行順序 を有する命令セットを含む外部メモリと、 前記外部メモリに接続され選択された命令を並列に処理するプロセッサと、お よび 前記プロセッサに接続され前記プロセッサから情報を受信しかつ前記プロセッ サに情報を送信する入力/出力装置とを備える、並列命令処理システムにおいて 、 前記プロセッサは、前記メモリに接続され前記命令の発行をコーディネートす る発行ユニットを含み、 該発行ユニットは、 前記アドレス可能な記憶装置に接続し物理的メモリ順序で受信された命令の第 1のサブセットを発行順序に分類する第1の分類器セットであって、前記物理的 メモリ順序は前記アドレス可能な記憶装置に関係し、前記発行順序は前記命令セ ットを実行するための予め決められた順序であり、順序化後、前記命令の第1の サブセットは発行順序命令として言及されるものと、および 前記第1のセットの分類器に接続し、選択された発行順序命令がデスパッチさ れるまで前記発行順序命令を保持するラッチセット、とを備えるものである、並 列命令処理システム。 9.前記発行ユニットは、 前記アドレス可能な記憶装置を前記第1のセットの分類器に接続しかつ前記命 令のフェッチされたサブセットを受信するプレ分類器セットと、および 前記ラッチを前記プレ分類器に接続し、前記ラッチから受信された非選択命令 を物理的メモリ順序に再分類する第2の分類器セットであって、物理的メモリ順 序化の後、前記非選択命令はアドレス順序の非選択命令として言及されるもの、 とを含み、 前記第2のセットの分類器は前記アドレス順序の非選択命令を前 記プレ分類器に送信し、この時前記アドレス順序の非選択命令およびフェッチさ れた命令は物理的メモリ順序にプレ分類され、 前記プレ分類器は前記プレ分類されたアドレス順序の命令を第1の分類器セッ トに送信する、第8項記載のシステム。 10.前記プロセッサは選択および回転信号を前記発行ユニットに提供して前 記プレ分類器および第1の分類器によってそれぞれ受信された命令の選択を指示 し、前記アドレス可能な記憶装置はバンクセットに組織され、前記命令セットは 前記バンクにわたって実行順序で順次記憶され、 前記発行ユニットは、 前記アドレス可能な記憶装置を前記プレ分類器に接続し、前記アドレス可能な 記憶装置から前記フェッチされた命令のサブセットを受信し、さらに前記フェッ チされた命令のサブセットを前記プレ分類器に配送する、並列記憶素子セットで あって、該各並列記憶素子は前記バンクのそれぞれの1個および前記プレ分類器 のそれぞれの1個に関連するものと、および 前記回転信号を受信し、前記第1の分類器による命令の選択を反転するために 前記回転信号を受信して回転解除信号を展開し、さらに前記回転解除信号を前記 第2の分類器に供給して前記第2の分類器によって受信された命令の選択を指示 する回転解除ユニットを備え、 前記各分類器は前記関連する1個の記憶素子および前記1個の第2の分類器か ら入力命令を受信し、前記選択信号は、前記第1の分類器に出力された前記受信 命令の1個の選択を指示し、 前記各第1の分類器は前記各プレ分類器から命令を受信し、前記回転信号は前 記ラッチの関連する1個に出力された前記受信命令の1個の選択を指示し、 前記各第2の分類器は前記各ラッチから命令を受信し、前記回転解除信号は前 記プレ分類器の関連する1個に出力された前記受信命令の1個の選択を指示する ものである、第8項記載のシステム。
JP53674496A 1995-06-01 1996-05-31 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置 Expired - Fee Related JP3597540B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US45704995A 1995-06-01 1995-06-01
US08/457,049 1995-06-01
PCT/US1996/008255 WO1996038783A1 (en) 1995-06-01 1996-05-31 Method and apparatus for rotating active instructions in a parallel data processor

Publications (2)

Publication Number Publication Date
JP2001500641A true JP2001500641A (ja) 2001-01-16
JP3597540B2 JP3597540B2 (ja) 2004-12-08

Family

ID=23815247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53674496A Expired - Fee Related JP3597540B2 (ja) 1995-06-01 1996-05-31 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置

Country Status (5)

Country Link
US (1) US5838940A (ja)
EP (1) EP0829045B1 (ja)
JP (1) JP3597540B2 (ja)
DE (1) DE69623461T2 (ja)
WO (1) WO1996038783A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049369A (ja) * 1996-08-07 1998-02-20 Ricoh Co Ltd データ処理装置
US6334213B1 (en) * 1998-01-20 2001-12-25 Preview Systems Merging of separate executable computer programs to form a single executable computer program
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6345286B1 (en) * 1998-10-30 2002-02-05 International Business Machines Corporation 6-to-3 carry-save adder
US6807624B1 (en) * 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
JP3554211B2 (ja) * 1998-12-17 2004-08-18 富士通株式会社 マイクロプログラムを用いた命令制御装置および方法
US6665708B1 (en) 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6345351B1 (en) 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6351802B1 (en) * 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US6785714B1 (en) * 2000-09-28 2004-08-31 Microsoft Corporation System and method for employing slot level locking of a cache
WO2003025929A1 (en) * 2001-09-14 2003-03-27 Seagate Technology Plc Prioritizing commands in a data storage device
US7825935B1 (en) * 2001-11-30 2010-11-02 Nvidia Corporation System, method and computer program product for using textures as instructions for graphics processing
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
US8806505B1 (en) * 2008-06-30 2014-08-12 Bank Of America Corporation Service and project request processing within a business enterprise
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8635566B2 (en) * 2011-12-20 2014-01-21 Advanced Micro Devices, Inc. Parity error detection verification
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
US10372458B2 (en) * 2015-04-01 2019-08-06 Huawei Technologies Co., Ltd Method and apparatus for a self-clocked, event triggered superscalar processor
US9645637B2 (en) 2015-09-04 2017-05-09 International Business Machines Corporation Managing a free list of resources to decrease control complexity and reduce power consumption
US9977677B2 (en) 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
GB2572954B (en) * 2018-04-16 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for prefetching data items

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1183275A (en) * 1981-10-02 1985-02-26 Martin J. Schwartz Byte addressable memory for variable length instructions and data
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
EP0363176B1 (en) * 1988-10-07 1996-02-14 International Business Machines Corporation Word organised data processors
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JPH052484A (ja) * 1991-06-24 1993-01-08 Mitsubishi Electric Corp スーパースカラプロセツサ
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5564118A (en) * 1992-11-12 1996-10-08 Digital Equipment Corporation Past-history filtered branch prediction
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
US5519864A (en) * 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism

Also Published As

Publication number Publication date
JP3597540B2 (ja) 2004-12-08
DE69623461D1 (de) 2002-10-10
DE69623461T2 (de) 2003-07-24
EP0829045B1 (en) 2002-09-04
WO1996038783A1 (en) 1996-12-05
EP0829045A1 (en) 1998-03-18
US5838940A (en) 1998-11-17

Similar Documents

Publication Publication Date Title
JP3597540B2 (ja) 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
US5761476A (en) Non-clocked early read for back-to-back scheduling of instructions
US5553256A (en) Apparatus for pipeline streamlining where resources are immediate or certainly retired
US5758112A (en) Pipeline processor with enhanced method and apparatus for restoring register-renaming information in the event of a branch misprediction
US5546597A (en) Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US6351804B1 (en) Control bit vector storage for a microprocessor
US9213551B2 (en) Return address prediction in multithreaded processors
EP0437044B1 (en) Data processing system with instruction tag apparatus
US7526583B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
US5564056A (en) Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5778210A (en) Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
US8335912B2 (en) Logical map table for detecting dependency conditions between instructions having varying width operand values
US6393550B1 (en) Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
JPH10254699A (ja) 浮動小数点演算システム
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US6018798A (en) Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US5684971A (en) Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US10620954B2 (en) Dynamic acceleration of data processor operations using data-flow analysis
US6112296A (en) Floating point stack manipulation using a register map and speculative top of stack values
US5689674A (en) Method and apparatus for binding instructions to dispatch ports of a reservation station
CN101438236A (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统
US5787026A (en) Method and apparatus for providing memory access in a processor pipeline

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040810

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040909

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080917

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080917

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110917

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120917

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120917

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees