(57)【特許請求の範囲】
【請求項１】
連続した論理アドレス空間を使用してメモリが複数のセルに分散したメモリシステムにインタリーブ方式でアクセスする方法であって、
複数のエントリを含む少なくとも１つのマップテーブルを設けるステップであって、前記エントリはそれぞれ複数のエントリ項目を含み、該エントリ項目はそれぞれ前記複数のセルに分散したメモリの１つを識別し、少なくとも一つのエントリは、複数の前記セルのメモリをエントリ項目として含む、マップテーブルを設けるステップと、
複数のアドレスビットを含む第１の論理アドレスを受信するステップであって、前記複数のアドレスビットは、前記少なくとも１つのマップテーブルにおけるエントリの第１の組を特定する第１の組のアドレスビットを含み、前記エントリの第１の組における各エントリは、同一の組の他のエントリのエントリ項目とは異なるエントリ項目を含むステップと、
前記複数のアドレスビットは前記第１の組のアドレスビットで特定された前記エントリの前記第１の組の中の第１のエントリを識別する第２の組のアドレスビットを含んでおり、前記第１および第２の組のアドレスビットにより、前記エントリの前記第１の組の中の第１のエントリを識別するステップと、
前記複数のアドレスビットは前記第１および第２の組のアドレスビットにより識別されたエントリの中の第１のエントリ項目を識別する第３の組のアドレスビットを含み、該第３の組のアドレスビットに基づいて、前記第１のエントリにおける第１のエントリ項目を識別するステップと、
前記第１のエントリ項目によって識別された前記メモリにアクセスするステップと、
を含む方法。
【請求項２】
メモリが複数のセルに分散したメモリシステムへのインタリーブ方式のアクセスを提供するシステムであって、
複数のエントリを含む少なくとも１つのマップテーブルであって、前記エントリは複数のエントリ項目を含み、該エントリ項目はそれぞれ前記複数のセルに分散したメモリの１つを識別し、少なくとも一つのエントリは、複数の前記セルのメモリをエントリ項目として含む、マップテーブルと、
第１の論理アドレスを受信するコントローラであって、前記第１の論理アドレスは複数のアドレスビットを含み、該複数のアドレスビットは前記少なくとも１つのマップテーブルにおけるエントリの第１の組を特定する第１の組のアドレスビットを含み、前記第１の組の全てのエントリは、同一の組の他のエントリエントリ項目とは異なる複数のエントリ項目を含む、コントローラと、を有し、
前記複数のアドレスビットは前記第１の組のアドレスビットで特定された前記エントリの前記第１の組の中の第１のエントリを識別する第２の組のアドレスビットを含み、前記コントローラは、前記第１および第２の組のアドレスビットにより、前記エントリの前記第１の組の中の第１のエントリを識別し、前記複数のアドレスビットに含まれる第３の組のアドレスビットに基づいて、前記第１のエントリにおける第１のエントリ項目を識別するよう構成されている、システム。
【請求項３】
前記コントローラは、前記第１のエントリ項目で識別されたメモリをアクセスするよう構成されている、請求項２に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は概して、コンピュータシステムのセルマップに関する。本発明は特に、ウェイ数のより大きなインタリーブを行うためにエントリグループ化を利用するセルマップを用いてメモリをインタリーブするシステムおよび方法に関する。
【０００２】
【従来の技術】
歴史的に見て、主メモリは物理的に中央バス上に配置されてきた。この種のシステム内では、完全な物理アドレスからなるメモリ要求がメモリサブシステムに転送され、データが戻される。分散メモリシステムでは、主メモリは多くの異なるセルにわたって物理的に分散される。セルはいくつかのプロセッサ、入出力（Ｉ／Ｏ）装置、セルコントローラ、およびメモリからなり得る。
【０００３】
分散システムでは、メモリをインタリーブしてもしなくてもよい。従来技術によるメモリをインタリーブするシステムおよび方法は、たとえば下に示す特許文献１の、Williams他に１９９６年６月２５日付けで発行された「METHODS AND APPARATUS FOR INTERLEAVING MEMORY TRANSACTIONS INTO AN ARBITRARY NUMBER OF BANKS」、および特許文献２のBrockmann他に１９９４年３月８日付けで発行された「FLEXIBLE N-WAY MEMORY INTERLEAVING」に説明および記載されており、これらは本発明の所有者に譲渡されている。メモリが複数の物理的なセルに分割される、または複数の物理的なセルにわたって分割される非インタリーブアクセス方法では、まず第１のセルのすべてのメモリに順次アクセスし、次いで第２のセル中の利用可能なすべてのメモリに順次アクセスし、以下同様を行うことにより、連続したメモリ空間が１つにまとめられたブロックとしてアドレス指定される。各セルが可能な限りの最大メモリ量で構成されていた場合、システムからそのメモリは１つの連続したメモリブロックのように見え、１つの連続したメモリブロックとしてアドレス指定される。しかし、すべてのセルが最大メモリ容量に構成されているわけではない場合、この非インタリーブ方式では、セル内のメモリブロックの損失に対応してメモリ空間内に穴が生じうる。また、非インタリーブメモリでは、命令およびデータの双方が順次使用される傾向があるため、特定のセルへの複数の順次アクセスが必要である。ローカルに格納される場合には恩恵を受けるが、別のセルにおけるリモートメモリに連続してもしくは頻繁にアクセスするプロセッサは、ローカルセルおよびリモートセルの双方、ならびに接続ネットワークにおける処理リソースおよび通信リソースを含む相当なオーバヘッドを消費する。かなり続くと、これらリソースが他の処理に利用できなくなり、システムパフォーマンスが劣化することになり得る。
【０００４】
代替として、分散メモリシステム内のメモリにインタリーブプロトコルを介してアクセスすることができる。いくつかのセルにわたりメモリをインタリーブすると、より均等にメモリにアクセスすることができる。たとえば、システムがバスシステムを介して共に接続された２個のセルを含み、各セルがメモリおよび４個の別個のプロセッサを含む場合、セル１におけるメモリをセル２におけるメモリでインタリーブすることにより、システム中の８個すべてのプロセッサがより均等に各メモリロケーションにアクセスする。２個のセルにメモリをインタリーブすることはまた、メモリロケーションにアクセスする際の各プロセッサの待ち時間遅延が一貫するように保証する。２つのメモリロケーションにメモリをインタリーブすると、プロセッサがメモリにアクセスしようと試みるか、またはメモリから情報を検索しようと試みる場合のボトルネックの可能性も減少する。
【０００５】
インタリーブの一例として、システムに包含されるメモリが０、１、２、および３とラベルの付いた４個のセルに分散するものと仮定する。さらに、セル０およびセル１はそれぞれ８ギガバイト（ＧＢ）のメモリを含み、セル２およびセル３はそれぞれ４ＧＢのメモリを含むものと仮定する。したがって、システム全体としては２４ＧＢのメモリを含む。分散メモリは以下のようにインタリーブすることができる。４個のセルはそれぞれ少なくとも４ＧＢのメモリを含むため、最初のインタリーブエントリであるエントリ０は、セル０、１、２、および３それぞれからの４ＧＢのメモリ、総計で１６ＧＢのメモリを含む。ここで、セル２およびセル３で利用可能なすべてのメモリがインタリーブエントリ０に使用されてしまった。セル０およびセル１それぞれは４ＧＢの未使用メモリを含む。インタリーブエントリ１は、セル０からの４ＧＢのメモリを含むとともにセル１からの４ＧＢのメモリを含む。したがって、インタリーブエントリ１は、セル０から４ＧＢかつセル１から４ＧＢで、８ＧＢのメモリを含む。ここで、４個のセルにおける２４ＧＢのメモリが２個のインタリーブエントリに分割された。ここで４個のセルからの２４ＧＢのメモリは、以下のような１つの連続ブロックとして見ることができる。ＧＢ０〜１５はセル０、１、２、および３の下半分に配置され、ＧＢ１６〜２３はセル０〜１の上部分に配置される。このインタリーブはキャッシュラインレベルで行われる。プロセッサからは、２４ＧＢの情報は１つの連続したブロックに見える。２４ＧＢの情報は、１つの連続したブロックとして見えるが、物理的には４個の異なるセルに分散されている。
【０００６】
大型コンピュータシステムは、セルマップを使用してプロセッサアクセスを分散させてホットスポットを回避している。セルマップは、セル／ノードベースのシステムについて宛先モジュールを見つけるために使用されている。セルマップを使用してメモリをセルにインタリーブし、より均等なアクセスパターンをメモリに提供している。セルマップエントリは、１、２、４、８、１６、３２、および６４ウェイインタリーブを提供するために使用されてきた。セルマップエントリのサイズが、メモリがインタリーブされるウェイ数を決める。
【０００７】
セルマップを使用する従来のシステムでは、セルマップエントリの数およびサイズを予め決定する必要があった。より大きなウェイ数のインタリーブを行うには、セルマップ構造をそれに従って事前に設計する必要があった。使用可能なインタリーブのウェイ数は、システムサイズ、メモリ構成、および他のパラメータに依存する。インタリーブのウェイ数が増えるとエントリも増え、より多くのリソースを使用する。従来のシステムによっては、ウェイ数のより大きなインタリーブが必要であるが、システムのリソースが限られているため、エントリにつきウェイ数の小さいインタリーブを行わなければならないか、またはウェイ数のより大きなインタリーブにエントリのサブセットを１つだけ確保し、残りのエントリがウェイ数のより小さいインタリーブを提供するものがある。従来のシステムでは、セルマップが常に効率よく使用されているとは限らず、ウェイ数のより大きなインタリーブを提供するようにスケーラブルではない。
【０００８】
【特許文献１】
米国特許第５，５３０，８３７号
【特許文献２】
米国特許第５，２９３，６０７号
【０００９】
【発明が解決しようとする課題】
ウェイ数のより小さなインタリーブエントリと組み合わせることによってウェイ数のより大きなインタリーブを達成することが望ましい。
【００１０】
【課題を解決するための手段】
本発明の一形態は、連続した論理アドレス空間を使用して複数のメモリにインタリーブ方式でアクセスする方法を提供する。少なくとも１つのマップテーブルが設けられる。少なくとも１つのマップテーブルは、複数のエントリを含む。各エントリは、複数のエントリ項目を含む。各エントリ項目は、メモリの１つを識別する。第１の論理アドレスを受信する。第１の論理アドレスは、複数のアドレスビットを含む。複数のアドレスビットは、少なくとも１つのマップテーブルにおける第１のエントリの組に対応する第１のアドレスビットの組を含む。第１のエントリの組における第１のエントリは、アドレスビットの第１の組および第２の組に基づいて識別される。第１のエントリにおける第１のエントリ項目は、アドレスビットの第３の組に基づいて識別される。第１のエントリ項目によって識別されるメモリにアクセスが行われる。
【００１１】
【発明の実施の形態】
以下の好ましい実施形態の詳細な説明では、本発明の一部をなし、本発明を実施し得る特定の実施形態を例として示す添付図面を参照する。本発明の範囲から逸脱することなく他の実施形態を利用することができるとともに、構造的または論理的な変更を行い得ることを理解されたい。したがって以下の詳細な説明は、限定を意味するものと解釈すべきではなく、本発明の範囲は併記の特許請求の範囲によって定義される。
【００１２】
図１は、クロスバー１２５を介して接続された４個のセル１０５、１１０、１１５、および１２０を含む処理システムまたはノード１００を示すブロック図である。各セルは対応するメモリブロックを有する。すなわち、セル１０５にはメモリ１３０、セル１１０にはメモリ１３５、セル１１５にはメモリ１４０、またセル１２０にはメモリ１４５がある。各セルはまた、４個のプロセッサ（セル１０５の場合、１５０、１５５、１６０、および１６５と符号が付与される）と、入出力（Ｉ／Ｏ）モジュール（セル１０５の場合では１７０と符号が付与される）と、セルコントローラ（セル１０５では１７５と符号が付与される）とを備える。
【００１３】
４個のプロセッサ１５０〜１６５それぞれおよびＩ／Ｏモジュール１７０は、メモリ１３０へのアクセスを要求する。セルコントローラ１７５は、Ｉ／Ｏモジュール１７０およびプロセッサ１５０〜１６５の双方とメモリ１３０との間のインタフェースである。メモリアクセスデバイス（たとえば、プロセッサ１５０〜１６５のいずれか、またはＩ／Ｏモジュール１７０）がメモリの正確な部分にアクセスするために、セルコントローラ１７５が、メモリアクセスデバイスが知っている論理メモリアドレスを物理アドレスに変換する。物理アドレスは、セルコントローラ１７５にメモリ要求のルーティング方法を伝える。セル１中の任意のメモリアクセスデバイスは、セル１１５のメモリ１４０、セル１２０のメモリ１４５、またはセル１１０のメモリ１３５にもアクセスすることができる。セルコントローラ１７５は、セルマップを使用して、メモリアクセスデバイスからの論理メモリアドレスを変換して、適切なメモリにアクセスするために使用することのできる適切な物理アドレスにする。一実施形態では、セルコントローラ１７５は、各メモリアクセスデバイスごとに異なるセルマップを含む。図１に示す実施形態では、セルコントローラ１７５は、取り付けられたメモリアクセスデバイスごとに１つずつ、合わせて５つの異なるセルマップを含む。
【００１４】
セルマップの一実施形態は、複数の行および複数の列を有するテーブルであり、各行がインタリーブエントリに対応し、行中の各列がシステムにおけるセルの１つを識別するエントリ項目に対応する。
【００１５】
図２は、４個のセル：セル０、セル１、セル２、およびセル３にメモリが分散した分散メモリシステム２００を示す。セル０は総計で８ギガバイト（ＧＢ）のメモリを含み、セル１は６ＧＢのメモリを含み、セル２は４ＧＢのメモリを含み、セル３は２ＧＢのメモリを含む。一実施形態では、これら４個のセルへのインタリーブは、以下のようにして達成される。まず、インタリーブに利用可能なメモリ量が最小なのはどのセルかについて査定を行う。この場合、セル３は２ＧＢのメモリしか含まない。したがって、インタリーブエントリ０は、セル０、１、２、および３から２ＧＢのメモリ、総計で８ＧＢのメモリをインタリーブする。その結果得られるインタリーブエントリを図３の行３０５に示す。図３中、各行は最大８個のセルメモリを識別する。行３０５の上には、３ビットの８つの組み合わせがあり、３ビットの各組み合わせが行３０５（および行３１０）における８つのエントリ項目の１つに関連付けられる。３ビットのこれら組み合わせを使用して特定のエントリ項目を識別するが、これについてさらに詳細に後述する。
【００１６】
次に、査定を行って、利用可能な任意のセルに残っている最小のメモリ量を決定する。この場合、セル２における２ＧＢである。セル０、セル１、およびセル２にわたるインタリーブは、図４に示す３つのインタリーブエントリを使用することによって提供される。インタリーブエントリ１、２、および３（図４中の３ビット組み合わせの下にある最初の３行それぞれ）は、セル０の二番目の２ＧＢブロック、セル１の二番目の２ＧＢブロック、およびセル２の一番上の２ＧＢ部分に使用される。この時点において、インタリーブエントリ０は、総計８ＧＢの情報をアドレス指定するが、インタリーブエントリ１、２、および３はそれぞれ２ＧＢの情報を含む。セル３のメモリリソースは、インタリーブエントリ０で完全に使用されてしまった。セル２のメモリリソースは、インタリーブエントリ３の完成を通してなくなった。
【００１７】
本プロセスにおける次のステップは、割り当てられずに残っている任意のセルのメモリを識別することである。この場合、セル１に２ＧＢのメモリが残っている。インタリーブエントリ４は、通常であれば、セル０からの２ＧＢのメモリおよびセル１からの２ＧＢのメモリを含むことになろう。この配列により、すでにマッピングされた１４ＧＢに４ＧＢが追加され、総計で１８ＧＢになる。しかし、一実施形態では、各テーブルエントリがグループサイズの整数倍で、すなわち１６ＧＢで始まることが好ましい。したがって、セル０およびセル１における４ＧＢが１つのインタリーブエントリを占めることができるようにするには、次に２ＧＢを追加する必要がある。このため、インタリーブエントリ４（図示せず）は、セル０にある一番上の２ＧＢを表し、マッピングする。ここで、今までに定義されたインタリーブエントリ（０、１、２、３、および４）は１６ＧＢのメモリを含むことになる。インタリーブエントリ５（図示せず）は、セル１にある残りの２ＧＢおよびセル０における残りの２ＧＢをマッピングする。これは、これまでにエントリ０、１、２、３、および４に割り当てられた１６ＧＢが４ＧＢの倍数であるため差し支えない。要約すると、セル０〜セル３に含まれる２０ＧＢのメモリはここで、６つのインタリーブエントリに含められる。最初のインタリーブエントリは、４個のセルそれぞれから２ＧＢずつ、合わせて８ＧＢの情報を含む。インタリーブエントリ１、２、３、および４は２ＧＢを含み、インタリーブエントリ５は４ＧＢを有する。
【００１８】
インタリーブグループは、所与のメモリ範囲でのインタリーブに制限される同量のメモリを有する複数のセルのユニットとして定義される。インタリーブグループは１つまたは複数のインタリーブエントリで構成される。インタリーブグループ０は、インタリーブエントリ０内にある８ＧＢ、換言すれば４個のセルそれぞれからの２ＧＢで構成される。インタリーブグループ１は、インタリーブエントリ１、２、および３内にある６ＧＢ、換言すればセル０からの２ＧＢ、セル１からの２ＧＢ、およびセル２からの２ＧＢで構成される。インタリーブグループ２は、セル０の一番上の２ＧＢ（すなわち、インタリーブエントリ４）で構成される。インタリーブグループ３は、セル０およびセル１それぞれからの２ＧＢで構成される（すなわち、インタリーブエントリ５）。
【００１９】
所望の物理メモリが配置されている特定のセルを識別するには、入力メモリアドレスからの第１のアドレスビットの組を使用してセルマップの行を識別し、入力メモリアドレスからの第２のアドレスビットの組を使用して識別された行にインデックスを付け、エントリ項目を識別する。一実施形態では、４４ビットメモリアドレスが使用され、アドレスビット２９〜４３が第１のアドレスビットの組に対応し、ビット６〜８が第２のアドレスビットの組に対応する。３ビット（たとえば、ビット６〜８）を使用して、８列すなわち８個のエントリ項目を有するエントリにインデックスを付ける。１６エントリ項目を有するエントリの場合には、４ビット（たとえば、ビット６〜９）をインデックス付けに使用する。同様に、エントリサイズが倍になるごとに、追加のインデックス付けビットを１個使用する。
【００２０】
インタリーブは、アクセスされた連続メモリ量が少なく保たれる場合に最も効果的である。キャッシュラインインタリーブでは、セルマップはキャッシュラインが配置されるセルを示す。このため、インタリーブエントリ０（図３における行３０５）を再び参照すると、キャッシュラインがセル０、１、２、および３の間でインタリーブされた場合、行３０５はどのようにセルがテーブル内で表されるかを示す。一実施形態では、行３０５の上にある複数の３ビット組み合わせでの３ビットは、入力論理メモリアドレスのアドレスビット６〜８に対応する。入力アドレスのこれら３ビットを使用して、行にインデックスを付け、エントリ項目の１つを識別する。行３０５における各エントリ項目は、４個のセルの１つを識別する。図３に示すように、メモリアドレスのビット６〜８が０００である場合、これは、メモリの物理アドレスがセル０にあることをセルコントローラに示す。メモリアドレスのビット６〜８の値が００１である場合、これはメモリの物理アドレスがセル１にあることをセルコントローラに示す。同様に、セルコントローラは、メモリアドレスのビット６〜８について可能な他の６つの値それぞれを使用して、テーブルからのセルを識別する。
【００２１】
再び図１を参照して、４個のセルを有する単一ノードを示す。各セルはそれぞれのメモリデバイスを有する。しかし、システム全体が２個の４セルノードを有する場合には、それぞれメモリを有する８個のセルが利用可能である。これらセルにセル０〜セル７とラベルを付ける場合、メモリを８個すべてのセルにわたってインタリーブすることができるであろう。図３の行３１０は、どのようにメモリを８個すべてのセルにインタリーブすることができるかを示す。この場合、３ビット指示子（メモリアドレスのビット６〜８）は、８個のセルのうちいずれがメモリの物理アドレスを含むかを示す。したがって、行３１０は８ウェイインタリーブを示し、行３０５は４ウェイインタリーブを示す。
【００２２】
システムが３セル構成を有する場合、セルマップは、３ウェイインタリーブを示す図４に示すようになる。３個のセルは、セルマップにおいて３行にわたって効率的にマッピングされる。１行目の１列目は、セル０の値を含む。１行目の２列目は、セル１の値を含む。１行目の３列目は、セル２の値を含む。このシーケンスは、最後のセルが３行目の最後の列で終わるまで繰り返される。
【００２３】
セルマップの行は、マスク、コンパレータ、およびメモリアクセスデバイスからのメモリアドレスビットの組み合わせを介してセルコントローラによって識別される。マスクを使用して、適切な行の決定に関係のないアドレスのビットをマスクする。コンパレータは、マスクしたアドレス部分を整合値と比較して、セルマップの対応する行を識別する。
【００２４】
図５は、シングルキャッシュラインインタリーブの場合の６４ウェイインタリーブドセルマップエントリを示すブロック図である。図５におけるセルマップエントリは６４ウェイインタリーブであるため、メモリアドレスの６ビット（たとえば、ビット６〜１１）をエントリへのインデックス付けに使用する。エントリイネーブルブロック５１０は、入力メモリアドレスのビット２９〜ビット４３を含むアドレス部分５０５を使用してセルマップの適切な行を識別する。アドレス範囲は、行選択に使用するアドレス部分５０５から決定される。図５に示すように、エントリイネーブルブロック５１０は、以下の式Iを実行する。
【００２５】
【数１】
Ｅｎｔｒｙ＿ｅｎａｂｌｅ＝（（ＡＤＤＲ  ＡＮＤ  ＭＡＳＫ）＝＝ｃｍｐ）
式I
【００２６】
式Iに示すように、エントリイネーブルブロック５１０は、アドレス部分５０５をマスクしてアドレスの最下位ビットを破棄し、マスクされたアドレスをその行の比較値または整合値である「ｃｍｐ」と比較する。比較における値が等しい場合、Ｅｎｔｒｙ＿ｅｎａｂｌｅに、マッチする行を示す論理的に真の値が割り当てられる。値が等しくない場合、Ｅｎｔｒｙ＿ｅｎａｂｌｅに、マッチしない行であることを示す偽の論理値が割り当てられる。
【００２７】
行が選択されると、メモリアドレスのビット６〜１１を使用して、セルマップのその行内の６４個のエントリ項目の１つを識別し、「ＣＥＬＬ」および「Ｃｅｌｌ＿Ａｄｄｒ」が決定され、出力される。「ＣＥＬＬ」は、セルを一意に識別するセルＩＤを表し、「Ｃｅｌｌ＿Ａｄｄｒ」はセルアドレスを表し、これについてさらに詳細に後述する。図５に示すように、アドレス部分５１５は、アドレスビット６〜１１および２９〜４２を含み、アドレスビット６〜１１および２９〜４２を使用して適切なセルＩＤおよびセルアドレスを決定する。アドレス入力５２０に示すように、さらなる入力によってさらなるテーブルエントリ項目を選択することができる。図５に示すように、以下の式IIに示すような比較を行うことによって列が選択される。
【００２８】
【数２】
Ｃｏｌｕｍｎ＿Ｓｅｌｅｃｔ＝（ＡＤＤＲ[１１：６]＝＝０ｘ０）
式II
【００２９】
式IＩからわかるように、メモリアドレスのビット６〜１１を、列に対応する１６進数の値（たとえば、この場合では０ｘ０であり、これは一列目に対応する）と比較する。比較している値が等しい場合、Ｃｏｌｕｍｎ＿Ｓｅｌｅｃｔは、マッチングを示す真の論理値を含む。比較している値が等しくない場合、Ｃｏｌｕｍｎ＿Ｓｅｌｅｃｔは、マッチングがないことを示す偽の論理値を含む。
【００３０】
エントリイネーブルブロック５１０でのコンパレータおよびマスクの使用について、図６を参照してさらに詳細に述べる。図６は、十進数の０〜１６を表す二進数を示す。０〜１６の範囲の１０進数は４つの異なるグループ：０〜３を含むグループ６０５、４〜７を含むグループ６１０、８〜１１を含むグループ６１５、および１２〜１５を含むグループ６２０に分けられている。マスクを効果的に使用するために、種々のグループを識別する方法が必要である。この場合、最初の２ビット、すなわち最上位２ビット（最左端の２ビット）を使用して各種グループを区別することができることがわかる。グループ６０５に表示される４つの数はそれぞれ００で始まり、グループ６１０の中の数はそれぞれ０１で始まり、グループ６１５の中の数はそれぞれ１０で始まり、グループ６２０の中の数はそれぞれ１１で始まる。したがって、１１００からなるマスクが確立される。重要な各ビットには「１」を配置し、重要ではない、すなわち「無関係な」各ビットには「０」を配置する。コンパレータは、メモリブロックの開始アドレスに等しくセットされる。マスクを使用して、４つのグループ６０５〜６２０のいずれに所望のビットシーケンスが存在するかを判定する。２つの最上位ビットの比較により、セルマップ内の特定の行が決定される。
【００３１】
コンパレータおよびマスクの使用をさらに説明するため、いくつかの例を考察する。図７を参照すると、ノードは４個のセルを含み、セル０は５ＧＢのメモリを有し、セル１は３ＧＢ、セル２も３ＧＢ、またセル３も３ＧＢのメモリを有する。１６進数表記では、１ＧＢは０Ｘ０００＿４０００００００である。図７のインタリーブエントリ０は、４個のセルそれぞれから２ＧＢ、総計８ＧＢのメモリを含む。このメモリブロックの範囲は０ＧＢから最大８ＧＢである。コンパレータは、０Ｘ０００＿００００００００に等しい。マスクの値は、メモリロケーションが８ＧＢよりも大きいかどうかを判定するために調べる必要のあるビットを識別することによって決定される。値が８ＧＢを越えるかどうかを判定するために調べなければならない各ビット位置に、「１」を配置する。このため、１６進数表記では、マスクは０Ｘｆｆｅ＿００００００００に等しい。１６進数表記での最下位の８つの数で表されるビットは、メモリロケーションの値が８ＧＢを越えているかどうかの判定に必要ないため、調べる必要はない。したがってマスクは、メモリアクセスデバイスの１つからのメモリ値が８ＧＢを越えるか否かを判定するために調べる必要のあるビット位置のみを含む。確立されたこのマスクおよびコンパレータを使用すると、０〜８ＧＢの範囲にあるいずれのアクセスもインタリーブエントリ０しか起動しない。対応するセルマップの適切な行内において、セル番号は０、１、２、３、０、１、２、３として識別され得る。これは、図３における行３０５と同様である。この構成は、セル０〜３の間での４ウェイインタリーブを達成する。インタリーブエントリ１の場合、ここでも４個すべてのセルが使用されるが、今度は各セルから１ＧＢのメモリのみが使用される。この場合、コンパレータ値は、８ＧＢに等しい０Ｘ００２＿００００００００に等しい。これは、このインタリーブエントリの開始値である。この場合のマスク値は、０Ｘｆｆｆ＿００００００００である。インタリーブエントリ１が確立されると、セル０に２ＧＢが残る。
【００３２】
概して、インタリーブは、まず最大のブロックにわたって行われるため、続いて次のインタリーブブロックのサイズはより小さい。セル０に残っている２ＧＢは、通常であれば、図７に示す１ＧＢチャンクに分けられる。しかし、この場合、インタリーブエントリ０およびインタリーブエントリ１に含まれる１２ＧＢは、セル０に残っている２ＧＢで割り切れる。したがって、インタリーブエントリ２は、セル０に残っている２ＧＢのメモリを含むことになり、コンパレータ値は１２ＧＢである０Ｘ００３＿００００００００になり、マスク値は０Ｘｆｆｆ＿８０００００００になる。
【００３３】
最後の例として、図８に示すように、ノードが３個のセルを含み、各セルが２ＧＢのメモリを含む場合、インタリーブは以下のように行われる。インタリーブエントリ０の場合、コンパレータは０Ｘ０００＿００００００００、すなわち０ＧＢである。マスクは０Ｘｆｆｆ＿８０００００００である。これにより、セル０の最初の１ＧＢおよびセル１の最初の１ＧＢの間でインタリーブすることができるようになる。この場合の行エントリは、０の後に１が続き、行の全長にわたりこれが交互になったものからなる。これは、ここでもセル０から１ＧＢおよびセル１から１ＧＢというメモリの最初の２ＧＢにわたり２ウェイでインタリーブする。
【００３４】
インタリーブエントリ１の場合、コンパレータ値は０Ｘ０００＿８０００００００であり、これはすなわち２ＧＢに等しい。この場合のマスク値は、０Ｘｆｆｆ＿８０００００００である。対応するセルマップ行は、行の全長にわたって１と２が交互になったものであり、これにより、セル１からの２番目のＧＢおよびセル２からの最初のＧＢにわたり２ウェイインタリーブすることができる。
【００３５】
インタリーブエントリ２は、０Ｘ００１＿００００００００のコンパレータ値を有し、これは４ＧＢに等しい。マスク値は、０Ｘｆｆｆ＿８０００００００である。このインタリーブエントリのセルマップ内の対応する行は、行の全長にわたって２と０が交互になったものである。このインタリーブエントリは、セル２およびセル０にわたり２ウェイでインタリーブし、最後の２ＧＢのメモリを含む。
【００３６】
一実施形態では、セルコントローラは、セルＩＤだけの場合よりも、より多くの情報をセルマップエントリ項目から取得する。たとえば、セルコントローラをセル０に送る（direct）いくつかのセルマップエントリ項目がありうる。セル０に含まれるメモリは、様々なインタリーブエントリに分けられている場合がある。一実施形態では、セルマップエントリ項目は、セル０のメモリ内のどこに要求される情報が格納されているかの指示もセルコントローラに供給する。本発明の一形態では、ＣＥＬＬ＿ＡＤＤＲすなわちセルアドレスを使用して、セルコントローラを特定のメモリアクセスのためにセルメモリ内の特定の５１２メガバイト（ＭＢ）領域に送る。セルアドレス式の一実施形態を以下の式IIIで提供する。
【００３７】
【数３】
ＣＥＬＬ＿ＡＤＤＲ＝（（ＡＤＤＲ[４２：２９]＆ＣＨＵＮＫ＿ＭＡＳＫ）＞＞インタリーブ＋ＣＨＵＮＫ＿ＳＴＡＲＴ
式III
【００３８】
アドレスビット２９〜４２は、特定のセル内のどこからデータの読み出しを開始するかを決定する際に使用される。式IIIに含まれるＣＨＵＮＫ＿ＭＡＳＫは、先に考察したマスクの逆（inverse:インバース）である。ＣＨＵＮＫ＿ＭＡＳＫの目的は、セルコントローラをメモリブロックの正確な部分に導くことである。マスクしたアドレス部分は右シフト（記号「＞＞」で表される）され、インタリーブに使用されていたビットを削除する（式IIIでは「インタリーブ」と表される）。セルマップテーブルが８列を含む場合、３つのインタリーブビットが列の識別に使用される。セルマップが１６列を有する場合、列の識別に４ビットが使用される。ＣＨＵＮＫ＿ＳＴＡＲＴは、他のインタリーブエントリ専用の、または他のインタリーブエントリによって以前使用されていたメモリの量である。たとえば、再び図２のインタリーブエントリ１を参照すると、インタリーブエントリ１は、エントリ０が４個のセルそれぞれから２ＧＢを占めた後に来た。したがって、セル０の２番目の２ＧＢ部分がアドレス指定されている場合、ＣＨＵＮＫ＿ＳＴＡＲＴはインタリーブエントリ０に含まれた２ＧＢである。あるいは、引き続き図２を参照すると、セル０における２ＧＢおよびセル１における２ＧＢを含むインタリーブエントリ５は、セル０およびセル１の双方における４ＧＢのＣＨＵＮＫ＿ＳＴＡＲＴを有する。要約すると、ＣＥＬＬ＿ＡＤＤＲ式は、メモリアクセスデバイスからのアドレスビットを使用し、所与のブロック内の特定のメモリロケーションに到達するようにするオフセットに等しいメモリ量を追加し、右シフトしてインタリーブにすでに使用しておりブロック内のロケーションを決定するためにもはや必要のないビットを削除し、他のインタリーブエントリ内のインタリーブにあてられていたセルメモリを追加する。
【００３９】
図９は、セルマップ９００の一実施形態の図である。セルマップ９００は、複数のエントリ９０４をそれぞれ含むモジュールＩＤテーブル９１２およびチャンク開始テーブル９１４を含む。各エントリ９０４は複数のエントリ項目９１０を含む。代替の実施形態では、モジュールＩＤ情報およびチャンク開始情報を単一テーブルに組み込むことができる。別の代替実施形態では、セルマップ９００はチャンク開始テーブル９１４を含まない。各エントリ９０４におけるエントリ項目９１０中の数は、インタリーブのウェイ数に基づく。たとえば、１６ウェイインタリーブの場合、モジュールＩＤテーブル９１２およびチャンク開始テーブル９１４はそれぞれ、エントリ９０４毎に少なくとも１６個のエントリ項目９１０をそれぞれ含むことになる（図９に示すように）。また、６４ウェイインタリーブの場合、モジュールＩＤテーブル９１２およびチャンク開始テーブル９１４はそれぞれ、エントリ９０４毎に少なくとも６４個のエントリ項目９１０を含むことになる。一実施形態では、モジュールＩＤテーブル９１２における各エントリ項目９１０は、宛先モジュール識別のために８ビットモジュールＩＤ値を含み、チャンク開始テーブル９１４における各エントリ項目９１０は、メモリロケーションの識別に使用されるチャンク開始値を含む。受信した各入力アドレス９０２に基づき、後述するように、適切なモジュールＩＤ値９１６およびチャンク開始値９１８が識別され、セルマップ９００から出力される。
【００４０】
以下の表１は、セルマップベースシステムの一実施形態を実施する擬似コードを含む。
【００４１】
【表１】
0004348093.tif 000002
【００４２】
上記表１の場合、以下の仮定を行う。すなわち、アドレスサイズの実施は５０ビット（すなわち、ビット０〜４９）である；各エントリ９０４は１６ウェイインタリーブされる（したがって、エントリ９０４内でのインデックス付けのために４ビットが必要である）；システムはシングルキャッシュラインインタリーブを実行している；キャッシュラインサイズは６４バイトである（よって、アドレスビット６〜９がエントリ９０４内のインデックス付けに使用される）；おおよそ３２〜６４個のエントリ９０４が各プロセッサインタフェースに設けられる；かつ、最小アドレス指定可能メモリは１／２ＧＢである（よって、アドレスマスク（Ａｄｄｒｅｓｓ  Ｍａｓｋ）はビット２９〜４９を使用する）。
【００４３】
上記仮定は一例のシステムに基づき、かつ特定の実施に基づいて変更を行いうることが理解されよう。たとえば、キャッシュラインサイズが６４バイトではなく１２８バイトである場合には、入力アドレス９０２のビット７〜１０がエントリ９０４内のインデックス付けに使用される。キャッシュラインサイズが２５６バイトである場合は、入力アドレス９０２のビット８〜１１がエントリ９０４内のインデックス付けに使用される。キャッシュラインサイズが倍になるごとに、４つのインデックス付けビットがそれぞれ左に１ビット位置分シフトする。別の例では、最小アドレス指定可能メモリが１／２ＧＢではなく６４メガバイト（ＭＢ）である場合、アドレスマスク（Ａｄｄｒｅｓｓ  Ｍａｓｋ）は、ビット２９〜４９ではなくビット２４〜４９を使用する。種々のキャッシュラインサイズおよび異なる最小アドレス指定可能メモリサイズの他に、種々のアドレスサイズ、シングルキャッシュラインインタリーブではなくマルチキャッシュラインインタリーブ、およびインタリーブの種々のウェイ数を含むがこれらに限定されない他の変更を行うこともできる。
【００４４】
表１に列挙される最初の項目はＩｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［４９：０］であり、これは入力アドレス９０２として図９に表される。一実施形態では、入力アドレス９０２はプロセッサアドレスであり、０〜４９の番号が付けられた５０ビットを含む。入力アドレス９０２は、第１のアドレス部分９０２Ａ、第２のアドレス部分９０２Ｂ、および第３のアドレス部分９０２Ｃを含む。
【００４５】
表１に列挙される２番目の項目は、Ａｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］である。一実施形態では、セルマップ９００における各エントリ９０４は、Ａｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］の特定の値に関連付けられる。
【００４６】
表１に列挙する３番目の項目は、Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］である。Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］は、入力アドレス９０２から関連するビットを抽出するためにセルコントローラ（たとえば、セルコントローラ１７５）により使用される。一実施形態では、入力アドレス９０２のビット２９〜４９は第１のアドレス部分９０２Ａと呼ばれる。セルコントローラ１７５は、マスクされた第１のアドレス部分９０２Ａを、Ａｄｄｒｅｓｓ  Ｍａｔｃｈ値と比較してマッチするエントリ９０４を識別する。
【００４７】
モジュールＩＤテーブル９１２におけるエントリ９０４は、表１に列挙される４番目の項目で表され、この項目はＭｏｄｕｌｅ＿ｉｄ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［エントリにおけるインタリーブのＭａｘ＿ｗａｙｓ＊Ｂｉｔｓ＿ｐｅｒ＿ｍｏｄｕｌｅ＿ｉｄ］である。Ｍｏｄｕｌｅ＿ｉｄ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙの括弧内の値は、モジュールＩＤテーブル９１２におけるエントリ９０４のビットサイズを表す。各モジュールＩＤに８ビットを使用し（すなわち、Ｂｉｔｓ＿ｐｅｒ＿ｍｏｄｕｌｅ＿ｉｄ＝８）、かつエントリ９０４が１６ウェイインタリーブされる（すなわち、エントリにおけるインタリーブのＭａｘ＿Ｗａｙｓ＝１６）と仮定すると、モジュールＩＤテーブル９１２の各エントリ９０４に必要なビット数は１２８（すなわち、８×１６）になる。６４ウェイインタリーブエントリ９０４の場合、モジュールＩＤテーブルエントリ９０４のサイズは５１２ビット（すなわち、６４×８）になる。モジュールＩＤにつき８ビットを使用すると、２５６個のモジュールを一意に識別することができる。特定の実施に応じて、モジュールＩＤにつき他のビット数を使用してもよい。
【００４８】
チャンク開始テーブル９１４のエントリ９０４は、表１に列挙される５番目の項目で表され、この項目はＣｈｕｎｋ＿ｓｔａｒｔ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［エントリにおけるインタリーブのＭａｘ＿Ｗａｙｓ＊０．５ＧＢのチャンクすべてをアドレス指定するために必要なビット数］である。Ｃｈｕｎｋ＿ｓｔａｒｔ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙの括弧内の値は、チャンク開始テーブル９１４におけるエントリ９０４のビットサイズを表す。すべての１／２ＧＢチャンクをアドレス指定するために８ビットが使用され、かつエントリ９０４が１６ウェイインタリーブされる（すなわち、エントリにおけるインタリーブのＭａｘ＿ｗａｙｓ＝１６）と仮定すると、チャンク開始テーブル９１４の各エントリ９０４に必要なビット数は１２８（すなわち、８×１６）になる。６４ウェイインタリーブエントリ９０４の場合、チャンク開始テーブルエントリ９０４のサイズは５１２ビット（すなわち、６４×８）になる。
【００４９】
表１に列挙される６番目の項目は、Ｈｉｔ＿ｆｏｒ＿ｔｈａｔ＿ｅｎｔｒｙ＝（（Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［４９：２９］］＆Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］）＝＝Ａｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］）である。一実施形態では、セルマップ９００における各エントリ９０４は、Ａｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］の特定の値に関連付けられ、表１に列挙される６番目の項目のようなヒット式が、ヒットが識別されるまで、セルマップ９００における各エントリ９０４について実行される。変数Ｈｉｔ＿ｆｏｒ＿ｔｈａｔ＿ｅｎｔｒｙは、（Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［４９：２９］］＆Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］）とＡｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］の比較に応じて、真の論理値かあるいは偽の論理値のいずれかを含むことになる。（Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［４９：２９］］＆Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］）の値とＡｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］の値が等しくない場合、Ｈｉｔ＿ｆｏｒ＿ｔｈａｔ＿ｅｎｔｒｙは、偽の論理値になり、マッチしないエントリであることを示す。（Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［４９：２９］］＆Ａｄｄｒｅｓｓ  Ｍａｓｋ［４９：２９］）の値とＡｄｄｒｅｓｓ  Ｍａｔｃｈ［４９：２９］の値が等しい場合、Ｈｉｔ＿ｆｏｒ＿ｔｈａｔ＿ｅｎｔｒｙは、真の論理値になり、マッチするエントリであることを示す。
【００５０】
モジュールＩＤテーブル９１２の各エントリ９０４の場合、チャンク開始テーブル９１４に対応するエントリ９０４がある。ヒットがエントリ９０４に対して生成される場合、モジュールＩＤテーブルエントリからのモジュールＩＤ値９１６が出力され、対応するチャンク開始テーブルエントリからチャンク開始番号９１８が出力される。一実施形態では、チャンク開始番号９１８は、モジュールＩＤ値９１６によって識別されるメモリ内のメモリロケーションを識別するための１／２ＧＢの倍数である。エントリ９０４内の適切なモジュールＩＤ値９１６およびチャンク開始番号９１８を識別するための式は、表１の７番目および８番目の項目に列挙される。
【００５１】
表１に列挙される７番目の項目は、Ｐｈｙｓｉｃａｌ＿ｄｅｓｔｉｎａｔｉｏｎ＿ｍｏｄｕｌｅ＝Ｍｏｄｕｌｅ＿ｉｄ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［９：６］］である。この項目が示すように、入力アドレス９０２のビット６〜９を使用して、モジュールＩＤテーブル９１２でマッチするエントリ９０４における１６個のエントリ項目９１０の１つを識別する。一実施形態では、入力アドレス９０２のビット６〜９は第３のアドレス部分９０２Ｃと呼ばれる。識別されたエントリ項目９１０からのモジュールＩＤ値は、変数Ｐｈｙｓｉｃａｌ＿ｄｅｓｔｉｎａｔｉｏｎ＿ｍｏｄｕｌｅに格納される。６４ウェイインタリーブエントリ９０４を有するモジュールＩＤテーブル９１２の場合、モジュールＩＤテーブルエントリ９０４にインデックスを付ける式は、Ｐｈｙｓｉｃａｌ＿ｄｅｓｔｉｎａｔｉｏｎ＿ｍｏｄｕｌｅ＝Ｍｏｄｕｌｅ＿ｉｄ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［１１：６］］である。この場合、第３のアドレス部分９０２Ｃはアドレスビット６〜１１を含み、これらのアドレスビットを使用してモジュールＩＤテーブルエントリ９０４にインデックスを付ける。
【００５２】
表１に列挙される８番目の項目は、Ｃｈｕｎｋ＿ｓｔａｒｔ＝Ｃｈｕｎｋ＿ｓｔａｒｔ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［９：６］］である。この項目が示すように、入力アドレス９０２の第３のアドレス部分９０２Ｃを使用して、チャンク開始テーブル９１４でマッチするエントリ９０４における１６個のエントリ項目９１０の１つを識別する。識別されたエントリ項目９１０からのチャンク開始番号が変数ｃｈｕｎｋ＿ｓｔａｒｔに格納される。６４ウェイインタリーブエントリ９０４を有するチャンク開始テーブル９１４の場合には、チャンク開始テーブルエントリ９０４にインデックスを付けるための式は、Ｃｈｕｎｋ＿ｓｔａｒｔ＝Ｃｈｕｎｋ＿ｓｔａｒｔ＿ｔａｂｌｅ＿ｉｎ＿ｅｎｔｒｙ［Ｉｎｃｏｍｉｎｇ＿Ａｄｄｒｅｓｓ［１１：６］］である。この場合、第３のアドレス部分９０２Ｃはアドレスビット６〜１１を含み、これらのアドレスビットをチャンク開始テーブルエントリ９０４へのインデックス付けに使用する。上述したように、一実施形態では、特定のメモリロケーションを識別するために、チャンク開始値をセルアドレス式（たとえば、式IＩＩ）で使用する。
【００５３】
セルマップ９００におけるエントリ９０４の数およびインタリーブのウェイ数は通常、システムのサイズおよびトポロジに基づいて選択される。典型的なシステムでは、セルマップ９００は通常、約３２〜６４個のインタリーブエントリ９０４を含み、各エントリは１６ウェイあるいは６４ウェイでインタリーブされる。６４ウェイインタリーブによってもたらされる柔軟性が望ましい場合、従来技術では、１６ウェイインタリーブに必要なフリップフロップの数に４を乗算した数のフリップフロップの使用が必要であった。このような従来技術は、リソースの利用において非効率的であるか、あるいは性能が限られていた。
【００５４】
本発明の一実施形態は、複数のウェイ数のより小さなインタリーブエントリ９０４を組み合わせることによってウェイ数のより大きなインタリーブエントリを提供する。以下の説明では、基本となるインタリーブエントリサイズが１６ウェイであり、かつウェイ数のより大きなインタリーブエントリサイズが３２ウェイ〜５１２ウェイの範囲にあるものと仮定する。代替の実施形態では、他のインタリーブエントリサイズを提供しうることが理解されよう。一実施形態では、ウェイ数のより大きなインタリーブは、入力アドレス９０２のうちのより多くのビットを比較して所与のエントリ９０４についてヒットを見つけることによって達成される。
【００５５】
以下の表２は、本発明の一実施形態を実施する擬似コードを含む。
【００５６】
【表２】
0004348093.tif 000003
【００５７】
上記表２からわかるように、表２に含まれる擬似コードは、Ａｄｄｒｅｓｓ  Ｍａｓｋ  ＬｏｗｅｒおよびＡｄｄｒｅｓｓ  Ｍａｔｃｈ  Ｌｏｗｅｒ（表２中の３番目および４番目の項目）が追加され、ヒット方程式（表２中の７番目の項目）が変更されたことを除けば、表１に含まれる擬似コードと同様である。これらの違いについて以下に述べる。
【００５８】
以下の表３は、本発明の一実施形態による種々のインタリーブサイズについてのＡｄｄｒｅｓｓ＿Ｍａｓｋ＿Ｌｏｗｅｒに使用されるビット値を列挙したものである。
【００５９】
【表３】
0004348093.tif 000004
【００６０】
ｅｎｔ＿ａ、ｅｎｔ＿ｂ、ｅｎｔ＿ｃ、およびｅｎｔ＿ｄという名称の４個の１６ウェイエントリ９０４を組み合わせる、すなわち一緒のグループにすることにより、６４ウェイインタリーブエントリを実施することが望ましいものと仮定する。６４ウェイインタリーブが望ましいため、上記表３に示すように、Ａｄｄｒｅｓｓ＿Ｍａｓｋ＿Ｌｏｗｅｒ［１５：１０］は４個のエントリについて００００１１になる。４個のエントリすべてについて、Ａｄｄｒｅｓｓ＿Ｍａｔｃｈ［４９：２９］およびＡｄｄｒｅｓｓ＿Ｍａｓｋ［４９：２９］は同じになる。しかし、Ａｄｄｒｅｓｓ＿Ｍａｔｃｈ＿Ｌｏｗｅｒは４個のエントリごとに異なる。以下の表４は、４個のエントリそれぞれのＡｄｄｒｅｓｓ＿Ｍａｔｃｈ＿ｌｏｗｅｒ［１５：１０］に使用される値を列挙する。
【００６１】
【表４】
0004348093.tif 000005
【００６２】
表２の７番目の項目に示すように、エントリのヒットは以下の場合に生成される。すなわち、（１）Ａｄｄｒｅｓｓ＿Ｍａｓｋ［４９：２９］でマスクされた入力アドレス９０２のビット２９〜４９（すなわち、第１のアドレス部分９０２Ａ）が、エントリ９０４のＡｄｄｒｅｓｓ＿Ｍａｔｃｈ［４９：２９］に等しく、かつ（２）Ａｄｄｒｅｓｓ＿Ｍａｓｋ＿Ｌｏｗｅｒ［１５：１０］でマスクした入力アドレス９０２のビット１０〜１５（すなわち、第２のアドレス部分９０２Ｂ）が、エントリ９０２のＡｄｄｒｅｓｓ＿ｍａｔｃｈ＿ｌｏｗｅｒ［１５：１０］に等しい場合である。ヒット方程式の第１の部分は、ｅｎｔ＿ａ、ｅｎｔ＿ｂ、ｅｎｔ＿ｃ、ｅｎｔ＿ｄそれぞれについて真となる。しかし、ヒット方程式の第２の部分は、４個のエントリうち１つのエントリのみについて真となる。ｅｎｔ＿ａのヒットは、完全な６４ウェイインタリーブの０〜１５ウェイインタリーブについて生成され、ｅｎｔ＿ｂのヒットは、完全な６４ウェイインタリーブの１６〜３１ウェイインタリーブについて生成され、ｅｎｔ＿ｃのヒットは、完全な６４ウェイインタリーブの３２〜４７ウェイインタリーブについて生成され、ｅｎｔ＿ｄのヒットは、完全な６４ウェイインタリーブの４８〜６３ウェイインタリーブについて生成される。
【００６３】
エントリ９０４のヒットが生成されると、入力アドレス９０２のビット６〜９（すなわち、第３のアドレス部分９０２Ｃ）を使用して、表２の８番目および９番目の項目に示すように、また上述したように、モジュールＩＤテーブルエントリから宛先モジュールＩＤ９１６を識別するとともに、チャンク開始テーブルエントリからチャンク開始値９１８を識別する。
【００６４】
本発明の一形態は、拡張性を提供しながら、セルマップのサイズを最適化できるようにする。一実施形態では、セルマップエントリ９０４を組み合わせて、ウェイ数のより大きなインタリーブを行う能力を犠牲にすることなく、セルコントローラ１７５におけるロジックをより効率的に使用することのできるウェイ数のより大きなインタリーブエントリを形成することが可能である。本発明の一実施形態を実施するロジックは比較的単純であり、従来のセルマップの実施と比較して、比較する必要のあるアドレスビットの増加は数個だけである。本発明の一形態では、従来のセルマップの実施よりもかなり大きな柔軟性を提供する。この発明は、例として次のような実施形態を含む。
【００６５】
（１）  連続した論理アドレス空間を使用して複数のメモリ（１３０、１３５、１４０、１４５）にインタリーブ方式でアクセスする方法であって、
複数のエントリ（９０４）を含む少なくとも１つのマップテーブル（９００）を設けることであって、前記エントリはそれぞれ複数のエントリ項目（９１０）を含み、該エントリ項目（９１０）はそれぞれ前記メモリの１つを識別し、
複数のアドレスビット（９０２Ａ〜９０２Ｃ）を含む第１の論理アドレス（９０２）を受信することであって、前記複数のアドレスビットは、前記少なくとも１つのマップテーブルにおける第１のエントリの組に対応する第１のアドレスビットの組を含み、
前記アドレスビットの前記第１の組および第２の組に基づいて、前記第１のエントリの組中の第１のエントリを識別することと、
前記アドレスビットの第３の組に基づいて、前記第１のエントリにおける第１のエントリ項目を識別することと、
前記第１のエントリ項目によって識別された前記メモリにアクセスすることと、
を含む方法。
【００６６】
（２）  前記第１、第２、および第３のアドレスビットの組は重複しない（１）記載の方法。
【００６７】
（３）  前記第１のアドレスビットの組は、前記第２のアドレスビットの組よりも上位のビットを含み、前記第２のアドレスビットの組は、前記第３のアドレスビットの組よりも上位のビットを含む（１）記載の方法。
【００６８】
（４）  前記少なくとも１つのマップテーブルに複数のメモリオフセット値（９１４）を格納することと、
前記第１の論理アドレスに基づいて前記メモリオフセット値の１つを識別することとをさらに含み、
前記第１のエントリ項目によって識別されるメモリは、前記識別されたメモリオフセット値に少なくとも部分的に基づくメモリロケーションにおいてアクセスされる（１）記載の方法。
【００６９】
（５）  前記メモリはそれぞれ少なくとも１つのメモリセグメントを含み、該メモリセグメントはグループに編成され、各グループにおける前記メモリセグメントは均等なサイズを有し、前記少なくとも１つのマップテーブルにおける各エントリは前記メモリセグメントグループの１つに対応する（１）記載の方法。
【００７０】
（６）  連続した論理アドレス空間をインタリーブ様式で複数のメモリ（１３０、１３５、１４０、１４５）にマッピングする方法であって、前記論理アドレス空間における各論理アドレス（９０２）は、重複しない第１、第２、および第３のアドレス部分（９０２Ａ〜９０２Ｃ）を含み、
複数のインタリーブエントリ（９０４）を含む少なくとも１つのマップテーブル（９００）を設けることであって、前記インタリーブエントリはそれぞれ、メモリのＭウェイインタリーブを表すＭ個のエントリ項目（９１０）を含み、前記Ｍは整数値であり、前記エントリ項目はそれぞれ前記メモリの１つを識別し、
複数の論理アドレスを前記インタリーブエントリそれぞれに関連付けることであって、前記インタリーブエントリの第１の組における前記各インタリーブエントリに関連付けられた前記論理アドレスは、前記第１のアドレス部分について共通の値を含み、前記第１のインタリーブエントリの組はＮ個のインタリーブエントリを含み、前記Ｎは整数値であり、前記第１のインタリーブエントリの組は集合的に単一のＭ×Ｎウェイインタリーブエントリを表し、
前記第１の組における前記インタリーブエントリに関連づけられた前記論理アドレスの前記第２および第３のアドレス部分に基づいて、前記Ｍ×Ｎウェイインタリーブエントリ内のエントリ項目にインデックスを付けることと、
を含む方法。
【００７１】
（７）  連続した論理アドレス空間を使用して複数のメモリ（１３０、１３５、１４０、１４５）へのインタリーブ方式のアクセスを提供するシステム（１００）であって、
複数のインタリーブエントリ（９０４）を含む少なくとも１つのマップテーブル（９００）であって、前記インタリーブエントリはそれぞれ基本数のエントリ項目（９１０）を含み、該エントリ項目はそれぞれ前記メモリの１つを識別する、少なくとも１つのマップテーブル（９００）と、
該少なくとも１つのマップテーブルにおけるインタリーブエントリの組に対応する第１の部分（９０２Ａ）をそれぞれ含む論理アドレス（９０２）を受信するコントローラ（１７５）と、
前記基本数の倍数である所望のウェイ数のインタリーブを表すインタリーブエントリサイズ識別子とを備え、
前記コントローラ（１７５）は、受信した論理アドレスの前記第１の部分、前記受信した論理アドレスの第２の部分（９０２Ｂ）、および前記インタリーブエントリサイズ識別子に基づいて、前記少なくとも１つのマップテーブルにおけるインタリーブエントリを識別するように構成され、前記コントローラは、前記受信した論理アドレスの第３の部分（９０２Ｃ）に基づいて、前記識別されたインタリーブエントリにおけるエントリ項目を識別するように構成されるシステム。
【００７２】
（８）  前記コントローラは、前記受信した論理アドレスをマスクして前記第１の論理アドレスの部分を抽出し、該抽出した第１の論理アドレスの部分を複数の整合値と比較してマッチングを識別するように構成される（７）記載のシステム。
【００７３】
（９）  前記インタリーブエントリサイズ識別子はマスク値であり、前記コントローラは、前記受信した論理アドレスを前記マスク値でマスクして前記第２の論理アドレスの部分を抽出し、該抽出した第２の論理アドレスの部分を複数の整合値と比較してマッチングを識別するように構成される（７）記載のシステム。
【００７４】
（１０）  前記インタリーブエントリサイズ識別子はマスク値であり、前記コントローラは、所望のインタリーブエントリサイズに基づいて複数のマスク値の中から１つを選択し、前記受信した論理アドレスを前記選択したマスク値でマスクして前記第２の論理アドレスの部分を抽出し、該抽出した第２の論理アドレスの部分を複数の整合値と比較してマッチングを識別するように構成される（７）記載のシステム。
【００７５】
好ましい実施形態の説明を目的として、本発明の特定の実施形態を本明細書に図示し説明したが、本発明の範囲から逸脱することなく図示し説明した特定の実施形態を多種多様な代替および／または同等の実施で置き換えてもよいことが当業者には理解されよう。化学、機械、電気機械、電気、およびコンピュータの分野における当業者は、本発明が非常に広範囲の実施形態において実施されうることをたやすく理解しよう。本願は、本明細書に述べた好ましい実施形態のあらゆる改変または変形を網羅するものである。したがって、本発明は特許請求の範囲およびその等価物によってのみ制限されるものと明らかに意図される。
【図面の簡単な説明】
【図１】４個のセルおよび１個のクロスバーを含むノードを示すブロック図である。
【図２】メモリが４個のセルに分散する分散メモリシステムを示すブロック図である。
【図３】４ウェイインタリーブおよび８ウェイインタリーブを示すテーブルである。
【図４】３ウェイインタリーブを示すテーブルである。
【図５】シングルキャッシュラインインタリーブの６４ウェイインタリーブドセルマップエントリを示すブロック図である。
【図６】インタリーブグループの間での顕著な特徴を識別するチャートである。
【図７】２のべき乗ではないメモリ量を含むセルにわたるインタリーブのブロック図である。
【図８】３個のセルにわたるインタリーブのブロック図である。
【図９】本発明の一実施形態によるメモリインタリーブを提供するセルマップの図である。
【図１】
0004348093.tif 000006
【図２】
0004348093.tif 000007
【図３】
0004348093.tif 000008
【図４】
0004348093.tif 000009
【図５】
0004348093.tif 000010
【図６】
0004348093.tif 000011
【図７】
0004348093.tif 000012
【図８】
0004348093.tif 000013
【図９】
0004348093.tif 000014