JP3347052B2 - 命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法 - Google Patents

命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法

Info

Publication number
JP3347052B2
JP3347052B2 JP07380398A JP7380398A JP3347052B2 JP 3347052 B2 JP3347052 B2 JP 3347052B2 JP 07380398 A JP07380398 A JP 07380398A JP 7380398 A JP7380398 A JP 7380398A JP 3347052 B2 JP3347052 B2 JP 3347052B2
Authority
JP
Japan
Prior art keywords
bank
tid
instruction
gate
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP07380398A
Other languages
English (en)
Other versions
JPH10283179A (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.)
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 JPH10283179A publication Critical patent/JPH10283179A/ja
Application granted granted Critical
Publication of JP3347052B2 publication Critical patent/JP3347052B2/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/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/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/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)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にパイプライ
ン式データ・プロセッサに関し、より具体的には命令の
順不同実行および推測実行を行うパイプライン式データ
・プロセッサに関する。
【0002】
【従来の技術】
背景情報 データ処理システムが時間をかけて発展するにつれて、
より高速のパフォーマンスの必要性が増してきた。現
在、パフォーマンスを改善するため、多くのデータ処理
システムはパイプライン式プロセッサを含んでいる。パ
イプライン式プロセッサは、複数の命令を同時かつオー
バラップ方式で実行する。パイプライン制御の追加によ
って個々の命令の実行時間がわずかに増加するとして
も、このような技法を使用することにより、パイプライ
ン式プロセッサは所与の時間内により多くの命令を処理
することができる。通常、パイプライン式プロセッサ
は、命令を実行するために6通りの段階を含む。この6
通りの段階としては、命令取出し、命令デコード、デー
タ・メモリ・アドレス生成、プロセッサ常駐オペランド
取出し、命令実行、結果書込みを含む。
【0003】伝統的に、パイプライン内のすべての段階
は同時に進行しなければならない。その結果、命令をパ
イプライン内の1つ次の段階に移動させるために必要な
時間は、最も遅いパイプ段階によって決まっていた。し
たがって、このような従来のパイプライン・プロセッサ
では、最も遅いパイプ段階によってプロセッサのスルー
プットが決定され、限定される。このような限定を補正
するため、パイプライン式プロセッサの現行実施態様で
は、より高速のパイプ段階を使用するか、または機能ユ
ニットがそれぞれのペースで独立して実行できるように
していた。
【0004】しかし、機能ユニットがそれぞれのペース
で独立して進行できるようにすることにより、様々なパ
イプライン・ハザードがもたらされる。ハザードが検出
されると、違反命令および後続命令が消去され、再取出
しされる。このような順不同実行を使用するパイプライ
ン式プロセッサの一例としては、Intel社製のPentiumPr
o(商標)プロセッサがある。ただし、Pentium Pro(商
標)はIntel社の商標であることに留意されたい。Penti
um Pro(商標)マイクロプロセッサでは、メモリ読取り
動作を一部の書込み動作より前にリオーダすることがで
きる。このリオーダ動作を行うために、Pentium Pro
(商標)プロセッサの中央演算処理装置は、書込み動作
周辺の読取り動作をリオーダするが、このようなリオー
ダはプログラムの見地から監視不能である。Pentium Pr
o(商標)の詳細については、TomR. Halfellによる「In
tel's」(Byte、1995年4月、42〜58ページ)
等を参照されたい。
【0005】さらに、IBM製のPowerPC(商標)60
4RISCマイクロプロセッサも順不同命令実行を行
う。PowerPC(商標)604内のディスパッチ論理回路
は、命令をディスパッチする間に、適切な実行ユニット
に命令を割り振る。ただし、PowerPCはIBMの商標で
あることに留意されたい。特殊完了バッファ内のリオー
ダ項目は各命令ごとに割り振られ、従属関係チェックは
ディスパッチ待ち行列内の命令同士の間に行われる。実
行された命令は完了ユニットでリタイヤされる。ディス
パッチされた命令を格納することに加え、完了ユニット
は適切な方法でレジスタ・ファイルと制御レジスタを更
新する。さらに、完了ユニットは順次プログラミングを
保証し、それより前のすべての命令が完了し、その命令
自体が実行を終了したときにのみ、完了バッファからそ
の命令をリタイヤさせる。したがって、完了ユニット
は、リオーダまたは完了バッファとともに、順不同に実
行される命令が元々用意されたときと同じ順序でリタイ
ヤされることを保証する。PowerPC(商標)604とPen
tium Pro(商標)というマイクロプロセッサの解決策は
いずれも従来のパイプライン式実施態様を超える重大な
利点を提供するが、PowerPC(商標)604内の完了バ
ッファとIntelのPentium Pro(商標)内のリオーダ・バ
ッファを使用するには、元のプログラム順序を追跡する
ための特定のテーブルまたはメモリ記憶位置が必要であ
り、結果を適正順序で完了することが必要になる。この
ような厳密な順序付けは、正しい結果が得られるよう
に、データ・プロセッサの同一資源にアクセスする複数
の命令が元の順序付けで正しく実行されることを保証す
るために必要である。したがって、このような実施態様
では、このようなリオーダ動作を実行するための余分な
テーブルの使用が必要であり、適正順序で命令を完了す
ることに限定される。余分なテーブルを使用するには、
追加の回路領域オーバヘッドが必要になり、したがっ
て、データ・プロセッサに関連するコストが増加する。
【0006】
【発明が解決しようとする課題】したがって、フレキシ
ビリティを高め、データ処理システム内の資源の使い方
を改善するために、ユーザが命令を順不同で実行し完了
できるようにする、パイプライン式プロセッサの必要性
が存在する。
【0007】本発明の第1の形式として、データ処理シ
ステムが提供される。このデータ処理システムは、複数
の命令を受け取るための入力手段と、第1のバンクまた
は第2のバンクに含まれるターゲット識別子を前記複数
の命令のそれぞれに割り当てるための割り当て手段とを
含む。この割り当て手段は、割り当てたターゲット識別
子を増分して次のターゲット識別子を得るための増分手
段と、前記割り当てたターゲット識別子が当該バンク内
の最後の識別子である場合に他のバンクが使用可能かど
うかを判断するための手段と、バンクが切り替わるとき
にいずれのバンクが新しいターゲット識別子を供給する
かを示すバンク・ビットを設定するための手段とを含
み、前記他のバンクが使用可能でなければ前記他のバン
クが使用可能になるまで待ち、前記他のバンクが使用可
能になると、前記次のターゲット識別子を割り当てる。
【0008】さらに、第2の形式として、データ処理シ
ステムを操作するための方法が提供される。この方法
は、第1のバンクまたは第2のバンクに含まれるターゲ
ット識別子を実行すべき命令に連続的に割り当てるステ
ップと、割り当てたターゲット識別子が当該バンク内の
最後の識別子であるかどうかを判断するステップと、前
記最後の識別子でなければ、前記割り当てたターゲット
識別子を増分して次のターゲット識別子を得るステップ
と、前記最後の識別子であれば、他のバンクが使用可能
かどうかを判断するステップと、前記他のバンクが使用
可能でなければ、前記他のバンクが使用可能になるまで
待つステップと、前記他のバンクが使用可能であれば、
前記最後の識別子を増分して、前記他のバンクに含まれ
る次のターゲット識別子を得るステップと、前記他のバ
ンクがもう一方のバンクよりも新しいターゲット識別子
を供給することを示すバンク・ビットを設定するステッ
プとを含む。
【0009】さらに、第3の形式として、前述の方法を
実行するためのプログラムを記憶したプログラム記憶媒
体が提供される。
【0010】
【発明の実施の形態】パイプライン式スーパスカラ・デ
ータ・プロセッサは、パフォーマンスを改善するために
推測実行の技法を使用する場合が多い。データ・プロセ
ッサが命令を推測実行する場合、このデータ・プロセッ
サは、このような推測結果を取り消すためのメカニズム
を備えていなければならない。さらに、データ・プロセ
ッサのマイクロアーキテクチャでは、所与の命令がデー
タ・プロセッサ内の実行および完了点との特定の関係に
あることが必要になる場合もある。上記その他の多くの
理由により、データ・プロセッサ内では順序決定が非常
に重要なものになりうる。
【0011】本発明では、各命令に固有の識別子が割り
当てられる。この固有の識別子は有限ビット・カウント
を有するので、有限数の固有の識別子が存在する。した
がって、本発明では、十分な長さのプログラムを実行す
る際にこの識別子を再使用しなければならない。さら
に、識別子の規模を単純に比較しても識別子を再使用す
るときのプログラム順序を反映しない場合には、命令を
実行するための順序決定が複雑になる可能性がある。こ
の問題を解決するため、本発明では、識別子バンクの概
念を取り入れている。本発明では、各命令に割り当てら
れた識別子がNビットを有すると想定する。したがっ
て、プログラム内の命令に割り当てられる識別子は2N
個になる。この2N個の識別子は2つのバンクに分離さ
れ、第1のバンクは0〜2Nー1−1の値を備えた識別子
を有する。また、第2のバンクは2Nー1〜2N−1の値を
備えた識別子を有する。
【0012】さらに、本発明の代替実施例では、識別子
を2m個のバンクに分割することができ、mは0より大
きい整数であることに留意されたい。本発明の一実施例
では、2つのバンクがそこに格納された識別子の最上位
ビットによって示される場合、第1のバンクはバンク0
と呼ばれ、第2のバンクはバンク1と呼ばれることにな
る。識別子割当て論理は、バンク0またはバンク1のど
ちらが最も新しいバンクであるかを示すためのグローバ
ル信号を、本発明が実施されるデータ・プロセッサの残
りの部分に供給する。ただし、最も新しいバンクとは、
命令実行または取消しのいずれかにより最も最近すべて
の割当てがクリアされたバンクであることに留意された
い。さらに、識別子割当て論理は、完全にクリアされて
いない識別子のバンクに第1の識別子割当てを入れるよ
うな命令のディスパッチを禁止する。その結果、最後に
割り当てられた識別子と最も新しいバンクの最後の識別
子との間の識別子は、いずれも活動状態とは見なされな
くなる。ただし、非活動識別子のセットは空である可能
性があることに留意されたい。
【0013】本発明の一実施例では、そこから識別子が
割り当てられる最も新しいバンク内にある識別子は、最
も新しいバンク内にない識別子よりプログラム順序が
「後」でなければならない。2つの識別子を比較する場
合、それらが同じバンク内にあるかどうかを判定しなけ
ればならない。バンクが2つしか存在しない場合に、そ
れらの識別子が同じバンク内にある場合、プログラム順
序を示すために単純な規模比較動作を実行することがで
きる。それらの識別子が同じバンク内にない場合、本発
明の一実施例では、最も新しいバンク内にある識別子の
方がプログラム順序が後にならなければならない。この
論理を実施するための方法の1つは、バンク・ビット信
号を使用して2つの識別子に対して排他NOR論理演算
を実行することにより、2つの識別子のそれぞれの最上
位ビットを事前条件付けする方法である。この解決策を
使用することにより、本発明は、所与の時点で割り当て
られた2N個の識別子のピークをサポートする。さら
に、この方法を使用することにより、「停止」命令と次
にディスパッチする命令との最小スパンが2N-1にな
る。図5はこの関係を示す論理図である。
【0014】上記の説明では本発明の動作の概略を示し
てきたが、以下の説明では、本発明の諸要素の接続性に
関する詳細ならびに本発明の動作の詳細を示す。
【0015】接続性の説明 本発明の一実施例は図1に示されている。まず図1を参
照すると、同図には、本発明に使用できるデータ処理シ
ステム100の一例が示されている。このシステムはパ
イプライン式中央演算処理装置(CPU)110を有す
る。本発明の履歴バッファ(図示せず)はCPU110
に含まれる。CPU110はシステム・バス112によ
って他の様々な構成要素に結合される。読取り専用メモ
リ(「ROM」)116は、システム・バス112に結
合され、データ処理システム100の所与の基本機能を
制御する基本入出力システム(「BIOS」)を含む。
ランダム・アクセス・メモリ(「RAM」)114と、
入出力アダプタ118と、通信アダプタ134もシステ
ム・バス112に結合される。入出力アダプタ118
は、ディスク記憶装置120と通信する小型計算機シス
テム・インタフェース(「SCSI」)アダプタにする
ことができる。通信アダプタ134は、データ処理シス
テムが他のこのようなシステムと通信できるようにする
外部ネットワークとバス112とを相互接続する。シス
テム・バス112には、ユーザ・インタフェース・アダ
プタ122およびディスプレイ・アダプタ136を介し
て入出力装置も接続されている。キーボード124、ト
ラック・ボール132、マウス126、スピーカ128
はいずれもユーザ・インタフェース・アダプタ122を
介してバス112に相互接続されている。ディスプレイ
・モニタ138は、ディスプレイ・アダプタ136によ
ってシステム・バス112に接続される。このため、ユ
ーザは、キーボード124、トラックボール132、ま
たはマウス126によってシステムに入力し、スピーカ
128およびディスプレイ138を介してシステムから
出力を受け取ることができる。さらに、AIX(「AI
X」はIBMの商標である)などのオペレーティング・
システムを使用して、図1に示す様々な構成要素の機能
を調整する。
【0016】本発明の好ましい実施態様は、ここに記載
した方法(複数も可)を実行するようにプログラミング
されたコンピュータ・システムとしての実施態様ならび
にコンピュータ・プログラム製品としての実施態様を含
む。コンピュータ・システムの実施態様によれば、その
方法(複数も可)を実行するための命令セットは、上記
のように一般に構成される1つまたは複数のコンピュー
タ・システムのランダム・アクセス・メモリ114に常
駐する。コンピュータ・システムが要求するまで、その
命令セットは、たとえば、ディスク・ドライブ120内
の他のコンピュータ・メモリ(ディスク・ドライブ12
0で最終的に使用するための光ディスクまたはフロッピ
ー・ディスクなどの取外し可能メモリを含むことができ
る)内のコンピュータ・プログラム製品として格納する
ことができる。さらに、このコンピュータ・プログラム
製品は、他のコンピュータに格納し、必要なときにネッ
トワークまたはインターネットなどの外部ネットワーク
によってユーザのワーク・ステーションに伝送すること
もできる。その媒体がコンピュータ可読情報を伝達する
ように命令セットが格納される媒体が命令セットの物理
的格納によって物理的に変化することは、当業者であれ
ば分かるだろう。この変化は、電気的、磁気的、化学
的、その他の物理的変化である可能性がある。命令、記
号、文字などによって本発明を記述すると便利である
が、上記ならびに同様の用語はいずれも適切な物理的要
素に関連付ける必要があることに留意されたい。
【0017】本発明は、比較、妥当性検査、選択、その
他人間のオペレータに関連付けることができる用語など
を記述することに留意されたい。しかし、本発明の一部
を形成し、ここに記載する動作のうちの少なくともいく
つかについては、人間のオペレータによる処置が不要な
ものである。記載する動作は、主に、他の電気信号を生
成するための電気信号を処理するマシン動作である。
【0018】本発明の一実施例は図2に示されている。
図2は、本発明の一実施例によるパイプライン式CPU
110のブロック図を示している。パイプライン式CP
U110は、命令取出しユニット(IFU)202、メ
モリ・サブシステム(MSS)216、命令ディスパッ
チ・ユニット(IDU)222、浮動小数点ユニット
(FPU)242、および命令実行ユニット(IEU)
250を含む。
【0019】IFU202は、命令キャッシュ204、
命令待ち行列(IQ)206、命令デコード(Iデコー
ド)回路208、条件レジスタ・ユニット210、およ
び分岐(BR)ユニット214を含む。メモリ・サブシ
ステム216は、第2レベル(L2)キャッシュ218
と、バス・インタフェース・ユニット(BIU)220
を含む。浮動小数点ユニット242は、浮動小数点ユニ
ット0(FP0)244、浮動小数点待ち行列(FP
Q)246、および浮動小数点ユニット1(FP1)2
48を含む。IEU250は、複数の浮動小数点実行ユ
ニットであるEx0E252、Ex0L254、Ex1
E256、およびEx1L258を含む。さらに、IE
U250は、ストア/複合実行ユニット260、L0ロ
ード(データ・キャッシュ)ユニット264、およびメ
モリ管理ユニット(MMU)262を含む。
【0020】IDU222は、ターゲット識別(TI
D)生成回路224、複数の汎用レジスタ(GPR)2
26、履歴バッファ228、実行前待ち行列(PEQ)
ユニット230、ストア/複合実行前待ち行列(SPE
Q)ユニット232、および条件レジスタ待ち行列(C
RQ)234を含む。さらに、IDU222は、割込み
処理メカニズム236と、命令割込みテーブル(II
T)回路238と、グループ識別(GID)回路240
を含む。
【0021】図3は、実行前ユニット230の一部分を
より詳細に示している。PEQ230のこの一部分は、
項目0レジスタ302、項目Nレジスタ304、TID0
(0:5)レジスタ306、プログラム順序決定回路30
8、TIDN(0:5)レジスタ310、およびプログラム順序
決定回路312を含む。TID0(0:5)レジスタ306は、
TID値のビット0〜5をプログラム順序決定回路30
8に供給する。さらに、Flush_V信号、TID_Bank信号、
およびFlush_TID(0:5)信号は、プログラム順序決定回路
308にそれぞれ供給される。さらに、TIDN(0:5)レジ
スタ310は、TIDN値を供給するためにプログラム
順序決定回路312に結合されている。同様に、Flush_
V信号、TID_Bank信号、およびFlush_TID(0:5)信号は、
プログラム順序決定回路312に供給される。
【0022】PEQ230のプログラム順序決定回路3
08については、図4により詳細に示す。ただし、プロ
グラム順序決定回路などの回路はCPU110全体に分
散されていることに留意されたい。しかし、明確にする
ため、図2ではプログラム順序決定回路を詳細に示さな
い。
【0023】プログラム順序決定回路308は、比較器
402、排他NORゲート404、ANDゲート40
6、排他NORゲート408、NORゲート410、イ
ンバータ412、ANDゲート414、ORゲート41
6、ANDゲート418、およびORゲート420を含
む。TID値のビット1〜5は比較器402のA入力に
供給され、Flush_TID値のビット1〜5は比較器402
のB入力に結合される。比較器402の出力はANDゲ
ート418の第1の入力に結合される。Flush_V信号
は、ANDゲート418の第2の入力と、ANDゲート
414の第1の入力に供給される。TID0(0)信号は排他
NORゲート404の第1の入力に供給される。TID_Ba
nk信号は、排他NORゲート404の第2の入力と、排
他NORゲート408の第1の入力に供給される。Flus
h_TID(0)信号は排他NORゲート408の第2の入力に
供給される。排他NORゲート404の出力は、AND
ゲート406の第1の入力と、NORゲート410の第
1の入力と、インバータ412の入力に結合される。排
他NORゲート408の出力は、ANDゲート406の
第2の入力と、NORゲート410の第2の入力と、A
NDゲート414の第2の入力に結合される。
【0024】ANDゲート406の出力はORゲート4
16の第1の入力に結合され、NORゲート410の出
力はORゲート416の第2の入力に結合される。OR
ゲート416の出力はANDゲート418の第3の入力
に結合される。インバータ412の出力はANDゲート
414の第3の入力に結合される。ANDゲート418
の出力はORゲート420の第1の入力に結合され、A
NDゲート414の出力はORゲート420の第2の入
力に結合される。ORゲート420の出力はClear Entr
y命令信号を供給する。
【0025】図5は、プログラム順序決定回路308の
論理的視点を示している。プログラム順序決定回路30
8のこの論理的視点では、プログラム順序決定回路30
8は、排他NORゲート502、排他NORゲート50
4、連結器506、連結器508、および比較器510
を含む。A(0)というラベルが付いた第1の値の上位1ビ
ットは排他NORゲート502の第1の入力に供給され
る。TID_Bank信号は、排他NORゲート502の第2の
入力と、排他NORゲート504の第1の入力に供給さ
れる。B(0)というラベルが付いた第2の値の上位1ビッ
トはNORゲート504の第2の入力に供給される。N
ORゲート502の出力は連結器506に結合される。
さらに、第1のA値の残りのビットは連結器506に供
給される。連結器506の出力はA(0:5)信号を比較器5
10に供給する。同様に、NORゲート504の出力は
連結器508に結合される。B(1:5)というラベルが付い
た第2のデータ値のビット1〜5は連結器508に供給
される。連結器508の出力はB(0:5)信号を比較器51
0に供給する。比較器510はC信号を出力する。
【0026】図6は、図2のTID生成回路224の一
部分をより詳細に示している。TID生成回路224
は、占有バンク決定回路602、ANDゲート604、
ORゲート606、インバータ608、ANDゲート6
10、NORゲート612、ANDゲート614、増分
器616、レジスタ618、ANDゲート620、レジ
スタ622、インバータ624、インバータ626、O
Rゲート628、およびANDゲート630を含む。占
有バンク決定回路602はBank 0 Occupied信号をAN
Dゲート604の第1の入力に供給する。Next_TID(0)
信号は、インバータ608と、ANDゲート610の第
1の入力に結合される。インバータ608の出力はAN
Dゲート604の第2の入力に結合される。さらに、占
有バンク決定回路602はANDゲート610の第2の
入力に結合され、Bank 1 Occupied信号を供給する。A
NDゲート604の出力はORゲート606の第1の入
力に結合される。ANDゲート610の出力はORゲー
ト606の第2の入力に結合される。ORゲート606
の出力はANDゲート614の第1の入力に結合され
る。Next_TID(1)ビットはNORゲート612の第1の
入力に供給され、Next_TID(2)ビットはNORゲート6
12の第2の入力に供給され、Next_TID(3)ビットはN
ORゲート612の第3の入力に供給され、Next_TID
(4)ビットはNORゲート612の第4の入力に供給さ
れ、Next_TID(5)ビットはNORゲート612の第5の
入力に供給される。ただし、Next_TID(1-5)ビットはそ
れぞれ同じTID値からの1ビットずつを表すことに留
意されたい。NORゲート612の出力はANDゲート
614の第2の入力に結合される。ANDゲート614
の出力はHold-TID信号を供給する。
【0027】さらに、Bank 0 Occupied信号はANDゲ
ート620の第1の入力に供給される。同様に、Bank 1
Occupied信号はインバータ626の入力に供給され
る。インバータ626の出力はANDゲート630の第
1の入力に結合される。レジスタ622は、ANDゲー
ト620の第2の入力と、インバータ624の入力とに
結合され、TID_Bank信号を供給する。ANDゲート62
0の出力はORゲート628の第1の入力に結合され
る。インバータ624の出力はANDゲート630の第
2の入力に結合される。ANDゲート630の出力はO
Rゲート628の第2の入力に結合される。ORゲート
628はNext_TID_Bank信号を供給する。ORゲート6
28の出力はレジスタ622の入力に結合される。
【0028】さらに、レジスタ618は増分器616に
結合され、Next_TID(0:5)信号を通信する。ディスパッ
チ信号は増分器616のそれぞれに結合される。
【0029】図7は、占有バンク決定回路602の一部
分をより詳細に示している。占有バンク決定回路602
のこの一部分は、TID割振りアレイ702、ORゲー
ト704、およびORゲート706を含む。ビット0〜
31のそれぞれについてC、D、Lのラベルが付いた制
御信号は、ORゲート706の入力に供給される。OR
ゲート706はBank 0 Occupied信号を供給する。同様
に、ビット32〜63のそれぞれについてC、D、Lの
ラベルが付いた制御信号は、ORゲート704に入力と
して供給される。ORゲート704の出力はBank 1 Occ
upied信号を供給する。
【0030】上記の説明では、本発明の一実施例を実施
する際に使用する諸要素の接続性を示している。このよ
うな要素のそれぞれの動作については、以下に詳述す
る。本発明の実施態様に関する以下の説明では、「アサ
ート(Assert)」および「ニゲート(Negate)」という
用語ならびにその様々な文法形式を使用して、「アクテ
ィブ・ハイ」および「アクティブ・ロー」という論理信
号の混合を処理する際の混乱を回避する。「アサート」
は、論理信号またはレジスタ・ビットをその活動状態ま
たは論理的に真の状態にすることを指すために使用す
る。「ニゲート」は、論理信号またはレジスタ・ビット
をその非活動状態または論理的に偽の状態にすることを
指すために使用する。さらに、値の前に付けた「%」と
いう記号は、その値が2進表記になっていることを示
す。
【0031】動作の説明 図1は、本発明の一実施例を実施可能な一般的なデータ
処理システムを示している。
【0032】図2を参照すると、パイプライン式CPU
110に関する命令は、命令キャッシュ204または他
の命令ソース(ここには詳細に示さない)からアクセス
される。これらの命令は命令待ち行列206に格納さ
れ、Iデコード回路208によってデコードされるまで
そこに保持される。条件付き未解決分岐が予測される
と、このような分岐命令はBRQ214に供給され、分
岐実行ユニット(ここには詳細に示さない)によって後
で処理するために格納される。命令を取り出してデコー
ドした後、その命令はIDU222に供給される。命令
を受け取ると、TID生成回路224によってターゲッ
ト識別子(TID)が生成される。命令自体と同じ順序
で、IDU22に供給される命令についてTIDが定義
される。
【0033】ただし、パイプライン式CPU110で
は、有限数のTIDが命令への割当てに使用可能である
ことに留意されたい。ここに記載する本発明の一実施例
では、使用可能なTIDの数が2つのバンクに分割され
る。第1のバンクのTIDが割り当てられた後、IDU
222は第2のバンクからTIDの割当てを開始する。
第2のバンクの最後のTIDが割り当てられると、本発
明では、そこに格納されたすべてのTID値が使用可能
になったときに第1のバンクのTIDにアクセスするた
めの方法を実施する。ただし、TIDが依然としてTI
D値の最後のバンク内で未解決である場合に、最後のバ
ンクのTIDと新しいバンクのTIDとの相対持続期間
を維持して正しい命令順序付けを保証しなければならな
いことに留意されたい。本発明では、バンク0のTID
値がバンク1のTID値より古い命令を表す時期を示す
ために、バンク・ビットを使用する。ただし、使用する
TIDの数が3つ以上のバンクに分割される場合に追加
のバンク・ビットを実施できることに留意されたい。
【0034】TIDの値はIDU222によって割り当
てられる。IDU222の各要素の簡単な説明について
は、以下の詳述する。IDU222は、IQ206から
命令をディスパッチする。IDU222は、命令をデコ
ードし、Ex0E252、Ex0L254、Ex1E2
56、またはEx1L258などの適切な実行ユニット
と、PEQ230によって指定されたそれぞれの実行前
待ち行列に向かってその命令を転送する。さらに、ID
U222は、各命令にTIDを割り当て、履歴バッファ
228内に所与のレジスタの履歴を保持する。TID
と、履歴バッファ228内の履歴情報は、命令フローの
適切な順次一貫性を維持し、パイプラインCPU110
で割込みが発生したときに正しいシステム状態を再構築
しやすくするために使用する。さらに、TIDは、その
命令のターゲット・アーキテクチャ機構を識別するため
に使用する固有の識別タグとしてより具体的に設計する
ことができる。通常、本発明の一実施例では、このよう
なアーキテクチャ機構またはレジスタ・タイプが4通り
存在する。このような機構としては、条件レジスタ(C
R)、汎用レジスタ(GPR)、浮動小数点レジスタ
(FPR)、固定小数点実行レジスタ(XER)が含ま
れる。ただし、TID値は、オペランドの依存関係また
は資源割振りのジレンマを解決し、命令順序を維持する
ために使用できることに留意されたい。動作中、TID
は、命令がディスパッチされるとすべての命令に割り当
てられ、その命令が完了してデータがアーキテクチャ機
構に到達すると解放される。
【0035】また、IDU222は命令の実行をスケジ
ューリングすることにも留意されたい。実行前待ち行列
(PEQ230)は、オペランドの依存関係または資源
割振りのジレンマなどのインタロックが解決され、命令
が適切な実行ユニットにディスパッチされるまで使用さ
れる。IDU222は、3組のこのような実行前待ち行
列を含む。第1に、固定小数点実行前待ち行列(PEQ
230)は、すべてのロード固定小数点算術命令を受け
入れる。第2に、条件レジスタ実行前待ち行列(CRQ
234)は、条件レジスタ比較命令の変更を伴う命令を
受け取る。さらに、ストア実行前待ち行列(SPQ23
2)は、乗算、除算、および特殊目的レジスタ・アクセ
スなど、すべてのストア命令および複合命令を受け取
る。
【0036】パイプライン式CPU110によって実行
される各命令にはTIDを割り当てなければならないの
で、TIDの生成と、このような割当てを実施するため
のメカニズムについて、以下に詳述する。TID値を生
成するため、初期TIDが%000000という2進値を有す
ると想定する。ただし、割り当てられるTID値は必ず
しも%000000という値から始まるわけではなく、パイプ
ライン式CPU110の設計者が希望する開始アドレス
に初期設定できることに留意されたい。TIDは順次割
り当てられるので、17という値が割り当てられたTI
Dは、19または25という値が割り当てられるTID
より古いものに見えるだろう。バンク0という1つのバ
ンク内のTIDが割り当てられているはずのすべての命
令が発行されて完了し、それぞれに対応するTIDがリ
タイヤされた場合を検討されたい。バンク1というもう
1つのバンク内の最後の番号を有するTIDが割り当て
られると、バンク1から割り当てるべき追加のTIDは
一切ないので、バンク0で割り当てられたTIDを再使
用するために折返し動作を実行しなければならない。し
かし、この時点でバンク1から割り当てられたTIDが
新たに解放されたバンク0から割り当てられたTIDよ
り「古い」ものになることを指定するためのメカニズム
を実現しなければならない。
【0037】ただし、以下の説明では、第1または第2
のプールのうちの一方の資源からTIDを割り当てるこ
とができることを示すために「バンク」という用語を使
用することに留意されたい。第1のプールをバンク0と
呼び、第2のプールをバンク1と呼ぶ。本発明の一実施
例では、バンク0内で割り当てられたTIDは0〜31
の範囲の数値を有し、バンク1から割り当てられたTI
Dは32〜63の数値範囲を有する。
【0038】本発明では、TID間の持続期間を決定す
るためにバンク・ビットを使用する。バンク・ビット
は、TID値の上位1ビットと排他NORが取られ、T
ID値の下位5ビットと連結されて、6ビットのTID
値を供給する。このタイプの構成では、バンク・ビット
が論理1という値である場合、TID値は未変更のまま
になる。しかし、バンク・ビットが論理0という値であ
る場合、TID値の上位1ビットは他の論理状態に切り
替えられる。したがって、本発明の一実施例では、2つ
のバンクのTIDを使用する場合、バンク・ビットは論
理1という値になり、バンク0はバンク1より古い命令
を論理的に表す。しかし、バンク1内のすべてのTID
が割り当てられ、バンク0が割当てに使用可能になる
と、バンク・ビットは論理0という値に切り替えられ
る。その後、排他NOR演算中に、バンク1内の数値を
有するTIDは、バンク0から割り当てられたTIDよ
り古いものに見えるだろう。バンク0とバンク1の値か
ら割り当てられたTID間で排他NOR関数を実行する
ことにより、TID間の相対持続期間が維持され、必要
なときに命令が順次順序で実行されることを保証するた
めにその相対持続期間を使用することができる。
【0039】以下の例を検討されたい。第1の動作でバ
ンク・ビットがアサートされると想定する。したがっ
て、TIDはまずバンク0から、次にバンク1から割り
当てられるので、バンク0から割り当てられたTIDは
バンク1から割り当てられたTIDより古いものに見え
るだろう。したがって、17という値を有するTIDを
34という値を有するTIDと比較した場合、34とい
う値を有するTIDの方が、先に発行され、17という
値を有するバンク0からのTIDより新しいものに見え
るだろう。次に、バンク1内のすべてのTIDが割り当
てられたので、もう一度バンク0からTIDに再割当て
すべきであると想定する。この場合、バンク・ビットは
切り替えられ、リセットされる。前に言及した排他NO
R演算が実行される。したがって、前に34という値を
有していたバンク1からのTIDは、2という値を有す
るように見えるだろう。同様に、バンク0から新たに割
り当てられたTIDは、17というTIDを有するよう
に見えるはずであり、排他NOR演算が実行された後に
49という有効TIDを有することになる。排他NOR
演算が実行されなかった場合、バンク0からのTIDは
17であるように見えるはずであり、したがって、バン
ク1からのTIDより古いものに見えるだろう。これ
は、時間的に後で割り当てられたとしても34であるよ
うに見えるはずである。したがって、本発明によって実
施される排他NOR演算は、TIDの正しい順序付けが
行われ、それぞれの規模の比較がそれぞれの相対持続期
間を反映することを保証するものである。本発明の動作
については、以下に詳述する。
【0040】前述のように、本発明の一実施例ではTI
Dが2つのグループまたはバンクに分割される。さら
に、新しいバンクが前の割当てを備えてない場合に限
り、新しいバンクからTIDに割り当てることができ
る。すなわち、新しいバンク内の前のTIDがすべて解
放されるまで、第1のTIDは新しいバンクから割り当
てられない。しかし、新しいバンクがオープンされ、そ
のバンク内の第1のTIDがすでに割り当てられている
と、そのバンク内のすべてのTIDを割り当てることが
できる。さらに、本発明の一実施例内では、最も古い活
動TIDが最も新しい活動TIDから離れた少なくとも
1つのバンクのTIDである場合に限り、TIDが使用
可能であると、命令ディスパッチ動作が停止する。ま
た、所与のバンクからのすべてのTIDが解放される
と、新しいTIDからなるバンク全体が一度に使用可能
になる可能性がある。
【0041】図6は、TID生成回路224を詳細に示
している。動作中に初期TIDはレジスタ618に格納
される。レジスタ618は、このTIDをNext_TID(0:
5)信号として、IDU222の残りの部分と、TID生
成回路224の内部にある論理回路に供給する。このNe
xt_TID(0:5)値の使い方については、以下に詳述する。
しかし、その説明の前に、TID生成回路224内のNe
xt_TID(0:5)値の使い方について説明する。前述のよう
に、TID生成回路224は、バンク0から割り当てら
れたTIDがバンク1から割り当てられたTIDより古
いかまたは新しいものになる時期を示すバンク・ビット
を生成する。図6では、次のタイミング・サイクル用の
バンク・ビットにはTID_Bankというラベルが付いてい
る。
【0042】Next_TID_Bank信号を生成するため、占有
バンク決定回路602はBank 0 Occupied信号をAND
ゲート620に供給する。同様に、占有バンク決定回路
602はBank 1 Occupied信号をインバータ626に供
給する。Bank 1 Occupied信号は、反転され、ANDゲ
ート630に供給される。さらに、レジスタ622は、
バンク0から割り当てられたTIDがバンク1から割り
当てられたTIDより古いかまたは新しいものになる時
期を示すTID_Bank値を格納する。ただし、Next_TID_Ban
k信号はバンク・ビットの将来値を表すので、TID_Bank
はNext_TID_Bank信号とは異なることに留意されたい。B
ank 0 Occupied信号は、バンク0内のすべてのTIDが
解放され、もはやデータ処理システム内のどこでも使用
されていない時期を示す。同様に、Bank 1 Occupied信
号は、バンク1内のすべてのTIDが解放されている時
期を示す。TID_Bank信号とBank 0 Occupied信号とBank
1 Occupied信号とを論理的に結合することにより、Next
_TID_Bank信号が生成される。
【0043】Next_TID_Bank信号とTID_Bank信号の生成
に加え、TID生成回路224はHOLD_TID信号を生成す
る。HOLD_TID信号は、Next_TID値の下位5ビットをNO
Rゲート612に供給することによって生成される。こ
の構成を使用することにより、Next_TID値の下位5ビッ
トが論理0という値を有する場合に、NORゲート61
2の出力が論理1という値になる。Next_TID値がバンク
の第1のTID値、すなわち、0および32という値を
表すときに、NORゲート612の出力は論理1という
値を有する。そうではない場合に、NORゲート612
の出力は論理0という出力を有する。さらに、バンク・
ビットの値を決定するために、パイプライン式CPU1
10は、そこに入り、そこからTIDを割り当てるべき
バンクが明確であり、すべてのTIDとそれに関連する
命令がリタイヤされなければそのバンクを使用できない
ことを判定しなければならない。占有バンク決定回路6
02は、バンク0とバンク1が占有されている時期を決
定するための信号を生成する。Next_TID(0)は反転さ
れ、Bank 0 occupied信号と論理的にANDが取られ、
次のTID割当て動作中にバンク0にアクセスできるか
どうかを示す。同様に、Next_TID(0)値は、Bank 1 Occu
pied信号と論理的にANDが取られ、バンク1からTI
Dを割り当てることができるかどうかを判定する。した
がって、バンク0またはバンク1のうちの適切な方が占
有されておらず、新しいバンクからTIDを割り当てる
予定である場合、ANDゲート614によって実行され
る論理関数に応じて、HOLD_TID信号が変更される。
【0044】占有バンク決定回路602は図7に詳細に
示されている。占有バンク決定回路602は、パイプラ
イン式CPU110の動作中に割り当てられた各TID
に対応する複数の制御ビットを格納するTID割振りア
レイを含む。TID割振りアレイ702内の各TID項
目は、データ(D)ビットと、完了(C)ビットと、C
R論理(L)ビットを含む。D、C、Lビットのそれぞ
れは、ディスパッチすべき命令に応じて割当て時に設定
され、命令が適切な時刻点に達したときにリセットされ
る。Dビットは、その命令から結果が得られるかどうか
を示す。パイプライン式CPU110内の実行ユニット
から結果バス上に結果が得られると、そのビットはリセ
ットされるかまたはニゲートされる。対照的に、パイプ
ライン式CPU110内の他の構成要素に同報される結
果バス上に結果がまったく得られない場合、Dビットは
設定されない。さらに、Cビットは、命令が完了したか
どうかを示す。命令が完了するまでTIDを再使用でき
ないので、後で使用するためにTIDバンクを解放でき
るかどうかを判定するためにこのビットを分析しなけれ
ばならない。したがって、命令が完了すると、Cビット
がリセットされる。ただし、すべての割込み可能命令で
はディスパッチ時にCビットがアサートされていなけれ
ばならないことに留意されたい。さらに、Lビットは、
そのTIDが割り当てられる命令が条件レジスタを変更
するかどうかを示すために使用する。したがって、命令
が条件レジスタを変更することを要求された場合、Lビ
ットはディスパッチ時にアサートされる。第1のバンク
内に格納された32個のTIDのそれぞれについて、こ
の3ビットのうちのいずれか1ビットがアサートされた
場合、ORゲート706はBank 0 Occupied信号をアサ
ートする。同様に、バンク1内の32個のTIDのそれ
ぞれに関連する3ビットのうちのいずれかがアサートさ
れた場合、ORゲート704はBank 1 Occupied信号を
アサートする。
【0045】Bank 0 Occupied信号とBank 1 Occupied信
号はそれぞれ、図6のTID生成回路224の一部分内
の適切な論理ゲートに供給される。
【0046】したがって、バンク0から割り当てられた
TID値がバンク1から割り当てられたTID値より新
しいものであるかまたは古いものであるかを示すために
バンク・ビットを使用することにより、パイプラインC
PU110内に命令順序情報を保持することができる。
このような順次情報が保持されると、TID値はプログ
ラム順序を示すために有用なものになる。プログラム順
序が適切なものになる時期の例としては、このような命
令は推測実行されているので、命令を所与の順序で実行
すべき時期、またはパイプライン式CPU110のパイ
プラインから命令を消去すべき時期などがある。
【0047】図3は、このような消去動作を実行するP
EQ230の一部分を示している。プログラム順序決定
回路308(および312)は、命令を消去すべき時期
を判定するためにTIDを使用する。プログラム順序決
定回路308は、パイプライン式CPU110内の他の
要素がTIDを使用してプログラム順序を決定する方法
の一例にすぎない。このようなプログラム順序決定回路
は、通常、分岐が予測外れになるかまたは他の動作が推
測実行され、この時点でパイプライン式CPU110の
パイプラインから消去しなければならない場合に使用す
る。このような推測実行は、データ処理の分野では周知
のものなので、ここでは詳細に説明しない。
【0048】推測実行はデータ処理の分野で周知のもの
であるが、従来の実施態様では、完了バッファを使用し
てパイプライン式プロセッサ内の順序を維持している。
しかし、TIDを使用しており、本発明によりこのよう
なTIDの使用のために命令の順序付けを維持すること
ができるので、本発明では完了バッファを使用する必要
はない。割込み可能な命令の初期設定状態を追跡するた
めに、割込み処理回路236と呼ばれる割込みテーブル
が保持される。動作が推測的であって、実行すべきでは
ないとパイプライン式CPU110の実行ユニットが判
定した場合、その実行ユニットはFlush_V信号を生成
し、もはやその命令を実行すべきではなく、推測実行の
直前の状態にマシンの状態を戻す必要があることを示
す。Flush_V信号の生成に加え、実行すべきではない第
1の命令に対応するFlush_TIDはパイプライン式CPU
110の残りの部分に伝播される。ただし、消去された
命令にTIDが関連付けられると、それはFlush_TIDと
呼ばれることに留意されたい。Flush_TIDのビット0〜
5がパイプライン式CPU110の残りの部分それぞれ
に伝播されると、Flush_TID値の全ビットは、パイプラ
イン式CPU110の他の要素内で保留中の他の命令の
TIDと比較される。他の要素のそれぞれは、Flush_TI
Dをそこで保留中の命令のTIDと比較し、消去すべき
命令を決定する。というのは、そのような命令は、割込
みが行われ消去された命令が開始された後で開始される
からである。本発明で維持されるTID順序を使用する
ことにより、各要素は、どの命令が所与のTID値を上
回り、したがって、消去すべきかを判定する、単純な規
模比較動作を実行しなければならない。
【0049】たとえば、図3のPEQ230の一部分を
参照されたい。図3では、Flush_V信号とFlush_TID(0:
5)信号がIDU222によって供給される。Flush_V信
号とFlush_TID(0:5)信号はどちらもプログラム順序決定
回路308に供給される。さらに、プログラム順序決定
回路308に対応するPEQ230内の項目のTIDが
そこに供給される。さらに、TID生成回路224から
TID_Bank信号が供給され、どのバンクが最も新しいかを
示す。図3では、プログラム順序決定回路308はClea
r Entry 0信号を供給し、消去された命令に続いてそれ
が発行されるので、PEQ230内の対応する項目をク
リアすべき時期を示す。ただし、PEQ230内の各項
目は関連のプログラム順序決定回路を有することに留意
されたい。さらに、プログラム順序決定回路は、パイプ
ライン式CPU110のすべての領域で検出することが
できる。
【0050】図4は、PEQ230の項目0 302に
対応するプログラム順序決定回路308をより詳細に示
している。図4では、項目0 302内に格納されたT
ID値のビット1〜5が比較器402に供給される。同
様に、Flush_TID値のビット1〜5も比較器402に供
給される。両方のTID値が同じバンク内にある場合に
は、この2つの値を比較して、TID0値はFlush_TID値よ
り大きいかまたはそれと等しいかを判定する。TID0値が
Flush_TID値より大きい場合、これは、消去中の命令の
後でTID0値が割り当てられたことを示す。したがって、
比較器402はアサートした出力をANDゲート418
に供給する。さらに、Flush_V信号がANDゲート41
8およびANDゲート414に供給され、消去動作が実
行されることを保証する。その後、TID0のビット0が排
他NORゲート404に供給され、Flush_TID値のビッ
ト0が排他NORゲート408に供給される。TID0値と
Flush_TID値のそれぞれのビット0は、TID生成回路
224によって供給されるTID_Bank値と排他NORが取
られる。装置404〜416によって実行される論理回
路は、TID0値とFlush_TID値が同じバンク用のものであ
るかまたは異なるバンク用のものであるかを論理的に判
定する。装置418および420は、装置402、41
4、416の出力とともに、TID0値がFlush_TID値より
古いものであるかまたは新しいものである時期を論理的
に判定する。TID0値がFlush_TID値より新しいかまたは
それと同じである場合、Clear Entry信号がアサートさ
れ、PEQ230の項目0 302がクリアされる。た
だし、TID0に対応する命令より前にディスパッチされた
命令はパイプライン式プロセッサ110から消去されて
いるので、項目0 302がクリアされることに留意さ
れたい。したがって、すべての後続命令も消去しなけれ
ばならない。
【0051】前述のように、図5は、他のプログラム順
序決定動作に使用可能であり、消去動作に限定されない
ような、プログラム順序決定回路308の論理表現を示
している。図5では、C出力信号がアサートされた場
合、これは、Aに対応するTID値がBに対応するTI
D値より古くないことを示す。他の言い方をすると、C
がアサートされた場合、Aに対応するTIDがBに対応
するTIDと同じであるか、またはBに対応するTID
より新しいことになる。
【0052】ただし、このようなプログラム順序決定は
他の多くの例でも使用できることに留意されたい。たと
えば、パイプライン式プロセッサでは、前の命令がすべ
て完了しない限り、データをメモリに書き込むことがで
きない。したがって、ここに開示したプログラム順序決
定メカニズムを使用すると、ストア動作と最後の割込み
可能命令との相対持続期間を決定することができる。さ
らに、一部のパイプライン式プロセッサでは、ストアよ
り前にロードを実行することができる。しかし、追加情
報を保持すべき時期を判定するために、ロード命令とス
トア命令との相対持続期間を決定する必要性がある。さ
らに、本発明のプログラム順序決定メカニズムを使用す
ると、履歴バッファ内に格納された情報の持続期間を割
込み可能命令の持続期間と比較することができる。この
情報は、履歴バッファ情報を廃棄できる時期を決定する
ために使用することができる。本発明のメカニズムを実
施するために追加の実施態様も提供可能であることは、
当業者には周知のことであるはずである。
【0053】TIDの使い方および生成については、上
記の動作の説明にすでに記載されている。図8は、本発
明の方法の一実施態様の概要を示すものである。図8に
示す方法の第1のステップでは、TIDが割り当てられ
る。その後、ステップ804では、本発明の一実施例に
おいて最後のTID番号が31であったかまたは63で
あったかをTID生成回路224が判定する。最後のT
ID番号が31または63の一方ではなかった場合、ス
テップ806でTID生成回路224がNext_TID値を増
分して割り当てる。その後、ステップ808でNext_TID
値が最後のTIDとして格納される。その後、プログラ
ム・フローはステップ804に戻る。
【0054】しかし、最後のTID番号が31または6
3であった場合、次にステップ810が実行され、最後
のTID番号が31であったかどうかを判定する。最後
のTID番号が31であった場合、ステップ812が実
行され、バンク1が使用可能であるかどうかを判定す
る。バンク1が使用可能ではない場合、HOLD_TID信号が
アサートされる。しかし、バンク1が使用可能である場
合、ステップ816で最後のTIDが増分され、増分し
たバージョンが次のTIDとして割り当てられる。その
後、ステップ818で次のTIDが最後のTIDとして
格納される。その後、プログラム・フローはステップ8
04に戻る。
【0055】最後のTID番号が31ではなかった場
合、ステップ820が実行され、バンク0が使用可能で
あるかどうかを判定する。バンク0が使用可能ではない
場合、ステップ826でHOLD_TID信号がアサートされ、
プログラム・フローがステップ820に戻る。しかし、
バンク0が使用可能である場合、最後のTIDが増分さ
れ、Next_TIDとして割り当てられる。その後、ステップ
824で次のTIDが最後のTIDとして格納される。
その後、プログラム・フローはステップ804に戻る。
【0056】ここに記載した方法およびデータ処理シス
テムは、パイプライン・プロセッサが複数バンクのTI
D間の相対持続期間を決定できるようにするTIDのプ
ールを管理するための有効な方法を実施する。しかし、
ここに記載した本発明の実施例が一例として提供される
ことは、関連分野の当業者には周知のことであるはずで
ある。追加の実施態様も存在する。たとえば、プログラ
ム順序決定回路308とTID生成回路224を実施す
るために使用する論理回路は、同じ機能を実行する複数
の技法を使用して実施することができる。さらに、本発
明の各回路を実施するために使用する論理は、パイプラ
イン式CPU110の設計者に応じて、論理真または論
理偽にすることができる。さらに、ここに記載した動作
例ではTIDを使用してパイプライン・プロセッサ内の
順序を維持しているが、順序の維持を必要とするシステ
ムであれば本発明を実施できることは、関連分野の当業
者には周知のことであるはずである。したがって、デー
タベースからのステップまたはその他の順序維持機能を
必要とするトランザクションは本発明を使用することが
できる。さらに、TIDについては多くのコード化も存
在し、そのコード化は必ずしも2進表現に限定されない
ことに留意されたい。さらに、ここに記載した本発明の
実施例は1サイクルあたり1つのTIDの生成を実施す
るが、1サイクルあたり複数のTIDを可能にするため
に複数のTID割当てをパラレルに実行できることに留
意されたい。
【0057】
【0058】
【図面の簡単な説明】
【図1】本発明の一実施例によるデータ処理システムを
示すブロック図である。
【図2】本発明の一実施例によるパイプライン式データ
・プロセッサを示すブロック図である。
【図3】本発明の一実施例による実行前待ち行列の一部
を示すブロック図である。
【図4】本発明の一実施例によるプログラム順序決定回
路の一部を示すブロック図である。
【図5】本発明の一実施例によるプログラム順序決定回
路の論理的視点を示すブロック図である。
【図6】図2のターゲット識別回路の一部を示す図であ
る。
【図7】図6の占有バンク決定回路の一部を示す部分論
理図である。
【図8】本発明の一実施例を実施するための方法を示す
流れ図である。
【符号の説明】
100 データ処理システム 110 中央演算処理装置(CPU) 112 システム・バス 114 ランダム・アクセス・メモリ(「RAM」) 116 読取り専用メモリ(「ROM」) 118 入出力アダプタ 120 ディスク記憶装置 122 ユーザ・インタフェース・アダプタ 124 キーボード 126 マウス 128 スピーカ 132 トラック・ボール 134 通信アダプタ 136 ディスプレイ・アダプタ 138 ディスプレイ・モニタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブライアン・アール・ケーニヒスバーグ アメリカ合衆国78750 テキサス州オー スチン ブラント・リーフ・コーブ 7306 (72)発明者 フン・キュー・レー アメリカ合衆国78717 テキサス州オー スチン ドーマン・ドライブ 16310 (72)発明者 スチーブン・ダブリュー・ホワイト アメリカ合衆国78750 テキサス州オー スチン ウェスターカーク 9104 (56)参考文献 特開 平4−270421(JP,A) 特開 平6−236274(JP,A) 特開 平9−6611(JP,A) 久我守弘、外4名,SIMP(単一命 令流/多重パイプライン)方式に基づく 『新風』プロセッサの低レベル並列処理 アルゴリズム,情報処理学会論文誌,日 本,1989年12月15日,Vol.30,N o.12,p.1603−1611 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】第1のバンクまたは第2のバンクに含まれ
    るターゲット識別子を実行すべき命令に連続的に割り当
    てるための割り当て手段を含み、 前記割り当て手段は、 割り当てたターゲット識別子を増分して次のターゲット
    識別子を得るための増分手段と、 前記割り当てたターゲット識別子が当該バンク内の最後
    の識別子である場合に他のバンクが使用可能かどうかを
    判断するための手段と、 バンクが切り替わるときにいずれのバンクが新しいター
    ゲット識別子を供給するかを示すバンク・ビットを設定
    するための手段とを含み、 前記他のバンクが使用可能でなければ前記他のバンクが
    使用可能になるまで待ち、前記他のバンクが使用可能に
    なると、前記次のターゲット識別子を割り当てる、 データ処理システム。
  2. 【請求項2】前記バンク・ビットを設定するための手段
    は、前記第1のバンクまたは前記第2のバンクに含まれ
    るターゲット識別子が再割り当てされるときに前記バン
    ク・ビットの状態を切り替える、請求項1に記載のデー
    タ処理システム。
  3. 【請求項3】前記バンク・ビットの状態に基づいて、2
    つのターゲット識別子のうちのいずれが新しいかを決定
    するための手段を更に含む、請求項1または2に記載の
    データ処理システム。
  4. 【請求項4】第1のバンクまたは第2のバンクに含まれ
    るターゲット識別子を実行すべき命令に連続的に割り当
    てるステップと、 割り当てたターゲット識別子が当該バンク内の最後の識
    別子であるかどうかを判断するステップと、 前記最後の識別子でなければ、前記割り当てたターゲッ
    ト識別子を増分して次のターゲット識別子を得るステッ
    プと、 前記最後の識別子であれば、他のバンクが使用可能かど
    うかを判断するステップと、 前記他のバンクが使用可能でなければ、前記他のバンク
    が使用可能になるまで待つステップと、 前記他のバンクが使用可能であれば、前記最後の識別子
    を増分して、前記他のバンクに含まれる次のターゲット
    識別子を得るステップと、 前記他のバンクがもう一方のバンクよりも新しいターゲ
    ット識別子を供給することを示すバンク・ビットを設定
    するステップと、 を含む、データ処理システムを操作するための方法。
  5. 【請求項5】前記バンク・ビットを設定するステップ
    は、前記第1のバンクまたは前記第2のバンクに含まれ
    るターゲット識別子が再割り当てされるときに前記バン
    ク・ビットの状態を切り替える、請求項4に記載の方
    法。
  6. 【請求項6】前記バンク・ビットの状態に基づいて、2
    つのターゲット識別子のうちのいずれが新しいかを決定
    するためのステップを更に含む、請求項4または5に記
    載の方法。
  7. 【請求項7】コンピュータに、請求項4乃至6のいずれ
    かに記載の方法を実行させるためのプログラムを記憶し
    たプログラム記憶媒体。
