JP2004164641A - メモリバンクへのアドレスのマッピングをするメモリコントローラ - Google Patents

メモリバンクへのアドレスのマッピングをするメモリコントローラ Download PDF

Info

Publication number
JP2004164641A
JP2004164641A JP2003379250A JP2003379250A JP2004164641A JP 2004164641 A JP2004164641 A JP 2004164641A JP 2003379250 A JP2003379250 A JP 2003379250A JP 2003379250 A JP2003379250 A JP 2003379250A JP 2004164641 A JP2004164641 A JP 2004164641A
Authority
JP
Japan
Prior art keywords
memory
bank
banks
address
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003379250A
Other languages
English (en)
Other versions
JP4771654B2 (ja
JP2004164641A5 (ja
Inventor
Mark A Heap
マーク・エイ・ヒープ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2004164641A publication Critical patent/JP2004164641A/ja
Publication of JP2004164641A5 publication Critical patent/JP2004164641A5/ja
Application granted granted Critical
Publication of JP4771654B2 publication Critical patent/JP4771654B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Dram (AREA)

Abstract

【課題】データバスを最大限使用してシステムパフォーマンスを最大とするような、メモリバンクにアドレスをマッピングするシステムおよび方法を提供する。
【解決手段】本発明の一実施形態は、受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラを提供する。受信アドレスを複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、剰余と受信アドレスの少なくとも1ビットとに基づいて複数のバンクのうちの特定バンクを確定する回路と、受信アドレスの少なくとも一部を使用して特定バンクのメモリロケーションを確定する回路と、を備えるメモリコントローラである。
【選択図】図10

Description

本発明の実施形態は、包括的にはコンピュータメモリに関し、特に、競合を低減し帯域幅を増大させる、メモリバンクにアドレスをマッピングするシステムおよび方法に関する。
同期ダイナミックランダムアクセスメモリ(synchronous dynamic random access memory、SDRAM)またはダブルデータレートメモリ(double data rate memory、DDR)は、通常、複数のバンクを備える。たとえば、図1Aに示すように、メモリ100は4つのバンク、すなわち108A、108B、108Cおよび108Dを備える。各バンクは、行と列とに配置される。各バンクは、そのそれぞれのセンス増幅器(sense amplifier)111A、111B、111Cおよび111Dを有する。データがメモリから読出されるかメモリに書込まれる時、メモリの特定のバンク(たとえば、108A)における特定の行101が、コントローラ110からの、行アドレスデコーダ102によってデコードされる行およびバンクアドレスによって起動される。所望の行は、行データバッファ104にロードされる。特定の行がアクティブとなった後、列アドレスデコーダ103がコントローラ110からのアドレスを使用して、行データバッファ104内の起動された行の列を選択する。特定の列/行アドレスロケーションに入るかまたはそこから出るデータは、データバス105と、読出しドライバ106と、書込みレシーバ107と、によって処理される。コントローラ110により、アドレス/コマンドバス109が使用されることにより、アドレスおよびコマンドが行アドレスデコーダ102と列アドレスデコーダ103とに送られる。なお、ライン幅は、列の数(#c)×トランザクションのバースト長(RBR)であり、バースト長は、初期列アドレスから開始してアクセスされる連続的な列の数であることに留意されたい。
メモリ100を、バーストメモリトランザクションを処理するようにプログラムしてよく、それにより、単一バンク内で複数のデータロケーションに同時にアクセスする(すなわち、そこから読出すかまたはそこに書込む)ことが可能になる。図1Aのメモリの場合、バースト長が4とすると、1つの列アドレスが4つの連続したアドレスとして解釈され、それにより1つの列アドレスのみで4つの列に同時にアクセスすることができる。各列/行ロケーションに対応するメモリロケーションが、データバスに連結される。このため、行が起動される毎に、合計4つのメモリロケーションにアクセスすることができる。
この構成の1つの問題は、メモリバンクに対してセンス増幅器が1行しかないことである。したがって、メモリバンクの特定行に対してメモリロケーションがアクセスされた後、その行を、同じバンクの異なる行へのアクセスを可能にするために閉じるかまたはプリチャージする必要がある。このため、プリチャージが行われている間、メモリバンク内の他の行にアクセスすることができない。同じバンクにおける異なる行に対する起動間の最小時間は、行アドレスストローブ(row address strobe、RAS)サイクルタイムすなわちTRCとして知られている。
システムパフォーマンスを最大にするために、データバスは、可能な限りビジーに維持される必要があり、そうでなければ、CPUは、メモリからのデータを待つ間にアイドル状態となる可能性がある。データバス使用を最大にする1つの方法は、異なるバンクへの連続したメモリアクセスをインターリーブすることである。これにより、1つの特定バンクにアクセスした後、他のバンクは、理想的にはTRCが経過するまでアクセスされ、その後、その1つの特定バンクに再びアクセスすることができる。なお、帯域幅は、データがバスで転送されるクロックサイクルの数をクロックサイクルの合計数によって除算した数であることに留意されたい。そのため、データが常に転送される場合、帯域幅は100%である。データが3/4サイクルで転送される場合、帯域幅は75%である。そのため、帯域幅を最大化することは、データバスの使用を最大にすることを意味する。
図1Bは、従来技術による図1Aの4バンクメモリへのアドレスマッピングの例150を示す。この例では、簡単のために、4つのバンクが合計32のアドレスロケーションを有するものと仮定する。このように、ストライド1でアドレス指定される、連続的にアドレス指定されるトランザクションは、異なるバンクにマッピングされる。これは、最下位ビットがバンクアドレスを確定するため、最下位ビット(LSB)インターリービングと呼ばれる。たとえば、2進表記では、16、17、18および19の2つの最下位ビットは、それぞれ00、01、10および11であり、そのためこれらのアドレスは、それぞれバンク0、1、2および3にマッピングされる。なお、0〜31より高いアドレスは、循環ロケーションにマッピングし、たとえば、アドレス32はロケーション0にマッピングし、アドレス33はロケーション1にマッピングする、等である。
図2Aないし図2Cは、インターリービングがいかにデータバスに影響を与えるかを示す。tRCは13サイクルであり、バースト長は4サイクルであり、AはバンクXに対する起動コマンドであり、RはバンクXに対する読出しコマンドであり、DはバンクXからのデータであるものとする。図2Aは、図1Aに示す構成の4バンクのうちの3バンクを使用するインターリービングの例を示す。図示するように、データバスは、13サイクルのうちの12サイクルに対して使用される。図2Bは、図1Aに示す構成の4バンクのうちの2バンクを使用するインターリービングの例を示す。図示するように、データバスは、13サイクルのうちの8サイクルに対して使用され、それは、図2Aの構成の効率の2/3である。R2が発行された後、第1のバンクに対してRASサイクルタイム(tRC)は完了していないため、第1のバンクに対する後続するアクセスは、RASサイクルタイムが完了するまで待たなければならない。この追加の待ち時間により、データバス使用が低減する。図2Cは、図1Aに示す構成の4バンクのうちの1バンクを使用するインターリービングの例を示す。図示するように、データバスは、13サイクルのうちの4サイクルに対して使用され、それは図2Aの構成の効率の1/3である。1つのバンクのみが使用されているため、次のアクセスを開始することができる前に、各アクセスに対してプリチャージが完了しなければならない。インターリービング例の効率を調べる別の方法は、3つのバンクを使用することによりBの帯域幅効率が提供され(図2A)、2つのバンクを使用することにより2B/3の効率が提供され(図2B)、1つのバンクを使用することにより1B/3の効率が提供される(図2C)、と想定することである。
メモリコマンドは、アドレス/コマンドバス109を介して送られ、典型的には、アドレスとともに提供される4つの追加ビットを含む。コマンドビットは、典型的には、書込みイネーブル(write enable、WE)と、RASと、列アドレスストローブ(column address strobe、CAS)と、チップ選択(chip select、CS)と、を含む。たとえば、図2AのA1(起動コマンド)は、行/バンクアドレスとともに送られ、R1(読出しコマンド)は、列/バンクアドレスとともに送られる。このように、読出し(または書込み)動作に対し、2つの別々のコマンド、すなわち行アドレスによる起動とそれに続く列アドレスによる読出し/書込みとが使用される。
インターリービングを達成するために使用される第1の従来技術の方法は、連続するアクセスに対して異なるバンクが使用されるように、メモリアクセスを並び替える、というものである。複数のメモリアクセスが、メモリコントローラ110において待ち行列に入れられるかまたはバッファリングされる。そして、連続したメモリアクセスに対して異なるバンクが使用されるように、異なる順序でバッファからアクセスが発行される。この方法にはいくつかの問題がある。すなわち、この方法は、ランダムアドレスマッピングには適当に作用するが、アクセスにおけるアドレスが一定のストライドを有する場合は適当に作用しない。それは、並べ替えバッファが、ストライドパターンを壊すいかなるアドレスも含まないためである。一定のストライドアドレスは、1つまたは2つのバンクにマッピングする傾向にある。このため、0、4、8、…のアドレスを有する4バンクメモリ(ストライドが4)に対する一連のアクセス要求は、同じバンクにマッピングし、アドレス0、2、4、6、…を有する(ストライドが2)一連のアクセス要求は、2つのバンクにマッピングする。そのため、いかにアクセスがバッファリングされようとも、1つまたは2つのバンクしか使用されない。上に示したように、1つのバンクかまたは2つのバンクへの順次アクセスは、それぞれ1B/3または2B/3の効率を有する。なお、これは典型的には、プログラム全体を通して連続して発生せず、プログラム実行のいくつかのスポットにおいて発生する、ということに留意されたい。
従来技術でインターリービングを達成するために使用する第2の方法は、要求のアドレスの下位ビットにわたってインターリーブすることである。たとえば、上の4バンク例を使用することにより、バンクを選択するためにアドレスの2つの最下位ビットが使用される。このため、00はバンク0にアクセスし、01はバンク1にアクセスし、10はバンク2にアクセスし、11はバンク3にアクセスする。ここでもまた、この方法は、ランダムアドレスかまたはストライドが1のアドレスには適当に作用するが、ストライドが2、たとえば2または4のアドレスには適当に作用しない。1のストライドは、4つのバンクすべてにわたってインターリーブする。2のストライドにより、上記例の4バンクのうちの2つのバンクにわたってインターリーブすることになる。たとえば、0、2、4、6、8、…のアドレスは、第1のバンク(0、4、8はバンク0にマッピングする)と第3のバンク(2、6はバンク2にマッピングする)とにわたってインターリーブする。4のストライドは、1つのバンクにわたってインターリーブする。たとえば、0、4、8、…のアドレスは、第1のバンク、バンク0にわたってインターリーブする。4バンク例によるこの方法の場合の平均帯域幅は、(B+2/3B+B+1/3B)/4であり、それは3B/4に等しく、最悪の場合の帯域幅は1/3Bである。なお、平均帯域幅は、4つのあり得るストライド帯域幅、すなわち、1のストライド(B)、2のストライド(2B/3)、3のストライド(B)および4のストライド(1B/3)から計算される。この方法は、非特許文献1においてさらに説明されているので参照されたい。
従来技術でインターリービングを達成するために使用する第3の方法は、各々が2行および列を有する、素数のバンクを使用することである。バンクへのアドレスのマッピングを、アドレスmodバンク、すなわち、アドレスをバンクの数で除算した後の剰余を計算することによって行う。たとえば、3つのバンクがある場合、6mod3=0、7mod3=1、8mod3=2および9mod3=0等である。このように、1または2のストライドでは、順次アクセスが異なるバンクに向けられることになるが、3のストライドでは、アクセスが同じバンクに向けられることになる。なお、nのストライドは、n mod3のストライドと同じ振舞いをし、そのため、たとえば4のストライドは4mod3=1のストライドのように振舞う。このように、あり得るすべてのストライドに対して3バンクシステムの帯域幅を計算するためには、ストライド1、2および3の帯域幅を計算するだけでよい。3バンクシステムでの素数方法の場合の平均帯域幅は、(B+B+1B/3)/3=7B/9であり、最悪の場合は、3のストライドに対する1B/3である。この方法は、非特許文献2においてさらに説明されているので参照されたい。この方法の問題は、メモリシステムが素数で利用可能ではないことである。メモリシステム、たとえばSDRAMは、通常、2のバンクにおいてのみ利用可能である。このため、この方法を使用するシステムは、メモリの一部、たとえば、4バンクある場合の1バンクか、または16に最も近い素数が13であるため16バンクある場合の3バンクを使用しない。
なお、帯域幅の上記論考は、メモリアクセス要求の連続的なストリームに対して一定のストライドで達成することができる最大帯域幅に対するものである。実際の実現される帯域幅は、一般的に、最大帯域幅より小さい。それは、実際のメモリアクセスパターンが、通常、連続した一定のストライドより複雑である、たとえば異なる時間長に対して異なるストライドであるかまたはまったくストライドがないためである。
"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
本発明の目的は、データバスを最大限使用してシステムパフォーマンスを最大とするような、メモリバンクにアドレスをマッピングするシステムおよび方法を提供するものである。
本発明の一実施形態は、受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラであって、受信アドレスを複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、剰余と受信アドレスの少なくとも1ビットとに基づいて複数のバンクのうちの特定バンクを確定する回路と、受信アドレスの少なくとも一部を使用して特定バンクのメモリロケーションを確定する回路と、を備えるメモリコントローラである。
本発明の別の実施形態は、アドレスを複数のメモリバンクのうちの特定バンクにマッピングする方法であって、アドレスを受取るステップ、アドレスを複数のバンクの数に基づく除数によって除算するステップ、除算するステップの剰余とアドレスの少なくとも1ビットとに基づいて特定バンクを確定するステップ、とを含む方法である。
本発明の別の実施形態は、アドレスを複数のメモリバンクのうちの特定バンクにマッピングするシステムであって、アドレスを複数のバンクの数に基づく除数によって除算し剰余を形成する手段と、剰余とアドレスの少なくとも1ビットとに基づいて特定バンクを確定する手段と、を備えるシステムである。
本発明の別の実施形態は、複数のメモリバンクと、アドレスを含むメモリアクセス要求を受取り、アドレスの少なくとも1つのビットと、アドレスを複数のメモリバンクの数に関連する数によって除算した場合の剰余とに基づいて、アドレスを複数のメモリバンクにおける特定のロケーションにマッピングするメモリコントローラと、受信アドレスの少なくとも一部を使用して特定のロケーションにアクセスする回路と、を備えるコンピュータシステムである。
ここで、本発明のより完全な理解のために、添付図面とともに考慮する以下の説明を参照する。
本発明の実施形態は、メモリアドレス、たとえば物理アドレスを、2バンクを有するメモリシステムにマッピングするのが好ましい。2バンクの各々は、ほとんどの連続的なアドレスが異なるバンクにマッピングされるように2メモリロケーションを有するのが好ましい。連続的なアドレスは、同じストライドに関することを意味し、たとえば、ストライドが1である場合、連続的なアドレスは0、1、2、3、4等であり、ストライドが2である場合、連続的なアドレスは0、2、4、6、8等である。本発明の実施形態は、実施形態が1未満のクロックサイクルでマッピングを行うことができるようにする組合せ回路を使用して実現されるのが好ましい。これにより、メモリ待ち時間が低く維持される。本発明の実施形態は、バンク競合なしに多くの異なるストライドに対して動作可能であり、そのためデータバスに対して高メモリ帯域幅を提供する。本発明の実施形態は、素数のメモリバンクを必要とせず、そのため市販のメモリシステムで動作し利用可能なメモリのすべてを使用する。
なお、種々の実施態様において、メモリにアクセスするためにアドレスの最下位ビットを使用しない。本発明の実施形態の説明を簡略化するために、メインメモリにアクセスするためにアドレスのすべてのビットを使用する。しかしながら、当業者は、最下位ビットのいくつかは、キャッシュライン内のバイトを指定するため、メインメモリに対してアドレス指定するために必要のない場合があることを認めるであろう。さらなる情報を得るためには、2002年6月11日に発行された、「METHOD AND APPARATUS FOR DETERMINING INTERLEAVING SCHEMES IN A COMPUTER SYSTEM THAT SUPPORTS MULTIPLE INTERLEAVING SCHEMES」と題された米国特許第6,405,286号と、2000年5月30日に発行された、「MAIN MEMORY BANK INDEXING SCHEME THAT OPTIMIZES CONSECUTIVE PAGE HITS BY LINKING MAIN MEMORY BANK ADDRESS ORGANIZATION TO CACHE MEMORY ADDRESS ORGANIZATION」と題された同第6,070,227号と、を参照のこと。
本発明の実施形態の動作に対する好ましい実施態様300を、図3に示す。本システムは、2バンクのSDRAMメモリを備え、ビットストリームX(Xは、X、…Xからなる)を使用してシステム内のメモリロケーションにアドレス指定する。動作は301で開始し、メモリアドレスXを含むメモリアクセス要求が受取られる。本発明の実施形態は、Nビット(Nは、ビットストリームからの2バンクのNである)を読出す(302)。これらのNビットは、インターリーブビットとして既知であるのが好ましい。ビットストリームにおけるロケーションは、事前に確定されており、最下位ビットであるのが好ましい。しかしながら、他のビットを使用してもよい。さらに、Nビットは、ストリームに連続して位置していてもよく、あるいは互いに離れていてもよい。Nビットは、下位ビットであっても上位ビットであってもよく、もしくは幾分かの下位ビットと幾分かの上位ビットであってもよい。そして、本発明の実施形態は、Xが2−1で除算された場合の剰余であるモジュラス(modulus)bを確定する(303)。これは、b=Xmod2−1として表される。この演算を、ボックス302と並行して、それより前にまたは後に行ってもよい。そして、Nビットとbとを使用して、アドレスXがいずれのバンクにマッピングされるかを確定する(304)。一般規則は、各bに対して、Nビットの1つの組合せがバンク2(または指定されたバンク)にマッピングし、他の組合せのすべてがバンクbにマッピングすることが好ましい。そして、読出し、書込みまたは他のメモリ動作のために、NビットなしにXによって識別されるメモリロケーション(行および列アドレス)にアクセスすることができる(305)。なお、モジュラスは、2進数の場合(X+…x)mod2−1である。
図3の発明の実施形態の実施態様の例を、図4Aに示す。この実施例では、メモリシステムが4バンク、すなわちバンク0、バンク1、バンク2およびバンク3を有するものと仮定する。なお、バンクの数は、異なる数のバンクを使用することができるため、単に例示としてのものであることに留意されたい。このため、N=2およびb=Xmod3である。そして、bは、0、1および2のあり得る値の範囲を有する。インターリーブビットとしてXのxおよびxを使用する。アドレスXをマッピングするために使用する規則は、以下の通りである。すなわち、1)b=0でありかつ(x)=(11)である場合、バンクはバンク3であり、2)b=1でありかつ(x)=(00)である場合、バンクはバンク3であり、3)b=2でありかつ(x)=(11)である場合、バンクはバンク3であり、4)それ以外のバンク=バンクbである。なお、他の規則を使用することができるため、これらの規則は単に例示としてのものであることに留意されたい。たとえば、バンク3がインターリーブビットのb=0、1、2の特別な場合を受取る代りに、異なるバンク、たとえばバンク0を使用することができ、このため規則4は、それ以外のバンク=バンクb+1となる。なお、bおよびインターリーブビットの合計12の異なる場合または組合せがあり、各バンクは3つの異なる場合にマッピングされることに留意されたい。
図4Bは、図4Aの実施例が、合計32のメモリロケーションを有するメモリの4つのバンクでいかに動作するかを示す。ロケーションの数は、より多いロケーションも少ないロケーションも存在することができるため、単なる例示的なものである。典型的には、メモリシステムは、何千ものメモリロケーションを有する。したがって、メモリアドレスは、2進アドレス11111、11110、…、00001、00000に対応するX=31、30、…1、0である。なお、各2進アドレスは、xに対応する。インターリーブビットは、xであるように選択されるが、他のビット、たとえばxを使用することができるため、それらは単なる例として選択される。このため、Xの残りのビット、すなわちxは、各バンクにおけるメモリロケーションアドレスに対して使用される。図4Cは、図4Bの実施例のレイアウトを示す。なお、各バンクは、7(111)から0(000)までのバンクアドレスを有し、ビットxは、各バンク内においてそのバンクアドレスを確定するために使用されることに留意されたい。さらに、バンク内のアドレスは、簡単のために複数の行を有する単一列として示すことにも留意されたい。実際のメモリバンクは行および列のアレイからなり何千ものロケーションを有するため、アドレスビットは、行と列との両方の情報を有する。
図2Aないし図2Cを参照すると、ストライドが3バンクを使用する場合、Bの帯域幅があり、ストライドが2バンクを使用する場合、帯域幅は2B/3であり、ストライドが1バンクを使用する場合、帯域幅はB/3である。図2Aないし図2Cに示す例では、Bは12/13に等しい。図2Aにおいて、データバスにおけるD1までのサイクルは、第1の転送までの時間であるため、無視することができる。そして、データは、次の13サイクルのうちの12に対して転送され、このため帯域幅は12/13である。同様に、図2Bのストリームに対する帯域幅は8/13(2B/3である)であり、図2Cのストリームの場合は4/13(B/3である)である。このように、3または4バンクを使用して、最大(または略最大、12/13)を達成することができる。図4Aないし図4Cの実施例においてこれらの結果を使用することにより、1のストライドは4バンクにマッピングし、2のストライドは3バンクにマッピングし、3のストライドは2バンクにマッピングし、4のストライドの1/4(たとえば、3、5、11、15、19、23)は、2バンクにマッピングする。4の残りのストライドは、3バンクにマッピングする。このため、図4Aないし図4Cに示す実施例に対する1〜4のストライドの場合の平均帯域幅は、(B+B+2B/3+(1/4×2B/3+3B/4))/4=43B/48=.896Bであり、最悪の場合は2B/3である。なお、これらの計算は、たとえば4ロケーションのバッファを使用する、何らかの並べ替えを想定する。この並べ替えは、ランダムな連続的アクセスが同じバンクに向う機会を低減するために必要である。図2Aないし図2Cに示すストリームにより例証されるように、1または2バンクとは異なる3または4バンクを通してアクセスを循環させることがより適切である。
図4Cの帯域幅に対してさらに続けて説明する。1のストライドを、小さい並べ替えバッファを用いて、3つのバンクにマッピングすることができる。たとえば、0、1、2、3、4、5、6のアドレスストリームを考慮する。図4Cのマッピングを使用すると、メモリコントローラは、並べ替えなしに0、1、2、3をバンク0、1、2、3にマッピングする。しかしながら、アドレス4は、バンク3にマッピングし、バンク3はビジーである。このため、アドレス4がバッファリングされ、次のアドレス、すなわちアドレス5が考慮されるが、それもまたビジーである(この実施例の目的のために、ビジーバンクは、最近書込みがなされた2つのバンクである)。このため、アドレス5がバッファリングされ、次のアドレス、すなわちバンク0にマッピングされるビジーではないアドレス6が考慮される。ここで、バンク2はもはやビジーではないため、アドレス5がバンク2に送られる。次に、バンク3はもはやビジーではないため、アドレス4がバンク3に送られる。このように、受取られる順序は、0、1、2、3、4、5、6であり、送られる順序は、バンク0、1、2、3、0、2、3に対応する0、1、2、3、6、5、4である。少なくとも3バンクが使用中であるため、帯域幅は1のストライドの場合はBである。
2のストライドを有するストリーム、たとえばアドレス0、2、4、6、8、10のストリームを想定する。これは、並び替えなしにバンク0、2、3、0、2、1にマッピングする。少なくとも3つのバンクが使用中であるため、帯域幅は2のストライドの場合はBである。
3のストライドを有するストリーム、たとえばアドレス0、3、6、9、12、15、18、21、24、27等のストリームを想定する。これらは、バンク0、3、0、0、0、3、0、0、0、3に直接マッピングする。並び替えバッファを用いて、アドレスは、バンク0、3、0、3、0、3、0、3に対応する順序0、3、6、15、9、27、12等で発行される。2バンクが使用中であるため、帯域幅は、3のストライドの場合は2/3Bであり、それは図2Bのストリームの帯域幅と同様である。なお、パターンを並び替えることができる時間は、並び替えバッファの深さによって決まることに留意されたい。この実施例では、たとえば18、21および24を格納するために3の深さが必要である。さらに、一定のストライドは、典型的には長くは続かないことにも留意されたい。
4のストライドを有するストリーム、たとえばアドレス0、4、8、12のストリームが、バンク0、3、2、0にマッピングする(3バンクマッピング)ものとする。しかしながら、最悪の場合のストライド4ストリームは、たとえばアドレスシーケンス3、7、11、15、19、23である。このストリームは、バンク3、1、3、3、1、3にマッピングする。2バンクが使用中であるため、最悪の場合の帯域幅は、4のストライドに対して2/3Bである。
なお、本発明の実施形態に対する帯域幅の論考は、一定のストライドでのメモリアクセス要求の連続的なストリームに対して達成することができる最大帯域幅に対するものである。本発明の実施形態を使用する実際に実現される帯域幅は、典型的には最大帯域幅より小さくなる。それは、実際のメモリアクセスパターンが、典型的には、連続的な一定のストライドより複雑であり、たとえば異なる長さの時間に対する異なるストライドかまたはストライドがまったくないためである。
図5Aは、図4Aのものと同様の、本発明の実施形態の実施例を示し、図4Aのものとはわずかに異なる規則を有する。なお、アドレスXをマッピングするために使用する規則は、次のとおりである。すなわち、1)b=0、1または2でありかつ(x)=(11)である場合、バンクはバンク3であり、2)それ以外のバンク=バンクbである。図5Bおよび図5Cに示すように、この変更により、図4Bおよび図4Cに示すものとは異なるマッピングとなる。これは正当なマッピングであるが、帯域幅は図4Aないし図4Cのものほど高くはない。図5Aないし図5Cのマッピングの場合、1〜4のストライドに対する帯域幅は、((B+B+2B/3+(1/4×B/3+3/4×B))/4=42/48=0.875Bであり、最悪の場合のパフォーマンスは、単一バンク3にマッピングするように、ストライド4アドレスシーケンス3、7、11、15、19、23、27、31に対する1/3Bである。しかしながら、このマッピングは、従来技術より高い帯域幅を有する。図1BのLSBインターリービングの場合ストライド1〜4の帯域幅は、ストライド1の場合はBであり(ストライド1は4バンクすべてを使用するため)、ストライド2の場合は2B/3であり(ストライド2は2つのバンクを使用するため、たとえば0、2、4、6、8はバンク0および2を使用する)、ストライド3の場合はBであり(ストライド3は並び替えにより4つのバンクをすべて使用するため)、ストライド4の場合はB/3である(ストライド4は1つのバンクしか使用しないため)。このため、平均は、((B+2B/3+B+B/3))/4=3/4B=0.75Bであり、最悪の場合はB/3である。
なお、他の規則を使用することができるため、図4Aおよび図5Aに示す規則は単なる例示的なものであることに留意されたい。さらに、バンク内のアドレスは、簡単のために複数の行を有する単一列として示すことにも留意されたい。実際のメモリバンクは行および列のアレイから構成され何千ものロケーションを有するため、アドレスビットは、行および列の両方の情報を有する。
上述したように、本発明の実施形態は、異なる数、たとえば4以外のバンクを有するメモリシステムで動作することができる。8バンクのメモリ、すなわちバンク0、バンク1、バンク2、バンク3、バンク4、バンク5、バンク6およびバンク7を有する発明の実施形態の実施態様の例を、図6に示す。このため、N=3およびb=Xmod7である。そして、bは、0〜6のあり得る値の範囲を有する。インターリーブビットとしてXのビットxが使用される。アドレスXをマッピングするために使用する規則は、次のとおりである。すなわち、1)b=0、2、4または6でありかつ(x)=(111)である場合、バンクはバンク7であり、2)b=1、3または5でありかつ(x)=(000)である場合、バンクはバンク7であり、3)それ以外のバンク=バンクbである。なお、bおよびインターリーブビットには合計56の異なる場合または組合せがあり、各バンクは7つの異なる場合にマッピングされることに留意されたい。図6の場合のアドレスのバンクへのマッピングは、以下の通りである。
Figure 2004164641
ストライド1〜8のすべてに対して、アドレスは3つ以上のバンクにわたって分配される。ストライド7の場合、同じバンクに対して7つの連続したアクセスがある。たとえば、アドレスシーケンス14、21、28、35、42、49、56はすべて、バンク0にマッピングする。シーケンスにおける次のアドレス(63)は、異なるバンクにマッピングするが、シーケンスにおける続く7つのアドレスは、再びバンク0にマッピングする。ストライド7のシーケンスに対する帯域幅がB/3であるという控えめな想定を使用すると、最初の8ストライドにわたる平均帯域幅は、(7×B+B/3)/8=91.7%である。
図7は、16バンクのメモリを用いる本発明の実施形態の実施態様の例を示す。この実施例では、N=4およびb=Xmod15である。そして、bは0〜14のあり得る値の範囲を有する。インターリーブビットとしてXのビットxが使用される。アドレスXをマッピングするために使用される規則は、次の通りである。すなわち、1)b=0、…13または14でありかつ(x)=(1111)である場合、バンクはバンク15であり、それ以外のバンク=バンクbである。なお、bおよびインターリーブビットには合計240の異なる場合または組合せがあり、各バンクは、15の異なる場合に対してマッピングされることに留意されたい。
なお、図7に示す実施例では、15(N=4)は素数ではなく、3および5の除数を有する合成数であることに留意されたい。2−1のほとんどの低い値の数は素数であり、たとえば3(N=2)、7(N=3)、31(N=5)および127(N=7)は素数である。しかしながら、63(N=6)もまた素数ではなく、21、9、7および3の除数を有する合成数である。同様に、255(N=8)、511(N=9)、1023(N=10)、2047(N=11、23・89=2047)および4095(N=12)は、素数ではない。8191(N=13)は素数である。最初の26個の素数は、2,3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97、101である。より大きい数は、目下、2つの理由で重要ではない。第1に、現標準メモリは、典型的には4または8バンクを使用するためである。第2に、3より大きいNに対し、翻訳をクロックサイクル内で行うことは目下困難であるためである。
mod式における除数は、素数、たとえば3または7であるのが好ましい。そうでない場合、因数、同様に因数の倍数に等しいストライドで、バンク競合が発生する。このため、15の場合、3、5と同様に6、9、12等(3の倍数)および10、15等(5の倍数)のストライドでバンク競合が発生する。これにより、本発明の実施形態のパフォーマンスが図1Bの構成のパフォーマンスまで低減する。これは許容可能でないため、バンクを合せてグループ化することにより少ない数の「より大きい」バンクを形成することができる。言換えれば、たとえば、16バンクを対で合せてグループ化することにより、8つの等しいサイズのより大きいバンクを形成することができる。これにより、バンクの数が、2−1が素数であるように、すなわちn=3またはmod7であるようなレベルまで低減する。この低減はまた、他の非素数のいずれをも素数まで低減するように作用する。そして、追加のビットを使用して、各大きいバンク内の特定の小さいバンクを選択することができる。この構成の実施例を図8に示す。なお、バンク0および1、2および3、4および5、6および7、8および9、10および11、12および13ならびに14および15は、互いに対にされることにより、その対の両バンクに同じモジュラスbが適用されるようにされている。ビットシーケンスにおける第1のビット801を使用して、バンクの対のバンク間で選択がなされる。代替的に、バンクを8バンクからなる2つのグループに分割することができ、ビットを使用して2つのグループ間で選択することができる。なお、16もまた4からなる4つのグループに分割してもよく、2つのビットを使用してそれらの間で検出してもよく、たとえば、n=2またはmod3であることに留意されたい。
図9は、本発明の実施形態を有するメモリコントローラ901の実施例を示す。メモリコントローラ901は、コマンドバス904を介してプロセッサユニット902からメモリアクセス要求を受取る。なお、コンピュータシステム900は複数のプロセッサユニットを含んでもよいことに留意されたい。メモリアクセス要求は、アドレスおよび制御情報を含む。制御情報は、アクセス要求が読み出し動作、書込み動作、それらの組合せまたは他のメモリ機能に対するものであることを指定してもよい。アクセスがメモリ903に対するデータの書込みを含む場合、プロセッサは、データバス905にデータを送出してもよい。メモリコントローラ901は、上述した発明および図3ないし図8に示す発明の実施形態に従って、要求におけるアドレスをSDRAMメモリバンク903内のメモリロケーションにマッピングする。メモリコントローラは、制御情報とマッピングされたアドレスとをコマンドバス906を介してメモリバンク903に転送し、書込み動作のためのデータがある場合、そのデータはデータバス907を介してメモリバンク903に提供される。そして、メモリバンク903は、マッピングされたメモリロケーションによって指定される制御情報を処理する。アクセスが読出し動作を含む場合、マッピングされたメモリロケーションからデータが読出され、それが、データバス907、コントローラ901およびデータバス905を介して処理ユニット902に再び提供される。1処理ユニットしかない場合、データバス907は、処理ユニット902に直接連結してもよい。多重処理ユニットシステムでは、メモリコントローラ(または別の構造)は、要求側処理ユニットに戻るデータの流れを制御する。なお、メモリコントローラ901は、図9に示すような別々のユニットではなくプロセッサユニット902の一部であってもよいことに留意されたい。
図10は、図9のメモリコントローラ901の構成の実施例を示す。メモリコントローラは、アドレス、たとえば物理アドレスを受取りその物理アドレスをメモリバンク903にマッピングするアドレスマッパ(address mapper)1001を有する。アドレスマッパ1001は、行/列アドレスとして表してもよいバンクアドレス1003とメモリロケーションアドレス1004とを提供する。メモリコントローラは、別の保留中のメモリアクセス要求と競合するアドレス情報に対する並び替えバッファ1002を含むのが好ましい。並び替えバッファは、同じバンクにマッピングするストライドの短いバーストからの、同じバンクへのランダムな連続的アドレスから発生する帯域幅損失を低減する。競合が取除かれると、アドレス情報がリリースされるかまたはメモリバンクに対して発行される。
図11Aは、図10のアドレスマッパ1001の構成の実施例を示す。アドレスマッパ1001は、アドレスXに対しモジュラス関数を実行するロジックまたは回路1101と、回路1101の結果とアドレスXの一部とに基づいてバンクアドレスを確定するロジックまたは回路1102と、を含む。アドレスマッパ1001は、アドレスXから、バンク内のロケーションアドレスであるメモリロケーションアドレスを形成する。メモリロケーションアドレスは、行/列アドレスの形態であってもよい。図11Bは、回路1102の出力を示す表である。回路1102は、図4Aにおいて提供する規則に従って動作するように設定される。a=00、01および10の行は、それぞれ0、1および2の剰余に対応する。このため、a=00を意味するb=0およびビットx=11の場合、バンク3が選択され、そのため出力b=11(3に対応)となる。なお、図11Bに示すものと同じ規則かまたは異なる規則を形成するために他の回路を使用することができるため、この回路は単なる例示的なものであることに留意されたい。
なお、従来技術において、n=2−1である場合(nが2の累乗でない場合)、X mod nの計算がより容易であることは既知である。ブロック1101は、n=2−1、たとえばn=3である場合のX mod nを計算する。なお、1)2mod3=1、2mod3=2、2mod3=1、2mod3=2等であることに留意されたい。2)X=x0×2+x1×2+x2×2+…xp×2であることに留意されたい。(a+b)mod c=(a mod c)+(b mod c)であるため、2)および3)から、X mod n=(x0×2mod n)+(x1×2mod n)+(x2×2mod n)+…(xp×2mod n)であり、それは、1)から、X mod3=((x)+x2+x4+…)×1+(x1+x3+x5+…)×2) mod 3に等しいことに留意されたい。Xが32ビット、すなわちx0〜x31を有するものと仮定する。そして、先の式から、Aが0〜16の数であり、Bが32までの偶数である場合、X mod n=A+B mod3である。そのため、Cが0〜48の範囲であり、C=x0+x2+…+x30+2×(x1+x3+…x31)である場合、X mod3=C mod nである。数0〜48を表すために6つの2進数、すなわちc0〜c5のみを要するため、Cに対して同じ手続きを繰返すことができる。すなわち、X mod3=c0+c2+c4)mod3+(c1+c3+c5)×2mod3である。これを、ハードウェアで直接計算することができる。
なお、その実施例で剰余は0〜2の範囲をとるため、3の剰余に対応するa=11に対するデータの行はないことに留意されたい。さらに、a=11はブロック1101の正当な出力ではないため、図11Bにおいて、表におけるこれらのエントリをドントケア(dc)として使用することにより、b0およびb1に対する式を低減することができることに留意されたい。図示する式は、これらのドントケア行におけるb1およびb0に対してすべて1を選択することに対応する。
本発明の実施形態を、SDRAMメモリに関して上に説明した。しかしながら、本発明の他の実施形態は、DRAMメモリ、RAMメモリ、ROMメモリ、DDRメモリ、RAMBUSメモリ、キャッシュメモリもしくはブロックまたはバンクに編成される他の任意のタイプのメモリで作用してもよい。
また、本発明の実施形態を、メモリに関して上に説明した。しかしながら、本発明の他の実施形態は、ブロックに編成される他の任意のデバイスで作用してもよい。たとえば、大規模コンピュータシステムにおいて、アービトレータは、異なる処理ユニット間でタスクを分割する際に本発明の実施形態を使用することができ、それによりレイテンシを低減しシステムにおける帯域幅を増大させることができる。
本発明の実施形態は、好ましくは、チップに形成されるロジックおよび/または回路として実装され、本明細書で説明した本発明の実施形態の要素を行うように設計される。しかしながら、本発明の他の実施形態を、ソフトウェアで実装してもよい。ソフトウェアで実装される場合、本発明の実施形態の要素は、本質的に、必要なタスクを実行するコードセグメントである。プログラムまたはコードセグメントを、プロセッサ読取可能媒体に格納するか、あるいは搬送波で具体化されるコンピュータデータ信号かまたは搬送波で変調される信号により、伝送媒体を介して伝送することができる。「プロセッサ読取可能媒体」は、情報を格納するかまたは転送することができるいかなる媒体も含んでよい。プロセッサ読取可能媒体の例には、電子回路、半導体メモリデバイス、ROM、フラッシュメモリ、消去可能ROM(EROM)、フロッピーディスケット、コンパクトディスクCD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、RFリンク等の伝送媒体によって伝播することができるいかなる信号も含まれてよい。コードセグメントを、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードしてもよい。
SDRAMの従来技術の構成の図。 SDRAMの従来技術の構成の図。 データバスに対するインターリービングの効果を示す一連のタイミング図。 データバスに対するインターリービングの効果を示す一連のタイミング図。 データバスに対するインターリービングの効果を示す一連のタイミング図。 本発明の実施形態のフローチャートの例。 4バンクメモリシステムによる本発明の実施形態の例の図。 4バンクメモリシステムによる本発明の実施形態の例の図。 4バンクメモリシステムによる本発明の実施形態の例の図。 図4Aないし図4Cの発明の代替実施形態の図。 図4Aないし図4Cの発明の代替実施形態の図。 図4Aないし図4Cの発明の代替実施形態の図。 8バンクメモリシステムによる本発明の実施形態の例の図。 16バンクメモリシステムによる本発明の実施形態の例の図。 16バンクメモリシステムによる本発明の異なる実施形態の例の図。 本発明の実施形態を使用するメモリコントローラの例の図。 図9のメモリコントローラの例の図。 図10のメモリコントローラにあるアドレスマッパの例の図。 図10のメモリコントローラにあるアドレスマッパの例の図。
符号の説明
901 メモリコントローラ
1001 受信アドレスの少なくとも一部を使用して特定バンク内のメモリロケーションを確定する回路
1002 並び替えバッファ
1101 受信アドレスを、バンクの数に基づく除数によって除算した際の剰余を計算する回路
1102 剰余と受信アドレスの少なくとも1ビットとに基づいて複数のバンクのうち特定バンクを確定する回路

Claims (10)

  1. 受信アドレスを複数のメモリバンクのメモリロケーションにマッピングするメモリコントローラであって、
    前記受信アドレスを、前記複数のバンクの数に基づく除数によって除算した際の剰余を計算する回路と、
    前記剰余と前記受信アドレスの少なくとも1ビットとに基づいて前記複数のバンクのうちの特定バンクを確定する回路と、
    前記受信アドレスの少なくとも一部を使用して前記特定バンク内の前記メモリロケーションを確定する回路と、
    を有するメモリコントローラ。
  2. 前記除数が、前記複数のバンクの数から1を引いた数に等しい、請求項1記載のメモリコントローラ。
  3. 前記除数が素数である、請求項1記載のメモリコントローラ。
  4. 前記メモリバンクの数が2に等しく、前記受信アドレスの前記少なくとも1ビットがNビットに等しい、請求項1記載のメモリコントローラ。
  5. −1が非素数であり、
    前記複数のメモリバンクを、2−1が素数であるような2グループにグループ化する回路
    をさらに有する請求項4記載のメモリコントローラ。
  6. 前記除数が2−1であり、前記受信アドレスの前記少なくとも1ビットがM+1ビットに等しい、請求項5記載のメモリコントローラ。
  7. 前記受信アドレスの前記一部が、該受信アドレスの前記少なくとも1ビットを除く、請求項1記載のメモリコントローラ。
  8. 前記受信アドレスが、メモリアクセス要求に関連する物理アドレスである、請求項1記載のメモリコントローラ。
  9. 並び替えバッファをさらに有し、
    該並び替えバッファが、前記受信アドレスに関連する少なくとも1つのメモリアクセス要求を保持し、前記特定バンクにマッピングする別のメモリアクセス要求と競合する、請求項1記載のメモリコントローラ。
  10. 前記メモリロケーションにアクセスして、前記受信アドレスに関連するメモリアクセス要求の処理を可能にするロジック
    をさらに有する請求項1記載のメモリコントローラ。
