(57)【要約】【課題】データバスを最大限使用してシステムパフォーマンスを最大とするような、メモリバンクにアドレスをマッピングするシステムおよび方法を提供する。【解決手段】本発明の一実施形態は、受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラを提供する。受信アドレスを複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、剰余と受信アドレスの少なくとも１ビットとに基づいて複数のバンクのうちの特定バンクを確定する回路と、受信アドレスの少なくとも一部を使用して特定バンクのメモリロケーションを確定する回路と、を備えるメモリコントローラである。【選択図】図１０
2004164641.tif 000002
【特許請求の範囲】
【請求項１】
受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラであって、
前記受信アドレスを、前記複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、
前記剰余と前記受信アドレスの少なくとも１ビットとに基づいて前記複数のバンクのうちの特定バンクを確定する回路と、
前記受信アドレスの少なくとも一部を使用して前記特定バンク内の前記メモリロケーションを確定する回路と、
を有するメモリコントローラ。
【請求項２】
前記除数が、前記複数のバンクの数から１を引いた数に等しい、請求項１記載のメモリコントローラ。
【請求項３】
前記除数が素数である、請求項１記載のメモリコントローラ。
【請求項４】
前記メモリバンクの数が２Ｎに等しく、前記受信アドレスの前記少なくとも１ビットがＮビットに等しい、請求項１記載のメモリコントローラ。
【請求項５】
２Ｎ−１が非素数であり、
前記複数のメモリバンクを、２Ｍ−１が素数であるような２Ｍグループにグループ化する回路
をさらに有する請求項４記載のメモリコントローラ。
【請求項６】
前記除数が２Ｍ−１であり、前記受信アドレスの前記少なくとも１ビットがＭ＋１ビットに等しい、請求項５記載のメモリコントローラ。
【請求項７】
前記受信アドレスの前記一部が、該受信アドレスの前記少なくとも１ビットを除く、請求項１記載のメモリコントローラ。
【請求項８】
前記受信アドレスが、メモリアクセス要求に関連する物理アドレスである、請求項１記載のメモリコントローラ。
【請求項９】
並び替えバッファをさらに有し、
該並び替えバッファが、前記受信アドレスに関連する少なくとも１つのメモリアクセス要求を保持し、前記特定バンクにマッピングする別のメモリアクセス要求と競合する、請求項１記載のメモリコントローラ。
【請求項１０】
前記メモリロケーションにアクセスして、前記受信アドレスに関連するメモリアクセス要求の処理を可能にするロジック
をさらに有する請求項１記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、包括的にはコンピュータメモリに関し、特に、競合を低減し帯域幅を増大させる、メモリバンクにアドレスをマッピングするシステムおよび方法に関する。
【背景技術】
【０００２】
同期ダイナミックランダムアクセスメモリ（synchronous dynamic random access memory、ＳＤＲＡＭ）またはダブルデータレートメモリ（double data rate memory、ＤＤＲ）は、通常、複数のバンクを備える。たとえば、図１Ａに示すように、メモリ１００は４つのバンク、すなわち１０８Ａ、１０８Ｂ、１０８Ｃおよび１０８Ｄを備える。各バンクは、行と列とに配置される。各バンクは、そのそれぞれのセンス増幅器（sense amplifier）１１１Ａ、１１１Ｂ、１１１Ｃおよび１１１Ｄを有する。データがメモリから読出されるかメモリに書込まれる時、メモリの特定のバンク（たとえば、１０８Ａ）における特定の行１０１が、コントローラ１１０からの、行アドレスデコーダ１０２によってデコードされる行およびバンクアドレスによって起動される。所望の行は、行データバッファ１０４にロードされる。特定の行がアクティブとなった後、列アドレスデコーダ１０３がコントローラ１１０からのアドレスを使用して、行データバッファ１０４内の起動された行の列を選択する。特定の列／行アドレスロケーションに入るかまたはそこから出るデータは、データバス１０５と、読出しドライバ１０６と、書込みレシーバ１０７と、によって処理される。コントローラ１１０により、アドレス／コマンドバス１０９が使用されることにより、アドレスおよびコマンドが行アドレスデコーダ１０２と列アドレスデコーダ１０３とに送られる。なお、ライン幅は、列の数（＃ｃ）×トランザクションのバースト長（ＲＢＲ）であり、バースト長は、初期列アドレスから開始してアクセスされる連続的な列の数であることに留意されたい。
【０００３】
メモリ１００を、バーストメモリトランザクションを処理するようにプログラムしてよく、それにより、単一バンク内で複数のデータロケーションに同時にアクセスする（すなわち、そこから読出すかまたはそこに書込む）ことが可能になる。図１Ａのメモリの場合、バースト長が４とすると、１つの列アドレスが４つの連続したアドレスとして解釈され、それにより１つの列アドレスのみで４つの列に同時にアクセスすることができる。各列／行ロケーションに対応するメモリロケーションが、データバスに連結される。このため、行が起動される毎に、合計４つのメモリロケーションにアクセスすることができる。
【０００４】
この構成の１つの問題は、メモリバンクに対してセンス増幅器が１行しかないことである。したがって、メモリバンクの特定行に対してメモリロケーションがアクセスされた後、その行を、同じバンクの異なる行へのアクセスを可能にするために閉じるかまたはプリチャージする必要がある。このため、プリチャージが行われている間、メモリバンク内の他の行にアクセスすることができない。同じバンクにおける異なる行に対する起動間の最小時間は、行アドレスストローブ（row address strobe、ＲＡＳ）サイクルタイムすなわちＴＲＣとして知られている。
【０００５】
システムパフォーマンスを最大にするために、データバスは、可能な限りビジーに維持される必要があり、そうでなければ、ＣＰＵは、メモリからのデータを待つ間にアイドル状態となる可能性がある。データバス使用を最大にする１つの方法は、異なるバンクへの連続したメモリアクセスをインターリーブすることである。これにより、１つの特定バンクにアクセスした後、他のバンクは、理想的にはＴＲＣが経過するまでアクセスされ、その後、その１つの特定バンクに再びアクセスすることができる。なお、帯域幅は、データがバスで転送されるクロックサイクルの数をクロックサイクルの合計数によって除算した数であることに留意されたい。そのため、データが常に転送される場合、帯域幅は１００％である。データが３／４サイクルで転送される場合、帯域幅は７５％である。そのため、帯域幅を最大化することは、データバスの使用を最大にすることを意味する。
【０００６】
図１Ｂは、従来技術による図１Ａの４バンクメモリへのアドレスマッピングの例１５０を示す。この例では、簡単のために、４つのバンクが合計３２のアドレスロケーションを有するものと仮定する。このように、ストライド１でアドレス指定される、連続的にアドレス指定されるトランザクションは、異なるバンクにマッピングされる。これは、最下位ビットがバンクアドレスを確定するため、最下位ビット（ＬＳＢ）インターリービングと呼ばれる。たとえば、２進表記では、１６、１７、１８および１９の２つの最下位ビットは、それぞれ００、０１、１０および１１であり、そのためこれらのアドレスは、それぞれバンク０、１、２および３にマッピングされる。なお、０〜３１より高いアドレスは、循環ロケーションにマッピングし、たとえば、アドレス３２はロケーション０にマッピングし、アドレス３３はロケーション１にマッピングする、等である。
【０００７】
図２Ａないし図２Ｃは、インターリービングがいかにデータバスに影響を与えるかを示す。ｔＲＣは１３サイクルであり、バースト長は４サイクルであり、ＡＸはバンクＸに対する起動コマンドであり、ＲＸはバンクＸに対する読出しコマンドであり、ＤＸはバンクＸからのデータであるものとする。図２Ａは、図１Ａに示す構成の４バンクのうちの３バンクを使用するインターリービングの例を示す。図示するように、データバスは、１３サイクルのうちの１２サイクルに対して使用される。図２Ｂは、図１Ａに示す構成の４バンクのうちの２バンクを使用するインターリービングの例を示す。図示するように、データバスは、１３サイクルのうちの８サイクルに対して使用され、それは、図２Ａの構成の効率の２／３である。Ｒ２が発行された後、第１のバンクに対してＲＡＳサイクルタイム（ｔＲＣ）は完了していないため、第１のバンクに対する後続するアクセスは、ＲＡＳサイクルタイムが完了するまで待たなければならない。この追加の待ち時間により、データバス使用が低減する。図２Ｃは、図１Ａに示す構成の４バンクのうちの１バンクを使用するインターリービングの例を示す。図示するように、データバスは、１３サイクルのうちの４サイクルに対して使用され、それは図２Ａの構成の効率の１／３である。１つのバンクのみが使用されているため、次のアクセスを開始することができる前に、各アクセスに対してプリチャージが完了しなければならない。インターリービング例の効率を調べる別の方法は、３つのバンクを使用することによりＢの帯域幅効率が提供され（図２Ａ）、２つのバンクを使用することにより２Ｂ／３の効率が提供され（図２Ｂ）、１つのバンクを使用することにより１Ｂ／３の効率が提供される（図２Ｃ）、と想定することである。
【０００８】
メモリコマンドは、アドレス／コマンドバス１０９を介して送られ、典型的には、アドレスとともに提供される４つの追加ビットを含む。コマンドビットは、典型的には、書込みイネーブル（write enable、ＷＥ）と、ＲＡＳと、列アドレスストローブ（column address strobe、ＣＡＳ）と、チップ選択（chip select、ＣＳ）と、を含む。たとえば、図２ＡのＡ１（起動コマンド）は、行／バンクアドレスとともに送られ、Ｒ１（読出しコマンド）は、列／バンクアドレスとともに送られる。このように、読出し（または書込み）動作に対し、２つの別々のコマンド、すなわち行アドレスによる起動とそれに続く列アドレスによる読出し／書込みとが使用される。
【０００９】
インターリービングを達成するために使用される第１の従来技術の方法は、連続するアクセスに対して異なるバンクが使用されるように、メモリアクセスを並び替える、というものである。複数のメモリアクセスが、メモリコントローラ１１０において待ち行列に入れられるかまたはバッファリングされる。そして、連続したメモリアクセスに対して異なるバンクが使用されるように、異なる順序でバッファからアクセスが発行される。この方法にはいくつかの問題がある。すなわち、この方法は、ランダムアドレスマッピングには適当に作用するが、アクセスにおけるアドレスが一定のストライドを有する場合は適当に作用しない。それは、並べ替えバッファが、ストライドパターンを壊すいかなるアドレスも含まないためである。一定のストライドアドレスは、１つまたは２つのバンクにマッピングする傾向にある。このため、０、４、８、…のアドレスを有する４バンクメモリ（ストライドが４）に対する一連のアクセス要求は、同じバンクにマッピングし、アドレス０、２、４、６、…を有する（ストライドが２）一連のアクセス要求は、２つのバンクにマッピングする。そのため、いかにアクセスがバッファリングされようとも、１つまたは２つのバンクしか使用されない。上に示したように、１つのバンクかまたは２つのバンクへの順次アクセスは、それぞれ１Ｂ／３または２Ｂ／３の効率を有する。なお、これは典型的には、プログラム全体を通して連続して発生せず、プログラム実行のいくつかのスポットにおいて発生する、ということに留意されたい。
【００１０】
従来技術でインターリービングを達成するために使用する第２の方法は、要求のアドレスの下位ビットにわたってインターリーブすることである。たとえば、上の４バンク例を使用することにより、バンクを選択するためにアドレスの２つの最下位ビットが使用される。このため、００はバンク０にアクセスし、０１はバンク１にアクセスし、１０はバンク２にアクセスし、１１はバンク３にアクセスする。ここでもまた、この方法は、ランダムアドレスかまたはストライドが１のアドレスには適当に作用するが、ストライドが２Ｎ、たとえば２または４のアドレスには適当に作用しない。１のストライドは、４つのバンクすべてにわたってインターリーブする。２のストライドにより、上記例の４バンクのうちの２つのバンクにわたってインターリーブすることになる。たとえば、０、２、４、６、８、…のアドレスは、第１のバンク（０、４、８はバンク０にマッピングする）と第３のバンク（２、６はバンク２にマッピングする）とにわたってインターリーブする。４のストライドは、１つのバンクにわたってインターリーブする。たとえば、０、４、８、…のアドレスは、第１のバンク、バンク０にわたってインターリーブする。４バンク例によるこの方法の場合の平均帯域幅は、（Ｂ＋２／３Ｂ＋Ｂ＋１／３Ｂ）／４であり、それは３Ｂ／４に等しく、最悪の場合の帯域幅は１／３Ｂである。なお、平均帯域幅は、４つのあり得るストライド帯域幅、すなわち、１のストライド（Ｂ）、２のストライド（２Ｂ／３）、３のストライド（Ｂ）および４のストライド（１Ｂ／３）から計算される。この方法は、非特許文献１においてさらに説明されているので参照されたい。
【００１１】
従来技術でインターリービングを達成するために使用する第３の方法は、各々が２Ｘ行および列を有する、素数のバンクを使用することである。バンクへのアドレスのマッピングを、アドレスｍｏｄバンク、すなわち、アドレスをバンクの数で除算した後の剰余を計算することによって行う。たとえば、３つのバンクがある場合、６ｍｏｄ３＝０、７ｍｏｄ３＝１、８ｍｏｄ３＝２および９ｍｏｄ３＝０等である。このように、１または２のストライドでは、順次アクセスが異なるバンクに向けられることになるが、３のストライドでは、アクセスが同じバンクに向けられることになる。なお、ｎのストライドは、ｎ  ｍｏｄ３のストライドと同じ振舞いをし、そのため、たとえば４のストライドは４ｍｏｄ３＝１のストライドのように振舞う。このように、あり得るすべてのストライドに対して３バンクシステムの帯域幅を計算するためには、ストライド１、２および３の帯域幅を計算するだけでよい。３バンクシステムでの素数方法の場合の平均帯域幅は、（Ｂ＋Ｂ＋１Ｂ／３）／３＝７Ｂ／９であり、最悪の場合は、３のストライドに対する１Ｂ／３である。この方法は、非特許文献２においてさらに説明されているので参照されたい。この方法の問題は、メモリシステムが素数で利用可能ではないことである。メモリシステム、たとえばＳＤＲＡＭは、通常、２Ｎのバンクにおいてのみ利用可能である。このため、この方法を使用するシステムは、メモリの一部、たとえば、４バンクある場合の１バンクか、または１６に最も近い素数が１３であるため１６バンクある場合の３バンクを使用しない。
【００１２】
なお、帯域幅の上記論考は、メモリアクセス要求の連続的なストリームに対して一定のストライドで達成することができる最大帯域幅に対するものである。実際の実現される帯域幅は、一般的に、最大帯域幅より小さい。それは、実際のメモリアクセスパターンが、通常、連続した一定のストライドより複雑である、たとえば異なる時間長に対して異なるストライドであるかまたはまったくストライドがないためである。
【非特許文献１】”Techniques for Higher Bandwidth: Avoiding Memory Bank Conflicts”, Computer Architecture: a Quantitative Approach (2nd edition), pp.435〜437, Hennessey & Patterson 1996
【非特許文献２】Gao, “The Chinese Remainder Theorem and the Prime Memory System”, 20th Annual Int'l Symposium on Computer Architecture ISCA '20, San Diego, May 16〜19, 1993
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、データバスを最大限使用してシステムパフォーマンスを最大とするような、メモリバンクにアドレスをマッピングするシステムおよび方法を提供するものである。
【課題を解決するための手段】
【００１４】
本発明の一実施形態は、受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラであって、受信アドレスを複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、剰余と受信アドレスの少なくとも１ビットとに基づいて複数のバンクのうちの特定バンクを確定する回路と、受信アドレスの少なくとも一部を使用して特定バンクのメモリロケーションを確定する回路と、を備えるメモリコントローラである。
【００１５】
本発明の別の実施形態は、アドレスを複数のメモリバンクのうちの特定バンクにマッピングする方法であって、アドレスを受取るステップ、アドレスを複数のバンクの数に基づく除数によって除算するステップ、除算するステップの剰余とアドレスの少なくとも１ビットとに基づいて特定バンクを確定するステップ、とを含む方法である。
【００１６】
本発明の別の実施形態は、アドレスを複数のメモリバンクのうちの特定バンクにマッピングするシステムであって、アドレスを複数のバンクの数に基づく除数によって除算し剰余を形成する手段と、剰余とアドレスの少なくとも１ビットとに基づいて特定バンクを確定する手段と、を備えるシステムである。
【００１７】
本発明の別の実施形態は、複数のメモリバンクと、アドレスを含むメモリアクセス要求を受取り、アドレスの少なくとも１つのビットと、アドレスを複数のメモリバンクの数に関連する数によって除算した場合の剰余とに基づいて、アドレスを複数のメモリバンクにおける特定のロケーションにマッピングするメモリコントローラと、受信アドレスの少なくとも一部を使用して特定のロケーションにアクセスする回路と、を備えるコンピュータシステムである。
【００１８】
ここで、本発明のより完全な理解のために、添付図面とともに考慮する以下の説明を参照する。
【発明を実施するための最良の形態】
【００１９】
本発明の実施形態は、メモリアドレス、たとえば物理アドレスを、２Ｎバンクを有するメモリシステムにマッピングするのが好ましい。２Ｎバンクの各々は、ほとんどの連続的なアドレスが異なるバンクにマッピングされるように２Ｐメモリロケーションを有するのが好ましい。連続的なアドレスは、同じストライドに関することを意味し、たとえば、ストライドが１である場合、連続的なアドレスは０、１、２、３、４等であり、ストライドが２である場合、連続的なアドレスは０、２、４、６、８等である。本発明の実施形態は、実施形態が１未満のクロックサイクルでマッピングを行うことができるようにする組合せ回路を使用して実現されるのが好ましい。これにより、メモリ待ち時間が低く維持される。本発明の実施形態は、バンク競合なしに多くの異なるストライドに対して動作可能であり、そのためデータバスに対して高メモリ帯域幅を提供する。本発明の実施形態は、素数のメモリバンクを必要とせず、そのため市販のメモリシステムで動作し利用可能なメモリのすべてを使用する。
【００２０】
なお、種々の実施態様において、メモリにアクセスするためにアドレスの最下位ビットを使用しない。本発明の実施形態の説明を簡略化するために、メインメモリにアクセスするためにアドレスのすべてのビットを使用する。しかしながら、当業者は、最下位ビットのいくつかは、キャッシュライン内のバイトを指定するため、メインメモリに対してアドレス指定するために必要のない場合があることを認めるであろう。さらなる情報を得るためには、２００２年６月１１日に発行された、「METHOD AND APPARATUS FOR DETERMINING INTERLEAVING SCHEMES IN A COMPUTER SYSTEM THAT SUPPORTS MULTIPLE INTERLEAVING SCHEMES」と題された米国特許第６，４０５，２８６号と、２０００年５月３０日に発行された、「MAIN MEMORY BANK INDEXING SCHEME THAT OPTIMIZES CONSECUTIVE PAGE HITS BY LINKING MAIN MEMORY BANK ADDRESS ORGANIZATION TO CACHE MEMORY ADDRESS ORGANIZATION」と題された同第６，０７０，２２７号と、を参照のこと。
【００２１】
本発明の実施形態の動作に対する好ましい実施態様３００を、図３に示す。本システムは、２ＮバンクのＳＤＲＡＭメモリを備え、ビットストリームＸ（Ｘは、Ｘｍ、…Ｘ０からなる）を使用してシステム内のメモリロケーションにアドレス指定する。動作は３０１で開始し、メモリアドレスＸを含むメモリアクセス要求が受取られる。本発明の実施形態は、Ｎビット（Ｎは、ビットストリームからの２ＮバンクのＮである）を読出す（３０２）。これらのＮビットは、インターリーブビットとして既知であるのが好ましい。ビットストリームにおけるロケーションは、事前に確定されており、最下位ビットであるのが好ましい。しかしながら、他のビットを使用してもよい。さらに、Ｎビットは、ストリームに連続して位置していてもよく、あるいは互いに離れていてもよい。Ｎビットは、下位ビットであっても上位ビットであってもよく、もしくは幾分かの下位ビットと幾分かの上位ビットであってもよい。そして、本発明の実施形態は、Ｘが２Ｎ−１で除算された場合の剰余であるモジュラス（modulus）ｂを確定する（３０３）。これは、ｂ＝Ｘｍｏｄ２Ｎ−１として表される。この演算を、ボックス３０２と並行して、それより前にまたは後に行ってもよい。そして、Ｎビットとｂとを使用して、アドレスＸがいずれのバンクにマッピングされるかを確定する（３０４）。一般規則は、各ｂに対して、Ｎビットの１つの組合せがバンク２Ｎ（または指定されたバンク）にマッピングし、他の組合せのすべてがバンクｂにマッピングすることが好ましい。そして、読出し、書込みまたは他のメモリ動作のために、ＮビットなしにＸによって識別されるメモリロケーション（行および列アドレス）にアクセスすることができる（３０５）。なお、モジュラスは、２進数の場合（Ｘｍ２ｍ＋…ｘ０２０）ｍｏｄ２Ｎ−１である。
【００２２】
図３の発明の実施形態の実施態様の例を、図４Ａに示す。この実施例では、メモリシステムが４バンク、すなわちバンク０、バンク１、バンク２およびバンク３を有するものと仮定する。なお、バンクの数は、異なる数のバンクを使用することができるため、単に例示としてのものであることに留意されたい。このため、Ｎ＝２およびｂ＝Ｘｍｏｄ３である。そして、ｂは、０、１および２のあり得る値の範囲を有する。インターリーブビットとしてＸのｘａおよびｘｂを使用する。アドレスＸをマッピングするために使用する規則は、以下の通りである。すなわち、１）ｂ＝０でありかつ（ｘａ  ｘｂ）＝（１１）である場合、バンクはバンク３であり、２）ｂ＝１でありかつ（ｘａ  ｘｂ）＝（００）である場合、バンクはバンク３であり、３）ｂ＝２でありかつ（ｘａ  ｘｂ）＝（１１）である場合、バンクはバンク３であり、４）それ以外のバンク＝バンクｂである。なお、他の規則を使用することができるため、これらの規則は単に例示としてのものであることに留意されたい。たとえば、バンク３がインターリーブビットのｂ＝０、１、２の特別な場合を受取る代りに、異なるバンク、たとえばバンク０を使用することができ、このため規則４は、それ以外のバンク＝バンクｂ＋１となる。なお、ｂおよびインターリーブビットの合計１２の異なる場合または組合せがあり、各バンクは３つの異なる場合にマッピングされることに留意されたい。
【００２３】
図４Ｂは、図４Ａの実施例が、合計３２のメモリロケーションを有するメモリの４つのバンクでいかに動作するかを示す。ロケーションの数は、より多いロケーションも少ないロケーションも存在することができるため、単なる例示的なものである。典型的には、メモリシステムは、何千ものメモリロケーションを有する。したがって、メモリアドレスは、２進アドレス１１１１１、１１１１０、…、００００１、０００００に対応するＸ＝３１、３０、…１、０である。なお、各２進アドレスは、ｘ４ｘ３ｘ２ｘ１ｘ０に対応する。インターリーブビットは、ｘ１ｘ０であるように選択されるが、他のビット、たとえばｘ３ｘ１を使用することができるため、それらは単なる例として選択される。このため、Ｘの残りのビット、すなわちｘ４ｘ３ｘ２は、各バンクにおけるメモリロケーションアドレスに対して使用される。図４Ｃは、図４Ｂの実施例のレイアウトを示す。なお、各バンクは、７（１１１）から０（０００）までのバンクアドレスを有し、ビットｘ４ｘ３ｘ２は、各バンク内においてそのバンクアドレスを確定するために使用されることに留意されたい。さらに、バンク内のアドレスは、簡単のために複数の行を有する単一列として示すことにも留意されたい。実際のメモリバンクは行および列のアレイからなり何千ものロケーションを有するため、アドレスビットは、行と列との両方の情報を有する。
【００２４】
図２Ａないし図２Ｃを参照すると、ストライドが３バンクを使用する場合、Ｂの帯域幅があり、ストライドが２バンクを使用する場合、帯域幅は２Ｂ／３であり、ストライドが１バンクを使用する場合、帯域幅はＢ／３である。図２Ａないし図２Ｃに示す例では、Ｂは１２／１３に等しい。図２Ａにおいて、データバスにおけるＤ１までのサイクルは、第１の転送までの時間であるため、無視することができる。そして、データは、次の１３サイクルのうちの１２に対して転送され、このため帯域幅は１２／１３である。同様に、図２Ｂのストリームに対する帯域幅は８／１３（２Ｂ／３である）であり、図２Ｃのストリームの場合は４／１３（Ｂ／３である）である。このように、３または４バンクを使用して、最大（または略最大、１２／１３）を達成することができる。図４Ａないし図４Ｃの実施例においてこれらの結果を使用することにより、１のストライドは４バンクにマッピングし、２のストライドは３バンクにマッピングし、３のストライドは２バンクにマッピングし、４のストライドの１／４（たとえば、３、５、１１、１５、１９、２３）は、２バンクにマッピングする。４の残りのストライドは、３バンクにマッピングする。このため、図４Ａないし図４Ｃに示す実施例に対する１〜４のストライドの場合の平均帯域幅は、（Ｂ＋Ｂ＋２Ｂ／３＋（１／４×２Ｂ／３＋３Ｂ／４））／４＝４３Ｂ／４８＝．８９６Ｂであり、最悪の場合は２Ｂ／３である。なお、これらの計算は、たとえば４ロケーションのバッファを使用する、何らかの並べ替えを想定する。この並べ替えは、ランダムな連続的アクセスが同じバンクに向う機会を低減するために必要である。図２Ａないし図２Ｃに示すストリームにより例証されるように、１または２バンクとは異なる３または４バンクを通してアクセスを循環させることがより適切である。
【００２５】
図４Ｃの帯域幅に対してさらに続けて説明する。１のストライドを、小さい並べ替えバッファを用いて、３つのバンクにマッピングすることができる。たとえば、０、１、２、３、４、５、６のアドレスストリームを考慮する。図４Ｃのマッピングを使用すると、メモリコントローラは、並べ替えなしに０、１、２、３をバンク０、１、２、３にマッピングする。しかしながら、アドレス４は、バンク３にマッピングし、バンク３はビジーである。このため、アドレス４がバッファリングされ、次のアドレス、すなわちアドレス５が考慮されるが、それもまたビジーである（この実施例の目的のために、ビジーバンクは、最近書込みがなされた２つのバンクである）。このため、アドレス５がバッファリングされ、次のアドレス、すなわちバンク０にマッピングされるビジーではないアドレス６が考慮される。ここで、バンク２はもはやビジーではないため、アドレス５がバンク２に送られる。次に、バンク３はもはやビジーではないため、アドレス４がバンク３に送られる。このように、受取られる順序は、０、１、２、３、４、５、６であり、送られる順序は、バンク０、１、２、３、０、２、３に対応する０、１、２、３、６、５、４である。少なくとも３バンクが使用中であるため、帯域幅は１のストライドの場合はＢである。
【００２６】
２のストライドを有するストリーム、たとえばアドレス０、２、４、６、８、１０のストリームを想定する。これは、並び替えなしにバンク０、２、３、０、２、１にマッピングする。少なくとも３つのバンクが使用中であるため、帯域幅は２のストライドの場合はＢである。
【００２７】
３のストライドを有するストリーム、たとえばアドレス０、３、６、９、１２、１５、１８、２１、２４、２７等のストリームを想定する。これらは、バンク０、３、０、０、０、３、０、０、０、３に直接マッピングする。並び替えバッファを用いて、アドレスは、バンク０、３、０、３、０、３、０、３に対応する順序０、３、６、１５、９、２７、１２等で発行される。２バンクが使用中であるため、帯域幅は、３のストライドの場合は２／３Ｂであり、それは図２Ｂのストリームの帯域幅と同様である。なお、パターンを並び替えることができる時間は、並び替えバッファの深さによって決まることに留意されたい。この実施例では、たとえば１８、２１および２４を格納するために３の深さが必要である。さらに、一定のストライドは、典型的には長くは続かないことにも留意されたい。
【００２８】
４のストライドを有するストリーム、たとえばアドレス０、４、８、１２のストリームが、バンク０、３、２、０にマッピングする（３バンクマッピング）ものとする。しかしながら、最悪の場合のストライド４ストリームは、たとえばアドレスシーケンス３、７、１１、１５、１９、２３である。このストリームは、バンク３、１、３、３、１、３にマッピングする。２バンクが使用中であるため、最悪の場合の帯域幅は、４のストライドに対して２／３Ｂである。
【００２９】
なお、本発明の実施形態に対する帯域幅の論考は、一定のストライドでのメモリアクセス要求の連続的なストリームに対して達成することができる最大帯域幅に対するものである。本発明の実施形態を使用する実際に実現される帯域幅は、典型的には最大帯域幅より小さくなる。それは、実際のメモリアクセスパターンが、典型的には、連続的な一定のストライドより複雑であり、たとえば異なる長さの時間に対する異なるストライドかまたはストライドがまったくないためである。
【００３０】
図５Ａは、図４Ａのものと同様の、本発明の実施形態の実施例を示し、図４Ａのものとはわずかに異なる規則を有する。なお、アドレスＸをマッピングするために使用する規則は、次のとおりである。すなわち、１）ｂ＝０、１または２でありかつ（ｘａ  ｘｂ）＝（１１）である場合、バンクはバンク３であり、２）それ以外のバンク＝バンクｂである。図５Ｂおよび図５Ｃに示すように、この変更により、図４Ｂおよび図４Ｃに示すものとは異なるマッピングとなる。これは正当なマッピングであるが、帯域幅は図４Ａないし図４Ｃのものほど高くはない。図５Ａないし図５Ｃのマッピングの場合、１〜４のストライドに対する帯域幅は、（（Ｂ＋Ｂ＋２Ｂ／３＋（１／４×Ｂ／３＋３／４×Ｂ））／４＝４２／４８＝０．８７５Ｂであり、最悪の場合のパフォーマンスは、単一バンク３にマッピングするように、ストライド４アドレスシーケンス３、７、１１、１５、１９、２３、２７、３１に対する１／３Ｂである。しかしながら、このマッピングは、従来技術より高い帯域幅を有する。図１ＢのＬＳＢインターリービングの場合ストライド１〜４の帯域幅は、ストライド１の場合はＢであり（ストライド１は４バンクすべてを使用するため）、ストライド２の場合は２Ｂ／３であり（ストライド２は２つのバンクを使用するため、たとえば０、２、４、６、８はバンク０および２を使用する）、ストライド３の場合はＢであり（ストライド３は並び替えにより４つのバンクをすべて使用するため）、ストライド４の場合はＢ／３である（ストライド４は１つのバンクしか使用しないため）。このため、平均は、（（Ｂ＋２Ｂ／３＋Ｂ＋Ｂ／３））／４＝３／４Ｂ＝０．７５Ｂであり、最悪の場合はＢ／３である。
【００３１】
なお、他の規則を使用することができるため、図４Ａおよび図５Ａに示す規則は単なる例示的なものであることに留意されたい。さらに、バンク内のアドレスは、簡単のために複数の行を有する単一列として示すことにも留意されたい。実際のメモリバンクは行および列のアレイから構成され何千ものロケーションを有するため、アドレスビットは、行および列の両方の情報を有する。
【００３２】
上述したように、本発明の実施形態は、異なる数、たとえば４以外のバンクを有するメモリシステムで動作することができる。８バンクのメモリ、すなわちバンク０、バンク１、バンク２、バンク３、バンク４、バンク５、バンク６およびバンク７を有する発明の実施形態の実施態様の例を、図６に示す。このため、Ｎ＝３およびｂ＝Ｘｍｏｄ７である。そして、ｂは、０〜６のあり得る値の範囲を有する。インターリーブビットとしてＸのビットｘａｘｂｘｃが使用される。アドレスＸをマッピングするために使用する規則は、次のとおりである。すなわち、１）ｂ＝０、２、４または６でありかつ（ｘａｘｂｘｃ）＝（１１１）である場合、バンクはバンク７であり、２）ｂ＝１、３または５でありかつ（ｘａｘｂｘｃ）＝（０００）である場合、バンクはバンク７であり、３）それ以外のバンク＝バンクｂである。なお、ｂおよびインターリーブビットには合計５６の異なる場合または組合せがあり、各バンクは７つの異なる場合にマッピングされることに留意されたい。図６の場合のアドレスのバンクへのマッピングは、以下の通りである。
【表１】
2004164641.tif 000003
【００３３】
ストライド１〜８のすべてに対して、アドレスは３つ以上のバンクにわたって分配される。ストライド７の場合、同じバンクに対して７つの連続したアクセスがある。たとえば、アドレスシーケンス１４、２１、２８、３５、４２、４９、５６はすべて、バンク０にマッピングする。シーケンスにおける次のアドレス（６３）は、異なるバンクにマッピングするが、シーケンスにおける続く７つのアドレスは、再びバンク０にマッピングする。ストライド７のシーケンスに対する帯域幅がＢ／３であるという控えめな想定を使用すると、最初の８ストライドにわたる平均帯域幅は、（７×Ｂ＋Ｂ／３）／８＝９１．７％である。
【００３４】
図７は、１６バンクのメモリを用いる本発明の実施形態の実施態様の例を示す。この実施例では、Ｎ＝４およびｂ＝Ｘｍｏｄ１５である。そして、ｂは０〜１４のあり得る値の範囲を有する。インターリーブビットとしてＸのビットｘａｘｂｘｃｘｄが使用される。アドレスＸをマッピングするために使用される規則は、次の通りである。すなわち、１）ｂ＝０、…１３または１４でありかつ（ｘａｘｂｘｃｘｄ）＝（１１１１）である場合、バンクはバンク１５であり、それ以外のバンク＝バンクｂである。なお、ｂおよびインターリーブビットには合計２４０の異なる場合または組合せがあり、各バンクは、１５の異なる場合に対してマッピングされることに留意されたい。
【００３５】
なお、図７に示す実施例では、１５（Ｎ＝４）は素数ではなく、３および５の除数を有する合成数であることに留意されたい。２Ｎ−１のほとんどの低い値の数は素数であり、たとえば３（Ｎ＝２）、７（Ｎ＝３）、３１（Ｎ＝５）および１２７（Ｎ＝７）は素数である。しかしながら、６３（Ｎ＝６）もまた素数ではなく、２１、９、７および３の除数を有する合成数である。同様に、２５５（Ｎ＝８）、５１１（Ｎ＝９）、１０２３（Ｎ＝１０）、２０４７（Ｎ＝１１、２３・８９＝２０４７）および４０９５（Ｎ＝１２）は、素数ではない。８１９１（Ｎ＝１３）は素数である。最初の２６個の素数は、２，３、５、７、１１、１３、１７、１９、２３、２９、３１、３７、４１、４３、４７、５３、５９、６１、６７、７１、７３、７９、８３、８９、９７、１０１である。より大きい数は、目下、２つの理由で重要ではない。第１に、現標準メモリは、典型的には４または８バンクを使用するためである。第２に、３より大きいＮに対し、翻訳をクロックサイクル内で行うことは目下困難であるためである。
【００３６】
ｍｏｄ式における除数は、素数、たとえば３または７であるのが好ましい。そうでない場合、因数、同様に因数の倍数に等しいストライドで、バンク競合が発生する。このため、１５の場合、３、５と同様に６、９、１２等（３の倍数）および１０、１５等（５の倍数）のストライドでバンク競合が発生する。これにより、本発明の実施形態のパフォーマンスが図１Ｂの構成のパフォーマンスまで低減する。これは許容可能でないため、バンクを合せてグループ化することにより少ない数の「より大きい」バンクを形成することができる。言換えれば、たとえば、１６バンクを対で合せてグループ化することにより、８つの等しいサイズのより大きいバンクを形成することができる。これにより、バンクの数が、２Ｎ−１が素数であるように、すなわちｎ＝３またはｍｏｄ７であるようなレベルまで低減する。この低減はまた、他の非素数のいずれをも素数まで低減するように作用する。そして、追加のビットを使用して、各大きいバンク内の特定の小さいバンクを選択することができる。この構成の実施例を図８に示す。なお、バンク０および１、２および３、４および５、６および７、８および９、１０および１１、１２および１３ならびに１４および１５は、互いに対にされることにより、その対の両バンクに同じモジュラスｂが適用されるようにされている。ビットシーケンスにおける第１のビット８０１を使用して、バンクの対のバンク間で選択がなされる。代替的に、バンクを８バンクからなる２つのグループに分割することができ、ビットを使用して２つのグループ間で選択することができる。なお、１６もまた４からなる４つのグループに分割してもよく、２つのビットを使用してそれらの間で検出してもよく、たとえば、ｎ＝２またはｍｏｄ３であることに留意されたい。
【００３７】
図９は、本発明の実施形態を有するメモリコントローラ９０１の実施例を示す。メモリコントローラ９０１は、コマンドバス９０４を介してプロセッサユニット９０２からメモリアクセス要求を受取る。なお、コンピュータシステム９００は複数のプロセッサユニットを含んでもよいことに留意されたい。メモリアクセス要求は、アドレスおよび制御情報を含む。制御情報は、アクセス要求が読み出し動作、書込み動作、それらの組合せまたは他のメモリ機能に対するものであることを指定してもよい。アクセスがメモリ９０３に対するデータの書込みを含む場合、プロセッサは、データバス９０５にデータを送出してもよい。メモリコントローラ９０１は、上述した発明および図３ないし図８に示す発明の実施形態に従って、要求におけるアドレスをＳＤＲＡＭメモリバンク９０３内のメモリロケーションにマッピングする。メモリコントローラは、制御情報とマッピングされたアドレスとをコマンドバス９０６を介してメモリバンク９０３に転送し、書込み動作のためのデータがある場合、そのデータはデータバス９０７を介してメモリバンク９０３に提供される。そして、メモリバンク９０３は、マッピングされたメモリロケーションによって指定される制御情報を処理する。アクセスが読出し動作を含む場合、マッピングされたメモリロケーションからデータが読出され、それが、データバス９０７、コントローラ９０１およびデータバス９０５を介して処理ユニット９０２に再び提供される。１処理ユニットしかない場合、データバス９０７は、処理ユニット９０２に直接連結してもよい。多重処理ユニットシステムでは、メモリコントローラ（または別の構造）は、要求側処理ユニットに戻るデータの流れを制御する。なお、メモリコントローラ９０１は、図９に示すような別々のユニットではなくプロセッサユニット９０２の一部であってもよいことに留意されたい。
【００３８】
図１０は、図９のメモリコントローラ９０１の構成の実施例を示す。メモリコントローラは、アドレス、たとえば物理アドレスを受取りその物理アドレスをメモリバンク９０３にマッピングするアドレスマッパ（address mapper）１００１を有する。アドレスマッパ１００１は、行／列アドレスとして表してもよいバンクアドレス１００３とメモリロケーションアドレス１００４とを提供する。メモリコントローラは、別の保留中のメモリアクセス要求と競合するアドレス情報に対する並び替えバッファ１００２を含むのが好ましい。並び替えバッファは、同じバンクにマッピングするストライドの短いバーストからの、同じバンクへのランダムな連続的アドレスから発生する帯域幅損失を低減する。競合が取除かれると、アドレス情報がリリースされるかまたはメモリバンクに対して発行される。
【００３９】
図１１Ａは、図１０のアドレスマッパ１００１の構成の実施例を示す。アドレスマッパ１００１は、アドレスＸに対しモジュラス関数を実行するロジックまたは回路１１０１と、回路１１０１の結果とアドレスＸの一部とに基づいてバンクアドレスを確定するロジックまたは回路１１０２と、を含む。アドレスマッパ１００１は、アドレスＸから、バンク内のロケーションアドレスであるメモリロケーションアドレスを形成する。メモリロケーションアドレスは、行／列アドレスの形態であってもよい。図１１Ｂは、回路１１０２の出力を示す表である。回路１１０２は、図４Ａにおいて提供する規則に従って動作するように設定される。ａ１ａ０＝００、０１および１０の行は、それぞれ０、１および２の剰余に対応する。このため、ａ１ａ０＝００を意味するｂ＝０およびビットｘａｘｂ＝１１の場合、バンク３が選択され、そのため出力ｂ０ｂ１＝１１（３に対応）となる。なお、図１１Ｂに示すものと同じ規則かまたは異なる規則を形成するために他の回路を使用することができるため、この回路は単なる例示的なものであることに留意されたい。
【００４０】
なお、従来技術において、ｎ＝２ｍ−１である場合（ｎが２ｎの累乗でない場合）、Ｘ  ｍｏｄ  ｎの計算がより容易であることは既知である。ブロック１１０１は、ｎ＝２ｍ−１、たとえばｎ＝３である場合のＸ  ｍｏｄ  ｎを計算する。なお、１）２０ｍｏｄ３＝１、２１ｍｏｄ３＝２、２２ｍｏｄ３＝１、２３ｍｏｄ３＝２等であることに留意されたい。２）Ｘ＝ｘ０×２０＋ｘ１×２１＋ｘ２×２２＋…ｘｐ×２ｐであることに留意されたい。（ａ＋ｂ）ｍｏｄ  ｃ＝（ａ  ｍｏｄ  ｃ）＋（ｂ  ｍｏｄ  ｃ）であるため、２）および３）から、Ｘ  ｍｏｄ  ｎ＝（ｘ０×２０ｍｏｄ  ｎ）＋（ｘ１×２１ｍｏｄ  ｎ）＋（ｘ２×２２ｍｏｄ  ｎ）＋…（ｘｐ×２ｐｍｏｄ  ｎ）であり、それは、１）から、Ｘ  ｍｏｄ３＝（（ｘ）＋ｘ２＋ｘ４＋…）×１＋（ｘ１＋ｘ３＋ｘ５＋…）×２）  ｍｏｄ  ３に等しいことに留意されたい。Ｘが３２ビット、すなわちｘ０〜ｘ３１を有するものと仮定する。そして、先の式から、Ａが０〜１６の数であり、Ｂが３２までの偶数である場合、Ｘ  ｍｏｄ  ｎ＝Ａ＋Ｂ  ｍｏｄ３である。そのため、Ｃが０〜４８の範囲であり、Ｃ＝ｘ０＋ｘ２＋…＋ｘ３０＋２×（ｘ１＋ｘ３＋…ｘ３１）である場合、Ｘ  ｍｏｄ３＝Ｃ  ｍｏｄ  ｎである。数０〜４８を表すために６つの２進数、すなわちｃ０〜ｃ５のみを要するため、Ｃに対して同じ手続きを繰返すことができる。すなわち、Ｘ  ｍｏｄ３＝ｃ０＋ｃ２＋ｃ４）ｍｏｄ３＋（ｃ１＋ｃ３＋ｃ５）×２ｍｏｄ３である。これを、ハードウェアで直接計算することができる。
【００４１】
なお、その実施例で剰余は０〜２の範囲をとるため、３の剰余に対応するａ１ａ０＝１１に対するデータの行はないことに留意されたい。さらに、ａ１ａ０＝１１はブロック１１０１の正当な出力ではないため、図１１Ｂにおいて、表におけるこれらのエントリをドントケア（ｄｃ）として使用することにより、ｂ０およびｂ１に対する式を低減することができることに留意されたい。図示する式は、これらのドントケア行におけるｂ１およびｂ０に対してすべて１を選択することに対応する。
【００４２】
本発明の実施形態を、ＳＤＲＡＭメモリに関して上に説明した。しかしながら、本発明の他の実施形態は、ＤＲＡＭメモリ、ＲＡＭメモリ、ＲＯＭメモリ、ＤＤＲメモリ、ＲＡＭＢＵＳメモリ、キャッシュメモリもしくはブロックまたはバンクに編成される他の任意のタイプのメモリで作用してもよい。
【００４３】
また、本発明の実施形態を、メモリに関して上に説明した。しかしながら、本発明の他の実施形態は、ブロックに編成される他の任意のデバイスで作用してもよい。たとえば、大規模コンピュータシステムにおいて、アービトレータは、異なる処理ユニット間でタスクを分割する際に本発明の実施形態を使用することができ、それによりレイテンシを低減しシステムにおける帯域幅を増大させることができる。
【００４４】
本発明の実施形態は、好ましくは、チップに形成されるロジックおよび／または回路として実装され、本明細書で説明した本発明の実施形態の要素を行うように設計される。しかしながら、本発明の他の実施形態を、ソフトウェアで実装してもよい。ソフトウェアで実装される場合、本発明の実施形態の要素は、本質的に、必要なタスクを実行するコードセグメントである。プログラムまたはコードセグメントを、プロセッサ読取可能媒体に格納するか、あるいは搬送波で具体化されるコンピュータデータ信号かまたは搬送波で変調される信号により、伝送媒体を介して伝送することができる。「プロセッサ読取可能媒体」は、情報を格納するかまたは転送することができるいかなる媒体も含んでよい。プロセッサ読取可能媒体の例には、電子回路、半導体メモリデバイス、ＲＯＭ、フラッシュメモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピーディスケット、コンパクトディスクＣＤ−ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、ＲＦリンク等の伝送媒体によって伝播することができるいかなる信号も含まれてよい。コードセグメントを、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードしてもよい。
【図面の簡単な説明】
【００４５】
【図１Ａ】ＳＤＲＡＭの従来技術の構成の図。
【図１Ｂ】ＳＤＲＡＭの従来技術の構成の図。
【図２Ａ】データバスに対するインターリービングの効果を示す一連のタイミング図。
【図２Ｂ】データバスに対するインターリービングの効果を示す一連のタイミング図。
【図２Ｃ】データバスに対するインターリービングの効果を示す一連のタイミング図。
【図３】本発明の実施形態のフローチャートの例。
【図４Ａ】４バンクメモリシステムによる本発明の実施形態の例の図。
【図４Ｂ】４バンクメモリシステムによる本発明の実施形態の例の図。
【図４Ｃ】４バンクメモリシステムによる本発明の実施形態の例の図。
【図５Ａ】図４Ａないし図４Ｃの発明の代替実施形態の図。
【図５Ｂ】図４Ａないし図４Ｃの発明の代替実施形態の図。
【図５Ｃ】図４Ａないし図４Ｃの発明の代替実施形態の図。
【図６】８バンクメモリシステムによる本発明の実施形態の例の図。
【図７】１６バンクメモリシステムによる本発明の実施形態の例の図。
【図８】１６バンクメモリシステムによる本発明の異なる実施形態の例の図。
【図９】本発明の実施形態を使用するメモリコントローラの例の図。
【図１０】図９のメモリコントローラの例の図。
【図１１Ａ】図１０のメモリコントローラにあるアドレスマッパの例の図。
【図１１Ｂ】図１０のメモリコントローラにあるアドレスマッパの例の図。
【符号の説明】
【００４６】
９０１  メモリコントローラ
１００１  受信アドレスの少なくとも一部を使用して特定バンク内のメモリロケーションを確定する回路
１００２  並び替えバッファ
１１０１  受信アドレスを、バンクの数に基づく除数によって除算した際の剰余を計算する回路
１１０２  剰余と受信アドレスの少なくとも１ビットとに基づいて複数のバンクのうち特定バンクを確定する回路
【図１Ａ】
2004164641.tif 000004
【図１Ｂ】
2004164641.tif 000005
【図２Ａ】
2004164641.tif 000006
【図２Ｂ】
2004164641.tif 000007
【図２Ｃ】
2004164641.tif 000008
【図３】
2004164641.tif 000009
【図４Ａ】
2004164641.tif 000010
【図４Ｂ】
2004164641.tif 000011
【図４Ｃ】
2004164641.tif 000012
【図５Ａ】
2004164641.tif 000013
【図５Ｂ】
2004164641.tif 000014
【図５Ｃ】
2004164641.tif 000015
【図６】
2004164641.tif 000016
【図７】
2004164641.tif 000017
【図８】
2004164641.tif 000018
【図９】
2004164641.tif 000019
【図１０】
2004164641.tif 000020
【図１１Ａ】
2004164641.tif 000021
【図１１Ｂ】
2004164641.tif 000022