JP07380398A 1997-03-31 1998-03-23 命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法 Expired - Fee Related JP3347052B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/829,592 US5805849A (en) 1997-03-31 1997-03-31 Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US08/829592 1997-03-31

Publications (2)

Publication Number Publication Date
JPH10283179A JPH10283179A (ja) 1998-10-23
JP3347052B2 true JP3347052B2 (ja) 2002-11-20

Family

ID=25254949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07380398A Expired - Fee Related JP3347052B2 (ja) 1997-03-31 1998-03-23 命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法

Country Status (2)

Country Link
US (1) US5805849A (ja)
JP (1) JP3347052B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463416B1 (en) * 1996-07-15 2002-10-08 Intelli-Check, Inc. Authentication system for identification documents
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US6523741B1 (en) * 1997-09-05 2003-02-25 Dimaria Peter C. Apparatus for controlling the rental and sale of age-controlled merchandise and for controlling access to age-controlled services
US6021486A (en) * 1997-09-30 2000-02-01 Intel Corporation Continued processing of out-of-order non-architectual operations upon exceptions until flushing by architectual operations exceptions to avoid resume deadlock
US6122728A (en) * 1998-02-02 2000-09-19 Compaq Computer Corporation Technique for ordering internal processor register accesses
US6178497B1 (en) * 1998-08-14 2001-01-23 International Business Machines Corporation System and method for determining the relative age of instructions in a processor
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
JP3473687B2 (ja) * 2000-03-29 2003-12-08 日本電気株式会社 分散パイプラインスケジューリング方法および方式
US7708189B1 (en) 2002-05-17 2010-05-04 Cipriano Joseph J Identification verification system and method
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US7860318B2 (en) 2004-11-09 2010-12-28 Intelli-Check, Inc System and method for comparing documents
US7792522B1 (en) 2006-01-13 2010-09-07 Positive Access Corporation Software key control for mobile devices
US9058180B2 (en) * 2009-06-29 2015-06-16 Oracle America, Inc. Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions
US8429386B2 (en) * 2009-06-30 2013-04-23 Oracle America, Inc. Dynamic tag allocation in a multithreaded out-of-order processor
US9286075B2 (en) * 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
US10007521B1 (en) * 2012-12-20 2018-06-26 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
JP6030987B2 (ja) * 2013-04-02 2016-11-24 ルネサスエレクトロニクス株式会社 メモリ制御回路
US10373409B2 (en) 2014-10-31 2019-08-06 Intellicheck, Inc. Identification scan in compliance with jurisdictional or other rules
US11182167B2 (en) * 2019-03-15 2021-11-23 International Business Machines Corporation Method to determine the oldest instruction in an instruction queue of a processor with multiple instruction threads

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870614A (en) * 1984-08-02 1989-09-26 Quatse Jesse T Programmable controller ("PC") with co-processing architecture
US4965721A (en) * 1987-03-31 1990-10-23 Bull Hn Information Systems Inc. Firmware state apparatus for controlling sequencing of processing including test operation in multiple data lines of communication
JP2594979B2 (ja) * 1987-10-23 1997-03-26 株式会社日立製作所 マルチプロセツサシステム
JP3063006B2 (ja) * 1989-02-08 2000-07-12 インテル・コーポレーション マイクロプログラムされるコンピュータ装置及びマイクロコードシーケンスメモリをアドレツシングする方法
US5057997A (en) * 1989-02-13 1991-10-15 International Business Machines Corp. Interruption systems for externally changing a context of program execution of a programmed processor
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
US5301312A (en) * 1991-08-21 1994-04-05 International Business Machines Corporation Method and system for utilizing benign fault occurrence to measure interrupt-blocking times
US5404558A (en) * 1992-02-17 1995-04-04 Sharp Kabushiki Kaisha Data driven type information processor having a plurality of memory banks
US5361356A (en) * 1992-03-06 1994-11-01 International Business Machines Corporation Storage isolation with subspace-group facility
US5469553A (en) * 1992-04-16 1995-11-21 Quantum Corporation Event driven power reducing software state machine
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
DE59401478D1 (de) * 1993-03-15 1997-02-13 Siemens Ag Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5497317A (en) * 1993-12-28 1996-03-05 Thomson Trading Services, Inc. Device and method for improving the speed and reliability of security trade settlements
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
US5546599A (en) * 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
久我守弘、外4名,SIMP(単一命令流/多重パイプライン)方式に基づく『新風』プロセッサの低レベル並列処理アルゴリズム,情報処理学会論文誌,日本,1989年12月15日,Vol.30,No.12,p.1603−1611

