JP2001517333A - 自己修飾コード処理装置 - Google Patents

自己修飾コード処理装置

Info

Publication number
JP2001517333A
JP2001517333A JP51432797A JP51432797A JP2001517333A JP 2001517333 A JP2001517333 A JP 2001517333A JP 51432797 A JP51432797 A JP 51432797A JP 51432797 A JP51432797 A JP 51432797A JP 2001517333 A JP2001517333 A JP 2001517333A
Authority
JP
Japan
Prior art keywords
instruction
address
store
self
tag
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
JP51432797A
Other languages
English (en)
Other versions
JP2001517333A5 (ja
JP3720370B2 (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
Application filed by アドバンスト・マイクロ・デバイシズ・インコーポレイテッド filed Critical アドバンスト・マイクロ・デバイシズ・インコーポレイテッド
Publication of JP2001517333A publication Critical patent/JP2001517333A/ja
Publication of JP2001517333A5 publication Critical patent/JP2001517333A5/ja
Application granted granted Critical
Publication of JP3720370B2 publication Critical patent/JP3720370B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/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 or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/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 or 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 or 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

Landscapes

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

Abstract

(57)【要約】 プロセッサのパイプライン段を通って進む命令のためのメモリアドレスを示すタグを含み且つストア目標アドレスバッファを有する命令デコーダ(104)を含むプロセッサ(100)が自己修飾コード処理装置が命令ストリーム内へのストアオペーレーション書込みを検出し且つ自己修飾コードフォールトをトリッガすることを可能とする。自己修飾コード処理装置の一実施例においては、ストアパイプ(153,159)はデータキャッシュ(170)に接続され、ストアオペレーションの結果をメモリサブシステム(122)に完遂する。ストアパイプはストアオペレーション結果のコミットメントにストアオペレーション目標アドレス表示を供給する。スケジューラ(180)は命令から解読されたOpsのための指定されたOpエントリを含み且つ命令のためのメモリアドレスを対象とする符合する第1のアドレスタグを含む。第1の比較ロジック(236)はストアオペレーション目標アドレスと第1のアドレスタグの1つとの間の整合に応答して自己修飾コードフォールト処理装置をトリッガするためにストアパイプと第1のアドレスタグに接続される。命令デコーダ(140)は命令キャッシュ(130)とスケジューラ(180)の間に接続される。命令デコーダは命令バッファエントリと命令バッファエントリに関連した第2のアドレスタグを含む。第2の比較ロジック(444)はストアオペレーション目標アドレスと第2のアドレスタグの間の整合に応答して自己修飾コードフォールト処理装置をトリッガするためにストアパイプと第2のアドレスタグに接続される。

Description

【発明の詳細な説明】 自己修飾コード処理装置技術分野 この発明はプロセッサ、特にパイプライン処理装置における自己修飾コード処 理装置に関する。背景技術 コンピュータプログラムは生ずる目的コードが逐次的順序によって実行される という単純化された仮定により典型的には設計され、コード化されそしてコンパ イルされている。しかしながら、この仮定にも関わらず、最新プロセッサ設計技 術は、機械命令の並行実行の可能性、即ち命令並列法の開発を目指している。コ ンピュータ処理能力を最大とするために、パイプライン技術を利用して単一機能 ユニットまたは実行パスの多重段に命令並行配列をマップすることができる。こ れとは対照的に、out−of−order命令発行、out−of−orde r命令完了、及び命令の投機的実行を含むスーパースケーラ技術では命令並行配 列を多重機能ユニットまたは実行パスにマップする。最新プロセッサ設計ではパ イプライン技術とスーパースケーラ技術の両者が頻繁に開発されている。 Out−of−order命令発行は実行ユニットへの命令の発行を含むが、 実行コード内での命令の実際の順序に関してはあまり考慮されていない。out −of−order発行を利用するスーパースケーラプロセッサは、命令タスク 指名シーケンスの作成において与えられた命令の出力(結果)と後続命令の入力 (オペランド)との間の従属性に拘束されることのみが必要である。一方、ou t−of−order完了は、その プログラムシーケンスに先行する命令の完了前に与えられた命令が完了(例えば その結果の格納)することを可能とする技術である。最後に、投機的実行は予測 された結果(例えば、ブランチの)に基づく命令シーケンスの実行を含み、ブラ ンチ状態が実際に評価されのを待つことなくプロセッサが命令を実行することを 可能とする。ブランチがそうでない場合よりもより頻繁に正確に予測されるもの と仮定し、かつ不適正予測の結果を中止する正当に有効な方法が利用可能である と仮定すると、命令並行配列(即ち、並列実行のために利用可能な命令の数)は 投機的実行によって典型的に増加されると考えられる(分析のためジョンソン著 、「スーパースケーラ プロセッサ デザイン」ニュー ジャージー州 プレン ティスホール インコーポレイテッド刊、1991、pp.63−77参照)。 スーパースケーラ技術は主に命令セット及び他のアーキテクチャ特徴から独立 のプロセッサ構造に関係する。即ち、スーパースケーラ技術の魅力の1つは、例 えばx86プロセッサアーキテクチャである既存のプロセッサアーキテクチャと の間にコード互換性を有するプロセッサを開発し得る可能性を備えることである 。多くのスーパースケーラ技術はRISCまたはCISCアーキテクチャの何れ に対しても同程度に適正に適用する。しかしながら、RISCアーキテクチャの 多くのものでの規則性の故に、スーパースケーラ技術はまず最初にRISCプロ セッサ設計に適用されている。特に、3オペランド・ロード/ストア・アーキテ クチャ、固定命令長、限定アドレスモード、及びRISCアーキテクチャと命令 セットに関係する固定幅レジスタとが多重実行ユニットに仕事を安定的に供給す るに必要な 多重命令の単一サイクルデコーディングを可能とする。 x86アーキテクチャとのコード互換性のあるスーパースケーラプロセッサを 開発する1つの方法は、x86命令をRISC命令またはオペレーションに動的 に変換することであり、変換された命令またはオペレーションはRISCコアま たは実行エンジンによって実行され得る。そのようなスーパースケーラRISC プロセッサの設計技術はジョンソン著の「スーパースケーラ プロセッサ デザ イン」中に記述されている。 逐次的順序外での命令の実行、即ち逐次的順序外での命令の発行と完了は、ス ーパースケーラプロセッサでの多重実行ユニットの並列作動の維持を可能とする ことによってスーパースケーラプロセッサの性能を向上し、これにより処理能力 を改善することができる。従って、スーパースケーラプロセッサ用のスケジュー ラは順序外(out−of−order)に実行可能な命令を決定し、これらの 命令を適当な実行ユニットに提供し即ちタスク指名することによって全体的な性 能を改善することができる。スーパースケーラプロセッサ用のスケジューラはま た中断及びトラップを処理しなければならない。x86プロセッサアーキテクチ ャを含む多くのプロセッサアーキテクチャでは、命令がエラー、中断またはトラ ップを発生した直前または直後にアーキテクチャ状態が確認されることが必要で ある。これは逐次的順序外に命令が実行された場合の困難を表している。即ち、 スケジューラはあたかも命令が逐次的順序に実行されたかのように命令を取り消 し、かつシステム状態を復元することができなけれならない。 自己修飾コードはより一層の複雑さを表している。x86プ ロセッサアーキテクチャに適合するものを含むあるアーキテクチャの場合におい ては、実行プログラムの一部が同一プログラムの他の部分を修飾する。そして修 飾された命令シーケンス部分が実行される。 x86プロセッサアーキテクチャを含む、プログラム自身での修飾を可能とす るある種類のCISCアーキテクチャのためには、既存ソフトウェア資産の適切 な部分内にこの型の課題プログラム作成用例が確立している。その結果、互換性 維持のため新規プロセッサの具体化においてはしばしばアーキテクチャの命令セ ットの直接的セマンティクスの実現のみが必要なのではなく、予測される2次的 セマンティク作動を維持することもまた必要である。高性能パイプラインスーパ ースケーラの具体化の場合には、このことが重要でかつ潜在的に困難な充足要件 となりうる。 命令ストリーム内への格納が完了された後にメモリサブシステムから命令が取 り出される限りにおいて問題は存在しない。しかしながら、パイプラインスーパ ースケーラプロセッサの各種パイプライン段または機能ユニット内に命令の非修 飾表現が存在する場合には一貫性の問題が存在する。一貫性の維持は従来のデー タ/命令キャッシュ一貫性のみならずメモリ格納命令の後すぐに実行される他の 命令を修飾するメモリ格納命令に関する一貫性をも包含する。 この一貫性の問題は、メモリ書き込みが関係するキャッシュエントリの何れか の状態及び/又は内容に適当に反映するに違いない高性能プロセッサに使用され るより慣用的なデータ/命令キャッシュ構造において遭遇するものと類似する。 しかしな がら、自己修飾コードの問題の範囲はより一層厳しい。極端なストア・イントゥ ・インストラクション・ストリームの場合、修飾命令には直ちにブランチ及びそ の後の修飾目標命令が続く。特に高度のパイプライン化のためには、アーキテク チャ標準プロセッサ(x86プロセッサのような)の構成と同一の実行パスを保 証する高性能プロセッサ設計は追加的ハードウェア回路及び設計の複雑性の見地 から困難で高価であることを検証できる。 パイプライン化、特にCISCアーキテクチャの高性能実現に共通な密度の濃 いパイプライン化は大きな命令処理待ち時間を結果し、かつ連続命令処理間の高 率な重複を結果する。一方メモリ書き込みの実行はそのようなパイプラインの中 において遅れて行われる。結果として、メモリまたはキャッシュから命令を取り 出しかつ実行パイプラインに命令を投機的にタスク指名するような動作は、実行 シーケンス内にて取り出された又はタスク指名された命令に先行するメモリ書き 込みの完了前に容易に生起し得る。発明の開示 プロセッサのパイプライン段を通って進む命令のメモリアドレスを示すタグを 含み、かつ記憶目標アドレスバッファを有する命令デコーダを含むプロセッサは 、自己修飾コード支援ロジックが命令ストリーム内へのストアオペレーション書 き込みを検知し、かつ自己修飾コードフォールト(fault)をトリッガする ことを可能とする。 この発明の一実施例においては、命令取り出しから結果コミットメントまでの 段のオペレーションを表すオペレーションエ ントリを有し、かつメモリ内の目標アドレスに記憶オペランドを完遂するための ストアパイプを有するコンピュータ用の自己修飾コード処理装置は第1のタグス トア、第1の比較ロジック、及び制御ロジックを含む。第1のタグストアは各々 オペレーションエントリの第1のグループと関係し、関連するオペレーションエ ントリに符合する命令のメモリ内の第1のアドレスを表現する。第1の比較ロジ ックは第1のタグストア及びストアパイプに接続する。第1の比較ロジックはス トアパイプによって完遂されるストアオペレーション用の目標アドレスと第1の タグストアに表された第1のアドレスの何れかとの間の整合に応答して自己修飾 コード表示を供給する。制御ロジックは第1の比較ロジック及びオペレーション エントリに接続される。制御ロジックは自己修飾コード表示に応答してオペレー ションエントリの完遂されていないものをフラッシュする。 この発明の他の実施例において、装置はメモリサブシステム、メモリサブシス テムに接続した命令及びデータキャッシュ、実行ユニット、スケジューラ、第1 及び第2の比較ロジック、及び命令デコーダを含む。実行ユニットの1つはSt Opの結果をメモリサブシステムに完遂するためのデータキャッシュに接続され たストアパイプを含む。ストアパイプはStOpの結果のコミットメントの際に StOp目標アドレス表示を供給する。スケジューラは命令から解読されたOp sのための指定されたOpエントリを含みかつその命令のためのメモリアドレス を対象とする符合した第1のアドレスタグを含む。第1の比較ロジックは、St Op目標アドレスと第1のアドレスタグの間の整合に応答して自己修飾コードフ ォールト処理手段がトリッガさ れるようにストアパイプに接続されかつ第1のアドレスタグに接続される。命令 デコーダは命令キャッシュとスケジューラの間に接続される。命令デコーダは命 令緩衝域エントリ及び命令緩衝域エントリに関連した第2のアドレスタグを含む 。第2の比較ロジックは、StOp目標アドレスと第2のアドレスタグの間の整 合に応答して自己修飾コードフォールト処理手段がトリッガされるようにストア パイプに接続されかつ第2のアドレスタグに接続される。図面の簡単な説明 この発明は添付図面を参照することによって当業者においてよりよく理解され 種々の目的、特徴及び利点が明白となる。 図1はこの発明の一実施例に従いout−of−order実行制御を提供す るスーパースケーラコンピュータプロセッサのブロック線図である。 図2はこの発明の実施例に従って製作されたスケジューラのブロック線図であ る。 図3はこの発明の実施例に従う命令実行のアーキテクチャ段を図解するパイプ ライン段線図である。 図4はこの発明の実施例に従うout−of−orderロード及びストア実 行制御部のブロック線図である。 図5はこの発明の実施例に従うout−of−orderロード/ストア実行 制御を提供するプロセッサと結合するコンピュータシステムのブロック線図であ る。異なる図面中での同一の参照符号の使用は同一又は類似の項目であることを 示す。発明実施のための態様 図1はこの発明のスーパースケーラプロセッサ実施例を示す。 スーパースケーラプロセッサ100は限定命令セット計算(RISC)アーキテ クチャを実施する実行エンジン150、命令デコーダ140、キャッシュ、及び メモリサブシステム122に表現されるアドレス空間へのアクセス及びローカル バス(図示しない)上のデバイスへのアクセスを提供するシステムインターフェ ース120を含む。 スーパースケーラプロセッサ100は、ここに記載の実施例においては別個の データ及び命令部として構成されたキャッシュを含む。データキャッシュ170 及び命令キャッシュ130は、主メモリを含みかつオプションとして例証的には L2キャッシュである追加的レベルのキャッシュを含むメモリサブシステム12 2に表されるアドレス空間に(キャッシュ制御ロジック160を介してかつシス テムインターフェース120によって)接続される。L2レベルキャッシュへの アクセス、即ちL2キャッシュ制御ロジック及びL2データ部(図示しない)へ のアクセスはシステムインターフェース120を介して提供される。代替的には 、L2キャッシュ制御ロジックは(L1のための)キャッシュ制御ロジック16 0とシステムインターフェース120の間に介装することができる。 キャッシュシステム設計は当業界において周知である。特に、分割、ハーバー ドアーキテクチャ命令及びデータキャッシュ(符号170及び130のような) 、並びに多重レベルキャッシュ階層構造を実現する適当な設計がキャッシュ技術 分野において周知である。多くの点において、スーバースケーラプロセッサ10 0のキャッシュサブシステム(即ちデータキャッシュ170、命令キャッシュ1 30、キャッシュ制御ロジック160、 及びオプションであるL2キャッシュ)はそのような適当な設計の何れかである 。しかしながら、そのキャッシュ性能からは別個の理由により命令キャッシュ1 30はプレデコードロジック(図示しない)と一体にされている。そのように一 体化されたプレデコードロジックは取り出された命令ストリーム内のx86命令 境界を識別し、命令デコーダ140による命令の迅速なデコーディングを促進す る。 図1を再び参照するに、命令シーケンスは実行エンジン150により予想され る実行のためにメモリサブシステムから命令キャッシュ130へとロードされる 。図1に示されるプロセッサ100の実施例に従い、命令キャッシュ130内の 命令はx86プロセッサアーキテクチャに適合するプロセッサによって実施され るx86命令のような複合命令セットから選択されたCISC命令である。命令 デコーダ140は命令キャッシュ130から受け取ったCISC命令を実行エン ジン150での実行のためのオペレーションへと変換する。図1の実施例におい て、これらのオペレーションはRISC類似オペレーション(以下「OPs」と 言う)であり、命令キャッシュ130からの単一x86命令は実行エンジン15 0のための1以上のOPsに復号する。個々のOPsはレジスタオペレーション (RegOps)、ロードーストアオペレーション(LdStOps)、ロード 即値オペレーション(LIMMOps)、特殊オペレーション(SpecOps )、及び浮動小数点オペレーション(FpOps)を含む数種の型のグループの 1つに分かれる。代替的実施例では異なる命令セットを解読して実行のために異 なるオペレーション形式を供給してもよい。 命令デコーダ140はブランチ予測ロジック143と共にハードウェア変換部 MacDec141及びROMベース変換部142である2個の命令変換部を含 む。最も共通的なx86命令はハードウェア変換部141内に含まれる多重並列 ハードウェアデコーダを使用する1乃至4のOPsの短いシーケンスに変換され る。ハードウェア変換部141は命令キャッシュ130から受け取ったこれらの 共通的なx86命令を短いシーケンスに解読しこれは次にスケジューラ180に 供給される。あまり共通的でないx86命令及び4OPsよりも長いOPシーケ ンスに変換するこれらのx86命令は変換されるべき特定x86命令に符合した OPsの変換シーケンスを(ROMから)取り出すROMベース変換部142に よって変換される。何れかのソースからの変換されたOPシーケンスは、ハード ウェアデコーダによって生成されたかROMから取り出されたかに係わりなく、 実行エンジン150による実行のためにスケジューラ180に供給される。 図1を再度参照するに、実行エンジン150はスケジューラ180、レジスタ ファイル190及びスケジューラ180によってディスパッチされたOPsを受 取り実行する多重実行ユニットを含む。代替的実施例においては実行ユニットの セットに追加しまたはこれから差し引くことが可能であるが、図1の実施例にお いては実行エンジン150はロードユニット152、ストアユニット153、レ ジスタユニット154及び155、浮動小数点ユニット156、マルチメディア ユニット157、並びにブランチユニット158である7つの実行ユニットを含 む。例示的実施例においては、浮動小数点ユニット156とマ ルチメディアユニット157を省略する。実行エンジン150はまたストアユニ ット153とデータキャッシュ170の間に介装されるストアキュー159を含 む。 スケジューラ180は記憶エントリとこれに接続するロジックブロックの指定 されたアレイとして構成され、この記憶エントリとロジックブロックは協働して Opsの実行ユニットへのout−of−orderデイスパッチのため且つO p結果の1以上の実行ユニットへの転送のための支援を提供する。記憶エントリ とロジックブロックの指定されたアレイはまた再命令バッファを実施し、レジス タファイル190内に形成されたアーキテクチャレジスタの再命名を提供し、投 機的実行の回復を提供する。命令デコーダ140はスケジューラ180に命令ス トリームから解読された新規のOpsを供給する。次に、スケジューラ180は 受け取った新規の各Opに関連したデータを(記憶エントリ内に)格納し保持す る。このようにして、Opが実行ユニットに発行されかつ実行ユニットによって 実行されるに伴いスケジューラ180が各Opの状態とその関連するデータを追 跡調査する。与えられたOpが完全に実行されかつデータ従属性が明瞭になった 後に、それは退避(retire)されそして符合するスケジューラエントリは 解除される。 スケジューラ180はバス189として一括して示される一群のバス及び制御 線を介して実行ユニット(即ち、ロードユニット152、ストアユニット153 、レジスタユニット154及び155、浮動小数点ユニット156、マルチメデ ィアユニット157並びにブランチユニット158)に接続される。スケジュー ラ180は実行ユニットにOps、レジスタオペラン ド及び制御信号を供給し、例証的にはバス189を介して実行ユニットから戻さ れる結果値及び状態表示を受け取る。もちろん、全てのバスと制御線とは完全に 接合している必要はなく、バス189は実行ユニットに対するスケジューラ18 0の双方向接続の単なる例示である。 ロードユニット152とストアユニット153は、それぞれアドレス可能なメ モリからのロードしたデータとアドレス可能なメモリへの格納したデータである LdStOps(即ちLdOpsとStOps)を実行する。特定のメモリアド レスのキャッシュ状態に依拠して、LdStOpはL1データキャッシュ170 、L2キャッシュ(図示しない)、主メモリ(図示しない)のいずれかにおいて 完了する。ストアキュー159はストアユニット153からのデータを一時的に 格納しストアユニット153とロードユニット152とはデータキャッシュ17 0へのアクセス競合無しに並行して演算することができる。レジスタユニット1 54と155はRegOpsを実行しこのRegOpsはレジスタファイル19 0のアーキテクチャレジスタに関連したデータに基づいて演算する。スケジューラの概観 図2は24個のエントリ(列として示す)を有するスケジューラ180の例示 的実施例であって、各エントリが継続中のOpと関連している例示的実施例を示 す。各エントリは継続中のOpに関連する静的及び動的データを表すためのスケ ジューラレザバ240として一括して示される一連のフィールドを含む。付け加 えるに、スケジューラ180は継続中のOpsに関連したデータを受け取るため にスケジュールレザバ240のエント リに接続された制御ロジック230として一括して示される一連の特殊ロジック ブロックを提供する。制御ロジック230の特殊ロジックブロック(桁231、 232、233、235及び236として示す)はOp実行並びに実行ユニット へのオペランドの供給と実行ユニットからの結果の分配の順序付けを制御する信 号を供給する。制御ロジック230は発行選択ロジック231、オペランド選択 ロジック232、ロード・ストア命令ロジック234、状態フラグ処理ロジック 235、及び自己修飾コード支援ロジック536を含む。 発行選択ロジック231は各サイクルの間有効な実行ユニットへの発行のため スケジュールレザバ240からのOpsの選択を制御する。オペランド選択ロジ ック232は実行ユニットに対して発行されたOpsに必要とされるオペランド データのための適当なソースを識別する。データ従属性と実行エンジン150内 のOpsの順序付けに依拠して適当なソースはレジスタファイル190であり、 他の継続中のOpエントリ(スケジューラエントリのための行先値フィールドは 250として一括して示される)に関連する行先値フィールドまたは結果バス( 結果バス272として一括して示される)の1つに供給される完了Opの結果が ある。発行選択ロジック231とオペランド選択ロジック232によって供給さ れる制御信号はスケジューラ180がスケジュールレザバ240より有効実行ユ ニットへOpsを発行しかつ発行された各Opのための適当なオペランドソース を選択するのを可能とする。 スケジューラ180はOps out−of−orderを発行し、実行ユニ ット(例えば、ロードユニット152、スト アユニット153、レジスタユニットX154、レジスタユニットY155、及 びブランチユニット158)はOps out−of−orderを実行するが 、あるOpの対は相互に対して順序通りに完了されなければならない。例えば、 同一の実メモリ位置から読まれかつ同一のメモリに書き込まれるLdOpsとS tOpsは順序通りにメモリにアクセスしなければならない。ロード・ストア命 令ロジック234はLdOpsとStOpsの間のそのような実行順序を維持す る。 自己修飾コード支援ロジック236に関しては、下記により詳細に説明するが 、この自己修飾コード支援ロジック236は、ストアキュー159及び実アドレ スタグフィールド243からの表示に応答して自己修飾コードフォールトをトリ ッガする。ストアキュー159は、ストアキュー159が完遂を準備するStOps のための目標リニアアドレス及び実アドレスの数ビットを提供する。自己修飾コ ード支援ロジック236は、これらのアドレスビットを各Opクワッドのための実 アドレスタグフィールド243として格納された命令アドレス(命令が異なるペ ージからの場合には複数のアドレス)と比較する。いずれかのクワッドが整合す ると、常に取り出され、現にオペレーションとして(復号して)存在する命令に 対する書き込みとなる。従って、自己修飾コード支援ロジック236は、スケジ ューラ180をフラッシュするために包括的制御ロジック260に信号を送り、 最終完遂命令に続く命令(すなわち、命令ストリームを修飾する命令に続く命令 )からフェッチ/デコードプロセスが再始動する。スケジューラ180は、自己 修飾コードの検知をトラップ又はフォールト(fault)として処理する(す なわち、 トラップペンディング内の要素に入れる)。 スケジューラ180は、各スケジューラエントリに関連した行先値フィールド を含む。これらの行先値フィールドは250として一括的に示されている。オペ ランド選択ロジック232との関係に於いて、行先値フィールド250は、リオ ーダバッファと暗黙レジスタの再命名を実施する。レジスタファイル190のア ーキテクチュアレジスタに関連するオペランド値は、行先値フィールド250内 に表され、典型的には、オペランドバス271を介してレジスタオペランド値と して実行ユニットに供給される。しかしながら、行先値フィールド250のいず れもより現時点に近いレジスタ状態を表していない場合(すなわち、未だ完遂さ れていないレジスタ状態)には、これに代えてオペランド値をレジスタファイル 190から供給する事ができる。完了したOpsの結果は結果バス272を介し て完了したOpに関連するスケジューラエントリの行先値フィールドに供給され る。付け加えるに、これらの結果は、また継続中のOpsのためのオペランドとし て実行ユニットに供給することができる。結果は、結果バス272を介して転送 される。 スケジュールレザバエントリ(例証的にはスケジュールレザバエントリ240 .1)のフィールドは、実行を待っているか、実行される過程にあるか、または 完了されたか、であるオペレーション(Op)に関する情報を含んでいる。スケ ジュールレザバエントリのフィールドの大部分は、命令デコーダ130が新規の Opをスケジュールレザバ240にロードしたときに初期化される。しかしながら 、他のフィールドは、後にロードされ又は更新される。例えば、状態フィールド (各エントリに対して フィールド242として示される)は符合するOpが実行パイプラインの段を通っ て進むのに伴って更新される。Opがスケジュールレザバ240内にロードされる 時からスケジューラ180から退避される時までの値を保持する記憶フィールド は「静的フィールド」として言及される。新規の値によって更新されることので きるフィールドは「動的フィールド」として言及される。静的フィールドデータ 及び動的フィールドの初期データ値は命令デコーダ140によって供給される。 各スケジュールレザバエントリ(図2中タイプフィールド241として示され る)の3ビットフィールド、タイプ〔2:0〕は、スケジュールレザバエントリ に関連したOpのタイプを特定する。Opのタイプは発行選択目的のために特に重要 である(例えば、Ld Opsは150の様なロードユニットに発行しなければならな い);しかしながら、ロード/ストア命令制御はまたタイプフィールド241も 利用する。下記の信号は、タイプフィールド241から解読したものである: 各スケジュールレザバエントリ(図中タイプフィールド242として示されて いる)の4ビットフィールド、状態[3:0]はOp(S3,S2,S1及びS 0は状態[3:0]の交番信号名である)の現実行状態を示す。タイプフィール ド242の5つの可能状態は以下の様なシフトフィールドによって符号化 される: 0000 Unissued 0001 Stage 0 0011 Stage 1 0111 Stage 2 1111 Completed 即時の状態は、タイプフィールドが現れるエントリに符合したOpのための現 実行段に符台する。ビットは、Opが段の外で支障なく発行され進むのに伴って 更新される(実際的には左シフトによって)。状態[3:0]はまた中止サイク ルの間に1111に設定される。スケジューラOpクワッド構成 スケジューラ180はスケジュールレザバ240内の24個のエントリと、F IFOとして扱われる行先値フィールド250を含む。新規のOpsに符号する データは、最上部にロードされ実行の進行に伴って最下位に向かってシフトされ 、スケジューラレザバ240の最下位から退避される。制御の単純化のためにス ケジューラ180は、スケジュールレザバ240と行先値フィールド250をO pクワッドに基づいて処理する。Opsは、4つのグループにてスケジュールレ ザバ240にロードされ、スケジュールレザバ240を通してシフトされ、且つ スケジュールレザバ240から退避される。このようにして、スケジューラの細 分性が命令デコーダ140のエンコードROM142及びNacDec141の 両者のデコード帯域幅に適合する。スケジューラ180は、したがって深さ6幅 4のFIFO内の6個のOpクワッドエントリとして24個のOpエン トリを処理する。 結果的にスケジュールレザバ240は、Opクワッドを含む6エントリシフト レジスタとして観察することができる。各Opクワッドは、4個のOpエントリ を含み全体としてOpクワッドとして関連する追加的フィールドを加えたもので ある。これらのOpクワッドフィールド、例えば実アドレスタグフィールド24 3は、命令デコーダ140によって供給される。 実アドレスタグフィールド243は、Smc1stAddr,Smc1stP t,Smc2ndAddr及びSmc2ndPgフィールドを含む。Opクワッ ド有効フィールドと、OpQVと共にこれらの実アドレスタグフィールド243 .1と自己修飾コード支援ロジックコード236.1は、スケジューラ180の Opクワッドに符合する。Smc1stAddrとSmc1stPgは、それか ら関連するOpクワッドのOp(Ops)が解読されるCISC命令のための第 1実メモリアドレスの部分を表わす。例示的な実施例において、実アドレスタグ フィールド243のSmc1stPgとSmc1stAddrとはOpクワッド の第1のOpに関連するCISC命令のための実メモリアドレスのビット19: 12及び11:5を(各々)符号化する。OpクワッドのOpsのCISC命令 先駆は、キャッシュライン境界と交差するので第2の実メモリアドレスにおいて はOpクワッドをその関連するCISC命令のアドレスによって完全にタグされ る必要がある。そのような場合、Smc2ndAddr及びSmc2ndPgは、それから関連す るOpクワッドのOp(又はOps)が解読されたCISC命令のための第2実のメモリア ドレスの部分を表す。例示的な実施例に於いては実アドレスタグ フィールド243のSmc2ndPgとSmc2ndAddrは、Opクワッドの後続Op(またはOps )に関連する交差キャッシュラインCISC命令のための実メモリアドレスのビット 19:12及び11:5(各々)を符号化する。命令デコーダ140は、スケジ ュールレザバ240に実アドレスタグフィールド243のSmc1stAddr及びSmc1st Pg(更に、Opクワッドに表される1つの実メモリページ以上のものからCISC命令 がある場合には、Smc2ndAddr及びSmc2ndPg)を供給する。オペレーション(Op)時限及び実行段 スケジューラレザバ240の各エントリは、未定のOpsを記述するフィールド を含む。これらのフィールドは、命令デコーダ140によって取り出され又は解 読されたOpsから生来的に得られた静的状態情報及びOp実行から結果し、又は、 与えられたOpの実行パイプライン状態を特徴づける動的状態情報を格納する。 プロセッサ制御の概観からスケジューラ180は、関連する制御ロジック23 0を備えたOp状態情報(スケジュールレザバ240)の命令順序指定アレイであっ て制御ロジック230は、アレイから各実行ユニットへの発行Ops、パイプライ ン段のシーケンスを介する制御Op実行及び最終的にはスケジューラからの退避Op sに対し、制御信号を発生する。図2に示すように、制御ロジック230は、制 御ロジックの5つの特殊ブロック(発行選択ロジック231、オペランド選択ロ ジック232、ロード・ストア命令ロジック234、状態フラグ処理ロジック2 35及び自己修飾コード支援ロジック236)を含み、その各々は、スケジュー ラレザバ240の符合するエントリから情報を受け取る部分(ロード・ストア命 令ロジック234の例証的部分234. 3)を有する。制御ロジックブロックは、実行ユニットに制御信号を供給する。 例えば、ロード・ストア命令ロジック234は、273として一括して表される 制御線を介してロードユニット152とストアユニット153に制御信号を供給 する。 スケジュールレザバ240の制御ロジックブロックによって供給される特定制 御信号はOpエントリ内のフィールドの状態に依存する。詳細には、ステート〔3 :0〕フィールドは、関連オペレーションの実行の進行を表わす。ロジックの概 観からスケジューラ内の全ての状態順序付けは性質上単一サイクルである。状態 遷移決定はそのサイクルの間の機械状態に基づいて各サイクルごとに行われる。 スケジューラ180の構成はOp実行のパイプライン特性を反映する。スケジュー ラ180(及び符合する各エントリ)は、その各々がオペレーション又は実行パ イプラインの与えられたタイプの特定進行段に直接関連する多数の別個の、より 正確には独立のロジック部に分割することができる。 実行エンジン150のパイプラインステージンクすなわち段配置構成がここで 図3を参照して記述される。Opが一旦実行エンジン150内にロードされると、 そのOpは、3又は4段パイプラインを通り符号的にそのOpに関連するスケジュー ラエントリ内のフィールドステート〔3:0〕によって表される4又は5状態の 間の遷移を通る。命令取り出し及び解読は実行エンジン150の前に遂行される 。従って、第1のスケジューラに関連するパイプライン段は発行段である。図3 は、RegOps及びLdStObsのためのパイプラインステージングを示す。 スケジューラ180は、発行段及びオペランド取り出し段3 30及び340の間実行パイプライン上に基本的な制御を加える。発行段330 内及びオペランド取り出し段340内の処理は段ごとに2個の相に分割すること ができ、各相は、公式的には半クロックサイクルを占める。発行段330は、発 行選択相とブロードキャスト相を含み、一方オペランド取り出し段340は、オ ペランド選択相とオペランド送り相を含む。発行段 発行段330の発行選択相330.1の間に於いて、スケジューラ180は、 ロードユニット152、ストアユニット153,レジスタユニットX154、及 びレジスタユニットY155に関連したパイプラインに入れるための次のOpsを選 択する(4つのOp選択が一時に生起する)。発行段330のブロードキャスト相 330.2の間に於いて、各選択されたOpのためのレジスタオペランドの各々に 関する情報が全てのスケジューラエントリ及び外部ロジック(レジスタファイル 190及び実行ユニットを含む)に同報的に送られる。このようにして、ブロー ドキャスト相330.2は、スケジューラ180の行先値フィールド250の1 つ又はレジスタフアイル190に存在するオペランド値又は結果バス272に生 成する結果に符合するオペランド値を実行ユニット(例えばロードユニット15 2、ストアユニット153又はレジスタユニット154と155)の1つに位置 づけるように設定する。オペランド取り出し段 オペランド取り出し段340のオペランド選択相340.1の間に於いてスケ ジューラ180は、8までのオペランド値(4Ops*2オペランド/Op)を位置 づけ、そして各オペランド値の 状態、すなわち指定されたソースからの有効値が実際に利用可能であるかどうか を決定する。この情報に基づいてスケジューラ180は、オペランド取り出し段 0(段340)のどのOpsがオペランド送り相に続いて例えば段1(段350) であるそれらの各々の実行パイプ内に進むかを決定する。進めることの決定は、 各Opのために独立して行われ、オペレーションが実際に実行される順序がオペラ ンド従属性によって拘束されることのみが必要である。そのようなデータ従属性 が無い場合には異なる実行ユニットに発行するOpsは一般的に他の実行ユニット に割り当てられたこれらのOpsに関する任意の順序にてそれらの各々のパイプラ インを通って処理される。この一般的ルールに対する1つの例外はロード及びス トアの個別的指定(すなわちLdOpsとStOps)を含みこれは以下に詳細に説明され る。LdStOp 実行段 第1の2個のスケジューラ関連段であるオペランド発行段330とオペランド 取り出し段340は、RegOps及びLdStOpsに共通である。後続段は、実行段であ る。RegOpsは、全てのRegOpsが単一サイクルにて実行するので単一実行段350 で更に、一旦RegOpが実行段に入るとそれは常に支障なく完了し、そのクロック サイクルの終わりに於いて段350を出る。一方LdStOpsは、2個の実行段35 2及び360をこの間に於いてアドレス計算、区分及びページ変換(及び記憶保 護チェック)並びに(LdOpsの場合に)データキャッシュアクセスの全てが行わ れる。RegOpsとは異なり、LdStOpsは、任意の長さの時間に亘って段360又は 370のいずれかに持続せしめることができる。この持続の大部分は、第2の段 370に於いてである。最も共通的には段 370の持続は、データキャッシュ170の失敗、データTLB171の欠落及び ページフォールトから結果する。段360での持続は、メモリ引用の非整合から 結果しまた完了へと進まないLdStOpによって占拠されブロックされた段370か ら結果する。 オペランド取り出し段340のオペランド送り相340.2の間において、ス ケジューラ180は指定されたソースからのオペランド値を図2においてバス2 71と272として一括して示されるオペランドバス及び/または結果バスを介 してロードユニット152、ストアユニット153、レジスタユニットX154 及びレジスタユニットY155のような実行ユニットへ転送する。例示的実施例 は9個のオペランドバス271を含みそのうち8個は段0でのオペレーションの ためのオペランド値を提供する。例示的実施例においてはまた、値が有効である か否かに関わりなくオペランド転送が生じ、これによって制御ロジックが単純化 される。オペランド値が無効の場合には、スケジューラ180が関連するオペレ ーションを段1へ進めないのでこれは各実行ユニットによって無視される。Re gOpsのための即値は上述のレジスタオペランドを送る機構の一部として処理 される。そのような場合、即値はそのOpに関連したスケジューラ180エント リの行先値フィールド250の特定の1つから直接送られる。 オペランド送り相340.2の間において変位値もまた変位バス189.4を 介してロードユニット152とストアユニット153(各ユニットに独立値)に 転送される。これらの変位値は32ビット値であり常にスケジューラ180のエ ントリから来る。ソースエントリの選択はオペランド選択相340.1 の間に生起する。LdOpまたはStOpが段1に入った場合にはロードユニッ ト152とストアユニット153が関連する変位値及びオペランド値をラッチす る。 スケジューラ180はアドレスオペランドと変位を提供するために(上述した ように)4相制御機構を実施するが、StOpsはアドレスオペランド及び変位 値に加えるにストアデータオペランドを必要とする。スケジューラ180はSt Opのためのストアデータを得るために4相プロセスを遂行する。StOpデー タを取得するプロセスは上述したものと類似するが、そのストアデータは実行段 2(370)の間に得られる。ストアデータを提供するプロセスはStOpの段 1及び2に同期され、実行段1においてStOpを識別する選択相390.1、 データオペランドのソースを記述する情報を伝送するブロードキャスト相390 .2、データオペランド選択相390.3及びデータオペランド送り相390. 4を含む。ストアデータはStOp実行により並列に取り出され、実際のデータ 値はStOp処理の完了の際に取得されストアキュー159に提供される。有効 ストアデータ値が利用できない場合にはStOpが段2に持続される。Op完了段 例示的実施例においてRegOps及びLdOpsはスケジューラ180の行 先値フィールド250の1つへの結果の格納によって完了する。行先値フィール ド250の各々はOpエントリと関連し、終局的にOCU265によってレジス タファイル190に完遂される値のための一時的記憶装置(リオーダバッファ) として利用される。StOpsのためのメモリへの完 遂前での符合する一時的記憶装置はストアキュー159である。ストアキュー1 59は第1の完遂段においてOCU265がメモリ書き込みを第2の完遂段に放 出するまでStOpに関連したメモリ書き込みを緩衝する。Opコミットメント及びリタイアメント 完了Opsに関連するレジスタ、フラッグ及びメモリ状態の変化はOCU(オ ペレーション完遂ユニット)265によって完遂(または恒久化)される。次に OCU265はスケジューラ180から符合するOpエントリを退避する。Op の実行から数種のタイプの状態変化が結果し得る。状態変化の基本的なタイプは 打ち切ることができ、全体的レジスタ変化、状態フラッグ変化及びメモリ書き込 みを含む。全体的レジスタ変化は全てのRegOps、LdOps、LIMM Op、LDKxxオペレーション及びSTUPD StOpsから結果する。状 態フラッグ変化は「.cc」RegOpsから結果し、メモリ書き込みはSTx xx StOpsから結果する。スケジューラ180とストアキュー159はス ケジューラ180の行先値フィールド250とスケジュールレザバ240内の状 態結果及び一時的記憶レジスタの全般的技術を介して且つストアキュー159内 にメモリ書き込みデータを格納することによって打ち切ることが可能な状態変化 を支援する。一時的(または投機的)レジスタ値、状態値、及びメモリ書き込み 値は関連するOpsがOCU265によって完遂され且つ退避されるまで保持さ れる。スケジューラ180は必要なようにレジスタ値、状態値、及びスケジュー ルレザバ240とストアキュー159内に存在するメモリ書き込み値を、投機的 に、従属するOpsに供給す る。しかしながら、レジスタファイル190及びメモリアドレス空間に対する恒 久的状態変化(データキャッシュ170、命令キャッシュ130、L2、及び主 メモリの間に分配される)はOpコミットメントの間に行われる。 各サイクルの間、OCU265は最下位Opクワッドエントリ内のOpエント リの各々を検査し、可能な限り多数のこれらのオペレーションの結果の完遂を試 みる。Opクワッドの4個のOpsに関連した状態変化は1サイクルにてまたは 数サイクルに亘って完遂される。Opクワッドの全てのOpsが完遂されまたは 支障なく完遂されつつある場合には、そのOpクワッドは現サイクルの終わりに おいてスケジューラ180から退避される。そうでない場合には、可能な限り多 くの状態変化が完遂され、この過程は連続サイクルの間全ての状態変化が完遂さ れるまで繰り返される。 レジスタ結果、状態結果、及びメモリ書き込みのコミットメントは独立して遂 行される。多重結果(例えば、レジスタ結果と状態結果の両者を伴うRegOp 、またはレジスタ結果とメモリ書き込みの両者を伴うSTUPDオペレーション )を有するOpsのために、多種の結果が同時的に完遂されることは必要ではな い。しかし、状態変化の1つのタイプのコミットメントは他のものから独立であ る。Opの全体的なコミットメントは最後の結果が完遂された時に生ずる。一般 的には、Opの結果は下記の場合において初めて完遂される: 1.OpエントリのOp実行状態(ステート[3:0])がOpが完了したこと を示す: 2.先行の何れかのフォールト可能なオペレーションのステー ト[3:0]、即ち先行する何れかのLdStOpsが完了され、オペレーショ ンがフォールトの影響を受けないことを意味する;及び 3.先行する何れかのBRCONDオペレーションのステート[3:0]が完了 し、これがBRCONDが正確に予測されたことを意味する。 メモリ書き込みを発生するStOpsに関する追加的な拘束は1サイクルにて ストアキュー159からデータキャッシュ170に完遂され得るのは1書き込み に限定されることである。OCU265は1サイクルにつき4レジスタ及び4状 態結果及び1メモリ書き込みまでの完遂が可能であり、典型的にはサイクルごと にスケジューラ180からのOpクワッドを完遂し且つ退避する。Opクワッド が多重メモリ書き込みStOpsを含有する場合またはOpクワッド内のオペレ ーションの1つが関連するステート[3:0]フィールド242が未だ完了した と記録されていない実行において十分に遅延した場合にのみOpクワッドは1サ イクル以上に亘ってスケジューラ180の最下位に退避されないものとして残留 することができる。 OCU265はStOpsに関連したメモリ書き込みデータ値のメモリアドレ ス空間、即ちL1キャッシュ(データキャッシュ170及び命令キャッシュ13 0)、L2キャッシュ、及び主メモリ内の位置に対するコミットメントの処理及 び制御を行う。メモリ書き込みコミットメントは関連するストアキュー159エ ントリを含み、OCU265によって完遂されるメモリ書き込みはせいぜい1サ イクルにつき一回である。OCU265は最下位の2個のOpクワッド内のOp エントリに関しス ケジュールレザバ240フィールド値をスキャンし、完遂するメモリ書き込みに よってStOpsを識別する。 StOpがストアユニット153内の実行を完了した時に、関連する目標メモ リアドレス及び記憶データがストアキュー159に入れられる。後に、StOp のためのメモリ書き込みが実際に完遂された時に、このエントリは読み出されス トアキュー159から退避される。StOpsは順序通りに実行され且つ順序通 りに完遂されるので、ストアキュー159は単なるFIFOとして扱われる。結 果として、ストアキュー159エントリのスケジューラ180内の関連StOp sとの整合は直進的である。 各サイクルの間において、OCU265のメモリ書き込み完遂ロジックは次の /最も古いの未完遂メモリ書き込みStOp(即ち次のStOp及び試し且つ完 遂する関連するストアキュー159)のためにスケジューラ180の最下位の2 個のOpクワッドエントリをサーチする。スケジューラ180とストアキュー1 59の両者はFIFOとして扱われるので、OCU265によって選択されるO pエントリはストアキュー159の最下位の/最も古いエントリに関係させられ なければならない。 StOp(メモリ書き込み)コミットメントプロセスは二段完遂パイプライン として実施される。第1の完遂段の間には、制御決定は行われない。しかし、O CU265はスケジューラ180内の次の/最も古い未完遂メモリ書き込みSt Opに関連したストアキュー159エントリに対するデータキャッシュタグルッ クアップをトリッガする。アクセスされたタグデータは第2の完遂段の間におい て検査のために単純にラッチされる。 データキャッシュ170タグルックアップは盲目的に、即ち関連するStOpが 現在的に完遂可能であるか否かを考慮することなく遂行される。例示的実施例に おいて、OCU265はスケジューラ180からのOpエントリを選択し、スト アキュー159は同時的に関連するストアキュー159エントリのためのメモリ 書き込みアドレスをデータキャッシュ170に示す(即ち、タグルックアップを 開始する)。 書き込み完遂はその段が空であるかそれとも書き込みのコミットメントが支障 なく完了した場合に完遂段2へと進めることができる。ストアキュー159から のメモリ書き込みが完遂段2へ入った時に、関連するStOpはスケジューラ1 80から退避される。OCU265は選択されたStOpが完遂可能であるかど うか、即ち: 1.OpエントリのOp実行状態(ステート[3:0])が選択されたStOp が完了されていることを示し: 2.先行する何れかのフォールト可能なオペレーションのステート[3:0]が 完了され:そして 3.先行する何れかのBRCONDオペレーションのステート[3:0]が完了 しているか否かを決定する。 もしも選択されたStOpが完遂可能であり、且つ書き込み完遂を第2の書き 込み完遂段に進めることが可能であるならば、OCU265はStOpが完遂さ れたものとみなす。次のサイクルにおいて、OCU265は次のメモリ書き込み StOpをサーチし且つこの上に移動し、完遂プロセスの残部はOCU265及 びスケジューラ180に同期せずに進行する。 ストアキュー159の書き込み完遂パイプラインは書き込み の広いものであり従って1サイクルにつきただ1つのメモリ書き込みStOpの コミットメントを支援する。1よりも多くのメモリ書き込みStOpを含まない Opクワッドに関しては、1サイクルにつき可能な1個のOpクワッドのコミッ トメントとリタイアメント(完遂と退避)を可能とする。しかしながら、そのよ うなStOpsの2、3、または4個を含有するOpクワッドに関しては、Op クワッドの各StOpエントリを完遂するために符合した最小サイクル数が必要 である。結果としてそのようなOpクワッドはスケジューラ180の最下位に少 なくとも符合するサイクル数に亘ってとどまる。 処理能力の不適合は最も古いのものから2番目のOpクワッド(Opクワッド 4)内のStOpsに関連したメモリ書き込みを完遂するためのOCU265支 援によって部分的に緩和される。メモリ書き込みは順番通りに完遂されるので、 このことは、最下位のOpクワッドが持続された(そうでなければ未完遂メモリ 書き込みは空)時またはそれが単にいかなるStOpsをも含有しない時に多重 書き込みOpクワッド上にOCU265がヘッドスタート(head star t)をとるのを可能とする。このことがOCU265の1サイクルにつき一回の 書き込みのコミットメント率を1Opクワッドにつき1よりも小さなOpクワッ ドごとのメモリ書き込みの平均数によりよく適合させることを助ける。 StOpのメモリ参照が位置合わせ境界(現例では8バイト)と交差し且つス トアユニット153によってストアキュー159内の2個の関連するエントリを 有する2個のメモリ書き込みに分割された時に特別な状況が生起する。そのよう な状況にお いては、OCU265はストアキュー159の2個のエントリを退避するために 2回のサイクルを用い、第2サイクルまではStOpを公式的には完遂しない。 そのStOpがフォールトの場合には、ストアキュー159のいずれのエントリ の退避もないままそれは打ち切られる。 下記の疑似RTL記述はOCU265の書き込み完遂ロジックの機能性を要約 する。OPOは最も古いOpであり、OP3はスケジューラ180の最下位の/ 最も古いOpクワッド内の最も若いOpである。同様に、OP4−OP7はスケ ジューラ180の最も古いOpクワッドに対し2番目に古いものに符合したOp sであり、OP8−OP11はスケジューラ180の最も古いOpクワッドに対 し3番目に古いものに符合したOpsである。OCU265のオペレーションは メモリ書き込みStOpsの完遂において最後の2のOpクワッドからのOCU 265の進みを表すマスクビット(CmtMask[7:0])のセットに基礎 づけられる。 演算において、CmtMask[7:0]の最初のNビット(ビット0より開 始する)はOCU265がいずれのStOpsをも完遂されるべき次のStOp を含有する第N番目のそのようなOp位置へと完遂したことを明白に示している 。CmtMask[7:0]の残りのマスクビットのセットに符合する全てのO psは完遂可能なStOpsのために検査されなければならない。OCU265 はまたどのOp位置が未完遂メモリ書き込みStOpsを含有するかを示すビッ トのセット(UncmtStOp[7:0])を維持する。 各サイクルの間、OCU265は次の未完遂StOpを選択 されたStOpの位置に基礎付けられた新規なマスクビットのセットを発生する 。選択されたStOpが現在的に完遂可能であるか又は打ち切りサイクルが開始 されることが必要であるかを決定するためにアンマスクOpsが検査される。前 者の場合、選択されたStOpが完遂可能であり且つ完遂パイプの段2がサイク ルの終わりにおいて新規な書き込み完遂を受入れることが可能な場合には、OC U265はStOpを完遂し、UncmtStOpビットを更新する。OCU2 65はまた最後の2個のOpクワッドの何れのシフトにも適合するようにUmc mtStOpのビットをシフトする。 自己修飾コード処理ロジック メモリ書き込みはLdStOpコミットメント段382の相2即ち382.2 においてそのアドレス空間(即ちデーチキャッシュ170、命令キャッシュ13 0、L2キャッシュ及び/又は主メモリ)へ完遂される。ロード・ストア命令ロ ジック234は同一のメモリアドレスにアクセスするLdOpsとStOpsの 間で実行順序を強制するので、若い方のロードによる直前に完遂されたメモリ書 き込みデータの復帰は保証される。しかしながら、LdStOpコミットメント 段382の相2即ち382.2内に完遂されたメモリ書き込みが命令ストリーム 内に格納されると、多数のパイプライン段(即ち、x86命令取り出し段310 、x86命令解読段320、発行段330、 オペランド取り出し段340、実行段351、352及び360)内のより若い Ops(及びそれらの先駆x86命令)を古い(stale)命令バイトによっ て基礎付けることができる。 完了されたOCU265によるコミットメントを待期しているOpsも古い命令 バイトに基礎付けることができる。スケジューラ180の自己修飾コード処理部 及び命令デコーダ140のトラップは下記に記載のように古いデータをフラッシ ュするために命令ストリーム内に格納する。 図4を参照するに、StOpはストアキュー159の段2即ち460によって アドレス空間に完遂される。符合するOpクワッドは、そのOpクワッドのエン トリの各々が完了された場合(又は完遂される過程において)OCU265によ ってスケジューラ180から退避される。ストアキュー159の段1即ち459 はストアキュー159が段2即ち460に完遂するべく準備しているメモリ書き 込みデータのためのリニアアドレス及び実アドレス(即ちStOpアドレス)の 部分を提供する。詳細には、ストアキュー159の段1即ち459はリニアアド レスSTQ_LinAddr(11,5)のビット11−5と実アドレスSTQ _Physaddr(19,12)のビット19−12を提供する。スケジュー ラ180の自己修飾コード支援ロジック236はStOpアドレスを受取り、こ れをスケジュールレザバ240のOpクワッドフィールド443.1、443. 2、443.3及び443.4内に格納された各実アドレスタグSmc1stA ddr,Smc1stPg,Smc2ndAddr及びSmc2ndPgに対し て比較する。この比較に基づいて、自己修飾コード支援ロジック236はストア キュー159によって完遂されたStOpがスケジューラ180内のいずれかの Opクワッドによって対象とされたアドレスに書き込むか否かを決定する。その 場合には、自己修飾コード支援ロジック236は自己修飾コード(SMC)トラ ップをトリッガする。包括的制御ロジック260はスケジューラ180をフラッ シュし、フェッチ/デコードプロセスが最後に完遂された命令に続く命令(即ち その命令ストリームを修飾する命令に続く命令)から再始動される。 既述のように、Opsがスケジューラ180に発行されるのに伴い、命令デコ ーダ140はOpsクワッドフィールド443.1、443.2、443.3及 び443.4(図中、実アドレスタグフィールド243として一括的に示される )を供給する。Opクワッドフィールド内に格納された実アドレスタグSmc1 stAddr,Smc1stPg,Smc2ndAddr,及びSmc2ndP gはそれから符合するOpクワッドのOpsが解読されるx86命令用の第1及 び第2実メモリアドレスのビット19−5を表わす。符合するOpクワッドがキ ャッシュライン境界と交差するx86命令から解読される場合には2個の実メモ リアドレスが必要である。下記の擬似RTLは自己修飾コード支援ロジック23 6の設計と演算を更に記述する: 命令デコーダ140はまた実アドレスタグを使用する自己修飾コードをトラッ プする。詳細には命令デコーダ140のアドレス整合ロジック444と取り出し 制御ロジック447はストアキュー159が段2即ち460において完遂するべ く準備しているメモリ書き込みに対するリニア及び実アドレス(即ちStOpア ドレス)の部分を受け取る。従前のように、ストアキュー159の段1即ち45 9はリニアアドレスSTQ_PhysAddr(11,5)のビット11−5及 び実アドレスSTQ_PhysAddr(19,12)のビット19−12を提 供する。アドレス整合ロジック444はStOpアドレスを各々が命令バッファ 445内のエントリに関連するアドレスタグ446に対して比較する。整合が発 見された場合には、アドレス整合ロジック444はSMCトラップをトリッガす る。包括的制御ロジック260は命令デコーダ140をフラッシュし、フェッチ /デコードプロセスが最後に完遂された命令から再始動される。 例示的実施例において、SMCトラップは以下のように処理される。トリッガ するStOpに関連する全てのOpsが完遂された後(即ち、どちらが大きいか に係わりなくトリッガするStOpを成員とする全Opクワッドとして同一のx 86命令から解読されたOpsのセット)、後続x86命令に関連するOpsは 打ち切られる。例示的な実施例において、下記のエムコード(emcode)が SMCトラップを実現する。 SMCトラップエムコードは上述の打ち切られた命令の拡張命令ポインタ(E IP)を達成する。次にSMCトラップエムコードはトリッガするStOpがメ モリサブシステムによって応答されるときまで待期する。データキャッシュ17 0と主メモリの間に介装されたL2キャッシュを含む代替的実施例において、ト リッガするStOpは上述とは異なりL2キャッシュによって応答される。何れ の場合においても、そのような肯定応答は命令キャッシュ130に対するスヌー プ信号(snoop)が既に発行されていることを意味する。SMCトラップエ ムコードがトリッガするStOpに関連するメモリ書き込みに同期化した後、そ れは命令ストリーム内の次のx86命令を取り出すためにジャンプして戻る(W rIpを実行する)。この時点において主メモリ(又は代替的にはL2キャッシ ュ)から取り出された次のバイトを更新することが保証される。 SMCトラップをトリッガしないStOpでさえも関連するメモリ書き込みが完 遂された後でスヌープ信号が命令キャッシュ130に発行される前に時間ウィン ドウを作成し、その間に於い て命令デコーダ140によって取り出された新規な命令バイトは、いずれも潜在 的に古い(stale)。このことを克服するために、命令デコーダ140の取 り出し制御ロジック447は、完遂メモリ書き込みに関連した実アドレス(即ち StOpアドレス)のコピーを格納する命令デコーダ140が命令キャッシュ130 から新規の命令バイトを取り出す時には常に取り出し制御ロジック447は、最 後に完遂されたメモリ書き込みのためのSpOtアドレスのその格納されたコピーに 対して現取り出しアドレスを照合する。現取り出しアドレスがそのSpOpアドレ スの格納されたコピーに整合する場合には、取り出し制御ロジック447がその 取り出しを無効にする。命令デコーダ140の取り出し制御ロジック447は、 完遂されたStOpがメモリサブシステムによって応答されるまで同一の取り出しア ドレスへの再発行を継続する。取り出し制御ロジック447がメモリサブシステ ムから肯定応答を受け取ったときには、それはそのStOpアドレス記憶をクリアす る。データキャッシュ170と主メモリの間に介装されたL2キャッシュを含む代 替的実施例に於いては、肯定応答は、L2キャッシュによって供給されることがで きる。 例示的実施例に於いてそのStOp肯定応答の前、又は(最終的には)それと同時に メモリサブシステムは命令キャッシュ130にスヌープ信号を発行する。命令キ ャッシュ130はスヌープ信号を処理する一方命令デコーダ140からの取り出 しの処理を禁止する。スヌープ信号処理の間の取り出しの禁止により命令キャッ シュ130はその間に命令取り出しが潜在的に古いバイトに復帰し得る第2の短 いウインドウを閉鎖する。 スケジューラ180の各Opクワッドは、命令キャッシュ130の2個のライン にまたがる解読されたx86命令のバイトを含有する。同様に、命令バッファ4 45のエントリは、命令キャッシュ130の2個のラインにまたがる。例示的実 施例に於いて、命令デコーダ140の1ラインは、32バイトである。このこと はスケジューラ180の各Opクワッドエントリ及び命令バッファ445の各エン トリに関連する実アドレスタグは、可能な両方の32バイトキャッシュラインの ためにアドレスを符号化する必要があることを意味する。アドレスタグ446と 実アドレスタグフィールド243の1実施例に於いて一対の完了実アドレス(ビ ット31:5)がスケジューラ180の各Opクワッドのためにかつ命令バッファ 445の各エントリのために格納される。しかしながらハードウエアを削減する ために一方において不適正な整合の頻発を回避すると同時に、アドレスタグ44 6と実アドレスタグフィールド243の例示的実施例は、その各々が関連するx 86命令の実メモリアドレスのビット19:5を含有する部分的実アドレスを格 納する。 例示的実施例はメモリに対する書き込みの単一サイクル処理能力を支援する。 データキャッシュ170はライトバックキャッシュである。StOpに関連するメモ リ書き込みコミットメントがデータキャッシュ170にヒットし且つそのライン が占有され(Owned)又は、汚染(Dirty)されていることが確認され ると、1サイクルにつき1の率で書き込みを進めることができる。この状況は、 占有された/汚染されたラインがデータキャッシュ170と命令キャッシュ13 0の両者の中に存在することが許される場合には、自己修飾コードの処理に関し て、いささかの困難を呈する。一実施例に於いて、命令キャッシュ130は、完 遂されたStOpによって即時に検査されなければならず競合発行がアクセス命令キ ャッシュ130タグRAMに生起することからこのことにより複雑性が増加する。 付け加えるに、専用アドレスバス(図示しない)はデータキャッシュ170から 命令キャッシュ130へと送られなければならない。この複雑性を最小限とする ため命令キャッシュ130とデータキャッシュ170間の相互排除関係は維持す る一方例示的実施例に於いてキャッシュ制御ロジック160によってキャッシュ ラインが両方のキャッシュ内に同時的に存在することを防止する。この制限によ る性能的評価での影響は無視し得る。 この構造設計によって付加される拘束は、書き込みStOp及びStOpが修飾された バイトに対してより古いので修飾されたバイトが同一のOpクワッドエントリ内に 復号された場合には、StOpが命令ストリーム内への書き込みが不可能となること である。しかしながらx86プロセッサアーキテクチュアに合致するプロセッサ は、修飾された命令ストリームからの実行を開始する前に制御仕様を転送しなけ ればならない。インテル社のペンティアム プロセッサ ソフトウエア レファ レンス マニュアル参照。例示的実施例に於いてこの要件は、(もし続くならば )命令ストリーム内に格納するStOpとそれを書き込みバイトがスケジューラ18 0の同一のOpクワッド内に存在する可能性を取り除く。 各種の実施例に関連してこの発明の説明が行われたが、これらの実施例は例示 的なものであり、この発明の範囲はそれらに限定されないことを理解されたい。 説明された実施例の各種の 変形、修正、追加、及び改良が可能である。例えばOpクワッドとしてのスケジュ ーラ180内のOpエントリの構成は単に例示的なものである。代替的実施例は多 重及び/又はパイプライン実行ユニットを有するコンピュータ内の演算の特性及 び状態を表す他の構造及び/又は方法と組み合わせることが可能である。更に代 替的実施例は、メモリ及び例えばL1及びL2キャッシュの別の階層構造と組み 合わせることができる。そのような代替的実施例に於いては、ストア肯定応答は 、L2キャッシュによって提供することができる。 代替的実施例に於いては、スケジューラ180、ストアユニット153,スト アキュー159、及び命令デコーダ140の間のタグ表現及び比較構造を含む構 成及び機能の異なる配置を提供することができる。付け加えるに例示的実施例内 に於いて、ハードウエアとして表現された構造及び機能は、代替的実施例中のソ フトウエア、ファームウエア又はマイクロコードとして実施することができる。 本願発明に従った自己修飾コード処理を具体化する広範なコンピュータシステム 構造が着想される。例えば、この発明に従って自己修飾コード処理を行うプロセ ッサ100(例えばRAM1020)、ディスプレスアダプタ1010、ディスク コントローラ/アダプタ1030、各種入力/出力インターフェースとアダプタ (例えば並列インターフェース1009、直列インターフェース1008、LAN アダプタ1007等)、及び符号する外部装置(例えばディスプレイ装置100 1、プリンタ1002、モデム1003、キーボード1006及び記憶装置)を 含むコンピュータ装置(1000)。記憶装置には、ハードディスク1032、 フロッピーディスク10 31,テープ装置、CD/ROM、ジュークボックス、RAID、フラッシュメモリ等が含 まれる。これらの及び他の変形、修正、追加及び改良は請求の範囲に記載のこの 発明の範囲に含まれる。
【手続補正書】特許法第184条の8第1項 【提出日】平成9年11月12日(1997.11.12) 【補正内容】 明細書 自己修飾コード処理装置技術分野 この発明はプロセッサ、特にパイプライン処理装置における自己修飾コード処 理装置に関する。背景技術 EP−A−0 159 712はCPUとメモリシステムを含むコンピュータ ーシステムを開示するが、このCPUはキャッシュメモリを含み、このメモリに おいてCPUはパイプラインプロトコールに基づいて操作される。このコンピュ ータシステムは、このようなシステムにおいてパイプライン中の競合命令の実施 を回避するべくデータフローを制御する制御装置を含む。 US−A−5 434 987はバッファストアに依拠する自己修飾コードシ ーケンス命令の不適正取り出しを防止する方法及び装置に関する。 コンピュータプログラムは生ずる目的コードが逐次的順序によって実行される という単純化された仮定により典型的には設計され、コード化されそしてコンパ イルされている。しかしながら、この仮定にも関わらず、最新プロセッサ設計技 術は、機械命令の並行実行の可能性、即ち命令並列法の開発を目指している。コ ンピュータ処理能力を最大とするために、パイプライン技術を利用して単一機能 ユニットまたは実行パスの多重段に命令並行配列をマップすることができる。こ れとは対照的に、out−of−order命令発行、out−of−orde r命令完了、及び命令の投機的実行を含むスーパースケーラ技術では命令並行配 列を多重機能ユニットまたは実行パスにマップする。最新プロセッサ設計ではパ イプライン技術とスーパースケーラ技術の両者が頻繁に開発さ れている。 Out−of−order命令発行は実行ユニットへの命令の発行を含むが、 実行コード内での命令の実際の順序に関してはあまり考慮されていない。out −of−order発行を利用するスーパースケーラプロセッサは、命令タスク 指名シーケンスの作成において与えられた命令の出力(結果)と後続命令の入力 (オペランド)との間の従属性に拘束されることのみが必要である。一方、ou t−of−order完了は、そのプログラムシーケンスに先行する命令の完了 前に与えられた命令が完了(例えばその結果の格納)することを可能とする技術 である。最後に、投機的実行は予測された結果(例えば、ブランチの)に基づく 命令シーケンスの実行を含み、ブランチ状態が実際に評価されのを待つことなく プロセッサが命令を実行することを可能とする。ブランチがそうでない場合より もより頻繁に正確に予測されるものと仮定し、かつ不適正予測の結果を中止する 正当に有効な方法が利用可能であると仮定すると、命令並行配列(即ち、並列実 行のために利用可能な命令の数)は投機的実行によって典型的に増加されると考 えられる(分析のためジョンソン著、「スーパースケーラ プロセッサ デザイ ン」ニュー ジャージー州 プレンティスホール インコーポレイテッド刊、1 991、pp.63−77参照)。 スーパースケーラ技術は主に命令セット及び他のアーキテクチャ特徴から独立 のプロセッサ構造に関係する。即ち、スーパースケーラ技術の魅力の1つは、例 えばx86プロセッサアーキテクチャである既存のプロセッサアーキテクチャと の間にコード互換性を有するプロセッサを開発し得る可能性を備えることである 。多くのスーパースケーラ技術はRISCまたはCISCアーキテクチャの何れ に対しても同程度に適正に適用する。しかしながら、RISCアーキテクチャの 多くのものでの規 則性の故に、スーパースケーラ技術はまず最初にRISCプロセッサ設計に適用 されている。特に、3オペランド・ロード/ストア・アーキテクチャ、固定命令 長、限定アドレスモード、及びRISCアーキテクチャと命令セットに関係する 固定幅レジスタとが多重実行ユニットに仕事を安定的に供給するに必要な多重命 令の単一サイクルデコーディングを可能とする。 x86アーキテクチャとのコード互換性のあるスーパースケーラプロセッサを 開発する1つの方法は、x86命令をRISC命令またはオペレーションに動的 に変換することであり、変換された命令またはオペレーションはRISCコアま たは実行エンジンによって実行され得る。 【手続補正書】 【提出日】平成10年4月9日(1998.4.9) 【補正内容】請求の範囲 1.命令取り出しから結果コミットメントまでの段におけるオペレーションを表 すオペレーションエントリと、メモリ(122)内の目標アドレスにストアオペ ランドを完遂するストアパイプ(153,159)とを有するプロセッサ用の自 己修飾コード処理装置であって、 関連するオペレーションエントリに符合した命令のメモリ内の第1のアドレス を表す第1のタグストアであってその各々がオペレーションエントリの第1のグ ループに関連する複数個の第1のタグストア; 第1のタグストアとストアパイプ(153,159)に接続し、ストアパイプ によって完遂されるストアオペレーションのための目標アドレスと第1のタグス トアに表される第1のアドレスのいずれかとの整合に応答して自己修飾コード表 示を供給する第1の比較ロジック(236);及び 第1の比較ロジックとオペレーションエントリとに接続し、自己修飾コード表 示に応答してオペレーションエントリの完遂されていないものをフラッシュする 制御ロジック(260)よりなる自己修飾コード処理装置。 2.オペレーションエントリの第1のグループはスケジューラ(180)に表さ れるOpグループに編成された複数個のOpエントリよりなり、そして 前記第1のタグストアの各々は関連するOpグループのOpエントリがそれか ら復号する命令のグループのためのメモリアドレスを対象とする一対のタグフィ ールドを含み、タグフィールドの一対は命令のグループがキャッシュライン境界 と交差す る時キャッシュライン境界のいずれかの側のメモリアドレスを対象とする請求項 1に記載の自己修飾コード処理装置。 3.タグフィールドの対に表される第1のアドレスは部分的アドレスであり、前 記第1の比較ロジック(236)はタグフィールドに表される部分的アドレスの いずれかとストアパイプによって完遂されるストアオペレーションのための目標 アドレスの符合する部分との間の整合に応答して自己修飾コード表示を供給する 請求項2に記載の自己修飾コード処理装置。 4.前記オペレーションエントリの第1のグループと第2のグループが各々をス ケジューラ(180)及び命令デコーダ(140)に関連せしめ: 各々がオペレーションエントリの第2のグループのいずれかと関連する第2の タグストアであって関連するオペレーションエントリに符合する命令のメモリ内 の第2のアドレスを表す複数個の第2のタグストア: 第2のタグストアとストアパイプ(153,159)と制御ロジックに接続す る第2の比較ロジック(444)であってストアパイプによって完遂されるスト アオペレーションに関する目標ターゲットと第2のタグストアに表されるアドレ スのいずれかとの整合に応答して自己修飾コード表示を供給する第2の比較ロジ ック(444);より成り 制御ロジックが自己修飾コード表示に応答してオペレーションエントリの第2 のグループとオペレーションエントリの第1のグループの完遂されていないもの とをフラッシュする請求項1に記載の自己修飾コード処理装置。 5.オペレーションエントリの第1のグループはスケジューラ に表されるOpグループに編成されたOpエントリの複数個より成り、 第1のタグストアは各々それから関連するOpのグループのOpのエントリが 復号する命令のグループのためのメモリアドレスを対象とする一対のタグフィー ルドを含み、タグフィールドの対は命令のグループがキャッシュライン境界と交 差するときにキャッシュライン境界のそれぞれの側にてメモリアドレスを対象と し; オペレーションエントリの第2のグループは命令デコーダ内の命令バッファと して編成された命令エントリの複数個より成り、各命令バッファエントリはキャ ッシュラインに符合し; 第2のアドレスはキャッシュラインを対象とする請求項4に記載の自己修飾コ ード処理装置。 6.第1及び第2のアドレスは部分的アドレスであり、 第1の比較ロジック(236)はタグフィールドに表される部分的アドレスの いずれかと目標アドレスの符合する部分との間の整合に応答して自己修飾コード 表示を供給し、 第2の比較ロジック(444)は第2のタグストアに表された部分的アドレス のいずれかと目標アドレスの符合する部分との間の整合に応答して自己修飾コー ド表示を供給する請求項5に記載の自己修飾コード処理装置。 7.更に、ストアパイプ(153,154)に接続され連続ストアオペレーショ ンのために目標アドレスを受け取るアドレスストアであってメモリサブシステム からのストア肯定応答に応答してクリアされるアドレスストア;及び アドレスストアに接続され、現取り出しアドレスとアドレス ストアに格納された目標アドレスの間の整合に応答して現取り出しアドレスから の命令取り出しを無効にする取り出し制御ロジック(447)より成る請求項2 に記載の自己修飾コード処理装置。 8.更に、命令デコーダ(140)とメモリサブシステム(122)の間に接続 された命令キャッシュ(130)であってメモリサブシステムからの、スヌープ 信号を処理する一方命令デコーダからの取り出しの処理を禁止する命令キャッシ ュ; ストアパイプとメモリサブシステムの間に接続されたデータキャッシュ(17 0); 及び 命令キャッシュとデータキャッシュの両者内でのキャッシュラインの同時的存 在を防止する命令/データキャッシュ制御ロジックより成る請求項7に記載の自 己修飾コード処理装置。 9.自己修飾コード処理装置を備えた装置であって、 メモリサブシステム(122); 前記メモリサブシステム(122)に接続した命令(122)及びデータキャ ッシュ(170); データキャッシュ(170)に接続され、ストアオペレーション(ストアOp )の結果をメモリサブシステムに完遂するストアパイプ(153,159)であ ってStOp結果のコミットメントにStOp目標アドレス表示を供給するスト アパイプを含む複数個の実行ユニット; 概ね結果コミットメントを通して命令から復号されたOpsを表示するOpエ ントリの指定された複数個及びその命令のためのメモリアドレスを対象とする第 1のアドレスタグの符合す る複数個を含むスケジューラ(180); ストアパイプと第1のアドレスタグに接続された第1の比較ロジック(236 )であってStOp目標アドレスと第1のアドレスタグの1つとの間の整合に応 答して自己修飾コードフォールト処理装置をトリッガするように接続された第1 の比較ロジック(236); 命令キャッシュとスケジューラの間に接続された命令デコーダ(140)であ って命令バッファエントリの複数個と命令バッファエントリに関連した第2のア ドレスタグを含む命令デコーダ(140);及び ストアパイプと第2のアドレスタグに接続された第2の比較ロジック(444 )であってStOp目標アドレスと第2のアドレスタグの1つとの間の整合に応 答して自己修飾コードフォールト処理装置をトリッガするように接続された第2 の比較ロジック(444)とより成る装置。 10.前記自己修飾コードフォールト処理装置が: 第1比較ロジック(226)及び第2比較ロジック(444)並びにスケジュ ーラ(180)及び命令デコーダに接続された制御ロジックであって第1又は第 2比較ロジックのいずれかからの自己修飾コードフォールト表示に応答してOp エントリからのOpの完遂されていないもの及び命令バッファからの命令をフラ ッシュする制御ロジックより成る請求項9に記載の装置。 11.前記自己修飾コードフォールト処理装置が更に: トリッガするStOpと同一の命令に関連したOpsを完遂する過程; トリッガするStOpのための命令ポインタを得る過程; メモリサブシステムによってトリッガされるStOpが応答されるまで待期す る過程;及び 命令ストリーム内においてトリッガするStOpに関連した命令に直ちに続い て命令にジャンプして戻る過程を遂行する自己修飾コードフォールト装置より成 る請求項10に記載の装置。 12.前記自己修飾コードフォールト処理装置が更に: ストアパイプに接続され連続StOpsのための目標アドレスを受け取るアド レスストアであってメモリサブシステムからのStOp肯定応答に応答してクリ アされるアドレスストア;及び アドレスストアに接続され取り出しアドレスとアドレスストアに格納された目 標アドレスとの間の整合に応答して命令デコーダによって取り出しアドレスから の命令取り出しを無効にする取り出し制御ロジック(447)より成る請求項1 0に記載の装置。 13.複数個の実行ユニット(150)と、スケジューラ(180)と、命令デ コーダ(140)と、メモリサブシステム(122)と該メモリサブシステムに 各々接続された命令(130)及びデータキャッシュ(170)を含むコンピュ ータシステムであって、 請求項9に記載の前記装置を含むことを特徴とするコンピュータシステム。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 592,150 (32)優先日 平成8年1月26日(1996.1.26) (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),EA(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 【要約の続き】 に接続される。命令デコーダ(140)は命令キャッシ ュ(130)とスケジューラ(180)の間に接続され る。命令デコーダは命令バッファエントリと命令バッフ ァエントリに関連した第2のアドレスタグを含む。第2 の比較ロジック(444)はストアオペレーション目標 アドレスと第2のアドレスタグの間の整合に応答して自 己修飾コードフォールト処理装置をトリッガするために ストアパイプと第2のアドレスタグに接続される。

Claims (1)

  1. 【特許請求の範囲】 1.命令取り出しから結果コミットメントまでの段におけるオペレーションを表 すオペレーションエントリを有するコンピュータにおいて、 関連するオペレーションエントリに符合した命令のメモリ内の第1のアドレス を表す第1のタグストアであってその各々がオペレーションエントリの第1のグ ループに関連する複数個の第1のタグストア; 第1のタグストアとストアパイプに接続する第1の比較ロジックであってスト アパイプによって完遂されるストアオペレーションのための目標アドレスと第1 のタグストアに表される第1のアドレスのいずれかとの整合に応答して自己修飾 コード表示を供給する第1の比較ロジック;及び 第1の比較ロジックとオペレーションエントリとに接続した制御ロジックであ って自己修飾コード表示に応答してオペレーションエントリの完遂されていない ものをフラッシュする制御ロジックよりなる自己修飾コード処理装置。 2.オペレーションエントリの第1のグループはスケジューラに表されるOpグ ループに編成された複数個のOpエントリよりなり、そして 前記第1のタグストアの各々は関連するOpグループのOpエントリがそれか ら復号する命令のグループのためのメモリアドレスを対象とする一対のタグフィ ールドを含み、タグフィールドの一対は命令のグループがキャッシュライン境界 と交差する時キャッシュライン境界のいずれかの側のメモリアドレスを対象とす る請求項1に記載の自己修飾コード処理装置。 3.タグフィールドの対に表される第1のアドレスは部分的アドレスであり、前 記第1の比較ロジックはタグフィールドに表される部分的アドレスのいずれかと ストアパイプによって完遂されるストアオペレーションのための目標アドレスの 符合する部分との間の整合に応答して自己修飾コード表示を供給する請求項2に 記載の自己修飾コード処理装置。 4.前記オペレーションエントリの第1のグループと第2のグループが各々をス ケジューラ及び命令デコーダに関連せしめ: 各々がオペレーションエントリの第2のグループのいずれかと関連する第2の タグストアであって関連するオペレーションエントリに符合する命令のメモリ内 の第2のアドレスを表す複数個の第2のタグストア: 第2のタグストアとストアパイプと制御ロジックに接続する第2の比較ロジッ クであってストアパイプによって完遂されるストアオペレーションに関する目標 ターゲットと第2のタグストアに表されるアドレスのいずれかとの整合に応答し て自己修飾コード表示を供給する第2の比較ロジック;より成り 制御ロジックが自己修飾コード表示に応答してオペレーションエントリの第2 のグループとオペレーションエントリの第1のグループの完遂されていないもの とをフラッシュする請求項1に記載の自己修飾コード処理装置。 5.オペレーションエントリの第1のグループはスケジューラに表されるOpグ ループに編成されたOpエントリの複数個より成り、 第1のタグストアは各々それから関連するOpのグループのOpのエントリが 復号する命令のグループのためのメモリアド レスを対象とする一対のタグフィールドを含み、タグフィールドの対は命令のグ ループがキャッシュライン境界と交差するときにキャッシュライン境界のそれぞ れの側にてメモリアドレスを対象とし; オペレーションエントリの第2のグループは命令デコーダ内の命令バッファと して編成された命令エントリの複数個より成り、各命令バッファエントリはキャ ッシュラインに符合し; 第2のアドレスはキャッシュラインを対象とする請求項4に記載の自己修飾コ ード処理装置。 6.第1及び第2のアドレスは部分的アドレスであり、 第1の比較ロジックはタグフィールドに表される部分的アドレスのいずれかと 目標アドレスの符合する部分との間の整合に応答して自己修飾コード表示を供給 し、 第2の比較ロジックは第2のタグストアに表された部分的アドレスのいずれか と目標アドレスの符合する部分との間の整合に応答して自己修飾コード表示を供 給する請求項5に記載の自己修飾コード処理装置。 7.更に、ストアパイプに接続され連続ストアオペレーションのために目標アド レスを受け取るアドレスストアであってメモリサブシステムからのストア肯定応 答に応答してクリアされるアドレスストア;及び アドレスストアに接続された取り出し制御ロジックであって現取り出しアドレ スとアドレスストアに格納された目標アドレスの間の整合に応答して現取り出し アドレスからの命令取り出しを無効にする取り出し制御ロジックより成る請求項 2に記載の自己修飾コード処理装置。 8.更に、命令デコーダとメモリサブシステムの間に接続された命令キャッシュ であってメモリサブシステムからのスヌープ信号を処理する一方命令デコーダか らの取り出しの処理を禁止する命令キャッシュ; ストアパイプとメモリサブシステムの間に接続されたデータキャッシュ; 及び 命令キャッシュとデータキャッシュの両者内でのキャッシュラインの同時的存 在を防止する命令/データキャッシュ制御ロジックより成る請求項7に記載の自 己修飾コード処理装置。 9.メモリサブシステム; 前記メモリサブシステムに接続した命令及びデータキャッシュ; データキャッシュに接続され(ストアOp)の結果をメモリサブシステムに完 遂するストアパイプであってStOp結果のコミットメントにStOp目標アド レス表示を供給するストアパイプを含む複数個の実行ユニット; 命令から復号されたOpsのためのOpエントリの指定された複数個及びその 命令のためのメモリアドレスを対象とする第1のアドレスタグの符合する複数個 を含むスケジューラ; ストアパイプと第1のアドレスタグに接続された第1の比較ロジックであって StOp目標アドレスと第1のアドレスタグの1つとの間の整合に応答して自己 修飾コードフォールト処理装置をトリッガするように接続された第1の比較ロジ ック; 命令キャッシュとスケジューラの間に接続された命令デコーダであって命令バ ッファエントリの複数個と命令バッファエン トリに関連した第2のアドレスタグを含む命令デコーダ;及び ストアパイプと第2のアドレスタグに接続された第2の比較ロジックであって StOp目標アドレスと第2のアドレスタグの1つとの間の整合に応答して自己 修飾コードフォールト処理装置をトリッガするように接続された第2の比較ロジ ックとより成る装置。 10.前記自己修飾コードフォールト処理装置が: 第1及び第2比較ロジック並びにスケジューラ及び命令デコーダに接続された 制御ロジックであって第1又は第2比較ロジックのいずれかからの自己修飾コー ドフォールト表示に応答してOpエントリからのOpの完遂されていないもの及 び命令バッファからの命令をフラッシュする制御ロジックより成る請求項9に記 載の装置。 11.前記自己修飾コードフォールト処理装置が更に: トリッガするStOpと同一の命令に関連したOpsを完遂する過程; トリッガするStOpのための命令ポインタを得る過程; メモリサブシステムによってトリッガされるStOpが応答されるまで待期す る過程;及び 命令ストリーム内においてトリッガするStOpに関連した命令に直ちに続い て命令にジャンプして戻る過程を遂行する自己修飾コードフォールト装置より成 る請求項10に記載の装置。 12.前記自己修飾コードフォールト処理装置が更に: ストアパイプに接続され連続StOpsのための目標アドレスを受け取るアド レスストアであってメモリサブシステムからのStOp肯定応答に応答してクリ アされるアドレスストア; 及び アドレスストアに接続され取り出しアドレスとアドレスストアに格納された目 標アドレスとの間の整合に応答して命令デコーダによって取り出しアドレスから の命令取り出しを無効にする取り出し制御ロジックより成る請求項10に記載の 装置。 13.実行ユニットの複数個と、スケジューラと、命令デコーダと、メモリサブ システムと該メモリサブシステムに各々接続された命令及びデータキャッシュを 含むコンピュータシステムにおいて: 実行ユニットの複数個は(ストアOp)の結果をメモリサブシステムに完遂す るためにデータキャッシュに接続したストアパイプを含み該ストアパイプはSt Op結果のコミットメントにStOp目標アドレス表示を供給し; スケジューラは命令から復号されたOpsのためのOpエントリの指定された 複数個及びその命令のためのメモリアドレスを対象とする第1のアドレスタグの 符合する複数個を含み; 第1の比較ロジックはストアパイプと第1のアドレスタグに接続され第1の比 較ロジックはStOp目標アドレスと第1のアドレスタグの1つとの間での整合 に応答して自己修飾コードフォールト処理装置をトリガするように接続され; 命令デコーダは命令キャッシュとスケジューラの間に接続され、該命令デコー ダは命令バッファエントリの複数個及び命令バッファエントリに関連した第2の アドレスタグを含み; 第2の比較ロジックはストアタイプと第2のアドレスタグに接続され、該第2 の比較ロジックはStOp目標アドレスと第2のアドレスタグの1つとの間の整 合に応答して自己修飾コー ドフォールト処理装置をトリガするように接続されていることを特徴とする自己 修飾コード処理装置。
JP51432797A 1995-10-06 1996-10-03 自己修飾コード処理装置 Expired - Lifetime JP3720370B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US506995P 1995-10-06 1995-10-06
US60/005,069 1995-10-06
US502195P 1995-10-10 1995-10-10
US60/005,021 1995-10-10
US08/592,150 US5826073A (en) 1995-10-06 1996-01-26 Self-modifying code handling system
US592,150 1996-01-26
PCT/US1996/015420 WO1997013198A1 (en) 1995-10-06 1996-10-03 Self-modifying code handling system

Publications (3)

Publication Number Publication Date
JP2001517333A true JP2001517333A (ja) 2001-10-02
JP2001517333A5 JP2001517333A5 (ja) 2004-12-09
JP3720370B2 JP3720370B2 (ja) 2005-11-24

Family

ID=27357779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51432797A Expired - Lifetime JP3720370B2 (ja) 1995-10-06 1996-10-03 自己修飾コード処理装置

Country Status (6)

Country Link
US (1) US5826073A (ja)
EP (1) EP0853785B1 (ja)
JP (1) JP3720370B2 (ja)
AU (1) AU7246396A (ja)
DE (1) DE69612991T2 (ja)
WO (1) WO1997013198A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758349A (en) * 1995-12-27 1998-05-26 International Business Machines Corporation Process and system for run-time inheritance and disinheritance of methods and data
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US6170055B1 (en) * 1997-11-03 2001-01-02 Iomega Corporation System for computer recovery using removable high capacity media
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6671665B1 (en) * 1999-02-19 2003-12-30 Texas Instruments Incorporated Emulation system with search and identification of optional emulation peripherals
US6850647B1 (en) * 1999-07-30 2005-02-01 Michael L. Gough System, method and article of manufacture for decompressing digital camera sensor data
JP3739607B2 (ja) * 1999-08-24 2006-01-25 富士通株式会社 情報処理装置
US6629175B1 (en) * 2000-04-14 2003-09-30 International Business Machines Corporation Efficient adapter context switching
US7360028B1 (en) * 2000-05-05 2008-04-15 Sun Microsystems, Inc. Explicit store-to-instruction-space instruction for self-modifying code and ensuring memory coherence between instruction cache and shared memory using a no-snoop protocol
EP1197855A3 (en) * 2000-07-27 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data processing control system
US20030093775A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Processing of self-modifying code under emulation
US6543034B1 (en) * 2001-11-30 2003-04-01 Koninklijke Philips Electronics N.V. Multi-environment testing with a responder
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
CA2418255A1 (en) * 2003-01-31 2004-07-31 Ibm Canada Limited - Ibm Canada Limitee Tracking and maintaining related and derivative code
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7711990B1 (en) * 2005-12-13 2010-05-04 Nvidia Corporation Apparatus and method for debugging a graphics processing unit in response to a debug instruction
US8516229B2 (en) * 2010-02-05 2013-08-20 International Business Machines Corporation Two pass test case generation using self-modifying instruction replacement
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9747212B2 (en) * 2013-03-15 2017-08-29 International Business Machines Corporation Virtual unifed instruction and data caches including storing program instructions and memory address in CAM indicated by store instruction containing bit directly indicating self modifying code
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
JP2017516228A (ja) * 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置
CN104951276B (zh) * 2015-06-24 2017-05-31 福州瑞芯微电子股份有限公司 一种芯片指令高速缓存失效的检测方法及系统
US9996329B2 (en) 2016-02-16 2018-06-12 Microsoft Technology Licensing, Llc Translating atomic read-modify-write accesses
US9986200B1 (en) * 2017-05-11 2018-05-29 Novatek Microelectronics Corp. Method and video conversion system of updating video setting

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0159712B1 (en) * 1984-04-27 1991-01-30 Bull HN Information Systems Inc. Control means in a digital computer
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5434987A (en) * 1993-09-21 1995-07-18 Intel Corporation Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store

Also Published As

Publication number Publication date
AU7246396A (en) 1997-04-28
EP0853785A1 (en) 1998-07-22
DE69612991T2 (de) 2002-01-17
DE69612991D1 (de) 2001-06-28
EP0853785B1 (en) 2001-05-23
WO1997013198A1 (en) 1997-04-10
US5826073A (en) 1998-10-20
JP3720370B2 (ja) 2005-11-24

Similar Documents

Publication Publication Date Title
JP2001517333A (ja) 自己修飾コード処理装置
JP3714961B2 (ja) ロード/ストアオペレーションのout−of−order実行の制御
US5913049A (en) Multi-stream complex instruction set microprocessor
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
US6880073B2 (en) Speculative execution of instructions and processes before completion of preceding barrier operations
US6748518B1 (en) Multi-level multiprocessor speculation mechanism
KR100783828B1 (ko) 단일 스레드 프로그램의 암시적 멀티스레디드 실행을 행할수 있는 멀티스레디드 프로세서
US6609192B1 (en) System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6691220B1 (en) Multiprocessor speculation mechanism via a barrier speculation flag
US6256727B1 (en) Method and system for fetching noncontiguous instructions in a single clock cycle
EP0381444B1 (en) Branch prediction
US6963967B1 (en) System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
JP4578042B2 (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
US6625660B1 (en) Multiprocessor speculation mechanism for efficiently managing multiple barrier operations
US6606702B1 (en) Multiprocessor speculation mechanism with imprecise recycling of storage operations
JPH11510291A (ja) スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
JP2000515268A (ja) ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック
JP2005235233A (ja) コンピュータシステム
GB2287111A (en) Pipelined processing of instructions
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
US6725340B1 (en) Mechanism for folding storage barrier operations in a multiprocessor system
US6728873B1 (en) System and method for providing multiprocessor speculation within a speculative branch path
JP3546403B2 (ja) 順序外の実行を容易にする装置及び方法
JP3518510B2 (ja) リオーダバッファの管理方法及びプロセッサ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050708

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

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

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

Free format text: PAYMENT UNTIL: 20110916

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120916

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120916

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130916

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term