JP2003379250A 2002-11-12 2003-11-10 メモリバンクへのアドレスのマッピングをするメモリコントローラ Expired - Lifetime JP4771654B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/292,144 2002-11-12
US10/292,144 US6912616B2 (en) 2002-11-12 2002-11-12 Mapping addresses to memory banks based on at least one mathematical relationship

Publications (3)

Publication Number Publication Date
JP2004164641A true JP2004164641A (ja) 2004-06-10
JP2004164641A5 JP2004164641A5 (ja) 2006-11-24
JP4771654B2 JP4771654B2 (ja) 2011-09-14

Family

ID=32229382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003379250A Expired - Lifetime JP4771654B2 (ja) 2002-11-12 2003-11-10 メモリバンクへのアドレスのマッピングをするメモリコントローラ

Country Status (2)

Country Link
US (1) US6912616B2 (ja)
JP (1) JP4771654B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082923A1 (ja) * 2005-02-03 2006-08-10 Matsushita Electric Industrial Co., Ltd. 並列インターリーバ、並列デインターリーバ及びインターリーブ方法
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2010176505A (ja) * 2009-01-30 2010-08-12 Sony Corp インターフェース装置、演算処理装置、インターフェース生成装置、および回路生成装置
US9424181B2 (en) 2014-06-16 2016-08-23 Empire Technology Development Llc Address mapping for solid state devices
US10430113B2 (en) 2015-05-20 2019-10-01 Sony Corporation Memory control circuit and memory control method

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100506448B1 (ko) * 2002-12-27 2005-08-08 주식회사 하이닉스반도체 불휘발성 강유전체 메모리를 이용한 인터리브 제어 장치
JP3950831B2 (ja) * 2003-09-16 2007-08-01 エヌイーシーコンピュータテクノ株式会社 メモリインタリーブ方式
US7281114B2 (en) * 2003-12-26 2007-10-09 Tdk Corporation Memory controller, flash memory system, and method of controlling operation for data exchange between host system and flash memory
US8190809B2 (en) * 2004-11-23 2012-05-29 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
CN101069211A (zh) 2004-11-23 2007-11-07 高效存储技术公司 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置
US8533430B2 (en) * 2005-04-14 2013-09-10 International Business Machines Corporation Memory hashing for stride access
US7979622B2 (en) * 2005-05-30 2011-07-12 Megachips Corporation Memory access method
US7932912B1 (en) 2006-10-04 2011-04-26 Nvidia Corporation Frame buffer tag addressing for partitioned graphics memory supporting non-power of two number of memory elements
US7898551B2 (en) * 2006-06-20 2011-03-01 Via Technologies, Inc. Systems and methods for performing a bank swizzle operation to reduce bank collisions
US7884829B1 (en) 2006-10-04 2011-02-08 Nvidia Corporation Partitioned graphics memory supporting non-power of two number of memory elements
US8072463B1 (en) * 2006-10-04 2011-12-06 Nvidia Corporation Graphics system with virtual memory pages and non-power of two number of memory elements
US20090193227A1 (en) * 2008-01-25 2009-07-30 Martin John Dowd Multi-stream on-chip memory
US20100262751A1 (en) * 2009-04-09 2010-10-14 Sun Microsystems, Inc. Memory Control Unit Mapping Physical Address to DRAM Address for a Non-Power-of-Two Number of Memory Ranks Using Lower Order Physical Address Bits
JP5365336B2 (ja) * 2009-05-01 2013-12-11 ソニー株式会社 メモリ制御装置およびメモリ制御方法
US9348751B2 (en) * 2009-09-25 2016-05-24 Nvidia Corporation System and methods for distributing a power-of-two virtual memory page across a non-power-of two number of DRAM partitions
JP2011175450A (ja) * 2010-02-24 2011-09-08 Renesas Electronics Corp メモリアクセスシステムおよびメモリアクセス制御方法
US8799553B2 (en) 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
US9477597B2 (en) * 2011-03-25 2016-10-25 Nvidia Corporation Techniques for different memory depths on different partitions
US8701057B2 (en) 2011-04-11 2014-04-15 Nvidia Corporation Design, layout, and manufacturing techniques for multivariant integrated circuits
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
WO2013100975A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Workload adaptive address mapping
US9009570B2 (en) * 2012-06-07 2015-04-14 Micron Technology, Inc. Integrity of an address bus
US9323608B2 (en) 2012-06-07 2016-04-26 Micron Technology, Inc. Integrity of a data bus
WO2013187862A1 (en) * 2012-06-11 2013-12-19 Intel Corporation A FAST MECHANISM FOR ACCESSING 2n±1 INTERLEAVED MEMORY SYSTEM
US20140122807A1 (en) * 2012-10-31 2014-05-01 Hewlett-Packard Development Company, Lp. Memory address translations
KR102202575B1 (ko) * 2013-12-31 2021-01-13 삼성전자주식회사 메모리 관리 방법 및 장치
CN106356088A (zh) * 2015-07-15 2017-01-25 深圳市中兴微电子技术有限公司 一种数据处理方法及其装置
US10417198B1 (en) * 2016-09-21 2019-09-17 Well Fargo Bank, N.A. Collaborative data mapping system
US10817420B2 (en) * 2018-10-30 2020-10-27 Arm Limited Apparatus and method to access a memory location
CN112286844B (zh) * 2020-10-30 2022-09-02 烽火通信科技股份有限公司 一种可适配业务地址映射的ddr4控制方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60176153A (ja) * 1984-02-22 1985-09-10 Mitsubishi Electric Corp 記憶装置
JPS6265148A (ja) * 1985-09-17 1987-03-24 Fujitsu Ltd メモリアクセス制御方式
JPH05210579A (ja) * 1991-06-18 1993-08-20 Hewlett Packard Co <Hp> メモリ・インターリーブ装置及び方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63225837A (ja) * 1987-03-13 1988-09-20 Fujitsu Ltd 距離付きベクトルアクセス方式
US6070227A (en) * 1997-10-31 2000-05-30 Hewlett-Packard Company Main memory bank indexing scheme that optimizes consecutive page hits by linking main memory bank address organization to cache memory address organization
US6272594B1 (en) * 1998-07-31 2001-08-07 Hewlett-Packard Company Method and apparatus for determining interleaving schemes in a computer system that supports multiple interleaving schemes
US6851039B2 (en) * 2002-09-30 2005-02-01 Lucent Technologies Inc. Method and apparatus for generating an interleaved address

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60176153A (ja) * 1984-02-22 1985-09-10 Mitsubishi Electric Corp 記憶装置
JPS6265148A (ja) * 1985-09-17 1987-03-24 Fujitsu Ltd メモリアクセス制御方式
JPH05210579A (ja) * 1991-06-18 1993-08-20 Hewlett Packard Co <Hp> メモリ・インターリーブ装置及び方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082923A1 (ja) * 2005-02-03 2006-08-10 Matsushita Electric Industrial Co., Ltd. 並列インターリーバ、並列デインターリーバ及びインターリーブ方法
JP4848359B2 (ja) * 2005-02-03 2011-12-28 パナソニック株式会社 並列インターリーバ、並列デインターリーバ及びインターリーブ方法
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2010176505A (ja) * 2009-01-30 2010-08-12 Sony Corp インターフェース装置、演算処理装置、インターフェース生成装置、および回路生成装置
US9424181B2 (en) 2014-06-16 2016-08-23 Empire Technology Development Llc Address mapping for solid state devices
US10430113B2 (en) 2015-05-20 2019-10-01 Sony Corporation Memory control circuit and memory control method

