JP2016536658A - メモリインターリーブのための構成可能な分散機能 - Google Patents

メモリインターリーブのための構成可能な分散機能 Download PDF

Info

Publication number
JP2016536658A
JP2016536658A JP2016516553A JP2016516553A JP2016536658A JP 2016536658 A JP2016536658 A JP 2016536658A JP 2016516553 A JP2016516553 A JP 2016516553A JP 2016516553 A JP2016516553 A JP 2016516553A JP 2016536658 A JP2016536658 A JP 2016536658A
Authority
JP
Japan
Prior art keywords
memory
address bits
memory channels
round
channels
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
JP2016516553A
Other languages
English (en)
Other versions
JP6105814B2 (ja
JP2016536658A5 (ja
Inventor
フェン・ワン
ボフスラフ・ライチリック
アンワル・ロヒリヤ
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016536658A publication Critical patent/JP2016536658A/ja
Publication of JP2016536658A5 publication Critical patent/JP2016536658A5/ja
Application granted granted Critical
Publication of JP6105814B2 publication Critical patent/JP6105814B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

メモリのアドレスビットをN個のメモリチャネルに連続するラウンドにおいて反復的にマッピングすることであって、最後のラウンドを除く各ラウンドが、アドレスビットの一意のサブセットを選択することと、アドレスビットの選択されたサブセットに基づいて最大数(L)のあり得る一意の組合せを決定することと、組合せをNメモリチャネルにあり得る最大の回数(F)マッピングすることであって、Nメモリチャネルの各々が等しい数の組合せにマッピングされる、マッピングすることと、Nメモリチャネルの各々に対して1つずつマッピングされ得ないいくつかの組合せ(N未満であるK)が残っている場合、およびNメモリチャネルの各々に対して1つずつマッピングされ得ないいくつかの組合せ(N未満であるK)が残っているとき、次のラウンドに入ることとを含む、マッピングすることによってメモリをインターリーブする方法。方法は、最後のラウンドにおいて、前のラウンドにおいてサブセット内で使用されない残りの最上位のアドレスビットをNメモリチャネルの各々にマッピングすることをさらに含む。

Description

米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれている2013年9月27日に出願した「CONFIGURABLE SPREADING FUNCTION FOR MEMORY INTERLEAVING」と題された仮出願第61/883,833号の優先権を主張するものである。
開示される実施形態は、2つ以上のメモリチャネルにわたるメモリインターリーブを対象とする。より詳細には、例示的な実施形態は、任意の数のメモリチャネルにわたる一様なメモリインターリーブのためのスケーラブルに構成可能な分散機能を対象とする。
メモリインターリーブは、メモリ空間を2つ以上のメモリバンクに分配することに関してコンピュータ処理システムおよびアプリケーションにおいて知られている。そのようなインターリーブは、2つ以上のメモリバンクの同時および/または連続的アクセスを可能にし、したがって、すべてのメモリアドレスが統一されたインターリーブされていないメモリ構造にマッピングされた場合に引き起こされ得る読み取り/書き込みの待ち時間の遅延を防止する。したがって、メモリインターリーブは、メモリのアクセス帯域幅およびメモリのアクセス速度の点で大きな利益をもたらすことができる。
図1を参照すると、2つのメモリバンクへの単純な2ウェイメモリインターリーブ方式が示されている。32ビットアドレス102(A[31:0])が、メモリ(図示せず)をアドレス指定するために使用されてよく、奇数アドレスが、たとえば、第1のメモリチャネル、チャネルCh0 108_0を通じて第1のメモリバンク(図示せず)に向かい、すべての偶数アドレスが、第2のメモリチャネル、チャネルCh1 108_1を通じて第2のメモリバンク(図示せず)に向かう。これを実現するために、アドレス102の最下位ビット(すなわち、ビットA[0])が特定のアドレスをどのチャネルにルーティングすべきかを判断するために使用され得る単純なチャネル分散機能104が示される。たとえば、偶数値がアドレス102に現れる場合、ビットA[0]は「0」であり、このことが、(たとえば、第1のメモリチャネルCh0 108_0へのアクセスを可能にするために値〜A[0]に設定される選択信号CS0を含む単純なチャネル分散機能104に基づいて)第1のメモリチャネルCh0 108_0への関連するメモリアクセスを指示するために使用され得る。同様に、アドレス102の奇数値は、ビットA[0]が「1」であることに基づいて、第2のメモリチャネルCh1 108_1への関連するメモリアクセスを指示するために使用され得る(たとえば、チャネル分散機能104は、第2のメモリチャネルCh1 108_1を選択するためのA[0]に基づく選択信号CS1をさらに含む)。アドレス102の残りのより高位のビットは、チャネル内アドレス指定機能106、すなわち、第1のおよび第2のメモリチャネルCh0 108_0およびCh1 108_1に関する第1のおよび第2のメモリバンクの各々に含まれるメモリ空間をアドレス指定することのために使用される。
上の単純な方式は、2ウェイインターリーブ(または概して2のべき乗に等しいメモリチャネルの数に関するインターリーブ)に関してうまく働くが、そのような方式は、簡単にまたは効率的にスケーリングされ得ない。たとえば、特定のメモリアーキテクチャの3メモリチャネルの間で3ウェイインターリーブが望ましい場合、通常のメモリインターリーブ技術は、2ウェイインターリーブに関する図1に示された技術のような単純な技術を用いて3メモリチャネルにわたる一様なインターリーブを実現することができない。これは、3ウェイインターリーブのための同様のチャネル分散機能が、たとえば、3メモリチャネルの間で選択をするためにアドレス102の最も下位の2ビットを必要とする可能性があるためである。しかし、2ビットは、4つの2進ビットの組合せ(すなわち、「00」、「01」、「10」、および「11」)を生じ、さらなるビットの組合せに関するアドレスを3メモリチャネルのうちの1つに単純に再マッピングすることは、3メモリチャネルの間にアドレスを分ける際の一様性の欠如につながり、このことは望ましくない。
特に3ウェイインターリーブに関連する上述の欠点を克服しようとして、通常の手法は、3メモリチャネルのすべてに同時にアクセスするのに十分なだけ広いより広いデータバスの使用を包含する。たとえば、192ビット幅のデータバスは、32ビットメモリ空間に関する3メモリチャネルすべてのための読み取りおよび書き込みアクセスをカバーし得る。しかし、そのような通常の手法は、無駄が多く、インターリーブの利益を活かせず、電力および領域の点で非効率になりがちである。さらに、そのような手法は、3ウェイインターリーブのために細かく仕立て上げられており、したがって、他の数のメモリチャネルにわたるインターリーブにスケーリングされ得ない。
3ウェイインターリーブのためのさらに別の通常の手法は、アドレスを指示するために3チャネルの間で選択をするためにテーブルの探索と一緒にmod-3(モジュラス(modulus)3)チャネル分散機能を利用する。しかし、この手法は、mod-3分散機能を用いて効率的にマッピングされないモジュラス関数の洗練されていない使用を包含する。mod-3関数を実装することは、当業者には理解されるように、高価であるハードウェア除算器を実装するためのハードウェアと同様のハードウェアを必要とする。したがって、この手法も望ましくない。
当技術分野で知られている他のそのような手法は、同様に非効率であり、分散機能のスケーラビリティ、単純さ、および一様性を欠いている。したがって、(たとえば、3のみを超える5、7、13などのチャネルの他の数に)スケーラブルであり、分散機能の分散の度合いが構成可能であり(たとえば、より積極的でない/より積極的である)、分散機能の実装に関して簡単で、安価で、速い分散機能に対するニーズが存在する。
例示的な実施形態は、任意の数のメモリチャネルにわたる一様なインターリーブを実施することができる低コストで、高度に設定可能であり、容易にスケーリングされ得るメモリインターリーブ機能のためのシステムおよび方法を対象とする。
たとえば、例示的な実施形態は、メモリをインターリーブする方法であって、メモリのアドレスビットをN個のメモリチャネルに連続するラウンド(round)において反復的にマッピングするステップであって、最後のラウンドを除く各ラウンドが、アドレスビットの一意のサブセットを選択することと、アドレスビットの選択されたサブセットに基づいて最大数(L)のあり得る一意の組合せを決定することと、組合せをNメモリチャネルにあり得る最大の回数(F)マッピングすることであって、Nメモリチャネルの各々が等しい数の組合せにマッピングされる、マッピングすることと、Nメモリチャネルの各々に対して1つずつマッピングされ得ないいくつかの組合せ(N未満であるK)が残っている場合、およびNメモリチャネルの各々に対して1つずつマッピングされ得ないいくつかの組合せ(N未満であるK)が残っているとき、次のラウンドに入ることとを含む、ステップを含む、方法を対象とする。方法は、最後のラウンドにおいて、前のラウンドにおいてサブセット内で使用されない残りの最上位のアドレスビットをNメモリチャネルの各々にマッピングすることをさらに含む。上の例示的な方法において、N、L、K、およびFは、式N=(L-K)/Fを満たす。
別の例示的な実施形態は、メモリインターリーブの方法であって、予め決められた数(G_total)の連続するラウンドにおいて反復的にN個のメモリチャネルにメモリのアドレスビットをメモリコントローラによってマッピングするステップであって、最後のラウンドを除く各ラウンドが、Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択することと、(n)アドレスビットの選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定することと、最大数以内の等しい数の2進値をNメモリチャネルの各々にマッピングすることと、Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、およびNメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入ることとを含む、ステップを含む、方法を対象とする。最後のラウンドは、最後の数(min_bits)の最上位のアドレスビットによって表される2進値をNメモリチャネルに、メモリコントローラによってマッピングするステップを含む。今度も、N、L、K、およびFは、式N=(L-K)/Fを満たす。
別の例示的な実施形態は、N個のメモリチャネルを含むメモリを含む処理システムを対象とする。処理システムは、予め決められた数(G_total)の連続するラウンドにおいて反復的にNメモリチャネルにメモリのアドレスビットをマッピングするための手段であって、最後のラウンドを除く各ラウンドに関して、Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択するための手段と、(n)アドレスビットの選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定するための手段と、最大数以内の等しい数の2進値をNメモリチャネルの各々にマッピングするための手段と、Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、およびNメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入るための手段とを含む、マッピングするための手段を含む。処理システムは、最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値をNメモリチャネルにマッピングするための手段をさらに含む。今度も、N、L、K、およびFは、式N=(L-K)/Fを満たす。
さらに別の例示的な実施形態は、プロセッサと、プロセッサに通信可能なように結合されたメモリであって、N個のメモリチャネルを含む、メモリとを含む処理システムを対象とする。メモリコントローラが、予め決められた数(G_total)の連続するラウンドにおいて反復的にNメモリチャネルにメモリのアドレスビットをマッピングするように構成され、最後のラウンドを除く各ラウンドに関してメモリコントローラが、Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択し、(n)アドレスビットの選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定し、最大数以内の等しい数の2進値を前記Nメモリチャネルの各々にマッピングし、Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、およびNメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入るように構成される。メモリコントローラは、最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値をNメモリチャネルにマッピングするようにさらに構成される。今度も、N、L、K、およびFは、式N=(L-K)/Fを満たす。
さらに別の例示的な実施形態は、プロセッサによって実行されるときに、プロセッサに結合された、Nメモリチャネルを含むメモリをインターリーブするための動作をプロセッサに実行させるコードを含む非一時的コンピュータ可読記録媒体であって、予め決められた数(G_total)の連続するラウンドにおいて反復的にNメモリチャネルにメモリのアドレスビットをマッピングするためのコードであって、最後のラウンドを除く各ラウンドに関して、Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択するためのコード、(n)アドレスビットの選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定するためのコード、最大数以内の等しい数の2進値をNメモリチャネルの各々にマッピングするためのコード、およびNメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、およびNメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入るためのコードを含む、マッピングするためのコードと、最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値をNメモリチャネルにマッピングするためのコードとを含む、非一時的コンピュータ可読記録媒体を対象とする。今度も、N、L、K、およびFは、式N=(L-K)/Fを満たす。
添付の図面は、本発明の実施形態の説明を補助するために提示され、実施形態の例示のためにのみ提供され、それらの実施形態の限定のために提供されない。
通常の用語の説明を用いてメモリインターリーブを示す図である。 完全に構成可能な分散機能を利用する例示的なインターリーブ技術を示す図である。 3チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=5チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=5チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=5チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=5チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=13チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=13チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=13チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=13チャネルのための例示的な分散機能を示す図である。 Nが(L-K)/Fによって表されるN=13チャネルのための例示的な分散機能を示す図である。 Nウェイの分散とRウェイの分散とを組み合わせることによる例示的なN*Rウェイの分散を示す図である。 例示的な実施形態においてインターリーブビットの数の選択に関するトラフィックの不釣り合いの因子を示す図である。 例示的な実施形態においてインターリーブビットの数の選択に関するトラフィックの不釣り合いの因子を示す図である。 例示的な実施形態によるメモリインターリーブのメモリに関する流れ図である。
本発明の態様が、本発明の特定の実施形態を対象とする以下の説明および関連する図面において開示される。代替的な実施形態が、本発明の範囲を逸脱することなく案出され得る。加えて、本発明のよく知られている要素は、本発明の重要な詳細を曖昧にしないように詳細に示されないかまたは省略される。
「例示的な」という語は、本明細書においては「例、具体例、または事例としての役割を果たす」ことを表すために使用される。本明細書において「例示的」と記載されたいずれの実施形態も、必ずしも他の実施形態よりも好ましいかまたは有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が検討される特徴、利点、または動作のモードを含むことを必要としない。
本明細書で使用された用語は、特定の実施形態について説明することのみを目的としており、本発明の実施形態を限定するように意図されていない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈がそうでないことを明確に示さない限り複数形も含むように意図される。「含む(comprises)」、「含む(comprising)」、「含む(includes)」、および/または「含む(including)」という用語は、本明細書において使用されるとき、言及された特徴、整数、ステップ、操作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはこれらのグループの存在または追加を除外しないことがさらに理解されるであろう。
さらに、多くの実施形態が、たとえば、コンピューティングデバイスの要素によって実行される一連の行為によって説明される。本明細書において説明される様々な行為が特定の回路(たとえば、特定用途向け集積回路(ASIC))、1つもしくは複数のプロセッサによって実行されるプログラム命令、またはこれら両方の組合せによって実行され得ることは、理解されるであろう。加えて、本明細書において説明されるこれらの一連の行為は、実行されると関連するプロセッサに本明細書において説明される機能を実行させるコンピュータ命令の対応する組を記憶する任意の形態のコンピュータ可読記録媒体内に完全に具現化されると考えられ得る。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化されてよく、それらの異なる形態のすべては、特許請求の対象の範囲内にあると考えられた。さらに、本明細書において説明される実施形態の各々に関して、対応する形態の任意のそのような実施形態は、たとえば、説明される行為を実行する「ように構成された論理」として本明細書において説明され得る。
開示される解決策は、上述の欠点に対処する。より詳細には、例示的な実施形態は、高価でなく、高速である完全に構成可能でスケーラブルなメモリインターリーブ技術を含む。また、例示的なメモリインターリーブ技術は、任意の数の2つ以上の所望のメモリチャネルにわたる極めて一様な分布を保証し、利用可能なメモリセルの浪費/過少利用をなくす。
図2を参照すると、例示的な処理システム200の特定の態様の概略図が与えられている。示されるように、処理システム200は、1つまたは複数のプロセッサまたは中央演算処理装置(CPU)202a〜dを含み得る。一般的なL2キャッシュ204が、CPU 202a〜dによってアクセス可能であるものとして示されており、L2キャッシュはシステムバス214に通信可能なように結合される。加えて、グラフィックス処理ユニット(GPU)206、デジタル信号プロセッサ(DSP)208、およびビデオコーダ/デコーダ(コーデック)210も、システムバス214に結合されることが示される。システムバス214は、32ビットアドレス212(A[31:0])によってアドレス指定可能な3メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2にわたってインターリーブされた32ビットアドレス指定可能なメモリとインターフェースを取る。チャネル分散ブロック216は、たとえば、メモリコントローラ(図示せず)の一部であってよく、3メモリチャネルCh0 222_0、Ch1 222_1、またはCh2 222_2の例示的なインターリーブされたアクセスを目的として、これらの3メモリチャネルのうちの1つをそれぞれ選択的に有効化するための選択線CS0〜CS2を設けることができる例示的なチャネル分散機能を実装するように構成され得る。チャネル内アドレス指定ブロック218は、3メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2の各々の中のメモリセルまたはエントリにアクセスするためのチャネル内アドレスを提供するように構成され得る。概して、実施形態は、図2に示される上述の要素および構成に限定されず、処理システム200の様々な代替的な構成が本開示の範囲を逸脱することなく可能であることは理解されるであろう。
例示的な態様によれば、世代(generation)(G)ブロック220も、変数「G」によって表される1つまたは複数の世代におけるチャネル分散機能およびチャネル内アドレス指定を実施するために処理システム200に設けられる。例示的なチャネル分散機能が実施され得る、プログラミング可能な定数「G_total」によって表される世代の総数が、たとえば、レジスタ(図示せず)を介してプログラミングされ得る。G_totalは、たとえば、処理システム200のシステムブートアップ中にレジスタに構成またはプログラミングされ得る。さらに、チャネル分散機能において利用され得るアドレスビットの数が、たとえば、レジスタ(図示せず)を介してGブロック220においてプログラミングされてもよい。別個のブロックとして示されているが、Gブロック220に関する論理/機能は、チャネル分散ブロック216および/またはチャネル内アドレス指定ブロック218などの処理システム200の他の論理ブロック内に注入または統合されてよい。一部の態様において、Gブロック、チャネル分散ブロック216、およびチャネル内アドレス指定ブロック218は、メモリコントローラ(図示せず)の一部であってよい。
「N」個のメモリチャネルにわたる例示的なチャネル分散機能(または「Nウェイインターリーブ」)が、以降で、図2の3メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2にわたるメモリインターリーブの基本的な例を用いて、チャネル分散機能を適用する選択可能な総数G_totalの世代に関して説明される。チャネル分散機能は、たとえば、Gブロック220から取得されるG_totalの値を用いてチャネル分散ブロック216において実施され得る。より詳細には、Gが1からG_totalまで変わる場合、世代/ラウンドの各々においてN(=3)メモリチャネルのうちのどのメモリチャネルが、選択されたアドレスビットの特定の組合せにマッピングされるかを決定するために、32ビットアドレス212(A[31:0])の1つまたは複数のビットが選択される。
たとえば、図3を参照すると、第1の世代、すなわち、G=1において、ビットの組合せに関する2進値A[8:7]=00がCh0 222_0にマッピングされ、A[8:7]=01がCh1 222_1にマッピングされてよく、A[8:7]=10がCh2 222_2にマッピングされ得るように、アドレス212のビットA[8:7]が選択され得る(この場合、アドレスビットA[6:0]は、たとえば、チャネル内アドレス指定ブロック218によってメモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2のチャネル内アドレス指定のために使用され得る)。しかし、ビットの組合せに関する2進値A[8:7]=11が残ることになるが、一様性を乱さないよう3メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2のうちの1つにマッピングされ得ない。したがって、例示的な技術は、選択されたビットに関してマッピングされないビットの組合せに関する残りの2進値に到達するときに第2の世代に入ることを包含する。したがって、後続のラウンドまたは世代G=2に関して、前のラウンドのアドレスビットA[8:7]に隣接し、それらのアドレスビットA[8:7]よりも上位であるより高位のビットA[10:9]が選択され、メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2へのアドレス212のインターリーブまたはマッピングは、A[10:9]のビットの組合せに関する2進値に基づく。今度も、ビットの組合せA[10:9]=11に関する2進値が残り、したがって、第3の世代、G=3(図示せず)をトリガする。このプロセスが、G=G_totalに関する最後の世代に到達するまで反復して繰り返される。
概して、G=G_totalである最後の世代においては、インターリーブが実行されるメモリチャネルの数を表すために必要とされるアドレスビットの最小数を判定することによってアドレス212のビットの数が取得され得る。メモリチャネルの数Nを表すために必要とされるアドレスビットのこの最小数(以下、「min_bits」)は、数式「min_bits=ceiling(log2N)」によって判定され得る。「ceiling」関数は、実数を最も大きな次の整数にマッピングするよく知られている数学的な関数である。たとえば、実数「x」に関して、ceiling(x)は、「x」以上の最も小さい整数である。したがって、N=3メモリチャネルを用いる所与の例に関して、min_bits=ceiling(log23)=2である。したがって、2つの最上位のビット、すなわち、ビットA[31:30]は、G=G_totalである最後の世代においてチャネルをマッピングするために選択される。この最後の世代においては、A[31:30]=00がチャネルCh0 222_0にマッピングされ、A[31:30]=01がチャネルCh1 222_1にマッピングされ、A[31:30]=10がチャネルCh2 222_2にマッピングされると、ビットの組合せに関する残りの2進値A[31:30]=11は有効なアドレスに関連しないか、またむしろ値の入っていないメモリ(unpopulated memory)を指すことが理解されるであろう。したがって、マッピングまたはインターリーブのこの最後の世代が完了すると、すべての有効なアドレスビットの組合せが使い尽くされ、3メモリチャネルCh0 222_0、Ch1 222_1、およびCh2 222_2にわたる一様なインターリーブが完了している。
上述の例示的なインターリーブ技術の有利な態様は、通常の技術を用いる例示的な態様と対比することによって理解され得る。たとえば、3ウェイインターリーブのための通常の3ウェイハッシュ関数においては、2つのアドレスビットが、アドレスを3メモリチャネルにマッピングするために同様に選択され得る。今度も、2つの選択されたアドレスビットの4つのあり得るビットの組合せのうちの3つに関する2進値が、3メモリチャネルにマッピングされ得る。しかし、上述の例示的な技術とは対照的に、選択された2つのアドレスビットのビットの組合せに関する残りの2進値、たとえば、「11」が第1のメモリチャネルなどの3メモリチャネルのうちの1つに再び割り振られる場合、2つの他のチャネルと比べて統計的により多くのアクセスが第1のメモリチャネルに向けられることは容易に分かるであろう。第1のメモリチャネルに向けられるこの不均衡な数のメモリアクセスに加えて、物理的なメモリ空間全体のより多くの割合が、この第1のメモリチャネルにやはり割り振られる必要がある。物理的なメモリ空間のそのような一様でない割り振りは、上述のように望ましくない影響をもたらす。一方、インターリーブプロセスが、ビットの組合せに関する残りの2進値がマッピングのための異なるアドレスビットの選択をトリガする例示的な技術のように反復して実行される場合、通常の技術のメモリ空間の不均衡なアクセスおよび一様でない割り振りが避けられる。たとえば、例示的な技術は、メモリ空間を無駄にするかまたはメモリチャネルを不均質に埋めることなく等しいサイズのダイナミックランダムアクセスメモリ構造(DRAM)を使用することを可能にすることができる。特に、3チャネルCh0 222_0、Ch1 222_1、およびCh2 222_2すべてが、まったく同じ数のDRAMセルによって埋められてよい。言い換えれば、実施形態は、統計的なアクセスの不釣り合いおよび(特に、キャッシュを埋めることが、物理的なメモリのアドレス空間の編成に対応しない可能性があるアプリケーションに固有のアクセスパターンに従う可能性があるので、キャッシュではなくメインメモリなどの本当の物理的なメモリに関する)アドレス空間の不釣り合いに関連する問題を克服する。
N=3メモリチャネルのための上述の例示的な分散機能が、以降で、任意の数のメモリチャネルに拡張される。例示的な技術の関数の正しさを証明するために、帰納的な推論のプロセスが使用され得る。概して、帰納的な推論または数学的帰納法は、第1のステップにおいて、所与の命題が第1の自然数に関して真であることを証明し、第2のステップにおいて、命題が第1の自然数に関して真であることを証明することに基づいて、所与の命題が次のまたは第2の自然数に関して真であることを証明し、それによって、第1のおよび第2のステップから、数学的帰納法の理論によってすべての自然数に関して所与の命題が真でなければならないと推論することによって所与の命題または命題がすべての自然数に関して真であると証明される関数または数学的方程式を証明する方法を含む。
より詳細には、例示的な実施形態に関して、第1のステップは、例示的な実施形態に従って第1の数のメモリチャネルにわたる一様なメモリインターリーブを確立することを含んでよい。この第1のステップに関して、第1の数は、2のべき乗であってよい(たとえば、N=2^Mであり、ここで、Mは整数である)。メモリインターリーブは、この場合、単純である(たとえば、N=2または4であり、たとえば、n=1または2の選択されたアドレスビットをそれぞれ用いて2または4メモリチャネルにわたりアドレスを一様に分配することは簡単である)。
次のまたは第2のステップにおいて、N=2^M-1メモリチャネルにわたるメモリインターリーブの場合が考慮される。この第2のステップは、3メモリチャネルにわたる上述のメモリインターリーブに対応する可能性がある(たとえば、ここで、M=2、N=2^2-1=3である)。この第2のステップの機能的な正しさは、上述の節においてすでに詳細に検討された。
したがって、例示的な技術は、2つの自然数(すなわち、N=2^MおよびN=2^M-1)に関して確立されることが分かり、このことは、数学的帰納法による証明の必要とされる第1のおよび第2のステップを満足する。ゆえに、例示的な技術は、数学的帰納法の理論に基づいてすべての自然数のメモリチャネルにわたるメモリインターリーブに関して確立され、効果的であることが今や証明され得る。
上述の技術の数学的定式化が、例示的な実施形態を任意の一般的なN個のメモリチャネルに拡張するために以降で検討される。これを実現するために、メモリインターリーブが実行されることになるN個のメモリチャネルが、数式N=(L-K)/Fによって表される。本明細書において使用されるとき、L、K、およびFは自然数であり、第1の世代またはG=1において、Lウェイの分散(すなわち、Lメモリチャネルにまたがる)が、1つまたは複数のアドレスビットの選択された組を用いてF回適用される。例示的な分散機能を適用するこの第1の世代の後、Kウェイに対応するビットの組合せに関する2進値が残っている可能性がある。G=2の第2の世代において、上記の分散プロセスが繰り返され、すなわち、Lウェイの分散が実行される。同様に、Lウェイの分散を包含するいくつかの世代が、最後の世代G=G_totalに対応して、アドレスのいくつかの最上位ビット(MSB)のみが残るまで反復して繰り返される。
ここで(図4A〜図4Cを含む)図4を参照すると、N=5メモリチャネル(すなわち、Ch0〜4)である数値的な例が示されている。より詳細には、Nは、数式N=(L-K)/Fによって表され、L=16、K=1、およびF=3であり、したがって、N=(16-1)/3=5である。理論的には、Lウェイまたは16ウェイが、4つの選択されたアドレスビットA[10:7]を用いて取得される可能性がある。第1の世代、G=1において、5メモリチャネルへのビットA[10:7]のアドレスマッピングに関連する2進値は、F=3回循環する。言い換えれば、アドレスビットA[10:7]は、0〜15の値の10進数の範囲によって表される2進ビットの組合せに関連する16個のあり得る2進値を生じる。図4Aを参照すると、10進値0、5、10に対応するビットの組合せは、5メモリチャネルのうちの第1のメモリチャネルCh0にマッピングされ、10進値1、6、11は、第2のメモリチャネルCh1にマッピングされ、10進値2、7、12は、第3のメモリチャネルCh2にマッピングされ、10進値3、8、13は、第4のメモリチャネルCh3にマッピングされ、10進値4、9、14は、第5のメモリチャネルCh4にマッピングされ得る。
10進値15(すなわち、2進ビットの組合せ「1111」)に対応する2進ビットの組合せに到達すると、上のマッピングプロセスが、図4Bに示されるように、次の世代、G=2において次のより高位のアドレスビットA[14:11]に関して繰り返される。上のプロセスは、G=G_totalの最後の世代まで連続する世代において反復して繰り返される。N=5に関する最後の世代において使用される最上位のビットの数(min_bits)は、ceiling(log25)=3によって与えられる。
図4Cに示されるように、3アドレスビットA[31:29]が、5メモリチャネルにわたるインターリーブのために最後の世代、G=G_totalにおいて使用される。これらの3アドレスビットは、8つのあり得る2進ビットの組合せを生じ得る。しかし、これらのあり得る8つの2進ビットの組合せのうちの5つだけが対応する5メモリチャネルにマッピングされ、残りの3つの2進ビットの組合せは有効なマッピングに対応せず、したがって、アドレスビットA[31:29]に関するこれらの最後の残った組合せのマッピングは実行されない。32ビットアドレス空間の5メモリチャネルへのマッピングは、今や完了している。したがって、例示的な実施形態は、いずれかの任意の数Nの上記数学的定式化および連続する世代における選択されたアドレスビットの対応する反復的なマッピングに基づいてN個のメモリチャネルにわたるメモリインターリーブに拡張され得る。
(L-K)/Fウェイの上記の場合のチャネル内アドレス指定に関しては、各ラウンドまたは世代において、より低位のアドレスビットが、チャネル内アドレス指定のために使用される。より詳細には、F>=1の場合、チャネルにわたるインターリーブのために利用される選択されたアドレスビットが、最後の世代を除いて、選択されたアドレスビット+チャネル内アドレス指定ビットに関する最も上のMSBビット(top MSB bit)(log2(L)の上のラウンド(upper round))によって置き換えられる。最後の世代においては、最後の世代の1つ前と同じチャネル内アドレス指定機能が使用される。F=1の場合、単純化されたアルゴリズムが使用され、メモリチャネルにわたるインターリーブのためのアドレスビットが、チャネル内アドレス指定のために最後の世代を除いて最も上のMSBビットによって置き換えられる。最後の世代においては、最も上のMSBアドレスビットを除くアドレスビットが、チャネル内アドレス指定のために使用される。
(図5A〜図5Dを含む)図5を参照すると、例示的なインターリーブのさらに別の例が、N=13メモリチャネルに関して示され、Nは、(L-K)/Fによって表現され、値L=16、K=3、およびF=1である。この場合、第1の世代においては、図5Aに示されるように、アドレスビットA[10:7]が第1の世代、G=1において選択され、16個のあり得る2進値が2進ビットの組合せに関連する。これらのうち、ビットの組合せに関する13個の2進値が、13メモリチャネルCh0〜Ch12にマッピングされる。図5B〜図5Dに示されるように、数min_bits=ceiling(log213)=3個の最上位のアドレスビット、すなわち、アドレスビットA[31:29]が、最後の世代、G=G_totalにおいて使用される。
さらに他の実施形態においては、チャネル分散機能が組み合わされ得る。たとえば、分散機能がNウェイメモリインターリーブ(すなわち、Nメモリチャネルにわたる)および同様にRウェイに関して計算されるかまたは予め決められる場合、組み合わされた分散機能が、NウェイおよびRウェイ分散機能を組み合わせることによってN*Rウェイメモリインターリーブのために取得され得る。
図6を参照すると、組み合わされたチャネル分散機能に関する実施形態が示されている。示されるように、世代G=1においては、N=3に関する例示的なメモリインターリーブまたは3メモリチャネルにわたるインターリーブが、上述のようにアドレスビットA[7:8]からA[31:30]までを用いて実行され得る。加えて、2ウェイインターリーブまたはR(=2)個のメモリチャネルにわたるインターリーブが、アドレスビットA[9]を用いて実行され得る。NおよびRウェイの上述のインターリーブ技術は、アドレスビットA[9:7]を用いて6メモリチャネルCh0〜Ch5にわたるN*R=3*2=6ウェイインターリーブを実行するために組み合わされ得る。
加えて、一部の例示的な実施形態は、「分散の度合い」を制御することも対象とすることができる。本明細書において使用されるとき、「分散の度合い」という用語は、メモリチャネルにわたるメモリトラフィックの分配の一様性を指す。たとえば、分散のより高い度合いは、メモリチャネルにわたるトラフィックの分配のより大きな一様性に対応する。一部の態様において、分散の度合いは、インターリーブが望ましいメモリチャネルに選択されたビットのビット組合せをマッピングするために最後の1つ(すなわち、G=G_total)を除いてすべての世代Gにわたって選択されるアドレスビットの数に関連することが分かる。概して、より多くの選択されたアドレスビット使用することは、メモリチャネルにまたがる分散の非一様性を小さくすることができる。選択されたアドレスビットの数は、メモリ空間のアドレスビットの全体の数(たとえば、上述の実施形態においては32ビット)および分散が望ましいメモリチャネルの数に基づき得る。
(図7A〜図7Bを含む)図7を参照すると、例示的なチャネル分散機能における分散の度合いに関する例示的な態様が示されている。この文脈で、「トラフィックの不釣り合いの因子」は、所与の数のメモリチャネルの間に均質に分配されないメモリアクセストランザクションの割合に関連する。より詳細には、トラフィックの不釣り合いの因子は、インターリーブのために選択されるアドレスビットの数またはインターリーブの度合いを増やすことによって削減され得る。たとえば、トラフィックの不釣り合いの因子は、各ラウンドまたは世代においてインターリーブのために使用されるアドレスビットのサブセットのビットの数(またはインターリーブの度合い)が2倍にされる場合、半分削減される。Nが(L-K)/Fとして表現されるNメモリチャネルにわたるNウェイインターリーブに関して、インターリーブの度合いは「n」である(すなわち、「n」個のアドレスビットが、各世代においてNメモリチャネルにわたるインターリーブのために選択される)。世代G=1においてアドレスビットA[8:7]が選択される、3ウェイメモリインターリーブに関する図3に関連する上述の例においてn=2である図7Aに示されるように、線形のアクセスパターンに関するトラフィックの不釣り合いの因子は、式K/2^n=1/2^2=1/4によって与えられる。図7Bに示されるように、インターリーブの度合いがたとえば2nへと2倍にされる場合、すなわち、世代G=1において4ビットA[10:7]が選択される場合、線形のアクセスパターンに関するトラフィックの不釣り合いの因子は、K/2^(2n)=1/2^4=1/16へと大幅に削減される。したがって、インターリーブの度合い、または各世代においてインターリーブのために選択されるアドレスビットの数、および世代の総数G_totalは、関連する実施形態においては、所望のトラフィックの不釣り合いの因子を考慮することによって決定され得る。さらに詳細には、アドレスビットの数は、たとえば図7においては、トラフィックの不釣り合いの因子を決定する目的で、G=G_totalに関する最後の世代を除いて、各世代Gにおいて選択されるアドレスビットの数である。
実施形態が本明細書において開示されたプロセス、機能、および/またはアルゴリズムを実行するための様々な方法を含むことは、理解されるであろう。たとえば、図8に示されるように、実施形態は、メモリインターリーブの方法を含み得る。図示の便宜上、行為の一部は、図2〜図5の要素に関連する。しかし、実施形態は、図2〜図5の要素に限定されない。方法は、メモリのアドレスビットをN個のメモリチャネルに、予め決められた数(G_total)の連続するラウンドにおいて反復的にマッピングするためのブロック802において始まる。各ラウンドにおいては、最後のラウンド(すなわち、ブロック804において判定されるG=G_total)を除いて、Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択し(ブロック806)、(n)アドレスビットの選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定し(ブロック808)、最大数以内の等しい数の2進値をNメモリチャネルの各々にマッピングし(ブロック810)、Nメモリチャネルの各々に等しい回数(F)マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、およびNメモリチャネルの各々に等しい回数(F)マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入る(ブロック812)。最後のラウンドは、Nメモリチャネルの各々に最後の数の最上位のアドレスビットのサブセットをマッピングすることを含む(最後の数は、式または数式ceiling(log2N)によって取得される)(ブロック814)。示された流れ図は様々な実施形態の検討を容易にするためだけのものであることは、理解されるであろう。しかし、本明細書において開示されたさらなる対象/機能は、本明細書において開示された様々な実施形態に包含される、明示的に示されていない様々な方法にまとめられ得る。
当業者は、情報および信号が様々な異なるテクノロジーおよび技術のうちのいずれかを使用して表され得ることを理解するであろう。たとえば、上の説明全体を通じて言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁気的粒子、光場もしくは光学的粒子、またはこれらの任意の組合せによって表され得る。
さらに、当業者は、本明細書において開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムのステップが、電子的なハードウェア、コンピュータソフトウェア、またはこれら両方の組合せとして実装され得ることを理解するであろう。ハードウェアとソフトウェアとのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能の観点で上で説明された。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、システム全体に課された特定の用途および設計の制約による。当業者は、説明された機能をそれぞれの特定の用途のために様々な方法で実装し得るが、そのような実装の判断は本発明の範囲からの逸脱をもたらすものと解釈されるべきでない。
本明細書において開示された実施形態に関連して説明された方法、シーケンス、および/またはアルゴリズムは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこれら2つの組合せで具現化されてよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記録媒体に存在し得る。例示的な記録媒体は、プロセッサが記録媒体から情報を読むことができ、記録媒体に情報を書き込むことができるようにプロセッサに結合される。別法として、記録媒体は、プロセッサに一体化されてよい。
したがって、本発明の実施形態は、2つ以上のメモリチャネルにメモリアドレスをインターリーブするための方法を具現化するコンピュータ可読媒体を含み得る。したがって、本発明は、示された例に限定されず、本明細書において説明された機能を実行するための任意の手段が、本発明の実施形態に含まれる。
上述の開示は本発明の説明的な実施形態を示すが、添付の請求項によって定義される本発明の範囲を逸脱することなしに本明細書において様々な変更および修正がなされ得ることに留意されたい。本明細書において説明された本発明の実施形態による方法の請求項の機能、ステップ、および/または行為は、必ずしもいずれかの特定の順序で実行されない。さらに、本発明の要素が単数形で説明されるか、または特許請求の範囲に記載される可能性があるが、単数への限定が明示的に述べられない限り、複数も想定される。
102 アドレス
104 チャネル分散機能
106 チャネル内アドレス指定機能
108_0 第1のメモリチャネル
108_1 第2のメモリチャネル
CS0 選択信号、選択線
CS1 選択信号、選択線
CS2 選択線
200 処理システム
202a〜d プロセッサまたは中央演算処理装置
204 L2キャッシュ
206 グラフィックス処理ユニット
208 デジタル信号プロセッサ
210 ビデオコーダ/デコーダ(コーデック)
212 アドレス
214 システムバス
216 チャネル分散ブロック
218 チャネル内アドレス指定ブロック
220 世代(G)ブロック
222_0 メモリチャネル
222_1 メモリチャネル
222_2 メモリチャネル

Claims (23)

  1. メモリインターリーブの方法であって、
    予め決められた数(G_total)の連続するラウンドにおいて反復的にN個のメモリチャネルにメモリのアドレスビットをメモリコントローラによってマッピングするステップであって、最後のラウンドを除く各ラウンドが、
    前記Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択すること、
    (n)アドレスビットの前記選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定すること、
    前記最大数以内の等しい数の2進値を前記Nメモリチャネルの各々にマッピングすること、および
    前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、および前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入ることを含む、ステップと、
    前記最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値を前記Nメモリチャネルに、前記メモリコントローラによってマッピングするステップとを含む、方法。
  2. N、L、K、およびFが、式N=(L-K)/Fを満たす請求項1に記載の方法。
  3. 前記メモリをN*R個のメモリチャネルに連続するラウンドにおいて反復的にマッピングするステップであって、各ラウンドにおいて、Rメモリチャネルにアドレスビットの異なるサブセットをマッピングするステップをさらに含む請求項1に記載の方法。
  4. 後続のラウンドにおけるアドレスビットの前記サブセットが、前のラウンドのアドレスビットに隣接し、前記前のラウンドの前記アドレスビットよりも上位である請求項1に記載の方法。
  5. トラフィックの不釣り合いの因子が、アドレスビットの前記サブセットのビットの数を増やす場合に削減される請求項1に記載の方法。
  6. 前記トラフィックの不釣り合いの因子が、アドレスビットの前記サブセットのビットの前記数を2倍にする場合に半分削減される請求項5に記載の方法。
  7. 前記予め決められた数(G_total)がプログラミング可能な定数である請求項1に記載の方法。
  8. 前記最後の数が、数式ceiling(log2N)によって決定される請求項1に記載の方法。
  9. N個のメモリチャネルを含むメモリと、
    予め決められた数(G_total)の連続するラウンドにおいて反復的に前記Nメモリチャネルに前記メモリのアドレスビットをマッピングするための手段であって、最後のラウンドを除く各ラウンドに関して、
    前記Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択するための手段、
    (n)アドレスビットの前記選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定するための手段、
    前記最大数以内の等しい数の2進値を前記Nメモリチャネルの各々にマッピングするための手段、および
    前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、および前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入るための手段を含む、マッピングするための手段と、
    前記最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値を前記Nメモリチャネルにマッピングするための手段とを含む処理システム。
  10. N、L、K、およびFが、式N=(L-K)/Fを満たす請求項9に記載の処理システム。
  11. 前記メモリをN*R個のメモリチャネルに連続するラウンドにおいて反復的にマッピングするための手段であって、各ラウンドにおいて、Rメモリチャネルにアドレスビットの異なるサブセットをマッピングするための手段を含む、マッピングするための手段をさらに含む請求項9に記載の処理システム。
  12. プロセッサと、
    前記プロセッサに通信可能なように結合されたメモリであって、N個のメモリチャネルを含む、メモリと、
    予め決められた数(G_total)の連続するラウンドにおいて反復的に前記Nメモリチャネルに前記メモリのアドレスビットをマッピングするように構成されたメモリコントローラとを含み、最後のラウンドを除く各ラウンドに関して前記メモリコントローラが、
    前記Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択し、
    (n)アドレスビットの前記選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定し、
    前記最大数以内の等しい数の2進値を前記Nメモリチャネルの各々にマッピングし、
    前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、および前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入り、
    前記最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値を前記Nメモリチャネルにマッピングするように構成される、処理システム。
  13. N、L、K、およびFが、式N=(L-K)/Fを満たす請求項12に記載の処理システム。
  14. 前記メモリコントローラが、前記メモリをN*R個のメモリチャネルに連続するラウンドにおいて反復的にマッピングするようにさらに構成され、各ラウンドにおいて、前記メモリコントローラが、Rメモリチャネルにアドレスビットの異なるサブセットをマッピングするように構成される請求項12に記載の処理システム。
  15. 後続のラウンドにおけるアドレスビットの前記サブセットが、前のラウンドのアドレスビットに隣接し、前記前のラウンドの前記アドレスビットよりも上位である請求項12に記載の処理システム。
  16. トラフィックの不釣り合いの因子が、アドレスビットの前記サブセットのビットの数を増やす場合に削減される請求項12に記載の処理システム。
  17. 前記トラフィックの不釣り合いの因子が、アドレスビットの前記サブセットのビットの前記数を2倍にする場合に半分削減される請求項16に記載の処理システム。
  18. 前記予め決められた数(G_total)がプログラミング可能な定数である請求項12に記載の処理システム。
  19. 前記予め決められた数(G_total)が前記プロセッサに結合されたレジスタを介してプログラミング可能である請求項18に記載の処理システム。
  20. 前記メモリコントローラが、数式ceiling(log2N)に基づいて前記最後の数を決定するようにさらに構成される請求項12に記載の処理システム。
  21. プロセッサによって実行されるときに、前記プロセッサに結合された、Nメモリチャネルを含むメモリをインターリーブするための動作を前記プロセッサに実行させるコードを含む非一時的コンピュータ可読記録媒体であって、
    予め決められた数(G_total)の連続するラウンドにおいて反復的に前記Nメモリチャネルに前記メモリのアドレスビットをマッピングするためのコードであって、最後のラウンドを除く各ラウンドに関して、
    前記Nメモリチャネルにわたるインターリーブのために使用されなかった予め定義された数(n)の最も低位のアドレスビットを含むアドレスビットのサブセットを選択するためのコード、
    (n)アドレスビットの前記選択されたサブセットによって表され得る一意の2進値の最大数(L)を決定するためのコード、
    前記最大数以内の等しい数の2進値を前記Nメモリチャネルの各々にマッピングするためのコード、および
    前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)場合、および前記Nメモリチャネルの各々に等しい回数マッピングされ得ないいくつかの2進値が残っている(K<Nである)とき、次のラウンドに入るためのコードを含む、マッピングするためのコードと、
    前記最後のラウンドにおいて、最後の数(min_bits)の最上位のアドレスビットによって表される2進値を前記Nメモリチャネルにマッピングするためのコードとを含む、非一時的コンピュータ可読記録媒体。
  22. N、L、K、およびFが、式N=(L-K)/Fを満たす請求項21に記載の非一時的コンピュータ可読記録媒体。
  23. 前記メモリをN*R個のメモリチャネルに連続するラウンドにおいて反復的にマッピングするためのコードであって、各ラウンドにおいて、Rメモリチャネルにアドレスビットの異なるサブセットをマッピングするためのコードを含む、マッピングするためのコードをさらに含む請求項21に記載の非一時的コンピュータ可読記録媒体。
JP2016516553A 2013-09-27 2014-09-12 メモリインターリーブのための構成可能な分散機能 Expired - Fee Related JP6105814B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361883833P 2013-09-27 2013-09-27
US61/883,833 2013-09-27
US14/251,626 US9495291B2 (en) 2013-09-27 2014-04-13 Configurable spreading function for memory interleaving
US14/251,626 2014-04-13
PCT/US2014/055449 WO2015047753A1 (en) 2013-09-27 2014-09-12 Configurable spreading function for memory interleaving

Publications (3)

Publication Number Publication Date
JP2016536658A true JP2016536658A (ja) 2016-11-24
JP2016536658A5 JP2016536658A5 (ja) 2017-02-23
JP6105814B2 JP6105814B2 (ja) 2017-03-29

Family

ID=52741322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016516553A Expired - Fee Related JP6105814B2 (ja) 2013-09-27 2014-09-12 メモリインターリーブのための構成可能な分散機能

Country Status (6)

Country Link
US (1) US9495291B2 (ja)
EP (1) EP3049935B1 (ja)
JP (1) JP6105814B2 (ja)
KR (1) KR101779545B1 (ja)
CN (1) CN105518632B (ja)
WO (1) WO2015047753A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102464801B1 (ko) * 2015-04-14 2022-11-07 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
CN107180001B (zh) * 2016-03-10 2020-02-21 华为技术有限公司 访问动态随机存储器dram的方法和总线
US10140223B2 (en) 2016-06-27 2018-11-27 Qualcomm Incorporated System and method for odd modulus memory channel interleaving
US10037306B2 (en) * 2016-09-01 2018-07-31 Qualcomm Incorporated Approximation of non-linear functions in fixed point using look-up tables
US10642733B1 (en) * 2018-07-12 2020-05-05 Lightbits Labs Ltd. System and method for memory interface load balancing
CN112513824B (zh) * 2018-07-31 2024-04-09 华为技术有限公司 一种内存交织方法及装置
US10990517B1 (en) * 2019-01-28 2021-04-27 Xilinx, Inc. Configurable overlay on wide memory channels for efficient memory access
CN112395216A (zh) 2019-07-31 2021-02-23 北京百度网讯科技有限公司 用于存储管理的方法、装置、设备和计算机可读存储介质
KR20210079894A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6097446A (ja) * 1983-10-31 1985-05-31 Mitsubishi Electric Corp 記憶装置
JPH03502019A (ja) * 1988-10-27 1991-05-09 ユニシス コーポレーシヨン 自動可変メモリのインタリーブシステム
US5479624A (en) * 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
JPH09128289A (ja) * 1995-10-17 1997-05-16 Ind Technol Res Inst 多メモリバンクパーティション内のデータをインターリーブする方法及びシステム及びそれに用いられるメモリ
JP2003228517A (ja) * 2002-02-01 2003-08-15 Matsushita Electric Ind Co Ltd メモリ装置
US20110047346A1 (en) * 2009-08-19 2011-02-24 Sun Microsystems, Inc. Efficient interleaving between a non-power-of-two number of entities

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381669B1 (en) * 1999-12-27 2002-04-30 Gregory V. Chudnovsky Multi-bank, fault-tolerant, high-performance memory addressing system and method
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US20050172091A1 (en) 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to 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
KR100699491B1 (ko) * 2005-07-19 2007-03-26 삼성전자주식회사 인터리빙 방법 및 그 장치
KR101011171B1 (ko) * 2005-12-28 2011-01-26 후지쯔 가부시끼가이샤 메모리 제어 방법, 기억 매체 및 장치와 정보 처리 장치
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US8327057B1 (en) * 2007-04-16 2012-12-04 Juniper Networks, Inc. Ordering write bursts to memory
US8051239B2 (en) * 2007-06-04 2011-11-01 Nokia Corporation Multiple access for parallel turbo decoder
US8438320B2 (en) 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8751769B2 (en) * 2007-12-21 2014-06-10 Qualcomm Incorporated Efficient address generation for pruned interleavers and de-interleavers
US8438434B2 (en) * 2009-12-30 2013-05-07 Nxp B.V. N-way parallel turbo decoder architecture
US20120054455A1 (en) 2010-08-31 2012-03-01 Qualcomm Incorporated Non-Uniform Interleaving Scheme In Multiple Channel DRAM System
US20120137090A1 (en) * 2010-11-29 2012-05-31 Sukalpa Biswas Programmable Interleave Select in Memory Controller

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6097446A (ja) * 1983-10-31 1985-05-31 Mitsubishi Electric Corp 記憶装置
JPH03502019A (ja) * 1988-10-27 1991-05-09 ユニシス コーポレーシヨン 自動可変メモリのインタリーブシステム
US5479624A (en) * 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
JPH09128289A (ja) * 1995-10-17 1997-05-16 Ind Technol Res Inst 多メモリバンクパーティション内のデータをインターリーブする方法及びシステム及びそれに用いられるメモリ
JP2003228517A (ja) * 2002-02-01 2003-08-15 Matsushita Electric Ind Co Ltd メモリ装置
US20110047346A1 (en) * 2009-08-19 2011-02-24 Sun Microsystems, Inc. Efficient interleaving between a non-power-of-two number of entities

Also Published As

Publication number Publication date
EP3049935B1 (en) 2018-05-30
WO2015047753A1 (en) 2015-04-02
CN105518632B (zh) 2019-07-09
US9495291B2 (en) 2016-11-15
JP6105814B2 (ja) 2017-03-29
EP3049935A1 (en) 2016-08-03
KR101779545B1 (ko) 2017-09-18
KR20160061387A (ko) 2016-05-31
CN105518632A (zh) 2016-04-20
US20150095595A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
JP6105814B2 (ja) メモリインターリーブのための構成可能な分散機能
US11487676B2 (en) Address mapping in memory systems
JP6761891B2 (ja) 柔軟なアドレスデコード機能を備えるメモリコントローラ
US11275696B2 (en) Isolated performance domains in a memory system
US7872892B2 (en) Identifying and accessing individual memory devices in a memory channel
US20130173845A1 (en) Command Aware Partial Page Programming
US20120203960A1 (en) Apparatus and method for multi-level cache utilization
US10162554B2 (en) System and method for controlling a programmable deduplication ratio for a memory system
CN110175086B (zh) 存储器件、半导体器件、半导体系统及耗损均衡设备
JP2019121350A (ja) ストレージデバイスの容量利用率の関数であるプログラミング済みセル記憶密度モードを有するストレージデバイス
CN106055495B (zh) 用于控制半导体装置的方法
WO2006021747A1 (en) A memory controller
US9921969B2 (en) Generation of random address mapping in non-volatile memories using local and global interleaving
TWI473014B (zh) 增強型微處理器或微控制器
US10915467B2 (en) Scalable, parameterizable, and script-generatable buffer manager architecture
US20170108911A1 (en) System and method for page-by-page memory channel interleaving
US7787311B2 (en) Memory with programmable address strides for accessing and precharging during the same access cycle
US10095424B2 (en) Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
US20160357666A1 (en) Memory interleaving on memory channels
EP3931704A1 (en) Accelerating access to memory banks in a data storage system
JPH0981453A (ja) メモリ制御方法及びその実施装置
KR20240080913A (ko) 스토리지 장치 및 그 동작 방법
TW201915735A (zh) 涉及命名空間規劃的資料管理方法以及資料儲存系統
EP0500915A1 (en) Method and apparatus for memory size selection

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170118

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170118

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170126

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: 20170206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170302

R150 Certificate of patent or registration of utility model

Ref document number: 6105814

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees