JP2017502402A - 高スループットのキーバリューストアの実現のためのメモリ構成 - Google Patents

高スループットのキーバリューストアの実現のためのメモリ構成 Download PDF

Info

Publication number
JP2017502402A
JP2017502402A JP2016537498A JP2016537498A JP2017502402A JP 2017502402 A JP2017502402 A JP 2017502402A JP 2016537498 A JP2016537498 A JP 2016537498A JP 2016537498 A JP2016537498 A JP 2016537498A JP 2017502402 A JP2017502402 A JP 2017502402A
Authority
JP
Japan
Prior art keywords
memory
data
key
circuit
routing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016537498A
Other languages
English (en)
Other versions
JP6564375B2 (ja
JP2017502402A5 (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 JP2017502402A publication Critical patent/JP2017502402A/ja
Publication of JP2017502402A5 publication Critical patent/JP2017502402A5/ja
Application granted granted Critical
Publication of JP6564375B2 publication Critical patent/JP6564375B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Dram (AREA)

Abstract

データを処理するための回路が説明される。回路は、キーバリューストアデータトランザクションを実現するための要求を受信するための入力部(306)と、キーバリューストアに関連付けられた複数のメモリ装置(316,320)へのアクセスを可能にする異なるメモリタイプに関連付けられた複数のメモリインターフェイス(314,318)と、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するメモリ管理回路(108,304)とを含む。

Description

発明の分野
1つ以上の実現化例は一般に集積回路に関し、より特定的にはデータを処理するための回路およびデータを処理する方法に関する。
背景
集積回路は、データを処理するための装置において実現されてもよい。また、データは、データ伝送規格に準拠する公的プロトコルまたは専用プロトコルであり得る異なるプロトコルに従って処理されてもよい。しかしながら、所与のプロトコルに依存して、異なるハードウェア要素が必要とされる場合がある。さまざまなハードウェア要素の実現は、たとえばスループット、待ち時間および消費電力といった装置の性能に影響を与える場合がある。これらの性能基準の各々は、装置の評価において引き続き有意である。すなわち、回路開発者らは、装置によって消費される電力を減少させつつ、装置の速度を改良し続けている。
また、集積回路を実現するコストを下げるには相当な努力がいる。集積回路を実現するコストを下げる1つのやり方は、所与の回路がさまざまな異なる用途において使用されることを可能にすることである。すなわち、回路が、異なる構成で動作し、異なる回路を実現するようにプログラミング可能であれば、集積回路を有する、よりコスト効率の高い装置が達成され得る。回路改良から利益を得るかもしれないデータ処理の1つのエリアは、キーバリューストア(key-value store:KVS)の実現である。従来のサーバは、そのメインメモリをキーバリューストアのために使用する場合があり、クライアント装置とインターフェイス接続するためのネットワークアダプタを有する。データを格納するために異なるタイプのメモリが使用可能であるが、異なるタイプのメモリは異なる動作パラメータを有しており、KVSの動作に影響を与えるおそれがある。したがって、フレキシビリティを提供し、ひいてはデータ処理の性能を改良する装置に対するニーズが存在する。
概要
データを処理するための回路が説明される。回路は、キーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、キーバリューストアに関連付けられた複数のメモリ装置へのアクセスを可能にする異なるメモリタイプに関連付けられた複数のメモリインターフェイスと、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するメモリ管理回路とを含む。
データを処理するための回路は代替的には、キーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、キーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置へのアクセスを可能にする第1のメモリインターフェイスと、キーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置へのアクセスを可能にする第2のメモリインターフェイスと、入力部と第1および第2のメモリインターフェイスとの間に結合されたメモリ管理回路とを含んでいてもよく、メモリ管理回路は、データ転送基準に基づいて、第1および第2のメモリインターフェイスを介したデータのルーティングを制御する。
データを処理する方法も説明される。方法は、キーバリューストアに関連付けられたデータトランザクションを実現するための要求を受信するステップと、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップと、第1のメモリインターフェイスを介してキーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置にアクセスすることを可能にするステップと、第2のメモリインターフェイスを介してキーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置にアクセスすることを可能にするステップとを含む。
データを処理するための回路のブロック図である。 図1の回路のメモリインターフェイスのブロック図である。 複数のメモリタイプを実現するキーバリューストアを可能にするための回路のブロック図である。 複数のメモリタイプを実現し、アクセス帯域幅を改良するために複数のインターフェイスを並行して使用するキーバリューストアを可能にするための回路のブロック図である。 第1のタイプのメモリ用のメモリコントローラのブロック図である。 第2のタイプのメモリ用のメモリコントローラのブロック図である。 キーバリューストアの実現における異なるタイプのメモリへのデータのブロックのデータの割当てを示す図である。 ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)のブロック図である。 図8のDRAMのメモリ素子のブロック図である。 ソリッドステートドライブ(solid-state drive:SSD)メモリのブロック図である。 図9のソリッドステートドライブのメモリ素子のブロック図である。 キーバリューストアに関連付けられたデータの処理を示すフロー図である。 キーバリューストアの動作を示すテーブルを含む図である。 キーバリューストアを実現するためのデータパケットのフィールドを示す図である。 キーバリューストアに関連付けられたデータを処理する方法を示すフローチャートである。 プログラマブルリソースを有する装置をプログラミングするためのシステムのブロック図である。 プログラマブルリソースを有する集積回路のブロック図である。 図17の集積回路の構成可能論理素子のブロック図である。
図面の詳細な説明
キーバリューストア(KVS)は、大抵のデータセンターにおいて根本的に重要なミドルウェア層である。キーバリューストアの機能は、通信インターフェイスまたはネットワークインターフェイスを通して(アドレスでインデックス化されるのではなく)キーに関連付けられた値を格納し、検索することである。近年、キーバリューストアは、最も頻繁にアクセスされたオブジェクトをキャッシュすることを介して、それらのウェブでの存在感の性能を加速するために、データセンターにおいて広範に導入されている。KVSサーバは典型的には大規模データベースの内容をキャッシュするために使用されるため、そのようなKVSサーバの重要な局面はその記憶密度であり、キャッシュが大きいほど、KVSはより効果的になる。さらに、KVSサーバのスループットおよび待ち時間は、ウェブサイトが組立てられ得る速度を本質的に決定するため、重要な特性である。最後に、サーバの(そのエネルギー消費によって支配される)運営経費がその資本化経費よりも高くなり始めるにつれて、消費電力はますます重要になる。
以下に述べられるさまざまな回路および方法は、プログラマブル論理またはカスタムICにおけるキーバリューストアの実現のためのソリッドステートドライブ(SSD)支援データフローアーキテクチャを説明する。さまざまな実現化例の1つの局面は、異なるタイプのメモリの組合せを通して、極めて高いスループット(たとえば80Gbps)が、非常に高い記憶密度(たとえば数テラバイト)ならびに非常に少ない待ち時間および消費電力とともに達成可能である、ということである。以下に述べられる回路および方法は、非常に少ない待ち時間および高い電力効率とともに高いデータスループットを依然として提供しつつ、たとえばSSDおよびDRAMを有するハイブリッドメモリアーキテクチャの使用を通して、ユーザが必要な記憶密度を多数テラバイトまでスケール変更することを可能にする。より特定的には、この性能は、DRAMとSSDとの間でのデータのスマートな分散を通して、およびデータを多くのSSDに並行して格納することを通して達成可能であり、それにより、過剰プロビジョニングを通してアクセス帯域幅を増加させる。そのアーキテクチャは、以下により詳細に説明されるフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)などのプログラマブル論理装置か、または特定用途向け集積回路(application specific integrated circuit:ASIC)のいずれかにおいて実現されてもよいが、向上したKVSアーキテクチャの必要とされるフレキシビリティにより、それは、FPGAまたは他のプログラマブル論理装置により適するようになる。
まず図1を参照して、データを処理するための回路のブロック図が示される。特に、ネットワークL2−L4処理ブロック102は、KVSに関連付けられたデータをKVSプロトコル処理ブロック104に提供する。ネットワーク層処理ブロックは、データが開放型システム間相互接続(Open Systems Interconnection:OSI)参照モデルに従って処理されることを可能にする。ここで、L2層は、通信リンクを動作させるための手順を規定し、パケットエラーを検出して訂正するデータリンク層に関する。L3層は、データがネットワーク装置間をどのように転送されるかを判断し、パケットをユニークなネットワーク装置アドレスにルーティングすること可能にする。L4層は、ネットワークにおけるエンドツーエンドメッセージ配信を管理するトランスポート層に関する。図1の回路はOSI参照モデルに関し、ネットワーク層L2〜L4に言及しているが、ネットワーク層への言及は一例として提供され、回路および方法は任意のタイプのデータネットワーク、特にキーバリューストアを実現する任意のタイプのデータネットワークにおいて実現されてもよい、ということが理解されるべきである。
KVSプロトコル処理ブロック104によって生成されたデータは、メモリ管理回路108によって支援されるハッシュテーブルコントローラ106に提供される。メモリ管理回路108は、バリューストアコントローラ110に関連付けられた動作メモリを制御する。メモリ管理回路108は、バリューストアにおいてアドレスページを割当て、1つ以上のアドレスをハッシュテーブルに提供し、どのタイプのメモリがデータを受信するかを判断する。ハッシュテーブルメモリインターフェイス111はハッシュメモリにアクセスすることを可能にし、それはたとえばDRAMまたはSRAMであってもよく、もしくはそれに代わって、図17を参照して以下により詳細に説明されるプログラマブル論理装置のBRAM、または任意の他のメモリタイプであってもよい。ハッシュテーブルの実現およびKVSの動作は、図12〜14を参照して以下により詳細に説明される。バリューストアコントローラ110によって生成されたデータは、KVSプロトコルフォーマット化回路112に提供され、その出力は、ネットワークL2−L4処理ブロック114によって処理される。
バリューストアコントローラ110はまた、データをそのアドレスに従って複数のメモリインターフェイスにルーティングするメモリ管理回路108を介して、複数のメモリインターフェイスと通信するであろう。より特定的には、メモリインターフェイスタイプA120、メモリインターフェイスタイプB122、およびメモリインターフェイスタイプn124の各々は、n個の異なるタイプのメモリ素子へのアクセスを可能にする。以下により詳細に説明されるように、メモリインターフェイスタイプA120は、DRAMなどの第1のタイプのメモリとインターフェイス接続してもよい。メモリインターフェイスタイプB122は、第1のタイプのメモリとは異なる、SSDなどの第2のタイプのメモリとインターフェイス接続してもよい。メモリインターフェイスタイプnは、最初の2タイプのメモリとは異なる、従来の磁気ディスクドライブなどの他のタイプのメモリへのインターフェイスであってもよい。図2を参照して以下により詳細に説明されるように、各メモリインターフェイスは、複数のメモリ装置と通信してもよい。したがって、図1の回路は、メモリ装置の異なる特性を利用するために異なるメモリ装置を選択的に実現することにより、キーバリューストアの最も効率的な実現を可能にする。
より特定的には、図1の回路は、著しくより大きい記憶密度を可能にする(DRAMと組合せてSSDを使用することなどによる)ハイブリッドメモリアーキテクチャを使用するアーキテクチャを提供する。このハイブリッドメモリアーキテクチャは、極めて高いスループットおよび高密度のKVSの実現を可能にしつつ、はるかにより少ない消費電力を依然として可能にする。さらに、SSDを用いたカスタムハードウェアデータフローアーキテクチャのユニークな実現は、従来の装置と比べ、向上した応答時間を提供する。
KVSに関連付けられたパケットは、1つまたは複数のネットワークインターフェイスを通して受信されてもよい。ネットワークL2−L4処理回路102は層1〜4の処理を実現して、動作がストア動作か検索動作か、ならびにどのサイズのキーおよび値がキーバリューストア動作のためのものであるかを判断するためにKVSプロトコル層が処理されることを可能にする。典型的にはDRAMに格納されたハッシュテーブルに関連付けられたハッシュテーブルコントローラ106は、メモリのどこにキーバリューペアが位置すべきかを判断するためにアクセスされる。メモリ管理回路108は、異なるタイプのメモリ装置(たとえば、DRAM装置およびSSD装置)間でのデータの分散を決定して、パケットがKVSプロトコルに従ってKVSプロトコルフォーマット化回路112によって再フォーマット化され、ネットワークL2−L4処理回路114によって出力される前に、バリューストアコントローラ110が適切なメモリ(たとえば、適切なDRAMまたはSSDまたは双方)にアクセスすることを可能にする。
ここで図2を参照して、図1の回路のメモリインターフェイスのブロック図が示される。特に、メモリインターフェイス120〜124の各々は、複数のメモリコントローラおよび対応するメモリ装置に結合されたアービタ202を含んでいてもよい。たとえば、第1のメモリコントローラ204は第1のメモリ装置206に結合され、第2のメモリコントローラ208は第2のメモリ装置210に結合され、n番目のメモリコントローラ212はn番目の装置214に結合される。図5および図6を参照してより詳細に説明されるように、各メモリコントローラは、DRAMまたはSSDなどの選択されたタイプのメモリとのやりとりを可能にし、また、あるタイプのメモリに特有のものであってもよい。さらに説明されるように、メモリのタイプは、キーバリューストアにおいてデータの最も効率的な処理を可能にするための1つ以上の基準に基づいて選択されるであろう。
ここで図3を参照して、複数のメモリタイプを実現するキーバリューストアを可能にするための回路のブロック図が示される。集積回路302はキーバリューストア制御回路304を有して実現されてもよく、キーバリューストア制御回路304は、データを受信するために1つ以上のネットワークインターフェイス308に結合されたI/Oブロック306、およびデータを出力するために1つ以上のネットワークインターフェイス312に結合されたI/Oブロック310とインターフェイス接続している。図3の実現化例によれば、メモリインターフェイス314は、ここにDRAMとして図示された第1の複数のメモリ装置316のうちの1つ以上のメモリ装置と通信することを可能にし、第2のメモリインターフェイス318は、ここにSSDとして図示された第2の複数のメモリ装置320のうちの1つ以上のメモリ装置と通信することを可能にする。
SSDは、より低いコストおよび消費電力を含む多くの利点を提供する。しかしながら、より重要なことには、SSDは、キーバリューストアが、著しくより大きい記憶密度(500GBのメモリなど)をより少数のピン(たとえば、4つのピン)を通して接続することを可能にする。すなわち、SSDは、シリアル・アドバンスト・テクノロジー・アタッチメント(serial advanced technology attachment:SATA)、シリアル・アタッチドSCSI(SAS)、または周辺機器コンポーネント・インターコネクト・エクスプレス(peripheral component interconnect express:PCIe)といった高速シリアルインターフェイスを利用するため、必要とされる入力/出力(I/O)ピンがより少ない。対照的に、DRAM SODIMMは、8GBのストレージを接続するために約140本のI/Oピンを必要とする。SSDは一般的に、アクセス速度がDRAMと比べて遅いものの、より大きいデータブロックがSSDに格納される場合など、データがそれに適したメモリ装置に格納される場合には、回路の動作は改良され得る。SSDはNANDベースのフラッシュメモリであってもよく、または、高速シリアルインターフェイスと少ないI/Oピン要件とを有する他のタイプのフラッシュメモリであってもよい。
メモリインターフェイス314および318は、たとえば図2のメモリインターフェイスに従って実現されてもよい。DRAMおよびSSDが一例として図示されているが、他のタイプのメモリ素子が実現されてもよく、ここで、ある特定のタイプのメモリ装置の選択は、以下により詳細に説明されるようにメモリ装置の動作パラメータに基づく、ということが理解されるべきである。第1の複数のメモリ装置316および第2の複数のメモリ装置320のメモリ装置は集積回路302から離れて図示されているが、メモリ装置は集積回路302上で実現されてもよいこと、ならびに、キーバリューストアに関連付けられた異なるタイプの複数のメモリ装置を実現するための回路および方法は単一の集積回路において実現されてもよいことが理解されるべきである。
キーバリューストアのデータにアクセスするための1つ以上のメモリ素子の選択は、キーバリューストアのさまざまなデータのためにどのタイプのメモリ装置を使用すべきかを判断するために異なるメモリ装置のアクセス特性を検討することによって、キーバリューストアの効率的な動作を可能にする。一実現化例によれば、メモリ管理回路はデータブロックを第1のデータ部分および第2のデータ部分に分割し、ここで、第1のデータ部分および第2のデータ部分は別々のメモリタイプに提供される。別の実現化例によれば、メモリ管理回路は、たとえばアクセスの速度または頻度といったアクセス基準に基づいて、(データブロック全体またはデータブロックの一部としての)データを選択されたメモリタイプにルーティングする。
SSDの重要な一局面は、そのブロック的アクセス特性と少ないI/Oピン要件とに関する。このアクセス特性は、キーバリューストアを実現するためのいくつかの用途では有害となり得るものの、このアクセス特性は、キーバリューストアを実現するための他の用途では有利に使用可能である。たとえば、ページサイズ(たとえば、4キロバイトのページサイズ)よりも小さい、SSDに対するアクセスは、非常に非効率的になるおそれがある。したがって、アクセス性能を最大化するために、SSDに加えてDRAMが提供され、DRAMとSSDとの間でデータを分散する。しかしながら、DRAMは、データを転送するためにより多いI/Oピン要件を有する。したがって、ハイブリッド実現化例におけるメモリ素子の選択は、多くの要因を考慮に入れる場合がある。
一実現化例によれば、KVSにおいてアクセスされた、または格納されたデータは、2つの部分に分割される。複数のページサイズからなる値の部分はSSDに格納され、一方、残りはDRAMに格納される。したがって、SSDは全ページサイズでのみアクセスされ、アクセス性能を最大化する。リストを維持し、DRAMとSSDとの間で値を移動させるために追加のオーバーヘッドが必要とされ得るものの、ハイブリッドアーキテクチャは、著しく向上した性能を提供する。データの分割の一例は、図7を参照してより詳細に説明されるであろう。
これに代えて、しきい値よりも小さいサイズの値はDRAMに格納され、一方、より大きいサイズの値はSSDに格納される。すなわち、データのブロックを分割するのではなく、キーバリューストアに関連付けられたデータのブロックが、データブロックのサイズに基づいてDRAMまたはSSDのいずれかに格納されてもよい。この代替的な実現化例は、DRAMの密度および値の密度に整合する値サイズ分散を有する用途にとって有用である。
さらに別の実現化例によれば、異なるメモリタイプ間でのデータの分散は、アクセス頻度に基づいていてもよい。所与のメモリタイプへのアクセス時間は別のメモリタイプのものとは異なる場合があるため、頻繁にアクセスされるデータを高速アクセス時間を有するタイプのメモリに格納することが有益である場合がある。すなわち、頻繁にアクセスされるデータ値はDRAMに格納される。データブロックのそのような分割は、DRAMが本質的にSSDへのキャッシュである実現化例を示しており、それは、より小さい値がより頻繁にアクセスされる場合での使用にとって最も効果的である。
ここで図4を参照して、複数のメモリタイプを実現し、並行ストア動作を有するキーバリューストアを可能にするための回路のブロック図が示される。ページサイズを効果的に減少させるために、SSDは過剰プロビジョニングされ得る。図4の実現化例によれば、複数のメモリ320に加えて、同様にSSDとして図示された複数のメモリ402が提供される。メモリ402は、メモリ320と同じ内容を格納し、メモリ320と並行してアクセスされる。説明されたやり方で多くのSSDを並行して提供することはバリューストアサイズ自体を増加させないが、ここでは同じ内容が複数のリンクを通してアクセス可能であるため、SSDのアクセス帯域幅は増加するであろう。
異なるメモリタイプが使用されるため、異なるメモリインターフェイスも必要とされる。図5に示すように、第1のタイプのメモリ用のメモリインターフェイスのブロック図が示される。一例として、図5のメモリコントローラは、SSD用に使用されてもよい。図5のメモリコントローラは、ユーザインターフェイス502と、物理インターフェイス504とを含む。ユーザインターフェイス502は、コマンド(cmd)およびアドレス(addr)情報を受信し、それは物理インターフェイス504と通信される。データも、送信(tx)または受信(rx)データとして、物理インターフェイスを介して通信される。SSD用のコントローラとして実現される場合、送信および受信データはシリアルデータを表わす。したがって、図5の回路は、複数のメモリ320および402の各SSDのために実現されるであろう。別のタイプのメモリ用のユーザインターフェイス602も、コマンド(cmd)およびアドレス(addr)情報を受信し、それは物理インターフェイス604と通信される。物理インターフェイス604を介して通信されるデータに加えて、制御(ctrl)信号、クロック(clk)信号、およびアドレス(addr)信号も送信される。DRAMで実現される場合、図6の物理インターフェイスはパラレルデータを通信する。
ここで図7を参照して、図は、異なるタイプのメモリへのデータのブロックのデータの割当てを示す。上に述べたように、キーバリューストアのより効率的な動作は、SSDのSSDアクセスブロックサイズに対応するデータブロックの部分を1つ以上のSSDに格納し、残りをDRAMに格納することによって達成可能である。すなわち、DRAMに格納されたであろう(SSDアクセスブロックサイズよりも小さい)残りの値を求めるために、モジュロ関数が実現されてもよい。図7に示すように、m+1バイトを有するデータのブロックは、SSDブロックサイズを有する2つのブロックと、残りとを含む。したがって、2つのブロックの各々はSSDに格納され、一方、残りはDRAMに格納される。一例として、データブロックが8〜12キロバイト(たとえば、8キロバイトと10バイト)を有する場合、4キロバイトのブロックが2つ、SSDに格納され、10バイトはDRAMに格納されるであろう。
ここで図8を参照して、ダイナミックランダムアクセスメモリ(DRAM)のブロック図が示される。DRAMブロック400は複数のセル802を含み、それらは各々、アドレスデコーダ804に結合される。アドレスデコーダ804はアドレス線806を受けて、図示されるように複数のメモリセル802に結合されるアドレスを生成する。アドレスデコーダ804はチップイネーブル信号を受信し、メモリセル802の各々は基準電圧Vrefを受信する。書込みブロック810は、メモリセル802からのデータの読出しまたはメモリセル802へのデータの書込みを可能にする。特に、書込みブロック810に提供された書込みイネーブル信号がゲート814を介してメモリセル802に書込むことを可能にする場合、データライン812を介して提供されたデータが、アドレスデコーダに提供されたアドレスに書込まれる。書込みイネーブル信号がメモリセル802に書込むことを可能にしていない場合、インバータ816に結合されたデータがデータ線818上で生成される。以下により詳細に説明されるように、DRAMブロックのセルに格納されたデータは、そのデータを保持するために周期的にリフレッシュされなければならない。
ここで図9を参照して、図8のDRAMのメモリ素子のブロック図が示される。特に、第1のトランジスタ902は、基準ビット線に結合されたドレイン904と、キャパシタ908に結合されたソース906とを有する。トランジスタ902は、基準ワード線によってゲートで制御される。第2のトランジスタ914は、ビット線に結合されたドレイン916と、キャパシタ920に結合されたソース918とを有する。トランジスタ914は、ワード線によってゲートで制御される。データは、ワード線をハイに引き上げ、格納すべき所望の値をビット線に印加してキャパシタ920を充電することによって書込まれる。メモリからデータを読出すために、センスアンプ926が、基準ビット線でキャパシタ912上に格納された電圧と、ビット線でキャパシタ924上に格納された電圧との差を検出して、出力値を生成するであろう。ビット線の値が求められた後で、その値は、キャパシタ924上に適切な電荷を格納することによってビット線に再度書込まれる。すなわち、キャパシタ924は、セルによって格納されたデータの正しい値を維持するために周期的に再充電される。個々のDRAMメモリセルは、SRAMセルよりも小さいため有益であるが、DRAMメモリセルは、格納されたデータを表わすキャパシタ上の電荷を維持するために周期的にリフレッシュされなければならず、また、アクセス時間がSRAMセルよりも長い場合がある。
ここで図10を参照して、ソリッドステートドライブ(SSD)メモリのブロック図が示される。SSDは、プロセッサ1004とバッファ回路1006とを有するSSDコントローラ1002を含み、プロセッサ1004とバッファ回路1006とは各々、マルチプレクサ/デマルチプレクサ1008とインターフェイス接続している。マルチプレクサ/デマルチプレクサ回路1008は、複数のフラッシュ装置1010〜1016のうちの1つからデータを受信し、それにデータを提供する。インターフェイス回路1018は、SSDと、FPGA302のメモリインターフェイス318といった装置のメモリインターフェイスとの間のデータの転送を可能にする。
ここで図11を参照して、図10のソリッドステートディスクのメモリ素子のブロック図が示される。図11のメモリ素子は、ソース1104と、ビット線によって制御されるドレイン1106とを有する基板1102を含む。酸化物層1114上のフローティングゲート1112から酸化物層1110によって分離された制御ゲート1108を有するゲート素子を、ワード線が制御する。DRAMおよびSSDメモリ装置に関連付けられた回路の例が提供されたが、他の回路が実現されてもよいということが理解されるべきである。
ここで図12を参照して、フロー図は、キーバリューストアに関連付けられたデータの処理を示す。一実現化例によれば、回路ブロック1202のパイプラインは、キーバリューストアを実現するためのブロックを含む。図12に従った回路ブロック1202のパイプラインは、ハッシュ計算回路1204、読出しハッシュテーブル回路1206、書込みハッシュテーブル回路1208、および読出しキーバリュー(KV)回路1210、更新値回路1212、キャッシュ管理回路1214、書込みKVテーブル1216、およびフォーマット応答パケットブロック1218を含む。回路ブロック108のパイプライン外部の、メモリまたは制御回路などのさまざまな回路、たとえばメモリ管理回路108またはハッシュテーブルメモリインターフェイス111なども採用されてもよい。
回路ブロック108のパイプラインにおける回路ブロックの特定の順序が図12に示されているが、回路ブロックは異なる順序で配置されてもよく、図12の特定の順序は一例として示されている、ということが理解されるべきである。また、回路ブロックのパイプラインはキーバリューストアの実現を可能にするが、回路ブロックのパイプラインは、異なる機能を実現する他の回路ブロックを含んでいてもよい。トランザクション状態情報が、図14に示すようなフィールドのうちの1つにおいて、または状態情報用の別個のヘッダフィールドにおいて、パケットのヘッダの一部として通信可能である。一例として、トランザクション状態は、(ハッシュを実行する、読出しハッシュを実行する、書込みハッシュを実行する、読出しキーを実行する・・・)といった、パイプラインの回路ブロック用の機能のリスティングを提供してもよい。これに代えて、状態情報は、共有されるフロー制御でサブチャネルとして送信されてもよい。
メモリ管理回路108は、キーから容易に計算される「ハッシュ」値を、図13に2つのメモリ素子、より特定的には複数のメモリ装置316のキーバリューストアメモリAおよび複数のメモリ装置320のキーバリューストアメモリBとして示すキーバリューストア内のユニークメモリアドレスにマッピングする。図13に示すように、ハッシュ関数は、あらゆる可能なキー1302を、関連付けられたハッシュテーブル1304におけるアドレスにマッピングする。ハッシュテーブルは次に、実際のキーバリューストアにおけるアドレスにマッピングする。キーバリューストアの各値はキーと対応する値とを含み、ストアの値は複数のメモリ装置に分割されてもよい。これに代えて、キーは、キーバリューストアに存在する値へのアドレスとともにハッシュテーブルに格納されてもよく、それは単なるバリューストアとして機能するであろう。したがって、キーバリューストアは、キーを格納するハッシュテーブルと、キーに関連付けられた値を格納するメモリとを使用して実現されてもよい。ハッシュテーブルは、複数のメモリ装置に格納されているデータにアクセスするために、必要なアドレスを生成する。図13に示すように、キーバリューストアメモリAに関連付けられた値A−1およびキーバリューストアメモリBに関連付けられた値A−2は双方とも、キーAに関連付けられたアドレスに基づいてアクセスされる。図13に示すように、他のキー(たとえばキーC)に関連付けられた値も、キーバリューストアメモリAおよびキーバリューストアメモリBの双方に格納され、一方、別のキー(たとえばキーI)に関連付けられた値は、単一のメモリのみに格納される。
動作時、図1の回路は、ネットワークインターフェイス104を通して着信要求を受信する。次に、基本ネットワークプロトコルがネットワークL2−L4処理ブロック102で処理される。典型的には、これは媒体アクセス制御(media access control:MAC)ブロックを含み、その後にUDPおよびTCP処理が続くであろう。次に、ネットワーク処理ブロック102によって生成されたパケットが、処理パイプラインを通るパケットフローを判断するKVSプロトコル処理ブロック104に渡される。次に、処理トランザクション状態と考えられ得る、起動される必要がある処理ブロックが、パイプラインを通してパケットとともに渡される。次に、処理パイプラインにおける各段は、パケットを次の段に渡す前にパケットに対してどの処理(ある場合)を行なうべきか決定するために、関連する状態ビットを調べる。
したがって、処理パイプラインは、ハッシュ関数を計算するためのブロック、ハッシュテーブルから読出し、またはハッシュテーブルに書込むためのブロック、キーバリューストアから読出し、またはキーバリューストアに書込むためのブロック、値を修正するためのブロック、応答パケットおよび他の必要な原子動作をフォーマット化するためのブロックを含む。したがって、処理パイプラインは、キーバリューストアトランザクションプロトコルの一部であるすべての原子動作の上位集合を効果的に実現する。なお、これらの原子動作は、プログラマブルリソース、専用ハードウェアブロック、または従来のマイクロプロセッサを通すことを含む多くの異なるやり方で実現可能である。
ここで図14を参照して、図は、キーバリューストアを実現するためのデータパケットのフィールドを示す。特に、データパケットは、プロトコルヘッダ区分と、パケット本体とを含む。プロトコルヘッダ区分は、マジックナンバーフィールド、オペコードフィールド、キー長フィールド、余分長フィールド、データタイプフィールド、ステータスフィールド、本体長フィールド、ユニークトランザクションID、およびユニーク項目IDを含む、さまざまなフィールドを有する。パケット本体は、余分フィールドと、キーと、値とを含んでいてもよい。
ここで図15を参照して、フローチャートは、キーバリューストアに関連付けられたデータを処理する方法を示す。ステップ1502で、キーバリューストアに関連付けられたデータトランザクションを実現するための要求が受信される。ステップ1504で、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングが制御される。ステップ1506で、第1のメモリインターフェイスに関連付けられた第1のタイプのメモリのメモリ位置がアクセスされることが可能になる。ステップ1508で、第2のメモリインターフェイスキーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置がアクセスされることが可能になる。図15の方法は、上述のような図1〜4の回路を使用して、および図16〜18を参照して以下に説明されるようなプログラマブルリソースを有する集積回路において実施されてもよい。
ここで図16を参照して、一実現化例に従った、プログラマブルリソースを有する装置をプログラミングするためのシステムのブロック図が示される。特に、コンピュータ1602は、メモリ1606からアプリケーション設計1604を受信し、不揮発性メモリ1608に格納される構成ビットストリームを生成するために結合される。以下により詳細に説明されるように、回路設計は、ハードウェア記述言語(hardware description language:HDL)で規定された回路設計などの高レベル設計であってもよい。また、コンピュータは、構成ビットストリームを生成するソフトウェアを実行するように構成されてもよく、構成ビットストリームは、不揮発性メモリ1608に格納されて集積回路1610に提供され、集積回路1610は、以下に図17で説明される集積回路などのプログラマブル集積回路であってもよい。
回路設計がプログラマブル集積回路において実現されるためのソフトウェアフローは、当技術分野において周知であるように、合成、パッキング、配置およびルーティングを含む。合成は、高レベル設計における回路設計を、プログラマブル集積回路に見られる素子の構成に変換するステップを含む。たとえば、コンピュータによって動作される合成ツールは、たとえば構成可能論理ブロック(configurable logic block:CLB)またはデジタル信号処理(digital signal processing:DSP)ブロックにおいてある機能を実現する回路設計の部分を実現してもよい。合成ツールの一例は、カリフォルニア州サンノゼ(San Jose)のザイリンクス インコーポレイテッド(Xilinx, Inc.)から入手可能なISEツールである。パッキングは、回路設計の部分をCLBなどの装置の規定されたブロックにグループ化するステップを含む。配置は、パッキングするステップ中に規定された装置のブロックの位置を判断するステップを含む。最後に、ルーティングは、プログラマブル集積回路において、プログラマブル相互接続部などの相互接続素子の経路を選択することを含む。配置およびルーティングの終わりでは、あらゆる機能、位置および接続部が知られており、次に構成ビットストリームが作成される。ビットストリームは、カリフォルニア州サンノゼのザイリンクス インコーポレイテッドから入手可能な、ビットゲン(BitGen)と呼ばれるソフトウェアモジュールによって作成されてもよい。ビットストリームは、プログラマブル集積回路への引渡しのために、ケーブルを介してダウンロードされ、またはEPROMにプログラミングされる。
ここで図17を参照して、プログラマブルリソースを有する集積回路のブロック図が示される。プログラマブルリソースを有する装置は、プログラマブルリソースを有する特定用途向け集積回路(ASIC)といった任意のタイプの集積回路装置で実現されてもよいが、他の装置は、専用プログラマブル論理装置(programmable logic device:PLD)を含む。1つのタイプのPLDは、複合プログラマブル論理装置(Complex Programmable Logic Device:CPLD)である。CPLDは2つ以上の「機能ブロック」を含み、それらはともに接続され、かつ相互接続スイッチマトリックスによって入力/出力(I/O)リソースに接続される。CPLDの各機能ブロックは、プログラマブル論理アレイ(Programmable Logic Array:PLA)およびプログラマブルアレイ論理(Programmable Array Logic:PAL)装置で使用されるものと同様の2レベルAND/OR構造を含む。別のタイプのPLDは、フィールドプログラマブルゲートアレイ(FPGA)である。典型的なFPGAでは、構成可能論理ブロック(CLB)のアレイがプログラマブル入力/出力ブロック(input/output block:IOB)に結合される。CLBおよびIOBは、プログラマブルルーティングリソースの階層によって相互接続される。これらのCLB、IOB、およびプログラマブルルーティングリソースは、典型的には外部メモリから構成ビットストリームをFPGAの構成メモリセルにロードすることによってカスタマイズされる。これらのタイプのプログラマブル論理装置の双方のために、装置の機能性は、その目的のために装置に提供された構成ビットストリームの構成データビットによって制御される。構成データビットは、揮発性メモリ(たとえば、FPGAおよびいくつかのCPLDでのようなスタティックメモリセル)、不揮発性メモリ(たとえば、いくつかのCPLDでのようなフラッシュメモリ)、または任意の他のタイプのメモリセルに格納されてもよい。
図17の装置は、マルチギガビットトランシーバ(multi-gigabit transceiver:MGT)1701と、CLB1702と、ランダムアクセスメモリブロック(random access memory block:BRAM)1703と、入力/出力ブロック(IOB)1704と、構成およびクロッキング論理(CONFIG/CLOCK)1705と、デジタル信号処理ブロック(DSP)1706と、特殊入力/出力ブロック(I/O)1707(たとえば、構成ポートおよびクロックポート)と、デジタルクロックマネージャ、アナログ−デジタル変換器、システムモニタリング論理などといった他のプログラマブル論理1708とを含む多数の異なるプログラマブルタイルを有する、FPGAアーキテクチャ1700を含む。いくつかのFPGAは専用プロセッサブロック(processor block:PROC)1710も含み、それは、たとえばソフトウェアアプリケーションを実現するために使用されてもよい。
いくつかのFPGAでは、各プログラマブルタイルはプログラマブル相互接続素子(interconnect element:INT)1711を含み、それは、隣接する各タイルにおける対応する相互接続素子への、およびそれからの標準化された接続部を有する。したがって、ともにまとめられたプログラマブル相互接続素子は、図示されたFPGAのためのプログラマブル相互接続構造を実現する。プログラマブル相互接続素子1711はまた、図17の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理素子への、およびそれからの接続部も含む。
たとえば、CLB1702は、ユーザ論理を実現するようにプログラミングされ得る構成可能論理素子(configurable logic element:CLE)1712と、単一のプログラマブル相互接続素子1711とを含んでいてもよい。BRAM1703は、1つ以上のプログラマブル相互接続素子に加えて、BRAM論理素子(BRAM logic element:BRL)1713を含んでいてもよい。BRAMは、構成論理ブロックの分散RAMとは別の専用メモリを含む。典型的には、1つのタイルに含まれる相互接続素子の数は、タイルの高さに依存する。図示された実現化例では、BRAMタイルは5つのCLBと同じ高さを有するが、他の数も使用されてもよい。DSPタイル1706は、適切な数のプログラマブル相互接続素子に加えて、DSP論理素子(DSP logic element:DSPL)1714を含んでいてもよい。IOB1704は、たとえば、プログラマブル相互接続素子1711の1つのインスタンスに加えて、入力/出力論理素子(input/output logic element:IOL)1715の2つのインスタンスを含んでいてもよい。装置の接続部の位置は、その目的のために装置に提供された構成ビットストリームの構成データビットによって制御される。プログラマブル相互接続部は構成ビットストリームのビットに応答して、相互接続線を含む接続部が、さまざまな信号をプログラマブル論理で実現された回路またはBRAMなどの他の回路もしくはプロセッサに結合するために使用されることを可能にする。
図示された実現化例では、ダイの中心近くの列状区域は、構成、クロックおよび他の制御論理のために使用される。この列から延在する構成/クロック分散領域1209は、FPGAの幅にわたってクロックおよび構成信号を分散させるために使用される。図17に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構築する通常の列状構造を分断する追加論理ブロックを含む。追加論理ブロックは、プログラマブルブロックおよび/または専用論理であってもよい。たとえば、図17に示すプロセッサブロックPROC1710は、CLBおよびBRAMのいくつかの列にまたがっている。
なお、図17は、単に例示的なFPGAアーキテクチャを例示するよう意図されている。1列における論理ブロックの数、列の相対的な幅、列の数および順序、列に含まれる論理ブロックのタイプ、論理ブロックの相対的なサイズ、ならびに、図17の上部に含まれる相互接続/論理実現化例は、単に例示的なものである。たとえば、実際のFPGAでは、CLBが現われる場所であればどこでも、CLBの2つ以上の隣接する列が典型的には含まれて、ユーザ論理の効率的な実現を容易にする。図17の実現化例はプログラマブルリソースを有する集積回路に関するものの、以下により詳細に述べられる回路および方法は任意のタイプのASICで実現されてもよい、ということが理解されるべきである。
一実現化例では、MGT1701は特徴付けられたレシーバを含み、あるCLB1702は、BRAM1703に格納されたエラー表示を使用してアイスキャンコントローラおよびPRBSデータチェッカーを実現するように構成される。
ここで図18を参照して、図17の集積回路の構成可能論理素子のブロック図が示される。特に、図18は、図17の構成論理ブロック1702の構成可能論理素子を簡略化された形で示す。図18の実現化例では、スライスM1801は4つのルックアップテーブル(lookup table:LUTM)1801A〜1801Dを含み、それらは各々、6つのLUTデータ入力端子A1〜A6、B1〜B6、C1〜C6およびD1〜D6によって駆動され、2つのLUT出力信号O5およびO6を提供する。LUT1801A〜1801DからのO6入出力端子は、スライス出力端子A〜Dをそれぞれ駆動する。LUTデータ入力信号は、プログラマブル相互接続素子1811によって実現され得る入力マルチプレクサを介してFPGA相互接続構造によって供給され、LUT出力信号も相互接続構造に供給される。スライスMはまた、出力端子AMUX〜DMUXを駆動する出力選択マルチプレクサ1811A〜1811D;メモリ素子1802A〜1802Dのデータ入力端子を駆動するマルチプレクサ1812A〜1812D;組合せマルチプレクサ1816、1818および1819;バウンスマルチプレクサ回路1822〜1823;(入力クロック経路上のオプションの反転をともに提供する)インバータ1805およびマルチプレクサ1806によって表わされる回路;および、マルチプレクサ1814A〜1814D、1815A〜1815D、1820〜1821と排他的ORゲート1813A〜1813Dとを有する桁上げ論理を含む。これらの素子はすべて、図18に示すようにともに結合される。図18に示すマルチプレクサについて選択入力部が図示されていない場合、選択入力部は構成メモリセルによって制御される。すなわち、構成メモリセルに格納された構成ビットストリームの構成ビットは、マルチプレクサの選択入力部に結合されて、マルチプレクサへの正しい入力部を選択する。これらの構成メモリセルは周知であり、ここでは明確にするために図18から、および他の選択図面から省略される。
図示された実現化例では、各メモリ素子1802A〜1802Dは、同期または非同期フリップフロップまたはラッチとして機能するようにプログラミングされてもよい。同期機能性と非同期機能性との間の選択は、同期(Sync)/非同期(Asynch)選択回路1803をプログラミングすることによって、スライス内の4つのメモリ素子すべてに対して行なわれる。メモリ素子が、S/R(セット/リセット)入力信号がセット機能を提供するようにプログラミングされる場合、REV入力端子はリセット機能を提供する。メモリ素子が、S/R入力信号がリセット機能を提供するようにプログラミングされる場合、REV入力端子はセット機能を提供する。メモリ素子1802A〜1802Dは、たとえばグローバルクロックネットワークによって、または相互接続構造によって提供され得るクロック信号CKによってクロックされる。そのようなプログラマブルメモリ素子は、FPGA設計の技術分野では周知である。各メモリ素子1802A〜1802Dは、登録された出力信号AQ〜DQを相互接続構造に提供する。各LUT1801A〜1801Dは2つの出力信号O5およびO6を提供するため、LUTは、5つの共有入力信号(IN1〜IN5)を有する2つの5入力LUTとして、または入力信号IN1〜IN6を有する1つの6入力LUTとして機能するように構成されてもよい。
図13の実現化例では、各LUTM1801A〜1801Dは、いくつかのモードのうちどのモードで機能してもよい。ルックアップテーブルモードにある場合、各LUTは、入力マルチプレクサを介してFPGA相互接続構造によって供給される6つのデータ入力信号IN1〜IN6を有する。信号IN1〜IN6の値に基づいて、構成メモリセルから、64個のデータ値のうちの1つがプログラム可能に選択される。RAMモードにある場合、各LUTは、単一の64ビットRAMとして、または共有アドレシングを有する2つの32ビットRAMとして機能する。RAM書込みデータが、入力端子DI1を介して(LUT1301A〜1301Cについてはマルチプレクサ1817A〜1817Cを介して)64ビットRAMに供給され、または入力端子DI1およびDI2を介して2つの32ビットRAMに供給される。LUT RAMにおけるRAM書込み動作は、マルチプレクサ1806からのクロック信号CKによって、およびマルチプレクサ1807からの書込みイネーブル信号WENによって制御され、マルチプレクサ1807はクロックイネーブル信号CEまたは書込イネーブル信号WEを選択的に渡してもよい。シフトレジスタモードでは、各LUTは、2つの16ビットシフトレジスタとして機能するか、または単一の32ビットシフトレジスタを作るために2つの16ビットシフトレジスタが直列に結合された状態で機能する。シフトイン信号は、入力端子DI1およびDI2のうちの一方または双方を介して提供される。16ビットおよび32ビットシフトアウト信号は、LUT出力端子を通して提供されてもよく、32ビットシフトアウト信号はまた、LUT出力端子MC31を介してより直接的に提供されてもよい。LUT1801Aの32ビットシフトアウト信号MC31はまた、出力選択マルチプレクサ1811DおよびCLE出力端子DMUXを介して、シフトレジスタ連鎖のために一般相互接続構造に提供されてもよい。したがって、上に述べられた回路および方法は、図17および図18の装置などの装置、または任意の他の好適な装置において実現されてもよい。
ここに説明された例示的な機器は一般に、データを処理するための回路に関する。回路は、キーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、キーバリューストアに関連付けられた複数のメモリ装置へのアクセスを可能にする異なるメモリタイプに関連付けられた複数のメモリインターフェイスと、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するメモリ管理回路とを含む。
そのような機器では、メモリ管理回路は、データブロックの、第1のデータ部分および第2のデータ部分へのルーティングを制御してもよい。
そのような機器では、メモリ管理回路は、第1のメモリインターフェイスを介してデータブロックの第1の部分をルーティングすること、および第2のメモリインターフェイスを介してデータブロックの第2の部分をルーティングすることを可能にしてもよい。
そのような機器では、メモリ管理回路は、アクセス基準に基づいて、データのブロックの一部を選択されたメモリタイプにルーティングしてもよい。
そのような機器では、アクセス基準は、データブロックのデータのサイズに基づいていてもよい。
そのような機器では、アクセス基準は、データブロックのデータのアクセス頻度に基づいていてもよい。
そのような機器では、複数のメモリインターフェイスは、データをDRAMにルーティングすることを可能にし得る第1のメモリインターフェイスと、データをSSDメモリにルーティングすることを可能にし得る第2のメモリインターフェイスとを含んでいてもよい。
ここに説明された別の例示的な機器は一般に、データを処理するための回路に関する。回路は代替的には、キーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、キーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置へのアクセスを可能にする第1のメモリインターフェイスと、キーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置へのアクセスを可能にする第2のメモリインターフェイスと、入力部と第1および第2のメモリインターフェイスとの間に結合されたメモリ管理回路とを含んでいてもよく、メモリ管理回路は、データ転送基準に基づいて、第1および第2のメモリインターフェイスを介したデータのルーティングを制御する。
そのような機器では、メモリ管理回路は、第1のメモリインターフェイスを介してデータブロックの第1の部分をルーティングし、第2のメモリインターフェイスを介してデータブロックの第2の部分をルーティングしてもよい。
そのような機器では、メモリ管理回路は、データのサイズに基づいて、第1のメモリインターフェイスまたは第2のメモリインターフェイスのいずれかを介してデータをルーティングしてもよい。
そのような機器では、メモリ管理回路は、データのアクセス頻度に基づいて、第1のメモリインターフェイスまたは第2のメモリインターフェイスのいずれかを介してデータをルーティングしてもよい。
そのような機器では、第1のメモリインターフェイスは、データをDRAMメモリにルーティングすることを可能にしてもよく、第2のメモリインターフェイスは、データをSSDメモリにルーティングすることを可能にしてもよい。
そのような機器では、第2のメモリインターフェイスを介してルーティングされたデータは、複数のメモリ装置に格納される。
そのような機器では、メモリ管理回路は、複数のメモリ装置におけるデータの異なるブロックに同時にアクセスすることを可能にしてもよい。
ここに説明された例示的な方法は一般に、データを処理することに関する。方法は、キーバリューストアに関連付けられたデータトランザクションを実現するための要求を受信するステップと、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップと、第1のメモリインターフェイスを介してキーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置にアクセスすることを可能にするステップと、第2のメモリインターフェイスキーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置にアクセスすることを可能にするステップとを含んでいてもよい。
そのような方法では、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、第1のメモリインターフェイスを介してデータブロックの第1の部分をルーティングし、第2のメモリインターフェイスを介してデータブロックの第2の部分をルーティングするステップを含んでいてもよい。
そのような方法では、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのサイズに基づいて、第1のメモリインターフェイスまたは第2のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含んでいてもよい。
そのような方法では、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのアクセス頻度に基づいて、第1のメモリインターフェイスまたは第2のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含んでいてもよい。
そのような方法では、第1のメモリインターフェイスを介してキーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置にアクセスすることを可能にするステップは、データをSSDメモリにルーティングするステップを含んでいてもよい。
そのような方法では、第2のメモリインターフェイスを介してキーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置にアクセスすることを可能にするステップは、データをDRAMにルーティングするステップを含んでいてもよい。
したがって、上に述べられた回路および方法は、データを処理するための新しい回路および方法に関する。キーバリューストアについて具体的に言及されているものの、図1〜3への回路構成は、クエリプロセッサ、データスキャンといった他の関連する「ビッグデータ」アプリケーションのために拡張可能である。明細書および例示された実現化例は単なる例として考えられるべきであり、実現化例の真の範囲および精神は請求項によって示される、ということが意図されている。

