JPH11510291A - スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ - Google Patents

スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ

Info

Publication number
JPH11510291A
JPH11510291A JP9514372A JP51437297A JPH11510291A JP H11510291 A JPH11510291 A JP H11510291A JP 9514372 A JP9514372 A JP 9514372A JP 51437297 A JP51437297 A JP 51437297A JP H11510291 A JPH11510291 A JP H11510291A
Authority
JP
Japan
Prior art keywords
scheduler
operand
entry
operations
execution
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
JP9514372A
Other languages
English (en)
Other versions
JP3720371B2 (ja
Inventor
フェイバー、ジョン・ジー
ベン−ミーヤ、エイモス
ステイプルトン、ウォレン・ジー
Original Assignee
アドバンスト・マイクロ・デバイシズ・インコーポレイテッド
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
Priority claimed from US08/649,243 external-priority patent/US5884059A/en
Application filed by アドバンスト・マイクロ・デバイシズ・インコーポレイテッド filed Critical アドバンスト・マイクロ・デバイシズ・インコーポレイテッド
Publication of JPH11510291A publication Critical patent/JPH11510291A/ja
Application granted granted Critical
Publication of JP3720371B2 publication Critical patent/JP3720371B2/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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Abstract

(57)【要約】 スーパースケーラープロセッサ200は、out-of-order実行のためのオペレーションを選択するスケジューラ280を有する。スケジューラ280は、オペレーションに対応するエントリー240に区画された記憶要素及び制御要素を有する。スケジューラ280は、並列パイプライン実行のために実行ユニット251〜257にオペレーションを発行し、必要に応じて実行のためにオペランドを提供し、結果がコミットされるまでオペレーションの結果を維持する再配列バッファとして機能する。スケジューラ280は、実行ユニット251〜257に緊密に結合され、実行ユニット251〜257の入出力に於けるパイプラインボトルネック及びホールドアップを最小化するような広い並列パスを提供する。スケジューラ280は、あるオペレーションの実行のために必要な全てのオペランドが利用可能であるときを判定するためにエントリーをモニタし、必要なオペランドを実行ユニット251〜257に提供する。オペランドはレジスタファイル290、またはスケジューラエントリー、または実行ユニット251〜257から得ることができる。スキャンチェーン530、532、534、536、及び538は、エントリーを互いにリンクし、実行のためのオペレーション及びオペランドを実行する。

Description

【発明の詳細な説明】 スーパースケーラープロセッサにおけるOUT-OF-ORDER実行 のための統一化された機能オペレーションスケジューラ技術分野 本発明はデジタルプロセッサシステムに関し、特にプロセッサの性能を最大化 するようなオペレーションの実行順序を制御するための方法および回路に関する 。背景技術の説明 通常のコンピュータプログラムは、コンパイルまたはアセンブルされたときに 、プロセッサが実行する一連の機械語命令またはオペレーションを発生する命令 のリストからなる。オペレーションは、コンピュータプログラムのロジックによ り定められたプログラムの順序を有し、一般にプログラムの順序を以て逐次的に 実行されるものとされている。スケーラープロセッサは、プログラムの順序に基 づいてオペレーションを実行し、その順序は、1つのオペレーションを、次のオ ペレーションを行う前に実行するように定められている。スーパースケーラープ ロセッサは、複数のオペレーションを並行に実行し完了するように並列に作動す る複数の実行ユニットを備えている。スーパースケーラープロセッサは、1クロ ックサイクルについて複数のオペレーションを実行できるのに対し、スケーラー プロセッサは理想的には1クロックあたり1つのオペレーションを完了できるの みであることから、クロックスピードが同一であればスーパースケーラープロセ ッサはスケーラープロセッサよりも高速に作動することができる。 スーパースケーラープロセッサは、一般にオペレーションの実行をスケジュー ルする働きを有し、従ってオペレーション動作は並列に実行され、一般のプログ ラムの順序に従わないでオペレーションを完了するこ とができる。コンピュータプログラムのロジックにおいては、1つのオペレーシ ョンが他のオペレーションの結果に依存する場合があり、プログラムにおける第 1のオペレーションが第2のオペレーションよりも先に実行されることを要する ことから、out-of-order実行を行うことには、或る困難が伴う。例えば、あるオ ペレーションが実行されるべきか否かは分岐命令の結果に依存する場合がある。 プロセッサは、分岐オペレーションを評価する前に分岐オペレーションの結果を 予測し、その予測に基づいてオペレーションを実行する場合がしばしばある。分 岐予測が不正確であって誤ったオペレーションが行われる場合があることから、 このような実行は投機的とならざるを得ない。更に、多くのコンピュータは、オ ペレーションによってエラー、割り込みまたはトラップを発生する前もしくは後 におけるシステムの状態を知ることを要するが、オペレーションがout-of-order で行われる場合には、プログラムにおけるエラーに続いて行われるべきオペレー ションが、エラーが発生する以前に実行される場合があり得る。このように、プ ロセッサは実行されるべきでなかったオペレーションをUNDOしなければなら ず、エラーの後のシステムの状態を再構成できなければならない。 スーパースケーラー構造は、スケジュール動作のためのやや矛盾したいくつも の目的を達成する試みである。1つの目的は、プログラムの実行のために実際に 必要となるオペレーションを最大限に並列実行するように効率的なスケジューリ ングを行うことである。もう1つの目的は、スケジュール用の回路をあまり複雑 にしないことである。なぜなら、構造を複雑化すると、エラーに対する耐性の高 い設計を行うことが困難となり、回路のサイズおよびコストを増大させるからで ある。さらにもう1つの目的は、プロセッサが高いクロック速度をもって作動し 得るよう に迅速なスケジューリングを行うことである。このような目的を達成し得るスケ ジュール用の回路が望まれている。発明の開示 本発明によれば、out-of-order実行エンジンは、並列動作可能な一連の実行ユ ニットと、実行ユニットに対してオペレーション命令を発するスケジューラとを 有する。スケジューラは、実行されるべきオペレーションに対応するエントリー を有している。各エントリーは、必要に応じて正しい実行ユニットに差し向ける ように、関連するオペレーション及びロジックの実行のために必要な情報を記憶 するための記憶領域を有する。オペレーション命令は、第1にその形式、および その形式のオペレーションのための実行ユニットの利用可能性に基づき送り出さ れ、第2に逐次的なプログラムの順序に基づいて送り出される。従って、異なる 形式のオペレーションが、通常のプログラムの順序に従わないで実行される場合 がしばしば生じる。ある形式のオペレーションのために利用可能な実行ユニット が複数設けられている場合があり、1つのオペレーション動作を、別の実行ユニ ットが同一形式の次のオペレーションを完了する間に実行パイプライン内に保持 されることがあることから、同一形式の複数のオペレーションもout-of-order実 行することができる。さらに、実行パイプラインを塞ぐようなオペレーションを 、パイプラインの初期の段階で破棄することができることから、単一の実行ユニ ットのための複数のオペレーションもプログラムの順序に従うことなく実行する ことができる。 スケジューラにおけるエントリーはオペレーションの形式によって特殊化され ず、1つの実行ユニットが停止状態にあるときに、ブロックされるような特別の ステーションあるいはキューを有さない。アボート可能なオペレーションの実行 の後、オペレーションの結果は関連するスケ ジューラのエントリーおよびまたは記憶キューに保持される。スケジューラは、 スケジューラに結合されたオペレーションコミットユニットが、問題がなく、関 連するオペレーションに変更する分岐の予測に誤りがなかったことを判定するま で結果を保持する。オペレーションコミットユニットが、最も古く実行されたオ ペレーションの結果が、プログラムの逐次的な実行によって発生すると判定した 場合、その結果は、レジスタファイル、ステイタスレジスタまたはメモリに書き 込むことにより永久化され、そのオペレーションはスケジューラから退避され、 除去される。オペレーションコミットユニットは、結果がプログラムの逐次的な 実行によって発生しないと判定した場合には、オペレーション動作は永久的な変 化を伴うことなく退避される。 スケジュールの機能に加えて、スケジューラは非明示的なレジスタのリネーム を伴うリオーダーバッファの機能も含んでいる。スケジューラにおけるエントリ ーの物理的な位置がプログラムの順序を表し、各エントリーに記憶された結果の 値がプログラム順序における対応する点のレジスタおよび状態値を提供すること から、オペレーション結果のプログラム順序を示すタグは必要でない。これによ り、様々な実行ステーション間におけるタグ情報の保持および移動に関わる複雑 さを解消することができる。スケジューラ内の適切な物理的方向付けによって方 向付けられたスキャンチェーンが、次のオペレーションのための所望のレジスタ オペランドに対して影響を与える先行するオペレーションの位置を特定すること から、オペレーション実行中の実際のレジスタリネーミングは必要とされない。 本発明のある実施例においては、スケジューラは、実行予定のオペレーション に関連した複数列のエントリーを有する。各エントリーは、単一のオペレーショ ンに対応し、各エントリーの列は、例えば4つのオペ レーションなど複数のオペレーションに対応する。スケジューラを複数の列に分 類することは、スケジューラの構造を単純化するが、スケジュールおよびオペレ ーションの実行は、オペレーションを複数の列にグループ分けするのとは独立し て行われる。スケジューラは、新たなオペレーションのグループに関連する情報 がスケジューラの最上列にロードされ、より古いオペレーションが退避されるに 伴い、スケジューラの最下列に向けてグループとしてシフトダウンされる点にお いてある種のシフトレジスタとして機能する。従って、スケジューラにおけるオ ペレーションの位置はその古さを表す。プログラム順序で後の方に位置する新た なオペレーションはスケジューラの上の方にあり、プログラム順序の初期に現れ る古いオペレーションはスケジューラの下の方に位置する。 多くのオペレーションはスケジューラの上列にロードされたときには直ちに実 行可能な状態にあるが、スケジューラの任意の点から実行ユニットに送り込まれ ることができる。オペレーションのエントリーにおける状態フィールドは、オペ レーションが発行されたか、実行パイプラインの特定の位置にあるか、あるいは 完了したかを示す。オペレーションの状態は、スケジューラにおけるオペレーシ ョンの位置からは独立しているが、オペレーションが長い時間スケジューラにあ れば、それだけオペレーションが発行され完了する可能性が高まる。ある列にお けるオペレーションは同時に退避され、従って複数のオペレーションを各クロッ クサイクル中に完了することができる。従って、各クロックサイクルについて、 複数のオペレーションをスケジューラにロードし、複数のオペレーションをスケ ジューラから退避させることができる。 条件付き分岐や状態フラッグに依存するレジスタオペレーション等のようなオ ペレーションは、オペレーションがスケジューラの特定の列に達したときに実行 される。これは、他の列におけるこれらのオペレーシ ョンの実行をサポートするための一般的なハードウェアを不要にし、スケジュー ラにおけるハードウェアを単純化し、削減し、高速化する。実行するべき必要な オペランドが利用可能でありそうな場所がどこであるかに応じて、そのようなオ ペレーションを実行するための列を選択することによりスケジュールに伴う遅れ を最小化することができる。例えば、状態フラッグに依存するオペレーションは 、状態フラッグに依存するオペレーションを完了するために必要な状態フラッグ の値の変更を古いオペレーションがすでに完了していそうな、スケジューラにお ける低い位置において取り扱われる。スケジューラにおける高い位置で状態フラ ッグに依存するオペレーションを実行可能にするような回路を追加しても、実行 速度をそれほど改善することができない。なぜなら、状態フラッグに依存するオ ペレーションがスケジューラの上方の列にあるときには、必要な状態フラッグが 利用可能でない可能性が高いからである。 スケジューラは、実行ユニットおよびオペレーションコミットユニットに強く 結合されており、複数実行パイプラインにおけるオペレーションに関する情報を 維持する。スケジューラは、オペレーションを発行し、必要なときに、実行ユニ ットに向けてオペレーション情報を提供し、結果がコミットしたりあるいはアボ ートされるまで、実行されたオペレーション結果を保持し、他のオペレーション を実行するために必要な結果を送り出す。特に、各スケジューラのエントリーは 、関連するオペレーションからのレジスタおよび情報結果を保持する。このよう にスケジューラは非明示的にレジスタリネーミングを実行し、格別明示的なリネ ーミングすなわち論理的レジスタの物理レジスタへのマッピングを伴わない。従 って、スケジューラは、オペレーションの実行のスケジュールを行う単一の統一 的な構造を提供し、実行中に必要となるオペランド値を 提供し、非明示的なレジスタのリネーミングを伴うリオーダーバッファとして機 能する。図面の簡単な説明 図1は、本発明の実施例に基づくプロセッサを含むコンピュータシステムのブ ロック図である。 図2は、本発明の実施例に基づくプロセッサを示す。 図3は、本発明の実施例に基づくout-of-orderエンジンにより実行されるRI SC命令のフォーマットの例を示す。 図4A〜4Dは、本発明の実施例に基づくRISCオペレーションの4つの形 式のパイプラインを示す。 図5は、本発明の実施例に基づくスケジューラを示す。 図6は、本発明の実施例に基づくスケジューラリザバーの一部を示す回路図で ある。 図7は、図5のスケジューラに記憶されたオペレーションおよびOpクワッド のためのフィールドのフォーマットの例を示す。 図8Aおよび8Bは、高速選択のためのルックアヘッドを利用したスキャンチ ェーンを示す。 図9A〜9Cは、第2の実行ユニットのためのオペレーションを高速に選択す るルックアヘッドを用いたスキャンチェーンを示す。 図10は、図5のスケジューラと実行ユニットとの間のインターフェィスのブ ロック図である。 図11A〜11Cは、本発明の実施例としての処理システムのブロック図であ る。 同様のまたは類似の部分を示すために異なる図にわたって同一の符号を付した 。好適実施例の説明 本発明を次のようなアウトラインに従って詳しく説明する。I.概要 II .スケジューラ II .A スケジューラローディング II A.1 スタティックエントリーフィールド II .A.2 ダイナミックエントリフィルード II .A.3 Opクワッドフィールド II .B ロード/シフト制御 III .オペレーション実行 III .A 発行ステージ III .A.1 発行選択フェーズ III .A.1.a 発行選択スキャンチェーン III .A.1.b RUY2のための発行選択スキャンチェーン III .A.2 オペランド情報ブロードキャストフェイズ III .B.オペランドフォワードステージ III .B.1 オペランド選択フェーズ III .B.2 オペランド転送フェーズ III .B.3 ディスプレースメントフォワーディング III.B.4 イミーディアット値フォワーディング III.C データオペランドのフェッチング III.D レジスタオペレーションバンピング III.E ロード/ストアオーダリング III.F アボートハンドリング IV.A 外部ロジックによって用いられるスケジューラ情報 IV.B グローバル制御ファンクション V.状態フラグ V.A.状態フラグフェッチ V.B cc−Dep RegOpsへの状態フォワーディング V.分岐予測分解 VI.非アボート可能なオペレーションの同期化 VII.自己変更コードのハンドリング VIII.オペレーションコミットメントユニット VIII.A コミットメント VIII.A.1 レジスタコミットメント VIII.A.2 状態フラグコミットメント VIII.A.3 .メモリ書き込みコミットメント VIII.B Opクワッドリタイア VIII.C.1 ロードオペレーションフォルトハンドリング VIII.C.2 フォルト及びLDDHA/LDAHAオペレーシ ョンハンドリング VIII.C.3 ターゲットリミットバイオレーションハンドリング VIII.C.4 誤って予測された分岐ハンドリング VIII.D アボートサイクルの生成 IX. プロセシングシステム X. 結論 アペンディクスA:RISC86(登録商標)文法 アペンディクスB:疑似RTL記述 I.概要 本発明の実施例に基づくプロセッサは、パソコンを含む様々な用途に応用可能 である。図1は、本発明の実施例に基づくプロセッサ200を 含むコンピュータマザーボードのブロック図である。プロセッサ200は、複雑 な命令セットを実行することができ、0.35μm設計に基づく5金属層CMO S技術などの公知の集積回路プロセスによって製造し得るモノリシック集積回路 からなる。プロセッサ200に接続されたチップセットは、外部レベル2キャッ シュ125、メインメモリ122に対するインターフェイスを提供するメモリコ ントローラ121、PCIバス155やISAバス165などのローカルバスに 対するインターフェイスを提供するバスコントローラ150および160を備え ている。 図2は、プロセッサ200の実施例を示すブロック図である。プロセッサ20 0は、メインメモリ122およびローカルバス151および161上の種々のデ バイスを含むコンピュータシステムのためのアドレス空間に対するアクセスを提 供するシステムインターフェイス205を備えている。本実施例においては、シ ステムインターフェイス205は変更された、排他的な、共有された、および無 効(MESI)状態およびコンフィグラブルバススケーリングをサポートするよ うなマルチプロセッサキャッシュコヒーレンシーを備えた64ビットシステムバ スを備えている。 集積化されたレベル2キャッシュコントロールロジック210は、レベル2キ ャッシュ125を構成する外部SRAMに対してプライベートバスに対するイン ターフェイスを提供する。システムインターフェイス210とは別にレベル2キ ャッシュインターフェイスを提供することにより、レベル2キャッシュのスピー ドをシステムバス/チップセットから分離させ、より高速のキャッシュを可能に し、システムバスおよびキャッシュバスの利用率を低下させ、各バスに対する帯 域幅を増大させる。レベル2キャッシュコントロールロジック210はさらに、 マルチプルクロックスケーリングおよび一般的に市販されているバーストパイプ ラ インシンクロナスSRAMにおける2MBものデータおよびタグ記憶のためのコ ンフィグラブルキャッシュサイズに対応している。レベル2キャッシュは、ライ トバックポリシーおよび32バイトラインサイズを用いる。 図1に示された構造とは異なる別の構造として、プロセッサ200はシステム およびキャッシュアクセスのための単一のバスを有するものとすることができる 。このバスは、例えばベンティウムなどのプロセッサのためのチップセットに対 してピン対ピンの適合性を有するものであってよい。 レベル1命令キャッシュ230およびレベル1データキャッシュ220はプロ セッサ200の内部に設けられたもので、レベル1キャッシュコントロールロジ ック215を介してレベル2キャッシュおよびシステムバスに接続されている。 本実施例においては、命令キャッシュ230は16KBの命令および追加のプリ デコード情報のためのヨークを含む双方向セット関連キャッシュをなしている。 より高速のオペレーションを可能にし、アクセスコンフリクトを回避するために 、データキャッシュ220は1サイクルあたり1つのリードおよび1つのライト を可能にするようなデュアルポートメモリのパイプラインバンクを用いる。 メインメモリ122からの命令は、命令キャッシュ230にロードされる。本 実施例においては、メインメモリ122における命令が、PC業界規格x86命 令セットなどの複雑な命令セットからのCISC命令からなる。CISC命令は 、マクロ命令と呼ばれる場合がある。1サイクルに16バイトまでのCISC命 令がフェッチされる。命令キャッシュ230をロードする間に、マクロ命令境界 の高速識別のために命令バイトがプリデコードされる。プリデコードは、命令バ イトが命令におけ る最初のバイトと仮定し、次の命令の開始のバイトに対するオフセットを示すた めに各バイトにコードビットを付加する。 命令デコーダ240は無条件分岐命令を実行し、条件付き分岐命令の分岐予測 を行い、命令キャッシュ230からフェッチされたCISC命令を実行エンジン 250のためのオペレーションに変換する。実行エンジン250は、スーパース ケーラー、out-of-order、RISC構造を実現する。命令キャッシュ230から の単一のCISC命令は、実行エンジン250のために0(無条件分岐命令)、 1または複数のオペレーションにデコードされる。サイクル毎に複数のCISC 命令をデコードし、実行エンジン250により実行されるオペレーションを示す RISC命令のセットを生成する。命令デコーダ240は、最も一般的なCIS C命令のためのハードウェアデコーダ(MacDec)242と、一般的でなく、より 複雑なCISC命令のためのベクトルデコーダ244を含む。ベクトルデコーダ 244は、ここでEmcodeと呼ばれる場合のあるRISC命令シーケンスを含むEm codeROM246と呼ばれるROM246を有する。ベクトルデコーダ244は 、レコードされているCISC命令に基づきEmcodeROM246におけるアドレ スを選び、必要に応じてEmcodeROM246から読み出されたRISC命令の一 部を置換もしくは変更し、CISC命令を対応するRISC命令に変換する。 図3およびアペンディックスAは、x86CISC命令の実行のために最適化 されRISC86命令セットと呼ばれるRISC命令のフォーマットの例を示す 。各RISC86命令は、レジスタオペレーション(RegOp)ロードストアオペ レーション(LdStOp)または特別オペレーション(SpecOp)からなる。RegOpは 、RegOpが条件コードccを変更することを示すために、すなわち条件コードに依 存することを示すために、ccRegOpと呼ばれることがある。LdStOpはさらにロー ドオペレーション (LdOp)およびストアオペレーション(SpecOp)に分類される。ロードイミジア ット値オペレーションLIMMOpは、他のLdOpとは異なるフォーマットを有するLdOp の一形式であって、次のLdStOpまたはRegOpのための大きなイミジアット値を提 供する。SpecOpは、異なるフォーマットを有する分岐オペレーションBrOpsおよ び浮動小数点オペレーション(SpecOp)を含む。図3およびアペンディックスA は、SpecOpの一例としてBrOpsのみを示している。条件付き分岐オペレーション (BRCOND)は、条件コード(図3におけるフィールド(cc))に依存する BrOpsの一形式である。 本実施例においては、命令デコーダ240はx86マクロ命令をRISC86 命令またはオペレーションに変換する。MP240には一般的なマクロ命令を一 連の短いRISC86命令に変換する。例えば、x86マクロ命令、INCreg、PU SHreg及びJcctgtは、RegOp、StOp及びBRCONDに変換される。ADDreg,memマクロ命 令は、LdOp及びRegOpの順に変換され、ADDmem,regマクロ命令はLdOp、RegOp及 びStOpの順に変換され、LEAVEマクロ命令は、RegOp、LdOp及びRegOpの順にに変 換される。 ある実施例においては、命令デコーダ240は、1サイクルあたり2つまでの x86マクロ命令をデコードし、1サイクル毎に実行エンジン250にロードし 得る4つのRISC86命令のセットを生成する。4つの命令のセットを完成す るのに必要であればNo-op命令が用いられる。それぞれ2つ以下のオペレーショ ンを実行する命令として2つの連続する命令が特定された場合には、1サイクル 毎に2つのオペレーションがデコードされる。別の実施例においては、3つまた はそれ以上のマクロ命令を1サイクル毎にデコードして4つまたはそれ以上のオ ペレーションのセットを生成する。一般的でないマクロ命令をデコードしたり、 R ISC86オペレーションの長い列をデコードするためにベクトルデコーダ24 4は用いられる。このような列は4つのオペレーションよりも長いものであって よく、実行エンジン250にロードされるために1よりも多いクロックサイクル を必要とする場合がある。 無条件分岐マクロ命令については、命令デコーダ240は、デコードのために フェッチされた次のマクロ命令を決定し、何らオペレーションを発生しない。条 件付き分岐マクロ命令については、デコーダ240は、条件付き分岐命令に続く プログラムカウンタを予測し、予測が正しいか否かを判定するために後に評価さ れる(BRCOND)を発生する分岐予測ロジック248を有する。条件付き分 岐(BRCOND)はまた、デコードされているマクロ命令が、条件付き分岐で ない場合にEmcodeROM246からのRISC命令の列においても発生する。Em codeROM246は、デコードされたマクロ命令のためのRISC命令列を発生 するときに、ベクトルデコーダ244が用いる、このようなBRCONDそれぞ れについて行う予測を含む。Emcode246からのBRCONDのための予測は、 条件付き分岐マクロ命令から直接生成されたBRCONDと同様に評価される。 実行エンジン250は、一般的に並列オペレーション可能な7つの実行ユニッ ト251〜257と、実行のためのオペレーションを発行するスケジューラ28 0と、オペレーション結果をコミットするためにスケジューラ280に結合され たオペレーションコミットユニット(OCU)260とを有する。ロードユニッ ト251及びストアユニット252はそれぞれLdOpおよびSpecOpを実行する。ス トアキュー270はストアユニット252によって、SpecOpの投機実行からのデ ータを一時的に記憶する。ストアキュー270からのデータは、SpecOpの結果が 、以下に説明するようにコミットしたときに、データキャッシュ220に書き込 まれる。ここではRUXおよびRUYと呼ばれるレジスタユニット253および 254は、名目上レジスタファイル290をアクセスするRegOpを実行する。浮 動小数点ユニット255およびマルチメディアユニット256は、それぞれ、浮 動小数点オペレーションFpOpsおよびマルチメディアアプリケーションのオペレ ーションを行うためのオプションとして設けることのできるユニットである。実 施例においては、浮動小数点ユニット255およびマルチメディアユニット25 6が省略されている。 スケジューラ280は実行ユニット251〜257に対してオペレーションを 発行し、実行中にそれぞれの実行ユニットにより必要とされる情報を送り出し、 オペレーションが退避する際にオペレーション情報を削除する。スケジューラ2 80は、それぞれオペレーションに関連する記憶およびロジックを含む複数のエ ントリーに区画されている。エントリーのストア領域における情報は、実行され るべき、実行中のあるいはすでに実行されたオペレーションを記述するものから なる。実施例においては、4つのエントリーのセットがグループに分離され、こ れらのエントリーは物理的には列をなしていないが、ここでは列をなすものと見 なされる。1列の4つのオペレーションに関連する情報は、Opクワッドと呼ば れる。列は、個々のオペレーションに関連する情報およびロジックに加えて、グ ループとしてのOpクワッドに関連するストアフィールドおよびロジックを含む 。 スケジューラ280は多くの意味でシフトレジスタのような働きを行う。実施 例においては、スケジューラ280は6列の深さを有する。デコーダ240はク ロックサイクル毎にスケジューラ280の最上列に1つの新たなOpクワッドを ロードすることができる。Opクワッドは、上列から下の列に向けてシフトダウ ンし、最も下の列に達した後に退避 される。スケジューラ280におけるOpクワッドの位置は、Opクワッドにつ いてのプログラムの順序における年齢あるいは位置を示すが、多くのオペレーシ ョンについては、スケジューラ280における位置は実行の段階とは無関係であ る。 図4A〜4Dは、RegOp、LdOp、SpecOpおよびBrOpsに関連するマルチステージ パイプラインを示す。パイプラインにおける各ステージは、初期の段階のオペレ ーションが進行するのを防ぐためにオペレーションがステージの1つにおいて停 止していない限り、1プロセッサクロックサイクルを必要とする。2つの予備ス テージ310および420は、全ての実行パイプラインに共通するものである。 ステージ410において、16バイトまでのCISC命令が命令キャッシュ23 0に向けてフェッチされ、命令境界を特定し、それに続くデコードタイムを短縮 するためにプリデコードされる。ステージ420において、命令デコーダ240 は、命令キャッシュ230からの3つまでのCISC命令をデコードし、Opク ワッドを生成し、それをスケジューラ280の上の列にロードする。 スケジューラ280は、BrOps以外のオペレーションに関連するオペランドフ ォワードステージ440および発行ステージ430を制御する。発行ステージに おいて、スケジューラ280はそのエントリーをスキャンし、対応する実行ユニ ット251〜256に3つまでのオペレーションを発行する。スケジューラ28 0は、実行がout-of-orderおよび投機的であるように、古いオペレーションの前 に新たなオペレーションを発行するように選択することができる。発行選択段階 においてはオペランド依存については考慮されない。スケジューラ280は、発 行選択ステージ430において先に発行されたオペレーションのためにオペラン ドフォワーディングステージ440において、実行ユニット251〜2 56に対してオペランドを送り出す。ステージ440において、いくつものクロ ックサイクルに亘って必要なオペランドが利用可能でない場合には、パイプライ ンが長時間ブロックされるのを回避するために、レジスタユニット253または 254に発行されたオペレーションのあるものをパイプラインから破棄すること ができる。 図4Aに示されるように、RegOpの実行は、実行ステージ450からなる1つ のクロックサイクルにおいて完了する。RegOpの実行ステージ450は、実行さ れているRegOpの形式に基づき、RegOpのソースオペランドを、ALUがレジスタ ユニット253または254にて処理するようなALUフェイズ451と、RegO pに対応するエントリーにレジスタユニット253または254からの結果およ び状態値を再び記憶するような結果転送フェイズ452とを有する。このエント リーにストアされた結果および状態フラッグは、安全にできる段階に達したとき に、レジスタファイル290および構造状態フラッグレジスタにおいてコミット される。オペレーションが完了した後あるいは完了した直後に、オペレーション 結果をコミットし、スケジューラ280からのオペレーションを含むOpクワッ ドをシフトすることによりオペレーションを退避することができる。オペレーシ ョン完了とコミット化との間において、オペレーションからの結果および状態フ ラッグは、他の命令を実行するためにスケジューラ280において利用可能とな っている。 図4Bおよび4Cは、LdOpおよびSpecOpが2つの実行段階450および460 を必要とすることを示している。実行ステージ450および460は、データア クセスのための仮想アドレスを決定するアドレス計算フェイズ453と、データ キャッシュをアクセスするためにアドレスをマップするDTLBマッピングフェ イズ455と、オペレーションに対応するエントリーにそのオペレーションの結 果をストアするために戻 すような結果転送フェイズとを有する。オペレーションの完了に伴い、スケジュ ーラ280は、投機的であって、安全となった段階において初めてコミットする ような結果を受け取る。 図4DはBrOpsの取り扱いを示す。命令デコーダ240がCISC分岐命令を デコードし、BrOpsを生成すると、デコーダ240は、次にデコードされるべき CISC命令のための新たなプログラムカウンタを決定する。無条件分岐につい ては新たなプログラムカウンタについて何ら不確定性がなく、デコーダ240は プログラムカウンタを変更して無条件分岐を完了する。命令デコーダ240は、 新たなプログラムカウンタ値を計算するために、オフセットおよび古いプログラ ムカウンタ値を高速で加算するための並列加算器を備えている。命令デコーダ2 40はまた、命令戻しの後に命令アドレスを予測するために、サブルーチンコー ルに引き続き、命令アドレスがプッシュされるべき16エントリーの戻しアドレ ススタックを含む。 条件付き分岐については、デコーダ240は、条件付き分岐に続いて、プログ ラムカウンタ値を予測し、スケジューラ280にロードされたOpクワッドにB RCONDを挿入する。実施例においては、分岐予測は、当該技術分野において は2レベル分岐予測と呼ばれる分岐相関プロセスからなる。"Configurable Bran ch Prediction for a Processor Performing Speculative Execution"なる名称 の米国特許第5,454,117号は、使用可能な分岐相関プロセスの例につい て記載している。分岐相関は、分岐命令の後に実行される命令のアドレスを予測 する。命令デコーダ240における分岐予測ロジック248は、8,192のエ ントリーを有する分岐履歴テーブル(BHT)を有し、各BHTエントリーは、 分岐が行われたり行われなかったりする傾向を示す標準的な2つの履歴ビットを 含んでいる。エントリーは、プログラムカウン タPCからの4つのビットとグローバル分岐履歴の9つのビットとの組合せを用 いてインデックスされ、分岐が行われるべきか否かは、分岐のアドレスからばか りでなく、プログラムの実行が分岐に到達するために経た経路からも予測される 。これにより、以下に説明するように、スケジューラ280をフラッシュしなけ ればならない確率を減少されるような、改善された分岐予測が可能になる。 予測されたまたは変更されたプログラムカウンタが、デコーダ242の16エ ントリー分岐ターゲットキャッシュで正しく予想されると、次のCISC命令が 、x86命令デコードステージ420の終わりまでには、デコードの準備が整っ ている。そうでない場合には、クロックサイクル424は、アドレスを計算し、 デコードのための次のCISC命令をフェッチする必要がある。 他の全てのオペレーションと同様に、スケジューラ280にロードされた条件 付き分岐命令BRCONDは、古いオペレーションが退避されるに伴いスケジュ ーラ280の底部に向けてシフトされるが、BRCONDのためには発行選択ス キャンは用いられない。BRCONDは、それがスケジューラ280の列4に到 達したときに、分岐条件評価ステージ464に至る。分岐評価ユニット257は 、各BRCONDについて必要とされる条件コードccが有効であることを条件 に、1サイクルあたり1つのBRCONDを評価することができる。分岐評価ユ ニット257は、BRCONDに引き続き正しいプログラムカウンタを決定し、 BRCONDが正しく予測されたか否かを判定する。必要な条件コードは、BR CONDが列4に到達したときには有効である蓋然性が高い。なぜなら、列4お よび5などの古いオペレーションはすでに完了している可能性が高いからである 。必要な条件コードが未だ有効ではない場合にはBRCONDは、Opクワッド が列4からシフトアウトされるのを 妨げることにより停止状態に保持される。BRCONDが停止状態であるとき、 列4から上のOpクワッドは、列0から3の1つまたはふくすうのものが空のす なわち無効なOpクワッドでない限りシフトされることがない。列0〜3のそれ ぞれが有効なOpクワッドを含む場合、命令デコーダ240は、BRCONDが 停止状態に保持されている間、スケジューラ280に新たなOpクワッドをロー ドすることができない。列4および5のシフトも、列3のシフトが停止状態に保 持されている限り、同じく停止状態に保持される。なぜなら、列4または5をシ フトすることは、空のOpクワッドを生成する必要を生じさせ、実施例は、スケ ジューラ280の最上列にのみ空のOpクワッドを生成することができるからで ある。 分岐が正しく予測された場合には、オペレーションのフェッチ、デコードおよ び実行が中断されることなく継続される。分岐が誤って予測された場合、スケジ ューラ280は、BRCONDに引き続き、正しい命令アドレスにてデコーダ2 40を再起動し、デコーダ240は、誤って予測された分岐より古いオペレーシ ョンによって得られた結果をコミットし、スケジューラ280から退避させる間 、正しい命令をフェッチし、デコードし始める。誤って予測されたBRCOND が退避しスケジューラ280がフラッシュされるまで、新たな命令がスケジュー ラ280にロードされるのが禁止される。誤って予測された分岐が退避したとき 、スケジューラ280および実行ユニット251〜257における全てのオペレ ーションを有効とすることにより実行ユニット250をフラッシュする。誤って 予測された分岐に先行する全てのオペレーションは、誤って予測された分岐がス ケジューラ280の最下列からシフトアウトされる前に完了し退避されているは ずであり、誤って予測された分岐が退避される前には新たな命令がスケジューラ 280にロードされないこと から、全てのオペレーションを無効化することができる。全てのオペレーション を無効化することは、保持されるべきオペレーションを特定する必要がないこと から、プロセスを単純化させる。通常、誤って予測された分岐が最下列にシフト され、デコーダ240がフェッチし、最初の新たな命令を利用可能にするのとほ ぼ同等の時間である2クロックサイクルの後に退避されることから、新たな命令 がロードされるのを遅らせることは性能に対してはほとんど影響を与えない。 実行エンジン250は、アボート可能およびアボート不可能オペレーションを 実行する。アボート不可能オペレーションは、投機的に実行することができず、 結果を安全にコミットし得るときにのみ実行される。アボート可能なオペレーシ ョンは投機的に実行される。アボート可能なオペレーションがこのパイプライン の最終ステージに到達し完了した後に、この実行から得られた結果は、オペレー ションコミットユニット260が結果をコミットするのは安全であると判定する ときまで、全てスケジューラ280にストアされる。各サイクル毎に、4つまで のオペレーションからなるものである1つのOpクワッドをコミットし、スケジ ューラ280から退避させることができる。II .スケジューラ 図5は、スケジューラ280が24までのオペレーションに関連付けられた2 4のエントリーを有する実施例を示している。各エントリーは、スケジューリン グリザバ540内の記憶要素(名目上フリップフロップ)およびエントリに対応 付けられたロジック530、532、534、536および538の部分を含む 。ストア要素は、実行待ち、実行中あるいは実行を完了したオペレーション(Op )に関する情報をストアする。オペレーションデコーダ510は、命令デコーダ 240から4つのRISC86命令を受け取り、スケジューラリザバ540の最 上列における 新たなOpクワッドをロードし初期化する。リザバ540におけるフィールドが 図7に示されているが、図3に示された関連するRISC86の命令と同一では ないが、それに関連付けられている。フィールドのあるものは、関連するオペレ ーションの実行の間に同一の値を保持し、ここでは静的なフィールドと呼ばれる 。他のフィールドは、オペレーションが実行を完了したときなどにロードされ後 に変更され、動的フィールドと呼ばれる。 スケジュール用リザバ540におけるストア要素は、6列の深さを有するシフ トレジスタと同様のものと見ることができる。各列は、それぞれRISC86命 令に関連付けられた4つのエントリーを有する。各クロックサイクル毎に、ある 列内に停止状態に保持されていないOpクワッドは、次の列から空であったり、 同様に下側にシフトされつつあるOpクワッドを含む場合には、次の列に向けて シフトダウンされる。最下列(列5)のOpクワッドは、最下列に関連する全て のオペレーションがコミットした場合にスケジューラ280からシフトアウトさ れる。 図6はスケジュール用リザバ540の一部の実施例を示す。図6に示されたス ケジュール用リザバ540の部分は、スケジューラ280の列3における動的フ ィールドのためのエッジトリガーフリップフロップ623からなる記憶要素と、 同一の列における静的フィールドのためのエッジトリガーフリップフロップ64 3からなる記憶要素とを有する。列3は、図6に示され以下に説明されるように 、動的および静的フィールドにおいて各ビットのための同様の記憶要素を有する 。スケジュール用リザバ540の他の列は、列3と同様または同一であって、列 3に直列接続されている。 図6において、フリップフロップ662、643および644は、列2、3お よび4のそれぞれにおける同一の静的フィールドのビットを記 憶し、Opクワッドが列2から列4にシフトする際に、Opクワッドに関連する ビット位置が、フリップフロップ642からフリップフロップ644にシフトさ れる。グローバル制御ロジック520は、各列毎に(i= 1 - 5)1つの信号LdEntr y4[i]を生成し、これらの信号は、対応する列へのシフシトが行われるのを制御 する。列は、クロック信号CLKの立ち上がりエッジによりオーバーライトされ る。例えば、信号LdEntry4、フリップフロップ643をイネーブルまたはディス エーブルし、信号LdEntry4はフリップフロップ644をイネーブルまたはディス エーブルする。従って、Opクワッドは列4に停止状態に保持された場合、信号 LdEntry4は不要とされ、従ってフリップフロップ644は1つの値を保持する。 信号LdEntry4[i]が相互に独立していることにより、停止状態に保持されたOp クワッドの上方に位置するものであってよい空のOpクワッドエントリーが埋め られるのを可能にする。例えば、Opクワッドが列4に停止状態に保持された場 合、クロック信号CLKの立ち上がりエッジにより、値OpField2が、列2から列 3にシフトされるように信号LdEntry3が必要とされる。例えば、分岐ターゲット キャッシュミスによって命令デコーダ240がサイクル毎にOpクワッドを提供 できないような場合に空の列が発生する。アペンディクスBにおける表B.1は 、静的フィールドを実現するための回路の動作を説明している。 ダイナミックフィールドは、古いデータをシフトする間に、外側スケジュール 用リザバ540からの新たなデータが動的フィールドに挿入され、新たなデータ は、次の列にシフトをし或いははシフトをしない正しいOpクワッドと共に留ま らなければならないことから、静的フィールドに比較してより複雑である。信号 OpFieldValue2およびOpFieldValue3は、列2および3における第1および第2の Opクワッ ドに関連する情報を表している。スケジュール用リザバ540の外側回路が、第 1および第2のOpクワッドに関連する情報を変更するように信号NewValue2お よびNewValue3を発生する。マルチプレクサ632は、新たな情報信号NewOpFiel d2が新たな値NewValue2に変化し、第1のOpクワッドを変更するかあるいは古 い値OpFieldValue2に留まるかを選択する。マルチプレクサ633は、新たな情 報信号NewOpField3が新たな値NewValue3に変化するかあるいは古い値OpFieldVal ue3に等しいまま留まるかを選択する。 第1のOpクワッドに対応する動的フィールド位置が変化するか否かに拘わら ず、値NewOpField2は、クロック信号CLKの立ち上がりエッジにより列2に書 き込まれあるいは列3に書き込まれる。第1のOpクワッドが列3にシフトする ためには、信号LdEntry3が、マルチプレクサ613に信号NewOpField3として信 号NOpField2を選択させるようにする。信号NewOpField3は信号CLKの立ち上 がりエッジにてフリップフロップ623に書き込まれる。第1のOpクワッドが 列3にシフトされるのを防止するために、信号LdEntry3はマルチプレクサ613 に、フリップフロップ23に書き込まれる信号NewOpField3を選択させる。信号L dEntry4およびマルチプレクサ614は同様に、第2のOpクワッドが列3から 列4にシフトされるべきか否かを選択する。アペンディクスBにおける表B.2 は動的フィールドを実現するための回路の動作を説明している。II .A スケジューラローディング 命令デコーダ240はマクロ命令をデコードし、4つのRISC86命令のセ ットを構成し、これらは、スケジューラ230の列0すなわち最上列が空であっ たり、列1に向けてシフトするOpクワッドを含むような場合にスケジューラ2 82に転送される。EmcodeROM246は、 Opクワッドにおける全てのオペレーションがx86命令の実現形態の一部であ る場合にはOpクワッドを含むものであってよい。これは、異なるx86命令が EmcodeROM246における同一コードにおいて異なるエントリー点を有したり 、EmcodeROM246内のオペレーションが、Opクワッドの中間部への分岐を 引き起こすために発生し得る。デコードされつつあるx86命令のために必要で ない命令は無効化されるすなわちNo-opに変換される。命令デコーディングはオ ペレーションフィールドのための環境変数の可変置換をも含む。可変置換につい ては、エミュレーション環境が、例えば現在のコードセグメントおよびデコード 中のx86命令のためのデフォルトアドレスおよびデータサイズ並びにレジスタ 番号を含む環境変数を保持する。環境変数は、EmcodeROM246からのオペレ ーションにおける場所占め値(placeholdervalue)を置換をする。環境変数置換は 、異なる環境変数が、1つのEmcodeセクションを異なるx86命令を実現するよ うに変換させることから、EmcodeROM246のフレキシビリティを増大させる 。命令デコーダ240およびまたはオペレーションデコーダ510は必要に応じ て環境変数置換を実行する。 スケジューラ280において、オペレーションデコーダ510は命令デコーダ 240からOpクワッドを受け取り、スケジュール用リザバ540の最上列のス トアフィールドを埋める。命令デコーダ240から利用可能なOpクワッドが提 供されない場合には、オペレーションデコーダ510は、最上列のOpクワッド がシフトダウンしたときに空のOpクワッドを生成する。 図7は、スケジューラリザバ540における静的エントリーフィールド541 、動的エントリーフィールド542およびOpクワッドフィールド549の一例 を示す。エントリーフィールド541および542の 初期位置は、対応するRISC86命令に依存する。オペレーションデコーダ5 10は、他のフィードに基づくRISC86命令からのフィールドのあるものを 変更し、既存のものから新たなフィールドを導入し、物理的に異なるフィールド によってフィールドのあるものを置換し、いくつかのフィールドを変更すること なく通過させる。Opクワッドフィールドは、Opクワッド全体に対応する情報 から生成される。II A.1 スタティックエントリーフィールド 本実施例に於いては、各エントリーは、次のように定義されるスタティックフ ィールド541を含む。ここで全ての信号は、アクティブで「ハイ」とする。 フィールドタイプ[2:0]は、エントリに対応するオペレーションの形式を特定 する。可能な形式としてSpecOp、LdOp及びStOpがあり、StOpはメモリを参照した り誤ってよいアドレスを生成し、RegOpはレジスタユニット253によってのみ 実行可能であり、RegOpはレジスタユニット253又は254のいずれかによっ て実行可能である。 マルチメディアアユニット256は、マルチメディアアプリケーションに関連 するRegOpの選択された形式のものを実行する。浮動小数点オペレーション(FpOp )は、浮動小数点ユニット255によって実行されるSpecOpの1形式である。ア ペンディクスBに於ける表B.3は、フィルードタイプの値を生成するオペレー ションデコーダ510に於ける回路を記述している。 フィールドLD_Immは、オペレーションが、先行するLIMMOpからのイミーディア ット値が必要であるか否かを示す。イミーディアット値は、オペレーションがエ ントリーのフィールドDestVal内に保持されている大ディスプレースメント対小 ディスプレースメント(8ビット)を用いるLdStOpである場合には、大ディスプ レースメントとなる。RegOpにつ いては、イミーディアット値は、第2のオペランドSrc2である。アペンディクス Bの表B.4は、フィールドLD_Immのための値を生成するオペレーションデコー ダ510に於ける回路を記述している。 フィールドSrc1Reg[4:0]、Src2Reg[4:0]及びSrcStReg[4:0]は、それぞれ第1 のソースオペランドSrc1、第2のソースオペランドSrc2及びオペレーションのス トアデータオペランドを保持するレジスタを特定するレジスタダムを保持する。 アペンディクスBに於ける表B.5、B.6及びB.7は、Src1Reg、Src2Reg及 びSrcStRegのための値を生成するオペレーションデコーダ510における回路を 記述している。 フィールドDestReg[4:0]は、オペレーションのデスティネーションレジスタを 特定するレジスタナンバーを保持する。アペンディクスBの表B.8は、フィー ルドDestRegのための値を生成するオペレーションデコーダ510に於ける回路 を記述している。 フィールドSrc1BM[1:0]、Src2BM[1:0]及びSrc12BM[2]は、オペレーションの実 行のためにオペランドSrc1及びSrc2のどのバイトが有効であるかを示す。定義か ら、Src1BM[2]及びSrc2BM[2]Src12BM[2]に等しい。Src1BM[1:0]及びSrc2BM[1:0] のビット2、1及び0は、それぞれビット[31:16]、[15:8]及び[7:0]を示す。ア ペンディクスBの表B.9は、フィールドSrc1BM[1:0]、Src2BM[1:0]及びSrc12B M[2]のための値を生成するオペレーションデコーダ510に於ける回路を記述し ている。 フィールSrcStReg[2:0]は、StOpの完了のためにデータオペランドのどのバイ トが必要であるかを示す。ビットの対応は、Src1BMまたはSrc2BMの場合と同様で ある。アペンディクスBの表B.10は、フィールドSrcStBMのための値を生成 するオペレーションデコーダ510に於ける回路を記述している。 フィールド[12:0]は、オペレーションが実行可能であるか否かに応じてオペレ ーションコミットユニット(OCU:operation commit unit)即ち実行ユニットの ための追加の情報を保持する。フィールドOpInfoは、オペレーションがRegOp、L dStOp又はSpecOpのいずれであるに応じて3つの可能なフィールド定義を有する 。RegOpについては、フィールドOpInfoは、RISC86Typeフィールドから6 ビット、RISC86Extフィールドから4ビット、RISC86R1フィールド 、及びオペレーションのための有効なデータサイズDataSzを示す2ビットの連結 (concatenation)を含む。LdStOpについては、フィールドOpInfoは、RISC8 6Typeフィールドから4ビット、RISC86ISFフィールドから2ビット、R ISC86Segフィールドから4ビット、オペレーションのための有効なデータ サイズDataSzを示す2ビット及びアドレス計算(32/16ビット)のための有効な アドレスサイズAddrSzを示す1ビットの連結(concatenation)を含む。SpecOpに ついては、フィールドOpInfoは、RISC86Typeフィールドから4ビット及び RISC86ccフィールドから5ビットの連結(concatenation)を含む。アペン ディクスBに於ける表B.11は、フィールドOpInfoのための値を生成するオペ レーションデコーダ510における回路を記述している。II .A.2 ダイナミックエントリフィルード ダイナミックエントリフィールド542は、オペレーションデコーダ510に よって初期化されるが、オペレーションの実行の間に変化することができる。一 般に各エントリは、必要に応じて、ダイナミックフィールドを変更するためのロ ジックを含んでいる。実施例に於けるエントリの為のダイナミックフィールドは 次のように定義される。 フィールドState[3:0]は、図4A〜4Dのパイプラインに関するオペレーショ ンの実行状態を示す。(S3、S2,S1及びS0は、State[3:0] のための異なる信号名である。)フィールドStateは、4ビット内に1のフィー ルドをシフトすることにより5つの可能な状態をエンコードする。値b0000 は、未発行状態を示し、b0001,b0011及びb0111は、オペランド フォーワードステージ、実行ステージ1,及び実行ステージ2に於けるオペレー ションを示し、b1111は、オペレーションが完了したことを示す。オペレー ションの多くは、フィールドStateがb0000の状態でスケジューラ280に 入る。フィールドStateは、オペレーションが実行パイプラインに発行された後 に変化する。フィールドStateは、オペレーションが発行即ちパイプラインステ ージから出たときに有効にシフトされることによりアップデートされる。パイプ ラインの完了に伴い、オペレーションがコミットされ回避する間、フィールドSt ateはb111にセットされる。アボートサイクルの間は、各エントリのフィー ルドStateがb1111にセットされる。ロードコンスタントオペレーションL DK等の、オペレーションのあるものは、初期状態フィールド値が1111であ って、従ってスケジューラ280にロードされたときには、既に完了している。 アペンディクスBの表B.12は、フィールドStateを初期化するオペレーショ ンデコーダ510及び関連するオペレーションの実行の間にフィールドStateを 変更するスケジューラ280のエントリに於ける回路を記述している。 フィールドExec1は、レジスタユニット253(254ではなく)実行中であ ることを示し、オペレーションがうまく実行ユニット253に発行されたときに セットされる。アペンディクスBの表B.13は、フィールドExec1をセットし 、変更するロジックを示す。 フィールドDestBM[2:0]は、フィールドDestRegにより示されるどのバイトをオ ペレーションが変更するかを示すバイトマークを保持する。DestBM[2],DestBM[ 1]及びDestBM[0]は、それぞれビット[31:16], [15:8]及び[7:0]に対応する。フィールドDestBMはオペレーションデコーダ51 0によって初期化され、サポートサイクルの間にクリアされる場合がある。フィ ールドDestBMに関するロジックがアペンディクスBの表B.14に記述されてい る。 フィールドDestVal[31:0]は、DestRegについてコミットされるべきオペレーシ ョンの実行の結果を保持する。DestBMは、オペレーションの実行後にどのバイト が有効であるかを示す。フィールドDestValは、オペレーションの形式に応じて オペレーションが実行ステージ1又は、2を完了した時にロードされる。非実行 オペレーション例えばLDKについては、DestValは、適当な結果値によって初 期化される。フィールドDestValは、オペレーションが完了したときに、結果が 記憶される前に一時的な記憶を行うために用いることができる。実施例に於いて は、DestValは、最初にRegOp及びLStOpについてイミーディアット値及びデイス プレースメント値並びにBRCONDのための別の(シーケンシャル又はターゲット) 分岐プログラムカウンタ値を保持する。フィールドDestValに関するロジックが アペンディクスBの表B.15に記述されている。 フィールドStatMod[3:0]は、オペレーションが、状態フラッグのどのグループ を変更するかを示す状態グループマークを保持する。ビット3,2,1、0は、 それぞれフラッグビットグループ{EZF,ECF},OF,{SF,ZF AF,PF}及びCFに対 応し、フラッグビットEZF,ECF,OF,SF,ZF,AF 及びPFは、RegOpにより変更 される。フィールドStatModは、非RegOpに対して全て0であって、アボートサイ クルの間にクリアされる。フィールドDVに関するロジックは、アペンディクス Bの表B.16に記述されている。 フィールドStatVal[7:0]は、状態レジスタEflagsにコミットされるべきオペレ ーションの状態の結果値を保持する。StatModは、実行後にどのフラッググルー プが影響を受けたかを示す。StatValは、RegOpのためにのみ意味を有し、これが StatModに反映されている。StatValは、RegOpが実行ステージ1を完了したとき にロードされる。フィールドStatValに関するロジックがアペンディクスBの表 B.17に記述されている。 フィールドOprndMatch_XXsrcYは、よりグローバルな意義を有する情報とは異 なり2つのパイプラインステージ間でやりとりされる過渡的な情報のための追加 の記憶要素である。但し、XXは、LU,SU,RUX又はRUYであり、Yは、1又は2で ある。アペンディクスBの表B.18は、フィールドOprndMatch_XXsrcYを制御 するロジックについて記述している。 フィールドDBN[3:0]は、LStOpのための4つのデータブレークポイント状態ビ ットBn(n=0〜3)を保持する。このフィールドは、初期には全て0であって 、対応するLdStOpが実行されたとき、後のトラッピングのために、適当なユニッ トからのブレークポイントビットが記憶される。アペンディクスBの表B.19 は、フィールドDBN[3:0]に関するロジックについて記述している。II .A.3 Opクワッドフィールド スケジューラ280の各列は4つのエントリに加えてOpクワッド全体に関連 するOpクワッドフィールド549を含んでいる。次に、図7に示された追加の Opクワッド549について言及する。オペレーションデコーダ510は、Op クワッドフィールドを初期化する。Opクワッドフィールドの多くはスタチック である。Opクワッドフィールドの 或るものはダイナミックである。スケジューラ280の各列のロジックが、必要 に応じてダイナミックOpクワッドフィールドを変更する。 フィールドEmcodeは、OpクワッドがMacDec242又はベクトルデコーダ24 4(即ちEmcodeROM246)のいずれかからであるかを表示し、アペンディク スBの表B.20はフィールドEmcodeの設定を記述している。 フィールドEretは、これがOpクワッドであって複雑なマクロ命令を表す一連 のOpクワッドに於ける最後のOpクワッドであることがマークされているかど うかを示す。アペンディクスBの表B.21は、フィールドEmcodeを設定するロ ジックを記述している。 フィールドFaultPC[31:0]は、当該列に於ける第1のオペレーションに関連す る論理マクロ命令ホールドプログラムカウンター値を保持する。オペレーション コミットユニット260は、フオールト例外を処理するときにフィールドFaultP C用いる。アペンディクスBの表B.22はフィールドFaultPCを設定するロジッ クを記述している。 フィールドBPTInfo[14:0]は、Opクワッドが生成されたときに分岐予測表関 連情報を保持する。フィールドBPTInfoは、BRCONDを含むMacDecにより生成され たOpクワッドについてのみ定義されている。アペンディクスBの表B.23は 、BPTInfoを設定するロジックを記述している。 フィールドRASPtr[2:0]は、Opクワッドが生成された時点に於ける戻しアド レススタックの最上部にポインタを保持する。フィールドRASPtrは、BRCONDを含 むMacDecにより生成されたOpクワッドについてのみ定義されている。アペンデ ィクスBの表B.24は、フィールドRASPを設定するロジックについて記述して いる。 フィールドLimViolは、Opクワッドが、ターゲットアドレスにて、コードセ グメントユニット違反が検出された転送制御命令のデコードであることを示す。 多くの列についてフィールドLimViolはスタチックである。アペンディクスBの 表B.25にまとめられているように、フィールドLimViolは列1にロードされ る。 フィールドOpQVは、列が有効なOpクワッドを含み、グローバルロジック52 0がOpクワッドをシフト制御する際にフィールドOpクワッドVを用いるか否 かを示す。無効Opクワッドは、スケジューラ280の下の方で、Opクワッド が停止状態に保持されている場合には上書きすることができる。無効Opクワッ ドを含む列に於けるフィールドは、アボートされたOpクワッドと同じ値を有し 、アボートの結果、Opクワッドは無効となる。アペンディクスBの表B.26 は、フィールドOpクワッドVを制御するロジックについて記述している。 フィールドOp1I、Op2I及びOp3Iは、Opクワッドにより表されマクロ命令の数 のカウント(1,2又は3)を保持し、待避した命令をカウントするために用い られる。 フィールドIlen0及びIlen1は、Opクワッドにより表される第1及び(存在す る場合には)第2のマクロ命令のバイトの長さを保持し、ホールドが発生した命 令アドレスを決定するために用いられる。 フィールドSmc1stAddr,Amc1stPg,Smc2ndAddr及びAmc2ndPgは、第1及び(1 より多い数の頁からの命令がOpクワッドにある場合には、)Opクワッドのオ ペレーションによりカバーされた第2のアドレスを保持し、自己変更コード(sel f-modifying code)を検出するために用いられる。II .B ロード/シフト制御 前記したように、スケジューラ28を6列を含むシフトレジスタ(またはFIFO バッファ)として24のエントリを管理する。スケジューラ280は、各列が独 立したシフト制御(実際にはロード制御信号LdEntry[i])を有する点に於いてシ フトレジスタ程、リジットではない、Opクワッドは、次の列が空又は空にされ つつある場合に限り、次の列にシフトダウンされる。この場合先行するOpクワ ッドは、上方からこの列に向けてシフトダウンされることができる。Opクワッ ドは、常に、スペースがある場合には、より高いに数の列に向けてついにシフト ダウンされる。理想的には、クロックサイクルの境界に於いて各クロックサイク ルごとに1列シフトダウンされる。 多くのオペレーションに於いて、スケジューラ280に於ける位置は、オペレ ーションのパイプラインステージに対して独立している。従って、実行パイプラ インに於いて停止状態に保持されている場合でも、多くのオペレーションは、ス ケジューラ280内に於いて、シフトダウンする。2つの例外として、状態フラ ッグに依存するオペレーションと、スケジューラ280の最下列におけるオペレ ーションがある。状態フラッグに依存するオペレーションは、オペレーションが スケジューラ280の特定の列に於いて場合に実行されなければならないステー ジを有し、このステージが完了するまでシフトが禁止される。列5に於けるオペ レーションは、列5に於ける全てのオペレーションが完了しコミットするまで、 Opクワッドが列5からシフトまたは待避するのを禁止する。 アペンディクスBの表B.27は、スケジューラ280のシフトを制御する信 号LdEntry0〜LdEntry1及び、スケジューラ280が、現在のサイクルの最後に新 たなOpクワッドを受け入れ得るか否かを示す信号SchedFull及びSchedEmptyを 示すグローバル制御ロジック520の回路について記述している。III .オペレーション実行 物理的には、スケジューリングリザバ540は、オペレーションのための状態 値を保持する記憶構造を有する。リザバ540に加えて、スケジューラ280は 、オペレーション実行中状態値をオペレーションするためのロジックを備えてい る。制御の観点から、スケジューラ280は、オペレーションパイプラインを介 してオペレーションを実行するための制御情報を生成し、実行結果を取り扱うパ イプラインデータパスをなしている。スケジューラ記憶及び状態変化は、システ ムクロックに同期する。即ち、スケジューラ280の全ての状態の変化は、シス テムクロックの立ち上がりエッジによって引き起こされ、少なくともロジックに 関しては、スケジューラ280の全ての記憶要素が、図6について前記したよう なエッジトリガ式のフリップフロップからなる。ロジックの観点から、スケジュ ーラ280の全ての状態シーケンシングは本質的に単一サイクルである。状態変 化の決定は、サイクルごとに当該サイクルの間の機械状態に基づいて行われる。 スケジューラ280の行動は、オペレーション実行のパイプラインである特徴 を反映している。スケジューラ280に於けるロジック及びそのエントリは、多 くの個別のかつ概ね互いに独立した塊をなすロジックに分割され、それぞれは、 与えられたオペレーション又は実行パイプラインの特定の処理段階に直接的に関 連づけられている。特定の処理パイプラインの観点から、各ステージに対応する スケジューラロジックの塊は、このステージがいつうまく完了したかを決定した り、そのステージに於いて行われた処理についてのキーとなる制御情報を提供す る。少なくとも最初の2つのステージの全ての処理パイプラインの全体について 見た特定のステージの観点から、各パイプライン又はパイプラインのオ ペレーションソースオペランドについて極めて類似したロジックの塊は、同一の 機能を果たす。 図4A〜Dは、4つ形式のオペレーションのためのパイプラインタイミングを 示す。これらの形式については、命令デコードステージ420の後にオペレーシ ョンがスケジューラ280にロードされる。BrOpがスケジューラ280の列4に 到達したときに引き起こされる分岐評価ステージ490に於いてBrOpが完了する 。RegOp、StOp及びLdOpは、3つ又は4つのステージパイプラインを経て、対応 するように4つ又は、5つの状態間で変化する。スケジューラ内のフィールドSt ate[3:0]は、エントリに対応するオペレーションのステージを追跡或いは表示す る。 図4A〜CのOp発行ステージ430及びオペランドフォワードステージ440 は、全てのRegOp、StOp及びLdOpについて共通であって、その内容を以下に説明 する。 オペランドフォワードステージ430に続いて実行ステージが設けられている 。RegOpは、レジスタ253及び254が全てのRegOpを一サイクルで実行するた め一つの実行ステージ450を有する。更に、RegOpが実行ステージ450に到 達すると、常にうまく実行を完了し、クロックサイクルの終わりにステージ45 0を離れる。LdOp及びStOpは、二つの実行ステージ及び450及び460を有し 、その間にアドレス計算453,セグメント及び頁トランスレーション(並びに プロテクションチェッキング)及びデータキャッシュマッピング454及び結果 転送462が行われる。RegOpと異なり、LdOp及びStOpは、ステージ450又は 、460に任意の時間に亘って保持されることができる。特にデータキャッシュ 及びデータトランスレーションルックアサイドパスは、(DTLB)及びフォールトの 結果としてのLdOpのホールドアップの多くは、最後のステージ460に対して適 用される。ステージ450におけるホ ールドアップは、整合の狂ったメモリ参照或いは、ステージ460が、完了に向 けて進行しないオペレーションにより占有されブロックされることに起因するも のである。 スケジューラ280は、ユニットロード251、ストアユニット252、レジ スタユニット253及び254、浮動小数点ユニット255及びマルチメディア ユニット256の実行エンジンにより生成されるパイプラインを制御する。本発 明の実施例は、レジスタユニット253及び254、ロードユニット251及び ストアユニット252を有する。より多数の或いは少数の実行ユニットを有する プロセッサに対する本発明の様々な面の適用可能性は、本開示内容から自ずと明 らかになる。例えば、マルチルディアユニット256を備える実施例に於いては 、マルチメディァユニット256をロジック的に第1のレジスタユニット253 の一部をなすものと考えることができ、レジスタユニット253に用いられる回 路を用いて、マルチメディアユニット256のためのオペレーションを発行し、 オペランドをフォワードし、結果を転送するもことができる。 或る実施例に於いては、浮動小数点ユニット(FPU)255は、それ自身の独 立したレジスタファイル及びコミットユニットを有する。スケジューラ280は 、FPU255に対して発行するためのスキャンチェーン選択FpOpを有する。スケ ジューラ280は、FpOpを発行し、オペランドをFPU255にフォワードする。F pOpの実行は、FPU255に関連するレジスタファイルのレジスタのみに対して影 響を与え、従ってスケジューラ280は、FPU255からの結果を必要としない 。FPU255は、実際にFpOpを完了し、コミットするずっと前にFpOpを即座に完 了するような信号を発生することができる。OCU260は、何らの変更を加える ことなくスケジューラ280からのFpOpをコミットし、待避させる。 レジスタユニット253及び254のそれぞれは、RUパイプラインと呼ばれ或 いはレジスタユニット253をレジスタユニット254から識別するためにRUX 或いはRUYパイプラインと呼ばれるパイプラインを提供する。各RUパイプライン は、発行ステージ430、オペランドフォワードステージ440及び実行ステー ジ450と呼ばれる3つステージを有する。ロードユニット251及びストアユ ニット252は、それぞれ4つのステージを有するLU及びSUパイプラインを提供 する。これらの4つのステージは、発行ステージ430、オペランドフォワード ステージ440及び実行ステージ450からなる。前記したように、状態フィー ルドは、関連するオペレーションの現在のパイプラインステージを表示したり、 オペレーションがそのパイプラインを完了したことを示すために1からなるシフ ト/増大のフィールド"shifting/increasing filed of ones"のエンコーディン グを用いて、オペレーションの5つの状態を表示する。 スケジューラ280は、発行ステージ430及びオペランドフォワードステー ジ440の主な制御を提供する。発行及びオペランドフォワードステージ430 及び440に於ける処理は、ステージごとに2つのフェーズに分解される。これ らのフェーズは、名目上はシステムブロックサイクルの前半及び後半に行なわれ る。発行ステージ430は、発行選択フェーズ431及びブロードキャストフェ ーズ432を含む。オペランドフォワードステージ440は、オペランド選択フ ェーズ441及びオペランド転送フェーズ442を含む。 発行選択フェーズ431の間、スケジューラ280は次のオペレーションを選 択し、それぞれのパイプラインに送り込む。例えば実施例に於いては、LU、SU、 RUX及びRUYパイプラインについて同時に行われる。ブロードキャストフェーズ4 32の間、それぞれ選択されたオペレーシ ョンのオペランドに関する情報が全てのスケジューラエントリ及び外部ロジック に対してブロードキャストされる。 オペランド選択フェーズ441の間、スケジューラ280は、2までの数の実 行ユニットオペランドを特定するためにブロードキャストフェーズからの情報を 利用する。オペランドのソースは、レジスタファイル290,スケジューリング リザバ540、或いは実行ユニット251,252,253又は254の結果バ ス561,562、563又は564であって良い。スケジューリングリザバ5 40は、イミーディアット値、コミットされていない結果、或いはプログラムで の順序が先行するが未だ完了していないオペレーションに関する情報のためのフ ィールドを含む。実行ユニットの結果バスは、所要のオペランドに対して影響を 及ぼすオペレーションを実行ユニットが完了しつつ或る場合にオペランドのソー スとなる。スケジューラ282は、また、指定されたソースから有効な値が実際 に利用可能であるか等、オペランド値の状態を決定する。この情報に基づき、ス ケジューラ280は、オペランドフォワードステージ440に於いてどのオペレ ーションが実行ステージ450に進むべきかを決定する。この進行は、パイプラ インについて独立している。明示的なオペランド依存性のみが、オペレーション を実行する順序に対する制約を行う。このような依存性を除いて、異なる形式の オペレーションは、他の形式のオペレーションに対して任意の順序をもってそれ ぞれのパイプライン内で処理される。 オペランド転送フェーズ442の間、スケジューラ280は、オペランド値を 、指定されたソースから、オペランドバス554を経て実行ユニット251〜2 54に転送する。図5に示されるように、本実施例は、7つのオペランドバス5 54を備え、それぞれがオペランドフォワードステージに於けるオペレーション のためのオペランド値を提供する。浮 動小数点ユニット255を有する実施例のような、より多数の実行ユニットを有 する実施例に於いては、より多数のオペランドバスが用いられる。オペランド転 送は、オペランド値が有効であるか否かによらず発生する。オペランド値が無効 である場合には、関連するオペレーションは、実行ステージ450に進まず、従 って実行ユニットは、無効なオペランドを用いない。 LdOp及びStOpのオペラアンド転送フェーズ442の間、ディスプレースメント フォワーディング443は、ディスプレースメントバス555を介して、ディス プレースメントオペランドをロードユニット251及びストアユニット252に 転送する。(1つを各ユニットに)。ディスプレーストメントオペランドは、ス ケジューラのエントリからの32ビット値である。ディスプレースメントのため のソースエントリーの選択は、オペランド選択フェーズ441の間に引き起こさ れる。 LdOpまたはStOpが実行ステージ450に入ると、ロード及びストアユニット2 51及び252が、対応するディスプレースメント及びオペランド値をラッチし 、当該オペレーションがステージ450にとどまる限りそれらを保持する。スケ ジューラ280は、パイプライン実行ステージ450及び460に対して制限さ れた制御を行う。ステージ450及び460において、スケジューラ280はオ ペレーションの状態を追跡し、結果として得られたレジスタ及び状態値を捕捉す る。実行ステージ450におけるアドレス計算453は、LdStOpによりアクセス されたアドレスを決定する。LdStOpのためのアドレス及びデータサイズによって 、データキャッシュにおけるエントリー間の境界を横切る向きにデータアクセス が行われる場合、LdStOpは非整合であると称する。非整合LdStOpは2つのデータ アクセスに分割され、第1のアクセスは実行ステージ460に進み、第2のアク セスは実行ステージ450にて停止状態 に保持される。非整合のLdStOpに対応するスケジューラのエントリーの状態フィ ールドは、第2のアクセスの実行ステージを示す。 実行開始するために、ソースオペランドを含むために、4つの制御プロセスに 加えて、スケジュラー280は、StOpのためのデータオペランドを得るために同 様の4つの制御プロセスを行う。しかしながら、データオペランドはStOpのため にSUステージ460において取得される。ストアデータを提供するプロセスは、 StOpのステージ450および460と同期し、実行ステージ450においてStOp を特定するオペレーション選択フェーズ456と、データオペランドのソースを 記述する情報を発信するブロードキャストフェーズ457と、データオペランド 選択フェーズ461と、データオペランド転送フェーズ462とを含んでいる。 要するに、ストアデータオペランドはStOp実行と並列にフェッチされ、実際のデ ータ値は、StOpの完了に伴い、取得されストアキュー270に転送される。ステ ージ460を完了し、それから出ることは、フェーズ461において選択された データ及びアドレス計算453及びDTLBマッピング455からの物理的アド レスに基づきStOpのためのストアキューエントリーの生成に対応する。有効なデ ータオペランドまたは物理的アドレスが依然として利用可能でない場合、StOpは ステージ460にて停止状態で保持される。 オペレーション発行及びオペランドフォワーディングに関連するスケジュラー ロジック530および532の塊の他に、エントリーは、ロード及びストアオペ レーションを命令することに関連するロジック534の塊を含む。レジスターの 相互依存性のために、オペレーション間にある実行の順序が守られなければなら ないのと同様に、メモリの相互依存性のためにLdOp及びStOp間で、ある限定され た実行の順序を守らなければならない。LdOpは、古いStOpよりも先に自由に実行 することがで きない。ロード−ストア命令は、メモリを参照したり、フォールト可能なアドレ スを生成するCIA(チェック命令アドレス)及びCDB(チェックデータアド レス)などのStOp及びメモリに対してアクセスを行うStOpに対しても適用される が、LEA(ロード有効アドレス)オペレーションには適用されない。すべての LdOpメモリを参照することから、LdOpはいずれもロード−ストア順序からは除外 されない。 オペレーションを完了することが安全であるとされるまでLdOpまたはStOpがス テージ460に保持される2つの実行パイプラインのステージ460において、 ロード−ストア順序が守られる。ステージ460に達するまで、LU及びSUパ イプライン間に順序が守られない。更に、LdStOpは、古いLdStOpに対して部分的 なアドレスの比較をすることによりメモリの相互依存性が「証明」されたときに out-of-orderが完了する。ストアキュー270は、相互依存性チェックに関連す るアドレス比較を行うが、LU及びSU実行パイプにおけるLdOp及びStOpの相対 的な年齢を決定するためのスケジュラーのサポートを必要とする。与えられたLd OpまたはStOpが完了しても良いことを決定する際に、適切なアドレス比較(古い StOpに対するLdOp及び古いLdOpに対するStOp)のみが考慮される。 ロード−ストア順序ロジック534は、LUパイプラインに対応するロジック 及びSUパイプラインに対応するロジックを備えている。LUパイプラインに対 応するロジックが、LUステージ460におけるあらゆるLdOpの、SUステージ 450または460におけるあらゆるStOp及び他のStOpに対する年齢を決定する 。ロジック534は、3つの信号SC_LU2OLDER,SC_LU1OLDER及びSC_LU0OLDERを バス556上に発生し、SUステージ460、450あるいは他の場所における StOpPが、LUステージ460におけるLdOpよりも古いか否かを表示する。SU パ イプラインに対応するロジックが、LUステージ460におけるあらゆるLdOp及 び他のLdOpに対する、SUステージ460におけるあらゆるStOpの年齢を決定す る。ロジック534は、2つの信号SC_LU2OLDER及びSC_LU1OLDERを発生し、ステ ージ460に於いてあらゆるLdOpが、LdOpよりも古いか否かを表示する。 スケジュラー280は、状態フラッグまたは条件コード(cc)値を取得し用いる ことに関連する状態フラッグ取り扱いロジック538を有する。3つの相対的に 依存する機能の領域が関連している。即ち、実行される状態依存RegOpのための 状態フラッグ値をフェッチすること、分岐評価ユニット257によってBRCONDの レゾリューションのための常態フラッグ値をフェッチすること及び、先行するBR CONDによってアボート不可能なRegOpを同期することからなる。 RUX実行ユニットは、状態依存(cc依存)RegOpを実行し、レジスタオペランド値 と同時に即ちオペランドフォワードステージ440の終了までに状態オペランド 値を必要とする。cc依存RegOpは、列3に到達するまで実行ステージ450に進 むのを許されず、有効条件コードを受け取るまで列3に留まる。レジスタ値のフ ェッチングの場合と異なり、状態フェッチプロセスはパイプラインされず、1サ イクルに、即ち全てRUXオペランドフォワードステージ440の間に発生する。 更に、同一のロジック538が、cc依存RegOp及びBRCONDの両者のためのアップ デートされた状態フラグ値をフェッチする。cc依存RegOpについては、RegOpによ って必要とされる状態値の有効性がチェックされるまで、条件コードは実行ユニ ット253に送られる。全ての必要な状態フラグについての有効な値が全て得ら れてはいない場合には、RegOpは、未だ利用可能でないレジスタオペランド値と 同様に、オペランドフォワードステージ440内に停止状態に保持される。 BRCONDは実際の実行処理を必要としない。代わりに、BRCONDが継続中であって 、スケジューラ280の最底部に到達する前に、BRCONDは正しく予測されたか否 かをリゾルブされる。BRCONDは、1サイクル当たり1BRCONDまでの割合で順次リ ゾルブされる。BRCONDが列4に到達すると、状態フラグハンドリングロジック5 38が、レジスタファイル290またはBRCONDよりも古いオペレーションの何れ かからBRCONDの評価のための有効な状態フラグが利用可能であるかを判定するた めのチェックを行う。フラグハンドリングロジック538はまた、BRCONDの評価 のために必要な状態フラグを提供する古いオペレーションがあれば、それが完了 したか否かを判定する。所望の状態フラグのための値が依然として利用可能でな い場合には、BRCONDのリゾリューションは、BRCONDを含むOpクワッドのシフト を禁止することにより停止状態に保持される。次のリゾルブされていないBRCOND のために必要な状態フラグ値が利用可能である場合、状態フラグハンドリングロ ジック538は、BRCOND内で特定された条件コードが正しく予測されたか否かを 判定する分岐評価ユニット257に状態フラグ値を転送する。BRCONDが誤って予 測された場合、再起動信号が、命令フェッチを開始するように発せられ、正しい 分岐アドレスにて命令デコーダ(図2)の一部をデコードする。オペレーション が正しく予測されている場合には何も起きない。BRCONDのレゾリューションが、 アボート不可能なRegOpの実行のために重要である。アボート不可能なRegOpの実 行は、アボートまたはundoできない変化を引き起こす。従って、アボート不可能 なRegOpは、RegOpの実行が安全となるまで実行ステージ450に進むのを妨げら れる。これは、アボート不可能なRegOpが実行ステージ450に進めるようにな る前に、全ての先行するBRCONDをレゾルブし、それらが正しく予測されたことを 判定することを必要とする。従って、先行するBRCONDがレゾルブされない状 態であったり、誤って予測されたことが見いだされる限り、アボート不可能なRe gOpは、オペランドフォワードステージ440内に停止状態で保持される。先行 するBRCONDが正しく予測された場合、遅れは一時的であるが、先行するBRCONDが 誤って予測された場合、RegOpは、やがて実行されるアボートサイクルがスケジ ューラ280をフラッシュするまで停止状態に保持される。 ベクトルデコーダ244は、EmcodeROM246からアボート不可能なRegOp を生成する。EmcodeROM246に於ては、アボート不可能なRegOpの結果に、 非明示的に依存するオペレーションは、アボート不可能なRegOpを含むOpクワ ッドの直前のOpクワッドに於て許されない。従って、列4に於てアボート不可 能なRegOpが実行された場合、列5に於けるオペレーションは非明示的なアボー ト不可能なRegOpに対する依存性を有したかもしれない全ての古いRegOpは、アボ ート不可能なRegOpが列4に於て実行される前に退避し、従って終了している。III .A 発行ステージ スケジューラ280は、発行スキャン及びオペランドを必要とする各実行パイ プラインについて並列に選択及びブロードキャストフェイズ431及び432を 行う。実施例に於ては、発行ステージオペレーションは、ロードユニット251 、ストアユニット252、レジスタユニット253及びレジスタユニット254 について並列に実行される。III .A.1 発行選択フェーズ 各サイクルに於て、スケジューラ280は、並列実行可能な各ユニットに対し て発行するべきオペレーションを選択しようとする。実施例に於ては、スケジュ ーラ280は。LU、SU、RUX及びRUYパイプラインに向けて発行するべきLdOp、St Op及び2つのRegOpを選択する。発行選択フェーズ431について、スケジュー ラ280は、最も古いオペレーシ ョンから最も新しいオペレーションについて、順番にスケジューリングリザーバ 540内の全てのエントリーをスキャンし、エントリーのフィールド状態及びタ イプに基づき発行されるべきオペレーションを選択する。発行選択431は、オ ペレーション同士が互いに有するかもしれないレジスタ状態またはメモリ依存性 を考慮しない。これは、発行選択プロセスを単純化し、発行選択フェーズ431 が比較的大きなリザーバ540について迅速に完了するのを可能にする。 発行選択は、4つの処理パイプラインのそれぞれについて同時であってかつ互 いに独立している。各パイプラインLU、SU、RUXについて、フィールドタイプに より特定されるパイプラインが実行可能であるような、状態フィールドにより特 定される次の未発行のオペレーションを選択する。即ち、次の未発行のLdOpがロ ードユニット251から選択され、次の未発行のStOpがストアユニット252か ら選択され、次の未発行RegOpがレジスタユニット253について選択される。 レジスタユニット254については、パイプラインRUXのために選択されたRegOp に引き続くRegOpが選択される。概念的にはパイプラインRUYのための発行選択は 、RUXの発行選択に依存するが、物理的にはRUYのための発行選択は、RUYの発行 選択と並列に実行される。 スキャンについては、各スケジューラエントリーは、(xxをLU、SU、RUX及びR UYとしたときに、)パイプラインxxについて発行選択のために対応するオペレー ションが現在利用可能であるか否かを示す4ビット(即ち各パイプライン毎に1 ビット)のIssuableToxxを生成する。パイプラインxxのための発行選択プロセス は、ビットIssuableToxxセットを含むエントリーを探すために最も古いスケジュ ーラエントリから最も新しいスケジューラエントリに向けてパイプラインxxに対 するスキャンを行う。パイプラインLU、SU及びRUXについては、所望のビット ITIssuableToLU、IssuableToSU或いはIssuableToRUXを有するものと見いだされ た第1のオペレーションが、LU、SUまたはRUXパイプラインに対して発行が選択 されたものからなる。パイプラインRUYのための発行選択は、パイプラインRUXの ために選択されたオペレーションに引き続くIssuableToRUYセットを備えた第1 のオペレーションを選択する。 オペレーションは、スケジューラ280にロードされた直後に発行選択の候補 たりうる。即ち、スケジューラ280に於ける第1のサイクルの間にオペレーシ ョンを発行する事ができる。このような場合、サイクルの初期に於てTypeビット 及びビットSOのみが有効であることを要する。エントリーの他の全てのフィール ドは、発行選択フェーズ431の終わりに生成することができ(即ち0.5サイ クル後)、ブロードキャストフェーズ432のためのスケジューラエントリー内 で有効であればよい。発行のために選択されたオペレーションがオペランドフォ ワードステージ440に進まない場合、オペレーションは未発行のままとどまり 、次のクロックサイクルの間にオペレーションが発行を互いに競い、所定の確率 で再び選択されることとなる。III .A.1.a 発行選択スキャンチェーン 本発明のある実施例に於ては、スケジューラ280は、エントリーに対応する ロジックブロックから形成されたスキャンチェーン回路を用いてオペレーション をスキャンする。各スキャンチェーンは、ある種の加算器に於て用いられるキャ リーチェーンと同様のものである。ロードユニット、ストアユニット、またはレ ジスタユニットXのための発行選択スキャンチェーンに於て、最も古いエントリ ーへの「スキャン」ビットCin入力は、エントリーの1つに於けるスキャンビッ トを殺すまでスキャンチェーン内を論理的に伝搬する。エントリーが所望の形式 のオペレ ーションに対応する場合、即ちIssuableToxxが設定された場合、エントリーはス キャンビットを殺す。レジスタユニット254に発行されるべきオペレーション をスキャンするために、レジスタユニット253に発行されるべきオペレーショ ンに関連するエントリーに於てスキャンビットが論理的に生成され、このスキャ ンビットは、レジスタユニット254に発行可能なオペレーションに対応するエ ントリーによって殺されるまで伝搬する。スキャンビットを殺すエントリーは、 実行ユニットxxに向けて発行されるべきオペレーションに対応するエントリーと して、それ自身を特定するべく信号IssueOpToxxを設定する。このようにして、 選択されたエントリーは、ブロードキャストフェーズ431によって必要となる 適切な対応をとる。実行ユニットxxのためのスキャンビットが殺されることなく 全てのエントリーに向けて伝搬した場合、スケジューラ280に於けるどのエン トリーも、ユニットxxに対して発行可能なオペレーションに対応せず、どのオペ レーションも発行のために選択されない。 スキャンビット信号が、スケジューラ280内のあらゆる単一のエントリーを 経て直列に伝搬するようなスキャンチェーンは、比較的単純であるのに対して、 より一層高速な対応が必要となる。伝統的なGenerate-Propage-Killキャリーチ ェーンに用いられているのと同様のルックアヘッド技術を適用することができる 。あるルックアヘッド技術は、エントリーを4つのグループに分類し、各グルー プはスキャンビットを生成し、伝搬し、これを殺す。ルックアヘッドはグループ 発生、伝搬及びキルタームが、単一エントリータームから並列に決定され、スキ ャンがグループを通過するか否かは、グループに於ける全てのエントリーの信号 が伝搬するのを待つことなく決定されることから、より高速である。グループタ ームの逐次的な組み合わせによって、全てのスケジ ューラリザバーが単一のグループを構成することから、スキャンビットの信号の 伝搬は実際には何ら発生しない。 LU、SU及びRUXスキャンチェーンについては、単一エントリーキルタームKが信 号IssuableToxxをなす。発生タームDは全て0であって、伝搬タームPは、対応す るKタームの補数である。アペンディクスBの表B.28は、LU、SU及びRUXス キャンチェーンのための単一エントリータームを示す。アペンディクスBの表B .29は、パイプラインLU、SU及びRUXのための発行選択スキャンチェーンに用 いられるグループタームPgrp及びKgrpを記述する。 図8A及び図8Bは6つのエントリーのルックアヘッドグループを用いたRUX スキャンチェーンの一部を実現するロジック800を示す。より多数のまたはよ り少数のエントリーのグループを用いることもできるが、1グループ当たり6つ のエントリーは、24のエントリーを4つの象限に区画し、グループタームを処 理するために用いられるワイヤの数を減少させることができる。図8Aに示され るように、各象限は、象限3、2、1または0のためのグループキル信号Kgrp3 、Kgrp2、Kgrp1またはKgrp0を生成し、互いに協働することにより6入力ORゲ ートとして機能する、関連するORゲート810及び812及びNANDゲート814 を有する。ORゲート810及び812への入力は、パイプラインRUXのための単 一エントリーキルタームであるIssuableToRUX信号である。パイプラインRU及びS Uのためのスキャンチェーンは、互いに同一であるが、但し、IssuableToRUXに代 えて、それぞれ信号IssuableToRU及びIssuableToSUが入力となっている。 発行選択スキャンは、スケジューラ280に於けるエントリーの物理的な順序 に基づいて最も古いものから最も新しいものへと行われる。象限3は最も古いエ ントリーを含む。信号Kgrp3が設定された場合、象限 3のオペレーションの一つはスキャンビットを殺し、象限3からのオペレーショ ンが発行されるはずである。バッファ823は、象限3の選択するべくチェーン 信号IssueQuadrant[3]を設定する。信号計算が設定されない場合、スキャンビッ トはグループ3へと伝搬することはできるが、象限2,1または0のオペレーシ ョンが選択される場合がある。NANDゲート822は。信号Kgrp2が設定され、信 号Kgrp3が設定されない場合には、信号IssueQuadrant[2]を設定する。同様に、 NANDゲート821及び820は、スキャンビットが象限1または0に伝搬するこ とができ、グループキル信号Kgrp1またはKgrp0が設定された場合、即ちグルー プがスキャンビットを殺すこととなった場合、それぞれIssueQuadrant[1]及びIs sueQuadrant[0]を設定する。グループキル信号Kgrp3の何れも設定されない場合 、どのオペレーションも発行のために選択されることはない。 図8Bは、信号IssueQuadrant[0]が設定された場合に、象限0からオペレーシ ョンを選択するのを示している。それぞれの象限について、ロジック850と同 様の4つの回路が並列に作動する。エントリー5が象限0において最も古いエン トリーであることから、パイプラインRUXに発行可能であって、象限0が発行の ために選択されている場合、エントリー5が選択される。ANDゲート865は、I ssueQuadrant[0]が設定され、IssuableToRUX[5]が設定された場合、エントリー 5が選択されたオペレーションを含むことを示すために、IssueOpToRUX[5]を設 定する。ANDゲート860〜864は、エントリー0〜4に対応し、そのオペレ ーションがRUXに発行可能であって、象限0に於けるより古いオペレーションがR UXに発行可能でない場合に、選択されたオペレーションを特定するために信号Is sueOpToRUX[0:4]に於ける対応するビットを設定する。NORゲート870〜873 は、より古いエントリーがRUX に発行可能でないことを示すために、対応するNANDゲート860〜863に対し て信号を設定する。 回路800及び850に代わる回路として、アペンディクスBに於ける表B. 29の方程式を実現しうる任意のロジックを用いることができる。 図8Aのロジック800は、選択されたエントリーが象限0、即ち最も後に検 索された象限であっても、信号IssuableToRUX[23:0]の入力から3つのゲートの 遅れの後に信号IssueQuadrant[3]を生成する。ルックアヘッド技術を用いない場 合、スキャンビットは、オペレーションが選択されていない場合はスケジューラ 全体を伝搬しなければならない。これは、実施例においては24以上のゲート遅 れに相当する。従って、ルックアヘッドスキャンチェーンは、スキャンビットが 全てのエントリーを伝搬するようなシリアルスキャンチェーンよりもかなり高速 であるのが通常である。III .A.1.b RUY2のための発行選択スキャンチェーン RUYスキャンチェーンはより複雑であって、4つのタームG、P、K及びOを用い る。タームG、P及びKは、従来の生成−伝搬−キル(generate-propage-kill)ター ムと同様である。このタームは、ただ1つのオペレーションのみが選択されるの を確実にする。エントリーiのための単一エントリー生成タームGは、信号Issua bleToRUX[i]であり、タームOはタームGに等しい。エントリーiのための単一エ ントリーキルタームKは信号IssuableToRUY[i]であり、Pタームは対応するKター ムの補数である。 ルックアヘッド技術を、パイプラインRUYのための発行選択において用いるこ ともできる。概念的には、RUYスキャンチェーンのためには、RUXに発行されるべ く選択されたオペレーションを含むエントリーによ ってスキャンビットが生成され、パイプラインRUYに対して発行可能な、次のよ り新しいオペレーションによって殺される。グループ内のエントリーがスキャン ビットを生成し、グループ内のそれに続くエントリーが何れもスキャンを殺さな い場合には、グループは出力スキャンビットを生成する。グループは、グループ 内の各エントリーがスキャンビットを伝搬させる場合には、スキャンビットを伝 搬させる。一旦生成されたOタームは、新たなエントリーが新たなスキャンビッ トを生成するのを妨げ、グループ内の何れかのエントリーが単一エントリーOタ ームを生成した場合には、グループOタームが生成される。アペンディクスBに 於ける表B.30の於ける方程式は、RUYスキャンチェーンに於ける単一エント リータームからグループタームを生成するロジックをまとめて示す。 図9A、9B及び9Cは、初期にスケジューラ280を5つの3エントリーグ ループに区画するパイプラインRUYのための発行選択スキャンチェーンを示す。 図9Aにおいて、表B.30に示されたロジックを実現するロジックブロック9 10は、グループタームGgrp[7:1]、Pgrp[7:1]及びOgrp[7:1]を、単一エントリ ー信号G[23:3]及びO[23:3]から生成する。最も新しいグループのためのグループ タームのエントリー0〜2は下記する理由により必要とされない。グループター ムは、より大きなグループのタームを構成するべく3段階で組み合わされる。回 路900は、最も古い63、6、9、12、15、18及び21エントリーを含 むグループのために、タームG_7、G_67、G_567、G_4567、G_3567、G_234567及び G_1234567としてグループタームを生成する。 ロジックブロック920を含む回路900の第1のステージは、3つのエント リーの隣接するグループからのグループタームを組み合わせて、 3つのエントリーのためのグループタームを生成する。ロジックブロック930 を含む第2ステージは、6つ又は3つのエントリーの隣接するグループからのグ ループタームを組み合わせて、9つ又は12のエントリーのためのグループター ムを生成する。ロジックブロック940を含む第3ステージは、12、6つ又は 3つのエントリーの隣接するグループからのグループタームを組み合わせて、2 1、18又は15のエントリーのためのグループタームを生成する。 ロジックブロック920、930及び940は、グループXのためのグループ タームGX、PX及びOXを、次の新たなグループYのためのグループタームGY、PY及 びOYと組み合わせ、グループX及びYの連結であるグループXYのためのタームGXY 、PXY、OXYを生成する。本発明のある実施例においては、ブロック923、93 0及び940は以下の方程式を具現化したものからなる。 図9Bに示された回路は、ブロック920、930及び940の一実施例であ る。図9Bに於て、グループ1及び2のための入力信号及び出力信号は、グルー プ1及び2の結合(union)であるが、任意の連続するグループをもってグループ 1及び2を置換することができる。あるいは、他の均等なロジックを用いたり、 異なるステージ、ブロック920及び930またはブロック930及び940を 反転したロジックをもって実現することもできる。更に、以下に述べるように、 最後のステージ940からの伝搬タームは必要ではなく、例えはANDゲート92 2を省略するなど、伝搬方程式を具現化しないことによってブロック940を単 純化することができる。 回路900からの所望の出力信号は、Gターム及びOタームである。出力信号G_ 7、G_67、G_567、G_4567、G_3567、G_234567及びG_1234567は、先に生成された スキャンビットが、グループ6、5、4、3、2及び1に到達したか否かを示し 、ここでは信号CinGrp[6:0]と呼ばれている。信号O_7、O_67、O_567、O_4567、O _3567、O_234567及びO_1234567は、スキャンビットは、対応するグループに到達 する前に殺されたか否かを問わず、スキャンビットがグループグループ6、5、 4、3、2及び1に先だって生成されたか否かを示す。信号O_7、O_67、O_567、 O_4567、O_3567、O_234567及びO_1234567は、ここでは信号OinGrp[6:0]と呼ばれ る。 複数ビット信号IssueOpToRUY[23:0]を、グループ信号CinGrp[6:0]及びOinGrp[ 6:0]、並びに単一エントリー信号P、K、G及びOから生成することができる。図9C は、RUY実行ユニットに対して発行されるためのエントリーを選択するロジック を示す。エントリー23から21への信号IssueOpToRUY[23:21]を生成するロジ ックは、最も古いグループであるグループ7に何らグループ伝搬が行われないこ とから、他のグループのためのロジックと相違する。グループ6のためのIssueO pToRUY[20:18]を生成することが示されたロジックが、グループ5〜0のそれぞ れについて繰り返される。アペンディクスBの表B.31の場合と同様に、最後 のグループ0からのグループ伝搬タームは、発行のためのオペレーションの選択 にとって必要とされない。III .A.2 オペランド情報ブロードキャストフェイズ 処理パイプラインの発行ステージのブロードキャストフェイズの間、実行ユニ ットに発行されるべきオペレーションのオペランドに関する情報は、全てのスケ ジューラエントリー及び外部ロジックにブロードキャストされる。この情報は、 発行されるべく選択されたオペレーションの それぞれのための2つのソースオペランドを記述する。選択されたオペレーショ ンのためのエントリーはまた、選択されたオペレーションに関する情報を外部ロ ジック及び対応する実行ユニットに提供する。 オペランド情報バス552(図5)は、スケジューラ280内に延びている。 オペランド情報バス552の数は、実行ユニットによって必要とされるオペラン ドの最大数に対応する。選択されたオペレーションに対応するエントリーは、対 応するオペレーションが発行されるべき実行ユニットに対応する2つのオペラン ド情報バスを駆動する。各オペランド情報バス552は8ビット幅を有し、ソー スオペランドとして5ビットレジスタSrc1Reg[4:0]またはSrc2Reg[4:0]及び3ビ ットバイトマークSrc1BM[2:0]またはSrc2BM[2:0]を伝送する。表B.31は、エ ントリーロジックがペランド情報バス552を駆動する要領を記述する。 各エントリー内の比較ロジックは、ブロードキャストオペランド情報を、比較 を行っているエントリーのオペレーションのためのデスティネーションレジスタ 情報に関すると同様な情報と比較する。比較ロジックは、一致するレジスタ数及 びオーバーラップするバイトについてチェックする。即ちオペランドにとって必 要なバイトの一部または全てが、オペレーションによって変更されあるいは将来 変更されることになる。複数比較(オペランド情報バスの数×エントリーの数) の結果として得られるのは、次の処理フェーズ即ちオペランド選択フェーズ44 1の間に発生するアクションを制御する信号からなる。表B.32は比較を行う ロジックを示す。次の方程式は基本的な比較を簡潔に示している。 但し、XXsrcYは、LUsrc1、LUsrc2、SUsrc1、SUsrc2、RUXsrc1、RUXsrc2、RUYsrc 1及びRUXYsrc2のいずれかであり、busは、オペランド情報バス552の1つであ るprndInfo_XXsrcY信号を表す。 比較の結果得られた「一致」信号OprndMatch_XXsrcYは、ブロードキャストフ ェーズの結果として得られたもので、オペランド選択に用いられる。これは、各 エントリー毎に全てのエントリーで同時に行われる。即ち、各エントリー内に於 て、4つの一致信号がオペランド選択ロジック532にパイプされる。全ての一 致信号は、各エントリーについてローカルの状態に留まり、次のパイプラインス テージに用いるためにレジスター内にラッチされる。要するに、各エントリー内 に於いて8つのオペランドバスコンパレータが、8つの制御信号を、オペランド 選択ロジック532の8つの塊に供給する。最下列内の各エントリー内に於ける 一致信号は、これらのオペレーションのレジスタの結果を構造(architechtural) レジスタファイル290にコミットすることに関連する、追加の信号によりゲー トされ或いはマスクされる。以下のオペレーションコミットユニット260に関 する記述を参照されたい。 各エントリーは、エントリー内のオペランドマッチレジスタ内に一致するビッ トをロードするのを実際に制御するわけではない。グローバルロジック520は 、発行されたオペレーションがオペランドフォワードステージ440に進むか否 かを示す信号LUAdv0、SUAdv0、RUXAdv0及びRUYAdv0を生成し、一致信号は単にラ ッチされるのみで、オペレーションが実際にオペランドフォワードステージ44 0に進む場合に利用される。ロードユニット、ストアユニット252、レジスタ ユニット253及びレジスタユニット254に対応する4つのオペレーション情 報バスは、発行されたオペレーションを記述する追加の情報を提供する。OpInfo フィールドと呼ばれる追加の情報が、ブロードキャストフェーズ の間にスケジューラ280から読み出され、このオペレーションが、オペランド フォワードステージに実際に進む場合には、外部パイプラインレジスタ内にラッ チされる。表B.33はオペレーション情報信号を発生するロジックについて記 述している。 ブロードキャストフェーズの間に提供されるSrc1/2Reg及びSrc1/2BMフィール ドは、次の2つのフェーズ即ちオペランドフォワードステージの間に様々な目的 のために利用される。OpInfoフィールドは、単に(対応する信号XXAdv1により制 御される第2のセットのパイプラインレジスタを介して、)対応する実行ユニッ トに向けて「パイプを流れる」。RUX及びRUYオペレーションについては、対応す るバイトマークSrc1/2BMも、単に対応するレジスタユニットに向けて「パイプを 流れる」。III .B.オペランドフォワードステージ オペランドフォワードステージはオペランド選択フェーズ及びオペランド転送 フェーズからなる。III .B.1 オペランド選択フェーズ オペランドフォワードステージに於て、サイクル毎にスケジューラ280は、 フェッチされつつあるオペランドのために値を供給するエントリーを選択するた めに、発行ステージロジックにより生成されオペランドマッチレジスタに記憶さ れたマッチビットを用いる。スケジューラ280はまた、オペランドの値がスケ ジューラエントリーまたはレジスタファイル290の何れかから得られたかを各 オペランドについて判定する。レジスタファイル290は、マッチしたエントリ ーがない場合にはデフォルトとなる。オペランド転送フェーズの間、選択された エントリー及びレジスタファイル290は、オペランド値をオペランドバス55 4にドライブし、オペランド値を対応する実行ユニットに転送する。 発行ステージに於ける発行選択プロセスと同様に、オペランド選択は、独立か つ同時に行われる。従って、オペランド選択ロジック532は、オペランドを提 供するための8つのスキャンチェーンを有する。各エントリーは、各オペランド バス及び対応するスキャンチェーンのためのオペランドマッチレジスタを有する 。各スキャンチェーンは、そのオペランドがフェッチされつつあるオペレーショ ンを含むエントリーよりも古いが、一致が得られた最新のエントリーを検索する 。論理的には、そのオペランドがフェッチされつつあるオペレーションから、古 いエントリーに向けて、オペランドマッチビットセットを有する最初のエントリ ーへとスキャンが開始される(スキャンビットが生成される)。マッチビットセ ットを有する最初のエントリーが見出されると、次のフェーズで、対応するオペ ランドバスを駆動することにより、該エントリーは所要のオペランドを供給する 。 オペランドがフェッチされつつあるオペレーションが、オペランドフォワード ステージから前進しない場合、再び次のサイクルでオペランド選択プロセスが実 行される。オペレーションは、例えば一致するビットセットを有するエントリー がオペランドのために必要な全てのバイトを変更せず、従ってそれを供給できな い場合に、前進することができない。スケジューリングリザバー540内のオペ レーションのフィールド状態及び物理的位置がサイクル毎に変化することから、 新たな選択の結果は、現在のサイクルの結果とは異なる場合がある。要するに、 各サイクルの間に、選択プロセスは、そのサイクルの間に適切なオペランド値を フォワードするために何が必要であるかを判定する。 オペランド値のための適当なソースを見いだすためのスキャンは、上記した発 行選択スキャンと同様に行うことができる。しかしながら、スキャンは発行選択 スキャンの方向とは逆方向に古いオペレーションに向 けて行われる。更に、オペランド選択については、スキャンチェーンは、propag ate-killチェーンではない。オペランド選択スキャンチェーンが、従来のキャリ ー即ちgenerate-propagate-killチェーンと同様に行われる。スキャンチェーン への初期のスキャンビットCinは0であって、オペランドがフェッチされつつあ るオペレーションに対応するエントリーはスキャンビットを生成する。スキャン キルは、オペランド一致ビットセットの最初の次のエントリーにおいて発生し、 スキャン伝搬は、それらの間のエントリーにおいて発生する。 グローバル専用ロジック520は、何れかのエントリーが選択され、従ってレ ジスターファイル290がそのかわり選択されてオペランドを提供するべきか否 かを判定するために、最後/最も古いエントリーからの最後の出力スキャンビッ トCoutを用いる。もしCoutが設定された場合、グローバル制御ロジック520は レジスタファイル290を選択する。選択されたソースは、オペランドフォワー ドステージの後半部分であるオペランド転送フェーズの間に、対応するオペラン ドバスを駆動する。オペランド選択フェーズの間に、名目上所望のオペランド値 を保持するレジスタファイル290に於けるソースレジスタが、レジスタファイ ル290がオペランドバスを駆動するべく選択されたときに読み出される。 発行選択スキャンチェーンと同様に、ルックアヘット技術を用いることにより 速度を向上されることができる。アペンディクスBの表B.34は、従来のgene rate-propagate-kill方程式と同様のルックアヘッド方程式に基づくオペランド 選択スキャンチェーンの一例を示しているIII .B.2 オペランド転送フェーズ オペランドフォワードステージ440のオペランド転送フェーズ442の間、 8つのソースオペランドのそれぞれの値がフェッチされ、オペ ランドバス554を経て、関連する実行ユニットの入力レジスタに転送される。 オペランド値は32ビット量であるが、そのうちにいくつかのバイトが未定義で ある場合がある。正しいオペレーションの間、実行ユニットは未定義のオペラン ドバイトを用いない。どのエントリーまたはレジスタファイル290も、それぞ れのオペランドバス554を駆動可能であって、スケジューリングリザバー54 0の各エントリーは、バスの一部及びまたは全ての駆動することができる。 実施例においては、192のオペランド選択信号及び8のスキャンチェーン信 号Coutが、オペランド転送フェーズの間に生成される。これらの信号に基づき、 各選択されたエントリーに於けるロジックが、エントリー内の適当なバスドライ バをイネーブルする。エントリーの何れもオペランドのために選択されない場合 、レジスタファイル290は、そのオペランドのためにドライバをイネーブルす る。アペンディクスBの表B.35は、オペランドバス554のためのドライバ をイネーブルするためのロジックについて記述している。 実行ユニット251〜254に於けるオペランドレジスタは、それに続くパイ プラインステージにおいて使用するために、オペランドバス554からのオペラ ンド値を捕捉する。グローバル制御ロジック520は、オペランドレジスタのロ ードを制御するために、処理パイプライン毎に1つの制御信号を生成する。オペ ランドフォワードステージのオペレーションが実行ステージ450に進める場合 、新たなオペランド値が実行ユニットにロードされる。グローバル信号にLUAdv1 はLUステージ1ソースオペランドレジスタを制御する。同様に、信号SUAdv1、RU XAdv1及びRUYAdv1はそれぞれオペランドレジスタのSU、RUX及びRUYローディング を制御する。 4つの処理パイプラインのオペランドフォワードステージ440のオペランド 転送フェーズ442の間、オペランド値を提供するべく選択されたオペレーショ ンのそれぞれについての情報もスケジューラ280から読み出される。それぞれ のオペランドバス554はフェッチされつつあるオペランドの起源(origin)を記 述するオペランド状態信号OprndStatを伝送する関連するオペランド状態バス5 53を有する。あるエントリーからのオペランド状態信号は、オペランド値を提 供するエントリーのフィールドState、DestBM、Type及びExeclの連結である。外 部ロジックは有効なオペランド値のソース及び利用可能性を判定するために、オ ペランド転送フェーズの間にその情報を利用する。 オペランド状態バス553が定義された値を転送し、それらの値が、この情報 を用いたロジックによって適当な挙動を引き起こすのを可能にするために、レジ スタファイル290はまた、オペランド状態バス553のためのドライバのセッ トを備えている。アペンディクスBの表B.36は、オペランド状態信号及びそ の生成について記述している。 実行ユニットに送られたソースオペランドのそれぞれは、3つの可能なソース の何れかから送り込まれる。それらのソースは、スケジューラエントリー、レジ スタファイル290及びこの、このまたは他の実行ユニットの結果バスである。 オペランド転送フェーズ442は、エントリーからの送り出しをカバーする。レ ジスタファイル290は、オペランド選択フェーズの間に、スケジューラの活動 と並列してアクセスされる。特に、所望のオペランドのレジスタ番号は、ブロー ドキャストフェーズの間にオペレーションエントリーからブロードキャストされ 、レジスタファイル290の適当なリードポートに送られる。各オペランドが提 供されるために、スケジューラ280はスケジューラエントリまたはレジスタフ ァイル290が、当該オペランドに対応するオペランドバス55 4を駆動するか否かを判定し、結果として得られたオペランドは、オペランド転 送フェーズの間に、オペランド554を介して実行ユニットに転送される。 図10に示されるように、オペランド554は、実行ユニット251〜254 のオペランド入力レジスタ1021〜1024及び1031〜1034にマルチ プレクサ1010を介して結合される。実行ユニット251〜254からの結果 バス561〜564も、マルチプレクサ1010に結合されている。このように 、5本のオペランドバスは、各実行ユニットの各オペランド入力に接続され、即 ちスケジューラ280またはレジスタファイル290からのオペランドの入力専 用の1本のオペランドバス554、実行ユニット251〜254からの4本の結 果バスからなる。オペランド転送フェーズの間、スケジューラ280は、各オペ ランド入力レジスタにおいて5対1マルチプレクサ1010のための選択信号を 生成する。オペランド状態信号は、所望のオペランド値が実行ユニットから正に 利用可能になった或いはなり得るか否かを示すもので、その場合には、実行ユニ ット251〜254からの結果バス及び値Result_XXが選択される。そうでない 場合は、オペランドバス554が選択される。オペランドの有効性は、オペラン ドフォワードステージ440に於ける関連するオペレーションが実行ステージ4 50に進むか否か、即ち実際に実行ユニットに入るか否かに対してのみ影響を与 える独立した問題である。III .B.3 ディスプレースメントフォワーディング レジスタオペランドに加えて、スケジューラ280は、オペランド転送フェー ズ442の間に、LU及びSU処理パイプラインに向けてディスプレースメントオペ ランドをフェッチしフォワードする。ロードユニット251及びストアユニット 252は、それぞれ3本の入力オペランドバ スを有する。即ち2本のレジスタオペランドバス554及び1本のディスプレー スメントバス555である。ディスプレースメントオペランドは32ビット量で あるが、ディスプレースメントオペランドのビットのあるものは未定義であって 、従って実行ユニット251及び252の正しいオペレーションの間に使用され ない。 スケジューラ280は、オペレーションレジスタ結果値と同様にディスプレー スメントを取り扱う。ディスプレースメントは、まず使用されるまでエントリー の32ビットDestValフィールド内に記憶され、オペランド転送フェーズ442 の間に必要に応じてディスプレースメントバス555に向けてドライブされる。 ディスプレースメントは、常にRISC86オペレーションのイミーディアット 値であって、従ってレジスタファイル290からフォワーディングディスプレー スメント値は発生しない。フィールドDestValはまた、LdOp及びStOpのあるもの からの結果値としても用いられるが、ディスプレースメントがエントリーからフ ォワードされた後になるまで、即ちオペランドフォワードステージ440の後に 至るまで結果値がスケジューラエントリーにロードされないことから、フィール ドDestValが2つの用途に用いられることにより矛盾は生じない。 オペレーション内でコミットされる小さな(8ビット)ディスプレースメント は、大きな(16/32ビット)ディスプレースメントとは異なった取り扱いを 受ける。オペレーションデコーダ510のサインは、対応するLdStOpを保持する エントリーのDestValフィールドに小さなディスプレースメントをロードする前 に、小さなディスプレースメントを伸張する。大きなディスプレースメントは、 ディスプレースメントを用いるLdStOpの直前のLIMMOpのためのエントリーのDest Valフィールド内に記憶されているものと推定される。一般に、先行するエント リー は、完成した形でスケジューラ280にロードし得る"LIMMt0,[disp]"オペレー ションを保持し、LIMMOpは発行或いは実行されない。 各サイクル中に、ディスプレースメントバス550をドライブするDestValフ ィールドを選択することは、スケジューラエントリーのスキャニングを引き起こ す。代わりに、各エントリーはその状態及びTypeフィールドから、DestValフィ ールド値を適当なディスプレースメントバス555に設定するための先行するエ ントリーに於けるそのドライバまたはそのドライバをイネーブルするか否かを判 定する。アペンディクスBの表B.37は、各エントリー内のディスプレースメ ントバスドライバをイネーブルするためのロジックをまとめて示している。IIIB.4 イミーディアット値フォワーディング RISC86オペレーションの例示的なフォーマットでは、イミーディアット 値が、RegOpsのオペランドsrc2からなる。スケジューラ280は、イ ミーディアット値を取り扱い、同様に変位を取り扱う。RISC86命令セット は、RegOps内の小さい(8ビットの)イミーディアット値のみをもち、オ ペレーションレコーダ510は、RegOpを保持するエントリのフィールドD estVal内のイミーディアット値を記憶する。すなわち、イミーディアット 値は、エントリのDestValフィールド内に記憶された変位と類似し、しか し、レジスタオペランドバス554(特に、RUXsrc2及びRUYsrc2 オペランドバス)を前進させられる、類似のレジスタオペランドに類似する。S rc2オペランドに対するイミーディアット値は、レジスタの値の代わりに、オ ペランドフォワードステージ440のオペランド転送フエーズ442の間に、対 応するレジスタ実行ユニットに向けて進められる。レジスタ値の供給源の選択( すなわち、スケジューラエントリオアレジスタファイル290)が禁止され、問 題となっているエントリは、 直接、適切なオペランドバス554へそのDestValフィールドをドライブ する。 RUX/RUY src2オペランドの選択の禁止は、オペランド選択フェー ズ441が、RegOpを保持しているエントリが通常オペランドの選択のスキ ャンチェーン内でアサートしている、単一のエントリ生成タームをマッピングす ることによって、行われる。これは、RUXsrc2及びRUYsrc2に対し て別個にかつ独立して行われ、RUX/Ysrcのスキャンチェーンによる任意 のエントリの選択を防止する。イミーディアット値を含むエントリは、また、デ フォルトのオペランドのソースとして、レジスタファイル290の選択を禁止す る。テーブルB.34に記載されたRUX及びRUYオペランド選択スキャンチ ェーンに対する単一エントリタームは、その禁止を表す。 各サイクルの間のRUXsrc2及びRUYsrc2オペランドバスへの駆動 をするための「イミーディアット値」DestVal値の選択は、スケジューラ エントリのスキャンを必要としない。代わりに、各エントリが、そのDestV alフィールドの、エントリの状態フィールド及び関連するビットに基づく適切 なオペランドバス554へのドライブを可能とする。同じドライバが、レジスタ オペランド値のフォワーディング及びイミーディアット値オペランドのフォワー ディングのために用いられる。アペンディクスBの表B.38は、イミーディア ット値をオペランドバス554へドライブするための回路を表している。エント リがイミーディアット値をオペランドバス554へ駆動するとき、エントリは、 また、関連するオペランド状態バス553に対しても駆動する。同じバスドライ バ及びレジスタオペランドに対するのと同じ入力のドライブの値が、イミーディ アット値に対して用いられ、但し、表B.38に示された追加のタームを伴って いる。III.C データオペランドのフェッチング StOpsは、3個のレジスタソースオペランドとを有し、宛先レジスタは有 しない。これに対して、他のオペレーションは、2個までのソースオペランドと 1つの宛先とを有する。StOpに対する第3のソースオペランドが、ストアさ れるべきデータを供給し、しばしばデータオペランドと本明細書では呼ばれる。 データオペランドは、StOpの実行を開始する必要がないが、しかし、StO pの完了のためには必要である。データオペランドのフェッチは、その他のソー スオペランドのフェッチと同様に実行されるが、ここで、「ノーマルな」オペラ ンドフェッチプロセスは、発行ステージ430の間に起こり、オペランドフォワ ードステージ440、データオペランドフェッチプロセスは、SU実行ステージ 450及び460の間に起こる。スケジューラ280は、SU実行ステージ46 0の間にデータオペランドの利用可能性をチェックし、そのデータオペランドが 利用可能でない場合に、ステージ460での関連するStOpを保持する。 データオペランドフェッチプロセスは、概ね、2つの主な相違点以外は、上述 された発行及びオペランドフォワードステージと等しい。第1に、オペランド選 択フェーズ456は、発行選択フェーズ431の間に起こるような複数の候補の 間の選択を行うためのスキャンアクロススケジューラエントリを必要としない。 代わりに、SUステージ450でのStOpに関連するエントリは、ステート及 びタイプフィールドからそれ自身を特定し、必要な場合ユニット252を記憶す るためのデータオペランドを供給する。第2の相違点は、StOpのOpInf oフィールドが、データオペランドに対するブロードキャストフェーズ457の 間にユニット252を記憶するための再びの読み出しを必要としないことである 。代わりに、ストアユニット252、StOpが発行されたと きにOpInfo値を保持し用いる。SU発行ステージ430の間のOpInf o値の読み出しは、オペランドフォワードステージ及びSUパイプラインの第1 及び第2の実行ステージを通して下方向に向けて通過する。 アペンディクスBの表B.39は、データオペランド選択及びフォワーディン グのために生成された信号を表している。III.D レジスタオペレーションバンピング スケジューラ280が、一般的に、インオーダー発行選択及び各タイプのオペ レーションに対するプロセシングに基づいて、実行パイプラインを管理する。実 行ユニットに対して発行された「通常の」オペレーションは、オペレーションが 発行された順番でパイプラインを下向きに進む。オペレーションは、SUもしく はLUパイプラインのオペランドフォワードステージで停止された場合、例えば 、そのパイプラインに対して発行されるために現在選択されたオペレーションも また、保持停止されるが、その理由は、オペレーションがプロセスパイプライン 内で互いに通過しないからである。しかしながら、RegOpが、レジスタユニ ット253もしくは254のいずれかのオペランドフォワードステージ内で、1 つもしくは複数の利用できないオペランドの値を原因として、停止された場合、 RegOpは、プロセスパイプラインの外側にバンプされて、非発行状態へ戻さ れる。バンピングによって、RegOpの状態フィールドはb0000へ戻され る。RegOpが、オペランドフォワードステージ445の外へバンプされたと き、そのレジスタユニットに対して発行されるべく選択された他のRegOpが 、バンプされたRegOpが生じた直後に、オペランドフォワードステージ44 0へ向けて、進む。同時に、バンプされたRegODは、直ちに、必ずしも同じ レジスタユニットではないが、あるレジスタユニットへ対して再び発行されるた めの適切な資格を得る。 バンピングは、以下の制約を仮定すれば、全てのRegOpsに適応できる。 第1に、RUXオンリーRegOp(RUXオペランドフォワードステージ)が 、RUXオンリーRegOpがRUXに対する発行のために現在選択されている ときに、バンプされていないことであり、その理由は、バンピングによって、R UXオンリーRegOpsが、互いに関して順序通りに実行されるという制限を 満たすことになるからである。第2に、RegOpが1つ以上のサイクルに対し てストールされるときに、RegOpがバンプされるのみで、そうでない場合オ ペランドフォワードステージ440内にRegOpをより残すことにより、より 有効に実行ユニットのリソースを用いる。表B.12は、RegOpバンピング を行うために、エントリの状態フィールドに変更を与える回路を表している。グ ローバル制御ロジック520は、グローバルバンプ信号BumpRUX及びBu mpRUYを生成し、この2つの信号は、各々、信号RUXAdv0及びRUY Adv0がアサートされることを強制し、適切な発行されたRegOpsがオペ ランドフォワードステージ440へ向けて進むようになっている。グローバル制 御ロジック520に関する以下の説明が、RegOpがバンプされる条件を記載 している。III.E ロード/ストアオーダリング スケジューラ280は、LdOpsとStOpsとの間の必要とされるオーダ リングを保持する。特に、ロード・ストアオーダリングロジック534は、選択 されたLdOps及びStOpsの相対的な年齢を表すことにより、ロード及び ストアのメモリの依存性のチェックをサポートする。LdOpもしくはStOp が、同じアドレスを、まだ完了していないより古いStOpもしくはLdOpと してアクセスする場合、L U及びSU実行パイプラインの実行ステージ460内のオペレーションの保持は 、適切なロード・ストアオーダリングを保つ。 ロード及びストアユニット251及び252は、アドレスコンパレータを含み 、スケジューラ280のオーダリングロジック534は、バス556上に、Ld StOpsの相対的な年齢を表す情報を供給し、LdOpもしくはStOpのい ずれかを第2実行ステージ460に保つかを決定するときに、適切なアドレスの 比較のみが考慮される。相対的な年齢決定プロセスが、発行選択/オペランド情 報ブロードキャストプロセスと同様である。LdOp及びStOpパイプライン に対する実行ステージ460の第1フェーズ463の間に、オーダリングロジッ ク534は、全てのスケジューラのエントリに対して最も古いものから最も新し いものまで、5個の「propagate-kill」スキャンを実行する。2個のスキャンは 、LdOpsを、SUステージ460のStOpと比較し、3個のスキャンは、 StOpsをLUステージ460のLdOpと比較する。第2フェーズ464の 間、実行ステージ460のLdOp及び/もしくはStOpに対するエントリは 、関連する2つもしくは3つのスキャンチェーンからの結果をサンプルし、バス 556に、所望の相対的な年齢の情報を直接表すグローバル信号をSC_SU2 OLDER、SC_SU1OLDER、SC_SU0OLDER、SC_LU2 OLDER、及びSC_LU1OLDERをドライブする。 実行ステージ460もしくはステージ450でのLdOp、及び整合していな いロードの第2部分の実行は、3つのカテゴリーのStOpsに対するLdOp 年齢を決定するのに3つのスキャンチェーンを必要とする。各スキャンチェーン は、1つのカテゴリ内の最も古いStOpに対するスキャンを行う。1つのスキ ャンチェーンは、ステージ460内もしくはステージ450内のStOpを検出 し、整合していない記憶内 容の第2の部分を実行する。他のスキャンチェーンは、ステージ450内のSt Opを検出し、第3のスキャンチェーンは、まだステージ450内にない最も古 いStOpを検出する。スキャンチェーン内の任意のポイントのスキャンビット の状態は、与えられたタイプの最もより古いStOpが見つけだされたか否かを 反映している。すなわち、LdOpに対するエントリは、入力スキャンビットか ら、与えられたカテゴリ内の任意のStOpに対するLdOpの年齢を求めるこ とができる。入力スキャンビットCinが1のとき、スキャン信号は「キル」さ れておらず、与えられたカテゴリのより古いStOpは存在しない。ロード・ス トアオーダリングロジック534は、アドレスコンパレータからのいずれの信号 が適切であるかを求める。 ステージ460もしくはステージ450のStOp及び、整合していないスト アされた値の第2の部分の実行が、2つのカテゴリのLdOpに対するその年齢 を決定するために、2つのスキャンチェーンを必要とする。1つのスキャンチェ ーンは、ステージ460もしくはステージ450での任意のLdOpを検出し、 整合していないロードの第2の部分を実行する。第2のスキャンチェーンは、ま だステージ460内にない任意のLdOpsを検出する。問題とされているSt Opをホールドするエントリに対する入力スキャンビットCinに基づいて、オ ーダリングロジック534は、アドレスコンパレータからのどの信号が不適切で あるかを求める。 各スキャンチェーンは、最も古いスケジューラのエントリから最も新しいもの まで「propagate-kill」チェーンからなる。表B.40(アペンディクスBの) は、ロード・ストアオーダリングを表している。III.F アボートハンドリング アボートサイクルが生じたとき、スケジューラ280がフラッシュされる。全 てのOpクワッドは、全てのOpクワッドフィールドOpQVをクリーンするこ とによって無効化される。エントリのフィールドはまた、無害な値に設定される 。エントリ内のフィールドは、クリーンされなければならず、その理由はフィー ルドOpQVが、Op Quadローディング及びシフティングの制御に影響す るのみで、スケジューラ280内のその他のオペレーションは、フィールドOp QVを無視し、そのエントリが有効であると仮定するからである。スケジューラ 280内の論理的に無効なオペレーションは、有効に変更されるが、有効だがし かし無害なオペレーションに変更される。これを行うために、オペレーションの 状態フィールドが、完了されるように設定され、オペレーションは発行もしくは 実行されないようになっている。DestBM及びStarModフィールドは 、オペレーションが任意のレジスタバイトもしくは状態フラグを変更することが ないことを表すようにセットされる。このような状況に於いて、その他の全ての フィールドは、「害」を起こすことなく任意の値を有することができる。そのよ うなオペレーションは、実質上、No−opオペレーションである。 新たなOpクワッドが、スケジューラ280内にロードされ、スケジューラ2 80がフラッシュされた後すぐに、この新たなOpクワッドは、フラッシュされ 、置き換えられフラッシュされる必要のある既存のOpクワッドの任意のものと は無関係であり、代わりに、その新たなクワッドは、論理的に、アボートの後の 第1の新たなOpクワッドである。これは、アボートもしくは誤って予測された BRCONDの後に起こる。アボートサイクルの後の第1の新たなOpクワッド は、除外条件を原因として遅延される。 実際、後続のシーケンスのイベントは、アボートサイクルの終わりで起こる。 スケジューラ280内の記憶素子は、システムのクロック信号に十分に同期して おり、次のサイクルの境界がくるまで、入力に応答して変化することはない。第 1に、フィールドOpQV、State、DestBM、及びStartMod は、上述されたように起こる。次に、Opクワッドの全て、一部もしくは1つの 位置だけシフトダウンするかOpクワッドのいずれもがシフトダウンしないか、 新たなOpクワッドがスケジューラの一番上のエントリ内へロードされる。除外 に関連したアボートに対して、新たなOpクワッドが、無効化されて、全てのス ケジューラOpクワッドがフラッシュされているので、発生したシフティングは 、一般的にドンドケアである。BRCOND関連のアボートに対して、新たなO pクワッドが有効もしくはエンプティである。 アボート信号は、2つの種類すなわち「早い」及び「遅い」がある。早いバー ジョンは、SC EAbortと呼ばれ、遅いバージョンはSC Abortと 呼ばれている。早いアボート信号は、スケジューラ280のセクションへ転送さ れ、このセクションではアボートのイミーディアット値の通知が必要とされる。 遅いバージョンでは、早いバージョンと同じであるが、フリップフロップによっ て1サイクルだけチェーンされ、より広く転送される。IV.A 外部ロジックによって用いられるスケジューラ情報 グローバル制御ロジック520、及び、実行ユニット251から254などの 外部ロジックが、フェッチオペランド値のブロードキャストフェーズ及びオペラ ンド転送フェーズの間に、スケジューラ280によって提供される様々な情報を 用いる。ほとんどのタイプのオペランドに対して、ブロードキャスト及びオペラ ンド転送フェーズは、実行パイプラインの発行及びオペランド前進ステージの間 にある。ブロードキャスト フェーズの間、そのオペランドがフェッチされるオペレーションに関する情報が 、適切なOpInfoバス551へ読み出され、そのオペランドにソースレジス タ(Src1及びSrc2)とバイトマーク(Src1BM及びSrc2BM) フィールドが、2つの関連するOprndInfoバス552へ読み出される。 StOpsのデータオペランドに対して、ブロードキャストフェーズ及びオペラ ンド転送フェーズが、SUステージ450及び460の間にある。StOpに対 するデータオペランドへの情報が、OprndInfoバス552へ駆動され、 対応するOpInfoは存在しない。記憶ユニット252は、StOpが発行さ れたときからの情報(オペレーション)を保持する。ブロードキャストオペラン ド情報は、次のフェーズの結合の間に用いられる。オペレーション情報は、オペ レーション情報、実行ユニットのパイプラインを単に下に向けて通る。レジスタ ユニット253及び254の場合、OprndInfoバス552からの2ソー スバイトマークSrc1BM及びSrc2BMビットは、パイプラインを下に向 けて通過する。オペランド転送フェーズの間、オペランド値のソースであるオペ レーションの各々に関する情報が、各オペランドバス554に対応するOprn dStatバス553へ読み出される。ソースオペレーションの状態を記述した 情報が、このフェーズの間直接的に用いられ、かつ唯一用いられる。表B41は 、様々な時刻でのスケジューラ280の情報読み出しを表している。IV.B グローバル制御ファンクション これまで、ロジック、ステージエレメント、及びバスが、スケジューラ280 のコアを構成するように説明されてきた。スケジューラ280は、また、スケジ ューラ280内でのシフト、オペレーションの「フィーディング」、及び実行ユ ニット254から251に対するオペランド のフィーディングをコーディネートするグローバル制御ユニット520をも含む 。以下の記述は、オペランドフェッチプロセスの4つのフェーズに対するグロー バル制御ロジック520について説明している。 発行選択フェーズの間、外部事項のみが、各プロセスパイプラインに対する発 行のためにオペレーションが選択されたか否かに関する。的確なオペレーション を見いださなかった各々の発行セレクションに対して、対応するスケジューラの エントリは、OpInfo及びOprndInfoバス551及び552に、ド ライブしない。このプロセスパイプラインに対するこれらのバスの値及び後続の 3つのフェーズは、ドントケアとなっている。唯一必要とされることは、実行パ イプラインのオペランド前進ステージ440に対するオペレーション有効ビット (OpV)が、このパイプラインステージのオペランドフォワードステージ44 0がエンプティであることを表すために、0となることである。 オペランドフォワーディングステージのオペレーション有効(OpV)ビット は、有効なオペレーションがこの実行ユニットに対して発行されたか否かを表し ている。各々の発行選択スキャンチェーンに対する出力スキャンビットCout は、この発行ステージでのオペレーションに対するOpVビットを生成する。表 B.42は、オペレーション有効もしくはOpVビットを表している。グローバ ル信号XXAdv0は、エンプティなオペレーションの進行に続いてパイプライ ンレジスタへのOpVビットのローディングを制御する。アボートサイクルの間 、全てのパイプラインレジスタは、無条件にクリアされて実行ユニットをフラッ シュする。 ブロードキャストフェーズは、そのラッチ情報(すなわちOprndInfo 及びOpInfo値)がスケジューラ280から読み出される パイプラインレジスタを制御する以外には、特別重要なグローバル制御ロジック を必要としない。 オペランド選択フェーズの間、2つの外部アクティビティが行われる。第1に 、ソースレジスタの個数が(すなわち、ラッチされたOprndInfoの値の SrcYRegフィールド)が、前のフェーズで読み出されたものが、レジスタ ファイル290をアクセスするために用いられる。これは、スケジューラ280 内のオペランド選択スキャンとパラレルに行われる。9個までのソースオペラン ドが各サイクルでフェッチできる。したがって、レジスタファイル290は、9 個の対応する読み出しポートを有し、各々のポートはオペランドバス554の内 の1つと対応している。これらのポートに対して提供されたレジスタフィールド は、XXsrcY及びSUsrcStであり、ここでXX={LU,SU,RU X,RUY}andY={1,2}、である。 オペランド選択フェーズの間の第2の外部アクティビティは、オペランドバス 554とオペランド情報バス552の各々に対して、スケジューラ280もしく はレジスタファイル290が次のフェーズの間の値を提供するか否かを決定する ことである。各スケジューラエントリは、それ自身に対して、バスを駆動するか 否かを直接決定するので、グローバル制御ロジック520に対する唯一の関心事 項は、レジスタファイル290がイネーブルされるか否かということである。レ ジスタファイル290のイネーブルは、オペランド選択フェーズの間に任意のエ ントリが選択されたか否かを表す出力スキャンビットCoutに基づく。オペラ ンド選択スキャンチェーンの最後のスキャン信号Coutが、対応するオペラン ドバス554に対してエントリが選択されていないことを表した場合、グローバ ル制御ロジックは、レジスタファイル290をイネーブルして、対応するオペラ ンドバス554とオペランド情報バス552 を駆動する。オペランドバス554の信号を記述する式が、アペンディクスB. 35及びB.36に表されている。オペランド転送フェーズの間、グローバル制 御ロジック520は、RegOpの「バンピング」と、実行ユニットの全ての実 行ユニット入力マルチプレクサ1010と、フェッチされた各オペランド値に対 する有効性の決定と、グローバルパイプラインレジスタの生成に対するそのファ クタが信号XXAdv0を制御する信号HoldXX0の生成とを制御する。 RegOpのバンピングの1回の実施は、グローバルバンプ信号BumpRU X及びBumpRUYの生成及び信号RUXAdv1及びRUYAdv1のアサ ートを行うエントリ及びグローバル制御ロジック502の状態フィールドを変更 する各スケジューラエントリ内のロジックを分離することである。BumpRU X/Y信号の生成は、オペランド転送フェーズの間に、レジスタユニットのソー スオペランド(すなわち、OprndStat RUXsrcY及びOprnd Stat RUYsrcY、ここでsrcY={src1,src2})に対す るスケジューラ280の読み出しを行うOprndStat値に基づく。とりわ け、各オペランドソースに対するフィールド状態及びタイプが、ソースオペレー ションが有効なオペランド値を提供することから少なくとも2サイクルだけ離れ ているか否かを決定するべく試験される。もし、いずれのソースオペレーション も有効なオペランドの値を提供することから少なくとも2サイクル離れている場 合、依存したRegOpは、オペランド前進ステージからバンプアウトされ、R egOpは、RegOpがオペランド前進ステージへ向けて進んでいないときに 、オペランドを提供することから少なくとも2サイクルだけ離れている。LdO pは、LdOpが第1の実行ステージへ向けて前進していないとき、オペランド を提供することから少なくとも2サイクル離れている。 表B.43は、信号BumpRUX/Yの生成を表しており、かついずれがデ ッドロック状態であるかを取り扱うための追加的なタイムアウト事項を含む。オ ペレーションの後の、RUX及びRUYオペランド前進ステージの生成信号RU X/Yタイムアウトに関連する3ビットカウンタが、タイムアウト期間よりも長 い間オペランドフォワードステージに保持される。1つの例としてRUXをあげ ると、RUXオペランド前進ステージがロードされるときは、有効なオペレーシ ョンであるか無効のオペレーションであるかに関わらず、常に、関連するカウン タはスタート値にリセットされる。他の全てのサイクルの間、カウンタは減数さ れる。このカウンタが000に達したとき、RUXタイムアウトが、アサートさ れて、オペレーションが長すぎる期間にわたってホールドアップされたことが表 される。 RUX/Yタイムアウト信号によって、レジスタユニット253及び254の オペランドフォワードステージに対する対応するオペレーション有効信号OpV がセットされる。例えば、信号RUXタイムアウトは、直ちに、信号OpV R UX 0を、0にし、これによって、RUXオペランドフォワーディグステージ を再びロードするためにパイプライン制御信号RUXAdv0がアサートされる 。信号OpV RUX 0は、信号RUXAdv1もアサートされている間に、 RUX実行ステージ450がバンプされたRegOpをチェックしないことを確 実とする。 オペランド転送フェーズ442の間に起こる第2グローバル制御ファンクショ ンは、実行ユニット251から254に接続された各ソースオペランド入力マル チプレクサ1010に対する制御信号を生成することである。上述されたように 、各々の5:1マルチプレクサ1010は、対応するオペランドバス554もし くは、結果バス561から564のうちの1つのバスからオペランドを選択して 、オペランドレジスタ10 21から1024もしくは1031から1034のうちの対応するオペランドレ ジスタへロードする。オペランド転送フェーズ442の間、制御ロジック520 は、バス552からのオペランド状態信号OprndStatを用いて、マルチ プレクサ1010の各々に対する制御信号を生成し、オペランドレジスタへロー ドされるべきオペランドOprndStat SUsrcSt及びOprndS tat XXsrcYを選択し、ここでXX={LU,SU,RUX,RUY} and Y={1,2}、である。とりわけ、グローバル制御ロジック520は 、各オペランドソースに対するステート及びタイプを試験し、ソースオペランド がその実行が完了されたか否かを求め、もし完了されていない場合どの実行ユニ ットがそのソースオペレーションを実行中であるかを求める。オペランドバス5 54は、ソースが、レジスタファイル290、完了されたオペレーション、もし くはそれ自身にsrcのイミーディアット値を提供するオペレーションでのいず れかである場合に、選択される。そうでない場合、ソースオペレーションのタイ プに対応する実行ユニットからの結果バスが、選択される。結果バスからのオペ ランドは、そのサイクル内でソースオペレーションが完了しない限り有効とはな らない。アペンディクスBの表B.44は、各オペランドに対する選択信号の生 成を表している。 オペランド転送フェーズの間に起こる第3のグローバル制御ファンクションは 、実行ユニットソースオペランドレジスタに対して提供される9つのオペランド 値の各々の有効性の決定である。ソースオペランド値が有効であるか否かを表す ために、各ソースオペランドに対して信号が生成される。関連する実行ユニット 入力マルチプレクサ1010の制御と同様に、オペランドの有効性の決定は、バ ス553からのOprndStatの値のフィールド状態及びタイプに基づいて いる。オペランド が有効である場合には、ソースオペレーションはすでにその実行が完了されてい るか、もしくは現在実行中でなければならない。さらに、OprndStatの 値のDestBMフィールドは、フェッチされているオペランドに対する、ラッ チされたOprndInfoの値のフィールドSrc1BMもしくはSrc2B Mと比較される。有効であるべきオペランドに対しては、ソースオペランドのバ イトマークは、必要とされるバイトマークSrc1BMもしくはSrc2BMの スーパーセットでなければならない。src2のイミーディアット値は常に有効 である。信号OprndInvld XXsrcYは、実行ユニットXXに対す るオペランドsrcYが有効であることを表すためにアサートされる。表B.4 5は、信号OprndInvld XXsrcYを生成するロジックを表してい る。 オペランド転送フェーズの間に起こる第4のグローバル制御ファンクションは 、前進のための必要とされたオペランドが有効でないときに、パイプラインのス テージ内でオペレーションを保持するパイプライン制御信号の生成である。信号 SC HoldXX0は、ソースオペランドが利用可能でないときに、実行ユニ ットXXのオペランド信号ステージ440のオペレーションをホールドする。S tOpsは、データオペランドが利用可能でない場合でも、オペランドフォワー ドステージ440の外に進むが、信号SC HoldSU2は、データオペラン ドが有効でない場合には、第2実行ステージ460のStOpを、ホールドする 。cc−dep RegOpsは、要求される条件コードが有効でないとき、オ ペランドフォワードステージ440内へホールドアップされる。表B.46は、 信号SC HoldXX0及びSC HoldSU2を生成するロジックを表し ている。V.状態フラグ x86アーキテクチャフラグ及びマイクロアーキテクチャフラグの両方に対す る情報フラグロジック538は、3つの領域の機能を含む。すなわちcc−de p RegOpsに対する状態フラグオペランド値のフェッチ、BRCONDの 分解のための状態フラグ値のフェッチ、アボート不可能なRegOpsの先行す るBRCONDに対する同期化を含む。オペランド選択ロジック532及びLd Op−StOpオーダリングロジック534とは異なり、状態フラグハンドリン グロジック538は、スケジューラのエントリ全体にわたって広がることはない 。関連するオペレーションに対する状態フラグハンドリングは、状態フラグにア クセスするオペレーションがスケジューラ280内の特定の行内にあるときのみ 起こる。Cc−dep RegOpsは、状態オペランドのフェッチングが生じ るサイクルの間に(すなわち、RUXオペランドフォワードステージの間に)、 行3内になければならない。BRCOND及びアボート不可能なRegOpsは 、分岐評価ユニット257による分析の間、及び、RUXオペランド前進ステー ジの間、各々、行4内になければならない。したがって、cc−dep及びアボ ート不可能RegOpsは、行3及び行4へ向けて、各々、シフトダウンされる まで、RUXオペランド前進ステージ内にホールドアップされなければならず、 行3及び4のOpクワッドのシフトは、それらの行のCc−dep及びアボート 不可能RegOpsが、RUX実行ステージ内へ進めるまで、禁止される。BR CONDは、評価のために必要とされる状態フラグが有効となるまで、行4内に とどまる。 cc−dep RegOps、アボート不可能RegOps、及びBRCON Dの実行及び評価を、オペレーションがスケジューラ280の特定の行にあると きにのみ限定することにより、状態フラグのハンドリングロジック538が簡単 化される。例えば、状態フラグハンドリング ロジック538は、底部の3つのスケジューラの行に於いてのみ必要とされ、底 部の2つの行のみが適切な状態フラグの値を求めるために用いられる。さらに、 同じ状態フラグの値が、行3のcc−dep RegOpと行4のBRCOND との両方によって占有できる。アボート不可能RegOpとBRCONDとの同 期化は、BRCONDが評価される位置が固定されているので、簡単化される。 cc dep RegOps、BRCOND、及びアボート不可能RegOp sを、Opクワッド内で互いに配置するときに加えられる複数の限定によって、 ロジックがさらに簡単化される。限定は、通常、emcodeのためにコード規則へ翻 訳されるが、ある場合には、1サイクルの間に複数のマイクロ命令のデコーディ ングをMacDec242に対して強制する。限定は、Opクワッドが以下のこ とを含むことを必要とする。 (1)BROCONDの後にRegOpsを変更するccがないこと。 (2)cc−depRegOpの前RegOpsを変更するccがないこと。 (3)アボート不可能なRegOpsとBRCONDとがともに存在しないこと 。 (4)ただ1つのcc−dep RegOpがあること。、 (5)ただ1つのBRCONDがあること。 (6)アボート不可能なRegOpが唯一ただ1つあることを含むこと。 これらの制限とともに、行3内のcc−dep RegOpに対して正しい、か つ行4のBRCONDに対しても正しい状態フラグがあることであり、かつ同じ 状態フラグ回路が、2つの目的ではたらく。V.A 状態フラグフェッチ 状態フラグハンドリングロジック538は、フィールドStatModの4ビ ットに対応する状態フラグの4個の独立したグループをフェッ チする。アペンディクスBの表B.47は、4個のフラググループと、それらの 対応するフィールドStatModを特定している。あるオペレーションに対し て各グループが有効であるか否かは、そのグループを変更できたより古いオペレ ーションが完了したか否かに応じて、別個に、決定される。 状態フラグの値を、レジスタユニット253もしくは254のいずれかから、 直接、レジスタユニット253に入るcc−dep RegOpへ通過させるこ とは、例示された実施例に於いてはサポートされていない。したがって、状態フ ラグは、RegOpを変更する条件コードの完了に続くサイクルを有効化する。 これにより、状態フラグのある特定のグループを変更するRegOpと、そのグ ループを利用する後続のcc−dep RegOpの実行との間に1サイクルの 最小の遅れが生み出される。この遅れの統計学的性能の影響は、最小であり、そ の理由は、cc−dep RegOpsが、通常のx86コードをデコードする ときに、比較的レアであるからである。さらに、遅れの任意の影響が、命令デコ ーダ240がRISC86オペレーションを並べてcc−depRegOpに対 して必要とされる条件コードを変更するRegOpのすぐ後に続くOpクワッド でのcc−dep RegOpを回避する場合に、無視することができる。 各サイクルの間に、スケジューラの行3と行4との間の境界に於ける状態フラ グの値の有効な集合が計算される。この計算された状態フラグは、決定された状 態フラグと、行4及び5のオペレーションによって引き起こされた状態フラグに 対する全ての変化を含む。上述されたように、RegOpsのみが状態フラグを 変更する。各RegOpは1つ、2つ、3つ、もしくは4つの全てのグループの 状態フラグを変更できるので、状態フラグの計算は、4つのグループの各々とは 別個に行われる。各グ ループに対して、計算の結果が、フラグの値と、そのグループのセットに対応す るStatModビットを備えた最も新しいRegOpからの状態の情報とから なる集合からなる。RegOpに対する状態フィールドは、RegOpが完了し 、有効フラグの値を提供するか否かを表している。 状態フラグロジック538は、表B.47に例示されているように、4つのグ ループの状態フラグに関連する4つの有効ビットSTATUSVと8個の状態フ ラグビットSTATUSとを生成する。これらの12ビットは、バス557を介 して、BRCONDを評価する分岐評価ユニット257と、cc−dep Re gOpsを取り扱うレジスタユニット253内のロジックとへ送られる。レジス タユニット253と分岐評価ユニット257は、有効ビットSTATUSVから 、必要とされる状態フラグが有効か否かを、そしてそれらは有効な場合、状態ビ ットSTATUSを用いている。行3のcc−dep RegOpを実行し、行 4のBRCONDを評価する。グローバル制御ロジック520は、必要とされる 状態フラグが有効か否かに基づいてシフト制御信号を生成する。 レジスタオペランドの値のフェッチに対するものと同様のプロセスが、各状態 フラグのグループを、フェッチし、スケジューラ280の行3の最後のオペレー ションに対する適切なフラグの値を得る。以下の説明で、OpXは、スケジュー ラ280のXエントリを表し、ここでX=0は、スケジューラ280内の最も新 しいオペレーションを表し、X=23は、スケジューラ28内の最も古いオペレ ーションを表す。例えば、行4は、Op16、Op17、Op18、及びOp1 9を含む。各フラググループに対して、Op16からOp23までの伝達キルス タイルスキャンが、これらのフラグのグループをセットするために、StatM odを伴った第1のオペレーションをロケートし、そのエントリの完了した状態 ビ ット(すなわちS3)と、適切な集合のフラグの値とが読み出される。このグル ープに対する状態Vビット、単に、見つけだされたエントリからの状態ビットS 3である。そのようなオペレーションが見いだされない場合、所望のフラグの値 は、アーキテクチャ状態フラグレジスタから読み出され、信号STATUSVは 、セットされて、そのグループが有効であることを表す。表B.48は、各フラ ググループに対する状態フラグフェッチロジックを表している。V.B cc−Dep RegOpsへの状態フォワーディング 各サイクルの間、グローバル制御ロジック520は、行3内の4つのオペレー ションを試験し、それらのうちのいずれがcc−dep RegOpであるか否 かを求める。1つのオペレーションがcc−dep RegOpである場合、そ のRegOpがデコードされて、どのグループの状態フラグが必要であるかが求 められ、状態Vビットがチェックされて、それらのグループの全てが有効か否か が求められる。同時に、状態[7:0]が、RUX実行ユニットへ、無条件に送ら れる。必要とされるフラググループの任意のものが、現在、有効でない場合、c c−dep RegOpがRUX実行ステージへの前進からホールドアップされ 、行3の外側へのOpクワッドのシフトが禁止される。必要とされるフラググル ープの全てが現在有効な場合、cc−dep RegOpが許可されて、状態オ ペランドのフェッチに関する限り、RUX実行ステージへの前進が行われる。c c−dep RegOpは、オペランドが利用できないので、依然として前進が 妨げられている。cc−dep RegOpが、実行ステージ460へ進まない 場合、行3のシフトが禁止される。 行3から行5に実行されないcc−dep RegOpが存在せず、RUXオ ペランド前進ステージにcc−dep RegOpがある場合、RegOpが無 条件にオペランド前進ステージ内にホールドアップされ る。行3にcc−dep RegOpがまだ実行されていない場合、しかし、R UXオペランド前進ステージにcc−dep RegOpが存在しない場合、行 3のシフトは禁止される。表B.49は、シフト及びオペレーションの前進を制 御するロジックが表されている。V.分岐予測分解 各サイクルの間、BRCONDが行4で見つけられた場合、条件コード(cc )フィールド(そのBRCONDの)がデコードされて、予測条件の値が求めら れる。この予測条件の値は、関連する有効なビットが、選択された条件が有効で あることを表示している場合、条件フラグハンドリングロジック538からの状 態フラグから導き出された32個の条件の値のうちの選択された1つの条件の値 と比較される。選択された条件が有効でない場合、行4のOpクワッドのシフト が禁止され、BRCONDの評価が、次のクロックサイクルで再び試みられる。 選択された条件が有効な場合、予測された条件と選択された条件との比較により 、予測が正しいか否かが表される。 BRCONDが誤った予測であることが見いだされた場合(すなわちパイプラ インの再スタートが必要な場合)、再スタート信号が、BRCONDがMacD ec242からのものであるか、内部のもしくは外部のemcodeからのemcodeオペ レーションであるか否かに基づいてアサートされる。さらに、適切なx86マイ クロ命令もしくはemcodeベクトルのアドレス、及び関連する戻りアドレススタッ クTOSの値が、生成されて、デコーディングを再スタートさせるために命令デ コーダ240へリターンされる。 非アボート可能RegOpsと先行するBRCONDとの間の同期を取り扱う ロジックの利益のために(次の2つの節で説明される)、デコードは、誤って予 測されたBRCOND内に保持され、一方そのデコー ドは、アウトスタンドの状態に、(すなわち、アボートサイクルが起こるまで) とどまる。さらに、アウトスタントのあらかじめ誤って予測されたBRCOND は、アボートサイクルが起こるまで、新たなOpクワッドのローディングをホー ルドアップする。BRCONDが正しく予測された場合、唯一実行されるアクシ ョンは、BRCONDの状態ビットS3をセットすることであり、BRCOND が完了したことが表される。表B.50は、BRCONDの評価を取り扱うロジ ックを表している。VI.非アボート可能なオペレーションの同期化 各サイクルの間に、非アボート可能なRegOpが行4で見いだされた場合、 スケジューラ280は、任意の先行する誤って予測されたBRCONDをチェッ クする。emcodeのコーディング制約を原因として、任意の先行するBRCOND は、より下の行内になければならず、すなわち全てが分解されていなければなら ない。さらに、任意の現在分解されているBRCOND(行4の)は、非アボー ト可能なRegOpの後にあり、すなわち無関係である。 誤って予測されたBRCONDがない場合、非アボート可能なRegOpが、 RUX実行ステージを通して進むことが許可され、一方、RegOpは、必要と されるオペランドが未だに利用可能でない場合には、前進できない。RegOp がRUX実行ステージ内へ向かって直ちに前進しない場合、RegOpは、依然 として行4の外側へのシフトが許可されている。 行4及び行5が、実行されていない非アボート可能なRegOpを含んでおら ず、しかし、RUXオペランド前進ステージ内に非アボート可能なRegOpが 存在しない場合、非アボート可能なRegOpが、非アボート可能なRegOp が行4に達するまで、オペランド前進ステージ内に無条件にホールドアップされ る。行4内の非アボート可能なRe gOpが依然として実行されていない場合、かつ、非アボート可能なRegOp がRUXオペランド前進ステージ内にないか、もしくは実行されていない非アボ ート可能なRegOpが行5内にある場合、行4及び行5のシフトが禁止される 。表B.51は、非アボート可能なRegOpsのハンドリングのためのロジッ クを表している。VII.自己変更コードのハンドリング ストアキュー270は、決定されるべきデータに対するリニアな及び物理的な アドレスのいくつかのビットを供給する。このストアアドレスが、Opクワッド に対する任意の命令アドレスと一致する場合、命令に対する書き込みが、命令を 変更し、スケジューラ280内の現在存在するデコードされたオペレーションが 正しくないことがある。この正しくないオペレーションは、そのオペレーション の結果が決定される前に修正されなければならない。 本発明の例示的な実施例では、自己変更コードサポートロジック536が、ス トアキュー270からのアドレスビットと、各Opクワッドの命令アドレス(も しくは、Opクワッドの命令が異なるページからのものである場合にはアドレス )と比較する。比較によって、コードの変更の可能性が消去される場合、ロジッ ク536はナッシングである。その可能性がうち消されない場合、ロジック53 6は、スケジューラ280をフラッシュし、最後に決定された命令のアドレスか らフェッチ/デコードプロセスを再スタートさせる。論理的に、スケジューラ2 80では、自己変更コードの検出が、「トラップペンディング」を表す信号への トラップもしくはファクタの一種として取り扱われる。表B.52は、自己変更 コードのハンドリングロジック536の例示部分を表している。VIII.オペレーションコミットメントユニット OCU(オペレーションコミットメントユニット)260は、一般に、スケジ ューラ280内の最後の行もしくは最後から2番目の行(行4もしくは行5)内 のオペレーションに対してのオペレートを行う。OCU260の主な機能は、オ ペレーションの結果をコミットし(もしくは永久なものとし)、次に、スケジュ ーラ280からOpクワッドをリタイアすることである。OCU260はまた、 アボートサイクルを開始する。 多くのタイプの結果もしくは状態の変化は、オペレーションの実行を停止する ことができる。主なタイプの変更は、アボート可能であり、レジスタの変更、状 態フラグの変更、及びメモリの書き込みを含む。RISC86命令セットでは、 レジスタの変更は、全てのRegOps、LdOps、LIMMOps、LDK オペレーション及びSTUPD StOpsからの結果をレジスタが変更する。 状態フラグ変更は、「.cc」RegOpsから得られ、メモリの書き込みは、 STxx StOpsから得られる。スケジューラ280及びストアキュー27 0は、関連するオペレーションがコミットもしくはリタイアされるまで、一時的 に、レジスタ及び状態の結果をスケジューラ280のエントリに格納し、メモリ の書き込みデータをストアキュー270のエントリに格納することにより、アボ ート可能な状態の変化をサポートする。オペレーションのコミットは、状態の変 更を半永久的なものとする。一方、新たな状態の値が、スケジューラ280及び ストアキュー270内にとどまり、状態の値が、必要に応じて個々のオペレーシ ョンに向けて進められる。 その他の全ての状態の変化は、非アボート可能であり、かつ非アボート可能な RegOpの実行から得られる結果である。非アボート可能な状態の変化は、セ グメントレジスタ及び非状態EFlagsビットなどの標準x86レジスタに対 する変化と、RISCオペレーションの実行のためのマイクロアーキテクチャレ ジスタに対する変化を含む。非アボ ート可能な状態の変化は、非アボート可能なRegOp実行の間にすぐに起こる ことができ、デコーダ240とスケジューラ280とは、それを取り囲むオペレ ーションを伴った非アボート可能なオペレーションの十分な同期化を確かにする 原因となる。VIII.A コミットメント 各サイクルの間、OCU260は、スケジューラ280の行4及び/もしくは 5内のオペレーションを試験し、可能な限り多くのオペレーションの結果を決定 するようにコミットすることを試みる。Opクワッド内の状態の変化は、1つの サイクルもしくはいくつかのサイクルにわたってコミットされてもよい。一番下 の行のOpクワッドのオペレーションの全てが、コミットされたかもしくは順番 にコミットされている場合、Opクワッドは、Opクワッドを行4から行5へシ フトさせてかつ行5をオーバーライトすることにより、現在のサイクルの終わり でスケジューラ280からリタイアされる。そうでない場合、できるだけ多くの 変化が、コミットされて、行5へのシフトは、禁止される。行5の全てのオペレ ーションがコミットされ終わり、行4からのOpクワッドの行5へのシフトダウ ンが許可されるまで、コミットプロセスが各サイクルで繰り返される。 レジスタの結果、状態の結果、及びメモリの書き込み、のコミットは、別個に 行われる。複数の結果を有し(例えば、レジスタ及び状態の結果を有するReg Op、もしくはレジスタの結果及びメモリの書き込みを備えたSTUPDオペレ ーション)、様々な結果が同時にコミットされる必要はない。ある1つのタイプ の状態の変化のコミットは、他のタイプの状態の変化のコミットの前もしくは後 に行われる。1つのオペレーションの全体としてのコミットは、OCU260が オペレーションからの最後の結果をコミットしたときに生ずる。 オペレーションの結果は、そのオペレーションの実行状態が、そのオペレーシ ョンは完了したことを示すまで、任意の先行するフォルト可能なオペレーション 、すなわち、任意の先行するLdStOpsが完了し、そのオペレーションがフ ォルトフリーであることが表されるまで、任意の先行するBRCONDが完了し 、そのBRCONDが正しく予測されたことが示されるまで、コミットされない 。FAULTオペレーションは、関心事項ではなく、その理由はデコーダ240 が各々のFAULTオペレーションを、Opクワッド内の第1の「有効な」オペ レーションとして配置して、同じ行のオペレーションが、FAULTオペレーシ ョンと同じ行にあるオペレーションが完了される必要のないようになっているか らである。メモリ書き込みを生成するStOpsに対して、さらなる制約が、た だ1つの書き込みのみが、ストアキュー270からデータキャッシュ220へ1 サイクルごとにコミットできるということである。 OCU260は、各サイクルで、4個のレジスタと4個の状態結果と、1つの メモリ書き込みまでをコミットでき、通常、各サイクルごとにOpクワッドをス ケジューラ280からコミットもしくはリタイアさせる。Opクワッドは、スケ ジューラ280の一番下の行にとどまり、1サイクル以上にわたってリタイアさ れる。これはOpクワッドが複数のメモリ書き込みStOpsを含む場合、もし くはOpクワッドのオペレーションのあるものが未だに完了していない場合のみ に限られる。 一番下の行のオペレーションがフォルトにされる必要がある場合、例えば、そ のオペレーションがオペレーションの実行中の間に生じたFAULTオペレーシ ョンもしくはフォルトである場合、次のオペレーションのコミットが禁止される 。フォルトとなったOpクワッド内の全ての古いオペレーションがコミットされ ると、もしくは順番にコミットされ ると、OCU260は、Opクワッドをリタイアさせ、かつアボートサイクルを 禁止する。アボートサイクルはスケジューラ280をフラッシュし、全ての大気 中のオペレーションの全ての実行ユニットをフラッシュする。 アボートサイクルと同時に、OCU260はまた、命令デコーダ240を、2 つの可能なemcode「エントリポイント」アドレスの内の一方、すなわち、リセッ トemcodeによって初期化された「デフォルト」フォルトハンドラアドレス、また は、マイクロ命令もしくは除外処理emcodeによって特定された「代わりの」ハン ドラアドレスのいずれかへ向けてベクタリングする。LDDHA及びLDAHA オペレーションは、完了した状態に於いてスケジューラ280へロードされ、ス ケジューラ280の底部に達したときにOCU260によって認識されかつ「実 行された」オペレーションであるが、フォルトデフォルトアドレス及び代わりの ハンドラアドレスのセットをサポートする。 あるタイプのオペレーションのみがフォルトされ、すなわち、LdOps、S tOps(LEAオペレーションを除く)、及びFAULTオペレーションのみ がフォルトされる。LdOpもしくはStOpに対して、フォルトが、LUもし くはSU実行パイプラインの第2の実行ステージ460によって特定され、フォ ルトが検出された場合、LdStOpが、関連するもしくは無関係のアボートサ イクルが、スケジューラ280からLdStOpをフラッシュし、かつ実行ユニ ット251もしくは252からフラッシュするまで、第2の実行ステージ内にホ ールドアップされる。これは、完全にフォルトフリーが保証されたLdStOp に於いてもたらされる。OCU260は、その各々の第2実行ステージにフォル トオペレーションがスタックされていることを表す実行ユニット251及び25 2からの信号によって、フォルトされたLdStOp と、まだ完了されていないLdStOpとを区別する。OCU260が次の完了 されていないLdStOpをコミットしようと試み、かつ関連する実行ユニット 251もしくは252が、第2の実行ステージに保たれたオペレーションに対し てフォルトの信号を送るとき、OCU260がコミットしようと試みているオペ レーションは、フォルトをエンカウントしたオペレーションでなければならない 。実行ユニット251もしくは252が、フォルト信号をアサートしない場合、 完了していないLdStOpに関して明確なことは何もコミットされず、OCU 260は、LdStOpが完了するのを待つ。 FAULTオペレーションは、完了した状態でスケジューラ280内へロード され、常にフォルトとなる。OCU260は、FAULTオペレーションのコミ ットを取り扱い、まわりのオペレーションの結果としてもたらされたアボートを 、フォルトとなったLdStOpsと同様に取り扱う。 特定のオペレーションに対するフォルトに加えて、OCU260はまた、emco deシーケンスの終わりが、ERETによって表示されるまで、累積されかつリナ ンバーされる様々なデバッグのトラップ除外を認識する。「ERET」Opクワ ッドがリタイアされ、かつトラップ除外が継続中のとき、OCU260は、フォ ルトがOpクワッド内の5番目及び最後のオペレーションで認識されたかのよう に、フォルトスタイルのアボートサイクルを開始する。 OCU260は、「分岐ターゲット制限バイオレーション」条件を認識し、こ の条件は、Opクワッド内の確かなオペレーションのみに関連して、全体として Opクワッドによってタグされる。これは、無条件に、あたかもフォルトがOp クワッド内の第1のオペレーションに於いて認識されたかのごとく、アボートサ イクルを開始する。 OCU260は、アボート可能な状態の変更を生成するオペレーションに関す るが、OCU260はまたBRCONをも取り扱う。BRCONDは、行4にあ るときに分解される。誤った予測が検出された場合、マイクロ命令及び命令デコ ーダ240のフェッチに対するロジックは、直ちにリセットされて、適切なマイ クロ命令のアドレスから再スタートされる。誤って予測されたBRCONDが行 5に達したとき、誤って予測されたBRCONDよりも新しいオペレーションの コミットが、禁止され、アボートサイクルが、全ての誤って予測されたBRCO NDに先行するオペレーションが成功裡にコミットされているかもしくはコミッ トされた後に、開始される。アボートサイクルは、スケジューラ280と、全て のオペレーションの全ての実行ユニットとをフラッシュする。アボートサイクル は、さらに、「新たな」オペレーションを、デコーダ240からスケジューラ2 80へロードすることをイネーブルし、実行ユニット251から256を直ちに 発行する。誤って予測されたBRCOND及びオペレーションフォルトのアボー トは、emcodeに対するベクタリングすることが誤って予測されたBRCONDに 対して開始されないという点で異なる。スケジューラ280の底部に達した正し く予測されたBRCONDのコミットに対しては、アクションは、必要ない。 OCU260は、コミットもしくは各BRCONDのコミットもしくはアボー トを行う。OCU260は、BRCONDのスケジューラエントリの状態フィー ルドに基づいてアクションを選択する。BRCONDが分解されたとき、そのス ケジューラエントリの状態フィールドは、正しく予測されている場合には完了す るように変更され、誤って予測されている場合には発見されないままとどめられ る。すなわち、BRCONDが行4に於いて完了されたか否かは、BRCOND が誤って予測されたか否かを直接表している。 オペレーションの結果のコミットの実際のタイミングは、かなり簡単であり、 かつコミットサイクルの後半部分の間に起こるように観察される。通常、Opク ワッドは、スケジューラ280の底部内に入る同じサイクルの間にコミットされ 、かつそのサイクルの終わりに於いてスケジューラ280からリタイアされる。 このサイクルの間、結果は、レジスタファイル290に書き込まれ、オペランド の値は、レジスタファイル290からではなくスケジューラ280から、全ての 依存したオペレーションへ送られる。 メモリ書き込みのコミットは、2ステージのプロセスであり、2ステージの書 き込みコミットパイプラインの形式で実行される。書き込みコミットパイプライ ンの第1のステージは、StOpに対するOCU260のコミットサイクルに対 応し、OCU260に関する限り、StOpは、このパイプラインの第2のステ ージに入るときにコミットされている。タイミングにしたがって、StOpは、 関連するOpクワッドがスケジューラ280からリタイアされる前もしくはリタ イアされるときに、第2の書き込みコミットステージに入らなければならない。 StOpがこの第2のステージに入れない場合、StOpは依然としてコミット できないものとみなされ、Opクワッドのリタイアがホールドアップされる。 OCU260が、オペレーションフォルトを原因として、アボートサイクルを 開始したとき、アボート信号と、対応するemcodeベクトルアドレスとが、フォル トになったオペレーションを含むOpクワッドのコミット/リタイアサイクルの 間に、アサートされる。次のサイクルの間に、スケジューラ280は、フラッシ ュされ、ターゲットemcodeOpクワッドが、フェッチされる。内部のemcodeに対 しては、スケジューラ280は、この1サイクルを画定するためにエンプティと なる。 誤って予測されたBRCONDに対するアボート信号は、さらに、対応するO pクワッドのコミット/リタイアサイクルの間アサートされている。命令フェッ チ及びデコードが以前に再スタートされたので、スケジューラ280は、できる だけ早い次のサイクルで新たなOpクワッドを再びロードされ、すなわち、スケ ジューラ280は、1サイクル以上はエンプティにとどまらない。 OCU260が、アボートサイクルを必要とするときにOpクワッド内の複数 のオペレーションを認識したとき、そのオペレーションの始めのオペレーション を選択して、オペレーションに対する適切な時間でそのオペレーションに対応す る適切なアボートアクションを開始する。VIII.A.1 レジスタコミットメント OCU260は、レジスタファイル290に対するレジスタ結果値のコミット の管理及び制御を行う。各サイクルの間、スケジューラ280の底部の2つの行 のうちの1つの中の各完了されたオペレーションのレジスタ結果が、レジスタフ ァイル290内に書き込まれる(そのサイクルの後半部分で、4個の別個の書き 込みポートを介して行われる)。各書き込みは、バイトマークに基づいて、対応 するスケジューラエントリから、フィールドDestBM[2:0]に対して行わ れる。このプロセスは、x86アーキテクチャレジスタ及び一時的/マイクロア ーキテクチャレジスタに対して行われる。 オペレーションが未だ完了せずコミットできない場合、関連するレジスタファ イル書き込みがこのサイクルの間禁止される。そのオペレーションが、基本的に レジスタ結果を生み出さないタイプのオペレーションである場合、バイトマーク が全てクリアされ、レジスタナンバーが定義されない。これは、レジスタファイ ル書き込みの間にバイトが変更されないという結果をもたらす。同様に、レジス タt0(常時0レジスタ) が、そのオペレーションに対する宛先として特定され、バイトマークが再び全て クリアされる。これらのいずれの場合に於いても、オペレーションデコーダ21 0は、ローリングの間に、バイトマークをb000とする。 一般には、競合状態が起こり得る。すなわち、複数の同時の書き込みが同じレ ジスタ内に行われ得る。望ましい結果は、最も新しいオペレーションからのもの であり、その他の古い書き込みは禁止されかつ実質的に無視されることである。 レジスタファイル290は、表現されたレジスタナンバーと対応する書き込みネ ーブルに単に基づいて、レジスタコミットプロセスのOCU260の制御から別 個に、このファンクションを取り扱う。 さらに、競合する書き込みが、最も新しい書き込みによって変更されなかった レジスタバイトをより古い書き込みが変更するものであるような場合、効果的な レジスタファイル書き込みは、競合するオペレーションからのバイトの組み合わ せとなる。例えば、第1の(最も古い)オペレーションが、バイト{3、2、1 、0}を変更し、第2のオペレーションがバイト{1,0}を変更し、第3の(最 も新しい)オペレーションがバイト{1}を変更する場合、実際のレジスタファイ ル書き込みは、第1のオペレーションからバイト{3、2}をとり、第2のオペレ ーションからバイト{0}をとり、第3のオペレーションからバイト{1}をとる。 その他の場合、レジスタファイルバイトのあるものは、全く変更されない。レジ スタファイル290内の制御ロジックは、この新たなファンクショナリティを取 り扱う。まとめて言えば、レジスタファイル290内の競合分解ロジックは、3 2ビットワードではなく5個のバイトのベースにオペレートする。 全ての4個のオペレーションに対する書き込みイネーブルはパラレルに生成さ れる。対応する書き込みイネーブルは、Opクワッド内の全ての先行する/古い LdStOpsが完了し、かつ先行する/より古いBRCONDの全てが誤って 予測されていない場合に、各完了したオペレーションに対してレジスタファイル 290に向けてアサートされる。オペレーションの結果がレジスタファイル29 0に書き込まれるとき、対応するDestBMビットがクリアされて、スケジュ ーラエントリがもはや依存したオペレーションに対するレジスタ値を提供しない ことを表す。DestBMフィールドのクリーンは、また、部分的なレジスタ書 き込みに対しても行われる。依存したオペレーションが1つのオペレーションに 対して引き起こされる全てのバイトを得ることができない場合、この依存したオ ペレーションは、全てのバイトがレジスタファイル290から得られるまで、オ ペランドフォワードステージ内でホールドアップされる。 加えて、スケジューラエントリ(上述の説明を参照のこと)に対応する9個の 信号OprndMatch XXsrcYが、そのエントリ内のDestBMビ ットがほぼクリアされるときに、マークされる(すなわち、整合が起きていない ことを表すようにされる)。これは、スケジューラ280内のレジスタオペラン ドフェッチプロセスのパイプライン特性に起因するものである。特に、エントリ のDestBMビットは、このプロセスの2つのステージで用いられ、両方のサ イクルに於いて一致していなければならない。 レジスタコミットのスループットを高めるために、オペレーションレジスタ書 き込みは、行5内の全てのオペレーションに対するレジスタコミットが完了した ときに、行4から行われてもよい。これは、行5の4つのオペレーションまたは 行4の4つのオペレーションのいずれかを考 慮するために、RegOp書き込みイネーブルロジックを一般化することにより 、行われる。選択された行のオペレーションは、Op23からOp20、または Op19からOp16の代わりに、「OpA」から「OpD」へ名称を変更され る。表B.53は、レジスタファイル290に対するコミットのための結果を選 択するロジックを表している。VIII.A.2 状態フラグコミットメント OCU260は、さらに、「.cc」RegOpsによって生成された状態フ ラグの結果のアーキテクチャEFlagsレジスタに対するコミットを管理しか つ制御する。レジスタの結果のコミットとは異なり、行5からのオペレーション の4個までの状態フラグの結果のいずれもが、行5のOpクワッドがリタイアさ れもしくはアボートされようとしているときまでに、EFlagsへ書き込まれ ることはない。通常の場合では、Opクワッド内の全てのオペレーションは、十 分にコミットされ、もしくは順番にコミットされていて、全ての4つの状態の結 果の積み重ねられたもしくは全ての結果が、Opクワッドがスケジューラ280 からリタイアされたときに、そのサイクルの終わりでEFlagsへ書き込まれ る。フォルトになったオペレーションもしくは誤って予測されたBRCONDを 含む1つのOpクワッドに対して、ホールドの命令もしくはBRCONDの前に そのオペレーションからの状態結果のみが、コミットされ、このコミットされた 結果がアボートサイクルの終わりで、もしくはアボートサイクルの間に、書き込 まれる。 このプロセスは、マイクロアーキテクチャ状態フラグ(EZF及びECF)と 、x86アーキテクチャ状態フラグとに与えられる。まとめて言えば、アーキテ クチャEFlagsレジスタは、34ビットに拡張されて、特別の2つの状態フ ラグのためのルームを作る。RDFLG及び WRFLG RegOpsは、この拡張されたEFlagsレジスタの標準32 ビットポーションを表す。 積み重ねられた状態結果の生成は、底部の行内の4個のエントリの各々からの 状態ビットマーク(SttMod[3:0])に基づいている。8個の状態フラグ は、8個の別個のビットマークを有するのではなく、変形マークの目的のために 4個のグループに分割される。レジスタファイル内の一般的なレジスタを更新す るのと同じように、競合が生ずる可能性があり、すなわち、複数の変更が同じグ ループの状態フラグに行われる可能性がある。好ましい結果は、各グループの状 態フラグに対して最も新しく変更された値である。 積み重ねられた状態結果の生成はまた、4個のオペレーションの各々の完了さ れた状態(State[3])に基づいている。アボートされたOpクワッドに 対して、フィールド状態が、どの状態の結果がコミットされ、どの状態の結果が コミットされないべきかを特定する。コミットのために、すべての進行中のオペ レーションは、完了され、フォルト及び誤った予測から解放されなければならな い。表B.54は、状態フラグの変更を累積するロジックを表している。 オペレーションのコミット及びリタイアに対する明らかな制御もしくは制限は 、状態フラグの結果に関する限り、必要とされない。状態フラグの状態は、Re gOpsからのみ得られ、かつ全てのRegOpsが、レジスタの状態の変更を 生成する(t0のみの場合でさえも)。Opクワッドは、Opクワッド内の全て のRegOpsが完了し、したがって有効な状態結果の値を有するまで、リタイ アされない。さらに、底部の行のオペレーションに対するStatModフィー ルドのクリーンに対して、状態フラグの値がどのように前進させられているかを (BRCOND及び「cc依存」RegOpsに対して)を与える必要はない。VIII.A.3 .メモリ書き込みコミットメント OCU260の第3のファンクションは、メモリ書き込みデータの値の「メモ リ」(データキャッシュ及び/もしくはメインメモリ)へのコミットメントを制 御することことである。これは、レジスタ及び状態結果のコミットメントとは、 様々な点で異なり、すなわち、メモリ書き込みのコミットメントは、ほとんどの ケースで、関連するストアキューエントリを含み、多くても1つのメモリ書き込 みが、1サイクルの間でコミットメントされ、コミットメントプロセスは2つの ステージのコミットメントパイプラインを有する。OCU260は、底部の2つ の行をスキャンし、コミットメントのためのメモリ書き込みに対するStOps を見つけだす。関連するStOpsに対するフォルトの可能性が存在する。 メモリ書き込みは、全て、StOps(LEA、CIA、及びCDAオペレー ション以外の、これらは実際にはメモリを参照しない)に関連している。StO pが実行を完了したとき、関連するメモリアドレスとストアデータがストアキュ ー270内に入力される。その後、メモリ書き込みのStOpがコミットメント されたとき、このエントリがキャッシュメモリへ読み出されて、ストアキュー2 70からリタイアされる。StOpsは、実行されて、ストアキュー270が簡 単なFIFOとして働くことができるような互いに対する相対的な順番で、コミ ットメントされ、スケジューラstOpsに対応するストアキューエントリの整 合が自動的に行われる。 しかしながら、実際のコミットメントプロセスは、より複雑であり、以下に説 明されるようなものである。一般に、2ステージプロセスは、最後の/最も古い ストアキューエントリが始めに読み出され、次にデータキャッシュ220内でア ドレスルックアップされ、次に、ルックアッ プの状態に基づいて、ストアデータキャッシュ220及び/もしくはメモリ外に 書き込まれる。後者の場合、データ及びアドレスは、通常、書き込みバッファへ ロードされ、後に、メモリへ書き込まれる。 2ステージ書き込みコミットメントパイプラインでは、第1のステージ(すな わち、データキャッシュタグルックアップ)は、レジスタ及び状態結果のコミッ トメントサイクルに対応し、すなわち、収容しているOpクワッドが、このステ ージのサイクルの終わりでリタイアされる。OCU260のパースペクティブか ら、このコミットメントプロセスは、進んだもしくは遅れた1つのサイクル/信 号ステージアクションとしておおまかにみることができる。メモリ書き込みのコ ミットメントは、レジスタ状態の変更に対するのと同じように、同様の理由でホ ールドアップされ、書き込みコミットメントがコミットパイプのステージ2に入 ることができないときにも、ホールドアップされる。書き込みがコミットステー ジ2に入ると、関連するStOpは、スケジューラ280からリタイアされ、コ ミットプロセスの残りの部分が、OCU260とスケジューラ280とに対して 非同期的となる。 第1のコミットステージの間、制御のコミットは行われない。データキャッシ ュタグルックアップが実行され、アサートされたタグデータが、単に、第2のコ ミットステージの間に試験されるためにラッチされる。 書き込みコミットパイプラインは、単に、書き込みコミットパイプラインは、 単に1つのパイプラインであって、したがって、各サイクルごとに1つのメモリ 書き込みのコミットをサポートするのみである。多くても1つのメモリ書き込み StOpを含むOpクワッドに対して、これによって、可能なコミット及び各サ イクルのOpクワッドのリタイアが可能となる(レジスタ状態のコミットからの ステムが変化したときの予告の同様のソートを目的とする)。2個、3個もしく は4個のStOp sを含むOpクワッドに対して、対応する最小の数のサイクルが、少なくともそ れと同じ数のサイクルにわたってスケジューラ280の底部にOpクワッドがと どまるようにするOpクワッドのコミットに対して必要とされる。行4もしくは 行5のStOpに関連するメモリ書き込みのコミットは、1つのOpクワッド内 の複数のStOpsによって引き起こされるホールドアップを減少する。メモリ 書き込みが順番にコミットされている場合、OCU260は、底部のOpクワッ ドがホールドアップされているか、そうでない場合にコミットされていないメモ リ書き込みのエンプティもしくは底部のOpクワッドが、単に、StOpsを含 んでいないとき、複数の書き込みOpクワッドに対して「ヘッドスタート」をと ることができる。これによって、1以下である1つのOpクワッドあたりの平均 の書き込み数と、OCUの1回のサイクルあたりの1回の書き込みのコミットと が整合することが、より良好に助けられる。 各サイクルの間に、OCUのメモリ書き込みコミットロジックは、最も古いコ ミットされたメモリ書き込みStOpに対する(すなわちコミットを試みるため の対応書き込み及び次のStOpに対する)底部の2つの行を探す。選択された オペレーションが、現在の底部の/最も古いストアキューエントリを生成する。 オペレーションの選択と同時に、最も古いストアキューエントリのアドレスが、 開始されたDataキャッシュ及びタグルックアップへ提供される。これは、「 緊密に」行われる、すなわちその対応するStOpが実際にそのときにコミット できるか否かにかかわらず行われる。 選択されたStOpが、コミット可能であり、書き込みコミットが、第2の書 き込みコミットステージ内へ進むことができる場合、OCU260は、StOp がコミットされたとみなす。次のサイクルで、OCU260は、次のメモリ書き 込みStOpをサーチする。StOpコミッ トの基準は、レジスタ結果コミットに対するものと同じであり、すなわち選択さ れたStOpが完了していなければならず、Opクワッド内の全ての先行する/ より古いLdStOpsが(可能ならば、このStOpが最後の行にある場合先 行するOpクワッドが)、さらに完了されていなければならず、先行する/より 古い誤って予測されたBRCONDが完了されていなくてもよいという条件であ る。書き込みコミットは、そのステージがエンプティか、もしくは、成功裡に書 き込みのコミットの完了が行われているときに、コミットステージ2へ進むこと ができる。 選択されたStOpが完了されていないことのみによってコミットできないと きには、OCU260は、StOpが、検出されたフォルト条件によってそのス テージに「スタック」されているか否かを表す第2のSU実行ステージからの信 号を試験する。そのようなオペレーションがある場合、OCU260のコミット を非成功裡に試みるのは、その同じStOpであり、したがって、OCU260 によってアボートされなければならない。適切なアボートサイクルが、StOp が底部の行に存在するまで、開始されず、Opクワッド内の全ての先行するオペ レーションは、コミットされていて、先行するBRCONDのいずれもが誤って 予測されてはいない。これは、StOpがコミット可能であるための条件の拡張 である。その間に、OCU260は、アボートサイクルが先行するオペレーショ ンに対して開始されるまで、この状態にとどまる。 OCU260は、第1に、メモリ書き込みStOpsを考慮するが、CIA及 びCDAオペレーションをも取り扱い、その理由は、これらのオペレーションが 、OCU260が試験し及びコミットしなければならないフォルトする可能性の あるメモリアドレスを生み出すからである。フォルトなしに実行されるそのよう なオペレーションの通常の場合に於いて、OCU260は、明らかにそのオペレ ーションをコミットするの に1つのサイクルを費やし、次のサイクルでの次のStOpをコミットすること へ移動する。オペレーションの実行の間に、ストアキューエントリが生成されな いので、ストアキューからエントリがリタイアされることはない。CIAもしく はCDAオペレーションの実行の間に、フォルトが検出された場合、そのオペレ ーションは、第2のSU実行ステージ2「スタック」され、OCU260は、他 のStOpsに対するのと同様にアボートする。 OCU260に対する第2の特別な状況が、StOpのメモリレファレンスが 、整合境界(8バイト)を越え、2つの対応するストアキューエントリを備えた 2つのメモリ書き込みに、ストアユニット252によって分離されるときに起こ る。このような状況では、OCU260は、2つのストアキューエントリをリタ イアするのに2つのサイクルを費やし、2つのサイクルが完了するまで、正式に StOpをコミットしない。そのStOpがフォルトのとき、ストアキューエン トリをリタイアさせることなくアボートされる。 OCU260の例示された実施例では、最後の2つの行でメモリ書き込みSt Opsをコミットする過程でのOCUのプログレスを表したマスクビット(Cm tMask[7:0])の集合を用いている。8個のマスクビットCmtMas k[7:0]の各々は、最後の2つの行の8個のエントリに対応している。始め の集合のビット0から始まるビットは、クリアされて、OCU260が対応する エントリをサーチし、最後のクリアビットに対応するエントリまでStOpsを コミットしたことを表している。最後のクリアビットに対応するエントリは、コ ミットされるべき次のStOpを含む。セットマスクビットに対応するエントリ は、コミット可能なStOpsに対して試験されなければならない。OCU26 0はまた、最後の2つの行のどのエントリがコミットされてい ないメモリ書き込みStOps含むかを表しているビットの集合(UncmtS tOp[7:0])を保持している。 各サイクルの間に、OCU260は、次のコミットされていないStOpを選 択し、このStOpを含むエントリに基づいて新たなマスクビットの集合を生成 する。マスクされていないエントリは、試験されて、その選択されたStOpが そのときにコミット可能であるか、またはアボートサイクルが開始されなければ ならないかを求める。選択されたStOpがコミット可能でありかつコミットパ イプラインのステージがそのサイクルの終わりで新たな書き込みコミットを受け 入れることが可能であれば、StOpはコミットされ、UncmtStOpビッ トは、新たな値に更新される。UncmtStOpビットは、また、最後の2つ の行の任意のシフティングに整合するように、更新され、シフトされる。アペン ディクスBの表B.55は、このロジックを表している。VIII.B Opクワッドリタイア スケジューラ280の底部の行内のオペレーションの全てのアボート可能な状 態の変化が、コミットされ、または成功裡にコミットされつつあるとき、OCU 260は、そのサイクルの終わりで、Opクワッドをスケジューラ280からリ タイアさせる。これにより、次のOpクワッドがスケジューラ280の底部の行 へシフトできるようになる。必ずしも全てのそのようなオペレーションの結果が コミットされていないサイクルの間、Opクワッドは、リタイアされず、さらな るコミットプロセスのために保持されているか、もしくはアボートサイクルを原 因として無効化される。無効化された場合、アボートサイクルが、行5内の1つ のオペレーションで認識されたあるフォルトに応答する。 より詳しくは、Opクワッドのリタイアには、全ての結果(レジスタ)と、状 態の結果と、メモリ書き込みとがコミットされなければならない、 かつ、Opクワッド内にFAULTオペレーションもしくは誤って予測されたB RCONDがないことが必要とされる。Opクワッドのリタイアは、Opクワッ ドが無効であるとしてマークされると直ちに起こる。スケジューラのシフト制御 ロジックは自動的にこれを考慮に入れる。状態の結果は、Opクワッドのリタイ ア(またはアボート)とともに全てコミットされる。レジスタの結果は、関連す るオペレーションが完了しているときに、コミットされるか、もしくはコミット されている。表B.56は、OpクワッドのリタイアのためのOCU260内の 回路を表している。VIII.C フォルトハンドリング VIII.C.1 ロードオペレーションフォルトハンドリング LdOpsは、通常、LdOpsが一般的なレジスタ状態の変更の結果もたら されるので、OCU260による特別なハンドリングを必要としない。多くのS tOpsと同様に、LdOpsもまだ、実行の間のフォルトをエンカウントする ことができる。OCU260の特別のロジックは、StOpフォルトと同じよう に、LdOpフォルトを認識し取り扱う。フォルトしたLdOpがスケジューラ 280の底部の行に存在するか否かをコミットするために、OCU260は、全 ての先行する/より古いオペレーションが完了しコミットされていて、先行する 誤って予測されたBRCONDがない、LdOpであるオペレーションについて 、行5をサーチする。OCU260は、さらに、検出されたフォルト条件を伴っ たLdOpが、LUパイプラインの第2の実行ステージ内で「スタック」されて いるか否かを表すロードユニット251からの信号を試験する。 行5のLdOpが、完了されておらず、かつ完了されかつコミットされたオペ レーションのみによって先行されていて、さらにLUステージ からの信号がアサートされている場合、OCU260は、フォルトしたLdOp を認識し、適切なアボートサイクルを直ちに開始して、そのLdOpと後続する 全てのオペレーションをアボートする。表B.57は、OCUのLdOpフォル トハンドリングロジックを表している。VIII.C.2 フォルト及びLDDHA/LDAHAオペレーションハンド リング ごくわずかな特別なオペレーション、すなわちFAULT、LDDHA、及び LDAHAオペレーションは、さらに特別のコミットハンドリングを必要とする 。これらのオペレーションのいずれもが、実行ユニットによって発行されかつ実 行されることはない。FAULT、LDDHA、及びLDAHAオペレーション は、その他のオペレーションに依存する実行を有さず、かつOCU260に対し てのみ重要である。 OCU260は、フォルトしたLdStOpと同様にFAULTオペレーショ ンを取り扱う。アボートサイクルが、現在のemcodeOCUフォルトハンドラに対 するベクタリングとともに開始される。フォルトしたLdStOpsとは異なり 、認識されるフォルトが存在するか否か、及びアボートサイクルをいつ開始する かについての発行は存在しない。FAULTオペレーションを取り扱うためのO CUのロジックを簡単にするために、以下の制約が、ディテクタ240及び51 0に課されている、すなわち(1)FAULTオペレーションは、Opクワッド の第1のオペレーションの1内になければならず、(2)Opクワッド内の全て の後続のオペレーションは、「NO−OPs」でなければならず(例えば、LD K t0,xx)、及び(3)後続のOpクワッドは、任意のメモリ書き込みS tOpsを含んでいてはならない。次のOpクワッドからのメモリ書き込みSt Opsを禁止することにより、その他の全てのO CUコミットロジックが、特別な考慮を必要とせずに、「FAULT」Opクワ ッドに対する緊密なオペレーションを行うことが確実となる。 FAULTオペレーションの状態は、スケジューラ280にロードされたとき に、b0000に初期化される。FAULTオペレーションが行5に達したとき 、フォルトオペレーションの完了していない状態が、OCUのOpクワッドリタ イアロジックが、Opクワッドをリタイアすることを禁止し、FAULTオペレ ーションが、OCU260内のロジックをコミットして、直ちにアボートサイク ルを開始する。アボートサイクルの特徴は、LdStOpsのフォルトに対する ものと同じである。唯一の相違点は、独特のフォルトIDを生成することである 。表B.58は、FAULTオペレーションに対してアボート信号を生成するロ ジックを表している。 LDDHA/LDAHAオペレーションは、emcodeをイネーブルして、セット し、emcode内のアドレス(ROM246)を、OCUが認識した除外がベクトル されているアドレスに変更する。OCU260は、2つのベクトルアドレスレジ スタを保持し、その1つは「デフォルト」ハンドラアドレスを保ち、もう1つは 、「代わりの」ハンドラアドレスを保つ。第1のベクトルアドレスレジスタは、 デフォルトによってほとんどのemcodeに対してアクティブとなり(マイクロ命令 及び除外プロセスemcodeの両方)、LDDHAオペレーションを介したリセット emcodeによってちょうど一回だけセットされる。プロセッサ200は、リセット の後に初期化のためにemcodeをリセットする。第2のベクトルアドレスレジスタ は、LDAHAオペレーションを介してセットされる。 エントリポイントからERETまでで定義されたLDAHAオペレーションを 含まないベクトルデコーダ244からのemシーケンスに対して、そのシーケン ス内のオペレーションのOCU260によって認識さ れた任意のフォルトが、デフォルトハンドラアドレスレジスタ内のアドレスへの ベクトルをもたらす。LDAHAオペレーションを含むemcodeシーケンスに対し て、DLAHAオペレーションを含むものの前のOpクワッド内のオペレーショ ンのフォルトが、デフォルトアドレスへのベクトルを結果としてもたらし、Op クワッド(LDAHAオペレーションを含む)の、もしくはemcodeシーケンスの 最後のクワッドまでの任意の後続のOpクワッド内の、オペレーションのフォル トは、第2ベクトルアドレスレジスタ内のアドレスへのベクトルを結果としても たらす。「ERET」Opクワッドのリタイアは、次にLDAHAオペレーショ ンが起こるまで、後続の全てのオペレーションに対するデフォルトハンドラアド レスレジスタを効果的に再びアクティブにする。アボートサイクルの発生によっ てもまた、デフォルトハンドラアドレスレジスタが再びアクティブにされる。 OCU260に対する事柄を簡単にするために、LDDHA/LDAHAオペ レーションは、Opクワッドの最も古いオペレーションの位置内に強制的に配置 される。「有効な」オペレーションが、Opクワッドの後続のオペレーションの 位置に於いて許可される。表B.59は、OCUのLDDHA/LDAHAオペ レーションハンドリングロジックを表している。VIII.C.3 ターゲットリミットバイオレーションハンドリング Opクワッド内の各オペレーションに関連する状態の変化のコミットに加え、 OCU260はまた、全体として、Opクワッドに対しての特別なタグされた条 件を認識する。MacDec260が、転送制御命令をデコードしかつコードセ グメントリミットバイオレーションがターゲットアドレスで検出されたときには 常に(MacDecがOpクワッドを生成し、Opクワッドはスケジューラ28 0にロードされた後に)、 Opクワッドがマークされて、そのようなバイオレーションが、Opクワッドに 関連して検出されたことを表す。 Opクワッドが、OCU260に到達しコミットされるべきときに、セットさ れたタグビットが認識されて、アボートサイクルが、Opクワッド内のオペレー ションからの任意の状態の変化をコミットすることなしに開始される。効果的に 全体のOpクワッドがフォルトされる。この効果は、FAULTオペレーション がOpクワッド内にあるのと同じ効果である。表B.60は、分岐ターゲットリ ミットバイオレーションを取り扱うためのロジックを表している。VIII.C.4 誤って予測された分岐ハンドリング アボート可能な状態の変化のコミット及びさまざまな特別なケースのハンドリ ングの他に、OCU260は、誤って予測されたBRCONDに対するアボート サイクルの生成をも取り扱う。上述されたように、命令フェッチ及びデコード領 域の再スタートは、BRCONDがスケジューラ280の底部に達する前に起こ る。シーケンサ280は、順番にアボートを生成し、先行するオペレーションの みがコミットされたことを確かめる。オペレーションフォルトに対するアボート サイクルの生成と同様に、アボートは、全ての先行するオペレーションがコミッ トされるまで開始されない。表B.61は、誤って予測された分岐に対するアボ ートの生成を行うロジックを表している。VIII.D アボートサイクルの生成 OCU260は、2つの状況に置いてアボートサイクルを生成する、すなわち 、LdStOpもしくはFAULTオペレーションに於いてのOpフォルトの認 識と、誤って予測されたBRCONDの認識とに於いて生成する。これまでの説 明及び表B.55、B.57、B.58及びB.61は、アボートサイクルの開 始を行う信号の生成を表している(す なわち、信号StAbort、LdAbort、FltAbort、LimAb ort、及びBrAbort)。この節では、一般的なアボート信号と関連する 情報の生成について説明する。 アボート信号は、特定のタイプの状態の変化もしくはオペレーションのコミッ トに関連する全ての個々のアボート信号の組み合わせである。関連するemcodeベ クトルアドレスは、フォルト関連のアボートに対してのみで、BRCOND関連 のアボートに関してではなく定義され、かつ、上述されたようなFltVecA ddrである。このアボート信号は、スケジューラ280をフラッシュし、全て の継続中のオペレーションの全ての実行ユニット251から257をフラッシュ し、かつ、命令デコーダ240からの新たなオペレーションを受け取るための準 備をこれらの領域内で再び開始させる。BRCOND関連のアボートに対しては 、これは十分であり、その理由は、分岐評価ユニット257が前もって、emcode 及びx86マイクロ命令フェッチ及び命令デコーダ240を再スタートさせてい るからである。 除外に関連するアボートに対して、命令デコーダ240はまた、フォルトハン ドラアドレスに於いて再びスタートさせられる必要がある。命令フェッチ/デコ ードリスタートが、誤って予測されたBRCONDと、オペレーション除外との 両方に対して同時に信号を供給されたとき、オペレーション除外は、より高い優 先順位を有する。適切な再スタート信号の生成及び再スタートに対するベクトル アドレスがしたがって生成される。フォルト関連のアボートが生じたとき、OC U260は、また、フォルトに関する情報をラッチし、すなわち、x86マイク ロ命令プログラムカウンタ(効果的にフォルトにされた関連するx86命令の論 理アドレス)を、レジスタSR4へラッチする。表B.62は、OCUのアボー トサイクル発生ロジックを表している。IX. プロセシングシステム 本発明の実施例は、さまざまなプロセシングシステムを含み、例えば、スタン ドアローンのもしくはネットワークのパーソナルコンピュータシステム、ワーク ステーションシステム、マルチメディアシステムネットワークサーバシステム、 多重プロセッサシステム、埋め込みシステム、集積化された電話システム、及び ビデオ会議システムを含む。第11A図から第11C図は、プロセシングシステ ムのセットを表したものであり、本発明に基づくスーパースケーラープロセッサ 200を、バス構成、メモリ階層及びキャッシュ階層、I/Oインタフェイス、 コントローラ、デバイス、及び周辺構成要素と組み合わせたものである。第11 A図から第11C図に表されたプロセシングシステムのセットは、単なる例示で ある。スーパースケーラープロセッサ200を組み込んだシステムの適切な構成 は、以下のような構成要素、カード、インタフェイス及びデバイスの組み合わせ を含む。 1.ビデオディスプレイ装置、モニタ、フラットパネルディスプレイ、タッチ スクリーン、 2.ポインティングデバイス及びキーボード、 3.コプロセッサ、駆動小数点プロセッサ、グラフィックプロセッサ、I/O コントローラ、及びUART、 4.第3の及び第4の記憶装置、コントローラ、インタフェイス、キャッシュ 、RAM、ROM、フラッシュメモリ、スタティックRAM、ダイナミックRA M、 5.CD−ROM、固定ディスク、取り外し可能メディア記憶デバイス、フロ ッピーディスク、WORM、IDEコントローラ、エンハンストIDEコントロ ーラ、SCSIデバイス、スキャナ、及びジュークボックス 6.PCMCIAインタフェイス及びデバイス、ISAバス及びデバイス、E ISAバス及びデバイス、PCIローカルバス及びデバイス、VESAローカル バス及びデバイス、マイクロチャネルアーキテクチャバス及びデバイス 7.ネットワークインタフェイス、アダプタ及びカード(イーサネットなどに 対するもの)トークンリング、10Base−T、ツイストペア、平行線、AT Mネットワーク、フレームリレイ、ISDNなど、 8.ビデオカード及びデバイス、2D及び3Dグラフィックカード、フレーム バッファ、MPEG/JPEG圧縮/解凍ロジック及びデバイス、ビデオ会議カ ード及び装置、ビデオカメラ及びフレームキャプチャデバイス 9.コンピュータの集積化された電話カード及び装置、モデムカード及び装置 、ファックスカード及び装置 10.サウンドカード及び装置、オーディオ及びビデオ入力装置、マイクロフ ォン、スピーク、 11.データ獲得及び制御カード及びインタフェイス、圧縮/解凍ロジック及 びデバイス、エンクリプション/デクリプションロジック及びデバイス、及び 12.テープバックアップユニット、冗長/フォルトトレラントコンポーネン ト及びデバイス(RAID及びECCメモリなどの) これらの構成要素、カード、インタフェイス、及びデバイス(上述されたもの と同様にそれらに相当する構成要素、カード、インタフェイス、及びデバイスを 含む)の適切な組み合わせはたくさんあるので、全てをリストアップすることは しない。 スーパースケーラープロセッサ200を組み込んだネットワークパーソナルコ ンピュータ100が、第11A図に例示されている。スーパー スケーラープロセッサ200は、メモリサブシステム120に接続されている。 メモリサブシステム120は、RAMとして例示されているが、他の実施例は、 キャッシュもしくはRAMとスーパースケーラープロセッサ200との間に挿入 された複数のキャッシュを含んでいる。スーパースケーラープロセッサ200と メモリサブシステム120等は、コンピュータ100のマザーボード101の一 部として含まれている。一連のアダプタ、インタフェイス及びコントローラは、 プロセッサ200をデバイスもしくは周辺装置に(構成要素に)接続している。 これらのアダプタ、インタフェイス、及びコントローラは、通常、プロセッサ2 00に、カードとしてマザーボード101の背面のバスに接続されている。しか しながら、他の実施例は、個々のアダプタ、インタフェイス及びコントローラを マザーボード101内に組み込んでいる。グラフィックアダプタ110は、スー パースケーラープロセッサ200に接続され、スーパースケーラープロセッサ2 00によって供給されたスクリーン更新値に基づいてディスプレイ111を制御 する信号を供給する。パラレルインタフェイス109とシリアルインタフェイス 110とが、パラレルポートとシリアルポート(パラレルポートデバイス(例え ば、プリンタ、パラレルプリンタ102、などの、テープバックアップユニット など)に対する、及びシリアルデバイス(例えばモデム103、ポインティング デバイス、プリンタ))への、各々インタフェイスへ信号を供給している。ハー ドディスク/フロッピーディスクコントローラ130は、ハードディスク132 及びフロッピーディスク131へのアクセスを制御している。LANアダプタ1 07は、コンピュータ100に、802.3イーサネット、10ベースT、ツイ ストペア、及びトークンリングネットワークなどのローカルエリアネットワーク に対するネットワークインタフェイスを提供している。その他のアダプタ及びイ ンタフェイスと 同様に、LANアダプタ107は通常、カードとして、マザーボード101の背 面バスからプロセッサ200に接続されている。 スーパースケーラープロセッサ200は、部分的に、プロセッサ、または複数 のプロセッサのうちの1つとして、複数のスーパースケーラープロセッサ200 のインスタンスがレベルクーキャッシュ120及びプロセッサバス123に接続 されているように例示された第11図Bに示されたものよりも、ネットワークサ ーバ構成内でより魅力的である。各スーパースケーラープロセッサ200は、メ モリコントロール121とシステムコントロール150とを、プロセッサバス1 23を介して接続している。メモリコントローラ121は、Error エラー 補正コード(ECC)をサポートするため、8ビットのパリティインタフェイス を含むメモリ122への64ビットインタフェイスを提供している。ECCメモ リは望ましいものであるが、所望に応じて取り付けられるものである。システム コントローラ150は、64ビットプロセッサバス123と32ビットローカル バス151との間のインタフェイス(もしくはブリッジ)を提供している。ロー カルバス151は、任意の高速I/Oバス、例えば、VESAローカルバス(V Lバス)もしくは周辺コンポネント相互接続(PCI)バスである。システムコ ントローラ150は、プロセッサバス120とローカルバス151の異なる可能 性のあるクロックレートをサポートするためのバッファリングを提供する。シス テムコントローラ150は、2つのバス(123及び151)に用いるために任 意であり、ある構成では、2つのバスにわたるデータトランザクション(バース ト)をサポートする。ローカルバス151は、複数のローカルバス装置と、コン ポネント(例えば、SCSIアダプタ170、IDEコントローラ180、LA Nアダプタ157、及びブリッジ及び周辺コントローラ160)を接続する。デ ィスプレイ装置の必要性が、 通常、ネットワークサーバコンフィギュレーションに於いては、パーソナルコン ピュータもしくはワークステーション構成に比べて低いので、ディスプレイアダ プタ112は、低い帯域幅のISAバス161に接続されるものとして例示され ている。 IDEコントローラ180は、ディスク、テープドライブ、CD−ROMなど の記憶装置をインタフェイスするために、様々な構造のコントローラを表してい る(DIE、エンハンストIDE,ATA、エンハンスト小型装置インタフェイ ス(ESDI)コントローラを含む)。IDEコントローラ180は、2つのデ ィスク(ハードディスク181及びフロッピーディスク182)と、テープバッ クアップユニット183とに接続されている。他の構成が、IDEコントローラ 180を介してIDE/エンハンストIDE CD−ROMをインタフェースし てもよく、CD−ROM172及びCDジュークボックス173の両方が、第1 1B図の実施例の小型コンピュータシステムインタフェース(SCSI)アダプ タ170を介してインタフェースされる。 SCSIアダプタ180は、ローカルバス151と、複数のSCSIデバイス (例えば、冗長アレイ廉価ディスク(RAID)171、CD−ROM172、 スキャナ2016、CDジュークボックス173、及びスキャナ174)に、例 示チェーン構成で接続されている。例示を目的として、SCSIデバイスのデイ ジーチェーンが、第11B図に例示されている。LANアダプタ157は、IE EE802.x標準に基づくもののように(例えば、802.3ベースバンドイ ーサネット同軸メディア、ツイスト及び非ツイストペアメディア、10ベースT 、802.3広帯域ネットワーク、802.4トーキンパスネットワーク、80 2.5トークンリングネットワークなど)、及びファイバー分配データインタフ ェイス(FDDI)標準に基づくもののように、適切なネットワー クアダプタを表している。ISAバス161は、ローカルバス151に、ブリッ ジもしくは周辺コントローラ160を介して接続されており、ディスプレイアダ プタ112、テレフォンカード136、マルチファンクションI/Oカード(ス ーパーI/O135などの)を含む様々な周辺コンポネントに対する16ビット I/Oバス及びモジュール接続部を提供する。スーパーI/0135は、ポイン ティングデバイス137、シリアルポート138、パラレルポート139、及び ディスク131に対するサポートを提供する。 スーパースケーラープロセッサ200に対するマルチメディアワークステーシ ョン構成が、第11C図に示されている。第11B図のサーバ構成と同じように 、マルチメディアワークステーション構成は、各々が装置及び接続された構成要 素に整合する様々な性能特性を備えた階層的バスを含む。当業者は、第11C図 の階層バスのさまざまな適切な変形を思いつくことができる。メモリバス126 は、スーパースケーラープロセッサ200と、キャッシュ127と、メモリ12 8とブリッジ129とを接続する。ネットワークサーバ構成(第11B図)と同 じように、さまざまなキャッシュ構成が、マルチメディアワークステーションに 対しても適している。ローカルバス151は、好ましくは、VLバスもしくはP CIバスなどの高速I/Oバスからなる。SCSIアダプタ170、LANアダ プタ157、グラフィックアダプタ114、サウンドアダプタ190、及びモー ションビデオアダプタ195は、I/Oバス151を介して、互いに、もしくは スーパースケーラープロセッサ200に接続されている。SCSIアダプタ17 0、LANアダプタ157、及び拡張バスブリッジ160は、各々に接続された コンポネントもしくはデバイスとともに、第11B図に於いて説明された対応す るアダプタ、コンポネント、デバイスに匹敵するものである。特に、SCSIア ダプ タ170は、デイジーチェーン構成で、複数のSCSIデバイス(例えば、ディ スク175、テープバックユニット176、及びCD/ROM172)と接続さ れている。 スーパースケーラープロセッサ200のある実施例に基づけば、スーパースケ ーラープロセッサ200は、x86命令セットに対するマルチメディア拡張を行 うためのマルチメディアユニット256を含んでもよい。第11C図を再び参照 すると、マルチメディアアダプタ(サウンドアダプタ190などの)と、モーシ ョンビデオアダプタ195、グラフィックアダプタ114が、各々、バス15L 126を介してスーパースケーラープロセッサ200に接続されており、高い帯 域幅転送(マルチメディアデータのマルチメディアアダプタと、メモリ128と 第2記憶デバイス(例えば、ディスク175)との間の転送)を提供している。 サウンドアダプタ190は、デジタル・アナログ(D/A)及びアナログ・デジ タル(A/D)インタフェイスを、各々、オーディオ信号の合成及びサンプリン グのために提供している。A/D及びD/Aインタフェイス(サウンドアダプタ 190の)は、各々、マイクロフォン191とスピーカ192に接続されている 。サウンドカードに適した設計は、当業者にはよく知られており、サウンドアダ プタ190はそのような適切な設計を有する。 モーションビデオアダプタ195は、例えば、ビデオカメラ196からのビデ オ信号のキャプチャ及び圧縮のためのサポートを提供する。さらに、モーション ビデオアダプタ195は、フレームバッファ197を介して、テレビジョンなど のディスプレイ装置198、高解像度テレビジョン、及び高解像度コンピュータ モニタに、ディスプレイ信号を供給する。モーションビデオアダプタ195の他 の実施例は、フレームバッファ197を省略し、直接ラスタディスプレイを駆動 するものであって もよい。さらに、モーションビデオアダプタ195の他の実施例は、モーション ビデオアダプタ195のビデオ出力及びビデオ入力の機能を切り離し、代わりに 、別個のビデオ入力コンポネントとビデオ出力コンポネントを提供するものであ ってもよい。 ビデオ情報は、非常に多くの記憶空間を必要とするので、その情報は通常圧縮 されている。したがって、圧縮されたビデオ情報をディスプレイするために、例 えば、CD−ROM172のコンパクトディスク上に表されたデータから、圧縮 されたビデオ情報は解凍されなければならない。高いバンド幅バーストモードの データ転送は、I/Oバス151によってサポートされ、これは、好ましくは、 バーストデータ転送を行うことのできる長さに対するサポートを備えたPCIな どのローカルバスである。ビデオ圧縮及び解凍は、スーパースケーラープロセッ サ200によって、及び/もしくはモーションビデオアダプタ195によって( マルチメディアユニット内のマルチメディア命令を実行する)によって行われる 。すなわち、メモリバス126及びブリッジ129は、好ましくは、メモリバス 126とI/Oバス151との間のブリッジ129をわたる転送(データのバー スト)をサポートする。X. 結論 本発明が、特定の実施例に関して説明されたが、上述された説明は、本出願の 発明の1つの例に関するものであり、限定を意図するものではない。説明された 実施例の特徴の組み合わせ、さまざまな変形及び変更が、本発明の技術的視点内 に含まれる。 アペンディクスA:RISC86(登録商標)文法 このアペンディクスでは第3図に示されるRISC86(登録商標)文法によ るop−codeを記述する。RegOp定義 Opコードのビット36及び37は00であり、RegOpを指定する。ビッ ト10及び11は使用されず、00となる。A.1 RegOp Type Field Encoding “/”により分けられるニーモニックは、固有のTypeフィールドを有し、 レジスタユニット253及び254より固有に扱われる。これらのRegOps はフィールドExt及びSSにより示され、且つOCU260によりコミットさ れる状態修飾において異なる。 TypeフィールドはフィールドDSzに基づき別様に解釈される。上述した ように、実行ユニットは1バイトサイズのRegOpに対して あるオペレーションを実行し、16/32ビットサイズのRegOpに対して別 のオペレーションを実行する。 形式x1xxxx、1x1xxx、或いはxx01xxのTypeフィールド を有する全てのバイトサイズRegOps及び全てのRegOpsはRUX−o nlyオペレーションである。 ハードウェアは形式xx01xxのTypeフィールド値を有する全てのRe gOpsを“cc−dependent”として扱い、従ってステータスオペラ ンドフォワーディングを用いて、そのオペレーションの実行と同期する。A.2 RegOp拡張フィールドExt[3:0] MOVcc Op'sの場合、{Type[0],Ext[3:0]}は5ビット条件コードを指定する。 RDxxx/WRxxx Op'sの場合、{Type[0],Ext[3:0]}は5ビット専用レジスタ番号を 指定する。WRFLG(.cc)の場合“.cc”が指定されるなら、エンコードする専用 レジスタ番号は、所定のStatMod値に一致する。RDSEG Opsの場合、Ext[3 :0]は4ビットセグメント(セレクタ)レジスタを指定する。セグメントレジス タのセットはx86アーキテクチャレジスタ及び付加的な専用セグメントレジス タを含む。 OSセグメントレジスタは、Opデコード時間にて、エミュレーション環境から の現在3ビットレジスタ番号により置き換えられる。 フィールドSS=1を有する他のオペレーションの場合には、{Type[0],Ext[3 :0]}Ext[3:0]}は(スケジューラ280に格納されるような)4つの状態修飾ビ ットを指定する。A.3 RegOpオペレーション/データサイズフィールドDSz[2:0] フィールドDSzはオペレーションのためのデータサイズを示す。 サイズDSize、ASize、SSizeは環境更新中に、対応する環境変 数を用いて置き換えられるプレースホルダ(placeholders)である 。A.4 RegOp RUX−onlyフィールドR1 R1はRegOpがレジスタユニット251に対してのみ発行可能であること を示すためにセットされる。A.5 RegOp指定フィールドDest[4:0] フィールドDest[4:0]は、そのオペレーションに対するデスティネー ションレジスタを指定する5ビット汎用レジスタ番号を保有する。A.6 RegOp第1ソースフィールドScrl[4:0] フィールドScrl[4:0]は、そのオペレーションに対する第1のソース レジスタを指定する5ビット汎用レジスタ番号を保有する。A.6 RegOpセット状態フィールドSS フィールドSSは、そのオペレーションがフィールドExtにより示される状 態フラグを変更することを示すためにセットされる。A.6 RegOpフィールI フィールドIは、フィールドImm8/Src2が即値、或いはレジスタ番号 を含むか否かを示す。A.6 RegOpフィールドImm8/Src2[7:0] Imm8/Src2は第2のソースオペランドに対する即値、或いはレジスタ 番号を保有する。I=0の場合には、Imm8/Src2[4:0]は5ビット レジスタ番号を含む。I=1の場合には、Imm8/Src2[7:0]はフィ ールドDSzにより示されるサイズに符号拡張されたビット符号付き即値を指定 する。LdStOp定義 Opコードのビット37及び36はLdStOpを示すために0及び1となる 。A.7 LdStOp TypeフィールドType[3:0] A.8 LdStOpアドレス計算サイズフィールドASz[1:0] emcode環境の置換前に、フィールドASz[1:0]は以下のようなア ドレス計算サイズを示す。 emcode環境の置換は、ASize、SSize、或いはDSizeを適 切な固定サイズに変更する。A.9 LdStOpデータサイズフィールドDSz[1:0] A.10 LdStOpデータフィールドData[4:0] フィールドDataは、その格納ソース、すなわちロードデスティネーション レジスタに対する5ビット汎用レジスタ番号を示す。A.10 LdStOpセグメントフィールドSeg[3:0] フィールドSeg[3:0]はセグメントレジスタを指定する。A.11 LdStOpベースオペランドフィールドBase[3:0] フィールドBaseは、そのレジスタファイルの下半分の汎用レジスタを示す 、4ビットレジスタ番号を含む。そのレジスタからの値はそのアドレス計算に対 するベースとなる。A.12 LdStOpインデックスフィールドIndex[3:0] フィールドBaseは、レジスタファイルの下半分の汎用レジスタを示す4ビ ットレジスタ番号を含む。そのレジスタからの値は、アドレス計算中スケールさ れベースに加えられるアドレスインデックスとして用いられる。A.13 LdStOpインデックススケールファクタフィールドISF[1: 0] フィールドISFはそのインデックスが1、2、4或いは8のファクタにより スケールされるべきであるということを示す。A.14 LdStOp大きなディスプレースメントフィールドLD フィールドLDは、そのオペレーションが先行するLIMMOp、すなわちフ ィールドDisp8からの小さな(8ビット)ディスプレースメントからの、大 きな(32ビット)ディスプレースメントを用いるか否かを示す。A.15 LdStOp小さなディスプレースメントフィールドDisp8[7 :0] フィールドDisp8[7:0]はフィールドASzにより示されるサイズに 符号拡張された8ビットディスプレースメントを含む。LIMMOp定義 Opコードのビット37及び36は11であり、LIMMOpを示す。A.16 LIMMOp即値フィールドImmHi及びImmLo フィールドImmHi[14:0]及びImmLo[16:0]はそれぞれ3 2ビット即値の最上位15ビット及び最下位17ビットを含む。A.17 LIMMOpデスティネーションフィールドDest[3:0] フィールドDest[3:0]は即値に対するデスティネーションを示す4ビ ットレジスタ番号を格納する。 注記:標準NO−OPはLIMM t0,〈undefined〉であり、LIMM t0,〈undefined〉 は完了した状態にてスケジューラにロードされ、書き込みにより変化しないレジ スタt0に対して即値〈undefined〉を書き込むことによりコミットされる。SpecOp定義 Opコードのビット37及び36は10であり、SpecOpを示す。ビット 35はこのアペンディクスにおいて説明されるSpecOpsに対してセットさ れるが、FpOpsに対してはクリアされる。A.18 SpecOpTypeフィールドType[3:0] A.19 SpecOp条件コードフィールドcc[4:0] フィールドcc[4:0]はBRCONDオペレーションに対する5ビット条 件コードを含む。ビットcc[4:1]はその条件を指定し、以下のように検査 される。 ビットcc[0]は、その条件下或いはコンプリメントが真理に対して評価され るか否かを指定する。 上記定義において、“〜”、“・”、“+”及び“^”はそれぞれ、論理演算 NOT、AND、OR及びXORを示す。OF、SF、ZF、AF、PF及びC Fは標準x86ステータスビットである。EZF及びECFはアーキテクチャの ゼロフラグZF及びキャリーフラグCFが変化しない時、emcodeがx86 命令をインプリメントするシーケンス内において用いるエミュレーションゼロフ ラグ及びエミュレーションキャリーフラグである。IP、DTF及びSSTFは それぞれ割り込み保留を示す信号、デバックトラップフラグ及び信号ステップト ラップフラグである。 分岐条件STRZとMSTRCは論理的に固有であり、ムーブストリング命令 MOVSのようなx86命令をインプリメントする際に用いられる。そのような x86命令に対して、emcodeはインデックスをレジスタ内に格納し、BR CONDと共に終了するループを生成する。そのループの各繰り返しは大量のデ ータを転送し、そのインデックスをデクリメントする。分岐予測は初めに、BR CONDがループの始めに分岐するということを予測する。条件MSTRCは、 そのインデックスがx86命令の完了近くに、定義済みのポイントに到達すると いうこと を示す。デコーダ240はその時スケジューラ280にロードされているBRC ONDに対する分岐予測を変更する。従って誤り予測された分岐及び関連するア ボートは、ループが完了するとき避けることができる。これはプロセッサ効率を 改善する。A.20 SpecOpデータサイズフィールドDSz[1:0] フィールドDSz[1:0]はロード定数演算LDK及びLDKDに対するデ ータサイズ1バイト、4バイト或いはDSizeを示す。A.21 SpecOp指定フィールドDest[4:0] フィールドDestはオペレーションLDK及びLDKDのデスティネーショ ンである5ビットレジスタ番号を保有する。A.21 SpecOp即値フィールドImm17[16:0] フィールドImm17[16:0]は17ビット定数、17ビット符号付き即 値或いは14ビットOpアドレスを含む。汎用レジスタ定義 24の整数汎用レジスタがある。最初の8つのレジスタはx86専用レジスタ AXからDIまでに対応する。残りの16レジスタはCISC命令をインプリメ ントする複数のオペレーションシーケンス内で用いられる一次的な、すなわちス クラップレジスタとして機能する。5ビットレジスタ番号を用いるオペレーショ ンは32レジスタにアクセスでき、整数レジスタに対して用いられない残りのレ ジスタ番号は環境変数置換のためのマルチメディアレジスタ、すなわちプレース ホルダである。 x86整数レジスタセットは、レジスタ(AX、CX、DX及びBX)の半分 の下位2バイトのそれぞれのバイトオペレーションに対するアドレッシングを支 援する。レジスタサイズ仕様に基づき、x86内の3ビットレジスタ番号は、h i/loいずれかのバイトレジスタ、すなわちword/dwordレジスタと 解釈される。オペレーションパースペ クティブから、このサイズはオペレーションのASz或いはDSzフィールドの いずれかにより指定される(LdStOpsにおけるBase及びIndexレ ジスタの場合にはASz、一般にData/Dest、Src1及びSrc2レ ジスタの場合にはDSz)。スクラッチ整数レジスタセットはレジスタ(t1− t4及びt8−t11)の更に半分の下位2バイトの同様なアドレッシングを支 援する。 以下の表は名前付きレジスタに対するレジスタ番号1から24をマップ化する 。 ニーモニック“t0”及び“_”は書き込まれるレジスタに対して同義である が常に読み出す時値0に戻される。“_”は一般に文字に用いられ、オペランド 或いは結果値はdon‘t careである。上記したように、レジスタt0は バイトモードにおいて参照されることができない。アペンディクスB:疑似RTL記述 このアペンディクスにおける表は、典型的なプロセッサ200の実施例を通し て用いられる信号を発生する論理を説明する。各表は更なる説明、すなわち他の 表を参照せずに、他の表において説明される信号を用いる場合がある。このアペ ンディクスにおいて説明される信号は他で明確に示されなければアサートされる 、すなわちアクティブハイである。 以下の表記法が用いられる。“1”はインバータにより提供されるような信号 の補数、すなわち逆数を示す。“・”“ ”及び“&”を介して接続される信号 はANDゲートによりインプリメントされることができるような論理ANDとし て組み合わせられる。“+”介して接続され る信号はORゲートによりインプリメントされることができるような論理ORと して組み合わせられる。“^”を介して接続される信号はXORゲートによりイ ンプリメントされることができるような排他的論理ORとして組み合わせられる 。表記法(a)x=b else x=c、すなわち別にはif(a)x = b:cは信号aがアサート されるなら信号bに等しく、そうでなければcに等しい出力信号xを有するマル チプレクサを示す。もし、else x=cが省略されるなら信号aがローであるなら信 号xはローである。マルチプレクサを表す別の表記法はx=switch(A)case A1:x 1 case A2: x2 ... case An: xnであり、その場合出力信号xはマルチビット選 択信号Aの値に依存するx1或いはx2或いは...xnを有する。x = switch (A)x1:x2: ... xnのように省略される場合には、出力信号x1からxnは信号 Aの逐次値に対応する。記載される大部分の信号は各クロックサイクルを変更す る。表記法@(clock)は、信号Aが後続クロックサイクルにおいて用いら れる信号クロックのエッジにてレジスタにラッチされるということを示す。 当業者により理解されているように、以下に示すロジックは様々な方法におい てインプリメントされる。表B.1 スタティックフィールド記憶素子オペレーション 表B.2 ダイナミックフィールド記憶素子オペレーション スケジューラ280に対する汎用的なコントロールロジック520は、それぞれ のフリップフロップ内にロードされる信号を選択する独立な信号LdEntry [i]を発生する。 表記法xxOp.yyyはタイプxxOpのRISC86命令に対して定義さ れるフィールドyyyからの値を示し、オペレーションデコーダ510に対する 入力信号を示す。例えば、RegOp.SrclはRegOpのSrclフィー ルドと同じ位置における命令のビットを示す。第3図及びアペンディクスAはR egOp、LdStOp、LIMMOp及びSpecOpに対する典型的なフィ ールド定義を確定する。表B.3 フィールドType “RUYD”はデバッグするための第2のレジスタユニットRUYをディスエー ブルする専用レジスタである。表B.4 フィールドLD Imm 表B.5 フィールドSrclReg 表B.6 フィールドSrc2Reg 表B.7 フィールドSrcStReg 表B.8 フィールドDstReg 表B.9フィールドSrc1BM、Src2BM、及びSrc12BM 表B.10フィールドSrcStBM 表B.11フィールドOpInfo 表B.12ステートField オペレーションデコーダ510デコーダ510は対応するRISC86命令の OpIdフィールドに従ってb0000(未発行)或いはb1111(完了済み )のいずれかとしてフィールドState[3:0]を初期化する。 フィールドState(信号S0、S1、S2及びS3)は以下のようにオペ レーション実行中変化する。 信号SC_Abortはアサートされ、スケジューラ280において現在実行中のオペ レーションをアボートする。表B.13 フィールドExec1 オペレーションデコーダ510はフィールドExec1をローに初期化する。 その後フィールドExec1 = Iは以下のように変化する。 信号IssueOpToRUXはレジスタユニット253に対する発行選択スキャンチェイン 中にエントリ内にて発生する。表B.14フィールドDestBM オペレーションデコーダ520はデスティネーションレジスタのいずれのバイ トが変更されるかを示すために、オペレーションに従ってフィールドDestB Mを初期化する。 フィールドDestBMは以下のようにクリアされる。 表B.15フィールドDstVal オペレーションデコーダ510は以下の論理を用いて関連するRISC86命 令からフィールドDestValを生成する。 オペレーションフィールドDestValの後続実行は、以下のように変化する。 ここで信号DC_DestRes、SU1_DestRes、RUX_DestRes及びRUY_DestResはそのオペ レーションを実行した実行ユニットからの信号である。表B.16 フィールドStatMod オペレーションレコーダ510は関連するオペレーションに従ってフィールド StatModをセットする。 スケジューラ280の論理が、アボート中にフィールドStatModをクリアする。表B.17 フィールドStatVal発生論理 フィールドStatValは初期状態では0である。 そして RegOpが完了する時変化する。 表B.18 フィールドOprndMatch_XXsrcY フィールドOprndMatch_XXsrcYは発行ステージから各プロセシングパイプライ ンのオペランドフォワードステージへ(或いはある場合にはステージ1からSU のステージ2へ)情報を渡し、値は汎用の信号XX AdvY(より詳細にはXXAdv0或いはSUAdv2)により制御される。 表B.19 フィールドDBN フィールドDBNは初期状態では0である。 そして実行中以下のように変化する。 表B.20 OpクワッドフィールドEmcode 表B.21 OpクワッドフィールドEret 表B.22 OpクワッドフィールドFaultPC Opクワッド内の第1のデコーダされたx86命令に対する論理PC。表B.23 OpクワッドフィールドBPTInfo 現在BPTアクセスからの情報表B.24 OpクワッドフィールドRASPtr 現在のリターンアドレススタック。表B.25 OpクワッドフィールドOpQV オペレーションデコーダ510はスケジューラ280の上位にロードされるO pクワッドが有効であるか否かを示すために、初期状態ではフィールドOpQV をセットする。 このマルチプレクサは固有ではない。同様の(しかし3:1)マルチプレクサか らくる全ての新しいOpクワッドフィールドはExcepAbortの記述に対 するOCU記述を調べる。 フィールドOpQvはアボートの後にクリアされ、Opクワッドを無効とし、 実行すなわちコミットメントを防ぐ。 表B.26 OpクワッドフィールドLimViol フィールドLimViolは、新しいOpクワッドが常駐し、かつスケジュー ラにおいて有効になる(すなわち最初のサイクル中)、全ての他のフィールドよ り1サイクル遅れて実際にロードする。これは、このOpクワッドフィールドの 上記記述において反映される。 表B.27 シフトコントロール論理 信号LdEntry0からLdEntry5は第6図に関連して記述されるよ うに(新しいOpクワッドを有する)列0のローディングから、列4からのOp クワッドを有する列5のローディングを制御する。この表においては、OCU2 60からの入力信号OpQRetireは、スケジューラ280の一番下の列内 の有効なOpクワッドがリタイアされ得るか否かを示し、入力信号HoldOp Q3、HoldOpQ4A及びHoldOpQ4Bは、条件コード評価が列3或 いは4におけるオペレーションを停止するか否かを示す。 表B.28 単一エントリ発行スキャン項 単一エントリ項は以下のようになる。 ここで、“State=Unissued”は〜S0であり“Executab le by xxは実行パイプラインLU/SU/RUX/RUYに対する、そ れぞれLU/SU/RU/RU/RUYに等しい。ここで用いられるタイプビッ トLUi、SUi、RUi、RUXiはLdOpsの場合LU=1であり、St Ops(LEAのようなオペレーションを含む)の場合SU=1であり、全ての RegOpsの場合RU=1であり、RUYにより実行可能なRegOpsの場 合RUY=1である。表B.29 LU、SU及びRUXルックアヘッドスキャンチェイン 6つの単一エントリがスキャンチェインXXに対する4つのグループ伝搬信号 XXPgrp[3:0]及びグループキル信号XXKgrp[3:0]を形成するた めの信号である。ここでXXはLU、SU或いはRUXである。各グループ信号 はスケジューラ280のクワドラントに対応する。以下はスキャンチェインの1 つに対するエントリ0から5を含む第1クワドラント(クワドラント0)に対す るグループ信号である。 ここでP0からP5及びK0からK5は6つの連続するエントリ及びパイプライ ンXXに対する単一エントリ項である。 グループキル信号XXKgrpがアサートされ、且つより古いグループがスキ ャンビットをキルしない場合、グループ信号は選択された命令を含む。XXIssueQ uadrant[0:3]からのビットはアサートされ、パイプラインXXに対して発行する ために選択されたオペレーションを含むグループを指定する。信号XXIssueQuadr ant[0:3]は以下のように生成される。 発行されるオペレーションを示す信号[IssueToXXi]は、もしあるなら、パイプ ラインXXに発行され、以下のように、信号IssueQuadrant及び単一エントリキ ル項IssuableToXXを生成する。 表B.30 RUYスキャンチェイン(3ビットグループ) 単一エントリP、K、O及びGは組み合わされ、3つのエントリの8つのグル ープに対するグループ項Ggrp[7:0]、Pgrp[7:0]及びOgrp [7:0]を生成する。グループ0の場合、そのグループ項は以下のようになる 。 ここで、x、y、及びzはそれぞれグループIにおける最古、中間及び最新エン トリを特定する。単一エントリG項は信号IssuableToRUX[23:0]のビットであり 、単一エントリK項はIssuableToRUY[23:0]のビットである。 グループ項は更に大きいグループに対してグループ項を形成するためのステー ジにおいて組み合わされる。以下の式はグループX及びYの論理和であるグルー プXYに対するグループ項を形成するためにグループ項GX、OX、PX、GY 、OY及びPYを組み合わせる論理を記述する。 信号CinGrp[6:0]及びOinGrp[6:0]はその組み合わせからの出力である。信号Ci nGrp[6:0]は信号G_7、G_67、G_567、G_4567、G_34567、G_234567、及びG_123456 7である。出力信号OinGrp[6:0]は信号O_7、O_67、O_567、O_4567、O_34567、O_2 34567,及びO_1234567である。 信号IssueOpToRUY[23:0]RUY[23:0]の1ビットはアサートされ、選択されたエ ントリを特定する。以下の式は信号IssueOpToRUYを発生する論理を記述する。 iが6から0に等しいグループiの場合: 表B.31 オペランド情報ブロードキャスト 各エントリはそのエントリに含まれるオペレーションに対するソースオペラン ドを記述する信号Src1InfoInfo及びSrc2Src2Infoを生成する。 そのオペレーションが発行のために選択されるなら、そのエントリは、そのオ ペレーションが発行する実行ユニットに関連するオペランド情報バス上の信号Sr c1Info及びSrc2Infoを駆動する。信号OprndInfo_XXsrcYは実行ユニットXXに対 するソースオペランドYに関連する、オペランド情報バスにより実際に運ばれる 信号であり、以下のように生成される。 表B.32 オペランド情報一致比較 以下の式は包括的な比較を要約する。 ここで、"XX"XXsrcY"はLUs SUsrc1、SUsrc2、RUXsrc1、RUXsrc2、RUYrc2、RUYsr c1、及びRUYsrc2の一つであり、"bus"はオペランド情報バス552の1つ上にあ る信号OprndInfo_XxsrcYを参照する。バイトマークチェッキングは簡単化及びト レードオフとしてBM[2]を含まない。BM[2]=1は(BM[1]BM[0])=1を暗示し、従って busBM[2]=1であるなら、DestBM[2]に関わらず、一致が示される。表B.33 オペレーション情報ブロードキャスト 以下の式は発行されるオペレーションを含むエントリからのOpInfoフィールド の読出しを要約する。以下の式に従って、各エントリはLU、SU、R RUX或いはRUY パイプラインに対応するオペレーション情報バス 上にOpInfo_LU、OpInfo_SU、OpInfo_RUX或いはOpInfo_RUYを生成する場合がある 。 発行されたオペレーションを含むエントリのみがバス551上の信号を駆動する 。 信号XXAdv0dv0は内部レジスタを制御するのと同じ方法でこれらの外部パイプ ラインレジスタを制御する。表B.34 オペランド選択スキャンチェイン 単一エントリ項は8つのスキャンチェインLUsLUsrc1、1、LUsrcsrc2、SU SUsr c1、c1、SUsrcUsrc2、RU、RUXsrcsrc1、RUXsrc2、RUYsrc1、RUYsrc2のための項 である。 4ビットグループに対するグループ項は以下のように構成される。 別の方法では、3ビット或いは6ビットグループが用いられる。 各エントリは、そのエントリが実行パイプラインXXに対するオペランドsrcY を供給するか否かを示す信号SupplyValueToXXsrcYを生成する論理信号を含む。 XXsrcYchain.CIN及びXXsrcYchain.KはパイプラインXXのオペランドsrcYに対応す るスキャンチェインにおけるエントリの入力スキャンビット信号及びキル項であ る。表B.35 オペランド転送に対するイネーブルロジック 各エントリは転送されるべき8つのオペランド信号Oprnd_XXsrcYに対応する8 つのドライバを有する。信号SupplyValueToXXSrcYがオペランド選択段階中にア サートされるなら、1つのエントリがオペレーション結果値を供給するためにそ のドライバをイネーブルする。 スキャンチェインからのスキャンビット出力がセットされるなら、レジスタフ ァイル290は信号Oprnd_XXsrcYを供給するためにそのドライバをイネーブルす る。 表B.36 オペランド情報信号 オペランドを供給するエントリはまた、以下のようにオペランドステータス信 号を供給する。 オペランドドライバに対するイネーブル信号は以下のようにオペランドステー タス信号に対するドライバをイネーブルする。 オペランド状態バス553を駆動するレジスタファイル290は、いずれのオ ペランド状態バスにも対応するオペランドを供給するために選択されるエントリ ではない。レジスタファイル290からのオペランドステータス信号は以下の形 式からなる。 オペランド状態バス553を駆動するためのレジスタファイル290をイネーブ ルする論理は以下のように要約される。 表B.37 ディスプレースメントフォワーディング オペランドフォワーディングステージ中、エントリからのディスプレースメン トフォワーディングはそのエントリか或いはスケジューラ280内の先行するエ ントリかのいずれかによりイネーブルされる。以下はロードユニット251及び ストアユニット252に対する信号Disp_LU及びDisp_SUのフォワーディングを要 約する。 値"thisOp"及び"nextOp"は、後続する信号LU、S1、S0及びLDからの物理エントリ を特定する。またスケジューラ280内のfirst/newestエントリの場合、NextOp 項は0である。表B.38 即値フォワーディング ドライバは以下のようにレジスタユニット253及び254に対する即値を供 給する。 以下の式はオペランドステータス信号に対する別々のバスをイネーブルするこ とを要約する。 表B.39 データオペランド選択及びフォワーディング オペレーション選択段階456中に、各エントリが実行ステージ450にある か否かを確定する。 データオペランドブロードキャスト段階中、実行ステージ450内にあるべき と確定されるオペレーションを含むエントリは、以下のようにデータオペランド 情報信号を生成する。 各エントリはそのエントリがデータオペランドのソースレジスタに影響を与え るオペレーションを含むか否かをデータオペランド情報信号から判定する。各エ ントリ内のデータオペランドマッチレジスタはそのエントリがデータオペランド のソースに影響を与えるか否かを示す値OprndMatch_SUsrcStをラッチする。 ここで"bus"はOprndInfo_SUsrcStを示す。 オペランド選択段階461中に、選択されたエントリから開始するスキャンチ ェインはデータオペランドのソースを選択する。そのソースは、先行するエント リがデータオペランドに影響を与えない場合、そのデータオペランドのソース、 すなわちレジスタファイル290に影響を与えない最新の先行エントリである。 スキャンチェインは単一エントリスキャン項を有する。 グループレベルスキャン方程式は表B34に示すような他のオペランド選択スキ ャンチェインに対する方程式と同一であり、各エントリはそのエントリに対する 入力スキャンビット及びキル項からそのエントリが選択されるか否かを判定する 。 データオペランド転送段階462中に、各スケジューラエントリ内のドライバ は以下のようにイネーブルされる。 いかなるエントリのドライバもイネーブルされないなら、レジスタファイルの出 力でのドライバは以下のようにイネーブルされる。 バス554上を転送されるデータオペランドOprnd_SUsrcStは、ストアユニット 252内のレジスタ1052内に捕捉される。データオペランド転送段階462 中に、コントロールロジック520は読み出されるオペランドステータス値を用 いる。表B.40 ロードストアオーダリングスキャンチェイン ロードストアオーダリングスキャンチェインは各エントリのState及びT ypeフィールドに基づく単一エントリpropagate/kill(P/K)項を有する。3つ のLdOpスキャンチェインの場合、ST TypeビットはSUビットの代わりに用いられ る。これは論理アドレスをのみを生成するLEAオペレーションからの実際のリフ ァレンスメモリであるStOpsを識別する。LUst2/LUst1/LUst0及びSUld2/SUld1は ロードユニット251及びストアユニット252に対するそれぞれのスキャンチ ェインを示す。 そのスキャンチェインに対する単一エントリ項は以下のようになる。 (4つのグループに基づく)グループルックアヘッド項は以下のようになる。 Opクワッドに対するスキャンビットインプット信号は以下のようになる。 LdStOpに対する実行ステージ460の第2段階462中に、LdStOpを保有する エントリに対するtwo/threeスキャンビットCin'sは以下のように24:1マルチ プレクサを用いて組み合わせられる。 スキャンビットCinは、汎用信号が1つである場合に、関連するステージがより 古いオペレーションを含むという結果を用いて、汎用信号においてドライブされ る時反転される。表B.41 スケジューラから外部論理への情報 以下は様々な時点で、外部において使用するための、スケジューラ280から 読み出された情報を要約する。 オペランド情報ブロードキャスト段階: オペランド転送段階中: 注記:XX ={LU,SU,RUX,RUY};Y ={1,2}表B.42 オペレーション有効ビット 以下は4つの実行パイプラインの発行ステージに対するOpVビットを要約する 。 表B.43 RegOpバンピング 汎用コントロールロジック520は以下のように信号BumpRUX/Yを生成するロ ジックを含む。以下に含まれる項は、デッドロック状況になるものを処理する項 である。 オペランドフォワードステージはRUX-onlyオペレーションであり、かつ発行さ れるべきRegOpがまたRUX-onlyオペレーションである場合に、信号InhBumpRUXはR egOpバンピングを禁止する。 信号BumpRUXは、もし禁止されないなら、実行ユニット253のオペランドフ ォワードステージからのRegOpをバンプするためにアサートされ、ソースオペレ ーションの1つはアサートされないか或いは、オペランドフォワードステージ内 のLdOpまたはタイムアウト信号がタイムアウトカウント以上の場合に停止される オペランドフォワーディングステージ内のRegOpに応じてアサートされる。 第2レジスタユニット254からのRegOpをバンプするための信号BumpRUYは禁 止されないが、信号BumpRUXとして同じ理由のためにアサートされる。 表B.44 オペランド転送マルチプレクサコントロール 以下の式は各オペランドマルチプレクサに対する5つの入力選択信号を要約す る。汎用コントロールロジック520がオペランドを提供するためのオペランド バス554或いは結果バス561から564の1つかのどちらかを選択するため にバス553上のオペランド状態信号を用いる。ほとんどのオペランドの場合、 ソースオペレーションが完了するなら、オペランドバス554が選択される。 RegOpsの第2のオペランドの場合には、ソースオペレーションが完了するか或 いはそのオペランドが即値である場合には、オペランドバスが選択される。 ここで信号RUXsrc2Imm及びRUYsrc2Immはsrc2オペランドが即値であることを示す 。 オペランドバス554が選択されない場合、ソースオペレーションを実行する 実行ユニット251から254の1つからの結果バスが選択される。 その選択されたオペランドは無効とされる場合もある。実行ユニットは、オペラ ンドフォワードステージ440から実行ステージ450に送られる関連するオペ レーションを防ぐことにより、無効なオペランドを用いることを防ぐことができ る。表B.45 無効なオペランドの特定 汎用コントロールロジック520が、バス553からのオペランドステートメ ント信号を用いて、実行ユニットXX(XX={LU,SU,RUX,RUY}) に対するオペランドsrcY(Y={1,2})であるか否かを示す信号OprndInvld_XXsrcYを 生成する。 表B.46 ホールド信号ロジック 必要とされるオペランドが有効でない場合に、ホールド信号SC_HoldXX0が発生 し、オペレーションが実行ステージ450に送られることを防ぐ。データオペラ ンドは第2の実行ステージ460まで必要とされないために、そのデータオペラ ンドがまだ有効でない場合でも、StOpsが実行ステージ450に送られる。しか しながら、信号SC_HoldSU2は、そのデータオペランドがまだ無効である場合には 、実行ステージ460内にそのオペレーションを保持する。 表B.47 ステータスフラググループ 標準x86ステータスフラグビットOF、SF、ZF、PF、CF、EZF及びECFは以下のよ うに、信号STATUSV及びフィールドStatModのビットに対応する4つのグループに 分けられる。 表B.48 ステータスフラグフェッチング エントリ16から23のそれぞれは、4つのフラググループに対応し、かつ4 つのフラググループに対するステータスフラグ及び有効性ビットを示す信号Stat Info_1、StatInfo_2、StatInfo_3、及びStatInfo_4を生成する。任意の1つ或い はそれ以上の信号StatInfo_1、StatInfo_2、StatInfo_3、及びStatInfo_4は、そ のエントリが対応するグループに対するスキャンチェインにより選択される場合 に、信号STATUS及びSTATUSVを生成するために用いられる。以下において、プレ フィックス"OPj:"はフィールド、すなわち信号形式エントリjを示す。 アーキテクチャステータスフラグレジスタは、信号FlgStatInfo_1、FlgStatIn fo_2、FlgStatInfo_3、及びFlgStatInfo_4を生成し、エントリが対応するグルー プに対するスキャンチェインにより選択されない場合、何れかの信号を用いて信 号STATUS及びSTATUSVを生成する。 以下のロジックはフラググループを提供するためにエントリを配置するための ルックアヘッドを用いない4つのスキャンチェインを示す。 出力ステータスフラグ情報信号は以下のようになる。 表B.49 cc-RegOpハンドリング 信号CCDepInRUX_0はcc-dep RegOpがレジスタユニットRUXのオペランドフォワ ードステージ内にあるか否かを示し、オペランドフォワーディングステージ内の オペレーションに対するオペレーション情報及び有効性ビットを含むパイプライ ンレジスタから生成される。 信号UnexecCCDepInQ3は実行されないcc-dep RegOpが列3にあるか否かを示し 、列3のエントリ内のタイプ及びステートビットから生成される。 以下のロジックはオペランドフォワードステージ内のRegOpに対して必要とさ れるステータスビットグループが有効であるか否かを示す信号StatVを生成する 。 信号StrtExecCCDepは実行されないcc-dep RegOpが列3内にある時のトラック を保持する。 信号UnexecCCDepInQ4は実行されないcc-dep RegOpが列4内にある時のトラッ クを保持する。 信号SC_HoldStatusはレジスタユニットRUXに対する入力にて、ステータスフラ グ値のコピーを保持する。 信号StatusInvld_RUXはRegOp実行を保持する。 信号HoldOpQ3はスケジューラ列3内からシフトすることからOpクワッドを保持 する。 RUXユニットからの信号RUX_NoStatModは実行されているオペレーションがステ ータスフラグを変更しないということを示す。サイクル遅延バージョンはNoStat Modと呼ばれる。表B.50 BRCONDハンドリング 以下の式はBRCONDハンドリングを記述する。ブレークポイントを示す信号及び 単一ステップトラップであるそれぞれの信号DTF及びSSTFに対して参照される。 “複数デコードディスエーブル”に対する信号MDDは デバッグするために用いられ、スケジューラ280に挿入される時点で1つ以上 のマクロ命令を防ぐ。 BRCONDハンドリングはまずBRCONDが列4内にあるか否かを判定する。信号BRCO NDjがOPjが評価されないBRCONDであるか否かを示す。 ここでjはエントリ番号であり、Type、OpInfo、及びS3はエントリjのフィール ドである。信号BRCONDInQ4は列4がBRCONDを含むか否かを示す。 BRCONDが列4にある場合には、予測条件コードはBRCONDを含むエントリのフィ ールドOpInfoからの(SpecOp.cc)である。 信号CondCode[4:1]の値は以下のように定義される(ビットCondCode[0]はそのセ ンスをフリップする)。 信号CondVはBRCONDの評価のために必要とされるステータスビットが有効であ るか否かを示す。 信号HoldOpQ4Aは、BRCONDが列4内にあり、かつ評価するために必要な条件が 無効である場合に、列4内にあるOp quadのシフトを禁止する。 信号CondValは予測された値CondCode[0]に予測ミスがあったことを示す。 ここで信号IPは以下のように定義され、任意のアクティブh/w割り込み要求があ るか否かを示す。 信号SC_Resolveは解決条件分岐を示す。SC_Resolve = レジスタはクワッド4内にあるBRCONDの解決を示すSignalResolvedを記録する 。 x86 MOVS(move string)命令はオペレーションのemcodeループ内においてデコ ードされる。MOVS命令が実行される速度を改善するために、そのループに対する バイトカウントが4より小さくなるまで全32ビット転送が実行される。条件付き BRCONDはMOVSに対するカウントのチェックの際に用いられる。信号TermMOVSはム ーブストリングがほとんど行われた場合には、emcodeループを終了する。 BRCONDに対するフィールドDestValからの信号BrVecAddrは、その分岐が予測ミ スであった場合に、用いられるべきemcode、すなわち命令ベクトルアドレスを示 す。 信号SC_OldRASPtr、SC_OldBPTInfo、及びSC_RestartAddrは転送され、命令デ コーダ240をリスタートする。リスタートは予測ミス分岐、すなわち失敗に応 じて生成される。予測ミス、すなわち失敗エントリのフィールドRASPtrからの信 号SC_OldRASPtrは、RAS TOSポインタをリストアするための信号である。信号SC_ OldBPTInfoは分岐予測テーブルを修正するための正確な分岐予測テーブル情報を 示す。信号SC_RestartAddrはリスタートに後続するプログラムカウンタを示す。 信号BrVec2Emc及びBrVec2Decは、emcode、すなわちMacDec252からのBRCOND の場合に対する予測ミスBRCONDのためにリスタートが必要とされるということを 示す。 レジスタが予測ミスを記録する。 BRCONDが正確に予測された場合には、BRCONDは以下のように完了したものとし てマークされる。 有効に解決されるBRCONDはシフトすることができない、従って列4をシフトす ることから防ぐ列5による1サイクル以上の間、列4内に置かれる。この間信号 SC_Resolveはアサートされ、バス558上の信号BrVec2XXの1つは、(最初のサ イクルに対する)全時間の間アサートされたままである。命令デコーダ240は 信号BrVec2XXがアサートさ れなくなるまで各サイクルをリスタートし続ける。ベクトルアドレスのような全 ての他の関連する信号はこの時間を通して適当な値に維持される。表B.51 アボート不可能RegOpハンドリング 信号NonAbInRUX_0はアボート不可能RegOpがRUXオペランドフォワードステージ 内にあることを示すためにアサートされる。 信号UnexecNonAbInQ4はアサートされ、アボート不可能RegOpがスケジューラ2 80の列4内にあり、エントリ16から19のフィールドType,OpInfo及びStat eから生成されることを示す。 アボート不可能RegOpがRUXオペランドフォワードステージにあり、列4にない 場合、或いは先行するBRCODが予測ミスしたか、或いはトラ ップが未完了である場合、信号NonAbSyncは、RUXオペランドフォワードステージ からの進捗を中止するために用いられる。 非アボート可能RegOpはRUX実行ステージに送られるまで列4からシフトされない ようにする。 表B.52 自己修正コードハンドリングロジック 自己修正コードハンドリングロジックはコードが修飾されている可能性を排除 するために以下の比較を行う。 SmcHit ="STQストアは専用メモリアクセスではない。 表B.53 レジスタファイルへのコミットメント 以下の式はレジスタファイルライトイネーブル及び、Opクワドの各オペレーシ ョンに対するDestBMフィールド並びに信号OprndMatch_XXsrcY修飾を要約する。 コミットメントされるべき選択されたオペレーション結果は、信号RegCmtSelに より列4或いは5から与えられる。 列5におけるオペレーションに対する制限違反が発生する場合か或いはトラッ クがペンディングである場合には、信号CmtInhはコミットメントを禁止する。信 号RegCmtInhは、レジスタコミットメントを禁止する。 コミットされているOpクワドにおける制限違反がなく、かつ列内の古いオペレ ーションが更に古くそれ故またコミットメントされる場合には、信号WrEnbliは レジスタファイル290に対するコミットメントをイネーブルする。 バイトマークDestBMは結果がレジスタフィールド290に対してコミットされ るそのサイクルをクリアする。 信号OprndMatch_XXsrcYはレジスタファイル290がオペランドを提供するよ うに有効にマスクされる。 表B.54 ステータスフラグコミットメント 以下の式はステータスグループに対する累積的結果生成、或いはステータスグ ループに対する選択プロセスを要約する。同様のプロセスが各ステータスグルー プに対して独立に適用される。 表B.55 StOpコミットメント 信号StCmtSelは、エントリ23から16のいずれのエントリがコミットメント のために選択されたStOpを含むかを示す。コミットされないStOpを含む最も古い エントリが選択される。 エントリ23から16が選択される場合には、StCmtSelはb0000からb0111までに 等しくなる。エントリが選択されない場合には、StCmtSelはb1111に等しい。 信号CmtMaskはスケジューラ280の最後の2つの列内の8つのエントリに対 応する8つのビットを有する。最も古いエントリから選択されたエントリまでに 対応するビットは0であり、残りのビットは1である。 信号CmtCiaCdaは選択されたStOpがCIA或いはCDA命令であることを示す。 全てのコミットメントが禁止される場合には、信号StCmtInhはStOpのコミット メントを禁止する。 信号StCmtV及びQ5StCmtVは、それぞれStOp及び列5内のStOpがコミットメント サイクルのために準備されるか否かを示す。StOpが選択されない場合か、StOpコ ミットメントが禁止される場合か、選択されたStOpが完了しない場合か或いは古 いStOpsが完了しない場合には、StOpのコミットメントはない。 信号StAdvはStOpがストアコミットメントパイプラインのステージへ進むこと ができるか否かを示す。 信号StRetire及びQ5StRetireはいずれの列5StOpがこのサイクルでコミットさ れるかを示す。 信号NewUncmtStOpは以前にコミットされてなく、かつ現在コミットされていな い一番下の2列内の全てのStOpsを特定する。 StOpがコミットされる場合には、UncmtStOpビットは以下のように更新される 。 信号AllStCmtはコミットされていない列5内の全てのメモリ書き込みStOpsが 有効にコミットされているか否かを示す。 信号SC_HoldSC1はOCU 260がストアコミットメントがステージ2に送られるた めに準備されることを認識するか否かを示す。 ストアユニット252は第2実行ステージ内のStOpスタックに対する失敗を示 す信号SUViolを生成する。選択されたStOpが第2実行ステージ内のスタックであ り、しかも失敗が生じる場合には、アボートが生成される。 表B.56 Opクワドリタイアメント 以下の式はOCUのOpクワドリタイアメントコントロールロジックを要約する。 信号OpQRetireは、同じOpクワドに対する複数サイクル間にアサートされる。こ れは、最下位のOpクワドのシフティングが一時的に禁止されるとき発生する。 Opクワドがリタイア、すなわちアボートされるとき、累積されたステータスフ ラグはコミットされる。 表B.57 LdOpアボート アボート信号が完了されない場合、並びに全ての古いオペレーションが完了し 、かつコミットされている場合、OCU 260は列5内のLdOpに対するアボート信号L dAbortを生成する。 表B.58 FAULT OPアボート 以下の式はOCUのFAULTオペレーションハンドリングロジックを要約する。 表B.59 LDDHA/LDAHAハンドリングロジック LDDHA及びLDAHAオペレーションがDestValを適切なデフォルトハンドラアドレ スレジスタにロードすることによりエントリ23に到達するとき、OCUはLDDHA及 びLDAHAオペレーションを扱う。 信号EffAltFltVecAddrはLDAHAオペレーションと同じOpクワド内のOps上の障害 に対する新しい別のハンドラアドレスを提供する。 ハンドラアドレス間の変更及び切り替えは周囲のオペレーション上の障害の認識 と同期する。 OPQはOpクワドフィールドを参照する。表B.60 分岐ターゲット制限違反ハンドリング 分岐ターゲット制限違反を有するものとタグ付けされた有効なOpクワドが列5 に到達する場合には、OCU260はアボート信号LimAbortを生成する。 表B.61 予測ミスBRCONDに対するアボート 列5内の完了していないBRCONDに先行する全てのオペレーションが完了する時 、OCU260は予測ミスBRCONDに対するアボート信号BrAbortを生成する。 後続するオペレーションのコミットメントは、完了していないBRCONDのStat eにより禁止される(すなわち〜S3)。またBrAbortは、FltAbortがアサート される時アサートされるがこれは害を与えない。表B.62 アボートサイクルロジック 信号ExcpAbortは任意のアボート条件がリスタートのためのベクトルアドレス を必要とするときのアボートを示す。 信号SC_EAbortはまた、予測ミスBRCONDに対するアボートを含む。 そのアボートはクロックエッジにて信号SC_Abortにより開始される。 アボートの異なる理由に対して必要とされる情報は以下のように与えられる。
【手続補正書】特許法第184条の8第1項 【提出日】1997年10月2日 【補正内容】請求の範囲 1.複数の実行ユニット(251〜257)と、 前記実行ユニットに結合されたスケジューラ(280)を有する処理システム であって、 前記スケジューラ(280)が、 各エントリーに対応するオペレーションを記述する情報を記憶するためのメモ リフィールドを含む複数のエントリーと、 実行のための前記実行ユニットに発行するためのオペレーションを選択するべ く前記エントリーをスキャンするロジック(530)と、 発行されたオペレーションの実行のために前記実行ユニットに情報を提供する ロジック(532、554)と、 前回に発行されたオペレーションに関連するエントリーに於ける前回発行され たオペレーションの実行から得られた結果を記憶するロジック(540)とを有 し、 前記スケジューラ(280)内のエントリーが最上列から最下列に至る一連の 列(Row0〜Row5)にグループ分けされ、前記列のそれぞれが複数のエン トリーを含み、最下列を除く前記列のそれぞれのエントリーのメモリフィールド が、次の列のメモリフィールドに結合されており、 前記スケジューラが更に、最下列を除く前記列のそれぞれのための制御信号を 生成するグローバル制御ロジックを有し、前記制御信号がそれぞれ、各列のメモ リフィールドに記憶された情報を次の列のメモリフィールドに列シフトすること を特徴とする処理システム。 2.前記実行ユニットに発行するためのオペレーションを選択するべく前記エン トリーをスキャンするロジック(530)が、オペランド依存性を考慮しないこ とを特徴とする請求項1に記載の処理システム。 3.前記スケジューラ(280)に結合されたオペレーションコミットユニット (260)を更に含み、 前記オペレーションコミットユニット(260)が、前記スケジューラ内のエ ントリーに新たなオペレーションを関連付け得るように、前記スケジューラから オペレーションを退避及び除去し、 前記オペレーションコミットユニットが、エントリーに記憶された結果が、当 該処理システム(250)により実行されたプログラムにとって必要なものであ る場合には、この結果を永久化することを特徴とする請求項1に記載の処理シス テム。 4.レジスタファイルを更に含み、前記オペレーションコミットユニット(26 0)が、前記スケジューラ内のエントリーからの結果をレジスタファイルに転送 することにより前記結果を永久化することを特徴とする請求項3に記載の処理シ ステム。 5.前記オペレーションコミットユニット(260)が、状態フラグ値をエント リーからの結果を状態フラグレジスタに向けて転送することにより前記結果を永 久化することを特徴とする請求項4に記載の処理システム。 6.前記オペレーションコミットユニットが、前記スケジューラの最下列のエン トリーに対応するすべてのオペレーションを退避させるのに応答して、前記グロ ーバル制御ロジック(520)が、或るエントリーに或る情報を前記スケジュー ラの最下列のエントリーにシフトさせることを特徴とする請求項1乃至5のいず れかに記載の処理システム。 7.前記処理システムにより実行されるプログラムを構成する命令からオペレー ションのセットを生成する命令デコーダ(240)を更に有し、前記命令デコー ダ(240)が、前記スケジューラ(280)の最上列のエントリーにオペレー ションのセットに関連する情報をロードするべ く結合されていることを特徴とする請求項1乃至6のいずれかに記載の処理シス テム。 8.前記グローバル制御ロジック(520)が、前記スケジューラの最上列に最 後にロードされた情報がシフトしたかまたは前記スケジューラの次の列にシフト されつつある場合でない限り、前記スケジューラの最上列のオペレーションのセ ットのロードを禁止するように前記命令デコーダへの信号を生成することを特徴 とする請求項7に記載の処理システム。 9.前記命令デコーダ(240)が、実行されさるべきプログラム内の条件付き 分岐命令(BRCOND)に遭遇したときに、前記命令デコーダが、 条件付き分岐命令に従うべき予測された命令アドレスを判定し、 予測された命令アドレスからデコーディングを継続し、 実行されたときに予測が正しかったか否か判定するオペレーションに関連する 情報を前記スケジューラの最上列にロードすることを特徴とする請求項7若しく は8に記載の情報処理システム。 10.前記予測が誤っていた場合、前記条件付き分岐命令(BRCOND)が前記スケジ ューラの最下列に到達するまで、前記スケジューラへのオペレーションのロード か禁止され、 前記条件付き分岐命令が前記スケジューラの最下列にあるときには、前記スケ ジューラ内のすべてのオペレーションが無効とされることを特徴とする請求項9 に記載の情報処理システム。 11.前記スケジューラ(280)が更に、 状態レジスタと、 前記状態レジスタに記憶された値及び前記スケジューラのフィールドに記憶さ れた結果に基づき、状態フラグビット(STATUS)を生成し、状態フラッグロジック に関連するスケジューラの選択された列の境界に於け るオペレーションのために、状態フラッグビットが有効であるか否かを示す有効 性ビット(STATUS V)を生成する状態フラグロジック(538)とを有することを 特徴とする請求項1乃至10の何れかに記載の処理システム。 12.第1のオペレーションの特定の実行ステージの完了のために、状態フラッ グビット(STATUS)を必要とするような第1のオペレーションについて、状態フラ ッグロジック(538)が、第1のオペレーションに関連する情報が状態フラッ グロジック(538)に関連する選択された列の境界にまでシフトダウンされる まで、前記第1のオペレーションが前記実行ステージに進むのを阻止する信号を 発生することを特徴とする請求項11に記載の処理システム。 13.前記グローバル制御ロジック(520)が、第1のオペレーションが選択 された列の境界に達した後、状態ビットを必要とする実行ステージに、前記オペ レーションのために有効な状態フラッグビットが提供されるまで、前記第1のオ ペレーションが前記境界からシフトするのを阻止する信号を発生することを特徴 とする請求項11に記載の処理システム。 14.前記状態フラッグロジック(538)が、前記第1の形式のオペレーショ ンが、選択された境界の上側の列に位置するときに、前記第1の形式のオペレー ションを実行するための状態フラッグビット及び第2の形式のオペレーションが 、前記選択された境界の下の列にある時に、前記第2の形式のオペレーションを 実行するための状態フラッグビットを同時に提供し得ることを特徴とする請求項 12若しくは13に記載の処理システム。 15.前記第2の形式のオペレーションが条件付き分岐判断であることを特徴と する請求項14に記載の処理システム。 16.前記処理システムが、シングルチッププロセッサの一部をなすことを特徴 とす請求項1乃至15の何れかに記載の処理システム。 17.データ及び命令を記憶するメモリサブシステム(120)を更に有するこ とを特徴とする請求項1乃至15の何れかに記載の処理システム。 18.前記処理システムがコンピュータマザーボード(101)の部品の一部を 構成することを特徴とする請求項17に記載の処理システム。 19.前記マザーボード(101)がプロセッサ(200)に機能的に接続され た背面バスを有し、前記処理システムが更に前記背面バスを介して前記マザーボ ードに接続されたカード状の1若しくは複数のデバイスを更に含むことを特徴と する請求項17に記載の処理システム。 20.前記処理システムがネットワークサーバの一部を構成することを特徴とす る請求項1乃至15及び17の何れかに記載の処理システム。 21.前記処理システムが、マルチメディアコンピュータシステムの一部をなし 、 前記マルチメディアコンピュータが、 マルチメディア機能デバイス(256)と、 前記マルチメディア機能デバイス及びマルチメディア信号取得デバイス(19 6)に接続され、マルチメディア信号を合成しサンプリングするための信号変換 インタフェースを更に含むマルチメディアアダプタ(195)と、 マルチメディアデータの通信のために前記マルチメディアアダプタに接続され た入力/出力バス(151)とを有し、 前記処理システムが、マルチメディアデータを処理し、前記処理システムとマ ルチメディアアダプタとの間のマルチメディアデータの通信の制御するために前 記入力/出力バス(151)に接続されていることを 特徴とする請求項1乃至15及び17の何れかに記載の処理システム。 22.プログラム順序がエントリーの物理的順序に一致し、発行するためのオペ レーションを選択するべく前記エントリーをスキャンするロジック(530)が 、 第1の実行ユニットにより実行されるべきオペレーションのための物理的順序 に基づき前記複数のエントリーを検索する第1発行選択回路(800)と、 第2の実行ユニットにより実行されるオペレーションのための物理的順序に基 づき前記複数のエントリーを検索する第2の発行選択回路(800;900)と を有することを特徴とする請求項1乃至21の何れかに記載の処理システム。 23.前記第1の実行ユニットが、前記第2の実行ユニットが実行するように設 計されていないようなオペレーションを実行し得ることを特徴とする請求項22 に記載のスケジューラ。 24.プログラムからデコードされたオペレーションをout-of-order実行するた めの方法であって、 スケジューラの最上列が空であったり、その下側の列にシフトされつつある場 合に前記スケジューラの最上列(Row0)のエントリーにオペレーションのセ ットをロードする過程と、 その下側の列が空であったりその下の列のオペレーションがシフト中である場 合には、前記スケジューラの各列のオペレーションをその下側の列にシフトする 過程と、 実行ユニットに発行されるべきオペレーションを選択するために前記最下列( Row5)から最上列(Row0)に向けて前記スケジューラをスキャンする過 程と、 前記オペレーションに対応する前記スケジューラのエントリーに於け るオペレーションを実行して得られた結果を一時的に記憶する過程と、 前記スケジューラの最下列(Row5)からレジスタファイル(290)に結 果をコミットする過程と、 最下列(Row5)にある情報に関連する全てのオペレーションの実行により 得られた結果がコミットし或いは必要でない場合には、前記最下列に情報をシフ トする過程とを有することを特徴とする方法。 25.アボートオペレーションに先行するあらゆるオペレーションをコミットす る過程と、 前記アボートオペレーションが前記スケジューラの最下列に達したときに、前 記スケジューラ内の全てのオペレーションをアボートする過程とを有し、 オペレーションがアボートされたことは、当該オペレーションのコミットが必 要でないことを示すように前記オペレーションを設定することを特徴とする請求 項24に記載の方法。 26.前記実行ユニットの第1のものに発行された第1のオペレーションに先行 する全てのオペレーションをコミットする過程と、 前記第1のオペレーションが最下列にある間に、前記第1の実行ユニットが前 記第1のオペレーションの実行を完了したか否かを判定する過程と、 前記第1のオペレーションが、前記最下列にある時に完了しておらず、前記第 1の実行ユニットが例外を示す信号を発しているのに応答して、前記スケジュー ラの全てのオペレーションをアボートする過程とを有し、 オペレーションがアボートされたことは、当該オペレーションのコミットが必 要でないことを示すように前記オペレーションを設定することを特徴とする請求 項24若しくは25に記載の方法。 27.条件付き分岐オペレーションが前記スケジューラの最上列と最下 列との間の列にある時に、命令デコーダが、前記条件付き分岐オペレーションの 予測を誤ったか否かを判定するために条件付き分岐オペレーションを判定する過 程と、 前記条件付き分岐オペレーションの予測が誤ったことを判定した場合に、前記 命令デコーダを再起動する過程と、 前記条件付き分岐が最下列に到達するまで、前記スケジューラへのオペレーシ ョンのロードを禁止する過程と、 前記条件付き分岐に先行する全てのオペレーションをコミットする過程と、 前記スケジューラの最下列に前記条件付き分岐がある時に、前記スケジューラ 内の全てのオペレーションをアボートし、オペレーションをアボートすることに より、当該オペレーションのコミットが必要でないことを示すように前記オペレ ーションを設定する過程とを有することを特徴とする請求項24に記載の方法。 28.前記複数のエントリーのそれぞれが、記憶要素(623)及び、該記憶要 素に接続された選択回路(633)を有し、前記選択回路が、前記記憶要素又は 前記複数のエントリーの外部からの情報が、前記一連の列の次の列にシフトすべ きかを選択することを特徴とする請求項1乃至23のいずれかに記載の処理シス テム。 29.前記スケジューラの第1列に情報を書き込む過程を有し、前記書き込みの 動作が、前記各列に於けるシフト動作と同時であって、前記第1列のオペレーシ ョンが第2の列にシフト中であるときには、前記第1列に書き込まれつつあった 情報が前記第2の列にシフトされることを特徴とする請求項24乃至27のいず れかに記載の方法。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 590,383 (32)優先日 1996年1月26日 (33)優先権主張国 米国(US) (31)優先権主張番号 649,243 (32)優先日 1996年5月16日 (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AU,AZ ,BA,BB,BG,BR,BY,CA,CH,CN, CU,CZ,DE,DK,EE,ES,FI,GB,G E,HU,IL,IS,JP,KE,KG,KP,KR ,KZ,LC,LK,LR,LS,LT,LU,LV, MD,MG,MK,MN,MW,MX,NO,NZ,P L,PT,RO,RU,SD,SE,SG,SI,SK ,TJ,TM,TR,TT,UA,UG,UZ,VN (72)発明者 ステイプルトン、ウォレン・ジー アメリカ合衆国カリフォルニア州95127・ サンノゼ・ヴィライーストヒルズコート 3142 【要約の続き】 スキャンチェーン530、532、534、536、及 び538は、エントリーを互いにリンクし、実行のため のオペレーション及びオペランドを実行する。

Claims (1)

  1. 【特許請求の範囲】 1.複数の実行ユニットと、 前記実行ユニットに結合されたスケジューラを有する処理システムであって、 前記スケジューラが、 各エントリーに対応するオペレーションを記述する情報を記憶するためのメモ リフィールドを含む複数のエントリーと、 実行のための前記実行ユニットに発行するためのオペレーションを選択するべ く前記エントリーをスキャンするロジックと、 発行されたオペレーションの実行のために前記実行ユニットに情報を提供する ロジックと、 前回に発行されたオペレーションに関連するエントリーに於ける前回発行され たオペレーションの実行から得られた結果を記憶するロジックを有することを特 徴とする処理システム。 2.前記スケジューラに結合されたオペレーションコミットユニットを更に含み 、 前記オペレーションコミットユニットが、前記スケジューラ内のエントリーに 新たなオペレーションを関連付け得るように、前記スケジューラからオペレーシ ョンを退避及び除去し、 前記オペレーションコミットユニットが、エントリーに記憶された結果が、当 該処理システムにより実行されたプログラムにとって必要なものである場合には 、この結果を永久化することを特徴とする請求項1に記載の処理システム。 3.レジスタファイルを更に含み、前記オペレーションコミットユニットが、前 記スケジューラ内のエントリーからの結果をレジスタファイル に転送することにより前記結果を永久化することを特徴とする請求項2に記載の 処理システム。 4.前記オペレーションコミットユニットが、状態フラグ値をエントリーから状 態フラグレジスタに向けて転送することにより前記結果を永久化することを特徴 とする請求項3に記載の処理システム。 5.前記スケジューラ内のエントリーが最上列から最下列に至る一連の列にグル ープ分けされ、前記列のそれぞれが複数のエントリーを含み、最下列を除く前記 列のそれぞれのエントリーのメモリフィールドが、次の列のメモリフィールドに 結合されており、 前記スケジューラが更に、最下列を除く前記列のそれぞれのための制御信号を 生成するグローバル制御ロジックを有し、前記制御信号がそれぞれ、各列のメモ リフィールドに記憶された情報を次の列のメモリフィールドに列シフトすること を特徴とする請求項1乃至4の何れかに記載の処理システム。 6.前記オペレーションコミットユニットが前記スケジューラの最下列のエント リーに対応する全てのオペレーションを退避させるのに応答して、前記制御ロジ ックが、前記スケジューラのある列の情報を前記スケジューラの最下列にシフト させるような信号を生成することを特徴とする請求項5に記載の処理システム。 7.前記処理システムにより実行されるプログラムを構成する命令からオペレー ションのセットを生成する命令デコーダを更に有し、前記命令デコーダが、前記 スケジューラの最上列のエントリーにオペレーションのセットに関連する情報を ロードするべく結合されていることを特徴とする請求項5若しくは6に記載の処 理システム。 8.前記グローバル制御ロジックが、前記スケジューラの最上列に最後にロード された情報がシフトしたかまたは前記スケジューラの次の列に シフトされつつある場合でない限り、前記スケジューラの最上列のオペレーショ ンのセットのロードを禁止するように前記命令デコーダへの信号を生成すること を特徴とする請求項7に記載の処理システム。 9.前記命令デコーダが、実行されさるべきプログラム内の条件付き分岐命令に 遭遇したときに、前記命令デコーダが、 条件付き分岐命令に従うべき予測された命令アドレスを判定し、 予測された命令アドレスからデコーディングを継続し、 実行されたときに予測が正しかったか否か判定するオペレーションに関連する 情報を前記スケジューラの最上列にロードすることを特徴とする請求項7若しく は8に記載の情報処理システム。 10.前記スケジューラが更に、 状態レジスタと、 前記状態レジスタに記憶された値及び前記スケジューラのフィールドに記憶さ れた結果に基づき、状態フラグビットを生成し、状態フラッグロジックに関連す るスケジューラの選択された列の境界に於けるオペレーションのために、状態フ ラッグビットが有効であるか否かを示す有効性ビットを生成する状態フラグロジ ックとを有することを特徴とする請求項5乃至9の何れかに記載の処理システム 。 11.第1のオペレーションの特定の実行ステージの完了のために、状態フラッ グビットを必要とするような第1のオペレーションについて、状態フラッグロジ ックが、第1のオペレーションに関連する情報が状態フラッグロジックに関連す る選択された列の境界にまでシフトダウンされるまで、前記第1のオペレーショ ンが前記実行ステージに進むのを阻止する信号を発生することを特徴とする請求 項10に記載の処理システム。 12.前記グローバル制御ロジックが、第1のオペレーションが選択された列の 境界に達した後、状態ビットを必要とする実行ステージに、前記オペレーション のために有効な状態フラッグビットが提供されるまで、前記第1のオペレーショ ンが前記境界からシフトするのを阻止する信号を発生することを特徴とする請求 項11に記載の処理システム。 13.前記状態フラッグロジックが、前記第1の形式のオペレーションが選択さ れた境界の上側の列に位置するときに前記第1の形式のオペレーションを実行す るための状態フラッグビット及び第2の形式のオペレーションが前記選択された 境界の下の列にある時に前記第2の形式のオペレーションを実行するための状態 フラッグビットを同時に提供し得ることを特徴とする請求項11若しくは12に 記載の処理システム。 14.前記第2の形式のオペレーションが条件付き分岐判断であることを特徴と する請求項14に記載の処理システム。 15.前記処理システムが、シングルチッププロセッサの一部をなすことを特徴 とす請求項1乃至14の何れかに記載の処理システム。 16.データ及び命令を記憶するメモリサブシステムを更に有することを特徴と する請求項1乃至14の何れかに記載の処理システム。 17.前記処理システムがコンピュータマザーボードの部品の一部を構成するこ とを特徴とする請求項16に記載の処理システム。 18.前記マザーボードがプロセッサに機能的に接続された背面バスを有し、前 記処理システムが更に前記背面バスを介して前記マザーボードに接続されたカー ド状の1若しくは複数のデバイスを更に含むことを特徴とする請求項17に記載 の処理システム。 19.前記処理システムがネットワークサーバの一部を構成することを特徴とす る請求項1乃至14及び16の何れかに記載の処理システム。 20.前記処理システムが、マルチメディアコンピュータシステムの一部をなし 、 前記マルチメディアコンピュータが、 マルチメディア機能デバイスと、 前記マルチメディア機能デバイス及びマルチメディア信号取得デバイスに接続 され、マルチメディア信号を合成しサンプリングするための信号変換インタフェ ースを更に含むマルチメディアアダプタと、 マルチメディアデータの通信のために前記マルチメディアアダプタに接続され た入力/出力バスとを有し、 前記処理システムが、マルチメディアデータを処理し、前記処理システムとマ ルチメディアアダプタとの間のマルチメディアデータの通信の制御するために前 記入力/出力バスに接続されていることを特徴とする請求項1乃至14の何れか に記載の処理システム。 21.オペレーションスケジューラであって、 オペレーションを保持し、これらのオペレーションのためのプログラム順序が 物理的順序に一致するように配置された複数のエントリーと、 第1の実行ユニットにより実行されるべきオペレーションのための物理的順序 に基づき前記複数のエントリーを検索する第1発行選択回路と、 前記スケジューラから前記第1の実行ユニットにオペランド値をフォワードす るオペランドフォワーディング回路と、 結果が前記オペランドフォワーディング回路によって利用可能であるような実 行されたオペレーションに対応するエントリーに於ける第1の実行により実行さ れたオペレーションの結果を記憶するための結果転送回路とを有することを特徴 とするオペレーションスケジューラ。 22.第2の実行ユニットにより実行されるオペレーションのための物理的順序 に基づき前記複数のエントリーを検索する第2の発行選択回路 を更に有し、前記オペランドフォワーディング回路が、前記スケジューラから前 記第2の実行ユニットにオペランド値をフォワードし、前記結果転送回路が、結 果が前記オペランドフォワーディング回路によって利用可能であるような実行さ れたオペレーションに対応するエントリーに於ける第2の実行により実行された オペレーションの結果を記憶することを特徴とする請求項21に記載のスケジュ ーラ。 23.前記第1の実行ユニットが、前記第2の実行ユニットが実行するように設 計されていないようなオペレーションを実行し得ることを特徴とする請求項22 に記載のスケジューラ。 24.プログラムからデコードされたオペレーションをout-od-order実行するた めの方法であって、 スケジューラの最上列が空であったり、その下側の列にシフトされつつある場 合に前記スケジューラの最上列のエントリーにオペレーションのセットをロード する過程と、 その下側の列が空であったりその下の列のオペレーションがシフト中である場 合には、前記スケジューラの各列のオペレーションをその下側の列にシフトする 過程と、 実行ユニットに発行されるべきオペレーションを選択するために前記最下列か ら最上列に向けて前記スケジューラをスキャンする過程と、 前記オペレーションに対応する前記スケジューラのエントリーに於けるオペレ ーションを実行して得られた結果を一時的に記憶する過程と、 前記スケジューラの最下列からレジスタファイルに結果をコミットする過程と 、 最下列にある情報に関連する全てのオペレーションの実行により得られた結果 がコミットし或いは必要でない場合には、前記最下列に情報をシフトする過程と を有することを特徴とする方法。 25.アボートオペレーションに先行するあらゆるオペレーションをコミットす る過程と、 前記アボートオペレーションが前記スケジューラの最下列に達したときに、前 記スケジューラ内の全てのオペレーションをアボートする過程とを有し、 オペレーションがアボートされたことは、当該オペレーションのコミットが必 要でないことを示すように前記オペレーションを設定することを特徴とする請求 項24に記載の方法。 26.前記実行ユニットの第1のものに発行された第1のオペレーションに先行 する全てのオペレーションをコミットする過程と、 前記第1のオペレーションが最下列にある間に、前記第1の実行ユニットが前 記第1のオペレーションの実行を完了したか否かを判定する過程と、 前記第1のオペレーションが、前記最下列にある時に完了しておらず、前記第 1の実行ユニットが例外を示す信号を発しているのに応答して、前記スケジュー ラの全てのオペレーションをアボートする過程とを有し、 オペレーションがアボートされたことは、当該オペレーションのコミットが必 要でないことを示すように前記オペレーションを設定することを特徴とする請求 項24若しくは25に記載の方法。 27.条件付き分岐オペレーションが前記スケジューラの最上列と最下列との間 の列にある時に、命令デコーダが、前記条件付き分岐オペレーションの予測を誤 ったか否かを判定するために条件付き分岐オペレーションを判定する過程と、 前記条件付き分岐オペレーションの予測が誤ったことを判定した場合に、前記 命令デコーダを再起動する過程と、 前記条件付き分岐が最下列に到達するまで、前記スケジューラへのオペレーシ ョンのロードを禁止する過程と、 前記条件付き分岐に先行する全てのオペレーションをコミットする過程と、 前記スケジューラの最下列に前記条件付き分岐がある時に、前記スケジューラ 内の全てのオペレーションをアボートし、オペレーションをアボートすることに より、当該オペレーションのコミットが必要でないことを示すように前記オペレ ーションを設定する過程とを有することを特徴とする請求項24に記載の方法。
JP51437297A 1995-10-06 1996-10-04 スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ Expired - Fee Related JP3720371B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US506995P 1995-10-06 1995-10-06
US502195P 1995-10-10 1995-10-10
US59038396A 1996-01-26 1996-01-26
US590,383 1996-01-26
US08/649,243 US5884059A (en) 1996-01-26 1996-05-16 Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US60/005,069 1996-05-16
US649,243 1996-05-16
US60/005,021 1996-05-16
PCT/US1996/015743 WO1997013201A1 (en) 1995-10-06 1996-10-04 Unified multi-function operation scheduler for out-of-order execution in a superscalar processor

Publications (2)

Publication Number Publication Date
JPH11510291A true JPH11510291A (ja) 1999-09-07
JP3720371B2 JP3720371B2 (ja) 2005-11-24

Family

ID=27485435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51437297A Expired - Fee Related JP3720371B2 (ja) 1995-10-06 1996-10-04 スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ

Country Status (6)

Country Link
US (1) US6195744B1 (ja)
EP (1) EP0870228B1 (ja)
JP (1) JP3720371B2 (ja)
AU (1) AU7550496A (ja)
DE (1) DE69629495T2 (ja)
WO (1) WO1997013201A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014215624A (ja) * 2013-04-22 2014-11-17 富士通株式会社 演算処理装置
JP2017059273A (ja) * 2017-01-05 2017-03-23 富士通株式会社 演算処理装置

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
WO1999008184A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. An apparatus and method for accessing special registers without serialization
US6055620A (en) * 1997-09-18 2000-04-25 Lg Semicon Co., Ltd. Apparatus and method for system control using a self-timed asynchronous control structure
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US6334182B2 (en) * 1998-08-18 2001-12-25 Intel Corp Scheduling operations using a dependency matrix
US6329838B1 (en) * 1999-03-09 2001-12-11 Kabushiki Kaisha Toshiba Logic circuits and carry-lookahead circuits
EP1050799A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics S.A. Execution of a computer program
US6591343B1 (en) * 2000-02-22 2003-07-08 Ip-First, Llc Predecode in parallel with TLB compare
US7062767B1 (en) * 2000-09-05 2006-06-13 Raza Microelectronics, Inc. Method for coordinating information flow between components
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
JP3709553B2 (ja) * 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
JP3755415B2 (ja) * 2001-04-04 2006-03-15 株式会社デンソー 処理実行装置、当該処理実行装置に搭載される処理プログラム、及び記録媒体
US7203817B2 (en) * 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7269714B2 (en) 2001-09-24 2007-09-11 Broadcom Corporation Inhibiting of a co-issuing instruction in a processor having different pipeline lengths
US7251594B2 (en) * 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
US7260217B1 (en) * 2002-03-01 2007-08-21 Cavium Networks, Inc. Speculative execution for data ciphering operations
US7085940B2 (en) * 2002-05-09 2006-08-01 International Business Machines Corporation Floating point unit power reduction via inhibiting register file write during tight loop execution
JP4283576B2 (ja) * 2003-03-27 2009-06-24 株式会社日立製作所 トランザクション同期方法、データベースシステム及びデータベース装置
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
GB2463278B (en) * 2008-09-05 2012-05-16 Advanced Risc Mach Ltd Scheduling control within a data processing system
US8103850B2 (en) * 2009-05-05 2012-01-24 International Business Machines Corporation Dynamic translation in the presence of intermixed code and data
US8055883B2 (en) * 2009-07-01 2011-11-08 Arm Limited Pipe scheduling for pipelines based on destination register number
US9176738B2 (en) * 2011-01-12 2015-11-03 Advanced Micro Devices, Inc. Method and apparatus for fast decoding and enhancing execution speed of an instruction
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9087409B2 (en) * 2012-03-01 2015-07-21 Qualcomm Incorporated Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) * 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US8972645B2 (en) * 2012-09-19 2015-03-03 Hewlett-Packard Development Company, L.P. Request sent to storage device based on moving average
US9710278B2 (en) * 2014-09-30 2017-07-18 International Business Machines Corporation Optimizing grouping of instructions
US9852202B1 (en) * 2016-09-23 2017-12-26 International Business Machines Corporation Bandwidth-reduced coherency communication
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10360034B2 (en) 2017-04-18 2019-07-23 Samsung Electronics Co., Ltd. System and method for maintaining data in a low-power structure
US11256621B2 (en) 2019-06-25 2022-02-22 Seagate Technology Llc Dual controller cache optimization in a deterministic data storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
GB9123271D0 (en) 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
US5560025A (en) 1993-03-31 1996-09-24 Intel Corporation Entry allocation apparatus and method of same
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5519864A (en) 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5546597A (en) 1994-02-28 1996-08-13 Intel Corporation Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US5555432A (en) 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5761776A (en) 1997-01-30 1998-06-09 532341 Ontario Inc. Locking hook with integral separator
US5858176A (en) 1997-04-22 1999-01-12 Betzdearborn Inc. Compositions and methods for inhibiting fouling of vinyl monomers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014215624A (ja) * 2013-04-22 2014-11-17 富士通株式会社 演算処理装置
JP2017059273A (ja) * 2017-01-05 2017-03-23 富士通株式会社 演算処理装置

