JP5241838B2 - キャッシュ・セクタを割り振るためのシステムおよび方法(キャッシュ・セクタの割り振り) - Google Patents

キャッシュ・セクタを割り振るためのシステムおよび方法(キャッシュ・セクタの割り振り) Download PDF

Info

Publication number
JP5241838B2
JP5241838B2 JP2010520524A JP2010520524A JP5241838B2 JP 5241838 B2 JP5241838 B2 JP 5241838B2 JP 2010520524 A JP2010520524 A JP 2010520524A JP 2010520524 A JP2010520524 A JP 2010520524A JP 5241838 B2 JP5241838 B2 JP 5241838B2
Authority
JP
Japan
Prior art keywords
cache
slice
level
level cache
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010520524A
Other languages
English (en)
Other versions
JP2010537265A (ja
JP2010537265A5 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010537265A publication Critical patent/JP2010537265A/ja
Publication of JP2010537265A5 publication Critical patent/JP2010537265A5/ja
Application granted granted Critical
Publication of JP5241838B2 publication Critical patent/JP5241838B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • 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
    • 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

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)

Description

本発明は、一般にデータ処理システムに関し、より具体的に言えば、データ処理システム内のキャッシュ・メカニズムに関する。さらにより具体的に言えば、本発明は、マルチセクタ化キャッシュ(multi-sectored cache)のキャッシュ・スライス内でのキャッシュ・セクタの割り振りに関する。
従来のマルチプロセッサ・データ処理システムは、いくつかの処理ユニット、システム・メモリ、および、処理ユニットとメモリとの間に結合された1つまたは複数レベルのキャッシュ・メモリを備えることができる。キャッシュとは、様々な待ち時間で、データ処理システムのメモリ全体のサブセットを格納するために使用される、一時ストレージ機能である。様々なキャッシュが、処理ユニットに関連してレベルとして定義されたキャッシュ階層内に構成される。様々なレベルのキャッシュ階層で、キャッシュのサイズとアクセス待ち時間との間のトレードオフが実行される。当業者であれば、使用可能な実装技術に従って様々なキャッシュ階層レベルのアクセス待ち時間およびサイズの特徴を最適化し、結果として最適なシステム性能につながる、マルチレベル・キャッシュ階層の観念に精通している。
キャッシュは、通常、所与の階層レベルで、キャッシュ・ディレクトリ・アレイ、キャッシュ・データ・アレイ、ならびに、キャッシュの更新および管理に必要な機能論理ユニットを含む、いくつかのコンポーネントを備える。キャッシュのキャッシュ・データ・アレイ部分は、メイン・メモリの諸部分のコピーを格納するために利用されるデータ・ストレージ要素のセットである。キャッシュ・データ・アレイは、一連のいわゆる「キャッシュ・ブロック」に分割される。これらのキャッシュ・ブロックは、データ処理システム内でメイン・メモリの連続部分のコピーを保持するために使用される、ストレージ領域である。これらのブロックのサイズは、通常、およそ128バイトであり、このサイズは2のべき乗である。
以下の説明では、128バイトのキャッシュ・ブロック・サイズが想定される。当業者であれば、本発明を、他のキャッシュ・ブロック・サイズのデータ処理システムに適用できるであろう。さらに、キャッシュ・ブロックにコピーされるメモリの諸部分も整合されている。言い換えれば、キャッシュ・ブロックにマッピングされるメモリの連続部分の開始アドレスは、キャッシュ・ブロック・サイズの整数倍である。
通常、キャッシュのデータ・アレイ部分は、キャッシュ・ブロックのM×N行列として編成される。行列の各行は「合同クラス(congruence class)」と呼ばれ、合同クラスの数は通常、2のべき乗である。所与の合同クラス内では、メイン・メモリの連続部分のコピーを保持するためにN個のブロックが提供される。連続クラス内にN個のブロックを備えたキャッシュは、Nウェイ・セット・アソシエィティブ・キャッシュ(N-way set associative cache)と呼ばれる。
メイン・メモリ内の各位置は、キャッシュ内の特定の合同クラス内に常駐するように、キャッシュ・ブロックによってマッピングされる。メイン・メモリ・アドレスの低位ビット(128バイト・キャッシュ・ラインの場合7ビット)は、キャッシュ・ライン内のどのバイトがアクセスされており、キャッシュ・ブロックの合同クラスへのマッピングに影響を与えないかを示す。アドレスの次の最上位log(M)ビットは、「合同クラス・アドレス」と呼ばれる。これらのアドレス・ビットは、M行のキャッシュへのインデック付けに使用される。メモリのキャッシュ・ブロック・サイズ指定および整合済み部分は、アドレス指定合同クラス内のNブロック(エントリ)のうちのいずれかに常駐することができる。アドレス内の残りの高位ビットは「タグ」と呼ばれ、合同クラス内で割り振り可能なメイン・メモリの異なるブロックを区別するために使用される。
図1を参照すると、64ビット・アドレスを備えるシステムのためのキャッシュ、および128バイト・キャッシュ・ラインの4096合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド103内の低位7ビット(ビット57から63)は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
次の合同クラス・アドレス・フィールド102内の12ビット(ビット45から56)は、このメモリ・アドレスがマッピングしているキャッシュ内の合同クラスを示す。このアドレスを含むキャッシュ・ブロックは、アドレス指定された合同クラス内のNブロックのうちのいずれかに常駐する可能性がある。最後に、フィールド101内のアドレスの残りのビット(ビット0から44)は、メモリ・ブロックの「タグ」と呼ばれる。
メイン・メモリのどの部分がキャッシュ内に存在するかを記録するために、キャッシュは、M×Nエントリ・キャッシュ・ディレクトリ・アレイを含む。このキャッシュ・ディレクトリ・アレイ内の各エントリは、M×Nキャッシュ・データ・アレイ内の1つのエントリに直接対応し、メイン・メモリ内のどの部分がキャッシュ・データ・アレイの対応するエントリにマッピングされるか、および、そのエントリのキャッシュ・ラインの状態を示す。
次に図2を参照すると、キャッシュ・ディレクトリ・エントリの記述が示されている。タグ・フィールド104は、キャッシュ内のこのエントリにマッピングされたメイン・メモリのブロックのアドレスのタグ部分からなる。状態フィールド105は、このエントリにマッピングされたキャッシュ・ブロックの状態を含む。示された実施形態では、16までの可能なキャッシュ状態を提供するために4ビットが使用される。これらの状態のうちの1つが、ラインが「無効」であることを示す。無効状態が存在する場合、キャッシュ内のこのエントリはアクティブでないため、このディレクトリ・エントリに関するタグ・フィールド内の値は無視される(メモリの対応する部分が実際にキャッシュ・エントリ内に読み込まれているかどうかに関わらず、タグ・フィールド内には常に何らかの値が存在するため、この認定が必要である)。
特定のアドレスがキャッシュ内に存在するかどうかを決定するために、そのアドレスのタグ部分が、そのアドレスに関連付けられた合同クラス内のNタグ・エントリ(タグ・フィールド104)と比較され、状態フィールド105によって無効であるとマークされたエントリは無視される。有効なマッチング・エントリが見つかった場合、ラインはキャッシュ内に存在する。メイン・メモリの一部がキャッシュ・ブロック内にインストールされた場合、そのブロックのディレクトリ・エントリは、非無効状態を示すように更新され、メモリ・ブロック・アドレスのタグ部分がタグ・フィールド104内に配置される。ブロックがキャッシュから割り振り解除された場合、状態フィールド105は無効に設定され、キャッシュ・データ(コヒーレンシ上の理由で必要な場合)はメイン・メモリまたは他のキャッシュに書き戻すことができる。
次に図3を参照すると、上記説明に従ったキャッシュが示されている。キャッシュ110は、キャッシュ・データ・アレイ120、キャッシュ・ディレクトリ・アレイ130、およびキャッシュ制御論理126からなる。キャッシュ・データ・アレイ120は、キャッシュ・メンバ124からなる合同クラス122からなる。キャッシュ・ディレクトリ・アレイ130は、前述のようなキャッシュ・データ・アレイ120と同様に編成される。
上記では、キャッシュ・ディレクトリ・アレイ、キャッシュ・データ・アレイ、および、キャッシュへの更新を管理するための制御論理セットからなる、単一のキャッシュ構造を使用するメイン・メモリ全体をマッピング可能な、単一のキャッシュ構造について説明した。しかしながら、並列処理を増加させるために、キャッシュはしばしば「スライス化」される。スライス化キャッシュでは、各スライスが、キャッシュ・データ・アレイ、キャッシュ・ディレクトリ・アレイ、および制御論理を含む。通常、S個のスライスを備えるスライス化キャッシュでは、各スライスがメモリ全体の1/Sに対して責務を負う。スライスの数はしばしば2のべき乗であり、以下ではそのように想定される。
次に図4を参照すると、2つのスライス212aおよび212bからなる、スライス化キャッシュ210が示される。スライスごとのキャッシュ・データ・アレイ222aまたは222bを使用して、所与のキャッシュ・スライスにマッピングされたそれらのメモリ領域が保持される。スライスごとのキャッシュ・ディレクトリ230aまたは230bを使用して、各キャッシュ・スライス内にマッピングされたメモリの諸部分が追跡される。最後に、スライスごとの制御論理226aおよび226bが、所与のキャッシュ・スライスに関する未処理のコヒーレンス動作を管理する。複数のキャッシュ・スライスを有することによって、図3と同様のモノリシック(monolithic)キャッシュ構造内で可能なよりも、多くの未処理の動作に対処することができる。
図4に示されたようなスライス化キャッシュを効率的に管理するために、通常、システム・メモリ・スペース全体をキャッシュ・スライスに分配することによって、追加のアドレッシング手段が提供される。具体的に言えば、システム・メモリ・スペース全体の半分が、キャッシュ210内の各スライスによってキャッシュされる。次に図5を参照すると、64ビット・アドレスを備えるシステムのためのキャッシュ210、および128バイト・キャッシュ・ラインの4096合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド203内の低位7ビット(ビット57から63)は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
次のフィールド、SSフィールド214は、スライス・セレクタ・フィールドである。このフィールドは、どのスライスが所与のキャッシュ・ブロック・メモリ・アドレスを割り振るためのものであるかを決定するために使用される。SSフィールドが値「0」を有する場合、キャッシュ・ブロック・メモリ・アドレスはスライス212aに割り振られる。同様に、SSフィールドが値「1」を有する場合、キャッシュ・ブロック・メモリ・アドレスはスライス212bに割り振られる。SSフィールドに基づくこのマッピングは、キャッシュ・ブロック・アドレスを、スライス212aにマッピングされることになる16進値「00」で終わらせる効果を有する。2つより多くのスライスを備えるキャッシュの場合、追加のビットがSSフィールドに含まれることになり(4スライスの場合、2つのビット)、各スライスにマッピングされた別個のサブセットにシステム・メモリをマッピングすることになる(2のべき乗でないスライスが使用される場合、所与のキャッシュ・ブロック・アドレスをマッピングするスライスを選択するために、通常、いくつかのビット間でハッシュ関数が採用される)。所与のキャッシュ・スライスの場合、合同クラス・アドレス・フィールド202およびタグ・フィールド201は、前述のような、合同クラス・フィールド102およびタグ・フィールド101と同じ機能を果たす。
前述のキャッシュ構造では、キャッシュ・データ・アレイ内の各エントリに対して単一のディレクトリ・エントリが使用される。キャッシュ・ディレクトリ・アレイは、回路リソースのかなりの部分を必要とし、可能であれば、このリソース要件を減らすことが有利である。そのため、いわゆる「セクタ化キャッシュ」がしばしば使用される。セクタ・キャッシュでは、メモリの1より大きい連続キャッシュ・ライン・サイズ・ブロックの状態を追跡するために、単一のディレクトリ・エントリが採用される。2セクタ・キャッシュでは、単一のディレクトリ・エントリが、システム・メモリの2つの連続ブロックの状態を追跡することになる。
次に図6を参照すると、2セクタ・キャッシュに関するディレクトリ・エントリの記述が示される。ディレクトリ・エントリは、タグ・フィールド304と、ディレクトリ・エントリに関連付けられたキャッシュ・ラインそれぞれのコヒーレンス状態に対応する2つのセクタ状態フィールド305aおよび305bからなる。
次に図7を参照すると、64ビット・アドレスを備えるシステムのためのキャッシュ、および、2セクタ化キャッシュを利用する128バイト・キャッシュ・ラインの4096合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド303内の低位7ビット(ビット57から63)は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
アドレス内の次のビット、Tフィールド308は、所与のディレクトリ・エントリにマッピングされたセクタ間で選択するために使用される。この低位ビットを利用することによって、システム・メモリの連続するキャッシュ・ブロック領域が所与のディレクトリ・エントリに割り振られる。この場合、16進アドレス00および80で終わるアドレスは、所与のディレクトリ・エントリのセクタ内にマッピングされる。
次の合同クラス・アドレス・フィールド302内の12ビット(ビット44から55)は、このメモリ・アドレスがマッピングされるキャッシュ内の合同クラスを示す。このアドレスを含むキャッシュ・ブロックは、アドレス指定された合同クラス内のN個のキャッシュ・ブロック・ペアのうちのいずれかに常駐することができる。最後に、タグ・フィールド301内のアドレスの残りのビット(ビット0から43)は、メモリ・ブロックの「タグ」と呼ばれ、固有の連続するキャッシュ・ブロック・ペアを識別する。2セクタ・キャッシュ内のディレクトリ・エントリは、単一のキャッシュ・ブロック・エントリの代わりにシステム・メモリの2キャッシュ・ブロック・サイズ領域をマッピングする働きをするため、タグ・フィールド301は、図1のタグ・フィールド101よりも少ないビットを含む。
セクタ化キャッシュは、ディレクトリのサイズを縮小する手段を提供するが、キャッシュの効率が犠牲になる。様々なディレクトリ・エントリの両方のセクタが同時に使用されない場合、キャッシュ内に含めることが可能なメモリの有効量が低減される。アクセス・パターンがメイン・メモリ内のあらゆる他のブロックのみに影響を与える異常なケースでは、キャッシュできるメモリの有効量は半分にカットされる。実際には、キャッシュのセクタ化による効率性の損失は、これよりもかなり少ない。これはしばしば、セクタ化されていないキャッシュとおおよそ等価の領域のセクタ化キャッシュがより良く実行することになる(特に、より大きな低レベル・キャッシュの場合)ケースである。
次に言及されるものとする、本発明の様々な態様が、添付の特許請求の範囲に定義されている。
好ましい諸実施形態は、セクタ対スライスの割り振りの再構成および低位キャッシュ・アドレッシング機構によって、セクタ化およびスライス化された低位キャッシュを伴う、キャッシュ・サブシステム内の、配線の輻輳、必要な表面積、およびアクセス待ち時間を削減するための、方法およびコンピュータ・システムを提供する。この割り振りにより、不連続アドレスを有するセクタが同じスライス内に配置され、キャッシュ・スライス内でのアドレッシング可能なセクタのこの再割り当てに基づき、2つのレベルの低位キャッシュ間で縮小配線機構が可能である。加えて、セクタおよびスライスの識別に以前に割り振られたアドレス・フィールドが、アドレス・タグ内の互いの位置に対して交換されるように、低位キャッシュ有効アドレス・タグが再構成される。このアドレス・ビットの再割り振りによって、示されたセクタに基づく直接スライス・アドレッシングが可能になる。
本発明の上記ならびに追加の機能および利点は、以下の詳細な説明で明らかになろう。
本発明自体、ならびにその好ましい使用モードおよび利点は、添付の図面に関する例示的実施形態の以下の詳細な説明を参照することによって、最も良く理解されよう。
従来技術に従った、キャッシュ有効アドレスの例を示す図である。 従来技術に従った、キャッシュ・ディレクトリ・エントリの例を示す図である。 従来技術に従った、キャッシュの内部コンポーネントを示すブロック図である。 従来技術に従った、2つのスライスに分割されたキャッシュの内部コンポーネントを示すブロック図である。 図4のキャッシュなどのスライス化キャッシュ内のエントリをアドレス指定するために使用される、キャッシュ有効アドレスを示す従来技術の図である。 従来技術に従った、2ウェイ・セクタ化キャッシュに関する、キャッシュ・ディレクトリ・エントリの例を示す図である。 従来技術に従った、2ウェイ・セクタ化キャッシュに関する、キャッシュ有効アドレスの例を示す図である。 内部に本発明の機能を有利に実装可能な、複数レベル・キャッシュを備えるデータ処理システムを示すブロック図である。 従来技術に従った、連続するセクタ・アドレッシングを使用する、スライス化された2ウェイ・セクタ化低位レベル・キャッシュをサポートするための、従来のキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。 従来技術に従った、図9のキャッシュ・サブシステムによって示されたL2対L3キャッシュ構成に関する、L2キャッシュ有効アドレスの例を示す図である。 従来技術に従った、図9のキャッシュ・サブシステムによって示されたL2対L3キャッシュ構成に関する、L3キャッシュ有効アドレスの例を示す図である。 本発明の一実施形態に従った、不連続のセクタ・アドレッシングを伴う、スライス化された2ウェイ・セクタ化低位レベル・キャッシュをサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。 本発明の一実施形態に従った、図12のキャッシュ・サブシステムによって示されるL3キャッシュ構成に関するL3キャッシュ有効アドレスの例を示す図である。 従来技術に従った、連続するセクタ・アドレッシングを使用する、スライス化された4ウェイ・セクタ化低位レベル・キャッシュをサポートするための、従来のキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。 本発明の一実施形態に従った、不連続のセクタ・アドレッシングを伴う、スライス化された4ウェイ・セクタ化低位レベル・キャッシュをサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。 本発明の一実施形態に従った、図15のキャッシュ・サブシステムによって示されるL3キャッシュ構成に関するL3キャッシュ有効アドレスの例を示す図である。 本発明の一実施形態に従った、どちらも不連続のセクタ・アドレッシングを伴う、スライス化された2ウェイ・セクタ化第1低位レベル・キャッシュと、スライス化された4ウェイ・セクタ化第2低位レベル・キャッシュとの間の接続をサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。 本発明の一実施形態に従った、図17のキャッシュ・サブシステムによって示されたL2対L3キャッシュ構成に関する、L2キャッシュ有効アドレスの例を示す図である。 本発明の一実施形態に従った、図17のキャッシュ・サブシステムによって示されたL2対L3キャッシュ構成に関する、L3キャッシュ有効アドレスの例を示す図である。
好ましい実施形態は、セクタ対スライスの割り振りの再構成および低位キャッシュ・アドレッシング機構によって、セクタ化およびスライス化された低位キャッシュを伴う、キャッシュ・サブシステム内の、配線の輻輳、必要な表面積、およびアクセス待ち時間を削減するための、方法およびコンピュータ・システムを提供する。この割り振りにより、不連続アドレスを有するセクタが同じスライス内に配置され、キャッシュ・スライス内でのアドレッシング可能なセクタのこの再割り当てに基づき、2つのレベルの低位キャッシュ間で縮小配線機構が可能である。加えて、セクタおよびスライスの識別に以前に割り振られたアドレス・フィールドが、アドレス・タグ内の互いの位置に対して交換されるように、低位キャッシュ有効アドレス・タグが再構成される。このアドレス・ビットの再割り振りによって、示されたセクタに基づく直接スライス・アドレッシングが可能になる。たとえば、00Hexで終わるすべてのアドレスが第1のスライスに送られ、80Hexで終わるすべてのアドレスが第2のスライスに送られる。本明細書で説明および図示された機能は、任意の2レベルのシステムのキャッシュ階層に適用可能である。
図の説明において、同様の要素には、前の図面と同様の名前および参照番号が与えられる。後の図面が、異なるコンテキストにおける、または異なる機能を備える要素を使用する場合、その要素には、図の番号を表す異なる先頭数字が与えられる(たとえば、図4の場合は4xx、図6の場合は6xx)。要素に割り当てられる特定の数字は、単に説明を支援するためのみに与えられるものであり、本発明に対するいかなる(構造または機能上の)制限をも示唆することを意図しない。
次に図面を参照、特に図8を参照すると、内部に本発明の機能を有利に実装可能な、複数レベル・キャッシュ階層を有するマルチプロセッサ・データ処理システム(DPS)400の高水準ブロック図が示される。図に示されるように、データ処理システム400は、いくつかの処理ユニット(チップ)401A、401Bを含み、それぞれがシステム相互接続440に結合される。システム相互接続440は、1つまたは複数のバスあるいはクロスポイント・スイッチを備えることが可能であり、処理ユニット401Aおよび401B上のコンポーネントと、システム相互接続440に結合された他のスヌーパ(snooper)(たとえばメモリ430)との間で、トランザクションを通信するためのコンジットとしての役割を果たす。
各処理ユニット401A、401Bは集積回路であり、1つまたは複数のプロセッサを含むことが可能であって、そのうちのCPU0 405AおよびCPU1 405Bが示されている。レジスタ、命令流れ論理、および、プログラム命令を実行するために使用される実行ユニット(いずれも具体的に図示せず)に加えて、プロセッサ・ユニット401Aおよび401Bは、それぞれ、関連付けられたプロセッサ(CPU 405A、405B)によってアクセスされる可能性の高い命令およびデータを一時的に格納する、関連レベル1(L1)キャッシュ(これも具体的に図示せず)を含む。L1キャッシュは、命令およびデータの両方(どちらも以下では簡単にデータと呼ぶ)を格納する、統合キャッシュとすることが可能であるか、または別の方法として、L1キャッシュは、二又に分かれた命令およびデータ・キャッシュとして実装可能である。
図8に示されるように、データ処理システム400は、相互接続440に結合されたシステム・メモリ430も含む。メモリ430は、メモリ階層内で最低レベルの揮発性データ・ストレージを形成し、レベル2(L2)キャッシュ420A/420Bおよび共有L3キャッシュ425を含む、1つまたは複数の低レベルのキャッシュ・メモリを含む。制御バス421A/421Bは、L2キャッシュ420A/420Bと共有L3キャッシュ425との間でコマンドおよびデータを通信する働きをする。L2キャッシュ420A/420Bおよび共有L3キャッシュ425は、システム・メモリ430からプロセッサ(405A/405B)へデータをステージングするために使用される。本発明の機能は、任意の2レベルのキャッシュ階層に適用可能であるが、本明細書の他の説明は、相互接続421A/421Bによって実装された、L2キャッシュ420A/420Bと共有L3キャッシュ425との間の、データ伝送および関連付けられた配線およびアドレッシングを参照することになる。
さらに当業者であれば、データ処理システム400が、追加の相互接続へのブリッジ、I/Oデバイス、不揮発性ストレージ、および、ネットワークまたは接続デバイスへの接続のためのポートなどの、多くの追加コンポーネントを含むことができることを理解されよう。こうした追加のコンポーネントは本発明を理解するために必要でないため、図8に示されないか、または本明細書ではこれ以上考察しない。
次に図9を参照すると、従来技術のキャッシュ階層の実装が示されている。参照される実施形態では、CPUの405Aおよび405BはそれぞれL2キャッシュ420Aおよび420Bに接続される。L2キャッシュ420Aおよび420Bはそれぞれ、128バイトのキャッシュ・ライン・サイズを備えた2スライスの非セクタ化キャッシュである。L2キャッシュ420A/420Bの第1のスライス(120A)は、16進数「00」で終わる開始アドレスによって、メモリのそれらのキャッシュ・ライン・サイズ・ブロックをマッピングするために使用される(たとえば、キャッシュ・ライン・アドレスのビット56を備える、それらの128バイト・キャッシュ・ライン・ブロックは「0」に等しい)。同様に、L2キャッシュ420A/420Bの第2のスライス(120B)は、16進数「80」で終わる開始アドレスによって、メモリのそれらのキャッシュ・ライン・サイズ・ブロックをマッピングするために使用される(たとえば、ビット56は「1」に等しい)。このようにして、図4および図5に関して前述されたように、マルチプロセッサ・データ処理システムのメイン・メモリは、L2キャッシュ420A/420Bの2つのスライスにわたって分配される。
同様に、L3キャッシュ525は2スライス・キャッシュ(スライス525Aおよび525B)であるが、キャッシュ・スライスは、さらに2ウェイにセクタ化される。一般にセクタ化キャッシュは、より大きな低位レベルのキャッシュ階層に使用される。より大きなキャッシュは、セクタ化キャッシュとして構造化されることによって、より大きな相応のシリコン領域の節約をもたらす。従来技術の構成では、図6および図7に従って前述されたように、キャッシュ・エントリ内の異なるセクタに割り当てられたメモリのキャッシュ・ブロック・サイズ領域が、メモリ内の連続ブロックにマッピングされる。したがって、示された実施形態では、16進数「00」および「80」で終わる開始キャッシュ・ブロック・アドレスは、スライス525A内のエントリにマッピングされる。同様に、「100」および「180」で終わる開始キャッシュ・ブロック・アドレスは、キャッシュ・スライス525B内のエントリにマッピングされる。
図10に示される構成では、相互接続421Aおよび421B内のバス521によって、各L2キャッシュ・スライスが各L3キャッシュ・スライスに接続されなければならない。これは、キャッシュ・ライン・アドレスのアドレス・ビット55がそれぞれ、「0」(アドレスが「000」で終わる)または「1」(アドレスが「100」で終わる)の場合、16進数「00」で終わるキャッシュ・ラインが、L3スライス525AまたはL3スライス525Bのいずれかで見られるという事実によるものである。こうした構成は、複雑で実現困難な接続セットにつながる(バスあるいは配線またはその両方521)。
次に図10および図11を参照すると、図9のL2キャッシュおよびL3キャッシュの両方によって、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかの記述が示される。アドレス・マッピング584は、L2キャッシュ420A/420Bによって使用されるアドレス・マッピングを示す。このマッピングでは、ビット56(フィールド583)がキャッシュ・スライス120A/120B間で選択するために使用される。アドレス・マッピング585は、L3キャッシュ525によって使用されるアドレス・マッピングを示す。従来技術の実装を維持している場合、ビット56(フィールド580)は、所与のキャッシュ・エントリ内のアドレス間で選択するために使用される。この割り当ては、所与のキャッシュ・エントリ内のセクタに関連付けられたメモリ領域の隣接を維持する。ビット55(フィールド581)は、その後、キャッシュ・スライス間で選択するために使用される。
次に図12を参照すると、L2キャッシュとL3キャッシュとの間の配線輻輳を削減するために、本発明によって使用される代替アドレッシング機構が示される。好ましい実施形態のメカニズムでは、L3キャッシュ・スライス内のセクタは不連続アドレスに割り当てられる。具体的に言えば、L3スライス625Aには、16進アドレス「00」および「100」で終わるアドレスが割り当てられる。同様に、L3スライス625Bには、16進アドレス「80」および「180」で終わるアドレスが割り当てられる。このようにして、L2キャッシュ・スライス(120Aまたは120B)は、従来技術の実装における2つのスライスとは反対に、1つのL3スライスと通信するだけでよい。たとえば、L2キャッシュ・スライス120Aに関連付けられたアドレスがL3キャッシュ・スライス625A内に存在するのみでよい。「00」16進数で終わるアドレスは、「000」または「100」のいずれかで終わらなければならない。同様の理由付けにより、L2キャッシュ・スライス120BはL3キャッシュ・スライス625Bにのみ接続されることが可能である。このアドレッシング機構により、相互接続421Aおよび421Bを実装するために必要なバスあるいは配線621の数が低減される。
次に図13を参照すると、メイン・メモリ・アドレスを構成するビットが図12のL3キャッシュによってどのように解釈されるかの記述が示される(L2キャッシュ・マッピングは図10で使用されるものと同一である)。アドレス・マッピング690は、L3キャッシュ625によって使用されるアドレス・マッピングを示す。このマッピングでは、ビット56(フィールド592)は、L3キャッシュ625内でスライスを選択するために使用される。ビット56をスライスの選択に割り振ることによって、所与のキャッシュ・スライス内で不連続キャッシュ・ラインが割り当てられる。その後、セクタ化キャッシュ・ライン・エントリ内の所与のエントリにどのアドレスがマッピングされるかを制御するために、ビット55(フィールド591)が使用される。このキャッシュ・アドレッシング機構により、L2キャッシュ420A/420BとL3キャッシュ625との間の相互接続が大幅に簡略化できる。
図12および図13に示された技法は、より多数のセクタを備える低レベル・キャッシュを取り扱うために拡張可能である。次に図14を参照すると、2スライスの、4ウェイ・セクタ化L3キャッシュ725を備えたデータ処理システム715が示される。データ処理システム715は、図9で必要とされたものと同じ「任意のキャッシュ・スライス」と「任意のキャッシュ・スライス」との相互接続(バスあるいは配線またはその両方521)を含む。次に図15を参照すると、L3キャッシュ725が、本発明の教示に従って構成され、不連続アドレスをL3キャッシュ・スライス725Aおよび725Bに割り当てる、改良されたデータ処理システムが示される。具体的に言えば、L3キャッシュ・スライス725Aは、ゼロ(0)の値に等しいビット56を備える昇順アドレスを使用するキャッシュ・ラインを含み、L3キャッシュ・スライス725Bは、1の値に等しいビット56を備える昇順アドレスを使用するキャッシュ・ラインを含む。このようにアドレスを割り当てることにより、キャッシュの配線輻輳を低減させることができる。
次に図16を参照すると、メイン・メモリ・アドレスを構成するビットが図15のL3キャッシュによってどのように解釈されるかの記述が示される(L2キャッシュ・マッピングは図10で使用されるものと同一である)。アドレス・マッピング790は、L3キャッシュ725によって使用されるアドレス・マッピングを示す。このマッピングでは、ビット56(フィールド792)は、L3キャッシュ725内でスライスを選択するために使用される。ビット56をスライスの選択に割り振ることによって、所与のキャッシュ・スライス内で不連続キャッシュ・ラインが割り当てられる。その後、セクタ化キャッシュ・ライン・エントリ内の所与のエントリにどのアドレスがマッピングされるかを制御するために、ビット54および55(フィールド791)が使用される。このキャッシュ・アドレッシング機構により、L2キャッシュ720A/720BとL3キャッシュ725との間の相互接続(バスならびに配線またはその両方721)が大幅に簡略化できる。
本発明の教示は、高レベルおよび低レベルの両方のキャッシュがセクタ化およびスライス化された場合に、配線輻輳を低減させるために適用することもできる。たとえば、図17のキャッシュ配置構成は、L2キャッシュ820A/820Bが2ウェイ・セクタ化および2ウェイ・スライス化され、L3キャッシュ825が4ウェイ・スライス化(スライス825A、825B、826A、826B)および2ウェイ・セクタ化された、キャッシュ階層815に適用された本発明の教示を示す。この構造では、各L2キャッシュ・スライス821A/821Bが、4つのL3キャッシュ・スライス(スライス825A、825B、826A、826B)のすべてではなく、L3キャッシュ・スライスのうちの2つのみに接続していなければならない。
図18および図19は、図17のキャッシュ構成に関するL2およびL3アドレス・マッピングを示す。L2キャッシュ・マッピング884は、スライス・セレクタとしてビット56(フィールド883)を使用し、所与のセクタ化キャッシュ・エントリ内のセクタ・アドレスを決定するためにビット55(フィールド882)を使用する。同様に、L3アドレス・マッピング885は、スライス・セレクタとしてビット55および56(フィールド892)を使用し、所与のセクタ化キャッシュ・エントリ内のセクタ・アドレスを決定するためにビット53および54(フィールド891)を使用する。
本発明は、前述の実施形態を使用して、少なくとも1つのプロセッサと、第1のプロセッサに通信可能に結合され、2つまたはそれ以上のキャッシュ・スライスを有する、第1レベルのキャッシュ、および、第1レベルのキャッシュに通信可能に接続された第2レベルのキャッシュを含み、第2レベルのキャッシュが、少なくとも2ウェイ・セクタ化された2つまたはそれ以上の第2のキャッシュ・スライスを有する、改良されたメモリ・サブシステムとを有する、データ処理システムを提供する。2つまたはそれ以上の第2のキャッシュ・スライス内のセクタ・アドレスは、第1のセクタが、2つまたはそれ以上の第2のキャッシュ・スライスのうちの第1に割り当てられ、第1のセクタと連続している第2のセクタが、2つまたはそれ以上の第2のキャッシュ・スライスのうちの第2に割り当てられるように、不連続に割り振られる。
相互接続は、第1レベルのキャッシュを第2レベルのキャッシュに接続し、第1レベルと第2レベルのキャッシュ間でのデータ交換を可能にする。相互接続は、(1)第1レベルのキャッシュの第1のスライスを第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第1のデータ・バスと、(2)第1レベルのキャッシュの第2のスライスを第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第2のデータ・バスとを含む。
一実施形態では、データ処理システムあるいは改良されたメモリ・サブシステムまたはその両方が、第1レベルのキャッシュと同様に構成され、第2レベルのキャッシュを第1レベルのキャッシュと共有する、次の第1レベルのキャッシュを含む。この次の第1レベルのキャッシュを伴い、相互接続は、(1)次の第1レベルのキャッシュの第1のスライスを、第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第3のデータ・バスと、(2)次の第1レベルのキャッシュの第2のスライスを、第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第4のデータ・バスとを、さらに備える。第1レベルのキャッシュおよび次の第1レベルのキャッシュは、どちらも、それぞれの第1のスライスから第2レベルのキャッシュ内の対応する第1のスライスへ、およびその逆に、データを調達(source)し、第1レベルのキャッシュはどちらも、それぞれの第2のスライスから第2レベルのキャッシュ内の対応する第2のスライスへ、およびその逆に、データを調達する。
この新しい割り振り方式をサポートするために、データ処理システムあるいは改良されたメモリ・サブシステムまたはその両方は、(1)1つまたは複数のセクタ・ビットの割り振りを、キャッシュ・ラインに関するアドレス・タグ内の1つまたは複数のスライス・セレクタ・ビットと交換する機能であって、スライス・セレクタ・ビットは、対応するデータのラインが第2レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、セクタ・ビットは、キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、(2)1つまたは複数のスライス・セレクタ・ビット内に第1の値を有する第1のデータを、1つまたは複数のスライス・ビットによって示される第2レベルのキャッシュ内の第1のスライスに自動的に割り当てる機能と、(3)1つまたは複数のスライス・セレクタ・ビット内に第2の値を有する第2のデータを、1つまたは複数のスライス・セレクタ・ビットによって示される第2レベルのキャッシュ内の第2のスライスに自動的に割り当てる機能と、を完了する、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第2レベルのキャッシュ・アドレッシング・プロトコルを含む。
一実施形態では、自動的な割り当ては、キャッシュ・ライン・アドレス内のスライス・セレクタ・ビットの値をチェックすること、および、キャッシュ・ライン・アドレスのアドレス部分が0ビット値で終わる場合、第2レベルのキャッシュ内の第1のスライスにキャッシュ・ラインを割り当てることを含む。また、キャッシュ・ライン・アドレスのアドレス部分が1ビット値で終わる場合、第2レベルのキャッシュ内の第2のスライスにキャッシュ・ラインを割り当てることを含む。これらの機能では、キャッシュ・ライン・アドレスのアドレス部分の終了ビットは、スライス・セレクタ・ビットに対応する。
セクタ化キャッシュ・エントリ内のセクタに不連続アドレスを割り当てることによって、本発明は、キャッシュ間の配線および輻輳の削減を達成する。セクタ・エントリを昇順の連続アドレスでメモリのキャッシュ・ブロック・サイズ領域に割り振った従来技術の機構とは対照的に、この不連続アドレスでのセクタの割り当ては、所与のレベルの階層で所与のキャッシュ・スライスをできる限り少ない他のスライスに接続することを可能にする。
スライスごとにセクタを割り振る前述の方法は、物理デバイス上でのキャッシュ間配線の縮小を可能にするため、L3キャッシュのサイズを増加させ、待ち時間を削減しながらも、チップの内外で使用する表面積を小さくすることが可能である。したがって本発明は、キャッシュ技術においてかなり望ましい発達をもたらす。
以上、本発明について、好ましい実施形態を参照しながら具体的に図示および説明してきたが、当業者であれば、本発明の趣旨および範囲を逸脱することなく、その形および細部における様々な変更が実行可能であることを理解されよう。
不確実さを避けるために、本明細書の説明および特許請求の範囲全体で使用される「備える」という用語は、「のみからなる」という意味として解釈されるものではない。