Claims (14)

  1. データを処理するための回路であって、前記回路は、
    キーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、
    キーバリューストアに関連付けられた複数のメモリ装置へのアクセスを可能にする異なるメモリタイプに関連付けられた複数のメモリインターフェイスと、
    データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するメモリ管理回路とを含む、回路。
  2. 前記メモリ管理回路は、データブロックの、第1のデータ部分および第2のデータ部分へのルーティングを制御する、請求項1に記載の回路。
  3. 前記メモリ管理回路は、第1のメモリインターフェイスを介してデータブロックの第1の部分をルーティングすること、および第2のメモリインターフェイスを介して前記データブロックの第2の部分をルーティングすることを可能にする、請求項1または請求項2に記載の回路。
  4. 前記メモリ管理回路は、アクセス基準に基づいて、データのブロックの一部を選択されたメモリタイプにルーティングする、請求項3に記載の装置。
  5. 前記アクセス基準は、データブロックのデータのサイズに基づく、請求項4に記載の回路。
  6. 前記アクセス基準は、データブロックのデータのアクセス頻度に基づく、請求項4に記載の回路。
  7. 前記複数のメモリインターフェイスのうちのあるメモリインターフェイスは、データをDRAMメモリにルーティングすることを可能にし、第2のメモリインターフェイスは、データをSSDメモリにルーティングすることを可能にする、請求項1〜6のいずれか1項に記載の回路。
  8. 第2のメモリインターフェイスを介してルーティングされたデータは、複数のメモリ装置に格納される、請求項1〜7のいずれか1項に記載の回路。
  9. データを処理する方法であって、前記方法は、
    キーバリューストアに関連付けられたデータトランザクションを実現するための要求を受信するステップと、
    データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップと、
    第1のメモリインターフェイスを介して前記キーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置にアクセスすることを可能にするステップと、
    第2のメモリインターフェイスを介して前記キーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置にアクセスすることを可能にするステップとを含む、方法。
  10. データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、前記第1のメモリインターフェイスを介してデータブロックの第1の部分をルーティングし、前記第2のメモリインターフェイスを介して前記データブロックの第2の部分をルーティングするステップを含む、請求項9に記載の方法。
  11. データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのサイズに基づいて、前記第1のメモリインターフェイスまたは前記第2のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含む、請求項9または請求項10に記載の方法。
  12. データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのアクセス頻度に基づいて、前記第1のメモリインターフェイスまたは前記第2のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含む、請求項9または請求項10または16に記載の方法。
  13. 第1のメモリインターフェイスを介して前記キーバリューストアに関連付けられた第1のタイプのメモリのメモリ位置にアクセスすることを可能にするステップは、データをSSDメモリにルーティングするステップを含む、請求項1〜12のいずれか1項に記載の方法。
  14. 第2のメモリインターフェイスを介して前記キーバリューストアに関連付けられた第2のタイプのメモリのメモリ位置にアクセスすることを可能にするステップは、データをDRAMにルーティングするステップを含む、請求項13に記載の方法。
