JP5089842B2 - マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法 - Google Patents

マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法 Download PDF

Info

Publication number
JP5089842B2
JP5089842B2 JP2001549196A JP2001549196A JP5089842B2 JP 5089842 B2 JP5089842 B2 JP 5089842B2 JP 2001549196 A JP2001549196 A JP 2001549196A JP 2001549196 A JP2001549196 A JP 2001549196A JP 5089842 B2 JP5089842 B2 JP 5089842B2
Authority
JP
Japan
Prior art keywords
memory
address
memory device
bank
value
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
Application number
JP2001549196A
Other languages
English (en)
Other versions
JP2003520368A5 (ja
JP2003520368A (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 JP2003520368A publication Critical patent/JP2003520368A/ja
Publication of JP2003520368A5 publication Critical patent/JP2003520368A5/ja
Application granted granted Critical
Publication of JP5089842B2 publication Critical patent/JP5089842B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【0001】
(発明の属する技術分野)
本発明は、一般的にはメモリアドレス指定システム及び方法に、厳密には、任意の数のバンクを有するマルチバンクメモリへの高性能アクセスを提供するメモリアドレス指定システム及び方法に関する。
【0002】
(発明の背景)
従来の最高の性能を達成するためのメモリ設計では、メモリ空間は、通常は2の累乗の数の、普通はバンクと呼ばれる個々の構成要素で構成されている。メモリ空間は、バンクの間に「インタリーブ」されており、これは、連続するアドレスが通常は異なるバンクにマップされていることを意味する。この場合のバンク数は、単にアドレス内の最低のビットAを見れば求めることができ、即ち、2bをバンクの数Nとして、バンク=A mod 2b となる。このアプローチは、512バンクまでのメモリを使う高性能システムで使用されてきた。メモリバンクの数が増えると、一般的にメモリのスループットが、従ってメモリシステムから演算ユニットへの帯域幅が増える。このスループットは、従来からコンピュータオペレーションの最大の弱点となっている。
【0003】
このメモリ表現に関わる既知の問題は、偶数であるか又は2の高い累乗で割り切れるストライドで、アレイ又は他のデータ構造にアクセスする際に被る性能低下にある。例えば、16バンクシステムで、ストライド16のアクセスは、16バンクの内1つだけにしかアクセスされないので最低の性能となる。多くの実際のアプリケーションでは、アレイアクセスは、2の高い累乗で割り切れるストライドを有している。例えば、m>=bとして、2mx2mのサイズのマトリクスでは、列アクセスは、全ての列が同じメモリバンク内にあるため、ピーク性能の1/Nしか発揮されない。同様な性能低下は、他のタイプの明示的アクセスのパターンでも生じる(即ち、明示的に定義されたアクセスのシーケンスで、これは通常、正規のアクセスシーケンスと呼ばれ、例えば、上記マトリクスにおける対角線アクセスがそうである)。
【0004】
このメモリ表現に関わるもう1つの問題はフォルトトレランスの欠如であり、特に、単一チップ内に複数のメモリバンクを有するメモリデバイスの場合にそうである。そのような単一チップデバイスでは、1つのバンクが駄目(即ち、少なくとも1つの使用できないメモリ位置を有するバンク)になると、通常、メモリデバイス全体が廃棄されるか、使用されているバンクの数が次に低い2の累乗にカットされるか、の何れかになる。この問題は、新しいメモリパーツに関する生産高が非常に低くなり、そのようなデバイスを製造するプラントの能力の一部が販売に供し得ない製品を作るのに向けられることになりかねないので、非常に重大である。この問題は、埋め込みメモリユニットを有する新しい世代のマルチプロセッサチップでは一層深刻になる。そのようなチップは、例えば、2bのマイクロプロセッサと2bのメモリユニット(例えば、各ユニット当たり1から8MビットのDRAMの場合)を備え、それが互いに、理論的には2bx2b一杯のクロスバースイッチングネットワーク上で通信することになる。そのようなチップのメモリは、共用メモリモデルでは、2mを各個々のメモリユニットのサイズとすれば、2b・2mメモリ位置のフラットアドレス空間として取り扱われる。埋め込みメモリチップは、通常のメモリユニットよりも遙かに複雑なので、そのようなチップを廃棄するかグレードを下げる際のコストは、通常のメモリユニットをそうする場合よりもそれ相応に高くつく。
【0005】
これらの問題を解決しようとする試みは、まだ完全には成功していない。
例えば、RAMBUS及び他の類似の技術は、このプロセッサ−メモリ間のボトルネックを、ノンバンクメモリへの高速メモリオペレーションを提供するか、又は単にマルチバンクメモリをインタリーブすることによって軽減しようと試みている。しかし、基本的に、連続するメモリ要求に対して改善が見られるだけである。更に、演算ユニットの速度が劇的に高速化するにつれ、ボトルネックは取り残されたままになっている。
【0006】
特にバンク矛盾問題に取り組む他の技法が、P.Pバンドニック及びD.J.クックによる、1971年IEEEトランスコンピュータ20、1566−69頁「パラレルメモリの編成と使用」に記載されている。バンドニック他は、pを素数として、pバンクのメモリを使用するメモリの実現を提案している。この場合、直線アレイに対するバンク矛盾は、pで割り切れるストライドに対してだけ生じ得る。議論の余地はあるが、これで現実にはバンク矛盾が起こり難くなる。しかし、デコーディングロジックが相当増加することになり、特に、全ての整数をpで除する回路が必要となる。要求されるアドレスAに対し、剰余A mod p がアドレスのバンクを与え、一方、商A/p がバンク内の物理アドレスを与える。初期のBSP(Burroughs Scientific Processor)は、p=17 とするこのタイプのメモリシステムを有していた。デコーディングロジックが増えるのに加え、この種の解法は、バンクの数を素数に限るのが大きな制約となり、例えば、プレースメント、ルーチング、インタフェース等では、非素数、特に2の累乗のバンクが好ましい選択肢であるので、不適切である。
【0007】
バンク矛盾問題に対する別の救済策は、疑似ランダム数発生器を用いて、論理アドレスAと、対応するバンクとの間のマッピングを生成することである。そのようなシステムの1つが、例えば、R.ラガファン、J.P.ヘイによる1990年スーパーコンピューティング会報49−58頁「ランダムにインタリーブされたメモリについて」に述べられている。疑似ランダム発生器は、順序付けられたシーケンスのインプット値に対し、ランダムなシーケンスのアウトプット値を生成するが、所与のインプット値に対して常に同じアウトプット値を作り出す。この技法の問題点の1つは、ストライド1のアクセスに対しバンク矛盾を生じることである。ストライド1のアクセスは、大部分のコンピュータアプリケーションにおいて最も普通のアクセスパターン(例えば、命令のストリームを読む際に生じる)であり、従って、そのようなアクセスに対してメモリ性能が大幅に低下するのは受け入れられない。一般的な問題は、疑似ランダム又は真のランダムマッピングは、平均すると、Nが大きくても、アクセスの1/e%(eは自然対数の底で、即ち36.78...%となる)以上のバンク矛盾を生じることである。これは、実質的にピーク性能を低下させることになる。加えて、ある既知の疑似ランダム数発生器は全バンクに亘ってアドレス空間を均等にマップせず、即ち、あるバンクには他のバンクよりも多くのアドレスがマップされることになり、これが今度はバンク矛盾を増し性能を低下させることになる。
【0008】
この様に、単純なアドレス翻訳スキーム(標準的インタリーブスキーム、又はバンドニック/クック翻訳から派生した種々のスキーム)は、固定ストライドパターンのシーケンスに対し単純な周期性のバンク番号のシーケンスを作り出し、従って、多くのストライドにおいて繰り返すバンク矛盾を引き起こすが、一般的なアドレススクランブルマッピングは、任意の正確なアクセスシーケンスに対してランダムなバンク番号のシーケンスを作り出す。これらのバンク番号のシーケンスは、そこには対応する物理アドレスがあるが、上記のように、統計的に相当なバンク矛盾を(N個のアドレスのシーケンス内に)有しており、十分にランダム化されており、スクランブルが掛けられるアドレス空間のサイズよりも小さな周期は有していない。
【0009】
従って、ストライド1のアクセスパターンや、偶数ストライドパターン、2の累乗ストライドパターンのような他の特に重要な明示的アクセスパターン、又は対角線及びその他の関心対象アクセスパターンに対して、一般的に、矛盾のないアクセスを提供する、さして複雑でなくフォルトトレラントなスクランブル技法が渇望されている。
【0010】
(発明の概要)
従って、本発明の目的は、一般的に、ストライド1のアクセスパターンに対しては何らのバンク矛盾を呈せず、他の関心対象アクセスパターンに対してもしばしばバンク矛盾を呈することのない、マルチバンクメモリアドレスシステム及び方法を提供することである。ある実施形態では、複数のアドレス可能メモリ位置を備えた複数のN個のメモリバンクを有するメモリデバイスが提供されている。各メモリ位置は、論理アドレスと、対応する物理アドレスとを有しており、物理アドレスは、メモリバンク番号と、メモリバンク内のローカルアドレスを備えている。メモリデバイスは、各論理アドレス毎に、対応する物理アドレスを引き出すアドレス翻訳ユニットを含む、アドレスマッピングシステムを備えている。ある好適な実施形態では、アドレス翻訳ユニットは、少なくとも1つの、論理アドレスの明示的アクセスシーケンス(例えば、シーケンス内の各論理アドレスが、ストライド値によってシーケンス内の別のアドレスから分離されている場合)に対して、対応する物理アドレスのシーケンス内の引き出された物理アドレスは、N+1より小さな周期(又は、アドレス空間のサイズよりも小さな周期でさえ)を有する繰り返しパターンを形成しないメモリバンク数を有し、平均して、対応する物理アドレスのシーケンスにおいて、ほぼN個のアドレス内でバンク番号を繰り返すことのないように作動する。
【0011】
アドレス翻訳ユニットによって実行されるマッピングを、ここでは「有限疑似クリスタルマッピング」と呼ぶ。この用語は、本発明の好適な実施形態による翻訳ユニットが、大抵のストライドに対して、殆ど周期的な(即ち、疑似クリスタル様の)バンクアクセスパターンを作り出す事に由来するものであり、例えば、選択されるバンクは、一般的には固定値の分だけ離されるが、時には違う値の分だけ離されることもある。説明のために例示するが、バンクに0から15の番号が付けられている16バンクメモリシステムにおける、所与のストライドに対する疑似クリスタルマッピングは、ある例では0,2,4,6,8,10,13,15,1,3,5,7,9,12,14...となっている。この例では、シーケンス内のバンク番号は、一般的には2だけ離されているが、所によっては他の数(10から13の間、9から12の間の3)だけ離されているところもある。特定の明示的アクセスパターンに対するある好適な疑似クリスタルマッピングは、各メモリバンクが、ほぼ同じ回数アクセスされるというようなものである。ある好適な実施形態では、不一致(ここでは、この用語は、所与のバンクアクセスの分布の、均一な分布からの偏差を意味する)が最小となる。このバンク当たりの不一致は、唯のQ(1)(オーダー1)である。
【0012】
疑似クリスタルマッピングは、ある実施形態では、アドレスaを以下の形式のモジュラー変換を使ってスクランブルすることによって実行される。
a−A=Λa mod 2K
ここに、Aはaに対応するスクランブルされたアドレスであり、2Kはアドレス空間(Kは、メモリ製造過程で決まり、下の例では、通常、ワード整列メモリに対して約21である)であり、Λは奇数値定数である。この例のバンク数はスクランブルされたアドレスAの最上位ビットから導き出される。
【0013】
このスキームにおける有限疑似クリスタルマッピングを得るため、Λは、2Kアドレス空間に亘って、関心対象の明示的アクセスパターン(種々の固定ストライド、又は対角線アクセスパターンを含む2次元又は多次元テーブルにおける線形のアクセスのシーケンス等)で生じるバンク数の均一な分布からの偏差を最小とするように選択される。
【0014】
適したΛの範囲は、種々の技法を使って狭めることができる。例えば、バンク数の均一な分布からの偏差を最小化することは、小数部{n・θ}の均一な分布からの偏差を最小とする問題と同じである。その結果として、二次無理数に似た乗数Λが良好な均一分布特性を与える。(例えば、H.Behnke, Zur Theorie der Diophantischen Approximation, I, Abh. Math Sem. Hamburg 3 (1924), pp. 261-318 参照。)1つの処方は、黄金比τ=(51/2−1)/2(約.6180)に触発され、Λを、M=<Kにおいて、τ・2Mに近い整数に設定することである。良好な実施形態を後に説明する。
【0015】
代わりに、適している可能性のあるΛの範囲は、Λ/2Kの形をした有理数に関する連分数展開アルゴリズムの最適化を通して狭めることもできる。例えば、Rock and Szusz, Continued Fractions, World Scientifica Publish -ing Co. Pte. Ltd.(1994) 参照。最適化アルゴリズムは、同時に2つの状態、即ち、a)M=<KにおけるΛ/2Kの連分数展開(a0,a1,a2,...)における最初の項aiが全て小さい(例えば、1又は2)と、b)Λの2値(又はブースエンコードされた2値)展開における非ゼロビットの数が、条件a)を満たす乗数の中で最小である、とが起こるように、適している可能性のある整数の乗数Λを見つけ出すように試みる。この非線形最適化は、スクランブルと、スクランブルの最小回路インプリメンテーションとの両方に必要な最良の乗数Λを提供する。Λの最終的な選択は、アドレス空間に亘る各種の明示的アクセスパターンに対するバンクアクセスの均一な分布からの偏差の最小化のみに基づいてい行われる。偏差は、全アドレス空間に亘る、種々のストライドに対するバンクアクセスパターン、又は他の明示的アクセスパターンの網羅的シミュレーションを通して計算される。適するΛは、全ての可能なΛの値(即ち、奇数、及び1=<Λ=<2kの中)に対する偏差の網羅的計算によって選択される。
【0016】
当業者には、各種組み合わせ回路、テーブルルックアップ、或いはモジュラー乗算ではなくアナログ解法でも、これ等を使って、低不一致マッピングを達成する同じ効果を有する有限疑似クリスタルマッピングを構築することができることを理解頂けよう。
【0017】
全てのバンクが無欠陥(N=2b)であれば、バンクとローカルアドレスはスクランブルアドレスAから、次のようにして引き出せる、即ち、Aの最上位のbビットがバンク番号であり、Aのビットの残りがバンク内のローカルアドレスである。
【0018】
しかし、1つ又は複数のバンクに欠陥がある場合、N<2bとして、アドレス空間はN・2mのメモリ位置に縮小される。この場合、有効範囲0...N・2m−1を有する論理アドレスaは、0...N−1の範囲の固有のバンク番号uと、0...2m−1の範囲のローカルアドレスlaとに翻訳する必要がある。翻訳を実行するハードウェアのロジックの複雑さは非常に重要なことである。
【0019】
これは、マルチプロセッサが複数のメモリユニットと同じチップ内で通信する埋め込み型ロジックを備えたマルチバンクメモリ部品では、特に重要である。チップ上に埋め込み型メモリを有するマルチプロセッサチップの一般的な構成は、互いにスイッチングネットワーク上で通信する、N=2bのマイクロプロセッサと、それぞれのサイズが2mのN=2bのメモリバンクユニット(例えば、それぞれ1から8MビットのDRAM)で構成される。そのようなスイッチングネットワークは、一杯で2bx2bのクロスバースイッチとなり得る。先に述べたように、このチップ内の全メモリは、共用メモリモデルでは、N・2mメモリ位置のフラットアドレス空間として取り扱われる。これらの翻訳ユニットは、部品内の全マイクロプロセッサに必要とされるので、アドレス翻訳ロジックをハードウェアに容易に実装できることは非常に重要である。実際の例として、我々はこれ以降、64のメモリバンクと64のマイクロプロセッサを有し、各メモリバンクが213のキャッシュライン(キャッシュライン当たり32バイトまで)を含んでいる、b=6のケースについて考える。このケースでは、アドレス空間は、無欠陥の場合、219のアドレス可能位置(いわゆるキャッシュライン)となる。チップ面積が比較的大きいので、普通は欠陥があり、良好なプロセッサの数Nは、32まで或いはそれ以下に下がることもある。これらの部品はメモリ翻訳ユニットだけが利用できる。上記の付加的スクランブル特性を備えた、オンザフライアドレス再マッピングユニットの構築は、広帯域幅フォルトトレラント大型メモリモジュールにとって、特に、埋め込み型メモリをマルチバンクブロックとして備えている大型のチップ上システム製品にとって非常に重要なアプリケーションである。
【0020】
本発明は、良好な固定ストライドアクセス(及び、他の明示的パターンのアクセス)を達成するためにスクランブル技法も使用する、メモリ翻訳(再マッピング)問題に対する幾つかの低コストの解法を提供する。これらの解法は、高性能を達成するために、一般的な有限疑似クリスタルマッピングの方法に基づいている。好適な実施形態では、この様な解法は(付加的低不一致特徴を備えた)モジュラー乗算を使用している。
【0021】
可能なインプリメンテーションの1つは、アドレス空間をN個のバンクに再分割し、同時にスクランブルを実行する新規の方法である。例えば(先のように)アドレス空間が2Kで、Nを任意の数としてN個のメモリユニット(バンク)がある場合、先ず以下のスクランブルマッピングが実行され、
a−A=Λa mod 2K
次に、このメモリ位置があるユニット番号u=A・N/2Kが、ローカルアドレスla=A−u・2K/Nと共に求められる。ここに、Nは短い定数であり、2K/Nは(長い)定数である。標準的スクランブルに加え、このアプローチは、短い(6ビット)数による唯2つの乗算と、加算/減算を必要とする。各種のモジュラー乗算(スクランブル及び翻訳)を1つのブロックに併合して全体の処理の速度を上げ、サイクルタイムT(〜2.5)ns内に完了できるようにするのが望ましい。
【0022】
上の例では、ユニット当たりのローカルサブバンクの数は、1(S=1)である。これは、後に詳細に述べる一般的方法の中の最も簡単なケースである。様々なバンクの数N及びサブバンクの数Sに対して作動し、これよりも相当に良好なスキームがあり、我々は、複雑さが最小で高性能である故に、それを推奨する。バンク番号uとローカルアドレスlaをスクランブルアドレスAから引き出すための、さして複雑ではない技法が、以下の本発明の実施形態の詳細な説明において提供される。
【0023】
図12から37に示す階層的設計構成図に使用している共通の機能ブロックを以下に列挙する。これらは当業者には既知の論理ブロックであり、1つ又はもっと多くの番号でパラメータ化されている。各ブロックのタイプ毎に、図12から37に、一例を挙げ説明している。
【0024】
ブロック名及び機能説明
1. Bits_N_K_L NビットバスA[N-1:0]を取り込み、サブバスA[L:K]だけを解放する。
2. AddN A[N-1:0], B[N-1:0]に関するNビット加算器
3. CSA キャリーセーブ(フル)加算器
4. CSA-N X[N-1:0],Y[N-1:0],Z[N-1:0]インで,S[N-1:0], A[N-1:0],C[N-1:0]アウトのN長アレイのCSA
5. DECNE(Nは任意の数)使用可能Eを有するNこのデコーダに関する [log2N]
6. GNDxN Nグラウンド(0)を返す;Q[N-1:0]=0
7. INS_N_M_L A[N-1:0](N個のインプット)を取り込み、それをボトムではLグラウンドで引き延ばし、トップにはM個のアウトプットに適合するだけのA[J:0]ビットを挿入し、N+L<Mであれば、結果Q[M-1:0]のトップにグラウンド(0)を加える。
8. N_K_M MビットのアウトプットQ[M-1:0]を有する結線接続された十進定数K
9. Pad_N_M Mビットのアウトプットを得るためにA[N-1:0]をM-Nグラウンド(0)で引き延ばす。
10.PDMuxN_M Muxをプリデコードする。Q[M-1:0]を出すために、N個の個別の選択線S[M-1:0]と、ベクトルバスA[0] [M-1:0],..., A[N-1][M-1:0]を取り込む。
11.Up_N_M A[N-1:0]を取り込み、そのボトムをM個の0で引き延ばす(Mだけ左にシフトする)。その結果、N+M長となる。
12.TrAddN キャリインCIとキャリアウトCOを備えたNビットの加算器。
13.SubN 長さNの減算ユニット。
14.CPM_N(チョップ積mux) デコードされたフォームの中でインプット0, B[N-1:0], B[N-1:0]左シフト(N-1ビットだけ左)そして(B[N-1:0])は対象外にしてこの順から選択。選択ラインはA[2:0]
15.ProdMux_N B[N-1:0]{0,1,2,3=-1}の単純な符号付積。又、トップ、N番目のビットにVCC(=1)を加算。
16.Recode 0,1,2,3,キャリイン(CI)を0,1,2,-1,キャリアウト(CO)としてRadix 4レコーディングに記録。
17.Recode_{6,8} レコードブロックを使って6又は8を逐次的にに記録。
【0025】
(発明を実施するための最良の形態)
1.2の累乗のバンクの実施例
バンクの数、Nが2の累乗(すなわち、N=2b)である場合、本発明の一つの実施例に従ったアドレス変換ユニットは、以下のステップを実行する:
(1) A=Λa mod 2Kに設定する。Aは、論理アドレスaに対応する、スクランブルされたアドレスであり、2Kは、アドレス空間であり(Kは、通常、1ワード・アラインド・メモリに対して、およそ21である)、およびΛは、奇数の定数である;および
(2) バンク番号を、Aの上からbビットに設定し、ローカル・アドレスをAの残りのビットに設定する。
【0026】
Λは、2Kアドレス空間に対して、関心のある明示的アクセス・パターン(様々な固定ストライドまたは対角アクセス・パターン等)において生じる、バンク番号の一様分布からの偏差を最小にするように選択される。Λの選択は、ユーザ要件に依存し、および本発明は、あらゆる特定の基準に制約されない。適切なΛは、例えば、直接コンピュータ・シミュレーションを介して、Λのすべての可能な値に関する偏差の包括的計算によって選択されることができ、および関心のある明示的1次元または多次元メモリ・アクセス・パターンの特定のクラスに関する、バンク・アクセスの一様分布からの偏差を最小にするΛを選択することによって選択される。さらに、Λの整数論的属性に基づいた解析技術は、一様分布からの最小の偏差の必要とされる属性を伴うΛのクラスを予め選択するために使用されることができる;そして、包括的シミュレーションのために必要とされる時間を減らす。
【0027】
係数2Kの選択が好まれるのは、当業者が理解するであろう通り、乗算Λa mod 2Kが、ハードウェアにおいて比較的簡単に実行されることができるからである。この構成は、その実装において、ほんの数ゲート遅延のみを必要とし、最大でも、1の追加パイプライン・ステージをメモリ・アクセスに加えるのみである。モジュラー乗算、mod、すなわち216は、16ビット固定点乗算器のチップ・エリアの半分だけを占める(すなわち、ゲートの半分だけを必要とする)。それが十分に迅速でもあるのは、乗数Λが前もってわかっており、(Wallace)乗算ツリーのステージの数を減らすために、コード化されたBoothでもよいからである。回路の複雑性は、ハードウェアにおいてΛの値を固定することによって、さらに減らすことができる。
【0028】
大変典型的なチップ上のマルチ・バンク・メモリ・サブシステムの場合における、準結晶アドレス・マッピング構造の特定的な例が後述される。この特定的な例において、チップ上に16ビットメモリ・バンクがあり、アクセスのストリームは、各メモリ・バンクの入力上のFIFOおよび出力上のFIFOによってバッファされる。前記バッファは、メモリ・アクセスの適切な順番のシーケンスを確かなものにする。バンク・コンフリクトの定義は、各メモリ・バンクのサイクル時間にのみ基づいている。現在の進化した技術を表しているこの例においては、システム・サイクル時間はT ns.(T〜2.5)であり、およびメモリの各バンクは、10T ns.(または次世代の技術では、8t ns.)のサイクル時間を有する。このように、アクセスのコンフリクト・フリーなパターンは、いくらか弛緩した状態である。バンク・コンフリクトは、この例においては、同じバンクが、10の連続したメモリ要求の中でアクセスされる場合にのみ生じる。逆に、10の連続したメモリ要求の間にバンク・コンフリクトが生じない場合、アクセスは、追加の遅延なく、およびシステムのピーク帯域幅で処理される。以下の説明は、正確に、このメモリ編成を前提としているが、本発明は、この編成に制限されず、および当業者は、特定の製造者が、異なる編成または異なるタイミング特性を有しうることを理解するであろう。
【0029】
この特定の例において、メモリにおける論理アドレスから物理アドレスの準ランダムまたはランダム・マッピングの使用は、メモリ・コンフリクトを生み出し、システムのピーク性能を大幅に低下させるであろう。ここで、最も重要なストライド1パターンのアクセスを含む、すべての明示的論理アドレス・アクセス・パターンは、不可避のバンク・コンフリクトを伴う、物理メモリへのランダム・アクセスへと変えられる。例えば、メモリ・バンクの入力および出力上の深度2のFIFOで、スループットはたった66%である。FIFOの深度を6に増やすと、スループットは96%に増えるが、平均遅延を3倍にする以上の犠牲がある。
【0030】
Λは、例えば、13の倍数ではないO(2M)までのサイズのすべてのストライドに関するメモリ・アクセスにおいて、コンフリクト・フリーなバンク・アクセス、そして最小の遅延を生成するように選択されてもよい。数13は、この属性を持つ最大の(よって最良の)数であるが、他の数、例えば11または他のより小さな素数が使用されうる。例えば、M=14である場合、スクランブル乗数(scrambling multiplier)Λ=3781は、13では割ることができない、350までのすべてのストライドに対して、100%のメモリ利用および最小遅延を供給する。
【0031】
この特定的な例は、ほとんどのストライドおよび任意の数のメモリ・バンク(2の累乗である数のバンクを含むが、それに制限されない)に対して、コンフリクト・フリーなバンク・アクセスを維持する一方で、他のアクセスのランダム化を供給する。このスクランブラーは、固定乗数(fixed multiplier)Λに対する最小の複雑性(そのサイズは入力/出力において線形であるにすぎない)を有し、それは、回路のゲートの数を減らすので、このアドレス構造の実際的な実装に関して重要である。また、固定ストライド・アレイに関するこのスクランブル構造におけるバンク・アクセスのパターンは、有限準結晶タイリング(finite quasi-crystal tilings)に似ている。メモリ変換ユニットのこの例は、ここに開示されたシステムの好ましい実施例のすべてにおけるアドレス・スクランブル構造に特徴的である。
【0032】
Λの選択における類似の最適化は、1より大きいストライドの論理アドレスの他のシーケンスに関するバンク・アクセスの一様分布およびメモリ・アクセスの、他の明示的1次元ならびに多次元パターンからの偏差を最小にするために使用されうる。他のそのような例において、Λは、ストライド1(連続)アレイにコンフリクト・フリーなバンク・アクセスを、89で割り切れないすべての(O(2M)までの)より高いストライドに100%帯域幅を供給するが、89以下のいくつかのストライドには、最小のものよりも高い遅延のバンク・アクセスを供給するように選択されてもよい。
【0033】
メモリ・バンク編成のこの特定的な例において、シミュレーションで決定される本発明のすべての性能は、単一のプロセッサへのメモリ・スループットの有効帯域幅を、ほぼ2倍にする。
【0034】
2.任意の数のバンクの実施例
しかしながら、一つ以上のバンクが欠損を有する場合、アドレス空間はN・2mメモリ・ロケーションに縮まり、N<2bである。この場合、有効範囲0...N・2m−1を有する論理アドレスaを、範囲0...N−1における独自のバンク番号uに、および範囲0...2m−1におけるローカル・アドレスlaに変換する必要がある。前記変換を実行するハードウェア・ロジックの複雑性は、アプリケーション(特に、前記アドレス変換ユニットが、マルチプロセッサ・システムにおける各処理装置と結合されなければならない場合)には大変決定的である。さらに、メモリ・バンク・サイズは、可変的でもよい。これは、典型的には、Nのバンクの各々を、Sのサブ・バンクへ、(NおよびSが両方とも可変的となるように)さらに小区分することによって達成される。メモリ・アドレス変換(およびスクランブル)ユニットは、Nの数のメモリ・バンクおよびSの数のサブ・バンクが、メモリ・システムにおいて利用可能な最大ものより小さい値か、またはそれと等しい値に(動的に)設定されうる時に稼動するように設計される。
【0035】
バンク番号uおよびローカル・アドレスlaを、この一般的状況におけるスクランブルされたアドレスAから引き出すための、低複雑性技術の特定的な例は、後述される。
【0036】
A.定義/基礎的前提
ここで使用されているように、“論理アドレス(logical address)”という用語は、メモリ・システムの外部にある装置が、メモリ内のアイテムを識別するために使用するアドレスを指す。“物理アドレス(physical address)”という用語は、物理的メモリ・ロケーションを指し、およびバンク内のバンク番号およびローカル・アドレスを含む。アドレス空間全体に対して、物理アドレスへの、論理アドレスの1対1マッピングがある。
【0037】
この実施例は、Nバンク・メモリとの関係で説明され、164であり、そこでは各バンクはS・210ワードを含み、18である。“ワード(word)”および“キャッシュ・ライン(cache line)”は、アドレス可能メモリ・ロケーションであり、任意の長さでよい。典型的なメモリ・システムにおいて、各アドレス可能メモリ・ロケーションは、予め決められた数のバイト、例えば32バイトを含む。この例において、アドレス空間は、最大で219有効ワードに対して、N・S・210である。すべての有効なメモリ・ロケーションは、従って、0N・S・210の範囲である、論理的19ビット・アドレス、Aで表されてもよい。各論理アドレスは、物理的メモリ・ロケーションに対応し、物理的メモリ・ロケーションは、バンク内のバンク番号およびローカル・アドレスによって識別される;すなわちA−(Bank,Local)で、0BankNであり、0LocalS・210である。本発明は、上述の構造を有するメモリに制限されない。例えば、本発明は、64より多いか、あるいは少ないバンク、または1バンクにつき8・210ワード以上または1バンクにつき1・210ワード以下を有するメモリに適用されてもよい。
【0038】
B.メモリ・アドレス・システムの説明
アドレス変換およびスクランブル・ユニットにおいて、好ましい実施例に従って、バンク番号Bank(=u)およびローカル物理アドレスLocal(=la)はいずれも、論理アドレスAの数ブロックのビットで、モジュラー乗算から決定され、そして対応する結果のビット範囲を選択する。この原理は、上述のようにN=2bの場合に大変単純に適用され、および任意の数Nのバンクおよび数Sのサブ・バンクには、小さな変形とともに適用される。モジュラー乗算は、ここでは、メモリ変換ユニットのための有限準結晶マッピングを構築するための手段として使用される(多くの可能な手段の一つであるか、この実施例においては好ましいものである)。
【0039】
図1は、本発明に従った、任意の数のバンクに関するメモリ・アドレス・システムのブロック図である。変換ユニット1は、この実施例において、19ビット論理アドレス、A、バンクの数、N、サブ・バンクの数、S、および乗数Λを受け取り、および論理アドレスAを、6ビット・バンク番号ならびに13ビット・ローカル・アドレスに変換し、それらは出力される。前記バンク番号は、メモリ・セクション2における非欠損(non-defective)バンク・テーブル6をアドレス指定するために使用され、それは同様に、前記バンク番号を非欠損バンクの物理的バンク番号にマッピングする。物理的バンク番号およびローカル・アドレスは、付属しているメモリ装置をアドレス指定するために使用される。非欠損バンク・テーブル6は、好ましくは書き込み可能メモリ(RAM等)である。他に、それは一回だけ、例えば付属のメモリ装置の初期テストの後にのみ設定される場合、読み取り専用メモリ(ROM)でもよい。一つの実施例において、非欠損バンク・テーブル6は、列番号が論理的バンク番号に対応する64×6ビット・テーブルであり、各列における前記テーブルの内容は、対応する物理的バンク番号の非欠損バンクを供給する。64より少ないバンクがある場合、テーブルにおけるすべての列が使用されるわけではない。メモリ・テーブル6は、この例においては最大64有効バンクがあるので、64×6ビット・メモリとして図示されている。当然、前記メモリ・システムがより多くのバンクを有する場合は、より大きなメモリが必要であり、前記メモリ・システムがより少ないバンクを有する場合は、より小さいものが必要とされる。
【0040】
N、SおよびΛの値は、メモリ・セクション2におけるレジスタ3、4および5にそれぞれ記憶される。他に、これらの値は、読み取り専用メモリまたはハードワイヤドに記憶されてもよい。
【0041】
好ましくは、レジスタ3,4、ならびに5および非欠損バンク・テーブル6は、それらが、例えば図2に記載されたスキャン・パス・ローディング(scan path loading)を用いて更新されることができるように、構成される。(注。異なる図面での同一の番号は、同一の構成要素を指す。)この技術を用いて、N、SおよびΛに関する値は、レジスタ3に入力される;レジスタ3に入力された各ビットは、レジスタ3,4、および5の内容を右にシフトし、3つすべてのレジスタが所望の値で埋められるまで、レジスタ3の最後のビットは、レジスタ4に、およびレジスタ4の最後のビットはレジスタ5にシフトされる。非欠損バンク・テーブル6の値は、同様に設定される。
【0042】
図3は、変換ユニット1のブロック図である。S−Box12は、Aの上から9ビット(すなわちA[18:10]、以下ではAtopと称される)をそのB入力において、およびそのS入力においてSを受信する。それは、Atop/Sの商、Q、および余り、Rを生み、この実施例において、Sは1乃至8を含む間の値である;すなわち、Atop=Q・S+Rである。QおよびRは、以下のように、有効に引き出されるかもしれない:Q=(L(S)・Atop+C(S))[upper:lower]で、L(S)およびC(S)は、Sのみに依存する定数であり、[upper:lower]は、ビット範囲を特定する。L(S)およびC(S)は、例えば、レジスタに記憶され、またはハードウェアに実装されてもよい。Rは、Atop−Q・S mod8である;すなわち、Atop−S・Qの一番下3ビットである。ビット範囲[15:10]に関する、L(S)およびC(S)の値、18は以下の通りである:
Case S=1→L=1024,C=0
Case S=2→L=512,C=0
Case S=3→L=342,C=0
Case S=4→L=256,C=0
Case S=5→L=205,C=0
Case S=6→L=171,C=0
Case S=7→L=146,C=128
Case S=8→L=128,C=0
他に、Qは、例えば、以下のように決定されてもよい:
Case S=1→Q(Atop・128)[12:7]orQ=Atop[5:0]
Case S=2→Q(Atop・64)[12:7]orQ=Atop[6:1]
Case S=3→Q(Atop・171)[14:9]
Case S=4→Q(Atop・32)[12:7]orQ=Atop[7:2]
Case S=7→Q(Atop・73+64)[14:9]
【0043】
図4は、QおよびRを決定するための、上述された処理を示す。ステップ20において、AtopおよびSの値が入力され、BはAtopに等しく設定される。ステップ21,22および23において、L(S)、Cおよび範囲[upper:lower]の値は、それぞれ、Sの値に基づいて決定される。ステップ24において、商Qは(B・L(S)+C)[upper:lower]に設定される。ステップ25において、Rは(B−S・Q)mod8に設定される。ステップ26において、QおよびRが出力される。
【0044】
図3に戻ると、M−Box14は、(a)Aの下10ビット(すなわち、A[9:0]、Abotと称される)をそのB入力で受信し、および乗数ΛをそのA入力において受信し、(b)D=(Abot・Λ)mod210を計算し、および(c)結果DをそのQ出力において出力する。この処理は、図5の、ステップ31,32および33に、それぞれ示されている。
【0045】
適したΛが、例えば、包括的計算によって、すなわちここに記述された変換ユニットにおける様々な値を用い、およびNならびにSの特定の値に関する最適なバンク・アクセス・パターンを作るΛ値を決定することによって、再度決定される。上述の通り、コンフリクトは、2つの論理アドレスが同じバンク番号にマッピングされる時に生じる。このように、コンフリクトは、少なくともN+1アクセスごとに生じるに違いない。再度、最適なバンク・アクセス・パターンは、バンク・コンフリクトが関心のある明示的アクセス・パターン、例えば、固定ストライド・パターンおよび線形2次元および多次元パターンのアクセス(マトリックスでのアクセスの対角パターン)に対して最小化されるパターンである。好ましい実施例において、ストライド1コンフリクトおよび関心のある他の明示的アクセス・パターン(固定ストライド・パターンを含む)に対するコンフリクトは、平均して、およそ、たったNアクセスごとに生じるであろう。様々なストライドに最も少ないバンク・コンフリクトを生成するΛが最良である。モジュラー乗算または後述される他の代替例の一つを採用するアドレス変換ユニットを含む、本明細書の教示に従って構築されるアドレス変換ユニットは、例えば、“本発明の背景”において上述されている擬似任意マッピングの欠点を回避する。
【0046】
低い範囲のストライド、特にストライド1に対して最適化された、Nの様々な値に関する好ましいΛが、下に示されている;同じ値は、許される範囲18におけるすべてのSに適用される:
N=33,Λ=33,83,99,165,231,247,249,353,415,459;
N=34,Λ=25,33,83,99,165,231,247,249,353,415,459;
N=35,Λ=25,33,75,83,99,119,165,231,247,249,353,415,459;
N=36,Λ=25,33,75,83,99,119,165,231,247,249,381,415;
N=37,Λ=25,33,75,83,99,119,165,231,249,381,415;
N=38,Λ=25,75,83,119,165,231,249,381,415;
N=39,Λ=25,75,83,119,231,249,305,381,415;
N=40,Λ=25,75,83,119,249,305,381;
N=41,Λ=25,75,83,119,209,249,305,381;
N=42,Λ=25,75,83,119,209,249,305,381;
N=43,Λ=25,75,83,87,119,209,249,305,381,425;
N=44,Λ=25,87,119,209,249,305,381,425;
N=45,Λ=25,87,119,209,305,381,425,483;
N=46,Λ=25,87,209,305,381,425,483;
N=47,Λ=25,87,209,305,381,425,483;
N=48,Λ=25,87,209,305,381,425,483;
N=49,Λ=109,209,305,381,425,483;
N=50,Λ=109,209,305,381,425,483;
N=51,Λ=109,209,243,305,425,483;
N=52,Λ=109,209,243,305,425,483;
N=53,Λ=109,209,235,243,305,397,483;
N=54,Λ=109,209,235,243,305,397,483;
N=55,Λ=109,209,235,243,319,397,483;
N=56,Λ=209,235,243,319,397,483;
N=57,Λ=107,235,243,319,483;
N=58,Λ=107,235,243,319,483;
N=59,Λ=107,235,243,319,483;
N=60,Λ=107,235,243,319,483;
N=61,Λ=107,235,243,319,483;
N=62,Λ=107,235,243,319;
N=63,Λ=107,235,243,375;
N=64,Λ=107,235,243,375.
【0047】
図3に戻ると、N−Box16は、S−Box12のQ出力をそのQ入力にで;M−Box14の出力をそのD入力で、およびバンクの数、NをそのN入力において受信する。図6に記載の通り、N−Box16は、バンク番号およびローカル・アドレスのより低いオーダーの10ビット、LA[9:0]を計算し、出力する。N−Box16から出力された、ローカル・アドレスのより低いオーダーの10ビットは、ローカル・アドレス全体を作るために、S−BoxのR出力からの高いオーダーの3ビット、LA[12:10]と結合される。
【0048】
N−Box16によって実行される処理は、図6に記載されている。ステップ41において、Q、DおよびNが入力される。ステップ42は、XをD・N+Qに設定する。ステップ43は、論理的バンク番号を、Xのビット[15:10]に設定する;すなわちLogical Bank=X[15:10]である。ステップ44は、ローカル・アドレスのビット[9:0]を、X[9:0]に設定する;すなわちLocal Address[9:0]=X[9:0]である。ステップ45は、論理的バンク番号およびローカル・アドレスの低いオーダーのビットを出力する。
【0049】
論理的バンク番号は、図1との関係で上述された通り、非欠損バンク・テーブル6に送信され、およびそれをアドレス指定するために使用される。
【0050】
以下に示されるのは、N=64、S=8、Λ=235(=28−24−22−20)および論理アドレスA=0×3DF29(または2進法で0111101111100101001)である、S−Box12、M−Box14およびN−Box16のオペレーションの例である。
【0051】
【表1】
Figure 0005089842
【0052】
この実施例は、2Kアドレス空間との関係で説明されており、K=19である。それは、例えば、アドレスの19ビット・サブセット(低オーダー19ビット等)を用いてバンク番号を引き出すことによって、K>19の場合に、任意のアドレス空間に対するさらなる変更なく、適用されることもできる。ローカル・アドレスは、例えば、19ビット・サブセットから引き出されたローカル・アドレスを、Kビット・アドレスの使用されていないビットに添付することによって、この場合は引き出されうる。
【0053】
他に、この実施例において説明されている技術は、以下の値の範囲のいずれかに対して簡単に適応することができる。すなわち:19より大きいか、小さいかであるK;64より大きいか、小さいかであるN;8より大きいか、小さいかであるSである。そのような変化において、パラメータΛの選択は、上述の準結晶マッピングの原理に従って実行される。アドレス変換ユニットの性能は、適切なΛの選択を伴う、適切に変更されたS−、M−、およびN−Boxから構築されており、Kが増えると(K>19の場合)、向上する。
【0054】
C.ハードウェア実装
図1乃至6に記載の実施例に対するハードウェア実装は、図12乃至37に記載された階層的な図で示されている。これらの図における低レベル・ブロックの実装は、例示的な目的で示されており、ライブラリおよび技術に特化した方法で、実施例が実行されるであろう。当業者は、特定の実装の範囲を理解し、およびライブラリならびに処理に特化した、適切なものを選択することができる。例えば、より新しい技術において、ワイヤの長さを最小にするためにバッファが使用される一方で、より古い技術においては、ゲート遅延が少ない、より長いワイヤが好まれるであろう。
【0055】
図12は、S−Box12のハードウェア実装を示す。Sub3 101は、ハードワイヤド定数114から(または、他にはレジスタから)、4ビット定数S[3:0]および値1を受け取り、Sから1を減じる。これは、インデックスとして使用するために、1乃至8を含む範囲からのSを、0乃至7を含む範囲に変換する。その結果は、対応するL(S)を選択するために、乗算器MUX8×8 104のS入力に、および対応するCの値ならびに範囲[upper:lower]を決定するために、デコーダDEC8 110に送信される。
【0056】
乗算器MUX8×8 104は、入力された値Sに基づいて、8の入力値A−Hのうちの一つを選択し、出力する。前記入力値(図4のL(S)に対応する)は、定数バンク102から受信される。図示された通り、定数バンク102は、それぞれ、0から7の位置において、以下のハード・コード化された定数を含む:128,64,171,32,205,171,146および128である。他に、バンク102における値は、レジスタに記憶されうる。
【0057】
デコーダDEC8 110も、ボックスSub3の出力を受信し、その出力の一つ、Q0−Q7を、受信された値に基づいて、HIGHに設定する(例えば、受信された値が0である場合、Q0がHIGHに設定され、受信された値が1である場合、Q1がHIGHに設定される。)
SBox_Mult105は、S=7である場合にC=128、そうでなければ0である、B・L(S)+Cを計算し、その結果を、そのQ出力において出力する。それは、乗算器104から、そのA入力においてL(S)を受信し、B[8:0]と定められた論理アドレスAの上から9ビットを、そのB入力において受信する。この実施例において、CはS=7に関してのみ非ゼロであり、その場合、1がデコーダDEC8 110のQ6出力から出力され、Sbox_Mult105のADD128入力に送信される。
【0058】
エレメント106,107ならびに108、PDMux3_6 109、およびORゲート111ならびに112は、Sbox_Mult105の出力から、ある範囲のビット(すなわち、[upper:lower])を選択する。前記範囲は、デコーダDEC8 110の出力に依存する。エレメント106は、ここではQがSbox_Mult105の出力である、ビットQ[12:7]を、PDMux3_6 109の入力Aに送る;エレメント107は、ビットQ[14:9]を、PDMux3_6 109の入力Bに送る;およびエレメント108は、ビットQ[15:10]を、PDMux3_6 109の入力Cに送る。PDMux3_6 109は、3の個別の選択ライン、S[2:0]を有する、予めでコード化された乗算器であり、そのうちの一つだけがロジック1であり、それは3の対応する入力A,BまたはCの一つを選択し、および出力する。この実施例において、入力A(範囲[12:7])は、S=1,2、または4である場合に選択され(すなわち、デコーダDEC8 110からORゲート111への出力Q0,Q1またはQ3は、ロジック1である)、入力B(範囲[14:9])は、S=3である場合に選択され(すなわち、デコーダDEC8 110からの出力Q2は、ロジック1である)、および入力C(範囲[15:10])は、S=5,6,7または8である場合に選択される(すなわち、デコーダDEC8 110からORゲート112への出力Q4,Q5,Q6またはQ7は、ロジック1である)。乗算器PDMux3_6 109の出力は、図1に記載のS−Box2のQ出力に対応する。
【0059】
SBox_BMSQ113は、(B−S・Q)mod23を計算する;特に、それはB[2:0]、S[2:0]、および乗算器109の出力の3の低いオーダーのビットを、それぞれ、そのB[2:0]、S[2:0]、およびQ[2:0]入力において受信し、およびその結果をそのR出力において出力する。前記計算は、その結果の3の低オーダー・ビットのみを決定するので、前記入力は、それぞれたった3ビットである(すなわち、それはmod 23である)。
【0060】
SBox_Mult105の実装は、図14に記載されている。リコード(recode)8 250は、効率的な乗算を容易にするために、8ビット入力でビットをリコードする。リコード250の実装は、図15に記載されており、4のリコード・ブロック300を具備する。リコード・ブロック300の実装は、図16に記載されている。ProdMux_9 251,252,253および254は、そのA入力が、それぞれ0,1,2または3のいずれであるかによって、0,1,2、または−1によって、その9ビットのB入力の単純符号の積(simple signed product)を計算し、および入力A=3である場合にのみ、Q[10]が1に設定され、Q[11]は常に1に設定される、11ビット出力、Qを生む。ProdMux_9は、図17に記載のProdMux_10に類似した方法で、実装されうる。エレメント256,257,258,259および260は、バス交換である。エレメント261および262は、一般的な形式の回路、Pad_N_Mである;各々は、長さMの出力を作るために、長さNのその入力を、それはM−Nグラウンド(0の)で満たす。Pad_N_Mの一例、Pad_6_10は、図18に記載されている;それは、10ビットの出力を生むために、4つの0でその6ビット入力を満たす。図18に記載のエレメントGncx4 340は、一般的な形式のエレメントGndxNであり、それはNのグラウンド(0の)を戻す;この場合、Gndx4 340は4のグラウンドを戻す。Up_14_2 263は、一般的な形式の回路、Up_N_Mである;それは、Nビットの入力を受信し、およびMの0でその末尾を満たし、N+Mの長さである結果を生む。Up_N_Mの一例、Up_8_2は、図19に記載されている。エレメント264,265,269,271および272は、一般的形式の回路、Ins_N_M_Lである;各々は、Nの長さの入力を取り、Lのグラウンドで末尾を満たし、M出力に適合するだけ多くの、その入力のビットを上に挿入し、およびN+L<Mである場合、結果の一番上にグラウンド(0)を加える。Ins_N_M_Lの一例、Ins_14_20_5は、図20に記載されている。CSA_16 266,270ならびに273、およびCSA_14 268は、一般的な形式の回路、CSA_Nである;各々は、Nの長さのアレイのけた上げ保存(フル)加算器である。CSA_N回路の例、CSA_10が図21に記載されており、連続したCSA回路の実装は、図22に記載されている。図22に記載の通り、CSAは、その3の入力、X,Y,Zの、合計とけた上げビット、それぞれSおよびCを計算する。XOR135は、
Figure 0005089842
が1である場合、合計Sを1に設定し、そうでなければ0に設定する(すなわち、X,YあるいはZの一つが1である場合、またはそれらすべてが1である場合、それはSを1に設定する)。ANDゲート136およびORゲート139は、X,YおよびZのうち、少なくとも二つが1である場合、けた上げCを1に設定し、そうでなければ0に設定する。最後に、図14において、Add16 274は、一般的な形式の回路、AddNであり、それはNビット加算器である。AddN回路の一例である、Add16は、図23に記載されている;それは四つのTrAdd4 299回路を含み、それらはTrAddN回路の例である。TrAddN 回路は、キャリー・イン(carry-in)(CI)入力およびキャリー・アウト(carry-out)(CO)出力を有するNビットの加算器である。TrAddN回路の一例、TrAdd4 290は、図24に記載されている。
【0061】
Sbox_BMSQ113の実装が、図13に示されている。ANDゲート200,201ならびに202、Up_2_1 203ならびにUp_1_2 204、CSA_3 205、Ins_3_3_1 206、ならびにAdd3 207は、Add3 207から出力される、S・Qを計算する。Sub3 208は、Add3 207の出力を取り、それをBから減じる(BはAtopの低いオーダーの3ビットである)。Up_2_1 203ならびにUp_1_2 204、CSA_3 205、Ins_3_3_1 206およびAdd3 207の回路は上述されている。Sub3 208は、一般的な形式の回路SubNであり、それはNビットの入力を減じ、Nビット出力を生む。SubN回路の一例、Sub3 208は、図25に記載されている。
【0062】
図25は、3ビット入力Bを3ビット入力Aから減じ、および3ビットの結果Qを出力する回路である。NOTゲート130は、Yで示されたBの補数を出力する。入力Aは、Xで示される。CSA131,132および133は、けた上げ保存(フル)加算器であり、その各々は、結果ビットをそのS出力において、およびけた上げビットをそのC出力において出力する。CSA131は、結果の低いオーダーのビット、Q[0]を計算し、CSA132は結果の中位のビット、Q[1]を計算し、およびCSA133は、結果の高いオーダーのビット、Q[2]を計算する。特に、CSA131は、X[0]、Y[0]、およびハードワイヤド1(すなわち、VCC)を合計し、その結果の最初のビット、Q[0]を、そのS出力において出力し、およびそのC出力においてはけた上げ値を出力する。CSA132は、X[1]、Y[1]およびCSA131から出力されたCを受信して、合計し、およびその結果の第二のビット、Q[1]を、そのS出力において出力し、およびけた上げ値をそのC出力において出力する。CSA133は、X[2]、Y[2]およびCSA133から出力されたCを受信し、合計し、およびその結果の第三のビット、Q[2]を、そのS出力において出力する。
【0063】
図12に記載のMUX8×8 104の実装は、図26乃至28に記載されている。図26に示される通り、乗算器104は、8のMUX8 150ユニットのハードウェア・アレイであり、8ビット入力値A−Hの各ビットに一つのユニットである。MUX8ユニット 150は、図27に記載されており、7のMUXユニット170乃至176を具備する。各MUXユニットは、そのS入力に基づいて、その入力の一つ、AまたはBを選択し、出力する。MUXユニット170乃至173は、Sの低いオーダーのビット(すなわち、S[0])に基づいて出力を選択する;MUXユニット174乃至175は、S[2]に基づいて、出力を選択する;およびMUXユニット176は、S[3]に基づいて出力を選択する。MUXユニットの実装は、図28に記載されており、そのオペレーションは、当業者には容易に明らかであろう。
【0064】
図12に記載の定数バンク102およびN_1_3 114は、一般的形式のハードワイヤド定数N_K_Mであり、Kは、定数の値であり、Mは、出力のビット数である。N_K_Mの一例、N_171_8は、図29に記載されている。それは、8ビット・バスで、値171(2進法で10101011)を出力する。
【0065】
図12に記載のエレメント106、107、および108は、一般的な形式のサブ・バス・ジャンクション、Bits_N_K_Lである;前記ジャンクションはNビット・バス、A[N−1:0]を取り込み、およびサブ・バスA[L:K]を出力する。Bits_N_K_Lの一例、Bits_16_9_14は、図30に記載されている。それは、16ビット入力バスのビット9乃至14を出力する。
【0066】
図12に記載のPDMux3_6 109は、一般的な形式の、予めコード化された乗算器、PDMuxN_Mである;そのような乗算器は、Nの個別の選択ラインを受け取り、およびMの幅を有するNのベクトル・バスの一つを出力する。PDMuxN_Mの一例である、PDMux3_10が、図31に記載されている。それは、3の10ビット幅入力、A,B,Cの一つを選択し、その選択された入力を出力する3の選択ラインSを有する。
【0067】
デコーダDEC8 110の実装は、図36に記載されている。DEC8 110は、その出力Q0−Q7の一つを、その3ビット入力Aで受信された値に基づいて、HIGHに設定する。それはDEC2E 281およびDEC4E 283ならびに285を含んでおり、それらは一般的形式の回路、DECNEの例である;各々は、log2N幅である入力を取り、その可能(enable)入力EもHIGHである場合には、そのN出力の一つをHIGHに設定する。DECNEの一例、DEC2Eは、図37に記載されている。
【0068】
図32は、M−Box14のハードウェア実装を示す。それは、8ビット値ΛをそのA入力において、およびアドレスAの低い10ビット(すなわち、A[9:0]、またはABot)をそのB入力において受信し、ABot・Λmod210を計算し、および10ビットの結果を出力する。CPM_10 301、CPM_8 302、CPM_6 303およびCPM_4 304を除いて、図32のすべてのコンポーネントは上述されており、その各々は、CPM_Nの形式の切断された積乗算器(product multiplexer)である。CPM_N乗算器は、入力A[2:0]からの、どの選択ラインがロジック1であるかによって、Nビット入力、B[N−1:0]を受信し、B[N−1:0](すなわち、1・B)、左に移動した1ビット、B[N−1:0](すなわち、2・B)、またはB[N−1:0]の補数(すなわち、−1・B)を出力する。CPM_Nの一例、CPM_10 301が図33に記載されている。この例において、入力は10ビット幅である。
【0069】
図34は、N−Box16のハードウェア実装を示す。それはM−Box14の出力をそのD入力で受信し、S−Box12のQ出力をそのQ入力において受信し、およびバンク数、NをそのN入力で受信する。D、QおよびN入力は、それぞれNbox_Mult350のB,CおよびA入力に送信され、それは、D・N+Qを計算し、16ビットの結果を出力する。欠損バンクが無い時、N=64の場合に関する特別な規定もある。
【0070】
Nbox_Mult350のハードウェア実装が、図35に記載されている。図35に記載のすべてのコンポーネントは、上述されている。
【0071】
好ましいハードウェア実装は、1サイクル・オペレーションを有し、それは従来のシステムに典型的である。メモリ・サブ・システムが、例えば、前の要求が応えられている間に、新しい未処理の要求を準備することによって、ウェイト(wait)状態に耐えることができるシステムにおいて、“S−,M−,N−Boxes”のパイプライン・オペレーションは有利である――それは、中間結果を保持するために、いくつかの短いレジスタを追加する犠牲の上に、顕著に短いサイクル時間を可能にする。他の可能性は、上述のS−,M−,N−Boxにおけるすべての短い乗算の、非同期実装を用いることである。メモリ・アレイへの非同期アクセスに関して、このアプローチは、セットアップ/ホールド制約を排除し、ほとんどのデータ・パターンに対して最速の時間を供給する。非同期乗算器アレイの実装によって、このアプローチは、データ依存タイミングという結果を生みうる。
【0072】
D.他の実施例
準結晶マッピングを作るための手段としてのモジュラー乗算に基づいて、アドレス変換の本システムの様々な実装の幅広い選択がある。それらは、実装の複雑性において、および異なる数のバンクならびに異なる明示的パターンのメモリ・アクセスに関する性能において、変化する。これらの中で、好ましい実施例は、任意の数のバンクに対する最小の複雑性のハードウェア実装を有する。
【0073】
バンク番号uおよびローカル・アドレスlaを、スクランブルされたアドレスA(A=Λa mod 2K)から引き出すための、低複雑性技術は、1バンクあたりのサブ・バンクの数Sが1である(S=1)場合に、Nがバンクの数である、u=(A・N)/2Kおよびla=A−u・2K/Nを設定することである。ここでNは、短い定数(short constant)であり、2K/Nは固定数Nに対する(長い)定数である。このように、標準のスクランブルに加えて、このアプローチは、短い(例えば、6ビット)数によるたった2つの乗算と、および加算/減算を必要とする。さらに、様々なモジュラー乗算(スクランブルおよび変換)は、処理全体の速度を上げるために、一つのブロックに併合されることができ、その結果、潜在的に時間T ns.で完了することができる処理を生む。
【0074】
図11は、本発明に従った変換ユニットの他の実施例を示す。ここで、上述の通り、バンクの数、Nは、64を超えない。前の実施例の通り、変換ユニットは、アドレスAを受信し、対応するバンク番号およびローカル・アドレスを生成する。ステップ51において、A_TopはA[18:13]に設定され、A_MidはA[12:7]に設定され、およびA_BotはA[6:0]に設定される。ステップ52において、A_SはA_Top・27+A_Botに設定される。ステップ51および52は、バンク番号を決定するための目的で、Aから12ビットを選択する。これらのステップで特定されたもの以外のビットも使用されてもよい。ステップ53において、Middle_Bitsは、(A_S・Λ)[18:13]に設定される。ステップ54において、Middle_Bitsは、非欠損バンク・テーブル、または類似の変換メカニズムを介して、バンク番号にマッピングされる。最後に、ステップ55において、ローカル・アドレス、A_Localは、A_Mid・27+A_S[E:S]に設定され、[E:S]は:奇数NおよびN=64に関して、[6:0]である;および偶数NであるがN=64でない場合、[N2+6:N2]であり、N=N_Odd*N2である(すなわち、N_Oddは、Nの奇数素数であり、N2は、Nを割る2の最大の累乗である)。本発明に従った、および様々な明示的メモリパターンのアクセスに関するバンク・コンフリクトの最小化のために、準結晶マッピングを作成するためのモジュラー乗算を用いた、さらなる実施例がある。さらにそのような実施例において、Aは最初に19ビット定数LLを乗じられ、積A・LLのビット[36:18]を見る。そのような実施例の異なる例において、以下のモジュラー乗算(変換)方法が使用される:
A→A・4161+127
積ビット[17:14]および[19:18]は、有効バンク番号を供給する一方で、前記積のより高いビットはローカル・アドレスを供給する。
【0075】
すぐ上に示された実施例は、より多くのゲートを使い、潜在的に、図1乃至4に記載の実施例より遅い。いくつかのケース(例えば、N=61)において、それらは固定ストライド・アクセスに関してより良い一方で、他(例えば、N=63)に関しては、それらはやや悪い。
【0076】
当業者は、加算器(例えば、有限あるいは無限フィールドに対する多項式乗算の実装等)、テーブル・ルックアップ、およびモジュラー乗算への変形、またはモジュラー乗算よりも、アナログ・ソリューションを含む様々な組合せ回路が、マルチ・バンク・メモリのアクセスの明示的パターン(固定ストライドのパターンおよび/または多次元テーブルにおけるアクセスの線形パターンを含むが、それらに制限されない)におけるメモリ・バンク・コンフリクトを最小にする同じ効果を有する、アドレス変換ユニットにおける使用のための、有限準結晶マッピングを構築するために使用されることができることを理解するであろう。
【0077】
E.耐故障性オペレーション
上述のリマッピング(remapping)およびスクランブル・システムによって、メモリ・システム全体の耐故障性オペレーションおよびマルチ・プロセッサならびにチップ上のマルチ・バンク・システムの耐故障性オペレーションを可能にする。
【0078】
あらゆる耐故障性オペレーションに前もって必要なのは、個別のメモリ・バンクまたはモジュール、および/またはこれらのバンクまたはモジュール(ユニット)を制御する処理装置の故障を決定するメモリ・テストである。このテストは、メモリおよび/またはプロセッサの使用のあらゆる段階−コンポーネントを作った後の初期テスト、またはコンポーネントの寿命およびオペレーションの間にいつでも、起こりうる。このテストは、一つの直列または並列スキャン・パスまたは複数のパス、BIST(built-in-self-test)、または包括的なテストのためのテスト・パターンを作る特別なオン・チップ回路等、様々な最新のアプローチを用いて、外部的(例えば、外部メモリ・バスを通してメモリ・アクセスを動かす手段によって)または内部的になりうる。
【0079】
一度テストが実行され、欠損したエレメント−メモリ・ブロック、バンク、または処理装置−が見つかると、効率的に、リマッピング回路によって使用されるように、欠損情報は記憶されなければならない。この情報を記憶するための、多くの自然な方法がある。第一に、テストが製造時に実行される場合には、欠損情報はチップにハードワイヤされることができるが、さらなる変更は、一般的には可能ではないであろう。第二に、それは、テストの後、チップの特殊なRAM領域、または複数のRAM領域へと書き込まれ、またはダウンロードされうる。これは、悪いエレメントの番号の別個の記憶を必要とする。前記記憶は、PROMまたは他のマシン読み取り可能形式(バーコード、磁気コード、システム記憶装置等)において、外部的に実行されうる。第三に、チップの特殊な非揮発性領域は、そのような記憶に専用であり、さらなるテストの後にアクセスされ、またはリプログラムされうる。第四に、多くの場合において、テストとリプログラミングの両方が、例えば、ブート・プロシージャに続いて、ソフトウェアがメモリをテストし、および悪いエレメントのリストを、チップのRAM(またはレジスタ)領域にダウンロードする時、全体がソフトウェアで実行されうる。非欠損バンク・テーブル6は、図1および2との関係で上述された通り、第三および第四の技術に特に適している。当業者は、欠損情報を記憶するための他の技術も使用されてよく、本発明は、上述された特定の技術に制限されないことを理解するであろう。
【0080】
欠損エレメントの情報(例えば、メモリ・バンク、装置、または処理装置)は、多くの形式を取りうる。例えば、たったいくつかの欠損エレメントが予期される場合、欠損エレメント番号が記憶され、リマッピングは、確実に、これらのエレメント番号が使用されないようにする。欠損エレメントの数が大きいかもしれない場合、良い(非欠損)エレメントのリストを記憶する単純なRAMが使用されうる。この実装の典型的な場合として、あらゆる数のバンクが、欠損であるというラベルを付けられ、Nのみが良い(非欠損である)場合における、64メモリ・バンク(ユニット)システムを検討する。図1における非欠損バンク・テーブル6は、そのようなRAMの一例である。上述の通り、それは各有効6ビットバンク番号Bank(1BankN)に関して、チップ上に、Nの非欠損バンクの一つの実際の番号を記憶する、64×6RAM(またはROM)アレイを具備する。このアレイは、非欠損メモリ・バンクの(2進法の)値を、“Bank”バスの出力において供給する。
【0081】
他に、欠損または非欠損バンクのリストは、欠損情報を記憶するために必要なビットの数を顕著に減らす、RAMアレイに関する様々な圧縮技術を用いて、圧縮されうる。例えば、前記数は64×6ビット(すなわち、ほとんどすべてのバンクが欠損している場合に、圧縮なしで必要とされる最大数のビット)から、最大でW×6ビットに減らされることができ、Wは、欠損または非欠損バンクの最小の数である。しかし、この圧縮は、(およそO(W)ゲートの)追加の圧縮解除回路、およびバンク番号を変換するための追加の時間遅延の犠牲の上にある。小さいRAM(ROM)ブロックが、チップ上で有効に使用されない場合、および記憶アレイが、レジスタを用いる代わりに実装される場合にのみ、それは有用であろう。
【0082】
他のパラメータの値も、耐故障性オペレーションを供給するために調整される必要があり、例えば、NおよびSの値、すなわち、それぞれメモリバンクおよびサブ・バンク(ユニット)の数、定数Lおよび乗数ΛまたはLLである。N,S,Lおよび/またはΛの値は、非欠損ユニットのリストとともに、記憶され、またはダウンロードされることができる。それらは、バッファされた出力信号とともに、高速レジスタに保持され、または直接ハードワイヤされる(テストおよび変更が、製造時に実行される場合)。定数L,Λ、またはLLの値はダウンロードされることができ、またはL,Λ、あるいはLLに関する固定値は、単純にハードワイヤされることができる。L,Λ,またはLLをハードワイヤすることによって、多数のブロック(50%以上)が欠損である場合に性能が下がるが、図3に記載のS−Box12ならびにM−Box14におけるゲートの数も顕著に減らす。
【0083】
欠損または非欠損エレメントのリストが記憶される一つの場所、または複数の場所は、チップに配置されたメモリ・システムの種類に依存する。図7に記載のとおり、すべてのメモリ・エレメントに関する単一のメモリ・バスを伴う単一のメモリ・モジュールを表すチップにおいて、または図8に記載の通り、スイッチ可能なバスを伴う単一のメモリ・モジュールにおいて、前記リスト(非欠損バンク・テーブルおよびアドレス変換パラメータ値)を記憶するための単一の場所、およびリマッピングならびにスクランブル回路のための単一の場所、すなわちメモリ領域2および変換ユニット1がある。(図7に記載の非欠損バンクは、60というラベルが付けられており、欠損バンクは、61というラベルが付けられている。)
【0084】
しかしながら、チップ上システムにおいて、図9および10に記載の通り、複数のメモリ・ユニットおよびバンクにアクセスする、可能な複数の処理装置があり、欠損または非欠損ユニットのリストは、個別の処理装置(またはそのクラスタ)を伴う分散方法で記憶される。従って、リマッピングおよびスクランブル回路は、個別の処理装置(またはそれらのクラスタ)とともに配置される。これは、リマッピングおよびスクランブル回路の最小ゲート実装に対する必要性を大いに増し、および図1乃至6に記載の実装を、好ましいものにする。図9は、ユニット70を含むマルチプロセッサおよびメモリ・システムを示す。図10は、個別のユニット70のメモリ関連部分を示す。変換ユニット81およびメモリ領域82は、ローカル・メモリ・ユニット(サブ・バンク)B1乃至B8 83へのアクセスを制御する。スイッチ80は、ローカルならびにグローバル・アドレス、およびコントロール・ビット、および個別のユニット(70)の中への、および中からのメモリ・データのルーティング情報を、チップ上の完全なシステムの通信スイッチから、および前記通信スイッチへ送る。
【0085】
提案されたリマッピング回路(またはそのソフトウエア実装)の目的は、個別のメモリまたは処理コンポーネントの多数の故障が、システム性能を下げることなく耐えられなければならない、多くのメモリおよび処理エレメントを伴う大きなシステムの耐故障性オペレーションに備えることである。唯一の低下は、利用可能な記憶場所(またはプロセッサ性能)における適切な減少である。アドレス変換およびスクランブル・ユニットは、同じ質のメモリ・アクセスおよび利用可能な(非欠損)メモリ・システムへの高い帯域幅を保証する。
【0086】
他に、固定された数のメモリ・バンクおよび/または処理装置が、チップ上に存在する必要がある場合、提案される耐故障性ソリューションは、特定の数の追加(いわゆるスペアまたはリザーブ)メモリ・バンクおよび/または処理装置が、チップに加えられるように備える。そのようなスペア・バンクまたはユニットの数は、歩留まりおよびプロセス・ファクタによって決定され、可変的でありうる。さらに、システムは、メモリ・バンクの一部が他の理由によって無視されるように構成されてもよい。ここに開示されたシステムは、そのような可変性に備える。スペア・バンクまたはユニットを伴う他のアプローチは、ユーザから、不可避な欠損の存在およびチップ上の不良コンポーネントを有効に隠す。さらに、故障が容認されない、ミッション・クリティカルなアプリケーションにおいて、同一のタスクで稼動する、例えば3のプロセッサ/メモリ・ユニットを比較することによって、チップの内部稼動の検査を継続的に実行させることができる。これは、個別のコンポーネントの動的なライブ検査(live verification)に備え、それらが、チップ・オペレーションの介入なく、オフラインで、ライブの状態で取られるようにする。スペア・コンセプトと結合して、これは、チップの寿命およびオペレーション中の故障に備え、低下することなくチップが動作し続けるようにすることができる。
【0087】
上述の実施例に対する多くの変形が可能であり、それは当業者には容易に明らかであり、本発明は、前記実施例に制限されない。例えば、上述の実施例に記載の回路は、特定のハードウェアのために容易に変更され、および最適化されることができ、およびより多くの、またはより少ない回路ならびにコンポーネントを具備してもよい。さらに、オン・チップ回路および離散コンポーネントの組合せの形式におけるハードウェア実装に加え、本発明は、物理的メモリへの仮想アドレス・アクセスをリマップし、またはプログラムに利用可能な様々なメモリ・アレイへのアクセスを再編成するソフトウェアに実装されてもよい。さらに、本発明の特定の実施例は、19ビット(ワードまたはキャッシュ・ライン)アドレス空間および特定の最大数のバンクならびにサブ・バンクとの関係で説明されてきたが、本発明は、より大きい、あるいはより小さいアドレス空間、およびより大きい、あるいはより小さい可変的な数のバンクならびにサブ・バンクならびに処理装置に、容易に適用されうる。
【図面の簡単な説明】
【図1】 本発明のメモリアドレスシステムのある実施形態のブロック線図である。
【図2】 本発明のある実施形態のメモリ部のブロック線図である。
【図3】 本発明のある実施形態の翻訳ユニットのブロック線図である。
【図4】 Sボックスのオペレーションを示すフローチャートである。
【図5】 Mボックスのオペレーションを示すフローチャートである。
【図6】 Nボックスのオペレーションを示すフローチャートである。
【図7】 単メモリアレイに接続された、本発明のある実施形態を示す。
【図8】 スイッチ可能なバスアーキテクチャ内の単メモリアレイに接続された、本発明のある実施形態を示す。
【図9】 マルチプロセッサとメモリのシステムを示す。
【図10】 マルチプロセッサとメモリのシステム内のローカルメモリユニットに接続された、本発明のある実施形態を示す。
【図11】 本発明の他の実施形態を示すフローチャートである。
【図12】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図13】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図14】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図15】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図16】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図17】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図18】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図19】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図20】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図21】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図22】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図23】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図24】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図25】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図26】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図27】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図28】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図29】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図30】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図31】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図32】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図33】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図34】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図35】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図36】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図37】 本発明のある実施形態の、ハードウェア実装の階層的構成図である。

