JP3599352B2 - フレキシブルなn−ウェイ・メモリ・インターリーブ方式 - Google Patents
フレキシブルなn−ウェイ・メモリ・インターリーブ方式 Download PDFInfo
- Publication number
- JP3599352B2 JP3599352B2 JP8215592A JP8215592A JP3599352B2 JP 3599352 B2 JP3599352 B2 JP 3599352B2 JP 8215592 A JP8215592 A JP 8215592A JP 8215592 A JP8215592 A JP 8215592A JP 3599352 B2 JP3599352 B2 JP 3599352B2
- Authority
- JP
- Japan
- Prior art keywords
- bits
- sum
- address
- adj
- memory
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
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)
- Memory System (AREA)
- Dram (AREA)
Description
【産業上の利用分野】
本発明は概括的にはメモリのアドレス指定に関し、特に、種々のブロックサイズのブロックメモリのアドレス指定をインターリーブ方式で実行する方法と装置に関する。
【0002】
【従来の技術】
コンピュータ及びコンピュータシステムは、代表的には2つのバス、すなわちアドレスバスとデータバスとを有している。アドレス指定及び制御のために用いられるアドレスバスは、その幅は通常は固定しており、またコンピュータの内部メモリと周辺装置との間のトランザクションの実行を開始するのに必要な信号を搬送する。データは、代表的には、データバスを経て転送される。場合によっては、アドレスバスとデータバスはアドレスとデータを転送するために多重化される。
【0003】
コンピュータの記憶領域をインターリーブされたメモリブロックもしくはメモリカードに構成する必要がある場合が多い。インターリーブされたメモリは、サイクルを小部分に分割して2つ又はそれ以上のメモリブロックにアクセスすることを許容し、それによってサイクル時間を大幅に短縮し、メモリの速度を高めることができる。最も簡単なインターリーブ手順では、一群のアドレス内又はリスト内のアドレスの連続するラインアドレスを順次番号付けされたメモリブロックへと割り当てる。しかし、この方法は、一般に、所定のアドレスのブロック番号を決定するために大規模な「モジュロ演算」の操作が必要である。
【0004】
モジュロ演算は剰余関数として理解することが最も簡単である。例えば、21÷4は5プラス剰余の1である。従って、21のモジュロ5は1である。よく知られているように、除算は実装するのにコストがかかるので、モジュロ演算を反復的な減算方式で実行することができ、そこで結果がモジュラス(前記の例では5)より小さくなるまで該モジュラスを最初の数(前記の例では21)から反復的に減算する。例えば、21のモジュロ5は次のように計算される。
【0005】
21−5=16(>=5、継続)
16−5=11(>=5、継続)
11−5=6(>=5、継続)
6−5=1(<5、停止、結果は1)
各々が、256Kバイトの3ブロックとして構成されたメモリを有するシステムでは、256Kモジュロ3のアドレスの計算を必要とし、これは任意数のN個のブロック用に設計されたハードウェアでは困難であろう。最も容易な簡略化は、2の累乗であるN(モジュラス)の値だけを許容して、モジュロN演算がビットフィールドの抽出だけを含むようにすることである。しかし、この方法は、特に増分的にメモリを追加する場合にはフレキシビリティがなさすぎる。
【0006】
前述の「ビットシフト」インターリーブ方式とは別の方法は、2の累乗のメモリカードをインターリーブするために、アドレスビットを用いて該カードを起動させる。例えば、代表的な、非インターリーブ方式のバイトアドレスシステムを考えてみよう。各メモリカードがアクセス毎に32ビット(4バイト)を供給するものと想定する。更に、アドレス空間が20ビットであり、メモリカードが各々64Kバイトであるものと想定する。この場合にはアドレス空間は次のように配置することができる。
【0007】
【表1】
【0008】
2つのメモリカードをインターリーブすることができるようにこの構成を修正するために、オフセットビットが1ビットだけ左にシフトされ、最初のオフセットビットのLSB(最下位のビット、ビット17)が、4番目のカード選択ビット、又はインターリーブビットとして用いられる。
【0009】
【表2】
【0010】
この方法とその変化形は広範に利用されている。これは2の累乗のメモリブロックを有するシステムに容易に拡張することができる。しかし、この方法も、前述のビットシフト方式と同様に、増分的にメモリを加える場合にフレキシビリティがなさすぎる。
【0011】
前述の論議は、インターリーブ回路の複雑さを解消するために、既知のインターリーブシステムでは2の累乗、例えば2、4、8等の形でメモリブロックを提供する必要があるという事実を反映したものである。このようなシステムでは、例えば6バンクのメモリは、2バンク及び4バンクとして、又は2つのインターリーブメモリシステムの3個のバンクとして構成されなければならないであろう。インターリービングを実行するための回路が比較的複雑であるため、任意の数のバンクは従来の技術では実用的ではなかった。しかしながら、例えばシステムにメモリを追加する場合には、2の累乗ではない任意の数のメモリバンクをインターリーブできることは利点となる。
【0012】
【発明が解決しようとする課題】
従って、本発明の目的は、任意数のメモリブロックでメモリのインターリービングを実行するための実用的なシステムを提供することである。本発明の更に別の目的は、メモリブロックをアドレスバスに接続でき、それぞれのブロックが自己選択するために利用できるブロック識別番号をつけることができる方法と、該方法に対応する装置を提供することである。本発明はこれらの課題を達成するものである。
【0013】
【課題を解決するための手段】
本発明の一実施例は、N個のブロックの各々がサイズS(バイト)である複数のN個のメモリブロックをインターリーブする方法を提供する。本発明に従えば、M−ビットのデータアドレスは、各々のブロックがサイズL(バイト)のラインに群として分類されたSバイトを有するインターリーブされたメモリブロックの対応するアドレスに変換される。
【0014】
この方法は、最初に、変換されるアドレスの第1群のビット(B_bits)を特定し、次に、その変換されるアドレスに対応するインターリーブインデックスを定める第2群のビット(I_bits)を特定するステップを含んでいる。好ましい実施例では、次の値を計算することによってB_bits及びI_bitsが決定される。すなわち、A=log2(S)、B=M−A及びI=切捨て(log2(N))。次にB_bitsが、変換されるアドレスのB個の最上位ビットとして定義される。次に、変換されるアドレスの最下位のビット(“A_bits”)が特定される。次に、A_bitsのlog2(L)個の最下位ビットを最初に切り捨てた後にA_bitsのうちのI個の最下位ビットとしてI_bitsが定義される。これに従って、A_bitsはB_bitsにより定義されたブロック内のオフセットを定義する。
【0015】
次に、“調整されない和”(“SUM”)と調整された和(“ADJ_SUM”)が次の定義に従って計算される。すなわち、SUM=B_bits+I_bits、及び、ADJ_SUM=B_bits+I_bits−Nである。
【0016】
最後に、変換されるアドレスに対応するブロック番号が定義されるが、このブロック番号はSUM又はADJ_SUMの少なくとも一つの値の関数である。好ましい実施例では、選択されたブロック番号は、ADJ_SUMがゼロ未満である場合はSUMの値であり、ADJ_SUMがゼロ以上である場合はADJ_SUMの値である。
【0017】
本発明の別の実施例は、第1及び第2の入力値の和をとり、且つ0からN−1の範囲内で結果を計算するための限定された範囲のモジュロ−N加算器を提供するものであり、上記において、入力値の実際の和は0から2N−1の範囲内にある。本発明による限定された範囲のモジュロ−N加算器は、第1及び第2の入力値の第1の和を計算するための手段と、第1及び第2の入力値の第2の和を計算し、且つNに対応する第3の入力値を減算するための手段と、第2の和が負であるかどうかを判定し、且つ第1及び第2の和の一つから結果を選択するための手段とから成っている。その場合、第2の和がゼロ未満である場合は第1の和が選択され、第2の和がゼロ以上である場合は第2の和が選択される。
【0018】
本発明の別の実施例は、コンピュータと、該コンピュータと連結されたN個のメモリブロックと、インターリーブされた方式でメモリからデータ値を読出し、且つ/又はメモリへとデータを書き込むためのアドレス手段(以下では、アドレス指定手段)とを備えたディジタルシステムを提供する。アドレス指定手段は、限定された範囲のモジュロ−N加算器を含む前述の方法を実行するための手段を備えている。
【0019】
【実施例】
本発明の好ましい実施例は、記憶位置のそれぞれのアドレスを、対応するインターリーブされたブロック・アドレス及び各ブロック内のオフセットへと変換するための方法と、それに対応する装置、及びインターリーブされたメモリブロックを備えたコンピュータシステムを含んでいる。これらの実施例は、以下に図面を参照して説明するが、同一の参照符号は同一の構成要素又はステップを示している。本実施例を概観するため、好ましい方法では、本明細書で“B_bits”と呼ぶメモリブロックでは使用されない上位アドレスビットを、本明細書で“I_bits”と呼ぶI個の最下位ラインアドレスビットに加算するために、(後述する)限定された範囲のモジュロ−N加算器を使用することを指摘しておく。この場合、I及びBは整数を表し、“B_bits”及び“I_bits”は隣接するアドレスビットの特定の群又はサブセットを表す。更に、“ライン”は各メモリアクセスにより転送されるバイト群(キャッシュ準拠システムでは代表的には16又は32)を意味する。“ラインアドレス”は特定のライン内の最初のバイトのアドレスである。本発明によれば、B_bitsとI_bitsの和(“調整されない和”と呼ぶ)が、B_bitsとI_bits−Nの和と並行して計算される。ここにNはインターリーブされているブロック数である。幾つかの群のインターリーブされたブロックを許容するため、該群の開始アドレス(ここでは群開始の意味で“GS”と称する)もB_bitsから減算される。ブロックが群に構成されていない場合は、GSをゼロにセットする。このようにして、B_bitsとI_bits−(GS+N)の“調整された和”が計算される。これらの和は3入力加算器によって計算でき、そのうちの1入力はシステムの構成中に決定される予め定義された定数である(この予め定義された定数は、それぞれの加算器毎に−GS及び−(GS+N)である)。3入力加算器の設計と実装は当該技術分野では周知である。
【0020】
本発明によると、変換されるアドレスに対応する特定のメモリブロックを識別するブロック番号を定義するために、調整された和又は調整されない和のいずれかが用いられる。調整された和又は調整されない和のいずれを用いるかは、調整された和が負であるか、ゼロであるか又は正であるかによる。これらの和は、対応するメモリブロックを選択するためにそのうちのどれを用いるかの選択と同様に、本発明に基づく限定された範囲のモジュロ−N加算器によって実行される。
【0021】
次に図1を参照してこの方法を説明する。その後で図2を参照して限定された範囲のモジュロ−N加算器を説明する。最後に、図3を参照して本発明を組み入れたコンピュータ・システムを説明する。
【0022】
さて、図1を参照すると、最初の処理、すなわちステップ10は、パラメータ“S”、“L”、“N”及び“GS”を定義するステップである。Sは特定の群のメモリブロックのサイズをバイトで示すものである。(一の群内では全てのブロックが同じサイズであることが必要である)。Lはブロック内のラインのサイズをバイトで示すものである。前述のとおり、N及びGSは、特定の群内のブロック数及び特定の群の開始アドレス番号をそれぞれ示す。
【0023】
次のステップは、変数“A”、“B”及び“I”の値を計算するためのステップ12である。これらの変数は次のように定義される。
【0024】
A=log2(S)、
B=M−A、
I=truncate(log2(N))
ここで、“M”は予め定数として定められた、システムのアドレスバスの幅(すなわちビット数)に等しい。尚、以下では、truncate(log2(N))は、切り捨て(log2(N))と記載。
【0025】
ステップ14、16及び18は“B_bits”、“A_bits”及び“I_bits”をそれぞれ特定することに関連するステップである。“B_bits”は、変換されるアドレスのB個の最上位ビット(MSBs)により定義される。“A_bits”は、アドレスのA個の残りの最下位ビット(LSBs)により定義される。又、“I_bits”はラインアドレスのI個の最下位ビットにより定義される。この場合、ラインアドレスは、ライン内の特定のバイトを識別するのに必要なビットを取り除いた後のA_bitsの残りのビットにより定義される。従って、ラインサイズがLである場合、I_bitsは、A_bitsのlog2(L)個の最下位ビットを取り除いた後のA_bitsの残りのI個の最下位ビットにより定義される。
【0026】
例えば、ラインのサイズが16バイト(L=16)で16ビットのアドレスバス(M=16)を有する1024バイトのメモリ(S=1024)の5つのブロック(N=5)を考えてみる。更に、群開始アドレス(GS)がゼロであるものと想定する。メモリブロック内の全ての記憶位置をアドレス指定するのに必要なビット数Aは、A=log2(1024)=10である。従ってBは16−10=6であり、Iは切り捨て(log2(5))=2である。インターリーブビット(I_bits)はビット10及び11であり、ビット0はアドレスの最も左側のビットである。この場合、アドレスは次のように分解される。
【0027】
【表3】
【0028】
添文字(例えばk0、k1、k2等)は特定のアドレス及びビット数を表すことに留意されたい。例えばアドレスのリスト中のk番目のアドレスのビット0はbk0として表される。このようにこの例では特定のアドレスに対応するI_bits、A_bits及びB_bitsは(添文字kを省略して)次のように定義される。
【0029】
I_bits=(b10、b11)、
A_bits=(b6 ,b7 ・・・b15)、
B_bits=(b0 ,b1 ・・・b5 )。
【0030】
上記のステップ10−18は、システムの構成(始動)中に一度しか実施する必要がないことに留意されたい。次のステップ20−24は、各メモリアクセスと共に実行される。
【0031】
図1に戻ると、次にステップ20で、調整されない和(“SUM”)と調整された和(“ADJ_SUM”)が好ましくは同時に、(各アクセスごとに)計算される。これらの和は次のように計算される。
【0032】
SUM=B_bits+I_bits−GS
ADJ_SUM=B_bits+I_bits−(GS+N)。
【0033】
次にステップ22で、調整された和(ADJ_SUM)がゼロ以上である場合は、(ADJ_SUM)が正しい結果(RESULT)として選択される。そうではない場合は、調整されない和(SUM)が正しい結果として選択される。
【0034】
最後のステップ、すなわちステップ24は、変換されるアドレスに対応するブロック番号及びオフセットを定義するステップである。ブロック番号は単にRESULTにセットされ、オフセットアドレスはA_bitsによって定義される。
【0035】
前述の方法のさらなる例として、以下の表は内部アドレス及びそれに対応する変換された外部バスアドレスのリストを示している。ここで、バスアドレスはブロック番号(表では“blk”)とオフセット・アドレス(表では“offset”)から構成されている。この例ではS=32、N=7、I=2、M=7、A=4、B=3及びGS=0である。
【0036】
【表4】
【0037】
【表5】
【0038】
【表6】
【0039】
【表7】
【0040】
前述のように、各“インターリーブ群”が同一サイズのブロックから成っており、群の開始B_bits値を示す群開始番号(GS)がB_bitsから減算される場合は、サイズが異なるブロックを使用することができる。バスを経て転送されるブロック番号の結果値には、GSを再度加算することが必要なことがある。ブロック番号は連続している必要がないので、インターリーブ群を特定するためにB_bitsのいくつかのビットを使用できることに留意されたい。
【0041】
例えば、システムが4つのサイズのDRAMカードをサポートするものと想定する。更に、ハードウェアがシステム内で16−ウェイまでのインターリービング(I=4であることが必要)と、16個までのメモリカードを許容するものと想定する。サイズAの全てのカードに0×0?(ここに“?”は0からfまでの範囲であり得る)の16進数のブロック番号を割当て、サイズBのカードに0×1?のブロック番号を割当て、サイズCのカードに0×2?のブロック番号を割当て、且つサイズDのカードに0×3?のブロック番号を割り当てることによって、サイズが異なるメモリ・カードの任意の組み合わせを同時にサポートすることが可能である。構成ソフトウェアがシステム内にそのサイズのカードがいくつあるかに基づいて?の値を決定し、0から群内のカード数の数字までをそれらに順次番号付けをする。次に最大のサイズのカードのアドレス範囲が決定される。次に、そのGS番号がゼロにセットされる。その後、先行する群の終わりから始まる、その次に大きい群に対して同じ動作が実行されて、以下同様に実行される。
【0042】
さて図2を参照すると、本発明に基づく限定された範囲のモジュロ−N加算器(好ましくは各群のカード毎に一つ備えてある)は、一対の3入力加算器20a’、20b’と、0とN−1の間にある正しい結果、すなわちSUM又はADJ_SUMを選択する手段とから成っている。正しい結果を選択するための手段は、それぞれの加算器20a’、20b’に選択信号“SEL1”、“SEL2”を供給する論理回路である選択回路48を備えている。図示するように、SUMとADJ_SUMの計算は並行して行われる。ADJ_SUMがゼロ未満である場合は、SUMを選択し、ADJ_SUMがゼロ以上である場合は、ADJ_SUMを選択する選択回路48によって、図面では“NEG”と称する符号ビットが用いられる。群記述ビット(例えばB_bitsの上位2ビット)を決定するため、各群毎に一対の範囲比較器40、42を使用することができる。比較器40、42の出力は、選択回路48にイネーブル信号(“ENABLE”)を供給する整合回路44によって利用される。群番号入力を選択回路48に供給するため、所定の群番号レジスタ46も備えることができる。多くの群について、低範囲比較器42は先行する群の高範囲比較器として先行する群によって共用され、高範囲比較器40は後続の群の低範囲比較器として後続の群によって共用されることができる。
【0043】
所与の群用の所定の定数(始動時に決定される)である値−GS及び−(GS+N)はそれぞれの加算器20a’、20b’の第3の入力である。更に、アドレスA1 ,A2 ・・・Ak 、・・・からなるリスト8は、ブロック番号(“BLOCK_NO”)及びブロック内のオフセットアドレス(“OFFSET”)の対応するリストに変換されることも留意されたい。
【0044】
さて図3を参照すると、本発明に基づくコンピュータ・システムはブロックメモリ34A,34B・・・34Nと、該ブロックメモリをインターリーブするためのアドレス指定手段32とを備えている。好ましい実施例では、アドレスA1 ,A2 ,A3 ・・・からなる内部リスト8を有するコンピュータ30は、アドレス指定手段32を介してメモリブロックもしくはカード34A〜34Nに結合されている。アドレス指定手段32及び/又はカード34A−34Nは別個の装置である必要はなく、コンピュータ30に統合可能である。アドレス指定手段32は、それぞれのブロックをインターリーブ方式でアドレス指定するための前述のコードと回路とを備えている。
【0045】
最後に、本明細書で説明した好ましい実施例は、多くの態様で変更可能であることが当業者には明らかであろう。例えば、図1に示したステップを実行する順序は変更可能であり、前述の方法を実施するための手段(ハードウェアでもソフトウェアでも)は、実際に多様な装置で実現することができ、それも本発明の範囲内にある。更に、A及びIを計算するために好ましい実施例で用いられる式はlog2関数を使用する必要はない。その代わりに、B_bits、I_bits及びA_bits用に用いられる特定のビットを適当なビット選択論理によってマスクしてもよい。従って、例えばI_bits、B_bits等を3入力加算器へと経路指定するための図2のブロック14、16及び18は多重型論理回路として実施することもできよう。更に、システムが一つのサイズのメモリだけをサポートする場合は、これらの経路を直結することもできよう。従って、本発明の範囲は前述の特定の実施例に限定されるものではない。
【0046】
【発明の効果】
本発明のフレキシブルなN−ウェイ・メモリ・インターリーブ方式は、任意数のメモリブロックでインターリービングを実行するのに極めて実用的であり、該メモリブロックをアドレスバスに接続して各メモリブロックが自己選択できるブロック識別番号を付けることができる。
【図面の簡単な説明】
【図1】本発明に基づく、メモリアドレスを対応するインターリーブされたブロックアドレスに変換する方法の簡略化したフローチャートである。
【図2】本発明に基づく、限定された範囲のモジュロ−N加算器のブロック図である。
【図3】本発明に基づく、インターリーブされたブロックメモリを組み込んだコンピュータシステムのブロック図である。
【符号の説明】
20a’,20b’ 3入力加算器
30 コンピュータ
32 アドレス指定手段
34A,34B…34N ブロックメモリ
40,42 比較器
44 整合回路
46 群番号レジスタ
48 選択回路
Claims (9)
- 変換されたM(Mは正の整数)ビットのデータアドレスを使用して、サイズS(Sは正の整数かつ2の累乗)の複数のN(Nは正の整数)個のメモリブロックをインターリーブする方法であって、該メモリブロックのラインのサイズがL(Lは正の整数かつ2の累乗)であり、
(a)A=log2(S)、B=M−A、及びI=切り捨て(log2(N))の値を計算するステップと、
(b)第1のビット群(B_bits)を、変換されるアドレスの前記B個の最上位ビット(MSB)として定義するステップと、
(c)第2のビット群(A_bits)を、変換されるアドレスの前記A個の最下位ビット(LSB)として定義するステップと、
(d)第3のビット群(I_bits)を、A_bitsのlog2(L)個のLSBを最初に取り除いた後のA_bitsの前記I個のLSBとして定義するステップと、
(e)調整されない和(SUM)と調整された和(ADJ_SUM)を、以下の定義、すなわち、
SUM=B_bits+I_bits、及び
ADJ_SUM=B_bits+I_bits−N
に従って計算するステップと、
(f)変換されるアドレスに対応するブロック番号を定義するステップであって、SUMの値又はADJ_SUMの値を前記ブロック番号として選択することからなる、ステップと、
(g)前記ブロック番号に従ってメモリをアドレスするステップ
を含む、方法。 - ブロック番号を定義する前記ステップが、ADJ_SUMがゼロ未満である場合にはSUMの値をブロック番号として選択し、ADJ_SUMがゼロ以上である場合には、ADJ_SUMの値をブロック番号として選択することからなる請求項1の方法。
- インターリーブされた複数の群が存在する場合に、前記ステップ(a)〜(d)を、インターリーブされた各々の群について実施するステップをさらに含む、請求項1または2の方法。
- 各群が番号GSによって特定される複数の群に、前記メモリブロックを割り当てるステップと、
調整されない和を計算する前記ステップで計算された和から、前記番号GSを減算するステップであって、これによって、これらの和が、SUM=B_bits+I_bits−GS、及びADJ_SUM=B_bits+I_bits−(N+GS)としてさらに定義される、ステップと、
ブロック番号を定義する前記ステップで定義された前記ブロック番号によって表されるブロック内のメモリ位置に対応するオフセットアドレスを定義するステップであって、該オフセットがA_bitsの値によって定義される、ステップと、
前記ブロック番号に従ってメモリをアドレスするステップ
とからさらになる請求項1または3の方法であって、
ブロック番号を定義する前記ステップが、ADJ_SUMがゼロ未満である場合には、SUMの値をブロック番号として選択し、ADJ_SUMがゼロ以上である場合には、ADJ_SUMの値をブロック番号として選択することからなる、方法。 - 変換されたM(Mは正の整数)ビットのデータアドレスを使用して、サイズS(Sは正の整数かつ2の累乗)の複数のN(Nは正の整数)個のメモリブロックをインターリーブする方法であって、該メモリブロックのラインのサイズがL(Lは正の整数かつ2の累乗)であり、
A=log2(S)、B=M−A、及びI=切り捨て(log2(N))の値を計算するステップと、
変換されるアドレスの第1のビット群(B_bits)を特定するステップであって、B_bitsは、変換されるアドレスの前記B個の最上位ビット(MSB)である、ステップと、
変換されるアドレスの第2のビット群(A_bits)を特定するステップであって、A_bitsは、変換されるアドレスの前記A個の最下位ビット(LSB)である、ステップと、
変換されるアドレスに対応するインターリーブインデックスを定義する第3のビット群(I_bits)を特定するステップであって、I_bitsは、第2のビット群(A_bits)のlog2(L)個の最下位ビットを最初に取り除いた後の前記A_bitsの前記I個の最下位ビットである、ステップと、
各群が番号GSによって特定される複数の群に、前記メモリブロックを割り当てるステップと、
調整されない和(SUM)と調整された和(ADJ_SUM)を、以下の定義、すなわち、
SUM=B_bits+I_bits−GS、及び
ADJ_SUM=B_bits+I_bits−(N+GS)
に従って計算するステップと、
変換されるアドレスに対応するブロック番号を定義するステップであって、SUMの値又はADJ_SUMの値を前記ブロック番号として選択することからなる、ステップと、
前記ブロック番号に従ってメモリをアドレスするステップ
を含む、方法。 - (a)コンピュータと、
(b)前記コンピュータに結合され、及びサイズSのN個のメモリブロックからなるメモリ手段であって(Sは正の整数かつ2の累乗であり、Nは正の整数)、各記憶位置が関連するM(Mは正の整数)ビットのアドレスによって特定可能である、関連する記憶位置内のデータ値のリストを記憶するためのメモリ手段と、
(c)インターリーブ方式で、前記データ値を前記メモリ手段から読み出し、また、前記データ値を前記メモリ手段に書き込むためのアドレス手段であって、
(i)A=log2(S)、B=M−A、及びI=切り捨て(log2(N))の値を計算するための手段と、
(ii)変換されるアドレスの第1のビット群(B_bits)を特定するための手段であって、B_bitsは、変換されるアドレスの前記B個の最上位ビット(MSB)である、手段と、
(iii)変換されるアドレスの第2のビット群(A_bits)を特定する手段であって、A_bitsは、変換されるアドレスの前記A個の最下位ビット(LSB)である、手段と、
(iv)変換されるアドレスに対応するインターリーブインデックスを定義する第3のビット群(I_bits)を特定するための手段であって、I_bitsは、第2のビット群(A_bits)のlog2(L)個の最下位ビットを最初に取り除いた後の前記A_bitsの前記I個の最下位ビットである、手段と、
(v)調整されない和(SUM)と調整された和(ADJ_SUM)を、以下の定義、すなわち、
SUM=B_bits+I_bits、及び
ADJ_SUM=B_bits+I_bits−N
に従って計算するための手段と、
(vi)変換されるアドレスに対応するブロック番号を定義するための手段であって、ADJ_SUMがゼロ未満である場合には、SUMの値をブロック番号として選択し、ADJ_SUMがゼロ以上である場合には、ADJ_SUMの値をブロック番号として選択するための手段とから構成される手段
とからなるアドレス手段と、
(d)前記メモリ手段を、各群が番号GSによって特定される複数の群に分割するための手段と、
(e)調整されない和と調整された和を計算するための前記手段によって計算された和から、各群を特定する前記番号GSを減算するための手段
とからなるディジタルシステム。 - 前記第2のビット群(A_bits)によって、変換されるアドレスに対応する特定のメモリブロック内のオフセットが定義される、請求項6のディジタルシステム。
- コンピュータと、
前記コンピュータに結合され、及びサイズSのN個のメモリブロックからなるメモリ手段であって(Sは正の整数かつ2の累乗であり、Nは正の整数)、各記憶位置が関連するM(Mは正の整数)ビットのアドレスによって特定可能である、関連する記憶位置内のデータ値のリストを記憶するためのメモリ手段と、
インターリーブ方式で、前記データ値を前記メモリ手段から読み出し、また、前記データ値を前記メモリ手段に書き込むためのアドレス手段であって、
変換されるアドレスの第1のビット群(B_bits)を特定するための手段
と、
変換されるアドレスに対応するインターリーブインデックスを定義する第2のビット群(I_bits)を特定するための手段と、
調整されない和(SUM)と調整された和(ADJ_SUM)を、以下の定義、すなわち、
SUM=B_bits+I_bits、及び
ADJ_SUM=B_bits+I_bits−N
に従って計算するための手段
とからなるアドレス手段と、
変換されるアドレスに対応するブロック番号を定義するための手段であって、SUMの値又はADJ_SUMの値を前記ブロック番号として選択することからなる、手段と、
A=log2(S)、B=M−A、及びI=切り捨て(log2(N))の値を計算するための手段と、
B_bitsを、変換されるアドレスの前記B個の最上位ビット(MSB)として定義するための手段と、
A_bitsを、変換されるアドレスの前記A個の最下位ビット(LSB)として定義するための手段と、
I_bitsを、A_bitsのlog2(L)個のLSBを最初に取り除いた後のA_bitsの前記I個のLSBとして定義するための手段であって、Lは、前記メモリブロック内のラインの数であって、正の整数かつ2の累乗である、手段
とからなるディジタルシステム。 - (a)コンピュータと、
(b)前記コンピュータに結合され、及びサイズSのN個のメモリブロックからなるメモリ手段であって(Sは正の整数かつ2の累乗であり、Nは正の整数)、各記憶位置が関連するM(Mは正の整数)ビットのアドレスによって特定可能である、関連する記憶位置内のデータ値のリストを記憶するためのメモリ手段と、
(c)インターリーブ方式で、前記データ値を前記メモリ手段から読み出し、また、前記データ値を前記メモリ手段に書き込むためのアドレス手段であって、
(i)第1のビット群(B_bits)を特定するための手段であって、A=log2(S)、B=M−A、及びI=切り捨て(log2(N))の値を計算するための手段、及び変換されるアドレスの前記B個の最上位ビット(MSB)としてB_bitsを定義するための手段とからなる手段と、
(ii)変換されるアドレスに対応するインターリーブインデックスを定義する第2のビット群(I_bits)を特定するための手段であって、変換されるアドレスの前記A個のLSB(A_bits)を特定するための手段、及び、Lが前記メモリブロック内のラインの数であって、正の整数かつ2の累乗である場合において、I_bitsを、A_bitsのlog2(L)個の最下位ビット(LSB)を最初に取り除いた後のA_bitsの前記I個の最下位ビットとして定義するための手段とからなる手段と、
(iii)前記メモリ手段を、各群が番号GSによって特定される複数の群に分割するための手段と
(iv)調整されない和(SUM)と調整された和(ADJ_SUM)を、以下の定義、すなわち、
SUM=B_bits+I_bits−GS、及び
ADJ_SUM=B_bits+I_bits−(GS+N)
に従って計算するための和手段と、
(v)変換されるアドレスに対応するブロック番号を定義するための手段であって、ADJ_SUMがゼロ未満である場合には、SUMの値をブロック番号として選択し、ADJ_SUMがゼロ以上である場合には、ADJ_SUMの値をブロック番号として選択することからなる手段
とから構成されるアドレス手段とからなるディジタルシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/679,868 US5293607A (en) | 1991-04-03 | 1991-04-03 | Flexible N-way memory interleaving |
US679868 | 1991-04-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05113930A JPH05113930A (ja) | 1993-05-07 |
JP3599352B2 true JP3599352B2 (ja) | 2004-12-08 |
Family
ID=24728701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8215592A Expired - Fee Related JP3599352B2 (ja) | 1991-04-03 | 1992-04-03 | フレキシブルなn−ウェイ・メモリ・インターリーブ方式 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5293607A (ja) |
EP (1) | EP0507577B1 (ja) |
JP (1) | JP3599352B2 (ja) |
KR (1) | KR920020321A (ja) |
DE (1) | DE69221356T2 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644732A (en) * | 1990-07-13 | 1997-07-01 | Sun Microsystems, Inc. | Method and apparatus for assigning addresses to a computer system's three dimensional packing arrangement |
US5572692A (en) * | 1991-12-24 | 1996-11-05 | Intel Corporation | Memory configuration decoding system having automatic row base address generation mechanism for variable memory devices with row access interleaving |
JPH06139182A (ja) * | 1992-10-27 | 1994-05-20 | Sony Corp | 情報処理装置、拡張基板、および拡張筐体システム |
CA2116985C (en) * | 1993-03-11 | 1999-09-21 | Cynthia J. Burns | Memory system |
US5530837A (en) * | 1994-03-28 | 1996-06-25 | Hewlett-Packard Co. | Methods and apparatus for interleaving memory transactions into an arbitrary number of banks |
US5765182A (en) * | 1995-04-13 | 1998-06-09 | Lsi Logic Corporation | Interleaving memory on separate boards |
US5745118A (en) * | 1995-06-06 | 1998-04-28 | Hewlett-Packard Company | 3D bypass for download of textures |
DE69615278T2 (de) * | 1995-06-06 | 2002-06-27 | Hewlett Packard Co | SDRAM-Datenzuweisungsanordnung und -verfahren |
US5778412A (en) * | 1995-09-29 | 1998-07-07 | Intel Corporation | Method and apparatus for interfacing a data bus to a plurality of memory devices |
US5924111A (en) * | 1995-10-17 | 1999-07-13 | Huang; Chu-Kai | Method and system for interleaving data in multiple memory bank partitions |
US5761732A (en) * | 1996-06-28 | 1998-06-02 | Intel Corporation | Interleaving for memory cards |
US5960462A (en) | 1996-09-26 | 1999-09-28 | Intel Corporation | Method and apparatus for analyzing a main memory configuration to program a memory controller |
EP0931290A1 (en) * | 1997-03-21 | 1999-07-28 | International Business Machines Corporation | Address mapping for system memory |
KR100346170B1 (ko) * | 1998-12-21 | 2002-11-30 | 삼성전자 주식회사 | 통신시스템의인터리빙/디인터리빙장치및방법 |
KR100350459B1 (ko) * | 1998-12-26 | 2002-12-26 | 삼성전자 주식회사 | 통신시스템의인터리빙/디인터리빙장치및방법 |
JP2000244335A (ja) * | 1999-02-19 | 2000-09-08 | Fujitsu Ltd | ビットインタリーブ回路及びビットデインタリーブ回路 |
US6233662B1 (en) | 1999-04-26 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for interleaving memory across computer memory banks |
US6775800B2 (en) * | 2000-01-03 | 2004-08-10 | Icoding Technology, Inc. | System and method for high speed processing of turbo codes |
US7302621B2 (en) * | 2000-01-03 | 2007-11-27 | Icoding Technology, Inc. | High spread highly randomized generatable interleavers |
US6480943B1 (en) | 2000-04-29 | 2002-11-12 | Hewlett-Packard Company | Memory address interleaving and offset bits for cell interleaving of memory |
US6807602B1 (en) * | 2000-10-30 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | System and method for mapping bus addresses to memory locations utilizing access keys and checksums |
US6874070B2 (en) | 2002-02-22 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | System and method for memory interleaving using cell map with entry grouping for higher-way interleaving |
US6807603B2 (en) | 2002-02-22 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | System and method for input/output module virtualization and memory interleaving using cell map |
US7103728B2 (en) * | 2002-07-23 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | System and method for memory migration in distributed-memory multi-processor systems |
US6987470B2 (en) * | 2003-11-21 | 2006-01-17 | Qualcomm Incorporated | Method to efficiently generate the row and column index for half rate interleaver in GSM |
JP2006018489A (ja) * | 2004-06-30 | 2006-01-19 | Hitachi Ltd | 複数ノード間のメモリインターリーブシステム |
US7779198B2 (en) * | 2004-11-23 | 2010-08-17 | Efficient Memory Technology | Method and apparatus of multiple abbreviations of interleaved addressing of paged memories |
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 |
US8560795B2 (en) * | 2005-06-30 | 2013-10-15 | Imec | Memory arrangement for multi-processor systems including a memory queue |
ATE520086T1 (de) * | 2005-06-30 | 2011-08-15 | Imec | Speicheranordnung für mehrprozessorsysteme |
US20070022261A1 (en) * | 2005-07-19 | 2007-01-25 | Gateway Inc. | Method of interleaving asymmetric memory arrays |
US8464009B2 (en) * | 2008-06-04 | 2013-06-11 | Oracle America, Inc. | Method for memory interleave support with a ceiling mask |
US8886898B2 (en) * | 2009-08-19 | 2014-11-11 | Oracle America, Inc. | Efficient interleaving between a non-power-of-two number of entities |
US9323662B2 (en) * | 2012-12-31 | 2016-04-26 | SanDisk Technologies, Inc. | Flash memory using virtual physical addresses |
US10491667B1 (en) | 2015-03-16 | 2019-11-26 | Amazon Technologies, Inc. | Customized memory modules in multi-tenant service provider systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3980874A (en) * | 1975-05-09 | 1976-09-14 | Burroughs Corporation | Binary to modulo M translation |
US4189767A (en) * | 1978-06-05 | 1980-02-19 | Bell Telephone Laboratories, Incorporated | Accessing arrangement for interleaved modular memories |
US4254463A (en) * | 1978-12-14 | 1981-03-03 | Rockwell International Corporation | Data processing system with address translation |
US4584562A (en) * | 1984-09-24 | 1986-04-22 | Gte Communication Systems Corporation | Method of residue to analog conversion |
US4598266A (en) * | 1984-09-24 | 1986-07-01 | Gte Communications Systems Corporation | Modulo adder |
US4722067A (en) * | 1985-03-25 | 1988-01-26 | Motorola, Inc. | Method and apparatus for implementing modulo arithmetic calculations |
US4949293A (en) * | 1987-09-25 | 1990-08-14 | Kabushiki Kaisha Toshiba | Method and apparatus for computing residue with respect to arbitrary modulus |
US5111389A (en) * | 1987-10-29 | 1992-05-05 | International Business Machines Corporation | Aperiodic mapping system using power-of-two stride access to interleaved devices |
GB2217882B (en) * | 1988-04-29 | 1992-06-10 | Philips Electronic Associated | Arithmetic apparatus |
US5341486A (en) * | 1988-10-27 | 1994-08-23 | Unisys Corporation | Automatically variable memory interleaving system |
US5119486A (en) * | 1989-01-17 | 1992-06-02 | Prime Computer | Memory board selection method and apparatus |
-
1991
- 1991-04-03 US US07/679,868 patent/US5293607A/en not_active Expired - Lifetime
-
1992
- 1992-04-02 KR KR1019920005525A patent/KR920020321A/ko not_active Application Discontinuation
- 1992-04-02 EP EP92302895A patent/EP0507577B1/en not_active Expired - Lifetime
- 1992-04-02 DE DE69221356T patent/DE69221356T2/de not_active Expired - Lifetime
- 1992-04-03 JP JP8215592A patent/JP3599352B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69221356D1 (de) | 1997-09-11 |
KR920020321A (ko) | 1992-11-21 |
EP0507577A1 (en) | 1992-10-07 |
DE69221356T2 (de) | 1997-11-20 |
EP0507577B1 (en) | 1997-08-06 |
US5293607A (en) | 1994-03-08 |
JPH05113930A (ja) | 1993-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3599352B2 (ja) | フレキシブルなn−ウェイ・メモリ・インターリーブ方式 | |
US6381668B1 (en) | Address mapping for system memory | |
KR910007026B1 (ko) | 벡터 프로세서내의 메모리를 정폭 억세스시키는 장치 및 방법 | |
US6430672B1 (en) | Method for performing address mapping using two lookup tables | |
EP0503770A1 (en) | Interleaved multiprocessor memory system | |
US6721869B1 (en) | Method for deriving a word address and byte offset information | |
JP2010529545A (ja) | メモリ割り当ての機構 | |
EP0075745B1 (en) | Method and apparatus for division | |
EP0124799B1 (en) | Memory access arrangement in a data processing system | |
US6684267B2 (en) | Direct memory access controller, and direct memory access control method | |
CN109710309B (zh) | 减少存储体冲突的方法 | |
KR100474357B1 (ko) | 다단계 분할을 이용한 기억소자 할당방법 | |
CN111381808B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
US7185041B1 (en) | Circuit and method for high-speed execution of modulo division | |
EP1481319B1 (en) | Method and apparatus for parallel access to multiple memory modules | |
CN111381905B (zh) | 一种程序处理方法、装置及设备 | |
US5506747A (en) | Provision of FIFO buffer in RAM | |
CN1071771A (zh) | 存储控制器与数据处理系统 | |
US6981122B2 (en) | Method and system for providing a contiguous memory address space | |
US6647483B1 (en) | Address translation circuit for processors utilizing a single code image | |
US20030079105A1 (en) | Single cycle linear address calculation for relative branch addressing | |
KR100834893B1 (ko) | 기억 장치 및 기억 장치의 작동 방법 | |
US7779227B2 (en) | Memory management apparatus and method for optical storage system | |
JP3613466B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
US5673216A (en) | Process and system for adding or subtracting symbols in any base without converting to a common base |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040106 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040329 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040531 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040804 |
|
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: 20040824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040914 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080924 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090924 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100924 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |