JPH08272682A - ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 - Google Patents
ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置Info
- Publication number
- JPH08272682A JPH08272682A JP8027973A JP2797396A JPH08272682A JP H08272682 A JPH08272682 A JP H08272682A JP 8027973 A JP8027973 A JP 8027973A JP 2797396 A JP2797396 A JP 2797396A JP H08272682 A JPH08272682 A JP H08272682A
- Authority
- JP
- Japan
- Prior art keywords
- load
- tag
- cache
- load instruction
- index
- 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
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 136
- 238000000034 method Methods 0.000 title claims description 41
- 230000015654 memory Effects 0.000 claims abstract description 95
- 230000008569 process Effects 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 7
- 230000009977 dual effect Effects 0.000 claims description 3
- 230000014616 translation Effects 0.000 claims 2
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 101100480514 Caenorhabditis elegans tag-53 gene Proteins 0.000 abstract description 6
- 238000012545 processing Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 101100108293 Caenorhabditis elegans aex-4 gene Proteins 0.000 description 1
- 101100545272 Caenorhabditis elegans zif-1 gene Proteins 0.000 description 1
- 102000010029 Homer Scaffolding Proteins Human genes 0.000 description 1
- 108010077223 Homer Scaffolding Proteins Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped 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)
Abstract
ッサの1サイクル当たり1つというLOAD命令の処理量を
維持すること。 【解決手段】機能ユニットは、データを格納するデータ
RAM59と、タグを格納するタグRAM58と、複数
の記憶位置を管理するとともに、データRAM59及び
タグRAM58に接続されたメモリ管理ユニット56
と、RAM58,59及び管理ユニット56に接続され
たロード・バッファ54とを備える。タグRAM58は
第1タグ53を検索する第1ポート57と、タグRAM
58中の選択された記憶位置の第2タグを書き込むため
の第2ポート550とを有し、第1タグ53の検索及び
第2タグの書き込みを同時に起こすことができる。管理
ユニット56は、ユニット56自身又はデータRAM5
9の何れかに対して行われる連続的なアクセスに対する
LOAD命令の待ち行列を形成するための1つ以上のエント
リを有する。
Description
/ストア・ユニットに係わる。詳しくは、ロード・バッ
ファ及びキャッシュの維持管理に関する。
のことをいう。通常、RISCプロセッサは従来のCISC(複
合命令セット・コンピュータ)プロセッサよりも命令数
が少ない。使用命令数が少ないため、RISC技術を用いる
ことにより、RISCプロセッサのコンパイラを書き込むタ
スクが少なくともある程度、簡略化される。更に、最大
動作周波数を制限する使用頻度の低い複雑な命令より
も、むしろ使用頻度の高い重要な命令を実行し、かつ最
適化することについて焦点を当ててプロセッサのデザイ
ンを行うことができる。こうした理由及びその他の理由
により、ワーク・ステーション、更には末端のコンピュ
ータ製造業者の間ではRISCプロセッサが好評である。
際にアクセスする命令は非常に少ない。実際に実現され
たものでは、メモリにアクセスするLOAD及びSTORE とい
う2つの命令のみを有するものがある。通常、並行処理
により同期及びメモリ更新を行うプロセッサによって、
多少特殊な「アトミック」("atomic")オペレーション
が支援される。ピーティーアール・プレンティス・ホー
ル社(PTR Prentice Hall )発行、スパーク・インター
ナショナル社(SPARC International, Inc. )、ディ
ー.エル.ウィーバー(D. L. Weaver)及びティー.ガ
ーモンド(T. Germond)編、「スパーク アーキテクチ
ャ説明書 バージョン9(The SPARC Architecture Man
ual, Version 9)」、1994年、第17頁を参照され
たい。このような場合であっても、LOAD及びSTORは最も
使用頻度の高いメモリ・アクセス命令である。LOAD命令
を実行することにより、プロセッサのレジスタにはメイ
ン・メモリ・アドレスに存在するデータが書き込まれ
る。STORE 命令を実行することにより、メイン・メモリ
・アドレスにはプロセッサのレジスタに存在するデータ
が書き込まれる。従って、LOAD及びSTORE 命令はオペラ
ンドとしてレジスタ(1つ又は複数個)及び1つのメモ
リ・アドレスを指定する必要がある。幾つかの装置で
は、メモリ・アドレスを演算するために2つ若しくは1
つのレジスタ及び1つの即値が用いられているものがあ
る。多くの装置では、1つの命令を用いて1ワード以上
のデータを転送する数種類のLOAD及びSTORE を備えるた
め、2つ以上のソース・レジスタ又は宛先レジスタが存
在することがある。また、これらのソース・レジスタ又
は宛先レジスタはそれぞれSTORE 命令又はLOAD命令にお
いてオペランドとして指定される。
示す。スーパースカラ・プロセッサ12はいくつかの並
行機能ユニット10,11を有している。通常のスーパ
ースカラ装置では浮動小数点、整数、分岐及びロード/
ストアの機能ユニットを備えている。従って、4つの命
令まで並行して実行することができる。また、大部分の
スーパースカラ・プロセッサは、少なくともある程度は
パイプライン化されている。パイプライン化により命令
はステージ内にて処理されるため、1つの命令の処理が
完了するまでに数クロック・サイクルを要する。しかし
ながら、パイプライン化されたプロセッサのアーキテク
チャでは、各ステージにて命令を常に処理しているた
め、複数の命令を同時に処理することができる。
概略を示すブロック図である。ロード/ストア機能ユニ
ット10の総処理量を最大にすべく、ロード・バッファ
20が設けられている。そのため、即座にサービスされ
ることのないLOADであっても、ディスパッチされ得る。
また、LOADはプロセッサ12の演算を停止させることな
く、サービス待ち可能である。ロード・バッファ20は
先入れ先出し(FIFO)待ち行列であり、LOADのソース・
メモリ及び宛先レジスタを保持している。LOADの待ち行
列を保持することにより、現在のLOADの演算が完了後、
即座に別のLOADの演算を行えることから、LOAD及びSTOR
E 命令が用いるメモリ資源の利用が最大化される。
用いて参照する記憶位置を利用するための一般的な技術
である。基本的な考えは少量の高速アクセス・メモリ
と、多量の低速アクセス・メモリとを編成することによ
り、ほとんどのアクセスが少量の高速メモリに対して行
われる。そのようなメモリ・システムの平均アクセス時
間は、少量の高速メモリの有効記憶容量が多量のメモリ
のそれと同一であるものよりも僅かに優れている。
ャッシュ・メモリ、即ち索引バッファ・メモリである。
キャッシュ・メモリはプロセッサ12とメイン・メモリ
との間に配置された比較的小さな特殊メモリ装置であ
る。キャッシュ・メモリは、プロセッサ12によってア
クセスされそうなメモリからコピーされたワードを保持
している。キャッシュはメイン・メモリより高速である
ため、アクセス頻度の高い記憶位置がキャッシュ内で見
つかれば、ヒット率が高くなるとともに、メモリ・アク
セスの平均時間は短くなる。キャッシュにより実行され
る方法は、プロセッサによって最近使用された他のワー
ドの近くに位置するところのワードを保持することであ
る。この方法により利用される局所参照とは、短時間の
うちにメモリの小さな領域に群れをなすようにアクセス
するメモリ・アクセスの傾向をいう。
は各記憶位置がより低速のメイン・メモリにも格納され
た情報のコピーに対して、更にアクセスし易くするよう
に用いられるという意味からである。このため、キャッ
シュの存在によりアドレス可能な全記憶容量は、プログ
ラマが見てとれるように増加するわけではない。むし
ろ、平易なプログラム方法において、キャッシュは同一
のアドレス空間内に存在する記憶位置への平均アクセス
時間を改善する。
小型であるため、いつでもキャッシュされ得るのはメイ
ン・メモリの記憶位置の少量のみである。従って、一般
的にキャッシュ内に存在する各記憶位置、即ちキャッシ
ュ・ラインは概念的に、タグ・フィールド及び内容フィ
ールドという2つの部分を有する。読み出し又は書き込
み動作が要求されるとき、指定されたアドレスはキャッ
シュ内の一定のラインのタグ・フィールドと比較され
る。その比較により整合が生じれば、整合しているタグ
を含むキャッシュ・ラインの内容フィールドが読み出し
又は書き込まれる。メイン・メモリにアクセスする必要
はない。これはキャッシュ・ヒットとして知られてい
る。
てのLOAD命令を実行するとともに、一般的にメモリとの
間の全てのインターフェイスの役割を担う。同図に示す
ように、ロード/ストア・ユニットは集積回路上の内部
の1次キャッシュ24を管理する。ロード/ストア・ユ
ニットは、メモリ管理ユニット26に接続された外部の
2次キャッシュ25との調整を行う。1次キャッシュ2
4は、ダイレクト・マッピングされたキャッシュであ
る。それは、キャッシュされる記憶位置のアドレスをキ
ャッシュ内の指定された記憶位置へマッピングするもの
である。
は、内部キャッシュ24に格納するには大きすぎるワー
キング・セット(working set )を有するコードに対し
て、LOAD命令とその後続使用とが外部キャッシュ25の
待ち時間を少なくとも充分に補うほど長く分離され得る
ことである。このように、データを即座に返還すること
が不可能なLOADはパイプラインを機能停止させるのでは
なく、データを返還することが可能になるまで緩衝処理
されるという点で、ロード・バッファ20はロード/ス
トア・ユニット10(図1に示す)及び他の機能ユニッ
トが幾分か切り離されることを許容する。即ち、この典
型的な例は、LOADが集積回路上の内部キャッシュ24に
ミスし、外部キャッシュ26にアクセスせねばならない
場合である。この場合、LOADはロード・バッファ20内
に配置され、実行パイプラインはロードされているレジ
スタを必要とするまで、換言すれば「使用」命令に遭遇
するまで動作し続ける。
されたキャッシュ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に
よってマッピングされた記憶位置内に格納されたタグ3
5と比較される。下位ビット31によって指標付けされ
たキャッシュ・ライン33内に格納されたタグ35が、
入力されたメモリ・アドレスの上位ビット36と一致し
ていれば、それはキャッシュ・ヒットである。
データメモリ41及びタグメモリ42という2つの別々
のメモリを備える。概念的に、その挙動は図3に示すキ
ャッシュ30のそれと丁度同じである。これはデータ4
1及びタグ42の両方の部位が同様の方法で指標付けさ
れるとともに、同じ数のラインを有するためである。デ
ータ・アレイ41内の各データラインは、タグ・アレイ
42と対応する位置に対応タグを有している。
外部キャッシュ25から返還されるとき、そのデータは
内部キャッシュ24に書き込まれる。この置き換え方法
の背後にある原理は、最近使用されたデータは近い将来
において再び使用される傾向にあるということである。
内部キャッシュ24に書き込むということは、両データ
RAM41及びタグRAM42(共に図4に示す)内の
適切なラインを置き換えることを意味する。
ストア・ユニット10(図1に示す)は指定された記憶
位置が内部キャッシュ24内にあるかどうかを調べる。
ヒットが起きたか否かを確定するために、適切なタグが
タグRAM42(図4に示す)から検索されるととも
に、要求された記憶位置に対するアドレスの適切な部分
と比較される。これらのタグを検索している間、内部キ
ャッシュ24にミスした古いLOAD命令はデータ及びタグ
情報を返還する。大部分のキャッシュ24の置き換え方
法は、キャッシュ24内にて最も新たに参照したデータ
を必要とするため、内部キャッシュ24は前回のミスに
よって返還されたデータ及びタグを保持するために更新
されなければならない。そのため、同一の記憶位置が再
び要求されると、それらの記憶位置は内部キャッシュ2
4をヒットする。外部キャッシュ25への待ち時間がゼ
ロではなく、ロード・バッファ20は外部キャッシュ2
5にアクセスすべきLOADのサービスを遅らせる傾向にあ
るため、LOADがロード・バッファ内に配置されて数サイ
クル後に、外部キャッシュ25からデータが返還され
る。古いLOADが外部キャッシュ25からデータを返還し
ているのと同一のサイクルの間に新たなLOADがディスパ
ッチされているなら、内部キャッシュ24のタグRAM
のデータ・ポート43(図4に示す)に衝突が起きる。
つでも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に示
す)は次のサイクル中に停止する。
ものであって、その目的は、タグ・アレイ及びデータ・
アレイを同時にアクセスできることを許容し、プロセッ
サを停止させることなく、そのプロセッサの1サイクル
当たり1つのLOAD命令という処理量を維持することが可
能な方法及び装置を提供することにある。
目的を達成するための方法及び装置が構成されている。
いて、各サイクル中にLOAD命令を含む命令ストリームを
実行する際、プロセッサが停止することを防ぐために、
1サイクル当たり1つのLOAD命令という処理量を維持す
ることが望まれている。
形成することから、新たなLOAD命令がキャッシュ・ヒッ
トであるかを調べるべくタグ・アレイにアクセスしてい
る時、キャッシュにミスした古いLOAD命令に対するキャ
ッシュのタグは後で返還する。従って、古い返還された
タグ及び新たなLOADは、キャッシュのタグ・アレイに対
して競合する。本発明に基づき、新たなLOAD命令がキャ
ッシュ・ヒットであるかを調べるべくタグ・アレイにア
クセスしているのと同一のサイクル中に、返還されてい
る古いLOAD命令のデータのミスによるタグ・アレイの同
時アクセスをキャッシュの2重ポートのタグ・アレイは
許容する。
のデータ・アレイ・アクセスからタグ・アレイ・アクセ
スを切り離すための、ロード・バッファ内のヒット・ビ
ットを演算しかつ管理するための方法及び装置により、
新たにディスパッチされたLOADは古いLOADが全て処理さ
れるまでロード・バッファ内の待ち行列で待機した後、
その新たなLOADがキャッシュをヒットするか否かを確定
する。このように、LOADがロード・バッファの待ち行列
の先頭に届くとき、タグRAMは再びアクセスされる必
要はない。
明の方法及び装置を容易にする。ロード・バッファのデ
ータ・エントリは、LOAD命令を処理し、かつ緩衝される
べき今後のLOAD命令に対するヒット・ビットを演算する
のに必要なヒット・ビット及び全ての情報を備えてい
る。
アレイ部のアクセスが切り離されているLOAD命令をサー
ビスするための方法及び装置は、LOADがタグ・アレイに
再度アクセスすることなくロード・バッファ内にて遅延
した後、データ・アレイの遅延アクセスを許容する。そ
のため、1サイクル当たり1つのLOADという処理量の持
続が達成される。
頭にLOADが届き、そのLOADは1次キャッシュをミスする
場合、かつロード・バッファ内の古い未決の各LOADがロ
ード・バッファの待ち行列の先頭に届くとすぐに、1次
キャッシュのヒットとなる場合、LOADがロード・バッフ
ァの待ち行列の先頭に届く前に、1次キャッシュをミス
するであろうLOADに対する外部キャッシュへのアクセス
が始まる。2次キャッシュのポインタはロード・バッフ
ァのエントリを参照する。そのエントリは外部キャッシ
ュにアクセス可能な最も古い未決のLOAD命令を含む。従
って、本発明に基づく方法及び装置は、ロード・バッフ
ァ内の2つの別々のLOADに対して、1次及び2次キャッ
シュへのアクセスが同時に起きることを許容する。
ス空間とは別の仮想アドレス空間を支援する。仮想アド
レスは、プロセッサが記憶位置を指定するために用いる
ラベルである。プロセッサは、自身が仮想アドレスの記
憶位置にアクセスできる限り、実際に記憶位置が物理メ
モリ内のどこに存在するかについては関与しない。プロ
セッサ・アーキテクチャの仕様により、支援されるべき
一定の仮想アドレス空間が定義される。コンピュータ・
システムを管理するオペレーティング・システムは、仮
想アドレス空間からどのように物理メモリへマッピング
されるのかに関して、柔軟性がある。従って、仮想アド
レスから物理アドレスへの変換が必要となる。
を示す概略的なブロック図である。ロード・バッファ5
4はタグRAM58、データRAM59及びメモリ管理
ユニット56に接続されている。メモリ管理ユニット5
6はタグRAM58及びデータRAM59に接続される
とともに、両RAM58,59を管理する。内部キャッ
シュ51は、仮想的に指標付けされるとともに、物理的
にタグ付けされている。仮想的に指標付けされたキャッ
シュでは、仮想アドレスの下位ビットはキャッシュ・ラ
インへのダイレクト・マッピング、即ち指標付けを提供
するために使用される。これに対して、タグは物理アド
レスの一部としての上位ビットである。従って、キャッ
シュ・ヒットが起きたか否かを確定するために、上位の
物理アドレス・ビット52は、指標によって参照される
キャッシュ・ラインに対するタグ・フィールド内に格納
されているタグ53と比較される。
LOADが命令ストリーム内に連続して存在するなら、それ
らのLOADが返還するデータは、命令ストリーム内に存在
した順にレジスタファイルへ書き込まれるべきである。
プログラマーがそれとは正反対の順に使用するする場
合、LOADは間違った順に返還されることが許容されるの
であれば、古いLOADにより新たなLOADの結果が消去され
てしまう。LOADが内部キャッシュ51にミスする時、そ
のLOADはロード・バッファ54の中で待ち行列をなす。
その次のサイクル中に、内部キャッシュ51内でヒット
したLOADはディスパッチされることがある。その結果、
通常は検索が迅速に行われ、内部キャッシュ51からデ
ータが返還されることになる。しかしながら、メモリ管
理ユニット56を通じて第2キャッシュ・サブシステム
としての外部キャッシュ55又はメイン・メモリにアク
セスすべき未決の古いLOAD命令が存在するため、新たな
LOADはロード・バッファ54内で待ち行列をなす。その
ため、未決のLOADが返還するまでそのLOADは返還されな
い。LOADが順にデータを返還すべき第2の理由、或いは
より重要な理由は、ソフトウエアのトラップ及び割り込
みが実行し難くなることから、LOADを間違った順に(ア
ウト・オブ・オーダーで)実行するとロード/ストア・
ユニットの複雑さを大幅に増大させてしまうことであ
る。
うな例外的な条件を取り扱うために、ロード・バッファ
54内のLOADには最初にタグが付けられる。そのため、
LOADはパイプライン化されたプロセッサの全てのステー
ジを首尾よく通過することにより、そのLOADの実行が完
了する。これよりも前に、例外的な条件が起きるなら、
実行完了前の全てのLOADは消去されなければならないと
ともに、ロード・バッファ54は「1つリセット」("r
ewound" )する。
スタへ返還する。古いLOADが外部キャッシュ55へのア
クセス待ちの状態であれば、内部キャッシュ51をヒッ
トする新たなLOADをサービスする1つの方法は、新たな
LOADに対するデータを検索するとともに、古いLOADがそ
のデータを返還するまでそのデータを緩衝することであ
る。しかしながら、LOADが数ワードのデータを返還する
ことがあり、かついくつかのLOADが緩衝される必要があ
るため、この選択を実施することは非常に高価なものと
なる。この全てのロード・データを緩衝する必要がある
領域は、広すぎるため実際この選択を実施することはで
きない。
古いLOADが返還されるのを待つ間、新たなLOADからのロ
ード・データを緩衝する代わりに、ロード・バッファ5
4は新たなLOADが内部キャッシュ51にヒットしたかミ
スしたかを記録し、それが内部キャッシュ51にヒット
したのであれば、その後に再び内部キャッシュ51をア
クセスする。ヒット/ミスの確定に必要な唯一のメモリ
・ポートは、内部キャッシュ51のタグ・ポート57で
ある。従って、ロード・バッファ54が空でない時、パ
イプラインへ入力され新たにディスパッチされたLOAD
は、内部キャッシュ51のタグRAM58の一部のみに
アクセスする。続いて、LOADがロード・バッファの待ち
行列の先頭に来るとともに、内部キャッシュ51にヒッ
トしたことが記録される時、それは内部キャッシュ51
のデータ59の一部のみにアクセスすることから、タグ
RAM58を用いて新たにディスパッチされたLOADは影
響を受けない。
に、ロード・データが外部キャッシュ55から返還され
る時、両タグRAM58及びデータRAM59は書き込
まれなければならない。ロード・バッファ54が空であ
る場合、内部キャッシュ51のデータRAM59のポー
トは、内部キャッシュ51にミスした古いLOADに対して
用いられる。その古いLOADは、外部キャッシュ55から
返還されるとすぐに内部キャッシュ51を満たす(割り
付ける)。しかしながら、タグ・ポート57はヒットし
たかを調べるため、新たにディスパッチされたLOADによ
り使用されるので、そのポート57は使用できない。本
発明に基づき、プロセッサ12(図1に示す)を停止さ
せないようにすべく、かつ最適な性能を達成すべく、内
部キャッシュ51のタグRAM58は第2ポート550
を有する。そのポート550は主として、外部キャッシ
ュ55にアクセスしたロード・バッファ54内の古いLO
ADから返還されたデータを有するタグRAM58を満た
すために備えられている。従って、タグRAM58の第
1ポート57は、内部キャッシュ51にヒットしたかを
調べるべく新たにディスパッチされたLOADによって用い
られ、タグRAM58の第2ポート550は、ロード・
バッファ54内の古いLOADから返還された記憶位置のタ
グを有するタグRAM58を満たすべく同時に用いられ
る。
多層キャッシュ及び/又は多重処理を行う環境において
便利である。キャッシュの一貫性を確実にする処理であ
る「詮索」("snoops")は、命令の発行を停止すること
なくこのポート550を使用することができる。ロード
・バッファ54が空であれば、その詮索により並行して
サービスされ得る。ロード・バッファ54が空でなけれ
ば、LOADは記録されたヒットしたビットと共に、通常の
待ち行列をなす。この場合、その詮索によりヒットした
これらのビットが適切に影響を受けることを保証する特
別な機構がある。
転送される各エントリは「ヒット・ビット」("hit bi
t" )60(図6に示す)を有する。そのビット60
は、LOADが最初にロード/ストア・ユニット10(図1
に示す)へディスパッチされる時、指定された記憶位置
に対するタグがタグRAM58内にあるか否かを示すも
のである。ロード・バッファ54内にて待ち行列をなし
ていたLOADがついに待ち行列551の先頭に届く時に、
ヒット・ビットが活性状態(asserted)であれば、ロー
ド・バッファ54によりデータ・アレイは盲目的にアク
セスされる。最初のヒット/ミスの確定とLOADがロード
・バッファ54の待ち行列の先頭に届いた時との間の中
間の時間に、与えられたLOADのヒット/ミスの状態を変
更するという幾つかの事象が起きることがある。従っ
て、内部キャッシュ51のヒット情報をログするととも
に、これらの事象が起きるように適切に維持管理するこ
とが重要である。
を及ぼす事象は、LOADがタグ・アレイ58をアクセスし
た後であってデータ・アレイ59をアクセスする以前
に、内部キャッシュ51の状態を変更する。古いLOADの
割り付けが外部キャッシュ・ラインの内容を置き換える
時、最初の事象が起きる。ここで、そのラインはロード
・バッファ54内の新たなLOADのソース・アドレスによ
ってマッピングされたものである。これにより内部キャ
ッシュ51のヒットは内部キャッシュ51のミスに変化
される。例えば、アドレスX,Yが同一の内部キャッシ
ュ・ラインへダイレクト・マッピングされる、以下に示
すプログラムの一部を参照されたい。LOAD X,r
0はメモリ・アドレスXの内容をレジスタr0へロード
するという要求である。
内でキャッシュされたと仮定する。加えて、第1LOADは
内部キャッシュ51にミスしたと仮定する。Y(Xでは
ない)は関連したキャッシュ・ラインを占有しているこ
とから、第2LOADがディスパッチされるとミスが起き
る。第2LOADはロード・バッファ54へ転送され、外部
キャッシュ55に現在アクセスしている第1LOAD命令の
次に配置される。ここで、第3LOADがディスパッチされ
る。Yが内部キャッシュ51内に位置することから、第
3LOADは内部キャッシュ51にヒットする。第1LOADが
ミスした時、ロード・データ返還の適切な順序を維持す
るために、たとえ後続のLOADが内部キャッシュ51にヒ
ットしても、後続のLOADはロード・バッファ54内に緩
衝されなければならない。そのため、第3LOADはロード
・バッファ54中へ転送され、第2LOADの次に配置され
る。外部キャッシュ55が第1LOADを返還した後、第2
LOADは外部キャッシュ55へアクセスし始める。第2LO
ADが返還する時、そのLOADは関連する内部キャッシュ・
ラインを割り付ける(満たす)。第3LOADがロード・バ
ッファ54の待ち行列551の先頭に届く時、第2LOAD
が内部キャッシュ51内のラインを書き直したことによ
り、指定されたデータはもう内部キャッシュ51内には
ない。従って、第3LOADは古い第2LOADにより、ヒット
からミスへ変更される。
ミスの状態に影響を及ぼす別の事象は、古いLOADにより
指定されたデータの割り付けである。これは内部キャッ
シュ51のミスから内部キャッシュ51のヒットへの変
化に影響を及ぼす。例えば、以下に示すプログラムの一
部を参照されたい。
る。第1LOADがディスパッチされる時、ミスが起きて第
1LOADはロード・バッファ54内に緩衝される。第2LO
ADがディスパッチされる時、ミスが起きて第2LOADは内
部キャッシュ55に現在アクセスしている第1LOADの次
に位置するようにロード・バッファ54に転送される。
第3LOADがディスパッチされる時、Xはまだ内部キャッ
シュ51内にはないため、更にミスが起きる。しかしな
がら、第2LOADがロード・バッファ54の待ち行列の先
頭に届いて内部キャッシュ51を満たす時、Xはその後
に内部キャッシュ51内に位置する。このため、第3LO
ADはXに対して外部キャッシュ55へ転送される必要は
なくなる。その代わりに、第3LOADに対するミスは第2
LOADによってヒットに変更される。
行列551の先頭にあるLOADに対して、外部キャッシュ
55へのアクセスは、前回のLOADが外部キャッシュ55
の使用を完了した後、可能な限り早く開始される。これ
は、そのLOADのヒット/ミスの状態が分かっているから
である。時には、外部キャッシュ55へのアクセスは更
に早く起きることさえある。例えば、待ち行列551の
先頭にあるLOADが活性状態であるヒット・ビット60
(図6に示す)を有するなら、それは外部キャッシュ5
5へアクセスする必要はない。このため、次に位置する
LOADが不活性状態(deasserted)であるヒット・ビット
60(図6に示す)を有するなら、待ち行列の先頭の次
に位置するLOADは、外部キャッシュ55へアクセスし始
めることができる。この方法を達成すべく、外部キャッ
シュ・ポインタが使用され、外部キャッシュ55へアク
セスする必要がある最も古いロード・バッファエントリ
を指定する。外部キャッシュ55のミス、即ち例外が存
在する場合、外部キャッシュ・ポインタは、内部キャッ
シュ51をヒットした最も新たなLOADをとばしながら後
方へ向かっている間に、リセットする機能を備えたロー
ド/ストア・ユニットを提供する。
がロード・バッファ54に入ってからのヒット又はミス
の状態を知ることに基づいているため、外部キャッシュ
55へのアクセスを可能な限り早く開始できる。ロード
・バッファ54の待ち行列551の先頭に届いた直後の
LOADのヒット状態は、LOADがタグRAM58にアクセス
した時その最初の状態とは異なるという上記の2つの場
合に、古いLOADが内部キャッシュ51に影響を及ぼすこ
とになる。従って、ロード・バッファ54の新たなエン
トリに対するヒット・ビット60(図6に示す)は、タ
グの比較552とロード・バッファ54内に既に存在す
るLOADのアドレスとの結果から導出される。一旦ロード
・バッファ54中に書き込まれると、ヒット・ビット6
0(図6に示す)は変更されない。このため、新たにデ
ィスパッチされたLOAD命令は、ロード・バッファ内で未
決のLOADと比較される。必要であれば、ヒット・ビット
60はロード・バッファ54へ転送される途中で変更さ
れる。例えば、同一のタグを伴い同一のラインに対する
別のLOADが生じた時、LOADが内部キャッシュ51にミス
するとともに、外部キャッシュ55にアクセスしている
なら、後者のLOADをヒットに変更することを前もって知
ることが望ましい。それにより、ロード/バッファ・ユ
ニット50はそのLOADに対して外部キャッシュ55へ出
向くことはない。同様に、第2LOADが同一のラインにあ
るが、そのLOADは内部キャッシュ51内に存在するライ
ンのタグを有するなら、そのLOADが未決のLOADと置き換
えられることが望ましい。それにより、ロード/バッフ
ァ・ユニット50は、そのLOADに対して実際にアクセス
が起きる前に、外部キャッシュ55へのアクセスを開始
することができる。
編成を示す。少なくとも、ロード・バッファ65は宛先
レジスタ・アドレス61、内部キャッシュ51(図5に
示す)への指標62、ロードされるメモリ・アドレスと
関連したタグ63、及びロードされるメモリ・アドレス
のソース・アドレス64を格納しなければならない。ロ
ードされるソース・アドレス64に関しては、アーキテ
クチャ内の仮想から物理への変換を行う場所に依存し
て、ロード・バッファ65は物理アドレス又は仮想アド
レスの何れかを格納する。どちらの場合においても、タ
グ63又は指標62の何れか、或いは両者63,62は
ソース・メモリ・アドレス64の部分集合である。内部
キャッシュ51(図5に示す)が仮想的に指標付けされ
るとともに、仮想的にタグ付けされているなら、タグ6
3及び指標62は仮想アドレスとほぼ等しい。内部キャ
ッシュ51(図5に示す)が物理的に指標付けされると
ともに、物理的にタグ付けされるなら、タグ63及び指
標62は物理アドレスとほぼ等しい。内部キャッシュ5
1(図5に示す)が仮想的に指標付けされるとともに、
物理的にタグ付けされるなら、タグ63は物理アドレス
の上位ビットで表され、指標62は仮想アドレスの下位
ビットで表される。内部キャッシュ51(図5に示す)
が物理的に指標付けされるとともに、仮想的にタグ付け
されるなら、タグ63は仮想アドレスの上位ビットで表
され、指標62は物理アドレスの下位ビットで表され
る。図6に示すように、ロード・バッファ65のデータ
編成は、仮想的に指標付けされるとともに、物理的にタ
グ付けされたキャッシュ51を伴って使用されるように
なっている。そのキャッシュ51内で行われる仮想から
物理へのアドレス変換は、ロード・バッファ65内のエ
ントリに先立って行われる。従って、タグ63は独立し
て格納されることはない。新たにディスパッチされたLO
ADがロード・バッファ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のヒット・ビット6
0の確定を制御する。上述した論理は、以下の方法によ
り達成される。ロード・バッファ内に1つでも指標の一
致が見つかれば、新たにディスパッチされたLOADのヒッ
ト・ビット60は、整合指標62を有する最も新しいエ
ントリのタグ63の整合信号の値を受け取る。ロード・
バッファ65内に指標の一致が見つからなければ、ヒッ
ト・ビット60は未処理のヒット・ビット552(図5
に示す)の値を受け取る。
を有するハードウエアの構造は、ロード・バッファ内の
新しいエントリに対するヒット・ビット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つが活性状態であれば、パス・ゲート8
0は対応するタグ81をタグ比較バス82上へ転送す
る。タグ比較回路としての比較器83は新しいLOADのタ
グ84を比較バス82上のタグと比較する(比較工
程)。両者が同一であると検出されたなら、タグ整合信
号85が活性状態となる。1つ以上の指標76が一致し
たなら、論理和ゲート86は、ヒット・ビットの値70
に対するタグ整合信号85を選択するために、ヒット・
ビット割り付け回路としてのマルチプレクサ87へ制御
する。どの指標76も一致しないなら、論理和ゲート8
6はヒット・ビットの値70として未処理のヒット・ビ
ット88を選択するために、マルチプレクサ87へ制御
する。
ドウエアは、一例として表されている。同じ目的を達成
する多くの論理的な実現方法がある。例えば、比較器7
4の数を減らすことにより、ヒット・ビットを演算する
待ち時間を減少させるべく、各ロード・バッファエント
リに対する別々のタグ整合信号の生成を行ってもよい。
特許請求の範囲は、そのような多数の別の実施形態を含
んでいる。
ての特徴を含んでいる。図5は、好ましい実施形態に基
づいた機能ユニット50の構造を示す概略的なブロック
図である。機能ユニット50は、内部の1次キャッシュ
51及び外部の2次キャッシュ55を備えている。両キ
ャッシュ50,51はダイレクト・マッピングされる。
内部キャッシュ51(図5に示す)はタグRAMアレイ
58及びデータRAMアレイ59に別れている。LOADは
指定されたソース・データに対する仮想アドレスを指定
する。タグRAM配列58は2つのアクセス・ポート5
7,550を有する。第1アクセス・ポートとしての第
1ポート57は主として、入力されたLOADのソース・ア
ドレス553に対するタグ53の検索に用いられる。第
2アクセス・ポートとしての第2ポート550は主とし
て、内部キャッシュ51中に割り付けられている記憶位
置に対する第2タグの書き込みに用いられる。2つのア
クセス・ポート52,550が別々であるため、第1タ
グ53の検索及び第2タグの書き込みを同時に行うこと
ができる。
れるとともに、物理的にタグ付けされている。外部キャ
ッシュ55は物理的に指標付けされるとともに、仮想的
にタグ付けされている。そのため、仮想アドレスの下位
ビットは内部キャッシュ51内のキャッシュ・ラインを
表し、物理アドレスの下位ビットは外部キャッシュ55
内のキャッシュ・ラインを表している。両キャッシュ5
1,55において、物理アドレスの上位ビットはタグを
表している。変換索引バッファ554(TLB )はアドレ
ス変換器の一部を構成し、変換可能な仮想アドレスから
物理アドレスへの変換の一部を格納する。キャッシュ5
1,55は物理的にタグ付けされているため、TLB 55
4の出力555の上位ビット52は、タグRAM58か
ら検索されたタグ53と比較される。タグ比較器556
(未処理ヒット比較回路、及び未処理ヒット・ビット活
性状態生成回路を構成する。)がその同一性を検出した
ら、指定されたデータは現在内部キャッシュ51内に存
在することになる。ロード・バッファ54が空であれ
ば、キャッシュ・ヒットにより内部キャッシュ51のデ
ータRAM配列59からデータを即座に返還できる。し
かしながら、全てのLOADがデータを順に返還する必要が
あることから、ロード・バッファ54が空でない場合に
は、LOADは内部キャッシュ51にヒットしたとしてもLO
ADは待ち行列をなす。ロード・バッファ54が空でない
なら、それは1つ以上のLOADが内部キャッシュ51にミ
スしたことが原因である。このため、後続のLOADは内部
キャッシュ51をミスしたLOADを待たなければならな
い。
す前に内部キャッシュ51にヒットしたLOADによって指
定されたデータは、そのLOADがロード・バッファ54の
待ち行列551の先頭に届くまでに内部キャッシュ51
から取り除かれる。このため、LOADが内部キャッシュ5
1の待ち行列551の先頭に届く時に、内部キャッシュ
51内で指定されたデータが用いられるか否かを予測す
べく演算が行われる。演算は、タグ比較器556により
生成されたヒット信号552や、ロード・バッファ54
内で待ち行列をなすLOADの指標62及びタグ63(共に
図6に示す)を含む。
含む望ましい実施形態に関して詳述されている。この実
施形態は例として開示されている。本発明の趣旨を逸脱
しない範囲おいて、添付の特許請求の範囲によりカバー
されようとする創作力に富んだ特徴と均等なものが多々
ある。
ブロック図。
図。
動作を示す図。
実行を示す図。
略的なブロック図。
の編成を示す図。
するハードウエアを示す概略図。
シュ、52…物理アドレス・ビット、53…第1タグ、
54,65…ロード・バッファ、55…2次キャッシュ
としての外部キャッシュ、56…メモリ管理ユニット、
57…第1アクセス・ポートとしてのタグ・ポート、5
8…タグ・アレイ、59…データ・アレイ、60…ヒッ
ト・ビット、62…指標、63…タグ、74…指標比較
回路、77…指標整合活性状態生成回路としての優先順
位回路、83…タグ比較回路としてのタグ比較器、87
…ヒット・ビット割り付け回路としてのマルチプレク
サ、550…第2アクセス・ポートとしての第2ポー
ト、554…変換索引バッファ(554はアドレス変換
器の一部を構成する)、556…未処理ヒット比較回路
及び未処理ヒット・ビット活性状態生成回路としてのタ
グ比較器。
Claims (38)
- 【請求項1】 選択された記憶位置からのデータを格納
するキャッシュのデータ・アレイと、 選択された記憶位置のタグを格納するキャッシュのタグ
・アレイと、 各記憶位置がデータを含み、その複数の記憶位置を管理
するとともに、キャッシュのデータ・アレイ及びキャッ
シュのタグ・アレイに接続されたメモリ・ユニットと、 キャッシュのデータ・アレイ、キャッシュのタグ・アレ
イ及びメモリ・ユニットに接続されたロード・バッファ
とを備え、 前記タグ・アレイは第1タグを検索するための第1アク
セス・ポートと、キャッシュのタグ・アレイ中に選択さ
れた記憶位置の第2タグを書き込むための第2アクセス
・ポートとを有し、第1タグの検索及び第2タグの書き
込みが同時に発生し得、かつ、 前記メモリ・ユニットは、メモリ・ユニット自身又はキ
ャッシュのデータ・アレイの何れかに対する連続的なア
クセスついてのLOAD命令の待ち行列を形成するための1
つ以上のエントリを有するプロセッサの機能ユニット。 - 【請求項2】 仮想アドレスの入力及び物理アドレスの
出力を有するアドレス変換器と、 タグ・アレイの第1アクセス・ポートから検索された第
1タグをアドレス変換器からの物理アドレスの出力の一
部と比較するとともに、第1タグと物理アドレスの出力
の一部が一致する場合にヒット信号を活性状態にするタ
グ比較器とを更に備えた請求項1に記載のプロセッサの
機能ユニット。 - 【請求項3】 メモリ・ユニットは、キャッシュのデー
タ・アレイに格納されるデータよりも多くのデータをキ
ャッシュするとともに、メモリ管理ユニットとのインタ
ーフェイスを提供する第2キャッシュ・サブシステムを
備えた請求項1に記載のプロセッサの機能ユニット。 - 【請求項4】 アドレス変換器は、仮想アドレスから物
理アドレスへの変換可能な全ての変換の一部を管理する
変換索引バッファを備えた請求項2に記載のプロセッサ
の機能ユニット。 - 【請求項5】 新たなLOAD命令はロードされる新たなLO
ADのアドレスを指定するとともに、新たなLOADの指標と
新たなLOADのタグとを有し、ロード・バッファはLOAD命
令の待ち行列を形成するとともに、タグと、指標と、各
LOAD命令に対するヒット・ビット情報と、指標整合信号
と、タグ整合信号とを管理し、ヒット・ビットの値は新
たなLOAD命令がロード・バッファ内で最も古いLOAD命令
になる時、LOAD命令により指定されたデータがキャッシ
ュ内に存在するか否かを示すことにより新たなLOAD命令
をサービスできる、新たなLOAD命令に対するヒット・ビ
ットの生成方法において、 新たなLOADのタグをキャッシュ内に格納されたキャッシ
ュのタグと比較し、その比較により新たなLOADのタグと
キャッシュのタグとが同一であると検出された場合、未
処理のヒット・ビットを活性状態とし、その比較により
新たなLOADのタグとキャッシュのタグとが異なると検出
された場合、未処理のヒット・ビットを不活性状態とす
る比較工程と、 新たなLOADの指標をロード・バッファ内に管理された各
指標と比較し、新たなLOADの指標が各LOAD命令に対する
各指標と等しい場合、ロード・バッファ内の一致したLO
AD命令に対する指標整合信号を活性状態とし、新たなLO
ADの指標が各LOAD命令に対する各指標と異なる場合、ロ
ード・バッファ内の不一致であったLOAD命令に対する指
標整合信号を不活性状態とする比較工程と、 1つ以上の指標整合信号が活性状態である場合に、新た
なLOADのタグを、活性状態である指標整合信号を有する
最新のLOAD命令に対するロード・バッファ内に管理され
たタグと比較する比較工程と、 LOAD命令が活性状態の指標整合信号を全く備えていない
場合、未処理のヒット信号と同一の値をヒット・ビット
に割り付ける割り付け工程と、 新たなLOADのタグと、活性状態の指標整合信号を有する
最新のLOAD命令に対してロード・バッファ内で管理され
るタグとが同一である場合、及び1つ以上のLOAD命令が
活性状態の指標整合信号を有する場合に、ヒット・ビッ
トを活性状態とする活性状態生成工程と、 新たなLOADのタグと、活性状態の指標整合信号を有する
最新のLOAD命令に対してロード・バッファ内で管理され
るタグとが異なる場合、及び1つ以上のLOAD命令が活性
状態の指標を有する場合に、ヒット・ビットを不活性状
態とする不活性状態生成工程とを有する新たなLOAD命令
に対するヒット・ビットの生成方法。 - 【請求項6】 新たなLOADのタグは、仮想アドレスに対
応する物理アドレスの上位ビットである請求項5に記載
の新たなLOAD命令に対するヒット・ビットの生成方法。 - 【請求項7】 ロード・バッファ内で管理されるタグは
物理アドレスの上位ビットである請求項6に記載の新た
なLOAD命令に対するヒット・ビットの生成方法。 - 【請求項8】 新たなLOADの指標は仮想アドレスの下位
ビットである請求項7に記載の新たなLOAD命令に対する
ヒット・ビットの生成方法。 - 【請求項9】 ロード・バッファ内で管理される指標は
仮想アドレスの下位ビットである請求項8に記載の新た
なLOAD命令に対するヒット・ビットの生成方法。 - 【請求項10】 LOAD命令の待ち行列を形成するロード
・バッファ内のLOAD命令を管理するためのロード・バッ
ファ・エントリにおいて、 要求されたデータが検索されるべきソースを指定するソ
ース・アドレス情報と、 要求されたデータが転送されるべき宛先を指定する宛先
アドレス情報と、 LOAD命令がサービスされる時、要求されたデータがキャ
ッシュ内にあるか否を示すヒット・ビットとを有するロ
ード・バッファ・エントリ。 - 【請求項11】 要求されたデータが格納され得るキャ
ッシュラインを指定する指標情報と、 LOAD命令がサービスされた後、キャッシュライン内に格
納される記憶位置を指定するタグ情報とを更に有する請
求項10に記載のロード・バッファ・エントリ。 - 【請求項12】 タグ情報は物理アドレスの上位ビット
である請求項11に記載のロード・バッファ・エント
リ。 - 【請求項13】 指標情報は仮想アドレスの下位ビット
である請求項12に記載のロード・バッファ・エント
リ。 - 【請求項14】 ダイレクト・マッピングされるキャッ
シュを備えたシステムにて、メモリ・アドレスの内容に
対するLOAD命令をサービスする方法において、 1つ以上の古いLOAD命令がダイレクト・マッピングされ
たキャッシュを変更する将来のある時期に、メモリ・ア
ドレスの内容がダイレクト・マッピングされたキャッシ
ュ内に存在するか否かを演算する演算工程と、 ロード・バッファ内のメモリ・アドレスの内容に対する
LOAD命令の待ち行列を形成する待ち行列形成工程と、 全ての古いLOAD命令が処理されるまで待機する待機工程
と、 演算工程により、メモリ・アドレスの内容がダイレクト
・マッピングされたキャッシュ内に存在すると確定され
る場合、メモリ・アドレスの内容を検索するためにダイ
レクト・マッピングされたキャッシュにアクセスするア
クセス工程とを有するLOAD命令をサービスする方法。 - 【請求項15】 ダイレクト・マッピングされたキャッ
シュはタグ・アレイ及びデータ・アレイを有し、演算工
程の前に、 メモリ・アドレスはタグの記憶位置へダイレクト・マッ
ピングされ、タグ・アレイ内のタグの記憶位置からタグ
を検索する検索工程と、 検索工程が行われる時に、メモリ・アドレスの内容がダ
イレクト・マッピングされたキャッシュ内に存在するか
否かを確定する確定工程とを更に有する請求項14に記
載のLOAD命令をサービスする方法。 - 【請求項16】 アクセス工程は検索工程を繰り返すこ
となく行われる請求項15に記載のLOAD命令をサービス
する方法。 - 【請求項17】 タグ・アレイはランダム・アクセス・
メモリである請求項15に記載のLOAD命令をサービスす
る方法。 - 【請求項18】 タグ・アレイは2重ポートを有する請
求項17に記載のLOAD命令をサービスする方法。 - 【請求項19】 データ・アレイはランダム・アクセス
・メモリである請求項15に記載のLOAD命令をサービス
する方法。 - 【請求項20】 キャッシュ、第2メモリ・システム及
びロード・バッファを有するシステムにおいて、ロード
・バッファは、LOAD命令が要求に従いキャッシュ又は第
2メモリ・システムの何れかへのアクセスを待つ間に、
LOAD命令を保持する先入れ先出しの待ち行列であり、ロ
ード・バッファは待ち行列位置の先頭を有し、キャッシ
ュへのアクセスは第1待ち時間を伴って起こり、第2メ
モリ・システムへのアクセスは第1待ち時間よりも長い
第2待ち時間を伴って起きるLOAD命令をサービスする方
法において、 第1LOAD命令により要求されたデータがキャッシュ内に
ない時、待ち行列位置の先頭にある第1LOAD命令に対す
る第2メモリ・システムにアクセスするアクセス工程
と、 第1LOAD命令により要求されたデータがキャッシュ内に
ある時、待ち行列位置の先頭にある第1LOAD命令に対す
るキャッシュをアクセスするアクセス工程と、 第1LOAD命令が待ち行列位置の先頭にあり、かつ第1LO
AD命令がキャッシュをアクセスしている時、待ち行列の
先頭にまだ位置していない第2LOAD命令に対する第2メ
モリ・システムにアクセスするアクセス工程と、を有
し、キャッシュ及び第2メモリ・システムはそれぞれ第
1及び第2LOAD命令により同時にアクセスされ、全ての
LOAD命令はロード・バッファ内の順序と同一の順序で実
行されるLOAD命令をサービスする方法。 - 【請求項21】 第2メモリ・システムは2次キャッシ
ュである請求項20に記載のLOAD命令をサービスする方
法。 - 【請求項22】 キャッシュは仮想的に指標付けされる
とともに、物理的にタグ付けされる請求項21に記載の
LOAD命令をサービスする方法。 - 【請求項23】 2次キャッシュは物理的に指標付けさ
れ、物理的にタグ付けされる請求項22に記載のLOAD命
令をサービスする方法。 - 【請求項24】 新たなLOAD命令はロードされる新たな
LOADのアドレスを指定するとともに、新たなLOADの指標
及び新たなLOADのタグを有し、ロード・バッファはLOAD
命令の待ち行列を形成するとともに、タグと、指標と、
各LOAD命令に対するヒット・ビット情報と、指標整合信
号と、タグ整合信号とを管理し、ヒット・ビットの値は
新たなLOAD命令がロード・バッファ内で最も古いLOAD命
令になる時、LOAD命令により指定されたデータがキャッ
シュ内に存在するか否を示して新たなLOAD命令がサービ
スされ得る、新たなLOAD命令に対するヒット・ビットの
生成装置において、 新たなLOADのタグをキャッシュ内に格納されたキャッシ
ュのタグと比較するための未処理ヒット比較回路と、 未処理ヒット比較回路が新たなLOADのタグとキャッシュ
のタグとが同一であると検出した場合、未処理のヒット
信号を活性状態とするとともに、未処理ヒット比較回路
が新たなLOADのタグとキャッシュのタグとが異なると検
出した場合、未処理のヒット・ビットを不活性状態とす
るための未処理ヒット・ビット活性状態生成回路と、 新たなLOADの指標をロード・バッファ内に管理された指
標と比較するための指標比較回路と、 新たなLOADの指標が各LOAD命令に対する各指標と等しい
場合、ロード・バッファ内の一致したLOAD命令に対する
指標整合信号を活性状態とするとともに、新たなLOADの
指標が各LOAD命令に対する各指標と異なる場合、ロード
・バッファ内の不一致であったLOAD命令に対する指標整
合信号を不活性状態とするための指標整合活性状態生成
回路と、 1つ以上の指標整合信号が活性状態である場合に、新た
なLOADのタグと、指標整合信号を活性状態にする最新の
LOAD命令に対するロード・バッファ内に管理されたタグ
とを比較するタグ比較回路と、 LOAD命令が活性状態の指標整合信号を備えていない場
合、未処理のヒット信号と同一の値をヒット・ビットに
割り付けるとともに、新たなLOADのタグと、活性状態の
指標整合信号を有する最新のLOAD命令に対してロード・
バッファ内で管理されるタグとが同一である場合、及び
1つ以上のLOAD命令が活性状態の指標整合信号を有する
場合に、ヒット・ビットを活性状態とし、新たなLOADの
タグと、活性状態の指標整合信号を有する最新のLOAD命
令に対してロード・バッファ内で管理されるタグとが異
なる場合、及び1つ以上のLOAD命令の指標が活性状態で
ある場合に、ヒット・ビットを不活性状態とするための
ヒット・ビット割り付け回路とを有する新たなLOAD命令
に対するヒット・ビットの生成装置。 - 【請求項25】 新たなLOADのタグは、仮想アドレスに
対応する物理アドレスの上位ビットである請求項24に
記載の新たなLOAD命令に対するヒット・ビットの生成装
置。 - 【請求項26】 ロード・バッファ内で管理されるタグ
は、物理アドレスの上位ビットである請求項24に記載
の新たなLOAD命令に対するヒット・ビットの生成装置。 - 【請求項27】 新たなLOADの指標は仮想アドレスの下
位ビットである請求項26に記載の新たなLOAD命令に対
するヒット・ビットの生成装置。 - 【請求項28】 ロード・バッファ内で管理される指標
は、仮想アドレスの下位ビットである請求項27に記載
の新たなLOAD命令に対するヒット・ビットの生成装置。 - 【請求項29】 ダイレクト・マッピングされるキャッ
シュを備えたシステムにて、メモリ・アドレスの内容に
対してLOAD命令をサービスする装置において、 1つ以上の古いLOAD命令がダイレクト・マッピングされ
たキャッシュを変更する将来のある時期に、メモリ・ア
ドレスの内容がダイレクト・マッピングされたキャッシ
ュ内に存在するか否かを演算するための演算回路と、 ロード・バッファ内のメモリ・アドレスの内容に対する
LOAD命令の待ち行列を形成するための待ち行列形成回路
と、 全ての古いLOAD命令が処理されるまで待機させるための
待機回路と、 演算回路が、メモリ・アドレスの内容がダイレクト・マ
ッピングされたキャッシュ内に存在すると確定する場
合、メモリ・アドレスの内容を検索するためにダイレク
ト・マッピングされたキャッシュにアクセスするための
アクセス回路とを有するLOAD命令をサービスする装置。 - 【請求項30】 ダイレクト・マッピングされたキャッ
シュはタグ・アレイ及びデータ・アレイを有し、 メモリ・アドレスがタグの記憶位置へダイレクト・マッ
ピングする、タグ・アレイ内のタグの記憶位置からタグ
を検索するための検索回路と、 検索回路が検索を行う時に、メモリ・アドレスの内容が
ダイレクト・マッピングされたキャッシュ内に存在する
か否かを確定する確定回路とを有する請求項29に記載
のLOAD命令をサービスする装置。 - 【請求項31】 アクセス回路及び検索回路は、それぞ
れダイレクト・マッピングされたキャッシュのアクセス
とタグの検索を同時に行わない請求項30に記載のLOAD
命令をサービスする装置。 - 【請求項32】 タグ・アレイはランダム・アクセス・
メモリである請求項30に記載のLOAD命令をサービスす
る装置。 - 【請求項33】 タグ・アレイは2重ポートを有する請
求項32に記載のLOAD命令をサービスする装置。 - 【請求項34】 データ・アレイはランダム・アクセス
・メモリである請求項30に記載のLOAD命令をサービス
する装置。 - 【請求項35】 キャッシュ、第2メモリ・システム及
びロード・バッファを有するシステムにおいて、ロード
・バッファは、LOAD命令が要求に従いキャッシュ又は第
2メモリ・システムの何れかへのアクセスを待つ間に、
LOAD命令を保持する先入れ先出しの待ち行列であり、ロ
ード・バッファは待ち行列位置の先頭を有し、キャッシ
ュへのアクセスは第1待ち時間を伴って起こり、第2メ
モリ・システムへのアクセスは第1待ち時間よりも長い
第2待ち時間を伴って起きるLOAD命令をサービスする装
置において、 第1LOAD命令により要求されたデータがキャッシュ内に
ない時、待ち行列位置の先頭にある第1LOAD命令に対す
る第2メモリ・システムにアクセスするための第1アク
セス回路と、 第1LOAD命令により要求されたデータがキャッシュ内に
ある時、待ち行列位置の先頭にある第1LOAD命令に対す
るキャッシュをアクセスするための第2アクセス回路
と、 第1LOAD命令が待ち行列位置の先頭にあり、かつ第1LO
AD命令がキャッシュをアクセスしている時、待ち行列位
置の先頭にまだない第2LOAD命令に対する第2メモリ・
システムにアクセスするための第3アクセス回路と、 を有し、キャッシュ及び第2メモリ・システムはそれぞ
れ第1及び第2LOAD命令により同時にアクセスされ、全
てのLOAD命令はロード・バッファ内の順序と同一の順序
で実行されるLOAD命令をサービスする装置。 - 【請求項36】 第2メモリ・システムは2次キャッシ
ュである請求項35に記載のLOAD命令をサービスする装
置。 - 【請求項37】 キャッシュは仮想的に指標付けされ、
物理的にタグ付けされる請求項36に記載のLOAD命令を
サービスする装置。 - 【請求項38】 2次キャッシュは物理的に指標付けさ
れ、物理的にタグ付けされる請求項37に記載のLOAD命
令をサービスする装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/389,636 US5745729A (en) | 1995-02-16 | 1995-02-16 | Methods and apparatuses for servicing load instructions |
US08/389636 | 1995-02-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08272682A true JPH08272682A (ja) | 1996-10-18 |
JP3875738B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010146084A (ja) * | 2008-12-16 | 2010-07-01 | Toshiba Corp | キャッシュメモリ制御部を備えるデータ処理装置 |
Families Citing this family (49)
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 |
US6460119B1 (en) * | 1997-12-29 | 2002-10-01 | Intel Corporation | Snoop blocking for cache coherency |
US6209068B1 (en) * | 1997-12-29 | 2001-03-27 | Intel Corporation | Read line buffer and signaling protocol for processor |
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 |
ATE467171T1 (de) * | 1998-08-24 | 2010-05-15 | 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 |
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 |
US6311254B1 (en) | 1999-03-18 | 2001-10-30 | International Business Machines Corporation | Multiple store miss handling in a cache memory 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 |
US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache mechanism |
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 |
US6434667B1 (en) | 1999-06-25 | 2002-08-13 | International Business Machines Corporation | Layered local cache with imprecise reload mechanism |
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 |
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 |
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 |
US6397300B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | High performance store instruction management via imprecise local cache update 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 | 携帯無線端末装置 |
EP1425670A2 (en) * | 2001-09-14 | 2004-06-09 | Sun Microsystems, Inc. | Method and apparatus for decoupling tag and data accesses in a cache memory |
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 |
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)
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 |
WO1994008287A1 (en) * | 1992-09-29 | 1994-04-14 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
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 |
-
1995
- 1995-02-16 US US08/389,636 patent/US5745729A/en not_active Expired - Lifetime
-
1996
- 1996-02-15 JP JP02797396A patent/JP3875738B2/ja not_active Expired - Lifetime
- 1996-02-16 KR KR1019960003793A patent/KR100397683B1/ko not_active IP Right Cessation
-
1997
- 1997-10-07 US US08/946,611 patent/US5802575A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010146084A (ja) * | 2008-12-16 | 2010-07-01 | Toshiba Corp | キャッシュメモリ制御部を備えるデータ処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3875738B2 (ja) | 2007-01-31 |
KR100397683B1 (ko) | 2003-11-28 |
US5802575A (en) | 1998-09-01 |
US5745729A (en) | 1998-04-28 |
KR960032183A (ko) | 1996-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3875738B2 (ja) | ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 | |
US11803486B2 (en) | Write merging on stores with different privilege levels | |
US6212602B1 (en) | Cache tag caching | |
EP0795820B1 (en) | Combined prefetch buffer and instructions cache memory system and method for providing instructions to a central processing unit utilizing said system. | |
US6470437B1 (en) | Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
US5353426A (en) | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete | |
US6317811B1 (en) | Method and system for reissuing load requests in a multi-stream prefetch design | |
US5875472A (en) | Address conflict detection system employing address indirection for use in a high-speed multi-processor system | |
US5715427A (en) | Semi-associative cache with MRU/LRU replacement | |
US6212603B1 (en) | Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory | |
US6874077B2 (en) | Parallel distributed function translation lookaside buffer | |
US6012134A (en) | High-performance processor with streaming buffer that facilitates prefetching of instructions | |
US7039768B2 (en) | Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions | |
US6539457B1 (en) | Cache address conflict mechanism without store buffers | |
US6332179B1 (en) | Allocation for back-to-back misses in a directory based cache | |
US6557078B1 (en) | Cache chain structure to implement high bandwidth low latency cache memory subsystem | |
US6507892B1 (en) | L1 cache memory | |
JPH10214226A (ja) | 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム | |
JP3431878B2 (ja) | マルチスレッド・プロセッサの命令キャッシュ | |
EP0741356A1 (en) | Cache architecture and method of operation | |
EP0442690A2 (en) | Data cache store buffer for high performance computer |
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 |