JP2010532517A - 連想度を設定可能なキャッシュメモリ - Google Patents
連想度を設定可能なキャッシュメモリ Download PDFInfo
- Publication number
- JP2010532517A JP2010532517A JP2010514819A JP2010514819A JP2010532517A JP 2010532517 A JP2010532517 A JP 2010532517A JP 2010514819 A JP2010514819 A JP 2010514819A JP 2010514819 A JP2010514819 A JP 2010514819A JP 2010532517 A JP2010532517 A JP 2010532517A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- blocks
- sub
- independently accessible
- memory
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 63
- 238000013500 data storage Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims 4
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000008672 reprogramming Effects 0.000 claims 1
- 230000002093 peripheral effect Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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; CALCULATING OR 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/601—Reconfiguration of cache memory
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
プロセッサのキャッシュメモリサブシステム(30)は、連想度を設定可能なキャッシュメモリ(60)を有する。前記キャッシュメモリは、フルアソシエイティブアドレッシングモードと連想度の低い直接アドレッシングモードとで動作することができる。前記キャッシュメモリは、データのブロックを格納するための独立にアクセス可能な複数のサブブロック(0,1,2,3)を有するデータ記憶アレイを有する。例えば、前記サブブロックのそれぞれが、nウェイセットアソシエイティブキャッシュを実装する。また、前記キャッシュメモリサブシステムは、前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択することができるキャッシュコントローラ(21)も有する。前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能な全サブブロックの同時のタグ参照を有効にし、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの1つ以上のサブセットへの独立のアクセスを有効にしうる。
Description
本発明はマイクロプロセッサのキャッシュに関し、より詳細には、キャッシュのアクセス可能性および連想度(associativity)に関する。
コンピュータシステムのメインメモリは、通常、速度よりも実装密度を重視して設計されているため、マイクロプロセッサの設計者は、マイクロプロセッサが直接メインメモリに頻繁にアクセスする必要がなくなるように、マイクロプロセッサの設計にキャッシュを追加してきた。キャッシュとは、メインメモリよりも高速なアクセスが可能な小容量のメモリである。キャッシュは、一般に、メインのシステムメモリに使用されるメモリ(通常は、ダイナミックランダムアクセスメモリ(DRAM)またはシンクロナスダイナミックランダムアクセスメモリ(SDRAM))よりも高速なアクセス時間と帯域幅を有する、スタティックランダムアクセスメモリ(SRAM)などの高速のメモリセルから構成されている。
最新のマイクロプロセッサは、一般に、オンチップのキャッシュメモリを有する。多くの場合、マイクロプロセッサはオンチップの階層的なキャッシュ構造を有し、これには、1次(L1)キャッシュメモリ、2次(L2)キャッシュメモリ、場合によっては3次(L3)キャッシュメモリが含まれることもある。代表的なキャッシュ階層は、最も頻繁に使用されるキャッシュラインを記憶するために使用されうる小容量で高速なL1キャッシュを使用しうる。L2は、アクセスされるが、L1に入りきらないキャッシュラインを記憶するための、容量が大きく、おそらく低速のキャッシュなどである。L3キャッシュは、L2キャッシュよりも更に容量が大きく、アクセスされるが、L2キャッシュに入りきらないキャッシュラインを記憶するために使用されうる。このようなキャッシュ階層を有することにより、プロセッサコアが行うメモリアクセスに関連するレーテンシを低下させることで、プロセッサのパフォーマンスを向上できる。
システムによっては、L3キャッシュのデータアレイが非常に大きいことがあるため、L3キャッシュが、連想度のウェイ数(number of ways of associativity)の値を大きく設定されうる。これにより、アドレスの矛盾やアクセスパターンの変動により、その他の点では有用なデータが時期尚早に待避(evict)されてしまう可能性を最小限に減らすことができる。しかし、例えば、連想度を上げた結果、アクセスごとに必要なタグ参照の実行回数が増加するため、電力消費が増大することがある。
連想度を構成可能なキャッシュメモリを有するプロセッサのキャッシュメモリサブシステムの各種実施形態が開示される。一実施形態では、前記プロセッサのキャッシュメモリサブシステムは、データのブロックを記憶するための独立にアクセス可能な複数のサブブロックを有するデータ記憶アレイを有するキャッシュメモリを有する。前記キャッシュメモリは、前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを記憶するためのタグ記憶アレイ(263)を有する。また、前記キャッシュメモリは、前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択することができるキャッシュコントローラ(21)も有する。例えば、一実装では、前記独立にアクセス可能なサブブロックのそれぞれが、nウェイセットアソシエイティブキャッシュを実装する。
特定の一実装では、前記キャッシュメモリは、フルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作することができる。前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能なサブブロックの全ての同時のタグ参照を有効にしうる。一方、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの1つ以上のサブセットへの独立のアクセスを有効にしうる。
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味(すなわち、可能性がある、可能であること)で用いられており、義務的な意味(すなわち必須)ではない点に留意されたい。
図1を参照すると、コンピュータシステム10の一実施形態のブロック図が示される。図に示した実施形態では、コンピュータシステム10は、メモリ14と、周辺機器13A〜13Bとに結合された処理ノード12を有する。ノード12は、ノードコントローラ20に結合されたプロセッサコア15A〜15Bを有し、ノードコントローラ20は、メモリコントローラ22、複数のHyperTransport(登録商標)(HT)インタフェース回路24A〜24C、および共有の3次(L3)キャッシュメモリ60に接続されている。HT回路24Cは周辺機器16Aに結合されており、周辺機器16Aはデイジーチェーン構成で(この実施形態では、HTインタフェースを使用して)周辺機器16Bに結合されている。ほかのHT回路24A〜Bも、別のHTインタフェース(図示せず)を介して、ほかの同様の処理ノード(図示せず)に接続されてもよい。メモリコントローラ22は、メモリ14に結合されている。一実施形態では、ノード12は、図1に示す回路を含む1つの集積回路チップでもよい。すなわち、ノード12は、チップマルチプロセッサ(CMP)でもよい。任意のレベルの集積化が使用されても、または別個のコンポーネントが使用されてもよい。処理ノード12が、説明を簡略にするために省略された、他の各種回路を備えてもよい点に留意されたい。
各種実施形態では、ノードコントローラ20は、プロセッサコア15A,15Bを、相互に、ほかのノードに、およびメモリに相互接続するための各種の相互接続回路(図示せず)も備えうる。また、ノードコントローラ20は、ノードの最大動作周波数と最小動作周波数、ノードの最大電源電圧と最小電源電圧などの、各種のノード特性を選択および制御するための機能も有しうる。ノードコントローラ20は、一般に、通信種別、通信文(communication)内のアドレスなどに応じて、プロセッサコア15A〜15Bと、メモリコントローラ22と、HT回路24A〜24Cとの間の通信をルーティングするように構成されうる。一実施形態では、ノードコントローラ20は、ノードコントローラ20が受信した通信文を書き込むシステム要求キュー(SRQ)(図示せず)を備えうる。ノードコントローラ20は、プロセッサコア15A〜15B、HT回路24A〜24C、およびメモリコントローラ22のうちの1つ以上の宛先にルーティングするために、SRQにある通信をスケジュールしうる。
一般に、プロセッサコア15A〜15Bは、ノードコントローラ20へのインタフェースを使用して、コンピュータシステム10の他の構成要素(例えば周辺機器16A〜16B、他のプロセッサコア(図示せず)、メモリコントローラ22など)と通信しうる。このインタフェースは、好ましい方式であればどのような方式で設計されてもよい。一部の実施形態では、このインタフェース用にキャッシュコヒーレントな通信が規定されてもよい。一実施形態では、ノードコントローラ20とプロセッサコア15A〜15B間のインタフェースにおける通信は、HTインタフェースで使用されるものと同様のパケット形式で行われうる。別の実施形態では、好適な通信であれば、どのようなものが使用されてもよい(例えばバスインタフェースでのトランザクション、異なる形式のパケットなど)。別の実施形態では、プロセッサコア15A〜15Bは、ノードコントローラ20とインタフェースを共有してもよい(例えば共有バスインタフェースなど)。一般に、プロセッサコア15A〜15Bからの通信には、(メモリロケーションまたはプロセッサコアの外部のレジスタを読み出すための)リードオペレーション、(メモリロケーションまたは外部レジスタに書き込むための)ライトオペレーション、(キャッシュコヒーレントな実施形態のための)プローブへの応答、割り込みの肯定応答、およびシステム管理メッセージなどの要求が含まれうる。
上で説明したように、メモリ14は、任意の適したメモリデバイスを有しうる。例えば、メモリ14は、1つ以上のランダムアクセスメモリ(RAM)を有し、これには、ダイナミックRAM(DRAM)に属するRAMBUS DRAM(RDRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAMなどがある。別の実施形態では、メモリ14が、スタティックRAMなどを使用して実装されてもよい。メモリコントローラ22は、メモリ14にインタフェースするための制御回路を有しうる。更に、メモリコントローラ22は、メモリ要求をキューイングするための要求キューなどを備えていてもよい。
HT回路24A〜24Cは、HTリンクからパケットを受信し、HTリンクにパケットを送信するための各種のバッファと制御回路とを備えうる。HTインタフェースは、パケットを送信するための一方向リンクを有する。各HT回路24A〜24Cは、2本のこのようなリンク(送信用に1本、受信用に1本)に結合されうる。あるHTインタフェースは、(例えば処理ノード間では)キャッシュコヒーレントな方式で動作し、(例えば周辺機器16A〜16Bとの間では)非コヒーレントな方式で動作しうる。図に示した実施形態では、HT回路24A〜24Bは使用されておらず、HT回路24Cが非コヒーレントなリンクを介して周辺機器16A〜16Bに結合されている。
周辺機器16A〜16Bは、どのようなタイプの周辺機器でもよい。例えば、周辺機器16A〜16Bは、別のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェイスカード、コンピュータシステムのメイン回路基板に集積された、ネットワークインターフェイスカードと同様の回路、あるいはモデム)を有し、そのデバイスがその別のコンピュータシステムに結合されうる。更に、周辺機器16A〜16Bは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、テレフォニーカード、サウンドカード、およびGPIBインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。「周辺機器」との用語は、入出力(I/O)デバイスを含むことを意図している点に注意されたい。
一般に、プロセッサコア15A〜15Bは、所定の命令セットアーキテクチャに規定されている命令を実行するように設計された回路を有しうる。すなわち、プロセッサコア回路は、命令セットアーキテクチャに規定されている命令のフェッチ、デコード、実行、およびその結果のストアを行うように構成されうる。例えば、一実施形態では、プロセッサコア15A〜15Bは、x86アーキテクチャを実装しうる。プロセッサコア15A〜15Bは、スーパーパイプライン処理、スーパースカラーまたはその組み合わせを含む任意の所望の構成を有しうる。ほかの構成としては、スカラー、パイプライン処理、非パイプライン処理などがある。実施形態によって、アウトオブオーダーの投機的な実行が使用されても、オンオーダーの実行が使用されてもよい。プロセッサコアは、上記の構造のいずれかと組み合わせて、1つ以上の命令または他の機能のためのマイクロコードを有してもよい。各種実施形態では、キャッシュ、変換ルックアサイドバッファ(TLB)などのほかの各種の設計機能を実装してもよい。したがって、図の実施形態では、2つのプロセッサコアによって共有されるL3キャッシュ60のほかに、プロセッサコア15Aが、L1キャッシュ16AとL2キャッシュ17Aとを有する。同様に、プロセッサコア15Bが、L1キャッシュ16BとL2キャッシュ17Bとを有する。個々のL1キャッシュとL2キャッシュは、マイクロプロセッサで使用されるどのようなL1キャッシュおよびL2キャッシュを表わしてもよい。
本実施形態は、ノード間、ならびにノードと周辺機器間の通信にHTインタフェースを使用するが、ほかの実施形態は、このいずれかの通信に任意の所望の1つ以上のインタフェースを使用してもよい点に留意されたい。例えば、ほかのパケットベースのインタフェースが使用されても、バスインタフェースが使用されても、各種の標準的な周辺機器インタフェース(例えば、周辺装置相互接続(PCI)、PCIエクスプレスなど)が使用されてもよい。
図に示した実施形態では、L3キャッシュサブシステム30は、キャッシュコントローラユニット21(ノードコントローラ20の一部として図示されている)と、L3キャッシュ60とを有する。キャッシュコントローラ21は、L3キャッシュ60の動作を制御するように構成されうる。例えば、キャッシュコントローラ21は、L3キャッシュ60の連想度のウェイ数(the number of ways of associativity)を設定することによって、L3キャッシュ60のアクセス可能性を設定しうる。より詳細には、後で更に詳細に説明するように、L3キャッシュ60は、独立にアクセス可能な、所定数の別個のキャッシュブロックまたはサブキャッシュ(図2に示す)に分割されうる。各サブキャッシュは、タグと、関連するデータストレージとの組のためのタグ記憶域を有しうる。また、各サブキャッシュは、nウェイアソシエイティブキャッシュ(nは任意の数)を実装しうる。実施形態ごとに、サブキャッシュの数、つまりL3キャッシュ60の連想度のウェイ数が構成可能である。
なお、図1に示したコンピュータシステム10の処理ノード12は1つであるが、別の実施形態では、実装される処理ノードの数はいくつであってもよい。同様に、実施形態ごとに、ノード12などの処理ノードに含まれるプロセッサコアの数はいくつでもよい。コンピュータシステム10のさまざまな実施形態では、ノード12当たりのHTインタフェースの数、ノードに結合されている周辺機器16の数などが変わってもよい。
図2は、図1のL3キャッシュサブシステムの実施形態のより詳細な態様を示すブロック図であり、図3は、L3キャッシュサブシステムの一実施形態の動作を示すフローチャートである。図1に示した構成要素に対応する構成要素は、説明をわかりやすくし、簡潔を期するために同じ符号を付している。図1〜図3をすべて参照すると、L3キャッシュサブキャッシュ30は、キャッシュコントローラ21を有し、キャッシュコントローラ21はL3キャッシュ60に結合されている。
L3キャッシュ60は、タグロジックユニット262、タグ記憶アレイ263、およびデータ記憶アレイ265を有する。上で説明したように、L3キャッシュ60は、独立にアクセス可能な所定数のサブキャッシュによって実装されうる。図に示した実施形態では、破線により、L3キャッシュ60が、独立にアクセス可能な、2つまたは4つのセグメントまたはサブキャッシュによって実装されうることが示されている。データ記憶アレイ265のサブキャッシュには番号0,1,2,3が振られている。同様に、タグ記憶アレイ263のサブキャッシュにも番号0,1,2,3が振られている。
例えば、2つのサブキャッシュを有する実装では、データ記憶アレイ265が、(サブキャッシュ0と1を併せた)上のサブキャッシュと、(サブキャッシュ2と3を併せた)下のサブキャッシュのそれぞれが、16ウェイアソシエイティブサブキャッシュとなるように分割されうる。あるいは、(サブキャッシュ0と2を併せた)左のサブキャッシュ、(サブキャッシュ1と3を併せた)右のサブキャッシュのそれぞれが、16ウェイアソシエイティブサブキャッシュとなってもよい。4つのサブキャッシュを有する実装では、サブキャッシュのそれぞれが、16ウェイアソシエイティブサブキャッシュとなってもよい。この図では、L3キャッシュ60は、16ウェイ、32ウェイまたは64ウェイの連想度を有しうる。
タグ記憶アレイ263の各部分は、複数の位置のそれぞれに、データ記憶アレイ265の関連するサブキャッシュに記憶されているデータのキャッシュラインに対応する所定数のアドレスビット(すなわちタグ)を記憶するように構成されうる。一実施形態では、L3キャッシュ60の構成に応じて、タグロジック262が、タグ記憶アレイ263の1つ以上のサブキャッシュを検索して、要求されたキャッシュラインが、データ記憶アレイ265のサブキャッシュに存在するかどうかを判定しうる。タグロジック262は、要求されたアドレスがみつかった場合には、キャッシュコントローラ21にヒットの指標を返し、タグアレイ263で一致するものがみつからなかった場合には、ミスの指標を返しうる。
特定の一実装では、各サブキャッシュは、16ウェイアソシエイティブキャッシュを実装するタグとデータの組に対応しうる。タグロジック262にキャッシュアクセス要求が送られると、タグアレイ263内の各サブキャッシュのタグの参照が実質的に同時に行われるように、サブキャッシュが並列にアクセスされうる。このように、連想度は加算(additive)となる。このため、2つのサブキャッシュを備えて構成されたL3キャッシュ60は、最大で32ウェイの連想度を有し、4つのサブキャッシュを備えて構成されたL3キャッシュ60は、最大で64ウェイの連想度を有する。
図に示した実施形態では、キャッシュコントローラ21は、ビット0とビット1の2つのビットを有する構成レジスタ223を有する。これらの連想度ビットは、L3キャッシュ60の動作を定義しうる。より詳細には、構成レジスタ223内の連想度ビット1と連想度ビット0は、タグロジック262がサブキャッシュにアクセスするために使用するアドレスビットまたはハッシュされたアドレスビットの数を決めており、このため、キャッシュコントローラ21が、L3キャッシュ60を、連想度のウェイ数を任意の値に構成することができる。つまり、連想度ビットは、サブキャッシュを有効/無効にし、このためL3キャッシュ60が直接アドレスモードで(すなわち、フルアソシエイティブモードをオフにして)アクセスされるか、フルアソシエイティブモードでアクセス(図3のブロック305参照)されるかどうかを設定することができる。
32ウェイの連想度に対応可能な2つのサブキャッシュ(例えば、上と下のサブキャッシュがそれぞれ16ウェイの連想度に対応可能)を有する実施形態では、1つの連想度ビットのみがオン(active)である。この連想度ビットは、「水平」または「垂直」のアドレッシングモードを有効にしうる。例えば、連想度ビット0がアサートされている場合、1つのアドレスビットにより、上と下の対、または左と右の対のいずれかが選択されうる。例えば、2つのサブキャッシュ実装の場合である。しかし、連想度ビットがデアサートされている場合、タグロジック262は、サブキャッシュに32ウェイキャッシュとしてアクセスしうる。
最大64ウェイの連想度に対応可能な4つのサブキャッシュ(例えば、四角のそれぞれが16ウェイの連想度に対応可能)を有する実施形態では、連想度ビット0と連想度ビット1が両方使用されうる。これらの連想度ビットは、「水平」アドレッシングモードと「垂直」アドレッシングモードを有効にし、上部分と下部分の両方のサブキャッシュが対として有効にされるか、左部分と右部分の両方のサブキャッシュが対として有効にされる。例えば、連想度ビット0がアサートされている場合、タグロジック262は、1つのアドレスビットを使用して上または下の対を選択し、連想度ビット1がアサートされている場合、タグロジック262は、1つのアドレスビットを使用して、左または右の対を選択しうる。いずれの場合も、L3キャッシュ60は、32ウェイの連想度を有しうる。連想度ビット0と連想度ビット1の両方がアサートされている場合、タグロジック262は、2つのアドレスビットを使用して4つのサブキャッシュの1つを選択し、このためL3キャッシュ60は、16ウェイの連想度を有するようになる。しかし、2つの連想度ビットがデアサートされている場合、全てのサブキャッシュが有効にされているため、L3キャッシュ60は、フルアソシエイティブモードであり、タグロジック262は全のサブキャッシュに並列にアクセスし、L3キャッシュ60は64ウェイの連想度を有する。
なお、別の実施形態では、連想度ビットの数が変わってもよい。また、ビットのアサート、デアサートに対応する機能が逆になってもよい。更に、各連想度ビットに対応する機能が変わってもよいと考えられる。例えば、ビット0が左と右の対を有効にし、ビット1が上と下の対を有効にするなどであってもよい。
このため、キャッシュコントローラ21は、キャッシュ要求を受け取ると、キャッシュラインのアドレスを含む要求をタグロジック262に転送しうる。タグロジック262は、この要求を受け取り、図3のブロック310,315に示すように、L3キャッシュ60のどのサブキャッシュが有効にされているかに応じて、1つまたは2つのアドレスビットを使用しうる。
多くの場合、最高のパフォーマンスが得られる連想度のレベルは、コンピューティングプラットフォーム上で動作しているアプリケーションのタイプまたはコンピューティングプラットフォームのタイプによって決まる。例えば、一部のアプリケーションでは、連想度を上げるとパフォーマンスが向上する。しかし、一部のアプリケーションでは、連想度を下げると、電力消費が削減されるだけでなく、アクセスごとの(peer
access)リソースの消費が減るため、パフォーマンスも向上し、低レーテンシで大きなスループットを得ることができる。したがって、一部の実施形態では、システムの供給業者が、システムの基本入出力システム(BIOS)を有するコンピューティングプラットフォームを提供し、BIOSが、図3のブロック300に示すように、構成レジスタ223を、適切なデフォルトのキャッシュ構成でプログラムしてもよい。
access)リソースの消費が減るため、パフォーマンスも向上し、低レーテンシで大きなスループットを得ることができる。したがって、一部の実施形態では、システムの供給業者が、システムの基本入出力システム(BIOS)を有するコンピューティングプラットフォームを提供し、BIOSが、図3のブロック300に示すように、構成レジスタ223を、適切なデフォルトのキャッシュ構成でプログラムしてもよい。
しかし、別の実施形態では、オペレーティングシステムが、デフォルトのキャッシュ構成の変更を可能にするドライバまたはユーティリティを有してもよい。例えば、電力消費の影響を受けやすいラップトップやその他のポータブルコンピューティングプラットホームでは、連想度を下げることにより、電力消費を抑えることができるため、BIOSが、連想度の低いデフォルトのキャッシュ構成を設定してもよい。しかし、特定のアプリケーションでは、連想度を上げることでパフォーマンスが向上する場合、ユーザがユーティリティにアクセスして、構成レジスタのセットを手動で変更してもよい。
別の実施形態では、キャッシュコントローラ21は、破線で示すキャッシュモニタ224を有する。キャッシュモニタ224は、動作中に、さまざまな方法でキャッシュのパフォーマンスをモニタしうる(図3のブロック320参照)。キャッシュモニタ224は、キャッシュのパフォーマンスおよび/またはパフォーマンスと電力消費との組み合せに基づいて、L3キャッシュ60の構成を自動的に再構成するように構成されうる。例えば、一実施形態では、キャッシュモニタ224は、キャッシュのパフォーマンスが何らかの所定の制限から外れている場合に、連想度ビットを直接操作しうる。別の実施形態では、キャッシュモニタ224は、パフォーマンスの変化をOSに通知してもよい。OSは、この通知を受けて、ドライバを実行し、連想度ビットを所望の値にプログラムしうる(図3のブロック325参照)。
一実施形態では、キャッシュコントローラ21は、L3リソースが利用できるかどうか、L3キャッシュの帯域幅の利用率などに応じて、暗黙的要求、非暗黙的要求、または明示的要求を使用することにより、L3キャッシュ60からデータを選択的に要求することによって、キャッシュの帯域幅を節約する一方、L3キャッシュ60のアクセスに関連するレーテンシを低下させるように構成されうる。例えば、キャッシュコントローラ21は、未処理のL3要求、利用可能なL3のリソース(例えばL3データバス)、およびL3記憶アレイバンクのアクセスをモニタし、トラッキングするように構成されうる。
このような実施形態では、各サブキャッシュ内のデータが、2つの同時データ転送をサポートしている2本の読み出しバスによってアクセスされうる。キャッシュコントローラ21は、任意の投機的な読み出しにより、どの読み出しバスと、どのデータバンクが使用中であるか、あるいは使用中とみなされるかを、トラッキングするように構成されうる。キャッシュコントローラ21は、新たにリード要求を受け取ったときに、対象のバンクが利用可能であり、データバスがすべてのサブキャッシュで利用可能であると判定すると、タグロジック262に暗黙的な有効の要求を発行する。暗黙的なリード要求は、キャッシュコントローラ21によって発行された要求であり、この要求により、一致するタグが存在すると判定されると、タグロジック262は、キャッシュコントローラ21による介入なしで、データ記憶アレイ265へのデータアクセスを開始するようになる。暗黙的要求が発行されると、キャッシュコントローラ21は、すべてのサブキャッシュについて、これらのリソースを「使用中」と内部的にマークしうる。所定の期間が経過した後、リソースは、実際に使用された場合であっても(ヒットの場合)、もはや使用中ではないため、キャッシュコントローラ21は、これらのリソースを、「使用可」とマークしうる。しかし、要求されたリソースのいずれかが使用中の場合、キャッシュコントローラ21は、タグロジック262に要求を、非暗黙的要求として発行しうる。リソースが利用可能になると、キャッシュコントローラ21は、要求されたデータを含むことがわかっているデータ記憶アレイ265のサブキャッシュに、ヒットを返した非暗黙的要求に対応する明示的要求を直接発行する。非暗黙的要求は、タグロジック262に、キャッシュコントローラ21にタグ結果のみを返させる要求である。このため、このサブキャッシュになるバンクおよびデータバスのみが、使用不可(使用中)とされる。このため、要求が、主に明示的要求として発行される場合、すべてのサブキャッシュにわたって、より同時性の高いデータ転送をサポートすることができる。暗黙的要求と明示的要求を使用する実施形態に関する詳細な情報については、2007年6月28日出願の米国特許出願第11/769,970号「プロセッサのキャッシュサブシステムのキャッシュ帯域幅を節約する一方、キャッシュレーテンシを低下させる装置(APPARATUS FOR REDUCING CACHE LATENCY WHILE PRESERVING CACHE BANDWIDTH IN A CACHE SUBSYSTEM OF A PROCESSOR)」を参照されたい。
1つのノードが複数のプロセッサコアを有する実施形態について上で説明したが、L3キャッシュサブシステム30に関連する機能が、シングルコアプロセッサを含むどのようなタイプのプロセッサで使用することができることが考察される。また、上記の機能はL3キャッシュサブシステムに限定されず、必要に応じてほかのキャッシュレベルや階層構造で実施されてもよい。
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって自明であろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
本発明は、一般にマイクロプロセッサおよびそのキャッシュシステムに利用可能である。
Claims (10)
- プロセッサのキャッシュメモリサブシステム(30)であって、
連想度を設定可能なキャッシュメモリ(60)を有し、前記キャッシュメモリは、
データのブロックを格納するための独立にアクセス可能な複数のサブブロック(0,1,2,3)を有するデータ記憶アレイ(265)と、
前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを記憶するためのタグ記憶アレイ(263)とを有し、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するように構成されたキャッシュコントローラ(21)とを備えるメモリサブシステム。 - 前記独立にアクセス可能なサブブロックのそれぞれが、nウェイセットアソシエイティブキャッシュを実装する請求項1に記載のメモリサブシステム。
- 前記キャッシュメモリはフルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作するように構成されている請求項1に記載のメモリサブシステム。
- 前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能な全サブブロックの同時のタグ参照を有効にするように構成され、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの1つ以上のサブセットへの独立のアクセスを有効にするように構成されている請求項3に記載のメモリサブシステム。
- 前記キャッシュコントローラは、1つ以上の連想度ビットを含む構成レジスタ(223)を有し、各連想度ビットは前記独立にアクセス可能なサブブロックのサブセットに関連付けられている請求項4に記載のメモリサブシステム。
- 前記キャッシュコントローラは、キャッシュサブシステムのパフォーマンスをモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて前記構成レジスタを自動的に再プログラムさせるように構成されたキャッシュモニタ(224)を更に有する請求項5に記載のメモリサブシステム。
- プロセッサのキャッシュメモリサブシステム(30)を構成するための方法であって、
独立にアクセス可能な複数のサブブロック(0,1,2,3)を有するキャッシュメモリのデータ記憶アレイ(265)にデータのブロックを記憶するステップと、
前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを、タグ記憶アレイ(263)に記憶するステップと、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するステップとを含む方法。 - 前記独立にアクセス可能なサブブロックのそれぞれが、nウェイセットアソシエイティブキャッシュを実装する請求項7に記載の方法。
- 前記キャッシュメモリを、フルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作させるステップを更に有する請求項7に記載の方法。
- 前記直接アドレッシングモードでの動作時に、
それぞれが、前記独立にアクセス可能なサブブロックのサブセットに関連付けられている1つ以上の連想度ビットを含む構成レジスタ(223)を介して、前記独立にアクセス可能なサブブロックの1つ以上のサブセットへの独立のアクセスを有効にするステップと、
前記キャッシュサブシステムのパフォーマンスを自動的にモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて、構成レジスタを自動的に再プログラムさせるステップとをさらに含む請求項9に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/771,299 US20090006756A1 (en) | 2007-06-29 | 2007-06-29 | Cache memory having configurable associativity |
PCT/US2008/007974 WO2009005694A1 (en) | 2007-06-29 | 2008-06-26 | Cache memory having configurable associativity |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010532517A true JP2010532517A (ja) | 2010-10-07 |
Family
ID=39720183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010514819A Pending JP2010532517A (ja) | 2007-06-29 | 2008-06-26 | 連想度を設定可能なキャッシュメモリ |
Country Status (8)
Country | Link |
---|---|
US (1) | US20090006756A1 (ja) |
JP (1) | JP2010532517A (ja) |
KR (1) | KR20100038109A (ja) |
CN (1) | CN101896891A (ja) |
DE (1) | DE112008001679T5 (ja) |
GB (1) | GB2463220A (ja) |
TW (1) | TW200910100A (ja) |
WO (1) | WO2009005694A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017503299A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572320B1 (en) * | 2009-01-23 | 2013-10-29 | Cypress Semiconductor Corporation | Memory devices and systems including cache devices for memory modules |
US8725983B2 (en) * | 2009-01-23 | 2014-05-13 | Cypress Semiconductor Corporation | Memory devices and systems including multi-speed access of memory modules |
US8990506B2 (en) | 2009-12-16 | 2015-03-24 | Intel Corporation | Replacing cache lines in a cache memory based at least in part on cache coherency state information |
US8677371B2 (en) * | 2009-12-31 | 2014-03-18 | International Business Machines Corporation | Mixed operating performance modes including a shared cache mode |
WO2011112523A2 (en) * | 2010-03-08 | 2011-09-15 | Hewlett-Packard Development Company, L.P. | Data storage apparatus and methods |
US8352683B2 (en) * | 2010-06-24 | 2013-01-08 | Intel Corporation | Method and system to reduce the power consumption of a memory device |
WO2012019290A1 (en) * | 2010-08-13 | 2012-02-16 | Genia Photonics Inc. | Tunable mode-locked laser |
US8762644B2 (en) | 2010-10-15 | 2014-06-24 | Qualcomm Incorporated | Low-power audio decoding and playback using cached images |
US8918591B2 (en) | 2010-10-29 | 2014-12-23 | Freescale Semiconductor, Inc. | Data processing system having selective invalidation of snoop requests and method therefor |
US20120136857A1 (en) * | 2010-11-30 | 2012-05-31 | Advanced Micro Devices, Inc. | Method and apparatus for selectively performing explicit and implicit data line reads |
US20120144118A1 (en) * | 2010-12-07 | 2012-06-07 | Advanced Micro Devices, Inc. | Method and apparatus for selectively performing explicit and implicit data line reads on an individual sub-cache basis |
KR101858159B1 (ko) * | 2012-05-08 | 2018-06-28 | 삼성전자주식회사 | 멀티-cpu 시스템과 이를 포함하는 컴퓨팅 시스템 |
US9529720B2 (en) * | 2013-06-07 | 2016-12-27 | Advanced Micro Devices, Inc. | Variable distance bypass between tag array and data array pipelines in a cache |
US9176856B2 (en) | 2013-07-08 | 2015-11-03 | Arm Limited | Data store and method of allocating data to the data store |
US9910790B2 (en) * | 2013-12-12 | 2018-03-06 | Intel Corporation | Using a memory address to form a tweak key to use to encrypt and decrypt data |
EP3129886B1 (en) * | 2014-12-14 | 2019-10-02 | VIA Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
US10719434B2 (en) | 2014-12-14 | 2020-07-21 | Via Alliance Semiconductors Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
CN109952565B (zh) | 2016-11-16 | 2021-10-22 | 华为技术有限公司 | 内存访问技术 |
US10565121B2 (en) * | 2016-12-16 | 2020-02-18 | Alibaba Group Holding Limited | Method and apparatus for reducing read/write contention to a cache |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
US11829190B2 (en) | 2021-12-21 | 2023-11-28 | Advanced Micro Devices, Inc. | Data routing for efficient decompression of compressed data stored in a cache |
US20230195640A1 (en) * | 2021-12-21 | 2023-06-22 | Advanced Micro Devices, Inc. | Cache Associativity Allocation |
US11836088B2 (en) | 2021-12-21 | 2023-12-05 | Advanced Micro Devices, Inc. | Guided cache replacement |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014195A (en) * | 1990-05-10 | 1991-05-07 | Digital Equipment Corporation, Inc. | Configurable set associative cache with decoded data element enable lines |
US5367653A (en) * | 1991-12-26 | 1994-11-22 | International Business Machines Corporation | Reconfigurable multi-way associative cache memory |
EP0735487B1 (en) * | 1995-03-31 | 2001-10-31 | Sun Microsystems, Inc. | A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system |
US5721874A (en) * | 1995-06-16 | 1998-02-24 | International Business Machines Corporation | Configurable cache with variable, dynamically addressable line sizes |
US5978888A (en) * | 1997-04-14 | 1999-11-02 | International Business Machines Corporation | Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels |
US6154815A (en) * | 1997-06-25 | 2000-11-28 | Sun Microsystems, Inc. | Non-blocking hierarchical cache throttle |
JP3609656B2 (ja) * | 1999-07-30 | 2005-01-12 | 株式会社日立製作所 | コンピュータシステム |
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 |
US6732236B2 (en) * | 2000-12-18 | 2004-05-04 | Redback Networks Inc. | Cache retry request queue |
US6845432B2 (en) * | 2000-12-28 | 2005-01-18 | Intel Corporation | Low power cache architecture |
AU2002330027A1 (en) * | 2001-09-14 | 2003-04-01 | Sun Microsystems, Inc. | Method and apparatus for decoupling tag and data accesses in a cache memory |
US7073026B2 (en) * | 2002-11-26 | 2006-07-04 | Advanced Micro Devices, Inc. | Microprocessor including cache memory supporting multiple accesses per cycle |
US7133997B2 (en) * | 2003-12-22 | 2006-11-07 | Intel Corporation | Configurable cache |
-
2007
- 2007-06-29 US US11/771,299 patent/US20090006756A1/en not_active Abandoned
-
2008
- 2008-06-26 KR KR1020107001826A patent/KR20100038109A/ko not_active Application Discontinuation
- 2008-06-26 GB GB1000641A patent/GB2463220A/en not_active Withdrawn
- 2008-06-26 WO PCT/US2008/007974 patent/WO2009005694A1/en active Application Filing
- 2008-06-26 CN CN2008800220606A patent/CN101896891A/zh active Pending
- 2008-06-26 JP JP2010514819A patent/JP2010532517A/ja active Pending
- 2008-06-26 DE DE112008001679T patent/DE112008001679T5/de not_active Withdrawn
- 2008-06-27 TW TW097124049A patent/TW200910100A/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017503299A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
Also Published As
Publication number | Publication date |
---|---|
KR20100038109A (ko) | 2010-04-12 |
CN101896891A (zh) | 2010-11-24 |
US20090006756A1 (en) | 2009-01-01 |
GB201000641D0 (en) | 2010-03-03 |
GB2463220A (en) | 2010-03-10 |
DE112008001679T5 (de) | 2010-05-20 |
WO2009005694A1 (en) | 2009-01-08 |
TW200910100A (en) | 2009-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010532517A (ja) | 連想度を設定可能なキャッシュメモリ | |
CN102804152B (zh) | 对存储器层次结构中的闪存的高速缓存一致性支持 | |
KR101136141B1 (ko) | 캐시 메모리의 동적 재구성 | |
US8589629B2 (en) | Method for way allocation and way locking in a cache | |
US20130046934A1 (en) | System caching using heterogenous memories | |
US10592419B2 (en) | Memory system | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
US20140089600A1 (en) | System cache with data pending state | |
US9990283B2 (en) | Memory system | |
US10180796B2 (en) | Memory system | |
US9977604B2 (en) | Memory system | |
US10191664B2 (en) | Memory system | |
US9977606B2 (en) | Memory system | |
US20170109277A1 (en) | Memory system | |
US7882309B2 (en) | Method and apparatus for handling excess data during memory access | |
US20090006777A1 (en) | Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor | |
US10466909B2 (en) | Memory system | |
KR101689094B1 (ko) | 스티키 제거 엔진을 구비한 시스템 캐시 | |
US20170109070A1 (en) | Memory system | |
US20170109043A1 (en) | Memory system | |
US20170109061A1 (en) | Memory system | |
US20170109071A1 (en) | Memory system | |
US20170109086A1 (en) | Memory system | |
WO2022012307A1 (zh) | 数据访问的方法和处理器系统 | |
US9977605B2 (en) | Memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20100902 |