JP2012523622A - フラッシュメモリデータストレージデバイスにおけるデータストライピング - Google Patents
フラッシュメモリデータストレージデバイスにおけるデータストライピング Download PDFInfo
- Publication number
- JP2012523622A JP2012523622A JP2012504740A JP2012504740A JP2012523622A JP 2012523622 A JP2012523622 A JP 2012523622A JP 2012504740 A JP2012504740 A JP 2012504740A JP 2012504740 A JP2012504740 A JP 2012504740A JP 2012523622 A JP2012523622 A JP 2012523622A
- Authority
- JP
- Japan
- Prior art keywords
- data
- channel
- storage device
- host
- chunk size
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
ホスト(106、350、551)から、複数のメモリチップ(118a、118b、218、318)と、ホストと複数のメモリチップ(118a、118b、218、318)間のデータの通信のための複数の物理チャネル(112)とを含むデータストレージデバイス(100、302、501)にデータをストライピングするための方法であって、各チャネルが異なる複数のメモリチップ(118a、118b、218、318)に機能的に接続される方法が開示される。該方法は、複数のチャネル(112)内の物理チャネル(112)の数を決定することと、別個のチャネル(112)に接続されたメモリチップ(118a、118b、218、318)にデータを書き込むための第1のチャネルチャンクサイズを決定することと、ホストを介して、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割することと、データを、第1のチャネルチャンクサイズ単位で、データストレージデバイス(100、302、501)の異なるチャネル(112)にストライピングすることとを含む。
【選択図】図5
【選択図】図5
Description
(関連出願の相互参照)
本出願は、引用により全体として本明細書中に組み込まれている、2009年4月8日に出願された「データストレージデバイス(DATA STORAGE DEVICE)」と題する米国仮出願第61/167,709号、及び2009年6月17日に出願された「フラッシュメモリデータストレージデバイスにおけるパーティショニング及びストライピング(PARTITIONING AND STRIPING IN A FLASH MEMORY DATA STORAGE DEVICE)」と題する米国仮出願第61/187,835号の利益を主張するものである。
本出願は、引用により全体として本明細書中に組み込まれている、2009年4月8日に出願された「データストレージデバイス(DATA STORAGE DEVICE)」と題する米国仮出願第61/167,709号、及び2009年6月17日に出願された「フラッシュメモリデータストレージデバイスにおけるパーティショニング及びストライピング(PARTITIONING AND STRIPING IN A FLASH MEMORY DATA STORAGE DEVICE)」と題する米国仮出願第61/187,835号の利益を主張するものである。
(技術分野)
この説明は、データストレージデバイスに関する。
この説明は、データストレージデバイスに関する。
(背景)
データストレージデバイスは、データを格納するために使用することができる。データストレージデバイスは、コンピューティングデバイスのデータストレージの必要性に備えるためにコンピューティングデバイスと共に使用することができる。場合によっては、膨大量のデータをデータストレージデバイスに格納することが望ましいこともある。また、データストレージデバイスとの間でデータの迅速な読み取り及び書き込みを行うためのコマンドを実行することが望ましい場合もある。
データストレージデバイスは、データを格納するために使用することができる。データストレージデバイスは、コンピューティングデバイスのデータストレージの必要性に備えるためにコンピューティングデバイスと共に使用することができる。場合によっては、膨大量のデータをデータストレージデバイスに格納することが望ましいこともある。また、データストレージデバイスとの間でデータの迅速な読み取り及び書き込みを行うためのコマンドを実行することが望ましい場合もある。
(要旨)
一般的な態様において、ホストから、複数のメモリチップと、ホストと複数のメモリチップ間のデータの通信のための複数の物理チャネルとを含むデータストレージデバイスにデータをストライピングするための方法であって、各チャネルが異なる複数のメモリチップに機能的に接続される方法が開示される。方法は、複数のチャネル内の物理チャネルの数を決定することと、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズを決定することと、ホストを介して、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割することと、データを、第1のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングすることとを含む。
一般的な態様において、ホストから、複数のメモリチップと、ホストと複数のメモリチップ間のデータの通信のための複数の物理チャネルとを含むデータストレージデバイスにデータをストライピングするための方法であって、各チャネルが異なる複数のメモリチップに機能的に接続される方法が開示される。方法は、複数のチャネル内の物理チャネルの数を決定することと、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズを決定することと、ホストを介して、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割することと、データを、第1のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングすることとを含む。
1つの一般的な態様において、ホストから、複数のメモリチップと、ホストと複数のメモリチップ間のデータの通信のための複数の物理チャネルとを含むデータストレージデバイスにデータをストライピングするための方法であって、各チャネルが異なる複数のメモリチップに機能的に接続されるもう1つの方法が開示される。方法は、複数のチャネル内の物理チャネルの数を決定することと、決定された物理チャネルの各々について、チャネルに機能的に接続されたメモリチップの数を決定することとを含む。別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズが決定され、異なるメモリチップにデータを書き込むためのチップチャンクサイズが決定される。論理的に順次のデータは、ホストを介して、第1のチャネルチャンクサイズセグメントに分割され、第1のチャネルチャンクサイズセグメントは、ホストを介して、チップチャンクサイズセグメントに分割される。データは、第1のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングされ、第1のチャネルチャンクサイズのセグメントのデータは、チップチャンクサイズ単位で、チャネルに接続された異なるメモリチップにストライピングされる。
実施態様は、1つ以上の以下の特徴を含むことができる。たとえば、論理的に順次のデータは、データファイルで構成されてもよい。データは、第2のチャネルからのデータの読み取り中に、第1のチャネルに書き込むことができる。複数のチャネル内の物理チャネルの数を決定することは、データストレージデバイス内のチャネルの数を指示する情報をデータストレージデバイスからホストに送信することを含むことができるか、又はデータストレージデバイス内のチャネルの数を指示するホストに格納されているデータを読み取ることを含むことができる。加えて、別個のチャネルに接続されたメモリチップにデータを書き込むための第2のチャネルチャンクサイズが決定されてもよく、論理的に順次のデータは、ホストを介して、第2のチャネルチャンクサイズセグメントに分割されてもよい。データは、第2のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングされてもよく、第2のチャネルチャンクサイズのセグメントのデータは、チップチャンクサイズ単位で、チャネルに接続された異なるメモリチップにストライピングされてもよい。第1のチャネルチャンクサイズは、ホストを介して入力されたユーザからの入力に基づいて決定されてもよい。
もう1つの一般的な態様において、装置は、ホストと、複数のメモリチップ、及びホストと複数のメモリチップ間のデータの通信のための複数の物理チャネルを含むデータストレージデバイスとを含むことができ、各チャネルが異なる複数のメモリチップに機能的に接続される。ホストは、インターフェイスを介してデータストレージデバイスに結合されてもよく、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズを決定するように構成された初期化エンジンと、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割するように構成されたセグメンテーションエンジンと、データを、第1のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングするように構成されたストライピングエンジンとを含むことができる。
実施態様は、1つ以上の以下の特徴を含むことができる。たとえば、データストレージデバイスは、チャネルの数を格納するように構成されたストレージ媒体を含むことができ、データストレージデバイスは、ホストからコマンドを受信すると、データストレージデバイス内のチャネルの数を指示する情報をデータストレージデバイスからホストに送信するように構成される。ホストはさらに、データストレージデバイスに書き込まれるデータにメモリアドレスを割り当てるように構成されたアドレス割り当てエンジンを含むことができ、割り当てられるメモリアドレスは、データがチャネルの特定の1つに書き込まれることを指定する。ストライピングエンジンは、第2のチャネルからのデータの読み取り中に、データを第1のチャネルに書き込むように構成されてもよい。初期化エンジンはさらに、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズとは異なる、第2のチャネルチャンクサイズを決定するように構成されてもよく、セグメンテーションエンジンはさらに、論理的に順次のデータを第2のチャネルチャンクサイズセグメントに分割するように構成され、ストライピングエンジンはさらに、データを、第2のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングするように構成される。初期化エンジンはさらに、異なるメモリチップにデータを書き込むためのチップチャンクサイズを決定するように構成されてもよく、セグメンテーションエンジンはさらに、第1のチャネルチャンクサイズセグメントをチップチャンクサイズセグメントに分割するように構成され、ストライピングエンジンはさらに、データを、第1のチャネルチャンクサイズ単位で、チャネルに接続された異なるチップにストライピングするように構成される。
もう1つの一般的な態様において、装置は、複数のメモリチップと、ホストと複数のメモリチップ間のデータの通信のための複数の物理チャネルとを含むデータストレージデバイスを含み、各チャネルが異なる複数のメモリチップに機能的に接続される。装置はまた、インターフェイスを介してデータストレージデバイスに機能的に結合されたホストを含む。ホストは、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルチャンクサイズを決定するように構成された初期化エンジンと、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割するように構成されたセグメンテーションエンジンと、データを、第1のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングするように構成されたストライピングエンジンとを含む。
実施態様は、1つ以上の以下の特徴を含むことができる。たとえば、データストレージデバイスは、チャネルの数を格納するように構成されたストレージ媒体を含むことができ、データストレージデバイスは、ホストからコマンドを受信すると、データストレージデバイス内のチャネルの数を指示する情報をデータストレージデバイスからホストに送信するように構成されてもよい。ホストはさらに、データストレージデバイスに書き込まれるデータにメモリアドレスを割り当てるように構成されたアドレス割り当てエンジンを含むことができ、割り当てられるメモリアドレスは、データがチャネルの特定の1つに書き込まれることを指定する。論理的に順次のデータは、データファイルで構成されてもよい。ストライピングエンジンは、第2のチャネルからのデータの読み取り中に、データを第1のチャネルに書き込むように構成されてもよい。初期化エンジンはさらに、別個のチャネルに接続されたメモリチップにデータを書き込むための第1のチャネルのチャンクサイズとは異なる、第2のチャネルチャンクサイズを決定するように構成されてもよく、セグメンテーションエンジンはさらに、論理的に順次のデータを第2のチャネルチャンクサイズセグメントに分割するように構成され、ストライピングエンジンはさらに、データを、第2のチャネルチャンクサイズ単位で、データストレージデバイスの異なるチャネルにストライピングするように構成されてもよい。初期化エンジンはさらに、別個のメモリチップにデータを書き込むためのチップチャンクサイズを決定するように構成されてもよく、セグメンテーションエンジンはさらに、第1のチャネルチャンクサイズセグメントをチップチャンクサイズセグメントに分割するように構成されてもよく、ストライピングエンジンはさらに、データを、第1のチャネルチャンクサイズ単位で、チャネルに接続された異なるチップにストライピングするように構成されてもよい。
1つ以上の実施態様の詳細は、添付の図面及び以下の説明において示される。その他の特徴は、説明及び図面、並びに特許請求の範囲から明らかとなろう。
(詳細な説明)
本文書は、データストレージのための装置、(1つ以上の)システム、及び技法を説明する。そのようなデータストレージ装置は、1つ以上の異なるメモリボードと共に使用されうるコントローラを有するコントローラボードを含むことができ、メモリボードは各々複数のフラッシュメモリチップを有する。データストレージ装置は、コントローラボード上のインターフェイスを使用してホストと通信することができる。このように、コントローラボード上のコントローラは、インターフェイスを使用してホストからコマンドを受信し、メモリボード上のフラッシュメモリチップを使用してそれらのコマンドを実行するように構成されてもよい。
本文書は、データストレージのための装置、(1つ以上の)システム、及び技法を説明する。そのようなデータストレージ装置は、1つ以上の異なるメモリボードと共に使用されうるコントローラを有するコントローラボードを含むことができ、メモリボードは各々複数のフラッシュメモリチップを有する。データストレージ装置は、コントローラボード上のインターフェイスを使用してホストと通信することができる。このように、コントローラボード上のコントローラは、インターフェイスを使用してホストからコマンドを受信し、メモリボード上のフラッシュメモリチップを使用してそれらのコマンドを実行するように構成されてもよい。
図1は、データストレージデバイス100を示すブロック図である。データストレージデバイス100は、コントローラボード102及び1つ以上のメモリボード104a及び104bを含むことができる。データストレージデバイス100は、インターフェイス108を介してホスト106と通信することができる。インターフェイス108は、ホスト106とコントローラボード102の間にあってもよい。コントローラボード102は、コントローラ110、DRAM 111、複数のチャネル112、電源モジュール114、及びメモリモジュール116を含むことができる。メモリボード104a及び104bは、各メモリボード上に複数のフラッシュメモリチップ118a及び118bを含むことができる。メモリボード104a及び104bはまた、メモリデバイス120a及び120bを含むことができる。
一般に、データストレージデバイス100は、フラッシュメモリチップ118a及び118b上にデータを格納するように構成されてもよい。ホスト106は、フラッシュメモリチップ118a及び118bとの間でデータの書き込み及び読み取りを行うことができ、さらにフラッシュメモリチップ118a及び118bに関してその他の操作を実行させるようにすることができる。ホスト106とフラッシュメモリチップ118a及び118bとの間のデータの読み取り及び書き込み、並びにその他の操作は、コントローラボード102上のコントローラ110を通じて処理され、制御されてもよい。コントローラ110は、ホスト106からコマンドを受信して、メモリボード104a及び104b上のフラッシュメモリチップ118a及び118bを使用してそれらのコマンドを実行させてもよい。ホスト106とコントローラ110との間の通信は、インターフェイス108を通じて行われてもよい。コントローラ110は、チャネル112を使用して、フラッシュメモリチップ118a及び118bと通信することができる。
コントローラボード102は、DRAM 111を含むことができる。DRAM 111は、コントローラ110に機能的に結合されてもよく、情報を格納するために使用されてもよい。たとえば、DRAM 111は、論理アドレスから物理アドレスへのマップ及び不良ブロックの情報を格納するために使用されてもよい。DRAM 111はまた、ホスト106とフラッシュメモリチップ118a及び118bとの間のバッファとして機能するように構成されてもよい。
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、物理的に別個のプリント基板(PCB)である。メモリボード104aは、コントローラボード102のPCBに機能的に接続されている1つのPCB上にあってもよい。たとえば、メモリボード104aは、コントローラボード102に物理的及び/又は電気的に接続されてもよい。同様に、メモリボード104bは、メモリボード104aから分離されたPCBでもよく、コントローラボード102のPCBに機能的に接続されてもよい。たとえば、メモリボード104bは、コントローラボード102に物理的及び/又は電気的に接続されてもよい。
メモリボード104a及び104bは各々、コントローラボード102から別個に切断されて取り外し可能であってもよい。たとえば、メモリボード104aは、コントローラボード102から切断されて、別のメモリボード(図示せず)に置き換えられてもよく、その別のメモリボードはコントローラボード102に機能的に接続される。この例において、メモリボード104a及び104bのいずれか又は両方は、他のメモリボードが同じコントローラボード102及びコントローラ110で動作できるように、他のメモリボードでスワップアウトされてもよい。
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、ディスクドライブフォームファクタで物理的に接続されてもよい。ディスクドライブフォームファクタは、たとえば3.5”ディスクドライブフォームファクタ及び2.5”ディスクドライブフォームファクタのような、さまざまなサイズを含むことができる。
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、高密度ボールグリッドアレイ(ball grid array)(BGA)コネクタを使用して電気的に接続されてもよい。たとえば、ファインボールグリッドアレイ(fine ball grid array)(FBGA)コネクタ、ウルトラファインボールグリッドアレイ(ultra fine ball grid array)(UBGA)コネクタ、及びマイクロボールグリッドアレイ(micro ball grid array)(MBGA)コネクタを含むその他のBGAコネクタの変種が使用されてもよい。その他のタイプの電気接続手段が使用されてもよい。
インターフェイス108は、コントローラ110とホスト106との間の高速インターフェイスを含むことができる。高速インターフェイスは、ホスト106とフラッシュメモリチップ118a及び118bとの間のデータの高速転送を可能にすることができる。1つの例示的な実施態様において、高速インターフェイスは、Peripheral Component Interconnect Express(PCIe)インターフェイスを含むことができる。たとえば、PCIeインターフェイスは、PCIe x4インターフェイス又はPCIe x8インターフェイスであってもよい。PCIeインターフェイス108は、ホスト106へのPCIeコネクタケーブルアセンブリを含むことができる。この例において、110は、ホスト106とインターフェイス108との間のインターフェイスをとるように構成されたインターフェイスコントローラを含むことができる。インターフェイスコントローラは、PCIeエンドポイントコントローラを含むことができる。その他の高速インターフェイス、コネクタ、及びコネクタアセンブリが使用されてもよい。
1つの例示的な実施態様において、コントローラボード102とメモリボード104a及び104b上のフラッシュメモリチップ118a及び118bとの間の通信は、複数のチャネル112に配置されて構成されてもよい。各々のチャネル112は、1つ以上のフラッシュメモリチップ118a及び118bと通信することができる。コントローラ110は、ホスト106から受信されたコマンドが、各々のチャネル112を使用して、同時に、又は少なくとも概ね同時にコントローラ110によって実行されうるように構成されてもよい。このように、複数のコマンドは、異なるチャネル112で同時に実行することができ、データストレージデバイス100のスループットを向上させることができる。
図1の例において、20個のチャネル112が示される。完全な実線は、コントローラ110とメモリボード104a上のフラッシュメモリチップ118aとの間の10個のチャネルを示す。実線及び破線の混合線は、コントローラ110とメモリボード104b上のフラッシュメモリチップ118bとの間の10個のチャネルを示す。図1に示すように、各々のチャネル112は、複数のフラッシュメモリチップをサポートすることができる。たとえば、各々のチャネル112は、最大32個のフラッシュメモリチップをサポートすることができる。1つの例示的な実施態様において、20個のチャネルは各々、6個のフラッシュメモリチップをサポートして通信するように構成されてもよい。この例において、各々のメモリボード104a及び104bは、それぞれ60個のフラッシュメモリチップを含むことができる。フラッシュメモリチップ118a及び118bのタイプ及び数に応じて、データストレージ100デバイスは、最大多数テラバイトのデータまで格納するように構成されてもよい。
コントローラ110は、マイクロコントローラ、FPGAコントローラ、その他のタイプのコントローラ、又はそれらのコントローラの組み合わせを含むことができる。1つの例示的な実施態様において、コントローラ110はマイクロコントローラである。マイクロコントローラは、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施されてもよい。たとえば、マイクロコントローラは、実行されると、特定の方法でマイクロコントローラに実行させることができる命令を含むコンピュータプログラム製品がメモリ(たとえば、メモリモジュール116)からロードされてもよい。マイクロコントローラは、インターフェイス108を使用してホスト106からコマンドを受信し、コマンドを実行するように構成されてもよい。たとえば、コマンドは、フラッシュメモリチップ118a及び118bを使用してデータのブロックの読み取り、書き込み、コピー、及び削除を行うコマンド、並びにその他のコマンドを含むことができる。
もう1つの例示的な実施態様において、コントローラ110はFPGAコントローラである。FPGAコントローラは、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施されてもよい。たとえば、FPGAコントローラは、実行されると、特定の方法でFPGAコントローラに実行させることができる命令を含むファームウェアがメモリ(たとえば、メモリモジュール116)からロードされてもよい。FPGAコントローラは、インターフェイス108を使用してホスト106からコマンドを受信し、コマンドを実行するように構成されてもよい。たとえば、コマンドは、フラッシュメモリチップ118a及び118bを使用してデータのブロックの読み取り、書き込み、コピー、及び削除を行うコマンド、並びにその他のコマンドを含むことができる。
メモリモジュール116は、コントローラ110にロードされうるデータを格納するように構成されてもよい。たとえば、メモリモジュール116は、FPGAコントローラの1つ以上のイメージを格納するように構成されてもよく、イメージはFPGAコントローラによって使用されるファームウェアを含む。メモリモジュール116は、ホスト106と通信するために、ホスト106とのインターフェイスをとることができる。メモリモジュール116は、ホスト106と直接インターフェイスをとることができる、及び/又はコントローラ110を通じてホスト106と間接的にインターフェイスをとることができる。たとえば、ホスト106は、ファームウェアの1つ以上のイメージを、格納のためにメモリモジュール116に伝達することができる。1つの例示的な実施態様において、メモリモジュール116は、電気的消去可能プログラマブルROM(electrically erasable programmable read-only memory)(EEPROM)を含む。メモリモジュール116はまた、その他のタイプのメモリモジュールを含むことができる。
メモリボード104a及び104bは、さまざまなタイプのフラッシュメモリチップ118a及び118bで動作するように構成されてもよい。1つの例示的な実施態様において、フラッシュメモリチップ118a及びフラッシュメモリチップ118bは、電源モジュール114から同じ電圧を必要とすること、及び同じフラッシュメモリチップベンダーのものであることを含む同じタイプのフラッシュメモリチップであってもよい。ベンダー及び製造元という用語は、本文書全体を通じて同義的に使用される。
1つの例示的な実施態様において、メモリボード104a上のフラッシュメモリチップ118aは、メモリボード104b上のフラッシュメモリチップ118bとは異なるタイプであってもよい。たとえば、メモリボード104aはSLC NANDフラッシュメモリチップを含むことができ、メモリボード104bはMLC NANDフラッシュメモリチップを含むことができる。もう1つの例において、メモリボード104aはあるフラッシュメモリチップ製造元によるラッシュメモリチップを含むこともあり、メモリボード104bは別のフラッシュメモリチップ製造元によるフラッシュメモリチップを含むこともある。すべて同じタイプのフラッシュメモリチップを備えるか、又は異なるタイプのフラッシュメモリチップを備えるという柔軟性があるため、データストレージデバイス100は、ホスト106に使用されているさまざまなアプリケーションに合わせて調整することができる。
もう1つの例示的な実施態様において、メモリボード104a及び104bは、同じメモリボード上に異なるタイプのフラッシュメモリチップを含むことができる。たとえば、メモリボード104aは、同じPCB上にSLC NANDチップとMLC NANDチップの両方を含むことができる。同様に、メモリボード104bは、SLC NANDチップとMLC NANDチップの両方を含むことができる。このように、データストレージデバイス100は、ホスト106の仕様に適合するように有利に調整されてもよい。
もう1つの例示的な実施態様において、メモリボード104a及び104bは、フラッシュメモリ以外のチップを含む、その他のタイプのメモリデバイスを含むことができる。たとえば、メモリボード104a及び104bは、たとえばダイナミックRAM(DRAM)及びスタティックRAM(SRAM)のようなランダムアクセスメモリ(RAM)、並びにその他のタイプのRAM及びその他のタイプのメモリデバイスを含むこともできる。1つの例示的な実施態様において、メモリボード104a及び104はいずれも、RAMを含むことができる。もう1つの例示的な実施態様において、メモリボードの一方はRAMを含み、もう一方のメモリボードはフラッシュメモリチップを含むことができる。また、メモリボードの一方は、RAM及びフラッシュメモリチップの両方を含むことができる。
メモリボード104a及び104b上のメモリモジュール120a及び120bは、それぞれフラッシュメモリチップ118a及び118bに関連する情報を格納するために使用されてもよい。1つの例示的な実施態様において、メモリモジュール120a及び120bは、フラッシュメモリチップのデバイス特性を格納することができる。デバイス特性は、チップがSLCチップ又はMLCのいずれであるか、チップがNAND又はNORチップのいずれであるか、チップセレクトの数、ブロックの数、ブロックあたりのページの数、ページあたりのバイトの数、及びチップの速度を含むことができる。
1つの例示的な実施態様において、メモリモジュール120a及び120bは、シリアルEEPROMを含むことができる。EEPROMは、デバイス特性を格納することができる。デバイス特性は、任意の所定のタイプのフラッシュメモリチップに対して1回コンパイルされてもよく、適切なEEPROMイメージがデバイス特性と共に生成されてもよい。メモリボード104a及び104bがコントローラボード102に機能的に接続される場合、デバイス特性は、コントローラ110が制御しているフラッシュメモリチップ118a及び118bのタイプをコントローラ110が自動的に認識できるように、EEPROMから読み取られてもよい。加えて、デバイス特性は、特定の1つ以上のタイプのフラッシュメモリチップ118a及び118bの適切なパラメータにコントローラ110を構成するために使用されてもよい。
上記で説明されるように、コントローラ110は、FPGAコントローラを含むことができる。図2を参照すると、FPGAコントローラ210を示す例示的なブロック図が示される。FPGAコントローラは、図1のコントローラ110に関して上記で説明されたように動作するよう構成されてもよい。FPGAコントローラ210は、複数のチャネル112をフラッシュメモリチップ218に接続するために複数のチャネルコントローラ250を含むことができる。フラッシュメモリチップ218は、各々のチャネルコントローラ250に接続する複数のフラッシュメモリチップとして示される。フラッシュメモリチップ218は、図1の別個のメモリボード104a及び104b上にある、図1のフラッシュメモリチップ118a及び118bの代表である。別個のメモリボードは、図2の例には示されていない。FPGAコントローラ210は、PCIeインターフェイスモジュール208、双方向ダイレクトメモリアクセス(DMA)コントローラ252、ダイナミックランダムアクセスメモリ(DRAM)コントローラ254、コマンドプロセッサ/キュー256、及び情報及び構成インターフェイスモジュール258を含むことができる。
情報は、インターフェイスを使用してホスト(たとえば、図1のホスト106)との間で伝達されてもよい。図2のこの例において、FPGAコントローラ210は、ホスト及びPCIeインターフェイスモジュール208と通信するためにPCIeインターフェイスを含む。PCIeインターフェイスモジュール208は、ホストからコマンドを受信して、ホストにコマンドを送信するように、配置され構成されてもよい。PCIeインターフェイスモジュール208は、ホストとデータストレージデバイスとの間のデータフロー制御をもたらすことができる。PCIeインターフェイスモジュール208は、ホストとコントローラ210、及び最終的にはフラッシュメモリチップ218との間のデータの高速転送を可能にすることができる。1つの例示的な実施態様において、PCIeインターフェイス及びPCIeインターフェイスモジュール208は、64ビットバスを含むことができる。双方向ダイレクトメモリアクセス(DMA)コントローラ252は、PCIeインターフェイスモジュール208とコマンドプロセッサ/キュー256間のバスの動作を制御するように配置され構成されてもよい。
双方向DMAコントローラ252は、PCIeインターフェイス208、及び各々のチャネルコントローラ250とのインターフェイスをとるように構成されてもよい。双方向DMAコントローラ252は、ホスト106とフラッシュメモリチップ218との間の双方向ダイレクトメモリアクセスを可能にする。
DRAMコントローラ254は、論理アドレスから物理アドレスへの変換を制御するように配置され構成されてもよい。たとえば、ホストが論理アドレスを使用してメモリスペースをアドレス指定する実施態様において、DRAMコントローラ254は、コマンドプロセッサ/キュー256が、ホストに使用されている論理アドレスを、フラッシュメモリチップ218との間で書き込み中又は読み取り中のデータに関連するフラッシュメモリチップ218内の実際の物理アドレスに変換する操作を補助することができる。ホストから受信された論理アドレスは、フラッシュメモリチップ218の1つの位置の物理アドレスに変換されてもよい。同様に、フラッシュメモリチップ218の1つの位置の物理アドレスは、論理アドレスに変換されて、ホストに伝達されてもよい。
コマンドプロセッサ/キュー256は、PCIeインターフェイスモジュール208を通じてホストからコマンドを受信し、チャネルコントローラ250を通じてコマンドの実行を制御するように、配置され構成されてもよい。コマンドプロセッサ/キュー256は、実行されるべき複数のコマンドのキューを保持し、最も古いコマンドが確実に最初に処理されるように番号付きリストを使用してコマンドを順序付けることができる。コマンドプロセッサ100は、同じフラッシュメモリチップに指定されているコマンドの順序を保持することができ、異なるフラッシュメモリチップに指定されているコマンドを再配列することができる。このように、複数のコマンドは同時に実行されてもよく、各々のチャネル112は、同時に、又は少なくとも実質的に同時に使用されてもよい。
コマンドプロセッサ/キュー256は、異なるチャネル112のコマンドを順不同に処理して、チャネルごとのコマンド順序付けを保持するように構成されてもよい。たとえば、ホストから受信されて、異なるチャネルに指定されているコマンドは、コマンドプロセッサ/キュー256によって順不同に処理されてもよい。このように、チャネルはビジー状態の場合もある。同じチャネルで処理されるようにホストから受信されるコマンドは、コマンドがホストからコマンドプロセッサ/キュー256によって受信された順序で処理されてもよい。1つの例示的な実施態様において、コマンドプロセッサ/キュー256は、コマンドが確実に適時に実行されるようにするため、古いもの順でホストから受信されたコマンドのリストを保持するように構成されてもよい。
チャネルコントローラ250は、コマンドプロセッサ/キュー256からのコマンドを処理するように配置されて構成されてもよい。各々のチャネルコントローラ250は、複数のフラッシュメモリチップ218のコマンドを処理するように構成されてもよい。1つの例示的な実施態様において、各々のチャネルコントローラ250は、最大32個のフラッシュメモリチップ218のコマンドを処理するように構成されてもよい。
チャネルコントローラ250は、コマンドプロセッサ/キュー256によって指定された順序で、コマンドプロセッサ/キュー256からのコマンドを処理するように構成されてもよい。処理されうるコマンドの例は、フラッシュページの読み取り、フラッシュページのプログラミング、フラッシュページのコピー、フラッシュブロックの消去、フラッシュブロックのメタデータの読み取り、フラッシュメモリチップの不良ブロックのマッピング、及びフラッシュメモリチップのリセットを含むが、これらに限定されることはない。
情報及び構成インターフェイスモジュール258は、FPGAコントローラ210の構成情報を受信するために、メモリモジュール(たとえば、図1のメモリモジュール116)とのインターフェイスをとるように配置され構成されてもよい。たとえば、情報及び構成インターフェイスモジュール258は、ファームウェアをFPGAコントローラ210に提供するために、メモリモジュールから1つ以上のイメージを受信することができる。イメージ及びファームウェアへの変更は、ホストにより情報及び構成インターフェイスモジュール258を通じてコントローラ210に提供されてもよい。情報及び構成インターフェイスモジュール258を通じて受信された変更は、たとえば、PCIeインターフェイスモジュール208、双方向ダイレクトメモリアクセス(DMA)コントローラ252、DRAMコントローラ254、コマンドプロセッサ/キュー256、及びチャネルコントローラ250を含むコントローラ210のコンポーネントのいずれかに適用されてもよい。情報及び構成インターフェイスモジュール258は、1つ以上のレジスタを含むことができ、レジスタはホストからの命令により必要に応じて変更されてもよい。
FPGAコントローラ210は、ホストと共に協働してコマンドを処理するように配置されて構成されてもよい。FPGAコントローラ210は、エラー訂正、不良ブロック管理、論理から物理へのマッピング、ガーベッジコレクション、消耗平準化、パーティショニング、及びフラッシュメモリチップ218に関連する低レベルフォーマッティングを実行することができるか、又は少なくともその操作を補助することができる。
図3Aは、第1のパーティション321及び第2のパーティション322に編成される複数のフラッシュメモリチップ318a、318b、318c、318d、318e、318f、318g、318h、318i、318j、318k、318lを有するデータストレージデバイス302を含む装置300を示す概略ブロック図である。第1及び第2のパーティション321及び322は、異なるカテゴリのディレクトリ及びファイルが異なるパーティションに格納されうるように、又は1つのパーティションが他のパーティションとは異なる目的で使用されうるように、データストレージデバイス302内のストレージスペースの異なる物理領域を定義する。第1のパーティションは、フラッシュメモリチップ318a〜fの第1のサブセットを含むことができ、第2のパーティションは、フラッシュメモリチップ318g〜lの第2のサブセットを含むことができるが、ここで両方のパーティションに属するフラッシュメモリチップはない。すなわち、パーティション321と322の境界は、個々のフラッシュメモリチップが2つ以上のパーティションに属することがないように、個々のフラッシュメモリチップの間に引かれる。
データストレージデバイスを2つ以上のパーティションに編成することで、いくつかの目的にかなうことができる。たとえば、1つのパーティションに格納されたオペレーティングシステムファイルは、もう1つのパーティションに格納されたユーザファイルとは別個に保持することができる。動的かつ急速にサイズが変化することもあり、ファイルシステムを満杯にしてしまう可能性のあるキャッシュ及びログファイルは、1つのパーティションに格納して、異なるパーティションに格納されたその他のファイルとは別個に保持することもできる。パーティションは、マルチブートセットアップに使用されてもよく、それによりユーザは単一のコンピュータに複数のオペレーティングシステムを有することができる。たとえば、ユーザはLinux、Mac OS X、及びMicrosoft Windows、又はオペレーティングシステムを、同じデータストレージデバイスの異なるパーティションにインストールして、電源投入時に(ハードウェアによってサポートされる)任意のオペレーティングシステムへのブートを選択することができる。パーティションは、ファイルを保護又は隔離して、破損したファイルシステム又はオペレーティングシステムのインストールをより回復しやすくするために使用されてもよい。たとえば、1つのパーティションが破損しても、その他のファイルシステムは全く影響を受けていない場合、ストレージデバイス上のデータは引き続き救出可能である。読み取り専用データに別個のパーティションを使用することもまた、そのパーティション上のファイルシステムが破損してしまう可能性を低減する。パーティションはまた、より小さいファイルシステムがより効率的であるようなシステムにおいて全体的なコンピュータパフォーマンスを高めることができる。たとえば、1つのNTFSファイルシステムしか備えていない大規模なハードドライブは通常、非常に大型の順次アクセスのマスターファイルテーブル(MFT)を有し、このMFTを読み取るために要する時間は、より小さいパーティションの小さいMFTの場合よりも概して長くなる。
もう1つの例示的な実施態様において、データストレージデバイス302は、データストレージデバイスから迅速に読み取られて、ホストに供給される必要のある膨大量のデータ(たとえば、多数ギガバイト又はテラバイトのデータ)を格納するために使用されてもよい。たとえば、データストレージデバイスは、クエリに応答してホストが取り出すことのできる大量の公的にアクセス可能な情報(たとえば、ワールドワイドウェブからの大量のウェブページのコーパス、電子版書籍の大規模なライブラリ、又は大量の通信を表すデジタル情報など)をキャッシュに入れるために使用されてもよい。つまり、関連データは、ホストによって発行される読み取りコマンドに応答して極めて迅速にアクセスされ、返されることが重要となりうる。しかし、データストレージデバイスに格納されている情報はまた、関連情報の変化に応じて情報を最新の状態に維持するために、常時更新される必要もある。たとえば、ストレージデバイス上の情報がウェブページのコーパスに関連する場合、ストレージデバイス上に格納されている情報は、ウェブページが変更されるごと、及び新しいウェブページが作成されるごとに更新される必要もある。
そのようなシステムにおいて、パーティション化されたフラッシュメモリデータストレージデバイス302は、並外れたパフォーマンスを提供することができる。フラッシュメモリストレージデバイスにおいて、フラッシュメモリチップへの書き込み操作は、フラッシュメモリチップからの読み取り操作よりも、はるかに長い時間を要する(たとえば、10倍〜100倍長い)。
したがって、データストレージデバイスのチップ318a〜lを2つ以上のパーティションに編成し、パーティションは異なるチップ間の境界で定義されるようにすることで、迅速な読み取り操作を確保し、しかもデータストレージデバイスに格納されている情報はリアルタイムで更新される方法をもたらす。たとえば、両パーティション321及び322は、クエリに応答して供給されるべきデータのコーパス(たとえば、ウェブページのコーパス)を格納するために使用されてもよく、個々のパーティションは、要求への対応と新しい情報による更新とを繰り返すことができる。たとえば、第1の時限において、第1のパーティション321は、ホストに情報(たとえば、ユーザクエリに応答して要求されうる情報)を提供するために使用されてもよく、その間、第2のパーティション322上のデータは(たとえば、ウェブページのコーパスへの変更又は追加に応答して)更新される。次いで、第2の時限において、最近更新された第2のパーティション322は、ホストに情報を提供するために使用されてもよく、その間、第1のパーティション321上のデータは更新される。このプロセスは、データが常に、読み取り専用デバイスとして機能するパーティションから供給されるように繰り返されてもよく、したがって書き込みコマンドによって速度が低下することなくホストからの読み取りコマンドに極めて迅速に応答することができ、しかもその間他のパーティションは新しい情報で更新される。個々のフラッシュメモリチップが1つのパーティションのみに含まれるようにパーティションを定義することで、データの書き込みと読み取りが実質的に同時に行われるフラッシュチップ(ホスト350からの読み取り要求に応答して遅延を生じる原因となる)がないようにする。
上記で説明されるように、メモリチップ318a〜lは、FPGAコントローラ310を含むことができるコントローラに接続されてもよい。FPGAコントローラは、図1のコントローラ110、又は図2のFPGA 210に関して上記で説明されているように動作するよう構成されてもよい。FPGAコントローラ310は、複数のチャネル112をフラッシュメモリチップ318a〜lに接続するために複数のチャネルコントローラ312a、312b、312c、312d、312e、312fを含むことができる。言うまでもなく、上記で説明されているように、ストレージデバイスは、12個よりも多くのフラッシュメモリチップ、6個よりも多くのチャネルコントローラを含むことができ、2個よりもはるかに多くのフラッシュメモリチップは、物理チャネルにわたりチャネルコントローラに機能的に接続されてもよい。したがって、図3A及び図3Bに示される実施態様は、説明を明確にするため単に概略を示したものにすぎない。
1つの実施態様において、チャネルコントローラ312a、312b、312c、312d、312e、312fは、各パーティション321及び322の一部であるフラッシュメモリチップに機能的に接続されるチャネルを制御することができる。たとえば、チャネルコントローラ312aは、第1のパーティション321の一部であるメモリチップ318a、及びまた第2のパーティション322の一部であるメモリチップ318gに、機能的に接続されてもよい。そのような構成において、第1のパーティション321の少なくとも1つのメモリチップは、データストレージデバイス302とホストとの間の各通信チャネルに接続され、第2のパーティション322の少なくとも1つのメモリチップは、データストレージデバイス302とホスト350との間の各通信チャネルに接続される。そのような構成は、パーティション321又は322とホストとの間の通信の最大並列処理につながり、その結果データストレージデバイス302との間の高速読み取りアクセス及び高速書き込み時間をもたらすことができる。
もう1つの実施態様において、ほぼ半数のチャネルコントローラが第1のパーティションのフラッシュメモリチップに機能的に接続されてもよく、ほぼ半数のチャネルコントローラが第2のパーティションのフラッシュメモリチップに機能的に接続されてもよい。
図3Bに示されるもう1つの実施態様において、フラッシュメモリチップ318a、318b、318c、318d、318e、318f、318g、318h、318i、318j、318k、318lは、第1のパーティション331、第2のパーティション322、第3のパーティション333、第4のパーティション334に編成されてもよく、ここで異なるカテゴリのディレクトリ及びファイルが異なるパーティションに格納されうるように、又は1つのパーティションが他のパーティションとは異なる目的で使用されうるように、異なるパーティションはデータストレージデバイス302内のストレージスペースの異なる物理領域を定義する。第1のパーティション331は、フラッシュメモリチップ318a〜cの第1のサブセットを含むことができる。第2のパーティション332は、フラッシュメモリチップ318d〜fの第2のサブセットを含むことができる。第3のパーティション333は、フラッシュメモリチップ318g〜iの第3のサブセットを含むことができる。第4のパーティション334は、フラッシュメモリチップ318j〜lの第4のサブセットを含むことができる。さまざまなパーティション331、332、333、及び334の中で、物理メモリアドレススペースが2つ以上のパーティションの一部である個々のフラッシュメモリチップはない。すなわち、パーティション331、332、333、及び334の間の境界は、個々のフラッシュメモリチップが2つ以上のパーティションに属することがないように、個々のフラッシュメモリチップの間に引かれる。
図3Bのシステムにおいて、パーティション化されたフラッシュメモリデータストレージデバイス302は、たとえば、クエリに応答して供給されるべきデータのコーパス(たとえば、ウェブページのコーパス)を格納するために使用される場合、及び個々のパーティションが要求への対応と新しい情報による更新とを繰り返すことができる場合に、並外れたパフォーマンスを提供することができる。たとえば、第1の時限において、第1、第2、及び第3のパーティション331、332、及び333は、ホストに情報(たとえば、ユーザクエリに応答して要求されうる情報)を提供するために使用されてもよく、その間、第4のパーティション334上のデータは(たとえば、ウェブページのコーパスへの変更又は追加に応答して)更新される。次いで、第2の時限において、最近更新された第4のパーティション334は、第2及び第3のパーティション332及び332と共にホストに情報を提供するために使用されてもよく、その間、第1のパーティション331上のデータは更新される。したがって、各パーティション上のデータは、ラウンドロビンの方式で更新されてもよく、その間、クエリ要求は他のパーティションによって対応される。このプロセスは、データが常に、読み取り専用デバイスとして機能するパーティションから供給されるように繰り返されてもよく、したがって書き込みコマンドによって速度が低下することなくホストからの読み取りコマンドに極めて迅速に応答することができ、しかもその間他のパーティションは新しい情報で更新される。4つのパーティションを定義することで、1つのパーティションがもはや使用可能ではなくなるような、パーティション、チャネル、又は個々のメモリチップの障害が生じる場合、残りの3つのパーティションが引き続き使用されて、各々の残りのパーティションが交代で更新され、その間他の残りのパーティションがデータ要求に対応するデータストレージデバイスを提供することができるように、データストレージデバイス上に格納されている情報の冗長性がもたらされる。
上記で説明されるように、データストレージデバイス302は、たとえばPCIeインターフェイスのような高速インターフェイスであってもよい、インターフェイス308を通じてホスト350に接続されてもよい。ホストは、たとえば、プロセッサ352、第1のメモリ354、第2のメモリ356、及びパーティションエンジン360を含むことができる。第1のメモリ354は、たとえば、プロセッサ352によって実行されうる機械可読の実行可能コード命令を格納するように適合される不揮発性メモリデバイス(たとえば、ハードディスク)を含むことができる。第1のメモリ354に格納されるコード命令は、第2のメモリ(たとえば、ランダムアクセスメモリのような揮発性メモリ)356にロードすることができ、ここでコード命令はプロセッサ352によって実行されて、メモリデバイス検出エンジン358及びパーティションエンジン360を作成することができる。第2のメモリは、ユーザモードアプリケーションに専用の「ユーザスペース」の論理ブロック、及びユーザレベルアプリケーションがそれらの機能を実行するために制御する必要のある低レベルリソースの実行に専用の「カーネルスペース」364の論理ブロックを含むことができる。メモリデバイス検出エンジン358及びパーティションエンジン360は、第2のメモリ356のカーネルスペース364に常駐することができる。
構成検出エンジン358は、データストレージデバイス302上のフラッシュメモリチップ318の数を検出するように構成されてもよく、パーティションエンジン360は、データストレージデバイスの第1のパーティション321及び第2のパーティション322を定義するように構成されてもよい。したがって、ホスト350で稼働する構成検出エンジン358及びパーティションエンジン360は、ホストが、データストレージデバイス302のハードウェアデバイスプロパティを発見し、次いでパーティション321及び322をホストを介して定義するために使用することができる。1つの実施態様において、構成検出エンジン358は、データストレージデバイスにクエリコマンドを発行することができ、データストレージデバイスは、クエリコマンドに応答して、たとえばフラッシュメモリチップ318の数、各チップの(たとえば、バイトで測定された)サイズ、データストレージデバイスのチャネルの数、各チャネルコントローラ312a〜eが機能的に接続されているフラッシュメモリチップに関する情報をホストに返すことができる。そのような情報は、FPGA 310上のEEPROM 116及び/又はデータストレージデバイス302のフラッシュボードのEEPROM 120aに格納されてもよい。構成検出エンジンは、EEPROM 116又はEEPROM 120aをポーリングして(たとえば、ホスト350のブートアップ作業の間)、データストレージデバイスにそのような情報をホスト350に返させるようにすることができる。もう1つの実施態様において、ホストは、フラッシュメモリチップ318をポーリングして、たとえばフラッシュメモリチップ318の数、各チップの(たとえば、バイトで測定された)サイズ、データストレージデバイスのチャネルの数、各チャネルコントローラ312a〜eが機能的に接続されているフラッシュメモリチップに関する情報を提供することができる。
パーティションエンジン360は、フラッシュチップ318の数、各フラッシュチップのサイズ、チャネルの数、及び各チャネルが機能的に接続されているメモリチップに関する情報を、メモリデバイス検出エンジン358から受信することができ、この情報に基づいて、パーティションエンジンは、データストレージデバイス302の第1のパーティション321及び第2のパーティション322を定義することができる。ホスト350で稼働しているパーティションエンジンは、メモリチップ318の第1のサブセットから取り出されたメモリブロックを含むように第1のパーティションを定義し、メモリチップ318の第2のサブセットから取り出されたメモリブロックを含むように第2のパーティションを定義することができ、第1のサブセットは第2のサブセットの個々のフラッシュチップを含むことはなく、第2のサブセットは第1のサブセットの個々のフラッシュチップを含むことはない。次いで、パーティションエンジン360は、物理メモリブロックアドレス(たとえば、一意のチャネル番号、一意のフラッシュメモリチップ番号、及びフラッシュメモリチップ内のブロックアドレスを含むこともある)を、ホスト350で稼働しているユーザスペースアプリケーションが、論理スペースアドレスを参照して、データストレージデバイス302からデータを読み取り、データストレージデバイス302にデータを書き込むことができるように、ユーザスペースで稼働しているアプリケーションプログラムによって使用されうる論理アドレスにマップすることができる。
複数のパーティションのパーティション方式が定義されて、データがデータストレージデバイス100のフラッシュメモリチップに格納された後、デバイスは、デバイスが後にブートされるときに、ホストが使用するようパーティション方式をホスト106に伝達することができるように、たとえばメモリ116に、パーティション方式に関する情報を格納することができる。たとえば、デバイスは、デバイスのフラッシュメモリチップの数を含むデータストレージデバイスの物理構成に関する情報、及びどのフラッシュメモリチップ及びチャネルがメモリ116のどのパーティションに関連付けられているかを含むパーティション方式に関する情報を保持することができる。次いで、ホスト106及びデータストレージデバイス100を含むシステムがブートされるとき、ストレージデバイス100は、たとえばホスト106の構成検出エンジン358によって実行された読み取り操作に応答して、この情報をホスト106に伝達することができる。次いで、ホスト106のパーティションエンジン360は、ホストで稼働しているオペレーティングシステム及びアプリケーションのパーティションを定義することができる。たとえば、パーティションエンジン360は、ストレージデバイス100から読み取られた情報に基づいて第1及び第2のパーティションを定義することができ、ここで第1及び第2のパーティションは同じメモリチップを含むことはない。パーティションエンジン360はまた、ユーザレベルアプリケーションプログラムが次いでストレージデバイス100のフラッシュメモリチップの物理メモリアドレスにマップされる論理アドレスを使用することができるように、第1及び第2のパーティションの論理メモリから物理メモリへのマップを割り振ることもできる。
パーティションエンジン360はまた、複数のフラッシュメモリチップの第3のサブセットを含むようにデータストレージデバイスの第1のパーティションを再定義するために使用されてもよく、第3のサブセットは第1のサブセットとは異なり、第3のサブセットは第2のサブセットのフラッシュメモリチップを含むことはなく、第2のサブセットは第3のサブセットのフラッシュメモリチップを含むことはない。たとえば、図3A及び図3Bを参照すると、ユーザは、図3Aに示される元のパーティション方式が自身の必要性を満たしてはいないと判断することができ、したがって、パーティション321及び322を再定義するため(たとえば、特定のパーティションにより多く又は少ないフラッシュメモリチップを含むように)、又は追加のパーティションを方式に追加するためにホストを使用することができる。1つの実施態様において、第1のパーティション321は、パーティション331及び333として再定義されてもよい。コントローラ310によって事前定義されるか、又はプリロード済みのパーティション方式をユーザに強制的に受け入れさせるのではなく、ユーザがホストを通じてパーティションを定義できるようにすることで、ユーザには所望のとおりパーティションを定義して、必要なときにパーティション方式を変更する柔軟性がもたらされる。もう1つの実施態様において、フラッシュメモリチップの1つ、たとえば318aの差し迫った障害が、ホストによって検出されることもあり、この情報に応答して、パーティションエンジンは、パーティションからフラッシュメモリチップ318aを除外するように、すなわちメモリチップ318aを除く当初定義された第1のパーティションのように、第1のパーティション321を再定義することができる。したがって、任意のパーティションの数が(ストレージデバイス100のフラッシュメモリチップ118a及び118bの数まで)定義されてもよく、パーティション方式内の異なるパーティションは、異なる数のフラッシュメモリチップを含むことができ、異なる量のメモリスペースを含むことができる。
ホストはまた、カーネル364に存在し、データストレージデバイス302に書き込まれるべきデータに物理メモリアドレスを割り当てることができるアドレス割り当てエンジン366を含むこともできる。たとえば、ユーザスペース362で稼働しているアプリケーションは、データがホスト350からデータストレージデバイス302に書き込まれるよう要求することができ、ユーザスペースアプリケーションは、データが特定の論理メモリアドレスに書き込まれるよう指定することができる。アドレス割り当てエンジン366は、論理アドレスを、たとえばデータが書き込まれるべき特定のチャネル、データが書き込まれるべき指定されたチャネルに機能的に接続された特定のフラッシュメモリチップ、及びデータが書き込まれるべき指定されたメモリチップの特定の物理ブロックアドレスを含むことができる物理アドレスに変換することができる。そのような実施態様において、論理アドレスの物理メモリスペースアドレスへの変換は、FPGA 210のDRAMコントローラ254の役割が軽減されるか又は重要ではないように、アドレス割り当てエンジン366によって実行されてもよい。
図4は、図1のデータストレージデバイスのパーティション化の例示のプロセス400を示す例示的な流れ図であり、ここでデバイスは複数のフラッシュメモリチップを含む。プロセス400は、データストレージデバイス内のフラッシュメモリチップの数を決定することを含むことができる(402)。たとえば、構成検出エンジンは、データストレージデバイス内のフラッシュメモリチップの数に関する情報を収集するために、データストレージデバイスにクエリを行うことができる。データストレージデバイスの第1のパーティションは、データストレージデバイスに結合されたホストを介して、定義されてもよく、第1のパーティションは複数のフラッシュメモリチップの第1のサブセットを含む(404)。データストレージデバイスの第2のパーティションは、ホストを介して定義されてもよく、第2のパーティションは複数のフラッシュメモリチップの第2のサブセットを含む(406)。このプロセスの結果として、第1のサブセットは、第2のサブセットのフラッシュメモリチップを含むことはなく、第2のサブセットは、第1のサブセットのフラッシュメモリチップを含むことはない。
オプションで、プロセス400は、第2のパーティションからのデータの読み取り中に、データを第1のパーティションに書き込むこと(408)を含むことができる。データストレージデバイス内のフラッシュメモリチップの数を決定することは、データストレージデバイス内のフラッシュメモリチップの数を指示するデータストレージデバイスからの情報をホストに送信することを含むことができる(410)。ホストからデータを書き込むデータストレージデバイス内のアドレス位置は、ホストにおいて定義されてもよく、アドレス位置は、データが複数のメモリチップのうちの特定の1つに書き込まれることを指定する(412)。
データストレージデバイスが、ホストと複数のフラッシュメモリチップ間のデータの通信のための複数の物理チャネルを含み、各チャネルは異なる複数のメモリチップに機能的に接続される場合、プロセス400はさらに、物理チャネルの数を決定すること(414)と、チャネルの第1のサブセットを決定することであって、チャネルの第1のサブセットのチャネルは、メモリチップの第1のサブセットのメモリチップにのみ機能的に接続されること(416)と、チャネルの第2のサブセットを決定することであって、チャネルの第2のサブセットのチャネルは、メモリチップの第2のサブセットのメモリチップにのみ機能的に接続されること(418)と、ホストにおいて、ホストからデータを書き込むデータストレージデバイス内のアドレス位置を定義することであって、アドレス位置は、特定のチャネルを通じてデータが複数のメモリチップのうちの特定の1つに書き込まれることを指定すること(420)とを含むことができる。加えて、プロセス400は、データストレージデバイスに結合されたホストを介して、データストレージデバイスの第1のパーティションが複数のフラッシュメモリチップの第3のサブセットを含むように再定義すること(422)を含むことができる。
図5は、ホスト551が、データストレージデバイス501のフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547への、さまざまなチャネル513、523、533、543にわたる、及び/又はさまざまなフラッシュメモリチップにわたるデータのストライピングを制御することができる、装置500の例示の実施態様を示す例示的なブロック図である。たとえば、論理的に順次のデータ(たとえば、ファイルのデータ)は、セグメントに分割されてもよく、セグメントは、さまざまなチャネル513、523、533、543、又はさまざまなフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547に割り当てられてもよい。データをセグメント化して、それを、たとえばラウンドロビン方式で、さまざまなチャネル及び/又はフラッシュメモリチップにわたりストライピングすることにより、論理的に順次のデータの異なるセグメントが、異なる物理デバイス(たとえば、チャネル又はフラッシュメモリチップ)に同時に書き込まれてもよい。フラッシュメモリチップにデータを書き込むために要する時間は、ホスト551のプロセッサ552がストレージデバイス501に向けられたデータパケットを処理する時間と比較して短くはないので、さまざまなチャネル513、523、533、543にわたるか、又はさまざまなフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547へのデータのストライピングは、ホスト551からストレージデバイス501への論理的に順次のデータの書き込みを加速することができる。同様に、ストライピングされた論理的に順次のデータをストレージデバイス501から読み戻すことは、データがさまざまなチャネル又はチップにわたりストライピングされている場合、単一チャネルにわたるか、又は単一チップからのデータの読み取りよりも高速になりうる。したがって、ストライピングされたデータを読み戻す場合、論理的に順次のデータの第1のセグメントは第1のチャネル513にわたりホスト551(たとえば、チップ514から)に読み戻されてもよく、その間、論理的に順次のデータの次のセグメントは第2のチャネル514にわたる送信のために別のチップ(たとえば、チップ524)から取り出されている。
論理的に順次のデータを、「チップストライピング」を使用して、特定のフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547にストライピングする場合、ホストは特定のセグメントの宛先メモリアドレスを指定することができ、指定されるアドレスはセグメントが書き込まれる特定のフラッシュメモリチップを含むことができる。したがって、特定のチップへのデータのストライピングは、ホスト551の制御の下に置かれてもよい。そうすることで、ストレージデバイス501との間でデータの書き込み及び読み取りを行う場合に、高度の並列処理をもたらすことができる。たとえば、12個のチャネル、及びチャネルあたり20個のフラッシュメモリチップを含むストレージデバイスの実施態様において、ファイルは240個すべてのフラッシュメモリチップにわたりストライピングすることができ、これはつまりチップに2度目のアクセスが必要になるまでに、ラウンドロビン方式でチップにアクセスする場合、240回の書き込み又は読み取り操作が実行されうるということである。この高度な並列処理は、結果として、データがストレージデバイスとの間で極めて迅速に読み取り及び書き込みできるように、ホスト551とストレージデバイス501との間の高いデータスループット率をもたらすことができる。
論理的に順次のデータを、「チップストライピング」を使用して、特定のチャネル513、523、533、543にわたりストライピングする場合、ホストは特定のセグメントの宛先メモリアドレスを指定することができ、指定されるアドレスはセグメントが書き込まれる特定のチャネルを含むことができる。次いで、セグメントが指定されたチャネルに書き込まれる時点において、セグメントが書き込まれる指定されたチャネルに機能的に接続された特定のフラッシュメモリチップは、たとえばさまざまなチップのチップスペース可用性に基づいてなど、チップの現在の実行時状態に基づいてホスト551によって動的に選択されてもよい。チャネルストライピングを使用中に単一のチップに障害が生じた場合、ストレージデバイスは操作を続行することができるので、チャネルストライピングは、チップストライピングよりもチップの障害に影響を受けにくい。加えて、指定されたチャネルに機能的に接続されたすべてのチップの最適なチップがデータの書き込みに動的に選択されるので、チャネルストライピングは、読み取りパフォーマンスとは対照的に、書き込みパフォーマンスに関して、チップストライピングにまさる利点を提供する。チャネルストライピングの書き込みパフォーマンスの利点により、複数の書き込み操作を伴うガーベッジコレクションは、チャネルストライピングの使用時に効率的に実行することができる。
したがって、特定のチップへのデータのストライピングは、ホスト551の制御の下に置かれてもよい。そうすることで、ストレージデバイス501との間でデータの書き込み及び読み取りを行う場合に、高度の並列処理をもたらすことができる。たとえば、12個のチャネル、及びチャネルあたり20個のフラッシュメモリチップを含むストレージデバイスの実施態様において、ファイルは240個すべてのフラッシュメモリチップにわたりストライピングすることができ、これはつまりチップに2度目のアクセスが必要になるまでに、ラウンドロビン方式でチップにアクセスする場合、240回の書き込み又は読み取り操作が実行されうるということである。この高度な並列処理は、結果として、データがストレージデバイスとの間で極めて迅速に読み取り及び書き込みできるように、ホスト551とストレージデバイス501との間の高いデータスループット率をもたらすことができる。
図3に関連して上記で説明される実施態様と同様に、フラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547は、FPGAコントローラ510を含むことができるコントローラに接続されてもよい。FPGAコントローラ510は、図1のコントローラ110、図2のFPGA 210、又は図3のFPGA 310に関して上記で説明されているように動作するよう構成されてもよい。FPGAコントローラ510は、それぞれの物理チャネル513、523、533、543を介して、フラッシュメモリチップのそれぞれのグループ514、515、516、及び517;524、525、526、及び527;534、535、536、及び537;並びに544、545、546及び547に、機能的に接続される複数のチャネルコントローラ512、522、532、542を含むことができる。言うまでもなく、上記で説明されているように、ストレージデバイスは、16個よりもはるかに多くのフラッシュメモリチップ、4個よりもはるかに多くのチャネルコントローラを含むことができ、4個よりもはるかに多くのフラッシュメモリチップは、物理チャネルにわたりチャネルコントローラに機能的に接続されてもよい。したがって、図5に示される実施態様は、説明を明確にするため単に概略を示したものにすぎない。
上記で説明されるように、データストレージデバイス501は、たとえばPCIeインターフェイスのような高速インターフェイスであってもよい、インターフェイス508を通じてホスト551に接続されてもよい。ホストは、たとえば、プロセッサ552、第1のメモリ554、第2のメモリ560を含むことができる。第2のメモリ560は、たとえば、実行可能命令が高速実行のためにプロセッサ552によってロードされる揮発性メモリ(たとえば、ランダムアクセスメモリ)を含むことができる。第1のメモリ454は、たとえば、プロセッサ552によって実行されうる機械可読の実行可能コード命令を格納するように適合される不揮発性メモリデバイス(たとえば、ハードディスク)を含むことができる。第1のメモリ554に格納されるコード命令は、第2のメモリ(たとえば、ランダムアクセスメモリのような揮発性メモリ)560にロードすることができ、ここでコード命令はプロセッサ552によって実行されて、「チップストライピング」、「チャネルストライピング」、又はそれらの組み合わせを使用してデータをストライピングすることができる。第2のメモリは、ユーザモードアプリケーションに専用の「ユーザスペース」562の論理ブロック、及びユーザレベルアプリケーションがそれらの機能を実行するために制御する必要のある低レベルリソースの実行に専用の「カーネルスペース」564の論理ブロックを含むことができる。第2のメモリ560のカーネルスペース564内には、ストライピング方式をセットアップするための初期化エンジン566、論理的に順次のデータをセグメントに分割するためのセグメンテーションエンジン568、ストレージデバイス501の異なる物理要素(たとえば、チャネル又はチップ)にわたりデータをストライピングするためのストライピングエンジン570、及びアドレスをデータセグメントに割り当てるためのアドレス割り当てエンジン572が常駐することができる。
初期化エンジン566は、別個のチャネルに接続されたフラッシュメモリチップにデータを書き込むための第1のチャネルのチャンクサイズを決定するように構成されてもよい。1つの実施態様において、初期化エンジンは、ストレージデバイス501のフラッシュメモリチップに書き込まれるデータのページサイズに関する情報に基づいて、及びストレージデバイス501のチャネルに接続されるフラッシュメモリチップの数に関する情報に基づいて、第1のチャネルのチャンクサイズを決定することができる。たとえば、ストレージデバイスが12個のチャネルを含み、20個のフラッシュメモリチップが各チャネルに接続され、ページサイズが4Kである場合、初期化エンジンは、適切なチャネルのチャンクサイズを、ほぼ4Kの倍数(たとえば、8K、32K、40K、又は80K)であると決定することができる。初期化エンジン566は、たとえば、デバイス501内の物理チャネル513、523、533、543の数、デバイス内のフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547の数、ストレージデバイス内のフラッシュメモリチップのタイプ(たとえば、シングルレベルセル(「SLC」)フラッシュ又はマルチレベルセル(「MLC」)フラッシュ)、及びチップに書き込まれるデータのページサイズに関する情報を格納するストレージ媒体(たとえば、EEPROM)520からストレージデバイス501の物理構成に関するこの情報を受信することができる。ホスト550は、ストレージデバイスの物理パラメータ(たとえば、チャネルの数、チップの数、チップのタイプ及びページサイズ)に関するそのような情報の転送を要求するためにコマンドをストレージデバイス501に送信することができ、ストレージデバイス501は、コマンドに応答して、情報をホスト550に送信することができる。
論理的に順次のデータが、チャネルストライピング技法を使用してストレージデバイス501に書き込まれるとき、論理的に順次のデータはチャネルのチャンクサイズ単位でセグメント化されてもよい。たとえば、セグメンテーションエンジン568は、論理的に順次のデータ(たとえば、データファイル)を、たとえば初期化エンジン566によって決定されたチャネルチャンクサイズと等しくてもよい複数のセグメントに分割することができる。1つの実施態様において、セグメンテーションエンジン568は、論理的に順次のデータを受信することができ、指定されたチャネルチャンクサイズに従って大きさを調整されるセグメントを出力することができる。次いで、ストライピングエンジン570は、第1のチャネルチャンクサイズ単位の、データストレージデバイス501の異なるチャネルへの論理的に順次のデータのストライピングを制御することができる。たとえば、アドレス割り当てエンジン572は、メモリアドレスをデータセグメントに割り当てることができ、割り当てられたメモリアドレスは、セグメントがストレージデバイス501の物理チャネルの特定の1つに書き込まれることを指定する。
ストライピングエンジン570は、特定のセグメントが、アドレスによって指示される特定のチャネル513、523、533、543に書き込まれるようにさせるアドレス(アドレス割り当てエンジン572によって割り当てられてもよい)を示すタグを各セグメントに付けることができる。たとえば、データの第1のチャネルチャンクはチャネル513に書き込まれてもよく、データの第2のチャネルチャンクはチャネル523に書き込まれてもよく、データの第3のチャネルチャンクはチャネル533に書き込まれてもよく、データの第4のチャネルチャンクはチャネル543に書き込まれてもよい。特定のチャネル(たとえば、チャネル513)にアドレス指定されたデータのチャネルチャンクサイズ単位が、特定のチャネルに関連付けられているチャネルコントローラ(たとえば、チャネルコントローラ512)に到着するとき、チャネルストライピングが使用され、データのチャネルチャンクサイズ単位がチャネルに接続された特定のフラッシュメモリチップにアドレス指定されていない場合、チャネルコントローラは、チャネルチャンクサイズ単位の一部を異なるフラッシュメモリチップに書き込むことができる。各部分に対して選択された個々のフラッシュメモリチップは、たとえばチャネルに接続されたチップのチップスペース可用性に基づいてなど、チャネルに接続された各チップの現在の実行時状態に基づいて、動的に(たとえば、ホスト550によって、又はコントローラによって)決定されてもよい。たとえば、データのチャネルチャンクサイズ単位がコントローラ512に到着するときに、フラッシュメモリチップ514への書き込み操作が引き続き実行されている場合、データのチャネルチャンクサイズ単位の一部は、チップ514への書き込み操作が完了するまで、フラッシュメモリチップ515、516、及び517に書き込まれてもよい。
したがって、論理的に順次のデータをホストからストレージデバイスに書き込むときにチャネルストライピングを使用することにより、データは1つのチャネルに書き込むことができ、しかもその間データはまた別のチャネルから読み取られる。加えて、チャネルストライピングを使用し、特定のチャネル内で論理的に順次のデータのセグメントを書き込む個々のフラッシュメモリチップを動的に決定することにより、システム500の書き込みパフォーマンスを増強することができるが、それは最もデータを受け入れられる状態にあるチップに優先的にデータが書き込まれるため、チップがアクセス可能になるまでホストが待機する時間が最小に抑えられるからである。さらに、フラッシュメモリのガーベッジコレクションは、書き込み集約型のプロセスであるため、チャネルストライピングは、ガーベッジコレクションのパフォーマンスを高めることができる。
ホスト550がデータストライピングの初期化及び実行を制御することの利点は、ホストがストレージデバイス501との対話をセットアップして制御することができるように、データストライピングを実行するために使用されるパラメータを制御及び変更することができることである。たとえば、ホスト550のユーザは最初に、データストレージデバイス501のさまざまなチャネルにわたりデータをストライピングするための第1のチャネルチャンクサイズを使用するようにホストを構成することができるが、ユーザの要望が変化するのに応じて、装置500は、異なるアプリケーションに使用され、異なるフラッシュメモリチップがストレージデバイスに使用されるなど、チャネルにわたりデータをストライピングするための異なるチャネルチャンクサイズを使用する必要性が生じることもある。この場合、初期化エンジンはさらに、別個のチャネルに接続されたフラッシュメモリチップにデータを書き込むための第1のチャネルのチャンクサイズとは異なる、第2のチャネルチャンクサイズを決定するようにユーザによって構成されてもよい。セグメンテーションエンジンはさらに、論理的に順次のデータを第2のチャネルチャンクサイズセグメントに分割するように構成されてもよく、ストライピングエンジンはさらに、第2のチャネルチャンクサイズ単位でデータストレージデバイスの異なるチャネルにデータをストライピングするように構成されてもよい。
セグメント内のさまざまなチャネルにわたり論理的に順次のデータをストライピングするチャネルチャンクサイズを決定することに加えて、初期化エンジンはまた、さまざまなチップにわたり論理的に順次のデータをストライピングするチップチャンクサイズを決定することもでき、チップチャンクサイズは、異なるチップにデータを書き込み始める前に特定のチップに書き込まれるべきデータの量を決定する。次いで、「チップストライピング」を使用して特定のチップ(たとえば、特定のチャネル513に接続されるチップ514、515、516、及び517)にわたり論理的に順次のデータをストライピングする場合、ホストは、特定のセグメントの宛先メモリアドレスを指定することができ、指定されるアドレスはセグメントが書き込まれる特定のチップを含むことができる。チップストライピングを使用することで、論理的に順次のデータは、チップチャンクサイズ単位で、ストレージデバイス501のさまざまなチップにわたりストライピングされてもよい。すなわち、チップチャンクサイズのデータセグメントが1つのフラッシュメモリチップに書き込まれた後、次のチップチャンクサイズ単位が異なるチップに書き込まれてもよい。したがって、チップストライピングは、ストレージデバイス501との間の読み取り及び書き込み操作において最大の並列処理をもたらす。たとえば、12個のチャネル、及びチャネルあたり20個のチップを有するストレージデバイス501において、データファイルのセグメントは、チップが再度アクセスされるまでに240個の異なるチップに書き込まれてもよい。したがって、チップストライピングにより高度な並列処理が達成されうるので、チップストライピングは、読み取りパフォーマンスに関してチャネルストライピングにまさる利点を提供する。
このようにして、チップストライピングにより、初期化エンジン566は、ストレージデバイス501のフラッシュメモリチップにデータを書き込むための第1のチップチャンクサイズを決定するように構成されてもよい。たとえば、ストレージデバイス501内のフラッシュメモリチップの数、及びデータをフラッシュメモリチップに書き込むために使用されるページサイズに関するストレージデバイス501から受信される情報に基づいて、初期化エンジン566は、適切なチャネルチャンクサイズを、ページサイズのほぼ倍数(たとえば、8K、32K、40K、80K、160K、320Kなど)であると決定することができる。
次いで、論理的に順次のデータが、チップストライピング技法を使用してストレージデバイス501に書き込まれるとき、論理的に順次のデータはチップへの書き込みのためにチップチャンクサイズ単位でセグメント化されてもよい。たとえば、セグメンテーションエンジン568は、論理的に順次のデータ(たとえば、データファイル)を、たとえばサイズが初期化エンジン566によって決定されたチップチャンクサイズと等しくてもよい複数のセグメントに分割することができる。1つの実施態様において、セグメンテーションエンジン568は、論理的に順次のデータを受信することができ、指定されたチップチャンクサイズに従って大きさを調整されるセグメントを出力することができる。次いで、ストライピングエンジン570は、チップチャンクサイズ単位の、データストレージデバイス501の異なるチップへの論理的に順次のデータのストライピングを制御することができる。たとえば、アドレス割り当てエンジン572は、メモリアドレスをデータセグメントに割り当てることができ、割り当てられたメモリアドレスは、セグメントがストレージデバイス501のチップの特定の1つに書き込まれることを指定する。
もう1つの実施態様において、セグメンテーションエンジン568は、論理的に順次のデータを受信することができ、指定されたチャネルチャンクサイズに従って大きさを調整され、さらにチップチャンクサイズ単位に再分割されるセグメントを出力することができる。次いで、ストライピングエンジン570は、チャネルチャンクサイズ単位の、データストレージデバイス501の異なるチャネルへの論理的に順次のデータのストライピングを制御することができ、チップチャンクサイズ単位の、チャネルに接続されたチップへのデータのストライピングを制御することができる。たとえば、アドレス割り当てエンジン572は、メモリアドレスをデータセグメントに割り当てることができ、割り当てられたメモリアドレスは、セグメントがストレージデバイス501のチャネルの特定の1つ、及びチップの特定の1つに書き込まれることを指定する。
ストライピングエンジン570は、特定のセグメントが、アドレスによって指示される特定のチャネル513、523、533、543、及び特定のフラッシュメモリチップ514、515、516、517、524、525、526、527、534、535、536、537、544、545、546、及び547に書き込まれるようにさせるアドレス(アドレス割り当てエンジン572によって割り当てられてもよい)を示すタグを各セグメントに付けることができる。たとえば、データの第1のチャネルチャンクはチャネル513に書き込まれてもよく、データの第2のチャネルチャンクはチャネル523に書き込まれてもよく、データの第3のチャネルチャンクはチャネル533に書き込まれてもよく、データの第4のチャネルチャンクはチャネル543に書き込まれてもよいが、これに対して、第1のチャネルチャンクのデータの第1のチップチャンクはチップ514に書き込まれてもよく、第1のチャネルチャンクのデータの第2のチップチャンクはチップ515に書き込まれてもよく、第1のチャネルチャンクのデータの第3のチップチャンクはチップ516に書き込まれてもよく、第1のチャネルチャンクのデータの第4のチップチャンクはチップ517に書き込まれてもよく、第2のチャネルチャンクのデータの第1のチップチャンクはチップ524に書き込まれてもよく、第2のチャネルチャンクのデータの第2のチップチャンクはチップ525に書き込まれてもよく、第2のチャネルチャンクのデータの第3のチップチャンクはチップ526に書き込まれてもよく、第2のチャネルチャンクのデータの第4のチップチャンクはチップ527に書き込まれてもよい、などである。
したがって、論理的に順次のデータをホストからストレージデバイスに書き込むときにチップストライピングを使用することにより、データは1つのチップに書き込むことができ、しかもその間データはまた別のチップから読み取られる。次いで、論理的に順次のデータがストレージデバイス501の複数のチップから読み戻されるとき、読み取り操作は、さまざまなフラッシュメモリチップから並行して実行されてもよい。
パーティショニング及びストライピングは、組み合わせて使用することもできる。たとえば、ストレージデバイス内のフラッシュメモリチップの第1のパーティション104aはチャネルストライピングを使用するように定義されてもよく、デバイスの第2のパーティション104bはチップストライピングを使用するように定義されてもよい。したがって、第1のパーティション104aは、ホストと第1のパーティションとの間のデータの書き込み及び読み取りにチャネルストライピング技法を使用するので、比較的優れた書き込みパフォーマンス、冗長性、及び耐障害性をもたらすことができるが、一方第2のパーティションは、ホストと第2のパーティションとの間のデータの書き込み及び読み取りにチップストライピング技法を使用するので、比較的優れた読み取りパフォーマンスをもたらすことができる。
図6は、図5のデータストレージデバイスの例示の動作を示す例示的な流れ図である。ホストからデータストレージデバイスへデータをストライピングするプロセス600が示される。デバイスは複数のフラッシュメモリチップを含み、データストレージデバイスは、ホストと複数のフラッシュメモリチップ間のデータの通信のための複数の物理チャネルを含む。各チャネルは、異なる複数のメモリチップに機能的に接続される。複数のチャネル内の物理チャネルの数は、たとえば初期化エンジン566によって決定されてもよい(602)。別個のチャネルに接続されたフラッシュメモリチップにデータを書き込むための第1のチャネルチャンクサイズは、たとえば初期化エンジン566によって決定されてもよい(604)。論理的に順次のデータは、たとえばホスト550で稼働しているセグメンテーションエンジン568によってなど、ホストによって第1のチャネルチャンクサイズセグメントに分割されてもよい(606)。データは、たとえば、アドレス割り当てエンジン570と協働してストライピングエンジン570によって、第1のチャネルチャンクサイズ単位でデータストレージデバイスの異なるチャネルにストライピングされてもよい(608)。
1つの実施態様において、プロセス600はさらに、データを異なるフラッシュメモリチップに書き込むチップチャンクサイズを決定すること(610)と、各々決定された物理チャネルについて、チャネルに機能的に接続されたフラッシュメモリチップの数を決定すること(612)とを含むことができる。チャネルチャンクサイズセグメントは、ホストによってチップチャンクサイズセグメントに分割されてもよく(614)、チャネルチャンクサイズ単位のデータは、チップチャンクサイズ単位でチャネルに接続された異なるフラッシュメモリチップにストライピングされてもよい(616)。
もう1つの実施態様において、別個のチャネルに接続されたフラッシュメモリチップにデータを書き込む第2のチャネルチャンクサイズが決定される(618)。論理的に順次のデータは、第2のチャネルチャンクサイズセグメントに分割されてもよく(620)、データは、第2のチャネルチャンクサイズ単位でデータストレージデバイスの異なるチャネルにストライピングされてもよい(622)。
本明細書において説明されるさまざまな技法の実施態様は、デジタル電子回路において、又はコンピュータハードウェア、ファームウェア、ソフトウェア、若しくはその組み合わせで実施されてもよい。実施態様は、コンピュータプログラム製品として、すなわち、たとえばプログラム可能プロセッサ、コンピュータ、又は複数のコンピュータなどのデータ処理装置により実行するため、若しくはその動作を制御するための、たとえば機械可読ストレージデバイスなどの情報担体において実体的に具現されるコンピュータプログラムとして、実施されてもよい。上記で説明される(1つ以上の)コンピュータプログラムのような、コンピュータプログラムは、コンパイル済み又は解釈済みの言語を含む任意の形態のプログラミング言語で記述されてもよく、スタンドアロンのプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくはコンピューティング環境において使用に適した他のユニットとしてなど、任意の形態で配置されてもよい。コンピュータプログラムは、1つのサイトにおける1つのコンピュータ上、又は複数サイトに分散されて通信ネットワークにより相互接続された複数コンピュータ上で実行されるように配置されてもよい。
方法ステップは、入力データを操作して出力を生成することにより機能を実行するようにコンピュータプログラムを実行している1つ以上のプログラム可能プロセッサによって実行されてもよい。たとえばFPGA又はASIC(特殊用途向け集積回路)などの特殊用途論理回路によって、方法ステップはまた実行されてもよく、装置は特殊用途論理回路として実施されてもよい。
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用及び特殊用途マイクロプロセッサ、及び任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ又はランダムアクセスメモリ、若しくはその両方から命令及びデータを受信する。コンピュータの要素は、命令を実行するための少なくとも1つのプロセッサと、命令及びデータを格納するための1つ以上のメモリデバイスを含むことができる。一般に、コンピュータはまた、たとえば磁気、光磁気ディスク、又は光ディスクなど、データを格納するための1つ以上の大容量ストレージデバイスを含むことができるか、又は大容量ストレージデバイスとの間でデータを受信又は転送若しくはその両方を行うように機能的に結合されてもよい。コンピュータプログラム命令及びデータを具現するために適した情報担体は、一例として、たとえばEPROM、EEPROM、及びフラッシュメモリデバイスのような半導体メモリデバイス;たとえば内蔵ハードディスク又はリムーバブルディスクのような磁気ディスク;光磁気ディスク;並びにCD-ROM及びDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリを含む。プロセッサ及びメモリは、特殊用途論理回路によって補完されてもよいか、又は特殊用途論理回路に組み込まれてもよい。
ユーザとの対話に備えるため、実施態様は、情報をユーザに表示するための、たとえばブラウン管(CRT)又は液晶ディスプレイ(LCD)モニタのような表示デバイス、並びにキーボード及び、たとえばマウス又はトラックボールのような、ユーザがコンピュータに入力を行うことができるポインティングデバイスを有するコンピュータで実施されてもよい。その他の種類のデバイスも、ユーザとの対話を行うために使用されてもよく;たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックのような任意の形態の知覚的フィードバックであってもよく;ユーザからの入力は、音響、発語、又は触覚入力を含む任意の形態で受信されてもよい。
実施態様は、たとえばデータサーバのようなバックエンドコンポーネントを含むか、又はたとえばアプリケーションサーバのようなミドルウェアコンポーネントを含むか、又はたとえばユーザが実施態様と対話することができるグラフィカルユーザインターフェイス又はWebブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを含むか、若しくはそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実施されてもよい。コンポーネントは、たとえば通信ネットワークのようなデジタルデータ通信の任意の形態又は媒体によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、及びたとえばインターネットのようなワイドエリアネットワーク(WAN)を含む。
説明された実施態様の特定の特徴が本明細書において説明されるように示されたが、当業者には多数の修正、代替、変更、及び等価が考案されよう。したがって、添付の特許請求の範囲は、すべてのそのような修正及び変更を、実施態様の範囲内に含まれるものとして扱うことが意図されていることを理解されたい。
Claims (15)
- ホスト(106、350、551)から、複数のメモリチップ(118a、118b、218、318)と、該ホスト(106、350、551)と該複数のメモリチップ(118a、118b、218、318)間のデータの通信のための複数の物理チャネル(112)とを含むデータストレージデバイス(100、302、501)にデータをストライピングする方法であって、各チャネル(112)が異なる複数の該メモリチップ(118a、118b、218、318)に機能的に接続される方法において、
該複数のチャネル(112)内の物理チャネル(112)の数を決定すること(602)と、
別個のチャネル(112)に接続されたメモリチップ(118a、118b、218、318)にデータを書き込むための第1のチャネルチャンクサイズを決定すること(604)と、
該ホスト(106、350、551)を介して、論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割すること(606)と、
データを第1のチャネルチャンクサイズ単位で該データストレージデバイス(100、302、501)の異なるチャネル(112)にストライピングすること(608)とを備える、前記方法。 - 異なるメモリチップ(118a、118b、218、318)にデータを書き込むためのチップチャンクサイズを決定すること(610)と、
前記決定された物理チャネル(112)の各々について、該チャネルに機能的に接続されたメモリチップ(118a、118b、218、318)の数を決定すること(612)と、
該ホスト(106、350、551)を介して、該第1のチャネルチャンクサイズセグメントをチップチャンクサイズセグメントに分割すること(614)と、
第1のチャネルチャンクサイズセグメントのデータを、チップチャンクサイズ単位で、チャネル(112)に接続された異なるメモリチップ(118a、118b、218、318)にストライピングすること(616)とをさらに備える、請求項1記載の方法。 - 別個のチャネル(112)に接続されたメモリチップ(118a、118b、218、318)にデータを書き込むための第2のチャネルチャンクサイズを決定すること(618)と、
前記ホスト(106、350、551)を介して、論理的に順次のデータを第2のチャネルチャンクサイズセグメントに分割すること(620)と、
データを、第2のチャネルチャンクサイズ単位で、前記データストレージデバイス(100、302、501)の異なるチャネル(112)にストライピングすること(622)とをさらに備える、請求項1又は2記載の方法。 - 前記論理的に順次のデータが、データファイルで構成される、請求項1から3のいずれか記載の方法。
- 第2のチャネルからのデータの読み取り中に、第1のチャネル(112)にデータを書き込むことをさらに備える、請求項1から4のいずれか記載の方法。
- 前記複数のチャネル(112)内の物理チャネル(112)の数を決定することが、前記データストレージデバイス(100、302、501)内のチャネル(112)の数を指示する情報を該データストレージデバイス(100、302、501)から前記ホスト(106、350、551)に送信することを含む、請求項1から5のいずれか記載の方法。
- 前記複数のチャネル(112)内の物理チャネル(112)の数を決定することが、前記データストレージデバイス(100、302、501)内のチャネル(112)の数を指示する前記ホスト(106、350、551)に格納されているデータを読み取ることを含む、請求項1から6のいずれか記載の方法。
- 前記第1のチャネルチャンクサイズを決定することが、前記ホスト(106、350、551)を介して入力されたユーザからの入力に基づく、請求項1から7のいずれか記載の方法。
- 複数のメモリチップ(118a、118b、218、318)と、ホスト(106、350、551)と該複数のメモリチップ(118a、118b、218、318)間のデータの通信のための複数の物理チャネル(112)とを含むデータストレージデバイス(100、302、501)であって、各チャネル(112)が異なる複数の該メモリチップ(118a、118b、218、318)に機能的に接続される、前記データストレージデバイスと、
インターフェイスを介して該データストレージデバイス(100、302、501)に機能的に結合されたホスト(106、350、551)であって、
別個のチャネル(112)に接続されたメモリチップ(118a、118b、218、318)にデータを書き込むための第1のチャネルチャンクサイズを決定するように構成された初期化エンジン(566)と、
論理的に順次のデータを第1のチャネルチャンクサイズセグメントに分割するように構成されたセグメンテーションエンジン(568)と、
データを、第1のチャネルチャンクサイズ単位で、該データストレージデバイス(100、302、501)の異なるチャネル(112)にストライピングするように構成されたストライピングエンジン(570)とを備える、前記ホスト(106、350、551)と
を備える、装置。 - 前記データストレージデバイス(100、302、501)が、チャネル(112)の数を格納するように構成されたストレージ媒体を備え、該データストレージデバイス(100、302、501)が、前記ホスト(106、350、551)からコマンドを受信すると、該データストレージデバイス(100、302、501)内のチャネル(112)の数を指示する情報を該データストレージデバイス(100、302、501)から該ホスト(106、350、551)に送信するように構成される、請求項9記載の装置。
- 前記ホスト(106、350、551)が、前記データストレージデバイス(100、302、501)に書き込まれるデータにメモリアドレスを割り当てるように構成されたアドレス割り当てエンジン(572)をさらに備え、該割り当てられるメモリアドレスが、該データが前記チャネル(112)の特定の1つに書き込まれることを指定する、請求項9又は10記載の装置。
- 前記論理的に順次のデータが、データファイルで構成される、請求項9から11のいずれか1項記載の装置。
- 前記ストライピングエンジン(570)が、第2のチャネルからのデータの読み取り中に、データを第1のチャネル(112)に書き込むように構成される、請求項9から12のいずれか1項記載の装置。
- 前記初期化エンジン(566)が、別個のチャネル(112)に接続されたメモリチップ(118a、118b、218、318)にデータを書き込むための前記第1のチャネルチャンクサイズとは異なる、第2のチャネルチャンクサイズを決定するようにさらに構成され、
前記セグメンテーションエンジン(568)が、論理的に順次のデータを第2のチャネルチャンクサイズセグメントに分割するようにさらに構成され、
前記ストライピングエンジン(570)が、データを、第2のチャネルチャンクサイズ単位で、前記データストレージデバイス(100、302、501)の異なるチャネル(112)にストライピングするように構成される、請求項9から13のいずれか1項記載の装置。 - 前記初期化エンジン(566)が、異なるメモリチップ(118a、118b、218、318)にデータを書き込むためのチップチャンクサイズを決定するようにさらに構成され、
前記セグメンテーションエンジン(568)が、前記第1のチャネルチャンクサイズセグメントをチップチャンクサイズセグメントに分割するようにさらに構成され、
前記ストライピングエンジン(570)が、データを、第1のチャネルチャンクサイズ単位で、チャネル(112)に接続された異なるチップにストライピングするようにさらに構成される、請求項9から14のいずれか1項記載の装置。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16770909P | 2009-04-08 | 2009-04-08 | |
US61/167,709 | 2009-04-08 | ||
US18783509P | 2009-06-17 | 2009-06-17 | |
US61/187,835 | 2009-06-17 | ||
US12/537,738 US20100262773A1 (en) | 2009-04-08 | 2009-08-07 | Data striping in a flash memory data storage device |
US12/537,738 | 2009-08-07 | ||
PCT/US2010/029916 WO2010117928A1 (en) | 2009-04-08 | 2010-04-05 | Data striping in a flash memory data storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012523622A true JP2012523622A (ja) | 2012-10-04 |
Family
ID=42935237
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012504717A Active JP5657641B2 (ja) | 2009-04-08 | 2010-04-01 | データストレージデバイスのコマンド及び割り込みのグループ化 |
JP2012504716A Active JP5922016B2 (ja) | 2009-04-08 | 2010-04-01 | データストレージデバイス |
JP2012504740A Pending JP2012523622A (ja) | 2009-04-08 | 2010-04-05 | フラッシュメモリデータストレージデバイスにおけるデータストライピング |
JP2012504741A Pending JP2012523623A (ja) | 2009-04-08 | 2010-04-05 | フラッシュメモリデータストレージデバイスのパーティション化 |
JP2012504742A Active JP5347061B2 (ja) | 2009-04-08 | 2010-04-05 | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 |
JP2014208104A Pending JP2015046175A (ja) | 2009-04-08 | 2014-10-09 | データストレージデバイス |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012504717A Active JP5657641B2 (ja) | 2009-04-08 | 2010-04-01 | データストレージデバイスのコマンド及び割り込みのグループ化 |
JP2012504716A Active JP5922016B2 (ja) | 2009-04-08 | 2010-04-01 | データストレージデバイス |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012504741A Pending JP2012523623A (ja) | 2009-04-08 | 2010-04-05 | フラッシュメモリデータストレージデバイスのパーティション化 |
JP2012504742A Active JP5347061B2 (ja) | 2009-04-08 | 2010-04-05 | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 |
JP2014208104A Pending JP2015046175A (ja) | 2009-04-08 | 2014-10-09 | データストレージデバイス |
Country Status (7)
Country | Link |
---|---|
US (13) | US8566508B2 (ja) |
EP (6) | EP2728488B1 (ja) |
JP (6) | JP5657641B2 (ja) |
CN (6) | CN102428451B (ja) |
AU (5) | AU2010234772B2 (ja) |
DE (6) | DE202010017668U1 (ja) |
WO (5) | WO2010117878A1 (ja) |
Families Citing this family (327)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070813A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8732386B2 (en) * | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
JP2010015195A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | 記憶制御装置及び記憶制御方法 |
WO2010005430A1 (en) * | 2008-07-08 | 2010-01-14 | Hewlett-Packard Development Company, L.P. | Adaptable external drive |
TWI385672B (zh) * | 2008-11-05 | 2013-02-11 | Lite On It Corp | 儲存裝置之適應性多通道控制器及其方法 |
TWI385517B (zh) * | 2008-12-05 | 2013-02-11 | Apacer Technology Inc | Storage device and data management method |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US8566508B2 (en) | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
KR101516580B1 (ko) * | 2009-04-22 | 2015-05-11 | 삼성전자주식회사 | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 |
EP2254280A1 (en) | 2009-05-19 | 2010-11-24 | Electrolux Home Products Corporation N.V. | Bus control for a domestic appliance |
WO2011031796A2 (en) | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
EP2476079A4 (en) | 2009-09-09 | 2013-07-03 | Fusion Io Inc | APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION |
US8601222B2 (en) | 2010-05-13 | 2013-12-03 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US9021158B2 (en) | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
US8289801B2 (en) * | 2009-09-09 | 2012-10-16 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
US8244946B2 (en) | 2009-10-16 | 2012-08-14 | Brocade Communications Systems, Inc. | Interrupt moderation |
US8307151B1 (en) | 2009-11-30 | 2012-11-06 | Micron Technology, Inc. | Multi-partitioning feature on e-MMC |
US8285946B2 (en) * | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
KR101008923B1 (ko) * | 2010-01-15 | 2011-01-17 | 주식회사 노바칩스 | 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법 |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US10210162B1 (en) * | 2010-03-29 | 2019-02-19 | Carbonite, Inc. | Log file management |
US8856593B2 (en) | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US8868487B2 (en) | 2010-04-12 | 2014-10-21 | Sandisk Enterprise Ip Llc | Event processing in a flash memory-based object store |
US8725951B2 (en) | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
US9164554B2 (en) * | 2010-04-12 | 2015-10-20 | Sandisk Enterprise Ip Llc | Non-volatile solid-state storage system supporting high bandwidth and random access |
US20110252263A1 (en) * | 2010-04-13 | 2011-10-13 | Byungcheol Cho | Semiconductor storage device |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8954385B2 (en) | 2010-06-28 | 2015-02-10 | Sandisk Enterprise Ip Llc | Efficient recovery of transactional data stores |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8725934B2 (en) | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
US8677028B2 (en) * | 2010-08-23 | 2014-03-18 | Qualcomm Incorporated | Interrupt-based command processing |
US8417877B2 (en) | 2010-08-31 | 2013-04-09 | Micron Technology, Inc | Stripe-based non-volatile multilevel memory operation |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US20120117305A1 (en) * | 2010-11-08 | 2012-05-10 | Greenliant Llc | Method Of Storing Blocks Of Data In A Plurality Of Memory Devices For High Speed Sequential Read, A Memory Controller And A Memory System |
US9003153B2 (en) | 2010-11-08 | 2015-04-07 | Greenliant Llc | Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system |
JP5720204B2 (ja) * | 2010-11-26 | 2015-05-20 | 富士通株式会社 | アクセス制御プログラム、アクセス制御方法および情報処理装置 |
WO2012073071A1 (en) * | 2010-12-02 | 2012-06-07 | Freescale Semiconductor, Inc. | Error correcting device, method for monitoring an error correcting device and data processing system |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
CN103262054B (zh) | 2010-12-13 | 2015-11-25 | 桑迪士克科技股份有限公司 | 用于自动提交存储器的装置、***和方法 |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US8473708B1 (en) * | 2010-12-23 | 2013-06-25 | Netapp, Inc. | Method and system for managing storage units |
US8694733B2 (en) | 2011-01-03 | 2014-04-08 | Sandisk Enterprise Ip Llc | Slave consistency in a synchronous replication environment |
WO2012109677A2 (en) | 2011-02-11 | 2012-08-16 | Fusion-Io, Inc. | Apparatus, system, and method for managing operations for data storage media |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US8700951B1 (en) * | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8966191B2 (en) | 2011-03-18 | 2015-02-24 | Fusion-Io, Inc. | Logical interface for contextual storage |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8601085B1 (en) * | 2011-03-28 | 2013-12-03 | Emc Corporation | Techniques for preferred path determination |
US8924627B2 (en) * | 2011-03-28 | 2014-12-30 | Western Digital Technologies, Inc. | Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
US8694857B2 (en) * | 2011-04-13 | 2014-04-08 | Inphi Corporation | Systems and methods for error detection and correction in a memory module which includes a memory buffer |
US8954670B1 (en) * | 2011-04-18 | 2015-02-10 | American Megatrends, Inc. | Systems and methods for improved fault tolerance in RAID configurations |
US9817700B2 (en) * | 2011-04-26 | 2017-11-14 | International Business Machines Corporation | Dynamic data partitioning for optimal resource utilization in a parallel data processing system |
US9396106B2 (en) * | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9417894B1 (en) | 2011-06-15 | 2016-08-16 | Ryft Systems, Inc. | Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module |
US20120324143A1 (en) * | 2011-06-15 | 2012-12-20 | Data Design Corporation | Methods and apparatus for data access by a reprogrammable circuit module |
US10966339B1 (en) | 2011-06-28 | 2021-03-30 | Amazon Technologies, Inc. | Storage system with removable solid state storage devices mounted on carrier circuit boards |
US20130019052A1 (en) * | 2011-07-14 | 2013-01-17 | Vinay Ashok Somanache | Effective utilization of flash interface |
US8806112B2 (en) | 2011-07-14 | 2014-08-12 | Lsi Corporation | Meta data handling within a flash media controller |
US8868867B2 (en) * | 2011-09-15 | 2014-10-21 | The Regents Of The University Of California | Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device |
US8966172B2 (en) | 2011-11-15 | 2015-02-24 | Pavilion Data Systems, Inc. | Processor agnostic data storage in a PCIE based shared storage enviroment |
US8842122B2 (en) * | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
US8719647B2 (en) * | 2011-12-15 | 2014-05-06 | Micron Technology, Inc. | Read bias management to reduce read errors for phase change memory |
CN102521160B (zh) * | 2011-12-22 | 2015-04-01 | 上海交通大学 | 写缓冲检测器、并行通道写入方法 |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US8904091B1 (en) * | 2011-12-22 | 2014-12-02 | Western Digital Technologies, Inc. | High performance media transport manager architecture for data storage systems |
CN102567257B (zh) * | 2011-12-26 | 2014-08-27 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US10359972B2 (en) | 2012-08-31 | 2019-07-23 | Sandisk Technologies Llc | Systems, methods, and interfaces for adaptive persistence |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US9652182B2 (en) | 2012-01-31 | 2017-05-16 | Pavilion Data Systems, Inc. | Shareable virtual non-volatile storage device for a server |
US9378150B2 (en) * | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US9135064B2 (en) | 2012-03-07 | 2015-09-15 | Sandisk Enterprise Ip Llc | Fine grained adaptive throttling of background processes |
US9135192B2 (en) | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
KR20130114354A (ko) | 2012-04-09 | 2013-10-18 | 삼성전자주식회사 | 메모리 시스템 및 컨트롤러의 동작 방법 |
US20130339583A1 (en) * | 2012-06-19 | 2013-12-19 | Marvell World Trade Ltd. | Systems and methods for transferring data out of order in next generation solid state drive controllers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9389999B2 (en) * | 2012-08-17 | 2016-07-12 | Infineon Technologies Ag | System and method for emulating an EEPROM in a non-volatile memory device |
US9122401B2 (en) * | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
KR20140027859A (ko) | 2012-08-27 | 2014-03-07 | 삼성전자주식회사 | 호스트 장치 및 이를 포함하는 시스템 |
US9009566B2 (en) * | 2012-09-12 | 2015-04-14 | Macronix International Co., Ltd. | Outputting information of ECC corrected bits |
US9471484B2 (en) | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US9323499B2 (en) | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
US8925098B2 (en) | 2012-11-15 | 2014-12-30 | Elwha Llc | Data security and access tracking in memory |
US9026719B2 (en) | 2012-11-15 | 2015-05-05 | Elwha, Llc | Intelligent monitoring for computation in memory |
US9442854B2 (en) | 2012-11-15 | 2016-09-13 | Elwha Llc | Memory circuitry including computational circuitry for performing supplemental functions |
US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
US9582465B2 (en) * | 2012-11-15 | 2017-02-28 | Elwha Llc | Flexible processors and flexible memory |
US8966310B2 (en) | 2012-11-15 | 2015-02-24 | Elwha Llc | Redundancy for loss-tolerant data in non-volatile memory |
CN103853629A (zh) * | 2012-11-29 | 2014-06-11 | 艺伦半导体技术股份有限公司 | 数据流存储方法及现场可编程门阵列 |
US9448883B1 (en) * | 2012-12-04 | 2016-09-20 | Cadence Design Systems, Inc. | System and method for allocating data in memory array having regions of varying storage reliability |
US9069658B2 (en) | 2012-12-10 | 2015-06-30 | Google Inc. | Using a virtual to physical map for direct user space communication with a data storage device |
US9164888B2 (en) | 2012-12-10 | 2015-10-20 | Google Inc. | Using a logical to physical map for direct user space communication with a data storage device |
US9236136B2 (en) * | 2012-12-14 | 2016-01-12 | Intel Corporation | Lower page read for multi-level cell memory |
US9842660B1 (en) | 2012-12-28 | 2017-12-12 | Virident Systems, Llc | System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory |
US9286002B1 (en) | 2012-12-28 | 2016-03-15 | Virident Systems Inc. | Dynamic restriping in nonvolatile memory systems |
US9781664B2 (en) | 2012-12-31 | 2017-10-03 | Elwha Llc | Cost-effective mobile connectivity protocols |
US9713013B2 (en) | 2013-03-15 | 2017-07-18 | Elwha Llc | Protocols for providing wireless communications connectivity maps |
US9876762B2 (en) | 2012-12-31 | 2018-01-23 | Elwha Llc | Cost-effective mobile connectivity protocols |
US9451394B2 (en) | 2012-12-31 | 2016-09-20 | Elwha Llc | Cost-effective mobile connectivity protocols |
US9980114B2 (en) | 2013-03-15 | 2018-05-22 | Elwha Llc | Systems and methods for communication management |
US8965288B2 (en) | 2012-12-31 | 2015-02-24 | Elwha Llc | Cost-effective mobile connectivity protocols |
US9832628B2 (en) | 2012-12-31 | 2017-11-28 | Elwha, Llc | Cost-effective mobile connectivity protocols |
US9635605B2 (en) | 2013-03-15 | 2017-04-25 | Elwha Llc | Protocols for facilitating broader access in wireless communications |
CN103942219A (zh) * | 2013-01-22 | 2014-07-23 | 鸿富锦精密工业(深圳)有限公司 | 存储卡分区***及方法 |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US9110592B2 (en) * | 2013-02-04 | 2015-08-18 | Microsoft Technology Licensing, Llc | Dynamic allocation of heterogenous memory in a computing system |
US8949537B2 (en) | 2013-02-25 | 2015-02-03 | Hitachi, Ltd. | Storage control apparatus and method for detecting write completion of data |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9706382B2 (en) | 2013-03-15 | 2017-07-11 | Elwha Llc | Protocols for allocating communication services cost in wireless communications |
US9866706B2 (en) | 2013-03-15 | 2018-01-09 | Elwha Llc | Protocols for facilitating broader access in wireless communications |
US9781554B2 (en) | 2013-03-15 | 2017-10-03 | Elwha Llc | Protocols for facilitating third party authorization for a rooted communication device in wireless communications |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9843917B2 (en) | 2013-03-15 | 2017-12-12 | Elwha, Llc | Protocols for facilitating charge-authorized connectivity in wireless communications |
US9693214B2 (en) | 2013-03-15 | 2017-06-27 | Elwha Llc | Protocols for facilitating broader access in wireless communications |
US9135164B2 (en) | 2013-03-15 | 2015-09-15 | Virident Systems Inc. | Synchronous mirroring in non-volatile memory systems |
US9813887B2 (en) | 2013-03-15 | 2017-11-07 | Elwha Llc | Protocols for facilitating broader access in wireless communications responsive to charge authorization statuses |
US9706060B2 (en) | 2013-03-15 | 2017-07-11 | Elwha Llc | Protocols for facilitating broader access in wireless communications |
US9596584B2 (en) | 2013-03-15 | 2017-03-14 | Elwha Llc | Protocols for facilitating broader access in wireless communications by conditionally authorizing a charge to an account of a third party |
US8996796B1 (en) | 2013-03-15 | 2015-03-31 | Virident Systems Inc. | Small block write operations in non-volatile memory systems |
US9807582B2 (en) | 2013-03-15 | 2017-10-31 | Elwha Llc | Protocols for facilitating broader access in wireless communications |
CN103226976A (zh) * | 2013-03-19 | 2013-07-31 | 中国科学院声学研究所 | 一种基于FPGA实现多片Nandflash存储及读取的装置 |
CN104102599A (zh) * | 2013-04-11 | 2014-10-15 | 华邦电子股份有限公司 | 快闪存储器装置与数据传输方法 |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US20150058529A1 (en) * | 2013-08-21 | 2015-02-26 | Sandisk Technologies Inc. | Systems and methods of processing access requests at a data storage device |
US9513869B2 (en) | 2013-09-18 | 2016-12-06 | HGST Netherlands B.V. | Doorbell-less endpoint-initiated protocol for storage devices |
TWI486775B (zh) * | 2013-09-18 | 2015-06-01 | Dexin Corp | 輸入裝置及其資料傳輸方法 |
US9535870B2 (en) | 2013-09-18 | 2017-01-03 | HGST Netherlands B.V. | Acknowledgement-less protocol for solid state drive interface |
US9778859B2 (en) | 2013-09-18 | 2017-10-03 | Western Digital Technologies, Inc. | Doorless protocol having multiple queue read requests in flight |
US20160232103A1 (en) * | 2013-09-26 | 2016-08-11 | Mark A. Schmisseur | Block storage apertures to persistent memory |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
CN103559156B (zh) * | 2013-11-11 | 2016-04-06 | 北京大学 | 一种fpga与计算机之间的通信*** |
US9529710B1 (en) * | 2013-12-06 | 2016-12-27 | Western Digital Technologies, Inc. | Interleaved channels in a solid-state drive |
CN103744744B (zh) * | 2014-02-08 | 2017-08-25 | 威盛电子股份有限公司 | 数据储存装置以及易失性存储器的数据校验方法 |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9666244B2 (en) | 2014-03-01 | 2017-05-30 | Fusion-Io, Inc. | Dividing a storage procedure |
US9423979B2 (en) | 2014-03-10 | 2016-08-23 | Kabushiki Kaisha Toshiba | Memory system and memory controller for determining whether one or plurality of pointers can be stored in a second buffer and for executing data transfer between data buffer and host using the pointers |
US9337869B2 (en) * | 2014-04-30 | 2016-05-10 | Storart Technology Co. Ltd. | Encoding and syndrome computing co-design circuit for BCH code and method for deciding the same |
WO2015173853A1 (ja) * | 2014-05-12 | 2015-11-19 | 株式会社日立製作所 | 情報処理装置、その処理方法、及び入出力装置 |
KR102211709B1 (ko) | 2014-05-19 | 2021-02-02 | 삼성전자주식회사 | 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법 |
US9460019B2 (en) | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
US9477631B2 (en) * | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
JP2016014972A (ja) * | 2014-07-01 | 2016-01-28 | 富士通株式会社 | 通信制御装置,ストレージ装置及び通信制御プログラム |
US10146482B2 (en) | 2014-08-01 | 2018-12-04 | Toshiba Memory Corporation | Global error recovery system |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
JP2016057876A (ja) * | 2014-09-10 | 2016-04-21 | 富士通株式会社 | 情報処理装置、入出力制御プログラム、及び入出力制御方法 |
US9582201B2 (en) | 2014-09-26 | 2017-02-28 | Western Digital Technologies, Inc. | Multi-tier scheme for logical storage management |
TWI556254B (zh) * | 2014-10-14 | 2016-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料存取方法 |
US9632702B2 (en) | 2014-10-15 | 2017-04-25 | International Business Machines Corporation | Efficient initialization of a thinly provisioned storage array |
KR20160051367A (ko) * | 2014-11-03 | 2016-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US9712619B2 (en) | 2014-11-04 | 2017-07-18 | Pavilion Data Systems, Inc. | Virtual non-volatile memory express drive |
US9565269B2 (en) | 2014-11-04 | 2017-02-07 | Pavilion Data Systems, Inc. | Non-volatile memory express over ethernet |
KR101620260B1 (ko) * | 2015-01-12 | 2016-05-12 | 엘지전자 주식회사 | 네트워크 시스템 및 그 제어방법 |
US9933950B2 (en) | 2015-01-16 | 2018-04-03 | Sandisk Technologies Llc | Storage operation interrupt |
CN109471812B (zh) * | 2015-01-19 | 2023-09-05 | 铠侠股份有限公司 | 存储装置及非易失性存储器的控制方法 |
US10175885B2 (en) | 2015-01-19 | 2019-01-08 | Toshiba Memory Corporation | Memory device managing data in accordance with command and non-transitory computer readable recording medium |
WO2016122602A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Systems and methods for sharing non-volatile memory between multiple access models |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
KR102364381B1 (ko) * | 2015-03-06 | 2022-02-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
KR102309798B1 (ko) * | 2015-04-16 | 2021-10-06 | 삼성전자주식회사 | Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법 |
CN104811235B (zh) * | 2015-05-13 | 2018-07-06 | 朱洋 | 双架构的直升机远程通信域互动装置 |
JP6205386B2 (ja) * | 2015-05-18 | 2017-09-27 | 長瀬産業株式会社 | 半導体装置及び情報書込/読出方法 |
US10169258B2 (en) | 2015-06-09 | 2019-01-01 | Rambus Inc. | Memory system design using buffer(s) on a mother board |
US9547441B1 (en) * | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
CN108292279A (zh) * | 2015-08-24 | 2018-07-17 | Src实验室有限责任公司 | 用包含与存储器模块或子***并置的数据维护块的dram存储控制器重新编程可重配置设备时,保留dram数据的***和方法 |
US9578054B1 (en) * | 2015-08-31 | 2017-02-21 | Newman H-R Computer Design, LLC | Hacking-resistant computer design |
US10073652B2 (en) * | 2015-09-24 | 2018-09-11 | International Business Machines Corporation | Performance optimized storage vaults in a dispersed storage network |
US9697320B2 (en) * | 2015-09-24 | 2017-07-04 | Qualcomm Incorporated | Rectilinear macros having non-uniform channel spacing |
US9977623B2 (en) | 2015-10-15 | 2018-05-22 | Sandisk Technologies Llc | Detection of a sequential command stream |
US10467155B2 (en) * | 2015-10-26 | 2019-11-05 | Micron Technology, Inc. | Command packets for the direct control of non-volatile memory channels within a solid state drive |
JP2017084063A (ja) * | 2015-10-27 | 2017-05-18 | Tdk株式会社 | メモリコントローラ、フラッシュメモリシステム及び電源電圧供給制御方法 |
US9996262B1 (en) | 2015-11-09 | 2018-06-12 | Seagate Technology Llc | Method and apparatus to abort a command |
US10572180B1 (en) * | 2015-11-09 | 2020-02-25 | Seagate Technology Llc | Method and apparatus to perform a function level reset in a memory controller |
US10282103B1 (en) * | 2015-11-09 | 2019-05-07 | Seagate Technology Llc | Method and apparatus to delete a command queue |
US9792232B2 (en) | 2015-11-16 | 2017-10-17 | International Business Machines Corporation | Techniques for queueing interrupts in a data processing system |
US10210298B2 (en) | 2015-11-24 | 2019-02-19 | Altera Corporation | Embedded memory blocks with adjustable memory boundaries |
KR102446677B1 (ko) | 2015-11-26 | 2022-09-23 | 삼성전자주식회사 | 스토리지 컨트롤러의 동작 방법 및 상기 스토리지 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법 |
US10817528B2 (en) * | 2015-12-15 | 2020-10-27 | Futurewei Technologies, Inc. | System and method for data warehouse engine |
CN108475240A (zh) * | 2016-01-13 | 2018-08-31 | 慧与发展有限责任合伙企业 | 重构的输入/输出请求 |
JP6544246B2 (ja) * | 2016-01-15 | 2019-07-17 | 富士通株式会社 | 不揮発性ストレージおよび不揮発性ストレージの処理方法 |
US9946596B2 (en) | 2016-01-29 | 2018-04-17 | Toshiba Memory Corporation | Global error recovery system |
US9817586B2 (en) * | 2016-02-23 | 2017-11-14 | Samsung Electronics Co., Ltd. | Method of application aware IO completion mode changer for key value device |
US10198315B2 (en) | 2016-02-29 | 2019-02-05 | Sandisk Technologies Llc | Non-volatile memory with corruption recovery |
US10192633B2 (en) * | 2016-03-01 | 2019-01-29 | Intel Corporation | Low cost inbuilt deterministic tester for SOC testing |
TWI610171B (zh) * | 2016-03-22 | 2018-01-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US10191358B2 (en) * | 2016-04-13 | 2019-01-29 | Angela Jorgensen | Moving head projector system |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
TWI592864B (zh) * | 2016-06-21 | 2017-07-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US20180046409A1 (en) * | 2016-08-10 | 2018-02-15 | International Business Machines Corporation | Mass storage devices packages and software-defined arrays of such packages |
US10445018B2 (en) | 2016-09-09 | 2019-10-15 | Toshiba Memory Corporation | Switch and memory device |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11250056B1 (en) * | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
KR20180064588A (ko) * | 2016-12-05 | 2018-06-15 | 에스케이하이닉스 주식회사 | 메모리 제어 장치 및 방법 |
JP6667629B2 (ja) | 2016-12-29 | 2020-03-18 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 記憶システムおよびソリッドステートディスク |
CN107102818A (zh) * | 2017-03-16 | 2017-08-29 | 山东大学 | 一种基于sd卡的高速数据存储方法 |
US20180321855A1 (en) * | 2017-05-03 | 2018-11-08 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
US9905294B1 (en) | 2017-05-03 | 2018-02-27 | Seagate Technology Llc | Writing logically offset pages of data to N-level memory cells coupled to a common word line |
CN107256363B (zh) * | 2017-06-13 | 2020-03-06 | 杭州华澜微电子股份有限公司 | 一种由加解密模块阵列组成的高速加解密装置 |
US10606484B2 (en) * | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
JP7105870B2 (ja) * | 2017-08-10 | 2022-07-25 | 華為技術有限公司 | データアクセス方法、装置およびシステム |
US11609623B2 (en) | 2017-09-01 | 2023-03-21 | Qualcomm Incorporated | Ultra-low power neuromorphic artificial intelligence computing accelerator |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
TWI685847B (zh) * | 2017-10-12 | 2020-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置之非揮發式記憶體的命名空間規劃 |
CN109656833B (zh) | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
US10908832B2 (en) * | 2017-10-31 | 2021-02-02 | Micron Technology, Inc. | Common pool management |
CN107728953B (zh) * | 2017-11-03 | 2021-03-02 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘混合读写性能的方法 |
CN107943726A (zh) * | 2017-11-16 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种基于PCIe接口的数据传输***及方法 |
DE102018123494A1 (de) | 2017-11-17 | 2019-05-23 | Samsung Electronics Co., Ltd. | Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür |
CN108092730B (zh) * | 2017-12-27 | 2019-04-26 | 中国电子科技集团公司第五十四研究所 | 一种适用于多设备的时序控制方法 |
US10628359B2 (en) * | 2018-03-01 | 2020-04-21 | EMC IP Holding Company LLC | Storage management system and method |
KR101936951B1 (ko) | 2018-04-11 | 2019-01-11 | 주식회사 맴레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
EP3573030B1 (en) * | 2018-05-23 | 2023-10-11 | Diebold Nixdorf Systems GmbH | System and method to control the access on information of a peripheral storage device |
KR102560251B1 (ko) | 2018-06-20 | 2023-07-26 | 삼성전자주식회사 | 반도체 장치 및 반도체 시스템 |
US10884662B2 (en) * | 2018-08-06 | 2021-01-05 | Silicon Motion, Inc. | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
US11574659B2 (en) * | 2018-09-11 | 2023-02-07 | Micron Technology, Inc. | Parallel access to volatile memory by a processing device for machine learning |
US10725686B2 (en) * | 2018-09-28 | 2020-07-28 | Burlywood, Inc. | Write stream separation into multiple partitions |
KR102576373B1 (ko) | 2018-09-28 | 2023-09-07 | 에스케이하이닉스 주식회사 | 저장 공간을 동적으로 할당하는 제어 장치 및 이를 포함하는 데이터 저장 장치 |
CN110968449A (zh) * | 2018-09-28 | 2020-04-07 | 方一信息科技(上海)有限公司 | 用于多通道闪存控制器的bch ecc纠错资源共享***及方法 |
US10817430B2 (en) * | 2018-10-02 | 2020-10-27 | Micron Technology, Inc. | Access unit and management segment memory operations |
KR20200053204A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 |
US10871907B2 (en) | 2018-12-31 | 2020-12-22 | Micron Technology, Inc. | Sequential data optimized sub-regions in storage devices |
CN109979498A (zh) * | 2019-01-24 | 2019-07-05 | 深圳市景阳信息技术有限公司 | 磁盘视频数据写入、读取的方法及装置 |
CN110046114B (zh) * | 2019-03-06 | 2020-08-14 | 上海熠知电子科技有限公司 | 基于pcie协议的dma控制器及dma数据传输方法 |
CN109933291B (zh) * | 2019-03-20 | 2022-05-06 | 浪潮商用机器有限公司 | 一种sram数据的处理方法、装置、设备及存储介质 |
JP7074705B2 (ja) * | 2019-03-20 | 2022-05-24 | キオクシア株式会社 | メモリ装置及びメモリ装置の制御方法 |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
CN110209606B (zh) * | 2019-04-30 | 2021-01-22 | 杭州电子科技大学 | 一种基于PCIe的多接口存储设备的控制方法 |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
CN110235111B (zh) * | 2019-04-30 | 2020-06-26 | 长江存储科技有限责任公司 | 电子设备和管理闪存的读取电平的方法 |
EP3915030B1 (en) * | 2019-04-30 | 2023-10-18 | Hewlett-Packard Development Company, L.P. | Storage of network credentials |
KR20200134784A (ko) * | 2019-05-23 | 2020-12-02 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
CN110175056B (zh) * | 2019-05-30 | 2022-02-11 | 西安微电子技术研究所 | 一种异构平台远程动态加载多目标fpga的控制装置及控制方法 |
KR20200142219A (ko) | 2019-06-12 | 2020-12-22 | 삼성전자주식회사 | 전자 장치 및 그의 저장 공간 이용 방법 |
KR20210012305A (ko) * | 2019-07-24 | 2021-02-03 | 삼성전자주식회사 | 집적회로 장치, 시스템 온 칩 및 패킷 처리 방법 |
CN112394887A (zh) * | 2019-08-17 | 2021-02-23 | 森大(深圳)技术有限公司 | Onepass打印数据高效率处理方法、装置、设备及存储介质 |
CN110673989B (zh) * | 2019-08-27 | 2023-05-16 | 国网浙江省电力有限公司电力科学研究院 | 一种背板***的子板卡识别装置与方法 |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
KR20210054187A (ko) * | 2019-11-05 | 2021-05-13 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 장치 및 메모리 시스템의 동작 방법 |
US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
US11892956B2 (en) * | 2019-12-31 | 2024-02-06 | Micron Technology, Inc. | Performance of memory system background operations |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
KR20210156985A (ko) | 2020-06-19 | 2021-12-28 | 삼성전자주식회사 | 일 함수 층들을 갖는 반도체 소자들 |
KR20210158607A (ko) | 2020-06-24 | 2021-12-31 | 삼성전자주식회사 | 캡핑층을 포함하는 반도체 소자 |
KR20210158615A (ko) | 2020-06-24 | 2021-12-31 | 삼성전자주식회사 | 게이트 라인을 포함하는 집적회로 소자 |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
KR20220067872A (ko) * | 2020-11-18 | 2022-05-25 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US11513980B2 (en) * | 2021-01-21 | 2022-11-29 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device with aid of universal asynchronous receiver-transmitter connection |
US20220350933A1 (en) * | 2021-04-29 | 2022-11-03 | EMC IP Holding Company LLC | Methods and systems for securing data in a distributed storage system |
US20230008974A1 (en) * | 2021-07-08 | 2023-01-12 | Toshiba Global Commerce Solutions Holdings Corporation | Methods, systems, and computer program products configured to provide consistent look and feel for user input |
CN115843379A (zh) * | 2021-07-21 | 2023-03-24 | 美光科技公司 | 用来改进顺序存储器命令性能的存储器命令聚合 |
US20230120600A1 (en) * | 2021-10-20 | 2023-04-20 | Western Digital Technologies, Inc. | Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices |
KR102385572B1 (ko) | 2021-11-02 | 2022-04-13 | 삼성전자주식회사 | 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN116501670A (zh) * | 2022-01-18 | 2023-07-28 | 联发科技(新加坡)私人有限公司 | 传感装置的中断处理方法及其集成电路 |
US20230266897A1 (en) * | 2022-02-24 | 2023-08-24 | Micron Technology, Inc. | Dynamic zone group configuration at a memory sub-system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002055878A (ja) * | 2000-08-09 | 2002-02-20 | Sony Corp | データ蓄積装置 |
JP2004514962A (ja) * | 2000-08-17 | 2004-05-20 | サンディスク コーポレイション | ホストと順次通信する複数の取り外し可能な不揮発性メモリ・カード |
JP2007102760A (ja) * | 2005-10-03 | 2007-04-19 | Hitachi Ltd | ストレージエリアネットワークにおけるボリュームの自動割り当て |
JP2007323224A (ja) * | 2006-05-31 | 2007-12-13 | Hitachi Ltd | フラッシュメモリストレージシステム |
JP2008102819A (ja) * | 2006-10-20 | 2008-05-01 | Hitachi Ltd | 記憶装置及び記憶方法 |
US20090037652A1 (en) * | 2003-12-02 | 2009-02-05 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
Family Cites Families (163)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4449182A (en) * | 1981-10-05 | 1984-05-15 | Digital Equipment Corporation | Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems |
US4777595A (en) | 1982-05-07 | 1988-10-11 | Digital Equipment Corporation | Apparatus for transferring blocks of information from one node to a second node in a computer network |
DE69024086T2 (de) * | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
JPH0398972A (ja) * | 1989-09-08 | 1991-04-24 | Mitsubishi Electric Corp | エレベータの制御装置 |
US5663901A (en) | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
EP0610677A3 (en) * | 1993-02-12 | 1995-08-02 | Ibm | Communication device management module operating in two modes. |
US5619687A (en) * | 1994-02-22 | 1997-04-08 | Motorola Inc. | Queue system having a time-out feature and method therefor |
JPH07234764A (ja) * | 1994-02-22 | 1995-09-05 | Toshiba Corp | スケジューラ |
JP3209634B2 (ja) * | 1994-03-28 | 2001-09-17 | 株式会社日立製作所 | 計算機システム |
JP3561002B2 (ja) * | 1994-05-18 | 2004-09-02 | 富士通株式会社 | ディスク装置 |
JPH0997124A (ja) * | 1995-09-29 | 1997-04-08 | Fujitsu Ltd | 電子装置、メモリボード並びにメモリ装着機構 |
US5708814A (en) | 1995-11-21 | 1998-01-13 | Microsoft Corporation | Method and apparatus for reducing the rate of interrupts by generating a single interrupt for a group of events |
JPH09305330A (ja) * | 1996-05-15 | 1997-11-28 | Oki Electric Ind Co Ltd | ディスクアレイ装置 |
JPH10214221A (ja) * | 1997-01-31 | 1998-08-11 | Hitachi Ltd | 制御装置及びメモリシステム |
US6003112A (en) | 1997-06-30 | 1999-12-14 | Intel Corporation | Memory controller and method for clearing or copying memory utilizing register files to store address information |
US5941998A (en) * | 1997-07-25 | 1999-08-24 | Samsung Electronics Co., Ltd. | Disk drive incorporating read-verify after write method |
US7158167B1 (en) | 1997-08-05 | 2007-01-02 | Mitsubishi Electric Research Laboratories, Inc. | Video recording device for a targetable weapon |
US7088387B1 (en) * | 1997-08-05 | 2006-08-08 | Mitsubishi Electric Research Laboratories, Inc. | Video recording device responsive to triggering event |
DE19740525C1 (de) * | 1997-09-15 | 1999-02-04 | Siemens Ag | Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug |
JP3534585B2 (ja) | 1997-10-21 | 2004-06-07 | 株式会社日立製作所 | フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置 |
US6009478A (en) * | 1997-11-04 | 1999-12-28 | Adaptec, Inc. | File array communications interface for communicating between a host computer and an adapter |
US6175900B1 (en) * | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
NL1011442C2 (nl) * | 1998-03-26 | 1999-09-28 | Franciscus Hubertus Johannes M | Frontwerktuigbesturing. |
US6172676B1 (en) * | 1998-07-17 | 2001-01-09 | International Business Machines Corporation | Method and computer program product for implementing multiple drag and drop operations for large objects without blocking an operating system interface |
US6313522B1 (en) * | 1998-08-28 | 2001-11-06 | Micron Technology, Inc. | Semiconductor structure having stacked semiconductor devices |
JP2000357125A (ja) * | 1999-06-16 | 2000-12-26 | Matsushita Electric Ind Co Ltd | バッファメモリ制御方法及び制御装置 |
US6866581B2 (en) * | 1999-09-24 | 2005-03-15 | Igt | Video gaming apparatus for wagering with universal computerized controller and I/O interface for unique architecture |
US6757797B1 (en) * | 1999-09-30 | 2004-06-29 | Fujitsu Limited | Copying method between logical disks, disk-storage system and its storage medium |
US6678463B1 (en) * | 2000-08-02 | 2004-01-13 | Opentv | System and method for incorporating previously broadcast content into program recording |
US8250617B2 (en) * | 1999-10-29 | 2012-08-21 | Opentv, Inc. | System and method for providing multi-perspective instant replay |
US7000245B1 (en) * | 1999-10-29 | 2006-02-14 | Opentv, Inc. | System and method for recording pushed data |
DK1224806T3 (da) | 1999-10-29 | 2004-02-16 | Opentv Corp | System og en metode til optagelse af "pushed" dataindhold |
US20020053004A1 (en) * | 1999-11-19 | 2002-05-02 | Fong Pong | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links |
US7024695B1 (en) * | 1999-12-30 | 2006-04-04 | Intel Corporation | Method and apparatus for secure remote system management |
US8266367B2 (en) | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US20050160218A1 (en) | 2004-01-20 | 2005-07-21 | Sun-Teck See | Highly integrated mass storage device with an intelligent flash controller |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US6317330B1 (en) | 2000-02-15 | 2001-11-13 | Bitmicro Networks, Inc. | Printed circuit board assembly |
US6434660B1 (en) | 2000-05-23 | 2002-08-13 | Centennial Technologies, Inc. | Emulating one tape protocol of flash memory to a different type protocol of flash memory |
US6772273B1 (en) * | 2000-06-29 | 2004-08-03 | Intel Corporation | Block-level read while write method and apparatus |
IL137085A (en) * | 2000-06-29 | 2004-08-31 | Eci Telecom Ltd | Method for effective utilizing of shared resources in computerized systems |
US7104804B2 (en) | 2000-07-03 | 2006-09-12 | Advanced Interconnect Solutions | Method and apparatus for memory module circuit interconnection |
JP2002023962A (ja) * | 2000-07-07 | 2002-01-25 | Fujitsu Ltd | ディスク装置及び制御方法 |
CA2398200C (en) | 2000-08-02 | 2011-04-26 | Opentv, Inc. | System and method for providing multi-perspective instant replay |
US6640274B1 (en) | 2000-08-21 | 2003-10-28 | Intel Corporation | Method and apparatus for reducing the disk drive data transfer interrupt service latency penalty |
US6865631B2 (en) * | 2000-12-14 | 2005-03-08 | International Business Machines Corporation | Reduction of interrupts in remote procedure calls |
US6931498B2 (en) * | 2001-04-03 | 2005-08-16 | Intel Corporation | Status register architecture for flexible read-while-write device |
US20020178307A1 (en) * | 2001-05-25 | 2002-11-28 | Pua Khein Seng | Multiple memory card adapter |
US6781914B2 (en) * | 2001-08-23 | 2004-08-24 | Winbond Electronics Corp. | Flash memory having a flexible bank partition |
ITRM20010524A1 (it) | 2001-08-30 | 2003-02-28 | Micron Technology Inc | Struttura a schiera di memoria flash. |
US7631084B2 (en) | 2001-11-02 | 2009-12-08 | Juniper Networks, Inc. | Method and system for providing secure access to private networks with client redirection |
KR100449708B1 (ko) | 2001-11-16 | 2004-09-22 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
JP3802411B2 (ja) * | 2001-12-20 | 2006-07-26 | 株式会社東芝 | 不揮発性半導体記憶装置のデータコピー方法 |
US6938188B1 (en) * | 2002-01-29 | 2005-08-30 | Advanced Digital Information Corporation | Method for verifying functional integrity of computer hardware, particularly data storage devices |
US6854022B1 (en) * | 2002-02-22 | 2005-02-08 | Western Digital Technologies, Inc. | Disk drive using rotational position optimization algorithm to facilitate write verify operations |
US7080245B2 (en) | 2002-05-23 | 2006-07-18 | Hewlett-Packard Development Company, L.P. | Method and system of switching between two or more images of firmware on a host device |
US7114051B2 (en) | 2002-06-01 | 2006-09-26 | Solid State System Co., Ltd. | Method for partitioning memory mass storage device |
US20040078729A1 (en) * | 2002-06-26 | 2004-04-22 | Siemens Aktiengesellschaft | Method, computer, and computer program for detecting a bad block on a hard disk |
JP2004071033A (ja) | 2002-08-05 | 2004-03-04 | Mitsubishi Electric Corp | フラッシュメモリのデータ記録法 |
DE60204687T2 (de) * | 2002-09-06 | 2006-05-18 | Sun Microsystems, Inc., Santa Clara | Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird |
US7137118B2 (en) | 2002-09-27 | 2006-11-14 | Texas Instruments Incorporated | Data synchronization hardware primitive in an embedded symmetrical multiprocessor computer |
US7296213B2 (en) | 2002-12-11 | 2007-11-13 | Nvidia Corporation | Error correction cache for flash memory |
US6901461B2 (en) * | 2002-12-31 | 2005-05-31 | Intel Corporation | Hardware assisted ATA command queuing |
CN1432929A (zh) * | 2003-02-14 | 2003-07-30 | 威盛电子股份有限公司 | 多微处理器***内响应中断服务要求的仲裁结构及方法 |
JP4165747B2 (ja) * | 2003-03-20 | 2008-10-15 | 株式会社日立製作所 | 記憶システム、制御装置及び制御装置のプログラム |
US7136938B2 (en) * | 2003-03-27 | 2006-11-14 | International Business Machines Corporation | Command ordering based on dependencies |
KR100543447B1 (ko) * | 2003-04-03 | 2006-01-23 | 삼성전자주식회사 | 에러정정기능을 가진 플래쉬메모리장치 |
US7320100B2 (en) * | 2003-05-20 | 2008-01-15 | Cray Inc. | Apparatus and method for memory with bit swapping on the fly and testing |
US7159104B2 (en) * | 2003-05-20 | 2007-01-02 | Nvidia Corporation | Simplified memory detection |
US7200688B2 (en) * | 2003-05-29 | 2007-04-03 | International Business Machines Corporation | System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command |
JP4653960B2 (ja) * | 2003-08-07 | 2011-03-16 | ルネサスエレクトロニクス株式会社 | メモリカードおよび不揮発性メモリ混載マイコン |
CN2662316Y (zh) * | 2003-11-28 | 2004-12-08 | 中国科学院空间科学与应用研究中心 | 嵌入式计算机***用的***主板 |
US8176238B2 (en) | 2003-12-02 | 2012-05-08 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US7865809B1 (en) * | 2004-03-11 | 2011-01-04 | Super Talent Electronics, Inc. | Data error detection and correction in non-volatile memory devices |
JP2005190106A (ja) * | 2003-12-25 | 2005-07-14 | Hitachi Ltd | 論理ボリュームを管理する記憶制御サブシステム |
US7370230B1 (en) | 2004-01-08 | 2008-05-06 | Maxtor Corporation | Methods and structure for error correction in a processor pipeline |
US8108870B2 (en) | 2004-01-29 | 2012-01-31 | Klingman Edwin E | Intelligent memory device having ASCII-named task registers mapped to addresses of a task |
US7127549B2 (en) * | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
US7984316B2 (en) * | 2004-02-24 | 2011-07-19 | Paul Kaler | Solid state disk with hot-swappable components |
US7328304B2 (en) * | 2004-02-27 | 2008-02-05 | Intel Corporation | Interface for a block addressable mass storage system |
CA2557641A1 (en) * | 2004-02-27 | 2005-09-15 | Tigi Corporation | System and method for data manipulation |
US7406572B1 (en) * | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
US20080147931A1 (en) * | 2006-10-17 | 2008-06-19 | Smart Modular Technologies, Inc. | Data striping to flash memory |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US7205532B2 (en) * | 2004-08-24 | 2007-04-17 | Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. | Integrated ball grid array optical mouse sensor packaging |
US20060053308A1 (en) | 2004-09-08 | 2006-03-09 | Raidy 2 Go Ltd. | Secured redundant memory subsystem |
US7283074B2 (en) | 2004-09-21 | 2007-10-16 | Telegent Systems, Inc. | Pilot-tone calibration for time-interleaved analog-to-digital converters |
KR100667780B1 (ko) * | 2004-11-22 | 2007-01-11 | 삼성전자주식회사 | 검정 방법, 기록/재생 장치 및 정보 저장 매체 |
US7730257B2 (en) | 2004-12-16 | 2010-06-01 | Broadcom Corporation | Method and computer program product to increase I/O write performance in a redundant array |
KR100621631B1 (ko) * | 2005-01-11 | 2006-09-13 | 삼성전자주식회사 | 반도체 디스크 제어 장치 |
JP2006195569A (ja) * | 2005-01-11 | 2006-07-27 | Sony Corp | 記憶装置 |
US7562366B2 (en) | 2005-02-03 | 2009-07-14 | Solarflare Communications, Inc. | Transmit completion event batching |
WO2006085323A2 (en) * | 2005-02-11 | 2006-08-17 | Sandisk Il Ltd. | Appliance with communication protocol emulation |
TWI266988B (en) | 2005-03-01 | 2006-11-21 | Sunplus Technology Co Ltd | Method and system for accessing A/V data in computer apparatus |
US20060211388A1 (en) * | 2005-03-07 | 2006-09-21 | Lambert Grady D | Stackable printed circuit boards |
US7225289B2 (en) | 2005-03-14 | 2007-05-29 | Phison Electronics Corporation | Virtual IDE storage with PCI express interface |
US20080126658A1 (en) * | 2006-05-28 | 2008-05-29 | Phison Electronics Corp. | Inlayed flash memory module |
US7822912B2 (en) | 2005-03-14 | 2010-10-26 | Phision Electronics Corp. | Flash storage chip and flash array storage system |
JP2007004775A (ja) * | 2005-05-23 | 2007-01-11 | Toshiba Corp | 半導体メモリカード |
KR100690804B1 (ko) | 2005-06-13 | 2007-03-09 | 엘지전자 주식회사 | 휴대단말기의 메모리 정리 방법 |
TWI319160B (en) * | 2005-07-11 | 2010-01-01 | Via Tech Inc | Memory card capable of supporting various voltage supply and control chip and method of supporting voltage thereof |
US7660306B1 (en) | 2006-01-12 | 2010-02-09 | Chelsio Communications, Inc. | Virtualizing the operation of intelligent network interface circuitry |
US7778069B2 (en) * | 2005-10-17 | 2010-08-17 | Renesas Technology Corp. | Semiconductor device and its fabrication method |
CN101346703B (zh) | 2005-12-21 | 2012-11-21 | Nxp股份有限公司 | 具有可块擦除单元的非易失性存储器 |
EP1966699A2 (en) | 2005-12-22 | 2008-09-10 | Nxp B.V. | Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information |
WO2007079534A1 (en) | 2006-01-12 | 2007-07-19 | Para Kanagasabai Segaram | A subsystem for computing devices |
US7549021B2 (en) * | 2006-02-22 | 2009-06-16 | Seagate Technology Llc | Enhanced data integrity using parallel volatile and non-volatile transfer buffers |
WO2007096844A2 (en) | 2006-02-27 | 2007-08-30 | Nxp B.V. | Memory with block-erasable locations |
JP2007257791A (ja) | 2006-03-24 | 2007-10-04 | Fujitsu Ltd | 半導体記憶装置 |
JP4135747B2 (ja) * | 2006-04-06 | 2008-08-20 | ソニー株式会社 | データ処理装置及びフラッシュメモリへのアクセス方法 |
US20070271495A1 (en) | 2006-05-18 | 2007-11-22 | Ian Shaeffer | System to detect and identify errors in control information, read data and/or write data |
CN100433697C (zh) * | 2006-06-01 | 2008-11-12 | 东南大学 | 多通道高速数据处理器及处理方法 |
US7613876B2 (en) * | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
US7506098B2 (en) | 2006-06-08 | 2009-03-17 | Bitmicro Networks, Inc. | Optimized placement policy for solid state storage devices |
WO2007146845A2 (en) | 2006-06-08 | 2007-12-21 | Bitmicro Networks, Inc. | Configurable and scalable hybrid multi-tiered caching storage system |
TW200805394A (en) * | 2006-07-07 | 2008-01-16 | Alcor Micro Corp | Memory storage device and the read/write method thereof |
US8140738B2 (en) * | 2006-07-20 | 2012-03-20 | Stmicroelectronics Pvt. Ltd. | Flash memory interface device |
US7487428B2 (en) * | 2006-07-24 | 2009-02-03 | Kingston Technology Corp. | Fully-buffered memory-module with error-correction code (ECC) controller in serializing advanced-memory buffer (AMB) that is transparent to motherboard memory controller |
US7827346B2 (en) | 2006-08-14 | 2010-11-02 | Plankton Technologies, Llc | Data storage device |
US7539842B2 (en) * | 2006-08-15 | 2009-05-26 | International Business Machines Corporation | Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables |
CN100573435C (zh) | 2006-08-18 | 2009-12-23 | 福昭科技(深圳)有限公司 | 一种基于闪存记忆体的大容量存储装置 |
US7904639B2 (en) | 2006-08-22 | 2011-03-08 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
KR20080017982A (ko) * | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 프로그램 방법 |
US7730269B2 (en) * | 2006-08-29 | 2010-06-01 | International Business Machines Corporation | Load management to reduce communication signaling latency in a virtual machine environment |
JP2008065575A (ja) * | 2006-09-07 | 2008-03-21 | Fuji Xerox Co Ltd | 拡張メモリ装置、及びメモリ拡張システム |
CN101118783A (zh) * | 2006-09-07 | 2008-02-06 | 晶天电子(深圳)有限公司 | 带有闪存坏块控制***的电子数据闪存卡 |
JP4452261B2 (ja) | 2006-09-12 | 2010-04-21 | 株式会社日立製作所 | ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム |
US20080077727A1 (en) * | 2006-09-25 | 2008-03-27 | Baca Jim S | Multithreaded state machine in non-volatile memory devices |
US8051253B2 (en) * | 2006-09-28 | 2011-11-01 | Virident Systems, Inc. | Systems and apparatus with programmable memory control for heterogeneous main memory |
US7587575B2 (en) | 2006-10-17 | 2009-09-08 | International Business Machines Corporation | Communicating with a memory registration enabled adapter using cached address translations |
WO2008070813A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US7660911B2 (en) | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
US7668177B1 (en) | 2006-12-28 | 2010-02-23 | Qlogic, Corporation | Method and system for quality of service in host bus adapters |
KR100813630B1 (ko) * | 2007-02-07 | 2008-03-14 | 삼성전자주식회사 | 독출 성능을 향상할 수 있는 플래시 메모리 시스템 및그것의 독출 방법 |
US20080209157A1 (en) * | 2007-02-27 | 2008-08-28 | Inventec Corporation | Memory partitioning method |
JP5224706B2 (ja) | 2007-03-23 | 2013-07-03 | キヤノン株式会社 | 記憶装置及び記憶装置の制御方法 |
JP4781373B2 (ja) * | 2007-05-14 | 2011-09-28 | 株式会社バッファロー | 記憶装置 |
JP2008287404A (ja) | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
JP2008293096A (ja) | 2007-05-22 | 2008-12-04 | Shinko Electric Ind Co Ltd | メモリインタフェースおよびメモリシステム |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
WO2008147752A1 (en) | 2007-05-24 | 2008-12-04 | Sandisk Corporation | Managing housekeeping operations in flash memory |
KR20080105390A (ko) | 2007-05-30 | 2008-12-04 | 삼성전자주식회사 | 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치 |
US8040710B2 (en) | 2007-05-31 | 2011-10-18 | Qimonda Ag | Semiconductor memory arrangement |
US7898813B2 (en) * | 2007-06-25 | 2011-03-01 | Kabushiki Kaisha Toshiba | Semiconductor memory device and semiconductor memory card using the same |
US20090006720A1 (en) | 2007-06-27 | 2009-01-01 | Shai Traister | Scheduling phased garbage collection and house keeping operations in a flash memory system |
US8001444B2 (en) | 2007-08-08 | 2011-08-16 | Intel Corporation | ECC functional block placement in a multi-channel mass storage device |
US7639165B2 (en) | 2007-08-10 | 2009-12-29 | Marvell World Trade Ltd. | Calibrating replica digital-to-analog converters |
JP4977554B2 (ja) | 2007-08-22 | 2012-07-18 | 株式会社日立製作所 | キャッシュメモリ上のデータをバックアップする機能を備えたストレージシステム |
KR101466694B1 (ko) | 2007-08-28 | 2014-11-28 | 삼성전자주식회사 | Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법 |
US8082482B2 (en) | 2007-08-31 | 2011-12-20 | International Business Machines Corporation | System for performing error correction operations in a memory hub device of a memory module |
US8086936B2 (en) | 2007-08-31 | 2011-12-27 | International Business Machines Corporation | Performing error correction at a memory device level that is transparent to a memory channel |
US20090063895A1 (en) | 2007-09-04 | 2009-03-05 | Kurt Smith | Scaleable and maintainable solid state drive |
US20090125790A1 (en) | 2007-11-13 | 2009-05-14 | Mcm Portfolio Llc | Method and Apparatus of Automatically Selecting Error Correction Algorithms by a NAND Flash Controller |
TWI384488B (zh) | 2007-12-24 | 2013-02-01 | Skymedi Corp | Nonvolatile storage device and its data writing method |
US20100049914A1 (en) * | 2008-08-20 | 2010-02-25 | Goodwin Paul M | RAID Enhanced solid state drive |
US8266365B2 (en) | 2008-12-17 | 2012-09-11 | Sandisk Il Ltd. | Ruggedized memory device |
US8566508B2 (en) | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US20100262979A1 (en) | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
WO2010137178A1 (en) | 2009-05-25 | 2010-12-02 | Hitachi,Ltd. | Storage subsystem |
WO2011007459A1 (ja) | 2009-07-17 | 2011-01-20 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
-
2009
- 2009-08-07 US US12/537,748 patent/US8566508B2/en active Active
- 2009-08-07 US US12/537,733 patent/US8380909B2/en active Active
- 2009-08-07 US US12/537,725 patent/US8239724B2/en active Active
- 2009-08-07 US US12/537,709 patent/US8205037B2/en active Active
- 2009-08-07 US US12/537,741 patent/US8639871B2/en active Active
- 2009-08-07 US US12/537,727 patent/US8250271B2/en active Active
- 2009-08-07 US US12/537,704 patent/US8566507B2/en active Active
- 2009-08-07 US US12/537,738 patent/US20100262773A1/en not_active Abandoned
- 2009-08-07 US US12/537,722 patent/US8244962B2/en active Active
- 2009-08-07 US US12/537,719 patent/US8578084B2/en active Active
-
2010
- 2010-04-01 AU AU2010234772A patent/AU2010234772B2/en active Active
- 2010-04-01 CN CN201080020319.0A patent/CN102428451B/zh active Active
- 2010-04-01 CN CN2010800205069A patent/CN102428454A/zh active Pending
- 2010-04-01 CN CN201711055987.7A patent/CN107832010A/zh active Pending
- 2010-04-01 JP JP2012504717A patent/JP5657641B2/ja active Active
- 2010-04-01 DE DE202010017668U patent/DE202010017668U1/de not_active Expired - Lifetime
- 2010-04-01 WO PCT/US2010/029679 patent/WO2010117878A1/en active Application Filing
- 2010-04-01 DE DE202010017669U patent/DE202010017669U1/de not_active Expired - Lifetime
- 2010-04-01 JP JP2012504716A patent/JP5922016B2/ja active Active
- 2010-04-01 WO PCT/US2010/029677 patent/WO2010117877A1/en active Application Filing
- 2010-04-01 EP EP14153062.6A patent/EP2728488B1/en active Active
- 2010-04-01 EP EP10712656.7A patent/EP2417528B1/en active Active
- 2010-04-01 AU AU2010234773A patent/AU2010234773B2/en active Active
- 2010-04-01 EP EP10712655.9A patent/EP2417531B1/en active Active
- 2010-04-01 DE DE202010017661U patent/DE202010017661U1/de not_active Expired - Lifetime
- 2010-04-05 CN CN2010800205073A patent/CN102428453A/zh active Pending
- 2010-04-05 AU AU2010234646A patent/AU2010234646A1/en not_active Abandoned
- 2010-04-05 DE DE202010017666U patent/DE202010017666U1/de not_active Expired - Lifetime
- 2010-04-05 EP EP10712865A patent/EP2417530A1/en not_active Withdrawn
- 2010-04-05 JP JP2012504740A patent/JP2012523622A/ja active Pending
- 2010-04-05 CN CN2010800204899A patent/CN102428452A/zh active Pending
- 2010-04-05 WO PCT/US2010/029919 patent/WO2010117930A1/en active Application Filing
- 2010-04-05 JP JP2012504741A patent/JP2012523623A/ja active Pending
- 2010-04-05 EP EP10712863A patent/EP2417533A1/en not_active Withdrawn
- 2010-04-05 JP JP2012504742A patent/JP5347061B2/ja active Active
- 2010-04-05 WO PCT/US2010/029916 patent/WO2010117928A1/en active Application Filing
- 2010-04-05 WO PCT/US2010/029917 patent/WO2010117929A1/en active Application Filing
- 2010-04-05 AU AU2010234648A patent/AU2010234648B2/en active Active
- 2010-04-05 CN CN2010800204884A patent/CN102428455A/zh active Pending
- 2010-04-05 EP EP10712864A patent/EP2417529A1/en not_active Withdrawn
- 2010-04-05 DE DE202010017665U patent/DE202010017665U1/de not_active Expired - Lifetime
- 2010-04-05 AU AU2010234647A patent/AU2010234647B2/en active Active
- 2010-04-05 DE DE202010017667U patent/DE202010017667U1/de not_active Expired - Lifetime
-
2013
- 2013-10-18 US US14/057,703 patent/US20140108708A1/en not_active Abandoned
- 2013-10-21 US US14/059,061 patent/US20140047172A1/en not_active Abandoned
- 2013-11-25 US US14/089,397 patent/US20140156915A1/en not_active Abandoned
-
2014
- 2014-10-09 JP JP2014208104A patent/JP2015046175A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002055878A (ja) * | 2000-08-09 | 2002-02-20 | Sony Corp | データ蓄積装置 |
JP2004514962A (ja) * | 2000-08-17 | 2004-05-20 | サンディスク コーポレイション | ホストと順次通信する複数の取り外し可能な不揮発性メモリ・カード |
US20090037652A1 (en) * | 2003-12-02 | 2009-02-05 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
JP2007102760A (ja) * | 2005-10-03 | 2007-04-19 | Hitachi Ltd | ストレージエリアネットワークにおけるボリュームの自動割り当て |
JP2007323224A (ja) * | 2006-05-31 | 2007-12-13 | Hitachi Ltd | フラッシュメモリストレージシステム |
JP2008102819A (ja) * | 2006-10-20 | 2008-05-01 | Hitachi Ltd | 記憶装置及び記憶方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5347061B2 (ja) | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 | |
US8447918B2 (en) | Garbage collection for failure prediction and repartitioning | |
JP5384576B2 (ja) | 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用 | |
CN107241913B (zh) | 信息处理装置 | |
US8131969B2 (en) | Updating system configuration information | |
US9009437B1 (en) | Techniques for shared data storage provisioning with thin devices | |
KR101841997B1 (ko) | 순응적 존속을 위한 시스템, 방법 및 인터페이스 | |
JP5276218B2 (ja) | リアルタイムでlunをファイルに、またはファイルをlunに変換すること | |
US8924659B2 (en) | Performance improvement in flash memory accesses | |
JP2019057155A (ja) | メモリシステムおよび制御方法 | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
CN112214162A (zh) | 存储装置和控制方法 | |
CN116795735B (zh) | 固态硬盘空间分配方法、装置、介质及*** | |
CN113918087B (zh) | 存储装置以及用于管理存储装置中的命名空间的方法 | |
US20230409217A1 (en) | Contiguous data storage using group identifiers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130326 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130903 |