Also Published As

Publication number Publication date
JP3720371B2 (ja) 2005-11-24
US6195744B1 (en) 2001-02-27
DE69629495T2 (de) 2004-06-09
DE69629495D1 (de) 2003-09-18
EP0870228B1 (en) 2003-08-13
AU7550496A (en) 1997-04-28
WO1997013201A1 (en) 1997-04-10
EP0870228A1 (en) 1998-10-14

Similar Documents

Publication Publication Date Title
JPH11510291A (ja) スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
US5799165A (en) Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US5884059A (en) Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US7117347B2 (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6336183B1 (en) System and method for executing store instructions
US5745724A (en) Scan chain for rapidly identifying first or second objects of selected types in a sequential list
EP0381444A2 (en) Branch prediction
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US20050149698A1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JPH11510289A (ja) Risc86命令セット
US20080109644A1 (en) System and method for using a working global history register
JP5301554B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
US20040064684A1 (en) System and method for selectively updating pointers used in conditionally executed load/store with update instructions
US20070174592A1 (en) Early conditional selection of an operand
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
JP3717524B2 (ja) ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット
JPH11510290A (ja) シーケンシャルなリスト内の選択されたタイプの第1もしくは第2のオブジェクトを迅速に特定するためのスキャンチェーン
KR100459152B1 (ko) 수퍼스칼라프로세서에서의순서를벗어난실행을위한통합된다중기능연산스케쥴러
EP0853786B1 (en) Out-of-order processing with operation bumping to reduce pipeline delay
JP2886838B2 (ja) スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
KR100384213B1 (ko) 순차리스트내의선택된타입의제1또는제2대상을인식하는처리시스템,선택회로및방법
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050629

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: 20050830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050908

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: 20080916

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090916

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090916

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100916

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110916

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees