JPH1074166A - 多重レベル・ダイナミック・セット予測方法および装置 - Google Patents
多重レベル・ダイナミック・セット予測方法および装置Info
- Publication number
- JPH1074166A JPH1074166A JP9076701A JP7670197A JPH1074166A JP H1074166 A JPH1074166 A JP H1074166A JP 9076701 A JP9076701 A JP 9076701A JP 7670197 A JP7670197 A JP 7670197A JP H1074166 A JPH1074166 A JP H1074166A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- memory
- items
- level cache
- level
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 多数のトレースまたはピンあるいはその両方
を必要とせずに、(オンチップまたはオフチップの)二
次レベル・キャッシュでセットアソシアティブ構造を使
用する。 【解決手段】 一次レベル・キャッシュ・ミスの場合、
二次レベル・セット予測情報を使用して、Nウェイ・オ
フチップ・セットアソシアティブ・キャッシュ内のセッ
トを選択する。セット予測を使用するので、予測誤りま
たは二次レベル・キャッシュのミスがない場合、正しい
セットを予測したかを判断するための比較に要するその
後のアクセス時間が最長タイミング経路にはない。
を必要とせずに、(オンチップまたはオフチップの)二
次レベル・キャッシュでセットアソシアティブ構造を使
用する。 【解決手段】 一次レベル・キャッシュ・ミスの場合、
二次レベル・セット予測情報を使用して、Nウェイ・オ
フチップ・セットアソシアティブ・キャッシュ内のセッ
トを選択する。セット予測を使用するので、予測誤りま
たは二次レベル・キャッシュのミスがない場合、正しい
セットを予測したかを判断するための比較に要するその
後のアクセス時間が最長タイミング経路にはない。
Description
【0001】
【発明の属する技術分野】本発明は、キャッシュ・メモ
リ・システムに関し、具体的にはキャッシュ・メモリの
予測アクセスに係わる。
リ・システムに関し、具体的にはキャッシュ・メモリの
予測アクセスに係わる。
【0002】
【従来の技術】コンピュータ・システムのパフォーマン
スを向上させるために、小さく迅速にアクセス可能なキ
ャッシュ・メモリが使用されている。最も普及している
2つのタイプのキャッシュ・メモリは、ダイレクトマッ
プ・キャッシュ・メモリとセットアソシアティブ・キャ
ッシュ・メモリである。さらに、複数レベルのキャッシ
ュ・メモリを使用することができ、一次レベル・キャッ
シュをマイクロプロセッサと同じ半導体チップ上に設
け、二次レベルのキャッシュ・メモリをSRAMなどの
別個のチップ内に設けることができる。これらのキャッ
シュ・メモリは、命令とデータの両方を保持する統合キ
ャッシュとすることも、命令キャッシュとデータ・キャ
ッシュを別々に使用することもできる。さらに、ページ
ングを含むアドレス変換を使用するシステムでは、ペー
ジ・テーブルの小部分のキャッシュが一般にマイクロプ
ロセッサ・チップ上で使用され、アドレス変換バッファ
(TLB)と呼ばれる。
スを向上させるために、小さく迅速にアクセス可能なキ
ャッシュ・メモリが使用されている。最も普及している
2つのタイプのキャッシュ・メモリは、ダイレクトマッ
プ・キャッシュ・メモリとセットアソシアティブ・キャ
ッシュ・メモリである。さらに、複数レベルのキャッシ
ュ・メモリを使用することができ、一次レベル・キャッ
シュをマイクロプロセッサと同じ半導体チップ上に設
け、二次レベルのキャッシュ・メモリをSRAMなどの
別個のチップ内に設けることができる。これらのキャッ
シュ・メモリは、命令とデータの両方を保持する統合キ
ャッシュとすることも、命令キャッシュとデータ・キャ
ッシュを別々に使用することもできる。さらに、ページ
ングを含むアドレス変換を使用するシステムでは、ペー
ジ・テーブルの小部分のキャッシュが一般にマイクロプ
ロセッサ・チップ上で使用され、アドレス変換バッファ
(TLB)と呼ばれる。
【0003】4種類のキャッシュがある。その4種類と
は、ダイレクトマップ、フルアソシアティブ、セットア
ソシアティブ、および予測セットアソシアティブであ
る。以下に、これらについて簡単に説明する。
は、ダイレクトマップ、フルアソシアティブ、セットア
ソシアティブ、および予測セットアソシアティブであ
る。以下に、これらについて簡単に説明する。
【0004】図1に、典型的な従来技術のTLB60と
ダイレクトマップ・キャッシュ62を示す。キャッシュ
が物理アドレス・キャッシュである場合、レジスタ66
内の物理アドレスによってアドレスされることになる。
仮想アドレス・キャッシュである場合は、仮想アドレス
によって直接アドレスすることができる。図1に物理ア
ドレス・キャッシュを示す。レジスタ64内の仮想アド
レスは、オフセット部分とページ部分を有する。ページ
部分はTLB60に供給され、ページがTLB内のタグ
と比較されて、そのページが存在するかどうかを識別す
る。存在する場合は、変換された物理ページが物理アド
レス・レジスタ66に送られる。レジスタ66は変換さ
れたページを仮想アドレス・レジスタ64からのオフセ
ットと結合する。その後でこのアドレスをキャッシュ・
メモリに送ることができる。TLB自体がキャッシュで
あり、ダイレクトマップまたはセットアソシアティブあ
るいは他の構造とすることができる。TLBでミスだっ
た場合は、たとえば二次レベル・キャッシュである外部
メモリ内のページ・テーブル全体にアクセスすることが
できる。ページ・テーブルも多重レベルのページ・テー
ブルとすることができ、セグメンテーション方式または
その他のアドレス指定方式と組み合わせてメモリ空間を
区分化することができる。
ダイレクトマップ・キャッシュ62を示す。キャッシュ
が物理アドレス・キャッシュである場合、レジスタ66
内の物理アドレスによってアドレスされることになる。
仮想アドレス・キャッシュである場合は、仮想アドレス
によって直接アドレスすることができる。図1に物理ア
ドレス・キャッシュを示す。レジスタ64内の仮想アド
レスは、オフセット部分とページ部分を有する。ページ
部分はTLB60に供給され、ページがTLB内のタグ
と比較されて、そのページが存在するかどうかを識別す
る。存在する場合は、変換された物理ページが物理アド
レス・レジスタ66に送られる。レジスタ66は変換さ
れたページを仮想アドレス・レジスタ64からのオフセ
ットと結合する。その後でこのアドレスをキャッシュ・
メモリに送ることができる。TLB自体がキャッシュで
あり、ダイレクトマップまたはセットアソシアティブあ
るいは他の構造とすることができる。TLBでミスだっ
た場合は、たとえば二次レベル・キャッシュである外部
メモリ内のページ・テーブル全体にアクセスすることが
できる。ページ・テーブルも多重レベルのページ・テー
ブルとすることができ、セグメンテーション方式または
その他のアドレス指定方式と組み合わせてメモリ空間を
区分化することができる。
【0005】図1の例には、ダイレクトマップ・キャッ
シュが図示されている。物理アドレスがバス68でキャ
ッシュのアドレス入力端子に送られ、キャッシュ項目を
見つけ出すことができる1つの記憶場所が下位ビットを
使って直接選択される。比較器70で、上位ビットを持
つタグを物理アドレスの上位ビットと比較し、ヒット
(キャッシュ内の正しいアドレス)があるかどうかを調
べる。しかし、キャッシュ項目はタグ比較を待たずにた
だちに入手することができる。ミス標識を使用して、キ
ャッシュから取り出された命令を後で無効化することが
できる。
シュが図示されている。物理アドレスがバス68でキャ
ッシュのアドレス入力端子に送られ、キャッシュ項目を
見つけ出すことができる1つの記憶場所が下位ビットを
使って直接選択される。比較器70で、上位ビットを持
つタグを物理アドレスの上位ビットと比較し、ヒット
(キャッシュ内の正しいアドレス)があるかどうかを調
べる。しかし、キャッシュ項目はタグ比較を待たずにた
だちに入手することができる。ミス標識を使用して、キ
ャッシュから取り出された命令を後で無効化することが
できる。
【0006】おわかりのように、ダイレクトマップ・キ
ャッシュは常に特定の範囲のアドレスをキャッシュ内の
特定の物理領域に送る。その結果、特定のプログラムの
メモリ・アクセスが1つまたは2つの範囲内に集中し、
その範囲がキャッシュの同一領域にマップされることに
なる、非効率的なキャッシュになる可能性がある。その
代わり、物理アドレスと同じ時点で選択情報が供給され
るのでアクセス時間がより速い。
ャッシュは常に特定の範囲のアドレスをキャッシュ内の
特定の物理領域に送る。その結果、特定のプログラムの
メモリ・アクセスが1つまたは2つの範囲内に集中し、
その範囲がキャッシュの同一領域にマップされることに
なる、非効率的なキャッシュになる可能性がある。その
代わり、物理アドレスと同じ時点で選択情報が供給され
るのでアクセス時間がより速い。
【0007】図2に、図1のダイレクトマップ・キャッ
シュの代わりに使用することができる4ウェイ・セット
アソシアティブ・キャッシュを示す。例として4ウェイ
・キャッシュを選定したに過ぎず、Nウェイ・キャッシ
ュとして異なる数も使用可能であることに留意された
い。図2には4つのセットが図示されているが、各セッ
トは別々の項目部分74とタグ部分72を有する。特定
のアドレス範囲からのデータが4つのセットのいずれに
も記憶することができ、ダイレクトマップ・キャッシュ
のようにキャッシュの1つの特定の領域には制限されな
い。したがって、特定のプログラムが、ダイレクトマッ
プ・キャッシュなら単一領域に限定されることになる1
つのアドレス領域内のデータにアクセスする場合、その
同じデータを4つのキャッシュ・セットのうちいずれに
も供給することができ、したがってヒットの確率が高く
なる。その代わり、1つ1つのタグを物理アドレスから
の線76上の上位ビットと比較して、どのセットを使用
するかを決定しなければならない(比較器71)。次
に、比較器71の出力によってマルチプレクサ70から
特定のセットが選択される。おわかりのように、マルチ
プレクサ70を介した出力データを可能にする前に、比
較ステップを行わなければならないため、これによって
キャッシュのアクセス時間が遅くなる。LRU情報67
も記憶される。以上の図1および図2の例は、特定の従
来技術の実施形態の例に過ぎず、他の物理構成を使用し
てダイレクトマップ方式またはセットアソシアティブ方
式のキャッシュを実施することもできる。
シュの代わりに使用することができる4ウェイ・セット
アソシアティブ・キャッシュを示す。例として4ウェイ
・キャッシュを選定したに過ぎず、Nウェイ・キャッシ
ュとして異なる数も使用可能であることに留意された
い。図2には4つのセットが図示されているが、各セッ
トは別々の項目部分74とタグ部分72を有する。特定
のアドレス範囲からのデータが4つのセットのいずれに
も記憶することができ、ダイレクトマップ・キャッシュ
のようにキャッシュの1つの特定の領域には制限されな
い。したがって、特定のプログラムが、ダイレクトマッ
プ・キャッシュなら単一領域に限定されることになる1
つのアドレス領域内のデータにアクセスする場合、その
同じデータを4つのキャッシュ・セットのうちいずれに
も供給することができ、したがってヒットの確率が高く
なる。その代わり、1つ1つのタグを物理アドレスから
の線76上の上位ビットと比較して、どのセットを使用
するかを決定しなければならない(比較器71)。次
に、比較器71の出力によってマルチプレクサ70から
特定のセットが選択される。おわかりのように、マルチ
プレクサ70を介した出力データを可能にする前に、比
較ステップを行わなければならないため、これによって
キャッシュのアクセス時間が遅くなる。LRU情報67
も記憶される。以上の図1および図2の例は、特定の従
来技術の実施形態の例に過ぎず、他の物理構成を使用し
てダイレクトマップ方式またはセットアソシアティブ方
式のキャッシュを実施することもできる。
【0008】フルアソシアティブ・キャッシュは、項目
を4つの異なるセット(またはNウェイ・セットアソシ
アティブ・キャッシュの場合はN個の異なるセット)内
の指定された場所だけでなく、キャッシュ内のどこにで
も置くことができるようにする。フルアソシアティブ・
キャッシュの欠点は、Nウェイ・セットアソシアティブ
・キャッシュの場合のようにN個のタグだけでなく、各
タグをアドレスと比較しなければならないことである。
を4つの異なるセット(またはNウェイ・セットアソシ
アティブ・キャッシュの場合はN個の異なるセット)内
の指定された場所だけでなく、キャッシュ内のどこにで
も置くことができるようにする。フルアソシアティブ・
キャッシュの欠点は、Nウェイ・セットアソシアティブ
・キャッシュの場合のようにN個のタグだけでなく、各
タグをアドレスと比較しなければならないことである。
【0009】
【発明が解決しようとする課題】発明者が予測セットア
ソシアティブ・キャッシュと呼ぶ他のタイプのキャッシ
ュ構造が、米国特許第5392414号に記載されてい
る。このキャッシュは論理的には複数ウェイであるが、
物理的にはダイレクトマップ方式である。これは、アク
セス速度がダイレクトマップ・キャッシュに匹敵するN
ウェイ予測セットアソシアティブ・キャッシュである。
これは、各項目について次の項目がどのセットに入れら
れているかに関する予測情報を組み込むことによって実
現された。したがって、項目が取り出された場合、予測
情報はラッチに格納され、ラッチの出力を使用して次の
アクセスのためのセットが選択されることになる。予測
情報が誤っていた場合、図2に示す比較器でのタグ比較
のためのアクセス速度を犠牲にしなければならなくなる
が、そのような場合は希である(ヒットを確認するため
にタグ比較が常に行われるが、ヒットのためのアクセス
を停止させることはない)。
ソシアティブ・キャッシュと呼ぶ他のタイプのキャッシ
ュ構造が、米国特許第5392414号に記載されてい
る。このキャッシュは論理的には複数ウェイであるが、
物理的にはダイレクトマップ方式である。これは、アク
セス速度がダイレクトマップ・キャッシュに匹敵するN
ウェイ予測セットアソシアティブ・キャッシュである。
これは、各項目について次の項目がどのセットに入れら
れているかに関する予測情報を組み込むことによって実
現された。したがって、項目が取り出された場合、予測
情報はラッチに格納され、ラッチの出力を使用して次の
アクセスのためのセットが選択されることになる。予測
情報が誤っていた場合、図2に示す比較器でのタグ比較
のためのアクセス速度を犠牲にしなければならなくなる
が、そのような場合は希である(ヒットを確認するため
にタグ比較が常に行われるが、ヒットのためのアクセス
を停止させることはない)。
【0010】多くのコンピュータ・システムは、マイク
ロプロセッサ・チップ自体にある一次キャッシュと、
(外部キャッシュである場合が多い)二次キャッシュの
両方を実装する。典型的な例では、一次キャッシュはセ
ットアソシアティブ、ダイレクトマップ、またはフルア
ソシアティブ方式のキャッシュであり、外部キャッシュ
はダイレクトマップ方式である。二次キャッシュを制御
する論理回路はマイクロプロセッサ・チップ自体または
別のメモリ管理チップに設けることができる。この論理
回路は、たとえばマルチプレクサと比較論理回路を含
む。おわかりのように、図2のセットアソシアティブ・
キャッシュのマルチプレクサおよび比較論理回路は、多
くのデータ線とアドレス線を必要とする。1メガバイト
のキャッシュの場合、データ、アドレス、および制御に
必要な線の数は、Nウェイ・キャッシュの各セットにつ
いて200〜300ピンになる可能性がある。したがっ
て、2ウェイ・キャッシュは400ピンを必要とし、4
ウェイ・キャッシュは800ピンを必要とする可能性が
ある。たとえば、1メガバイト・キャッシュは15ビッ
トのアドレスと、64ビット、128ビットまたは25
6ビットものデータとパリティと、タグのために25ビ
ット以上(それに加えて電源ピンと接地ピン)を必要と
する可能性がある。明らかに、このようなピン数は今日
のパッケージング技術では回避すべきであり、したがっ
て現在実装されるどのようなかなりのサイズの二次キャ
ッシュもダイレクトマップ・キャッシュとして実装され
る。これは、図1に示すようなダイレクトマップ・キャ
ッシュは、すべてのアドレス線を比較器まで設ける必要
がないためである。
ロプロセッサ・チップ自体にある一次キャッシュと、
(外部キャッシュである場合が多い)二次キャッシュの
両方を実装する。典型的な例では、一次キャッシュはセ
ットアソシアティブ、ダイレクトマップ、またはフルア
ソシアティブ方式のキャッシュであり、外部キャッシュ
はダイレクトマップ方式である。二次キャッシュを制御
する論理回路はマイクロプロセッサ・チップ自体または
別のメモリ管理チップに設けることができる。この論理
回路は、たとえばマルチプレクサと比較論理回路を含
む。おわかりのように、図2のセットアソシアティブ・
キャッシュのマルチプレクサおよび比較論理回路は、多
くのデータ線とアドレス線を必要とする。1メガバイト
のキャッシュの場合、データ、アドレス、および制御に
必要な線の数は、Nウェイ・キャッシュの各セットにつ
いて200〜300ピンになる可能性がある。したがっ
て、2ウェイ・キャッシュは400ピンを必要とし、4
ウェイ・キャッシュは800ピンを必要とする可能性が
ある。たとえば、1メガバイト・キャッシュは15ビッ
トのアドレスと、64ビット、128ビットまたは25
6ビットものデータとパリティと、タグのために25ビ
ット以上(それに加えて電源ピンと接地ピン)を必要と
する可能性がある。明らかに、このようなピン数は今日
のパッケージング技術では回避すべきであり、したがっ
て現在実装されるどのようなかなりのサイズの二次キャ
ッシュもダイレクトマップ・キャッシュとして実装され
る。これは、図1に示すようなダイレクトマップ・キャ
ッシュは、すべてのアドレス線を比較器まで設ける必要
がないためである。
【0011】
【課題を解決するための手段】本発明は、別個の二次キ
ャッシュにセット予測情報を供給するキャッシュ構造を
提供する。一次キャッシュ・ミスの場合、二次セット予
測情報を使用してNウェイ・オフチップ・セットアソシ
アティブ・キャッシュ内のセットを選択する。これによ
って、多くのトレースまたはピンあるいはその両方を必
要とせずに、(オンチップまたはオフチップの)二次キ
ャッシュでセットアソシアティブ構造を使用することが
できるようになる。セット予測を使用するので、予測誤
りまたは二次キャッシュのミスがない場合、正しいセッ
トを予測したかを判断するための比較に要するその後の
アクセス時間が最長タイミング経路にはない。
ャッシュにセット予測情報を供給するキャッシュ構造を
提供する。一次キャッシュ・ミスの場合、二次セット予
測情報を使用してNウェイ・オフチップ・セットアソシ
アティブ・キャッシュ内のセットを選択する。これによ
って、多くのトレースまたはピンあるいはその両方を必
要とせずに、(オンチップまたはオフチップの)二次キ
ャッシュでセットアソシアティブ構造を使用することが
できるようになる。セット予測を使用するので、予測誤
りまたは二次キャッシュのミスがない場合、正しいセッ
トを予測したかを判断するための比較に要するその後の
アクセス時間が最長タイミング経路にはない。
【0012】好ましい実施態様では、オンチップ一次キ
ャッシュが、一次キャッシュのセット予測情報を二次キ
ャッシュのセット予測情報と共に記憶する。アクセスの
たびに、この2つのセット予測子が異なるラッチに格納
され、第1のラッチは現行一次キャッシュ・アクセスに
使用され、第2のラッチに格納されている二次レベルの
セット予測子は一次キャッシュ・ミスの場合にのみ使用
される。
ャッシュが、一次キャッシュのセット予測情報を二次キ
ャッシュのセット予測情報と共に記憶する。アクセスの
たびに、この2つのセット予測子が異なるラッチに格納
され、第1のラッチは現行一次キャッシュ・アクセスに
使用され、第2のラッチに格納されている二次レベルの
セット予測子は一次キャッシュ・ミスの場合にのみ使用
される。
【0013】本発明は、マルチスレッド・プログラムの
パフォーマンスを向上させる。小規模なシングル・スレ
ッド・プログラムにはダイレクトマップ二次レベル・キ
ャッシュで十分な場合が多い。しかし、大量のデータま
たはプログラム命令が同じアドレス範囲でスワップ・イ
ンおよびスワップ・アウトされるマルチスレッドのマル
チプログラム・アプリケーションの場合は、ダイレクト
マップ・キャッシュはすぐに非効率的になり、そのよう
なアプリケーションにおけるパフォーマンス向上のため
にはセットアソシアティブ二次レベル・キャッシュが好
ましい。
パフォーマンスを向上させる。小規模なシングル・スレ
ッド・プログラムにはダイレクトマップ二次レベル・キ
ャッシュで十分な場合が多い。しかし、大量のデータま
たはプログラム命令が同じアドレス範囲でスワップ・イ
ンおよびスワップ・アウトされるマルチスレッドのマル
チプログラム・アプリケーションの場合は、ダイレクト
マップ・キャッシュはすぐに非効率的になり、そのよう
なアプリケーションにおけるパフォーマンス向上のため
にはセットアソシアティブ二次レベル・キャッシュが好
ましい。
【0014】本発明の他の態様では、キャッシュ・メモ
リをM個のセットに区分化し、Mはセットのサイズがペ
ージのサイズ以下になるように選定する。これは、1メ
ガバイト以上の大容量キャッシュを使用する場合に特に
実用的である。これによって、物理アドレス・タグ・キ
ャッシュのアクセス速度がさらに向上し、TLB変換と
並列でキャッシュ・アクセスが可能になり、キャッシュ
のための順次アクセス経路からTLBがなくなる。セッ
トのサイズがページ・サイズを超えないため、キャッシ
ュ索引ビットの変換が不要である。キャッシュ・ヒット
があったかミスがあったかを判断するために後で変換が
必要になるが、その間に、セット予測情報を使用して可
能性の高いキャッシュ項目にアクセスすることができ
る。
リをM個のセットに区分化し、Mはセットのサイズがペ
ージのサイズ以下になるように選定する。これは、1メ
ガバイト以上の大容量キャッシュを使用する場合に特に
実用的である。これによって、物理アドレス・タグ・キ
ャッシュのアクセス速度がさらに向上し、TLB変換と
並列でキャッシュ・アクセスが可能になり、キャッシュ
のための順次アクセス経路からTLBがなくなる。セッ
トのサイズがページ・サイズを超えないため、キャッシ
ュ索引ビットの変換が不要である。キャッシュ・ヒット
があったかミスがあったかを判断するために後で変換が
必要になるが、その間に、セット予測情報を使用して可
能性の高いキャッシュ項目にアクセスすることができ
る。
【0015】
【発明の実施の形態】本発明の性質および利点をよりよ
く理解することができるように、添付図面と共に以下の
説明を参照されたい。
く理解することができるように、添付図面と共に以下の
説明を参照されたい。
【0016】図3は、本発明を組み込むように修正され
たUltraSparc(TM)マイクロプロセッサ1
0を示すブロック図である。命令キャッシュ12がデコ
ード・ユニット14に命令を送る。命令キャッシュはそ
の命令をプリフェッチ・ユニット16から受け取ること
ができ、プリフェッチ・ユニット16は分岐ユニット1
8から命令を受け取るか、または命令TLB(アドレス
変換バッファ)20に仮想アドレスを送り、それによっ
てキャッシュ制御/システム・インタフェース22を介
してオフチップ・キャッシュから命令がフェッチされ
る。オフチップ・キャッシュからフェッチされた命令は
プリデコード・ユニット24に送られ、分岐命令かどう
かなどの特定の情報が命令キャッシュ12に送られる。
たUltraSparc(TM)マイクロプロセッサ1
0を示すブロック図である。命令キャッシュ12がデコ
ード・ユニット14に命令を送る。命令キャッシュはそ
の命令をプリフェッチ・ユニット16から受け取ること
ができ、プリフェッチ・ユニット16は分岐ユニット1
8から命令を受け取るか、または命令TLB(アドレス
変換バッファ)20に仮想アドレスを送り、それによっ
てキャッシュ制御/システム・インタフェース22を介
してオフチップ・キャッシュから命令がフェッチされ
る。オフチップ・キャッシュからフェッチされた命令は
プリデコード・ユニット24に送られ、分岐命令かどう
かなどの特定の情報が命令キャッシュ12に送られる。
【0017】デコード・ユニット14から命令は命令バ
ッファ26に送られ、そこでディスパッチ・ユニット2
8によってアクセスされる。ディスパッチ・ユニット2
8は一度に4つのデコード済み命令をバス30に送り、
各命令は8個の機能ユニット32〜46のうちの1つに
送られる。ディスパッチ・ユニットは、データ依存関係
と適切な機能ユニットの可用性の検査を条件として、各
サイクルに4つのこのような命令をディスパッチする。
ッファ26に送られ、そこでディスパッチ・ユニット2
8によってアクセスされる。ディスパッチ・ユニット2
8は一度に4つのデコード済み命令をバス30に送り、
各命令は8個の機能ユニット32〜46のうちの1つに
送られる。ディスパッチ・ユニットは、データ依存関係
と適切な機能ユニットの可用性の検査を条件として、各
サイクルに4つのこのような命令をディスパッチする。
【0018】最初の3つの機能ユニットであるロード/
ストア・ユニット32と2つの整数ALUユニット34
および36は、1組の整数レジスタ48を共用する。浮
動小数点レジスタ50は、浮動小数点ユニット38、4
0、および42とグラフィカル・ユニット44および4
6によって共用される。整数機能ユニット・グループお
よび浮動小数点機能ユニット・グループのそれぞれのグ
ループは、それぞれ対応する完了ユニット52および5
4を有する。マイクロプロセッサは、オンチップ・デー
タ・キャッシュ56とデータTLB58も備える。最後
に、後述する本発明の1実施形態による任意選択のオン
チップ二次キャッシュ・タグ・メモリ55が図示されて
いる。
ストア・ユニット32と2つの整数ALUユニット34
および36は、1組の整数レジスタ48を共用する。浮
動小数点レジスタ50は、浮動小数点ユニット38、4
0、および42とグラフィカル・ユニット44および4
6によって共用される。整数機能ユニット・グループお
よび浮動小数点機能ユニット・グループのそれぞれのグ
ループは、それぞれ対応する完了ユニット52および5
4を有する。マイクロプロセッサは、オンチップ・デー
タ・キャッシュ56とデータTLB58も備える。最後
に、後述する本発明の1実施形態による任意選択のオン
チップ二次キャッシュ・タグ・メモリ55が図示されて
いる。
【0019】図4は、図3のプロセッサ10を含むチッ
プセットのブロック図である。二次レベル・キャッシュ
・タグ・メモリ80と二次レベル・キャッシュ・データ
・メモリ82も図示されている。さらに、システム・デ
ータ・バス86に接続するデータ・バッファ84が図示
されている。図の例では、16ビットのアドレス・バス
88がプロセッサ10とタグ・メモリ80とを接続し、
タグ・データが28ビットのタグ・データ・バス89で
送られる。18ビットのアドレス・バス90がデータ・
キャッシュ82に接続し、144ビットのデータ・バス
92でキャッシュ・データの読取りまたは書込みが行わ
れる。おわかりのように、複数セットのNウェイ・セッ
トアソシアティブ二次レベル・キャッシュのためにこの
線数を倍々にすれば、必要ピン数が劇的に増加すること
になる。したがって、このような二次レベル・キャッシ
ュ実装にはダイレクトマップ・キャッシュが一般的に使
用される。しかし、マルチスレッドのマルチプログラム
・アプリケーションに適切に対応するために、本発明を
実施して二次レベル・セット予測を実現すれば、予測セ
ットアソシアティブ二次キャッシュまたはそれ以上のレ
ベルのキャッシュを使用することができる。
プセットのブロック図である。二次レベル・キャッシュ
・タグ・メモリ80と二次レベル・キャッシュ・データ
・メモリ82も図示されている。さらに、システム・デ
ータ・バス86に接続するデータ・バッファ84が図示
されている。図の例では、16ビットのアドレス・バス
88がプロセッサ10とタグ・メモリ80とを接続し、
タグ・データが28ビットのタグ・データ・バス89で
送られる。18ビットのアドレス・バス90がデータ・
キャッシュ82に接続し、144ビットのデータ・バス
92でキャッシュ・データの読取りまたは書込みが行わ
れる。おわかりのように、複数セットのNウェイ・セッ
トアソシアティブ二次レベル・キャッシュのためにこの
線数を倍々にすれば、必要ピン数が劇的に増加すること
になる。したがって、このような二次レベル・キャッシ
ュ実装にはダイレクトマップ・キャッシュが一般的に使
用される。しかし、マルチスレッドのマルチプログラム
・アプリケーションに適切に対応するために、本発明を
実施して二次レベル・セット予測を実現すれば、予測セ
ットアソシアティブ二次キャッシュまたはそれ以上のレ
ベルのキャッシュを使用することができる。
【0020】図5は、セット・サイズがページ・サイズ
以下の本発明を使用したキャッシュ項目のデータ形式を
示す図である。この形式は、各キャッシュ項目または各
キャッシュ・ラインに使用することができる。あるい
は、命令キャッシュとデータ・キャッシュに別々に使用
することも統合キャッシュ構造に使用することもでき
る。命令自体またはデータ自体は、格納場所94に格納
され、それに対応するタグは格納場所96に格納され
る。LRU(最長時間未使用)情報が格納場所98に格
納され、新しいキャッシュ項目を追加するときにどのキ
ャッシュ項目を書き直すべきかを判断するために使用さ
れる。あるいは、LRU情報は1ラインごとに1回、1
セットごとに1回、または複数セットについて1つの場
所に格納することもできる。最後にセット予測ビットが
格納場所100に格納される。この形式の使用によっ
て、物理アドレス指定キャッシュの順次アクセス経路か
らTLBを省くことができる。仮想アドレス指定キャッ
シュの場合は、アドレス変換がまったく不要であること
に留意されたい。その代わりに、セット・サイズによっ
て、予測されたセットを指すセット予測子を使用して、
キャッシュ項目を直接アドレスするのに十分なビット数
が存在するように保証される。TLBは並列して動作す
ることができ、後で実変換されたアドレスをキャッシュ
・タグと比較して、セット予測が正しかったかどうか
と、キャッシュ・ヒットがあるかどうかを判断する。こ
の形式は一次レベル・キャッシュか、または一次レベル
・キャッシュと二次レベル・キャッシュ(またはそれ以
上のレベル)の両方に使用することができる。
以下の本発明を使用したキャッシュ項目のデータ形式を
示す図である。この形式は、各キャッシュ項目または各
キャッシュ・ラインに使用することができる。あるい
は、命令キャッシュとデータ・キャッシュに別々に使用
することも統合キャッシュ構造に使用することもでき
る。命令自体またはデータ自体は、格納場所94に格納
され、それに対応するタグは格納場所96に格納され
る。LRU(最長時間未使用)情報が格納場所98に格
納され、新しいキャッシュ項目を追加するときにどのキ
ャッシュ項目を書き直すべきかを判断するために使用さ
れる。あるいは、LRU情報は1ラインごとに1回、1
セットごとに1回、または複数セットについて1つの場
所に格納することもできる。最後にセット予測ビットが
格納場所100に格納される。この形式の使用によっ
て、物理アドレス指定キャッシュの順次アクセス経路か
らTLBを省くことができる。仮想アドレス指定キャッ
シュの場合は、アドレス変換がまったく不要であること
に留意されたい。その代わりに、セット・サイズによっ
て、予測されたセットを指すセット予測子を使用して、
キャッシュ項目を直接アドレスするのに十分なビット数
が存在するように保証される。TLBは並列して動作す
ることができ、後で実変換されたアドレスをキャッシュ
・タグと比較して、セット予測が正しかったかどうか
と、キャッシュ・ヒットがあるかどうかを判断する。こ
の形式は一次レベル・キャッシュか、または一次レベル
・キャッシュと二次レベル・キャッシュ(またはそれ以
上のレベル)の両方に使用することができる。
【0021】図6は、一次レベルと二次レベルの両方の
セット予測のための本発明によるキャッシュ項目形式を
示す図である。図5に示すように、命令/データ・ビッ
ト、タグ・ビットおよびLRUビットが含まれている。
さらに、フィールド102に一次レベル・キャッシュ・
セット予測子が含まれ、フィールド104に二次レベル
・セット予測子が含まれている。この形式は、データ・
キャッシュと命令キャッシュの両方に使用される。この
形式は、命令またはデータを記憶することができる統合
キャッシュ構造に使用することができる。
セット予測のための本発明によるキャッシュ項目形式を
示す図である。図5に示すように、命令/データ・ビッ
ト、タグ・ビットおよびLRUビットが含まれている。
さらに、フィールド102に一次レベル・キャッシュ・
セット予測子が含まれ、フィールド104に二次レベル
・セット予測子が含まれている。この形式は、データ・
キャッシュと命令キャッシュの両方に使用される。この
形式は、命令またはデータを記憶することができる統合
キャッシュ構造に使用することができる。
【0022】図7に、データ・キャッシュと命令キャッ
シュが別々の場合の本発明による形式を示す。上記と同
様に、命令/データ・フィールド、タグ・フィールド、
およびLRUフィールドを使用する。しかし、各レベル
に1セットの予測子ではなく、2セットの予測子を使用
する。命令の一次レベル・セット予測子はフィールド1
06に入れられ、データの一次レベル・セット予測子は
フィールド108に入れられる。同様に命令の二次レベ
ル・セット予測子はフィールド110に格納され、デー
タの二次レベル・セット予測子はフィールド112に格
納される。次のフェッチが命令かデータか不明のため、
それぞれのセット予測子を格納する必要がある。このよ
うな統合構造にはいくつかの利点がある。たとえば、フ
ェッチが命令とデータとの間で変わる場合、当該情報が
命令と共に記憶されていれば次のデータ項目のセットを
予測するために最後のデータ項目に戻って見直す必要が
ない。同様に、同じ分析はデータにも当てはまる。した
がって、次のフェッチが命令の場合、命令予測子を使用
し、次のフェッチがデータの場合はデータ・セット予測
子を使用する。データ・キャッシュと命令キャッシュの
別々のキャッシュを使用すると、データ・セット予測子
は命令キャッシュまたはデータ・キャッシュに記憶する
ことができる。命令キャッシュに記憶した場合、そのデ
ータ・セット予測子が関連づけられている命令がデータ
・キャッシュにアクセスしたとき、それを使用すること
ができる。データSPをマイクロプロセッサのロード/
ストア・ユニットに送って、必要なデータにアクセスす
る際に使用することができる。
シュが別々の場合の本発明による形式を示す。上記と同
様に、命令/データ・フィールド、タグ・フィールド、
およびLRUフィールドを使用する。しかし、各レベル
に1セットの予測子ではなく、2セットの予測子を使用
する。命令の一次レベル・セット予測子はフィールド1
06に入れられ、データの一次レベル・セット予測子は
フィールド108に入れられる。同様に命令の二次レベ
ル・セット予測子はフィールド110に格納され、デー
タの二次レベル・セット予測子はフィールド112に格
納される。次のフェッチが命令かデータか不明のため、
それぞれのセット予測子を格納する必要がある。このよ
うな統合構造にはいくつかの利点がある。たとえば、フ
ェッチが命令とデータとの間で変わる場合、当該情報が
命令と共に記憶されていれば次のデータ項目のセットを
予測するために最後のデータ項目に戻って見直す必要が
ない。同様に、同じ分析はデータにも当てはまる。した
がって、次のフェッチが命令の場合、命令予測子を使用
し、次のフェッチがデータの場合はデータ・セット予測
子を使用する。データ・キャッシュと命令キャッシュの
別々のキャッシュを使用すると、データ・セット予測子
は命令キャッシュまたはデータ・キャッシュに記憶する
ことができる。命令キャッシュに記憶した場合、そのデ
ータ・セット予測子が関連づけられている命令がデータ
・キャッシュにアクセスしたとき、それを使用すること
ができる。データSPをマイクロプロセッサのロード/
ストア・ユニットに送って、必要なデータにアクセスす
る際に使用することができる。
【0023】図8は、本発明の一実施形態を示すブロッ
ク図である。この特定の実施形態では、統合構造ではな
い4ウェイ予測セットアソシアティブ・キャッシュを使
用する。この例は、単純化のために選定したものであっ
て、Nウェイ予測セットアソシアティブ・キャッシュに
は任意のN値を使用することができ、前述のように統合
構造を使用することもできることを理解されたい。キャ
ッシュ128は物理的にはダイレクトマップ方式である
が、論理的には4つのセットに分割される。各キャッシ
ュ・ラインはデータ部分114とタグ部分112と一次
レベル・セット予測子114と、二次レベル・セット予
測子116とを含む。LRU情報150も含まれる。キ
ャッシュからのデータ(または命令)は、I/Oバス1
18でマイクロプロセッサの実行ユニットに送られる。
データは、アドレス・レジスタ132からのアドレス・
ビットとラッチ120内の最後のアクセスからの一次レ
ベル・セット予測子との組合せによって選択される。次
に、選択されたキャッシュ項目の一次レベル・セット予
測子はラッチ120に送られ、直前の項目を上書きし、
次のキャッシュ・アクセスが実行可能になる。これと同
時に、二次レベル・セット予測子がラッチ126に送ら
れる。
ク図である。この特定の実施形態では、統合構造ではな
い4ウェイ予測セットアソシアティブ・キャッシュを使
用する。この例は、単純化のために選定したものであっ
て、Nウェイ予測セットアソシアティブ・キャッシュに
は任意のN値を使用することができ、前述のように統合
構造を使用することもできることを理解されたい。キャ
ッシュ128は物理的にはダイレクトマップ方式である
が、論理的には4つのセットに分割される。各キャッシ
ュ・ラインはデータ部分114とタグ部分112と一次
レベル・セット予測子114と、二次レベル・セット予
測子116とを含む。LRU情報150も含まれる。キ
ャッシュからのデータ(または命令)は、I/Oバス1
18でマイクロプロセッサの実行ユニットに送られる。
データは、アドレス・レジスタ132からのアドレス・
ビットとラッチ120内の最後のアクセスからの一次レ
ベル・セット予測子との組合せによって選択される。次
に、選択されたキャッシュ項目の一次レベル・セット予
測子はラッチ120に送られ、直前の項目を上書きし、
次のキャッシュ・アクセスが実行可能になる。これと同
時に、二次レベル・セット予測子がラッチ126に送ら
れる。
【0024】タグ比較器130がレジスタ132からバ
ス134で送られた実入力アドレスをキャッシュからの
タグと比較する。これを使用して、まず、適切なセット
が正しく予測されたかを判断する。正しく予測されなか
った場合は、線121上のミス信号がプリフェッチ・ユ
ニット122に送られる。キャッシュ項目が命令だった
場合は、すでに命令バッファにロードされている命令が
無効化される。キャッシュ項目がデータだった場合は、
キャッシュの内容がデータ・レジスタにロードされたデ
ータだったデータ・レジスタが、ミス信号を使用して無
効化される。
ス134で送られた実入力アドレスをキャッシュからの
タグと比較する。これを使用して、まず、適切なセット
が正しく予測されたかを判断する。正しく予測されなか
った場合は、線121上のミス信号がプリフェッチ・ユ
ニット122に送られる。キャッシュ項目が命令だった
場合は、すでに命令バッファにロードされている命令が
無効化される。キャッシュ項目がデータだった場合は、
キャッシュの内容がデータ・レジスタにロードされたデ
ータだったデータ・レジスタが、ミス信号を使用して無
効化される。
【0025】次に、比較器130はアドレスをキャッシ
ュ内の他の論理セットのタグと比較する。これは、さら
に3回(または、それより前の比較の1つでヒットがあ
った場合はそれ以下)のアクセスで行うか、または複数
の比較器を設けて一次レベル・セット予測ミスに要する
時間を削減することができる。これは物理的に、キャッ
シュ命令またはデータが出力されるのと同時に行うこと
ができ、一次レベル・セット予測ヒットがある場合には
使用されない。予測が誤りであって、データが実際には
キャッシュ内の別の論理セット内にあった場合は、正し
い命令(またはデータ)がI/Oバス118に送られ
る。しかし、データがまったくキャッシュ内になかった
場合は、一次レベル・キャッシュ・ミスを示し、二次レ
ベル・ラッチ126から二次レベル・セット予測子が線
123でプリフェッチ・ユニットに送られて、二次レベ
ル・キャッシュからデータが取り出される。
ュ内の他の論理セットのタグと比較する。これは、さら
に3回(または、それより前の比較の1つでヒットがあ
った場合はそれ以下)のアクセスで行うか、または複数
の比較器を設けて一次レベル・セット予測ミスに要する
時間を削減することができる。これは物理的に、キャッ
シュ命令またはデータが出力されるのと同時に行うこと
ができ、一次レベル・セット予測ヒットがある場合には
使用されない。予測が誤りであって、データが実際には
キャッシュ内の別の論理セット内にあった場合は、正し
い命令(またはデータ)がI/Oバス118に送られ
る。しかし、データがまったくキャッシュ内になかった
場合は、一次レベル・キャッシュ・ミスを示し、二次レ
ベル・ラッチ126から二次レベル・セット予測子が線
123でプリフェッチ・ユニットに送られて、二次レベ
ル・キャッシュからデータが取り出される。
【0026】二次レベル・セット予測ミスの場合、レジ
スタ132からの実アドレスが二次レベル・キャッシュ
制御論理回路22(図3)に送られ、二次レベル・キャ
ッシュ内のタグと比較されて、データが実際にそこにあ
るかどうかが判断される。この制御回路は、図8の一次
レベル読取り回路と同じチップ上に置くことも別のチッ
プ上に置くこともできる。ピン数が限られているため、
二次レベル・キャッシュ内の各タグと比較するのに数回
のアクセスを要する可能性がある。しかし、これはまれ
にしか起こらず、セットアソシアティブ・キャッシュの
使用により強化されたパフォーマンスを大幅に低下させ
ることはない。
スタ132からの実アドレスが二次レベル・キャッシュ
制御論理回路22(図3)に送られ、二次レベル・キャ
ッシュ内のタグと比較されて、データが実際にそこにあ
るかどうかが判断される。この制御回路は、図8の一次
レベル読取り回路と同じチップ上に置くことも別のチッ
プ上に置くこともできる。ピン数が限られているため、
二次レベル・キャッシュ内の各タグと比較するのに数回
のアクセスを要する可能性がある。しかし、これはまれ
にしか起こらず、セットアソシアティブ・キャッシュの
使用により強化されたパフォーマンスを大幅に低下させ
ることはない。
【0027】おわかりのように、二次レベル・セット予
測子によって、外部キャッシュに直接アクセスすること
が可能になり、タグと比較してどのセットを選択すべき
かを判断しなくても済むようになる。これによって、比
較時間だけでなく、すべてのタグとデータを比較のため
にマイクロプロセッサ・チップに送る帯域幅の問題が回
避される。ただし、タグは後で正しいヒットを検証する
ために比較する必要はある。他の実施形態では、二次レ
ベル・キャッシュのタグはマイクロプロセッサ・チップ
上の別個の記憶域に記憶される。図3に、オンチップ二
次キャッシュ・タグのための別個の記憶域55を示す。
二次レベル・キャッシュ項目は外部メモリ・チップに記
憶される。この手法は、マイクロプロセッサを単一チッ
プ上により多く集積することができるが、二次レベル・
キャッシュ全体を集積するには十分ではないときに使用
することができる。あるいは、二次レベル・キャッシュ
をマイクロプロセッサ・チップ上に完全に集積すること
ができる場合であっても、この手法によって二次レベル
・キャッシュ・ヒット・レートを向上させることができ
る。セット予測はその場合も使用することができ、オン
チップ・タグによってその後のヒット検証が高速化され
る。
測子によって、外部キャッシュに直接アクセスすること
が可能になり、タグと比較してどのセットを選択すべき
かを判断しなくても済むようになる。これによって、比
較時間だけでなく、すべてのタグとデータを比較のため
にマイクロプロセッサ・チップに送る帯域幅の問題が回
避される。ただし、タグは後で正しいヒットを検証する
ために比較する必要はある。他の実施形態では、二次レ
ベル・キャッシュのタグはマイクロプロセッサ・チップ
上の別個の記憶域に記憶される。図3に、オンチップ二
次キャッシュ・タグのための別個の記憶域55を示す。
二次レベル・キャッシュ項目は外部メモリ・チップに記
憶される。この手法は、マイクロプロセッサを単一チッ
プ上により多く集積することができるが、二次レベル・
キャッシュ全体を集積するには十分ではないときに使用
することができる。あるいは、二次レベル・キャッシュ
をマイクロプロセッサ・チップ上に完全に集積すること
ができる場合であっても、この手法によって二次レベル
・キャッシュ・ヒット・レートを向上させることができ
る。セット予測はその場合も使用することができ、オン
チップ・タグによってその後のヒット検証が高速化され
る。
【0028】本発明の一実施形態によると、セット・サ
イズがページ・サイズ以下になるように一次または二次
レベル・キャッシュを区分化した場合、TLB変換と並
列してキャッシュにアクセスすることができる。そのよ
うな実施形態の場合、キャッシュ・サイズはページ・サ
イズよりもはるかに大きくなる。
イズがページ・サイズ以下になるように一次または二次
レベル・キャッシュを区分化した場合、TLB変換と並
列してキャッシュにアクセスすることができる。そのよ
うな実施形態の場合、キャッシュ・サイズはページ・サ
イズよりもはるかに大きくなる。
【0029】図9は、本発明による一次レベル・キャッ
シュ・フィル動作を示すフローチャートである。ステッ
プAで、キャッシュ内の空のセットまたは最長時間未使
用(LRU)セットが選択される。セットを選択するた
めのその他の機構も使用可能である。空のセットはキャ
ッシュがいっぱいになる前に選択され、キャッシュがい
っぱいになった後は、LRUアルゴリズムまたはその他
の方式を使用して、上書きするキャッシュ・ラインを選
択することができる。
シュ・フィル動作を示すフローチャートである。ステッ
プAで、キャッシュ内の空のセットまたは最長時間未使
用(LRU)セットが選択される。セットを選択するた
めのその他の機構も使用可能である。空のセットはキャ
ッシュがいっぱいになる前に選択され、キャッシュがい
っぱいになった後は、LRUアルゴリズムまたはその他
の方式を使用して、上書きするキャッシュ・ラインを選
択することができる。
【0030】次に、データまたは命令とそれに対応する
タグおよびその他の情報が、選択されたセット内のアド
レスに書き込まれる(ステップB)。次のアクセスが同
じセットであると仮定し、それを使用して一次レベル・
セット予測フィールドに書き込む(ステップC)。ある
いは、次のセットを予測する他の方法を使用することも
できる。キャッシュ・ラインが二次キャッシュから供給
される場合、その供給元のセットが二次レベル・セット
予測子として使用される(ステップD)。あるいは、デ
ータをメイン・メモリから取り出す場合は、デフォルト
値を使用することができる。これらの初期セット予測値
は両方とも推測され、誤っていた場合には後でミス時に
修正される。
タグおよびその他の情報が、選択されたセット内のアド
レスに書き込まれる(ステップB)。次のアクセスが同
じセットであると仮定し、それを使用して一次レベル・
セット予測フィールドに書き込む(ステップC)。ある
いは、次のセットを予測する他の方法を使用することも
できる。キャッシュ・ラインが二次キャッシュから供給
される場合、その供給元のセットが二次レベル・セット
予測子として使用される(ステップD)。あるいは、デ
ータをメイン・メモリから取り出す場合は、デフォルト
値を使用することができる。これらの初期セット予測値
は両方とも推測され、誤っていた場合には後でミス時に
修正される。
【0031】セット予測子による予測誤りがある場合、
セット予測子は正しいセットに更新される。セット予測
子が更新された後は、その予測子は当該項目がキャッシ
ュ内にある限り、将来のアクセスについて常に正しいこ
とになる。この結果、全体的なヒット・レートが高くな
る。
セット予測子は正しいセットに更新される。セット予測
子が更新された後は、その予測子は当該項目がキャッシ
ュ内にある限り、将来のアクセスについて常に正しいこ
とになる。この結果、全体的なヒット・レートが高くな
る。
【0032】好ましい実施形態において初期予測値を決
定する好ましい方法は、現行命令/データと同じセット
を使用することである。あるいは、他の実施態様を使用
することもできる。たとえば、現在の項目がデータであ
る統合キャッシュ構造の場合、命令とデータが交互のセ
ットであるという仮定のもとに、データ・セット予測子
は同じセットを予測することができ、命令セット予測子
は次のセットを予測することができる。アプリケーショ
ンに応じて、予測確度を最適化するその他の方式も考案
することができる。
定する好ましい方法は、現行命令/データと同じセット
を使用することである。あるいは、他の実施態様を使用
することもできる。たとえば、現在の項目がデータであ
る統合キャッシュ構造の場合、命令とデータが交互のセ
ットであるという仮定のもとに、データ・セット予測子
は同じセットを予測することができ、命令セット予測子
は次のセットを予測することができる。アプリケーショ
ンに応じて、予測確度を最適化するその他の方式も考案
することができる。
【0033】図10は、一次レベル・セット予測ミス時
の、本発明の実施形態による動作を示すフローチャート
である。一次レベル・セット予測ミスの場合、まず、一
次レベル・キャッシュにヒットがあったかどうかの判断
が行われる(ステップE)。ヒットがある場合、任意選
択で分岐履歴アルゴリズムを調べてセット予測子を修正
すべきかどうかが判断される(ステップF)。たとえ
ば、特定の分岐履歴アルゴリズムは、ミスが2回あった
後で分岐予測情報を変更することを要求し、したがって
セット予測を変更するためには同じ2回のミスが必要で
ある。分岐履歴が、変更を行うべきであることを示して
いる場合、または分岐履歴を調べない場合、正しい一次
レベル・セット予測が直前のアドレスに書き込まれる
(ステップG)。直前のアドレスは、この目的のために
図8に図示されている直前アドレス・レジスタ131で
維持される。
の、本発明の実施形態による動作を示すフローチャート
である。一次レベル・セット予測ミスの場合、まず、一
次レベル・キャッシュにヒットがあったかどうかの判断
が行われる(ステップE)。ヒットがある場合、任意選
択で分岐履歴アルゴリズムを調べてセット予測子を修正
すべきかどうかが判断される(ステップF)。たとえ
ば、特定の分岐履歴アルゴリズムは、ミスが2回あった
後で分岐予測情報を変更することを要求し、したがって
セット予測を変更するためには同じ2回のミスが必要で
ある。分岐履歴が、変更を行うべきであることを示して
いる場合、または分岐履歴を調べない場合、正しい一次
レベル・セット予測が直前のアドレスに書き込まれる
(ステップG)。直前のアドレスは、この目的のために
図8に図示されている直前アドレス・レジスタ131で
維持される。
【0034】一次レベル・キャッシュにミスがある場
合、図8のラッチ126からの二次レベル・セット予測
を使用して二次レベル・キャッシュからのキャッシュ・
フィルが行われる(ステップH)。並列してタグも比較
され、二次レベル・キャッシュ内の二次レベル・セット
予測にヒットがあるかどうかが判断される(ステップ
I)。ヒットがない場合、他のタグが比較され(ステッ
プJ)、二次レベル・ヒットがあるかどうかが判断され
る(ステップK)。二次レベル・ヒットがある場合、分
岐履歴を調べて二次レベル・セット予測を修正すべきか
どうかを判断することができ(ステップL)、肯定の場
合は正しい二次レベル・セット予測を直前のアドレスに
書き込むことができる(ステップM)。ヒットがない場
合、図9のキャッシュ・フィル・アルゴリズムを使用し
てメイン・メモリ・フェッチが使用される。(ステップ
N)
合、図8のラッチ126からの二次レベル・セット予測
を使用して二次レベル・キャッシュからのキャッシュ・
フィルが行われる(ステップH)。並列してタグも比較
され、二次レベル・キャッシュ内の二次レベル・セット
予測にヒットがあるかどうかが判断される(ステップ
I)。ヒットがない場合、他のタグが比較され(ステッ
プJ)、二次レベル・ヒットがあるかどうかが判断され
る(ステップK)。二次レベル・ヒットがある場合、分
岐履歴を調べて二次レベル・セット予測を修正すべきか
どうかを判断することができ(ステップL)、肯定の場
合は正しい二次レベル・セット予測を直前のアドレスに
書き込むことができる(ステップM)。ヒットがない場
合、図9のキャッシュ・フィル・アルゴリズムを使用し
てメイン・メモリ・フェッチが使用される。(ステップ
N)
【0035】図11に、一実施形態において、別のバス
・サイクルを必要とせずに二次レベル・セット予測を更
新することができる様子を示す。図のように、サイクル
1で一次レベル・ミスがある。サイクル2で二次レベル
・セット予測とアドレスを使用して二次レベル・キャッ
シュにアクセスする。ヒットがあると仮定して、サイク
ル3で二次レベル・データ(データ0)の先頭部分がそ
のデータ(命令)のタグおよびセット予測と共に一次レ
ベル・キャッシュに書き込まれる。データ・フィールド
(命令またはデータが入っている)はきわめて長いた
め、それを書き込むのに2サイクル以上を必要とする可
能性がある。これをサイクル4に示し、このサイクルで
はフィールドのデータ1部分が二次レベル・キャッシュ
から一次レベル・キャッシュに書き込まれる。このキャ
ッシュ・ラインのためにセット予測がすでに書き込まれ
ているため、直前アドレスのセット予測を同時に書き込
むことができる。これは、図8に示すようなレジスタ1
37内のセット予測アドレスによってアドレス指定され
る、一次レベル・キャッシュのセット予測部分のための
別個のアドレス指定入力があるために可能である。
・サイクルを必要とせずに二次レベル・セット予測を更
新することができる様子を示す。図のように、サイクル
1で一次レベル・ミスがある。サイクル2で二次レベル
・セット予測とアドレスを使用して二次レベル・キャッ
シュにアクセスする。ヒットがあると仮定して、サイク
ル3で二次レベル・データ(データ0)の先頭部分がそ
のデータ(命令)のタグおよびセット予測と共に一次レ
ベル・キャッシュに書き込まれる。データ・フィールド
(命令またはデータが入っている)はきわめて長いた
め、それを書き込むのに2サイクル以上を必要とする可
能性がある。これをサイクル4に示し、このサイクルで
はフィールドのデータ1部分が二次レベル・キャッシュ
から一次レベル・キャッシュに書き込まれる。このキャ
ッシュ・ラインのためにセット予測がすでに書き込まれ
ているため、直前アドレスのセット予測を同時に書き込
むことができる。これは、図8に示すようなレジスタ1
37内のセット予測アドレスによってアドレス指定され
る、一次レベル・キャッシュのセット予測部分のための
別個のアドレス指定入力があるために可能である。
【0036】あるいは、一次または二次レベル・セット
予測のためのセット予測ビットの修正を、プリフェッチ
・ユニット122内のライトバック・バッファに送るこ
ともできる。ライトバック・バッファには、その修正が
前のアドレス・レジスタ131から取り出されたその修
正に付随するアドレスと共に格納され、後で空サイクル
が使用可能になったときに一次レベル・キャッシュにラ
イトバックされる。さらに、好ましい実施形態では、セ
ット予測は特定の項目の分岐予測が変更される時点で随
時修正される。
予測のためのセット予測ビットの修正を、プリフェッチ
・ユニット122内のライトバック・バッファに送るこ
ともできる。ライトバック・バッファには、その修正が
前のアドレス・レジスタ131から取り出されたその修
正に付随するアドレスと共に格納され、後で空サイクル
が使用可能になったときに一次レベル・キャッシュにラ
イトバックされる。さらに、好ましい実施形態では、セ
ット予測は特定の項目の分岐予測が変更される時点で随
時修正される。
【0037】当業者ならわかるように、本発明は本発明
の精神または本質的特性から逸脱することなく他の特定
の態様でも実施することができる。たとえば、セット予
測情報をキャッシュの各ラインについて記憶すること
も、あるいは各項目について、またはラインのグループ
について記憶することもできる。他の実施形態では、本
発明は三次レベルまたはN次レベル・キャッシュにも適
用可能である。さらに、本発明は、キャッシュとして特
にラベル付けされていない他のデータ構造体にも適用可
能である。上記の方法は、様々な実施態様に合わせて変
更することができる。たとえば、セット予測を常に変更
して、分岐予測検査を省くことができる。あるいは、分
岐予測を一次レベル・キャッシュと二次レベル・キャッ
シュに別々に使用して、一方には書込みを行い、他方に
は行わないようにしたり、その逆にしたりすることが可
能である。したがって、好ましい実施形態の説明は例示
的なものであり、本発明の範囲は特許請求の範囲に記載
されている。
の精神または本質的特性から逸脱することなく他の特定
の態様でも実施することができる。たとえば、セット予
測情報をキャッシュの各ラインについて記憶すること
も、あるいは各項目について、またはラインのグループ
について記憶することもできる。他の実施形態では、本
発明は三次レベルまたはN次レベル・キャッシュにも適
用可能である。さらに、本発明は、キャッシュとして特
にラベル付けされていない他のデータ構造体にも適用可
能である。上記の方法は、様々な実施態様に合わせて変
更することができる。たとえば、セット予測を常に変更
して、分岐予測検査を省くことができる。あるいは、分
岐予測を一次レベル・キャッシュと二次レベル・キャッ
シュに別々に使用して、一方には書込みを行い、他方に
は行わないようにしたり、その逆にしたりすることが可
能である。したがって、好ましい実施形態の説明は例示
的なものであり、本発明の範囲は特許請求の範囲に記載
されている。
【図1】 従来技術のTLBおよびダイレクトマップ・
キャッシュを示すブロック図である。
キャッシュを示すブロック図である。
【図2】 従来技術の4ウェイ・セットアソシアティブ
・キャッシュを示すブロック図である。
・キャッシュを示すブロック図である。
【図3】 本発明を組み込んだマイクロプロセッサのロ
ック図である。
ック図である。
【図4】 本発明によるプロセッサへの接続を示すチッ
プセットのブロック図である。
プセットのブロック図である。
【図5】 本発明によるキャッシュ項目の3つの実施形
態のデータ・フィールドを示す図である。
態のデータ・フィールドを示す図である。
【図6】 本発明によるキャッシュ項目の3つの実施形
態のデータ・フィールドを示す図である。
態のデータ・フィールドを示す図である。
【図7】 本発明によるキャッシュ項目の3つの実施形
態のデータ・フィールドを示す図である。
態のデータ・フィールドを示す図である。
【図8】 本発明によるキャッシュ読取り機構を示すブ
ロック図である。
ロック図である。
【図9】 本発明によるキャッシュ・フィル動作を示す
フローチャートである。
フローチャートである。
【図10】 本発明による、一次レベル・キャッシュ・
ミスの場合に採るステップを示すフローチャートであ
る。
ミスの場合に採るステップを示すフローチャートであ
る。
【図11】 L1キャッシュ・フィル中のL2セット予
測修正を示すタイミング図である。
測修正を示すタイミング図である。
12 命令キャッシュ、 14 デコード・ユニット、
16 プリフェッチ・ユニット、 18 分岐ユニッ
ト、 20 アドレス変換バッファ、 22キャッシュ
制御/システム・インタフェース、 24 プリデコー
ド・ユニット、 26 命令バッファ、 28 ディス
パッチ・ユニット、 32 ロード/ストア・ユニッ
ト、 34 整数ALUユニット 38 浮動小数点ユ
ニット、44 グラフィカル・ユニット、 48 整数
レジスタ、 52 完了ユニット、 56 オンチップ
・データ・キャッシュ、 58 データTLB、 80
二次レベル・キャッシュ・タグ・メモリ、 82 二次
レベル・キャッシュ・データ・メモリ、 84 データ
・バッファ、 86 システム・データ・バス、 88
アドレス・バス、 120、126 ラッチ、 12
2 プリフェッチ・ユニット、 128 キャッシュ、
130 タグ比較器、 132 アドレス・レジスタ
16 プリフェッチ・ユニット、 18 分岐ユニッ
ト、 20 アドレス変換バッファ、 22キャッシュ
制御/システム・インタフェース、 24 プリデコー
ド・ユニット、 26 命令バッファ、 28 ディス
パッチ・ユニット、 32 ロード/ストア・ユニッ
ト、 34 整数ALUユニット 38 浮動小数点ユ
ニット、44 グラフィカル・ユニット、 48 整数
レジスタ、 52 完了ユニット、 56 オンチップ
・データ・キャッシュ、 58 データTLB、 80
二次レベル・キャッシュ・タグ・メモリ、 82 二次
レベル・キャッシュ・データ・メモリ、 84 データ
・バッファ、 86 システム・データ・バス、 88
アドレス・バス、 120、126 ラッチ、 12
2 プリフェッチ・ユニット、 128 キャッシュ、
130 タグ比較器、 132 アドレス・レジスタ
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A.
Claims (23)
- 【請求項1】 複数の項目と、 各タグが前記項目の1つに対応する複数のタグと、 各第2のセット予測子が前記項目の1つに対応し、次に
アクセスする予測された項目が見つけ出されると予測さ
れる第2のキャッシュ・メモリ内のセットを識別する、
複数の第2のセット予測子とを含む第1のキャッシュ・
メモリ・システム。 - 【請求項2】 各第1のセット予測子が前記項目の1つ
に対応し、次にアクセスする予測された項目が見つけ出
されると予測される前記第1のキャッシュ・メモリ内の
セットを識別する、複数の第1のセット予測子をさらに
含む、請求項1に記載のメモリ・システム。 - 【請求項3】 複数の前記項目がデータであることを特
徴とする請求項1に記載のメモリ・システム。 - 【請求項4】 複数の前記項目が命令であることを特徴
とする請求項1に記載のメモリ・システム。 - 【請求項5】 複数の前記項目がそれぞれ複数のデータ
・ワードを含むことを特徴とする請求項1に記載のメモ
リ・システム。 - 【請求項6】 複数の前記項目がそれぞれ複数の命令を
含むことを特徴とする請求項1に記載のメモリ・システ
ム。 - 【請求項7】 前記第2のキャッシュ・メモリが二次レ
ベル・キャッシュであることを特徴とする請求項1に記
載のメモリ・システム。 - 【請求項8】 前記第2のキャッシュ・メモリがN次レ
ベル・キャッシュであることを特徴とする請求項1に記
載のメモリ・システム。 - 【請求項9】 前記第1のキャッシュ・メモリがマイク
ロプロセッサ内の一次レベル・キャッシュであることを
特徴とする請求項1に記載のメモリ・システム。 - 【請求項10】 前記第2のキャッシュ・メモリが前記
マイクロプロセッサの外部にあるN次レベル・キャッシ
ュであることを特徴とする請求項1に記載のメモリ・シ
ステム。 - 【請求項11】 前記外部N次レベル・キャッシュのた
めのタグを記憶する前記マイクロプロセッサ上のN次レ
ベル・キャッシュ・タグ・メモリをさらに含む、請求項
10に記載のメモリ・システム。 - 【請求項12】 前記第2のキャッシュ・メモリ内の各
論理セットが、記憶空間のページのサイズ以下のサイズ
を有することを特徴とする請求項1に記載のメモリ・シ
ステム。 - 【請求項13】 最後にアクセスされた項目に対応する
前記第2のセット予測子の1つを記憶する第2のキャッ
シュ・ラッチをさらに含む、請求項1に記載のメモリ・
システム。 - 【請求項14】 現行アドレスのセット予測子を更新す
る際に使用するために、最後にアクセスされたアドレス
を記憶する直前アドレス・ラッチをさらに含むことを特
徴とする請求項1に記載のメモリ・システム。 - 【請求項15】 複数の項目と、 各タグが前記項目の1つに対応する複数のタグと、 各第2のセット予測子が前記項目の1つに対応し、次に
アクセスする予測された項目が見つけ出されると予測さ
れる第2のキャッシュ・メモリ内のセットを識別する、
複数の第2のセット予測子と、 各第1のセット予測子が前記項目の1つに対応し、次に
アクセスする予測された項目が見つけ出されると予測さ
れる第1のキャッシュ・メモリ内のセットを識別する、
複数の第1のセット予測子とを含む、第1のキャッシュ
・メモリ・システム。 - 【請求項16】 前記第1のキャッシュ・メモリがマイ
クロプロセッサ内の一次レベル・キャッシュであること
を特徴とする請求項15に記載のメモリ・システム。 - 【請求項17】 前記第2のキャッシュ・メモリがマイ
クロプロセッサの外部にある二次レベル・キャッシュで
あることを特徴とする請求項15に記載のメモリ・シス
テム。 - 【請求項18】 前記題2のキャッシュ・メモリ内の各
セットが記憶空間のページのサイズ以下のサイズを有す
ることを特徴とする請求項15に記載のメモリ・システ
ム。 - 【請求項19】 複数の項目と、 各タグが前記項目の1つに対応する複数のタグと、 各セット予測子が前記項目の1つに対応し、次にアクセ
スする予測された項目が見つけ出されると予測されるキ
ャッシュ・メモリ内のセットを識別する複数のセット予
測子とを含み、各セットがメモリのページのサイズ以下
のサイズを有することを特徴とするキャッシュ・メモリ
・システム。 - 【請求項20】 システム・メモリと、 一次レベル・キャッシュ・メモリを含むマイクロプロセ
ッサと、 前記マイクロプロセッサに結合された二次レベル・キャ
ッシュ・メモリとを含み、 前記一次レベル・キャッシュ・メモリは、 複数の項目と、 各タグが前記項目の1つに対応する複数のタグと、 各第2のセット予測子が前記項目の1つに対応し、次に
アクセスする予測された項目が見つけ出されると予測さ
れる二次レベル・キャッシュ内のセットを識別する、複
数の第2のセット予測子とを含むコンピュータ・システ
ム。 - 【請求項21】 単一の半導体チップ上に集積されたマ
イクロプロセッサであって、 一次レベル・キャッシュと、 アドレスをN次レベル・キャッシュ・タグと比較するよ
うに構成された比較論理回路を含むN次レベル・キャッ
シュ・コントローラと、 外部N次レベル・キャッシュのためにタグを記憶するN
次レベル・キャッシュ・タグ・メモリとを含むマイクロ
プロセッサ。 - 【請求項22】 第2のキャッシュ・メモリ・システム
のアクセスを改良する方法であって、 複数の項目を記憶するステップと、 各タグが前記項目の1つに対応する複数のタグを記憶す
るステップと、 各第2のセット予測子が前記項目の1つに対応し、次に
アクセスする予測された項目が見つけ出されると予測さ
れる第2のキャッシュ・メモリ内のセットを識別する、
複数の第2のセット予測子を記憶するステップとを含む
方法。 - 【請求項23】 各第1のセット予測子が前記項目の1
つに対応し、次にアクセスする予測された項目が見つけ
出されると予測される第1のキャッシュ・メモリ内のセ
ットを識別する、複数の第1のセット予測子を記憶する
ステップをさらに含む請求項22に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/615,662 US5918245A (en) | 1996-03-13 | 1996-03-13 | Microprocessor having a cache memory system using multi-level cache set prediction |
| US08/615662 | 1996-03-13 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1074166A true JPH1074166A (ja) | 1998-03-17 |
Family
ID=24466328
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9076701A Pending JPH1074166A (ja) | 1996-03-13 | 1997-03-13 | 多重レベル・ダイナミック・セット予測方法および装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5918245A (ja) |
| EP (1) | EP0795828B1 (ja) |
| JP (1) | JPH1074166A (ja) |
| KR (1) | KR970066887A (ja) |
| DE (1) | DE69721368T2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010509680A (ja) * | 2006-11-03 | 2010-03-25 | クゥアルコム・インコーポレイテッド | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 |
Families Citing this family (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3068469B2 (ja) * | 1996-08-28 | 2000-07-24 | 新潟日本電気株式会社 | 2次レベルキャッシュメモリシステム |
| US6490658B1 (en) * | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
| US6138209A (en) * | 1997-09-05 | 2000-10-24 | International Business Machines Corporation | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof |
| US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
| US6122709A (en) * | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
| US6321297B1 (en) * | 1998-01-05 | 2001-11-20 | Intel Corporation | Avoiding tag compares during writes in multi-level cache hierarchy |
| US6205519B1 (en) | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
| US6418525B1 (en) * | 1999-01-29 | 2002-07-09 | International Business Machines Corporation | Method and apparatus for reducing latency in set-associative caches using set prediction |
| KR100343940B1 (ko) * | 1999-02-26 | 2002-07-20 | 삼성전자 주식회사 | 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지 |
| US6446169B1 (en) | 1999-08-31 | 2002-09-03 | Micron Technology, Inc. | SRAM with tag and data arrays for private external microprocessor bus |
| US6625715B1 (en) * | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
| 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 |
| US6564298B2 (en) * | 2000-12-22 | 2003-05-13 | Intel Corporation | Front end system having multiple decoding modes |
| US6622208B2 (en) * | 2001-03-30 | 2003-09-16 | Cirrus Logic, Inc. | System and methods using a system-on-a-chip with soft cache |
| JP4071942B2 (ja) * | 2001-04-27 | 2008-04-02 | 株式会社ルネサステクノロジ | データ処理装置及びデータプロセッサ |
| US20030163643A1 (en) * | 2002-02-22 | 2003-08-28 | Riedlinger Reid James | Bank conflict determination |
| US7027064B2 (en) * | 2002-02-28 | 2006-04-11 | Sun Microsystems, Inc. | Active block write-back from SRAM cache to DRAM |
| US6941310B2 (en) * | 2002-07-17 | 2005-09-06 | Oracle International Corp. | System and method for caching data for a mobile application |
| US7234034B2 (en) * | 2002-09-16 | 2007-06-19 | Texas Instruments Incorporated | Self-clocking memory device |
| US7032076B2 (en) * | 2002-09-16 | 2006-04-18 | Intel Corporation | Prefetching data in a computer system |
| US20040117669A1 (en) * | 2002-12-12 | 2004-06-17 | Wilson Peter A. | Method for controlling heat dissipation of a microprocessor |
| US6701412B1 (en) * | 2003-01-27 | 2004-03-02 | Sun Microsystems, Inc. | Method and apparatus for performing software sampling on a microprocessor cache |
| US20040181626A1 (en) * | 2003-03-13 | 2004-09-16 | Pickett James K. | Partial linearly tagged cache memory system |
| US20040225840A1 (en) * | 2003-05-09 | 2004-11-11 | O'connor Dennis M. | Apparatus and method to provide multithreaded computer processing |
| US7117290B2 (en) * | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
| US20050050278A1 (en) * | 2003-09-03 | 2005-03-03 | Advanced Micro Devices, Inc. | Low power way-predicted cache |
| DE602004010922T2 (de) * | 2003-10-11 | 2008-12-18 | Spans Logic Inc., Los Altos Hills | Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen |
| US7395372B2 (en) * | 2003-11-14 | 2008-07-01 | International Business Machines Corporation | Method and system for providing cache set selection which is power optimized |
| US7225316B2 (en) * | 2003-11-17 | 2007-05-29 | Intel Corporation | Memory mapping apparatus, systems, and methods |
| US7290092B2 (en) * | 2003-12-10 | 2007-10-30 | International Business Machines Corporation | Runtime register allocator |
| US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
| JP3834323B2 (ja) * | 2004-04-30 | 2006-10-18 | 日本電気株式会社 | キャッシュメモリおよびキャッシュ制御方法 |
| US7725450B1 (en) | 2004-07-23 | 2010-05-25 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations |
| US8886677B1 (en) | 2004-07-23 | 2014-11-11 | Netlogic Microsystems, Inc. | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length |
| US7653619B1 (en) | 2004-07-23 | 2010-01-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height |
| US7747599B1 (en) | 2004-07-23 | 2010-06-29 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations |
| US7603346B1 (en) | 2004-07-23 | 2009-10-13 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein |
| US7395406B2 (en) * | 2005-05-12 | 2008-07-01 | International Business Machines Corporation | System and method of large page handling in a virtual memory system |
| US7797686B2 (en) * | 2005-05-13 | 2010-09-14 | Texas Instruments Incorporated | Behavior of trace in non-emulatable code |
| US7788645B2 (en) * | 2005-05-16 | 2010-08-31 | Texas Instruments Incorporated | Method for guaranteeing timing precision for randomly arriving asynchronous events |
| US20060255978A1 (en) * | 2005-05-16 | 2006-11-16 | Manisha Agarwala | Enabling Trace and Event Selection Procedures Independent of the Processor and Memory Variations |
| EP1821571A1 (en) * | 2006-02-15 | 2007-08-22 | Oticon A/S | Loop antenna for in the ear audio device |
| US7697518B1 (en) | 2006-09-15 | 2010-04-13 | Netlogic Microsystems, Inc. | Integrated search engine devices and methods of updating same using node splitting and merging operations |
| US7953721B1 (en) | 2006-11-27 | 2011-05-31 | Netlogic Microsystems, Inc. | Integrated search engine devices that support database key dumping and methods of operating same |
| US7831626B1 (en) | 2006-11-27 | 2010-11-09 | Netlogic Microsystems, Inc. | Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node |
| US7987205B1 (en) | 2006-11-27 | 2011-07-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations |
| US8086641B1 (en) | 2006-11-27 | 2011-12-27 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same |
| JP5012016B2 (ja) * | 2006-12-28 | 2012-08-29 | 富士通株式会社 | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
| US7886176B1 (en) | 2007-09-24 | 2011-02-08 | Integrated Device Technology, Inc. | DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions |
| US7716204B1 (en) | 2007-12-21 | 2010-05-11 | Netlogic Microsystems, Inc. | Handle allocation managers and methods for integated circuit search engine devices |
| US7801877B1 (en) | 2008-04-14 | 2010-09-21 | Netlogic Microsystems, Inc. | Handle memory access managers and methods for integrated circuit search engine devices |
| US8438330B2 (en) | 2010-05-17 | 2013-05-07 | Netlogic Microsystems, Inc. | Updating cam arrays using prefix length distribution prediction |
| US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
| US9189398B2 (en) * | 2012-12-28 | 2015-11-17 | Intel Corporation | Apparatus and method for memory-mapped register caching |
| US10684951B2 (en) | 2017-08-04 | 2020-06-16 | International Business Machines Corporation | Minimizing cache latencies using set predictors |
| US10880583B2 (en) | 2019-04-26 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Method, apparatus, terminal, and readable storage medium for offline caching |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5235697A (en) * | 1990-06-29 | 1993-08-10 | Digital Equipment | Set prediction cache memory system using bits of the main memory address |
| US5418922A (en) * | 1992-04-30 | 1995-05-23 | International Business Machines Corporation | History table for set prediction for accessing a set associative cache |
| US5392414A (en) * | 1992-06-30 | 1995-02-21 | Sun Microsystems, Inc. | Rapid data retrieval from data storage structures using prior access predictive annotations |
| US5548739A (en) * | 1993-11-04 | 1996-08-20 | Sun Microsystems, Inc. | Method and apparatus for rapidly retrieving data from a physically addressed data storage structure using address page crossing predictive annotations |
| US5548742A (en) * | 1994-08-11 | 1996-08-20 | Intel Corporation | Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory |
-
1996
- 1996-03-13 US US08/615,662 patent/US5918245A/en not_active Expired - Lifetime
-
1997
- 1997-02-21 EP EP97301126A patent/EP0795828B1/en not_active Expired - Lifetime
- 1997-02-21 DE DE69721368T patent/DE69721368T2/de not_active Expired - Fee Related
- 1997-03-10 KR KR1019970007872A patent/KR970066887A/ko not_active Ceased
- 1997-03-13 JP JP9076701A patent/JPH1074166A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010509680A (ja) * | 2006-11-03 | 2010-03-25 | クゥアルコム・インコーポレイテッド | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5918245A (en) | 1999-06-29 |
| DE69721368T2 (de) | 2004-02-26 |
| EP0795828A2 (en) | 1997-09-17 |
| EP0795828A3 (en) | 1997-12-29 |
| DE69721368D1 (de) | 2003-06-05 |
| KR970066887A (ko) | 1997-10-13 |
| EP0795828B1 (en) | 2003-05-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5918245A (en) | Microprocessor having a cache memory system using multi-level cache set prediction | |
| US10877901B2 (en) | Method and apparatus for utilizing proxy identifiers for merging of store operations | |
| JP3542021B2 (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
| US7707397B2 (en) | Variable group associativity branch target address cache delivering multiple target addresses per cache line | |
| KR100747127B1 (ko) | 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 | |
| KR100708010B1 (ko) | 인덱스와 선택적 경로 정합에 기반하여 데이터를 포워딩하는 저장 버퍼 | |
| US7958317B2 (en) | Cache directed sequential prefetch | |
| US6212603B1 (en) | Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory | |
| US5778434A (en) | System and method for processing multiple requests and out of order returns | |
| US6212602B1 (en) | Cache tag caching | |
| JP2618175B2 (ja) | キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル | |
| US5870599A (en) | Computer system employing streaming buffer for instruction preetching | |
| EP0097790A2 (en) | Apparatus for controlling storage access in a multilevel storage system | |
| US7191291B2 (en) | Microprocessor with variable latency stack cache | |
| US6012134A (en) | High-performance processor with streaming buffer that facilitates prefetching of instructions | |
| US20020069326A1 (en) | Pipelined non-blocking level two cache system with inherent transaction collision-avoidance | |
| EP0381470A2 (en) | Processing of memory access exceptions along with prefetched instructions within the instruction pipeline of a virtual memory system-based digital computer | |
| US6427192B1 (en) | Method and apparatus for caching victimized branch predictions | |
| KR20150016278A (ko) | 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치 | |
| JP2003514299A5 (ja) | ||
| US7039768B2 (en) | Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions | |
| US20030074530A1 (en) | Load/store unit with fast memory data access mechanism | |
| US5737749A (en) | Method and system for dynamically sharing cache capacity in a microprocessor | |
| US5926841A (en) | Segment descriptor cache for a processor | |
| US11797308B2 (en) | Fetch stage handling of indirect jumps in a processor pipeline |