Claims (45)

  1. 複数のN個のメモリバンクを有するメモリデバイスであり、前記メモリバンクはそれぞれ、複数のアドレス可能なメモリ位置を備えており、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリデバイスにおいて、
    前記メモリデバイスは、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えており、
    少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、
    ことを特徴とするメモリデバイス。
  2. 前記少なくとも1つの、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項1に記載のメモリデバイス。
  3. 前記少なくとも1つの、論理アドレスの明示的アクセスシーケンスは、1又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項1に記載のメモリデバイス。
  4. 複数の、論理アドレスの明示的アクセスシーケンスに対し、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする、請求項1に記載のメモリデバイス。
  5. 前記複数の、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項4に記載のメモリデバイス。
  6. 前記複数の、論理アドレスの明示的アクセスシーケンスは、1又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項4に記載のメモリデバイス。
  7. 各論理アドレスaに対して、対応するバンク番号B及び対応するローカルアドレスlaが、a'はaのビットの範囲を含み、Λは1に等しくない整数の乗数を表すものとして、モジュラー乗算Λ・a'の結果内のビットの範囲から引き出されることを特徴とする、請求項1に記載のメモリデバイス。
  8. 前記Λが、
    (a)Λを値の範囲に設定し、
    (b)各値に対して、前記少なくとも1つの明示的アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、
    (c)偏差が最小となる値からΛを選択する、ことによって定められることを特徴とする、請求項7に記載のメモリデバイス。
  9. 各バンクは、S個のサブバンクを備えており、各論理アドレスaに対し、対応するバンク番号Bが、更に、Sから引き出されることを特徴とする、請求項7に記載のメモリデバイス。
  10. S個のメモリサブバンクに加えて、少なくとも1つの欠陥のあるメモリサブバンクを含んでいることを特徴とする、請求項7に記載のメモリデバイス。
  11. (a)値Λを記憶するΛメモリと、
    (b)Nの値を記憶するNメモリと、
    (c)Sの値を記憶するSメモリと、
    (d)バンク番号を欠陥のないバンクの番号にマップするバンクテーブルと、を更に備えており、前記Λメモリと、Nメモリと、Sメモリと、バンクテーブルとは、1つ又はそれ以上のバンクにエラーが検出された場合には修正可能であることを特徴とする、請求項9に記載のメモリデバイス。
  12. Sの値を記憶するSメモリを更に備えていることを特徴とする、請求項9に記載のメモリデバイス。
  13. Λの値を記憶するΛメモリを更に備えていることを特徴とする、請求項7に記載のメモリデバイス。
  14. Nの値を記憶するNメモリを更に備えていることを特徴とする、請求項7に記載のメモリデバイス。
  15. N個のメモリバンクに加えて、少なくとも1つの欠陥のあるメモリバンクを含んでいることを特徴とする、請求項7に記載のメモリデバイス。
  16. バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを、更に備えていることを特徴とする、請求項7に記載のメモリデバイス。
  17. 各論理アドレスaに対して、対応するバンク番号B及び対応するローカルアドレスlaが、a'はaのビットの範囲を含んでいるものとして、番号a'からのテーブルルックアップの結果内のビットの範囲から引き出されることを特徴とする、請求項1に記載のメモリデバイス。
  18. 各論理アドレスaに対して、対応するバンク番号B及び対応するローカルアドレスlaが、a'はaのビットの範囲を含んでいるものとして、ファクターの1つをa'とする有限又は無限のフィールドに亘る多項乗算の結果内のビットの範囲から引き出されることを特徴とする、請求項1に記載のメモリデバイス。
  19. 各論理アドレスaに対して、対応するバンク番号B及び対応するローカルアドレスlaが、a'はaのビットの範囲を含んでいるものとして、インプットとしてa'を有する組み合わせ回路のアウトプット内のビットの範囲から引き出されることを特徴とする、請求項1に記載のメモリデバイス。
  20. 複数のN個のメモリバンクを有するメモリデバイスであって、前記メモリバンクはそれぞれ、複数のアドレス可能なメモリ位置を備えており、前記メモリ位置はそれぞれ、論理アドレスaと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Bと、ローカルアドレスlaとを備えているメモリデバイスにおいて、
    前記メモリデバイスは、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えており、更に、
    (a)少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    (b)前記Nの値は、前記メモリデバイス内で使用することのできるバンクの最大数よりも小さい何れのバンクの数にでも再構成可能であり、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
  21. 前記少なくとも1つの、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項20に記載のメモリデバイス。
  22. 前記少なくとも1つの、論理アドレスの明示的アクセスシーケンスは、1又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項20に記載のメモリデバイス。
  23. 複数の、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする請求項20に記載のメモリデバイス。
  24. 前記複数の、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項23に記載のメモリデバイス。
  25. 前記複数の、論理アドレスの明示的アクセスシーケンスは1又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項23に記載のメモリデバイス。
  26. (a)前記メモリデバイスは1つ又はそれ以上の欠陥のあるメモリバンクを含んでおり、
    (b)前記値Nは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記欠陥のあるメモリバンクの数だけ小さく、
    (c)前記メモリデバイスは、N個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項20に記載のメモリデバイス。
  27. (a)前記メモリデバイスは1つ又はそれ以上の保留されたメモリバンクを含んでおり、
    (b)前記値Nは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記保留されたメモリバンクの数だけ小さく、
    (c)前記メモリデバイスは、N個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項20に記載のメモリデバイス。
  28. (a)前記メモリデバイスは1つ又はそれ以上の無視されたメモリバンクを含んでおり、
    (b)前記値Nは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記無視されたメモリバンクの数だけ小さく、
    (c)前記メモリデバイスは、N個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項20に記載のメモリデバイス。
  29. バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを、更に備えていることを特徴とする、請求項20に記載のメモリデバイス。
  30. Nの値を記憶するNメモリを更に備えていることを特徴とする、請求項20に記載のメモリデバイス。
  31. システムにおいて、
    それぞれが複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスaと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Bと、ローカルアドレスlaとを備えているメモリバンクと、
    前記メモリユニットと通信する、複数のM個の演算ユニットと、
    前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
    少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    更に、以下の(i)及び(ii)即ち、
    (i)前記Nの値は、前記システム上で使用することのできるメモリユニットの最大数よりも小さい何れのメモリバンクの数にでも再構成可能である、及び、
    (ii)前記Mの値は、前記システム上で使用することのできる演算ユニットの最大数よりも小さい何れの演算ユニットの数にでも再構成可能である、の両者で構成されるグループから選択された何れかを特徴としており、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2 K に基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2 K はアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、いるシステム。
  32. 複数の、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスの何れにおいても、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする、請求項31に記載のシステム。
  33. 複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクを有するメモリデバイスであって、前記メモリ位置はそれぞれに、論理アドレスaと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Bと、ローカルアドレスlaとを備えているメモリデバイスにおける方法であって、
    前記メモリデバイスが、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えたものであり、
    前記対応するバンク番号B及び対応するローカルアドレスlaが、a'はaのビットの範囲を含み、Λは整数の乗数を表すものとして、モジュラー乗算Λ・a'の結果内のビットの範囲から引き出され、
    (a)少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対し、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    (b)前記Nの値は、前記メモリデバイス上で使用することのできるバンクの最大数よりも小さい何れのバンクの数にでも再構成可能であり、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とする方法。
  34. 論理アドレスの所与のアクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項33に記載の方法。
  35. 論理アドレスの各明示的アクセスシーケンスは、1又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項33に記載の方法。
  36. バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを記憶する段階を更に含んでいることを特徴とする、請求項33に記載の方法。
  37. Nの値をNメモリに記憶する段階を更に含んでいることを特徴とする、請求項33に記載の方法。
  38. 各バンクは、S個のサブバンクを含んでおり、各論理アドレスaに対して、対応するバンク番号Bが、Sから更に引き出されることを特徴とする、請求項33に記載の方法。
  39. Sの値をSメモリに記憶する段階を更に含んでいることを特徴とする、請求項38に記載の方法。
  40. (a)値ΛをΛメモリに記憶する段階と、
    (b)Nの値をNメモリに記憶する段階と、
    (c)Sの値をSメモリに記憶する段階と、
    (d)バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを記憶する段階と、
    (e)前記Λメモリと、Nメモリと、Sメモリと、バンクテーブルの内の1つ又はそれ以上を、1つ又はそれ以上のバンクにエラーが検出された場合は、修正する段階を、更に含んでいることを特徴とする、請求項38に記載の方法。
  41. 値ΛをΛメモリに記憶する段階を更に含んでいることを特徴とする、請求項33に記載の方法。
  42. メモリデバイスにおいて、
    それぞれが複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
    前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
    少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成することのないメモリバンク番号を有しており、
    バンク矛盾が、平均すると、前記メモリデバイスに対するアクセスのパーセンテージとして表現される1/e未満で発生し、
    eが自然対数の底を表現するものであり、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
  43. メモリデバイスにおいて、
    それぞれが複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
    前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
    少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    Nを2bに等しいとすれば、論理アドレスaは、2Kのアドレス空間を含んでおり、
    bが、メモリバンクの数を定める数であり、これにより、前記メモリバンクの数が2をb乗した数に等しくなり、
    Kが前記メモリデバイスのアドレス可能な空間を定める数であり、これにより、前記メモリデバイスのアドレス可能な空間が2をK乗した数に等しくなり、
    各論理アドレスaに対して、スクランブルアドレスAは Λa mod 2Kを含んでおり、対応するバンク番号Bは、第1の選択されたAのビットから引き出され、対応するローカルアドレスlaは、第2の選択されたAのビットから引き出され、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
  44. メモリデバイスにおいて、
    それぞれが複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
    前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
    少なくとも1つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、N+1よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼN回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
    各論理アドレスaに対して、
    (i)Λを1以外の奇数の整数乗数とし、a'が選択されたaのビットを含むものとして、スクランブルアドレスAは Λa'を含んでおり、
    (ii)対応するバンク番号Bは、第1の選択されたAのビットから引き出され、
    (iii)対応するローカルアドレスlaは、第2の選択されたAのビットから引き出され、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
  45. メモリデバイスにおいて、
    それぞれが複数のアドレス可能なメモリ位置を備えている、複数のN個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
    前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
    各論理アドレスと、その対応する物理アドレスとは、有限疑似クリスタルマッピングによって関係付けられており、
    前記アドレス翻訳ユニットで行われるアドレス変換が、a−A=Λamod2Kに基づいて実行され、aは論理アドレス、Aはaに対応するスクランブルされた物理アドレス、2Kはアドレス空間、Λは奇数値定数であり、Λが、(a)Λを様々な値に設定し、(b)各値に対して、少なくとも1つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、(c)偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
