(57)【要約】【課題】セクタ対スライスの割り振りの再構成および低位キャッシュ・アドレッシング機構によって、セクタ化およびスライス化された低位キャッシュを伴う、キャッシュ・サブシステム内の、配線の輻輳、必要な表面積、およびアクセス待ち時間を削減するための、方法およびコンピュータ・システムを提供する。【解決手段】  この割り振りにより、不連続アドレスを有するセクタが同じスライス内に配置され、キャッシュ・スライス内でのアドレッシング可能なセクタのこの再割り当てに基づき、２つのレベルの低位キャッシュ間で縮小配線機構が可能である。加えて、セクタおよびスライスの識別に以前に割り振られたアドレス・フィールドが、アドレス・タグ内の互いの位置に対して交換されるように、低位キャッシュ有効アドレス・タグが再構成される。このアドレス・ビットの再割り振りによって、示されたセクタに基づく直接スライス・アドレッシングが可能になる。【選択図】  図１２
2010537265.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記第１のプロセッサに通信可能なように結合され、アドレス階層に基づいて２つまたはそれ以上のキャッシュ・スライスに分割された、第１レベルのキャッシュと、
前記第１のプロセッサに通信可能なように結合された、第２レベルのキャッシュであって、前記第２レベルのキャッシュは、少なくとも２ウェイ・セクタ化された２つまたはそれ以上の第２のキャッシュ・スライスを有し、２つまたはそれ以上の第２のキャッシュ・スライス内のセクタは、第１のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第１に割り当てられ、前記第１のセクタと連続している第２のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第２に割り当てられるように、前記アドレス階層に従って不連続に割り振られる、第２レベルのキャッシュと、
を備える、データ処理システム。
【請求項２】
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、（１）前記第１レベルのキャッシュの第１のスライスを前記第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第１のデータ・バスと、（２）前記第１レベルのキャッシュの第２のスライスを前記第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第２のデータ・バスとを含む、相互接続をさらに備え、
前記第１レベルのキャッシュ内の第１のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第１にのみ割り振られ、前記第１レベルのキャッシュ内の第２のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第２にのみ割り振られる、
請求項１に記載のデータ処理システム。
【請求項３】
前記第１レベルのキャッシュと同様に構成され、前記第２レベルのキャッシュを前記第１レベルのキャッシュと共有する、次の第１レベルのキャッシュをさらに備え、
前記相互接続が、（１）前記次の第１レベルのキャッシュの第１のスライスを、前記第２のキャッシュ・スライスのうちの第１に通信可能なように接続する、第３のデータ・バスと、（２）前記次の第１レベルのキャッシュの第２のスライスを、前記第２のキャッシュ・スライスのうちの第２に通信可能なように接続する、第４のデータ・バスとを、さらに備え、
前記第１レベルのキャッシュおよび前記次の第１レベルのキャッシュはどちらも、それぞれの第１のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達し、第１レベルのキャッシュはどちらも、それぞれの第２のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達する、
請求項２に記載のデータ処理システム。
【請求項４】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てる機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てる機能と、
を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第２レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、前記請求項のいずれか一項に記載のデータ処理システム。
【請求項５】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項４に記載のデータ処理システム。
【請求項６】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
請求項４または５に記載のデータ処理システム。
【請求項７】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わる前記メモリ・アドレスに対応し、００Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第１のスライスにルーティングされ、８０Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第２のスライスにルーティングされるように、前記割り当てが完了する、
請求項４、５、または６に記載のデータ処理システム。
【請求項８】
前記第１レベルのキャッシュが２つのスライスを備える２ウェイ・セクタ化キャッシュであり、前記第２レベルのキャッシュが４つのスライスを備える２ウェイ・セクタ化キャッシュであって、
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、前記第１レベルのキャッシュのスライス内の順次セクタが前記第２レベルのキャッシュ内の異なるスライスに割り当てられ、前記第１レベルのキャッシュの前記第１のスライスおよび前記第２のスライスからのセクタが、前記第２レベルのキャッシュ内の異なるスライスに割り振られるように、前記第１レベルのキャッシュの第１のスライス内の各セクタが、前記第２レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
前記請求項のいずれか一項に記載のデータ処理システム。
【請求項９】
第１のプロセッサに通信可能なように結合され、アドレス階層に基づいて２つまたはそれ以上のキャッシュ・スライスに分割された、第１レベルのキャッシュと、
第１のプロセッサに通信可能なように結合された、第２レベルのキャッシュであって、前記第２レベルのキャッシュは、少なくとも２ウェイ・セクタ化された２つまたはそれ以上の第２のキャッシュ・スライスを有し、２つまたはそれ以上の第２のキャッシュ・スライス内のセクタは、第１のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第１に割り当てられ、前記第１のセクタと連続している第２のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第２に割り当てられるように、前記アドレス階層に従って不連続に割り振られる、第２レベルのキャッシュと、
を備える、メモリ・サブシステム。
【請求項１０】
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、（１）前記第１レベルのキャッシュの第１のスライスを前記第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第１のデータ・バスと、（２）前記第１レベルのキャッシュの第２のスライスを前記第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第２のデータ・バスとを含む、相互接続をさらに備え、
前記第１レベルのキャッシュ内の第１のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第１にのみ割り振られ、前記第１レベルのキャッシュ内の第２のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第２にのみ割り振られる、
請求項９に記載のメモリ・サブシステム。
【請求項１１】
前記第１レベルのキャッシュと同様に構成され、前記第２レベルのキャッシュを前記第１レベルのキャッシュと共有する、次の第１レベルのキャッシュをさらに備え、
前記相互接続が、（１）前記次の第１レベルのキャッシュの第１のスライスを、前記第２のキャッシュ・スライスのうちの第１に通信可能なように接続する、第３のデータ・バスと、（２）前記次の第１レベルのキャッシュの第２のスライスを、前記第２のキャッシュ・スライスのうちの第２に通信可能なように接続する、第４のデータ・バスとを、さらに備え、
前記第１レベルのキャッシュおよび前記次の第１レベルのキャッシュはどちらも、それぞれの第１のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達し、第１レベルのキャッシュはどちらも、それぞれの第２のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達する、
請求項１０に記載のメモリ・サブシステム。
【請求項１２】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てる機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てる機能と、
を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第２レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、請求項９から１１のいずれか一項に記載のメモリ・サブシステム。
【請求項１３】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項１２に記載のメモリ・サブシステム。
【請求項１４】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
請求項１２または１３に記載のメモリ・サブシステム。
【請求項１５】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わる前記メモリ・アドレスに対応し、００Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第１のスライスにルーティングされ、８０Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第２のスライスにルーティングされるように、前記割り当てが完了する、
請求項１２、１３、または１４に記載のメモリ・サブシステム。
【請求項１６】
前記第１レベルのキャッシュが２つのスライスを備える２ウェイ・セクタ化キャッシュであり、前記第２レベルのキャッシュが４つのスライスを備える２ウェイ・セクタ化キャッシュであって、
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、前記第１レベルのキャッシュのスライス内の順次セクタが前記第２レベルのキャッシュ内の異なるスライスに割り当てられ、前記第１レベルのキャッシュの前記第１のスライスおよび前記第２のスライスからのセクタが、前記第２レベルのキャッシュ内の異なるスライスに割り振られるように、前記第１レベルのキャッシュの第１のスライス内の各セクタが、前記第２レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
請求項９から１５のいずれか一項に記載のメモリ・サブシステム。
【請求項１７】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換することであって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、アドレス階層に基づいて、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換することと、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てることと、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てることと、
を含み、
異なる順次アドレス指定されたセクタに割り振られたデータが、前記アドレス階層に従って、低レベル・キャッシュ内の異なるスライスに割り当てられる、
２つまたはそれ以上のスライスを備えるＮウェイ・セクタ化低レベル・キャッシュにデータを割り振るための方法。
【請求項１８】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項１７に記載の方法。
【請求項１９】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
前記割り当てることが、同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られるように、前記キャッシュ・ラインをセクタに割り当てる、
請求項１７または１８に記載の方法。
【請求項２０】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わるメモリ・アドレスに対応し、前記割り当てることが、
前記キャッシュ・ライン・アドレスの前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が００Ｈｅｘで終わる場合、前記第１のスライス内に前記キャッシュ・ライン・データを配置すること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が８０Ｈｅｘで終わる場合、前記第２のスライス内に前記キャッシュ・ライン・データを配置すること、
を含む、請求項１７、１８、または１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理システムに関し、より具体的に言えば、データ処理システム内のキャッシュ・メカニズムに関する。さらにより具体的に言えば、本発明は、マルチセクタ化キャッシュ（multi-sectored cache）のキャッシュ・スライス内でのキャッシュ・セクタの割り振りに関する。
【背景技術】
【０００２】
従来のマルチプロセッサ・データ処理システムは、いくつかの処理ユニット、システム・メモリ、および、処理ユニットとメモリとの間に結合された１つまたは複数レベルのキャッシュ・メモリを備えることができる。キャッシュとは、様々な待ち時間で、データ処理システムのメモリ全体のサブセットを格納するために使用される、一時ストレージ機能である。様々なキャッシュが、処理ユニットに関連してレベルとして定義されたキャッシュ階層内に構成される。様々なレベルのキャッシュ階層で、キャッシュのサイズとアクセス待ち時間との間のトレードオフが実行される。当業者であれば、使用可能な実装技術に従って様々なキャッシュ階層レベルのアクセス待ち時間およびサイズの特徴を最適化し、結果として最適なシステム性能につながる、マルチレベル・キャッシュ階層の観念に精通している。
【０００３】
キャッシュは、通常、所与の階層レベルで、キャッシュ・ディレクトリ・アレイ、キャッシュ・データ・アレイ、ならびに、キャッシュの更新および管理に必要な機能論理ユニットを含む、いくつかのコンポーネントを備える。キャッシュのキャッシュ・データ・アレイ部分は、メイン・メモリの諸部分のコピーを格納するために利用されるデータ・ストレージ要素のセットである。キャッシュ・データ・アレイは、一連のいわゆる「キャッシュ・ブロック」に分割される。これらのキャッシュ・ブロックは、データ処理システム内でメイン・メモリの連続部分のコピーを保持するために使用される、ストレージ領域である。これらのブロックのサイズは、通常、およそ１２８バイトであり、このサイズは２のべき乗である。
【０００４】
以下の説明では、１２８バイトのキャッシュ・ブロック・サイズが想定される。当業者であれば、本発明を、他のキャッシュ・ブロック・サイズのデータ処理システムに適用できるであろう。さらに、キャッシュ・ブロックにコピーされるメモリの諸部分も整合されている。言い換えれば、キャッシュ・ブロックにマッピングされるメモリの連続部分の開始アドレスは、キャッシュ・ブロック・サイズの整数倍である。
【０００５】
通常、キャッシュのデータ・アレイ部分は、キャッシュ・ブロックのＭ×Ｎ行列として編成される。行列の各行は「合同クラス（congruence class）」と呼ばれ、合同クラスの数は通常、２のべき乗である。所与の合同クラス内では、メイン・メモリの連続部分のコピーを保持するためにＮ個のブロックが提供される。連続クラス内にＮ個のブロックを備えたキャッシュは、Ｎウェイ・セット・アソシエィティブ・キャッシュ（N-way set associative cache）と呼ばれる。
【０００６】
メイン・メモリ内の各位置は、キャッシュ内の特定の合同クラス内に常駐するように、キャッシュ・ブロックによってマッピングされる。メイン・メモリ・アドレスの低位ビット（１２８バイト・キャッシュ・ラインの場合７ビット）は、キャッシュ・ライン内のどのバイトがアクセスされており、キャッシュ・ブロックの合同クラスへのマッピングに影響を与えないかを示す。アドレスの次の最上位ｌｏｇ２（Ｍ）ビットは、「合同クラス・アドレス」と呼ばれる。これらのアドレス・ビットは、Ｍ行のキャッシュへのインデック付けに使用される。メモリのキャッシュ・ブロック・サイズ指定および整合済み部分は、アドレス指定合同クラス内のＮブロック（エントリ）のうちのいずれかに常駐することができる。アドレス内の残りの高位ビットは「タグ」と呼ばれ、合同クラス内で割り振り可能なメイン・メモリの異なるブロックを区別するために使用される。
【０００７】
図１を参照すると、６４ビット・アドレスを備えるシステムのためのキャッシュ、および１２８バイト・キャッシュ・ラインの４０９６合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド１０３内の低位７ビット（ビット５７から６３）は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
【０００８】
次の合同クラス・アドレス・フィールド１０２内の１２ビット（ビット４５から５６）は、このメモリ・アドレスがマッピングしているキャッシュ内の合同クラスを示す。このアドレスを含むキャッシュ・ブロックは、アドレス指定された合同クラス内のＮブロックのうちのいずれかに常駐する可能性がある。最後に、フィールド１０１内のアドレスの残りのビット（ビット０から４４）は、メモリ・ブロックの「タグ」と呼ばれる。
【０００９】
メイン・メモリのどの部分がキャッシュ内に存在するかを記録するために、キャッシュは、Ｍ×Ｎエントリ・キャッシュ・ディレクトリ・アレイを含む。このキャッシュ・ディレクトリ・アレイ内の各エントリは、Ｍ×Ｎキャッシュ・データ・アレイ内の１つのエントリに直接対応し、メイン・メモリ内のどの部分がキャッシュ・データ・アレイの対応するエントリにマッピングされるか、および、そのエントリのキャッシュ・ラインの状態を示す。
【００１０】
次に図２を参照すると、キャッシュ・ディレクトリ・エントリの記述が示されている。タグ・フィールド１０４は、キャッシュ内のこのエントリにマッピングされたメイン・メモリのブロックのアドレスのタグ部分からなる。状態フィールド１０５は、このエントリにマッピングされたキャッシュ・ブロックの状態を含む。示された実施形態では、１６までの可能なキャッシュ状態を提供するために４ビットが使用される。これらの状態のうちの１つが、ラインが「無効」であることを示す。無効状態が存在する場合、キャッシュ内のこのエントリはアクティブでないため、このディレクトリ・エントリに関するタグ・フィールド内の値は無視される（メモリの対応する部分が実際にキャッシュ・エントリ内に読み込まれているかどうかに関わらず、タグ・フィールド内には常に何らかの値が存在するため、この認定が必要である）。
【００１１】
特定のアドレスがキャッシュ内に存在するかどうかを決定するために、そのアドレスのタグ部分が、そのアドレスに関連付けられた合同クラス内のＮタグ・エントリ（タグ・フィールド１０４）と比較され、状態フィールド１０５によって無効であるとマークされたエントリは無視される。有効なマッチング・エントリが見つかった場合、ラインはキャッシュ内に存在する。メイン・メモリの一部がキャッシュ・ブロック内にインストールされた場合、そのブロックのディレクトリ・エントリは、非無効状態を示すように更新され、メモリ・ブロック・アドレスのタグ部分がタグ・フィールド１０４内に配置される。ブロックがキャッシュから割り振り解除された場合、状態フィールド１０５は無効に設定され、キャッシュ・データ（コヒーレンシ上の理由で必要な場合）はメイン・メモリまたは他のキャッシュに書き戻すことができる。
【００１２】
次に図３を参照すると、上記説明に従ったキャッシュが示されている。キャッシュ１１０は、キャッシュ・データ・アレイ１２０、キャッシュ・ディレクトリ・アレイ１３０、およびキャッシュ制御論理１２６からなる。キャッシュ・データ・アレイ１２０は、キャッシュ・メンバ１２４からなる合同クラス１２２からなる。キャッシュ・ディレクトリ・アレイ１３０は、前述のようなキャッシュ・データ・アレイ１２０と同様に編成される。
【００１３】
上記では、キャッシュ・ディレクトリ・アレイ、キャッシュ・データ・アレイ、および、キャッシュへの更新を管理するための制御論理セットからなる、単一のキャッシュ構造を使用するメイン・メモリ全体をマッピング可能な、単一のキャッシュ構造について説明した。しかしながら、並列処理を増加させるために、キャッシュはしばしば「スライス化」される。スライス化キャッシュでは、各スライスが、キャッシュ・データ・アレイ、キャッシュ・ディレクトリ・アレイ、および制御論理を含む。通常、Ｓ個のスライスを備えるスライス化キャッシュでは、各スライスがメモリ全体の１／Ｓに対して責務を負う。スライスの数はしばしば２のべき乗であり、以下ではそのように想定される。
【００１４】
次に図４を参照すると、２つのスライス２１２ａおよび２１２ｂからなる、スライス化キャッシュ２１０が示される。スライスごとのキャッシュ・データ・アレイ２２２ａまたは２２２ｂを使用して、所与のキャッシュ・スライスにマッピングされたそれらのメモリ領域が保持される。スライスごとのキャッシュ・ディレクトリ２３０ａまたは２３０ｂを使用して、各キャッシュ・スライス内にマッピングされたメモリの諸部分が追跡される。最後に、スライスごとの制御論理２２６ａおよび２２６ｂが、所与のキャッシュ・スライスに関する未処理のコヒーレンス動作を管理する。複数のキャッシュ・スライスを有することによって、図３と同様のモノリシック（monolithic）キャッシュ構造内で可能なよりも、多くの未処理の動作に対処することができる。
【００１５】
図４に示されたようなスライス化キャッシュを効率的に管理するために、通常、システム・メモリ・スペース全体をキャッシュ・スライスに分配することによって、追加のアドレッシング手段が提供される。具体的に言えば、システム・メモリ・スペース全体の半分が、キャッシュ２１０内の各スライスによってキャッシュされる。次に図５を参照すると、６４ビット・アドレスを備えるシステムのためのキャッシュ２１０、および１２８バイト・キャッシュ・ラインの４０９６合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド２０３内の低位７ビット（ビット５７から６３）は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
【００１６】
次のフィールド、ＳＳフィールド２１４は、スライス・セレクタ・フィールドである。このフィールドは、どのスライスが所与のキャッシュ・ブロック・メモリ・アドレスを割り振るためのものであるかを決定するために使用される。ＳＳフィールドが値「０」を有する場合、キャッシュ・ブロック・メモリ・アドレスはスライス２１２ａに割り振られる。同様に、ＳＳフィールドが値「１」を有する場合、キャッシュ・ブロック・メモリ・アドレスはスライス２１２ｂに割り振られる。ＳＳフィールドに基づくこのマッピングは、キャッシュ・ブロック・アドレスを、スライス２１２ａにマッピングされることになる１６進値「００」で終わらせる効果を有する。２つより多くのスライスを備えるキャッシュの場合、追加のビットがＳＳフィールドに含まれることになり（４スライスの場合、２つのビット）、各スライスにマッピングされた別個のサブセットにシステム・メモリをマッピングすることになる（２のべき乗でないスライスが使用される場合、所与のキャッシュ・ブロック・アドレスをマッピングするスライスを選択するために、通常、いくつかのビット間でハッシュ関数が採用される）。所与のキャッシュ・スライスの場合、合同クラス・アドレス・フィールド２０２およびタグ・フィールド２０１は、前述のような、合同クラス・フィールド１０２およびタグ・フィールド１０１と同じ機能を果たす。
【００１７】
前述のキャッシュ構造では、キャッシュ・データ・アレイ内の各エントリに対して単一のディレクトリ・エントリが使用される。キャッシュ・ディレクトリ・アレイは、回路リソースのかなりの部分を必要とし、可能であれば、このリソース要件を減らすことが有利である。そのため、いわゆる「セクタ化キャッシュ」がしばしば使用される。セクタ・キャッシュでは、メモリの１より大きい連続キャッシュ・ライン・サイズ・ブロックの状態を追跡するために、単一のディレクトリ・エントリが採用される。２セクタ・キャッシュでは、単一のディレクトリ・エントリが、システム・メモリの２つの連続ブロックの状態を追跡することになる。
【００１８】
次に図６を参照すると、２セクタ・キャッシュに関するディレクトリ・エントリの記述が示される。ディレクトリ・エントリは、タグ・フィールド３０４と、ディレクトリ・エントリに関連付けられたキャッシュ・ラインそれぞれのコヒーレンス状態に対応する２つのセクタ状態フィールド３０５ａおよび３０５ｂからなる。
【００１９】
次に図７を参照すると、６４ビット・アドレスを備えるシステムのためのキャッシュ、および、２セクタ化キャッシュを利用する１２８バイト・キャッシュ・ラインの４０９６合同クラスを備えるキャッシュ内で、メイン・メモリの位置をどこにマッピングできるかを決定するために、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかが示される。フィールド３０３内の低位７ビット（ビット５７から６３）は、このアドレスに対応するキャッシュ・ライン内のバイトを示す。このフィールドはキャッシュ・ライン内でバイトをアドレス指定するため、キャッシュ・ブロックがこのキャッシュ内のどこに常駐するかを決定する場合は無視される。
【００２０】
アドレス内の次のビット、Ｔフィールド３０８は、所与のディレクトリ・エントリにマッピングされたセクタ間で選択するために使用される。この低位ビットを利用することによって、システム・メモリの連続するキャッシュ・ブロック領域が所与のディレクトリ・エントリに割り振られる。この場合、１６進アドレス００および８０で終わるアドレスは、所与のディレクトリ・エントリのセクタ内にマッピングされる。
【００２１】
次の合同クラス・アドレス・フィールド３０２内の１２ビット（ビット４４から５５）は、このメモリ・アドレスがマッピングされるキャッシュ内の合同クラスを示す。このアドレスを含むキャッシュ・ブロックは、アドレス指定された合同クラス内のＮ個のキャッシュ・ブロック・ペアのうちのいずれかに常駐することができる。最後に、タグ・フィールド３０１内のアドレスの残りのビット（ビット０から４３）は、メモリ・ブロックの「タグ」と呼ばれ、固有の連続するキャッシュ・ブロック・ペアを識別する。２セクタ・キャッシュ内のディレクトリ・エントリは、単一のキャッシュ・ブロック・エントリの代わりにシステム・メモリの２キャッシュ・ブロック・サイズ領域をマッピングする働きをするため、タグ・フィールド３０１は、図１のタグ・フィールド１０１よりも少ないビットを含む。
【発明の概要】
【発明が解決しようとする課題】
【００２２】
セクタ化キャッシュは、ディレクトリのサイズを縮小する手段を提供するが、キャッシュの効率が犠牲になる。様々なディレクトリ・エントリの両方のセクタが同時に使用されない場合、キャッシュ内に含めることが可能なメモリの有効量が低減される。アクセス・パターンがメイン・メモリ内のあらゆる他のブロックのみに影響を与える異常なケースでは、キャッシュできるメモリの有効量は半分にカットされる。実際には、キャッシュのセクタ化による効率性の損失は、これよりもかなり少ない。これはしばしば、セクタ化されていないキャッシュとおおよそ等価の領域のセクタ化キャッシュがより良く実行することになる（特に、より大きな低レベル・キャッシュの場合）ケースである。
【課題を解決するための手段】
【００２３】
次に言及されるものとする、本発明の様々な態様が、添付の特許請求の範囲に定義されている。
【００２４】
好ましい諸実施形態は、セクタ対スライスの割り振りの再構成および低位キャッシュ・アドレッシング機構によって、セクタ化およびスライス化された低位キャッシュを伴う、キャッシュ・サブシステム内の、配線の輻輳、必要な表面積、およびアクセス待ち時間を削減するための、方法およびコンピュータ・システムを提供する。この割り振りにより、不連続アドレスを有するセクタが同じスライス内に配置され、キャッシュ・スライス内でのアドレッシング可能なセクタのこの再割り当てに基づき、２つのレベルの低位キャッシュ間で縮小配線機構が可能である。加えて、セクタおよびスライスの識別に以前に割り振られたアドレス・フィールドが、アドレス・タグ内の互いの位置に対して交換されるように、低位キャッシュ有効アドレス・タグが再構成される。このアドレス・ビットの再割り振りによって、示されたセクタに基づく直接スライス・アドレッシングが可能になる。
【００２５】
本発明の上記ならびに追加の機能および利点は、以下の詳細な説明で明らかになろう。
【００２６】
本発明自体、ならびにその好ましい使用モードおよび利点は、添付の図面に関する例示的実施形態の以下の詳細な説明を参照することによって、最も良く理解されよう。
【図面の簡単な説明】
【００２７】
【図１】従来技術に従った、キャッシュ有効アドレスの例を示す図である。
【図２】従来技術に従った、キャッシュ・ディレクトリ・エントリの例を示す図である。
【図３】従来技術に従った、キャッシュの内部コンポーネントを示すブロック図である。
【図４】従来技術に従った、２つのスライスに分割されたキャッシュの内部コンポーネントを示すブロック図である。
【図５】図４のキャッシュなどのスライス化キャッシュ内のエントリをアドレス指定するために使用される、キャッシュ有効アドレスを示す従来技術の図である。
【図６】従来技術に従った、２ウェイ・セクタ化キャッシュに関する、キャッシュ・ディレクトリ・エントリの例を示す図である。
【図７】従来技術に従った、２ウェイ・セクタ化キャッシュに関する、キャッシュ有効アドレスの例を示す図である。
【図８】内部に本発明の機能を有利に実装可能な、複数レベル・キャッシュを備えるデータ処理システムを示すブロック図である。
【図９】従来技術に従った、連続するセクタ・アドレッシングを使用する、スライス化された２ウェイ・セクタ化低位レベル・キャッシュをサポートするための、従来のキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。
【図１０】従来技術に従った、図９のキャッシュ・サブシステムによって示されたＬ２対Ｌ３キャッシュ構成に関する、Ｌ２キャッシュ有効アドレスの例を示す図である。
【図１１】従来技術に従った、図９のキャッシュ・サブシステムによって示されたＬ２対Ｌ３キャッシュ構成に関する、Ｌ３キャッシュ有効アドレスの例を示す図である。
【図１２】本発明の一実施形態に従った、不連続のセクタ・アドレッシングを伴う、スライス化された２ウェイ・セクタ化低位レベル・キャッシュをサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。
【図１３】本発明の一実施形態に従った、図１２のキャッシュ・サブシステムによって示されるＬ３キャッシュ構成に関するＬ３キャッシュ有効アドレスの例を示す図である。
【図１４】従来技術に従った、連続するセクタ・アドレッシングを使用する、スライス化された４ウェイ・セクタ化低位レベル・キャッシュをサポートするための、従来のキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。
【図１５】本発明の一実施形態に従った、不連続のセクタ・アドレッシングを伴う、スライス化された４ウェイ・セクタ化低位レベル・キャッシュをサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。
【図１６】本発明の一実施形態に従った、図１５のキャッシュ・サブシステムによって示されるＬ３キャッシュ構成に関するＬ３キャッシュ有効アドレスの例を示す図である。
【図１７】本発明の一実施形態に従った、どちらも不連続のセクタ・アドレッシングを伴う、スライス化された２ウェイ・セクタ化第１低位レベル・キャッシュと、スライス化された４ウェイ・セクタ化第２低位レベル・キャッシュとの間の接続をサポートするための、縮小されたキャッシュ間データ・バス配線構成を備える、キャッシュ・サブシステムを示すブロック図である。
【図１８】本発明の一実施形態に従った、図１７のキャッシュ・サブシステムによって示されたＬ２対Ｌ３キャッシュ構成に関する、Ｌ２キャッシュ有効アドレスの例を示す図である。
【図１９】本発明の一実施形態に従った、図１７のキャッシュ・サブシステムによって示されたＬ２対Ｌ３キャッシュ構成に関する、Ｌ３キャッシュ有効アドレスの例を示す図である。
【発明を実施するための形態】
【００２８】
好ましい実施形態は、セクタ対スライスの割り振りの再構成および低位キャッシュ・アドレッシング機構によって、セクタ化およびスライス化された低位キャッシュを伴う、キャッシュ・サブシステム内の、配線の輻輳、必要な表面積、およびアクセス待ち時間を削減するための、方法およびコンピュータ・システムを提供する。この割り振りにより、不連続アドレスを有するセクタが同じスライス内に配置され、キャッシュ・スライス内でのアドレッシング可能なセクタのこの再割り当てに基づき、２つのレベルの低位キャッシュ間で縮小配線機構が可能である。加えて、セクタおよびスライスの識別に以前に割り振られたアドレス・フィールドが、アドレス・タグ内の互いの位置に対して交換されるように、低位キャッシュ有効アドレス・タグが再構成される。このアドレス・ビットの再割り振りによって、示されたセクタに基づく直接スライス・アドレッシングが可能になる。たとえば、００Ｈｅｘで終わるすべてのアドレスが第１のスライスに送られ、８０Ｈｅｘで終わるすべてのアドレスが第２のスライスに送られる。本明細書で説明および図示された機能は、任意の２レベルのシステムのキャッシュ階層に適用可能である。
【００２９】
図の説明において、同様の要素には、前の図面と同様の名前および参照番号が与えられる。後の図面が、異なるコンテキストにおける、または異なる機能を備える要素を使用する場合、その要素には、図の番号を表す異なる先頭数字が与えられる（たとえば、図４の場合は４ｘｘ、図６の場合は６ｘｘ）。要素に割り当てられる特定の数字は、単に説明を支援するためのみに与えられるものであり、本発明に対するいかなる（構造または機能上の）制限をも示唆することを意図しない。
【００３０】
次に図面を参照、特に図８を参照すると、内部に本発明の機能を有利に実装可能な、複数レベル・キャッシュ階層を有するマルチプロセッサ・データ処理システム（ＤＰＳ）４００の高水準ブロック図が示される。図に示されるように、データ処理システム４００は、いくつかの処理ユニット（チップ）４０１Ａ、４０１Ｂを含み、それぞれがシステム相互接続４４０に結合される。システム相互接続４４０は、１つまたは複数のバスあるいはクロスポイント・スイッチを備えることが可能であり、処理ユニット４０１Ａおよび４０１Ｂ上のコンポーネントと、システム相互接続４４０に結合された他のスヌーパ（snooper）（たとえばメモリ４３０）との間で、トランザクションを通信するためのコンジットとしての役割を果たす。
【００３１】
各処理ユニット４０１Ａ、４０１Ｂは集積回路であり、１つまたは複数のプロセッサを含むことが可能であって、そのうちのＣＰＵ０  ４０５ＡおよびＣＰＵ１  ４０５Ｂが示されている。レジスタ、命令流れ論理、および、プログラム命令を実行するために使用される実行ユニット（いずれも具体的に図示せず）に加えて、プロセッサ・ユニット４０１Ａおよび４０１Ｂは、それぞれ、関連付けられたプロセッサ（ＣＰＵ  ４０５Ａ、４０５Ｂ）によってアクセスされる可能性の高い命令およびデータを一時的に格納する、関連レベル１（Ｌ１）キャッシュ（これも具体的に図示せず）を含む。Ｌ１キャッシュは、命令およびデータの両方（どちらも以下では簡単にデータと呼ぶ）を格納する、統合キャッシュとすることが可能であるか、または別の方法として、Ｌ１キャッシュは、二又に分かれた命令およびデータ・キャッシュとして実装可能である。
【００３２】
図８に示されるように、データ処理システム４００は、相互接続４４０に結合されたシステム・メモリ４３０も含む。メモリ４３０は、メモリ階層内で最低レベルの揮発性データ・ストレージを形成し、レベル２（Ｌ２）キャッシュ４２０Ａ／４２０Ｂおよび共有Ｌ３キャッシュ４２５を含む、１つまたは複数の低レベルのキャッシュ・メモリを含む。制御バス４２１Ａ／４２１Ｂは、Ｌ２キャッシュ４２０Ａ／４２０Ｂと共有Ｌ３キャッシュ４２５との間でコマンドおよびデータを通信する働きをする。Ｌ２キャッシュ４２０Ａ／４２０Ｂおよび共有Ｌ３キャッシュ４２５は、システム・メモリ４３０からプロセッサ（４０５Ａ／４０５Ｂ）へデータをステージングするために使用される。本発明の機能は、任意の２レベルのキャッシュ階層に適用可能であるが、本明細書の他の説明は、相互接続４２１Ａ／４２１Ｂによって実装された、Ｌ２キャッシュ４２０Ａ／４２０Ｂと共有Ｌ３キャッシュ４２５との間の、データ伝送および関連付けられた配線およびアドレッシングを参照することになる。
【００３３】
さらに当業者であれば、データ処理システム４００が、追加の相互接続へのブリッジ、Ｉ／Ｏデバイス、不揮発性ストレージ、および、ネットワークまたは接続デバイスへの接続のためのポートなどの、多くの追加コンポーネントを含むことができることを理解されよう。こうした追加のコンポーネントは本発明を理解するために必要でないため、図８に示されないか、または本明細書ではこれ以上考察しない。
【００３４】
次に図９を参照すると、従来技術のキャッシュ階層の実装が示されている。参照される実施形態では、ＣＰＵの４０５Ａおよび４０５ＢはそれぞれＬ２キャッシュ４２０Ａおよび４２０Ｂに接続される。Ｌ２キャッシュ４２０Ａおよび４２０Ｂはそれぞれ、１２８バイトのキャッシュ・ライン・サイズを備えた２スライスの非セクタ化キャッシュである。Ｌ２キャッシュ４２０Ａ／４２０Ｂの第１のスライス（１２０Ａ）は、１６進数「００」で終わる開始アドレスによって、メモリのそれらのキャッシュ・ライン・サイズ・ブロックをマッピングするために使用される（たとえば、キャッシュ・ライン・アドレスのビット５６を備える、それらの１２８バイト・キャッシュ・ライン・ブロックは「０」に等しい）。同様に、Ｌ２キャッシュ４２０Ａ／４２０Ｂの第２のスライス（１２０Ｂ）は、１６進数「８０」で終わる開始アドレスによって、メモリのそれらのキャッシュ・ライン・サイズ・ブロックをマッピングするために使用される（たとえば、ビット５６は「１」に等しい）。このようにして、図４および図５に関して前述されたように、マルチプロセッサ・データ処理システムのメイン・メモリは、Ｌ２キャッシュ４２０Ａ／４２０Ｂの２つのスライスにわたって分配される。
【００３５】
同様に、Ｌ３キャッシュ５２５は２スライス・キャッシュ（スライス５２５Ａおよび５２５Ｂ）であるが、キャッシュ・スライスは、さらに２ウェイにセクタ化される。一般にセクタ化キャッシュは、より大きな低位レベルのキャッシュ階層に使用される。より大きなキャッシュは、セクタ化キャッシュとして構造化されることによって、より大きな相応のシリコン領域の節約をもたらす。従来技術の構成では、図６および図７に従って前述されたように、キャッシュ・エントリ内の異なるセクタに割り当てられたメモリのキャッシュ・ブロック・サイズ領域が、メモリ内の連続ブロックにマッピングされる。したがって、示された実施形態では、１６進数「００」および「８０」で終わる開始キャッシュ・ブロック・アドレスは、スライス５２５Ａ内のエントリにマッピングされる。同様に、「１００」および「１８０」で終わる開始キャッシュ・ブロック・アドレスは、キャッシュ・スライス５２５Ｂ内のエントリにマッピングされる。
【００３６】
図１０に示される構成では、相互接続４２１Ａおよび４２１Ｂ内のバス５２１によって、各Ｌ２キャッシュ・スライスが各Ｌ３キャッシュ・スライスに接続されなければならない。これは、キャッシュ・ライン・アドレスのアドレス・ビット５５がそれぞれ、「０」（アドレスが「０００」で終わる）または「１」（アドレスが「１００」で終わる）の場合、１６進数「００」で終わるキャッシュ・ラインが、Ｌ３スライス５２５ＡまたはＬ３スライス５２５Ｂのいずれかで見られるという事実によるものである。こうした構成は、複雑で実現困難な接続セットにつながる（バスあるいは配線またはその両方５２１）。
【００３７】
次に図１０および図１１を参照すると、図９のＬ２キャッシュおよびＬ３キャッシュの両方によって、メイン・メモリ・アドレスを構成するビットがどのように解釈されるかの記述が示される。アドレス・マッピング５８４は、Ｌ２キャッシュ４２０Ａ／４２０Ｂによって使用されるアドレス・マッピングを示す。このマッピングでは、ビット５６（フィールド５８３）がキャッシュ・スライス１２０Ａ／１２０Ｂ間で選択するために使用される。アドレス・マッピング５８５は、Ｌ３キャッシュ５２５によって使用されるアドレス・マッピングを示す。従来技術の実装を維持している場合、ビット５６（フィールド５８０）は、所与のキャッシュ・エントリ内のアドレス間で選択するために使用される。この割り当ては、所与のキャッシュ・エントリ内のセクタに関連付けられたメモリ領域の隣接を維持する。ビット５５（フィールド５８１）は、その後、キャッシュ・スライス間で選択するために使用される。
【００３８】
次に図１２を参照すると、Ｌ２キャッシュとＬ３キャッシュとの間の配線輻輳を削減するために、本発明によって使用される代替アドレッシング機構が示される。好ましい実施形態のメカニズムでは、Ｌ３キャッシュ・スライス内のセクタは不連続アドレスに割り当てられる。具体的に言えば、Ｌ３スライス６２５Ａには、１６進アドレス「００」および「１００」で終わるアドレスが割り当てられる。同様に、Ｌ３スライス６２５Ｂには、１６進アドレス「８０」および「１８０」で終わるアドレスが割り当てられる。このようにして、Ｌ２キャッシュ・スライス（１２０Ａまたは１２０Ｂ）は、従来技術の実装における２つのスライスとは反対に、１つのＬ３スライスと通信するだけでよい。たとえば、Ｌ２キャッシュ・スライス１２０Ａに関連付けられたアドレスがＬ３キャッシュ・スライス６２５Ａ内に存在するのみでよい。「００」１６進数で終わるアドレスは、「０００」または「１００」のいずれかで終わらなければならない。同様の理由付けにより、Ｌ２キャッシュ・スライス１２０ＢはＬ３キャッシュ・スライス６２５Ｂにのみ接続されることが可能である。このアドレッシング機構により、相互接続４２１Ａおよび４２１Ｂを実装するために必要なバスあるいは配線６２１の数が低減される。
【００３９】
次に図１３を参照すると、メイン・メモリ・アドレスを構成するビットが図１２のＬ３キャッシュによってどのように解釈されるかの記述が示される（Ｌ２キャッシュ・マッピングは図１０で使用されるものと同一である）。アドレス・マッピング６９０は、Ｌ３キャッシュ６２５によって使用されるアドレス・マッピングを示す。このマッピングでは、ビット５６（フィールド５９２）は、Ｌ３キャッシュ６２５内でスライスを選択するために使用される。ビット５６をスライスの選択に割り振ることによって、所与のキャッシュ・スライス内で不連続キャッシュ・ラインが割り当てられる。その後、セクタ化キャッシュ・ライン・エントリ内の所与のエントリにどのアドレスがマッピングされるかを制御するために、ビット５５（フィールド５９１）が使用される。このキャッシュ・アドレッシング機構により、Ｌ２キャッシュ４２０Ａ／４２０ＢとＬ３キャッシュ６２５との間の相互接続が大幅に簡略化できる。
【００４０】
図１２および図１３に示された技法は、より多数のセクタを備える低レベル・キャッシュを取り扱うために拡張可能である。次に図１４を参照すると、２スライスの、４ウェイ・セクタ化Ｌ３キャッシュ７２５を備えたデータ処理システム７１５が示される。データ処理システム７１５は、図９で必要とされたものと同じ「任意のキャッシュ・スライス」と「任意のキャッシュ・スライス」との相互接続（バスあるいは配線またはその両方５２１）を含む。次に図１５を参照すると、Ｌ３キャッシュ７２５が、本発明の教示に従って構成され、不連続アドレスをＬ３キャッシュ・スライス７２５Ａおよび７２５Ｂに割り当てる、改良されたデータ処理システムが示される。具体的に言えば、Ｌ３キャッシュ・スライス７２５Ａは、ゼロ（０）の値に等しいビット５６を備える昇順アドレスを使用するキャッシュ・ラインを含み、Ｌ３キャッシュ・スライス７２５Ｂは、１の値に等しいビット５６を備える昇順アドレスを使用するキャッシュ・ラインを含む。このようにアドレスを割り当てることにより、キャッシュの配線輻輳を低減させることができる。
【００４１】
次に図１６を参照すると、メイン・メモリ・アドレスを構成するビットが図１５のＬ３キャッシュによってどのように解釈されるかの記述が示される（Ｌ２キャッシュ・マッピングは図１０で使用されるものと同一である）。アドレス・マッピング７９０は、Ｌ３キャッシュ７２５によって使用されるアドレス・マッピングを示す。このマッピングでは、ビット５６（フィールド７９２）は、Ｌ３キャッシュ７２５内でスライスを選択するために使用される。ビット５６をスライスの選択に割り振ることによって、所与のキャッシュ・スライス内で不連続キャッシュ・ラインが割り当てられる。その後、セクタ化キャッシュ・ライン・エントリ内の所与のエントリにどのアドレスがマッピングされるかを制御するために、ビット５４および５５（フィールド７９１）が使用される。このキャッシュ・アドレッシング機構により、Ｌ２キャッシュ７２０Ａ／７２０ＢとＬ３キャッシュ７２５との間の相互接続（バスならびに配線またはその両方７２１）が大幅に簡略化できる。
【００４２】
本発明の教示は、高レベルおよび低レベルの両方のキャッシュがセクタ化およびスライス化された場合に、配線輻輳を低減させるために適用することもできる。たとえば、図１７のキャッシュ配置構成は、Ｌ２キャッシュ８２０Ａ／８２０Ｂが２ウェイ・セクタ化および２ウェイ・スライス化され、Ｌ３キャッシュ８２５が４ウェイ・スライス化（スライス８２５Ａ、８２５Ｂ、８２６Ａ、８２６Ｂ）および２ウェイ・セクタ化された、キャッシュ階層８１５に適用された本発明の教示を示す。この構造では、各Ｌ２キャッシュ・スライス８２１Ａ／８２１Ｂが、４つのＬ３キャッシュ・スライス（スライス８２５Ａ、８２５Ｂ、８２６Ａ、８２６Ｂ）のすべてではなく、Ｌ３キャッシュ・スライスのうちの２つのみに接続していなければならない。
【００４３】
図１８および図１９は、図１７のキャッシュ構成に関するＬ２およびＬ３アドレス・マッピングを示す。Ｌ２キャッシュ・マッピング８８４は、スライス・セレクタとしてビット５６（フィールド８８３）を使用し、所与のセクタ化キャッシュ・エントリ内のセクタ・アドレスを決定するためにビット５５（フィールド８８２）を使用する。同様に、Ｌ３アドレス・マッピング８８５は、スライス・セレクタとしてビット５５および５６（フィールド８９２）を使用し、所与のセクタ化キャッシュ・エントリ内のセクタ・アドレスを決定するためにビット５３および５４（フィールド８９１）を使用する。
【００４４】
本発明は、前述の実施形態を使用して、少なくとも１つのプロセッサと、第１のプロセッサに通信可能に結合され、２つまたはそれ以上のキャッシュ・スライスを有する、第１レベルのキャッシュ、および、第１レベルのキャッシュに通信可能に接続された第２レベルのキャッシュを含み、第２レベルのキャッシュが、少なくとも２ウェイ・セクタ化された２つまたはそれ以上の第２のキャッシュ・スライスを有する、改良されたメモリ・サブシステムとを有する、データ処理システムを提供する。２つまたはそれ以上の第２のキャッシュ・スライス内のセクタ・アドレスは、第１のセクタが、２つまたはそれ以上の第２のキャッシュ・スライスのうちの第１に割り当てられ、第１のセクタと連続している第２のセクタが、２つまたはそれ以上の第２のキャッシュ・スライスのうちの第２に割り当てられるように、不連続に割り振られる。
【００４５】
相互接続は、第１レベルのキャッシュを第２レベルのキャッシュに接続し、第１レベルと第２レベルのキャッシュ間でのデータ交換を可能にする。相互接続は、（１）第１レベルのキャッシュの第１のスライスを第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第１のデータ・バスと、（２）第１レベルのキャッシュの第２のスライスを第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第２のデータ・バスとを含む。
【００４６】
一実施形態では、データ処理システムあるいは改良されたメモリ・サブシステムまたはその両方が、第１レベルのキャッシュと同様に構成され、第２レベルのキャッシュを第１レベルのキャッシュと共有する、次の第１レベルのキャッシュを含む。この次の第１レベルのキャッシュを伴い、相互接続は、（１）次の第１レベルのキャッシュの第１のスライスを、第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第３のデータ・バスと、（２）次の第１レベルのキャッシュの第２のスライスを、第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第４のデータ・バスとを、さらに備える。第１レベルのキャッシュおよび次の第１レベルのキャッシュは、どちらも、それぞれの第１のスライスから第２レベルのキャッシュ内の対応する第１のスライスへ、およびその逆に、データを調達（source）し、第１レベルのキャッシュはどちらも、それぞれの第２のスライスから第２レベルのキャッシュ内の対応する第２のスライスへ、およびその逆に、データを調達する。
【００４７】
この新しい割り振り方式をサポートするために、データ処理システムあるいは改良されたメモリ・サブシステムまたはその両方は、（１）１つまたは複数のセクタ・ビットの割り振りを、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットと交換する機能であって、スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、セクタ・ビットは、キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、（２）１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、１つまたは複数のスライス・ビットによって示される第２レベルのキャッシュ内の第１のスライスに自動的に割り当てる機能と、（３）１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、１つまたは複数のスライス・セレクタ・ビットによって示される第２レベルのキャッシュ内の第２のスライスに自動的に割り当てる機能と、を完了する、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第２レベルのキャッシュ・アドレッシング・プロトコルを含む。
【００４８】
一実施形態では、自動的な割り当ては、キャッシュ・ライン・アドレス内のスライス・セレクタ・ビットの値をチェックすること、および、キャッシュ・ライン・アドレスのアドレス部分が０ビット値で終わる場合、第２レベルのキャッシュ内の第１のスライスにキャッシュ・ラインを割り当てることを含む。また、キャッシュ・ライン・アドレスのアドレス部分が１ビット値で終わる場合、第２レベルのキャッシュ内の第２のスライスにキャッシュ・ラインを割り当てることを含む。これらの機能では、キャッシュ・ライン・アドレスのアドレス部分の終了ビットは、スライス・セレクタ・ビットに対応する。
【００４９】
セクタ化キャッシュ・エントリ内のセクタに不連続アドレスを割り当てることによって、本発明は、キャッシュ間の配線および輻輳の削減を達成する。セクタ・エントリを昇順の連続アドレスでメモリのキャッシュ・ブロック・サイズ領域に割り振った従来技術の機構とは対照的に、この不連続アドレスでのセクタの割り当ては、所与のレベルの階層で所与のキャッシュ・スライスをできる限り少ない他のスライスに接続することを可能にする。
【００５０】
スライスごとにセクタを割り振る前述の方法は、物理デバイス上でのキャッシュ間配線の縮小を可能にするため、Ｌ３キャッシュのサイズを増加させ、待ち時間を削減しながらも、チップの内外で使用する表面積を小さくすることが可能である。したがって本発明は、キャッシュ技術においてかなり望ましい発達をもたらす。
【００５１】
以上、本発明について、好ましい実施形態を参照しながら具体的に図示および説明してきたが、当業者であれば、本発明の趣旨および範囲を逸脱することなく、その形および細部における様々な変更が実行可能であることを理解されよう。
【００５２】
不確実さを避けるために、本明細書の説明および特許請求の範囲全体で使用される「備える」という用語は、「のみからなる」という意味として解釈されるものではない。
【図１】
2010537265.tif 000003
【図２】
2010537265.tif 000004
【図３】
2010537265.tif 000005
【図４】
2010537265.tif 000006
【図５】
2010537265.tif 000007
【図６】
2010537265.tif 000008
【図７】
2010537265.tif 000009
【図８】
2010537265.tif 000010
【図９】
2010537265.tif 000011
【図１０】
2010537265.tif 000012
【図１１】
2010537265.tif 000013
【図１２】
2010537265.tif 000014
【図１３】
2010537265.tif 000015
【図１４】
2010537265.tif 000016
【図１５】
2010537265.tif 000017
【図１６】
2010537265.tif 000018
【図１７】
2010537265.tif 000019
【図１８】
2010537265.tif 000020
【図１９】
2010537265.tif 000021
【手続補正書】
【提出日】平成22年5月27日(2010.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
第１のプロセッサに通信可能なように結合され、アドレス階層に基づいて２つまたはそれ以上のキャッシュ・スライスに分割された、第１レベルのキャッシュと、
前記第１のプロセッサに通信可能なように結合された、第２レベルのキャッシュであって、前記第２レベルのキャッシュは、少なくとも２ウェイ・セクタ化された２つまたはそれ以上の第２のキャッシュ・スライスを有し、２つまたはそれ以上の第２のキャッシュ・スライス内のセクタは、第１のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第１に割り当てられ、前記第１のセクタと連続している第２のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第２に割り当てられるように、前記アドレス階層に従って不連続に割り振られる、第２レベルのキャッシュと、
を備える、データ処理システム。
【請求項２】
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、（１）前記第１レベルのキャッシュの第１のスライスを前記第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第１のデータ・バスと、（２）前記第１レベルのキャッシュの第２のスライスを前記第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第２のデータ・バスとを含む、相互接続をさらに備え、
前記第１レベルのキャッシュ内の第１のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第１にのみ割り振られ、前記第１レベルのキャッシュ内の第２のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第２にのみ割り振られる、
請求項１に記載のデータ処理システム。
【請求項３】
前記第１レベルのキャッシュと同様に構成され、前記第２レベルのキャッシュを前記第１レベルのキャッシュと共有する、次の第１レベルのキャッシュをさらに備え、
前記相互接続が、（１）前記次の第１レベルのキャッシュの第１のスライスを、前記第２のキャッシュ・スライスのうちの第１に通信可能なように接続する、第３のデータ・バスと、（２）前記次の第１レベルのキャッシュの第２のスライスを、前記第２のキャッシュ・スライスのうちの第２に通信可能なように接続する、第４のデータ・バスとを、さらに備え、
前記第１レベルのキャッシュおよび前記次の第１レベルのキャッシュはどちらも、それぞれの第１のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達し、第１レベルのキャッシュはどちらも、それぞれの第２のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達する、
請求項２に記載のデータ処理システム。
【請求項４】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てる機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てる機能と、
を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第２レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、前記請求項のいずれか一項に記載のデータ処理システム。
【請求項５】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項４に記載のデータ処理システム。
【請求項６】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
請求項４または５に記載のデータ処理システム。
【請求項７】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わる前記メモリ・アドレスに対応し、００Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第１のスライスにルーティングされ、８０Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第２のスライスにルーティングされるように、前記割り当てが完了する、
請求項４、５、または６に記載のデータ処理システム。
【請求項８】
前記第１レベルのキャッシュが２つのスライスを備える２ウェイ・セクタ化キャッシュであり、前記第２レベルのキャッシュが４つのスライスを備える２ウェイ・セクタ化キャッシュであって、
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、前記第１レベルのキャッシュのスライス内の順次セクタが前記第２レベルのキャッシュ内の異なるスライスに割り当てられ、前記第１レベルのキャッシュの前記第１のスライスおよび前記第２のスライスからのセクタが、前記第２レベルのキャッシュ内の異なるスライスに割り振られるように、前記第１レベルのキャッシュの第１のスライス内の各セクタが、前記第２レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
前記請求項のいずれか一項に記載のデータ処理システム。
【請求項９】
第１のプロセッサに通信可能なように結合され、アドレス階層に基づいて２つまたはそれ以上のキャッシュ・スライスに分割された、第１レベルのキャッシュと、
前記第１のプロセッサに通信可能なように結合された、第２レベルのキャッシュであって、前記第２レベルのキャッシュは、少なくとも２ウェイ・セクタ化された２つまたはそれ以上の第２のキャッシュ・スライスを有し、２つまたはそれ以上の第２のキャッシュ・スライス内のセクタは、第１のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第１に割り当てられ、前記第１のセクタと連続している第２のセクタが、前記２つまたはそれ以上の第２のキャッシュ・スライスのうちの第２に割り当てられるように、前記アドレス階層に従って不連続に割り振られる、第２レベルのキャッシュと、
を備える、メモリ・サブシステム。
【請求項１０】
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、（１）前記第１レベルのキャッシュの第１のスライスを前記第２レベルのキャッシュ内の対応する第１のスライスに通信可能なように接続する、第１のデータ・バスと、（２）前記第１レベルのキャッシュの第２のスライスを前記第２レベルのキャッシュ内の対応する第２のスライスに通信可能なように接続する、第２のデータ・バスとを含む、相互接続をさらに備え、
前記第１レベルのキャッシュ内の第１のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第１にのみ割り振られ、前記第１レベルのキャッシュ内の第２のセクタのデータが、前記第２レベルのキャッシュ内の前記第２のキャッシュ・スライスのうちの第２にのみ割り振られる、
請求項９に記載のメモリ・サブシステム。
【請求項１１】
前記第１レベルのキャッシュと同様に構成され、前記第２レベルのキャッシュを前記第１レベルのキャッシュと共有する、次の第１レベルのキャッシュをさらに備え、
前記相互接続が、（１）前記次の第１レベルのキャッシュの第１のスライスを、前記第２のキャッシュ・スライスのうちの第１に通信可能なように接続する、第３のデータ・バスと、（２）前記次の第１レベルのキャッシュの第２のスライスを、前記第２のキャッシュ・スライスのうちの第２に通信可能なように接続する、第４のデータ・バスとを、さらに備え、
前記第１レベルのキャッシュおよび前記次の第１レベルのキャッシュはどちらも、それぞれの第１のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達し、第１レベルのキャッシュはどちらも、それぞれの第２のスライスから前記第２のキャッシュ・スライスへ、およびその逆に、データを調達する、
請求項１０に記載のメモリ・サブシステム。
【請求項１２】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換する機能であって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換する機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てる機能と、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てる機能と、
を、完了するための、キャッシュ・ライン・アドレス・ビット割り当て論理を備える、第２レベルのキャッシュ・アドレッシング・プロトコルをさらに備える、請求項９から１１のいずれか一項に記載のメモリ・サブシステム。
【請求項１３】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項１２に記載のメモリ・サブシステム。
【請求項１４】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られる、
請求項１２または１３に記載のメモリ・サブシステム。
【請求項１５】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わる前記メモリ・アドレスに対応し、００Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第１のスライスにルーティングされ、８０Ｈｅｘで終わる前記メモリ・アドレス部分を備えるキャッシュ・ラインが前記第２のスライスにルーティングされるように、前記割り当てが完了する、
請求項１２、１３、または１４に記載のメモリ・サブシステム。
【請求項１６】
前記第１レベルのキャッシュが２つのスライスを備える２ウェイ・セクタ化キャッシュであり、前記第２レベルのキャッシュが４つのスライスを備える２ウェイ・セクタ化キャッシュであって、
前記第１レベルと前記第２レベルのキャッシュ間でのデータ交換を可能にするために、前記第１レベルのキャッシュを前記第２レベルのキャッシュに接続するための相互接続であって、前記第１レベルのキャッシュのスライス内の順次セクタが前記第２レベルのキャッシュ内の異なるスライスに割り当てられ、前記第１レベルのキャッシュの前記第１のスライスおよび前記第２のスライスからのセクタが、前記第２レベルのキャッシュ内の異なるスライスに割り振られるように、前記第１レベルのキャッシュの第１のスライス内の各セクタが、前記第２レベルのキャッシュ内の異なるセクタおよび異なるスライスに割り振られる、相互接続をさらに備える、
請求項９から１５のいずれか一項に記載のメモリ・サブシステム。
【請求項１７】
１つまたは複数のセクタ・ビットの位置を、キャッシュ・ラインに関するアドレス・タグ内の１つまたは複数のスライス・セレクタ・ビットに関して交換することであって、前記スライス・セレクタ・ビットは、対応するデータのラインが第２レベルのキャッシュ内で割り当てられることになるスライスを示すために使用され、前記セクタ・ビットは、アドレス階層に基づいて、前記キャッシュ・ライン・データが割り振られる特定のセクタを示す、交換することと、
前記１つまたは複数のスライス・セレクタ・ビット内に第１の値を有する第１のデータを、前記１つまたは複数のスライス・ビットによって示される前記第２レベルのキャッシュ内の第１のスライスに自動的に割り当てることと、
前記１つまたは複数のスライス・セレクタ・ビット内に第２の値を有する第２のデータを、前記１つまたは複数のスライス・セレクタ・ビットによって示される前記第２レベルのキャッシュ内の第２のスライスに自動的に割り当てることと、
を含み、
異なる順次アドレス指定されたセクタに割り振られたデータが、前記アドレス階層に従って、低レベル・キャッシュ内の異なるスライスに割り当てられる、
２つまたはそれ以上のスライスを備えるＮウェイ・セクタ化低レベル・キャッシュにデータを割り振るための方法。
【請求項１８】
前記自動的な割り当てが、
前記キャッシュ・ライン・アドレス内の前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスのメモリ・アドレス部分が０ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第１のスライスに前記キャッシュ・ラインを割り当てること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が１ビット値で終わる場合、前記第２レベルのキャッシュ内の前記第２のスライスに前記キャッシュ・ラインを割り当てること、
を含み、
前記キャッシュ・ラインの前記メモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応する、
請求項１７に記載の方法。
【請求項１９】
前記第２レベルのキャッシュがＮウェイ・セクタ化され、Ｎは２のべき乗であり、
前記割り当てることが、同じキャッシュ・スライスに２つの連続するセクタが割り振られないように、連続するセクタの各ペアが、前記２つまたはそれ以上のキャッシュ・スライスにわたって割り振られるように、前記キャッシュ・ラインをセクタに割り当てる、
請求項１７または１８に記載の方法。
【請求項２０】
前記キャッシュ・ラインのメモリ・アドレス部分を表すために、キャッシュ・ライン・アドレス内の複数のビットが使用され、前記複数のビットのうちの最後の１つまたは複数のビットが、前記スライス・セレクタ・ビットに対応し、
前記最後の１つまたは複数のビットが、００Ｈｅｘおよび８０Ｈｅｘで終わるメモリ・アドレスに対応し、前記割り当てることが、
前記キャッシュ・ライン・アドレスの前記スライス・セレクタ・ビットの値をチェックすること、
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が００Ｈｅｘで終わる場合、前記第１のスライス内に前記キャッシュ・ライン・データを配置すること、および
前記キャッシュ・ライン・アドレスの前記メモリ・アドレス部分が８０Ｈｅｘで終わる場合、前記第２のスライス内に前記キャッシュ・ライン・データを配置すること、
を含む、請求項１７、１８、または１９に記載の方法。
【国際調査報告】
2010537265.tif 000022
2010537265.tif 000023
2010537265.tif 000024