Claims (20)

  1. 少なくとも1つのプロセッサと、
    第1のプロセッサに通信可能なように結合され、アドレス階層に基づいて2つまたはそれ以上のキャッシュ・スライス(120a,120b)に分割された、第1レベルのキャッシュ(420a)と、
    前記第1のプロセッサに通信可能なように結合された、第2レベルのキャッシュ(625)と、
    前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、(1)前記第1レベルのキャッシュの第1のスライスを前記第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第1のデータ・バスと、(2)前記第1レベルのキャッシュの第2のスライスを前記第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第2のデータ・バスとを含む、相互接続をさらに備え、
    前記第2レベルのキャッシュが、前記第2レベルのキャッシュ(625)は、少なくとも2ウェイ・セクタ化された2つまたはそれ以上の第2のキャッシュ・スライス(625A,625B)を有し、第2のキャッシュ・スライス(625A,625B)内のセクタは、第1のセクタが、前記第2のキャッシュ・スライス(625A,625B)のうちの1つのキャッシュ・スライスに割り当てられ、前記第1のセクタと連続している第2のセクタが、前記割り当てられたキャッシュ・スライスとは異なる、前記第2のキャッシュ・スライス(625A,625B)のうちの1つに割り当てられる、第2レベルのキャッシュ(625A,625B)と、
    を備える、データ処理システム。
  2. 前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、(1)前記第1レベルのキャッシュの第1のスライスを前記第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第1のデータ・バスと、(2)前記第1レベルのキャッシュの第2のスライスを前記第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第2のデータ・バスとを含む、相互接続をさらに備え、
    前記第1レベルのキャッシュ内の第1のセクタのデータが、前記第2レベルのキャッシュ内の前記第2のキャッシュ・スライスのうちの第1にのみ割り振られ、前記第1レベルのキャッシュ内の第2のセクタのデータが、前記第2レベルのキャッシュ内の前記第2のキャッシュ・スライスのうちの第2にのみ割り振られる、
    請求項1に記載のデータ処理システム。
  3. 前記第1レベルのキャッシュと同様に構成され、前記第2レベルのキャッシュを前記第1レベルのキャッシュと共有する、次の第1レベルのキャッシュをさらに備え、
    前記相互接続が、(1)前記次の第1レベルのキャッシュの第1のスライスを、前記第2のキャッシュ・スライスのうちの第1に通信可能なように接続する、第3のデータ・バスと、(2)前記次の第1レベルのキャッシュの第2のスライスを、前記第2のキャッシュ・スライスのうちの第2に通信可能なように接続する、第4のデータ・バスとを、さらに備え、
    前記第1レベルのキャッシュおよび前記次の第1レベルのキャッシュはどちらも、それぞれの第1のスライスから前記第2のキャッシュ・スライスへ、およびその逆に、データを調達し、第1レベルのキャッシュはどちらも、それぞれの第2のスライスから前記第2のキャッシュ・スライスへ、およびその逆に、データを調達する、
    請求項2に記載のデータ処理システム。
  4. 1つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の1つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第2レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
    前記1つまたは複数のスライス・セレクタ・ビット内に第1の値を有する第1のデータを、前記1つまたは複数のスライス・ビットによって示される前記第2レベルのキャッシュ内の第1のスライスに自動的に割り当てる機能と、
    前記1つまたは複数のスライス・セレクタ・ビット内に第2の値を有する第2のデータを、前記1つまたは複数のスライス・セレクタ・ビットによって示される前記第2レベルのキャッシュ内の第2のスライスに自動的に割り当てる機能と、
    を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第2レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、請求項1から3のいずれか一項に記載のデータ処理システム。
  5. 前記自動的な割り当てが、
    前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
    前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が0ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第1のスライスに前記キャッシュ・ラインを割り当てること、および
    前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が1ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第2のスライスに前記キャッシュ・ラインを割り当てること、
    を含み、
    前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
    請求項4に記載のデータ処理システム。
  6. 前記第2レベルのキャッシュがNウェイ・セクタ化され、Nは2のべき乗であり、
    同じキャッシュ・スライスに2つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記2つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
    請求項4または5に記載のデータ処理システム。
  7. 前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
    前記最後の1つまたは複数のビットが、00Hexおよび80Hexで終わる前記メモリ・アドレスに対応し、00Hexで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第1のスライスにルーティングされ、80Hexで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第2のスライスにルーティングされるように、前記割り当てが完了する、
    請求項4、5、または6に記載のデータ処理システム。
  8. 前記第1レベルのキャッシュが2つのスライスを備える2ウェイ・セクタ化キャッシュであり、前記第2レベルのキャッシュが4つのスライスを備える2ウェイ・セクタ化キャッシュであって、
    前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、前記第1レベルのキャッシュのスライス内の順次セクタが前記第2レベルのキャッシュ内の異なるスライスに割り当てられ、前記第1レベルのキャッシュの前記第1のスライスおよび前記第2のスライスからのセクタが、前記第2レベルのキャッシュ内の異なるスライスに割り振られるように、前記第1レベルのキャッシュの第1のスライス内の各セクタが、前記第2レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
    請求項1から7のいずれか一項に記載のデータ処理システム。
  9. 第1のプロセッサに通信可能なように結合され、アドレス階層に基づいて2つまたはそれ以上のキャッシュ・スライス(120a,120b)に分割された、第1レベルのキャッシュ(420a)と、
    前記第1のプロセッサに通信可能なように結合された、第2レベルのキャッシュ(625)と、
    前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、(1)前記第1レベルのキャッシュの第1のスライスを前記第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第1のデータ・バスと、(2)前記第1レベルのキャッシュの第2のスライスを前記第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第2のデータ・バスとを含む、相互接続をさらに備え、
    前記第2レベルのキャッシュが、前記第2レベルのキャッシュ(625)は、少なくとも2ウェイ・セクタ化された2つまたはそれ以上の第2のキャッシュ・スライス(625A,625B)を有し、第2のキャッシュ・スライス(625A,625B)内のセクタは、第1のセクタが、前記第2のキャッシュ・スライス(625A,625B)のうちの1つのキャッシュ・スライスに割り当てられ、前記第1のセクタと連続している第2のセクタが、前記割り当てられたキャッシュ・スライスとは異なる、前記第2のキャッシュ・スライス(625A,625B)のうちの1つに割り当てられる、第2レベルのキャッシュ(625A,625B)と、
    を備える、メモリ・サブシステム。
  10. 前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、(1)前記第1レベルのキャッシュの第1のスライスを前記第2レベルのキャッシュ内の対応する第1のスライスに通信可能なように接続する、第1のデータ・バスと、(2)前記第1レベルのキャッシュの第2のスライスを前記第2レベルのキャッシュ内の対応する第2のスライスに通信可能なように接続する、第2のデータ・バスとを含む、相互接続をさらに備え、
    前記第1レベルのキャッシュ内の第1のセクタのデータが、前記第2レベルのキャッシュ内の前記第2のキャッシュ・スライスのうちの第1にのみ割り振られ、前記第1レベルのキャッシュ内の第2のセクタのデータが、前記第2レベルのキャッシュ内の前記第2のキャッシュ・スライスのうちの第2にのみ割り振られる、
    請求項9に記載のメモリ・サブシステム。
  11. 前記第1レベルのキャッシュと同様に構成され、前記第2レベルのキャッシュを前記第1レベルのキャッシュと共有する、次の第1レベルのキャッシュをさらに備え、
    前記相互接続が、(1)前記次の第1レベルのキャッシュの第1のスライスを、前記第2のキャッシュ・スライスのうちの第1に通信可能なように接続する、第3のデータ・バスと、(2)前記次の第1レベルのキャッシュの第2のスライスを、前記第2のキャッシュ・スライスのうちの第2に通信可能なように接続する、第4のデータ・バスとを、さらに備え、
    前記第1レベルのキャッシュおよび前記次の第1レベルのキャッシュはどちらも、それぞれの第1のスライスから前記第2のキャッシュ・スライスへ、およびその逆に、データを調達し、第1レベルのキャッシュはどちらも、それぞれの第2のスライスから前記第2のキャッシュ・スライスへ、およびその逆に、データを調達する、
    請求項10に記載のメモリ・サブシステム。
  12. 1つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の1つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第2レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
    前記1つまたは複数のスライス・セレクタ・ビット内に第1の値を有する第1のデータを、前記1つまたは複数のスライス・ビットによって示される前記第2レベルのキャッシュ内の第1のスライスに自動的に割り当てる機能と、
    前記1つまたは複数のスライス・セレクタ・ビット内に第2の値を有する第2のデータを、前記1つまたは複数のスライス・セレクタ・ビットによって示される前記第2レベルのキャッシュ内の第2のスライスに自動的に割り当てる機能と、
    を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第2レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、請求項9から11のいずれか一項に記載のメモリ・サブシステム。
  13. 前記自動的な割り当てが、
    前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
    前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が0ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第1のスライスに前記キャッシュ・ラインを割り当てること、および
    前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が1ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第2のスライスに前記キャッシュ・ラインを割り当てること、
    を含み、
    前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
    請求項12に記載のメモリ・サブシステム。
  14. 前記第2レベルのキャッシュがNウェイ・セクタ化され、Nは2のべき乗であり、
    同じキャッシュ・スライスに2つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記2つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
    請求項12または13に記載のメモリ・サブシステム。
  15. 前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
    前記最後の1つまたは複数のビットが、00Hexおよび80Hexで終わる前記メモリ・アドレスに対応し、00Hexで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第1のスライスにルーティングされ、80Hexで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第2のスライスにルーティングされるように、前記割り当てが完了する、
    請求項12、13、または14に記載のメモリ・サブシステム。
  16. 前記第1レベルのキャッシュが2つのスライスを備える2ウェイ・セクタ化キャッシュであり、前記第2レベルのキャッシュが4つのスライスを備える2ウェイ・セクタ化キャッシュであって、
    前記第1レベルと前記第2レベルのキャッシュ間でのデータ交換を可能にするために、前記第1レベルのキャッシュを前記第2レベルのキャッシュに接続するための相互接続であって、前記第1レベルのキャッシュのスライス内の順次セクタが前記第2レベルのキャッシュ内の異なるスライスに割り当てられ、前記第1レベルのキャッシュの前記第1のスライスおよび前記第2のスライスからのセクタが、前記第2レベルのキャッシュ内の異なるスライスに割り振られるように、前記第1レベルのキャッシュの第1のスライス内の各セクタが、前記第2レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
    請求項9から15のいずれか一項に記載のメモリ・サブシステム。
  17. 1つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の1つまたは複数のスライス・セレクタ・ビットに関して交換することであって、前記スライス・セレクタ・ビットは、対応するデータのラインが第2レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、アドレス階層に基づいて、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換することと、
    前記1つまたは複数のスライス・セレクタ・ビット内に第1の値を有する第1のデータを、前記1つまたは複数のスライス・ビットによって示される前記第2レベルのキャッシュ内の第1のスライスに自動的に割り当てることと、
    前記1つまたは複数のスライス・セレクタ・ビット内に第2の値を有する第2のデータを、前記1つまたは複数のスライス・セレクタ・ビットによって示される前記第2レベルのキャッシュ内の第2のスライスに自動的に割り当てることと、
    を含み、
    異なる順次アドレス指定されたセクタに割り振られたデータが、前記アドレス階層に従って、低レベル・キャッシュ内の異なるスライスに割り当てられる、
    2つまたはそれ以上のスライスを備えるNウェイ・セクタ化低レベル・キャッシュにデータを割り振るための方法。
  18. 前記自動的な割り当てが、
    前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
    前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が0ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第1のスライスに前記キャッシュ・ラインを割り当てること、および
    前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が1ビット値で終わる場合、前記第2レベルのキャッシュ内の前記第2のスライスに前記キャッシュ・ラインを割り当てること、
    を含み、
    前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
    請求項17に記載の方法。
  19. 前記第2レベルのキャッシュがNウェイ・セクタ化され、Nは2のべき乗であり、
    前記割り当てることが、同じキャッシュ・スライスに2つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記2つまたはそれ以上のキャッシュ・スライスにわたって割り振られるように、前記キャッシュ・ラインをセクタに割り当てる、
    請求項17または18に記載の方法。
  20. 前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の1つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
    前記最後の1つまたは複数のビットが、00Hexおよび80Hexで終わるメモリ・アドレスに対応し、前記割り当てることが、
    前記キャッシュ・ライン・アドレスの前記スライス・セレクタ・ビットの値をチェックすること、
    前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が00Hexで終わる場合、前記第1のスライス内に前記キャッシュ・ライン・データを配置すること、および
    前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が80Hexで終わる場合、前記第2のスライス内に前記キャッシュ・ライン・データを配置すること、
    を含む、請求項17、18、または19に記載の方法。
