JP6211196B2 - 自律的メモリ検索のための方法及びシステム - Google Patents

自律的メモリ検索のための方法及びシステム Download PDF

Info

Publication number
JP6211196B2
JP6211196B2 JP2016534782A JP2016534782A JP6211196B2 JP 6211196 B2 JP6211196 B2 JP 6211196B2 JP 2016534782 A JP2016534782 A JP 2016534782A JP 2016534782 A JP2016534782 A JP 2016534782A JP 6211196 B2 JP6211196 B2 JP 6211196B2
Authority
JP
Japan
Prior art keywords
search
memory
command
memory system
database
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
JP2016534782A
Other languages
English (en)
Other versions
JP2016536694A (ja
JP2016536694A5 (ja
Inventor
エム. クレウィッツ,ケネス
エム. クレウィッツ,ケネス
エス. エイラート,ショーン
エス. エイラート,ショーン
ワン,ホンギュ
アケル,アミーン
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2016536694A publication Critical patent/JP2016536694A/ja
Publication of JP2016536694A5 publication Critical patent/JP2016536694A5/ja
Application granted granted Critical
Publication of JP6211196B2 publication Critical patent/JP6211196B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

優先権出願
本願は、2013年8月13日出願の米国特許出願第13/965,739号の利益を主張し、その全体が参照により本明細書に組み込まれる。
メモリ装置は通常、コンピュータまたはその他の電子装置中の内部集積回路、半導体集積回路として提供されている。ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイミックランダムアクセスメモリ(SDRAM)及び不揮発性(例えば、フラッシュ)メモリを含む、多くの異なる種類のメモリがある。
いくつかの不揮発性メモリ装置は、コンピュータシステムで機械的に操作されたハードディスクドライブをエミュレートできる、ソリッドステートドライブ(SSD)を作るために結合され得る。ソリッドステートドライブは、可動部分がないため、機械的なハードドライブよりも信頼性が高く、より速いアクセスを可能にする。
コンピュータシステムの性能を少なくとも部分的に高めるために、メモリ及びソリッドステートドライブの製造業者は、コンピュータシステムの性能向上に付いて行くように、メモリの性能を高めるために常に重圧にさらされている。メモリ製造業者にとってのメモリの性能を上げる1つの方法は、メモリの読み出し/書き込みの回数を減らすことである。しかしながら、メモリ技術における進化はその努力を妨げ得る。メモリの性能を上げる別の方法は、メモリ及びSSDの検索をより効率的に行うことであり得る。
データベース格納システムの実施形態のブロック図を示す。 図1の実施形態によるメモリシステムの実施形態のブロック図を示す。 データベース格納形式の実施形態の図を示す。 データベース格納形式の実施形態の図を示す。 ホストとメモリ間の通信の実施形態におけるプロトコルのフローチャートを示す。 ホストとメモリ間の通信の実施形態におけるプロトコルのフローチャートを示す。 自律的メモリ検索のための方法の実施形態における機能ブロック図を示す。 自律的メモリ検索のための方法の実施形態におけるフローチャートを示す。 自律的メモリ検索のための方法の実施形態におけるフローチャートを示す。 多数のメモリシステムを有するシステムのブロック図を示す。
以下の詳細な記述において、本明細書の一部を構成する添付の図面を参照し、特定の実施形態を実例として示す。図面においては、類似の番号は、複数の図面を通して実質的に類似の部品を示す。その他の実施形態を利用することができ、本開示の範囲から逸脱することなく、構造的、論理的及び電気的な変更を行い得る。したがって、以下の発明を実施するための形態は、限定する意味で理解すべきではない。
説明の目的のみにソリッドステートドライブ(SSD)を後続で参照する。本明細書で開示されるように、自律的メモリ検索の操作は、任意の形式のメモリ装置または半導体メモリ、光メモリまたは磁気メモリを含む、メモリ装置の群で等しく機能し得る。したがって、本開示は、SSDの検索に限定されるものではない。
構造化照会言語(SQL)及び「MySQL」という用語もまた、後続で参照する。SQLは、当技術分野で公知であるが、リレーショナルデータベースを管理するために設計された専用プログラミング言語を意味する。「MySQL」という用語は、いくつかのデータベースに複数のユーザのアクセスを提供するサーバとして動作する純正のリレーショナルデータベース管理システムを意味する。MySQL(登録商標)データベースシステムは、しばしば構造化データベースとして特徴づけられ得る。したがって、SQL及びMySQL(登録商標)データベースへの本明細書における参照は、説明の目的のためのみである。本明細書で開示された自律的メモリ検索方法の実施形態は、構造化データ及び非構造化データを格納する、その他の種類のデータベースにおいても等しく機能し得る。例えば、キー値を格納する任意のデータベース(例えば、NoSQLデータベース)は、自律的メモリ検索方法を使用し得る。
本発明で使用する場合、構造化データは、離散的レコード(例えば、素子)にまとめられたデータであり得る。このレコードは1つ以上のフィールドから構成され得る。構造化データの例は、名前、アドレス及び識別情報に分割されたレコードである可能性がある。
本発明で使用する場合、非構造化データは、離散的レコード(例えば、素子)にまとめられないデータであり得る。非構造化データの例は、文書、デジタル画像または人間の音声のデジタル表示からのテキストであり得る。
図1は、ホスト130及びメモリシステム(例えば、SSD)108を含むことが可能な、データベースシステムの実施形態のブロック図を示す。ホスト130はコンピュータシステムまたはCPUであり得る。メモリシステム(例えば、SSD)108は、単一の不揮発性メモリ装置または単一の装置(例えばSSD)に結合された複数の不揮発性メモリ装置であり得る。
ホスト130は、データベースシステムにおいて異なるデータベース機能を提供可能な複数のクライアント(例えば、クライアントソフトウェア、プログラム)100を備え得る。例えば、これらのクライアント100は、データベースのバックアップルーチン(例えば、mysqldumpルーチン)、テーブルメンテナンスルーチン(例えば、mysqlcheckルーチン)、コマンドラインインタフェースルーチン(例えば、mysqlimportルーチン)及び/またはその他のデータベース機能を含み得る。
クライアント100はサーバ102と通信する。サーバ102はmysqld(MySQLサーバ)またはいくつかのその他の種類のサーバであり得る。サーバ102は、クライアント100及びホスト用(例えば、中央処理装置、コンピュータ、コントローラ)のメモリシステム108に格納されたデータベースへのアクセスを管理するデータベースシステム中では主プログラムであり得る。
ストレージエンジン104は、サーバ102とホスト130のオペレーティングシステム(OS)ファイルシステムプロトコル106との間を通信する。ストレージエンジン104は、ホスト130のOSファイルシステム106を通してメモリ108に条件キー及び検索キーを送信し、ホスト130のOSファイルシステム106を通してメモリシステム108から検索に対する応答を受信する。検索条件及び検索キーは後で説明される。
典型的な従来技術のストレージエンジンは、データベースの典型的な検索をする間、メモリ内のデータベースから大量の生データを通信し得る。例えば、テーブルの何千ものレコードを含むデータベースの典型的な従来技術においては、大半または全部のレコードはCPUによって処理するためにメモリからCPUのメインメモリへ読み込まれる。
自律的メモリ検索のための方法のためのストレージエンジン104は、検索条件及び検索キーをメモリシステム108に通信し、検索条件及び検索キーを使用してデータベースの検索結果から検索結果のみを受信し得る。よって、ストレージエンジン104は、大量の生データをパースする必要がなく、CPUは生データに検索条件及び検索キーの比較を実行する貴重な時間を使用する必要がない可能性がある。これは、自律的メモリ検索の方法を使用するシステムの性能の向上をもたらす。これは、また、全体的な電力の節約、費用節約をもたらし、要素の利点を形成し得る。
メモリシステム108は検索されるデータベースを格納し得る任意の種類のメモリを含み得る。図2は、メモリシステム108(例えば、SSD)の実施形態のブロック図を示す。例えば、複数の不揮発性メモリ装置(例えば、フラッシュメモリ)は、メモリブロック203を形成するために結合され得る。メモリシステム108(例えば、SSD)は、メモリシステム108(例えばSSD)の操作を制御するために、メモリブロック203に連結されたコントローラ(例えば、プロセッサ)201を有し得る。図4から図6に記載されたプロトコル及び方法によると、コントローラ201は、ストレージエンジン104のアクティビティを命令するモジュール210(例えば、ファームウェアまたはソフトウェア)を備え得る。
図3Aは、データベース格納形式の実施形態の図を示す。図示された実施形態において、データベースは表形式300に格納され得る。図示されたテーブル300は、ヘッダ301及び「n」レコード(例えば、レコード(0)からレコード(n−1))を含む。それぞれのレコードはテーブル300の次のレコードを指すことができ、テーブル300が次のレコードにアップデートされる場合、以前のレコードが次のレコードを指すようにアップデートされ得る。
ヘッダ301は、テーブル300を記述するフィールドを含み得る。例えば、ヘッダ301は、テーブル300中のいくつかのレコード、各レコードの長さ、レコード単位のフィールドの数、及び各フィールドの長さを含むことができる。その他の実施形態は、ヘッダ301に追加の記述データを含み得る。
データの各レコード(例えば、レコード(0)からレコード(n−1)303は複数のフィールド(例えばフィールド(0)からフィールド(m−1)を含み得る)は、検索される。各レコード303もまた、次のレコードにポインタフィールド305を含み得る。このポインタフィールド305は、次のレコードを含むメモリ中の別の位置の論理アドレスであり得る。したがって、メモリ内にレコードが引き続き配置される必要はない。
各フィールド(例えば、フィールド(0)からフィールド(m−1))は、フィールドの長さ及びフィールドデータを格納する要素307を備え得る。フィールドデータは、検索される実データ309を備え得る。
図3Bは、データベース格納形式の別の実施形態を示す。本実施形態もまた、表形式310内にあり得る。しかしながら、図3A及び図3Bの形式は、説明のためのみの目的である。本実施形態はどれか1つの形式、表または別の方法に限定されない。
テーブル310は、テーブルヘッダ312及び「n」レコード群(例えばレコード群(0)からレコード群(n−1))を備える。それぞれのレコード群はテーブル300の次のレコード群を指すことができ、テーブル310が次のレコード群にアップデートされる場合、以前のレコード群が次のレコード群を指すようにアップデートされ得る。
ヘッダ312は、テーブル310を記述するフィールドを含み得る。例えば、ヘッダ312は、いくつかのレコード群、レコード群の長さ、いくつかのレコード、レコード単位のいくつかのフィールド、フィールドの長さ、第1レコード群のアドレス(例えば、論理アドレス、物理アドレス)及び/またはテーブルのバージョン番号を含み得る。
各レコード群(例えば、レコード群(0)からレコード群(n−1))314は、「m」レコード(例えばレコード(0)からレコード(m−1))を含み得る。各レコード群314は、レコード群314の次のポインタ320及び、レコード316に加えて、各レコード群314中のいくつかのレコード321のためのフィールドを含み得る。このポインタ320は、次のレコードを含むメモリ中の別の位置の論理アドレスであり得る。したがって、メモリ内にレコード群が引き続き配置される必要はない。
各レコード316は、データの「k」フィールド318を備え得る(例えば、フィールド(0)からフィールド(k−1))。各フィールド318は、検索される実データを備え得る。
図4A及び図4Bは、ホストとメモリシステム間の通信の2つの実施形態におけるプロトコルのフローチャートを示す。これらの実施形態は、説明の目的のためのみであり、その他の実施形態は代替的な方法を使用し得る。
図1を参照して前述したように、図4Aは、自律的メモリ検索方法を使用している間のホスト(例えばCPU、コンピュータ)130とメモリシステム108間の通信のための実施形態のプロトコルのフローチャートを示す。図示された実施形態では、検索を実行するために、3つのコマンドがストレージエンジン104から実行され得る。例えば、ライトコマンド(例えば、スモールコンピュータシステムインタフェース(SCSI)のライトコマンド)の後に、2つ以上のリードコマンドが、データベース検索の結果を取得するのと同様に、検索キー及び検索条件の両方をメモリシステム108に転送するために使用され得る。
メモリシステム108におけるデータベースの検索は、1つ以上の検索キー(例えばパターン)、検索条件(例えば比較条件)及び検索されるデータセット(例えばデータベース)によって定義され得る。この検索は、検索キーとデータセットとを全体として、またはデータの一連のサブセットとして比較することによって実行され得る。検索条件によって限定された検索キーの比較が、少なくともデータセットの一部に一致する場合に、一致され得る。検索結果は、一致なし、1つの一致または複数の一致であり得る。
検索条件は「等しい」、「未満」、「超」、「等しくない」、「以下」または「以上」のような演算子を含み得る。さらに「かつ」、「または」「ではない」のような任意の論理演算子及び任意の論理演算子の組合せが単独で、またはデータベースを検索するその他の演算子との組み合わせで使用され得る。
初期コマンド(例えば、SCSIライトコマンド)401をメモリシステム108に発行され、検索はホスト130によって開始され得る(例えば、コマンドは、図1のストレージエンジン104のようなストレージエンジンによって発行され得る)。初期コマンド401は、検索条件及び検索キーの表示を含み得る。
初期コマンド(例えばSCSIライトコマンド)における検索条件及び検索キーの表示は、コマンドによって暗示され、関連付けられたバッファが検索条件及び検索キーを含んでいると示すコマンドの特定のフィールドに設定されたビットであり得る。例えば、SCSIライトコマンドでは、入ってくる論理ブロックアドレス(LBA)の上位ビットは、バッファ内の待機検索条件及び検索キーの表示を示すために設定され得る。
メモリシステム108は、初期コマンド401を受信し、バッファ内の待機検索条件及び検索キーの表示を読み取る。メモリシステム108は、次に確認402とともにホスト130に返答する。ホスト130は単に、メモリシステム108は初期コマンド401を受信したと仮定することができるため、確認は、任意として考えられ得る。
ホスト130(例えば、ストレージエンジン)は、次に、検索結果を受信する準備ができていることを示すために、第2のコマンド(例えば、SCSIリード)403をメモリシステム108に発行し得る。メモリシステム108が検索を完了するか、または検索結果に割り当てられた内部バッファを一杯にするまで第2のコマンド403は、メモリシステム108からの応答がない状態で未了のままであり得る。一旦、バッファが検索結果で一杯にされるか、検索がデータベースの最後まで達した場合、メモリシステム108は、検索が完了したことを示す応答(例えば、センスデータ)405をホスト130に発行する。この応答(例えば、センスデータ)405は、検索が完了した場合またはバッファが単に一杯になってバッファを空にするために読み込む必要がある場合、検索から判明した結果があれば、いくつかの結果を示すことができる。
メモリシステム108からの応答405がゼロ以外の数字の検索結果を示す場合には、ホスト130は別のコマンド(例えば、SCSIリード)407を発行し、この表示に対応し、メモリシステムバッファからの結果を取得する。メモリシステム108は、次に、バッファからの検索結果を含み得る、別の応答(例えば、センスデータ)409を発行し得る。
ホスト130からの第1のリードコマンド403の結果が、検索がまだ完了していないことを示した場合には、ホスト130はこのリードステップ403に戻り、メモリシステム108から検索が完了したと表示されるまで、工程を繰り返す。
図1を参照して前述したように、図4Bは、自律的メモリ検索方法の間のホスト(例えばCPU、コンピュータ)130とメモリシステム108間の通信のための別の実施形態のプロトコルのフローチャートを示す。図示された実施形態では、検索を実行するために、3つのコマンドがストレージエンジン104より発行され得る。例えば、ライトコマンド(例えば、スモールコンピュータシステムインタフェース(SCSI)のライトコマンド)の後に、2つ以上のリードコマンドが、データベース検索の結果を取得するのと同様に、検索キー及び検索条件の両方をメモリシステム108に転送するために使用され得る。
初期コマンド(例えば、SCSIライトコマンド)410がメモリシステム108に発行され、検索はホスト130によって開始され得る(例えば、コマンドは、図1のストレージエンジン104のようなストレージエンジンによって発行され得る)。初期コマンド410は、検索条件及び検索キーの表示を含み得る。
初期コマンド(例えばSCSIライトコマンド)における検索条件及び検索キーの表示は、コマンドによって暗示され、関連付けられたバッファが検索条件及び検索キーを含んでいると示すコマンドの特定のフィールドに設定されたビットであり得る。例えば、SCSIライトコマンドでは、入ってくる論理ブロックアドレス(LBA)の上位ビットは、バッファ内の待機された検索条件及び検索キーの表示を示すために設定され得る。
メモリシステム108は、初期コマンド410を受信し、バッファ内の待機された検索条件及び検索キーの表示を読み取る。メモリシステム108は、次に確認412とともにホスト130に返答し得る。ホスト130は単に、メモリシステム108は初期コマンド410を受信したと仮定することができるため、確認は、任意として考えられ得る。
メモリシステム108が検索を完了するか、または検索結果に割り当てられた内部バッファを一杯にするまで初期コマンド410は、メモリシステム108からの応答がない状態で未了のままであり得る。一旦、バッファが検索結果で一杯になるか、検索がデータベースの最後まで達した場合には、メモリシステム108は、検索が完了したこと、または検索結果のバッファが検索要求に対応して一杯であるということを示す応答(例えば、センスデータ)414をホスト130に発行する。この応答(例えば、センスデータ)414は、むしろ、検索が完了した場合またはバッファが単に一杯になってバッファを空にするために読み込む必要がある場合、検索から判明した結果があれば、いくつかの結果を示すことができる。
メモリシステム108は、実際の検索結果416(例えば、センスデータ)で応答414を追跡し、検索結果がゼロ以外の数と仮定する。ホスト130はコマンド418(例えば、SCSIリードコマンド)で検索結果の正しい受信を確認し得る。
メモリシステム108は、検索に関連したバッファを破棄することができる。これはメモリシステム108からの応答(例えば、センスデータ)420によってホスト108に表示され得る。
図4A及び図4Bに図示されたプロトコルのフローチャートでは、メモリシステム108は依然として正常に操作し続けることが可能である。そのため、メモリシステム108は、依然としてホスト130からの正常なリードコマンドとライトコマンドに応答することができる。
図5は、自律的メモリ検索のための方法の実施形態における機能ブロック図を示す。この機能ブロック図の実行は、メモリシステム108のコントローラ201によって実行され得る。
コマンド(例えば、検索要求、リード)は、ホストからのメモリバス(例えば、シリアルアドバンスドテクノロジーアタッチメント(SATA))から受信し得る。受信されたコマンドは、コマンドの種類を決定するためにパースブロック501によって調べることができる。
受信されたコマンドが検索要求(例えば、図4のSCSIライトコマンド401)である場合には、検索処理スレッド512によって、要求ファーストインファーストアウト(FIFO)バッファ503に使用するために待機され得る。バッファ503は、検索キー及び検索条件を格納し得る。受信されたコマンドがパースブロック501によって、2つの次のコマンド(例えば、図4のSCSIリード403,407)のうちの1つであると決定された場合、これらのコマンドの表示は2つの未了要求バッファ505、506のうち1つに格納され得る。
継続バッファ505は、メモリシステムが、一旦バッファが一杯になるか、検索が完了した場合に応答するよう要求する第2のコマンド(例えば、図4のSCSIリード403)の表示を格納することができる。このバッファ505は、送信応答情報ブロック507に連結され、応答情報FIFO508が、検索が終了したことを示すデータを含む場合(例えば、応答FIFO510、511が一杯で、全体のデータベースが検索されたとき)、送信応答情報ブロック507は、バッファは一杯であるか、または全体のデータベースが検索されたことを示す情報応答(例えば、図4の応答405)をホストへとパッケージ化することができる。
ゲット要求バッファ506は、メモリシステムから検索結果を要求する第3のコマンド(例えば、図4のSCSIリード407)の表示を格納することができる。第2のコマンド(例えば、図4のSCSIリード407)がホストから受信された場合、応答送信ブロック509は、応答FIFOバッファ510、511に格納された検索結果をパッケージ化し、メモリバスを介してホストにデータを送信し得るように、このバッファ508は、応答送信ブロック509に連結される。一旦、これらのバッファ510、511が空になると、表示が、検索が依然として継続する場合には、スレッド512はバッファ510、511を一杯にし続けることができることを、検索処理スレッド512に表示するために、応答バッファ自由リスト513に格納され得る。
検索処理スレッド512のそれぞれは、ホストから受信されたときに、別々の検索を含む。多数の異なる検索処理スレッド512を使用することにより、複数の別々の検索が実質的に同時に実行され得る(例えば、実質的に並行で、部分的にまたは完全に重複する)。
初期コマンド(例えば、図4のSCSIライト401)がホストから受信されたとき、検索条件及び検索キーは、検索処理スレッド512の1つに転送され得る。その特定の検索処理スレッド512は、次にデータベースのレコードテーブル(例えば、図3)に、検索条件による検索キーを格納されたレコードと比較するためにアクセス可能である。各検索処理スレッド512は、異なる検索条件及び検索キーを有する別々の検索を実行し得る。
一旦、検索処理スレッド512の1つがバッファ510、511のどちらかを検索の結果または検索された全データベース(例えば、検索が完了)で一杯にすると、達成されたものの表示が応答情報FIFO508に格納され得る。この表示は、バッファ510、511が単に一杯になっているかまたは検索が完了したかの情報に加えて、表示が意味する特定の検索への参照を含み得る。この表示は、次に、前述したように、送信応答情報ブロック507によってパッケージ化され、ホストに送信され得る。
図5の機能ブロックは、メモリシステム108の一部であることができ、メモリシステム内のコントローラ201によって実行され得る。機能ブロックは、ハードウェアとソフトウェア/ファームウェアモジュールとの組み合わせであり得る。そのため、多数の検索処理スレッド512が複数の並行検索を可能にするだけでなく、これらの検索を達成する処理は、ホスト130の作業負荷を低減することができるメモリシステム108によって実行され得る。
図6Aは、自律的メモリ検索のための方法の実施形態におけるフローチャートを示す。ホストはコマンドをメモリシステムに送信(例えば、SCSIライトコマンド、検索要求)し、検索を開始することができる601。このコマンドは、検索キー及び検索条件の指示を含み得る。ホストは、検索要求が受信されたというメモリシステムからの確認を受信することができる603。
ホストは、次に、コマンド(例えば、SCSIリードコマンド)をメモリシステムに送信し、メモリシステムにホストが検索要求からの任意の結果を受信する準備ができていることを示す605。応答は、検索が完了した(例えば、全データベースが検索された)または検索結果のバッファが一杯であるかの何れかを示し得るメモリシステムから受信され得る607。
ホストは、次に、それらの検索結果を取得するために、コマンド(例えば、SCSIリードコマンド)をメモリシステムに送信し、そこへメモリシステムが検索結果に応答する609。メモリシステムが、検索が完了していない611と示した場合、この方法はホストが検索結果を受信する準備ができたことを示す箇所605から繰り返す。検索が完了した場合には、この方法は終了する615。
図6Bは、自律的メモリ検索のための方法の別の実施形態におけるフローチャートを示す。任意のステップにおいて、メモリは、検索要求の前に構成され得る。例えば、転送サイズの構成(例えば、要求元/イニシエータに返信する前の全応答のサイズ)が設定されてよく、最大/最小レコード及びページサイズ(例えば、格納されたデータ構造及びメモリページのデータ構造のサイズ)が設定されてよく、物理ページ単位のいくつかのレコードが設定されてよく、多数の領域用のドライブを分割し、いくつかは従来の読み書きを支援すること、その他はデータ構成を意識する操作を支援することが設定されてよく、圧縮の存在(例えば、アルゴリズムの使用の可能/不可能)が設定されてよく、及び/または暗号化の存在(例えば、アルゴリズムの使用の可能/不可能)が設定されてよい。
ホストはコマンドをメモリシステムに送信(例えば、SCSIライトコマンド、検索要求)し、検索を開始することができる620。このコマンドは、検索キー及び検索条件の表示を含み得る。ホストは、検索要求が取得されたというメモリシステムからの確認を取得することができる622。
メモリシステムはホストに、検索が完了または検索応答バッファが一杯であることを示す応答を発行することができる624。メモリシステムはこの応答を実際の検索結果に従い追跡し得る626。ホストは、次に、結果及びその結果は正しく受信されたという受領を確認することができる628。メモリシステムは、次に、検索に関連した検索結果のバッファを破棄することができる630。
別の実施形態では、メモリシステム送信及びホスト受信のステップにおいては、検索結果が存在するという表示(例えば、607及び624)は、送信された実際の結果(例えば、609及び626)のステップと組み合わせることができる。
図6A及び図6Bの実施形態がホストの観点から図示されているが、当業者はこれらの実施形態はまた、メモリシステムによって実行されるような過程を示すと知っているであろう。換言すれば、ホストがメモリシステムから応答を受信すると、当業者はメモリシステムがその応答を送信したことを理解するであろう。
実施形態は、図2のメモリ203を含む、ハードウェア、ファームウェア及び/またはソフトウェアの1つまたはそれらの組み合わせで実行され得る。実施形態もまた、コンピュータで読み取り可能な記憶装置上に格納された命令として実行されてよく、本明細書で記載された操作を行う少なくとも1つのプロセッサによって読み出し、実行され得る。コンピュータで読み取り可能な記憶装置は、機械(例えば、コンピュータ)によって読み取り可能な形式で情報を格納するために、任意の非一時的機構を含み得る。例えば、コンピュータで読み取り可能な記憶装置は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリ装置、及びその他の記憶装置もしくは媒体を含み得る。いくつかの実施形態では、システムは、1つ以上のプロセッサを含み、コンピュータで読み取り可能な記憶装置に格納された命令で構成され得る。
メモリシステム108のコントローラ201は、(例えば、図3A及び図3Bに開示されるような)検索されたデータ構造形式を認識し得る。コントローラ201がデータ構造を認識するために、ソフトウェア/ファームウェア210は、データ構造に関連する属性を含むために書き込み及び/またはアップグレードされている。コントローラは、次に、データ構造の個別フィールドをパースでき、したがって、特定のデータ構造を含む操作を実行できる。例えば、特定のデータ構造は、以前に使用されたか、またはそのデータ構造に関する情報は、コントローラ201によって特定のデータ構造を実際に使用する前に実行されたソフトウェア/ファームウェアに予め格納された可能性がある。この情報はデータベーステーブル、データベーススキーマ、二分木形式、グラフ構造またはデータ構造形式のメモリシステムを通知する、いくつかのその他の方法のフィールドの記述を含み得る。この情報のすべては、コントローラ201が、特定のデータベース形式がメモリシステムにおいて使用される場合どうなるかを知るために、コントローラのファームウェア/ソフトウェアの一部であり(またはアップデートされ)得る。
コントローラ201がデータ構造形式を認識し得る、このような操作の例として、ユーザはメモリシステム108に命令してアドレス0に配置されたデータベース中のリストを検索し得る。メモリシステムのコントローラは、アドレス0を見て、リストに適切な形式を見つける。コントローラのファームウェア(またはファームウェアのアップグレードを介して送信される)は、格納されたデータ構造の形式を認識できる格納されたルーチンを備える。コントローラはそこでリストの第1要素を見つけたと仮定した場合には、そのリストの構造を今、認識し(一般データとして単に扱う代わりに)、何か有意性のあるものとして異なるデータフィールドを見て関連付ける(例えば、次のリストのノード及び格納されたデータへのポインタ)。リストが検索されると、ソフトウェア/ファームウェアはコントローラに次のリストノードへのポインタをパースし、追跡し、同じやり方で次のリストノードを処理し始めることを命令する。
メモリシステム108のコントローラ201は、メモリシステムによってまだ使用されたことがない新しいデータ構造の格納のためのスペースをいかに割り当てるかを理解することができる。例えば、コントローラは、メモリアレイ中の格納を管理し、入ってくるコマンドのために任意のその格納を割り当てることができる。
メモリシステム108のコントローラ201は、データベースの状態を変更するために、(例えば、ホスト130からの)コマンドを理解し受け付けることができる。換言すれば、コントローラ201は、データベースを作成し、データベース内のテーブルを作成し、レコードを挿入し、レコードを削除し、テーブルを削除し、またはデータベースを削除するよう構成され得る。コントローラ201は、また、特定のデータセット上のインデックスがホスト130によって要求されるデータベースの状態を変更することができる。
メモリシステム108のコントローラ201は、第1のメモリシステムが別のデータベース有効メモリシステムに、クライアントとして動作できるように、メモリシステム108を制御できる。例えば、メモリシステムがSSDである場合には、データベースを備えるSSDは、クライアントであってよく、データベースを備える別のSSDからのコマンドに応答し得る。これは、同様の検索条件及び検索キーで、その他のメモリシステムも検索する能力を1つのメモリシステムに提供し得る。
図7は、こうしたシステムの一例を示す。ホスト130は、複数のメモリシステム(例えば、SSD)108,701,702に連結され、通信することができ、メモリシステム108,701,702のそれぞれが実質的に類似している。メモリシステム108,701,702は、1つのメモリシステム701が別のメモリシステム108へのクライアントであり得るように、ホスト130だけでなく、それら自体の間でも同様に通信することができる。
メモリシステム108のコントローラ201は、コントローラによって実行されるファームウェア/ソフトウェア210によって決定される追加の機能をも有することができる。これらの機能は、説明の目的のためのみであり、コントローラ201は特定の機能のみに限定されない。
例えば、コントローラ201は、確実に受信する能力を有し、ファームウェア/ソフトウェア210のアップデートを制御し得る。これはコントローラ201の能力をアップデートするために使用され得る。コントローラ201は、検索結果を格納し、多数の入力データ構造(例えば、MySQL(登録商標)−結合、合併及びその他のデータ加工演算のようなスタイル操作)から得られる新しいデータ構造を作成し、データ構造中の共通フィールドの比較に基づいて新しいデータ構造を作成し(例えば、MySQL(登録商標)−多数のレコード中の特定の列中の等価データの比較に基づくスタイル結合)、その他のレコードの集約関数(例えば、MySQL(登録商標)−count、sum、average,標準偏差及びsum ifのようなスタイル操作)に基づいてレコード中のフィールドに値を割り当てるための新しいデータ構造を作成することが可能である。
コントローラ201は、さらにデータベースのレコードに冗長性を加える能力を有し、エラーを検出し得る(例えば、エラー訂正コード(ECC))。例えば、コントローラ201は、ECCがデータベース内に格納され、またはコントローラ201がホストへの送信前に検索結果にECCを加えるのを制御し得るように、データがメモリに格納されたときに、ECCの追加を制御し得る。コントローラ201は、また、現在のレコードでエラーが検出された場合、追加のレコードを調べられるように、レコードを複製できる。
コントローラ201は、さらに、検索効率を改善するために、データベースの1つ以上のフィールド中のインデックスを作成する能力を有し得る。例えば、次の検索が、その特定のレコードが検索キー及び検索条件に合致するかどうか決定するフラグを単に探すことができるように、コントローラ201は各レコードの特定のフィールドにあるフラグの格納を制御できる。
コントローラ201は、さらに、メモリシステムのキャッシュの検索結果の格納を制御する能力を有し得る。このキャッシュは、検索結果のデータバッファであるか、または、メモリシステムでその他の目的に使用された別のキャッシュであり得る。
コントローラ201は、さらに、検索結果が正しく受信されたという表示(例えば、ライトコマンド)が受信されたときに、メモリ及び/または検索結果のデータバッファのクリアを制御する能力を有し得る。コントローラ201は、さらに検索結果を格納するために使用されたメモリ位置(例えば、キャッシュ、データバッファ、メモリ)のデアロケーションを制御し得る。
装置は回路、集積回路ダイ、メモリ装置、メモリアレイまたはシステムとして定義され得る。
結論:
自律的メモリ検索のための装置及び方法の1つ以上の実施形態は、メモリシステム(例えば、SSD)のデータベース中の構造化または非構造化データセットの何れかの検索を実行し得る。この検索は外部ホストからの介入なしに完全にメモリシステム内で実行され得る。1つ以上の検索要求は、メモリシステム内で待機され得る。多数の検索は実質的に並行で処理され得る。多数のメモリシステム(例えば、多数のSSD)を備えるシステムにおいては、メモリシステム毎の多数の検索が待機され得る。データセットは単一のメモリシステムに常駐するか、または多数のメモリシステムにまたがうことが可能であり、単一の検索で全体のデータセットを検索され得る。
特定の実施形態が本明細書にて図示及び記載されているが、類似の目的を達成するために計算された任意の配列は、示された特定の実施形態と置き換えられ得ると当業者は認識するであろう。多くの適用は当業者には明白であろう。したがって、本願は、いかなる翻案または変形をも包含することを意図したものである。

Claims (43)

  1. 検索されるメモリへ検索要求を発行することであって、前記検索要求は前記メモリへ送信されたライトコマンドの論理ブロックアドレスフィールド内の所定のビットセットによって開始され、前記論理ブロックアドレスフィールドは、更に、前記検索要求を開始するための情報を示すビットを含み、前記ライトコマンドの前記論理ブロックアドレスフィールドは、論理ブロックアドレスの代わりに、前記所定のビットと、前記検索要求を開始するための前記情報を示す前記ビットとを含む、ことと、
    前記検索要求を開始するための前記情報応答して開始された、前記メモリに格納されたデータベースの検索が完了した、または検索結果が見つかったという指示前記メモリから受信することと
    前記検索結果が見つかった場合には、前記指示に応答して前記メモリ内のデータバッファから前記検索結果を取得し、前記データバッファが空である場合、前記メモリによる使用のための前記データバッファを放棄することと、
    前記検索要求に応じて前記メモリによって実行される前記検索と同時に、リード又はライトコマンドで前記メモリにアクセスすることと、
    を含む方法。
  2. 前記検索要求を開始するための前記情報に応答して、前記検索要求が受信されたという確認を前記メモリから受信することをさらに含む、請求項1に記載の方法。
  3. 前記検索要求に応答する前記検索が完了し、または前記検索結果が見つかったという前記指示を、前記メモリから受することが、前記検索が前記メモリに格納された前記データベースの最後に到達したという指示を受信することを含む、請求項1に記載の方法。
  4. 前記検索要求に応答して実行される前記検索が完了した、または前記検索結果が見つかったという前記指示を、前記メモリから受することが、前記メモリ内の前記データバッファが一杯であるという指示を受信することを含む、請求項1に記載の方法。
  5. 前記指示に応答して前記メモリから前記検索結果取得することが、前記メモリに前記検索結果を返信させるリードコマンドを前記メモリに発行することを含む、請求項1に記載の方法。
  6. ホストが前記検索結果を受信する準備ができていることを前記メモリに示すために、リードコマンドを前記メモリに発行することをさらに含む、請求項1に記載の方法。
  7. 前記メモリがソフトウェアアップデートを受信することをさらに含む、請求項1に記載の方法。
  8. ホストに結合されたメモリシステムに第1のコマンドを送信することであって、前記第1のコマンドは、前記メモリシステムに格納されたデータベースを検索するための検索要求の指示を含み、前記指示は、待機された検索条件及び検索キーのための前記検索要求を示す前記第1のコマンドの論理ブロックアドレスフィールド内の所定のビットセットを含み、前記検索要求の前記検索条件及び前記検索キーは、前記メモリシステムのデータバッファに格納され、前記第1のコマンドの前記論理ブロックアドレスフィールドが、論理ブロックアドレスの代わりに、前記所定のビットと、前記検索要求を開始するための情報を示すビットとを含むように、前記第1のコマンドの前記論理ブロックアドレスフィールドは、更に、前記検索要求を実行するための前記情報を示すビットを含む、ことと、
    前記メモリシステムが前記検索要求に起因する検索を実行するのと同時に、前記メモリシステムへリード又はライトコマンドを送信することと、
    前記メモリシステムへ第2のコマンドを送信することであって、前記第2のコマンドが、前記ホストが検索結果を受領する準備ができているという、前記メモリシステムへの指示を含む、ことと
    前記検索結果を取得するための第3のコマンドを前記メモリシステムへ送信することと、
    前記検索に関連した前記メモリシステムの前記データバッファの使用が放棄されたという指示を、前記メモリシステムから受信することと
    を含む、方法。
  9. 前記第2のコマンドを送信することと、前記第3のコマンドを送信することとの間で、前記メモリシステムから応答を受信することをさらに含み、前記応答は、前記メモリシステムが検索結果を有するか、または前記データベースがその全体を検索されたという指示を含む、請求項に記載の方法。
  10. 前記第1のコマンドがスモールコンピュータシステムインタフェース(SCSI)ライトコマンドを含み、前記第2のコマンドがSCSIリードコマンドを含み、前記第3のコマンドがSCSIリードコマンドを含む、請求項に記載の方法。
  11. 前記検索条件は「等しい」、「未満」、「超」、「等しくない」、「以下」、「以上」、「及び」、「または」または「ではない」のうちの1つ以上を含む、請求項に記載の方法。
  12. メモリ内のデータベースの複数の検索に対応する、複数の受信された検索要求を待機させることであって、前記受信された複数の検索要求は、前記メモリのデータバッファ内に待機させられる、こと
    前記メモリに結合されたホストからコマンドを受信することであって、前記コマンドは、前記データバッファ内に待機させられた、前記複数の受信された検索要求を実行するための要求を示すビットを有する論理ブロックアドレスフィールドを含み、前記コマンドの前記論理ブロックアドレスフィールドが前記メモリに対応する論理ブロックアドレスを含まないように、前記コマンドの前記論理ブロックアドレスフィールドは、更に、前記複数の受信された検索要求を実行するための情報を示すビットを含む、ことと、
    前記ビットと、前記複数の受信された検索要求を実行するための前記情報とに応答して、前記データベースの複数の検索を生成することであって、前記複数の前記検索のそれぞれが前記複数の受信された検索要求のそれぞれに対して生成される、ことと
    記データベースの前記複数の検索を実質的に並行に実行することと、
    前記複数の検索と並行して、読み出し又は書き込み動作を開始するためのリード又はライトコマンドを前記ホストから受信することと、
    前記複数の検索の各それぞれについて、前記それぞれの検索が完了したか、または検索結果を生成したという指示、前記メモリから送信することと、
    前記複数の検索に関連した前記データバッファが放棄されたという指示を、前記ホストへ送信することと、
    を含む方法。
  13. 受信されたコマンドに応答して前記検索結果のそれぞれを前記ホストに送信することをさらに含む、請求項12に記載の方法。
  14. 前記複数の検索のそれぞれが各検索キー及び各検索条件を含む、請求項12に記載の方法。
  15. メモリシステムによって、第1のコマンドをホストから受信することであって、前記第1のコマンドは前記メモリシステム内のデータベースを検索するため検索要求の指示を含み、前記指示は、待機された検索条件及び検索キーについての前記検索要求を示す、前記第1のコマンドの論理ブロックアドレスフィールド内のビットセットを含み、前記検索要求の前記待機された検索条件及び前記検索キーは、前記メモリシステムのデータバッファに格納され、前記第1のコマンドの前記論理ブロックアドレスフィールドは、前記第1のコマンドの前記論理ブロックアドレスフィールドが前記メモリシステムに対応する論理ブロックアドレスを含まないように、前記検索要求を実行するための情報を示すビットを更に含む、ことと、
    前記メモリシステムによって、前記ホストから第2のコマンドを受信することであって、前記第2のコマンドは、前記ホストが前記メモリシステムから検索結果を受領する準備ができているという前記メモリシステムへの指示を含む、ことと
    前記ビット、及び、前記検索要求を実行するための前記情報に応答して、前記待機された検索条件と前記検索キーを用いて前記データベースの少なくとも一つの検索を実行することと、
    前記少なくとも一つの検索と並行して、前記ホストからリード又はライトコマンドを受信することと、
    前記データバッファに、前記検索結果を格納することと、
    前記メモリシステムによって、前記検索結果を取得するための第3のコマンドを前記ホストから受信することと、
    を含む方法。
  16. 前記第3のコマンドに応答して前記ホストに前記データバッファ内のデータを送信することをさらに含む、請求項15に記載の方法。
  17. 前記第1、第2及び第3のコマンドをパースすることと、
    検索要求バッファ内に前記第1のコマンドを待機させることと、
    了要求バッファ内に前記第2及び第3のコマンドのそれぞれの指示を格納することと、
    応答情報バッファ内に検索結果の指示を格納することと、
    応答バッファに前記検索結果を格納することと、
    前記第2のコマンドの前記指示と前記検索結果の前記指示応答して前記ホストに情報応答を送信することと、
    前記第3のコマンドの前記指示と前記検索結果の前記指示応答して前記応答バッファから前記検索結果を送信することと、
    をさらに含む、請求項15に記載の方法。
  18. 前記応答バッファから前記検索結果を送信した後、応答バッファ自由リストに指示を格納することをさらに含む、請求項17に記載の方法。
  19. 前記検索結果を格納するためのデータ構造を作成する前記メモリシステムをさらに含む、請求項15に記載の方法。
  20. 前記検索結果が、第1のデータ構造からのデータを含み、かつ、前記第1データ構造に応答して、第2のデータ構造からのデータをさらに含む、請求項15に記載の方法。
  21. 前記第2のデータ構造を作成することが、前記第1と第2のデータ構造の両方に存在する特定のフィールドに基づいて前記第2のデータ構造を作成することを含む、請求項20に記載の方法。
  22. 或るレコード内のフィールドに、前記検索結果中のその他のレコードの集約関数に応答して値を割り当てることをさらに含む、請求項15に記載の方法。
  23. データベース検索を実行する動作のためのメモリシステムの処理回路によって実行するための命令を格納する、非一時的コンピュータ読み取り可能な記憶媒体であって、前記データベース検索を実行する前記動作が、
    前記メモリシステムに格納されたデータベースを検索するための、前記メモリシステムによって受信された複数の検索要求を待機させることであって前記複数の検索要求は、前記メモリシステムのデータバッファ内に待機させられる、ことと、
    前記メモリシステムに結合されたホストからコマンドを受信することであって、前記コマンドは、前記データバッファに待機された前記複数の検索要求を実行するための要求を示すビットを有する論理ブロックアドレスフィールドを含み、前記コマンドの前記論理ブロックアドレスフィールドが前記メモリシステムに対応する論理ブロックアドレスを含まないように、前記コマンドの前記論理ブロックアドレスフィールドは、更に、前記複数の検索要求を実行するための情報を示すビットを含む、ことと、
    前記ビット及び前記複数の検索要求を実行するための前記情報に応答して、複数の検索を生成することであって、それぞれの検索が前記複数の検索要求のそれぞれに対して生成される、ことと
    実質的に並行前記複数の検索を実行することであって、前記複数の検索は、前記ホストから受信されたリード又はライトコマンドによって開始される読み出し又は書き込み動作と並行して実行される、ことと、
    各それぞれの検索に対して、前記それぞれの検索が前記データベースの全体を検索したか、又は検索結果を生成したという指示、前記メモリシステムから送信することと、
    を含む、非一時的コンピュータ読み取り可能な記憶媒体。
  24. 前記検索を実行する前記動作が、前記検索結果を受信するホストの準備ができていることを示すコマンドの受信に応答して各それぞれの検索のために前記指示を送信することを更に含む、請求項23に記載の非一時的コンピュータ読み取り可能な記憶媒体。
  25. 前記検索を実行する前記動作が、前記検索結果の読み出しを示すコマンドに応答して、前記検索結果を送信することを更に含む、請求項24に記載の非一時的コンピュータ読み取り可能な記憶媒体。
  26. 前記検索を実行するための前記動作が、前記検索結果の前記読み出しを示す前記コマンドを受信するまで前記メモリシステムにおけるバッファ内前記検索結果を格納することを更に含む、請求項25に記載の非一時的コンピュータ読み取り可能な記憶媒体。
  27. データベースを格納するよう構成されたメモリと、
    前記メモリに結合されたコントローラと、
    を備えるメモリシステムであって、
    前記コントローラが、
    検索要求受信前記データベースの検索と対応する前記検索要求を前記メモリのデータバッファに待機させることと、
    前記検索要求と、受信されたコマンドとに応答して、前記データベースの検索を生成することであって、前記受信されたコマンドは、待機された前記検索要求を実行するための要求を示すビットを有する論理ブロックアドレスフィールドを含み、前記受信されたコマンドの前記論理ブロックアドレスフィールドは、前記受信されたコマンドの前記論理ブロックアドレスフィールドが前記メモリに対応する論理ブロックアドレスを含まないように、前記検索要求を実行するための情報を示すビットを更に含む、ことと、
    前記ビット及び前記待機された検索要求に応答して、他の検索要求及び他のメモリ動作と実質的に並行して前記データベースの前記検索実行することと、
    それぞれの検索に対して、前記それぞれの検索が完了したか又は検索結果を生成したかの何れかであることを示すそれぞれの指示を送信することと、
    前記検索に関連した前記データバッファが放棄されたという指示を送信することと、
    を制御するよう構成されたメモリシステム。
  28. 前記コントローラが、
    前記検索結果を要求するコマンドをホストから受信したことに応答して、前記検索結果を備えるデータバッファを前記ホストへ送信することと、
    前記データバッファが前記検索結果の送信の後に空であるという指示を設定することと、
    を制御するようさらに構成された、請求項27に記載のメモリシステム。
  29. 前記データベースが非構造化データセットを備える、請求項27に記載のメモリシステム。
  30. 前記データベースが構造化データセットを備える、請求項27に記載のメモリシステム。
  31. 前記メモリシステムがソリッドステートドライブを備え、前記メモリが不揮発性メモリを備える、請求項27に記載のメモリシステム。
  32. 前記データベースが、複数のメモリシステム格納されたデータセットを備え、前記コントローラがさらに、前記複数のメモリシステムにわたって前記データベースの前記検索実行することを制御するよう構成された、請求項27に記載のメモリシステム。
  33. 前記コントローラが、前記検索結果に、エラー訂正冗長性をさらに追加するようさらに構成された、請求項27に記載のメモリシステム。
  34. 前記コントローラは、検索結果の複製を制御するようさらに構成された、請求項27に記載のメモリシステム。
  35. 前記コントローラが、前記検索結果の1つ以上のレコードのフィールド内インデックスを作成するようさらに構成された、請求項27に記載のメモリシステム。
  36. 前記コントローラは前記検索結果をキャッシュするようさらに構成された、請求項27に記載のメモリシステム。
  37. 前記コントローラが、
    前記検索結果が受信されたことを示すコマンドを受信し、
    前記検索結果が受信されたことを示す前記コマンドに応答して前記検索結果に関連するメモリをクリアするようさらに構成された、請求項27に記載のメモリシステム。
  38. 前記コントローラが、前記検索結果に関連するメモリ位置の割り当てを解除するようさらに構成された、請求項27に記載のメモリシステム。
  39. 前記コントローラはデータ構造形式に関する情報を格納するようさらに構成された、請求項27に記載のメモリシステム。
  40. 前記情報がフィールドの説明、データベーススキーマ、二分木情報またはグラフ構造を備える、請求項39に記載のメモリシステム。
  41. 前記コントローラがデータ構造の前記格納のためスペースを割り当てるようさらに構成された、請求項27に記載のメモリシステム。
  42. 前記コントローラが前記データベースの状態を変更すること、前記データベースを作成すること、前記データベース内テーブルを作成すること、前記データベース内に第1のレコードを挿入すること、前記データベース内の第2のレコードを削除すること、前記データベース内のテーブルを削除すること、及び/または前記データベースを削除することのうち、1つ以上を実行するようさらに構成された、請求項27に記載のメモリシステム。
  43. 複数のメモリシステムを備えるシステムであって、
    各メモリシステムが、
    データベースを格納するよう構成されたメモリと、
    前記メモリに結合されたコントローラと、を備え、
    前記コントローラは、
    検索要求受信し、前記データベースの検索に対応する前記検索要求を、前記メモリのデータバッファ内へ待機させることと、
    前記検索要求と、受信されたコマンドとに応答して、前記データベースの検索を生成することであって、前記受信されたコマンドは、待機された前記検索要求を実行するための要求を示すビットを有する論理ブロックアドレスフィールドを含み、前記受信されたコマンドの前記論理ブロックアドレスフィールドは、前記受信されたコマンドの前記論理ブロックアドレスフィールドが前記メモリに対応する論理ブロックアドレスを含まないように、前記検索要求を実行するための情報を示すビットを更に含む、ことと、
    前記ビット及び前記待機された検索要求に応答して、他の検索要求及び読み出し又は書き込みメモリ動作と実質的に並行して前記データベースの前記検索実行することと、
    それぞれの検索に対して、前記それぞれの検索が完了したか又は検索結果を生成したかの何れかを示すそれぞれの指示を送信することと、
    前記検索に関連した前記データバッファが放棄されたという指示を送信することと、
    を制御するよう構成され、
    記検索要求が第及び第2のメモリシステムの両方で実行されるよう前記第1のメモリシステムが前記第2のメモリシステムのクライアントであるように、前記複数のメモリシステムが互いに結合されているシステム。
JP2016534782A 2013-08-13 2014-08-12 自律的メモリ検索のための方法及びシステム Active JP6211196B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/965,739 US9779138B2 (en) 2013-08-13 2013-08-13 Methods and systems for autonomous memory searching
US13/965,739 2013-08-13
PCT/US2014/050624 WO2015023625A1 (en) 2013-08-13 2014-08-12 Methods and systems for autonomous memory searching

Publications (3)

Publication Number Publication Date
JP2016536694A JP2016536694A (ja) 2016-11-24
JP2016536694A5 JP2016536694A5 (ja) 2017-09-07
JP6211196B2 true JP6211196B2 (ja) 2017-10-11

Family

ID=52467568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016534782A Active JP6211196B2 (ja) 2013-08-13 2014-08-12 自律的メモリ検索のための方法及びシステム

Country Status (7)

Country Link
US (2) US9779138B2 (ja)
EP (1) EP3033701B1 (ja)
JP (1) JP6211196B2 (ja)
KR (2) KR101868850B1 (ja)
CN (2) CN105612518B (ja)
TW (2) TWI664541B (ja)
WO (1) WO2015023625A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10838646B2 (en) * 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
WO2015070110A2 (en) 2013-11-07 2015-05-14 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US11182284B2 (en) 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US9633074B1 (en) * 2014-01-03 2017-04-25 Amazon Technologies, Inc. Querying data set tables in a non-transactional database
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
CN105988704B (zh) * 2015-03-03 2020-10-02 上海触乐信息科技有限公司 高效的触摸屏文本输入系统及方法
US9927984B2 (en) * 2015-10-14 2018-03-27 Samsung Electronics Co., Ltd. Electronic system with interface control mechanism and method of operation thereof
KR20190023433A (ko) * 2017-08-29 2019-03-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
TWI664527B (zh) * 2018-03-20 2019-07-01 慧榮科技股份有限公司 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置
CN110765156A (zh) * 2018-07-09 2020-02-07 慧荣科技股份有限公司 链表搜索装置及方法
US10990323B2 (en) * 2019-05-28 2021-04-27 Silicon Motion, Inc. Flash memory controller, memory device and method for accessing flash memory module

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134711A (en) 1988-05-13 1992-07-28 At&T Bell Laboratories Computer with intelligent memory system
GB8816413D0 (en) 1988-07-09 1988-08-17 Int Computers Ltd Data processing system
GB9023096D0 (en) * 1990-10-24 1990-12-05 Int Computers Ltd Database search processor
US5671430A (en) 1993-06-30 1997-09-23 Gunzinger; Anton Parallel data processing system with communication apparatus control
CA2145106C (en) 1994-04-22 1999-08-24 Abhaya Asthana Intelligent memory-based input/output system
JP3289101B2 (ja) * 1996-01-25 2002-06-04 東京エレクトロン株式会社 フラッシュ・ディスク・システムの初期化方法及び装置
KR100359414B1 (ko) * 1996-01-25 2003-01-24 동경 엘렉트론 디바이스 주식회사 데이타독출/기록방법및그를이용한메모리제어장치및시스템
US5913217A (en) * 1997-06-30 1999-06-15 Microsoft Corporation Generating and compressing universally unique identifiers (UUIDs) using counter having high-order bit to low-order bit
US6105130A (en) 1997-12-23 2000-08-15 Adaptec, Inc. Method for selectively booting from a desired peripheral device
US6751606B1 (en) * 1998-12-23 2004-06-15 Microsoft Corporation System for enhancing a query interface
US7328277B2 (en) 2000-03-03 2008-02-05 Enterasys Networks, Inc. High-speed data processing using internal processor memory space
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7581080B2 (en) 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
GB2406399A (en) * 2003-09-23 2005-03-30 Ibm Seaching within a computer network by entering a search term and optional URI into a web browser
US7243200B2 (en) 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7242216B1 (en) 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
US7634622B1 (en) 2005-06-14 2009-12-15 Consentry Networks, Inc. Packet processor that generates packet-start offsets to immediately store incoming streamed packets using parallel, staggered round-robin arbitration to interleaved banks of memory
US20070165457A1 (en) 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
DE102006009027A1 (de) 2006-02-27 2007-08-30 Infineon Technologies Ag Speicheranordnung
TW200743991A (en) * 2006-05-18 2007-12-01 Realtek Semiconductor Corp Data search method and apparatus thereof
US7941579B2 (en) 2006-06-30 2011-05-10 Brother Kogyo Kabushiki Kaisha Communication system for authenticating authority of host device for accessing storage medium set to periphery device
US7657705B2 (en) * 2006-09-27 2010-02-02 Lsi Corporation Method and apparatus of a RAID configuration module
US8285707B2 (en) * 2006-11-08 2012-10-09 International Business Machines Corporation Method of querying relational database management systems
US7895151B2 (en) 2008-06-23 2011-02-22 Teradata Us, Inc. Fast bulk loading and incremental loading of data into a database
US7623365B2 (en) 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7913033B2 (en) 2007-10-09 2011-03-22 Micron Technology, Inc. Non-volatile memory device having assignable network identification
TWI346289B (en) 2007-12-19 2011-08-01 Ralink Technology Corp Peripheral complying with sdio standard and method for managing sdio command
US8493979B2 (en) 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
TWI406130B (zh) * 2009-03-10 2013-08-21 Phison Electronics Corp 資料處理系統、控制器及其搜尋特定記憶體區的方法
US8427952B1 (en) 2009-03-24 2013-04-23 Packet Plus, Inc. Microcode engine for packet processing
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US10803066B2 (en) 2010-06-29 2020-10-13 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators
US9792307B2 (en) * 2010-07-27 2017-10-17 Oracle International Corporation Enterprise-based searching of new and updated data
US8930618B2 (en) 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
JP2012159903A (ja) * 2011-01-31 2012-08-23 Fujitsu Semiconductor Ltd データ処理システム、データ処理装置、及びデータ処理方法
US8478736B2 (en) * 2011-02-08 2013-07-02 International Business Machines Corporation Pattern matching accelerator
KR101306622B1 (ko) 2011-06-22 2013-09-11 주식회사 에이디칩스 명령어 큐 제어장치
JP2013045378A (ja) 2011-08-26 2013-03-04 Fujitsu Ltd ストレージ制御方法、情報処理装置およびプログラム
US8775685B1 (en) 2011-10-13 2014-07-08 Xilinx, Inc. Parallel processing of network packets
US20130173655A1 (en) * 2012-01-04 2013-07-04 International Business Machines Corporation Selective fetching of search results
US9424202B2 (en) * 2012-11-19 2016-08-23 Smartfocus Holdings Limited Database search facility
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data

Also Published As

Publication number Publication date
CN111221848A (zh) 2020-06-02
CN105612518A (zh) 2016-05-25
TWI664541B (zh) 2019-07-01
WO2015023625A1 (en) 2015-02-19
EP3033701A4 (en) 2017-04-05
EP3033701B1 (en) 2020-05-27
KR20180067729A (ko) 2018-06-20
US9779138B2 (en) 2017-10-03
JP2016536694A (ja) 2016-11-24
US20150052114A1 (en) 2015-02-19
KR101868850B1 (ko) 2018-06-19
CN105612518B (zh) 2020-01-14
TW201518968A (zh) 2015-05-16
TWI610187B (zh) 2018-01-01
KR101927677B1 (ko) 2018-12-10
EP3033701A1 (en) 2016-06-22
KR20160042122A (ko) 2016-04-18
US20170351737A1 (en) 2017-12-07
TW201810088A (zh) 2018-03-16

Similar Documents

Publication Publication Date Title
JP6211196B2 (ja) 自律的メモリ検索のための方法及びシステム
JP2016536694A5 (ja)
JP6445049B2 (ja) ログの管理方法及び計算機システム
WO2015166540A1 (ja) ストレージ装置とそのデータ処理方法及びストレージシステム
WO2015162752A1 (ja) データベース演算部を備えるフラッシュモジュール、及びストレージ装置
US20170017395A1 (en) Storage apparatus, data processing method and storage system
US10007548B2 (en) Transaction system
US10515078B2 (en) Database management apparatus, database management method, and storage medium
US10810174B2 (en) Database management system, database server, and database management method
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
WO2018076633A1 (zh) 一种远程数据复制方法、存储设备及存储系统
US9733850B2 (en) Optical cold storage with encoding and placement of data chunks on different optical disks
US20170177653A1 (en) Computer system, method for inspecting data, and computer
EP3555774B1 (en) Efficient database management system utilizing silo and manifest
WO2016206070A1 (zh) 一种文件更新方法及存储设备
JP6366812B2 (ja) 計算機及びデータベースの管理方法
JP6200100B2 (ja) 計算機システム
JP2014059760A (ja) ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
US20240168877A1 (en) Solving submission queue entry overflow with an additional out-of-order submission queue entry

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170728

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170728

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170728

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170912

R150 Certificate of patent or registration of utility model

Ref document number: 6211196

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250