JP3875738B2 - ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 - Google Patents

ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 Download PDF

Info

Publication number
JP3875738B2
JP3875738B2 JP02797396A JP2797396A JP3875738B2 JP 3875738 B2 JP3875738 B2 JP 3875738B2 JP 02797396 A JP02797396 A JP 02797396A JP 2797396 A JP2797396 A JP 2797396A JP 3875738 B2 JP3875738 B2 JP 3875738B2
Authority
JP
Japan
Prior art keywords
load
cache
load instruction
access
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.)
Expired - Lifetime
Application number
JP02797396A
Other languages
English (en)
Other versions
JPH08272682A (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08272682A publication Critical patent/JPH08272682A/ja
Application granted granted Critical
Publication of JP3875738B2 publication Critical patent/JP3875738B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main 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)

Description

【0001】
【発明の属する技術分野】
本発明はプロセッサのロード/ストア・ユニットに係わる。詳しくは、ロード・バッファ及びキャッシュの維持管理に関する。
【0002】
【従来の技術】
RISCとは縮小命令セット・コンピュータのことをいう。通常、RISCプロセッサは従来のCISC(複合命令セット・コンピュータ)プロセッサよりも命令数が少ない。使用命令数が少ないため、RISC技術を用いることにより、RISCプロセッサのコンパイラを書き込むタスクが少なくともある程度、簡略化される。更に、最大動作周波数を制限する使用頻度の低い複雑な命令よりも、むしろ使用頻度の高い重要な命令を実行し、かつ最適化することについて焦点を当ててプロセッサのデザインを行うことができる。こうした理由及びその他の理由により、ワーク・ステーション、更には末端のコンピュータ製造業者の間ではRISCプロセッサが好評である。
【0003】
一般的に、RISCプロセッサではメモリに実際にアクセスする命令は非常に少ない。実際に実現されたものでは、メモリにアクセスするLOAD及びSTORE という2つの命令のみを有するものがある。通常、並行処理により同期及びメモリ更新を行うプロセッサによって、多少特殊な「アトミック」("atomic")オペレーションが支援される。ピーティーアール・プレンティス・ホール社(PTR Prentice Hall )発行、スパーク・インターナショナル社(SPARC International, Inc. )、ディー.エル.ウィーバー(D. L. Weaver)及びティー.ガーモンド(T. Germond)編、「スパーク アーキテクチャ説明書 バージョン9(The SPARC Architecture Manual, Version 9)」、1994年、第17頁を参照されたい。このような場合であっても、LOAD及びSTORは最も使用頻度の高いメモリ・アクセス命令である。LOAD命令を実行することにより、プロセッサのレジスタにはメイン・メモリ・アドレスに存在するデータが書き込まれる。STORE 命令を実行することにより、メイン・メモリ・アドレスにはプロセッサのレジスタに存在するデータが書き込まれる。従って、LOAD及びSTORE 命令はオペランドとしてレジスタ(1つ又は複数個)及び1つのメモリ・アドレスを指定する必要がある。幾つかの装置では、メモリ・アドレスを演算するために2つ若しくは1つのレジスタ及び1つの即値が用いられているものがある。多くの装置では、1つの命令を用いて1ワード以上のデータを転送する数種類のLOAD及びSTORE を備えるため、2つ以上のソース・レジスタ又は宛先レジスタが存在することがある。また、これらのソース・レジスタ又は宛先レジスタはそれぞれSTORE 命令又はLOAD命令においてオペランドとして指定される。
【0004】
図1はスーパースカラ・プロセッサ12を示す。スーパースカラ・プロセッサ12はいくつかの並行機能ユニット10,11を有している。通常のスーパースカラ装置では浮動小数点、整数、分岐及びロード/ストアの機能ユニットを備えている。従って、4つの命令まで並行して実行することができる。また、大部分のスーパースカラ・プロセッサは、少なくともある程度はパイプライン化されている。パイプライン化により命令はステージ内にて処理されるため、1つの命令の処理が完了するまでに数クロック・サイクルを要する。しかしながら、パイプライン化されたプロセッサのアーキテクチャでは、各ステージにて命令を常に処理しているため、複数の命令を同時に処理することができる。
【0005】
図2は、ロード/ストア・ユニット10の概略を示すブロック図である。ロード/ストア機能ユニット10の総処理量を最大にすべく、ロード・バッファ20が設けられている。そのため、即座にサービスされることのないLOADであっても、ディスパッチされ得る。また、LOADはプロセッサ12の演算を停止させることなく、サービス待ち可能である。ロード・バッファ20は先入れ先出し(FIFO)待ち行列であり、LOADのソース・メモリ及び宛先レジスタを保持している。LOADの待ち行列を保持することにより、現在のLOADの演算が完了後、即座に別のLOADの演算を行えることから、LOAD及びSTORE 命令が用いるメモリ資源の利用が最大化される。
【0006】
キャッシングは、多層メモリ・システムを用いて参照する記憶位置を利用するための一般的な技術である。基本的な考えは少量の高速アクセス・メモリと、多量の低速アクセス・メモリとを編成することにより、ほとんどのアクセスが少量の高速メモリに対して行われる。そのようなメモリ・システムの平均アクセス時間は、少量の高速メモリの有効記憶容量が多量のメモリのそれと同一であるものよりも僅かに優れている。
【0007】
多層メモリ・システムの一般的な形態はキャッシュ・メモリ、即ち索引バッファ・メモリである。キャッシュ・メモリはプロセッサ12とメイン・メモリとの間に配置された比較的小さな特殊メモリ装置である。キャッシュ・メモリは、プロセッサ12によってアクセスされそうなメモリからコピーされたワードを保持している。キャッシュはメイン・メモリより高速であるため、アクセス頻度の高い記憶位置がキャッシュ内で見つかれば、ヒット率が高くなるとともに、メモリ・アクセスの平均時間は短くなる。キャッシュにより実行される方法は、プロセッサによって最近使用された他のワードの近くに位置するところのワードを保持することである。この方法により利用される局所参照とは、短時間のうちにメモリの小さな領域に群れをなすようにアクセスするメモリ・アクセスの傾向をいう。
【0008】
キャッシュの記憶位置は冗長である。それは各記憶位置がより低速のメイン・メモリにも格納された情報のコピーに対して、更にアクセスし易くするように用いられるという意味からである。このため、キャッシュの存在によりアドレス可能な全記憶容量は、プログラマが見てとれるように増加するわけではない。むしろ、平易なプログラム方法において、キャッシュは同一のアドレス空間内に存在する記憶位置への平均アクセス時間を改善する。
【0009】
キャッシュはメイン・メモリよりもかなり小型であるため、いつでもキャッシュされ得るのはメイン・メモリの記憶位置の少量のみである。従って、一般的にキャッシュ内に存在する各記憶位置、即ちキャッシュ・ラインは概念的に、タグ・フィールド及び内容フィールドという2つの部分を有する。読み出し又は書き込み動作が要求されるとき、指定されたアドレスはキャッシュ内の一定のラインのタグ・フィールドと比較される。その比較により整合が生じれば、整合しているタグを含むキャッシュ・ラインの内容フィールドが読み出し又は書き込まれる。メイン・メモリにアクセスする必要はない。これはキャッシュ・ヒットとして知られている。
【0010】
図2に示すロード/ストア・ユニットは全てのLOAD命令を実行するとともに、一般的にメモリとの間の全てのインターフェイスの役割を担う。同図に示すように、ロード/ストア・ユニットは集積回路上の内部の1次キャッシュ24を管理する。ロード/ストア・ユニットは、メモリ管理ユニット26に接続された外部の2次キャッシュ25との調整を行う。1次キャッシュ24は、ダイレクト・マッピングされたキャッシュである。それは、キャッシュされる記憶位置のアドレスをキャッシュ内の指定された記憶位置へマッピングするものである。
【0011】
ロード・バッファ20の背後にある理論は、内部キャッシュ24に格納するには大きすぎるワーキング・セット(working set )を有するコードに対して、LOAD命令とその後続使用とが外部キャッシュ25の待ち時間を少なくとも充分に補うほど長く分離され得ることである。このように、データを即座に返還することが不可能なLOADはパイプラインを機能停止させるのではなく、データを返還することが可能になるまで緩衝処理されるという点で、ロード・バッファ20はロード/ストア・ユニット10(図1に示す)及び他の機能ユニットが幾分か切り離されることを許容する。即ち、この典型的な例は、LOADが集積回路上の内部キャッシュ24にミスし、外部キャッシュ26にアクセスせねばならない場合である。この場合、LOADはロード・バッファ20内に配置され、実行パイプラインはロードされているレジスタを必要とするまで、換言すれば「使用」命令に遭遇するまで動作し続ける。
【0012】
図3は非連想又はダイレクト・マッピングされたキャッシュ30を示す。ダイレクト・マッピングされたキャッシュ30は、ヒットしたかを調べるためにキャッシュ30内のアドレスを指定することにより、入力メモリ・アドレス32の下位ビット31を用いる。これらのビット31はキャッシュ30内の指標と呼ばれる。このため、記憶位置Aはキャッシュ・ライン33内のみに存在でき、キャッシュ内にあるライン33のアドレス32は、Aのアドレスの下位kビットである。キャッシュ30中の1つのライン33内のみでキャッシュされるメモリ・アドレス32が非常に拘束されることを許容すれば、連想メモリよりも安価で高密度なランダム・アクセス・メモリ(RAM)を使用できる。ダイレクト・マッピングされるキャッシュ30の他の重要で魅力的な特徴は、それがより簡素であるとともに、より少ない回路構成しか必要としないことを考慮すれば、より高速に動作する傾向にあることである。しかしながら、キャッシュ・ライン33の拘束により、同一のk個の下位アドレス・ビット31を共有する記憶位置は、また同一のキャッシュ・ライン33を共有することが必要になる。各キャッシュ・ライン33が、ある記憶位置の内容を記憶するためのみに備えられる場合、同一の下位kのアドレス・ビット31を有する2つの記憶位置は同一のキャッシュ・ライン33に対して競合するため、同時にキャッシュされ得ない。各キャッシュ・ライン33内において、データ34はタグ35と共に格納される。単純にアドレスを指定する目的では、タグ35のほんの少数のみが、キャッシュ・ライン33内に格納された記憶位置の上位のアドレス・ビット36となる。キャッシュ・ヒットが起きたか否かを確定するために、入力メモリ・アドレス32の上位のアドレス・ビット36が、入力されたメモリ・アドレス32の下位のアドレス・ビット31によってマッピングされた記憶位置内に格納されたタグ35と比較される。下位ビット31によって指標付けされたキャッシュ・ライン33内に格納されたタグ35が、入力されたメモリ・アドレスの上位ビット36と一致していれば、それはキャッシュ・ヒットである。
【0013】
図4に示すように、内部キャッシュ40はデータメモリ41及びタグメモリ42という2つの別々のメモリを備える。概念的に、その挙動は図3に示すキャッシュ30のそれと丁度同じである。これはデータ41及びタグ42の両方の部位が同様の方法で指標付けされるとともに、同じ数のラインを有するためである。データ・アレイ41内の各データラインは、タグ・アレイ42と対応する位置に対応タグを有している。
【0014】
図2を再度参照すると、ロード・データが外部キャッシュ25から返還されるとき、そのデータは内部キャッシュ24に書き込まれる。この置き換え方法の背後にある原理は、最近使用されたデータは近い将来において再び使用される傾向にあるということである。内部キャッシュ24に書き込むということは、両データRAM41及びタグRAM42(共に図4に示す)内の適切なラインを置き換えることを意味する。
【0015】
LOADがディスパッチされたとき、ロード/ストア・ユニット10(図1に示す)は指定された記憶位置が内部キャッシュ24内にあるかどうかを調べる。ヒットが起きたか否かを確定するために、適切なタグがタグRAM42(図4に示す)から検索されるとともに、要求された記憶位置に対するアドレスの適切な部分と比較される。これらのタグを検索している間、内部キャッシュ24にミスした古いLOAD命令はデータ及びタグ情報を返還する。大部分のキャッシュ24の置き換え方法は、キャッシュ24内にて最も新たに参照したデータを必要とするため、内部キャッシュ24は前回のミスによって返還されたデータ及びタグを保持するために更新されなければならない。そのため、同一の記憶位置が再び要求されると、それらの記憶位置は内部キャッシュ24をヒットする。外部キャッシュ25への待ち時間がゼロではなく、ロード・バッファ20は外部キャッシュ25にアクセスすべきLOADのサービスを遅らせる傾向にあるため、LOADがロード・バッファ内に配置されて数サイクル後に、外部キャッシュ25からデータが返還される。古いLOADが外部キャッシュ25からデータを返還しているのと同一のサイクルの間に新たなLOADがディスパッチされているなら、内部キャッシュ24のタグRAMのデータ・ポート43(図4に示す)に衝突が起きる。
【0016】
【発明が解決しようとする課題】
従来技術の問題は、1つでもLOADが内部キャッシュ24にミスすると、1サイクル当たりに1つというLOADの処理量が達成され得ないことである。コードの厳格なループは疑う余地なく1サイクル当たり1つのLOADを発行するため、たとえ全てのLOADが内部キャッシュ24にミスしたとしても、1サイクル当たり1つというLOADの処理量を維持することは重要である。ロード・バッファの待ち行列20の先頭にある別のLOADが、前回の内部キャッシュ24のミスにより内部キャッシュ24へデータを返還しているのと同一のサイクル中に、内部キャッシュ24に対するヒットを調べるため、新たにディスパッチされたLOADがタグRAMのポート43(図4に示す)へのアクセスが必要であるなら、そのサイクル中にそれらの内の1つのみが処理される。1サイクル当たり1つのLOADが発行されれば、タグRAMのデータ・ポート43(図4に示す)は、内部キャッシュ24に対するヒットを調べるため各サイクルの間に使用される。従って、ロード・バッファからの古いLOADは、返還されたロード・データを書き込むべくタグRAMにアクセスすることはできない。1サイクル当たり1つのLOADが発行されれば、入力されたLOADのうちの1つが内部キャッシュ24にミスする時、最終的にプロセッサは停止する。そして、その後の全てのLOADは、ロード・バッファ20内で待ち行列となる。ロード・バッファ20内のLOADはタグRAMのポート43(図4に示す)にアクセスできないことから、ロード・バッファ20は自身が保持する如何なるLOADに対しても首尾よくサービスできない。ロード・バッファ20内に充分な数のLOADが蓄積されて、ロード・バッファ20のメモリの空き領域がなくなることにより、そのサイクル中にLOADはディスパッチされ得ず、プロセッサ12(図1に示す)は次のサイクル中に停止する。
【0017】
この発明は前述した事情に鑑みてなされたものであって、その目的は、タグ・アレイ及びデータ・アレイを同時にアクセスできることを許容し、プロセッサを停止させることなく、そのプロセッサの1サイクル当たり1つのLOAD命令という処理量を維持することが可能な方法及び装置を提供することにある。
【0018】
【課題を解決するための手段】
以下の手段により、上記目的を達成するための方法及び装置が構成されている。
【0019】
プロセッサのロードストア・ユニットにおいて、各サイクル中にLOAD命令を含む命令ストリームを実行する際、プロセッサが停止することを防ぐために、1サイクル当たり1つのLOAD命令という処理量を維持することが望まれている。
【0020】
ロード・バッファはLOAD命令の待ち行列を形成することから、新たなLOAD命令がキャッシュ・ヒットであるかを調べるべくタグ・アレイにアクセスしている時、キャッシュにミスした古いLOAD命令に対するキャッシュのタグは後で返還する。従って、古い返還されたタグ及び新たなLOADは、キャッシュのタグ・アレイに対して競合する。本発明に基づき、新たなLOAD命令がキャッシュ・ヒットであるかを調べるべくタグ・アレイにアクセスしているのと同一のサイクル中に、返還されている古いLOAD命令のデータのミスによるタグ・アレイの同時アクセスをキャッシュの2重ポートのタグ・アレイは許容する。
【0021】
ロード/ストア・ユニットのキャッシュ内のデータ・アレイ・アクセスからタグ・アレイ・アクセスを切り離すための、ロード・バッファ内のヒット・ビットを演算しかつ管理するための方法及び装置により、新たにディスパッチされたLOADは古いLOADが全て処理されるまでロード・バッファ内の待ち行列で待機した後、その新たなLOADがキャッシュをヒットするか否かを確定する。このように、LOADがロード・バッファの待ち行列の先頭に届くとき、タグRAMは再びアクセスされる必要はない。
【0022】
ロード・バッファ中のデータ構造は、本発明の方法及び装置を容易にする。ロード・バッファのデータ・エントリは、LOAD命令を処理し、かつ緩衝されるべき今後のLOAD命令に対するヒット・ビットを演算するのに必要なヒット・ビット及び全ての情報を備えている。
【0023】
キャッシュのデータ・アレイ部及びタグ・アレイ部のアクセスが切り離されているLOAD命令をサービスするための方法及び装置は、LOADがタグ・アレイに再度アクセスすることなくロード・バッファ内にて遅延した後、データ・アレイの遅延アクセスを許容する。そのため、1サイクル当たり1つのLOADという処理量の持続が達成される。
【0024】
ロード・バッファ内における待ち行列の先頭にLOADが届き、そのLOADは1次キャッシュをミスする場合、かつロード・バッファ内の古い未決の各LOADがロード・バッファの待ち行列の先頭に届くとすぐに、1次キャッシュのヒットとなる場合、LOADがロード・バッファの待ち行列の先頭に届く前に、1次キャッシュをミスするであろうLOADに対する外部キャッシュへのアクセスが始まる。2次キャッシュのポインタはロード・バッファのエントリを参照する。そのエントリは外部キャッシュにアクセス可能な最も古い未決のLOAD命令を含む。従って、本発明に基づく方法及び装置は、ロード・バッファ内の2つの別々のLOADに対して、1次及び2次キャッシュへのアクセスが同時に起きることを許容する。
【0025】
【発明の実施の形態】
近年のプロセッサは、物理アドレス空間とは別の仮想アドレス空間を支援する。仮想アドレスは、プロセッサが記憶位置を指定するために用いるラベルである。プロセッサは、自身が仮想アドレスの記憶位置にアクセスできる限り、実際に記憶位置が物理メモリ内のどこに存在するかについては関与しない。プロセッサ・アーキテクチャの仕様により、支援されるべき一定の仮想アドレス空間が定義される。コンピュータ・システムを管理するオペレーティング・システムは、仮想アドレス空間からどのように物理メモリへマッピングされるのかに関して、柔軟性がある。従って、仮想アドレスから物理アドレスへの変換が必要となる。
【0026】
図5は、本発明に基づく機能ユニット50を示す概略的なブロック図である。ロード・バッファ54はタグRAM58、データRAM59及びメモリ管理ユニット56に接続されている。メモリ管理ユニット56はタグRAM58及びデータRAM59に接続されるとともに、両RAM58,59を管理する。内部キャッシュ51は、仮想的に指標付けされるとともに、物理的にタグ付けされている。仮想的に指標付けされたキャッシュでは、仮想アドレスの下位ビットはキャッシュ・ラインへのダイレクト・マッピング、即ち指標付けを提供するために使用される。これに対して、タグは物理アドレスの一部としての上位ビットである。従って、キャッシュ・ヒットが起きたか否かを確定するために、上位の物理アドレス・ビット52は、指標によって参照されるキャッシュ・ラインに対するタグ・フィールド内に格納されているタグ53と比較される。
【0027】
未決のLOADは順に実行されるべきである。LOADが命令ストリーム内に連続して存在するなら、それらのLOADが返還するデータは、命令ストリーム内に存在した順にレジスタファイルへ書き込まれるべきである。プログラマーがそれとは正反対の順に使用するする場合、LOADは間違った順に返還されることが許容されるのであれば、古いLOADにより新たなLOADの結果が消去されてしまう。LOADが内部キャッシュ51にミスする時、そのLOADはロード・バッファ54の中で待ち行列をなす。その次のサイクル中に、内部キャッシュ51内でヒットしたLOADはディスパッチされることがある。その結果、通常は検索が迅速に行われ、内部キャッシュ51からデータが返還されることになる。しかしながら、メモリ管理ユニット56を通じて第2キャッシュ・サブシステムとしての外部キャッシュ55又はメイン・メモリにアクセスすべき未決の古いLOAD命令が存在するため、新たなLOADはロード・バッファ54内で待ち行列をなす。そのため、未決のLOADが返還するまでそのLOADは返還されない。LOADが順にデータを返還すべき第2の理由、或いはより重要な理由は、ソフトウエアのトラップ及び割り込みが実行し難くなることから、LOADを間違った順に(アウト・オブ・オーダーで)実行するとロード/ストア・ユニットの複雑さを大幅に増大させてしまうことである。
【0028】
ソフトウエアのトラップ及び割り込みのような例外的な条件を取り扱うために、ロード・バッファ54内のLOADには最初にタグが付けられる。そのため、LOADはパイプライン化されたプロセッサの全てのステージを首尾よく通過することにより、そのLOADの実行が完了する。これよりも前に、例外的な条件が起きるなら、実行完了前の全てのLOADは消去されなければならないとともに、ロード・バッファ54は「1つリセット」("rewound" )する。
【0029】
ロード・バッファ54は順にデータをレジスタへ返還する。古いLOADが外部キャッシュ55へのアクセス待ちの状態であれば、内部キャッシュ51をヒットする新たなLOADをサービスする1つの方法は、新たなLOADに対するデータを検索するとともに、古いLOADがそのデータを返還するまでそのデータを緩衝することである。しかしながら、LOADが数ワードのデータを返還することがあり、かついくつかのLOADが緩衝される必要があるため、この選択を実施することは非常に高価なものとなる。この全てのロード・データを緩衝する必要がある領域は、広すぎるため実際この選択を実施することはできない。
【0030】
本発明に基づき、外部キャッシュ55から古いLOADが返還されるのを待つ間、新たなLOADからのロード・データを緩衝する代わりに、ロード・バッファ54は新たなLOADが内部キャッシュ51にヒットしたかミスしたかを記録し、それが内部キャッシュ51にヒットしたのであれば、その後に再び内部キャッシュ51をアクセスする。ヒット/ミスの確定に必要な唯一のメモリ・ポートは、内部キャッシュ51のタグ・ポート57である。従って、ロード・バッファ54が空でない時、パイプラインへ入力され新たにディスパッチされたLOADは、内部キャッシュ51のタグRAM58の一部のみにアクセスする。続いて、LOADがロード・バッファの待ち行列の先頭に来るとともに、内部キャッシュ51にヒットしたことが記録される時、それは内部キャッシュ51のデータ59の一部のみにアクセスすることから、タグRAM58を用いて新たにディスパッチされたLOADは影響を受けない。
【0031】
内部キャッシュ51を完全に更新するために、ロード・データが外部キャッシュ55から返還される時、両タグRAM58及びデータRAM59は書き込まれなければならない。ロード・バッファ54が空である場合、内部キャッシュ51のデータRAM59のポートは、内部キャッシュ51にミスした古いLOADに対して用いられる。その古いLOADは、外部キャッシュ55から返還されるとすぐに内部キャッシュ51を満たす(割り付ける)。しかしながら、タグ・ポート57はヒットしたかを調べるため、新たにディスパッチされたLOADにより使用されるので、そのポート57は使用できない。本発明に基づき、プロセッサ12(図1に示す)を停止させないようにすべく、かつ最適な性能を達成すべく、内部キャッシュ51のタグRAM58は第2ポート550を有する。そのポート550は主として、外部キャッシュ55にアクセスしたロード・バッファ54内の古いLOADから返還されたデータを有するタグRAM58を満たすために備えられている。従って、タグRAM58の第1ポート57は、内部キャッシュ51にヒットしたかを調べるべく新たにディスパッチされたLOADによって用いられ、タグRAM58の第2ポート550は、ロード・バッファ54内の古いLOADから返還された記憶位置のタグを有するタグRAM58を満たすべく同時に用いられる。
【0032】
また、第2タグRAMのポート550は、多層キャッシュ及び/又は多重処理を行う環境において便利である。キャッシュの一貫性を確実にする処理である「詮索」("snoops")は、命令の発行を停止することなくこのポート550を使用することができる。ロード・バッファ54が空であれば、その詮索により並行してサービスされ得る。ロード・バッファ54が空でなければ、LOADは記録されたヒットしたビットと共に、通常の待ち行列をなす。この場合、その詮索によりヒットしたこれらのビットが適切に影響を受けることを保証する特別な機構がある。
【0033】
本発明に基づき、ロード・バッファ54へ転送される各エントリは「ヒット・ビット」("hit bit" )60(図6に示す)を有する。そのビット60は、LOADが最初にロード/ストア・ユニット10(図1に示す)へディスパッチされる時、指定された記憶位置に対するタグがタグRAM58内にあるか否かを示すものである。ロード・バッファ54内にて待ち行列をなしていたLOADがついに待ち行列551の先頭に届く時に、ヒット・ビットが活性状態(asserted)であれば、ロード・バッファ54によりデータ・アレイは盲目的にアクセスされる。最初のヒット/ミスの確定とLOADがロード・バッファ54の待ち行列の先頭に届いた時との間の中間の時間に、与えられたLOADのヒット/ミスの状態を変更するという幾つかの事象が起きることがある。従って、内部キャッシュ51のヒット情報をログするとともに、これらの事象が起きるように適切に維持管理することが重要である。
【0034】
ヒット・ビット60(図6に示す)に影響を及ぼす事象は、LOADがタグ・アレイ58をアクセスした後であってデータ・アレイ59をアクセスする以前に、内部キャッシュ51の状態を変更する。古いLOADの割り付けが外部キャッシュ・ラインの内容を置き換える時、最初の事象が起きる。ここで、そのラインはロード・バッファ54内の新たなLOADのソース・アドレスによってマッピングされたものである。これにより内部キャッシュ51のヒットは内部キャッシュ51のミスに変化される。例えば、アドレスX,Yが同一の内部キャッシュ・ラインへダイレクト・マッピングされる、以下に示すプログラムの一部を参照されたい。LOAD X,r0はメモリ・アドレスXの内容をレジスタr0へロードするという要求である。
【0035】
LOAD W,r1
LOAD X,r1
LOAD Y,r2
LOAD Z,r3
第1LOAD命令を実行する前に、Yが内部キャッシュ51内でキャッシュされたと仮定する。加えて、第1LOADは内部キャッシュ51にミスしたと仮定する。Y(Xではない)は関連したキャッシュ・ラインを占有していることから、第2LOADがディスパッチされるとミスが起きる。第2LOADはロード・バッファ54へ転送され、外部キャッシュ55に現在アクセスしている第1LOAD命令の次に配置される。ここで、第3LOADがディスパッチされる。Yが内部キャッシュ51内に位置することから、第3LOADは内部キャッシュ51にヒットする。第1LOADがミスした時、ロード・データ返還の適切な順序を維持するために、たとえ後続のLOADが内部キャッシュ51にヒットしても、後続のLOADはロード・バッファ54内に緩衝されなければならない。そのため、第3LOADはロード・バッファ54中へ転送され、第2LOADの次に配置される。外部キャッシュ55が第1LOADを返還した後、第2LOADは外部キャッシュ55へアクセスし始める。第2LOADが返還する時、そのLOADは関連する内部キャッシュ・ラインを割り付ける(満たす)。第3LOADがロード・バッファ54の待ち行列551の先頭に届く時、第2LOADが内部キャッシュ51内のラインを書き直したことにより、指定されたデータはもう内部キャッシュ51内にはない。従って、第3LOADは古い第2LOADにより、ヒットからミスへ変更される。
【0036】
ロード・バッファ54内のLOADのヒット/ミスの状態に影響を及ぼす別の事象は、古いLOADにより指定されたデータの割り付けである。これは内部キャッシュ51のミスから内部キャッシュ51のヒットへの変化に影響を及ぼす。例えば、以下に示すプログラムの一部を参照されたい。
【0037】
LOAD W,r1
LOAD X,r2
LOAD X,r3
W及びXは共に内部キャッシュ51内にはないと仮定する。第1LOADがディスパッチされる時、ミスが起きて第1LOADはロード・バッファ54内に緩衝される。第2LOADがディスパッチされる時、ミスが起きて第2LOADは内部キャッシュ55に現在アクセスしている第1LOADの次に位置するようにロード・バッファ54に転送される。第3LOADがディスパッチされる時、Xはまだ内部キャッシュ51内にはないため、更にミスが起きる。しかしながら、第2LOADがロード・バッファ54の待ち行列の先頭に届いて内部キャッシュ51を満たす時、Xはその後に内部キャッシュ51内に位置する。このため、第3LOADはXに対して外部キャッシュ55へ転送される必要はなくなる。その代わりに、第3LOADに対するミスは第2LOADによってヒットに変更される。
【0038】
本発明によれば、ロード・バッファの待ち行列551の先頭にあるLOADに対して、外部キャッシュ55へのアクセスは、前回のLOADが外部キャッシュ55の使用を完了した後、可能な限り早く開始される。これは、そのLOADのヒット/ミスの状態が分かっているからである。時には、外部キャッシュ55へのアクセスは更に早く起きることさえある。例えば、待ち行列551の先頭にあるLOADが活性状態であるヒット・ビット60(図6に示す)を有するなら、それは外部キャッシュ55へアクセスする必要はない。このため、次に位置するLOADが不活性状態(deasserted)であるヒット・ビット60(図6に示す)を有するなら、待ち行列の先頭の次に位置するLOADは、外部キャッシュ55へアクセスし始めることができる。この方法を達成すべく、外部キャッシュ・ポインタが使用され、外部キャッシュ55へアクセスする必要がある最も古いロード・バッファエントリを指定する。外部キャッシュ55のミス、即ち例外が存在する場合、外部キャッシュ・ポインタは、内部キャッシュ51をヒットした最も新たなLOADをとばしながら後方へ向かっている間に、リセットする機能を備えたロード/ストア・ユニットを提供する。
【0039】
ロード・バッファ54の設計は、一旦LOADがロード・バッファ54に入ってからのヒット又はミスの状態を知ることに基づいているため、外部キャッシュ55へのアクセスを可能な限り早く開始できる。ロード・バッファ54の待ち行列551の先頭に届いた直後のLOADのヒット状態は、LOADがタグRAM58にアクセスした時その最初の状態とは異なるという上記の2つの場合に、古いLOADが内部キャッシュ51に影響を及ぼすことになる。従って、ロード・バッファ54の新たなエントリに対するヒット・ビット60(図6に示す)は、タグの比較552とロード・バッファ54内に既に存在するLOADのアドレスとの結果から導出される。一旦ロード・バッファ54中に書き込まれると、ヒット・ビット60(図6に示す)は変更されない。このため、新たにディスパッチされたLOAD命令は、ロード・バッファ内で未決のLOADと比較される。必要であれば、ヒット・ビット60はロード・バッファ54へ転送される途中で変更される。例えば、同一のタグを伴い同一のラインに対する別のLOADが生じた時、LOADが内部キャッシュ51にミスするとともに、外部キャッシュ55にアクセスしているなら、後者のLOADをヒットに変更することを前もって知ることが望ましい。それにより、ロード/バッファ・ユニット50はそのLOADに対して外部キャッシュ55へ出向くことはない。同様に、第2LOADが同一のラインにあるが、そのLOADは内部キャッシュ51内に存在するラインのタグを有するなら、そのLOADが未決のLOADと置き換えられることが望ましい。それにより、ロード/バッファ・ユニット50は、そのLOADに対して実際にアクセスが起きる前に、外部キャッシュ55へのアクセスを開始することができる。
【0040】
図6は、ロード・バッファ65内の情報の編成を示す。少なくとも、ロード・バッファ65は宛先レジスタ・アドレス61、内部キャッシュ51(図5に示す)への指標62、ロードされるメモリ・アドレスと関連したタグ63、及びロードされるメモリ・アドレスのソース・アドレス64を格納しなければならない。ロードされるソース・アドレス64に関しては、アーキテクチャ内の仮想から物理への変換を行う場所に依存して、ロード・バッファ65は物理アドレス又は仮想アドレスの何れかを格納する。どちらの場合においても、タグ63又は指標62の何れか、或いは両者63,62はソース・メモリ・アドレス64の部分集合である。内部キャッシュ51(図5に示す)が仮想的に指標付けされるとともに、仮想的にタグ付けされているなら、タグ63及び指標62は仮想アドレスとほぼ等しい。内部キャッシュ51(図5に示す)が物理的に指標付けされるとともに、物理的にタグ付けされるなら、タグ63及び指標62は物理アドレスとほぼ等しい。内部キャッシュ51(図5に示す)が仮想的に指標付けされるとともに、物理的にタグ付けされるなら、タグ63は物理アドレスの上位ビットで表され、指標62は仮想アドレスの下位ビットで表される。内部キャッシュ51(図5に示す)が物理的に指標付けされるとともに、仮想的にタグ付けされるなら、タグ63は仮想アドレスの上位ビットで表され、指標62は物理アドレスの下位ビットで表される。図6に示すように、ロード・バッファ65のデータ編成は、仮想的に指標付けされるとともに、物理的にタグ付けされたキャッシュ51を伴って使用されるようになっている。そのキャッシュ51内で行われる仮想から物理へのアドレス変換は、ロード・バッファ65内のエントリに先立って行われる。従って、タグ63は独立して格納されることはない。
新たにディスパッチされたLOADがロード・バッファ65内で待ち行列となる時、LOADのヒット・ビット60の演算が行われる。「未処理のヒット・ビット」("raw hit bit" )の値552(図5に示す)は、LOADのアドレスによって指標付けされたタグRAMのエントリをそのアドレスのタグ63と比較することにより確定される。LOADのアドレスの指標62は、同時にロード・バッファ65内の全ての指標と比較される。ロード・バッファ65内の各エントリ66に対して、先の比較により指標整合信号が生成される。指標整合信号が活性状態であるそれらのエントリのみが、未処理のヒット・ビット552(図5に示す)の値を変更できる。指標整合信号が活性状態である最新のエントリに対して、LOADのアドレスのタグは指標整合信号が活性状態である最新のエントリと比較される。これにより、「タグ整合信号」("tag match signal")が生成される。全てのエントリに対して、指標整合信号、及びタグ整合信号が活性状態であるとともに、未処理のヒット・ビット552(図5に示す)が不活性状態であるなら、新たなLOADに対するヒット・ビットは活性状態となる(活性状態生成工程)。この場合、古いLOADは、新たにディスパッチされたLOADがロード・バッファの待ち行列551(図5に示す)の先頭に届くまでに、内部キャッシュ51(図5に示す)を指定されたデータで満たす。このため、ミスがヒットに変更される。一方、全てのエントリに対して、指標整合信号が活性状態であり、タグ整合信号が不活性状態であるとともに、未処理のヒット・ビット552(図5に示す)が活性状態であるなら、新たなLOADに対するヒット・ビットは不活性状態となる(不活性状態生成工程)。この場合、古いLOADは、新たにディスパッチされたLOADがロード・バッファの待ち行列552(図5に示す)の先頭に届くまでに、指定されたデータを書き換える。このため、ヒットがミスに変更される。複数のロード・バッファのエントリ66が活性状態の指標整合信号を有している場合、最新のエントリは、新たにディスパッチされたLOADのヒット・ビット60の確定を制御する。上述した論理は、以下の方法により達成される。ロード・バッファ内に1つでも指標の一致が見つかれば、新たにディスパッチされたLOADのヒット・ビット60は、整合指標62を有する最も新しいエントリのタグ63の整合信号の値を受け取る。ロード・バッファ65内に指標の一致が見つからなければ、ヒット・ビット60は未処理のヒット・ビット552(図5に示す)の値を受け取る。
【0041】
図7に示すように、4つの有効なエントリを有するハードウエアの構造は、ロード・バッファ内の新しいエントリに対するヒット・ビット70の値を生成する。同図に示すように、指標0 71とタグ0 72はそれぞれ最も新しいエントリに対する指標62とタグ63(共に図6に示す)を表し、指標3 73とタグ3 89はそれぞれ最も古いエントリに対する指標62とタグ63(共に図6に示す)を表している。指標比較回路としての比較器74は、新しいロード指標75をロード・バッファ65(図6に示す)内に現在ある全ての指標76と比較する(比較工程)。指標整合信号活性状態生成回路としての優先順位回路77は1つの出力(指標整合信号)を活性状態にしたり、全く出力を活性状態にしなかったりする。最も新しいエントリからの活性状態である整合信号のみが、優先順位回路77の出力78で活性状態となる。活性状態の入力79が全くなければ、活性状態の出力78も全く得られない。優先順位回路77の出力78のうち1つが活性状態であれば、パス・ゲート80は対応するタグ81をタグ比較バス82上へ転送する。タグ比較回路としての比較器83は新しいLOADのタグ84を比較バス82上のタグと比較する(比較工程)。両者が同一であると検出されたなら、タグ整合信号85が活性状態となる。1つ以上の指標76が一致したなら、論理和ゲート86は、ヒット・ビットの値70に対するタグ整合信号85を選択するために、ヒット・ビット割り付け回路としてのマルチプレクサ87へ制御する。どの指標76も一致しないなら、論理和ゲート86はヒット・ビットの値70として未処理のヒット・ビット88を選択するために、マルチプレクサ87へ制御する。
【0042】
上述したヒット・ビットの演算を行うハードウエアは、一例として表されている。同じ目的を達成する多くの論理的な実現方法がある。例えば、比較器74の数を減らすことにより、ヒット・ビットを演算する待ち時間を減少させるべく、各ロード・バッファエントリに対する別々のタグ整合信号の生成を行ってもよい。特許請求の範囲は、そのような多数の別の実施形態を含んでいる。
【0043】
本発明の好ましい実施形態は、上述した全ての特徴を含んでいる。図5は、好ましい実施形態に基づいた機能ユニット50の構造を示す概略的なブロック図である。機能ユニット50は、内部の1次キャッシュ51及び外部の2次キャッシュ55を備えている。両キャッシュ50,51はダイレクト・マッピングされる。内部キャッシュ51(図5に示す)はタグRAMアレイ58及びデータRAMアレイ59に別れている。LOADは指定されたソース・データに対する仮想アドレスを指定する。タグRAM配列58は2つのアクセス・ポート57,550を有する。第1アクセス・ポートとしての第1ポート57は主として、入力されたLOADのソース・アドレス553に対するタグ53の検索に用いられる。第2アクセス・ポートとしての第2ポート550は主として、内部キャッシュ51中に割り付けられている記憶位置に対する第2タグの書き込みに用いられる。2つのアクセス・ポート52,550が別々であるため、第1タグ53の検索及び第2タグの書き込みを同時に行うことができる。
【0044】
内部キャッシュ51は仮想的に指標付けされるとともに、物理的にタグ付けされている。外部キャッシュ55は物理的に指標付けされるとともに、仮想的にタグ付けされている。そのため、仮想アドレスの下位ビットは内部キャッシュ51内のキャッシュ・ラインを表し、物理アドレスの下位ビットは外部キャッシュ55内のキャッシュ・ラインを表している。両キャッシュ51,55において、物理アドレスの上位ビットはタグを表している。変換索引バッファ554(TLB )はアドレス変換器の一部を構成し、変換可能な仮想アドレスから物理アドレスへの変換の一部を格納する。キャッシュ51,55は物理的にタグ付けされているため、TLB 554の出力555の上位ビット52は、タグRAM58から検索されたタグ53と比較される。タグ比較器556(未処理ヒット比較回路、及び未処理ヒット・ビット活性状態生成回路を構成する。)がその同一性を検出したら、指定されたデータは現在内部キャッシュ51内に存在することになる。ロード・バッファ54が空であれば、キャッシュ・ヒットにより内部キャッシュ51のデータRAM配列59からデータを即座に返還できる。しかしながら、全てのLOADがデータを順に返還する必要があることから、ロード・バッファ54が空でない場合には、LOADは内部キャッシュ51にヒットしたとしてもLOADは待ち行列をなす。ロード・バッファ54が空でないなら、それは1つ以上のLOADが内部キャッシュ51にミスしたことが原因である。このため、後続のLOADは内部キャッシュ51をミスしたLOADを待たなければならない。
【0045】
ロード・バッファ54内にて待ち行列をなす前に内部キャッシュ51にヒットしたLOADによって指定されたデータは、そのLOADがロード・バッファ54の待ち行列551の先頭に届くまでに内部キャッシュ51から取り除かれる。このため、LOADが内部キャッシュ51の待ち行列551の先頭に届く時に、内部キャッシュ51内で指定されたデータが用いられるか否かを予測すべく演算が行われる。演算は、タグ比較器556により生成されたヒット信号552や、ロード・バッファ54内で待ち行列をなすLOADの指標62及びタグ63(共に図6に示す)を含む。
【0046】
本発明は、幾つかの新規で非自明な特徴を含む望ましい実施形態に関して詳述されている。この実施形態は例として開示されている。本発明の趣旨を逸脱しない範囲おいて、添付の特許請求の範囲によりカバーされようとする創作力に富んだ特徴と均等なものが多々ある。
【図面の簡単な説明】
【図1】 スーパースカラ・プロセッサを示す概略的なブロック図。
【図2】 ロード機能ユニットを示す概略的なブロック図。
【図3】 ダイレクト・マッピングされるキャッシュの動作を示す図。
【図4】 ダイレクト・マッピングされるキャッシュの実行を示す図。
【図5】 本発明に基づくロード機能ユニットを示す概略的なブロック図。
【図6】 本発明に基づくロード・バッファ内のデータの編成を示す図。
【図7】 本発明に基づくヒット・ビットの演算を実行するハードウエアを示す概略図。
【符号の説明】
50…ロード/バッファ・ユニット、51…内部キャッシュ、52…物理アドレス・ビット、53…第1タグ、54,65…ロード・バッファ、55…2次キャッシュとしての外部キャッシュ、56…メモリ管理ユニット、57…第1アクセス・ポートとしてのタグ・ポート、58…タグ・アレイ、59…データ・アレイ、60…ヒット・ビット、62…指標、63…タグ、74…指標比較回路、77…指標整合活性状態生成回路としての優先順位回路、83…タグ比較回路としてのタグ比較器、87…ヒット・ビット割り付け回路としてのマルチプレクサ、550…第2アクセス・ポートとしての第2ポート、554…変換索引バッファ(554はアドレス変換器の一部を構成する)、556…未処理ヒット比較回路及び未処理ヒット・ビット活性状態生成回路としてのタグ比較器。

Claims (22)

  1. ダイレクト・マッピングされるキャッシュを備えたシステムにて、メモリ・アドレスの内容に対するLOAD命令を処理する方法において、
    LOAD命令をデコーダによりデコードする工程と、
    前記デコード済みのLOAD命令をディスパッチする工程と、
    前記ディスパッチされたデコード済みのLOAD命令を提供する工程とを備え、前記LOAD命令を提供する工程は、
    前記ディスパッチされたデコード済みのLOAD命令がロード・バッファの先頭に届いた将来のある時期に、メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在しているか否かを演算する演算工程であって、該演算工程と将来のある時期との間の期間に1つ以上の古いLOAD命令がダイレクト・マッピングされたキャッシュを変更する可能性がある、前記演算工程と、
    前記ロード・バッファ内のメモリ・アドレスの内容に対するLOAD命令の待ち行列を形成する待ち行列形成工程と、
    全ての古いLOAD命令が処理されるまで待機する待機工程と、
    全ての古いLOAD命令が処理されたことに応答して、演算工程により、メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在すると確定される場合、メモリ・アドレスの内容を検索するためにダイレクト・マッピングされたキャッシュにアクセスするアクセス工程とを含む、LOAD命令を処理する方法。
  2. ダイレクト・マッピングされたキャッシュはタグ・アレイ及びデータ・アレイを有し、演算工程の前に、
    メモリ・アドレスはタグの記憶位置へダイレクト・マッピングされ、タグ・アレイ内のタグの記憶位置からタグを検索する検索工程と、
    検索工程が行われる時に、メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在するか否かを確定する確定工程とを更に有する請求項1に記載のLOAD命令を処理する方法。
  3. アクセス工程は検索工程を繰り返すことなく行われる請求項2に記載のLOAD命令を処理する方法。
  4. タグ・アレイはランダム・アクセス・メモリである請求項2に記載のLOAD命令を処理する方法。
  5. タグ・アレイは2重ポートを有する請求項4に記載のLOAD命令を処理する方法。
  6. データ・アレイはランダム・アクセス・メモリである請求項2に記載のLOAD命令を処理する方法。
  7. キャッシュ、第2メモリ・システム及びロード・バッファを有するシステムにおいて、ロード・バッファは、LOAD命令が要求に従いキャッシュ又は第2メモリ・システムの何れかへのアクセスを待つ間に、LOAD命令を保持する先入れ先出しの待ち行列であり、ロード・バッファは待ち行列位置の先頭を有し、キャッシュへのアクセスは第1待ち時間を伴って起こり、第2メモリ・システムへのアクセスは第1待ち時間よりも長い第2待ち時間を伴って起きるLOAD命令をサービスする方法において、
    第1LOAD命令が前記待ち行列位置の先頭に届いたときに、第1LOAD命令により要求されたデータがキャッシュ内にない時、第1LOAD命令に対する前記第2メモリ・システムにアクセスするアクセス工程と、
    第1LOAD命令が前記待ち行列位置の先頭に届いたときに、第1LOAD命令により要求されたデータがキャッシュ内にある時、第1LOAD命令に対する前記キャッシュをアクセスするアクセス工程と、
    第1LOAD命令が前記待ち行列位置の先頭にあり、かつ第1LOAD命令が前記キャッシュをアクセスしている時、待ち行列の先頭にまだ位置していない第2LOAD命令に対する前記第2メモリ・システムにアクセスするアクセス工程と、を有し、前記キャッシュ及び前記第2メモリ・システムはそれぞれ第1及び第2LOAD命令により同時にアクセスされ、全てのLOAD命令はロード・バッファ内の順序と同一の順序で実行される、LOAD命令をサービスする方法。
  8. 第2メモリ・システムは2次キャッシュである請求項7に記載のLOAD命令をサービスする方法。
  9. キャッシュは仮想的に指標付けされるとともに、物理的にタグ付けされる請求項8に記載のLOAD命令をサービスする方法。
  10. 2次キャッシュは物理的に指標付けされ、物理的にタグ付けされる請求項9に記載のLOAD命令をサービスする方法。
  11. ダイレクト・マッピングされるキャッシュを備えたシステムにて、メモリ・アドレスの内容に対してLOAD命令を処理する装置において、
    命令ストリームからLOAD命令をデコードするデコーダ回路と、
    デコード済みのLOAD命令をディスパッチするディスパッチ回路と、
    ディスパッチされたデコード済みのLOAD命令を提供する提供回路とを備え、該提供回路は、
    前記ディスパッチされたデコード済みのLOAD命令がロード・バッファの先頭に届いた将来のある時期に、メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在するか否かを演算するための演算回路であって、該演算回路の演算と将来のある時期との間の期間に1つ以上の古いLOAD命令がダイレクト・マッピングされたキャッシュを変更する可能性がある、前記演算回路と、
    ロード・バッファ内のメモリ・アドレスの内容に対するLOAD命令の待ち行列を形成するための待ち行列形成回路と、全ての古いLOAD命令が処理されるまで待機させるための待機回路と、
    メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在すると演算回路が確定した場合、メモリ・アドレスの内容を検索するために、全ての古いLOAD命令が処理された後、ダイレクト・マッピングされたキャッシュにアクセスするアクセス回路とを含む、LOAD命令を処理する装置。
  12. ダイレクト・マッピングされたキャッシュはタグ・アレイ及びデータ・アレイを有し、メモリ・アドレスがタグの記憶位置へダイレクト・マッピングする、タグ・アレイ内のタグの記憶位置からタグを検索するための検索回路と、
    検索回路が検索を行う時に、メモリ・アドレスの内容がダイレクト・マッピングされたキャッシュ内に存在するか否かを確定する確定回路とを有する請求項11に記載のLOAD命令を処理する装置。
  13. アクセス回路及び検索回路は、それぞれダイレクト・マッピングされたキャッシュのアクセスとタグの検索を同時に行わない請求項12に記載のLOAD命令を処理する装置。
  14. タグ・アレイはランダム・アクセス・メモリである請求項12に記載のLOAD命令を処理する装置。
  15. タグ・アレイは2重ポートを有する請求項14に記載のLOAD命令を処理する装置。
  16. データ・アレイはランダム・アクセス・メモリである請求項12に記載のLOAD命令を処理する装置。
  17. キャッシュ、第2メモリ・システム及びロード・バッファを有するシステムにおいて、ロード・バッファは、LOAD命令が要求に従いキャッシュ又は第2メモリ・システムの何れかへのアクセスを待つ間に、LOAD命令を保持する先入れ先出しの待ち行列であり、ロード・バッファは待ち行列位置の先頭を有し、キャッシュへのアクセスは第1待ち時間を伴って起こり、第2メモリ・システムへのアクセスは第1待ち時間よりも長い第2待ち時間を伴って起きるLOAD命令をサービスする装置において、
    第1LOAD命令により要求されたデータがキャッシュ内にない時、待ち行列位置の先頭にある第1LOAD命令に対する第2メモリ・システムにアクセスするための第1アクセス回路と、
    第1LOAD命令により要求されたデータがキャッシュ内にある時、待ち行列位置の先頭にある第1LOAD命令に対するキャッシュをアクセスするための第2アクセス回路と、
    第1LOAD命令が待ち行列位置の先頭にあり、かつ第1LOAD命令がキャッシュをアクセスしている時、待ち行列位置の先頭にまだない第2LOAD命令に対する第2メモリ・システムにアクセスするための第3アクセス回路と、を有し、キャッシュ及び第2メモリ・システムはそれぞれ第1及び第2LOAD命令により同時にアクセスされ、全てのLOAD命令はロード・バッファ内の順序と同一の順序で実行されるLOAD命令をサービスする装置。
  18. 第2メモリ・システムは2次キャッシュである請求項17に記載のLOAD命令をサービスする装置。
  19. キャッシュは仮想的に指標付けされ、物理的にタグ付けされる請求項18に記載のLOAD命令をサービスする装置。
  20. 2次キャッシュは物理的に指標付けされ、物理的にタグ付けされる請求項19に記載のLOAD命令をサービスする装置。
  21. 第1LOAD命令が待ち行列の先頭に存在する前に、第1LOAD命令が待ち行列の先頭に届いたときに、第1LOAD命令により要求されたデータがキャッシュ内に存在しているか否かを演算する演算工程を更に備え、
    第1LOAD命令に対する前記キャッシュをアクセスするアクセス工程は、前記演算工程において、第1LOAD命令が待ち行列の先頭に届いたときに、第1LOAD命令により要求されたデータがキャッシュ内に存在していると判断された場合に行われる、請求項7に記載のLOAD命令をサービスする方法。
  22. 第1LOAD命令が待ち行列の先頭に存在する前に、第1LOAD命令が待ち行列の先頭に届いたときに、第1LOAD命令により参照されたメモリ・アドレスの内容がキャッシュ内に存在しているか否かを演算する演算回路を更に備え、
    前記第2アクセス回路は、前記演算回路が、第1LOAD命令が待ち行列の先頭に届いたときに、第1LOAD命令により要求されたデータがキャッシュ内に存在していると判断した場合に第1LOAD命令に対するキャッシュにアクセスする、請求項17に記載のLOAD命令をサービスする装置。
