JP6319607B2 - データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 - Google Patents

データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 Download PDF

Info

Publication number
JP6319607B2
JP6319607B2 JP2016555988A JP2016555988A JP6319607B2 JP 6319607 B2 JP6319607 B2 JP 6319607B2 JP 2016555988 A JP2016555988 A JP 2016555988A JP 2016555988 A JP2016555988 A JP 2016555988A JP 6319607 B2 JP6319607 B2 JP 6319607B2
Authority
JP
Japan
Prior art keywords
logical block
solid state
state disk
logical
write data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016555988A
Other languages
English (en)
Other versions
JP2018502343A (ja
Inventor
培▲軍▼ ▲蒋▼
培▲軍▼ ▲蒋▼
▲強▼ 薛
▲強▼ 薛
克▲驥▼ 黄
克▲驥▼ 黄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018502343A publication Critical patent/JP2018502343A/ja
Application granted granted Critical
Publication of JP6319607B2 publication Critical patent/JP6319607B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の実施形態は記憶技術の分野に関し、詳細には、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法に関する。
Flash Memory(フラッシュメモリ)装置は不揮発性メモリである。フラッシュメモリ装置の記憶媒体は、パワーオフ後にデータが消失しないことを特徴とするフラッシュメモリチップである。従って、フラッシュメモリ装置は、外部または内部メモリとして広く使用される。記憶媒体としてフラッシュメモリチップを使用するフラッシュメモリ装置は、ソリッドステートドライブ(フルネーム:Solid State Drive、略してSSD)としても知られている、ソリッドステートディスク(フルネーム:Solid State Device、略してSSD)であってよく、または別のメモリであってよい。
1つのSSDは一般に、複数のフラッシュメモリチップを含み、ここで、各フラッシュメモリチップはいくつかのブロック(block)を含む。一般に、外部から受信されたデータを格納するとき、SSDはデータを複数のブロックに同時に書き込み、データ処理効率を改善することができる。ガベージコレクション処理を実行するとき、SSDは複数のブロックから有効なデータを取得して、有効なデータを空きブロックに移動する必要があり、このことは書き込み増幅を引き起こす。
本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法を提案し、これらは、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
実施形態の第1の態様はアレイコントローラを提供し、ここで、アレイコントローラは記憶システム内に配置され、記憶システムはソリッドステートディスクをさらに含み、アレイコントローラは、通信インタフェースおよびプロセッサを含み、ここで、通信インタフェースは、ソリッドステートディスクと通信するように構成され、プロセッサは、ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、且つ、プロセッサは、複数の書き込みデータ要求をソリッドステートディスクに送信し、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい。複数の書き込みデータ要求を受信した後、ソリッドステートディスクは、各書き込みデータ要求内の指示情報に従って、指示情報によって指示される論理ブロックに、書き込みデータ要求で搬送されるターゲットデータを書き込む。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
本実施方式では、プロセッサによってソリッドステートディスクに送信される複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用されるため、ソリッドステートディスクは、指示情報に従って、複数の書き込みデータ要求で搬送されるターゲットデータの全てを同じ論理ブロックに書き込み、論理ブロックを埋めることができる。本実施形態では、1つの論理ブロックは1つ以上のブロックを含むため、ターゲットデータは1つ以上のブロックに書き込まれ、且つ、これらのブロックは埋められることを意味する。ガベージコレクションの間、ソリッドステートディスクがブロック内でコレクションを実行することは当業者によって理解されることができる。ターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、ターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、SSDは、有効データを移動することなく、論理ブロック内の全てのブロックからデータを直接消去してよく、それによって、ガベージコレクション中の書き込み増幅を低減する。
第1の態様を参照すると、第1の態様の第1の実施方式では、論理ブロックに含まれるブロックは、異なるチャネル内に配置される。一般に、ソリッドステートディスク内では、チャネル間で同時の読み出しおよび書き込みが実施されてよい。従って、論理ブロックに含まれるブロックが異なるチャネル内に配置されるとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはデータ書き込み効率を改善する。
第1の態様を参照すると、第1の態様の第2の実施方式では、論理ブロックに含まれるブロックは、同じチャネルに属する。いくつかの場合では、また、1つのチャネルにおける複数のブロック間で同時の読み出しおよび書き込みが実施されてもよい。従って、論理ブロックに含まれるブロックが同じチャネルに属するとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはまた、書き込みデータ効率を改善することができる。
第1の態様の前述の実施方式のどちらかを参照すると、第1の態様の第3の実施方式では、論理ブロックは書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。本実施形態では、論理ブロックは、空いている、書き込まれる、埋まっている、悪い、の4つの状態を有する。ソリッドステートディスクは、書き込まれるべき状態における論理ブロックをアレイコントローラに報告し、ここで、データは、書き込まれるべき状態における論理ブロックに直接書き込まれることができる。従って、アレイコントローラによって送信される書き込みデータ要求を受信するとき、ソリッドステートディスクは、書き込みデータ要求で搬送される指示情報に従って、書き込まれるべき状態における論理ブロックにターゲットデータを直接書き込んでよい。
第1の態様の前述の実施方式のいずれか1つを参照すると、第1の態様の第4の実施方式では、論理ブロックの指示情報について、特定の実施方式では、指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子である。指示情報が論理ブロックの識別子であるとき、アレイコントローラによってソリッドステートディスクに送信される各書き込みデータ要求は識別子を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、識別子に対応する論理ブロックを埋めるために、識別子に従って、各書き込みデータ要求内のターゲットデータを識別子に対応する論理ブロックに書き込んでよい。
第1の態様の前述の実施方式のいずれか1つを参照すると、本実施形態は、第1の態様の第4の実施方式の代わりとなる実施方式、すなわち、第1の態様の第5の実施方式をさらに提供し、且つ、本実施方式では、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含む。指示情報が論理アドレス範囲であるとき、アレイコントローラによってソリッドステートディスクに送信される各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、副範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定するとともに、論理ブロックを埋めるために、論理ブロックにターゲットデータを書き込んでよい。
第1の態様の前述の実施方式のいずれか1つを参照すると、第1の態様の第6の実施方式では、アレイコントローラはキャッシュをさらに含み、且つ、プロセッサは、複数個のターゲットデータをキャッシュから読み出すようにさらに構成される。アレイコントローラはキャッシュを含むため、外部データを受信した後、アレイコントローラは、データを記憶用のソリッドステートディスクに直接送信する代わりにデータをキャッシュ内に一時的に格納して、キャッシュ内のデータのサイズが特定の基準値(例えば、論理ブロックのサイズ)に達したときにデータをソリッドステートディスクに送信してよい。
第1の態様の第6の実施方式を参照すると、第1の態様の第7の実施方式では、記憶システムはホストをさらに含み、且つ、アレイコントローラはホストとソリッドステートディスクとの間に配置される。本実施方式では、アレイコントローラはデータをホストから受信して、データをキャッシュに書き込んでよい。
実施形態の第2の態様はソリッドステートディスクを提供し、ここで、ソリッドステートディスクはフラッシュメモリチップおよびソリッドステートディスクコントローラを含み、ここで、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、ソリッドステートディスクコントローラは、論理ブロックに関する情報をアレイコントローラに送信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、加えて、ソリッドステートディスクコントローラは、アレイコントローラによって送信される複数の書き込みデータ要求を受信するようにさらに構成され、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用される。加えて、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、ソリッドステートディスクコントローラは、次いで、各書き込みデータ要求で搬送されるターゲットデータを、指示情報によって指示される論理ブロックに書き込む。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
本実施方式では、ソリッドステートディスクは、論理ブロックに関する情報をアレイコントローラに報告する。論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含む。従って、アレイコントローラは、論理ブロックに関する情報に従って、書き込みデータ要求をソリッドステートディスクに送信してよい。具体的には、アレイコントローラによってソリッドステートディスクに送信される複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用される。従って、ソリッドステートディスクは、指示情報に従って、複数の書き込みデータ要求で搬送されるターゲットデータの全てを同じ論理ブロックに書き込み、論理ブロックを埋めてよい。本実施形態では、1つの論理ブロックは1つ以上のブロックを含むため、ターゲットデータは1つ以上のブロックに書き込まれ、且つ、これらのブロックは埋められることを意味する。ガベージコレクションの間、ソリッドステートディスクがブロック内でコレクションを実行することは当業者によって理解されることができる。ターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、ターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、SSDは、有効データを移動することなく、論理ブロック内の全てのブロックからデータを直接消去してよく、それによって、ガベージコレクション中の書き込み増幅を低減する。
第2の態様を参照すると、第2の態様の第1の実施方式では、論理ブロックに含まれるブロックは、異なるチャネル内に配置される。一般に、ソリッドステートディスク内では、チャネル間で同時の読み出しおよび書き込みが実施されてよい。従って、論理ブロックに含まれるブロックが異なるチャネル内に配置されるとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはデータ書き込み効率を改善する。
第2の態様を参照すると、第2の態様の第2の実施方式では、論理ブロックに含まれるブロックは、同じチャネルに属する。いくつかの場合では、また、1つのチャネルにおける複数のブロック間で同時の読み出しおよび書き込みが実施されてもよい。従って、論理ブロックに含まれるブロックが同じチャネルに属するとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはまた、書き込みデータ効率を改善することができる。
第2の態様の前述の実施方式のどちらかを参照すると、第2の態様の第3の実施方式では、論理ブロックは書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。本実施形態では、論理ブロックは、空いている、書き込まれる、埋まっている、悪い、の4つの状態を有する。ソリッドステートディスクは、書き込まれるべき状態における論理ブロックをアレイコントローラに報告し、ここで、データは、書き込まれるべき状態における論理ブロックに直接書き込まれることができる。従って、アレイコントローラによって送信される書き込みデータ要求を受信するとき、ソリッドステートディスクは、書き込みデータ要求で搬送される指示情報に従って、書き込まれるべき状態における論理ブロックにターゲットデータを直接書き込んでよい。
第2の態様の前述の実施方式のいずれか1つを参照すると、第2の態様の第4の実施方式では、論理ブロックの指示情報について、特定の実施方式では、指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子である。指示情報が論理ブロックの識別子であるとき、ソリッドステートディスクによって受信される各書き込みデータ要求は識別子を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、識別子に対応する論理ブロックを埋めるために、識別子に従って、各書き込みデータ要求内のターゲットデータを識別子に対応する論理ブロックに書き込んでよい。
第2の態様の前述の実施方式のいずれか1つを参照すると、本実施形態は、第2の態様の第4の実施方式の代わりとなる実施方式、すなわち、第2の態様の第5の実施方式をさらに提供し、且つ、本実施方式では、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含む。指示情報が論理アドレス範囲であるとき、ソリッドステートディスクによって受信される各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、副範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定するとともに、論理ブロックを埋めるために、論理ブロックにターゲットデータを書き込んでよい。
第2の態様の第3乃至第5の実施方式を参照すると、第2の態様の第6の実施方式では、ソリッドステートディスクコントローラは、論理ブロックに割り当てられた指示情報を回収するようにさらに構成される。指示情報は書き込まれるべき状態における論理ブロックのみに割り当てられるため、論理ブロックが埋められたとき、論理ブロックの指示情報は、書き込まれるべき状態における別の論理ブロックが使用するために回収されることができる。
第2の態様の前述の実施方式のいずれか1つを参照すると、第2の態様の第7の実施方式では、ソリッドステートディスクコントローラは、具体的には、SCSI WRITEコマンドをアレイコントローラに送信するように構成され、ここで、コマンドはGROUP NUMBERフィールドを含み、且つ、フィールドは論理ブロックの指示情報を搬送するために使用される。本実施方式では、プライベートコマンドは論理ブロックの指示情報を報告するために提供される。従来のSCSIコマンドはGROUP NUMBERフィールドを含まない。本実施形態では、GROUP NUMBERフィールドは、具体的には、論理ブロックの指示情報を報告するためのSCSI WRITEコマンドに追加される。
本発明の実施形態の第3の態様は、データを書き込むようにソリッドステートディスクを制御するための方法を提供し、ここで、方法は、第1の態様で提供されるアレイコントローラに適用される。
本発明の実施形態の第4の態様は、データを書き込むようにソリッドステートディスクを制御するための方法を提供し、ここで、方法は、第2の態様で提供されるアレイコントローラに適用される。
本発明の実施形態の第5の態様は、データを書き込むようにソリッドステートディスクを制御するための装置を提供し、ここで、装置は、第1の態様で提供されるアレイコントローラ内に配置される。
本発明の実施形態の第6の態様は、データを書き込むようにソリッドステートディスクを制御するための装置を提供し、ここで、装置は、第2の態様で提供されるアレイコントローラ内に配置される。
第3の態様乃至第6の態様で提供されるデータを書き込むようにソリッドステートディスクを制御するための方法およびデータを書き込むようにソリッドステートディスクを制御するための装置によると、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントは、1つ以上のブロックを埋めるために、1つ以上のブロックに書き込まれることができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品を提供し、ここで、プログラムコードに含まれる命令は第1の態様におけるアレイコントローラによって実行されてよいとともに、第3の態様における少なくとも1つの方法を実行するために使用される。
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品を提供し、ここで、プログラムコードに含まれる命令は第2の態様におけるアレイコントローラによって実行されてよいとともに、第4の態様における少なくとも1つの方法を実行するために使用される。
本発明の実施形態で提供される前述のコンピュータプログラム製品は、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、実施形態を説明するために必要な、または従来技術における添付図面を簡潔に導入する。明らかに、以下の説明における添付図面は、単に本発明のいくつかの実施形態を示し、且つ、当業者は、創造的努力無しにこれらの添付図面から他の図面をさらに導出することができる。
図1は、本発明の実施形態に係るアプリケーションシナリオの図である。 図2は、本発明の実施形態に係るフラッシュメモリチップの概略図である。 図3は、本発明の実施形態に係るブロックの概略図である。 図4は、本発明の実施形態に係る、従来技術におけるソリッドステートディスクによってデータを格納することの概略図である。 図5は、本発明の実施形態に係る論理ブロックの概略図である。 図6は、本発明の実施形態に係るアレイコントローラの概略構成図である。 図7は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための方法の概略フローチャートである。 図8は、本発明の実施形態に係る、ソリッドステートディスクによってデータを格納することの概略図である。 図9は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための別の方法の概略フローチャートである。 図10は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するためのさらに別の方法の概略フローチャートである。 図11は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための装置の概略構成図である。 図12は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための別の装置の概略構成図である。
本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法を提案し、これらは、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
図1は、本発明の実施形態に係る記憶システムの構成図である。図1に示される記憶システムは、ホスト33、アレイコントローラ11およびソリッドステートディスク22を含む。ホスト33は、サーバまたはデスクトップコンピュータ等の端末デバイスであってよい。
アレイコントローラ11は、ホスト33とソリッドステートディスク22との間に配置されるとともに、コンピューティングデバイス、例えば、サーバまたはデスクトップコンピュータであってよい。オペレーティングシステムおよび別のアプリケーションプログラムは、アレイコントローラ11にインストールされる。アレイコントローラ11は、入力/出力(I/O)要求をホスト33から受信し、I/O要求で搬送されるデータを格納し、特定の条件が満たされたときに、アレイコントローラ11内に格納されるデータをソリッドステートディスク22に書き込んでよい。
ソリッドステートディスク(Solid State Device, SSD)22は、記憶媒体としてフラッシュメモリチップを使用するメモリであり、ソリッドステートドライブ(Solid State Drive, SSD)とも呼ばれ、または別のメモリを含んでよい。本実施形態では、ソリッドステートディスク22は、例としてSSDを使用することによって説明される。
図1は説明のための例示でしかないとともに、特定のネットワーキング方式への限定を構成しない。例えば、アレイコントローラ11およびソリッドステートディスク22が互いに通信することができる限り、カスケーディングツリーネットワークまたはリングネットワークが使用されてよい。
ソリッドステートディスク22は、SSDコントローラ220および記憶媒体221を含む。SSDコントローラ220は、アレイコントローラ11によって送信される書き込みデータ要求または読み出しデータ要求等の操作を実行するように構成される。
記憶媒体221は一般に、いくつかのフラッシュメモリ(Flash)チップを含む。各フラッシュメモリチップは複数のチャネルを含み、且つ、各チャネルはいくつかのブロック(block)を含む(図2に示されるように)。一般に、フラッシュメモリチップは、固定サイズに従って、いくつかのブロックに分割されてよい。従って、ブロックは標準サイズを有する。ブロックの標準サイズは、アイドル状態であるとともにバッドページ(bad page)を含まないブロック内に格納されることができるデータのサイズを指す。一般に、ブロックの標準サイズは2(M)のN乗であってよく、ここで、Nは正の整数である。SSDによって実行される消去操作はブロック内で実行される。例えば、SSDがガベージコレクションを実行する必要があるとき、SSDは第1に、1つのブロックから別の新しいブロックに有効データを移動し、次いで、元のブロックに格納される全てのデータ(有効データおよび無効データを含む)を消去してよい。本発明の本実施形態では、ブロック内の有効データは、ブロック内に格納されるとともに修正されていないデータを指し、且つ、データのこの部分は読み出し可能であり、ブロック内の無効データは、ブロック内に格納されるとともに修正されているデータを指し、且つ、データのこの部分は読み出し不可能である。フラッシュメモリチップの消去機能により、ブロックに格納されたデータは、共通の機械的なハードドライブにおけるデータのように直接修正されないことは、当業者によって知られることができる。ブロック内のデータが修正される必要があるとき、SSDコントローラ220は新しいブロックを見つけるとともに修正されたデータを新しいブロックに書き込み、且つ、元のブロック内のデータは無効データになる。無効データは、SSDがガベージコレクションを実行するときに消去される。
加えて、図3に示されるように、各ブロックはいくつかのページ(page)を含む。SSDは、書き込みデータ要求を実行するときにデータをページに書き込む。例えば、アレイコントローラ11は書き込みデータ要求をSSDコントローラ220に送信し、ここで、書き込みデータ要求は論理ブロックアドレス(logical block Address, LBA)およびデータを搬送し、且つ、LBAは可視であるとともにアレイコントローラ11にアクセス可能なアドレスである。書き込みデータ要求を受信した後、SSDコントローラ220は、セットポリシーに従って、1つ以上のブロックのページにデータを書き込む。データが書き込まれるページのアドレスは、データが実際に格納されるアドレスであるとともに、物理アドレスとも呼ばれる。SSDは、LBAと物理アドレスとの間の対応関係を確立および格納するように構成されるフラッシュ変換レイヤ(Flash Translation Layer, FTL)を含む。アレイコントローラ11がその後、LBAを搬送する読み出しデータ要求をSSDコントローラ220に送信して、データの読み出しを要求するとき、SSDコントローラ220は、LBAおよびLBAと物理アドレスとの間の対応関係に従ってデータを読み出して、アレイコントローラ11にデータを送信してよい。
アレイコントローラ11がデータのセグメントをキャッシュから読み出して、データのセグメントをSSDに送信するとき、一般に、データのセグメントは、連続的な論理アドレスを有するデータのセグメントである。しかしながら、書き込みデータ要求を受信するとき、SSDコントローラ220は、SSDコントローラ220によるポリシーセットに従って、データを1つ以上のブロックのページ(すなわち、物理アドレス)に書き込む。実際、これらの物理アドレスは必ずしも連続的でないことは当業者によって理解されることができる。すなわち、アレイコントローラ11の観点から、連続的な論理アドレスを有するデータのセグメントは、実際は、散在した方式でSSDの物理スペースに書き込まれる。以下では、図4を参照して、従来技術におけるSSDによってデータを書き込む方法を説明する。
図4は、従来技術におけるSSDによってデータを書き込む方法の概略図である。一般に、ソリッドステートディスク22はデータをチャネルに同時に書き込むことができるため、アレイコントローラ11がデータをソリッドステートディスク22に送信した後、SSDコントローラ220は一般に、1つのブロックを各チャネルから選択するとともに、データを複数のブロックに同時に書き込む。ソリッドステートディスク22はまた、データを1つのチャネル内の複数のブロックに同時に書き込んでよいことは理解されることができる。図4に示されるように、データが複数のブロックに書き込まれた後、各ブロックはデータの一部を記憶するためにスペースの一部を提供する。図4では、ブロックの白い部分はブロックの空きスペースを表し、且つ、グレーの部分は、データの一部がブロックに書き込まれた後のブロックの使用されたスペースを表す。従って、アレイコントローラ11の観点から、連続的な論理アドレスを有するデータのセグメントは、散在した方式で複数のブロックに格納され、且つ、異なる論理アドレスセグメントに属するデータは異なるブロックに書き込まれる。ガベージコレクション操作は、SSDにおいて定期的に実行され、ガベージコレクション操作の間、消去がブロック内で実行されることは当業者によって知られることができる。連続的な論理アドレスを有するデータのセグメントは散在した方式で複数のブロックに格納され、且つ、異なる論理アドレスセグメントに属するデータは異なるブロックに書き込まれるため、ガベージコレクションの間、有効データは複数のブロックから空きブロックに移動される必要があり、このことは、ガベージコレクションによって引き起こされる書き込み増幅を増加させる。書き込み増幅は、フラッシュメモリチップに書き込まれるデータは、ホストによってSSDに書き込まれるデータよりも多いことを意味する。
本実施形態では、図5に示されるように、1つのブロックは、論理ブロック(logical block)を形成するために、各チャネルから取り出されてよい。すなわち、本実施形態における論理ブロックは複数のブロックを含み、且つ、ブロックは異なるチャネル内に配置される。1つのブロックがまた、チャネルの一部のそれぞれから取り出され、論理ブロックを形成してもよいことは理解されることができる。同様に、論理ブロックに含まれる複数のブロックは、異なるチャネル内に別々に配置される。論理ブロックのサイズは、ブロックの標準サイズの整数倍であるとともに、論理ブロックに含まれるブロックの数に依存する。本実施形態では、論理ブロックのサイズは、事前にアレイコントローラ11内に格納されてよい。ホスト33によって送信される書き込みデータ要求を受信した後、アレイコントローラ11は、アレイコントローラ11のキャッシュ内に書き込みデータ要求を一時的に格納し、キャッシュ内のデータが論理ブロックのサイズに達したとき、データを記憶用のSSDに送信してよい。
本実施形態では、論理ブロックは、論理ブロックの状態に従って、空いている(free)論理ブロック、書き込まれるべき(または書き込む)論理ブロック、埋まっている(full)論理ブロック、悪い(bad)論理ブロックの4種類に分類される。空き状態における論理ブロックは、データが消去されている論理ブロックを指し、書き込まれるべき状態における論理ブロックは、データ書き込み用に割り当てられている論理ブロックを指し、埋まっている状態における論理ブロックは、そのスペースが埋まっている論理ブロックを指し、且つ、埋まっている状態における論理ブロックは、消去後、空き状態における論理ブロックになってよく、悪い状態における論理ブロックは、使用されることができない破損した論理ブロックを指す。本実施形態で言及されるデータを格納するための論理ブロックは、実際は、書き込まれるべき状態における論理ブロックである。従って、以下の説明で述べられない限り、論理ブロックは、書き込まれるべき状態における論理ブロックを指す。
これらの、書き込まれるべき状態における論理ブロックを識別するために、任意の実施方式では、SSDは各論理ブロックに識別子を割り当てる。識別子は、論理ブロックを一意に識別するための数字、文字または別の記号であってよく、または数字、文字または別の記号の任意の組み合わせであってよい。例えば、論理ブロックの識別子は0であり、別の論理ブロックの識別子は1であり、さらに別の論理ブロックの識別子は2である等々である。
別の任意の実施方式では、SSDは論理アドレス範囲を各論理ブロックに割り当てる。例えば、論理ブロックに対応する論理アドレス範囲は0MBから1023MBであり、別の論理ブロックに対応する論理アドレス範囲は1024MBから2047MBであり、さらに別の論理ブロックに対応する論理アドレス範囲は2048MBから3071MBである等々である。
SSDコントローラ220は、論理ブロックの識別子または論理ブロックの論理アドレス範囲をアレイコントローラ11に報告する必要があり、その結果、データを記憶用のSSDに送信するとき、アレイコントローラ11は論理ブロックの識別子を書き込みデータ要求に追加して、書き込みデータ要求をSSDに送信し、SSDに、データを識別子に対応する論理ブロックに書き込むように命令することができる。あるいは、書き込みデータ要求における開始論理アドレスおよび長さは、論理ブロックの論理アドレス範囲に従って指定される。書き込まれるべき状態における複数の論理ブロックがある場合、アレイコントローラ11は、複数の論理ブロックの識別子または複数の論理ブロックの論理アドレス範囲を受信し、次いで、複数の論理ブロックのいずれか1つを選択し、論理ブロックの識別子または論理アドレス範囲に従って、書き込みデータ要求をSSDに送信する。
以下では、アレイコントローラ11のハードウェア構成を説明する。図6は、本発明の実施形態に係るアレイコントローラ11の概略構成図である。図6に示されるように、アレイコントローラ11は主に、プロセッサ(processor)118、キャッシュ(cache)120、メモリ(memory)122、通信バス(略してバス)126および通信インタフェース(Communications Interface)128を含む。プロセッサ118、キャッシュ120、メモリ122および通信インタフェース128は、通信バス126を使用することによって互いに通信する。
通信インタフェース128は、ホスト33またはソリッドステートディスク22と通信するように構成される。
プロセッサ118は、中央処理ユニットCPUまたは特定用途向け集積回路ASIC(Application Specific Integrated Circuit)であってよく、または本発明の本実施形態を実施する1つ以上の集積回路として構成される。本発明の本実施形態では、プロセッサ118は、書き込みデータ要求または読み出しデータ要求をホスト33から受信し、書き込みデータ要求または読み出しデータ要求を処理し、書き込みデータ要求または読み出しデータ要求をソリッドステートディスク22に送信し、別の操作を実行するように構成されてよい。
メモリ122はプログラム124を格納するように構成される。メモリ122は、高速RAMメモリを含んでよく、且つ、少なくとも1つの磁気ディスクメモリ等の不揮発性メモリ(non-volatile memory)をさらに含んでよい。メモリ122はランダムアクセスメモリ(Random Access Memory, RAM)、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク(Solid State Disk, SSD)または不揮発性メモリ等の、プログラムコードを格納することができる、任意の非一時的(non-transitory)コンピュータ可読媒体であってよいことは理解されることができる。
プログラム124はプログラムコードを含んでよく、ここで、プログラムコードはコンピュータ操作命令を含む。
キャッシュ120(Cache)は、ホスト33から受信されたデータまたはソリッドステートディスク22から読み出されたデータを一時的に格納するように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ(Flash memory)またはソリッドステートディスク(Solid State Disk, SSD)等のデータを格納することができる任意の非一時的(non-transitory)機械可読媒体であってよく、ここでは限定されない。例えば、ホスト33によって送信される書き込みデータ要求を受信するとき、アレイコントローラ11は書き込みデータ要求をキャッシュ120内に格納してよく、且つ、プロセッサ118は書き込みデータ要求を処理する。任意で、ホスト33によって送信される複数の書き込みデータ要求を受信するとき、アレイコントローラ11は、複数の書き込みデータ要求をキャッシュ120内に一時的に格納してよく、且つ、キャッシュ120におけるサイズが基準値に達したとき(例えば、キャッシュ120に格納されたデータのサイズが論理ブロックのサイズに達したとき)に、そのサイズが論理ブロックのサイズと等しいデータをキャッシュ120から読み出し、データを永続的な記憶用のソリッドステートディスク22に送信してよい。
加えて、メモリ122およびキャッシュ120は、別々に統合または配置されてよく、このことは本発明の本実施形態では限定されない。
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための方法のプロセスを説明する。本発明の本実施形態における、データをソリッドステートディスクに書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図7に示されるように、方法は以下のステップを含む。
ステップS301:SSDコントローラ220は、論理ブロックの指示情報をアレイコントローラ11に送信する。
具体的には、SSDコントローラ220は、論理ブロックの指示情報を、アレイコントローラ11のプロセッサ118に送信する。論理ブロックの指示情報は、ソリッドステートディスク22によって論理ブロックに割り当てられる識別子であってよく、または、ソリッドステートディスク22によって論理ブロックに割り当てられる論理アドレス範囲、または特定の論理ブロックを示すための他の情報であってよい。
ステップS302:SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11に送信する。
具体的には、SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11のプロセッサ118に送信し、且つ、プロセッサ118は論理ブロックのサイズを受信する。ステップS302およびステップS301は必ずしも特定の順序で実行されないことは留意されるべきである。すなわち、本実施形態では、SSDコントローラ220が論理ブロックのサイズをアレイコントローラ11に送信する限り、論理ブロックのサイズがアレイコントローラ11に送信される期間またはステップは限定されない。さらに、情報は別々に送信されてよく、または他の情報、例えば論理ブロックの識別子と一緒に送信されてよい。
ステップS303:アレイコントローラ11は複数個のターゲットデータをSSDコントローラ220に送信し、ここで、複数個のターゲットデータの長さの合計は、論理ブロックのサイズと等しい。
具体的には、アレイコントローラ11のプロセッサ118は、複数個のターゲットデータを複数の書き込みデータ要求に追加して、複数の書き込みデータ要求をSSDコントローラ220に送信する。
指示情報が論理ブロックの識別子であるとき、各書き込みデータ要求は、論理ブロックの識別子を搬送する必要がさらにある。指示情報が論理ブロックの論理アドレス範囲であるとき、各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する必要がさらにある。これらの2つの場合は、図9および図10に示される実施方式で詳細に説明される。
ステップS304:SSDコントローラ220は、論理ブロックに複数個のターゲットデータを書き込む。
具体的には、ステップS303 で複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求における指示情報に従って、指示情報によって指示される論理ブロックを決定するとともに、次いで、各書き込みデータ要求におけるターゲットデータを論理ブロックに書き込んでよい。
従来技術では、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求は、論理ブロックの指示情報を含まない。従って、書き込みデータ要求を受信した後、従来技術におけるSSDコントローラ220は一般に、複数のブロックを選択するとともに、データを複数のブロックに同時に書き込み、このことは、データが散在した方式でブロックに格納されることを引き起こす。しかしながら、本実施形態では、プロセッサ118は、論理ブロックの識別子を複数の書き込みデータ要求に追加するとともに複数の書き込みデータ要求をソリッドステートディスク22に送信し、ソリッドステートディスク22に、これらの書き込みデータ要求における全てのターゲットデータを指示情報によって指示される論理ブロックに書き込むことを命令する。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
従って、ステップS304では、複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータを指示情報によって指示される論理ブロックに書き込んでよい。さらに、ターゲットデータの長さの合計は論理ブロックのサイズと等しいため、論理ブロックは、SSDコントローラ220が書き込みデータ要求で搬送されるターゲットデータを論理ブロックに書き込んだ後にちょうど埋められる(図8に示されるように)。
図7に示される実施方式によると、複数個のターゲットデータは1つの論理ブロック、すなわち、1つ以上のブロックに格納される。これらのターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、これらのターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、消去操作は、有効データを移動することなく、ブロックに対して直接実行されてよく、このことは、ガベージコレクション中の書き込み増幅の課題を低減する。
具体的には、アレイコントローラ11がソリッドステートディスクに対してガベージコレクション操作を実行する必要があるとき、アレイコントローラ11は一般に、ソリッドステートディスク22の論理ブロックにおける有効データを読み出すように要求するために、読み出しコマンドをソリッドステートディスク22に送信してよい。ソリッドステートディスク22が有効データをアレイコントローラ11に送信した後、アレイコントローラ11は、書き込みコマンドをソリッドステートディスク22に送信して、有効データを新しい論理ブロックに書き込むように要求する。次いで、アレイコントローラ11は、ソリッドステートディスク22にトリムコマンドを送信して、元の論理ブロックが無効になったことを示す。ソリッドステートディスク内でガベージコレクション操作を実行したとき、ソリッドステートディスクは、論理ブロックが無効であると分かるとともに、論理ブロックに格納される全てのデータが無効データであるとみなしてよく、それによって、有効データを取得または有効データを再び移動することなく、論理ブロックに含まれるブロックからのデータの消去を直接実行する。このようにして、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅の課題は低減される。
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための方法のプロセスを説明する。本発明の本実施形態における、データをフラッシュメモリ装置に書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図8に示されるように、方法は以下のステップを含む。
ステップS101:SSDコントローラ220は、SSDに含まれる複数の論理ブロックから、書き込まれるべき状態における論理ブロックを決定する。
上述のように、論理ブロックは一般に、空いている、書き込まれる、埋まっている、悪い、の4つの状態である。本実施形態では、書き込まれるべき状態における論理ブロックはこれらの論理ブロックから選択されるとともに、論理ブロックキュー内に置かれる。データが書き込まれる必要があるとき、任意の論理ブロックが、データ書き込みのために論理ブロックキューから直接取得されてよい。論理ブロックキューは、書き込まれるべき状態における論理ブロックを管理するためのデータ構造である。本実施形態では、キューに加えて、別のデータ構造、例えば、連結リストもまた、論理ブロックを管理するために使用されてよいことが理解されることができる。論理ブロックキューは、SSDコントローラ220またはフラッシュメモリチップのキャッシュに格納されてよい。
1つ以上の決定された書き込まれるべき状態における論理ブロックがあってよい。
ステップS102:SSDコントローラ220は、識別子を書き込まれるべき状態における論理ブロックに割り当てる。
識別子は数字、例えば、0, 1, 2, …であってよく、または、書き込まれるべき状態における論理ブロックを一意に識別するための別の記号であってよく、または、数字、文字または別の記号の任意の組み合わせであってよい。
ステップS103:SSDコントローラ220は、ステップS102において論理ブロックに割り当てられた識別子をアレイコントローラ11に送信する。
本実施形態では、SSDコントローラ220は、SCSI WRITEコマンドを使用することによって、アレイコントローラ11に識別子を送信してよく、ここで、SCSI WRITEコマンドはGROUP NUMBERフィールドを含み、且つ、フィールドは識別子を搬送するために使用されてよい。
ステップS104:SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11に送信する。
このステップは、図7におけるステップS302と同様であり、且つ、詳細はここでは再び説明されない。
ステップS105:アレイコントローラ11は、ホスト33によって送信される複数個のデータを受信する。
複数個のデータは、複数の書き込みコマンドを使用することによって、ホスト33によってアレイコントローラ11に送信されてよい。具体的には、アレイコントローラ11のプロセッサ118は、ホスト33によって送信される複数個のデータを受信し、ここで、各書き込みコマンドは、少なくとも1個のデータおよびデータのホスト論理アドレス範囲を搬送する。ホスト論理アドレスは、アレイコントローラ11によってホスト33に表される記憶スペースのアドレスを指す。データのホスト論理アドレス範囲は連続的でなくてよい。例えば、1個のデータのホスト論理アドレス範囲は0x40000から0x40020であり、別のデータのホスト論理アドレス範囲は0x10010から0x10020であり、これらの2個のデータのホスト論理アドレス範囲は連続的でない。実際の適用では、書き込みコマンドは、開始ホスト論理アドレスおよび長さを搬送してよく、且つ、ホスト論理アドレス範囲は、開始ホスト論理アドレスおよび長さに従って得られることは留意されるべきである。
ステップS106:アレイコントローラ11は、受信された複数個のデータをキャッシュ120に書き込む。
具体的には、アレイコントローラ11のプロセッサ118は、受信された複数個のデータをキャッシュ120に書き込む。
一般に、ホスト33によって送信されるデータを受信した後、アレイコントローラ11は、データをソリッドステートディスク22に直接書き込む代わりに、データをキャッシュ120に一時的に書き込む。キャッシュ120の記憶スペースが特定の基準値に達したとき、プロセッサ118は、キャッシュ120からデータの一部または全てを読み出して、データを永続的な記憶用のSSD22に送信する。
ステップS105およびS106 およびステップS101からS104は、必ずしも特定の順序で実行されないことは留意されるべきである。すなわち、アレイコントローラ11によって、ホスト33によって送信されるターゲットデータを受信して一時的に格納するプロセスおよびSSD22によって送信される論理ブロックに関する情報を受信するプロセスは矛盾せず、且つ、必ずしも特定の順序で実行されないとともに、同時に実行されてもよい。
ステップS107:アレイコントローラ11は、複数個のターゲットデータをキャッシュ120から読み出す。
具体的には、アレイコントローラ11のプロセッサ118は、複数個のターゲットデータをキャッシュ120から読み出す。
複数個のターゲットデータの長さの合計は、論理ブロックのサイズと等しい。本実施形態では、アレイコントローラ11によってホスト33から受信されるデータと区別されるために、キャッシュ120から読み出されるデータはターゲットデータと呼ばれる。これらのターゲットデータの長さの合計は、論理ブロックのサイズと等しい。プロセッサ118が複数の書き込みデータ要求を生成して、複数の書き込みデータ要求をソリッドステートディスク22に送信するとき、各書き込みデータ要求は1個のターゲットデータを搬送すると考えられてよい。アレイコントローラ11によってホスト33から受信されるとともにキャッシュ120に格納されるデータのサイズが論理ブロックのサイズを超過するとき、プロセッサ118は、そのサイズが論理ブロックのサイズと等しい複数個のターゲットデータのみキャッシュ120から読み出す必要があることは理解されることができる。さらに、プロセッサ118によってホスト33から受信されるとともにキャッシュ120に格納されるデータのサイズが論理ブロックのサイズに達しないとき、プロセッサ118は、キャッシュ120からデータを読み出さなくてよく、キャッシュ120内のデータが論理ブロックのサイズに達するまで処理を実行しなくてよい。
ステップS108:アレイコントローラ11は、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、各書き込みデータ要求はターゲットデータを搬送し、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい必要があり、各書き込みデータ要求は、論理ブロックの識別子を搬送する。
具体的には、アレイコントローラ11のプロセッサ118は、複数の書き込みデータ要求をソリッドステートディスク22に送信する。
ソリッドステートディスク22が複数の論理ブロックの識別子をアレイコントローラ11に送信する場合、アレイコントローラ11は識別子から任意の識別子を選択し、識別子を複数の書き込みデータ要求に追加してよいことは理解されることができる。
加えて、本実施形態では、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求はまた、それぞれのターゲットデータの開始論理アドレスおよび長さ(または論理アドレス範囲)を含んでもよい。ここでの論理アドレスは、ステップS105におけるホスト論理アドレスとは異なる。ステップS105におけるホスト論理アドレスは、アレイコントローラ11によってホスト33に表される記憶スペースの論理アドレスである一方、ここでの論理アドレスは、ソリッドステートディスク22によってアレイコントローラ11に表される記憶スペースのアドレスである。加えて、アレイコントローラ11が論理アドレス範囲を指定するとき、全てのターゲットデータの論理アドレス範囲は連続的であることは留意されるべきである。アレイコントローラ11は、それぞれのターゲットデータの開始論理アドレスおよび長さをソリッドステートディスク22に送信する。ターゲットデータを論理ブロックに含まれるブロックに書き込んだ後、SSDコントローラ220は、FTL内に、開始論理アドレスとターゲットデータが実際に書き込まれる物理アドレスとの間の対応関係を格納してよい。アレイコントローラ11がその後ターゲットデータを読み出す必要がある場合、アレイコントローラ11は、ターゲットデータの開始論理アドレスおよび長さを読み出しデータ要求に追加して、読み出しデータ要求をソリッドステートディスク22に送信してよい。SSDコントローラ220は、ターゲットデータを読み出してターゲットデータをアレイコントローラ11に送信するために、FTLに格納される論理アドレス、長さおよび対応関係に従って、ターゲットデータの物理アドレスを取得してよい。
ステップS110:SSDコントローラ220は、論理ブロックの識別子を回収する。
論理ブロックはデータで埋められているとともに、埋められている(full)状態であるため、SSDコントローラ220は、識別子を回収し、論理ブロックを論理ブロックキューから削除し、識別子を書き込まれるべき状態における別の論理ブロックに割り当ててよい。
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための別の方法のプロセスを説明する。本発明の本実施形態における、データをフラッシュメモリ装置に書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図10に示されるように、方法は以下のステップを含む。
ステップS201:アレイコントローラ11は、ホスト33によって送信される複数個のデータを受信する。このステップは、図8に示されるステップS105と同様であり、ステップS105の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
ステップS202:アレイコントローラ11は受信された複数個のデータをキャッシュ120に書き込む。このステップは、図8に示されるステップS106と同様であり、ステップS106の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
ステップS203:アレイコントローラ11は、SSDコントローラ220によって送信される論理ブロックの論理アドレス範囲を受信する。
具体的には、アレイコントローラ11のプロセッサ118は、論理ブロックの論理アドレス範囲を受信する。本実施形態では、各論理ブロックは、1つの論理アドレス範囲に対応する。例えば、論理ブロックに対応する論理アドレス範囲は0MBから1023MBであり、別の論理ブロックに対応する論理アドレス範囲は1024MBから2047MBであり、さらに別の論理ブロックに対応する論理アドレス範囲は2048MBから3071MBである。
これらの論理ブロックは、全て書き込まれるべき状態における論理ブロックであり、且つ、SSDコントローラ220は、これらの論理ブロックの論理アドレス範囲をアレイコントローラ11に報告する必要がある。
ステップS204:アレイコントローラ11は、SSDコントローラ220によって送信される論理ブロックのサイズを受信する。このステップは、図8に示されるステップS104と同様であり、ステップS104の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
同様に、ステップS201からS203およびステップS204は、必ずしも特定の順序で実行されない。
ステップS205:アレイコントローラ11は、ターゲットデータをキャッシュ120から読み出す。このステップは、図8に示されるステップS107と同様であり、ステップS107の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
ステップS206:アレイコントローラ11は、複数の書き込みデータ要求をソリッドステートディスク22に送信する。
具体的には、アレイコントローラ11のプロセッサ118は、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、各書き込みデータ要求はターゲットデータを搬送してよく、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい必要があり、各書き込みデータ要求は、ターゲットデータの開始論理アドレスおよび長さを搬送する。ターゲットデータの開始論理アドレスおよびターゲットデータの終了論理アドレスの両方は、同じ論理ブロックの論理アドレス範囲に属し、且つ、終了論理アドレスは、開始論理アドレスおよび長さに従って得られる。従って、各書き込みデータ要求で搬送されるターゲットデータの論理アドレス範囲は、論理ブロックの論理アドレス範囲の副範囲であると考えられてよい。複数の論理ブロックの論理アドレス範囲を受信するとき、アレイコントローラ11は、ターゲットデータの開始論理アドレスおよび長さを決定するために、論理アドレス範囲からいずれか1つを選択してよい。
ステップS207:複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータに対応する論理ブロックを決定する。
本実施形態では、各論理ブロックは1つの論理アドレス範囲に対応するため、SSDコントローラ220は、各書き込みデータ要求で搬送される開始論理アドレスおよび長さと、各論理ブロックに対応する論理アドレス範囲とに従って、それぞれのターゲットデータに対応する論理ブロックを決定してよい。例えば、書き込みデータ要求の1つで搬送されるターゲットデータについて、開始論理アドレスが1010MBであるとともに長さが10KBである場合、ターゲットデータに対応する論理ブロックは、その論理アドレス範囲が0MBから1023MBである論理ブロックである。
ステップS208:SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータを対応する論理ブロックに書き込む。
図10で示される実施方式に従って、アレイコントローラ11はまた、連続的な論理アドレスを有するデータのセグメントを1つ以上のブロックに書き込んでよい。
図9および図10に示される実施方式を参照すると、本発明の別の実施方式では、ソリッドステートディスク22は、フラッシュメモリチップ222の記憶スペースを少なくとも2つの部分に分割してよく、ここで、各部分はいくつかの論理ブロックを含む。部分のうちの1つに対して、ソリッドステートディスク22は、その部分に含まれる各論理ブロックに識別子を割り当て、他の部分に対して、ソリッドステートディスク22は、その部分に含まれる各論理ブロックに論理アドレス範囲を割り当てる。第1の部分における各論理ブロックの識別子および第2の部分における各論理ブロックの論理アドレス範囲は、アレイコントローラ11に報告される。その長さが論理ブロックのサイズと等しい複数個のターゲットデータをキャッシュ120から読み出した後、アレイコントローラ11は、複数個のターゲットデータを複数の書き込みデータ要求に追加し、且つ、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、複数の書き込みデータ要求の各書き込みデータ要求は、論理ブロックの識別子を含んでよく、または、開始論理アドレスおよび長さ(論理アドレス範囲の副範囲と考えられてよい)を含んでよい。すなわち、本実施方式では、アレイコントローラ11は複数の書き込みデータ要求を、図9に示される実施方式におけるソリッドステートディスク22に送信してよく、または、複数の書き込みデータ要求を、図10に示される実施方式におけるソリッドステートディスク22に送信してよい。ソリッドステートディスク22について、ソリッドステートディスク22によって受信される書き込みデータ要求が論理ブロックの識別子を搬送するとき、ソリッドステートディスク22は、識別子に従って論理ブロックを決定するとともにデータを論理ブロックに書き込み、ソリッドステートディスク22によって受信される書き込みデータ要求が論理アドレス範囲の副範囲を搬送するとき、ソリッドステートディスク22は、各論理ブロックに対応する副範囲および論理アドレス範囲に従って論理ブロックを決定するとともにデータを論理ブロックに書き込んでよい。
任意で、前述の実施方式では、フラッシュメモリチップ222の記憶スペースは別の部分をさらに含んでよい。この部分内で、ソリッドステートディスク22は、アレイコントローラ11によって送信されるデータが書き込まれるブロックを決定してよい。すなわち、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求は、論理ブロックの識別子または論理ブロックの論理アドレス範囲を搬送しなくてよい。この場合、ソリッドステートディスク22は、データをアレイコントローラ11によって指定される論理ブロックに書き込む代わりに、データ書き込みのための1つ以上のブロックを選択する。
記憶スペースの分割の前述の3つのタイプのうちの任意の2つと実施方式は組み合わされてよく、このことは、図9または図10に示される実施方式のみの実行と比較してより柔軟であるとともに複数の要件を満たすことができることは理解されることができる。
図11に示されるように、本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するための装置700をさらに提供し、ここで、ソリッドステートディスクは記憶システム内に配置され、記憶システムはアレイコントローラをさらに含み、装置はアレイコントローラ内に配置される。具体的には、装置は受信モジュール701および処理モジュール702を含み、ここで、
受信モジュール701は、ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、
処理モジュール702は、複数の書き込みデータ要求をソリッドステートディスクに送信するように構成され、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい。
任意で、ソリッドステートディスクはフラッシュメモリチップを含み、ここで、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、論理ブロックは1つ以上のブロックを含み、論理ブロックに含まれるブロックは異なるチャネル内に配置される。
任意で、論理ブロックは、書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。
任意で、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子を含み、且つ、各書き込みデータ要求は論理ブロックの識別子を含む。
任意で、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含み、且つ、各書き込みデータ要求は、論理アドレス範囲の副範囲を含む。
図12に示されるように、実施形態は、データを書き込むようにソリッドステートディスクを制御するための別の装置800をさらに提供し、ここで、ソリッドステートディスクはフラッシュメモリチップおよびソリッドステートディスクコントローラを含み、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、装置はソリッドステートディスクコントローラ内に配置される。装置は、具体的には、送受信モジュール801および書き込みモジュール802を含み、ここで、
送受信モジュール801は、論理ブロックに関する情報をアレイコントローラに送信し、アレイコントローラによって送信された複数の書き込みデータ要求を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、
書き込みモジュール802は、指示情報によって指示される論理ブロックに、各書き込みデータ要求で搬送されるターゲットデータを書き込むように構成される。
任意で、論理ブロックは1つ以上のブロックを含み、且つ、論理ブロックに含まれるブロックは異なるチャネル内に配置される。
任意で、装置800は、論理ブロックが書き込まれるべき状態における論理ブロックであると決定し、指示情報を書き込まれるべき状態における論理ブロックに割り当てるように構成される割り当てモジュール803をさらに含み、ここで、書き込まれるべき状態における論理ブロックは、データを格納するために割り当てられている論理ブロックを指す。
任意で、論理ブロックの指示情報は、論理ブロックの識別子を含み、各書き込みデータ要求は、論理ブロックの識別子を含み、且つ、書き込みモジュールは、具体的には、論理ブロックの識別子に従って、各書き込みデータ要求内のターゲットデータを、識別子に対応する論理ブロックに書き込むように構成される。
任意で、論理ブロックの指示情報は、論理ブロックの論理アドレス範囲を含み、各書き込みデータ要求は、論理アドレス範囲の副範囲を含み、且つ、書き込みモジュールは、具体的には、各書き込みデータ要求内の論理アドレス範囲の副範囲および論理ブロックの論理アドレス範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定し、各書き込みデータ要求内のターゲットデータを対応する論理ブロックに書き込むように構成される。
任意で、割り当てモジュール803は、論理ブロックに割り当てられた指示情報を回収するようにさらに構成される。
11 アレイコントローラ
33 ホスト
118 プロセッサ
120 キャッシュ
122 メモリ
124 プログラム
126 バス
128 通信インタフェース
220 SSDコントローラ
222 フラッシュメモリチップ
700 データを書き込むようにソリッドステートディスクを制御するための装置
701 受信モジュール
702 処理モジュール
800 データを書き込むようにソリッドステートディスクを制御するための装置
801 送受信モジュール
802 書き込みモジュール

Claims (15)

  1. アレイコントローラであって、前記アレイコントローラは記憶システム内に配置され、前記記憶システムは、前記アレイコントローラおよびソリッドステートディスクを含み、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、
    前記アレイコントローラは、通信インタフェースおよびプロセッサを含み、
    前記通信インタフェースは、前記ソリッドステートディスクと通信するように構成され、
    前記プロセッサは、前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信し、
    複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するように構成され、
    前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含み、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、
    アレイコントローラ。
  2. 前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項1に記載のアレイコントローラ。
  3. 前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、前記論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項1または2に記載のアレイコントローラ。
  4. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項1乃至3のいずれか1項に記載のアレイコントローラ。
  5. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項1乃至3のいずれか1項に記載のアレイコントローラ。
  6. データを書き込むようにソリッドステートディスクを制御するための方法であって、前記方法は記憶システムに適用され、前記記憶システムはアレイコントローラおよび前記ソリッドステートディスクを含み、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、且つ、前記方法は前記アレイコントローラによって実行されるとともに、
    前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するステップであって、前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含む、ステップと、
    複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するステップであって、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、ステップと
    を含む、方法。
  7. 前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項6に記載の方法。
  8. 前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、前記論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項6または7に記載の方法。
  9. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項6乃至8のいずれか1項に記載の方法。
  10. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項6乃至8のいずれか1項に記載の方法。
  11. データを書き込むようにソリッドステートディスクを制御するための装置であって、前記ソリッドステートディスクは記憶システム内に配置され、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、前記記憶システムはアレイコントローラをさらに含み、前記装置は前記アレイコントローラ内に配置されるとともに、
    前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成される受信モジュールであって、前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含む、受信モジュールと、
    複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するように構成される処理モジュールであって、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記論理ブロックの前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、処理モジュールと
    を含む、装置。
  12. 前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項11に記載の装置。
  13. 前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項11または12に記載の装置。
  14. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項11乃至13のいずれか1項に記載の装置。
  15. 前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項11乃至13のいずれか1項に記載の装置。
JP2016555988A 2015-12-03 2015-12-03 データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 Active JP6319607B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/096357 WO2017092015A1 (zh) 2015-12-03 2015-12-03 一种阵列控制器、固态硬盘和控制固态硬盘写数据的方法

Publications (2)

Publication Number Publication Date
JP2018502343A JP2018502343A (ja) 2018-01-25
JP6319607B2 true JP6319607B2 (ja) 2018-05-09

Family

ID=58794303

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016555988A Active JP6319607B2 (ja) 2015-12-03 2015-12-03 データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法

Country Status (13)

Country Link
US (1) US10761731B2 (ja)
EP (1) EP3220275B1 (ja)
JP (1) JP6319607B2 (ja)
KR (1) KR102013430B1 (ja)
CN (1) CN107209719B (ja)
AU (1) AU2015381014B2 (ja)
BR (1) BR112016019305B1 (ja)
CA (1) CA2938242C (ja)
MX (1) MX361249B (ja)
RU (1) RU2661280C2 (ja)
SG (1) SG11201606555QA (ja)
WO (1) WO2017092015A1 (ja)
ZA (1) ZA201605526B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3346387B1 (en) 2016-11-11 2020-09-02 Huawei Technologies Co., Ltd. Storage system and system garbage collection method
CN109491587B (zh) 2017-09-11 2021-03-23 华为技术有限公司 数据访问的方法及装置
WO2019080015A1 (zh) 2017-10-25 2019-05-02 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN109189337B (zh) * 2018-08-21 2021-12-17 浪潮电子信息产业股份有限公司 一种选择数据块的方法、装置、设备及可读存储介质
KR20200078046A (ko) 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN109976673B (zh) * 2019-03-29 2023-04-25 新华三技术有限公司 一种数据写入方法和装置
CN110309078B (zh) * 2019-07-02 2021-07-02 北京计算机技术及应用研究所 一种全闪存储阵列的主机与固态盘协同垃圾回收方法
CN112306896B (zh) * 2019-07-31 2022-12-27 华为技术有限公司 一种垃圾回收方法及装置
JP2021033847A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11099785B2 (en) * 2019-12-23 2021-08-24 Micron Technology, Inc. Linking access commands for a memory sub-system
RU2759503C1 (ru) * 2021-04-19 2021-11-15 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ сборки мусора в твердотельном накопителе информации
WO2022240318A1 (ru) * 2021-05-13 2022-11-17 Общество с ограниченной ответственностью "РЭЙДИКС" Способ управления системой хранения данных и система хранения данных
CN113568582B (zh) * 2021-07-30 2023-05-26 重庆紫光华山智安科技有限公司 数据管理方法、装置和存储设备
US20230128077A1 (en) * 2021-10-22 2023-04-27 EMC IP Holding Company, LLC System and Method for Aggregation of Write Commits To Control Written Block Size
CN113867651B (zh) * 2021-12-03 2022-02-25 武汉深之度科技有限公司 一种硬盘数据清理方法、装置及计算设备

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
RU2280273C2 (ru) * 2003-07-16 2006-07-20 Открытое акционерное общество "Научно-производственное объединение "Прибор" Способ структурирования и записи цифровой информации и устройство для его осуществления
KR101087906B1 (ko) * 2003-11-18 2011-11-30 파나소닉 주식회사 파일기록장치
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
WO2009001514A1 (ja) * 2007-06-22 2008-12-31 Panasonic Corporation メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US8554987B2 (en) * 2009-06-18 2013-10-08 Panasonic Corporation Nonvolatile memory system for improving stream data writing
US9135190B1 (en) * 2009-09-04 2015-09-15 Bitmicro Networks, Inc. Multi-profile memory controller for computing devices
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
TWI428917B (zh) * 2009-11-25 2014-03-01 Silicon Motion Inc 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US20150121003A1 (en) * 2010-09-07 2015-04-30 Daniel L. Rosenband Storage controllers
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US8484408B2 (en) * 2010-12-29 2013-07-09 International Business Machines Corporation Storage system cache with flash memory in a raid configuration that commits writes as full stripes
US8832371B2 (en) * 2011-04-04 2014-09-09 Hitachi, Ltd. Storage system with multiple flash memory packages and data control method therefor
US8635407B2 (en) * 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20130127274A (ko) * 2012-05-14 2013-11-22 삼성전자주식회사 메모리 오퍼레이션 타이밍 제어 방법 및 이를 이용한 메모리 시스템
KR20140040998A (ko) * 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
US9672167B2 (en) * 2013-07-22 2017-06-06 Futurewei Technologies, Inc. Resource management for peripheral component interconnect-express domains
CN103488583B (zh) * 2013-09-09 2016-08-10 华中科技大学 一种高性能高可靠的固态盘实现方法
CN103744614B (zh) * 2013-12-17 2017-07-07 记忆科技(深圳)有限公司 固态硬盘访问的方法及其固态硬盘
CN105094685B (zh) 2014-04-29 2018-02-06 国际商业机器公司 进行存储控制的方法和设备
JP6018725B2 (ja) 2014-06-27 2016-11-02 華為技術有限公司Huawei Technologies Co.,Ltd. コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
CN104484283B (zh) * 2014-11-27 2018-03-27 记忆科技(深圳)有限公司 一种降低固态硬盘写放大的方法
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables

Also Published As

Publication number Publication date
MX2016012054A (es) 2017-06-19
CN107209719B (zh) 2018-10-09
US20180165014A1 (en) 2018-06-14
KR102013430B1 (ko) 2019-08-22
RU2661280C2 (ru) 2018-07-13
EP3220275A4 (en) 2018-02-28
KR20170083963A (ko) 2017-07-19
EP3220275A1 (en) 2017-09-20
US10761731B2 (en) 2020-09-01
CA2938242A1 (en) 2017-06-03
AU2015381014A1 (en) 2017-06-22
CN107209719A (zh) 2017-09-26
RU2016138160A3 (ja) 2018-04-02
BR112016019305B1 (pt) 2022-08-16
CA2938242C (en) 2017-10-31
EP3220275B1 (en) 2020-11-04
ZA201605526B (en) 2019-04-24
BR112016019305A2 (ja) 2017-10-03
JP2018502343A (ja) 2018-01-25
WO2017092015A1 (zh) 2017-06-08
SG11201606555QA (en) 2017-07-28
MX361249B (es) 2018-11-30
AU2015381014B2 (en) 2018-02-22
RU2016138160A (ru) 2018-04-02

Similar Documents

Publication Publication Date Title
JP6319607B2 (ja) データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法
CN109542333B (zh) 存储器系统及控制非易失性存储器的控制方法
US10198215B2 (en) System and method for multi-stream data write
TWI700586B (zh) 計算機系統及儲存裝置之控制方法
TWI682278B (zh) 記憶體系統及控制方法
TWI674502B (zh) 記憶體系統及控制方法
CN109154917B (zh) 存储系统和固态硬盘
US10761993B2 (en) Method, device and computer program product for managing storage system
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
WO2018040590A1 (zh) 一种文件系统的空间分配方法及装置
JP6526235B2 (ja) データチェック方法および記憶システム
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
JP2016524769A (ja) コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
KR20190111714A (ko) 스토리지 디바이스 및 컴퓨터 시스템
KR102412978B1 (ko) 이중 쓰기를 수행하는 스토리지 시스템 및 그것의 이중 쓰기 방법
JP2017501489A (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180320

R150 Certificate of patent or registration of utility model

Ref document number: 6319607

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250