JP2010520524A 2007-08-16 2008-07-29 キャッシュ・セクタを割り振るためのシステムおよび方法(キャッシュ・セクタの割り振り) Expired - Fee Related JP5241838B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/839,663 US8433851B2 (en) 2007-08-16 2007-08-16 Reducing wiring congestion in a cache subsystem utilizing sectored caches with discontiguous addressing
US11/839,663 2007-08-16
PCT/EP2008/059902 WO2009021835A1 (en) 2007-08-16 2008-07-29 Cache sector allocation

Publications (3)

Publication Number Publication Date
JP2010537265A JP2010537265A (ja) 2010-12-02
JP2010537265A5 JP2010537265A5 (ja) 2012-08-09
JP5241838B2 true JP5241838B2 (ja) 2013-07-17

Family

ID=39748508

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010520524A Expired - Fee Related JP5241838B2 (ja) 2007-08-16 2008-07-29 キャッシュ・セクタを割り振るためのシステムおよび方法(キャッシュ・セクタの割り振り)

Country Status (7)

Country Link
US (1) US8433851B2 (ja)
EP (1) EP2179361B1 (ja)
JP (1) JP5241838B2 (ja)
KR (1) KR101190403B1 (ja)
CN (1) CN101784994B (ja)
AT (1) ATE544115T1 (ja)
WO (1) WO2009021835A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7435814B2 (ja) 2020-10-09 2024-02-21 日本電気株式会社 時相論理式生成装置、時相論理式生成方法及びプログラム

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9842005B2 (en) * 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8645404B2 (en) * 2011-10-21 2014-02-04 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
US8954672B2 (en) * 2012-03-12 2015-02-10 Advanced Micro Devices, Inc. System and method for cache organization in row-based memories
KR101858159B1 (ko) 2012-05-08 2018-06-28 삼성전자주식회사 멀티-cpu 시스템과 이를 포함하는 컴퓨팅 시스템
US8862828B2 (en) * 2012-06-28 2014-10-14 Intel Corporation Sub-numa clustering
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US20140337583A1 (en) * 2013-05-07 2014-11-13 Lsi Corporation Intelligent cache window management for storage systems
US10013352B2 (en) * 2014-09-26 2018-07-03 Intel Corporation Partner-aware virtual microsectoring for sectored cache architectures
US9690706B2 (en) 2015-03-25 2017-06-27 Intel Corporation Changing cache ownership in clustered multiprocessor
US9971700B2 (en) * 2015-11-06 2018-05-15 Advanced Micro Devices, Inc. Cache with address space mapping to slice subsets
KR20170056782A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US9832277B2 (en) * 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
CN105550979A (zh) * 2015-12-11 2016-05-04 中国航空工业集团公司西安航空计算技术研究所 一种高数据通量纹理Cache层次结构
US20210191777A1 (en) * 2018-06-21 2021-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Memory Allocation in a Hierarchical Memory System

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5553259A (en) * 1993-07-16 1996-09-03 Unisys Corporation Apparatus and method for synchronizing the simultaneous loading of cache program word addresses in dual slice registers
US6301647B1 (en) * 1997-12-17 2001-10-09 Via-Cyrix, Inc. Real mode translation look-aside buffer and method of operation
US6332179B1 (en) 1999-08-19 2001-12-18 International Business Machines Corporation Allocation for back-to-back misses in a directory based cache
JP3770380B2 (ja) * 2000-09-19 2006-04-26 シャープ株式会社 液晶表示装置
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
ITMI20031640A1 (it) 2003-08-08 2005-02-09 Mipharm S P A Base per gel bioadesivi.
KR100841130B1 (ko) * 2003-10-22 2008-06-24 인텔 코오퍼레이션 상호접속 네트워크를 통한 효율적인 순서화 저장을 위한방법 및 장치
US7490200B2 (en) 2005-02-10 2009-02-10 International Business Machines Corporation L2 cache controller with slice directory and unified cache structure
US7308537B2 (en) * 2005-02-10 2007-12-11 International Business Machines Corporation Half-good mode for large L2 cache array topology with different latency domains
US7353340B2 (en) 2005-08-17 2008-04-01 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7435814B2 (ja) 2020-10-09 2024-02-21 日本電気株式会社 時相論理式生成装置、時相論理式生成方法及びプログラム

