(57)【特許請求の範囲】
【請求項１】
キャッシュ行の小さい連続ブロックの直ちに上のビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットに経路指定することによって達成される複数キャッシュ行インターリービングおよびキャッシュ・メモリ・インデックス・フィールドの直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるキャッシュ効果インターリービングをサポートするコンピュータ・システムにおいて、バンク・ビットをメモリ・インターリービング方式に割り当てる方法であって、
前記コンピュータ・システムは、複数のメモリ・バスを持つメモリ構成を含んでおり、
２つ以上の前記メモリ・バスは、それぞれ、独立したメモリ・トランザクションを同時に実行することができ、それぞれの前記メモリ・バスは、複数のメモリ・バス・セグメントに接続されており、
第１のメモリ・バスに接続されたメモリ・バス・セグメント上の読み出し動作は、該第１のメモリ・バスに接続された他のメモリ・バス・セグメント上の書き込み動作とオーバーラップされることができ、
それぞれの前記メモリ・バス・セグメントは、１つまたは複数の前記メモリ・バンクに接続されており、該方法は、
異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記複数キャッシュ行インターリービングに割り当て、
異なるメモリ・バス・セグメントであって同じメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記キャッシュ効果インターリービングに割り当てること、を含む方法。
【請求項２】
キャッシュ行の小さい連続ブロックの直ちに上のビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットに経路指定することによって達成される複数キャッシュ行インターリービングおよび列境界の直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるＤＲＡＭページ・インターリービングをサポートするコンピュータ・システムにおいて、バンク・ビットをメモリ・インターリービング方式に割り当てる方法であって、
前記コンピュータ・システムは、複数のメモリ・バスを持つメモリ構成を含んでおり、
２つ以上の前記メモリ・バスは、それぞれ、独立したメモリ・トランザクションを同時に実行することができ、それぞれの前記メモリ・バスは、１つまたは複数のメモリ・バス・セグメントに接続されており、
任意の所与の時において、１つのメモリ・バス・セグメント上では、１つのメモリ・トランザクションのみが活動状態であることができ、
それぞれの前記メモリ・バス・セグメントは、１つまたは複数のメモリ・バンクに接続されており、該方法は、
異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記複数キャッシュ行インターリービングに割り当て、
共通のメモリ・バス・セグメントに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記ＤＲＡＭページ・インターリービングに割り当てること、を含む方法。
【請求項３】
さらに、異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記ＤＲＡＭページ・インターリービングに割り当てることを含む、請求項２に記載の方法。
【請求項４】
前記コンピュータ・システムは、キャッシュ・メモリ・インデックス・フィールドの直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるキャッシュ効果インターリービングをさらにサポートし、前記方法は、さらに、
異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記キャッシュ効果インターリービングに割り当てることを含む、請求項２に記載の方法。
【請求項５】
キャッシュ・メモリ・インデックス・フィールドの直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるキャッシュ効果インターリービングおよび列境界の直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるＤＲＡＭページ・インターリービングをサポートするコンピュータ・システムにおいて、バンク・ビットをメモリ・インターリービング方式に割り当てる方法であって、
前記コンピュータ・システムは、少なくとも１つのメモリ・バスを持つメモリ構成を含んでおり、それぞれの前記メモリ・バスは、複数のメモリ・バス・セグメントに接続されており、
任意の所与の時において、１つのメモリ・バス・セグメント上では、１つのメモリ・トランザクションのみが活動状態であることができ、
メモリ・バス・セグメント上の読み出し動作は、共通のメモリ・バスに接続された他のメモリ・バス・セグメント上の書き込み動作とオーバーラップされることができ、
それぞれの前記メモリ・バス・セグメントは、１つまたは複数のメモリ・バンクに接続されており、該方法は、
異なるメモリ・バス・セグメントであって同じメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記キャッシュ効果インターリービングに割り当て、
共通のメモリ・バス・セグメントに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記ＤＲＡＭページ・インターリービングに割り当てること、を含む方法。
【請求項６】
さらに、異なるメモリ・バス・セグメントであって同じメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記ＤＲＡＭページ・インターリービングに割り当てることを含む、請求項５に記載の方法。
【請求項７】
キャッシュ行の小さい連続ブロックの直ちに上のビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットに経路指定することによって達成される複数キャッシュ行インターリービング、キャッシュ・メモリ・インデックス・フィールドの直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるキャッシュ効果インターリービング、および列境界の直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成されるＤＲＡＭページ・インターリービングをサポートするコンピュータ・システムにおいて、バンク・ビットをメモリ・インターリービング方式に割り当てる方法であって、
前記コンピュータ・システムは、複数のメモリ・バスを持つメモリ構成を含み、
２つ以上の前記メモリ・バスは、それぞれ、独立したメモリ・トランザクションを同時に実行することができ、それぞれの前記メモリ・バスは、１つまたは複数のメモリ・バス・セグメントに接続されており、
任意の所与の時において、１つのメモリ・バス・セグメント上では、１つのメモリ・トランザクションのみが活動状態であることができ、
メモリ・バス・セグメント上の読み出し動作は、共通のメモリ・バスに接続された他のメモリ・バス・セグメント上の書き込み動作とオーバーラップされることができ、
それぞれの前記メモリ・バス・セグメントは、１つまたは複数のメモリ・バンクに接続されており、該方法は、
異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記複数キャッシュ行インターリービングに割り当て、
異なるメモリ・バス・セグメントであって同じメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記キャッシュ効果インターリービングに割り当て、
共通のメモリ・バス・セグメントに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、ＤＲＡＭページ・インターリービングに割り当てること、を含む方法。
【請求項８】
さらに、異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記キャッシュ効果インターリービングに割り当てることを含む、請求項７に記載の方法。
【請求項９】
さらに、異なるメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビット、または異なるメモリ・バス・セグメントであって同じメモリ・バスに接続されたメモリ・バンクを区別する１つまたは複数のバンク・ビットを、前記ＤＲＡＭページ・インターリービングに割り当てることを含む、請求項７に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・メモリ・システムに関するもので、種々のメモリ・インターリービング戦略の達成のためコンピュータ・システムにおけるメモリ・バンクに対するアドレス信号の経路指定を行う技術に関するものである。
【０００２】
【従来の技術】
コンピュータの分野において、プログラム命令およびデータをＤＲＡＭに記憶するすることは一般的である(ＤＲＡＭはDynamic Random Access Memoryの略称でダイナミック・ランダム・アクセス・メモリを意味する)。ＤＲＡＭメモリ・セルの最も一般的タイプは、小さいコンデンサに接続された単一トランジスタである。１データ・ビットは、メモリ・セル上のコンデンサに対する電荷の存在または欠如によって表される。セルは、行と列からなるアレイに構成される。
【０００３】
図１は、２０４８行と２０４８列を持つ４メガビットのメモリ・アレイ１２に基づく従来技術の典型的メモリ・チップのブロック図である。メモリ・チップ１０は、４ビット幅のデータ入出力経路を持つ。行デマルチプレクサ１５は、１１ビット行アドレスを受け取ってメモリ・アレイ１２に提供される行選択信号を生成する。ページ・バッファ１４は、データの行に関するアレイ１２からの一時的記憶バッファの役をする。列マルチプレクサ１６は、９ビット列アドレスを受けとって、４ビット・データ入出力経路をバッファ１４の選択された部分へ多重送信する。
【０００４】
メモリ・アクセスの形態に従って、行と列の間の動作は非常に異なる。ページ・バッファ１４は、セルの単一行から形成される。これらセルは、読み書き両方のための一時的段階領域として機能する。典型的ＤＲＡＭアクセスは、１行アクセス・サイクル、１または複数列アクセス・サイクルおよび１事前電荷サイクルからなる。事前電荷の詳細は後述される。
【０００５】
行アクセス・サイクル(またはページ開きと呼ばれる)は、1つの行を選択するため行デマルチプレクサ１５に行アドレス・ビットを提示することによって実行される。その結果、その行の全内容がページ・バッファ１４に転送される。この転送は並列的に実行され、当該行におけるすべてのメモリ・セルは空にされる。転送は、各行コンデンサに存在するどのような電荷をもページ・バッファ１４へロードする増幅器セットへ駆動することによって実行される。この動作は、また、アクセスされている行のコンデンサの内容を消去する。典型的従来技術ＤＲＡＭに関する限り、この動作は約３０ns(ナノ秒)を要する。
【０００６】
次に、特定の列または列セットを選択するため列アドレス・ビットを提示することによって列アクセス・サイクルが実行され、ページ・バッファ１４へのデータの読み書きが行われる。列アクセス・サイクルの間、ページ・バッファ１４は小規模ＲＡＭの役をする。この動作のための典型的アクセス遅延は、データの最初の４ビットを受け取るため約３０ns、後続のデータ４ビット毎に約１０nsである。異なる列にアクセスするためそのページに対するいくつかの連続的アクセスが実行されにるので、行全体の読み書きは迅速に行われる。図１に示されているような典型的４ビット幅ＤＲＡＭに関する限り、１ページ２０４８ビット(すなわち２５６バイト)は、５１２回のアクセス、従って５.１４μs(マイクロ秒)を要する。従って、ＤＲＡＭチップ１０のバンド幅は、４９.８メガバイト／秒である。２、３の並列ＤＲＡＭチップが非常に高いバンド幅をいかに生むことができるか容易に理解することができるであろう。
【０００７】
メモリ・アクセスの最終サイクルは、事前電荷サイクルであり、これは当業界においてページ閉じとしても知られている。上述のように、行アクセス・サイクルはバッファ１４に読み取られた行のコンデンサの内容を破壊する。別の行がバッファ１４に読み出される前にページ・バッファ１４の内容はメモリ・アレイ１２へ書き戻されなければならない。このプロセスが事前電荷サイクルと呼ばれている。大部分の従来技術ＤＲＡＭチップにおいては、当該行の内容がバッファ１４に転送される時その開かれた行のアドレスはラッチされ、そのページが開いている限りそのアドレスは保持されるので、アドレスは必要とされない。典型的には、事前電荷サイクルは約４０ns続く。
【０００８】
通常の読み書込みアクセス・サイクルに加えて、大部分のＤＲＡＭは、また、リフレッシュ・サイクルを必要とする。各メモリ・セルを構成する小さいコンデンサは漏電に苦しみ、短い時間間隔の後、電荷が放出される。データの損失を防ぐため、各行は、特定の最小限の率で事前電荷(すなわち開閉)されなければならない。、必要とされるリフレッシュ・サイクルの回数がＤＲＡＭの全バンド幅の小さい一部分であるように、コンデンサのサイズと許容される漏電はアレイのサイズとバランスされる。
【０００９】
典型的ＤＲＡＭの設計においては、１５.６マイクロ秒につき１行の率で行をリフレッシュすれば、データを維持するため十分である。従って、ページ・バッファ１４とのデータの読み書きは多くの連続的回数で実行することができるけれども、ページ・バッファ１４は、その他の行がリフレッシュされることが可能となるように周期的に閉じられなければならないので、際限なく開いた状態を維持することはできない。
【００１０】
現在、ＤＲＡＭには、非同期ＤＲＡＭおよび同期ＤＲＡＭという２つの代表的タイプがある。非同期ＤＲＡＭはクロック入力を持たない。クロックに代えて、ＤＲＡＭが適切に動作するためには、種々の信号およびアドレスの間の複雑なタイミング制約が満たされなければならない。非同期ＤＲＡＭに関して、"行アドレス・ストローブ"(row address strobeの頭文字をとってＲＡＳと略称される)と"列アドレスス・トローブ"(column address strobeの頭文字をとってＣＡＳと略称される)という２つの主要制御ピンがある。行を開くためには、ＲＡＳがオンにされる(典型的には低にされる)。行を閉じるには、ＲＡＳがオフにされる。列にアクセスするにはＣＡＳがオンにされ、別の列にアクセスするには、ＣＡＳがオフにされ、次に再度オンにされなければならない。ＲＡＳがオンにされている間ＣＡＳは複数回オン/オフされることができる。
【００１１】
非同期ＤＲＡＭと対照的に、同期ＤＲＡＭはクロック入力を受け入れ、ほとんどすべてのタイミング遅延がこのクロックに対して指定される(同期ＤＲＡＭは、synchronous DRAMからＳＤＲＡＭと略称される)。ＳＤＲＡＭは、更に、それぞれ独立して動作することができる２乃至８の論理アレイ(すなわちバンク)を通常備える。別々のＲＡＳおよびＣＡＳを使用するのではなく、各バンクに関する信号、コマンド・シーケンスがＤＲＡＭに送られ、ページ開き、列アクセスおよびページ閉じ機能が同期して実行される。バンク選択のため、付加的アドレス・ビットが使用される。ＳＤＲＡＭによって提供される主な利益の１つは、パイプライン動作である。１つのバンクがアクセスされている間、背景動作で別の１つのバンクをリフレッシュまたは事前電荷させることができる。
【００１２】
上記のような相違はあるが、ＳＤＲＡＭ構成は、非同期ＤＲＡＭ構成と非常に類似している。事実、非同期ＤＲＡＭのための多くのメモリ・コントローラは、複数バンク、および、背景リフレッシュならびに事前電荷動作をサポートする。
【００１３】
従来技術において、並列的にアクセスされる一群の非同期ＤＲＡＭを表すため、"バンク"という用語が伝統的に使用されてきた。上述のような適切な行ならびに列アドレスとともに、バンク選択信号を生成することによってバンクがアクセスされた。しかし、単一のＳＤＲＡＭチップが複数のバンクを持つ。従って、並列的にアクセスされる一群のＳＤＲＡＭチップを表すため、用語"ランク"が使用される。ＳＤＲＡＭランクの経路指定のため更にバンク・ビットが付加される。ＳＤＲＡＭまたは非同期ＤＲＡＭのいずれかをサポートする能力を持つシステムにおいて、典型的には、非同期ＤＲＡＭにアクセスしている時に使用される比較的高位のバンク・ビットが、ＳＤＲＡＭをアクセスする場合ランク・ビットとして使用され、非同期ＤＲＡＭにアクセスしている時に使用される比較的低位のバンク・ビットがＳＤＲＡＭに経路指定される。ＳＤＲＡＭランクの範囲内の各バンクがそれ自身のページ・バッファ・セットを持つ点に留意する必要がある。
【００１４】
ＤＲＡＭチップは、種々の形態でメイン・メモリ・システムを形成するように構成されることができる。典型的には、メイン・メモリ・システム・バスにシステム・バスと同じバンド幅を備えることによって、システム・バスの幅および速度がメイン・メモリ・システム・バスの幅および速度に同期させられる。通常、システム・バスは、個々のＤＲＡＭチップによって提供されるデータＩ／Ｏインタフェースより迅速で幅がより広い。従って、複数のＤＲＡＭチップがシステム・バスのバンド幅に合うように配置される。例えば、特定のコンピュータ・システムが６６ＭＨｚで動作する１６バイ幅データ・バスを持つとすれば、３３ＭＨｚで動作し４ビット幅ＤＲＡＭチップで構築されるコンピュータ・システムのメイン・メモリ・サブシステムは、典型的には、各バンクに配置される６４個のＤＲＡＭを持つ。このような配置によって、各バンクには、システム・データ・バスのバンド幅と一致するほぼ１ギガバイト／秒のバンド幅が備えられる。バンド幅が一致しなければ、バッファ・メモリ・アクセスに小規模のＦＩＦＯを使用してＦＩＦＯがいっぱいの時メモリ・アクセスを禁止するような別の技術を利用することもできる。
【００１５】
単一のバンクを形成するＤＲＡＭチップのページ・バッファをここで考察する。すべての個々のページ・バッファは並列してアクセスされ、より大きい"論理的"ページ・バッファを形成するように組み合わされる。図１に示されるように、各ＤＲＡＭチップ１０は、２,０４８ビットすなわち２５６バイトのページ・バッファ１４を持つ。３２のチップが並列に配置されれば、論理ページ・バッファは８,１９２バイト幅である。列をインデックスするため低位アドレス・ビットが使用されるとすれば、論理メモリ・アドレスの低位１３ビットにおいてのみ相違するアドレスを持つ２つのメモリ位置は同じ行にあり、従って、１つの論理ページ・バッファにおいて同時に利用できる。
【００１６】
ＤＲＡＭチップの各バンクはそれ自身のページ・バッファ・セットを持つ。従って、コンピュータ・システムにおいて提供されるメモリ・バンク毎に１論理ページ・バッファが存在する。バンクを選択するため高位アドレス・ビットが使用されるとすれば、物理メモリの最初の１６メガバイトに関して８キロバイトの論理ページ・バッファがあり、物理メモリの次の１６メガバイトに関して８キロバイトの論理ページ・バッファがあり、以下同様に各１６メガバイトに関して８キロバイトの論理ページ・バッファがある。
【００１７】
バンク選択ビットを持つＳＤＲＡＭを上述のシステムが利用したとすれば、ＳＤＲＡＭの内部バンクは、ランク選択ビットして使用される高位バンク・ビットおよびＳＤＲＡＭに経路指定される低位バンク・ビットを持つ相対的に独立したＤＲＡＭバンクの集合と見なすことができる。従って、本発明の以下の例示の目的からすれば、独立にアドレス指定されるチップの集合から導出されるメモリ・バンクおよびＳＤＲＡＭチップの範囲内のメモリ・バンクは、ＳＤＲＡＭチップの範囲内のメモリ・バンクの一部がＳＤＲＡＭチップに経路指定される点を除いて、両者の間にほとんど相違はない。
【００１８】
上述したシステムにおいて読み取られる典型的キャッシュ行を次に考察する。最初に該当するバンクが選択され、次に１つの行が論理的ページ・バッファに転送される。これは約３０nsを要する。次に、４つの１６バイト・チャンク(chunk)が論理ページ・バッファから読み取られる。これは、約６０ns(すなわち最初の１６バイト・チャンクに関して３０ns、残りの３つの１６バイト・チャンクの各々毎に１０ns)を要し、完全な１キャッシュ行を生成する。最後に、論理ページ・バッファが閉じられ、これには４０nsがかかる。所要時間の合計は１３０nsである。最初のワードが読み取られる前の時間(すなわちページ開きおよび最初の列のアクセスに要する時間)は６０nsであった。使用可能な最初のワードはＣＰＵによって必要とされる最初のワードであるように多くのシステムは構成されている。最初のワードを取り出すために必要とされる時間は、当業界において、"臨界ワード呼び出し時間(critical word latency)"として知られている。
【００１９】
同じメモリ・バンクへの連続した参照が同じ行(すなわちページ)にアクセスする可能性にメモリ・コントローラが賭けることは当業界において一般的である。そのようなメモリ・コントローラは、ページ・モード・メモリ・コントローラとして知られている。メモリ・コントローラがメモリ・アクセス要求を処理して、アクセスされる必要がある行がすでに論理ページ・バッファに存在することを検出する場合、ページ・ヒットが起きる。ページ・モード・メモリ・コントローラにおいては、ページはアクセスの後閉じられることはなく、そのバンクへのアクセスが異なるページを必要とするかあるいはリフレッシュ・サイクルが起きる時にのみ閉じられる。
【００２０】
後続のメモリ・アクセスが実際に同じページに対するものであれば、臨界ワード呼び出し時間は、６０nsからわずか１０nsへと短縮される。これは大幅な節約である。後続メモリ・アクセスが同じページに対するものでない場合、ペナルティが負わされる。新しいページを開くことができる前に、論理ページ・バッファに記憶されている古いページが事前電荷サイクルを受けなければならず、従って、臨界ワード呼び出し時間は、４０ns(事前電荷)プラス３０ns(行アクセス)プラス３０ns(最初の使用可能ワード)すなわち１００nsとなり、各アクセスの後論理ページ・バッファが事前電荷される場合に達成される６０nsに比較してこの時間は非常に大きい。
【００２１】
次のアクセスが同じページ上にある確率をpとすれば、平均臨界ワード呼び出し時間は、
{30ns * p + 100ns * (1-p)}または(100ns - 70ns * p)
である。pが増大すれば臨界ワード呼び出し時間は少なくなる。賭けが釣り合う点は、平均臨界ワード呼び出し時間が６０nsであり、これは、上述のように、各メモリ・アクセスの後論理ページ・バッファが閉じられる場合に達成される臨界ワード呼び出し時間である。従って、各アクセスの後論理ページ・バッファを開けたままとすることに利益が得られるのは、連続的メモリ・アクセスが同じページを参照する可能性が０.５７以上の場合である。
【００２２】
ページ・モード・メモリ・コントローラを持つコンピュータ・システムにおいて、メモリ・コントローラが処理することができる限りの速度で要求がコントローラに送られると仮定すると、バンクにおける１つのページが最初にアクセスされるたびごとに、古いページを閉じるための事前電荷サイクルとその新しいページを開くための行アクセスが必要とされ、合計７０nsかかる。上述のように、開いているページからの各キャッシュ行アクセスは６０nsを必要とする。このように、平均キャッシュ行アクセスは、60ns + 70ns(1-p)を必要とする。対照的に、上述のように、非ページ・モード・メモリ・コントローラは９０nsを必要とする。
【００２３】
従来技術において、多くのページ・モード・メモリ・コントローラは、列ビットを単純にアドレスの最下位ビットに対応付けし、行ビットを列ビットの直後のアドレス・ビットに対応付けし、最後に、アドレスの最上位ビットへバンク選択ビットを対応付けしてきた。この構成を所与として、ページ境界をまたぐような大きい連続メモリ・ブロックがアクセスされなければならないと仮定する。メモリが単一ページ・バッファからアクセスされている限り、事前電荷サイクルは必要とされない。しかしながら、ページの端部に達して次のページが必要とされる時、古いページを記憶するため事前電荷サイクルが必要とされ、新しいページにアクセスするため行アクセス・サイクルが必要とされる。行ビットが上述のように配置されているので、(メモリ・ブロックがバンク境界を越えない限り)必要とされる次の行は前の行と同じバンクにある。
【００２４】
米国特許第5,051,889号は、ページ境界を越える連続メモリをアクセスする技術の改良を開示している。上記特許は、基本的には、第１バンク選択ビットを第１の行選択ビットとスワップすることによって、偶数メモリ・ページが第１のバンクに記憶され、奇数メモリ・ページが第２のバンクに記憶されることを可能にする。従って、一連の順次メモリ・アクセスがページ境界を越える連続メモリ・セグメントをアクセスする時、メモリ・アクセスもまたバンク境界を越えるので、第１のバンクの事前電荷サイクルが第２のバンクの行アクセス・サイクルとオーバーラップされる結果となる。上記特許に記載のシステムは、また、２つの連続するページを一度に開くことを可能にすることによって、２つの連続ページを越える頻繁にアクセスされるメモリ位置を持つプログラムが比較的高いヒット率を達成することを可能にする。
【００２５】
類似した技術が、"Digest of Papers of the 41st IEEE Computer Society International Conference on February 25-28, 1996"の中のMike Bell、Tom Holman両氏著の論文"PentiumPro Workstation/Server PCI Chipset"に記載されている。両氏によって提唱されている技術は、アドレス・ビット置換法と呼ばれ、上記米国特許と同様に、バンク・ビットと行ビットの置換を伴う。
【００２６】
マルチプロセッサ・システムにおいて、ページ・ヒット率を増加させることは望ましいが、メモリ・アクセスを異なるバンクの間に分散させることもまた望ましい。これを実行する最も簡単な方法は、各プロセッサがそのアクセスを異なるバンクを越えるように分散させることを保証することである。この機能を提供する当業界で既知の１つの方法は"キャッシュ行インターリービング"と呼ばれている。キャッシュ行インターリービングは、基本的には、キャッシュ行のすぐ上のアドレス・ビットへ１つまたは複数のバンク・ビットを経路指定するものである。従って、ある１つのキャッシュ行が第１のバンクに記憶され、次のキャッシュ行が第２のバンクに記憶される。非ページ・モード・コントローラにおいては、連続キャッシュ行がアクセスされる場合、行アクセス・サイクルと事前電荷サイクルのオーバーラップが可能となる。また、各プロセッサのメモリ・アクセスがメモリ・バンクを越えて均一に分散されるので、複数のプロセッサが連続的に同じバンクを求めて競合することがないことが保証される。当然のことながら、キャッシュ行インターリービングは、多くのバンクを越えて複数のアクセスを分散させることを追求するが、一方、ページ・モード・コントローラは、複数アクセスを同一バンクへ経路指定することを追求するので、これら技術は対立する。
【００２７】
【発明が解決しようとする課題】
典型的コンピュータ・システムにおいて、通常、ＳＩＭＭおよびＤＩＭＭの両方またはいずれかによってメモリが提供される。ＳＩＭＭはsingle in-line memory moduleの略称であり、また、ＤＩＭＭはdual in-line memory moduleの略称である。ＤＩＭＭおよびＳＩＭＭは、典型的には、非同期ＤＲＡＭチップまたはＳＤＲＡＭチップを使用して構築される。コンピュータ・システムは、通常、メモリ・モジュールを収納するＳＩＭＭおよびＤＩＭＭの両方またはいずれかの一連のソケットを有する。ＳＩＭＭおよびＤＩＭＭは、種々の形態に構成され、異なる種類のチップから構築され、また、かならずしもすべてのソケットが装着される必要はないので、コンピュータ・システムのメモリ・コントローラは、種々のランク、バンク、行および列ビットへアドレス・ビットを経路指定する能力を備えていなければならない。ページ・インターリービングの提供は、このアドレス・ビット経路指定を極めて複雑にする。従って、複数のメモリ・インターリービングをサポートするコンピュータ・システムにおいてメモリ・インターリーブ方式を効率的に決定する方法および装置が必要とされている。
【００２８】
【課題を解決するための手段】
発明の課題を解決するため、本発明は、複数のメモリ・インターリービング方式をサポートするコンピュータ・システムにおいてバンク・ビットをメモリ・インターリービング方式に割り当てる方法を含む。該コンピュータ・システムが複数の階層を持つメモリ構成を含み、上記複数階層の異なる階層によって異なる形態で並列メモリ・トランザクションがサポートされる。また。該方法は、並列メモリ動作をサポートする１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数のメモリ・インターリービング方式のうち、並列メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第１のメモリ・インターリービング方式に割り当てるステップ、および、並列メモリ動作をサポートしない１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数メモリ・インターリービング方式のうち、順次メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第２のメモリ・インターリービング方式に割り当てるステップを含む。
【００２９】
本発明は、複数のインターリービングをサポートするコンピュータ・システムにおいてインターリービング方式を決定する方法および装置を提供する。本発明の１つの側面において、利用できるバンク・ビットの数に基づいてメモリ・インターリーブ方式を決定するためメモリ・インターリーブ方式照合テーブルが使用される。
【００３０】
別の側面において、バンク・ビットの分類に基づいてバンク・ビットにメモリ・インターリーブ方式を割り当てることによって並列メモリ動作の比率が増加する。本発明によって提供されるメモリ・コントローラは、独立の並列メモリ・トランザクションをサポートする別々のメモリ・バスを備え、そのメモリ・バスの各々は、メモリ・バッファ／マルチプレクサ・ユニットに接続され、メモリ読み取り動作がメモリ書き込み動作とオーバーラップすることを可能にするメモリ・バス・セグメントを備える。メモリ・バス・セグメントの各々は、所与の任意の時間に単一メモリ動作を運ぶことができる能力を持つ。メモリ・バスを区別するバンク・ビットはクラスＡとして分類され、メモリ・バス・セグメントを区別するバンク・ビットはクラスＢとして分類され、メモリ・バス・セグメント上のバンクを区別するバンク・ビットはクラスＣとして分類される。
【００３１】
メモリ・コントローラは、複数キャッシュ行インターリービング、キャッシュ効果インターリービングおよびＤＲＡＭページ・インターリービングをサポートする。複数キャッシュ行インターリービングは、いくつかのバンクを越えてメモリ・ホットスポットを分散させるように試みるので、複数のＣＰＵが同時に同一メモリ・バンクにアクセスしない傾向がある。複数キャッシュ行インターリービングに関連するメモリ・アクセス・パターンは、独立していて無関係である傾向がある。複数書き込みが同時に発生し、複数読み取りが同時に発生し、また、読み取りならびに書き込みが同時に発生する可能性がある。従って、クラスＡバンク・ビットが複数キャッシュ行インターリービングに最適に割り当てられる。
【００３２】
ダーティ・キャッシュ行は、プロセッサによって変えられたメモリ内容を含むキャッシュ行であり、そのキャッシュ行内容は、キャッシュ行が置き換えられる前にメイン・メモリへ書き戻されなければならない。キャッシュ効果インターリービングは、同一セットに読み込まれるキャッシュ行と異なるＤＲＡＭページに書き込まれるキャッシュ・セットからダーティ・キャッシュ行が投げ出されることを可能にする。従って、典型的には、読み取りおよび書き込み動作がペアで発生する。１つのキャッシュ行が１つのバンクからキャッシュに読み出されている間に、別のキャッシュ行がそのキャッシュから投げ出され、別のバンクへ書き込まれる。従って、クラスＢバンク・ビットが、キャッシュ効果インターリービングに最適に割り当てられる。クラスＡバンクビットもまたキャッシュ効果インターリービングに効果的に割り当てられることができるが、特にマルチプロセッサ・システムにおいては、クラスＡバンクビットを複数キャッシュ行インターリービングのためだけに割り当てる方が望ましい。
【００３３】
ＤＲＡＭページ・インターリービングは、連続する(またはすぐ近くの)ＤＲＡＭページが別々のバンクに記憶されることを可能にするので、プログラムは、複数のバンクに開いた状態のままのメモリ・ホットスポットを持つことができる。ＤＲＡＭページ・インターリービングに関連するメモリ・アクセス・パターンは、本質的に順次であり、同じタイプである傾向がある。例えば、プログラム・コードがキャッシュにロードされる時、プログラム・コードは順次ロードされ、メモリ動作の大部分はメモリ読み込み動作である。同じように、プログラムがデータのブロックをメモリに書き戻す時、データのブロックが先ずキャッシュに書き込まれ、データが記憶される対応するキャッシュ行はすべてダーティである。同様にダーティとなっているキャッシュ行が置き換えられる時、キャッシュから投げ出されるキャッシュ行は、順次であり、メモリ動作の大部分はメモリ書き込み動作である傾向がある。従って、クラスＣバンク・ビットがＤＲＡＭページ・インターリービングに最適に割り当てられる。クラスＡバンク・ビットおよびクラスＢバンク・ビットもまたＤＲＡＭページ・インターリービングに最適に割り当てられることができるが、クラスＡバンク・ビットは複数キャッシュ行インターリービングに、バンクＢビットはキャッシュ効果インターリービングにそれぞれ割り当てられる方が望ましい。
【００３４】
本発明に従って、メモリ・インターリービング方式照合テーブルを使用して、メモリ・インターリービング方式がバンク・ビットの分類に基づいたバンク・ビットに割り当てられる。また、アルゴリズムを使用してバンク・ビットの分類に基づいたバンク・ビットにメモリ・インターリービング方式を割り当てることも可能である。
【００３５】
本発明は、バンク・ビットにインターリービング方式を割り当てる便利で構成の容易な方法を提供する。各インターリービング方式に割り当てられるバンク・ビットの数はページ・ヒット率に影響を及ぼす。本発明は、更に、バンク・ビットの分類に基づいたバンク・ビットにインターリービング方式を割り当てることによって、並列メモリ・トランザクションの割合が増加することを可能にする。
【００３６】
【発明の実施の形態】
本発明は、複数のインターリービングをサポートするコンピュータ・システムにおいて種々のバンク・ビットに対するメモリ・インターリービング方式の割り当てを決定する方法および装置を提供する。図２は、コンピュータ・システム１８のブロック図である。本発明は、コンピュータ・システム１８を参照して記述されるが、本発明の概念をその他のコンピュータ・システム構成に適用することが可能である点は当業者に認められることであろう。
【００３７】
コンピュータ・システム１８は、複数の中央処理装置(ＣＰＵ)およびレベル１ならびにレベル２キャッシュ・メモリを含む。ＣＰＵおよびキャッシュ２０は、アドレス・バスおよび制御／データ・バスを経由してメモリ・コントローラ２２に接続される。メモリ・コントローラ２２は、米国特許出願第08/962,490号に記載されているような複数のメモリ・インターリービング方式をサポートする柔軟なビット経路指定機能を含む。本発明に従って、メモリ・コントローラ２２は、インターリービング方式照合テーブル２４を使用するように構成またはプログラムされている。
【００３８】
メモリ・コントローラ２２は、メモリ・バス０およびメモリ・バス１という２つのメモリ・バスを提供する。メモリ・バスは、独立していて、別々のメモリ・トランザクションを同時に搬送する。各メモリ・バスは、メモリ・バッファ／マルチプレクサ・ユニットに接続される。例えば、メモリ・バス０はメモリ・バッファ／マルチプレクサ・ユニット２６に接続され、メモリ・バス１はメモリ・バッファ／マルチプレクサ・ユニット２８に接続される。各メモリ・バッファ／マルチプレクサ・ユニットはそれぞれ４つのメモリ・バス・セグメントを備え、各メモリ・バス・セグメントは３つのメモリ・スロットを接続する。例えば、メモリ・バッファ／マルチプレクサ・ユニット２８のメモリ・バス・セグメント１は、メモリ・スロット１５、１６および１７を接続している。メモリ・スロットは、典型的には、ＤＩＭＭおよびＳＩＭＭのようなメモリ・モジュールを収納するように構成されたソケットである。
【００３９】
各メモリ・バッファ／マルチプレクサ・ユニットは、メモリ・モジュールから読み取られるデータを受け取るバッファを含む。しかしながら、メモリ・バッファ／マルチプレクサ・ユニットは、１つのメモリ・バス・セグメント上のメモリ・モジュールからのデータ受け取りを待っている間、他のメモリ・セグメント上のメモリ・モジュールに対する書き込み動作を始動することができる。従って、メモリ・バッファ／マルチプレクサ・ユニットは読み書き動作をオーバーラップさせることができる。注：単一メモリ・バス・セグメント上では１時点においてただ１つのメモリ動作だけが活動的あることができる。
【００４０】
特定のメモリ・インターリービング方式に関連する並列メモリ動作のパーセンテージは図２に示されるメモリ構成の範囲内のメモリ・バンクの位置に従うということを認識することによって本発明の主要な利益の１つが達成される。例えば、コンピュータ・システム１８が２つのメモリ・バンクを備えていると仮定する。１つのバンクがスロット０にあり、別のバンクがスロット１２にあるとすれば、バンクの各々がメモリ・コントローラ２２から別々のメモリ・バスによってサービスされるので、両方のバンクはどのようなタイプのメモリ・トランザクションに関しても同時に活動的であることができる。対照的に、１つのバンクがスロット０にあり、別のバンクがスロット３にある(すなわち両方のバンクは同じメモリ・バッファ／マルチプレクサ・ユニットによってサービスされるが各バンクは別々のメモリ・バス・セグメント上にある)とすれば、一方のバンクが読み取り動作を受ける間他方のバンクは書き込み動作を受けることは可能できる。しかしながら、上述のメモリ・バッファ／マルチプレクサ・ユニットの制約のため両方のバンクは同時に同じタイプの動作を受けることができない。最後に、両方のバンクが同じメモリ・バス・セグメント上にあれば、１時点にただ１つのメモリ動作だけが活動的であることができる。
【００４１】
本発明に従って、バンク・ビットがメモリ・システムの階層および機能性に従って分類される。図２においてで、バンク・クラスＡは、メモリ・バス０とメモリ・バス１の間を区別するバンク・ビットを意味する。バンク・クラスＢは、メモリ・バス・セグメントの間を区別するバンク・ビットを指す。最後に、バンク・クラスＣは、メモリ・モジュールの範囲内の複数のバンクを含め、１つのメモリ・バス・セグメント上のメモリ・バンクの間を区別するバンク・ビットを指す。
【００４２】
本発明の詳細な記述に進む前に、本発明によってサポートされる種々のインターリービング方式を、各方式に関して典型的なメモリ・アクセス・パターンと共に、考察する。米国特許出願第08/962,490号は、８乃至１１ビットの列ビット、１１乃至１４ビットの行ビット、０乃至３ビットのバンク・ビット、および、１乃至少くとも６ビットのランク・ビットをサポートするメモリ・コントローラの実施形態を開示している。注：ランク・ビットは物理メモリ・ソケットを区別するビットを意味し、一方、バンク・ビットは単一メモリ・モジュールの範囲内でバンクを選択するビットを意味する。本発明の記述の目的から、ランク・ビットおよびバンク・ビットは機能的に等しいとする。
【００４３】
本発明は、ＤＲＡＭページ・インターリービング、キャッシュ効果インターリービングおよび複数キャッシュ行インターリービングという３つのタイプのインターリービングをサポートする。以下の記述において、これら３つのタイプのインターリービング方式は、それぞれの英語の名称の頭文字をとって、ＤＲＡＭページ・インターリービング(すなわちDRAM page interleaving)は"ＤＰＩ"、キャッシュ効果インターリービング(すなわちcache effect interleaving)は"ＣＥＩ"、複数キャッシュ行インターリービング(すなわちmulti-cache line interleaving)はＭＣＩとそれぞれ略称される場合がある。本発明は上記以外のインターリビング方式をサポートするように構成されることができる点は注意されるべきである。
【００４４】
(連続ページ・インターリービングとしても知られている)ＤＲＡＭページ・インターリービングは当業界において周知であり、連続するＤＲＡＭページを別々のバンクに記憶させることを可能にする。ＤＲＡＭページ・インターリービングは、列境界の直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成される。ＤＲＡＭページ・インターリービングは、複数ＤＲＡＭページにまたがるメモリ・ホットスポットが別々のＤＲＡＭページに開いた状態のままとどまることを可能にする。上記米国特許出願によって開示されたメモリ・コントローラは、最高８つのバンクまたはランク・ビットのＤＲＡＭページ・インターリービングへの割り当てをサポートする。
【００４５】
キャッシュ効果インターリービングは、米国特許出願第08/963,673号に開示されている。キャッシュ効果インターリービングは、同じインデックスを持つキャッシュ行が同じインデックスを持つ確率を大幅に増加させるが、異なるタグは異なるバンクに記憶される。キャッシュ効果インターリービングは、１つのキャッシュ・セットから投げ出されるダーティ・キャッシュ行が同一セットに読み取られているキャッシュ行とは異なるＤＲＡＭページに書き込まれることを可能にする。典型的には、一連のキャッシュ行が１つのＤＲＡＭページからキャッシュに読み取られる際、対応する一連のキャッシュ行が別のＤＲＡＭページに投げ出される。キャッシュ効果インターリービングがない場合、１セットの範囲内のキャッシュ行が同一ＤＲＡＭページにマップされているので、キャッシュ行が読み取られ投げ出される時、ＤＲＡＭページの開閉が反復されなければならない。キャッシュ効果インターリービングは、キャッシュ・メモリ・インデックス・フィールドの直ちに上にあるビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットのいずれかに経路指定することによって達成される。上記引用米国特許出願第08/962,490号は、キャッシュ効果インターリービングに対する最高５ビットのバンクまたはランク・ビットの割り当てをサポートしている。
【００４６】
最後に、複数キャッシュ行インターリービングは、上記引用米国特許出願第08/962,490号によって開示されている１つのタイプのインターリービングである。上述のように、従来技術のキャッシュ行インターリービングはＤＲＡＭページ・インターリービングと対立している。一方、ＤＲＡＭページによって提供されるように、ページ・ヒット率を増加させるため、同一バンクに対して連続的メモリ・アクセスを行わせることが望ましい。更に一方では、マルチプロセッサ・システムにおいて、少なくとも２つのプロセッサが同じバンクに襲いかからないことが望ましい。従来技術において、キャッシュ行インターリービングは、連続的キャッシュ行が異なるバンクにアクセスするようにさせることによってこの問題に対処した。各プロセッサのメモリ・アクセスが複数のバンクにわたって分散しているので、２つのプロセッサが同一バンクに襲いかかることはないであろう。複数キャッシュ行インターリービングは、同一の小さい連続したブロックが別々のＤＲＡＭページに記憶されていても、同一の小さい連続したブロックに含まれるキャッシュ行が１つのＤＲＡＭページに含まれることを可能にする。
【００４７】
例えば、８連続キャッシュ行の最初のブロックが第１のＤＲＡＭに記憶され、８連続キャッシュ行の第２のブロックが第２のＤＲＡＭに記憶され、以下同様に記憶されているとする。複数キャッシュ行インターリービングは、一定数の(例えば８または１６の)キャッシュ行アクセスを同一バンクに対して行いたい(従ってＤＲＡＭページ・インターリービングの利益を享受したい)という欲求とキャッシュ行の連続ブロックを別々のバンクに向かわせたいという欲求のバランスを図る。隣接キャッシュ行を別々のバンクに記憶させるキャッシュ行インターリービングに比較して、複数キャッシュ行インターリービングは、プロセッサによってアクセスされているプログラムのホットスポットが複数バンクにわたって分散される確率を高く維持しながら、一定レベルのＤＲＡＭページ・インターリービングを許容することによって、ページ・ヒット率を大幅に向上させる。キャッシュ行の小さい連続ブロックの直ちに上のビットに対応する１つまたは複数のアドレス・ビットをバンク・ビットまたはランク・ビットに経路指定することによって複数行インターリービングが達成される。上記引用米国特許出願第08/962,490号は、複数キャッシュ行インターリービングに対する２ビットまでのアドレス・ビットの割り当てをサポートしている。
【００４８】
図３乃至図５は、上記引用米国特許出願第08/962,490号によって開示されているメモリ・コントローラの設計対象であるコンピュータ・システムのアーキテクチャを示している。アーキテクチャは、６４ビット幅アドレス／データ・バスを提供する。しかし、物理メモリは、最高２５６ギガバイトの物理メモリを提供する３８ビットの論理アドレスだけを使用する。図３の論理アドレス・マップ３０は、コンピュータ・システム６４の６４ビット幅アドレスを図示する。データ・バスもまた６４ビット幅であって８バイト単位でデータにアクセスするので、最初の３つのアドレス・ビットA[0]-A[2]は、プロセッサによって外部に提供されない。
【００４９】
図４は、キャッシュ・メモリ構成マップ３２を示している。キャッシュは、４メガバイト容量を持ち、６４バイト幅キャッシュ行および１４ビット・インデックスを持つ。最初の６ビットA[O]-A[5]はキャッシュ行を表す。次の１４ビットA[6]-A[19]が、インデックスを形成して、各セットが４キャッシュ行エントリを含むｌ６,３８４セットのうちの１つを参照する。次の１８ビットA[20]-A[37]はタグを形成する。１つのタグ・エントリは、キャッシュにおける各キャッシュ行エントリに関連づけられる。
【００５０】
図４に示されているように、タグの最下位５ビット(すなわちビットA[20]-A[24])に対応するアドレス・ビットにおいて、キャッシュ効果インターリービング・ビットが利用可能となっている。複数キャッシュ行インターリービング・ビットは、キャッシュ行境界より上の４ビットから始まる２ビットA[9]-A[10]である。この複数キャッシュ行インターリービング・ビットは、２つのバンクまたはランクの間の１６キャッシュ行ブロックのインターリービング、あるいは、４つのバンクまたはランクの間の８キャッシュ行ブロックのインターリービングを可能にする。キャッシュ効果インターリービング・ビットおよび複数キャッシュ行インターリービング・ビットの位置はキャッシュ構成によって決定される。特に、複数キャッシュ行インターリービング・ビットはキャッシュ行サイズによって決定され、キャッシュ効果インターリービング・ビットは、インデックスとタグの間の境界によって決定される。
【００５１】
図５は、物理メモリ構成マップ６２を示している。物理メモリ構成は、当然、システムに組み込まれているメモリ・モジュールの数およびタイプに基づいて変わる。物理メモリは３２バイト幅メモリ・バスを提供するように構成されているので、１キャッシュ行を読み書きするため２つのメモリ・アクセスが必要とされる。
【００５２】
最初の５ビットA[O]-A[4]はメモリ・バスの幅によって必然的に表現される。バスの幅が列ビットの開始境界を単純に決定する。３２バイト幅メモリ・バスの場合、最初の列ビットはA[5}である。ビットA[3]およびA[4}はプロセッサによって提供されるが、メモリ・バスが３２バイト幅であるので、列ビットとして使用されない点注意が必要である。しかし、これらのビットは、４つの６４ビットワードが３２バイト幅メモリ・アクセスにパックされる場合の順序を決定するため使用することができる。メモリ・バスが１６バイト幅であれば、最初の列ビットがA[4}であり、ビットA[3]は、２つの６４ビットワードが１６バイト幅メモリ・アクセスにパックされる場合の順序を決定するため使用される。
【００５３】
上述のように、メモリ・バスが３２バイト幅であれば、最初の列ビットはビットA[5]であり、次の８乃至１１ビットが列ビットである。列ビットの数は、メモリ・モジュール上に存在するＤＲＡＭチップのサイズによって決定される。注：列、行、バンク・ビットの数はランク毎に変わり得る。列ビットのすぐ上のビットは、ＤＲＡＭページ・インターリービングに対応するビットである。最高８ビットがＤＲＡＭページ・インターリービングに割り当てられることができるが、そのビット範囲は列ビットの数に従って変わる。
【００５４】
列ビットのすぐ上のビットは行ビットである。メモリ・コントローラは１乃至１４の行ビットをサポートする。行ビットのすぐ上にはバンク・ビットがある。メモリ・コントローラは０乃至３ビットのバンク・ビットをサポートする。最後に、バンク・ビットのすぐ上にランク・ビットがある。各ランク・ビットは１つのメモリ・ソケットに対応する。ＳＤＲＡＭを含むメモリ・モジュールを備えるシステムは、典型的には、１１列ビット、１４行ビット、３バンク・ビットおよび６ランク・ビットを持つ。当然のことながら、一層小さいＤＲＡＭあるいはＳＤＲＡＭチップが使用されるとすれば、使用するランク・ビットの数は増加する。
【００５５】
図３乃至図５は、上記引用米国特許出願第08/962,490号によって開示されているメモリ・コントローラがＤＲＡＭページ・インターリービング、キャッシュ効果インターリービングおよび複数キャッシュ行インターリービングを実現する様態を図示している。対照的に、本発明は、利用可能バンク・ビットを種々のインターリービング方式の間に分配するメカニズムを提供する。最善の分配方法は、メモリ・モジュールのサイズならびに構成、図２に示されているメモリ構成階層の範囲内のメモリ・モジュールの配置、コンピュータ・システムにおけるＣＰＵの数、および、最も重要な要因であるがコンピュータ・システムによって実行される諸アプリケーションの組み合わせという各因子の関数である。
【００５６】
最善の分配方法を見出す唯一の実際的手段は、特定コンピュータ・システム上の諸アプリケーションの予想される組み合わせをテスト実行させてメモリ・パフォーマンスを監視するものである。種々のキャッシュ・インターリービング方式分配に関するいくつかのテストを実行して、どの  分配が最高のパフォーマンスを示すか決定する。
【００５７】
本発明に従って、図２のメモリ・コントローラ２２のインターリービング方式照合テーブル２４が、キャッシュ・インターリービング分配を初期化する柔軟な方法を提供する。例示の目的のため、テーブル２４はコントローラ２２の一部として示されている。しかし、テーブル２４は、コンピュータ・システム１８のどのような記憶媒体上にでも実施することができる。コンピュータ１８が初期化される時ＢＩＯＳルーチンがメモリ・システムを初期化することができるようにするため、テーブル２４は好ましくは不揮発性ＲＡＭ上に実施される。そのような実施形態において、ユーティリティ・ルーチンが、照合テーブル２４にキャッシュ・インターリービング分配を書き込み、コンピュータ・システム１８の再初期設定を引き起こすリブート・コマンドを発信する。更に、自動性能強化ユーティリティを利用して、アプリケーションの予想組み合わせの実行をテストし、その結果を記録し、テーブル２４における分配を変更し、コンピュータ・システム１８を再初期化するというプロセスを、最適分配が判明するまで、継続的に反復実行することができる。
【００５８】
本発明に従って、図２のメモリ・コントローラ２２は、種々のインターリービング方式に対する最高Nmax個のバンク・ビットの割り当てをサポートする。図６は、コントローラ２２のインターリービング方式照合テーブル２４の１つの実施形態を示すテーブル３６であり、この場合、種々のインターリービング方式の間の割り当てに利用できるバンク・ビットの最大数(Nmax)は８である。特定の数のバンク・ビットに対するインターリービング方式を見つけるためには、先ず、実際に存在するバンクの数に対応する行番号にアクセスする。その行の中において、各列は、各バンク・ビットに関して使用されるべきインターリービング方式を示している。標示されているインターリービング方式は、ＤＰＩが、ＤＲＡＭページ・インターリービング(すなわちDRAM page interleaving)を、ＣＥＩがキャッシュ効果インターリービング(すなわちcache effect interleaving)を、ＭＣＩが複数キャッシュ行インターリービング(すなわちmulti-cache line interleaving)をそれぞれ意味している。
【００５９】
上述されたように、テーブル３６に記憶される実際の分配は種々の要因に従って変わる。しかし、テーブル３６に示されている値は、典型的な分配であるように期待されるものを表現している。具体的には、複数ＣＰＵ上で実行されるプログラムに起因するメモリ・ホットスポットが１時点で同一バンクをアクセスしない確率を増加させることが重要であるので、複数キャッシュ行インターリービング(ＭＣＩ)が最も重要なタイプのインターリービングである場合が多いとみなされる。しかし、一旦２つのバンク・ビットが複数キャッシュ行インターリービングに割り当てられると、複数キャッシュ行インターリービングに更にビットを付加的に割り当てることによって達成される利益は、その他の方式に比較して小さくなる。従って、１バンク・ビットだけが利用できる時、それは、複数キャッシュ行インターリービングに割り当てられ、８バンク・ビットが利用できる時、２バンク・ビットだけが複数キャッシュ行インターリービングに割り当てられる。
【００６０】
更に、キャッシュとの間でデータを迅速に移動させることが重要であるので、キャッシュ効果インターリービング(ＣＥＩ)が次に重要なタイプのインターリービングである場合が多いとみなされる。データがキャッシュにあれば、実行は一層迅速に進む。従って、２つのバンク・ビットが利用できる時、その１つがキャッシュ効果インターリービングに割り当てられる。
【００６１】
ＤＲＡＭページ・インターリービング(ＤＰＩ)は一般に３番目に重要なタイプのインターリービングであるとみなされる。従って、第４のバンク・ビットが利用できるようになるまで、バンク・ビットはＤＲＡＭページ・インターリービングに割り当てられない。上述のように、テーブル３６に示されている分配は典型的な分配にすぎず、それは、メモリ・モジュールのサイズならびに構成、コンピュータ・システムにおけるＣＰＵの数およびコンピュータ・システムにおけるアプリケーションの組み合わせに従って変わり得る。例えば、特定のコンピュータ・システムが１つのＣＰＵおよび単一バンク・ビットだけを持つとすれば、キャッシュ効果インターリービングが、複数行インターリービングよりすぐれた性能を提供するかもしれない。
【００６２】
図７は、コントローラ２２のインターリービング方式照合テーブル２４のもう１つの実施形態を示すテーブル３８である。種々のインターリービング方式の間での割り当てに利用できるバンク・ビットの最高数(Nmax)はテーブル３８において８であるが、バンク・ビットの分配は、図２に示されたメモリ階層の範囲内のメモリ・バンクの位置に基づいている。テーブル３８を詳細に記述する前に、各タイプのメモリ・インターリービング方式に典型的に関連するメモリ・アクセスパターンを考察する。
【００６３】
複数キャッシュ行インターリービングは、複数ＣＰＵが同時に同一メモリ・バンクにアクセスしないように、メモリ・ホットスポットをいくつかのバンクにわたって分散させるように試みる。従って、複数キャッシュ行インターリービングに関連するメモリ・アクセス・パターンは独立していて無関係である傾向がある。言い換えると、複数書き込みが同時に発生し、複数読み取りが同時に発生し、読み取りおよび書き込みが同時に発生する可能性がある。図２を参照すれば、各メモリ・バスは同時に異なるタイプの別々のメモリ動作を搬送することができるので、メモリ・コントローラ２２によって提供されるメモリ・バスの間を区別するバンク・ビットがこのアクセス・パターンに合う。従って、メモリ・バスの間を区別するバンク・ビットを複数行インターリービングに割り当てるのは意味がある。図２において、このようなバンク・ビットは、"バンク・クラスＡ"として分類されていて、記号Namaxはこのクラスにおいて利用できるバンク・ビットの最大数を表現している。図２において、メモリ・コントローラ２２から２つのメモリ・バスしか利用できないので、Namaxは１である。メモリ・バスを区別するバンク・ビットが複数キャッシュ行インターリービングに関連するメモリ・アクセス・パターンにうまく合うので、メモリ・コントローラ２２のその他の実施形態において、メモリ・バスを追加して、従って、メモリ・バスを区別するバンク・ビットを追加してその追加バンク・ビットが複数キャッシュ行インターリービングに割り当てられることができるようにすることが望ましい。４つのメモリ・バスを持つメモリ・コントローラはメモリ・バスの間を区別する２ビットを持ち、一方、８つのメモリ・バスを持つメモリ・コントローラはメモリ・バスの間を区別する３ビットを持つであろう。
【００６４】
次に、キャッシュ効果インターリービングに関連するメモリ・アクセス・パターンを考察する。キャッシュ効果インターリービングは、キャッシュ・セットから投げ出されるダーティ・キャッシュ行が同じセットに読み込まれているキャッシュ行と異なるＤＲＡＭページに書き込まれることを可能にする。従って、１つのキャッシュ行が１つのバンクからキャッシュに読み込まれている間に別のキャッシュ行がそのキャッシュから投げ出され別のバンクに書き込まれるというように、読み書き動作は典型的にペアで発生する。もちろん、キャッシュ効果インターリービングに関連するメモリ・アクセス・パターンは、メモリ・バスを区別するバンク・ビットによってうまくサービスされる。しかし、キャッシュ効果インターリービングに関連するメモリ・アクセス・パターンは、図２のユニット２６のようなメモリ・バッファ／マルチプレクサ・ユニットのうちの１つによって提供されるメモリ・バス・セグメントを区別するバンク・ビットによってもうまくサービスされる。
【００６５】
上述のように、メモリ・バッファ／マルチプレクサ・ユニットは、読み書き動作をオーバーラップさせることができるが、同一タイプの並列メモリ動作をサポートすることができない。従って、１つのキャッシュ行がメモリ・バッファ／マルチプレクサ・ユニットの１つのメモリ・バス・セグメント上の１つのバンクから読み取られる間に、そのキャッシュから投げ出されている対応するダーティ・キャッシュ行が、同じバッファ／マルチプレクサ・ユニットの別のメモリ・バス・セグメント上のバンクに同時に書き込まれることができる。１つのメモリ・バッファ／マルチプレクサ・ユニットの範囲内のメモリ・バス・セグメントの間を区別するバンク・ビットが、コントローラ２２によって提供されるメモリ・バスを区別するバンク・ビットと同様に、キャッシュ効果インターリービングに関連するメモリ・アクセス・パターンに合う点は注意する必要がある。しかし、メモリ・セグメントの間を区別するバンク・ビットは、同一タイプの複数のメモリ動作が同時に発生する可能性があるので、複数キャッシュ行インターリービングに関連するメモリ・アクセス・パターンに合わない。従って、メモリ・バス・セグメントの間を区別するバンク・ビットをキャッシュ効果インターリービングに割り当てて、メモリ・バスの間を区別するバンク・ビットを複数キャッシュ行インターリービングに振り向けることは意味のあることである。図２において、メモリ・バス・セグメントの間を区別するバンク・ビットは、"バンク・クラスＢ"として分類されていて、記号Nbmaxはこのクラスにおいて利用できるバンク・ビットの最大数を表現している。
【００６６】
最後に、ＤＲＡＭページ・インターリービングに関連するメモリ・アクセス・パターンを考察する。ＤＲＡＭページ・インターリービングは、連続するＤＲＡＭページが別々のバンクに記憶されることを可能にし、それによって、プログラムが複数のバンクに開いたたままで残るメモリ・ホットスポットを持つことを可能にする。ＤＲＡＭページ・インターリービングに関連するメモリ・アクセス・パターンは、本質的に順次形態であり、同じタイプである傾向を持つ。例えば、プログラム・コードがキャッシュにロードされる時、プログラム・コードは順次ロードされ、メモリ動作の大部分はメモリ読み込み動作である。同じように、プログラムがデータのブロックをメモリに書き戻す時、先ずデータのブロックがキャッシュに書き込まれ、データが記憶される対応するキャッシュ行はすべてダーティである。置き換えられるキャッシュ行が同様にダーティであれば、キャッシュから投げ出されるキャッシュ行は順次であり、動作の大部分がメモリ書き込み動作である傾向を持つ。もちろん、ＤＲＡＭページ・インターリービングに関連するメモリ・アクセス・パターンは、メモリ・バスの間を区別するバンク・ビットおよびメモリ・バス・セグメントの間を区別するバンク・ビットによってうまくサービスされる。しかし、ＤＲＡＭページ・インターリービングに関連するメモリ・アクセス・パターンは、単一メモリ・バス・セグメント上のバンクの間を区別するバンク・ビットによってもうまくサービスされる。上述のように。単一メモリ・バス・セグメントの範囲内では、１時点に１つのタイプのだた１つのメモリ動作だけが活動的であることが可能で、ＤＲＡＭページ・インターリービングは、同一タイプの順次メモリ動作を生成する傾向を持つ。図２において、同一メモリ・バス・セグメント上のバンクの間を区別するバンク・ビットは、"バンク・クラスＣ"として分類されていて、記号Ncmaxはこのクラスにおいて利用できるバンク・ビットの最大数を表現している。
【００６７】
利用可能バンク・ビットの分類に基づくメモリ・インターリービング方式の割り当てによってページ・ヒット率は影響されない点は注意する必要がある。しかし、バンク・ビットの分類に基づいてメモリ・インターリービング方式を割り当てることによって、並列メモリ・トランザクションのパーセンテージは増加する。従って、全般的メモリ効率は増加する。
【００６８】
図７のテーブル３８を再び参照すれば、Namax、NbmaxおよびNcmaxは、各クラスに関連するバンク・ビットの最大数を表し、NmaxはNamax+Nbmax+Ncmaxに等しい。テーブル３８においては、図２に示されたメモリ階層に基づいて、Namaxは１、Nbmaxは２、Ncmaxは５である。テーブル３８の行の数は、(Namax+1)*(Nbmax+1)*(Ncmax+1)である。従って、テーブル３８の行の数は３６である。特定のメモリ構成に関するインターリービング方式を見出すためには、先ず、各クラスに関連するバンク・ビットの数に対応する行にアクセスする。その特定のメモリ構成に関連するインターリービング方式がその行の列に沿って見出される。インターリービング方式は行を右から左へアクセスすることによって割り当てられる点に注意する必要がある。換言すれば、最も右の列Naが、クラスＡのバンク・ビットに割り当てられるインターリービング方式を表し、(右から左へ移動する)次の列Nbが、クラスＢのバンク・ビットに割り当てられるインターリービング方式を表し、(右から左へ移動する)次の列Ncが、クラスＣのバンク・ビットに割り当てられるインターリービング方式を表す。
【００６９】
例えば、図２において、スロット０、３、６、９、１２、１５、１８および２１が等しいサイズのメモリ・モジュールを備え持ち、各メモリ・モジュールが２つのメモリ・バンクを持つと仮定する。この例においては、Naは１、Nbは２、Ncは１である。従って、Nは４である。このメモリ構成はテーブル３８の行４０によって表されている。従って、単一のクラスＡバンク・ビットが複数キャッシュ行インターリービングに割り当てられ、２クラスＢバンク・ビットがキャッシュ効果インターリービングに割り当てられ、単一のクラスＣバンク・ビットがＤＲＡＭページ・インターリービングに割り当てられる。
【００７０】
上述のように、バンク・ビット分類に基づいたメモリ・インターリービング方式の割り当ては、ページ・ヒット率に影響を及ぼすことなく並列メモリ・トランザクションのパーセンテージを増加させる。ページ・ヒット率は、各メモリ・インターリービング方式に割り当てられたバンク・ビットの数によって影響を受けるだけである。従って、ページ・ヒット率を増加させるため、たとえそうすることが並列メモリ・トランザクションのパーセンテージに影響を及ぼさないとしても、１つのメモリ・インターリービング方式を特定クラスのバンク・ビットに割り当てることが望ましい。例えば、テーブル３８の行４２を考察すると、クラスＡの単一バンク・ビットが、複数行インターリービングに割り当てられ、クラスＢの２バンク・ビットがキャッシュ効果インターリービングに割り当てられ、クラスＣの５バンク・ビットがＤＲＡＭページ・インターリービングに割り当てられている。クラスＣバンク・ビットのうちの１つをＤＲＡＭページ・インターリービングから複数行インターリービングへ再割当することは、１つのタイプの１つのメモリ動作だけが１時点に１つのメモリ・バス・セグメント上で活動的であるので、並列メモリ・トランザクションのパーセンテージに影響を及ぼさない。しかし、追加バンク・ビットを複数行インターリービングに割り当てることに起因するページ・ヒット率の増加がバック・ビットをＤＲＡＭページ・インターリービングから削除することに起因した減少より大きい場合、全般的ページ・ヒット率は増加する。
【００７１】
関連階層レベルにおけるバンクの間を区別するためにバンク・ビットが(少なくとも部分的に)使用されるにもかかわらず、バンク・ビットを特定のクラスに分類することが可能でないこともある。各メモリ・モジュールが単一バンクを持ち、スロット０、３、６および１２に同等メモリ・モジュールを備え持つメモリ・システムを考察する。この場合のバンク・ビットは２ビットである。コントローラ２２によって提供される両方のメモリ・バスが使用されているが、両方のバンク・ビットは、どのメモリ・バスが使用されなければならないか決定するため解読されなければならない。従って、バンク・ビットのいずれかをクラスＡとして分類することは不可能である。両方のバンク・ビットがクラスＢとして分類されるにちがいない。同様に、各メモリ・モジュールが単一バンクを持ち、スロット０、１、２および３に同等メモリ・モジュールを備え持つメモリ・システムにおいても、バンク・ビットは２である。たとえメモリ・バッファ／マルチプレクサ・ユニット２６によって提供される２つのメモリ・バス・セグメントが使用されているとしても、両方のバンク・ビットは、どのメモリ・バス・セグメントが使用されなければならないか決定するため解読されなければならない。従って、バンク・ビットのいずれかをクラスＢとして分類することは不可能であり、両方のバンク・ビットがクラスＣとして分類されるにちがいない。このような理由から、本発明を取り入れているコンピュータ・システムにメモリ・モジュールを挿入する場合、可能な限り高いクラスにバンク・ビットが分類されることを可能とするように、メモリ・モジュールを均一に分散させることが望ましい。
【００７２】
テーブル３８によって表される本発明の実施形態は、上述のように、特定のコンピュータ・システム構成に関する最適の分配を決定するため、メモリ・インターリービング方式の分配を反復して変更することが容易であるので、最大限度の柔軟性を提供する。しかしながら、インターリービング方式を割り当てることも本発明の目的に含まれる。例えば、本発明に従ったアルゴリズムに基づく１つの単純なアルゴリズムが、クラスＡバンク・ビットを複数行インターイービングに割り当て、クラスＢバンク・ビットをキャッシュ効果インターリービングに割り当て、クラスＣバンク・ビットをＤＲＡＭページ・インターリービングに割り当てる。より複雑なアルゴリズムを使用して、一定数のクラスＣバンク・ビットがすでにＤＲＡＭページ・インターリービングに割り当てられていれば、クラスＣバンク・ビットをキャッシュ効果インターリービングまたは複数行インターリービングに割り当てることもできる。しかしながら、種々のメモリ・インターリービング方式分配を試行して特定コンピュータ・システムのための最適分配を発見することが望ましいので、テーブルに基づくアプローチが好ましい実施形態である。
【００７３】
従来技術においては、メモリ・コントローラは典型的には１タイプのインターリービング方式をサポートするだけであり、すべてのバンク・ビットが単一の方式に割り当てられたので、典型的インターリービング方式を割り当てることは重要視されなかった。しかし、上記引用米国特許出願第08/962,490号によって開示されているメモリ・コントローラにおけるインターリービング方式割り当ては、メモリ・コントローラが３つのメモリ・インターリービング方式をサポートし、ページ・ヒット率が方式の割り当てによって影響を受けるので、一層複雑である。本発明は、メモリ・インターリービング方式照合テーブルを提供することによってこの問題に対処する。
【００７４】
本発明は、また、バンク・ビットの分類に基づいてメモリ・インターリービング方式をバンク・ビットに割り当てることによって並列メモリ動作パーセンテージの増加を実現することを目指している。メモリ・インターリービング方式照合テーブルを介して、あるいは、バンク・ビットの分類に基づいてバンク・ビットにメモリ・インターリービング方式を割り当てるアルゴリズムを使用することによって、本発明はこの利点を提供する。
【００７５】
以上、複数行インターリービング、キャッシュ効果インターリービングならびにＤＲＡＭページ・インターリービングをサポートするメモリ・コントローラ、および、図２に示されるメモリ・システム構成によってサポートされるメモリ・アクセス・パターンを参照して、本発明を記述した。しかしながら、上述の本発明の理念がその他のインターリービング方式のみならず異なるメモリ・アクセス・パターンを持つその他のメモリ・システム構成にも適用されることができる点は当業者に認められることであろう。本発明を好ましい実施形態を参照して以上記述したが、本発明の理念を逸脱することなく、そのような実施形態に種々の変更を加えることができる点は当業者に認められることであろう。
【００７６】
本発明には、例として次のような実施様態が含まれる。
（１）複数のメモリ・インターリービング方式をサポートするコンピュータ・システムにおいてバンク・ビットをメモリ・インターリービング方式に割り当てる方法であって、該コンピュータ・システムが複数の階層を持つメモリ構成を含み、上記複数階層の異なる階層によって異なる形態で並列メモリ・トランザクションがサポートされ、該方法が、並列メモリ動作をサポートする１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数のメモリ・インターリービング方式のうち、並列メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第１のメモリ・インターリービング方式に割り当てるステップと、並列メモリ動作をサポートしない１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数メモリ・インターリービング方式のうち、順次メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第２のメモリ・インターリービング方式に割り当てるステップと、を含むバンク・ビット割り当て方法。
【００７７】
（２）並列メモリ動作をサポートする１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数メモリ・インターリービング方式のうち、並列メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第１のメモリ・インターリービング方式に割り当てる上記ステップが、任意のタイプの並列メモリ動作をサポートする１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数メモリ・インターリービング方式のうち、独立したタイプの並列メモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第１のメモリ・インターリービング方式に割り当てるサブステップと、別々の読み取りおよび書き込み動作が並列して発生することを許容する１つの階層において複数メモリ・バンクの間を区別する１つまたは複数のバンク・ビットを、複数メモリ・インターリービング方式のうち、読み取り／書き込みペアからなるメモリ動作を持つメモリ・アクセス・パターンに関連する傾向がある第３のメモリ・インターリービング方式に割り当てるサブステップと、を含む上記（１）に記載のバンク・ビット割り当て方法。
【００７８】
【発明の効果】
本発明によって、バンク・ビットにインターリービング方式を割り当てる便利で構成の容易な方法が提供される。また、本発明によって各インターリービング方式に割り当てられるバンク・ビットの数に従ってページ・ヒット率が増加する。更に、バンク・ビットの分類に基づいたバンク・ビットにインターリービング方式を割り当てることによって、本発明は、並列メモリ動作の割合を増加させることができる。
【図面の簡単な説明】
【図１】２０４８行ならびに２０４８列を持つ４メガビット・メモリ・アレイに基づく典型的従来技術メモリ・チップのブロック図である。
【図２】本発明に従ったメモリ・インターリービング方式照合テーブルを組み込むコンピュータ・システムのブロック図である。
【図３】６４ビット幅アドレスを持つコンピュータ・システムの論理アドレス・マップのブロック図である。
【図４】コンピュータ・システムのキャッシュ・メモリの構成を示すブロック図である。
【図５】コンピュータ・システムの物理メモリの構成を示すブロック図である。
【図６】図２のメモリ・インターリービング方式照合テーブルの１つの実施形態を示すブロック図である。
【図７】図２のメモリ・インターリービング方式照合テーブルの別の１つの実施形態を示すブロック図である。
【符号の説明】
１８      コンピュータ・システム
２２      メモリ・コントローラ
２４      インターリービング方式照合テーブル
【図１】
0003715837.tif 000002
【図２】
0003715837.tif 000003
【図３】
0003715837.tif 000004
【図４】
0003715837.tif 000005
【図５】
0003715837.tif 000006
【図６】
0003715837.tif 000007
【図７】
0003715837.tif 000008