JP2001549196A 1999-12-27 2000-12-26 マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法 Expired - Fee Related JP5089842B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/472,930 1999-12-27
US09/472,930 US6381669B1 (en) 1999-12-27 1999-12-27 Multi-bank, fault-tolerant, high-performance memory addressing system and method
PCT/US2000/035209 WO2001048610A1 (en) 1999-12-27 2000-12-26 Multi-bank, fault-tolerant, high-performance memory addressing system and method

Publications (3)

Publication Number Publication Date
JP2003520368A JP2003520368A (ja) 2003-07-02
JP2003520368A5 JP2003520368A5 (ja) 2008-05-15
JP5089842B2 true JP5089842B2 (ja) 2012-12-05

Family

ID=23877479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001549196A Expired - Fee Related JP5089842B2 (ja) 1999-12-27 2000-12-26 マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法

Country Status (7)

Country Link
US (2) US6381669B1 (ja)
EP (1) EP1247185A4 (ja)
JP (1) JP5089842B2 (ja)
KR (1) KR100781132B1 (ja)
CN (1) CN1437728A (ja)
AU (1) AU2455201A (ja)
WO (1) WO2001048610A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748480B2 (en) * 1999-12-27 2004-06-08 Gregory V. Chudnovsky Multi-bank, fault-tolerant, high-performance memory addressing system and method
JP2002064145A (ja) * 2000-06-09 2002-02-28 Fujitsu Ltd 冗長素子を備える集積回路チップ、マルチプロセッサおよびその製法
US6671822B1 (en) * 2000-08-31 2003-12-30 Hewlett-Packard Development Company, L.P. Method and system for absorbing defects in high performance microprocessor with a large n-way set associative cache
US6968300B2 (en) * 2001-01-26 2005-11-22 Dell Products L.P. Computer system and printed circuit board manufactured in accordance with a quasi-Monte Carlo simulation technique for multi-dimensional spaces
US6791557B2 (en) * 2001-02-15 2004-09-14 Sony Corporation Two-dimensional buffer pages using bit-field addressing
US6765580B2 (en) * 2001-02-15 2004-07-20 Sony Corporation Pixel pages optimized for GLV
US7205993B2 (en) * 2001-02-15 2007-04-17 Sony Corporation Checkerboard buffer using two-dimensional buffer pages and using memory bank alternation
US6803917B2 (en) * 2001-02-15 2004-10-12 Sony Corporation Checkerboard buffer using memory bank alternation
US6831651B2 (en) * 2001-02-15 2004-12-14 Sony Corporation Checkerboard buffer
US7088369B2 (en) * 2001-02-15 2006-08-08 Sony Corporation Checkerboard buffer using two-dimensional buffer pages and using bit-field addressing
US6795079B2 (en) * 2001-02-15 2004-09-21 Sony Corporation Two-dimensional buffer pages
US6801204B2 (en) * 2001-02-15 2004-10-05 Sony Corporation, A Japanese Corporation Checkerboard buffer using memory blocks
US6831649B2 (en) * 2001-02-15 2004-12-14 Sony Corporation Two-dimensional buffer pages using state addressing
US6831650B2 (en) * 2001-02-15 2004-12-14 Sony Corporation Checkerboard buffer using sequential memory locations
US6850241B2 (en) * 2001-02-15 2005-02-01 Sony Corporation Swapped pixel pages
US7379069B2 (en) * 2001-02-15 2008-05-27 Sony Corporation Checkerboard buffer using two-dimensional buffer pages
US6828977B2 (en) * 2001-02-15 2004-12-07 Sony Corporation Dynamic buffer pages
US7038691B2 (en) * 2001-02-15 2006-05-02 Sony Corporation Two-dimensional buffer pages using memory bank alternation
US6992674B2 (en) * 2001-02-15 2006-01-31 Sony Corporation Checkerboard buffer using two-dimensional buffer pages and using state addressing
US20030058368A1 (en) * 2001-09-24 2003-03-27 Mark Champion Image warping using pixel pages
US6965980B2 (en) * 2002-02-14 2005-11-15 Sony Corporation Multi-sequence burst accessing for SDRAM
US7155575B2 (en) * 2002-12-18 2006-12-26 Intel Corporation Adaptive prefetch for irregular access patterns
US7013378B2 (en) * 2003-04-30 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for minimizing the length of a defect list for a storage device
JP4765260B2 (ja) * 2004-03-31 2011-09-07 日本電気株式会社 データ処理装置およびその処理方法ならびにプログラムおよび携帯電話装置
KR100539261B1 (ko) * 2004-05-04 2005-12-27 삼성전자주식회사 디지털 데이터의 부호화 장치와 dvd로의 기록 장치 및그 방법
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7685354B1 (en) * 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
FR2889349A1 (fr) * 2005-07-26 2007-02-02 St Microelectronics Sa Procede et dispositif de securisation d'un circuit integre, notamment une carte a microprocesseur
KR100855467B1 (ko) * 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
US7694193B2 (en) * 2007-03-13 2010-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for implementing a stride value for accessing memory
US7472038B2 (en) * 2007-04-16 2008-12-30 International Business Machines Corporation Method of predicting microprocessor lifetime reliability using architecture-level structure-aware techniques
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
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
CN102035865B (zh) * 2009-09-30 2013-04-17 阿里巴巴集团控股有限公司 数据存储及数据寻址方法、系统和设备
WO2013187862A1 (en) * 2012-06-11 2013-12-19 Intel Corporation A FAST MECHANISM FOR ACCESSING 2n±1 INTERLEAVED MEMORY SYSTEM
CN103914390B (zh) * 2013-01-06 2016-08-17 北京忆恒创源科技有限公司 存储设备
CN103399827B (zh) 2013-07-25 2015-11-25 华为技术有限公司 存储装置、执行访问操作的系统和方法
US9495291B2 (en) * 2013-09-27 2016-11-15 Qualcomm Incorporated Configurable spreading function for memory interleaving
US10268601B2 (en) 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US10310991B2 (en) * 2016-08-11 2019-06-04 Massachusetts Institute Of Technology Timely address space randomization
KR102540964B1 (ko) 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
CN110350922A (zh) * 2019-07-18 2019-10-18 南京风兴科技有限公司 一种二进制编码的寻址方法及寻址器
KR20210129370A (ko) 2020-04-20 2021-10-28 삼성전자주식회사 메모리 모듈 및 적층형 메모리 장치
CN114385089B (zh) * 2022-03-22 2022-08-05 北京清微智能信息技术有限公司 一种基于交叉编址的动态bank存储方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063526A (en) * 1987-06-03 1991-11-05 Advanced Micro Devices, Inc. Bit map rotation processor
JPH063589B2 (ja) * 1987-10-29 1994-01-12 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン アドレス置換装置
US5111389A (en) * 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US5043874A (en) 1989-02-03 1991-08-27 Digital Equipment Corporation Memory configuration for use with means for interfacing a system control unit for a multi-processor system with the system main memory
JPH04293135A (ja) * 1991-03-20 1992-10-16 Yokogawa Hewlett Packard Ltd メモリアクセス方式
JP3532932B2 (ja) 1991-05-20 2004-05-31 モトローラ・インコーポレイテッド 時間重複メモリ・アクセスを有するランダムにアクセス可能なメモリ
US5526507A (en) * 1992-01-06 1996-06-11 Hill; Andrew J. W. Computer memory array control for accessing different memory banks simullaneously
US5479624A (en) 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
CA2116985C (en) 1993-03-11 1999-09-21 Cynthia J. Burns Memory system
JP3304531B2 (ja) 1993-08-24 2002-07-22 富士通株式会社 半導体記憶装置
US5530837A (en) 1994-03-28 1996-06-25 Hewlett-Packard Co. Methods and apparatus for interleaving memory transactions into an arbitrary number of banks
US6021482A (en) * 1997-07-22 2000-02-01 Seagate Technology, Inc. Extended page mode with a skipped logical addressing for an embedded longitudinal redundancy check scheme

Also Published As

Publication number Publication date
KR100781132B1 (ko) 2007-12-03
US6519673B1 (en) 2003-02-11
WO2001048610A1 (en) 2001-07-05
EP1247185A1 (en) 2002-10-09
WO2001048610A8 (en) 2001-11-29
US6381669B1 (en) 2002-04-30
KR20020079764A (ko) 2002-10-19
CN1437728A (zh) 2003-08-20
JP2003520368A (ja) 2003-07-02
EP1247185A4 (en) 2008-01-02
AU2455201A (en) 2001-07-09

Similar Documents

Publication Publication Date Title
JP5089842B2 (ja) マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法
US6748480B2 (en) Multi-bank, fault-tolerant, high-performance memory addressing system and method
US6381668B1 (en) Address mapping for system memory
US6438569B1 (en) Sums of production datapath
EP0428327A1 (en) Processor array system
US5247645A (en) Dynamic memory mapper which supports interleaving across 2N +1, 2.sup.NN -1 number of banks for reducing contention during nonunit stride accesses
US5579277A (en) System and method for interleaving memory banks
US6721869B1 (en) Method for deriving a word address and byte offset information
JP2000231513A (ja) N次元矩形データアレイの任意の所与次元におけるパラレルデータアクセスのためのメモリアーキテクチャ
US20150070957A1 (en) Semiconductor device and method of writing/reading entry address into/from semiconductor device
CN113767371B (zh) 用于高性能向量处理的地址生成的方法
Wang Bit-level systolic array for fast exponentiation in GF (2/sup m/)
US5377340A (en) Method and apparatus for memory interleaving using an improved hashing scheme
EP1481319B1 (en) Method and apparatus for parallel access to multiple memory modules
EP1125205B1 (fr) Memoire a acces vectoriel
EP4116924A1 (en) Mapping multi-dimensional coordinates to a 1d space
US4534029A (en) Fault alignment control system and circuits
US4584561A (en) Method of residue to analog conversion
CN113704142A (zh) 片上存储的地址重映射电路
US4584563A (en) Method of residue to analog conversion
Aasaraai et al. Cyclonentt: An ntt/fft architecture using quasi-streaming of large datasets on ddr-and hbm-based fpga platforms
US5784330A (en) Evenly distributed RC delay word line decoding and mapping
Lee et al. Power-efficient design of memory-based FFT Processor with new addressing scheme
Mehrotra Memory intensive architectures for DSP and data communication
JPH09179778A (ja) メモリインタリーブ方法および装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110310

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110527

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110603

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110629

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120412

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120711

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

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

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

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees