JP2007504552A - プロセッサの電力を削減するためのマイクロtlbおよびマイクロタグ - Google Patents

プロセッサの電力を削減するためのマイクロtlbおよびマイクロタグ Download PDF

Info

Publication number
JP2007504552A
JP2007504552A JP2006525316A JP2006525316A JP2007504552A JP 2007504552 A JP2007504552 A JP 2007504552A JP 2006525316 A JP2006525316 A JP 2006525316A JP 2006525316 A JP2006525316 A JP 2006525316A JP 2007504552 A JP2007504552 A JP 2007504552A
Authority
JP
Japan
Prior art keywords
cache
tlb
tag
hit
virtual address
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
Application number
JP2006525316A
Other languages
English (en)
Other versions
JP2007504552A5 (ja
Inventor
ダブリュ. シェン ジーン
クレイグ ネルソン エス.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2007504552A publication Critical patent/JP2007504552A/ja
Publication of JP2007504552A5 publication Critical patent/JP2007504552A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address 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 virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

プロセッサ(10)は、キャッシュ(16)、第1TLB(30)、及びタグ回路(36)を含む。キャッシュ(16)は複数のキャッシュラインを記録するデータメモリ(20)と、複数のタグを記録するデータメモリ(20)とを含む。第1TLB(30)は、物理アドレス変換が第1TLB(30)に記録される複数の仮想ページを識別する仮想アドレスのページ部を記録する。タグ回路(36)はキャッシュ(16)に記録され、また、複数の仮想ページ内の複数のキャッシュラインのうちの1つまたはそれ以上を識別するように構成される。第1TLB(30)の第1仮想アドレスによるヒットと、タグ回路(36)の第1仮想アドレスによるヒットに応じて、タグ回路(36)はキャッシュ(16)においてタグメモリ(22)の読み出しを阻止するように構成される。

Description

本発明はプロセッサ分野に関し、より詳細には、プロセッサのキャッシング構造に関する。
一般的にプロセッサには仮想アドレス指定が実装されており、また、最近にアクセスされたデータ、及び/または命令を記録するためのキャッシュも実装されている。通常、プロセッサはアクセスされる(つまり、読み出し又は書き込みされる)場所の仮想アドレスを生成し、そのアクセスがキャッシュ内でヒットするかどうかを判断するために、その仮想アドレスは物理アドレスに変換される。より詳細には、一般的に、キャッシュアクセスはその変換に並行して開始され、また、キャッシュアクセスがヒットであるかどうかを検出するためにその変換が使用される。
一般的に、キャッシュアクセスはプロセッサのクリティカル・タイミング・パス(critical timing path)の1つであり、また、キャッシュレイテンシも、プロセッサが到達可能なパフォーマンスレベルに非常に重要である。従って、プロセッサの設計者たちは多くの場合、キャッシュレイテンシを低減し、かつタイミング要件を満たすように、キャッシュ/変換設計の最適化に取り組んでいる。しかし、多くの最適化技術はキャッシュ/変換回路の消費電力を増加し得る。多くのプロセッサでは、キャッシュ/変換回路がプロセッサの全体の電力を最も消費するものの1つであり得る。
時間が経つにつれてプロセッサの電力消費は増えるので、プロセッサの電力消費の制御(及び、電力消費を削減するためのプロセッサの設計)の重要性は高まりつつある。多くの場合、キャッシュ/変換回路はプロセッサの電力を大量に消費するので、キャッシュ/変換回路の電力消費を削減する技術がより望ましくなる。
性能を向上させるために、プロセッサには多くの場合、セットアソシアティブキャッシュが実装されている。セットアソシアティブキャッシュでは、キャッシュにインデックスを付けた所与のアドレスは、そのアドレスが示したキャッシュラインを記録するために使用されてよい、一連の2つ以上のキャッシュラインの記録先を選択する。セットのキャッシュラインの記録先は、セットのウェイと呼ばれ、Wウェイを有するキャッシュは、Wウェイ・セットアソシアティブと呼ばれる(Wは1よりも大きい整数である)。一般的に、セットアソシアティブキャッシュのヒット率は同サイズのダイレクトマップキャッシュよりも高く、従って、ダイレクトマップキャッシュよりも高性能を提供することができる。しかし、一般的に、従来のセットアソシアティブキャッシュは同サイズのダイレクトマップキャッシュよりも多くの電力を消費する。通常、キャッシュにはキャッシュされたデータを記録するデータメモリと、キャッシュされたデータのアドレスを識別するタグを記録するタグメモリとが含まれる。
従来のセットアソシアティブキャッシュでは、データメモリとタグメモリの各ウェイは入力アドレスに応答してアクセスされる。そのアドレスによってヒットされるウェイを判断するために、セットの各ウェイに対応するタグが比較されてよく(もしあれば)、また、対応するウェイからのデータはキャッシュによって出力されるために選択される。従って、データメモリとタグメモリの各ウェイは電力を消費してアクセスされ得る。更に、キャッシュアクセスは多くの場合でクリティカル・タイミング・パスであることから、タグメモリとデータメモリアクセスはタイミングとレイテンシのために最適化されうるので、これにより更に電力消費が増える。また更に、キャッシュは一般的に物理アドレスとともにタグ付けされ、そのために、変換回路もまた一般にクリティカルパスであるので、タイミングとレイテンシのために最適化され、これにより変換回路の電力消費が増加し得る。
発明の実施形態
一実施形態では、プロセッサは、キャッシュ、第1の変換索引バッファ(TLB:translation lookaside buffer)、及び第1TLBに結合されたタグ回路を含む。キャッシュは複数のキャッシュラインを記録するように構成されたデータメモリと、複数のタグを記録するように構成されたタグメモリとを含む。複数のタグの各々は、複数のキャッシュラインのうちの各々の1つに対応する。第1TLBは、物理アドレス変換が第1TLBに記録される、複数の仮想ページを識別する複数の仮想アドレスのページ部を記録するように構成される。タグ回路はキャッシュに記録され、かつ、複数の仮想ページに記録される複数のキャッシュラインのうちの1つ以上を識別するように構成される。第1TLBの第1仮想アドレスによるヒットと、タグ回路の第1仮想アドレスによるヒットに応答して、タグ回路はキャッシュにおいてタグメモリの読み出しを阻止するように構成されている。
その他の実施形態では、ある方法が考えられる。第1TLBは第1仮想アドレスとともにアクセスされる。第1TLBは、物理アドレス変換が第1TLBに記録される、複数の仮想ページを識別する、複数の仮想アドレスのページ部を記録するように構成される。第1TLBの第1仮想アドレスによるヒットに応答して、タグ回路がアクセスされる。タグ回路は、キャッシュに記録され、かつ、複数の仮想ページに記録される複数のキャッシュラインを識別するように構成される。第1TLBの第1仮想アドレスとタグ回路によってヒットが検出される。第1TLBの第1仮想アドレスとタグ回路によるヒットに応答して、キャッシュのタグメモリの読み出しは阻止される。
更に別の実施形態では、プロセッサはキャッシュとタグ回路とを含む。キャッシュは複数のキャッシュラインを記録するように構成されたデータメモリと、複数のタグを記録するように構成されたタグメモリとを含む。複数のタグの各々は、複数のキャッシュラインの各々の1つに対応する。タグ回路は、複数のキャッシュラインのサブセットのために第1仮想アドレスによってキャッシュのヒットを検出するように構成される。タグ回路の第1仮想アドレスによるヒットに応答して、タグ回路はタグメモリの読み出しを阻止するように構成され、また、データメモリは第1仮想アドレスに対応する第1キャッシュラインの少なくとも一部を出力するように構成される。
以下の詳細な説明は添付の図面を参照しており、以下に簡単にその説明をする。
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例として示したものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属するすべての改良、等価物、及び変形例をカバーするものである。
図1を参照すると、プロセッサ10の一実施形態の一部のブロック図が示されている。例示の実施形態では、プロセッサ10はアドレス生成ユニット(AGU:address generation unit)12、ウェイ予測器(way predictor)14、データキャッシュ16、及び変換/フィルタ回路18を含む。データキャッシュ16はデータキャッシュデータメモリ20とデータキャッシュタグメモリ22とを含む。AGU12とウェイ予測器14はアドレスオペランドを受信するように結合されている。AGU12は仮想アドレス(VA:virtual address)を生成するように構成されており、かつ、その仮想アドレスを、ウェイ予測器14、データキャッシュ16(および、より詳細には、データキャッシュデータメモリ20、及びデータキャッシュタグメモリ22)、および、変換/フィルタ回路18へ提供するように結合されている。ウェイ予測器14はデータキャッシュデータメモリ20へウェイ予測を提供するよう結合されており、データキャッシュデータメモリ20はウェイ予測と仮想アドレスに応答してデータを送るように構成されている。ウェイ予測器14は、早期にミスを表示するためにも結合されている。変換/フィルタ回路18はデータキャッシュ16に結合され、また、変換索引バッファ(TLB:translation lookaside buffer)のミス表示を提供するために結合されておる。データキャッシュ16はキャッシュミス表示を生成するように構成される。
AGU12はメモリオペレーションに対するアドレスオペランドを受信するために結合され、また、アドレスオペランドに応答して仮想アドレスを生成するように構成される。例えば、AGU12は、仮想アドレスを生成するためにアドレスオペランドを追加するように構成された加算回路を含んでよい。本文中で用いられているように、メモリオペレーションには(メモリの位置を読み出す)読み出しオペレーションと(メモリの位置を書き込む)書き込みオペレーションが含まれてよい。ある種の実施形態では、メモリオペレーションはメモリオペランドを特定する暗黙命令の一部であり、もしくは、読み出し又は書き込み命令(移動命令と呼ばれることもある)に応答して実行される明白なオペレーションであり得る。アドレスオペランドは、メモリオペランドのアドレスを生成するために使用されるものと定義されているメモリオペレーションに対応する命令のオペランドであってよい。アドレスオペランドには、プロセッサ10が実装するレジスタからのレジスタ値、命令に符号化された変位データ、及び、ある種の実施形態では、プロセッサ10により実装されたセグメンテーション機構からのセグメントベースアドレス、のうちの1つ以上が含まれる。仮想アドレスには、ページング変換機構(the paging translation mechanism)を通じて(プロセッサ10を含むコンピュータシステムのメモリをアドレス指定するために使用される)物理アドレスへの変換がまだ行われていない命令のアドレスオペランドから生成されたアドレスが含まれる。例えば、一実施形態では、プロセッサ10はx86命令セットアーキテクチャ(IA−32としても周知である)を実装してよい。そのような実施形態では、線形アドレスが仮想アドレスの例とされてよい。ページング変換がイネーブルにされない場合は、仮想アドレスは物理アドレスと等価になり得る。
プロセッサ10により実装されるページング機構は、ページ単位で仮想アドレスを物理アドレスへ変換する。つまり、対応する物理アドレスを識別するために、ページの各仮想アドレスに対して使用される1つの変換エントリがあってよい。ページは任意のサイズであってよい。例えば、4キロバイトは一般的なサイズである。いくつかのモードでは、x86命令セットは2メガバイトと4メガバイトのページサイズの特定も行う。仮想アドレスの最下位ビットはページ内のオフセットを定義し、またそのような最下位ビットはページング機構によって変換されない。例えば、4キロバイトのページサイズで、仮想アドレスの最下位12ビットはページのオフセットを形成する。仮想アドレスの残りのビットは、ページのオフセットを除いて、仮想アドレスのページ部を形成してよい。このページ部は仮想アドレスに対する物理アドレス変換を選択するために、ページング機構で使用されてよい。別の方法から見ると、仮想アドレスのページ部は物理アドレス変換によって物理ページに変換される仮想ページを定義してよい。
プロセッサ10は電力消費を削減するために1つ以上の技術を用いてよい。例えば、変換/フィルタ回路18は、比較的小さなTLB(本文ではマイクロTLBと称す)とタグ回路(本文ではマイクロタグ回路と称す)とを含む。マイクロタグ回路は、
(i)マイクロTLBが変換を記録している各仮想ページにあり、また、
(ii)データキャッシュ16に記録されている、
比較的に少数のキャッシュラインのタグを記録するように構成されてよい。
マイクロTLBは仮想アドレスに応答してアクセスされてよく、また、マイクロTLBでヒットが検出されると、変換/フィルタ回路18で、より大きなメインTLB(もしくは複数のTLB)へのアクセスが回避されてよい。そのような場合に、メインTLBへアクセスする際に消費されるであろう電力が節約され得る。更に、マイクロTLBヒットが検出されると、マイクロタグがアクセスされてよい。マイクロタグにおいてヒットが検出されると、キャッシュのヒット/ミスを判断するための、データキャッシュタグメモリ22の読み出しもまた回避されてよい(その結果、データキャッシュタグメモリ22へアクセスする際に消費されるであろう電力も同様に節約され得る)。いずれの場合でも(マイクロタグにおけるヒット、又はデータキャッシュタグメモリ22におけるヒット)、ヒットしたキャッシュラインからのデータはデータキャッシュデータメモリ20から送られてよい。従って、マイクロTLBはメインTLBへアクセスするためのフィルタとして機能してよく、また、マイクロTLBとマイクロタグはデータキャッシュタグメモリ22へアクセスするためのフィルタとして機能してよい。
プロセッサ10に実装されてよい別の電力節約技術は、データキャッシュ16がセットアソシアティブである実施形態に対してウェイ予測器14を使用する。ウェイ予測器14はデータキャッシュ16へアクセスするメモリオペレーションに対して、データキャッシュデータメモリ20のためにウェイ予測を生成する。ウェイ予測と仮想アドレスに応答して、データキャッシュデータメモリ20はデータを使用し得る(図1には示さず)様々なプロセッサ回路へデータを送ることができる(図1のデータフォーワード)。データキャッシュデータメモリ20から読み出されて送られたデータはキャッシュライン、またはキャッシュラインの一部を含んでよい。データはウェイ予測に応答して送られるので、変換回路とキャッシュタグ回路はもはやプロセッサ10の回路パスの一部ではなくなり得る。ある種の実施形態では、変換回路とキャッシュタグ回路は、回路においてある程度のレイテンシを犠牲にしても、低電力消費の回路を使用して実装されてよい。任意に、マイクロTLBやマイクロタグなどのフィルタ構造は、変換回路のレイテンシやキャッシュタグの比較を増加してよい(また更に、より大きなTLB構造とデータキャッシュタグメモリ22へのアクセスを減らすことによって、全体の電力消費を削減することができる)。更に、データキャッシュデータメモリ20の電力消費削減を可能にすることにより、プロセッサ10の電力消費を削減するために、ウェイ予測器14を使用してもよい。以下に、データキャッシュデータメモリ20のための様々な設計を、図9に関連してより詳細に説明している。
ウェイ予測は、変換/フィルタ回路18のマイクロTLB/マイクロタグ、及び/または、データキャッシュタグメモリ22からのタグとのタグ比較を使用して有効にされてよい。ウェイ予測が正しい場合は、ウェイ予測に応答してデータキャッシュデータメモリ20によって送られたデータでオペレーションを継続してよい。その一方で、ウェイ予測が間違っている場合は、メモリオペレーションをやり直してよい。その他の形態では、ある種の実施形態において、ウェイ予測が間違っている場合に、アドレスがデータキャッシュ16でミスとなるように、データキャッシュ16は代替品(replacement)を制御してよい。ある種の実施形態では、ウェイ予測を検証する間に正確なウェイ予測が判断されてよく、また、メモリオペレーションをやり直す間に正確なウェイがアクセスされてよい。その他の実施形態では、メモリオペレーションをやり直す間に、予測されていない各ウェイについてヒット検索を行ってよい(例えば、データキャッシュ16において従来のセットアソシアティブルックアップが実行されてよい)。さまざまな方法でメモリオペレーションをやり直すことができる。例えば、ある種の実施形態では、バッファは実行のために既に発行済みの命令を記録することができる(例えば、スケジューラもしくはリザベーションステーション)。メモリオペレーションはバッファから再発行されてよい。その他の実施形態では、メモリオペレーションに対応する命令と後続の命令は(例えば、命令キャッシュもしくはメモリから)再フェッチ(refetch)されてよい。
ある種の実施形態では、ウェイ予測器14を使用することによって、データキャッシュタグメモリ22の電力消費を削減することができる。予測されたウェイのタグにアクセスし、比較するだけで、ウェイ予測を検証することができる。従って、ある種の実施形態は、データキャッシュタグメモリ22の予測されたウェイだけにアクセスする(マイクロタグにおいてミスが検出され、その結果、キャッシュミスが発生しているかどうかを検出するために、データキャッシュタグメモリ22においてアクセスが行われる場合)。予測されたウェイでミスが検出されると、上述のようにメモリオペレーションをやり直してよい。そのような実施形態では、データキャッシュタグメモリ22は図1の点線矢印で例示されているようにウェイ予測を受信してよい。
ウェイ予測器14は、所与のメモリオペレーションに対するウェイ予測が生成され得ない場合に、早期のミス表示を提供することもできる。ウェイ予測器には、キャッシュの各ウェイに記録されるアドレス表示を記録するメモリを含むことができ、また、メモリオペレーションのウェイ予測を生成するために、そのアドレス表示を対応するメモリオペレーションの仮想アドレス表示と比較することができる。対応する表示がウェイ予測器のいずれの表示ともマッチングしない場合は、ウェイ予測は生成され得ない(また、ミスが検出され得る。)早期のミス表示は、データキャッシュ16においてミスが発生し、その結果、変換/フィルタ回路18からのキャッシュミスを待つよりも早くL2キャッシュがアクセスを開始できることをL2キャッシュへ(L1キャッシュとして機能するデータキャッシュ16とともに)暗示するものとして使用されてよい。
データキャッシュ16はキャッシュミスを示し、また、変換/フィルタ回路18は修正措置(例えば、TLBに記録される変換を配置するためのテーブルウォーキング(table walking)、ミスをしたキャッシュラインをデータキャッシュ16に埋めるためのキャッシュフィルなど)のために、プロセッサ10のその他の回路へTLBミスを示すことができる。テーブルウォーキングを行い、かつ、メモリへアクセスしてミスをしたキャッシュラインを検索するための回路は図1に示していない。
例示の実施形態では、データキャッシュ16はセットアソシアティブであってよい。その他の実施形態では、データキャッシュ16はフルアソシアティブであってよく、また、ウェイ予測器14はデータキャッシュ16の任意のエントリにおけるヒットを予測するために使用されてよい。ウェイ予測器14を実装しない実施形態はその他の構造(例えば、ダイレクトマップ)を有すことができる。本文で使用されているように、キャッシュラインは、キャッシュ(例えば、データキャッシュもしくは命令キャッシュ)の割当/割当解除ユニットである、多数の連続バイトであってよい。例えば、キャッシュラインはいずれのサイズのキャッシュラインを実装可能であるが、32の連続バイト、もしくは64の連続バイトであってよい。データキャッシュデータメモリ20は複数のエントリを含んでよく、各エントリはキャッシュラインを記録するように構成される。各エントリは、セットアソシアティブの実施形態のために、Wのキャッシュラインセットに配置されてよい。データキャッシュタグメモリ22も複数のエントリを含み、各エントリはデータキャッシュデータメモリ20の対応するエントリに対するタグを記録するために構成される。データキャッシュタグメモリ22の各エントリは、データキャッシュデータメモリ20の配置に対応して、Wのセットに配置されてよい。
ある種の実施形態では、データキャッシュ16は物理的にタグ付けされてよい(つまり、データキャッシュタグメモリ22の各タグは物理アドレスであってよい)。一般的に、所与の物理アドレスに対応するデータがデータキャッシュ16に記録される場合に、データキャッシュ16においてヒットが検出されてよい。所与の物理アドレスに対応するデータがデータキャッシュ16に記録されない場合は、ミスが検出される。しかし、ある場合においては、データキャッシュ16が物理的にタグ付けされている場合であっても、データキャッシュ16の仮想アドレスヒットについて議論することが便利であり得る。仮想アドレスは、(仮想アドレスが変換する)対応の物理アドレスがヒットである場合、データキャッシュ16でヒットする。ある場合においては、仮想アドレスは(例えば、以下で更に詳細を説明しているマイクロタグにおいて)実際には対応する物理アドレスを使用せずにヒットとして検出され得る。
一般に、プロセッサ10は所望する設計に従う任意のその他の回路を含んでよい。様々な実施形態において、プロセッサ10はスーパースカラ、もしくはスカラであってよく、また、インオーダー命令実行、もしくは、アウトオブオーダー命令実行などを実装することができ、かつ、上述の特徴を実装するための回路を含むことができる。ある種の実施形態では、例えば、1つ以上のAGU12が提供され、また、そのAGU12は仮想アドレスを並列に生成することができる。そのような実施形態のために、ウェイ予測器14、データキャッシュ16、および変換/フィルタ回路18は、複数の仮想アドレスを並列に処理するための回路を含んでよく、もしくは、それ以外に複数の仮想アドレスを処理するための回路を含んでよい。
電力消費を削減するために、ともに使用されるものとして、ウェイ予測器14と、変換/フィルタ回路18のマイクロTLB/マイクロタグの特徴が説明されている一方で、マイクロTLB/マイクロタグを実装しないでウェイ予測器14を実装する各実施形態が考えられる。更に、(例えば、ウェイの選択が決定されるまで、データキャッシュ16からのデータ送信を遅延させることによって)ウェイ予測器14を実装せずにマイクロTLB/マイクロタグが実装される実施形態が考えられる。例えば、ある種の実施形態では、マイクロタグはその中に検出されたヒットに対してウェイ選択を出力してよい。
データキャッシュとともに使用されるものとして、マイクロTLB/マイクロタグ回路とウェイ予測器14が例示されているが、マイクロTLB、マイクロタグ、及び/または、ウェイ予測器14のいずれも、所望に応じてプロセッサの命令キャッシュとともに使用されてよい。
次に図2を参照すると、変換/フィルタ回路18の一実施形態のブロック図が示されている。例示の実施形態では、変換/フィルタ回路18はマイクロTLB30(マイクロTLBタグ回路32とマイクロTLBデータ回路34とを含む)、マイクロタグ回路36、メインTLB38(メインTLBタグ回路40とメインTLBデータ回路42とを含む)、多重通信回路44、及びインバータ46、48を含む。図2にはデータキャッシュタグメモリ22を含むデータキャッシュ16の一部、キャッシュヒット/ミス回路50、及びコンパレータ52も含まれる。マイクロTLB30(及び、より詳細には、マイクロTLBタグ回路32)、マイクロタグ回路36、データキャッシュタグメモリ22、及びTLB38及び、より詳細には、メインTLBタグ回路40)は、AGU12から仮想アドレスを受信するように結合されている。マイクロTLBタグ回路32は、マイクロTLBデータ回路34、マイクロタグ回路36、多重通信回路44、及びインバータ46(更に、メインTLBタグ回路40へ結合されている)へヒット信号を出力するように構成されている。マイクロTLBタグ回路32は更に、マイクロTLBデータ回路34とマイクロタグ回路36へエントリ表示を出力するように構成されている。マイクロTLBデータ回路34はメインTLBデータ回路42のように、物理アドレス(PA)を多重通信回路44へ出力するように構成されている。多重通信回路44の出力はコンパレータ52に結合されている。メインTLBタグ回路40はメインTLBデータ回路42へ結合され、TLBのミス表示を与える。マイクロタグ回路36は(更に、データキャッシュタグメモリ22に結合されている)インバータ48へ、また、キャッシュヒット/ミス回路50へヒット信号を出力するように構成されている。更に、キャッシュヒット/ミス回路50はコンパレータ42と結合され、キャッシュミス表示を与える。
マイクロTLB30はAGU12から仮想アドレスを受信し、仮想アドレスのページ部をマイクロTLB30に記録された変換に対応する各仮想アドレスのページ部と比較する。より詳細には、マイクロTLBタグ回路32は各仮想アドレスのページ部を記録する複数のエントリを含んでよい。対応する物理アドレスと、変換を行ったページテーブルからのその他の情報は、マイクロTLBデータ回路34に記録されてよい。マイクロTLBタグ回路32は比較を行い、仮想アドレスがマイクロTLBでヒットするかどうかを示すヒット信号を出力し、ヒットが示されると、ヒットしたエントリを示すエントリが示される。マイクロTLBデータ回路34はエントリ表示を受信してよく、また、対応する物理アドレスを多重通信回路44へ出力してよい。ヒット信号により、コンパレータ52への出力として、多重通信回路44が物理アドレスをマイクロTLB30から選択させるようにしてよい。本文にはフルアソシアティブの実施形態をより詳細に説明しているが、その他の実施形態はその他の構成を採用してよい。様々な実施形態において、マイクロTLB30は例えばフルアソシアティブ、セットアソシアティブ、もしくはダイレクトマップ構造を持つことができる。
更に、マイクロTLB30からのヒット信号は、マイクロタグ回路36へのイネーブル(enable)として機能してよい。マイクロタグ回路36はマイクロTLB30が変換を記録する仮想ページ内の複数のキャッシュラインのタグを記録してよい。従って、マイクロTLBにミスがあると、マイクロタグ回路36もまたミスをする。マイクロTLBにヒットがあると、マイクロタグ回路36はヒットすることが可能である。更に、マイクロタグ回路36はエントリ表示を受信する。マイクロタグ回路36は、仮想アドレスに対してマイクロタグ回路36にヒットがあるかどうかを判断し、かつ、ヒット信号を生成する。マイクロタグ回路36にヒットがあると、仮想アドレスはデータキャッシュ16でヒットし、また、データキャッシュタグメモリ22におけるタグアクセスは阻止され得る。従って、マイクロタグ回路36からのヒット信号は、データキャッシュタグメモリ22に対して、ディセーブルとして機能し、データキャッシュタグメモリ22が、仮想アドレスに応答していずれのタグの読み出しを阻止するようにする。従って、インバータ48はマイクロタグ回路36からヒット信号をインバートし、イネーブルとしてデータキャッシュタグメモリ22へ出力する。キャッシュヒット/ミス回路50もマイクロタグ回路36からヒット信号を受信し、また、ヒット信号がマイクロタグ回路36でヒットを示す場合は、仮想アドレスに対してキャッシュミスを示すことができない。コンパレータ52からのヒット/ミスはこの場合は無視されてよい。
マイクロタグ回路36にミスがあると(もしくは、マイクロTLB回路30にミスがあるため、マイクロタグ回路36がイネーブルにされない場合)、データキャッシュタグメモリ22はイネーブルにされ、また、タグをコンパレータ52へ出力する。ウェイ予測器14を実装するある種の実施形態では、予測されたウェイからのタグだけが出力されてよい。そのような実施形態に対して、データキャッシュタグメモリ22はウェイ予測(WP:way prediction)を受信するように結合されてよい。その他の実施形態は、比較のためにインデックス付きセットに各タグを出力してよい。そのような実施形態では、予測されていないウェイでヒットが起きる場合にキャッシュフィルが発生しないようにするため、キャッシュミス表示は予測されていないウェイのヒットを除いて、ミス、もしくは予測されたウェイのミスを表示してよい。ある種の実施形態では、予測されていないウェイでヒットが起きないようにするため、キャッシュミスが発生する場合に、リプレースメントウェイの選択が制御されてよい。そのようなリプレースメントの例は図9と10に関連して以下に説明されている。コンパレータ52は、キャッシュヒット/ミス回路50へ比較結果を提供し、該回路50はそれに応じてキャッシュミス表示を生成する。データキャッシュタグメモリ22でヒットがあり、また、マイクロTLB30でヒットがあった場合、マイクロタグ回路36をデータキャッシュタグメモリ22からタグとともに読み出してもよい。
マイクロタグ回路36はデータキャッシュタグメモリ22にもある各タグを記録するので、マイクロタグ回路36はデータキャッシュタグメモリ22とコヒーレンシを維持されうる。キャッシュラインは、ミスをしたキャッシュラインのキャッシュフィルを介したリプレースメントにより、データキャッシュ16で無効にされてよく、もしくは、プロセッサ10が接続されている相互接続のその他のプロセッサ又はエージェントによるアクセスから生成されるスヌープヒットにより無効にされてよい。一実施形態では、マイクロタグ回路36の全体のコンテンツはデータキャッシュタグメモリ22のアップデートに応じて無効にされてよい。他の形態では、アップデートが起きているインデックスと同じキャッシュインデックスを有するマイクロタグ回路36のエントリだけが無効にされてよい。また別の実施形態では、(i)アップデートが起きているインデックスと同じキャッシュインデックス、及び(ii)(対応のマイクロTLBエントリにおいて)、データキャッシュ16で無効にされているキャッシュラインと同じ仮想アドレス、を有するマイクロタグ回路36の各エントリだけが無効にされ得る。
マイクロタグ回路36はマイクロTLB30のエントリにより変換される仮想ページ内に各タグを記録する。従って、マイクロTLB30がアップデートされると、マイクロタグも同様にアップデートされてよい。一実施形態では、マイクロTLB30がアップデートされると、マイクロタグ回路36の全体のコンテンツは無効にされてよい。他の形態では、変更されたマイクロTLBエントリに対応するマイクロタグ回路36の各タグが局所的に無効にされてよい。
マイクロTLB30はメインTLB38のフィルタとしても機能する。つまり、マイクロTLB30においてヒットがあると、メインTLB38へのアクセスが阻止される。従って、マイクロTLB30によって出力されたヒット信号は、インバータ46によりインバートされ、また、メインTLBタグ回路40のイネーブル入力へ入力されてよい。メインTLBタグ回路40はイネーブル入力がアサートにされない場合はメインTLBタグへのアクセスを阻止してよい。
マイクロTLB30でミスがあると、メインTLBタグ回路40は、仮想アドレスがメインTLB38でヒットするかどうかを判断してよい。ヒットがあると、メインTLBデータ回路42は対応の物理アドレスを多重通信回路44へ出力するためにアクセスされてよい。更に、マイクロTLB30はメインTLB38からの変換とともに読み出しされてよい。マイクロTLB30でミスがあるために、多重通信回路44はコンパレータ52への出力として、メインTLBデータ回路42が出力する物理アドレスを選択する。メインTLB38がイネーブルにされ、メインTLB38でミスが検出されると、メインTLB38は、ページテーブルのテーブルウォークを所望の変換に配置させるようにTLBミス表示を生成する。ある種の実施形態では、テーブルウォークの間、電力消費を削減するために、プロセッサ10はオペレーションを休止することができる。一実施形態では、メインTLB38が読み出される際にはマイクロTLB30は読み出され得ない。マイクロTLB30のページに対して後続のミスが検出され、メインTLB38においてヒットが検出され、そのときにマイクロTLB30が読み出され得る。他の形態では、マイクロTLB30はメインTLB38が読み出されるのと同時に読み出されてよい。
マイクロTLB30はメインTLB38にも記録される変換を記録するので、マイクロTLB30はメインTLB38と一貫性が維持されてよい。エントリが(メインTLB38のミスと成功したテーブルウォークに応答して)メインTLB38に上書きされる場合は、対応するエントリ(もしあれば)はマイクロTLB30において無効にされる。一実施形態では、マイクロTLB30の全体のコンテンツは、メインTLB39が新しいエントリとともに読み出しされる場合に無効とされ得る。
一実施形態では、メインTLB38は2つのTLBを含んでよい。1つは、4キロバイトのページサイズの変換を記録し、もう1つは、2メガバイトもしくは4メガバイトのページサイズの変換を記録するものである。4キロバイトのTLBはどのような構造を有していてもよいが、一実装品では、4ウェイの512エントリのTLB構造を有す。2メガバイト/4メガバイトのTLBはどのような構造を有していてもよいが、一例では、8エントリでフルアソシアティブのTLB構造を有す。x86命令セットアーキテクチャを実装している一実施形態では、CR3構造のレジスタはメモリのページテーブルのベースアドレスを記録する。メインTLB38の各エントリは、メインTLB38がCR3アドレスの変化に応答して無効にされる必要がないように、変換が読み出されたCR3アドレスとタグ付けされてよくい。ある種の実施形態において、マイクロTLB30のエントリは同様にタグ付けされ、もしくはタグ付けされず、その代わり、CR3アドレスの変化に応答して無効にされ得る。
ヒット信号はマイクロTLB30とマイクロタグ回路36が与えるものとして説明されているが、一般的に、ヒットが検出されるかどうかを示す任意の数の信号を含んでヒット表示が与えられてよい。さらに、ヒットしたエントリを識別するヒット表示とエントリ表示を出力するものとしてマイクロTLB30が示されているが、任意のヒットとエントリの表示が与えられてよい。例えば、一実施形態では、ヒットとエントリの表示はマイクロTLB30のエントリに対応するワンホットエンコーディングに組み合わせられてよい。ワンホットエンコーディングは(アサートされたいずれのビットとともに)ヒットがあることを示すことができ、また、アサートされたビットを介してヒットしたエントリを示すことができる。
ある種の実施形態では、変換/フィルタ回路18はいくつかのパイプラインステージにわたって動作可能であってよい。パイプライン記録デバイス(例えば、フロップ、レジスタ、など)は図2に例示されていない。パイプラインステージの任意の分割が用いられてよい。例えば、図3にはプロセッサ10の一実施形態により実装されてよいパイプラインの一例を例示している。図3の垂直点線はクロックサイクルを定める。クロックサイクルはAG(アドレス生成)、DC1(データキャッシュ1)、DC2(データキャッシュ2)、及び、DC3(データキャッシュ3)に分類される。
AGステージ中に、AGU12はアドレスオペレーションから仮想アドレスを生成する(参照符号60)。さらに、この実施形態において、ウェイ予測器14はウェイ予測を生成する(参照符号62)。ウェイ予測14はアドレスオペランドを受信し、また、ウェイ予測値を記録するメモリをアドレス指定するために、サムアドレスインデキシング(sum address indexing)(以下に詳細を説明する)を実行してよい。他の形態では、AGU12からの仮想アドレスは、ウェイ予測メモリにインデックスを付けるために使用されてよい。その他の形態では、ウェイ予測器14はDC1ステージで動作してもよい。
DC1ステージの間に、マイクロTLBタグ回路32はアクセスされ、マイクロTLB30のヒット/ミスが判断される(参照符号64)。マイクロTLB30においてヒットがあると、マイクロタグ回路36はDC2ステージにおいてアクセスされ(参照符号66)、また、マイクロTLBデータ回路34はDC3ステージ中にアクセスされる(参照符号68)。マイクロタグ回路36においてヒットがあると、データキャッシュタグアクセスが回避され、マイクロタグ回路36のヒットを介してデータキャッシュ16のヒットが検出される。マイクロタグ回路36においてミスがあると、データキャッシュタグメモリ22はDC3ステージにおいてアクセスされ(参照符号70)、また、マイクロTLBデータ回路34の出力と比較される。
マイクロTLB30においてミスがあると、メインTLBタグ回路40はDC2ステージ中にアクセスされ(参照符号72)、また、メインTLBタグ回路40においてヒットがあると、TLBデータ回路42はDC3ステージにおいてアクセスされる(参照符号84)。TLBデータ回路42の出力は、DC3ステージのデータキャッシュタグメモリ22の出力と比較される。
更に、DC1ステージ中に、データキャッシュデータメモリ20はアクセスされ、予測されたウェイからのデータが出力される(参照符号76)。データはDC2ステージにおいて送られる(参照符号78)。
次に図4を参照すると、マイクロTLBタグ回路32の一実施形態のブロック図が示されている。図4の実施形態において、マイクロTLBタグ回路32は、エントリ80Aと80Bを含む一連のエントリと、エントリ80Aと80Bに結合された、各々に対応する比較回路82Aと82Bと、エントリ80A−80Bと比較回路82A−82Bに結合された制御回路84と、を含む。比較回路80Aと80BはAGU12から仮想アドレスを受信するように結合されている。制御回路84は、最長時間未使用の(LRU:least recently used)ストレージ86を含み、また、マイクロTLBタグ回路32のヒット信号とエントリ表示出力を生成するように構成されている。
マイクロTLBタグ回路32は任意の数のエントリ80A−80Bを含んでよい。例えば、一実施形態では4つのエントリが実装されてよい。その他の実施形態では、4つ以上の、もしくは4つ以下のエントリを実装してよい。各エントリ80A−80Bには、バリッドビット(V)、エントリ(及び、マイクロTLBデータ回路34の対応するエントリで、マイクロTLB30のエントリを共に形成する)によって変換される仮想アドレスのページ部(VA[N−1:12])を記録する仮想アドレスフィールド、及び、2メガバイトページ変換から変換されているかどうかを示す2Mビット、を含んでよい。従って、本発明ではN−ビットの仮想アドレスが使用され、Nは整数である。例えば、Nは、ある種の実施形態では32、その他の実施形態では48であってよい。その他の実施形態では、Nは32から64までのいずれの整数であってよい。一般的に、各エントリは任意のタイプのストレージを含んでよい。例えば、ある実施形態では、レジスタ、フリップフロップ、もしくはその他のタイプのクロックドストレージ(clocked storage)デバイスを使用してもよい。
比較回路82A−82BはAGU12からの仮想アドレスの少なくともページ部を受信し、その仮想アドレスのページ部を対応するエントリ80A−80Bに記録されたページ部と比較する。例示している実施形態では、最小ページサイズである4キロバイトを実装し(従って、ビット11:0は仮想アドレスのページ部には含まれない)、また、x86命令セットアーキテクチャとの互換性のために2メガバイトのページサイズを実装することもできる。その他のページサイズも実装できる。例示の実施形態では、比較回路82A−82Bは2つのマッチング信号、match_lowerとmatch_upperとを生成する。Match_upper信号は、エントリでバリッドビットが設定されて、2Mのページ範囲に含まれる仮想アドレス部がマッチングする場合(つまり、VA[20:12]に、アサートされてよい。Match_lowerは、仮想アドレスの残りの部分がマッチングする場合(つまり、VA[20:12]にアサートされてよい。
制御回路84は比較回路82A−82Bの出力を受信するように結合され、また、ヒット信号とエントリ表示をそれに応じて生成するように構成される。エントリのうちの1つにヒットが示されると、制御回路84はヒット信号をアサートし、エントリ表示を与えてよい。ヒットが示されない場合は、制御回路84はヒット信号をアサートし得ない。
図5はエントリが仮想アドレスによってヒットされたかどうかを判断するために制御回路84によって実装されてよい真理値表90の一実施形態である。テーブル90に例示しているのは、エントリからの2Mビット(本実施形態では2M変換を示すように設定される)、match_upperおよびmatch_lower信号(テーブル90の1はアサートされた状態を、0はアサートされていない状態を示している)、及び、2Mビットとmatch_upper信号とmatch_lower信号の各組合せが示すものを説明した結果列、である。
match_upper信号がディアサートされると、制御回路84は仮想アドレスに対してマイクロTLBミスを検出する。マイクロTLBは2Mビット設定とmatch_lower信号の状態に関係なくミスする。従って、マイクロタグ回路36もまたミスする。
2Mビットが設定されると、2メガバイトページに対して対応の変換が行われる。従って、一般的にVA[20:12]は比較には含まれない。しかし、マイクロタグ回路36に対するビットを提供するために、これらのビットは2メガバイトページのプロセッサ10によってアクセスされる最後の4キロバイトページであるものと定義される。Match_upper信号がアサートされると、2Mビットが設定され、マイクロTLBがヒットする。しかし、match_lower信号がディアサートされると、マイクロタグ回路36はこのページに対してミスをする。match_lower信号がアサートされると、マイクロタグ回路36はヒットし、その結果、マイクロタグルックアップが実行される。
2Mビットがクリアであると、対応の変換は4キロバイトページに対するものである。従って、match_upperとmatch_lowerの両方がアサートされ、マイクロTLBヒットが示される(また、可能なマイクロタグヒット示され、その結果マイクロタグルックアップが実行される)。match_lowerがアサートされない場合は、マイクロTLBとマイクロタグミスが検出される。
図5の実施形態を実装する制御回路84に対してマイクロタグ回路36に与えられるヒット表示は、メインTLB38に与えられるヒット表示とは異なってよい。メインTLB38へのヒット表示は、マイクロタグ回路36がミスであっても、変換がヒット(マイクロTLBヒットを示すテーブル90の各エントリ)である限りは、マイクロTLB30においてヒットを示してよい。マイクロタグ回路36へのヒット表示は、マイクロタグルックアップが表示されると、ヒット(マイクロタグルックアップを示すテーブル90のエントリ)を示す。
図4と図5の実施形態は2つの異なるページサイズをサポートする。その他の実施形態は単一のページサイズをサポートするので、比較回路82A−82Bの各々から各単一のマッチング信号が与えられてよく、また、各エントリ80A−80Bから2Mビットを除くことができる。その他の実施形態は、サポートされたページサイズに従い仮想アドレスのページ部分を更に分割することによって、2つ以上のページサイズをサポートすることができる。x86命令セットアーキテクチャは4メガバイトのページサイズをサポートすることにも注目される。図4と図5の実施形態はマイクロTLB30の2つの2メガバイトエントリを使用して4メガバイトのページサイズをサポートしてよい。その他の実施形態は、(例えば、2Mビットと同様に各エントリで4Mビットを使用して)4メガバイトページサイズを直接的にサポートしてよい。
上述の実施形態は2メガバイトのページに対するエントリを使用し、VA[20:12]を使用する2メガバイトのページ内で最も最近にアクセスされた4キロバイトのページサイズを識別して2メガバイトのページサイズをサポートするが、その他の実施形態は、所与の2メガバイトページに対して複数のマイクロTLBエントリを許容する。エントリの各々は既にアクセスされた、異なる4キロバイトページに対し、異なるエンコーディングをVA[20:12]に有してよい。更に別の形態では、VA[20:12]は2メガバイトページのマイクロタグ回路36に含まれてよく、2メガバイトページのヒットは2メガバイト内のキャッシュラインに対するヒットを検出するためにマイクロタグへアクセスするために使用されてよい。
マイクロTLB30でミスがあり、メインTLB38でヒットがある場合には、制御回路84はメインTLB38からヒットした変換がリプレースメントされるエントリ80A−80Bを選択してよい。例示の実施形態では、制御回路84は各エントリ80A−80BのLRUを維持し、また、リプレースメントを行うために最も長い間使われていない(LRU)エントリを選択してよい。任意のその他のリプレースメントアルゴリズムが実装されてよい(例えば、擬似LRU、ランダム、など)。各エントリ80A−80Bは、制御回路84の制御下にあるエントリのうちの1つに記録される2Mビットと、仮想アドレス(VA[N−1:12])の入力ページ部とを受信するように結合されてよい(入力アドレスと2Mビットは図4に示されていない)。様々な実施形態において、入力仮想アドレスのソースと2MビットはメインTLB38、もしくはテーブルウォーク回路であってよい。
図6はマイクロTLBデータ回路34の一実施形態のブロック図である。図6の実施形態において、マイクロTLBデータ回路34はエントリ92A−92Bを含む一連のエントリを含む。エントリ92A−92Bの各々は、図4のエントリ80A−80Bの各々の1つに対応する。更に、多重通信回路94が例示されており、該回路はエントリ92A−92Bに結合され、また、マイクロTLBタグ回路32からエントリ表示を受信する。多重通信回路84(→94)は出力のためにエントリ表示が示したエントリのコンテンツを選択してよい。一実装品では、どのエントリも示されない場合(つまり、ミス)、(電力消費を削減し得る)多重通信回路は、どのエントリ92A−92Bも選択しない。図4のエントリ80A−80Bと同様に、各エントリ92A−92Bはどのようなタイプのストレージ(例えば、一実施形態では、様々なクロックドストレージデバイス)にも実装されてよい。
例示の実施形態では、各エントリ92A−92Bのコンテンツには、ダーティビット(D)、ユーザ/スーパーバイザ(U/S)、読み出し/書き込み(R/W)ビット、メモリタイプフィールド(MemType[4:0])、及び、物理アドレスフィールド(PA[M−1:12]が含まれる。一実施形態では、ビットはx86命令セットアーキテクチャにおいて定義されるページング機構と互換性があってよい。ダーディビットは物理ページが修正済みであるかどうか(例えば、プロセッサがページへの記録命令を実行済みであるかどうか)を示すことができる。ユーザ/スーパーバイザビットはユーザ(特権のない)ページと比較してスーパーバイザ(特権のある)ページを示すことができる。読み出し/書き込みビットは、ページが読み出し専用であるか、もしくは読み出し/書き込みであるかどうかを示すことができる。メモリタイプフィールドは、ページに使用されるメモリタイプを識別することができる。
Mビットの物理アドレスは例示の実施形態でサポートされる。Mは任意の整数であってよい。特に、MはNと別であってよい。一実装品では、Mは32から64までのいずれの整数であってよい。別の実装品では、Mは32から52までのいずれの整数であってよい。例えば、Mは1つの具体的な実装品では40であってよい。
図7を参照すると、マイクロタグ回路36の一実施形態のブロック図が示されている。例示の実施形態では、マイクロタグ回路36の複数のエントリは各エントリのグループに分けられる。各エントリの各グループはマイクロTLBの別のエントリに割り当てられる。例えば、例示の実施形態では、各グループ100A−100DはマイクロTLB30の4つの各エントリに対応して示されている。その他の実施形態は任意の数のエントリに対応するように、任意の数のグループを含んでよい。各グループ100A−100Dは制御回路102へ結合されており、該回路102はイネーブル入力(En)(マイクロTLBタグ回路32からのヒット信号)、マイクロTLBタグ回路32からのエントリ表示、及び、AGU12からの仮想アドレス、を受信するように結合されている。制御回路102はマイクロタグ回路36が出力したヒット表示を生成するように構成されている。
選択されたグループ100A−100Dの各エントリは、マイクロTLBタグ回路32の各エントリのうちの1つに割り当てられ、また、データキャッシュ16にも記録される、そのエントリが示す仮想ページのキャッシュラインを識別する。任意の数のエントリをグループに含むことができる。例えば、一実施形態では、各グループに4つのエントリを含むことができる。マイクロTLBヒットが検出されるとマイクロタグ回路36がアクセスされるので、VA[N−1:12]はAGU12からの仮想アドレスと、選択されたグループ100A−100Dに表されるキャッシュラインの仮想アドレスにマッチングすることは周知である。従って、仮想タグ比較を完了するために、選択されたグループ100A−100Dの各エントリは、(キャッシュラインオフセットを形成するアドレスビットは除いて)仮想アドレスのページオフセット部を記録してよい。例示の実施形態に対して、64バイトのキャッシュラインサイズが仮定され、その結果、アドレスビット5:0が除かれる。その他のキャッシュラインサイズはその他の実施形態で選択されてよい。従って、仮想タグ比較を完了するため、本実施形態では、残りの仮想アドレスビットは、VA[11:6]であり、また、図7に示しているように、各マイクロタグエントリはVA[11:6]を記録する。
イネーブル入力がアサートされると、制御回路102は各エントリからのアドレスビットVA[11:6]をAGU12からの仮想アドレスの対応のビットと比較してよい。従って、制御回路102はAGU12からの仮想アドレスの少なくともページオフセット部(キャッシュラインオフセットビットは除く)を受信するように結合されてよい。選択されたグループ100A−100D内のエントリでマッチングが検出され、そのエントリでバリッドビット(V)が設定されると、仮想アドレスはマイクロタグ回路36でヒットとなり、その結果、データキャッシュ16でヒットとなる。ヒット/ミスを判断するためにデータキャッシュタグメモリ22がアクセスされる必要はない。その一方で、選択されたグループ100A−100D内のエントリでマッチングが検出されない場合は、データキャッシュ16でアドレスがヒットであるかミスであるかを判断するために、データキャッシュタグメモリ22がアクセスされてよい。
データキャッシュ16が物理的にタグ付けされ(つまり、データキャッシュタグメモリ22は仮想タグではなく物理タグを記録する)、少なくとも1つの変換されたアドレスビットがインデックスでデータキャッシュ16に対して使用される場合(例えば、少なくともビット12が4キロバイトページの実施形態で使用される)、(比較に使用される仮想アドレスビットとインデックスは違っていてもよいことから)、同じ物理アドレスへの、複数の仮想アドレスのエイリアシングがマイクロタグ回路36の動作に影響を及ぼし得る。1つのそのような実施形態において、データキャッシュ16は物理的にタグ付けされるが、プロセッサ10は、任意の時にデータキャッシュ16に同じ物理アドレスへエイリアスされた最大限1つの仮想アドレスが確実に記録されるようにすることができる。つまり、第1のエイリアスがキャッシュにある間に第2のエイリアスがデータキャッシュ16にロードされる場合は、第1エイリアスはデータキャッシュ16で無効にされる。
キャッシュインデックスが少なくとも1つの変換アドレスビットを含むある種の実施形態では、マイクロタグ回路36はキャッシュインデックスに含まれる各アドレスビットを記録することができ、また、その変換アドレスビットは物理ビットであってよい。そのようなビットを記録することによって、全てのエントリの無効化を望まない場合には、マイクロタグ回路36エントリをターゲットにして無効にすることができる(例えば、データキャッシュ16コンテンツやマイクロTLB30コンテンツの変化に応答して)。
マイクロTLB30でヒットし、マイクロタグ回路36でミス、また、データキャッシュタグメモリ22でヒットした場合、対応する各グループ100A−100Dの各エントリのうちの1つは、ヒットしたタグとリプレースメントされてよい。制御回路102は、リプレースメントのために選択された各グループ100A−100D内のLRUエントリを選択するために使用されてよい、各グループ100A−100D(各エントリにおいてLRUとして示す)内のLRU情報を維持することができる。その他の実施形態はその他のリプレースメント方式(例えば、ランダム、擬似−LRU、など)を採用してよい。(図7には示されていない)ある種の実施形態では、各グループ100A−100Dは、マイクロタグ回路36でミスしたインデックスを記録するために、データキャッシュ16からVA[11:6]を受信するように結合されてよい。
例示の実施形態では、マイクロタグ回路36の各エントリは各マイクロTLBエントリに静的に割り当てられているが、その他の実施形態では、各エントリは所望に応じて各マイクロTLBエントリへ動的に割り当てられてよい。そのような実施形態では、マイクロTLBエントリフィールドは各マイクロタグエントリに含まれてよく、そのマイクロタグエントリが現在割り当てられているマイクロTLBエントリの表示を記録する。制御回路102はアクセス中にマイクロTLB30から受信した表示をエントリ表示とを比較してよく、また、エントリ表示がマッチングし、また、VA[11:6]フィールドがAGU12からの仮想アドレスの対応する部分とマッチングする場合にヒットが検出されてよい。
本実施形態においてマイクロタグ回路36はマイクロTLBとともに使用されているが、その他の実施形態はマイクロTLBなしにマイクロタグ回路36を実装してよい。そのような実施形態はマイクロタグ回路36の各エントリに全てのタグを実装してよく、また、その全てのタグを比較してキャッシュヒットを検出し、データキャッシュタグメモリ22における読み出しを阻止する。マイクロタグ回路36、もしくはデータキャッシュタグメモリ22でヒットが検出されると、データはデータキャッシュデータメモリ20から送られてよい。
他の形態では、マイクロタグ回路36は1つのマイクロTLBエントリにつき単一のエントリを備えてよい。マイクロタグエントリは1キャッシュラインにつき1ビットを、マイクロTLBエントリが識別したページに記録することができ、そのキャッシュラインがデータキャッシュ16でヒットであるかどうかを示す。従って、例えば、キャッシュラインが64バイトであり、4キロバイトのページが使用される場合は、マイクロタグエントリは64ビットを含んでよい。所与のキャッシュラインに対応するこのビットは、ビットがセットされている場合はヒットを、また、ビットがクリアである場合はミスを示す(又は、逆の符号化を用いることもできる)。制御回路は、キャッシュのヒット/ミスを判断するために適切なビットを選択するように、キャッシュラインオフセット部(例えば、64バイトキャッシュラインの実施形態においてはビット11:6)を除く、VAのインページ部を使用してよい。そのような実施形態において、マイクロタグ回路はマイクロTLB回路に組み込まれてよい。用語“タグ回路”もしくは“マイクロタグ回路”はマイクロタグ回路がマイクロTLBに組み込まれるそのような実施形態を含むことを意図する。
図8を参照すると、AGU12からの仮想アドレスに応答して、図2に示されているブロック図の一実施形態の一般的な動作を例示したフローチャートが示されている。図8のブロック図は理解を容易にするために特定の順序で示されているが、いずれの順序を用いてもよい。各ブロックは所望に応じて組合せ論理回路を介して並列に実行されてよく、もしくは所望に応じて、2つ以上のクロックサイクルを超えてパイプライン形式で実行されてよい。
仮想アドレスに応答して、マイクロTLBタグ回路32がアクセスされる(ブロック110)。MicroTLBヒットが検出されると(デシジョン(判定)ブロック112、“イエス”区間(leg))、マイクロタグ回路36はアクセスされる(ブロック114)。マイクロタグでヒットが検出されると(デシジョンブロック116、“イエス” 区間)、キャッシュヒット/ミス回路50はキャッシュヒットを示してよく(例えば、キャッシュミス表示はミスを表示し得ない)、また、データキャッシュタグメモリ22は仮想アドレスに応答してアクセスされ得ない(ブロック118)。マイクロタグにおけるヒットが検出されない場合(デシジョンブロック116、“ノー”区間)、マイクロTLBデータ回路34がアクセスされてよい(ブロック120)。ある種の実施形態では、マイクロTLBデータ回路34は、マイクロタグがヒットであるかどうかに関係なく、マイクロTLBタグヒットに応答してアクセスされてよい。データキャッシュタグメモリ22もまたアクセスされる(ブロック122)。データキャッシュタグメモリ22からのタグとマイクロTLBデータ回路34からの物理アドレス間にヒットが検出されると(デシジョンブロック124、“イエス”区間)、キャッシュヒット/ミス回路50はキャッシュヒットを示してよい(ブロック126)。更に、この場合はマイクロタグミスが検出されたので、マイクロタグはヒットしたタグとともに読み出されてよい。データキャッシュタグメモリ22からのタグとマイクロTLBデータ回路34からの物理アドレス間にミスが検出されると(デシジョンブロック124、“ノー”区間)、キャッシュのヒット/ミス回路50はキャッシュミスを示し得る(ブロック128)。また更に、ミスしたキャッシュラインはデータキャッシュ16に読み込まれ得る(また、任意に、マイクロタグ回路36はミスしたキャッシュラインのタグとともにアップデートされてよい)。
MicroTLBミスが検出されると(デシジョンブロック112、“ノー”区間)、メインTLBタグ回路40がアクセスされてよい(ブロック130)。メインTLBでヒットが検出されると(デシジョンブロック132、“イエス”区間)、マイクロTLBはメインTLBから読み出され(ブロック134)、また、読み出されるマイクロTLBエントリに対応する各マイクロタグエントリは無効にされ得る。更に、各ブロック122、124、126、及び128はメインTLBからの物理アドレスとタグ比較を行うために繰り返し行われる。しかし、ブロック126において、マイクロタグは所望に応じて任意に読み出されなくてよい。その一方で、メインTLBでミスが検出されると(デシジョンブロック132、“ノー”区間)、メインTLB38はTLBミスを生成してよく、また、メインTLBはミスした変換とともに読み出されてよい。(又は、変換が見つからない場合は例外である)(ブロック136)。更に、マイクロTLBは任意にメインTLBミスが起きた場合に読み出されてよく、また、マイクロタグは読み出しされるマイクロTLBエントリに対応するマイクロタグエントリを無効にするためにアップデートされてよい。
上述の説明はマイクロTLB30もしくはメインTLB38からの物理アドレスと、データキャッシュタグメモリ22からのタグとの比較について言及しているが、一般的に各TLBは物理アドレスのページ部を出力してよい。比較のためのキャッシュタグの残りは、物理アドレスのページ部と仮想アドレスのページオフセット部とを連結させることによって形成されてよい。
図9を参照すると、ウェイ予測器14の一実施形態のブロック図が示されている。例示の実施形態では、ウェイ予測器14は、ウェイ予測が行われる仮想アドレスに対応する1つ以上のアドレスオペランドを受信するように結合され、更にメモリ142に結合されたサムアドレス(SA)デコーダ140を含む。SAデコーダ140はサムアドレスインデックシングを実装してよく、これについては以下に更に詳細を説明している。メモリ142はWウェイセットアソシアティブ(データキャッシュ16と同じ)であってよく、従って、ウェイ0からウェイW−1に配置された複数のエントリを有してよい。メモリ142の各エントリはPビット(WP[P−1:0])を含むウェイ予測値を記録する。コンパレータ146A−146Bを含む複数のコンパレータはメモリ142に結合されている。コンパレータ146A−146Bはウェイ予測器14の各ウェイに対して含まれてよい。各コンパレータ146A−146BはAGU12からの仮想アドレス(VA)の一部、もしくは、任意のウェイ予測生成回路148の出力、(もしくはその他のオプションでは、アドレスオペランドの一部)のいずれかを受信するように結合されている。コンパレータ146A−146Bの出力は、ウェイ予測器14のウェイ出力を形成してよい。更に、いずれのコンパレータ146A−146Bもマッチングを検出しない場合、ウェイ予測器14は早期のミス信号を出力してよい(図9のコンパレータ146A−146Bの出力を受信するNORゲート150として例示されている)。
デコーダ140はメモリ142のセット144を選択するために、(本実施形態ではサムアドレスデコーディングを用いて)アドレスオペランドをデコードするように構成され、また、メモリ142はセット144のコンテンツをコンパレータ146A−146Bへ出力するように構成される。コンパレータ146A−146Bの各々は、メモリ142の各々のウェイからのウェイ予測値を入力仮想アドレスに対応するウェイ予測値と比較する。マッチングが検出されると、ウェイ予測器14は、対応するウェイがデータキャッシュ16でヒットであることを予測する。例示の実施形態では、ウェイ予測は予測されたウェイに対してアサートされたビットとともに、各ウェイに対してワンホットエンコーディングを含んでよい。どのウェイ予測ビットも入力ウェイ予測ビットとマッチングしない場合、ウェイ予測は生成されない(また、早期のミス信号はアサートされてよい)。その他の実施形態はその他の方法でウェイ予測を符号化してよく、また、ウェイ予測器14は各コンパレータ146A−146Bの出力を受信するように結合された回路を含み、かつ、ウェイ予測エンコーディングを生成するように構成されてよい。
ウェイ予測値は所望に応じていずれの形式で生成されてよく、また、任意の数のビットを含んでよい(例えば、Pは1よりも大きい任意の整数であってよい)。ウェイ予測器14に記録されたウェイ予測値は、データキャッシュ16の対応するキャッシュラインに応じて生成される。例えば、一実施形態では、データキャッシュ16の同じインデックスとウェイに記録されたキャッシュラインに対応する仮想アドレスの部分的タグであってよい。つまり、ウェイ予測値は連続する選択された仮想アドレスビットを含むことができる(キャッシュタグの一部である少なくとも1つのアドレスビットは除く)。そのような実施形態では、最も頻繁に変動する仮想アドレスビットを選択するのが望ましいとされる。(もしくは、別の方法で見れば、連続したアクセスのうち、最もランダムなものを示す)。例えば、今もなおキャッシュタグの一部である最小桁のアドレスビット(キャッシュラインオフセットの一部ではない)が選択されてよい。そのような実施形態では、ウェイ予測生成回路148は使用されず、入力仮想アドレスから選択された仮想アドレスビットがコンパレータ146A−146Bへの入力として結合されてよい。別の実施形態では、1つ以上のウェイ予測値ビットが2つ以上の仮想アドレスビットの論理的組合せとして生成されてよい。そのような実施形態では、例えば、頻繁に変化する仮想アドレスビットがそれほど頻繁に変化しない仮想アドレスビットと組み合わせられてよい。一実施形態では、この論理的組合せは、排他的ORを含んでよい。そのような実施形態のために、この論理的組合せは、ウェイ予測生成回路148によって仮想アドレスビット上に実行されてよく、該回路の出力部はコンパレータ146A−146Bに結合されてよい。更に別の実施形態では、各ビットは仮想アドレスを生成するための追加の前にアドレスオペランドから選択されてよい。これらのビットはウェイ予測生成回路148を用いて論理的に組み合わせられてよく、もしくは、上記に説明した各仮想アドレスの例と同様に連結されてよい。
2つ以上のエントリが同じウェイ予測値を有した(その結果、ウェイ予測器14で1つ以上のウェイにマッチングが起きる)状況を回避するために、所定の一連のウェイ予測器14のウェイ予測値が確実に唯一のものとなるように、データキャッシュ16でキャッシュラインのリプレースメントが制御されてよい。そのような処理の一例は図10のフローチャートに示されている。上記のリプレースメント法によって、キャッシュラインの早期リプレースメントを頻繁に引き起こすことがないように十分な数のビットをウェイ予測値に含み、ウェイ予測値の一意性を維持することが望ましい。例えばウェイ予測値を生成するために仮想アドレスビットの連結が用いられる場合、7ビットのウェイ予測値が選択されてよい。
ある種の実施形態では、データキャッシュタグメモリ22と比較するとウェイ予測器14は比較的小型であるために、ウェイ予測器14は、(仮想アドレスが所望の回路に到達するために移動する距離を低減することができる)AGUのデータ経路に含まれてよい。
上述のように、デコーダ140はアドレスオペランドをデコードし、仮想アドレスに対応するセット144を選択するために、サムアドレスデコーディング(sum-address decoding)を使用してよい。その他の実施形態は、仮想アドレスを受信するために結合された従来のデコーダを使用してよい。従って、一般的に、デコーダ140はキャッシュへアクセスするためのアドレス表示を受信することができる。ある種の実施形態では、その表示には、仮想アドレスを形成するために使用されるアドレスオペランドが含まれ、もしくはその他の実施形態では、仮想アドレス自体が含まれてよい。
サムアドレスデコーディングはアドレスを生成するために使用されるアドレスオペランドを受信し、また、アドレス自体がデコードされる場合に選択されるであろう一連のメモリと同じメモリを正確に選択する。一般的に、サムアドレスデコーディングは、AとBとを加算して、その合計をKと比較するよりも、テストA+B=Kが定数Kに対してより早く値を求めることができるという原理に基づく。デコーディングに関連して、定数Kは所定のセットを選択するであろうA+Bの値である。そのセットに対してワード線を生成する回路は、そのセットに対して定数Kを仮定する。サムアドレスデコーディングの概略を以下に説明する。
ビットベクトルan-1n-2...a0としてAが、ビットベクトルbn-1n-2...b0としてBが、ビットベクトルkn-1n-2...k0としてKが表される場合は、if A+B=Kと示され、以下の各等式1と2によって、加算A+B(Counti-1)の所定のビット位置i−1のキャリーアウトと、後続のビット位置i(Cini)へのキャリーインが与えられてよい。(“!”はインバージョン、“XOR”は排他OR、“&”はAND、及び“|”はORを示す)
Counti-1=((ai-1XORbi-1)&!ki-1|(a i-1&b i-1)(1)
Cini=kiXORaiXORbi(2)
A+B=Kの場合、Counti-1は(0からn−1までの)全てのiに等しい。つまり、以下の等式3で説明する項eiは、A+B=Kの場合、全てのiに対し、1である。
ei=CiniXOR!Count i-1(3)
デコーダ140で使用されてよいeiの等式を生成するために、Kに依存しない項を生成するのが望ましい(等式1及び2の各々は依存しており、その結果、等式3の各々は依存する)。特に、等式3はki(Ciniを通じて)及びki-1(Couti-1を通じて)に依存している。従って、4つのei項が各ビット位置iに対して生成されてよい。各項eiはkiとki-1に対し1つの一連のセット値を仮定してよい。これらの項はei kiki-1と示され、kiとki-1は各ビットに対する仮定値(例えば、eiは仮定値ki=0、ki-1=1に対応する)の表記(notation)に上書きされる。各等式4−7は各ビット位置に対し4つの項eiを例示する。等式4−7の各々は等式1と2を等式3に上書きすることで形成され、kiとki-1に対して仮定値を与え、ブール代数を使用して項を減らす。
ei 00= aiXORbiXOR!(a i-1|b i-1)(4)
ei 01= aiXORbiXOR!(a i-1&b i-1)(5)
ei 10= !(aiXORbi)XOR!(a i-1|b i-1)(6)
ei 00= !(aiXORbi)XOR!(a i-1&b i-1)(7)
更に、インデックスのビット位置0に対して、キャリーイン項(C-1)をi−1項に置き換え、等式8と9を形成する。
e0 0c= aiXORbiXOR!c-1(8)
e0 1c= !(aiXORbi)XOR!c-1(9)
上述の各等式はインデックスの各ビット位置の論理でウェイ予測メモリ142に実装されてよく、キャリーインc−1はキャッシュラインオフセット加算からのキャリーインと等しい。このキャリーインは、例えば仮想アドレス加算からAGUにより与えられてよい。キャリーインは延着してよく、例えば、偶数と奇数のインデックスをそれぞれに有するバンクとバンクとの間を選択してよい。
所定のセットに対するワード線を生成するために、各ビット位置に対し、ei 00、ei 01、ei 10、およびei 11のうちの1つが選択され(生成されるワード線に対応するインデックスの値に基づいて)、また、選択された値は、ワード線を生成するために論理的にAND演算される。例えば、インデックス0のワード線は、各ビット位置のei00とe0 0cの論理ANDであってよい。インデックス1のワード線(k0=1、その他全てのki=0)は2と、n−1、e1 01、e0 1c間の各iに対するei 00の論理ANDであってよい。インデックス2のワード線(k1=1、その他全てのki=0)は3と、n−1、e2 01、e1 10、e0 0c間の各iのei 00の論理的ANDであってよい。インデックス3のワード線(k1とk0=1、その他全てのki=0)は3と、n−1、e2 01、e1 11、e0 1c間の各iのei 00の論理ANDであってよい。他のインデックスについての追加のワード線も同様に選択できる。
サムアドレスデコーディングの一実施形態に関連する付加的詳細は、William L.Lynch、Gary Lauterbach、および、Joseph I. Chamdaniによる論文、“Low Load Latency through Sum−Addressed Memory(SAM)”Proceedings of the 25th Annual International Symposium on Computer Architecture, 1998の369から379ページで見つけることができる。
ウェイ予測器14は、データキャッシュデータメモリ20の電力消費の削減を可能にすることによって、プロセッサ10の電力消費を削減するために使用することができる。例えば、ある種の実施形態では、データキャッシュデータメモリ20はランダムアクセスメモリ(RAM)を含んでよい。ワード線をアクティブにすることによって、RAMの各ロケーションがイネーブルにされてよい。イネーブルにされた各ロケーションは、そのロケーションに取り付けられた一定のビット線をディスチャージしてよく、そのロケーションで各ビットを表すビット線ペアに差動を与える。ビット線ペアは、センス増幅器への入力であってよく、これは、差動を各出力ビットへ変換することができる。ある種の実装品では、データキャッシュデータメモリ20のRAMはデータキャッシュデータメモリ20の各ウェイへ別々のワード線信号を提供してよい。セット選択を行うために仮想アドレスがデコードされてよく、また、このセット選択によって各ウェイのワード線を生成するためのウェイ予測が確認されてよい。従って、予測されたウェイがイネーブルされ、その他の各ウェイはイネーブルされなくてよい。その結果、他の形態ではイネーブルされていない各ウェイで消費されていた、ビット線ディスチャージの電力消費を削減する。ビット線の電力消費は多くの場合、そのようなメモリの電力消費の最も大きな要因の1つであってよい。(また、最も重要な要因であり得る)。データキャッシュデータメモリ20のそのような実施形態の一部の例が図11に示されており、仮想アドレス(VA)はセット選択(例えば、図11のセット0、及び図11には示されていないその他の各セット)を生成するデコーダから受信される。ANDゲートはウェイ0が予測され(WP0)、またはウェイ1が予測されて(WP1)、ウェイ0とウェイ1に対して対応するウェイワード線が生成されたという表示を受信する。各ウェイのビット0は図11に示されており、対応するウェイのワード線を受信する。各ウェイからのビット0は、(予測されたウェイからビット0を選択するために)ウェイ予測によって同様に制御された多重通信回路によりコラム多重化(column-muxed)される。また、センス増幅器(SA0)は予測されたウェイからビット0を感知し、データキャッシュデータメモリ20の外からビット0を駆動する。その他の各ビットは同様に処理されてよく、また、付加的ANDゲートとウェイ予測を与えて付加的ウェイが提供されてよい。
その他の実施形態では、ウェイ予測は選択的なワード線生成を提供できるだけ十分早くに利用可能であってよい。そのような実施形態に対して、各ウェイへのワード線は、アドレスのデコーディングに基づいて駆動されてよく、また、ビット線ディスチャージが各ウェイで起きてよい。ある種の実装品では、各ウェイからの各ビットはセンス増幅器に物理的にインターリーブされ、コラム多重化されてよい。つまり、各ウェイのビット0は相互に隣接して物理的に配置されてよく、また、多重通信回路はビット0を選択されたウェイから出力のビット0に対しセンス増幅器の入力に選択してよい。その他の出力ビットは同様に選択されてよい。ウェイ予測はコラム多重通信回路に選択制御を与えるために使用されてよく、その結果、センス増幅器の数はウェイから出力されたビット数をウェイの数で掛けたものではなく、ウェイから出力されたビットの数であってよい。センス増幅器で消費された電力と、センス増幅器の外の駆動データは、各ウェイに別々のセンス増幅器を有する場合よりも低減される。センス増幅器のドライブアウト電力は多くの場合、そのようなメモリの電力消費の最も重要な要因であってよい(及び、ビット線電力消費以外に最も重要な要因であってよい)。そのような実施形態に一部の例が図12に示されている。ワード線を生成するために(例えば、図12のワード線0、および、図12には示されていないその他の各セットに対する各ワード線)、(図11と同様の)デコーダが入力仮想アドレス(VA)をデコードする。各ウェイ0と1からのビット0が示されており、各ビットはワード線アサーションに応答して、その各ビット線をディスチャージする。図12の多重通信回路は、予測されたウェイからのビット0をビット0(図12のSA0)に対するセンス増幅器に選択するために、各ウェイ予測によって制御される。予測されたウェイから読み出されたその他の各ビットは同様に処理されてよく、また、追加のウェイは同様の方法で処理されてよい。
その他の実装品では、各ウェイに別々のセンス増幅器が与えられてよいが、各センス増幅器はオペレーションをイネーブルにするようにイネーブル入力を備えていてよい。ウェイ予測はそのような実装品に対して予測されたウェイの各センス増幅器だけをイネーブルにするように使用されてよい。また、各センス増幅器の電力消費と、各センス増幅器外の駆動データはコラム多重化技術を使用した方法と同様に削減されてよい。図13はデータキャッシュデータメモリ20のそのような実施形態の一例である。この場合も、デコーダは入力仮想アドレス(VA)をデコードし、ウェイ0とウェイ1のストレージへ与えられるワード線を生成してよい。各ウェイは多数のビット線をウェイに対する一連のセンス増幅器へ出力する。それぞれの一連のセンス増幅器はそのウェイに対するウェイ予測によって(ウェイ0に対しWP0、ウェイ1に対しWP1)制御されたイネーブルを受信する。本実施形態のデータキャッシュデータメモリ20は各センス増幅器の出力から予測されたウェイを選択するために、多重通信回路も含んでよい。
更にその他の実施形態では、入力仮想アドレスを予測されたウェイのみへ駆動することが可能であり、アドレスを予測されていないウェイへは駆動しないことで電力が削減される。
図10を参照すると、キャッシュミスに応答してデータキャッシュ16によって導入されてよいリプレースメント機構を例示したフローチャートが示されている。図10の各ブロックは理解を簡単にするために特定の順序で示されているが、いずれの順序が用いられてよい。各ブロックは組合せ論理回路を介して並列で実行されてよく、もしくは所望に応じてパイプライン形式で2つ以上のクロックサイクルを超えて実行されてよい。
ウェイ予測器14がキャッシュミスを招いた仮想アドレスに対してウェイ予測を行った場合(デシジョンブロック160)、リプレースメントのために予測されたウェイが選択される(ブロック162)。別の形態では、キャッシュによって実装されたリプレースメント方式に従いリプレースメントされるウェイが選択される(164)。いずれのリプレースメントアルゴリズムが使用されてよい(例えば、擬似−LRU、ランダム、など)。
上述のアルゴリズムにより、キャッシュでミスするがウェイ予測器14の現在のウェイ予測値とマッチングするキャッシュブロックは、そのウェイ予測値に対応するキャッシュラインに置き換えられる。従って、同じウェイ予測値はセットの1つ以上のロケーションに記録され得ない。
図14はウェイ予測器14の一実施形態に従ったウェイ予測の形成を例示したフローチャートである。図14の各ブロックは理解を簡単にするために特定の順序で示されているが、いずれの順序が用いられてよい。各ブロックは組合せ論理回路を介して並列で実行されてよく、もしくは所望に応じてパイプライン形式で2つ以上のクロックサイクルを超えて実行されてよい。
ウェイ予測器14はアドレスの表示(例えば、各アドレスオペランド、もしくはある種の実施形態ではアドレス自体)をデコードしてよい(ブロック170)。ウェイ予測器14はデコーディングによって示されたセットから複数のウェイ予測値を出力してよい(ブロック172)。出力ウェイ予測値はブロック170でデコードされた入力アドレスに対応する値と比較されてよい(ブロック174)。比較がマッチの場合(デシジョンブロック176“イエス”区間)、ウェイ予測は、マッチングが検出されたウェイに対応して生成されてよい。そうでない場合(デシジョンブロック176、“ノー”区間)、どのウェイ予測も生成されず、また、ウェイ予測器14は早期のミス表示を生成してよい(ブロック180)。各ブロック176、178、及び180はともにウェイ予測を生成する1つの実施形態を含んでよい。
[コンピュータシステム]
図15を参照すると、バスブリッジ202を介して様々なシステムコンポーネントに結合されたプロセッサ10を含むコンピュータシステム200の一実施形態のブロック図を示す。図示されたシステムにおいて、メインメモリ204は、メモリバス206を介してバスブリッジ202に結合され、画像コントローラ208は、AGPバス210を介してバスブリッジ202に結合される。最終的に複数のPCIデバイス212A〜212Bは、PCIバス214を介してバスブリッジ202に結合される。第2バスブリッジ216も、EISA/ISAバス220を介してEISA又はISAデバイス218のうちの1つ又はそれ以上に電気的インターフェースを適用するように供給されることが可能である。プロセッサ10は、CPUバス224を介してバスブリッジ202に、また、任意のL2キャッシュ228に結合される。CPUバス224とL2キャッシュ228へのインターフェースはともに、外部インターフェースユニット18へ結合されてよい外部インターフェースを含んでよい。プロセッサ10は図1に示すプロセッサ10であってよく、また、図2から14に示した構造上の、及びオペレーション上の詳細を含んでよい。
バスブリッジ202は、プロセッサ10、メインメモリ204、画像コントローラ208と、PCIバス214に接合されたデバイス間のインターフェースを与える。オペレーションがバスブリッジ202に接続されたデバイスの1つから受信されると、バスブリッジ202はこのオペレーションの目標(例えば、特定のデバイスもしくはPCIバス214の場合、目標がPCIバス214上にあるデバイス)を識別する。バスブリッジ202がオペレーションを目標となるデバイスに伝送する。バスブリッジ202は通常、ソースデバイス又はバスによって使用されるプロトコル、あるいはターゲットデバイス又はバスによって使用されるプロトコルからのオペレーションを変換する。
PCIバス214のためにISA/EISAバスにインターフェースを供給することに加えて、第2バスブリッジ216は、所望に応じて更なる機能性を内蔵し得る。第2バスブリッジ216の外部あるいは第2バスブリッジに統合されているうちの何れかである入力/出力コントローラ(図示せず)は、コンピュータシステム200内に含むことができ、キーボード及びマウス222と様々なシリアル及びパラレルポートに関するオペレーショナルサポートを提供する。他の実施形態では、外部のキャッシュユニット(図示せず)は、プロセッサ10とバスブリッジ202間のCPUバス224にも結合され得る。他の形態では、外部のキャッシュはバスブリッジ202に結合することができ、外部のキャッシュのキャッシュコントロールロジックは、バスブリッジ202に統合可能である。L2キャッシュ228はプロセッサ10の裏面の構成に示される。L2キャッシュ228は、プロセッサ10から分離し得、プロセッサ10でカートリッジ(例、スロット1又はスロットA)内に統合可能であり、あるいはプロセッサ10で半導体基板上にも統合可能である。
メインメモリ204はアプリケーションプログラムが記録され、プロセッサ10が主に実行するメモリである。適合可能なメインメモリ204は、DRAM(Dynamic Random Access Memory)を含み得る。例えば、複数のSDRAM(同期DRAM)、ダブルデータレート(DDR)SDRUM、あるいはRambus DRAM (RDRAM;Rambus 社開発のDRAM)が適合可能であり得る。メインメモリ204は図1に示したシステムメモリ42を含み得る。
PCIデバイス212A〜212Bは多様な周辺デバイスを示す。周辺デバイスは、各デバイスが結合されてよいその他のコンピュータシステムと通信するデバイスを含み得る。更に、各周辺デバイスは、ビデオアクセラレータ、オーディオカード、ハードあるいはフロッピーディスクドライブあるいはドライブコントローラ、SCSI(Small Computer System Interface)アダプタ及びテレフォニーカードのようなその他のデバイスを含み得る。同様に、ISAデバイス218はモデム、サウンドカード、及びGPIBあるいはフィールドバスインターフェースカードのような周辺デバイスの様々な形式を表す。
グラフィックスコントローラ208は、モニタ226上のテキスト及び画像のレンダリングをコントロールするよう提供される。グラフィックスコントローラ208は、メインメモリ204に、及びメインメモリ204から実効的にシフト可能である3次元データ構造を表現する技術分野で通常、知られる一般的なグラフィックスアクセラレータを実施可能である。それ故、グラフィックスコントローラ208は、バスブリッジ202内のターゲットインターフェースへのアクセスを要求可能であり、又受信可能であり、それによってメインメモリ204へのアクセスを入手するAGPバス210のマスターであり得る。専用のグラフィックスバスは、メインメモリ204からのデータの高速検索に対応する。ある種のオペレーションに関して、グラフィックスコントローラ208は、AGPバス210上にPCIプロトコルトランザクションを生成するよう更に構成可能である。それ故、バスブリッジ202のAGPインターフェースは、PCIプロトコルターゲットとイニシエータトランザクションと同様にAGPプロトコルトランザクションの双方を支援するよう機能性を含み得る。モニタ226は、画像あるいはテキストが表示可能である電気的モニタの全てである。適切なモニタ226は、ブラウン管(“CRT;Cathode Ray Tube”)、液晶モニタ(“LCD;Liquid Crystal Display”)などを含む。
AGP、PCI及びISA又はEISAバスは、上述した記載の例として使用されており、所望に応じて全てのバスアーキテクチャが上書きされることに注目される。コンピュータシステム200が追加のプロセッサ(例えば、コンピュータシステム200の任意のコンポーネントとして示されるプロセッサ10a)を含むマルチプロセッシングコンピュータシステムであることが更に注目される。プロセッサ10aは、プロセッサ10と同様であり得る。より具体的には、プロセッサ10aは、プロセッサ10の同一のコピーであり得る。プロセッサ10aは、独立したバスを介して(図15に示されるように)バスブリッジ202に接続されるか、あるいはプロセッサ10とCPUバス224を共有することができる。更に、プロセッサ10aは、L2キャッシュ228と同様の任意のL2キャッシュ228aに結合することができる。
図16を参照すると、コンピュータシステム300の他の実施形態が示される。図16の実施形態においては、コンピュータシステム300はいくつかのプロセッシングノード312A、312B、312C及び312Dを含む。各プロセッシングノードは、各プロセッシングノード312A〜312D内に含まれるメモリコントローラ316A〜316Dを介して各メモリ314A〜314Dに結合される。加えて、プロセッシングノード312A〜312Dは、プロセッシングノード312A〜312D間を通信するように使用されるインターフェースロジックを含む。例えば、プロセッシングノード312Aは、プロセッシングノード312Bと通信するためのインターフェースロジック318A、プロセッシングノード312Cと通信するためのインターフェースロジック318B、及び更なる他のプロセッシングノード(図示せず)と通信するための第3インターフェースロジック318Cを含む。同様に、プロセッシングノード312Bは、インターフェースロジック318D、318E及び318Fを含み、プロセッシングノード312Cは、インターフェースロジック318G、318H、及び318Iを含み、プロセッシングノード312Dは、インターフェースロジック318J、318K、及び318Lを含む。プロセッシングノード312Dは、インターフェースロジック318Lを介して複数の入力/出力デバイス(例、デイジーチェーン構成におけるデバイス320A〜320B)と通信するよう結合される。他のプロセッシングノードは、同様の方法で他のI/Oデバイスと通信し得る。
プロセッシングノード312A〜312Dは、インタープロセッシングノード通信用にパケットベースのリンクを実装する。本実施形態において、リンクが単方向ライン(ユニディレクタルライン)のセット(例えば、ライン324Aがプロセッシングノード312Aからプロセッシングノード312Bへパケットを伝送するように使用され、ライン324Bは、プロセッシングノード312Bからプロセッシングノード312Aにパケットを伝送するように使用される)として実装される。その他のライン324C−324Hのセットは、図16に例示しているように、その他のプロセッシングノード間にパケットを伝送するように使用される。一般的に、ライン324の各セットは、1つ又はそれ以上のデータラインを含み、このデータラインに応じた1つ又はそれ以上のクロックラインを含み、伝送されるパケット形式を示す1つ又はそれ以上のコントロールラインを含む。リンクは、プロセッシングノード間の通信用にキャッシュコヒーレントに、あるいはプロセッシングノードとI/Oデバイス(あるいはPCIバス又はISAバスのような従来の構造のI/Oバスへのバスブリッジ)間の通信用には非コヒーレントに動作させてもよい。更に、リンクは、図示されるようにI/Oデバイス間のデイジーチェーン構造を使用して非コヒーレントに動作され得る。1つのプロセッシングノードから別のプロセッシングノードに伝送されるパケットは、1つ又はそれ以上の中間ノードを通じて伝送し得る。例えば、プロセッシングノード312Aによってプロセッシングノード312Dまで伝送されたパケットは、図16に示すプロセッシングノード312Bあるいはプロセッシングノード312Cの何れかを介して伝送し得る。全ての適合可能なルーティングアルゴリズムが使用され得る。コンピュータシステム300の他の実施形態は、図16に示す実施形態より多いか、あるいは少ないプロセッシングノードを含み得る。
通常、パケットはノード間のライン324に1つ又はそれ以上のビット時間として伝送され得る。ビット時間は、対応するクロックラインのクロック信号の立ち上がり又は立ち下がりエッジであり得る。パケットはトランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシーを維持するためのプローブパケット、及びプローブとコマンドに応答するための応答パケットを含み得る。
メモリコントローラとインターフェースロジックに加えて、プロセッシングノード312A〜312Dは、1つ又はそれ以上のプロセッサを含み得る。大まかに言って、プロセッシングノードは少なくとも1プロセッサを含み、所要に応じて任意的にメモリと他の論理と通信するためのメモリコントローラを含み得る。より具体的には、各プロセッシングノード312A〜312Dは、(例えば、図2から14に示した様々な構造上の、及びオペレーション上の詳細を含む)1つ又はそれ以上のプロセッサ10のコピーを含み得る。外部のインターフェースユニット18は、メモリコントローラ316と同様にノード内にインターフェースロジック318を含み得る。
メモリ314A〜314Dは、適合可能な全てのメモリデバイスを含み得る。例えば、メモリ314A〜314Dは、1つ又はそれ以上のRAMBUS DRAM(RDRAM)、同期DRAM(SDRAM)DDR SDRAM、静的RAM等を含み得る。コンピュータシステム300のアドレススペースは、メモリ314A〜314D間に分割される。各プロセッシングノード312A〜312Dは、何れのアドレスが何れのメモリ314A〜314Dにマップされるかを決定し、従って、プロセッシングノード312A〜312Dの何れに特定的なアドレスのメモリ要求が送信されなければならないかのを決定するよう使用されるメモリマップを含み得る。一実施形態において、コンピュータシステム300におけるアドレスのコヒーレンシーポイントはこのアドレスに対応するバイトを記録するメモリに結合されたメモリコントローラ316A〜316Dである。言い換えれば、メモリコントローラ316A〜316Dは、対応するメモリ314A〜314Dへの各メモリアクセスがキャッシュコヒーレントにおいて生じることを確実にする役目を担う。メモリコントローラ316A〜316Dは、メモリ314A〜314Dへインターフェースするためのコントロール回路を含み得る。加えて、メモリコントローラ316A〜316Dは、メモリ要求をキューするための要求キューを含み得る。
一般に、インターフェースロジック318A〜318Lは、リンクからのパケットを受信し、リンク上に伝送されるパケットをバッファリングする様々なバッファを含み得る。コンピュータシステム300は、パケットを伝送する適合可能なフローコントロール機構の全てを使用し得る。例えば、一実施形態において、各インターフェースロジック318は、インターフェースロジックが接続されるリンクの他の末端におけるレシーバ内のバッファの各形式の数のカウントを記録する。インターフェースロジックは、受信するインターフェースロジックがパケットを記録するための空いているバッファを有さない場合は、パケットを伝送しない。受信するバッファが伝送されるパケットを送信することによって解除されるので、受信するインターフェースロジックが、メッセージを送信インターフェースロジックに伝送し、バッファが解除されたことを示す。そのような機構は、“クーポンベースの”システムと称される。
I/Oデバイス320A〜320Bは、適合可能なI/Oデバイスであり得る。例えば、I/Oデバイス320A〜320Bが、これらのデバイスが結合され得る他のコンピュータシステム(例、ネットワークインターフェースカードあるいはモデム)と通信するデバイスを含み得る。更に、I/Oデバイス320A〜320Bは、ビデオアクセラレータ、オーディオカード、ハード又はフロッピーディスクドライブ又はドライブコントローラ、SCSI(Small Computer System Interface)アダプタ、及びテレフォニーカード、サウンドカード、及びGPIB又はフィールドバスインターフェースカードのような様々なデータ入手カードを含む。用語“I/Oデバイス”と“周辺デバイス”は、同義語として本文に意図される。
これまでの開示を完全に理解したならば、当業者には様々な変形及び変更が可能であることが明白であろう。添付の特許請求の範囲はそのような変形及び変更の全てを包含するように解釈されることを意図したものである。
本発明は、概してプロセッサの技術分野に利用可能である。
プロセッサの一実施形態の一部のブロック図。 図1に示した変換およびフィルタブロックの一実施形態のブロック図。 プロセッサの一実施形態によって実装されてよいパイプラインの一実施形態を例示したタイミング図。 マイクロTLBタグ回路の一実施形態のブロック図。 図4に示した制御回路に対応する真理値表の一実施形態のブロック図。 マイクロTLBデータ回路の一実施形態のブロック図。 マイクロタグ回路の一実施形態のブロック図。 図2に示したブロックの一実施形態のオペレーションを例示したフローチャート。 図1に示したウェイ予測器の一実施形態のブロック図。 キャッシュミスに応答してリプレースメントウェイを選択する一実施形態を例示したフローチャート。 図1に示したデータキャッシュデータメモリの一部の一実施形態のブロック図。 図1に示したデータキャッシュデータメモリの一部の第1実施形態のブロック図。 図1に示したデータキャッシュデータメモリの一部の第3実施形態のブロック図。 ウェイ予測を生成する一実施形態を例示したフローチャート。 図1に示したプロセッサを含むコンピュータシステムの一実施形態のブロック図。 図1に示したプロセッサを含むコンピュータシステムの第2実施形態のブロック図。

Claims (9)

  1. プロセッサ(10)であって、
    複数のキャッシュラインを記録するように構成されたデータメモリ(20)および複数のタグを記録するように構成されたタグメモリ(22)を含むキャッシュであって、前記複数のタグの各々は、前記複数のキャッシュラインの各々の1つに対応しているキャッシュ(16)と、
    前記複数のキャッシュラインのサブセットに対する第1仮想アドレスによって、前記キャッシュ(16)でヒットを検出するように構成されたタグ回路(36)とを含み、
    前記タグ回路(36)の前記第1仮想アドレスによるヒットに応じて、前記タグ回路(36)はタグメモリ(22)の読み出しを阻止するように構成されており、かつ、前記データメモリ(20)は前記第1仮想アドレスに対応する第1キャッシュラインの少なくとも一部を出力するように構成される、プロセッサ。
  2. 第1変換索引バッファ(TLB)であって、物理アドレス変換が前記第1変換索引バッファに記録されるところの複数の仮想ページを識別する、仮想アドレスの複数のページ部を記録するように構成された第1のTLB(30)をさらに含み、
    前記タグ回路(36)は前記第1TLB(30)に結合され、かつ、前記複数のキャッシュラインの前記サブセットは前記複数の仮想ページ内にあり、
    前記タグ回路(36)は、前記第1TLBの前記第1仮想アドレスによるヒットにさらに応じて、前記キャッシュ(16)の前記タグメモリ(22)の読み出しを阻止するように構成されている、請求項1に記載のプロセッサ。
  3. 前記第1TLB(30)の第1仮想アドレスによるヒットと、前記タグ回路(36)の前記第1仮想アドレスによるミスに応じて、前記キャッシュ(16)は前記タグメモリ(22)に記録された1つまたはそれ以上のタグを読み出すように構成され、かつ、前記キャッシュ(16)で前記第1仮想アドレスがヒットするかどうかを検出するように構成される、請求項2に記載のプロセッサ。
  4. 第2TLB(38)をさらに含み、
    前記第2TLB(38)は前記第1TLB(30)のミスに応じてアクセスされ、
    前記第2TLB(38)は第2TLB(38)のヒットに応じて前記第1仮想アドレスに対応する第1物理アドレスのページ部を提供するように構成されており、
    前記キャッシュ(16)は前記第1物理アドレスのタグ部を受信するように結合されるとともに、前記キャッシュ(16)の前記ヒットを検出するために、前記第1物理アドレスの前記タグ部を前記タグメモリ(22)からの少なくとも第1タグと比較するように構成されている、請求項3に記載のプロセッサ。
  5. 前記第1TLB(30)は、第1の複数のエントリ(80A−80B)を含み、前記第1の複数のエントリ(80A−80B)の各々は仮想アドレスの複数のページ部のうち、対応するページ部を記録するように構成され、かつ、前記第1TLB(30)は前記第1仮想アドレスによってヒットした前記第1の複数のエントリのうちの第1エントリの表示を出力するように構成され、かつ、前記タグ回路(36)は前記第1エントリの表示を受信するように結合され、かつ、前記タグ回路(36)は第2の複数のエントリ(100A−100D)を含み、前記第2の複数のエントリ(100A−100D)のサブセットは前記第1TLB(30)の前記第1の複数のエントリ(80A−80B)のうちの1つに対応し、かつ、前記キャッシュ(16)に記録され、前記第1の複数のエントリ(80A−80B)のうちの1つに記録されるページ部によって示されたページ内にあるキャッシュラインを識別し、かつ、前記タグ回路(36)は前記第1エントリの前記表示に応じて、ヒットに対する前記サブセットをチェックするように構成される、請求項2に記載のプロセッサ。
  6. 前記第2の複数のエントリ(100A−100D)の各々は前記仮想アドレスのページ部に含まれず、かつ、前記仮想アドレスのキャッシュラインのオフセット部に含まれない仮想アドレスビットを記録するように構成される、請求項5に記載のプロセッサ。
  7. 第1仮想アドレスを使用して、第1変換索引バッファ(TLB)(30)へアクセスするステップを含み、前記第1TLB30は、物理アドレス変換が前記第1TLB(30)に記録される複数の仮想ページを識別する仮想アドレスの複数のページ部を記録するように構成されており、
    前記第1TLB(30)の前記第1仮想アドレスによるヒットに応じて、キャッシュ(16)に記録され、かつ、複数の仮想ページ内にある複数のキャッシュラインを識別するように構成されたタグ回路(36)へアクセスするステップを含み、
    前記第1TLB(30)の前記第1仮想アドレスと前記タグ回路によるヒットを検出するステップを含み、かつ、
    前記第1TLB(30)の前記第1仮想アドレスと前記タグ回路(36)によるヒットに応じて、前記キャッシュ(16)においてタグメモリ(22)の読み出しを阻止するステップを含む、方法。
  8. 前記第1TLB(30)の第1仮想アドレスによるヒットと、前記タグ回路(36)の前記第1仮想アドレスによるミスに応答して、前記タグメモリ(22)に記録された1つまたはそれ以上のタグを読み出し、かつ、前記キャッシュ(16)で前記第1仮想アドレスがヒットするかどうかを検出する、請求項7に記載の方法。
  9. 前記第1TLB(30)のミスに応じて第2TLB(38)にアクセスするステップをさらに含み、
    前記第2TLB(38)は前記第2TLB(38)のヒットに応じて前記第1仮想アドレスに対応する第1物理アドレスのページ部を提供するように構成されており、
    前記キャッシュ(16)は、前記キャッシュ(16)において前記ヒットを検出するために、前記第1物理アドレスを前記タグメモリ(22)からの少なくとも第1タグと比較する、請求項7に記載の方法。
JP2006525316A 2003-09-03 2004-06-04 プロセッサの電力を削減するためのマイクロtlbおよびマイクロタグ Pending JP2007504552A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/653,749 US7117290B2 (en) 2003-09-03 2003-09-03 MicroTLB and micro tag for reducing power in a processor
PCT/US2004/018042 WO2005024635A2 (en) 2003-09-03 2004-06-04 Microtlb and micro tag for reducing power in a processor

Publications (2)

Publication Number Publication Date
JP2007504552A true JP2007504552A (ja) 2007-03-01
JP2007504552A5 JP2007504552A5 (ja) 2009-05-21

Family

ID=34217964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006525316A Pending JP2007504552A (ja) 2003-09-03 2004-06-04 プロセッサの電力を削減するためのマイクロtlbおよびマイクロタグ

Country Status (8)

Country Link
US (1) US7117290B2 (ja)
JP (1) JP2007504552A (ja)
KR (1) KR101014395B1 (ja)
CN (1) CN100485638C (ja)
DE (1) DE112004001608B4 (ja)
GB (1) GB2421826B (ja)
TW (1) TW200519590A (ja)
WO (1) WO2005024635A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217827A (ja) * 2008-03-12 2009-09-24 Arm Ltd マイクロタグを使用するキャッシュ・アクセッシング
JPWO2008155848A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 計算機、tlb制御方法およびtlb制御プログラム
JP2011013858A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd 演算処理装置およびアドレス変換方法
JP2013530476A (ja) * 2010-07-06 2013-07-25 クアルコム,インコーポレイテッド 変換索引バッファを管理するためのシステムおよび方法
US11829293B2 (en) 2021-10-07 2023-11-28 Fujitsu Limited Processor and arithmetic processing method

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2836407B1 (fr) * 2002-02-28 2004-05-14 Thermagen Procede de fabrication d'emballage metallique
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US20060224857A1 (en) * 2005-03-29 2006-10-05 O'connor Dennis M Locking entries into translation lookaside buffers
KR100692976B1 (ko) * 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7650465B2 (en) * 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
EP3255555B1 (en) * 2009-07-21 2020-01-29 Tadao Nakamura A lower energy comsumption and high speed computer without the memory bottleneck
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8612690B2 (en) * 2012-01-17 2013-12-17 Qualcomm Incorporated Method for filtering traffic to a physically-tagged data cache
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US9311239B2 (en) 2013-03-14 2016-04-12 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9208261B2 (en) * 2014-01-24 2015-12-08 Oracle International Corporation Power reduction for fully associated translation lookaside buffer (TLB) and content addressable memory (CAM)
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US10402340B2 (en) * 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
DE112018003358T5 (de) * 2017-06-28 2020-03-12 Nvidia Corporation Speichertyp, der cache-fähig und dennoch durch spekulative anweisungen unzugänglich ist
GB2570665B (en) * 2018-01-31 2020-08-26 Advanced Risc Mach Ltd Address translation in a data processing apparatus

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6413649A (en) * 1987-07-07 1989-01-18 Nec Corp Information processor
JPS6418859A (en) * 1987-07-14 1989-01-23 Nec Corp Information processor
JPH0314050A (ja) * 1989-06-12 1991-01-22 Matsushita Electric Ind Co Ltd 記憶装置
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
JPH03266153A (ja) * 1989-12-01 1991-11-27 Mips Computer Syst Inc 速度向上のために部分アドレスを使用する2レベル変換ルックアサイドバッファ
JPH0535592A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0535591A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0895864A (ja) * 1994-09-28 1996-04-12 Toshiba Corp アドレス変換装置
JP2000112820A (ja) * 1998-10-02 2000-04-21 Nec Corp キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6138225A (en) * 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
JP2002007210A (ja) * 2000-06-05 2002-01-11 Samsung Electronics Co Ltd デジタルデータ処理システム、それに使用される集積回路キャッシュメモリ装置およびキャッシュメモリの動作方法
JP2002116954A (ja) * 2000-10-05 2002-04-19 Hitachi Ltd キャッシュシステム
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2003196157A (ja) * 2001-12-25 2003-07-11 Mitsubishi Electric Corp プロセッサ装置及びメモリ管理方法

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
US4914582A (en) * 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
CA1286784C (en) 1986-08-27 1991-07-23 Joseph A. Petolino, Jr. Cache storage queue
IT1202687B (it) * 1987-03-25 1989-02-09 Honeywell Inf Systems Memoria tampone a predizione di hit
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5091851A (en) * 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5148538A (en) * 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
DE69129872T2 (de) * 1990-03-27 1999-03-04 Philips Electronics Nv Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0459232B1 (en) 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
US5235697A (en) * 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JP2834289B2 (ja) 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
US5412787A (en) * 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5210845A (en) * 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
JP2636088B2 (ja) 1991-03-15 1997-07-30 甲府日本電気株式会社 情報処理装置
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
SG45269A1 (en) 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US5418922A (en) * 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
JPH06314241A (ja) * 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE4333547A1 (de) * 1993-10-01 1995-04-06 Hoechst Ag Verfahren zur Verwertung von Reststoffen enthaltend cellulosische Fasern und aus synthetischen Polymeren
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5606683A (en) * 1994-01-28 1997-02-25 Quantum Effect Design, Inc. Structure and method for virtual-to-physical address translation in a translation lookaside buffer
US5671444A (en) * 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
EP0675443A1 (en) 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
US5521306A (en) * 1994-04-26 1996-05-28 Xerox Corporation Processes for the preparation of hydroxygallium phthalocyanine
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5509119A (en) * 1994-09-23 1996-04-16 Hewlett-Packard Company Fast comparison method and apparatus for error corrected cache tags
US5640532A (en) * 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5835951A (en) * 1994-10-18 1998-11-10 National Semiconductor Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5802594A (en) * 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US6065091A (en) * 1997-05-30 2000-05-16 Via-Cyrix, Inc. Translation look-aside buffer slice circuit and method of operation
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6418521B1 (en) * 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6425055B1 (en) * 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6413649A (en) * 1987-07-07 1989-01-18 Nec Corp Information processor
JPS6418859A (en) * 1987-07-14 1989-01-23 Nec Corp Information processor
JPH0314050A (ja) * 1989-06-12 1991-01-22 Matsushita Electric Ind Co Ltd 記憶装置
JPH03266153A (ja) * 1989-12-01 1991-11-27 Mips Computer Syst Inc 速度向上のために部分アドレスを使用する2レベル変換ルックアサイドバッファ
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
JPH0535591A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0535592A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0895864A (ja) * 1994-09-28 1996-04-12 Toshiba Corp アドレス変換装置
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6138225A (en) * 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP2000112820A (ja) * 1998-10-02 2000-04-21 Nec Corp キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
JP2002007210A (ja) * 2000-06-05 2002-01-11 Samsung Electronics Co Ltd デジタルデータ処理システム、それに使用される集積回路キャッシュメモリ装置およびキャッシュメモリの動作方法
JP2002116954A (ja) * 2000-10-05 2002-04-19 Hitachi Ltd キャッシュシステム
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2003196157A (ja) * 2001-12-25 2003-07-11 Mitsubishi Electric Corp プロセッサ装置及びメモリ管理方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008155848A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 計算機、tlb制御方法およびtlb制御プログラム
US8190853B2 (en) 2007-06-20 2012-05-29 Fujitsu Limited Calculator and TLB control method
JP4998554B2 (ja) * 2007-06-20 2012-08-15 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2009217827A (ja) * 2008-03-12 2009-09-24 Arm Ltd マイクロタグを使用するキャッシュ・アクセッシング
JP2011013858A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd 演算処理装置およびアドレス変換方法
US8745356B2 (en) 2009-06-30 2014-06-03 Fujitsu Limited Processor and address translating method
JP2013530476A (ja) * 2010-07-06 2013-07-25 クアルコム,インコーポレイテッド 変換索引バッファを管理するためのシステムおよび方法
US11829293B2 (en) 2021-10-07 2023-11-28 Fujitsu Limited Processor and arithmetic processing method

Also Published As

Publication number Publication date
TW200519590A (en) 2005-06-16
CN100485638C (zh) 2009-05-06
WO2005024635A2 (en) 2005-03-17
WO2005024635A3 (en) 2005-05-26
US7117290B2 (en) 2006-10-03
GB2421826B (en) 2007-04-11
KR101014395B1 (ko) 2011-02-15
KR20060067964A (ko) 2006-06-20
DE112004001608B4 (de) 2018-09-06
GB2421826A (en) 2006-07-05
GB0605621D0 (en) 2006-04-26
US20050050277A1 (en) 2005-03-03
DE112004001608T5 (de) 2006-08-10
CN1846200A (zh) 2006-10-11

Similar Documents

Publication Publication Date Title
US7117290B2 (en) MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) Low power way-predicted cache
KR100884351B1 (ko) 타입 비트들을 이용한, 레벨 2 캐시에서의 ecc 및프리디코드 비트들의 저장 추적
US7739477B2 (en) Multiple page size address translation incorporating page size prediction
KR100747127B1 (ko) 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬
EP1388065B1 (en) Method and system for speculatively invalidating lines in a cache
JP4437001B2 (ja) 変換索引バッファのフラッシュフィルタ
US6604187B1 (en) Providing global translations with address space numbers
US6594728B1 (en) Cache memory with dual-way arrays and multiplexed parallel output
KR101456860B1 (ko) 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템
JP3836322B2 (ja) プリデコード情報を記憶するためのecc/パリティビットの使用
US20100250859A1 (en) Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
JP2015084250A (ja) 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置
JP2008542948A (ja) コンフィギュラブルトランスレーションルックアサイドバッファを備えたマイクロプロセッサ
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
US20070112998A1 (en) Virtualized load buffers
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
US7685372B1 (en) Transparent level 2 cache controller
US7076635B1 (en) Method and apparatus for reducing instruction TLB accesses
US20070011432A1 (en) Address generation unit with operand recycling
KR100343940B1 (ko) 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070530

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090406

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101027

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110323