JP2001505327A - 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 - Google Patents

1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法

Info

Publication number
JP2001505327A
JP2001505327A JP50596398A JP50596398A JP2001505327A JP 2001505327 A JP2001505327 A JP 2001505327A JP 50596398 A JP50596398 A JP 50596398A JP 50596398 A JP50596398 A JP 50596398A JP 2001505327 A JP2001505327 A JP 2001505327A
Authority
JP
Japan
Prior art keywords
store
data
load
cache
instruction
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
JP50596398A
Other languages
English (en)
Other versions
JP3824657B2 (ja
Inventor
トラン,タング・エム
プリケット,ジェイムズ・ケイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2001505327A publication Critical patent/JP2001505327A/ja
Application granted granted Critical
Publication of JP3824657B2 publication Critical patent/JP3824657B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

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

Abstract

(57)【要約】 ロード/ストアユニットおよびデータキャッシュを有するデータメモリユニットが提供される。これは、ロード-op-ストア命令の一部であるストア命令を、データキャッシュへの1アクセスで実行することができるようにする。ロード/ストアユニットは、各バッファ記憶場所に対するウェイフィールドおよびチェックされたビットを有するロード/ストアバッファを有して構成される。ロード-op-ストア命令について、その命令のストア部分に関連するチェックされたビットは、その命令のロード部分がデータキャッシュにアクセスしかつそれにヒットした場合にセットされる。さらに、ストア部分に関連するウェイフィールドは、そのデータキャッシュの、ロード部分がヒットするウェイにセットされる。データキャッシュは、データキャッシュ内にストアされる各キャッシュラインに対するロッキングメカニズムを有して構成される。ロード-op-ストア命令のロード部分が実行されると、関連するラインは、ストア命令が実行されるまでそのラインがデータキャッシュ内に維持されるように、ロックされる。このようにして、ロード-op-ストア命令のストア部分は、そのデータキャッシュを確実にヒットするようにされる。したがってストアは、そのストアアドレスがデータキャッシュにヒットするかどうかを判定するために最初に読出サイクルを実行する必要なく、そのデータをデータキャッシュ内にストアすることが可能となる。

Description

【発明の詳細な説明】 1クロックサイクル内でデータをストアするよう構成された データメモリユニット、およびその動作方法 発明の背景 1.発明の分野 本発明は、スーパースカラマイクロプロセッサの分野に関し、より特定的には 、スーパースカラマイクロプロセッサ内のロード/ストアユニットおよびデータ キャッシュに関する。 2.関連技術の説明 スーパースカラマイクロプロセッサは、1クロックサイクル内で複数の命令を 同時に実行することにより、かつその設計に合致する可能な限り最も短いクロッ クサイクルを特定することによって、高性能を達成する。ここで使用する用語「 クロックサイクル」とは、その間にマイクロプロセッサのパイプライン段が所定 の機能を行なう、時間間隔を表わす。クロックサイクルの終端で、結果として得 られた値が次のパイプライン段に送られる。 スーパースカラマイクロプロセッサが1クロックサイクル当たり複数の命令を 実行しかつそのクロックサイクルが短いために、スーパースカラマイクロプロセ ッサに命令およびデータを提供するには、高帯域幅メモリシステム(すなわち、 短い時間期間に多数のバイトを提供することができるメモリシステム)が必要と される。高帯域幅のメモリシステムが使用されなければ、マイクロプロセッサは 命令またはデータが提供されるのを待ちながら多数のクロックサイクルを浪費す ることとなり、その後、受取った命令および/または受取ったデータに応じた命 令を比較的少数のクロックサイクルで実行することとなる。全体としての性能は したがって、多数のアイドルクロックサイクルによって劣化する。しかし、スー パースカラマイクロプロセッサは通常、ダイナミックランダムアクセスメモリ( DRAM)セルからなる大容量メインメモリとともにコンピュータシステム内に 構成される。DRAMセルは、現代のスーパースカラマイクロプロセッサのクロ ックサイクルよりもはるかに長いアクセスタイムによって特徴付けられる。また 、DRAMセルは典型的に、比較的細い出力バスを介して、ストアされたバイ トをスーパースカラマイクロプロセッサへと伝送する。したがって、DRAMセ ルが提供するのは、比較的長い時間期間で比較的少数のバイトを提供するメモリ システムであって、高帯域幅のメモリシステムを形成することはできない。 スーパースカラマイクロプロセッサは通常、命令およびデータを連続して提供 するのに十分な帯域幅を有するメモリシステムとともにコンピュータシステム内 に構成されることはないため、スーパースカラマイクロプロセッサはしばしば、 キャッシュとともに構成される。キャッシュとは、記憶場所の複数のブロックで あって、マイクロプロセッサと同じシリコン基板上に構成されるかまたはその近 辺に結合される。記憶場所のそれらブロックは、先にフェッチされた命令または データバイトを保持するのに使用される。これらのバイトはキャッシュから宛先 (レジスタまたは命令処理パイプライン)へと素早く転送することが可能である 。このとき通常1または2のクロックサイクルが必要とされるが、これは、DR AMメインメモリからバイトを転送するのに多数のクロックサイクルが必要とさ れるのとは対照的である。 キャッシュは、「アソシアティブ」構造へと構成され得る。アソシアティブ構 造においては、記憶場所のブロックは、行および列を有する二次元アレイとして アクセスされる。あるアドレスに存在するバイトを探すのにキャッシュをサーチ する場合、そのアドレスからの多数のビットがそのキャッシュへの「インデック ス」として使用される。このインデックスは、二次元アレイ内の特定の行を選択 する。したがって、インデックスに必要とされるアドレスビットの数は、キャッ シュ内に構成される行の数によって決定される。ある行の複数のブロック内にス トアされたバイトに関連するアドレスを調べて、その行内にストアされたいずれ かのアドレスが要求されたアドレスに一致するかどうかを判定する。一致が見つ かれば、そのアクセスは「ヒット」と呼ばれ、キャッシュが関連するバイトを提 供する。一致が発見されなければ、そのアクセスは「ミス」と呼ばれる。ミスが 検出されると、それらのバイトはメモリシステムからキャッシュ内へと転送され る。キャッシュ内にストアされたバイトに関連するアドレスもまたストアされる 。これらのストアされたアドレスは、「タグ」または「タグアドレス」と称され る。 ある行内に構成されたメモリのブロックは、その行の列を形成する。メモリの 各ブロックは「ウェイ(way)」と呼ばれ、複数のウェイが行を構成する。ウェ イは、ウェイ値をキャッシュに提供することによって選択される。ウェイ値は、 ある行についてタグを調べて、それらタグのうちの1つと要求されたアドレスと の間に一致を発見することによって決定される。1行当たり1ウェイで設計され たキャッシュは、「ダイレクトマップ方式のキャッシュ」と称される。ダイレク トマップ方式のキャッシュにおいては、タグを調べて、アクセスがヒットである かどうかを判定しなければならないが、このタグの検査は、どのバイトをキャッ シュの出力に転送するかを選択するのには必要とされない。 ダイレクトマップ方式のキャッシュもアソシアティブ方式のキャッシュも、高 い周波数(すなわち短いクロックサイクル)のスーパースカラマイクロプロセッ サにおいて使用される。どちらの種類のキャッシュについても、そのキャッシュ が単一ポートで構成されている場合には、1クロックサイクル内で1つの読出ま たは1つの書込を行なうことが可能である。キャッシュが複数ポートで構成され ている場合にも、通常はメモリの同じブロックの読出および書込を同じクロック サイクル内で行なうことはできない。キャッシュは、キャッシュアレイの大容量 および他の周知の特性により、通常は1つの読出または1つの書込を実行するの に1クロックサイクルの(すべてではないにしても)大半を必要とする、大型の 構造を有する。さらに、1クロックサイクル内にメモリの同じ場所の読出と書込 を行なうには、アレイを非常に大きくかつ遅くする必要があり、したがって、ク ロックサイクル時間およびスーパースカラマイクロプロセッサのシリコン領域に 多大な悪影響を及ぼす。 あるギャッシュのメモリ場所を同じクロックサイクル内で読出しかつ書込むこ とができないという要件のために、ストア命令を達成するのに2つのキャッシュ アクセスが必要となる。第1のキャッシュアクセスにおいては、キャッシュを読 出して、そのストア命令に関連するアドレスがヒットするかどうかが検査される 。もしアドレスがヒットすれば、第2のサイクルを使用してそのストアデータが キャッシュ内に書込まれる。もしアドレスがミスすれば、そのアドレスに関連す るバイトがキャッシュ内に転送される。バイトが転送された後、そのストア命令 は再びキャッシュにアクセスして、キャッシュ内にストアデータを書込む。少な く とも2つのキャッシュアクセスサイクルを必要とするストア命令の問題に対する 解決策が望まれる。 発明の概要 上述のような問題は、本発明に従ったロード/ストアユニットおよびデータキ ャッシュを用いるデータメモリユニットによって、大部分が解決される。ロード /ストアユニットは、各バッファ記憶場所につき1つのウェイフィールドおよび チェックされたビットを有するロード/ストアバッファで構成される。ロード-o p-ストア命令について、命令のロード部分がデータキャッシュにアクセスしかつ ヒットした場合に、その命令のストア部分をストアする記憶場所のチェックされ たビットがセットされる。また、記憶場所のウェイフィールドは、ロード部分が その中でヒットしたデータキャッシュのウェイにセットされる。データキャッシ ュは、データキャッシュ内にストアされた各キャッシュラインに対してロッキン グメカニズムを有するよう構成される。ロード-op-ストア命令のロード部分が実 行されると、関連するラインは、そのラインがストア命令が実行されるまでその データキャッシュ内に留まるようにロックされる。このようにして、ロード-op- ストア命令のストア部分は、そのストア部分に関連するウェイフィールドによっ て示されたウェイにおいて、確実にデータキャッシュをヒットするようになる。 このロード/ストアユニットおよびデータキャッシュは、ロード-op-ストア命 令のストア部分をデータキャッシュアクセスの2クロックサイクルからデータキ ャッシュアクセスの1クロックサイクルへと有利に低減することを可能にする。 このようなデータメモリユニットを用いるスーパースカラマイクロプロセッサの 性能は、ロード-op-ストア命令が実行される所与のクロックサイクルの組におい てより多くのデータキャッシュアクセスを可能にすることによって、改善するこ とが可能である。 概して、本発明はロード/ストアユニットおよびデータキャッシュを含むデー タメモリユニットに関する。ロード/ストアユニットは、ロードおよびストア命 令を実行するように構成され、かつ、未処理の(outstanding)ストア命令およ び関連するストアデータをストアするよう構成された第1の複数の記憶場所を含 む。上記複数の記憶場所の各々は、チェックされたビットをストアするよう構成 される。データキャッシュは、ロード/ストアユニットに結合されて、キャッシ ュラインをストアするよう構成された第2の複数の記憶場所を含む。データキャ ッシュは上記第2の複数の記憶場所内にストアされたキャッシュラインをロック して、それにより、キャッシュラインが少なくともロックがリリースされるクロ ックサイクルまでは上記複数の記憶場所内にストアされたままとなるように構成 される。 本発明はさらに、データキャッシュがストアデータに関連するアドレスにヒッ トするかどうかを最初にチェックする必要なく、データキャッシュ内にストアデ ータをストアするための方法に関する。この方法は、そのストアデータに関連す るチェックされたビットがその間にセットされる第1のクロックサイクル中に、 ストアデータをデータキャッシュ内にストアするステップを含む。 図面の簡単な説明 本発明の他の目的および利点は、添付の図面を参照して以下の詳細な説明を読 むことによって明らかとなろう。図中: 図1は、本発明に従ったロード/ストアユニットおよびデータキャッシュを含 むスーパースカラマイクロプロセッサのブロック図である。 図2は、本発明に従ったロード/ストアバッファを含むロード/ストアユニッ トの、内部構成要素の一部を示す図である。 図3は、図2に示したロード/ストアバッファの記憶場所のビットフィールド を示す。 図4Aは、本発明に従ったデータキャッシュのタグエントリを示す。 図4Bは、図4Aに示したタグエントリを含むデータキャッシュタグアレイを 示し、これは、タグエントリのロックビットに対するクリアリングメカニズムを 含む。 本発明に関してはさまざまな修正例および変形例が考えられるが、本発明の特 定の実施例を例示の目的で図面に示しかつ以下に詳細に説明する。但し、それら 図面および詳細な説明は本発明をその開示した特定の形に限定することを意図す るものではなく、反対に、本発明は添付の請求の範囲で規定される本発明の精神 および範囲内に含まれるすべての修正例、等価物および変形例を網羅するもので ある。 発明の詳細な説明 ここで図1を参照して、本発明に従ったロード/ストアユニット222および データキャッシュ224を含むスーパースカラマイクロプロセッサ200のブロ ック図が示される。図1の実施例において示されるように、スーパースカラマイ クロプロセッサ200は、命令キャッシュ204に結合されたプリフェッチ/プ リデコードユニット202および分岐予測ユニット220を含む。命令整列ユニ ット206は、命令キャッシュ204と複数のデコードユニット208A〜20 8F(集合的にデコードユニット208と称される)に結合される。各デコード ユニット208A〜208Fは、それぞれのリザベーションステーションユニッ ト210A〜210F(集合的にリザベーションステーション210と称される )に結合され、各リザベーションステーション210A〜210Fは、それぞれ の機能ユニット212A〜212F(集合的に機能ユニット212と称される) に結合される。デコードユニット208、リザベーションステーション210、 および機能ユニット212はさらに、リオーダバッファ216、レジスタファイ ル218およびロード/ストアユニット222に結合される。最後に、データキ ャッシュ224はロード/ストアユニット222に結合するよう示され、MRO Mユニット209は命令整列ユニット206に結合するよう示される。 一般に、命令キャッシュ204は、命令がデコードユニット208にディスパ ッチされるのに先立ってそれら命令を一時的にストアするよう提供された高速の キャッシュメモリである。一実施例においては、命令キャッシュ204は、各々 が16バイト(ただし、各バイトは8ビットを含む)のラインで編成された、最 高32キロバイトの命令コードをキャッシュするよう構成されている。動作中、 命令コードはプリフェッチ/プリデコードユニット202を介してメインメモリ (図示せず)からコードをプリフェッチすることによって、命令キャッシュ20 4 に提供される。なお、命令キャッシュ204はセットアソシアティブ構成、フル アソシアティブ構成、またはダイレクトマップ構成として実装することが可能で ある。 プリフェッチ/プリデコードユニット202は、メインメモリから命令コード をプリフェッチして、命令キャッシュ204内にストアするよう提供される。一 実施例においては、プリフェッチ/プリデコードユニット202はメインメモリ から命令キャッシュ204内へと、64ビット幅のコードをバーストするよう構 成される。なお、プリフェッチ/プリデコードユニット202では、さまざまな 種類のコードプリフェッチ技術およびアルゴリズムが使用され得る。 プリフェッチ/プリデコードユニット202は、メインメモリから命令をプリ フェッチする際に、命令コードの各バイトに関連する以下の3つのプリデコード ビットを生成する。すなわち:開始ビット、終了ビット、および「機能」ビット である。プリデコードビットは、各命令の境界を示すタグを形成する。プリデコ ードタグもまた、所与の命令がデコードユニット208によって直接デコードす ることが可能であるか、または、命令がMROMユニット209によって制御さ れるマイクロコード手順を呼出すことによって実行されねばならないか等の、付 加的な情報を伝送することが可能である。これについては、以下により詳細に説 明する。 表1は、プリデコードタグのエンコードの1例を示す。表に示すように、所与 のバイトが命令の第1のバイトであった場合、そのバイトに対して開始ビットが セットされる。バイトが命令の最後のバイトであった場合、そのバイトに対して 終了ビットがセットされる。特定の命令がデコードユニット208によって直接 デコードすることが不可能な場合、命令の第1のバイトに関連する機能ビットが セットされる。これに対し、もし命令がデコードユニット208によって直接デ コードすることが可能である場合には、命令の第1のビットに関連する機能ビッ トはクリアされる。特定の命令の第2のビットに対する機能ビットは、オペレー ションコード(opcode)が第1のバイトである場合にクリアされ、opc odeが第2のバイトである場合にはセットされる。但し、opcodeが第2 のバイトである状況においては、第1のバイトはプレフィックスバイトである。 命令バイト数3〜8に対する機能ビット値は、そのバイトがMODRMもしくは SIBバイトであるか、または、そのバイトが変位データもしくは即値データを 含むかどうかを示す。 表1.開始ビット、終了ビット、および機能ビットのエンコード 上述のように、一実施例においては、x86命令セット内のある命令はデコー ドユニット208によって直接デコードすることが可能である。これらの命令は 、「高速経路(fast path)」命令と称される。x86命令セットにおける残り の命令は「MROM命令」と称される。MROM命令は、MROMユニット20 9を呼出すことによって実行される。より特定的には、MROM命令に出会うと 、MROMユニット209はその命令を構文解析しかつ規定された高速経路命令 のサブセットへと逐次化して、所望の動作を達成する。高速経路命令と分類され た例示的なx86命令、ならびに、高速経路命令およびMROM命令の双方を処 理する方法に関する説明は、さらに以下に提供される。 命令整列ユニット206は、命令キャッシュ204からの可変バイト長命令を 、デコードユニット208A〜208Fによって形成される固定の発行位置へと チャンネル分けするよう提供される。命令整列ユニット206は、命令キャッシ ュ204によって提供された命令バイトの3つのグループから、独立してかつ並 列に命令を選択し、それらのバイトを予備発行位置の3つのグループへと配列す る。発行位置の各グループは、命令バイトのそれら3つのグループのうち1つの グル ープに関連する。予備発行位置はその後合併されて、最終的な発行位置が形成さ れる。それらの各々は、デコードユニット208のうち1つのユニットに結合さ れる。 ロード/ストアユニット222およびデータキャッシュ224の詳細な説明を 続ける前に、図1に示す例示的なスーパースカラマイクロプロセッサ200内で 用いられる他のサブシステムに関する概観について説明する。図1に示した実施 例について、デコードユニット208の各々は、上に記載した予め定められた高 速経路命令を復号化するためのデコード回路を含む。さらに、各デコードユニッ ト208A〜208Fは変位データおよび即値データを、対応するリザベーショ ンステーションユニット210A〜210Fに経路付ける。デコードユニット2 08からの出力信号は、機能ユニットのためのビットコード化実行命令および、 オペランドアドレス情報、即値データおよび/または変位データを含む。 図1のスーパースカラマイクロプロセッサは追い越し実行を支持する。したが ってこのスーパースカラマイクロプロセッサは、リオーダバッファ216を用い てレジスタの読出および書込動作に関するオリジナルプログラムシーケンスの監 視を続けて、レジスタのリネームを行ない、投機的な命令の実行および分岐の誤 予測回復を可能にすることによって、精密な例外処理を容易にする。当業者には 理解されるように、リオーダバッファ216内の一時的な記憶場所は、レジスタ の更新に関連する命令のデコード時にリザーブされ、それにより、投機的なレジ スタ状態をストアする。リオーダバッファ216は先入れ先出し構成で実現され てもよく、ここで、投機的な結論はそれらが確証されかつレジスタファイルに書 込まれる間に、バッファの「最後部」へと移動し、したがって、バッファの「頭 部」には新しいエントリのために空きがつくられる。リオーダバッファ216は 他の特定の構成もまた可能であり、これをさらに以下に説明する。分岐予測が正 しくない場合、誤予測された経路に沿った投機的に実行された命令の結果は、そ れらがレジスタファイル218に書込まれるまでにバッファ内で無効とすること ができる。 デコードユニット208A〜208Fの出力に提供された即値データおよびビ ットコード化実行命令は、それぞれのリザベーションステーションユニット21 0A〜210Fに直接経路付けされる。一実施例においては、各リザベーション ステーションユニット210A〜210Fは対応する機能ユニットへの発行を待 つ最高3つの未決の(pending)命令について、命令情報(すなわち、ビットコ ード化実行ビットならびにオペランド値、オペランドタグおよび/または即値デ ータ)を保持することが可能である。但し、図1の実施例に関しては、各デコー ドユニット208A〜208Fは専用のリザベーションステーションユニット2 10A〜210Fに関連し、各リザベーションステーションユニット210A〜 210Fは同様に、専用の機能ユニット212A〜212Fに関連する。したが って、6つの専用の「発行位置」が、デコードユニット208、リザベーション ステーションユニット210および機能ユニットによって形成されることになる 。整列されかつデコードユニット208Aを介して発行位置0にディスパッチさ れた命令は、リザベーションステーションユニット210Aに渡されて、その後 、機能ユニット212Aに渡されて実行される。同様に、整列されかつデコード ユニット208Bにディスパッチされた命令は、リザベーションステーションユ ニット210Bにかつその後機能ユニット212Bに渡される、等である。 特定の命令のデコード時、もし要求されるオペランドがレジスタのロケーショ ンである場合、レジスタアドレス情報はリオーダバッファ216およびレジスタ ファイル218に同時に経路付けされる。当業者には、x86レジスタファイル が8個の32ビットリアルレジスタ(すなわち典型的に、EAX、EBX、EC X、EDX、EDP、ESI、EDIおよびESPと称される)を含むことが理 解されるであろう。リオーダバッファ216は、これらのレジスタの内容を変更 しかつしたがって追い越し実行を可能にする、結果のための一時的な記憶場所を 含む。リオーダバッファ216の一時的な記憶場所は、各命令についてリザーブ され、これがデコード時に、リアルレジスタのうち1つの内容を修正するよう決 定される。したがって、特定のプログラムの実行中さまざまな時点において、リ オーダバッファ216は所与のレジスタの投機的に実行された内容を含む、1ま たは複数の場所を有し得る。もし所与の命令のデコードに続いて、リオーダバッ ファ216が所与の命令内でオペランドとして使用されたレジスタに割当てられ た先行する1または複数の位置を有すると判定された場合、リオーダバッファ2 16は対応するリザベーションステーションを、1)最も新しく割当てられた場 所の値か、または2)その値が先行する命令を実際に実行する機能ユニットによ って未だ生成されていない場合には最も新しく割当てられた場所に対するタグに 送る。もしリオーダバッファが所与のレジスタに対してリザーブされた場所を有 する場合には、そのオペランド値(またはタグ)が、レジスタファイル218か らではなくリオーダバッファ216から提供される。リオーダバッファ216の 要求されるレジスタに対してリザーブされている場所がない場合には、その値は レジスタファイル218から直接とられる。もしオペランドがメモリ場所に対応 する場合、そのオペランド値はロード/ストアユニット222を介してリザベー ションステーションユニットに提供される。 最適なリオーダバッファの実現に関する詳細は、マイク・ジョンソン(Mike J ohnson)による「スーパースカラマイクロプロセッサの設計(“Superscalar Mi croprocessor Design”)」、Prentice-Hall,Englewood Cliffs,New Jersey, 1991内に、および、ウイット(witt)等によって1993年10月29日に出願 された、「高性能スーパースカラマイクロプロセッサ(“High Performance Sup erscalar Microprocessor”)」と題された、同時継続中の共通に譲渡された米 国特許出願連続番号第08/146,382号内に記載されている。これらの文 献はその全体が、ここに引用により援用される。 リザベーションステーションユニット210A〜210Fは、対応する機能ユ ニット212A〜212Fによって投機的に実行されるべき命令情報を一時的に ストアするよう提供される。上述のように、各リザベーションステーションユニ ット210A〜210Fは、最高3つの未決の命令に関して命令情報をストアす ることが可能である。6個のリザベーションステーション210A〜210Fの 各々は、対応する機能ユニットによって投機的に実行されるべきビットコード化 実行命令およびオペランドの値をストアする場所を有する。もし特定のオペラン ドが利用できない場合、そのオペランドに対するタグがリオーダバッファ216 から提供されて、その結果が生成されるまで(すなわち、先行する命令の実行の 完了まで)対応するリザベーションステーション内にストアされる。但し、機能 ユニット212A〜212Fのうち1つによって命令が実行されると、その命令 の結果はその命令を待ついずれかのリザベーションステーションユニット210 A〜210Fに直接渡され、同時にその結果はリオーダバッファ216を更新す るよう渡される(この技術は一般に、「結果前送り(result forwarding)」と 称される)。要求されるオペランドのいずれかの値が利用可能となった後に、命 令が機能ユニットに発行されて実行される。すなわち、もしリザベーションステ ーションユニット210A〜210Fのうち1つ内の未決の命令に関連するオペ ランドに、リオーダバッファ216内の先行する結果値の場所のタグが付けられ ており、これがその要求されるオペランドを修正する命令に対応している場合に は、その命令は、その先行する命令に対するオペランド結果が得られるまで、対 応の機能ユニット212には発行されない。したがって、命令が実行される順序 は、オリジナルのプログラム命令のシーケンスの順序と同じでない場合があり得 る。リオーダバッファ216は、リードアフタライト依存が生じる状況において も、データの一貫性が確実に保たれるようにする。 一実施例においては、機能ユニット212の各々は、加算および減算の整数算 術演算および、シフト、回転、論理演算、ならびに分岐演算を実行するよう構成 される。但し、浮動小数点演算に対処するために浮動小数点ユニット(図示せず) もまた用いられてもよい。 機能ユニット212の各々はまた、条件付き分岐命令の実行に関する情報を分 岐予測ユニット220に提供する。もし分岐予測が正しくない場合、分岐予測ユ ニット220は誤予測された分岐に続いて命令処理パイプラインに入った命令を フラッシュして、プリフェッチ/プリデコードユニット202が命令キャッシュ 204またはメインメモリから必要な命令をフェッチするようにする。但し、こ のような状況においては、オリジナルのプログラムシーケンス内の命令であって 誤予測された分岐命令の後に生じる結果は、投機的に実行されてロード/ストア ユニット222およびリオーダバッファ216内に一時的にストアされた結果を 含め、廃棄される。最適な分岐予測メカニズムの構成例は周知である。 機能ユニット212によって生成された結果は、レジスタ値が更新されていれ ばリオーダバッファ216に送られ、メモリ場所の内容が変更されていればロー ド/ストアユニット222に送られる。もしその結果がレジスタ内にストアされ るべきである場合には、リオーダバッファ216はその命令がデコードされた際 にレジスタの値に対してリザーブされていた場所にその結果をストアする。結果 は、上述のように、未決の命令が、要求されるオペランド値を得るために先行す る命令実行の結果を待っている場合には、リザベーションステーションユニット 210A〜210Fにも送られる。 一般的に、ロード/ストアユニット222は機能ユニット212A〜212F とデータキャッシュ224との間にインターフェイスを提供する。一実施例にお いては、ロード/ストアユニット222は未決のロードまたはストオのためのデ ータおよびアドレス情報に対して16個の記憶場所を備えたロード/ストアバッ ファを有して構成される。デコードユニット208は、ロード/ストアユニット 222へのアクセスを調停する。バッファが一杯である(full)場合、デコード ユニットはロード/ストアユニット222に未決のロードまたはストア要求情報 のための空きができるまで待たなければならない。機能ユニット212はロード /ストアユニット222に対してロード/ストア命令ならびに関連するアドレス およびデータ情報を提供する。ロード/ストアユニット222は、データキャッ シュ224にアクセスして、非投機的ロード/ストア命令がキャッシュをミスし た際にデータキャッシュ224がメインメモリからラインをフェッチするように することによって、ロード/ストア命令を実行する。ロード/ストアユニット2 22はロード命令に必要なデータをリオーダバッファ216に、および、そのデ ータを待っているであろうリザベーションステーション210に戻す。ストアデ ータはロード/ストアユニット222によってデータキャッシュ224内にスト アされる。ロード/ストアユニット222はまた、未決のストア命令に対するロ ード命令の依存性のチェックを行なって、確実にデータの一貫性が保たれるよう にする。 データキャッシュ224は、ロード/ストアユニット222とメインメモリサ ブシステムとの間で転送されるデータを一時的にストアするよう提供される、高 速のキャッシュメモリである。一実施例においては、データキャッシュ224は 32本のバイトラインを有する8個のウェイのセットアソシアティブ構造内に最 高で32キロバイトのデータをストアする容量を有する。但し、データキャッシ ュ224は、セットアソシアティブ構成を含む、さまざまな具体的なメモリ構成 で実現することが可能である。 ここで図2に移って、本発明の一実施例を用いるロード/ストアユニット22 2のいくつかの重要な構成要素を描いた図が示される。ロード/ストアユニット 222は、機能ユニット212に結合されてロード/ストア命令、アドレスおよ びデータ情報を提供するための入力バス250を有する。入力バス250は、情 報をロード/ストアバッファ251に伝達する。ロード/ストアバッファ251 は、未処理のロード/ストア命令に関連する情報をストアする。リクエストバス 253は、出力制御回路255の制御下、マルチプレクサ回路254によって選 択されたとおり、データキャッシュ224にロード/ストア要求を伝達する。デ ータキャッシュから戻るのがヒット/ウェイバス256であって、これはロード /ストアバッファ251に結合される。ヒット/ウェイバス56上で、ロード/ ストアユニット222はデータキャッシュ224のヒット/ミス情報およびウェ イ値を受取る。データキャッシュ224において、ヒットはリクエストバス25 3上で伝達されたリクエストについて検出される。リオーダバッファ216から のクリア信号ライン257は、ロード/ストアバッファ251に関連する回路を 制御するよう結合される。 通常、ロード/ストアユニット222はロードまたはストアメモリリクエスト を選択して、リクエストバス253上でデータキャッシュ224に伝送する。関 連するバッファ記憶場所内の「チェックされたビット」は、現時点におけるリク エストがデータキャッシュ224をヒットする場合にセットされる。チェックさ れたビットは、その命令が有効であってクリア信号ライン257にクリア信号が アサートされない限り、セットされたままである。また、現時点におけるリクエ ストアドレスがヒットするウェイを示すデータキャッシュ224からのウェイ値 は、ウェイフィールド内の関連するバッファ記憶場所内にストアされる。現時点 のリクエストに関連するキャッシュ情報で現時点のリクエストのロード/ストア バッファ記憶場所を更新するのは、以下の3つの目的のためである。すなわち: 1)データキャッシュをミスするロード命令を、そのミス情報で更新する、2) ストア命令を、書込がその間に発生する第2のサイクルアクセスのためのヒット およびウェイで更新する、および3)「ロード-op-ストア」命令の一部分である ストア命令を、関連するロード命令のウェイおよびヒット値で更新する。これに より、そのストアがデータキャッシュ224への1回のみのアクセスで実行でき るようになる。 ロード-op-ストア命令は、メモリ場所をソースおよびターゲットの双方として 使用する、x86命令である。換言すれば、ロード-op-ストア命令のオペランド のうち1つはメモリ場所であって、ロード-op-ストア命令の結果は、そのメモリ 場所内に記憶される。ロード-op-ストア命令は、スーパースカラマイクロプロセ ッサ200上で実行される際には、ロードおよびストア命令の双方としてロード /ストアユニット222にディスパッチされる。ここで、同じリオーダバッファ タグがそれら双方に関連する。ロードおよびストア命令は、ロード/ストアバッ ファ251内の同じ記憶場所に記憶される。キャッシュのヒットおよびウェイ情 報が、ロード-op-ストア命令のロード部分が実行される際にそのストア部分のた めに記録され、通常の2クロックサイクルストアアクセスの第1のクロックサイ クルを排除することが可能となる。ロード-op-ストア命令のロード部分の実行と ストア部分の実行との間のクロックサイクルにおいて、関連するデータキャッシ ュラインがそのデータキャッシュ内にストアされたままであることが重要である 。この機能は、以下により詳細に説明するロックビットの使用によって実現され る。 図2の実施例に示されるように、ロード/ストアバッファ251は、ロード/ ストア命令に関連する、リオーダバッファタグ(図2においてはTAGフィール ドと示される)と、チェックされたビット(Cフィールド)と、ウェイフィール ド(Wフィールド)とを含む、記憶場所の線形アレイである。一実施例において は、ロード/ストアバッファ251は16個の記憶場所で構成される。他の情報 は各ロード/ストアバッファエントリ内に記憶されるが、これは以下により詳細 に説明する。論理回路のブロックは各記憶場所に関連し、チェックされたビット を各クロックサイクルで更新する。 1エントリに関連する論理回路の実施例を、ANDゲート258、259およ び261、ならびにORゲート260として図2に示す。ロード/ストアバッフ ァ251内の各記憶場所について、同様の回路が作成される。ANDゲート26 1はリクエストバス253上のリクエストのバッファエントリをデコードする。 もしこのバッファエントリが論理回路のこのグループに関連するバッファエント リと合致する場合、これは更新が可能である。ANDゲート261の出力は、エ ントリが更新可能である場合にハイとなる。ANDゲート258は、ANDゲー ト261の出力およびキャッシュからのヒットビットを受ける。ANDゲート2 58はORゲート260への入力のうち1つを形成し、これが記憶場所内のチェ ックされたビットをセットまたはクリアする。したがって、もしこのバッファエ ントリが現時点においてデータキャッシュ224にアクセスしておりかつそのア クセスがヒットする場合に、ANDゲート258(かつしたがってORゲート2 60)の出力は論理1であり、チェックされたビットがセットされる。ANDゲ ート259は、チェックされたビットの現時点における状態およびリオーダバッ ファ216からのクリア信号ライン257を受ける。クリア信号ライン257上 で伝達されるクリア信号は、命令のフローを予測された経路から変更させるよう な例外、分岐誤予測または他の事象が起きる度に、リオーダバッファ216によ ってアサートされる。この種の事象が起こった場合、ロード/ストアバッファ内 の命令のうちいくつかをロード/ストアユニット222とリオーダバッファ21 6(図示せず)との間のメカニズムを介してキャンセルすることが必要となる場 合がある。したがって、チェックされたビットは、ロックビットがデータキャッ シュ224内でクリアされるために、ロード/ストアバッファ251内でクリア される(以下に詳細に説明する)。ANDゲート259はこのような機能を提供 する。チェックされたビットは、クリア信号がアサートされない限りセットされ たままであるが、アサートされた場合にはチェックされたビットはクリアされる 。 マルチプレクサ254および出力制御ユニット255は、所与のクロックサイ クルにおいてデータキャッシュ224へのアクセス要求を選択するのに使用され る。一実施例においては、最高2つのリクエストが各クロックサイクルで選択さ れる。本実施例においては、出力制御ユニット255はロード/ストアバッファ 251から動作を選択するのに、優先度方式を実行する。ここで、もはや投機的 ではないストア命令および、もはや投機的ではなくかつデータキャッシュをミス したロード命令には高い優先順位が与えられ、投機的であるロード命令には低い 優先順位が与えられる。但し、マルチプレクサ回路254が、リクエストバス2 53上に転送されるリクエストを生成する複数のマルチプレクサ回路として実装 されてもよい。リクエストバス253は、リクエストがロードタイプであれスト アタイプであれそのリクエストに関連する少なくともアドレスと、ウェイ値と、 チェックされたビットと、ストアリクエストのためのストアデータとを伝達する 。データキャッシュ224は、チェックされたビットがセットされていれば、関 連するウェイ値によって選択されかつリクエストアドレスによってインデックス されたキャッシュライン内にデータを記憶するよう構成される。もしチェックさ れたビットがセットされていない場合、データキャッシュ224はキャッシュの インデックスされたラインを読出して、そのリクエストアドレスに関してキャッ シュヒットをチェックする。一実施例においては、ロード-op-ストアビットはロ ードリクエストに対して伝達される(これについては以下に説明する)。 ロード/ストアバッファ251は、実施例によってそのエントリの数が変化し 得る。さらに、ロード/ストアバッファ251は、別個のロードバッファおよび ストアバッファとして構成されてもよく、この場合にはロードバッファはすべて のロード命令を記憶しかつストアバッファはすべてのストア命令を記憶する。さ らに、リクエストバス253上では1クロックサイクル当たり2つ以上のリクエ ストが転送されてもよい。 別の実施例においては、データキャッシュ224にアクセスするアドレスは、 ロード/ストアバッファ251内に記憶されたアドレスと比較される。この実施 例は、2サイクルアクセスを排除することが可能なストア命令がロード-op-スト ア命令のストア部分ではなくともよいという点において、先の実施例よりもより 一般的である。しかし、キャッシュのロッキングはより複雑である。アクセスさ れたキャッシュラインに関連するロックビットは、チェックされたビットがキャ ッシュアクセスによってセットされている場合にはセットされる必要がある。こ れは、ロードがロード-op-ストア命令の一部分であるという事実に基づいたロッ キングとは異なる。この実施例では通常、アクセスがその間に行なわれるクロッ クサイクルに続くクロックサイクル内で、キャッシュラインがロックされる。 ここで図3に移って、ロード/ストアバッファ251の一実施例について、ロ ード/ストアバッファ記憶場所内のビットフィールドの図が示される。フィール ド300は、その記憶場所のためのリオーダバッファタグと、セットされている 場合にその記憶場所が現時点において有効なロードまたはストア命令を記憶して いることを示す有効ビットを含む。フィールド301は、機能ユニット212に よって提供される、ロードまたはストア命令に関連するアドレスを記憶する。フ ィールド301にも有効ビットが含まれ、これはセットされている場合には、ア ドレスが有効であることを示す。出力制御ユニット255は、このアドレス有効 ビットがセットされるまでデータキャッシュ224にアクセスするためのロード /ストア命令を選択することはない。フィールド302は、ストア命令に関連す るデータおよび、セットされている場合にそのデータフィールドが有効であるこ とを示す有効ビットを含む。ビット303は上述のチェックされたビットであっ て、フィールド304は上に記載したウェイフィールドである。ビット305は 、セットされている場合にロード命令がロード-op-ストア命令のロード部分であ ることを示す、ロード命令のために使用されるビットである。このビットは、以 下に説明するように、関連するキャッシュラインに対してロックビットをセット すべきかどうかを判定するのに使用される。但し、ロード/ストアユニット22 2の種々の実施例によって、他のビットが記憶場所に付加されてもよい。たとえ ば、命令がデータキャッシュミスであることを示すミスビット、および、命令が ロード/ストアバッファ内の別の記憶場所に存在するストア命令に依存すること を示す依存ビット等が付加されてもよい。 ここで図4Aに移って、一実施例におけるデータキャッシュタグエントリ内の ビットフィールドの図が示される。タグエントリは、関連するキャッシュライン の状態を示す状態フィールド401を有して構成される。一実施例においては、 状態フィールド401は2ビット幅であって、キャッシュラインのためのMES I状態をエンコードする。当業者には理解されるように、MESI状態は、以下 の状態をエンコードする。すなわち:修正されたまたは「汚損(dirty)」状態、 この場合、キャッシュラインはメインメモリ内の関連するアドレスにストアされ た内容に対して修正されており、したがって、そのキャッシュラインはデータキ ャッシュ224から取除かれる際にメインメモリへと書き戻されなければならな い;排他状態、この場合、キャッシュラインはデータキャッシュ224内に記憶 され、スーパースカラマイクロプロセッサ200を有するシステム内に構成され た他のスーパースカラマイクロプロセッサ内にそのキャッシュラインの他のコピ ーが存在することはない;共有状態、この場合、キャッシュラインはデータキャ ッシュ224内に記憶されており、そのキャッシュラインの他のコピーが、スー パースカラマイクロプロセッサ200を有するシステム内に構成された他のスー パースカラマイクロプロセッサ内にストアされている可能性がある;および、無 効状態、これは、関連するキャッシュラインが有効ではなくその中にストアされ たバイトが使用されてはならないことを示す。 タグエントリのフィールド402は、エントリのタグを含む。上述のように、 タグとは、メインメモリからのどのバイトがキャッシュライン内に記憶されてい るかを一意に識別するアドレスの部分である。一実施例においては、フィールド 402は20ビット幅であって、キャッシュライン内に記憶されたバイトに関連 するアドレスの20個の最上位ビットを含む。ビット403は上述のロックビッ トである。ビット403がセットされている場合、関連のキャッシュラインは、 新しいギャッシュラインがメインメモリからフェッチされてもデータキャッシュ 224から取除くことはできない。代わりにその行内の別のキャッシュラインが 取除かれることになる。ロックビット403は、それに対応するロード-op-スト アビットセットを有するロード命令が関連のキャッシュラインにアクセスしてヒ ットすることがわかった際にセットされる。各タグエントリはロックビットを有 して構成されているため、データキャッシュタグアレイ404は同時に複数のキ ャッシュラインについてロックを維持することが可能である。ロックビット40 3は、ストア命令が関連のキャッシュラインに実行される場合、または、クリア 信号ライン257上で伝達されたクリア信号がリオーダバッファ216からアサ ートされた場合に、クリアされる(以下により詳細に説明する)。 特に注意を払うべきシナリオは、ロード-op-ストア命令のロード部分が、ロッ クビットがその中に既にセットされているキャッシュラインにアクセスする場合 である。ロックビットがセットされているということは、先行するロード-op-ス トア命令がそのロード部分でそのキャッシュラインにアクセスしたが、そのスト ア部分はまだ実行されていないことを示す。その先行するロード-op-ストア命令 のストア部分がキャッシュラインにストアされると、上述のようにロックビット はクリアされる。したがって、ロックビットは、現時点におけるロード-op-スト ア命令のストア部分がデータキャッシュ224にアクセスする前にクリアされ、 関連するラインはキャッシュから取除くことが可能となる。ロード/ストアユニ ット222内の依存性チェックは、ロード部分がキャッシュにアクセスすること を防ぐ(図5〜70に関連して以下により詳細に説明する)。ロードデータは代 わりに、ロード/ストアバッファ251によって提供される。一実施例において は、チェックされたビットは関連のストア部分に対してセットされることはない 。したがって、ロード-op-ストア命令のストア部分は、このシナリオを完成する のに2つのデータキャッシュアクセスを必要とする。別の実施例においては、チ ェックされたビットが関連のストア部分に対してセットされ、かつ、1ビットが そのストア命令のためにセットされる。これは、ロード部分のためのデータ、す なわち、それがデータキャッシュ224にアクセスする際にロックビットをリセ ットしてはならないことを示すデータを提供する。この実施例においては、双方 のストアがキャッシュへの単一のアクセス内で完了する。 ここで図4Bに移って、データキャッシュ224に関連するデータキャッシュ タグアレイ404がブロック図で示される。一実施例においては、データキャッ シュ224はセットアソシアティブ方式の8つのウェイであり、したがって、デ ータキャッシュタグアレイ404の各行が図4Aに示した種類の8つのエントリ を含む。キャッシュタグアレイ404はまた、クリア信号ライン257に結合さ れ、それにより、クリア信号がアサートされるクロックサイクル中に、データキ ャッシュタグアレイ404内の各ロックビットがクリアされるようにする。クリ ア信号は、リオーダバッファ216がロード-op-ストア命令がキャンセルされた ことを検出した際に、ロックビットがクリアされるようにする。キャンセルの理 由は一例として、ロード-op-ストア命令に先立った分岐命令の分岐誤予測、およ び、ロード-op-ストア命令に先立った命令に関連する例外、等を含む。このよう なキャンセルは、1クロックサイクル内で、ロード-op-ストア命令のロード部分 の実行とその命令のストア部分との間に生じ得る。もし、ロックビットがロード -op-ストア命令によってセットされ、その命令が後にキャンセルされた場合、ロ ックビットがクリアされなければ、そのラインはデータキャッシュ224内にい っまでも残ったままとなる(これは、ロックビットをクリアするようストア命令 がそのラインにストアされることがないためである)。したがって、ロード-op- ストア命令のロード部分の実行の後にその命令がキャンセルされた場合には、す べてのロックビットがクリアされる。上述のクリアが行われるときにキャンセル されなかったロード-op-ストア命令のストア部分がロード/ストアバッファ25 1(図2に示す)内に未だ存在する場合には、それらのストアはチェックされた ビットがクリアされており(ANDゲート259と共に図2に示す)、その実行 には2サイクルかかることになる。クリア信号がアサートされるようにする事象 はスーパースカラマイクロプロセッサ内では比較的稀であり、したがって、殆ど のロード-op-ストア命令は単一のサイクルストアの恩恵を被る。 なお、データキャッシュタグアレイ404は、データバイトを記憶するデータ キャッシュアレイ224の一部として実装されてもよく、または、物理的に別個 のアレイとして実装されてもよい。さらに、実施例によってデータキャッシュ2 24のアソシアティブ方式は異なる。データキャッシュ224がダイレクトマッ プ方式である実施例の場合、ロード/ストアバッファ251の記憶場所内のウェ イフィールドは使用されない場合がある。 以上の開示に従って、スーパースカラマイクロプロセッサのためのロード/ス トアユニットおよびデータキャッシュを説明した。ロード/ストアユニットとデ ータキャッシュとの組合せは、ロード-op-ストア命令のストア部分がデータキャ ッシュへの単一クロックサイクルのアクセスで実行することができるようにする 。これは、ストアによって典型的に関連のキャッシュラインをサーチするために およびデータをストアするためにそれぞれ使用される、2つのクロックサイクル とは対照的である。したがって、殆どのロード-op-ストア命令から1データキャ ッシュアクセスサイクルを取除くことによって、より高い性能が達成されるよう になる。 以上の開示が完全に理解されれば、当業者には種々の変形および修正例が明ら かとなろう。以下の請求の範囲は、そのようなすべての修正例および変形例を包 含するものと解釈されたい。
【手続補正書】特許法第184条の8第1項 【提出日】平成10年7月31日(1998.7.31) 【補正内容】 請求の範囲 1.ロードおよびストア命令を実行するよう構成されたロード/ストアユニット (222)を含み、前記ロード/ストアユニットは未処理のストア命令および関 連のストアデータをストアするよう構成された第1の複数の記憶場所(251) を含み、かつ前記複数の記憶場所の各々はさらにチェックされたビットをストア するよう構成され、さらに、 前記ロード/ストアユニットに結合されたデータキャッシュ(224)を含み 、前記データキャッシュはキャッシュラインをストアするよう構成された第2の 複数の記憶場所を含み、前記データキャッシュは前記第2の複数の記憶場所内に ストアされたキャッシュラインをロックするよう構成されて、それにより、少な くとも前記ロックがリリースされるクロックサイクルまで前記複数の記憶場所内 に前記キャッシュラインがストアされたままとなるようにし、かつ前記第1の複 数の記憶場所のうち1つ内にストアされた前記チェックされたビットは、ロード 命令が前記第1の記憶場所のうち前記1つ内にストアされたストア命令に関連す るアドレスと同じキャッシュラインにあるロードアドレスで前記データキャッシ ュにアクセスするときにセットされ、前記チェックされたビットは、前記ロード アドレスが前記データキャッシュにヒットすることがわかるとセットされる、デ ータメモリユニット。 2.前記データキャッシュはさらに、複数の前記キャッシュラインを同時にロッ クするよう構成される、請求項1に記載のデータメモリユニット。 3.前記ロード/ストアユニット内の前記第1の複数の記憶場所の各々はウェイ 値をストアするよう構成される、請求項1に記載のデータメモリユニット。 4.前記第1の複数の記憶場所のうち1つ内にストアされた前記ウェイ値は、ロ ード命令が前記第1の複数の記憶場所のうち前記1つ内にストアされたストア命 令に関連するアドレスと同じキャッシュライン内に存在するロードアドレスで前 記データキャッシュにアクセスするときに提供され、かつ前記ウェイ値は前記デ ータキャッシュの、前記ロードアドレスがその中でヒットすることがわかったウ ェイである、請求項3に記載のデータメモリユニット。 5.前記データキャッシュは、ロックされるべき前記キャッシュラインに関連す るロックビットをセットするよう構成される、前掲の請求項のいずれかに記載の データメモリユニット。 6.前記ロックビットは前記データキャッシュによってセットされ、かつ前記ロ ックビットは前記ロードアドレスが前記データキャッシュをヒットするとわかっ た場合にセットされる、請求項5に記載のデータメモリユニット。 7.前記ロックビットはロード-op-ストア命令がキャンセルされるとクリアされ る、請求項5または6に記載のデータメモリユニット。 8.前記チェックされたビットは、ロード-op-ストア命令がキャンセルされると クリアされる、請求項1に記載のデータメモリユニット。 9.前記データキャッシュはさらに、前記ストアデータに関連する前記チェック されたビットがセットされると、前記データキャッシュ内の前記第2の複数の記 憶場所内にストアされた受信用キャッシュライン内に前記ストアデータを転送す るよう構成され、前記受信用キャッシュラインは前記ストアデータに関連するア ドレスおよび前記アドレスに関連するウェイ値によって識別される、請求項1に 記載のデータメモリユニット。 10.前記ストアデータ、前記ストアデータに関連する前記アドレス、および前 記ウェイ値は前記ロード/ストアユニットによって提供され、前記ストアデータ 、前記ストアデータに関連する前記アドレス、および前記ウェイ値は前記ロード /ストアユニット内の前記第1の複数の記憶場所のうち1つ内にストアされる、 請求項9に記載のデータメモリユニット。 11.前記ロード/ストアバッファ内の前記第1の複数の記憶場所はさらに、前 記ロード/ストアユニット内の前記第1の複数の記憶場所が1つの統合されたロ ード/ストアバッファを形成するように、未処理のロード命令をストアするよう 構成される、請求項1に記載のデータメモリユニット。 12.ストアデータをデータキャッシュ内に、前記データキャッシュが前記スト アデータに関連するアドレス上でヒットするかどうかを最初に検査する必要なく 、ストアするための方法であって、前記方法は、チェックされたビットを前記ス トアデータに関連付けるステップと、前記チェックされたビットがセットされた 場合に前記ストアデータを前記データキャッシュ内にストアするステップと、前 記 ストアデータに関連する前記アドレスと同じキャッシュライン内にロードアドレ スを有するロード命令が前記データキャッシュにアクセスして前記データキャッ シュにヒットすることがわかるクロックサイクル中に、前記チェックされたビッ トをセットするステップと、前記クロックサイクル中に前記キャッシュラインに 関連するロックビットをセットするステップとを含む、方法。 13.前記クロックサイクル中に前記キャッシュラインに関連するウェイ値を前 記ストアデータに関連する記憶場所内にストアするステップをさらに含む、請求 項12に記載の方法。 14.ロード-op-ストアタイプの命令がその中でキャンセルされる後続のクロッ クサイクル中に、前記ロックビットをクリアするステップをさらに含む、請求項 12または13に記載の方法。 15.前記後続のクロックサイクル中に前記チェックビットをクリアするステッ プをさらに含む、請求項14に記載の方法。 16.ストア命令が前記キャッシュラインに対して実行されるクロックサイクル 中に、前記キャッシュラインに関連する前記ロックビットをクリアするステップ をさらに含む、請求項14に記載の方法。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 プリケット,ジェイムズ・ケイ アメリカ合衆国、78733 テキサス州、オ ースティン、シニック・ブラフ・ドライ ブ、9802 【要約の続き】 ストア部分は、そのデータキャッシュを確実にヒットす るようにされる。したがってストアは、そのストアアド レスがデータキャッシュにヒットするかどうかを判定す るために最初に読出サイクルを実行する必要なく、その データをデータキャッシュ内にストアすることが可能と なる。

Claims (1)

  1. 【特許請求の範囲】 1.ロードおよびストア命令を実行するよう構成されたロード/ストアユニット を含み、前記ロード/ストアユニットは未処理のストア命令および関連のストア データをストアするよう構成された第1の複数の記憶場所を含み、前記複数の記 憶場所の各々はさらにチェックされたビットをストアするよう構成され、さらに 、 前記ロード/ストアユニットに結合されたデータキャッシュを含み、前記デー タキャッシュはキャッシュラインをストアするよう構成された第2の複数の記憶 場所を含み、かつ前記データキャッシュは前記第2の複数の記憶場所内にストア されたキャッシュラインをロックするよう構成され、それにより、少なくとも前 記ロックがリリースされるクロックサイクルまで前記複数の記憶場所内に前記キ ャッシュラインがストアされたままとなるようにする、データメモリユニット。 2.前記データキャッシュはさらに、複数の前記キャッシュラインを同時にロッ クするよう構成される、請求項1に記載のデータメモリユニット。 3.前記ロード/ストアユニット内の前記第1の複数の記憶場所の各々はウェイ 値をストアするよう構成される、請求項1に記載のデータメモリユニット。 4.前記第1の複数の記憶場所のうち1つ内にストアされた前記ウェイ値は、ロ ード命令が前記第1の複数の記憶場所のうち前記1つ内にストアされたストア命 令に関連するアドレスと同じキャッシュライン内に存在するロードアドレスで前 記データキャッシュにアクセスする第1のクロックサイクル中に提供され、かつ 前記ウェイ値は前記データキャッシュの、前記ロードアドレスがその中でヒット することが発見されたウェイである、請求項3に記載のデータメモリユニット。 5.前記第1の複数の記憶場所のうち1つ内にストアされた前記チェックされた ビットは、前記第1の複数の記憶場所のうち前記1つ内に記憶されたストア命令 に関連するアドレスと同じキャッシュライン内に存在するロードアドレスでロー ド命令が前記データキャッシュにアクセスする第1のクロックサイクル中に、前 記ロード/ストアユニットによってセットされ、かつ前記第1の複数の記憶場所 のうち前記1つ内にストアされた前記チェックされたビットは、前記ロードアド レスが前記データキャッシュをヒットすると発見された場合にセットされる、請 求項1に記載のデータメモリユニット。 6.前記データキャッシュは、ロックされるべき前記キャッシュラインに関連す るロックビットをセットするよう構成される、請求項1に記載のデータメモリユ ニット。 7.前記ロックビットは、ロード命令が前記ロード/ストアユニットの前記第1 の複数の記憶場所のうち1つ内にストアされたストア命令に関連するアドレスと 同じキャッシュライン内に存在するロードアドレスで前記データキャッシュにア クセスする第1のクロックサイクル中に前記データキャッシュによってセットさ れ、かつ前記ロードアドレスが前記データキャッシュをヒットするとわかった場 合に前記ロックビットはセットされる、請求項6に記載のデータメモリユニット 。 8.前記ロックビットはロード-op-ストア命令がその中でキャンセルされる第1 のクロックサイクル中にクリアされる、請求項6に記載のデータメモリユニット 。 9.前記ロード/ストアユニット内の前記第1の複数の記憶場所内にストアされ た前記チェックされたビットは、ロード-op-ストア命令がその中でキャンセルさ れる第1のクロックサイクル中にクリアされる、請求項1に記載のデータメモリ ユニット。 10.前記データキャッシュはさらに、前記ストアデータに関連する前記チェッ クされたビットがセットされる第1のクロックサイクル中に、前記データキャッ シュ内の前記第2の複数の記憶場所内にストアされた受信用キャッシュライン内 に前記ストアデータを転送するよう構成され、かつ前記受信用キャッシュライン は前記ストアデータに関連するアドレスおよび前記アドレスに関連するウェイ値 によって識別される、請求項1に記載のデータメモリユニット。 11.前記ストアデータ、前記ストアデータに関連する前記アドレス、および前 記ウェイ値は前記ロード/ストアユニットによって提供され、前記ストアデータ 、前記ストアデータに関連する前記アドレス、および前記ウェイ値は前記ロード /ストアユニット内の前記第1の複数の記憶場所のうち1つ内にストアされる、 請求項10に記載のデータメモリユニット。 12.前記ロード/ストアバッファ内の前記第1の複数の記憶場所はさらに、前 記ロード/ストアユニット内の前記第1の複数の記憶場所が1つの統合されたロ ード/ストアバッファを形成するように、未処理のロード命令をストアするよう 構成される、請求項1に記載のデータメモリユニット。 13.ストアデータに関連するアドレス上のヒットについてデータキャッシュを 最初に検査する必要なく、前記データキャッシュ内に前記ストアデータをストア するための方法であって、前記ストアデータに関連するチェックされたビットが その中でセットされる第1のクロックサイクル中に前記ストアデータを前記デー タキャッシュ内にストアするステップを含む、方法。 14.前記ストアデータに関連する前記アドレスと同じキャッシュライン内にロ ードアドレスを有するロード命令が前記データキャッシュにアクセスして前記デ ータキャッシュにヒットすることが発見される第2のクロックサイクル中に、前 記チェックビットをセットするステップをさらに含む、請求項13に記載の方法 。 15.前記キャッシュラインに関連するウェイ値を前記第2のクロックサイクル 中に前記ストアデータに関連する記憶場所内にストアするステップをさらに含む 、請求項14に記載の方法。 16.前記第2のクロックサイクル中に前記キャッシュラインに関連するロック ビットをセットするステップをさらに含む、請求項14に記載の方法。 17.ロード-op-ストアタイプの命令がその中でキャンセルされる第3のクロッ クサイクル中に、前記ロックビットをクリアするステップをさらに含む、請求項 16に記載の方法。 18.前記第3のクロックサイクル中に前記チェックビットをクリアするステッ プをさらに含む、請求項17に記載の方法。 19.ストア命令が前記キャッシュラインに対して実行される第4のクロックサ イクル中に、前記キャッシュラインに関連する前記ロックビットをクリアするス テップをさらに含む、請求項17に記載の方法。
JP50596398A 1996-07-16 1996-07-16 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 Expired - Fee Related JP3824657B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1996/011988 WO1998002818A1 (en) 1996-07-16 1996-07-16 A data memory unit configured to store data in one clock cycle and method for operating same

Publications (2)

Publication Number Publication Date
JP2001505327A true JP2001505327A (ja) 2001-04-17
JP3824657B2 JP3824657B2 (ja) 2006-09-20

Family

ID=22255488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50596398A Expired - Fee Related JP3824657B2 (ja) 1996-07-16 1996-07-16 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法

Country Status (4)

Country Link
EP (1) EP1005675B1 (ja)
JP (1) JP3824657B2 (ja)
DE (1) DE69636822T2 (ja)
WO (1) WO1998002818A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495272B2 (en) * 2006-11-29 2013-07-23 International Business Machines Corporation Method to save bus switching power and reduce noise in an engineered bus

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
EP0459233A3 (en) * 1990-05-29 1992-04-08 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JPH07334428A (ja) * 1994-06-14 1995-12-22 Toshiba Corp キャッシュメモリ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法

Also Published As

Publication number Publication date
DE69636822D1 (de) 2007-02-15
WO1998002818A1 (en) 1998-01-22
DE69636822T2 (de) 2007-10-04
EP1005675B1 (en) 2007-01-03
JP3824657B2 (ja) 2006-09-20
EP1005675A1 (en) 2000-06-07

Similar Documents

Publication Publication Date Title
US5761712A (en) Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5802588A (en) Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US6230260B1 (en) Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
EP0380859B1 (en) Method of preprocessing multiple instructions
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US6519682B2 (en) Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US6216206B1 (en) Trace victim cache
US5249286A (en) Selectively locking memory locations within a microprocessor's on-chip cache
US5870599A (en) Computer system employing streaming buffer for instruction preetching
US8984261B2 (en) Store data forwarding with no memory model restrictions
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
KR20010075258A (ko) 간접 분기 목적지 산출 방법
JPS5991546A (ja) 中央処理装置
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US5893146A (en) Cache structure having a reduced tag comparison to enable data transfer from said cache
US5737749A (en) Method and system for dynamically sharing cache capacity in a microprocessor
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5951671A (en) Sharing instruction predecode information in a multiprocessor system
JP3732234B2 (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
JP3824657B2 (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
JPH02214937A (ja) データ処理装置
WO1998020421A1 (en) A way prediction structure
EP0912929B1 (en) A data address prediction structure and a method for operating the same
EP0912926B1 (en) Unified load/store unit for a superscalar microprocessor and method of operating the same

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050920

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060317

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060628

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100707

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110707

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350