Also Published As

Publication number Publication date
US20090049248A1 (en) 2009-02-19
CN101784994A (zh) 2010-07-21
ATE544115T1 (de) 2012-02-15
CN101784994B (zh) 2013-02-13
JP2010537265A (ja) 2010-12-02
KR101190403B1 (ko) 2012-10-12
EP2179361A1 (en) 2010-04-28
WO2009021835A1 (en) 2009-02-19
US8433851B2 (en) 2013-04-30
KR20100040317A (ko) 2010-04-19
EP2179361B1 (en) 2012-02-01

Similar Documents

Publication Publication Date Title
JP5241838B2 (ja) キャッシュ・セクタを割り振るためのシステムおよび方法(キャッシュ・セクタの割り振り)
US11741012B2 (en) Stacked memory device system interconnect directory-based cache coherence methodology
EP3140749B1 (en) In-memory lightweight coherency
US8412907B1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US6877067B2 (en) Shared cache memory replacement control method and apparatus
US8230179B2 (en) Administering non-cacheable memory load instructions
US8572206B2 (en) Transaction processing using multiple protocol engines
US20160253123A1 (en) NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
US7590802B2 (en) Direct deposit using locking cache
US20050044340A1 (en) Remote translation mechanism for a multinode system
US10042762B2 (en) Light-weight cache coherence for data processors with limited data sharing
JP2006134324A5 (ja)
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US20120210070A1 (en) Non-blocking data move design
US6775742B2 (en) Memory device storing data and directory information thereon, and method for providing the directory information and the data in the memory device
US12008248B2 (en) Systems, methods, and devices for utilization aware memory allocation
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120621

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120621

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130402

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

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5241838

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees