【手続補正書】
【提出日】平成29年10月12日(2017.10.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための回路であって、前記回路は、
キーに関連付けられたストアへのアクセスを可能にするキーバリューストアデータトランザクションを実現するための要求を受信するための入力部と、
キーバリューストアに関連付けられた複数のメモリ装置へのアクセスを可能にする異なるメモリタイプに関連付けられた複数のメモリインターフェイスと、
前記キーバリューストアデータトランザクションに関連付けられたストアの値の第１の部分を格納する第１のタイプの第１のメモリ装置と、
前記キーバリューストアデータトランザクションに関連付けられた前記ストアの前記値の第２の部分を格納する第２のタイプの第２のメモリ装置と、
データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するメモリ管理回路とを含み、
前記メモリ管理回路は、前記キーバリューストアデータトランザクションに関連付けられた前記ストアの前記値の前記第１の部分、および前記キーバリューストアデータトランザクションに関連付けられた前記ストアの前記値の前記第２の部分にアクセスすることを可能にする、回路。
【請求項２】
前記メモリ管理回路は、データブロックの、第１のデータ部分および第２のデータ部分へのルーティングを制御する、請求項１に記載の回路。
【請求項３】
前記メモリ管理回路は、第１のメモリインターフェイスを介してデータブロックの第１のデータ部分をルーティングすること、および第２のメモリインターフェイスを介して前記データブロックの第２のデータ部分をルーティングすることを可能にする、請求項１または請求項２に記載の回路。
【請求項４】
前記メモリ管理回路は、アクセス基準に基づいて、データのブロックの一部を選択されたメモリタイプにルーティングする、請求項３に記載の回路。
【請求項５】
前記アクセス基準は、データブロックのデータのサイズに基づく、請求項４に記載の回路。
【請求項６】
前記アクセス基準は、データブロックのデータのアクセス頻度に基づく、請求項４に記載の回路。
【請求項７】
前記複数のメモリインターフェイスのうちのあるメモリインターフェイスは、データをＤＲＡＭメモリにルーティングすることを可能にし、第２のメモリインターフェイスは、データをＳＳＤメモリにルーティングすることを可能にする、請求項１〜６のいずれか１項に記載の回路。
【請求項８】
第２のメモリインターフェイスを介してルーティングされたデータは、複数のメモリ装置に格納される、請求項１〜７のいずれか１項に記載の回路。
【請求項９】
データを処理する方法であって、前記方法は、
キーに関連付けられたストアへのアクセスを可能にするキーバリューストアに関連付けられたデータトランザクションを実現するための要求を受信するステップと、
データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップとを含み、第１のタイプのメモリの第１のメモリ装置が、前記データトランザクションに関連付けられたストアの値の第１の部分を格納し、第２のタイプのメモリの第２のメモリ装置が、前記データトランザクションに関連付けられた前記ストアの前記値の第２の部分を格納し、前記方法はさらに、
第１のメモリインターフェイスを介して前記キーバリューストアに関連付けられた前記第１のメモリ装置のメモリ位置にアクセスすることを可能にするステップと、
第２のメモリインターフェイスを介して前記キーバリューストアに関連付けられた前記第２のメモリ装置のメモリ位置にアクセスすることを可能にするステップとを含み、
メモリ管理回路が、前記データトランザクションに関連付けられた前記ストアの前記値の前記第１の部分、および前記データトランザクションに関連付けられた前記ストアの前記値の前記第２の部分にアクセスすることを可能にする、方法。
【請求項１０】
データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、前記第１のメモリインターフェイスを介してデータブロックの第１の部分をルーティングし、前記第２のメモリインターフェイスを介して前記データブロックの第２の部分をルーティングするステップを含む、請求項９に記載の方法。
【請求項１１】
データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのサイズに基づいて、前記第１のメモリインターフェイスまたは前記第２のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含む、請求項９または請求項１０に記載の方法。
【請求項１２】
データ転送基準に基づいて、前記複数のメモリインターフェイスを介したデータのルーティングを制御するステップは、データのアクセス頻度に基づいて、前記第１のメモリインターフェイスまたは前記第２のメモリインターフェイスのいずれかを介してデータをルーティングするステップを含む、請求項９〜１１のいずれか１項に記載の方法。
【請求項１３】
第１のメモリインターフェイスを介して前記キーバリューストアに関連付けられた前記第１のメモリ装置のメモリ位置にアクセスすることを可能にするステップは、データをＳＳＤメモリにルーティングするステップを含む、請求項９〜１２のいずれか１項に記載の方法。
【請求項１４】
第２のメモリインターフェイスを介して前記キーバリューストアに関連付けられた前記第２のメモリ装置のメモリ位置にアクセスすることを可能にするステップは、データをＤＲＡＭにルーティングするステップを含む、請求項１３に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
【図１】データを処理するための回路のブロック図である。
【図２】図１の回路のメモリインターフェイスのブロック図である。
【図３】複数のメモリタイプを実現するキーバリューストアを可能にするための回路のブロック図である。
【図４】複数のメモリタイプを実現し、アクセス帯域幅を改良するために複数のインターフェイスを並行して使用するキーバリューストアを可能にするための回路のブロック図である。
【図５】第１のタイプのメモリ用のメモリコントローラのブロック図である。
【図６】第２のタイプのメモリ用のメモリコントローラのブロック図である。
【図７】キーバリューストアの実現における異なるタイプのメモリへのデータのブロックのデータの割当てを示す図である。
【図８】ダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）のブロック図である。
【図９】図８のＤＲＡＭのメモリ素子のブロック図である。
【図１０】ソリッドステートドライブ（solid-state drive：ＳＳＤ）メモリのブロック図である。
【図１１】図１０のソリッドステートドライブのメモリ素子のブロック図である。
【図１２】キーバリューストアに関連付けられたデータの処理を示すフロー図である。
【図１３】キーバリューストアの動作を示すテーブルを含む図である。
【図１４】キーバリューストアを実現するためのデータパケットのフィールドを示す図である。
【図１５】キーバリューストアに関連付けられたデータを処理する方法を示すフローチャートである。
【図１６】プログラマブルリソースを有する装置をプログラミングするためのシステムのブロック図である。
【図１７】プログラマブルリソースを有する集積回路のブロック図である。
【図１８】図１７の集積回路の構成可能論理素子のブロック図である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
ここで図８を参照して、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のブロック図が示される。ＤＲＡＭブロック８００は複数のセル８０２を含み、それらは各々、アドレスデコーダ８０４に結合される。アドレスデコーダ８０４はアドレス線８０６を受けて、図示されるように複数のメモリセル８０２に結合されるアドレスを生成する。アドレスデコーダ８０４はチップイネーブル信号を受信し、メモリセル８０２の各々は基準電圧Ｖｒｅｆを受信する。書込みブロック８１０は、メモリセル８０２からのデータの読出しまたはメモリセル８０２へのデータの書込みを可能にする。特に、書込みブロック８１０に提供された書込みイネーブル信号がゲート８１４を介してメモリセル８０２に書込むことを可能にする場合、データライン８１２を介して提供されたデータが、アドレスデコーダに提供されたアドレスに書込まれる。書込みイネーブル信号がメモリセル８０２に書込むことを可能にしていない場合、インバータ８１６に結合されたデータがデータ線８１８上で生成される。以下により詳細に説明されるように、ＤＲＡＭブロックのセルに格納されたデータは、そのデータを保持するために周期的にリフレッシュされなければならない。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
ここで図１１を参照して、図１０のソリッドステートドライブのメモリ素子のブロック図が示される。図１１のメモリ素子は、ソース１１０４と、ビット線によって制御されるドレイン１１０６とを有する基板１１０２を含む。酸化物層１１１４上のフローティングゲート１１１２から酸化物層１１１０によって分離された制御ゲート１１０８を有するゲート素子を、ワード線が制御する。ＤＲＡＭおよびＳＳＤメモリ装置に関連付けられた回路の例が提供されたが、他の回路が実現されてもよいということが理解されるべきである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
ここで図１２を参照して、フロー図は、キーバリューストアに関連付けられたデータの処理を示す。一実現化例によれば、回路ブロック１２０２のパイプラインは、キーバリューストアを実現するためのブロックを含む。図１２に従った回路ブロック１２０２のパイプラインは、ハッシュ計算回路１２０４、読出しハッシュテーブル回路１２０６、書込みハッシュテーブル回路１２０８、および読出しキーバリュー（ＫＶ）テーブル１２１０、更新値回路１２１２、キャッシュ管理回路１２１４、書込みＫＶテーブル１２１６、およびフォーマット応答パケットブロック１２１８を含む。回路ブロック１２０２のパイプライン外部の、メモリまたは制御回路などのさまざまな回路、たとえばメモリ管理回路１０８またはハッシュテーブルメモリインターフェイス１１１なども採用されてもよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
回路ブロック１２０２のパイプラインにおける回路ブロックの特定の順序が図１２に示されているが、回路ブロックは異なる順序で配置されてもよく、図１２の特定の順序は一例として示されている、ということが理解されるべきである。また、回路ブロックのパイプラインはキーバリューストアの実現を可能にするが、回路ブロックのパイプラインは、異なる機能を実現する他の回路ブロックを含んでいてもよい。トランザクション状態情報が、図１４に示すようなフィールドのうちの１つにおいて、または状態情報用の別個のヘッダフィールドにおいて、パケットのヘッダの一部として通信可能である。一例として、トランザクション状態は、（ハッシュを実行する、読出しハッシュを実行する、書込みハッシュを実行する、読出しキーを実行する・・・）といった、パイプラインの回路ブロック用の機能のリスティングを提供してもよい。これに代えて、状態情報は、共有されるフロー制御でサブチャネルとして送信されてもよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
動作時、図１の回路は、ネットワークインターフェイスを通して着信要求を受信する。次に、基本ネットワークプロトコルがネットワークＬ２−Ｌ４処理ブロック１０２で処理される。典型的には、これは媒体アクセス制御（media access control：ＭＡＣ）ブロックを含み、その後にＵＤＰおよびＴＣＰ処理が続くであろう。次に、ネットワーク処理ブロック１０２によって生成されたパケットが、処理パイプラインを通るパケットフローを判断するＫＶＳプロトコル処理ブロック１０４に渡される。次に、処理トランザクション状態と考えられ得る、起動される必要がある処理ブロックが、パイプラインを通してパケットとともに渡される。次に、処理パイプラインにおける各段は、パケットを次の段に渡す前にパケットに対してどの処理（ある場合）を行なうべきか決定するために、関連する状態ビットを調べる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
ここで図１５を参照して、フローチャートは、キーバリューストアに関連付けられたデータを処理する方法を示す。ステップ１５０２で、キーバリューストアに関連付けられたデータトランザクションを実現するための要求が受信される。ステップ１５０４で、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングが制御される。ステップ１５０６で、第１のメモリインターフェイスを介してキーバリューストアに関連付けられた第１のタイプのメモリのメモリ位置がアクセスされることが可能になる。ステップ１５０８で、第２のメモリインターフェイスを介してキーバリューストアに関連付けられた第２のタイプのメモリのメモリ位置がアクセスされることが可能になる。図１５の方法は、上述のような図１〜４の回路を使用して、および図１６〜１８を参照して以下に説明されるようなプログラマブルリソースを有する集積回路において実施されてもよい。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
図示された実現化例では、ダイの中心近くの列状区域は、構成、クロックおよび他の制御論理のために使用される。この列から延在する構成／クロック分散領域１７０９は、ＦＰＧＡの幅にわたってクロックおよび構成信号を分散させるために使用される。図１７に示すアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構築する通常の列状構造を分断する追加論理ブロックを含む。追加論理ブロックは、プログラマブルブロックおよび／または専用論理であってもよい。たとえば、図１７に示すプロセッサブロックＰＲＯＣ１７１０は、ＣＬＢおよびＢＲＡＭのいくつかの列にまたがっている。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
図１３の実現化例では、各ＬＵＴＭ１８０１Ａ〜１８０１Ｄは、いくつかのモードのうちどのモードで機能してもよい。ルックアップテーブルモードにある場合、各ＬＵＴは、入力マルチプレクサを介してＦＰＧＡ相互接続構造によって供給される６つのデータ入力信号ＩＮ１〜ＩＮ６を有する。信号ＩＮ１〜ＩＮ６の値に基づいて、構成メモリセルから、６４個のデータ値のうちの１つがプログラム可能に選択される。ＲＡＭモードにある場合、各ＬＵＴは、単一の６４ビットＲＡＭとして、または共有アドレシングを有する２つの３２ビットＲＡＭとして機能する。ＲＡＭ書込みデータが、入力端子ＤＩ１を介して（ＬＵＴ１８０１Ａ〜１８０１Ｃについてはマルチプレクサ１８１７Ａ〜１８１７Ｃを介して）６４ビットＲＡＭに供給され、または入力端子ＤＩ１およびＤＩ２を介して２つの３２ビットＲＡＭに供給される。ＬＵＴ  ＲＡＭにおけるＲＡＭ書込み動作は、マルチプレクサ１８０６からのクロック信号ＣＫによって、およびマルチプレクサ１８０７からの書込みイネーブル信号ＷＥＮによって制御され、マルチプレクサ１８０７はクロックイネーブル信号ＣＥまたは書込イネーブル信号ＷＥを選択的に渡してもよい。シフトレジスタモードでは、各ＬＵＴは、２つの１６ビットシフトレジスタとして機能するか、または単一の３２ビットシフトレジスタを作るために２つの１６ビットシフトレジスタが直列に結合された状態で機能する。シフトイン信号は、入力端子ＤＩ１およびＤＩ２のうちの一方または双方を介して提供される。１６ビットおよび３２ビットシフトアウト信号は、ＬＵＴ出力端子を通して提供されてもよく、３２ビットシフトアウト信号はまた、ＬＵＴ出力端子ＭＣ３１を介してより直接的に提供されてもよい。ＬＵＴ１８０１Ａの３２ビットシフトアウト信号ＭＣ３１はまた、出力選択マルチプレクサ１８１１ＤおよびＣＬＥ出力端子ＤＭＵＸを介して、シフトレジスタ連鎖のために一般相互接続構造に提供されてもよい。したがって、上に述べられた回路および方法は、図１７および図１８の装置などの装置、または任意の他の好適な装置において実現されてもよい。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
ここに説明された例示的な方法は一般に、データを処理することに関する。方法は、キーバリューストアに関連付けられたデータトランザクションを実現するための要求を受信するステップと、データ転送基準に基づいて、複数のメモリインターフェイスを介したデータのルーティングを制御するステップと、第１のメモリインターフェイスを介してキーバリューストアに関連付けられた第１のタイプのメモリのメモリ位置にアクセスすることを可能にするステップと、第２のメモリインターフェイスを介してキーバリューストアに関連付けられた第２のタイプのメモリのメモリ位置にアクセスすることを可能にするステップとを含んでいてもよい。