Also Published As

Publication number Publication date
JP4771654B2 (ja) 2011-09-14
US6912616B2 (en) 2005-06-28
US20040093457A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
JP4771654B2 (ja) メモリバンクへのアドレスのマッピングをするメモリコントローラ
EP1754229B1 (en) System and method for improving performance in computer memory systems supporting multiple memory access latencies
JP5231642B2 (ja) メモリモジュール内の独立制御式仮想メモリ装置
US6393512B1 (en) Circuit and method for detecting bank conflicts in accessing adjacent banks
US6826663B2 (en) Coded write masking
US7779215B2 (en) Method and related apparatus for accessing memory
US6507886B1 (en) Scheduler for avoiding bank conflicts in issuing concurrent requests to main memory
US7483331B2 (en) Semiconductor memory, memory system, and operation method of memory system
KR20150017526A (ko) 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US8661180B2 (en) Memory controlling device and memory controlling method
US20040107324A1 (en) DDR SDRAM memory controller with multiple dependency request architecture and intelligent requestor interface
US10152434B2 (en) Efficient arbitration for memory accesses
US20110296124A1 (en) Partitioning memory for access by multiple requesters
WO2021026095A1 (en) Memory controller for non-interfering accesses to nonvolatile memory by different masters, and related systems and methods
EP2998867B1 (en) Data writing method and memory system
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
JP5204777B2 (ja) メモリ装置及びその制御方法
JP4322116B2 (ja) バーストモードをサポートする外部メモリとプロセッサとのインタフェース方法
KR20020090907A (ko) 주문형 집적 회로
KR19990063185A (ko) 메모리 디바이스 및 그 주소지정 방법
JP4969811B2 (ja) 情報処理システム及びメモリ制御装置
JP3151416B2 (ja) データ転送制御装置および磁気ディスク装置
JP4593220B2 (ja) メモリアクセス制御方式と方法、及び共有メモリアクセス制御方式と方法
KR20010050234A (ko) 메모리(mem)와 결합한 데이터 처리용 디바이스
KR20230173560A (ko) 메모리 장치 및 이의 방어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061011

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100202

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110131

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110512

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110621

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

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4771654

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term