JP2016537498A 2013-12-09 2014-12-02 高スループットのキーバリューストアの実現のためのメモリ構成 Active JP6564375B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/100,250 US9323457B2 (en) 2013-12-09 2013-12-09 Memory arrangement for implementation of high-throughput key-value stores
US14/100,250 2013-12-09
PCT/US2014/068228 WO2015088837A1 (en) 2013-12-09 2014-12-02 Memory arrangement for implementation of high-throughput key-value stores

Publications (3)

Publication Number Publication Date
JP2017502402A true JP2017502402A (ja) 2017-01-19
JP2017502402A5 JP2017502402A5 (ja) 2017-11-24
JP6564375B2 JP6564375B2 (ja) 2019-08-21

Family

ID=52134422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016537498A Active JP6564375B2 (ja) 2013-12-09 2014-12-02 高スループットのキーバリューストアの実現のためのメモリ構成

Country Status (6)

Country Link
US (1) US9323457B2 (ja)
EP (1) EP3080719B1 (ja)
JP (1) JP6564375B2 (ja)
KR (1) KR102261805B1 (ja)
CN (1) CN105814560B (ja)
WO (1) WO2015088837A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020066148A1 (ja) * 2018-09-27 2020-04-02 ソニー株式会社 記憶装置、High Dimensional Gaussian Filtering回路、Stereo Depth計算回路、並びに情報処理装置

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101752583B1 (ko) * 2013-03-14 2017-07-11 마이크론 테크놀로지, 인크. 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들
US9880971B2 (en) 2013-12-20 2018-01-30 Rambus Inc. Memory appliance for accessing memory
US9934248B2 (en) * 2013-12-25 2018-04-03 Hitachi, Ltd. Computer system and data management method
US10831731B2 (en) * 2014-03-12 2020-11-10 Dell Products L.P. Method for storing and accessing data into an indexed key/value pair for offline access
WO2015155103A1 (de) * 2014-04-08 2015-10-15 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum verbesserten zugriff auf einen hauptspeicher eines computersystems, entsprechendes computersystem sowie computerprogramm-produkt
US9772939B2 (en) * 2015-01-05 2017-09-26 International Business Machines Corporation Heat-based key-value slot organization for flash-optimized data placement in multi-tiered storage systems
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
KR102416004B1 (ko) * 2015-09-02 2022-07-04 삼성전자주식회사 인터페이스 회로들, 메모리 모듈들 및 인터페이스 회로들과 메모리 모듈들을 연결하는 스위치 회로를 포함하는 서버 장치
WO2017214862A1 (zh) 2016-06-14 2017-12-21 华为技术有限公司 数据访问方法和相关装置及系统
US10305820B1 (en) * 2016-10-12 2019-05-28 Barefoot Networks, Inc. Network forwarding element with key-value processing in the data plane
CN106557571A (zh) * 2016-11-23 2017-04-05 福建亿榕信息技术有限公司 一种基于k‑v存储引擎的数据去重方法及装置
US10404408B1 (en) 2016-12-13 2019-09-03 Xilinx, Inc. Pam multi-level error distribution signature capture
US10482129B1 (en) 2017-04-11 2019-11-19 Xilinx, Inc. Pipelined database processing circuit and method
US10649969B2 (en) * 2017-06-13 2020-05-12 Western Digital Technologies, Inc. Memory efficient persistent key-value store for non-volatile memories
US10033523B1 (en) 2017-08-14 2018-07-24 Xilinx, Inc. Circuit for and method of measuring latency in an integrated circuit
US10839286B2 (en) * 2017-09-14 2020-11-17 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
CN112181872A (zh) * 2018-04-13 2021-01-05 北京忆芯科技有限公司 边缘计算的分布式kv存储系统
US11321244B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Block interface emulation for key value device
US11747996B2 (en) * 2020-08-05 2023-09-05 Dropbox, Inc. System and methods for implementing a key-value data store
KR20220023605A (ko) 2020-08-21 2022-03-02 삼성전자주식회사 인터페이스 회로 및 이를 포함하는 시스템
CN117435121A (zh) * 2022-07-15 2024-01-23 中兴通讯股份有限公司 数据处理方法、ssd控制器、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067881A (ja) * 1999-08-30 2001-03-16 Toshiba Corp 連想記憶装置及び記憶媒体
WO2010096750A2 (en) * 2009-02-23 2010-08-26 Iron Moutain Incorporated Hybrid hash tables
JP2013030254A (ja) * 2011-07-29 2013-02-07 Toshiba Corp 半導体記憶装置、情報処理装置
JP2013242908A (ja) * 2007-08-14 2013-12-05 Samsung Electronics Co Ltd ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000040061A (ja) * 1998-05-20 2000-02-08 Oki Data Corp バス使用権調停システム
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
US20100019509A1 (en) * 2008-07-24 2010-01-28 Chad Allen Perrott Fastener
KR20100085564A (ko) * 2009-01-21 2010-07-29 삼성전자주식회사 데이터 처리 시스템과 데이터 처리 방법
KR101626117B1 (ko) 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8700683B2 (en) * 2011-10-24 2014-04-15 Nokia Corporation Method and apparatus for providing a key-value based storage interface
US9009392B2 (en) * 2012-04-25 2015-04-14 International Business Machines Corporation Leveraging a hybrid infrastructure for dynamic memory allocation and persistent file storage
US8919846B2 (en) * 2012-05-04 2014-12-30 Srg Global, Inc. Daylight opening system for vehicle

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067881A (ja) * 1999-08-30 2001-03-16 Toshiba Corp 連想記憶装置及び記憶媒体
JP2013242908A (ja) * 2007-08-14 2013-12-05 Samsung Electronics Co Ltd ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
WO2010096750A2 (en) * 2009-02-23 2010-08-26 Iron Moutain Incorporated Hybrid hash tables
US20100217953A1 (en) * 2009-02-23 2010-08-26 Beaman Peter D Hybrid hash tables
JP2013030254A (ja) * 2011-07-29 2013-02-07 Toshiba Corp 半導体記憶装置、情報処理装置
US20130198445A1 (en) * 2011-07-29 2013-08-01 Yosuke Bando Semiconductor memory device and information processing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020066148A1 (ja) * 2018-09-27 2020-04-02 ソニー株式会社 記憶装置、High Dimensional Gaussian Filtering回路、Stereo Depth計算回路、並びに情報処理装置

Also Published As

Publication number Publication date
CN105814560A (zh) 2016-07-27
CN105814560B (zh) 2019-06-18
KR20160096173A (ko) 2016-08-12
KR102261805B1 (ko) 2021-06-04
EP3080719A1 (en) 2016-10-19
US20150160862A1 (en) 2015-06-11
EP3080719B1 (en) 2020-08-05
US9323457B2 (en) 2016-04-26
WO2015088837A1 (en) 2015-06-18
JP6564375B2 (ja) 2019-08-21

Similar Documents

Publication Publication Date Title
JP6564375B2 (ja) 高スループットのキーバリューストアの実現のためのメモリ構成
JP6530815B2 (ja) ハイブリッドメモリシステムの動作を制御するための回路および方法
EP2965429B1 (en) Integrated circuit devices having memory and methods of implementing memory in an integrated circuit device
JP3853736B2 (ja) ユーザによる構成可能なオンチップメモリシステム
US9519486B1 (en) Method of and device for processing data using a pipeline of processing blocks
WO2022212056A1 (en) Transporting request types with different latencies
TWI528322B (zh) 折疊先進先出記憶體產生器
WO2023022906A1 (en) Tile-based result buffering in memory-compute systems
US20240086324A1 (en) High bandwidth gather cache
US9478272B1 (en) Configurable storage blocks with embedded first-in first-out and last-in first-out circuitry
US11829758B2 (en) Packing conditional branch operations
US20230058668A1 (en) Selective cache line memory encryption
US11675713B2 (en) Avoiding deadlock with a fabric having multiple systems on chip
US20240028390A1 (en) Methods and systems for communications between hardware components
US20240028206A1 (en) Methods and systems for communications between hardware components
US11488643B2 (en) Method for configuring multiple input-output channels
US20240028526A1 (en) Methods and systems for requesting atomic operations in a computing system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171012

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171012

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190109

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190726

R150 Certificate of patent or registration of utility model

Ref document number: 6564375

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