Also Published As

Publication number Publication date
US5805849A (en) 1998-09-08
JPH10283179A (ja) 1998-10-23

Similar Documents

Publication Publication Date Title
JP3347052B2 (ja) 命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法
US6728866B1 (en) Partitioned issue queue and allocation strategy
US6336183B1 (en) System and method for executing store instructions
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5867684A (en) Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction
US6134646A (en) System and method for executing and completing store instructions
JPH10312282A (ja) 命令完了を改良するための方法および装置
JPH0784965A (ja) マルチプロセッサ・コンピュータ・システムのプロセッサ順序付け方法および装置
US5537560A (en) Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US6393550B1 (en) Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
JP3155519B2 (ja) スーパスカラ・プロセッサでストア命令を処理する方法及び装置
US6061785A (en) Data processing system having an apparatus for out-of-order register operations and method therefor
JPH10154073A (ja) データ依存性を管理する装置及び方法
US20030182537A1 (en) Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6298435B1 (en) Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor
US7143267B2 (en) Partitioning prefetch registers to prevent at least in part inconsistent prefetch information from being stored in a prefetch register of a multithreading processor
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US5996085A (en) Concurrent execution of machine context synchronization operations and non-interruptible instructions
US6128722A (en) Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor
US5875326A (en) Data processing system and method for completing out-of-order instructions
US7302553B2 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
JPH08234981A (ja) 非プログラム順序実行スーパスカラ・マルチプロセッサにおける効率的確定一貫性サポート機構
US6237076B1 (en) Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US20100125719A1 (en) Instruction Target History Based Register Address Indexing

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees