JP6530815B2 - ハイブリッドメモリシステムの動作を制御するための回路および方法 - Google Patents

ハイブリッドメモリシステムの動作を制御するための回路および方法 Download PDF

Info

Publication number
JP6530815B2
JP6530815B2 JP2017540089A JP2017540089A JP6530815B2 JP 6530815 B2 JP6530815 B2 JP 6530815B2 JP 2017540089 A JP2017540089 A JP 2017540089A JP 2017540089 A JP2017540089 A JP 2017540089A JP 6530815 B2 JP6530815 B2 JP 6530815B2
Authority
JP
Japan
Prior art keywords
memory
data
access
circuit
coupled
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.)
Active
Application number
JP2017540089A
Other languages
English (en)
Other versions
JP2018503921A (ja
Inventor
ミキャエラ ブロット,
ミキャエラ ブロット,
リン リウ,
リン リウ,
コルネリス エー. ビサー,
コルネリス エー. ビサー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2018503921A publication Critical patent/JP2018503921A/ja
Application granted granted Critical
Publication of JP6530815B2 publication Critical patent/JP6530815B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1057Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Dram (AREA)
  • Transceivers (AREA)

Description

本発明は、一般に、集積回路デバイスに関し、特に、異なるタイプのメモリを有するメモリシステムの動作を制御するための回路および方法に関する。
データセンターは、世界各地のさまざまなコンピューティングデバイス間でストレージ、ソーシャルネットワーキング、ゲーム、ウェブ検索及び他の多くのサービスをコヒーレントに提供し、サイズ及び提供されるサービスの多様性の両方において日々成長している。現在キャプチャされ交換されているアモルファスなデータの量の爆発的増加を含む、いくつかの重要な要因が、この成長に寄与している。データセンターを実施する際に直面する基本的な課題の1つは、ますます増え続けるデータの処理と保存である。
様々な目的で大量のデータを格納するために使用されるデータセンターは、多くの産業で重要になってきており、そこでは、データセンターは、ますます増加する量のデータを格納および処理する際の動作の改善に重点を置いている。ソリッド・ステート・ドライブ(SSD)は、ハード・ディスク・ドライブよりも高い性能(例えば、1秒あたりの入出力動作(IOPS))及び低いアクセス・レイテンシ、並びに標準ダイナミック・ランダム・アクセス・メモリ(DRAM)よりも高い記憶密度、低コスト、及び低消費電力の両方を備えた追加の層を、ストレージ階層内に提供するので、急速に普及している。しかし、SSDのアクセス・レイテンシが大きいため、マルチコア・プロセッサは性能を犠牲にすることなく大きなアクセス・レイテンシを処理できないので、SSDを標準DRAMと組み合わせることはできない。
したがって、メモリシステムの動作を制御するための改善された回路が有益であろう。
異なるタイプのメモリを有するメモリシステムの動作を制御する回路が説明される。本回路は、第1のタイプのメモリエレメントを有し、第1のアクセス時間を有する第1のメモリと、第1のタイプのメモリエレメントとは異なる第2のタイプのメモリエレメントを有し、第2のアクセス時間を有する第2のメモリと、第1のメモリ及び第2のメモリへのアクセスを可能にするメモリ制御回路と、第2のメモリに結合され、第1のアクセス時間と第2のアクセス時間との差を補償する遅延バッファと、第1のメモリの出力データと第2のメモリの遅延された出力データとをマージして、順序付けられた出力データを生成する回路とを備える。
任意選択で、メモリ制御回路は、第1のメモリに対応付けられた第1のメモリコントローラと、第2のメモリに対応付けられた第2のメモリコントローラとを含む。
任意選択で、メモリ制御回路は、第1のメモリコントローラおよび第2のメモリコントローラに結合され、第1のメモリおよび第2のメモリのうちの所望のメモリへのアクセスを可能にするメモリ選択回路を含む。
任意選択で、第1のメモリは、SSDメモリを含む。
任意選択で、第2のメモリは、DRAMを含む。
任意選択で、遅延バッファは、PLD上のRAMのブロックを含む。
任意選択で、PLD上のRAMのブロックは、所定の遅延の間、データをバッファリングすることによって、第1のアクセス時間と第2のアクセス時間の差を補償する。
任意選択で、データは、所定の遅延後にRAMのブロックから読み出される。
任意選択で、PLDは、コンフィギュレーションビットを受信するように結合される。
任意選択で、RAMのブロックは、コンフィギュレーションビットを使用してプログラムされるプログラマブルインターコネクトエレメントを使用して第2のメモリに結合される。
任意選択で、第1のメモリは不揮発性メモリを含み、第2のメモリは揮発性メモリを含む。
任意選択で、本回路は、第1のメモリおよび第2のメモリとのメモリアクセスを制御するメモリトランスレータをさらに含み、メモリトランスレータは、第1のメモリにアクセスするかまたは第2のメモリにアクセスするかを決定する。
任意選択で、メモリトランスレータは、第1のメモリおよび第2のメモリに対応するアクセス時間に関する情報を格納するためのプロファイラを含む。
任意選択で、メモリトランスレータは、プロファイラに格納された情報に基づいて、第1のメモリにアクセスするかまたは第2のメモリにアクセスするかを決定する。
異なるタイプのメモリを有するメモリシステムの動作を制御する方法もまた説明される。本方法は、第1のタイプのメモリエレメントを有し、第1のアクセス時間を有する第1のメモリを実装することと、第1のタイプのメモリエレメントとは異なる第2のタイプのメモリエレメントを有し、第2のアクセス時間を有する第2のメモリを実装することと、第1のメモリおよび第2のメモリへのアクセスを可能にすることと、第1のアクセス時間と第2のアクセス時間との差を補償するために、遅延バッファを第2のメモリに結合することと、第1のメモリの出力データと第2のメモリの遅延された出力データとをマージして、順序付けられた出力データを生成することとを含む。
任意選択で、第1のメモリにアクセスすることは、第1のメモリに対応付けられた第1のメモリコントローラを介して第1のメモリにアクセスすることを含み、第2のメモリにアクセスすることは、第2のメモリに対応付けられた第2のメモリコントローラを介して第2のメモリにアクセスすることを含む。
任意選択で、本方法は、第1のメモリコントローラおよび第2のメモリコントローラに結合され、第1のメモリおよび第2のメモリのうちの選択されたメモリへのアクセスを可能にするメモリ選択回路を実装することをさらに含む。
任意選択で、第1のメモリにアクセスすることは、SSDメモリを実装することを含む。
任意選択で、第2のメモリにアクセスすることは、DRAMを実装することを含む。
任意選択で、第2のメモリによって出力されたデータを遅延バッファに結合することは、データをPLD上のRAMのブロックに結合することを含む。
複数のメモリへのアクセスを可能にする回路のブロック図である。 異なるタイプのメモリを有するメモリシステムの動作を制御し、インオーダー処理を可能にする回路のブロック図である。 異なるタイプのメモリを有するメモリシステムの動作を制御し、アウトオブオーダー処理を可能にする回路のブロック図である。 異なるタイプのメモリにアクセスするための回路を有するメモリシステムの動作を制御する回路のブロック図である。 異なるタイプのメモリにアクセスするための回路を有するメモリシステムの動作を制御する回路の別のブロック図である。 異なるタイプのメモリを有するメモリシステムを実装する方法を示すフローチャートである。 異なるタイプのメモリを有するメモリシステムの動作を制御する方法を示すフローチャートである。 リングノードの実装でメモリを割り当てるための回路を示すブロック図である。 メモリトランスレータのアーキテクチャを示すブロック図である。 図9のメモリトランスレータのプロファイラの動作を示すフローチャートである。 複数のメモリのうちの、データが格納されるメモリを決定する方法を示すフローチャートである。 ダイナミックランダムアクセスメモリ(DRAM)のブロック図である。 図12のDRAMのメモリエレメントのブロック図である。 ソリッドステートドライブ(SSD)メモリのブロック図である。 図14のソリッドステートドライブのメモリエレメントのブロック図である。 複数のメモリタイプを実装するキーバリューストアを可能にする回路のブロック図である。 プログラマブルリソースを有するデバイスをプログラムするためのシステムのブロック図である。 プログラマブルリソースを有するデバイスのブロック図である。 図18のデバイスのコンフィギュラブルロジックエレメントのブロック図である。
データセンターで使用されるような大規模なメモリネットワークがますます重要になり、大量のデータを格納するために依拠されているため、メモリネットワークの性能がますます重要になっている。以下に説明される様々な回路および方法によるデータフローアーキテクチャが、異なるタイプのメモリを有するメモリネットワークの動作を可能にする。例えば、メモリシステムの動作を制御する回路は、大きなアクセスレイテンシなどのメモリの相違を補償する。以下に示す回路および方法は、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジックデバイス(PLD)において特定の用途を見出し、従来のプロセッサを実装するシステムよりも、はるかに低コスト、低電力、増加した計算記憶密度で、テラバイトのデータを処理および格納できるPLDに基づくストレージシステムを作製することを可能にする。
例えば、回路は、異なるアクセス時間などの異なる特性を有する異なるタイプのメモリを有するメモリシステムの動作を制御することを可能にし、異なるメモリへのアクセスを可能にするメモリ制御回路を含む。以下でより詳細に説明するように、揮発性または不揮発性メモリを含む様々なタイプのメモリを実装することができる。遅延バッファが、例えばアクセス時間の差を補償するためにメモリの1つに結合されてもよい。1つのメモリの出力と別のメモリの遅延された出力とをマージして順序付けられた出力データを生成する回路を実装することができる。従来のマルチコアプロセッサデバイスとは異なり、データフローアーキテクチャを実装するFPGAは、これらの大きなアクセスレイテンシをうまく補償することができ、DRAMを有効に置き換える望ましいメモリ階層として、SSDメモリをDRAMと組み合わせて使用することを可能にする。これにより、テラバイトのデータを、はるかに低コスト、低電力、増加した計算記憶密度で、レイテンシを短くして、処理し保存できるFPGAベースのストレージ装置を作製することができる。
本明細書は、新規であると見なされる1つ以上の実施態様の特徴を定める請求項を含むが、回路および方法は、図面と併せて説明を検討することにより、よりよく理解されると考えられる。様々な回路および方法が開示されているが、回路および方法は、発明の構成の単なる例示であり、様々な形態で実施することができることを理解されたい。したがって、本明細書に開示された特定の構造的および機能的詳細は、限定として解釈されるのではなく、単に請求項の基礎として、また、発明の構成を事実上任意の適切に詳細な構造で様々に使用することを当業者に教示するための代表的な基礎として、解釈されるべきである。さらに、本明細書で使用する用語および語句は、限定することを意図するものではなく、回路および方法の理解可能な説明を提供することを意図している。
まず、図1を参照すると、複数のメモリを有する集積回路デバイスのブロック図が示されている。詳細には、入出力ポート102が、コンフィギュレーションメモリ108を有するプログラマブルリソース106を制御する制御回路104に結合される。図16〜図18を参照して以下でより詳細に説明するコンフィギュレーションデータが、コンフィギュレーションコントローラ110によってコンフィギュレーションメモリ108に提供され得る。コンフィギュレーションデータは、コンフィギュラブルエレメント109の動作を可能にする。ここでメモリ112およびメモリ113として示されている複数のメモリエレメントが、制御回路104およびプログラマブルリソース106に結合されていてもよい。メモリコントローラ114が、制御回路104、プログラマブルリソース106並びにメモリ112および113に結合され、集積回路デバイスの外部の信号を受信するか、またはI/Oポート116を介して信号を送信することができる。メモリコントローラ114は、以下でより詳細に説明するように、メモリ112および113を制御することができる。代替的に、制御回路104またはプログラマブルリソースの回路が、以下に説明するようにメモリ112および113を制御することができる。図示のように制御回路104に結合されたI/Oポート118などの他のI/Oポートが、集積回路デバイスの回路に結合されてもよい。以下でより詳細に説明する回路および方法は、単一の集積回路ダイ内で実施することができ、またはマルチチップモジュール若しくはメモリネットワーク内の異なるタイプのメモリを制御する他のシステムで実施することができる。
次に図2を参照すると、異なるタイプのメモリを有するメモリシステムの動作を制御し、インオーダー処理を可能にする回路のブロック図が示されている。データフローバッファを有するデータフローアーキテクチャを有するアプリケーション201が、メモリ制御回路203との通信を可能にする。図2および図3において、アプリケーションのメタデータが破線で示されており、メモリの要求と応答が実線で示されている。図2の回路においてデータが「インオーダー」でルーティングされるとき、図2のメモリへのデータ要求に応答して生成されたデータは、データ要求と同じ順序で提供される。対照的に、データが「アウトオブオーダー」でルーティングされるとき、1つのメモリの第2のメモリに対するレイテンシに関係なく、異なるメモリによって出力される順序で、データが提供される。すなわち、第1のデータ要求で生成されたデータは、後のデータ要求でデータが提供されるまで、提供されないことがある。図2の回路によってルーティングされるデータが、「インオーダー」でルーティングされるとき、所与のデータ要求に関連付けられたメタデータが、データ要求に対する出力データとマッチされることを保証するように、メタデータ遅延バッファ202が提供される。すなわち、メタデータは、データ要求に関連付けられたデータに関する情報を提供するので、メタデータが、データ要求に関連付けられたデータとマッチされることが必要である。したがって、メタデータ遅延バッファは、図2のメモリによって生成された任意のデータが、そのデータに関連付けられたメタデータとマッチされることを保証する。
以下でより詳細に説明するように、アプリケーション201は、集積回路によって実装される任意のアプリケーション、または集積回路を有するコンピュータなどのより大きなシステムに実装される集積回路であり得る。一例として、アプリケーション201は、図1のプログラマブルリソース106に実装されたプロセッシングエレメントを有するデータ処理回路であり、メモリコントローラ203は、メモリコントローラ114に実装することができる。メモリ選択回路204は、データの読み出しまたは書き込みのための、複数の利用可能なメモリ207のうちのメモリの選択を可能にする。メモリ選択回路204は、同じタイプの複数のメモリを有する複数のメモリサブシステムとインターフェースすることができ、第1のタイプのメモリ208にアクセスするための第1のメモリコントローラ206(第1のタイプのメモリ208の出力データ209を生成する)と、第2のタイプのメモリ212にアクセスするための第2のメモリコントローラ210(第2のタイプのメモリ212の出力データ213を生成する)とを含むことができる。第2のタイプのメモリ212の出力に結合された遅延バッファ214は、マージ回路216が第1のタイプのメモリ208の出力データ209と第2のタイプのメモリ212の遅延された出力データ215に基づいて順序付けられた出力データを生成することを可能にする。すなわち、順序付けられた出力データは、データ要求の順序に対応する所望の順序でデータを含み、マージ回路216が、データを正しい順序に配置して、順序付けられた出力データとして生成できるように、遅延バッファ214は、データの一部を遅延させて、順序付けられた出力データに含まれるようにする。
図2の要素のすべてが、単一の集積回路(IC)に実装されることもでき、システムの複数のICに分散されることもできる。メモリコントローラ206およびメモリコントローラ210は、同じIC上にあり、メモリ制御回路203に関連付けられてもよく、または第1のタイプのメモリ208および第2のメモリタイプ212を有する別個のメモリサブシステムとともに配置されてもよい。図2には例として2つのタイプのメモリしか示されていないが、様々な回路および方法を2つより多いタイプのメモリで実施できることを理解されたい。
メモリ制御回路203は、異なる帯域幅およびレイテンシ特性を有する2つのデータストリームをマージすることを可能にする。以下に説明する回路および方法は、インオーダー処理およびアウトオブオーダー処理の両方を可能にする。インオーダー処理は、すべてのメモリサブシステムのレイテンシをバランスさせるために、データストリームに人為的遅延を挿入することによって維持することができる。この遅延要件は、SSDを有するメモリサブシステムなどの第1のメモリサブシステムのレイテンシに依存して、かなりの中間バッファ空間を必要とすることがある。アウトオブオーダー処理が受け入れ可能である場合、メモリ要求に関連するすべての対応する情報は、メモリシステムを介してストリーミングされ、メモリサブシステムからの応答は、利用可能になるとすぐに出力データストリームにマージされる。さらに、オーバープロビジョニングを、例えば、DRAMよりも一般にスループットが低いSSDインターフェース上で使用することができ、複数のSSDインターフェースを組み合わせて、SSDの帯域幅要件を増加させることができる。
図2の構成の一例は、第1のタイプのメモリとしてSSDを、第2のタイプのメモリとしてDRAMを含む。NANDベースのフラッシュデバイスなどのSSDは、ハードディスクドライブよりも1秒あたりの入出力動作(IOPS)の点でより高い性能と、低いアクセスレイテンシの両方を提供するので、メモリネットワークで急速に普及している。それらはまた、標準DRAMよりも高い記憶密度、低コスト、低消費電力を提供する。しかしながら、両方のタイプのメモリを有するメモリネットワークを実現する際の1つの重要な課題は、メモリに対する異なるアクセスレイテンシに対応することであり、SSDのアクセス時間は、DRAMの数10ナノ秒(ns)に比べて数10マイクロ秒(us)であり得る。一例として、メモリチップのレイテンシを明示することができる。いくつかのDRAMとSSDのレイテンシを測定することも可能である。このデータを使用して、遅延バッファのサイズを決定できる。例えば、いくつかのDRAMは約600ナノ秒のレイテンシを持ち、いくつかのSSDは約100マイクロ秒のレイテンシを持つかもしれない。したがって、第1のデータ要求がSSDに行き、その後の要求がDRAMに行く場合、DRAMデータは、600ns後に(すなわち、SSDへの第1のデータ要求よりも早く)利用可能となる。出力データの順序を維持するために、DRAMコントローラに結合された遅延バッファは、100us−600ns(すなわち、99.4us)の期間中にDRAMによって生成されたデータをバッファリングする。DRAMが240nsごとに512ビット(64バイト)のデータを出力する帯域幅を有すると仮定すると、遅延バッファのサイズは、64×(99400/240)=26507バイトでなければならない。1024×4=4096バイトのサイズのBRAMを有するFPGA上では、DRAMによって生成されたデータをバッファリングし、SSDのレイテンシに対応するのに必要な遅延を与えるには、(26507/4096)=7個のBRAMしか必要としない。従って、この遅延エレメントは、SSDとDRAMとを一緒に使用することを可能にし、FPGA(図16に示すFPGAなど)のBRAMを使用して、正しいデータが順序付けられた出力データとして生成されることを保証するのに必要な遅延を提供することができる。以下でより詳細に説明するように、BRAMからのデータが、SSDからのデータに対して正しい時間だけ遅延されるように、データは、適切な時間までBRAMから読み取られない。従来のマルチコアプロセッサは、マルチスレッドによってこれらの過度のアクセスレイテンシを補償することができないが、図17で説明したFPGAなどのプログラマブルリソースを有するデバイスは、異なるレイテンシを有する異なるタイプのメモリを一緒に実行できる。
図3に示すように、異なるタイプのメモリを有し、アウトオブオーダー処理を可能にするメモリシステムでは、メタデータ遅延バッファは不要である。データはアウトオブオーダーで処理され、メモリによって出力されたデータには遅延が与えられないので、メタデータは、破線で示すように、メモリコントローラ内でデータと共に移動する。すなわち、メタデータは、データ要求に応答して生成されたデータとマッチされ、アプリケーション201に提供される。
以下でより詳細に説明する回路および方法は、これらの大きなアクセスレイテンシを補償し、SSDをメモリ階層内でDRAMと組み合わせて使用することを可能にする。テラバイトのデータを、はるかに低コスト、低電力、増加した計算記憶密度で処理して格納できる、PLDに基づいたストレージ装置を作製することが可能である。さらに、本回路および方法は、このデータを従来の構成よりもはるかに低いアクセスレイテンシでネットワークに提供することができる。
メモリネットワークが、所与のタイプのメモリの大きなアクセスレイテンシ、およびメモリ制御回路203を使用して遅延を導入することによって性能を低下させることなくアクセスレイテンシの大きな変動を効果的に補償するデータフローアーキテクチャとして実施され得る。例えば、FIFOの形態の遅延エレメントを使用することによって、データフローアーキテクチャに遅延を導入することができる。このような構成は、BRAMがFIFOとして実施され得るFPGAなどの集積回路内で効率的に実施することができる。BRAMは他の機能を有していないので、遅延を提供するために専用のFIFOを設ける必要はなく、BRAM(その他では使用されない)をFIFOとして実装して、任意の必要な遅延を提供することができる。さらに、メモリ制御回路は、あるアイテムが特定のタイプのメモリに格納されるかどうかを決定し、その後、その要求を対応するメモリコントローラに転送することができる。以下でより詳細に説明するように、この決定は、DRAMとSSDとの間のアクセス帯域幅をバランスさせること、実際の記憶容量を特定の使用事例に合わせること、または現在の負荷状態をバランスさせることなどの多くの異なる基準に基づいて行うことができる。
ここで図4を参照すると、異なるタイプのメモリサブシステムにアクセスするための回路を有するメモリシステムの動作を制御する回路のブロック図が示されている。図4に示すように、メモリ制御回路203は、アプリケーション201に関連付けられた複数のプロセッシングエレメント(PE)406〜412に結合される。PEは、以下の図18及び図19を参照してより詳細に説明されるように、例えば、FPGAのCLEに実装することができる。メモリ制御回路203は、メモリトランスレータ418を有するメモリネットワーク回路416を備える。メモリトランスレータ418は、プロセッシングエレメントの対応する出力423からの入力422でプロセッシングエレメント408からのデータ要求を受信するように結合された第1のバッファ回路420を含む。第2のバッファ回路424に記憶され、出力426で生成されたデータは、図示のように、プロセッシングエレメント408の対応する入力427に結合される。メモリトランスレータ418のバッファ回路420および424ならびに後述のメモリコントローラのバッファは、FPGAのBRAMに実装することができる。遅延の量は変動してもよく、選択された遅延を提供するためのFIFOとして実装されたBRAMの数に基づいて選択することができる。すなわち、メモリコントローラ203は、ある遅延を有するFIFOとして実装されたBRAMを含むようにメモリの出力からのパスを選択することにより、メモリの出力においてある既知の遅延を与えるパスの選択を可能にする。遅延が必要でない場合(すなわち、アウトオブオーダー処理の場合)、遅延エレメントは、例えば、遅延エレメントの周りをルーティングすることを可能にするインターコネクトエレメントを使用してバイパスされる。異なるメモリによって出力されたデータは、その後、メモリトランスレータ418によって結合されて、順序付けられたデータ出力がバッファ424に格納されるインオーダー処理を可能にする。
メモリトランスレータ418は、メモリネットワーク419に結合され、メモリトランスレータによって制御されるメモリへ及びメモリからルーティングされる信号の制御を可能にする。詳細には、ここではマルチプレクサとして例示されている第1の選択回路428が、メモリトランスレータ418に結合され、メモリトランスレータ418によって制御され、より詳細には、第1の入力429でメモリアクセス要求を受信するように結合される。メモリアクセス要求が、選択回路428の複数の対応する出力430〜434で、複数のメモリコントローラ(MC)回路のうちの1つにルーティングされ得る。出力430は、入力438でメモリコントローラ436に結合される。バッファ回路441の出力437は、ダイナミックランダムアクセスメモリ(DRAM)としてここに示す複数のメモリ440に結合され、メモリコントローラが複数のメモリ440を制御する。DRAMは揮発性メモリであることに留意すべきである。バッファ回路442は、入力439で複数のメモリ440の出力を受信し、メモリトランスレータ418に対する出力443でデータを生成するように結合される。バッファ回路441および442は、メモリにルーティングされた要求を、またはメモリエレメントから受信されたデータをデータがメモリトランスレータに戻される前に、格納するように実装することができる。DRAMがSSDよりも速いアクセス速度を有するので、バッファ442は、メモリトランスレータがインオーダー処理のために正しい順序で正しいデータを提供できるように、遅延を提供することを可能にする。
第2のメモリコントローラ444は、メモリネットワーク419および第2の複数のメモリ445に入力446で結合されており、複数のメモリはSSDとして例示されており、SSDは、電力がメモリから除去された後も、記憶されたデータを保持する不揮発性メモリである。バッファ447および448は、メモリコントローラ436に関して上述したように、メモリトランスレータ418から受信したデータ要求またはメモリ445から受信したデータを格納することを可能にする。詳細には、メモリトランスレータからのデータ要求は、バッファ447の入力446に提供され、出力449で生成され、他方、複数のメモリ445の出力で生成されたデータは、バッファ448の入力450に結合され、データは出力451で生成され得る。最後に、第3のメモリコントローラ452が、入力454でメモリネットワーク419に結合され、ホストメモリ456に結合される。メモリコントローラ452から受信されたデータ要求は、バッファ回路457に格納され、バッファ457の入力459に提供されたデータ要求が出力460で生成され、ホストメモリ456に結合される。同様に、入力461でホストメモリから受信されたデータは、バッファ回路458の出力462で生成され、メモリトランスレータ418にルーティングされる。
ここでマルチプレクサとして示される第2の選択回路470がメモリトランスレータに結合され、より詳細には入力472〜476でメモリ440,445、および456の出力を受信するように結合され、選択された出力が出力478で生成される。選択されたメモリの出力は、メモリトランスレータ418の入力に供給される。メモリアロケータは、選択回路470を制御して、正しいデータが特定のメモリからアクセスされ、データがインオーダー処理のために正しい順序で供給されることを保証する。特定のメモリエレメントが例として示されているが、メモリ制御回路203によって他のタイプのメモリエレメントを制御できることを理解されたい。
ここで図5を参照すると、異なるタイプのメモリにアクセスするための回路を有するメモリシステムの動作を制御する回路の別のブロック図が示されている。第2のメモリトランスレータ502は、ここでプロセッシングエレメント406として示されている別のプロセッシングエレメントに関連付けられている。メモリトランスレータは、第1のバッファ504および第2のバッファ506を備える。第1のバッファは、プロセッシングエレメント406の出力509から第1の入力508でデータ要求を受信するように結合される。第2のバッファ506は、第2のプロセッシングエレメント406の入力512に結合された第1の出力510でデータを生成するように結合される。メモリトランスレータ502はまた、メモリネットワーク419に結合され、メモリトランスレータ502によって制御されるメモリへ及びメモリからルーティングされる信号の制御を可能にする。すなわち、第2の選択回路470の出力514が、メモリトランスレータ502に結合され、メモリトランスレータ502の出力が、選択回路428の入力516に結合される。2つより多いメモリトランスレータを実装することができ、メモリトランスレータの出力を異なるプロセッシングエレメントに結合することができることを理解されたい。
ここで図6を参照すると、フローチャートは、メモリシステムの動作を制御する方法を示す。ブロック602において、第1のタイプのメモリエレメントを有し第1のアクセス時間を有する第1のメモリへのアクセスが、可能になる。ブロック604において、第2のタイプのメモリエレメントを有し第2のアクセス時間を有する第2のメモリへのアクセスが、可能になり、第2のタイプのメモリエレメントは第1のタイプのメモリエレメントとは異なる。第1および第2のメモリへのアクセスは、例えば図18の集積回路のIOBなどの入力/出力回路によって提供することができる。第1のメモリコントローラおよび第2のメモリコントローラに結合されたメモリ選択回路が、ブロック606で提供され、選択回路は、例えば、マルチプレクサであってもよい。ブロック608で、メモリ選択回路並びに第1および第2のメモリコントローラを使用して、第1のメモリおよび第2のメモリのうちの適切なメモリへのアクセスが可能になる。ブロック610において、第1のアクセス時間と第2のアクセス時間の差を補償するために、遅延バッファとして構成可能なプログラマブルリソースが提供される。ブロック612において、第1のメモリの出力と第2のメモリの遅延された出力をマージして、順序付けられた出力データを生成することを可能にするために、プログラマブルインターコネクトが提供される。遅延バッファとして実装することができるプログラマブルリソースの例には、図18のPLDのBRAMが含まれ、プログラマブルインターコネクトの例には、図18のPLDのプログラマブルインターコネクトを含むことができる。
図7は、異なるタイプのメモリを有するメモリシステムの動作を制御する方法を示すフローチャートである。第1のメモリコントローラおよび第2のメモリコントローラに結合されたメモリ選択回路が、ブロック702で実装される。ブロック704で、メモリ選択回路並びに第1および第2のメモリコントローラを使用して、第1のメモリおよび第2のメモリのうちの適切なメモリへのアクセスが可能になる。例えば、制御信号がメモリ選択回路に供給され、データが正しいメモリにルーティングされる、または正しいメモリから受信されることを保証する。ブロック706において、第1のタイプのメモリエレメントを有し第1のアクセス時間を有する第1のメモリが、アクセスされる。ブロック708において、第2のタイプのメモリエレメントを有し第2のアクセス時間を有する第2のメモリが、アクセスされ、第2のタイプのメモリエレメントは第1のタイプのメモリエレメントとは異なる。ブロック710で、第2のメモリによって出力されたデータが、第1のアクセス時間と第2のアクセス時間の差を補償するために、遅延バッファに結合される。例えば、遅延バッファは、図18の集積回路のBRAMなどの、集積回路のBRAMとして実施することができ、正しい時間にBRAMの読み出しをイネーブルするによって、効果的に適切な遅延を提供する。すなわち、DRAMからのデータがBRAMにバッファリングされているが、(最初に読み出されなければならない)SSDからのデータが準備されていない場合、BRAMの読み出しイネーブル回路はアサートされず、データは、所定の遅延の間保持される。したがって、データは、BRAMにデータをバッファリングすることによってBRAMによって遅延され、データは、所定の遅延後にBRAMから読み出される。ブロック712で、第1のメモリの出力と第2のメモリの遅延された出力とをマージして、順序付けられた出力データを生成する。
図6および図7の方法の様々な要素は、説明されているような図1〜図5の回路を用いて、またはいくつかの他の適切な回路を使用して、実施され得る。方法の特定の要素が記載されているが、本方法の追加の要素または要素に関する追加の詳細が、図1〜図5の開示に従って実施できることを理解されたい。
ここで図8を参照すると、リングノードの実装でメモリを割り当てる回路のブロック図が示されている。図8の回路は、要素の配置を示し、リングノードの実装のノード802が、より詳細に示される。詳細には、各ノード802は、入力バッファ806および出力バッファ808に結合されたアービトレータ804を備える。アービトレータ804は、リング上の別のノード(メモリコントローラまたはメモリトランスレータなど)にデータをルーティングする、または別のノードからデータを受信するためのバッファ806とバッファ808の間のインターフェースを提供する。図8の回路は、基本的なトークンリングを実装し、アービトレータは、ある特定のデータ(すなわちトークン)を受信すると、送信バッファからリングにデータを送信し、宛先アドレスがそのノードのアドレスであることを決定すると、リングから入力バッファにデータを送信する。図8のトークンリング構成は、インオーダー処理またはアウトオブオーダー処理の両方に適用することができる。図6の方法は、リング、メッシュまたはトーラストポロジーなどの異なるトポロジーで実施することができるが、図7のリングインターコネクトトポロジーは、一般に、より少ないルーティングリソースを使用し、予測可能なレイテンシを有する。さらに、リングトポロジーは、システム内にかなりの数のメモリノードがある場合に有益である。
ここで図9を参照すると、ブロック図は、メモリトランスレータ418のアーキテクチャを示す。詳細には、入力バッファ420が、アドレスデコーダ904に結合され、メモリにデータを格納する要求を提供する。アドレスデコーダ904の出力は、プロファイラ906およびアドレス変換割り当てブロック908に結合される。図10を参照してより詳細に説明されるように、プロファイラ906は、任意選択で、メモリネットワークの動作を最適化するために、どのメモリがデータを格納するために使用されるかを決定することを可能にする。アドレスデコーダ904およびプロファイラ910に応答して、アドレス変換割り当てブロック908からアドレスが出力される。すなわち、アドレス変換割り当てブロック908は、メモリ440,445、および456のうちのどれがアクセスされるかを決定する。出力バッファ424は、メモリの出力を受け取るように結合されている。
プロファイラ906は、高速アクセスメモリ(例えばDRAM)および低速アクセスメモリ(例えばSSD)などのどのメモリにアクセスするかを決定するための、メモリサブシステムの分析を可能にする。メモリ性能の観察に基づいて、メモリサブシステムは、所定量のデータをサポートするように実装されることができる。たとえば、メモリネットワークにDRAMとSSDを実装する場合、memcached実装では、幾つかのSSDが、データにアクセスするための10ギガビット/秒(Gbps)データインターフェースのデータ要求の1%をサポートできる。つまり、10Gbpsのmemcached要求の1%がSSDから値を取り出す場合、memcached要求は、なお10Gbpsの応答を生成することができる。例として、メモリアクセスを分割するための閾値として、2キロバイト(Kバイト)の値サイズを使用することができる。つまり、要求は、2KBより大きい値を取り出す場合、SSDにアクセスし、そうでなければ、DRAMにアクセスする。しかし、実際に実装されたときに、より大きな値(すなわち、この場合は2KBより大きい)を取り出す要求が、データ要求の1%を超える場合には、ある値だけ閾値を増加させる必要がある。例えば、SSDに記憶されたデータに対してアクセスの1%のみが行われることを保証するために、閾値を1024バイト(すなわち1KB)だけ増加させることができる。図10のフロー図は、最適性能を可能にするための閾値の変更を示す。これは、あるアクセス頻度(例えば、SSDは1%、DRAMは99%)を想定し、アクセス頻度とデータサイズとの間のマップを構築する。そして、データアクセスサイズが閾値よりも小さい場合には、DRAMに対するアクセスとなる。しかしながら、データアクセスサイズが閾値より大きい場合、そのデータサイズのアクセス頻度がチェックされ、閾値を調整する必要があるかどうかが判断される。頻度が高すぎる場合、閾値が低くされる。頻度が低すぎる場合、閾値が高くされる。
具体的には、ブロック1002でアドレスデコードが実行され、アクセスされるバイト数が決定される。データサイズおよびアクセス頻度の組のテーブルが、ブロック1004で更新され、データサイズおよびアクセス頻度データが生成される。サイズ(すなわち、バイト数)は、DRAMまたはSSDなどの異なるメモリタイプにメモリアクセスを転換するために使用される。さらに、異なるメモリ(例えば、DRAMまたはSSD)は、アクセスされるバイト数であるアクセス細分性が異なる。例えば、SSDは、ページ単位(例えば、4Kバイト)のアクセス細分性を示す。したがって、1バイトがSSD(1アクセスで4Kバイトのデータを生成できる)から取り出される場合、1バイトにアクセスするためには、1ページにアクセスするのに必要な時間と本質的に同じ時間が必要であり、メモリアクセス帯域幅の大部分が無駄になるので、メモリ性能が非常に低くなる。次に、ブロック1006において、データサイズが閾値より大きいかどうかが判定される。そうである場合、ブロック1008で、頻度が高すぎるかどうかが判定される。頻度が高すぎる場合、ブロック1010で、閾値レジスタマイナス1024バイトが記録される。頻度が高すぎない場合、ブロック1012で、頻度が低すぎるかどうかが判定される。頻度が低すぎる場合、ブロック1014で、閾値レジスタプラス1024ビットが記録される。次いで、ブロック1016でアドレス変換が実行され、データのサイズおよび閾値に応じて適切なタイプのメモリにデータが格納される。
異なるタイプのメモリを有するシステムを実装する場合、どのタイプのメモリに特定のデータを格納すべきかを決定しなければならない。図11のフローチャートは、複数のメモリのうちの、データが格納されるメモリを決定する方法を示している。ブロック1102において、第1のタイプのメモリエレメントを有し第1のアクセス時間を有する第1のメモリが、実装される。ブロック1104において、第2のタイプのメモリエレメントを有し第2のアクセス時間を有する第2のメモリが、実装され、第2のタイプのメモリエレメントは第1のタイプのメモリエレメントとは異なる。ブロック1106において、第1のメモリおよび第2のメモリへのアクセスが可能にされる。第1および第2のタイプのメモリは、例えば、図4および図5を参照して説明したNANDおよびSSDメモリであってもよい。ブロック1108において、第1のメモリおよび第2のメモリに対応するアクセス時間が決定される。異なるタイプのメモリに対応するアクセス時間は、例えば、メモリデバイスの製造業者によって提供されてもよいし、メモリデバイスの動作中に決定されてもよい。第1のメモリコントローラおよび第2のメモリコントローラに結合されたメモリ選択回路が、ブロック1110で実装される。ブロック1112で、メモリ選択回路を使用して、第1のメモリおよび第2のメモリのうちの適切なメモリへのアクセスが可能になる。適切なメモリは、第1のメモリおよび第2のメモリに対応する決定されたアクセス時間、および格納されるデータのサイズなどの特定の基準に基づいてアクセスされる。したがって、以下でより詳細に説明するように、データは、メモリのアクセス時間およびデータのサイズに基づいて、DRAMまたはSSDメモリなどの特定のメモリに格納することができる。例えば、複数のページサイズからなるデータをSSDに格納し、より小さいデータをDRAMに格納することができる。さらに、メモリトランスレータが、図10で上述したように、DRAMに格納されるべき小さいデータのサイズの閾値を決定することができる。
次に図12を参照すると、DRAMのブロック図が示されている。DRAMブロック1200は複数のメモリセル1202を含み、各メモリセル1202はアドレスデコーダ1204に結合されている。アドレスデコーダ1104は、アドレス線1206を受け取り、図示のように複数のメモリセル1202に結合されるアドレスを生成する。アドレスデコーダ1204は、チップイネーブル信号を受信し、メモリセル1102の各々は、基準電圧Vrefを受信する。書き込みブロック1210は、メモリセル1202からのデータの読み出しまたはメモリセル1202へのデータの書き込みを可能にする。詳細には、書き込みブロック1210に供給された書き込みイネーブル信号が、ゲート1214を介したメモリセル1202への書き込みを可能にする場合に、データ線1212を介して供給されたデータは、アドレスデコーダに供給されたアドレスに書き込まれる。書き込みイネーブル信号がメモリセル1202への書き込みを可能にしていない場合、インバータ1216に結合されたデータがデータ線1218上に生成される。以下でより詳細に説明するように、DRAMブロックのセルに記憶されたデータは、データを保持するために周期的にリフレッシュされなければならない。
次に図13を参照すると、図12のDRAMのメモリエレメントのブロック図が示されている。詳細には、第1のトランジスタ1302は、基準ビット線に結合されたドレイン1304と、キャパシタ1308に結合されたソース1306とを有する。トランジスタ1302は、基準ワード線によってゲート1310で制御される。第2のトランジスタ1314が、ビット線に結合されたドレイン1316と、キャパシタ1320に結合されたソース1318とを有する。トランジスタ1314は、ワード線によってゲート1322で制御される。ワード線をハイに引き、記憶させる所望の値をビット線に印加してキャパシタ1320を充電することによって、データが書き込まれる。メモリからデータを読み出すために、センスアンプ1326は、基準ビット線におけるキャパシタ1312に記憶された電圧と、ビット線におけるキャパシタ1324に記憶された電圧との差を検出して出力値を生成する。ビット線の値が決定された後、適切な電荷をキャパシタ1324に蓄積させることによって、その値がビット線に再書き込みされる。すなわち、キャパシタ1324は、セルによって記憶されたデータの正しい値を維持するために周期的に再充電される。DRAMメモリセルは、記憶されたデータを表すキャパシタの電荷を維持するために周期的にリフレッシュされなければならないが、SSDメモリセルよりも短いアクセス時間を有し得る。
次に図14を参照すると、SSDメモリのブロック図が示されている。SSDは、プロセッサ1404およびバッファ回路1406を有するSSDコントローラ1402を備え、その各々が、マルチプレクサ/デマルチプレクサ1408とインターフェースする。マルチプレクサ/デマルチプレクサ回路1408は、複数のSSD1410〜1416のうちの1つからデータを受け取り、複数のSSD1410〜1416のうちの1つにデータを供給する。インターフェース回路1418は、SSDと、メモリ制御回路203のメモリコントローラなどのデバイスのメモリインターフェースとの間でのデータ転送を可能にする。
次に図15を参照すると、図14のSSDのメモリエレメントのブロック図が示されている。図15のメモリエレメントは、ソース1504およびビット線によって制御されるドレイン1506を有する基板1502を含む。ワード線は、酸化物層1514上のフローティングゲート1512から酸化物層1510によって分離された制御ゲート1508を有するゲートエレメントを制御する。DRAMおよびSSDメモリデバイスに関連する回路の例が示されているが、他の回路を実装することもできることを理解されたい。
図16は、複数のメモリタイプを実装するキーバリューストアを可能にする回路のブロック図である。キーバリューストアは、通信またはネットワーク・インターフェースを介して(アドレスでインデックス付けされるのではなく)関連するキーを持つ値を保管および検索することを可能にする。集積回路1602は、データを受信するために1つ以上のネットワークインターフェース1608に結合されたI/Oブロック1606およびデータを出力するために1つ以上のネットワークインターフェース1612に結合されたI/Oブロック1610とインターフェースするキーバリューストア制御回路1604で実施することができる。キーバリューストア制御回路1604は、上述したような、メモリ制御回路203に従って実現することができる。図16の実装形態によれば、メモリインターフェース1614は、ここではDRAMとして示される第1の複数のメモリデバイス1616のうちの1つ以上のメモリデバイスと通信することを可能にし、第2のメモリインターフェース1618は、ここではSSDとして示される第2の複数のメモリデバイス1620のうちの1つ以上のメモリデバイスと通信することを可能にする。
SSDは、低コストと低消費電力を含む多くの利点を提供する。しかし、より重要なのは、SSDは、キーバリューストアによって、より少ないピン(たとえば4ピン)で、著しく大きな記憶密度(500GBメモリなど)を提供できることである。つまり、SSDは、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、又はPCIe(Peripheral Component Interconnect Express)などの高速シリアルインターフェースを使用するため、入力/出力(I/O)ピンはほとんど必要ない。対照的に、DRAMスモールアウトラインデュアルインラインメモリモジュール(SODIMM)インターフェースでは、8GBのストレージを接続するために約140本のI/Oピンが必要である。SSDは一般的にDRAMに比べてアクセス速度が遅いが、大きなデータブロックがSSDに格納される場合など、データが適切なメモリデバイスに格納される場合には、回路の動作を改善させることができる。
メモリインターフェース1614及び1618は、例えば、図2を参照して上述したように実施することができる。DRAMおよびSSDが例として示されているが、他のタイプのメモリエレメントを実装することができ、特定のタイプのメモリデバイスの選択は、メモリデバイスの動作パラメータに基づくことを理解されたい。
キーバリューストアのデータにアクセスするための1つ以上のメモリエレメントを選択することにより、異なるメモリデバイスのアクセス特性を考慮して、キーバリューストアの様々なデータに使用するメモリデバイスのタイプを決定することによって、キーバリューストアの効率的な動作が可能になる。一実施形態によれば、メモリ管理回路が、データブロックを第1のデータ部分と第2のデータ部分とに分割し、第1のデータ部分と第2のデータ部分が、異なるメモリタイプに供給される。別の実施形態によれば、データ(フルデータブロックまたはデータブロックの一部として)は、例えばアクセスの速度または頻度などのアクセス基準に基づいて選択されたメモリタイプにルーティングされる。
SSDの1つの重要な側面は、ブロック単位のアクセス特性と、低いI/Oピン要件に関連している。このアクセス特性は、キーバリューストアを実施するためのいくつかのアプリケーションにおいて有害であり得るが、このアクセス特性は、他のアプリケーションにおいて有利に使用され得る。例えば、ページサイズ(例えば、4キロバイトのページサイズ)より小さいSSD上のアクセスは、非常に非効率的になる可能性がある。したがって、アクセス性能を最大にするために、DRAMとSSDとの間でデータを分配するためSSDに加えてDRAMが設けられる。しかし、DRAMは、データを転送するためのI/Oピンの要件がより大きい。したがって、ハイブリッド実装におけるメモリエレメントの選択は、いくつかの要因を考慮に入れることができる。
一実施形態によれば、キーバリューストアにアクセスまたは格納されるデータは、2つの部分に分割される。複数のページサイズで構成される値の部分はSSDに格納され、残りはDRAMに格納される。したがって、SSDは、フルページサイズでのみアクセスされ、アクセス性能を最大化する。DRAMとSSDの間でリストを維持し、値を移動する必要があるかもしれないが、ハイブリッドアーキテクチャは、大幅に改善された性能を提供する。
次に図17を参照すると、ある構成に従って、プログラマブルリソースを有するデバイスをプログラミングするためのシステムのブロック図が、示されている。詳細には、コンピュータ1702は、メモリ1706から回路設計1704を受信するように結合され、不揮発性メモリ1706に格納されるコンフィギュレーションビットストリームを生成する。以下でより詳細に説明するように、回路設計は、ハードウェア記述言語(HDL)で定義された回路設計などの高レベル設計であってもよい。また、コンピュータは、不揮発性メモリ1708に格納され、図18で後述する集積回路などのプログラマブル集積回路であってもよい集積回路1710に提供されるコンフィギュレーションビットストリームを生成するソフトウェアを実行するように構成されてもよい。以下でより詳細に説明するように、コンフィギュレーションビットストリームのビットは、集積回路のプログラマブルリソースを構成するために使用される。
次に図18を参照すると、図1〜図5の回路を含むプログラマブルリソースを有するデバイスのブロック図が示されている。プログラマブルリソースを有するデバイスは、プログラマブルリソースを有する特定用途向け集積回路(ASIC)などの任意のタイプの集積回路デバイスで実施されてもよいが、他のデバイスは、専用プログラマブルロジックデバイス(PLD)を含む。PLDの1つのタイプは、コンプレックスプログラマブルロジックデバイス(CPLD)である。CPLDは、インターコネクトスイッチマトリクスによって互いに接続され、入出力(I/O)リソースに接続された2つ以上の「機能ブロック」を含む。CPLDの各機能ブロックは、プログラマブルロジックアレイ(PLA)又はプログラマブルアレイロジック(PAL)デバイスで使用されるものと同様の2レベルAND/OR構造を含む。別のタイプのPLDは、フィールドプログラマブルゲートアレイ(FPGA)である。典型的なFPGAでは、コンフィギュラブルロジックブロック(CLB)のアレイが、プログラマブル入出力ブロック(IOB)に結合されている。CLBとIOBは、プログラマブルルーティングリソースの階層によって相互接続されている。これらのCLB、IOB、およびプログラマブルルーティングリソースは、通常はオフチップメモリからコンフィギュレーションビットストリームをFPGAのコンフィギュレーションメモリセルにロードすることによってカスタマイズされる。これらのタイプのプログラマブルロジックデバイスの両方について、デバイスの機能は、その目的のためにデバイスに提供されるコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。コンフィギュレーションデータビットは、揮発性メモリ(例えば、FPGAおよびいくつかのCPLDにおけるようなスタティックメモリセル)、不揮発性メモリ(例えば、いくつかのCPLDにおけるようなフラッシュメモリ)、または任意の他のタイプのメモリセルに保存することができる。
図18のデバイスは、マルチギガビットトランシーバ(MGT)1801、CLB1802、ランダムアクセスメモリブロック(BRAM)1803、入出力ブロック(IOB)1804、コンフィギュレーションおよびクロッキングロジック(CONFIG/CLOCKS)1805、デジタル信号処理ブロック(DSP)1806、特殊化された入出力ブロック(I/O)1807(例えば、コンフィギュレーションポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログ−デジタルコンバータ、システム監視ロジックなどの他のプログラマブルロジック1808を含む多数の異なるプログラマブルタイルを有するFPGAアーキテクチャ1800を含む。いくつかのFPGAはまた、例えば、ソフトウェアアプリケーションを実行するために使用され得る専用プロセッサブロック(PROC)1810を含む。
いくつかのFPGAでは、各プログラマブルタイルは、各隣接するタイル内の対応するインターコネクトエレメントとの標準化された接続部を有するプログラマブルインターコネクトエレメント(INT)1811を含む。したがって、プログラマブルインターコネクトエレメントが一緒になって、図示されたFPGAのためのプログラマブルインターコネクト構造を実現する。プログラマブルインターコネクトエレメント1811はまた、図18の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジックエレメントとの接続部を含む。
例えば、CLB1802は、ユーザロジックを実装するようにプログラムすることができるコンフィギュラブルロジックエレメント(CLE)1812及び単一のプログラマブルインターコネクトエレメント1811を含むことができる。BRAM1803は、1つ以上のプログラマブルインターコネクトエレメントに加えて、BRAMロジックエレメント(BRL)1813を含むことができる。BRAMは、コンフィギュレーションロジックブロックの分散RAMとは別個の専用メモリを含む。通常、タイルに含まれるインターコネクトエレメントの数は、タイルの高さに依存する。図示の構成では、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数を使用することもできる。DSPタイル1806は、適切な数のプログラマブルインターコネクトエレメントに加えて、DSPロジックエレメント(DSPL)1814を含むことができる。IOB1804は、例えば、プログラマブルインターコネクトエレメント1811の1つのインスタンスに加えて、入出力ロジックエレメント(IOL)1815の2つのインスタンスを含むことができる。デバイスの接続部の位置は、その目的のためにデバイスに提供されたコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。プログラマブルインターコネクトは、コンフィギュレーションビットストリームのビットに応答して、インターコネクトラインを含む接続部が、プログラマブルロジックに実装された回路、またはBRAMもしくはプロセッサなどの他の回路に様々な信号を結合するために使用されることを可能にする。
図示された構成では、ダイの中心付近のカラム領域が、コンフィギュレーション、クロック、および他の制御ロジックのために使用される。このカラムから伸びるコンフィギュレーション/クロック分配領域1809は、FPGAの幅全体にわたってクロックおよびコンフィギュレーション信号を分配するために使用される。図18に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する規則的なカラム構造を中断させる追加のロジックブロックを含む。追加のロジックブロックは、プログラマブルブロックおよび/または専用ロジックとすることができる。例えば、図18に示すプロセッサブロックPROC1810は、CLBおよびBRAMのいくつかのカラムにまたがる。
図18は、例示的なFPGAアーキテクチャのみを示すことが意図されている。カラム内のロジックブロックの数、カラムの相対的な幅、カラムの数と順序、カラムに含まれるロジックブロックのタイプ、ロジックブロックの相対的なサイズ、および図18の上部に含まれているインターコネクト/ロジックの実装は、単に例示的なものである。例えば、実際のFPGAでは、ユーザーロジックの効率的な実装を容易にするために、CLBが現れる場所には、1つより多いCLBの隣接するカラムが通常含まれている。図18の構成は、プログラマブルリソースを有する集積回路に関するものであるが、以下でより詳細に説明する回路および方法は、任意のタイプのASICで実施できることを理解されたい。
次に図19を参照すると、図18のデバイスのコンフィギュラブルロジックエレメントのブロック図が示されている。具体的には、図19は、図18のコンフィギュレーションロジックブロック1802のコンフィギュラブルロジックエレメントを、簡略化した形で示す。図19の構成では、スライスM1901は、6つのLUTデータ入力端子A1〜A6、B1〜B6、C1〜C6、およびD1〜D6によってそれぞれ駆動され、それぞれが2つのLUT出力信号O5およびO6を出力する4つのルックアップテーブル(LUTM)1901A〜1901Dを含む。LUT1901A〜1901DからのO6出力端子は、それぞれスライス出力端子A〜Dを駆動する。LUTデータ入力信号は、プログラマブルインターコネクトエレメント1911によって実装され得る入力マルチプレクサを介してFPGAインターコネクト構造によって供給され、LUT出力信号もインターコネクト構造に供給される。スライスMはまた、出力端子AMUX〜DMUXを駆動する出力選択マルチプレクサ1911A〜1911Dと、メモリエレメント1902A〜1902Dのデータ入力端子を駆動するマルチプレクサ1912A〜1912Dと、組合せマルチプレクサ1916,1918,および1919と、バウンスマルチプレクサ回路1922〜1923と、インバータ1905およびマルチプレクサ1906(共同して、入力クロックパス上に任意選択の反転を提供する)によって表される回路と、マルチプレクサ1914A〜1914D、1915A〜1915D、1920〜1921および排他的ORゲート1913A〜1913Dを有するキャリーロジックとを含む。これらの要素のすべてが、図19に示すように結合されている。図19に示すマルチプレクサのセレクト入力が示されていない場合、セレクト入力はコンフィギュレーションメモリセルによって制御される。すなわち、コンフィギュレーションメモリセルに記憶されたコンフィギュレーションビットストリームのコンフィギュレーションビットが、マルチプレクサへの正しい入力を選択するためにマルチプレクサのセレクト入力に結合される。よく知られているこれらのコンフィギュレーションメモリセルは、図を分かりやすくするために、図19から、ならびに本明細書の他の選択された図から省略されている。
図示された構成では、各メモリエレメント1902A〜1902Dは、同期または非同期のフリップフロップまたはラッチとして機能するようにプログラムされてもよい。同期と非同期の機能間の選択が、Sync/Asynch選択回路1903をプログラムすることによって、スライス内の4つのメモリエレメントのすべてに対して行われる。S/R(セット/リセット)入力信号がセット機能を提供するように、メモリエレメントがプログラムされる場合、REV入力端子は、リセット機能を提供する。S/R入力信号がリセット機能を提供するように、メモリエレメントがプログラムされる場合、REV入力端子は、セット機能を提供する。メモリエレメント1902A〜1902Dは、例えばグローバルクロックネットワークまたはインターコネクト構造によって供給されるクロック信号CKによってクロックされる。このようなプログラマブルメモリエレメントは、FPGA設計の分野において周知である。各メモリエレメント1902A〜1902Dは、レジスタード出力信号AQ〜DQをインターコネクト構造に供給する。各LUT1901A〜1901Dは、2つの出力信号O5とO6を供給するので、LUTは、5つの共有入力信号(IN1〜IN5)を有する2つの5入力LUTとして、または入力信号IN1〜IN6を有する1つの6入力LUTとして機能するように構成され得る。
図19の構成では、各LUTM1901A〜1901Dは、いくつかのモードのいずれかで機能することができる。ルックアップテーブルモードでは、各LUTは、入力マルチプレクサを介してFPGAインターコネクト構造によって供給される6つのデータ入力信号IN1〜IN6を有する。64個のデータ値の1つが、信号IN1〜IN6の値に基づいてコンフィギュレーションメモリセルからプログラム可能に選択される。RAMモードの場合、各LUTは、1つの64ビットRAMまたはシェアードアドレッシングを備えた2つの32ビットRAMとして機能する。RAMの書き込みデータは、(LUT1901A〜1901Cに対してマルチプレクサ1917A〜1917Cを介して)入力端子DI1を介して64ビットRAMに、または入力端子DI1およびDI2を介して2つの32ビットRAMに供給される。LUT RAMにおけるRAM書き込み動作は、マルチプレクサ1906からのクロック信号CKによって、並びにクロックイネーブル信号CEまたは書き込みイネーブル信号WEのいずれかを選択的に通過させることができるマルチプレクサ1907からの書き込みイネーブル信号WENによって制御される。シフトレジスタモードでは、各LUTは、2つの16ビットシフトレジスタとして、または2つの16ビットシフトレジスタを直列に結合して1つの32ビットシフトレジスタを作成するようにして、機能する。シフトイン信号が、入力端子DI1およびDI2の一方または両方を介して供給される。16ビットおよび32ビットのシフトアウト信号が、LUT出力端子を介して供給され、32ビットのシフトアウト信号は、LUT出力端子MC31を介して、より直接的に供給されてもよい。LUT1901Aの32ビットシフトアウト信号MC31が、出力選択マルチプレクサ1911DおよびCLE出力端子DMUXを介して、シフトレジスタチェーニングのために一般的なインターコネクト構造に供給されてもよい。したがって、上述の回路および方法は、図18および図19のデバイスなどのデバイス、または任意の他の適切なデバイスで実施することができる。
したがって、メモリシステムの動作を制御するための新しい回路および方法が説明されたことが理解できる。当業者であれば、開示された発明を組み込んだ多くの代替物および同等物が存在することが分かるであろう。その結果として、本発明は、上記によって限定されるものではなく、以下の特許請求の範囲によってのみ限定される。

Claims (15)

  1. 異なるタイプのメモリを有するメモリシステムの動作を制御する回路であって、
    第1のタイプのメモリエレメント及び第1のアクセス時間を有する第1のメモリと
    前記第1のタイプのメモリエレメントとは異なる第2のタイプのメモリエレメント及び第2のアクセス時間を有する第2のメモリと、
    前記第1のメモリ及び前記第2のメモリへのアクセスを可能にするメモリ制御回路であって、前記メモリ制御回路が、前記第1のメモリ及び前記第2のメモリに格納されるデータのサイズの閾値を決定するプロファイラを備え、前記第1のメモリに対応するアクセス頻度が所定のアクセス頻度と異なると判定された場合、前記閾値が調整される、メモリ制御回路と、
    前記第2のメモリに結合され、前記第1のアクセス時間と前記第2のアクセス時間との差を補償する遅延バッファと、
    前記第1のメモリの出力データ及び前記第2のメモリの遅延された出力データをマージして、順序付けられた出力データを生成する回路と
    を備える回路。
  2. 前記メモリ制御回路が、前記第1のメモリに対応付けられた第1のメモリコントローラと、前記第2のメモリに対応付けられた第2のメモリコントローラと、前記第1のメモリコントローラ及び前記第2のメモリコントローラに結合され、前記第1のメモリ及び前記第2のメモリのうちの所望のメモリへのアクセスを可能にするメモリ選択回路とを備える、請求項1に記載の回路。
  3. 前記第1のメモリが、SSDメモリを含み、前記第2のメモリが、DRAMを含む、請求項1又は2に記載の回路。
  4. 前記遅延バッファが、所定の遅延の間、前記データをバッファリングすることによって、前記第1のアクセス時間と前記第2のアクセス時間との前記差を補償する、PLD上のRAMのブロックを含む、請求項1から3のいずれか一項に記載の回路。
  5. データが、前記所定の遅延後に前記RAMのブロックから読み出される、請求項4に記載の回路。
  6. 前記PLDが、コンフィギュレーションビットを受け取るように結合され、前記RAMのブロックが、前記コンフィギュレーションビットを使用してプログラムされるプログラマブルインターコネクトエレメントを使用して前記第2のメモリに結合される、請求項4又は5に記載の回路。
  7. 前記第1のメモリが、不揮発性メモリを含み、前記第2のメモリが、揮発性メモリを含む、請求項1から6のいずれか一項に記載の回路。
  8. 前記第1のメモリ及び前記第2のメモリとのメモリアクセスを制御するメモリトランスレータを更に含み、前記メモリトランスレータが、前記第1のメモリにアクセスするか又は前記第2のメモリにアクセスするかを決定する、請求項1から7のいずれか一項に記載の回路。
  9. 前記メモリトランスレータが、前記第1のメモリ及び前記第2のメモリに対応するアクセス時間に関する情報を格納するための前記プロファイラを備え、前記メモリトランスレータが、前記プロファイラに格納された前記情報に基づいて、前記第1のメモリにアクセスするか又は前記第2のメモリにアクセスするかを決定する、請求項8に記載の回路。
  10. 異なるタイプのメモリを有するメモリシステムの動作を制御する方法であって、
    第1のタイプのメモリエレメント及び第1のアクセス時間を有する第1のメモリにアクセスすることと、
    前記第1のタイプのメモリエレメントとは異なる第2のタイプのメモリエレメント及び第2のアクセス時間を有する第2のメモリにアクセスすることと、
    前記第1のメモリ及び前記第2のメモリに格納されるデータのサイズの閾値を決定することと、
    前記第1のメモリに対応するアクセス頻度が所定のアクセス頻度と異なると判定された場合、前記閾値を調整することと、
    前記第2のメモリによって出力されたデータを、前記第1のアクセス時間と前記第2のアクセス時間との差を補償するために、遅延バッファに結合することと、
    前記第1のメモリの出力データ及び前記第2のメモリの遅延された出力データをマージして、順序付けられた出力データを生成することと
    を含む方法。
  11. 前記第1のメモリにアクセスすることは、前記第1のメモリに対応付けられた第1のメモリコントローラを介して前記第1のメモリにアクセスすることを含み、前記第2のメモリにアクセスすることは、前記第2のメモリに対応付けられた第2のメモリコントローラを介して前記第2のメモリにアクセスすることを含む、請求項10に記載の方法。
  12. 前記第1のメモリコントローラ及び前記第2のメモリコントローラに結合され、前記第1のメモリ及び前記第2のメモリのうちの選択されたメモリへのアクセスを可能にするメモリ選択回路を実装することを更に含む、請求項11に記載の方法。
  13. 第1のメモリにアクセスすることは、SSDメモリを実装することを含む、請求項10から12のいずれか一項に記載の方法。
  14. 第2のメモリにアクセスすることは、DRAMを実装することを含む、請求項10から13のいずれか一項に記載の方法。
  15. 前記第2のメモリによって出力されたデータを遅延バッファに結合することが、データをPLD上のRAMのブロックに結合することを含む、請求項14に記載の方法。
JP2017540089A 2015-01-28 2015-11-24 ハイブリッドメモリシステムの動作を制御するための回路および方法 Active JP6530815B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/607,978 US9711194B2 (en) 2015-01-28 2015-01-28 Circuits for and methods of controlling the operation of a hybrid memory system
US14/607,978 2015-01-28
PCT/US2015/062364 WO2016122762A1 (en) 2015-01-28 2015-11-24 Circuits for and methods of controlling the operation of a hybrid memory system

Publications (2)

Publication Number Publication Date
JP2018503921A JP2018503921A (ja) 2018-02-08
JP6530815B2 true JP6530815B2 (ja) 2019-06-12

Family

ID=54979922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017540089A Active JP6530815B2 (ja) 2015-01-28 2015-11-24 ハイブリッドメモリシステムの動作を制御するための回路および方法

Country Status (6)

Country Link
US (1) US9711194B2 (ja)
EP (1) EP3251017B1 (ja)
JP (1) JP6530815B2 (ja)
KR (1) KR102446825B1 (ja)
CN (1) CN107209734B (ja)
WO (1) WO2016122762A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921757B1 (en) * 2016-03-31 2018-03-20 EMC IP Holding Company LLC Using an FPGA for integration with low-latency, non-volatile memory
US9698793B1 (en) * 2016-04-30 2017-07-04 Arista Networks, Inc. Live system upgrade
TW202404049A (zh) 2016-12-14 2024-01-16 成真股份有限公司 標準大宗商品化現場可編程邏輯閘陣列(fpga)積體電路晶片組成之邏輯驅動器
US11625523B2 (en) 2016-12-14 2023-04-11 iCometrue Company Ltd. Logic drive based on standard commodity FPGA IC chips
US10482129B1 (en) 2017-04-11 2019-11-19 Xilinx, Inc. Pipelined database processing circuit and method
US10845866B2 (en) * 2017-06-22 2020-11-24 Micron Technology, Inc. Non-volatile memory system or sub-system
KR102443106B1 (ko) * 2017-06-23 2022-09-14 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 기술 및 컴퓨터 시스템
US10447274B2 (en) 2017-07-11 2019-10-15 iCometrue Company Ltd. Logic drive based on standard commodity FPGA IC chips using non-volatile memory cells
US10957679B2 (en) 2017-08-08 2021-03-23 iCometrue Company Ltd. Logic drive based on standardized commodity programmable logic semiconductor IC chips
US10630296B2 (en) * 2017-09-12 2020-04-21 iCometrue Company Ltd. Logic drive with brain-like elasticity and integrality based on standard commodity FPGA IC chips using non-volatile memory cells
US10839286B2 (en) * 2017-09-14 2020-11-17 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
US10354733B1 (en) * 2017-10-17 2019-07-16 Xilinx, Inc. Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC
US10396799B1 (en) 2017-12-12 2019-08-27 Xilinx, Inc. Circuit for and method of accessing memory elements in an integrated circuit device
US10608642B2 (en) 2018-02-01 2020-03-31 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile radom access memory cells
US10623000B2 (en) 2018-02-14 2020-04-14 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips
US10705963B2 (en) 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10809942B2 (en) * 2018-03-21 2020-10-20 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10608638B2 (en) 2018-05-24 2020-03-31 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips
US10892011B2 (en) 2018-09-11 2021-01-12 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells
US11309334B2 (en) 2018-09-11 2022-04-19 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells
US10937762B2 (en) 2018-10-04 2021-03-02 iCometrue Company Ltd. Logic drive based on multichip package using interconnection bridge
US11616046B2 (en) 2018-11-02 2023-03-28 iCometrue Company Ltd. Logic drive based on chip scale package comprising standardized commodity programmable logic IC chip and memory IC chip
US11211334B2 (en) 2018-11-18 2021-12-28 iCometrue Company Ltd. Logic drive based on chip scale package comprising standardized commodity programmable logic IC chip and memory IC chip
US11227838B2 (en) 2019-07-02 2022-01-18 iCometrue Company Ltd. Logic drive based on multichip package comprising standard commodity FPGA IC chip with cooperating or supporting circuits
US10985154B2 (en) 2019-07-02 2021-04-20 iCometrue Company Ltd. Logic drive based on multichip package comprising standard commodity FPGA IC chip with cryptography circuits
US11887930B2 (en) 2019-08-05 2024-01-30 iCometrue Company Ltd. Vertical interconnect elevator based on through silicon vias
US11637056B2 (en) 2019-09-20 2023-04-25 iCometrue Company Ltd. 3D chip package based on through-silicon-via interconnection elevator
US11600526B2 (en) 2020-01-22 2023-03-07 iCometrue Company Ltd. Chip package based on through-silicon-via connector and silicon interconnection bridge
KR20210127339A (ko) 2020-04-14 2021-10-22 에스케이하이닉스 주식회사 리프레시 주기가 다른 다수의 영역을 구비한 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11715514B2 (en) 2021-05-06 2023-08-01 Advanced Micro Devices, Inc. Latch bit cells
US11527270B2 (en) 2021-05-06 2022-12-13 Advanced Micro Devices, Inc. Hybrid library latch array
US12009025B2 (en) 2021-06-25 2024-06-11 Advanced Micro Devices, Inc. Weak precharge before write dual-rail SRAM write optimization

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446141B1 (en) 1999-03-25 2002-09-03 Dell Products, L.P. Storage server system including ranking of data source
GB2357602A (en) * 1999-12-22 2001-06-27 Nokia Mobile Phones Ltd Memory controller for a memory array comprising different memory types
US7584335B2 (en) 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
KR101626117B1 (ko) 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
CN102274245B (zh) * 2010-06-09 2014-06-11 景岳生物科技股份有限公司 新颖乳杆菌及其组合物和在制备改善糖尿病及其并发症药物中的应用
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
JP6170553B2 (ja) * 2012-06-08 2017-07-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 異種プロセッサを使用するアプリケーションに低レイテンシを提供するためのシステムおよび方法
US9405621B2 (en) 2012-12-28 2016-08-02 Super Talent Technology, Corp. Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
US9456353B2 (en) * 2014-07-15 2016-09-27 Alcatel Lucent Multi-board architecture for wireless transceiver station

Also Published As

Publication number Publication date
US9711194B2 (en) 2017-07-18
JP2018503921A (ja) 2018-02-08
KR20170107559A (ko) 2017-09-25
WO2016122762A1 (en) 2016-08-04
CN107209734B (zh) 2019-02-12
KR102446825B1 (ko) 2022-09-22
EP3251017B1 (en) 2019-01-09
CN107209734A (zh) 2017-09-26
EP3251017A1 (en) 2017-12-06
US20160217835A1 (en) 2016-07-28

Similar Documents

Publication Publication Date Title
JP6530815B2 (ja) ハイブリッドメモリシステムの動作を制御するための回路および方法
JP6564375B2 (ja) 高スループットのキーバリューストアの実現のためのメモリ構成
US9135185B2 (en) Die-stacked memory device providing data translation
US9344091B2 (en) Die-stacked memory device with reconfigurable logic
JP6573834B2 (ja) メモリを有する集積回路デバイスおよび集積回路デバイスにメモリを実装する方法
CN112749107B (zh) 用于在存储附近进行分级排序加速的系统和方法
EP3805937B1 (en) Memory device including interface circuit and method of operating the same
JP2004529403A (ja) ユーザによる構成可能なオンチップメモリシステム
US9189199B2 (en) Folded FIFO memory generator
JP6517626B2 (ja) 再構成可能な半導体装置
US9361956B2 (en) Performing logical operations in a memory
CN114402307A (zh) 具有集成数据移动器的存储器芯片
US9478272B1 (en) Configurable storage blocks with embedded first-in first-out and last-in first-out circuitry
Khalifa et al. Memory controller architectures: A comparative study
US9837133B1 (en) Address arithmetic on block RAMs
CN113448498A (zh) 非易失性存储器接口
Knödtel et al. Check for
VinusTyagi et al. Speed Enhancement In DDR3 SDRAM Using FIFO Synchronization Technique

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170926

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181126

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181126

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190320

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190517

R150 Certificate of patent or registration of utility model

Ref document number: 6530815

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250