JP02797396A 1995-02-16 1996-02-15 ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 Expired - Lifetime JP3875738B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/389636 1995-02-16
US08/389,636 US5745729A (en) 1995-02-16 1995-02-16 Methods and apparatuses for servicing load instructions

Publications (2)

Publication Number Publication Date
JPH08272682A JPH08272682A (ja) 1996-10-18
JP3875738B2 true JP3875738B2 (ja) 2007-01-31

Family

ID=23539075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02797396A Expired - Lifetime JP3875738B2 (ja) 1995-02-16 1996-02-15 ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置

Country Status (3)

Country Link
US (2) US5745729A (ja)
JP (1) JP3875738B2 (ja)
KR (1) KR100397683B1 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
JPH0934786A (ja) * 1995-07-14 1997-02-07 Fujitsu Ltd 命令供給装置
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6026471A (en) * 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
US5991855A (en) * 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
US6018792A (en) * 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US6209068B1 (en) * 1997-12-29 2001-03-27 Intel Corporation Read line buffer and signaling protocol for processor
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6237064B1 (en) * 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US6216215B1 (en) * 1998-04-02 2001-04-10 Intel Corporation Method and apparatus for senior loads
DE69942339D1 (de) * 1998-08-24 2010-06-17 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US7779236B1 (en) * 1998-12-31 2010-08-17 Stmicroelectronics, Inc. Symbolic store-load bypass
US6336168B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for merging multiple outstanding load miss instructions
US6311254B1 (en) 1999-03-18 2001-10-30 International Business Machines Corporation Multiple store miss handling in a cache memory memory system
US6321303B1 (en) 1999-03-18 2001-11-20 International Business Machines Corporation Dynamically modifying queued transactions in a cache memory system
US6269427B1 (en) 1999-03-18 2001-07-31 International Business Machines Corporation Multiple load miss handling in a cache memory system
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6405285B1 (en) * 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6523109B1 (en) * 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6622235B1 (en) * 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6427188B1 (en) 2000-02-09 2002-07-30 Hewlett-Packard Company Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US6647464B2 (en) 2000-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. System and method utilizing speculative cache access for improved performance
US6427189B1 (en) * 2000-02-21 2002-07-30 Hewlett-Packard Company Multiple issue algorithm with over subscription avoidance feature to get high bandwidth through cache pipeline
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US6862679B2 (en) * 2001-02-14 2005-03-01 Intel Corporation Synchronization of load operations using load fence instruction in pre-serialization/post-serialization mode
JP2002368850A (ja) * 2001-06-05 2002-12-20 Sony Corp 携帯無線端末装置
KR100617663B1 (ko) * 2001-09-14 2006-08-28 썬 마이크로시스템즈, 인코포레이티드 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
US20030163643A1 (en) * 2002-02-22 2003-08-28 Riedlinger Reid James Bank conflict determination
DE10243446B4 (de) * 2002-09-19 2005-12-15 Celanese Chemicals Europe Gmbh Verfahren zur Herstellung von Aldehyden
TW569219B (en) * 2002-09-30 2004-01-01 Via Tech Inc Architecture and method for updating cache data
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US7231501B2 (en) * 2004-03-30 2007-06-12 Ibm Corporation Method for avoiding aliased tokens during abnormal communications
US7401209B2 (en) 2006-06-30 2008-07-15 International Business Machines Corporation Limiting entries searched in load reorder queue to between two pointers for match with executing load instruction
US8214602B2 (en) * 2008-06-23 2012-07-03 Advanced Micro Devices, Inc. Efficient load queue snooping
JP2010146084A (ja) * 2008-12-16 2010-07-01 Toshiba Corp キャッシュメモリ制御部を備えるデータ処理装置
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
CN112565437B (zh) * 2020-12-07 2021-11-19 浙江大学 一种面向跨界服务网络的服务缓存方法
US11989285B2 (en) 2021-05-07 2024-05-21 Ventana Micro Systems Inc. Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking
US11989286B2 (en) 2021-05-07 2024-05-21 Ventana Micro Systems Inc. Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0668735B2 (ja) * 1987-02-09 1994-08-31 日本電気アイシーマイコンシステム株式会社 キヤツシユメモリ−
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
GB2244158B (en) * 1990-04-30 1994-09-07 Sun Microsystems Inc Cache memory arrangement with write buffer pipeline providing for concurrent cache determinations
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
JPH0540629A (ja) * 1991-06-18 1993-02-19 Matsushita Electric Ind Co Ltd 情報処理装置
US5404484A (en) * 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
DE69329778T2 (de) * 1992-09-29 2001-04-26 Seiko Epson Corp System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer

Also Published As

Publication number Publication date
KR960032183A (ko) 1996-09-17
US5802575A (en) 1998-09-01
KR100397683B1 (ko) 2003-11-28
US5745729A (en) 1998-04-28
JPH08272682A (ja) 1996-10-18

Similar Documents

Publication Publication Date Title
JP3875738B2 (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
US20230004500A1 (en) Aggressive write flush scheme for a victim cache
EP0795820B1 (en) Combined prefetch buffer and instructions cache memory system and method for providing instructions to a central processing unit utilizing said system.
US6226713B1 (en) Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem
US6212602B1 (en) Cache tag caching
US6430654B1 (en) Apparatus and method for distributed non-blocking multi-level cache
US5526510A (en) Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US6317811B1 (en) Method and system for reissuing load requests in a multi-stream prefetch design
US5671444A (en) Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US6145054A (en) Apparatus and method for handling multiple mergeable misses in a non-blocking cache
US6148372A (en) Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6240488B1 (en) Prefetching hints
US6560693B1 (en) Branch history guided instruction/data prefetching
KR100278328B1 (ko) 캐시 미스 버퍼
US6681295B1 (en) Fast lane prefetching
US5680572A (en) Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US8806177B2 (en) Prefetch engine based translation prefetching
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
US6539457B1 (en) Cache address conflict mechanism without store buffers
EP0796465A1 (en) Scalar data cache for a vector processor
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US6507892B1 (en) L1 cache memory
EP1030243A1 (en) Optimized hardware cleaning function for virtual index virtual tag data cache
JP3431878B2 (ja) マルチスレッド・プロセッサの命令キャッシュ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060519

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061027

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121102

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20121102

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20121102

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131102

Year of fee payment: 7

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