JP2019508765A - 記憶システムおよびソリッドステートディスク - Google Patents

記憶システムおよびソリッドステートディスク Download PDF

Info

Publication number
JP2019508765A
JP2019508765A JP2018522781A JP2018522781A JP2019508765A JP 2019508765 A JP2019508765 A JP 2019508765A JP 2018522781 A JP2018522781 A JP 2018522781A JP 2018522781 A JP2018522781 A JP 2018522781A JP 2019508765 A JP2019508765 A JP 2019508765A
Authority
JP
Japan
Prior art keywords
die
segment
controller
identifier
solid state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018522781A
Other languages
English (en)
Other versions
JP6667629B2 (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 JP2019508765A publication Critical patent/JP2019508765A/ja
Application granted granted Critical
Publication of JP6667629B2 publication Critical patent/JP6667629B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7211Wear leveling

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

Abstract

本発明の一実施形態は、コントローラとソリッドステートディスクとを備えた記憶システムを提供する。ソリッドステートディスクは複数のチャネルを含み、各チャネルは複数のダイに接続される。コントローラは、予め複数のセグメントを作成し、複数のダイから第1のダイを選択し、複数のセグメントから第1のセグメントを選択し、第1のセグメントの使用可能なオフセットを判定し、書き込み要求を生成し、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のダイに接続されたチャネルの識別子、第1のダイの識別子、第1のセグメントの識別子、および使用可能なオフセットを含み、ソリッドステートディスクに書き込み要求を送信する。ソリッドステートディスクは、書き込み要求を受信し、書き込みアドレスおよびデータ長に従って、目標データを記憶する。本発明によって提供される記憶システムでは、コントローラは、ソリッドステートディスクの記憶空間を効果的に使用することができる。

Description

本出願は、記憶技術の分野に関し、特に、記憶システムおよびソリッドステートディスクに関する。
フラッシュアレイは、ソリッドステートディスクと、コントローラと、を含む記憶システムである。コントローラは、ソリッドステートディスクの記憶空間をセグメント(segment)の形で管理する。セグメントは、連続する論理ブロックアドレスのセグメントがコントローラによって割り当てられた領域であり、セグメントは、ソリッドステートディスク上の連続する論理ブロックアドレスのセグメントにマッピングされ得る。コントローラは、ホストからの書き込み要求を受け取った後、書き込み要求にセグメントを割り当て、割り当てられたセグメントに基づいて新しい書き込み要求を生成し、新しい書き込み要求は、書き込まれるデータと、ソリッドステートディスクのものであり、かつ割り当てられたセグメントに対応する論理ブロックアドレスと、を運び、次いで、ソリッドステートディスクに新しい書き込み要求を送信する。ソリッドステートディスクは、コントローラからの新しい書き込み要求を受信した後、ソリッドステートディスクのポリシーに基づいて物理記憶リソースを選択し、新しい書き込み要求において運ばれたデータを物理記憶リソースに書き込み、次いで、ソリッドステートディスクの論理ブロックアドレスと物理記憶リソースとの間のマッピング関係を記録し、記録されたマッピング関係は、後続のデータ問い合わせの基礎として使用される。
ソリッドステートディスクによる物理記憶リソースの選択プロセスは、ソリッドステートディスクのポリシーに完全に基づいており、コントローラには透明であるため、コントローラがソリッドステートディスクの記憶空間を効果的に使用できないという問題が発生する場合がある。
本発明の実施形態は、ソリッドステートディスクの記憶空間をより効果的かつ適切に使用するための記憶システムおよびソリッドステートディスクを提供する。
第1の実施態様によれば、本発明の一実施形態は記憶システムを提供し、記憶システムはコントローラとソリッドステートディスクとを備え、コントローラはソリッドステートディスクと通信することができ、ソリッドステートディスクは複数のチャネルを含み、複数のチャネルのそれぞれは複数のダイに接続され、コントローラは、予め複数のセグメントを作成し、複数のダイから第1のダイを選択し、複数のセグメントから第1のセグメントを選択し、第1のセグメントの使用可能なオフセットを判定し、書き込み要求を生成し、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のダイに接続されたチャネルの識別子、第1のダイの識別子、第1のセグメントの識別子、および使用可能なオフセットを含み、目標データはソリッドステートディスクに書き込まれるデータであり、ソリッドステートディスクに書き込み要求を送信するように構成され、
ソリッドステートディスクは、書き込み要求を受信し、書き込みアドレスおよび目標データのデータ長に従って、目標データを記憶するように構成される。
本発明の本実施形態では、コントローラは、第1のダイを選択する前に、ホストからの1つ以上のホスト書き込み要求を受信し、各ホスト書き込み要求は、ホスト論理ブロックアドレス、データ、およびデータ長を運び、ホスト論理ブロックアドレスは、ホストがデータを書き込むための開始論理アドレスであり、データは、記憶システムに書き込まれるデータであり、データ長は、データの長さを識別するために使用される。コントローラは、データをキャッシュすることができ、ソリッドステートディスクのページの容量を単位として使用して、ホスト書き込み要求で運ばれたデータの分割および/または結合動作をさらに行って、複数の単位長のデータブロックを生成できる。コントローラは、ホスト書き込み要求を受信した直後に第1のダイを選択するステップを行ってもよいし、第1の条件が満たされた場合に第1のダイを選択するステップを行うことを開始してもよい。第1の条件は、キャッシュされたデータのデータ長が指定された閾値よりも大きいことであってもよいし、コントローラが新しいデータ書き込みサイクルに入ることであってもよい。
第1のダイを選択する前に、コントローラは、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長をさらにまず判定してもよい。目標データは、受信した1つ以上のホスト書き込み要求で運ばれたデータのすべてまたは一部であってもよく、例えば、単位長データブロックのうちの1つ以上であってもよい。具体的な数量は、コントローラによって柔軟に設定することができる。あるいは、コントローラは、第1のセグメントおよび使用可能なオフセットを選択した後に使用可能なオフセットに従って、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長を判定してもよい。ここで、データ長は、第1のセグメントの使用可能な記憶空間のサイズ未満であるべきであり、使用可能なオフセットに基づいて判定され、目標データは、単位長データブロックのうちの1つ以上であってもよい。
第1の実施態様に関連して、第1の実施態様の第1の実装では、コントローラは、複数のダイの状態を記録するようにさらに構成され、コントローラは、複数のダイからステートレスダイを第1のダイとして選択するように特に構成される。
第1の実施態様または第1の実施態様の第1の実装に関連して、第1の実施態様の第2の実装では、コントローラは、目標データのホスト論理ブロックアドレスに基づいて目標データのアクセス頻度を判定するようにさらに構成され、目標データのアクセス頻度がアクセス頻度閾値よりも大きい場合、コントローラは、アクセス頻度閾値よりもアクセス頻度が大きい、含まれるデータ量が第1の閾値未満であるダイを第1のダイとして選択するように特に構成される。
場合により、コントローラは、上述の分割および/または結合動作を行うことによって取得された各単位長データブロックのホスト論理ブロックアドレスに基づいて、各データのアクセス頻度を判定するアクセス頻度テーブルに問い合わせるようにさらに構成され、各データブロックがホットデータであるかコールドデータであるかを問い合わせ結果から識別することができる。次いで、コントローラは、コールドおよびホットデータ分布テーブルに問い合わせし、各ダイに現在既に記憶され、かつコールドおよびホットデータ分布テーブルに記録された、ホットデータの量を第1の閾値と比較し、ホットデータの量が第1の閾値未満であるダイからのダイを第1のダイとして選択し、第1のダイは、ホットデータとして識別される単位長データブロックのうちに1つ以上を記憶するために使用され得る。場合により、複数のダイに現在記憶されているホットデータの量がすべて第1の閾値未満であることが分かった場合、コントローラは、最も少ない量のホットデータを現在記憶しているダイを第1のダイとして選択することができる。場合により、複数のダイに現在記憶されているホットデータの量が第1の閾値未満であることが分かった場合、コントローラはまた、第1の実施態様の上述の第1の実装、または後述する第1の実施態様の第3、第4、もしくは第5の実装のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを選択できる。場合により、複数の第1のダイも選択することができ、各第1のダイは、ホットデータである複数の単位長データブロックのいくつかを記憶するために使用される。
第1の実施態様または第1の実施態様の上述の実装のいずれか1つに関連して、第1の実施態様の第3の実装では、コントローラは、複数のダイのそれぞれに記憶された有効データ量を記録するようにさらに構成され、コントローラは、有効データ量が第2の閾値未満であるダイを第1のダイとして選択するように特に構成される。
第1の実施態様または第1の実施態様の上述の実装のいずれか1つに関連して、第1の実施態様の第4の実装では、コントローラは、複数のダイのそれぞれの疲弊度を記録するようにさらに構成され、コントローラは、疲弊度が疲弊度閾値未満のダイを第1のダイとして選択するように特に構成される。
第1の実施態様または第1の実施態様の第1から第4の実装のいずれか1つに関連して、第1の実施態様の第5の実装では、コントローラは、複数のダイのそれぞれで処理される読み出し要求の量を記録するようにさらに構成され、コントローラは、処理される読み出し要求がないダイを第1のダイとして選択する、または処理される読み出し要求の量が第3の閾値未満であるダイを第1のダイとして選択するように特に構成される。
第1の実施態様または第1の実施態様の上述の実装のいずれか1つに関連して、第1の実施態様の第6の実装では、コントローラは、特定のセグメントが第1のダイに既に割り当てられ、使用可能な記憶空間を有する場合、特定のセグメントを第1のセグメントとして選択する、または複数のセグメントからブランクセグメントを第1のセグメントとして選択するように特に構成される。
場合により、コントローラが、第1のセグメントを選択し、使用可能なオフセットを判定した後に、使用可能なオフセットに基づいて目標データおよびデータ長を判定することは、具体的には、使用可能なオフセットに基づいて、第1のセグメントにおける現在の残りの使用可能な記憶空間を判定するステップであって、書き込み要求における目標データの長さは、残りの使用可能な記憶空間のサイズを超えることはできない、ステップと、判定されたデータ長に基づいて目標データを選択するステップであって、目標データは、単位長データブロックのうちの1つ以上であり得る、ステップと、である。
場合により、上述したように、目標データおよび目標データのデータ長はまた、第1のダイを選択する前にコントローラによって判定されてもよい。この場合、コントローラは、書き込み要求を生成する前に、目標データの判定されたデータ長と、第1のセグメントの使用可能なオフセットに基づいて判定される第1のセグメントの使用可能な記憶空間と、をまず比較してもよい。目標データのデータ長が第1のセグメントの使用可能な記憶空間のサイズ未満である場合、目標データおよび目標データのデータ長は直接書き込み要求に含められる。目標データのデータ長が第1のセグメントの使用可能な記憶空間のサイズよりも大きい場合、コントローラは、第1のセグメントの使用可能な記憶空間のサイズに従って、目標データを2つのサブブロックに分割する必要があり、第1のサブブロックのデータ長は、第1のセグメントの使用可能な記憶空間のサイズ以下であり、第2のサブブロックは、目標データにおける第1のサブブロック以外の残りの部分である。この場合、コントローラは、書き込み要求を生成する際に、分割により取得された第1のサブブロックおよび第1のサブブロックの対応するデータ長を、それぞれ、目標データおよび目標データのデータ長として、書き込み要求に含める。第2のサブブロックについては、第1のセグメントを選択し、使用可能なオフセットを判定するステップと、書き込み要求を生成するステップとを繰り返し行うことができる、または場合により、第1のダイを選択し、第1のセグメントを選択し、使用可能なオフセットを確認するステップと、書き込み要求を生成するステップと、を繰り返し行うことができる。
第1の実施態様または第1の実施態様の上述の実装のいずれか1つに関連して、第1の実施態様の第7の実装では、コントローラは、マッピング関係を生成し、マッピング関係は、目標データのホスト論理ブロックアドレスと、第1のダイに接続されたチャネル、第1のダイ、第1のセグメント、および使用可能なオフセットと、の間のマッピングを記録するように構成され、マッピング関係をシステムマッピングテーブルに記憶するようにさらに構成される。
第1の実施態様または第1の実施態様の上述の実装のいずれか1つに関連して、第1の実施態様の第8の実装では、ソリッドステートディスクは、書き込みアドレスに含まれた第1のセグメントの識別子および使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、ローカルマッピングテーブルは、ソリッドステートディスクのセグメントと物理ブロックアドレスとの間のマッピング関係を記憶するように構成され、ローカルマッピングテーブルに第1のセグメントに対応するブロックが記録されている場合、書き込みアドレスに含まれた使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブロックに書き込むように特に構成される、さもなければ、第1のダイに接続されたチャネルの識別子と第1のダイの識別子とに基づいて、第1のダイの複数のブロックからブランクブロックを選択し、書き込みアドレスに含まれる使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブランクブロックに書き込むように特に構成される。
第1の実施態様の第8の実装に関連して、第1の実施態様の第9の実装では、ソリッドステートディスクは、新しいマッピング関係を生成し、新しいマッピング関係は、第1のセグメントとブランクブロックとの間のマッピングを記録するように構成され、新しいマッピング関係をローカルマッピングテーブルに記憶するようにさらに構成される。
場合により、ローカルマッピングテーブルは、多次元アレイのローカルマッピングテーブルであってもよいし、複数のレベルのローカルマッピングテーブルであってもよい。
場合により、ローカルマッピングテーブルはまた、「セグメント+使用可能なオフセット」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピング関係を記憶することができ、ソリッドステートディスクの物理ブロックアドレスは、ブロック識別子とページ識別子とを含む。
本発明の本実施形態では、ソリッドステートディスクに書き込むデータがある場合、コントローラは、第1のダイを選択する必要があり、書き込む目標データが第1のダイに含まれるブロックに記憶されるべきであることが要求され、その後、ソリッドステートディスクは、目標データを記憶するために第1のダイの範囲内に物理的な記憶リソースを割り当てる必要がある。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。さらに、第1のダイを選択する際に、コントローラは、ソリッドステートディスクに書き込むデータのための最適なダイを選択するために、選択ポリシー、例えば、ダイの状態、データアクセス頻度、ダイの有効データ量、ダイの疲弊度、およびダイで処理される読み出し要求などの要因のうちの1つ以上を柔軟に使用でき、その結果、コントローラは、ソリッドステートディスクの記憶空間を有効に使用できる。
第2の実施態様によれば、本発明の一実施形態は別の記憶システムを提供し、記憶システムはコントローラとソリッドステートディスクとを備え、コントローラはソリッドステートディスクと通信することができ、ソリッドステートディスクは複数のチャネルを含み、複数のチャネルのそれぞれは複数のダイに接続され、コントローラは、複数のセグメントを作成し、複数のダイから第1のダイを選択し、複数のセグメントから第1のセグメントを選択し、第1のセグメントの使用可能なオフセットを判定し、書き込み要求を生成し、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のセグメントの識別子および使用可能なオフセットを含み、第1のセグメントの識別子は、第1のダイの識別子および第1のダイに接続されたチャネルの識別子を含み、第1のダイが属するソリッドステートディスクに書き込み要求を送信するように構成され、ソリッドステートディスクは、書き込み要求を受信し、書き込みアドレスおよび目標データのデータ長に従って、目標データを記憶するように構成される。
第2の実施態様に関連して、本発明の本実施形態は、第2の実施態様の第1の実装から第5の実装をさらに提供する。第2の実施態様の第1の実装から第5の実装は、第1の実施態様の第1の実装から第5の実装とそれぞれ同じであり、ここではこれ以上説明しない。
第2の実施態様または第2の実施態様の上述の実装のいずれか1つに関連して、第2の実施態様の第6の実装では、コントローラは、マッピング関係を生成し、マッピング関係は、目標データのホスト論理ブロックアドレスと、第1のセグメントおよび使用可能なオフセットと、の間のマッピングを記録するように構成され、マッピング関係をシステムマッピングテーブルに記憶するようにさらに構成される。
第2の実施態様または第2の実施態様の上述の実装のいずれか1つに関連して、第2の実施態様の第7の実装では、ソリッドステートディスクは、書き込みアドレスに含まれた第1のセグメントの識別子および使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、ローカルマッピングテーブルは、ソリッドステートディスクのセグメントと物理ブロックアドレスとの間のマッピング関係を記憶するように構成され、ローカルマッピングテーブルに第1のセグメントに対応するブロックが記録されている場合、書き込みアドレスに含まれた使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブロックに書き込むように特に構成される、さもなければ、第1のセグメントの識別子を解析して、第1のダイに接続されたチャネルの識別子および第1のダイの識別子を取得し、第1のダイに接続されたチャネルの識別子と第1のダイの識別子とに基づいて、第1のダイの複数のブロックからブランクブロックを選択し、書き込みアドレスに含まれる使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブランクブロックに書き込むように特に構成される。
第3の実施態様によれば、本発明の一実施形態は、ソリッドステートディスクを提供し、ソリッドステートディスクは、プロセッサ、メモリ、通信インターフェース、および複数のチャネルを含み、プロセッサおよびメモリは、複数のチャネルのそれぞれを介して、複数のダイにそれぞれ接続され、複数のダイのそれぞれが複数のブロックを含み、プロセッサ、メモリ、および通信インターフェースが互いに通信することができ、通信インターフェースは、書き込み要求を受信するように構成され、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のダイの識別子、第1のダイに接続されたチャネルの識別子、第1のセグメントの識別子、および使用可能なオフセットを含み、
メモリは、ローカルマッピングテーブルを記憶するように構成され、ローカルマッピングテーブルは、セグメントとソリッドステートディスクの物理ブロックアドレスとの間のマッピング関係を記録するように構成され、ソリッドステートディスクの物理ブロックアドレスは、ブロック識別子を含み、
プロセッサは、書き込みアドレスに含まれた第1のセグメントの識別子および使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、ローカルマッピングテーブルに第1のセグメントに対応するブロックが記録されている場合、使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブロックに書き込むように構成される、さもなければ、第1のダイに接続されたチャネルの識別子と第1のダイの識別子とに基づいて、第1のダイの複数のブロックからブランクブロックを選択し、書き込みアドレスに含まれる使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブランクブロックに書き込むように構成される。
第3の実施態様に関連して、第3の実施態様の第1の実装では、プロセッサは、新しいマッピング関係を生成し、新しいマッピング関係は、第1のセグメントとブランクブロックとの間のマッピングを記録するように構成され、新しいマッピング関係をローカルマッピングテーブルに記憶するようにさらに構成される。
場合により、ローカルマッピングテーブルは、多次元アレイのローカルマッピングテーブルであってもよいし、複数のレベルのローカルマッピングテーブルであってもよい。
場合により、ローカルマッピングテーブルはまた、「セグメント+使用可能なオフセット」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピング関係を記憶することができ、ソリッドステートディスクの物理ブロックアドレスは、ブロック識別子とページ識別子とを含む。
第4の実施態様によれば、本発明の一実施形態は、ソリッドステートディスクを提供し、ソリッドステートディスクは、プロセッサ、メモリ、通信インターフェース、および複数のチャネルを含み、プロセッサおよびメモリは、複数のチャネルのそれぞれを介して、複数のダイにそれぞれ接続され、複数のダイのそれぞれが複数のブロックを含み、プロセッサ、メモリ、および通信インターフェースが互いに通信することができ、
通信インターフェースは、書き込み要求を受信するように構成され、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のセグメントの識別子および使用可能なオフセットを含み、第1のセグメントの識別子は、第1のダイの識別子および第1のダイに接続されたチャネルの識別子を運び、
メモリは、ローカルマッピングテーブルを記憶するように構成され、ローカルマッピングテーブルは、セグメントとソリッドステートディスクの物理ブロックアドレスとの間のマッピング関係を記録するように構成され、ソリッドステートディスクの物理ブロックアドレスは、ブロック識別子を含み、
プロセッサは、書き込みアドレスに含まれた第1のセグメントの識別子および使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、ローカルマッピングテーブルに第1のセグメントに対応するブロックが記録されている場合、使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブロックに書き込むように構成される、さもなければ、
第1のセグメントの識別子を解析して、第1のダイの識別子および第1のダイに接続されたチャネルの識別子を取得し、第1のダイに接続されたチャネルの識別子と第1のダイの識別子とに基づいて、第1のダイの複数のブロックからブランクブロックを選択し、書き込みアドレスに含まれる使用可能なオフセットに従って、ページ識別子を判定し、目標データのデータ長に基づいて、かつページ識別子に対応するページから開始して、目標データをブランクブロックに書き込むように特に構成される。
第4の実施態様に関連して、第4の実施態様の第1の実装では、プロセッサは、新しいマッピング関係を生成し、新しいマッピング関係は、第1のセグメントとブランクブロックとの間のマッピングを記録するように構成され、新しいマッピング関係をローカルマッピングテーブルに記憶するようにさらに構成される。
場合により、ローカルマッピングテーブルは、多次元アレイのローカルマッピングテーブルであってもよいし、複数のレベルのローカルマッピングテーブルであってもよい。
場合により、ローカルマッピングテーブルはまた、「セグメント+使用可能なオフセット」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピング関係を記憶することができ、ソリッドステートディスクの物理ブロックアドレスは、ブロック識別子とページ識別子とを含む。
第5の実施態様によれば、本発明の一実施形態はソリッドステートディスクにデータを書き込むための方法を提供し、本方法は、記憶システムに適用可能であり、記憶システムはコントローラとソリッドステートディスクとを備え、コントローラはソリッドステートディスクと通信することができ、ソリッドステートディスクは複数のチャネルを含み、複数のチャネルのそれぞれは複数のダイに接続され、コントローラは、予め複数のセグメントを作成し、本方法は、
コントローラによって、複数のダイから第1のダイを選択するステップと、
コントローラによって、複数のセグメントから第1のセグメントを選択し、第1のセグメントの使用可能なオフセットを判定するステップと、
コントローラによって、書き込み要求を生成するステップであって、書き込み要求は、書き込みアドレス、目標データ、および目標データのデータ長を含み、書き込みアドレスは、第1のダイに接続されたチャネルの識別子、第1のダイの識別子、第1のセグメントの識別子、および使用可能なオフセットを含む、ステップと、
コントローラによって、ソリッドステートディスクに書き込み要求を送信するステップと、
を含む。
本発明の本実施形態では、コントローラは、第1のダイを選択する前に、ホストからの1つ以上のホスト書き込み要求を受信し、各ホスト書き込み要求は、ホスト論理ブロックアドレス、データ、およびデータ長を運び、ホスト論理ブロックアドレスは、ホストがデータを書き込むための開始論理ブロックアドレスであり、データは、記憶システムに書き込まれるデータであり、データ長は、データの長さを識別するために使用される。コントローラは、データをキャッシュすることができ、ソリッドステートディスクのページの容量を単位として使用して、ホスト書き込み要求で運ばれたデータの分割および/または結合動作を行って、複数の単位長のデータブロックを生成できる。コントローラは、ホスト書き込み要求を受信した直後に第1のダイを選択するステップを行ってもよいし、第1の条件が満たされた場合に第1のダイを選択するステップを行うことを開始してもよい。第1の条件は、キャッシュされたデータのデータ長が指定された閾値よりも大きいことであってもよいし、コントローラが新しいデータ書き込みサイクルに入ることであってもよい。
第1のダイを選択する前に、コントローラは、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長をさらにまず判定してもよい。目標データは、単位長データブロックのうちの1つ以上であってもよい。具体的な数量は、コントローラによって柔軟に設定することができる。あるいは、コントローラは、第1のセグメントおよび使用可能なオフセットを選択した後に、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長を判定してもよい。ここで、データ長は、第1のセグメントにある使用可能な記憶空間未満であるべきであり、使用可能なオフセットに基づいて確認され、目標データは、単位長データブロックのうちの1つ以上であってもよい。
第5の実施態様に関連して、第5の実施態様の第1の実装では、第1のダイはステートレスダイである。
第5の実施態様または第5の実施態様の第1の実装に関連して、第5の実施態様の第2の実装では、コントローラは、目標データのホスト論理ブロックアドレスに基づいて目標データのアクセス頻度を判定し、目標データのアクセス頻度がアクセス頻度閾値よりも大きい場合、第1のダイに記憶され、かつアクセス頻度閾値よりもアクセス頻度が大きい、データ量が第1の閾値未満である。
場合により、コントローラは、上述の分割および/または結合動作を行うことによって取得された各単位長データブロックのホスト論理ブロックアドレスに基づいて、各データのアクセス頻度を判定するアクセス頻度テーブルに問い合わせるようにさらに構成され、各データブロックがホットデータであるかコールドデータであるかを問い合わせ結果から識別することができる。次いで、コントローラ1は、コールドおよびホットデータ分布テーブルに問い合わせし、各ダイに現在既に記憶され、かつコールドおよびホットデータ分布テーブルに記録された、ホットデータの量を第1の閾値と比較し、ホットデータの量が第1の閾値未満であるダイからのダイを第1のダイとして選択し、第1のダイは、ホットデータとして識別される単位長データブロックのうちに1つ以上を記憶するために使用され得る。場合により、複数のダイに現在記憶されているホットデータの量が第1の閾値未満であることが分かった場合、コントローラは、最も少ない量のホットデータを現在記憶しているダイを第1のダイとして選択することができる。場合により、複数のダイに現在記憶されているホットデータの量がすべて第1の閾値未満であることが分かった場合、コントローラはまた、第1の実施態様の上述の第1の実装、または第1の実施態様の第3、第4、もしくは第5の実装のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを選択できる。場合により、複数の第1のダイも選択することができ、各第1のダイは、ホットデータである複数の単位長データブロックのいくつかを運ぶために使用される。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第3の実装では、第1のダイに記憶された有効データ量は、第2の閾値未満である。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第4の実装では、第1のダイの疲弊度は、疲弊度閾値未満である。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第5の実装では、第1のダイには処理される読み出し要求がない、または第1のダイにおける処理される読み出し要求の量が第3の閾値未満である。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第6の実装では、第1のセグメントは、ブランクセグメントである。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第7の実装では、第1のセグメントは、第1のダイに既に割り当てられ、第1のセグメントには使用可能な記憶空間がある。
場合により、コントローラが、第1のセグメントを選択し、使用可能なオフセットを判定した後に、使用可能なオフセットに基づいて目標データおよびデータ長を判定することは、具体的には、使用可能なオフセットに基づいて、第1のセグメントにおける現在の残りの使用可能な記憶空間を判定するステップであって、書き込み要求における目標データの長さは、残りの使用可能な記憶空間を超えることはできない、ステップと、判定されたデータ長に基づいて目標データを選択するステップであって、目標データは、単位長データブロックのうちの1つ以上であり得る、ステップと、である。
場合により、上述したように、目標データおよび目標データのデータ長はまた、第1のダイを選択する前にコントローラによって判定されてもよい。この場合、コントローラは、書き込み要求を生成する前に、目標データの判定されたデータ長と、第1のセグメントの使用可能なオフセットに基づいて判定される第1のセグメントの使用可能な記憶空間のサイズと、をまず比較してもよい。目標データのデータ長が第1のセグメントの使用可能な記憶空間のサイズ未満である場合、目標データおよび目標データのデータ長は直接書き込み要求に含められる。目標データのデータ長が第1のセグメントの使用可能な記憶空間のサイズよりも大きい場合、コントローラは、第1のセグメントの使用可能な記憶空間に従って、目標データを2つのサブブロックに分割する必要があり、第1のサブブロックのデータ長は、第1のセグメントの使用可能な記憶空間のサイズ以下であり、第2のサブブロックは、目標データにおける第1のサブブロック以外の残りの部分である。この場合、コントローラは、書き込み要求を生成する際に、分割により取得された第1のサブブロックおよび第1のサブブロックの対応するデータ長を、それぞれ、目標データおよび目標データのデータ長として、書き込み要求に含める。第2のサブブロックについては、第1のセグメントを選択し、使用可能なオフセットを確認するステップと、書き込み要求を生成するステップとを繰り返し行うことができる、または場合により、第1のダイを選択し、第1のセグメントを選択し、使用可能なオフセットを確認するステップと、書き込み要求を生成するステップと、を繰り返し行うことができる。
第5の実施態様または第5の実施態様の上述の実装のいずれか1つに関連して、第5の実施態様の第8の実装では、コントローラは、マッピング関係を生成し、マッピング関係は、目標データのホスト論理ブロックアドレスと、第1のダイに接続されたチャネル、第1のダイ、第1のセグメント、および使用可能なオフセットと、の間のマッピングを記録するように構成され、マッピング関係をシステムマッピングテーブルに記憶する。
本発明の本実施形態では、ソリッドステートディスクに書き込むデータがある場合、コントローラは、第1のダイを選択する必要があり、書き込む目標データが第1のダイに含まれるブロックに記憶されるべきであることを示す。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。さらに、第1のダイを選択する際に、コントローラは、ソリッドステートディスクに書き込むデータのための最適なダイを選択するために、選択ポリシー、例えば、ダイの状態、データアクセス頻度、ダイの有効データ量、ダイの疲弊度、およびダイで処理される読み出し要求などの要因のうちの1つ以上を柔軟に使用でき、その結果、コントローラは、ソリッドステートディスクの記憶空間を有効に使用できる。
第6の実施態様によれば、本発明の一実施形態は、コントローラを提供し、コントローラは、プロセッサと、メモリと、第2の通信インターフェースと、を備える。メモリはプログラム命令を記憶する。プロセッサは、具体的には本出願の第1、第2および第5の実施態様で説明したような、コントローラの様々な処理動作を完了するためにプログラム命令を実行するように構成される。メモリは、システムマッピングテーブルを記憶するようにさらに構成される。第2の通信インターフェースは、ソリッドステートディスクと通信するように構成される。第2の通信インターフェースを使用することによって、プロセッサは、書き込み要求または読み出し要求などの動作命令をソリッドステートディスクに送信し、ソリッドステートディスクから様々なメッセージを受信することができる。コントローラは、第1の通信インターフェースをさらに備え、第1の通信インターフェースは、ホストと通信するように構成される。コントローラは、第1の通信インターフェースを用いて、ホストの読み出し要求またはホストの書き込み要求などのホストの動作命令を受信し、処理命令をプロセッサに渡して処理するようにしてもよい。第1の通信インターフェースは、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し失敗メッセージ、または読み出されたデータなどのメッセージをホストに送信するようにさらに構成される。第1の通信インターフェースは、ホストバスアダプタカードであってもよい。メモリは、ホストから第1の通信インターフェースが受信したホスト書き込み要求で運ばれたデータをキャッシュする、またはソリッドステートディスクから読み出されたデータをキャッシュするようにさらに構成されてもよい。
第7の実施態様によれば、本発明の一実施形態は、コントローラを提供し、コントローラは、第1の通信モジュールと、記憶モジュールと、ダイ選択モジュールと、セグメント選択モジュールと、処理モジュールと、第2の通信モジュールと、を備える。第1の通信モジュールは、ホストと通信し、ホストの読み出し要求またはホスト書き込み要求などのホストの動作命令を受信するように構成され、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し失敗メッセージ、または読み出されたデータなどのメッセージをホストに送信するようにさらに構成される。
記憶モジュールは、ホストから第1の通信モジュールによって受信されたホスト書き込み要求で運ばれるデータをキャッシュするように構成されてもよい。
処理モジュールは、キャッシュされたデータに対して分割および/または結合動作を行って、単位長(例えば16KBなど)のデータブロックおよび各データブロックのホスト論理ブロックアドレスを生成するように構成されてもよく、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長を判定するように構成されてもよく、複数のセグメントを作成し、複数の作成されたセグメントに関する基本情報を記憶モジュールに記憶するようにさらに構成されてもよい。
ダイ選択モジュールは、第1のダイを選択するように構成される。詳細については、本出願の第1の実施態様の第1〜第5の実装、第2の実施態様の第1〜第5の実装、および第5の実施態様の第1〜第5の実装を参照されたい。
セグメント選択モジュールは、第1のセグメントを選択し、使用可能なオフセットを判定するように構成される。詳細については、本出願の第1の実施態様の第6の実装、第2の実施態様の第6の実装、および第5の実施態様の第6および第7の実装を参照されたい。
処理モジュールは、ダイ選択モジュールによって選択された第1のダイ、ならびにセグメント選択モジュールによって選択された第1のセグメントおよび判定された使用可能なオフセットに従って、書き込み要求を生成するようにさらに構成される。場合により、処理モジュールは、第1のセグメントの使用可能なオフセットの値に従って、目標データおよび目標データのデータ長を判定し、目標データおよび目標データのデータ長に基づいて、書き込み要求を生成するようにさらに構成され、システムマッピングテーブルを生成し、リアルタイムでシステムマッピングテーブルを更新するようにさらに構成される。詳細については、本出願の第1、第2、および第5の実施態様の様々な実装を参照されたい。
記憶モジュールは、システムマッピングテーブルを記憶するようにさらに構成される。
第2の通信モジュールは、ソリッドステートディスクと通信するように構成される。第2の通信モジュールを使用することによって、処理モジュールは、書き込み要求および読み出し要求などの様々な動作コマンドをソリッドステートディスクに送信し、ソリッドステートディスクから様々なメッセージを受信することができる。
処理モジュールは、ホストから第1の通信モジュールが受信したホスト読み出し要求に従って、システムマッピングテーブルに問い合わせ、第2の読み出し要求を生成し、第2の通信モジュールを使用して第2の読み出し要求をソリッドステートディスクに送信するようにさらに構成される。第2の通信モジュールは、ソリッドステートディスクから返された読み出されたデータを受信する。記憶モジュールは、読み出されたデータをキャッシュするようにさらに構成される。処理モジュールは、第1の通信モジュールを使用することによって、読み出されたデータをホストに送信するようにさらに構成される。
第8の実施態様によれば、本発明の一実施形態は、ソリッドステートディスクを提供し、ソリッドステートディスクは、通信モジュールと、キャッシュモジュールと、処理モジュールと、記憶モジュールと、を備える。
通信モジュールは、コントローラと通信し、コントローラからの書き込み要求、読み出し要求、または別の命令などのメッセージを受信するように構成され、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し成功メッセージ、または読み出し失敗メッセージなどのメッセージをコントローラに送信するようにさらに構成される。
キャッシュモジュールは、コントローラから通信モジュールが受信したメッセージで運ばれたデータをキャッシュするように構成される。
処理モジュールは、予めローカルマッピングテーブルを生成するように構成され、ローカルマッピングテーブルは、キャッシュモジュールに記憶されてもよいし、記憶モジュールに記憶されてもよく、使用のために必要なときに、処理モジュールによって読み出され、キャッシュモジュールにキャッシュされ、また通信モジュールが受信した書き込み要求を処理するようにさらに構成される。詳細については、本出願の第1の実施態様の第8の実装、第2の実施態様の第7の実装、第3の実施態様、および第4の実施態様を参照されたい。
処理モジュールは、新しいマッピング関係を生成し、マッピング関係をローカルマッピングテーブルに記憶するようにさらに構成される。詳細については、本出願の第1の実施態様の第9の実装を参照されたい。
処理モジュールは、通信モジュールが受信した読み出し要求に基づいて、ローカルマッピングテーブルに問い合わせ、問い合わせ結果に基づいて記憶モジュールからデータを読み出し、通信モジュールを使用して読み出されたデータをホストに送信するようにさらに構成される。
第9の実施態様によれば、本発明の一実施形態は、記憶媒体を提供し、記憶媒体はプログラムを記憶する。コンピューティングデバイスがプログラムを実行すると、コンピューティングデバイスは、第1の実施態様または第1の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第2の実施態様または第2の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第5の実施態様または第5の実施態様の各実装のいずれか1つに記載のソリッドステートディスクにデータを書き込むための方法を行う、または第6の実施態様または第6の実施態様の各実装のいずれか1つに記載のコントローラの動作を行う、または第7の実施態様または第7の実施態様の各実装のいずれか1つに記載のコントローラの動作を行う。記憶媒体は、フラッシュメモリ、HDD、またはSSDを含むが、これに限定されるものではない。
第10の実施態様によれば、本発明の一実施形態は、記憶媒体を提供し、記憶媒体はプログラムを記憶する。コンピューティングデバイスがプログラムを実行すると、コンピューティングデバイスは、第1の実施態様または第1の実施態様の各実装のいずれか1つに記載の記憶システムにおけるソリッドステートディスクの処理動作を行う、または第2の実施態様または第2の実施態様の各実装のいずれか1つに記載の記憶システムにおけるソリッドステートディスクの処理動作を行う、または第3の実施態様または第3の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う、または第4の実施態様または第4の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う、または第8の実施態様または第8の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う。記憶媒体は、フラッシュメモリ、HDD、またはSSDを含むが、これに限定されるものではない。
第11の実施態様によれば、本発明の一実施形態は、コンピュータプログラム製品を提供し、コンピュータプログラム製品は、プログラム命令を含む。コンピュータがコンピュータプログラム製品を実行すると、コンピュータは、第1の実施態様または第1の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第2の実施態様または第2の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第5の実施態様または第5の実施態様の各実装のいずれか1つに記載のソリッドステートディスクにデータを書き込むための方法を行う、または第6の実施態様または第6の実施態様の各実装のいずれか1つに記載のコントローラが行う動作を行う、または第7の実施態様または第7の実施態様の各実装のいずれか1つに記載のコントローラが行う動作を行う。コンピュータプログラム製品は、ソフトウェアインストールパッケージであってもよい。
第12の実施態様によれば、本発明の一実施形態は、コンピュータプログラム製品を提供し、コンピュータプログラム製品は、プログラム命令を含む。コンピュータがコンピュータプログラム製品を実行すると、コンピュータは、第1の実施態様または第1の実施態様の各実装のいずれか1つに記載の記憶システムにおけるソリッドステートディスクの処理動作を行う、または第2の実施態様または第2の実施態様の各実装のいずれか1つに記載の記憶システムにおけるソリッドステートディスクの処理動作を行う、または第3の実施態様または第3の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う、または第4の実施態様または第4の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う、または第8の実施態様または第8の実施態様の各実装のいずれか1つに記載のソリッドステートディスクの動作を行う。
本発明の実施形態では、ソリッドステートディスクに書き込むデータがある場合、コントローラは、第1のダイを選択する必要があり、書き込む目標データが第1のダイに含まれるブロックに記憶されるべきであることが要求され、その後、ソリッドステートディスクは、目標データを記憶するために第1のダイの範囲内に物理的な記憶リソースを割り当てる必要がある。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。さらに、第1のダイを選択する際に、コントローラは、ソリッドステートディスクに書き込むデータのための最適なダイを選択するために、選択ポリシー、例えば、ダイの状態、データアクセス頻度、ダイの有効データ量、ダイの疲弊度、およびダイで処理される読み出し要求などの要因のうちの1つ以上を柔軟に使用でき、その結果、コントローラは、ソリッドステートディスクの記憶空間を有効に使用できる。
本発明の実施形態における技術的な解決策をより明確に説明するために、以下、実施形態に必要な添付の図面を簡単に説明する。
本発明の一実施形態による、適用シナリオの図である。 本発明の一実施形態によるソリッドステートディスクの構成図である。 本発明の一実施形態によるソリッドステートディスクによる記憶システムへのアクセスの初期化流れ図である。 本発明の一実施形態によるコントローラによる書き込み要求を処理するための方法の流れ図である。 本発明の一実施形態によるソリッドステートディスクによる書き込み要求を処理するための方法の流れ図である。 本発明の一実施形態による記憶システムにおける読み出し要求を処理するための方法の流れ図である。 本発明の一実施形態によるコントローラの構成図である。 本発明の一実施形態による別のコントローラの論理構成図である。 本発明の一実施形態による別のソリッドステートディスクの論理構成図である。
本発明の実施形態は、ソリッドステートディスクの記憶空間を効果的かつ適切に使用するための記憶システムおよびソリッドステートディスクを提供する。
図1は、本発明の一実施形態による記憶システムの構成図を示す。記憶システムは、コントローラ100と、ソリッドステートディスク200と、を備える。実際のネットワーキングでは、複数のソリッドステートディスク200が存在し得る。
例えば、コントローラ100とホスト(図示せず)との間では、ストレージエリアネットワーク(Storage Area Network、SAN)を使用することによって、またはイーサネット(登録商標)、ローカルエリアネットワーク、またはワイドエリアネットワークなどの別のネットワークを使用することによって、通信を行うことができる。コントローラ100は、サーバまたはデスクトップコンピュータなどのコンピューティングデバイスであってもよい。コントローラ100には、オペレーティングシステムおよびアプリケーションプログラムがインストールされていてもよい。コントローラ100は、ホストから入出力(I/O)要求を受信することができる。コントローラ100は、I/O要求で運ばれるデータ(もしあれば)をさらに記憶し、任意のソリッドステートディスク200にデータを書き込むことができる。
図1は、説明のための例としてのみ使用される。実際の適用では、記憶システムは複数のコントローラを含むことができる。各コントローラの物理的構造および機能は、コントローラ100のものと同様である。コントローラ間、および各コントローラとソリッドステートディスク200との間で相互通信を行うことができる。本実施形態では、コントローラの数、コントローラ間の接続モード、および任意のコントローラとソリッドステートディスク200との間の接続モードは限定されない。
コントローラ100は、記憶システム内のシステムコントローラである。システムコントローラは、一般に独立したデバイスである。特に指定のない限り、本実施形態のコントローラはシステムコントローラである。
図2に示すように、図2は、本発明の一実施形態によるソリッドステートディスク200の概略的な構成図である。ソリッドステートディスク200は、通信インターフェース2001と、プロセッサ2002と、メモリ2003と、を備える。通信インターフェース2001、プロセッサ2002、およびメモリ2003は、相互に通信可能である。ソリッドステートディスク200は、複数のフラッシュ(Flash)チップをさらに含む。複数のフラッシュチップは、ソリッドステートディスク200の記憶媒体である。ソリッドステートディスク200は、複数のチャネル(Channel)をさらに含む。プロセッサ2002およびメモリ2003は、各チャネルを介して複数のフラッシュチップの一部とそれぞれ通信する。
通信インターフェース2001は、コントローラ100と通信し、コントローラ100からの書き込み要求、読み出し要求、または別のコマンドなどのメッセージを受信するように構成され、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し成功メッセージ、または読み出し失敗メッセージなどのメッセージをコントローラ100に送信するようにさらに構成される。
メモリ2003は、コントローラ100が受信したメッセージで運ばれたデータまたはフラッシュチップから読み出されたデータをキャッシュするように構成される。メモリ2003は、RAM、ROM、フラッシュメモリ(Flash memory)、またはソリッドステートディスク(Solid State Disk、SSD)などのデータを記憶することができる非一時的(non−transitory)機械可読媒体であってもよい。このことは、本明細書において限定されない。メモリはプログラム命令をさらに記憶することができる。
プロセッサ2002は、中央処理装置CPUまたは特定用途向け集積回路ASIC(Application−Specific Integrated Circuit)であってもよいし、本発明の本実施形態を実装するための1つ以上の集積回路として構成されてもよい。本発明の本実施形態では、プロセッサ2002は、メモリ2003に記憶されたプログラム命令を実行して、対応する処理、例えば、コントローラ100からのメッセージ(読み出し要求または書き込み要求など)、および例えばローカルマッピングテーブルの作成および更新、またはガベージ・コレクションなどのソリッドステートディスクの様々な管理動作を処理するように構成することができる。詳細については、以下の方法の実施形態の詳細な説明を参照されたい。ここで、プログラム命令を実行することによってプロセッサ2002によって作成および更新されたローカルマッピングテーブルは、メモリ2003に記憶されてもよい。
図2に示すように、ソリッドステートディスク200では、プロセッサ2002およびメモリ2003は、各チャネルを介して複数のフラッシュチップの一部とそれぞれ通信する。チャネルは互いに独立しており、メッセージの同時処理を実装できる。つまり、プロセッサ2002は、各チャネルを使用することによって異なるフラッシュチップでメッセージまたはデータ伝送を別々に行うことができる。図2の例では、ソリッドステートディスクは16チャネルを有する。しかしながら、当業者は、本発明の本実施形態では、ソリッドステートディスク内のチャネルの数が限定されないことを理解されよう。
フラッシュチップは、単層セル(SLC)であってもよいし、多層セル(MLC)であってもよいし、別の記憶装置であってもよい。各フラッシュチップは、1つ以上のダイ(DIE)を含む。各ダイはMブロック(Block)を含む。各ブロックはNページ(Page)を含む。当業者であれば、ソリッドステートディスクの各フラッシュチップに含まれるダイの数量、各ダイに含まれるブロック数M、各ブロックに含まれるページ数Nは、フラッシュチップ、ダイ、ブロック、およびページの異なる容量設定に基づいて、異なる値に設定することができることを理解されよう。例えば、各ページの容量が16KBに設定され、各ブロックの容量が8MBに設定されている場合、Nの値は512に設定される、つまり、各ブロックは512ページを含むことができ、各ダイの容量が16GBに設定されている場合、Mの値は2048である、つまり、各ダイは2048ブロックを含むことができる。例えば、各フラッシュチップが2つのダイを含む場合、各フラッシュチップの容量は32GBであり、各チャネルが4つのフラッシュチップに接続されている場合、8つのダイがチャネルに接続され得ることを示し、この場合、各チャネルで管理される容量は128GBである。図2を参照すると、ソリッドステートディスクが16チャネルを含む場合、ソリッドステートディスクの総容量は2TBである。当業者であれば、ソリッドステートディスクでは、各書き込み動作がページの単位でデータを書き込むことであり、各読み出し動作は、ページ全体またはページの一部を読み出すことができ、ダイはソリッドステートディスクの最小同時処理単位である、つまり、各ダイは、例えば、読み出し要求、書き込み要求、または消去コマンドなど、どんな時にも1つのメッセージしか処理できないことを理解されよう。メッセージの処理中に、他のメッセージに応答することはできない。図2に示すソリッドステートディスクを例にとると、どんな時にも各チャネルで最大8つのメッセージを処理することができ、どんな時にもソリッドステートディスクで最大128個のメッセージを処理することができる。
図3に示すように、図3は、本発明の一実施形態によるソリッドステートディスクによる記憶システムへのアクセスの初期化流れ図である。この手続きは、記憶システムが電源投入されたとき、または新しいソリッドステートディスクが記憶システムにアクセスするときに実行され、その結果、コントローラ100がソリッドステートディスクに関する基本情報を取得し、コントローラ100がソリッドステートディスクの記憶空間を管理およびスケジューリングできる。
ステップ301:コントローラが、ソリッドステートディスクに基本情報要求メッセージを送信する。
記憶システムは電源投入されている。コントローラ100は、ブロードキャストまたはマルチキャストモードで、記憶システム内のソリッドステートディスク200に基本情報要求メッセージを送信してもよいし、ユニキャストモードで、記憶システム内の各ソリッドステートディスク200に基本情報要求メッセージを送信してもよい。記憶システムの実行プロセスにおいて、コントローラ100は、新たに接続されたソリッドステートディスクを発見するために、基本情報要求メッセージをさらに周期的に送信できる。ソリッドステートディスク200の通信インターフェース2001は、コントローラ100からの基本情報要求メッセージを受信する。
ステップ302:ソリッドステートディスクは、基本情報フィードバックメッセージをコントローラに送信する。
ソリッドステートディスク200は、基本情報要求メッセージを受信した後、ソリッドステートディスク200に関する基本情報を基本情報フィードバックメッセージに追加し、メッセージをコントローラ100に送信する。例えば、プロセッサ2002は、ソリッドステートディスク200に関する基本情報を基本情報フィードバックメッセージに追加し、通信インターフェース2001を使用してコントローラ100にメッセージを送信することができる。本発明の本実施形態では、基本情報は、以下の情報、すなわち、ソリッドステートディスクの識別子、ソリッドステートディスクの容量、チャネルの数、各チャネルのダイの数、各ダイ内のブロック数、各ブロック内のページ数、各ページの容量などのうちの1つ以上を含むことができる。場合により、ソリッドステートディスク200は、ソリッドステートディスク200の各チャネルのチャネル識別子を、各チャネルの各ダイのダイ識別子とともにコントローラ100にさらに報告することができる。
本発明の本実施形態では、コントローラ100が各ソリッドステートディスク200によって報告された基本情報フィードバックを受信した後、各ソリッドステートディスク200が、チャネルの数、各チャネルのダイの数、および各ダイ内のブロック数のみを報告した場合、コントローラ100は、各ソリッドステートディスク200内の各チャネルおよび各ダイに識別子を割り当てることができる。場合により、コントローラ100は、当業界における現在の一般的な実装に従って識別子を割り当てることができる。ソリッドステートディスク200が16のチャネルを含み、各チャネルが8つのダイを含むと仮定すると、チャネル識別子は、順にchannel 0、channel 1、・・・、channel 15であり得、各チャネルにおけるダイのダイ識別子は、die 0、die 1、・・・、die 7であり得る。従って、コントローラ100は、「ソリッドステートディスクの識別子、チャネル識別子、およびダイ識別子」に基づいて、各ソリッドステートディスク内のすべての128個のダイを識別および区別する必要がある。場合により、コントローラ100は、ソリッドステートディスク内のすべての128個のダイにグローバル識別子、すなわち、順にdie 0、die 1、die 2、・・・、die 126、およびdie 127を割り当てることもできる。場合により、コントローラ100は、ダイ識別子を設定する場合に、ダイ識別子の一部としてチャネル識別子を使用することもできる。例えば、channel 0に含まれる第1のダイの識別子を「channel 0 die 0」に設定してもよい。あるいは、ダイ識別子が設定される場合に、ソリッドステートディスクの識別子とチャネル識別子とをダイ識別子の一部として一緒に使用することができる。例えば、ダイ識別子は、「solid state disk 200 channel 0 die 0」とすることができる。さらに、コントローラ100は、コントローラ100が各ソリッドステートディスク200内のチャネルおよびダイに識別子を割り当てた後、識別子割り当て規則をソリッドステートディスク200に通知することができる。このようにして、後に、ソリッドステートディスク200は、コントローラ100によって割り当てられたダイ識別子に基づいて、対応するダイを正確に識別することができる。
各ソリッドステートディスク200が、ステップ302において、ソリッドステートディスク200の各チャネルのチャネル識別子および各ダイのダイ識別子をさらにフィードバックする場合、コントローラ100は、割り当て自体を行う必要はないが、ソリッドステートディスク200によって報告された「ソリッドステートディスクの識別子、チャネル識別子、およびダイ識別子」を直接使用して、各ソリッドステートディスク内の各ダイを識別および区別できる。
上述の手続きでは、各ソリッドステートディスクが記憶システムにアクセスした後、ソリッドステートディスクはその基本情報をコントローラ100にフィードバックする。記憶システム内の各ソリッドステートディスク200に関する基本情報を収集した後、コントローラ100は、すべてのソリッドステートディスクの記憶空間を管理し、ホストに記憶サービスを提供することができる。
本発明の本実施形態では、コントローラ100は、セグメント(Segment)の単位で記憶空間を管理し、ホストに記憶サービスを提供する。コントローラ100は、複数のセグメントを生成する。本実施形態では、セグメントの容量をソリッドステートディスク200のブロックの容量の整数倍に設定することが提案されている。ブロックの容量が8MBであると仮定すると、セグメントの容量は、8MB、16MB、24MB、...などに設定することができる。セグメントの容量は、本発明の本実施形態では具体的に限定されないことを強調しておきたい。ユーザは、実際の記憶要件に基づいてセグメントの容量を柔軟に設定することができる。セグメントの容量が判定された後、作成する必要があるセグメントの量は、ソリッドステートディスク200の容量に基づいてさらに判定されてもよい。基本情報は、セグメントが作成された後、各セグメントに対して構成されてもよい。例えば、ソリッドステートディスクの容量は2TBであり、セグメントの容量は16MBである。この場合、コントローラ100は128Kセグメント(2TB/16MB=128K)を作成し、各セグメントに関する基本情報を設定する必要がある。本発明の本実施形態では、各セグメントに関する基本情報は、以下のフィールドを含むことができる:
セグメント識別子:セグメントを一意的に識別するために使用され、セグメント識別子は、数字、文字、もしくは記号であってもよいし、数字、文字、もしくは記号の任意の組み合わせであってもよい;
ホスト論理ブロックアドレス:セグメント内の各オフセットによって記憶されたデータに対応するホスト論理ブロックアドレスを示すために使用される;
セグメント状態:セグメントの現在の状態を示し、本実施形態では、フリー(Free)状態、書き込み(Writing)状態、フル(Full)状態、およびガベージコレクション(Garbage Collection)状態の4つの状態が存在し、フリー状態は、セグメントにデータが現在書き込まれていないことを示し、例えば、セグメントは、初期化されたセグメントまたはガーベジコレクションが行われたばかりのセグメントであり得、書き込み状態は、セグメントが既に割り当てられ、データの書き込みに使用し得ることを示し、フル状態は、セグメントのすべての空間が既にいっぱいであることを示し、ガベージコレクション状態は、セグメント上で現在ガベージコレクションが現在行われていることを示す;
セグメント内の無効なデータの量:任意のパラメータであり、セグメント内の無効なデータの量を記録するために使用され、初期値は0であり、セグメントに記録されているホスト論理ブロックアドレスのデータに対して変更または削除動作が行われるたびに、セグメント内の無効データ量の値に1が加算される;
ソリッドステートディスク識別子:任意のパラメータであり、セグメントが割り当てられた場合にセグメントに対応するソリッドステートディスクを示すために使用される;
チャネル識別子:任意のパラメータであり、セグメントが割り当てられた場合にセグメントに対応するチャネルを示すために使用される;
ダイ識別子:任意のパラメータであり、セグメントが割り当てられた場合にセグメントに対応するダイを示すために使用される;
使用可能なオフセット:任意のパラメータであり、セグメントの現在の使用可能なオフセットの開始位置を記録するために使用され、初期値は0であってもよい。セグメントの異なる容量設定に基づいて、セグメントのオフセットの値の範囲が変わる。上述のように、本発明の本実施形態では、セグメントの容量は、ソリッドステートディスク内のブロックの容量の整数倍であることが提案される。ここで、例えば、ブロックの容量は8MBであり、セグメントの容量は16MBである、すなわち、ソリッドステートディスクでは、各セグメントに対応する2つのブロックが存在するはずである。各ブロックに512ページが含まれる場合、セグメントの容量は1024ページに相当する。この場合、セグメントのオフセットの値の範囲は0〜1023である。従って、セグメントの使用可能なオフセットの初期値は0である。各オフセットはブロックの1ページに対応し、セグメントに連続してデータが書き込まれると、使用可能なオフセットの値が大きくなる。ここで、使用可能なオフセットが0〜511に設定されている場合、値は、セグメントに対応する2つのブロックのうちの第1ブロックの512ページに対応し、使用可能なオフセットが512〜1023に設定されている場合、値は、セグメントに対応する2つのブロックのうちの第2のブロックの512ページに対応する。
各セグメントが作成されると、セグメント識別子がセグメントに割り当てられ、セグメントの状態がフリー状態に設定され、セグメント内の使用可能なオフセットおよび無効データの量が0に設定され、他の基本情報は最初はnullであり得る。その後、セグメントがホストに割り当てられ、データが書き込まれた後、セグメントに関する基本情報の他の情報項目が設定される。本実施形態では、場合により、コントローラ100は、アレイまたはリンクされたリストの形ですべてのセグメントを管理することができる。アレイまたはリンクされたリスト内の各ノードは1つのセグメントを表し、ノードはセグメントに関する基本情報を記録するために使用される。場合により、本発明の本実施形態では、上述のセグメントをそれぞれ管理するために複数のキューを使用することもできる:
ブランクセグメントキュー:すべての未割り当てセグメントを管理するために使用され、すべてのセグメントは、初期フェーズで管理のためにキューに配置される;
フルロードセグメントキュー:セグメントがユーザに既に割り当てられていて、セグメントが既にいっぱいになっている、つまり、使用可能な空間がない場合、セグメントは管理のためにフルロードセグメントキューに配置される。
さらに、パーシャルロードセグメントキューを設定することもできる。セグメントが既に割り当てられていて、ブロックの容量の整数倍に等しい空間が占有され、セグメントに使用可能な空間がある場合、セグメントは管理のためにパーシャルロードセグメントキューに配置される。セグメントに関する基本情報における使用可能なオフセットの値がセグメントのオフセットの最大値に達しない場合、このことは、セグメント内に使用可能な空間があることを示していることが理解されよう。式「(使用可能なオフセットの値+1)/各ブロックに含まれるページ数」に従って取得された計算結果が正の整数であれば、ブロックの容量の整数倍に相当する空間がセグメントで占有される。上述の例に示すように、各ブロックに含まれるページ数は512であり、各セグメントは2ブロックの容量に対応することができる。この場合、セグメントのオフセットの最大値は1023であり得る。
記憶システムによるデータを記憶するための手続きは、コントローラ100の処理手続きと、ソリッドステートディスク200の処理手続きと、を含む。図4に示すように、図4は、本発明の一実施形態によるコントローラによってソリッドステートディスクにデータを書き込むための方法の流れ図である。
ステップ400:コントローラは、ホスト書き込み要求を受信する。
コントローラ100は、ホストからの1つ以上のホスト書き込み要求を受信し、各ホスト書き込み要求は、ホスト論理ブロックアドレス(Logical Block Address、LBA)、データ(Data)、およびデータ長(Data Length)を運び、ホスト論理ブロックアドレスは、ホストがデータを書き込むための開始論理ブロックアドレスであり、データは、記憶システムに書き込まれるデータであり、データ長は、データの長さを識別するために使用される。
場合により、ホスト書き込み要求を受信した後、コントローラ100は、ホスト書き込み要求で運ばれたデータをキャッシュし、ホストに書き込み完了メッセージ(図示せず)を送信することができ、書き込み完了メッセージは、ホスト書き込み要求が成功裏に処理されたことをホストに通知するために使用される、または後続の処理を完了し、ソリッドステートディスク200にデータを送信し、ソリッドステートディスク200からの書き込み成功メッセージを受信した後、書き込み完了メッセージ(図示せず)をホストに送信でき、書き込み完了メッセージは、ホスト書き込み要求が成功裏に処理されたことをホストに通知するために使用される。
場合により、ホストが送信した異なるホスト書き込み要求のデータ長が変わり得るため、ホスト書き込み要求のデータが記憶のためにソリッドステートディスク200に直接送信された場合、「ページオーバーフロー」現象が起こり得る、つまり、ソリッドステートディスクは、データを記憶するために1つ以上のページを割り当てる必要があるが、1つ以上の割り当てられたページの最後のページは完全に占有されていない場合がある。従って、ソリッドステートディスクの空間の使用率が低く、アドレス管理が複雑になるなどの問題が発生する可能性がある。コントローラ100は、「ページオーバーフロー」現象の発生を回避するために、ソリッドステートディスク200のページの容量を単位として使用して、ホスト書き込み要求で運ばれたデータの分割および/または結合動作を行うことができる。分割動作は、具体的には、以下のとおりである:例えば、ホストの書き込み要求が3MBのデータを運んでいる場合、ページの容量が16KBである上述の例に基づいて、ホスト書き込み要求のデータを3MB/16KB=192データブロックに分割でき、各データブロックのデータ長は16KBである。結合動作は、具体的には、以下のとおりである:ホスト書き込み要求で運ばれるデータのデータ長が10KBの場合、データのデータ長が1ページの容量より小さいため、データは、分割する必要はないが、別のホスト書き込み要求のデータの全部または一部と結合して16KBのデータブロックにすることができる。ホスト書き込み要求で運ばれるデータの長さが19KBである場合、19KBのデータを2つのデータブロックにまず分割することができ、一方のデータブロックのデータ長は16KBであり、もう一方のデータブロックのデータ長は3KBであり、次いで、3KBのデータブロックと、別のホスト書き込み要求の全部または一部が、16KBのデータ長のデータブロックへと結合される。コントローラ100は、複数のホスト書き込み要求を受信した後、上述の分割および/または結合動作を柔軟に行って、ホストから受信した1つ以上のホスト書き込み要求のデータを複数の16KBデータブロックに分割し、各ホスト書き込み要求で運ばれたホスト論理ブロックアドレスに基づく計算によって、分割および/または結合によって得られた各16KBデータブロックのホスト論理ブロ
ックアドレスを取得する。本実施形態では、1ページ分の容量(16KBなど)は、説明のための一例としてのみ用いられていることに留意されたい。実際の適用では、ページの容量の整数倍を単位として、ホストからのデータに対して分割および/または結合動作を行うことができる。具体的なサイズは柔軟に設定することができる。コントローラ100は、ホスト書き込み要求を受信した後、次の手続きを開始して後続のステップの動作を行うことができる、または上述したようにホスト書き込み要求で運ばれたデータをキャッシュし、第1の条件が満たされた場合、以下の手続きを開始して後続ステップの動作を行うことができる。本実施形態では、第1の条件は、ホスト書き込み要求で運ばれたキャッシュされたデータのデータ長が特定の閾値よりも大きいことであり得る、またはコントローラ100は、ホスト書き込み要求で運ばれ、コントローラ100によってキャッシュされるデータをソリッドステートディスク200に周期的に書き込むことができ、従って、第1の条件は、新しいデータ書き込みサイクルが始動された後、以下の手続きが開始され、後続のステップの動作が行われることであり得る。
場合により、ステップ401を行う前に、コントローラ100は、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長をまず判定してもよい。目標データは、16KBデータブロックのうちの1つ以上であってもよい。具体的な数量は、コントローラ100によって柔軟に設定することができる。あるいは、コントローラ100は、以下の手続きのステップ402の後に、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長を判定してもよい。
ステップ401:コントローラは、第1のダイを選択する。
コントローラ100は、複数のダイから第1のダイをまず選択する。本発明の本実施形態では、コントローラ100は、以下のように具体的に説明される複数の基準に基づいて第1のダイを選択することができる。
基準1:ランダム原則
コントローラ100は、複数のダイから第1のダイとして任意のダイをランダムに選択してもよい。
基準2:ステートレス優先原則
コントローラ100は、複数のダイから「ステートレスダイ」を第1のダイとして選択することができる。「ステートレスダイ」は、ダイが処理されるメッセージを現在持たないことを示す。本実施形態では、「現在処理するメッセージがない」ということの考えられる原因は、コントローラ100が選択動作を実行する前に第1のダイで処理されるべきメッセージが送信されないか、第1のダイがコントローラ100が選択動作を行うときにすべての履歴メッセージを処理したことであり得る。
場合により、コントローラ100は、状態テーブルをリアルタイムで維持することができ、状態テーブルは、記憶システム内の各ダイの現在の状態を記録する。各ダイの初期状態は「ステートレス」である。メッセージがダイに送信されると、ダイの状態が「ステートフル」に変わり、ソリッドステートディスクによって返された処理成功または処理失敗メッセージがその後受信されると、ダイの状態は再び「ステートレス」に変わる。この場合、コントローラ100は、第1のダイを選択する際に、コントローラ100が維持する状態テーブルに問い合わせを行い、現在「ステートレス」であるダイを第1のダイとして選択することができる。
ダイはソリッドステートディスクの最小同時処理単位であるため、第1のダイがステートレスダイである場合に第1のダイにデータが書き込まれると、第1のダイが属するソリッドステートディスクがデータ書き込みを処理する場合、リアルタイム品質が最も高く、処理時間は最短である。このようにして、ソリッドステートディスクにデータを書き込む効率が最も高くなる。これは、記憶システムの全体的な処理効率の向上を促進するので、コントローラ100は、ソリッドステートディスクの記憶空間をより効果的かつ適切に使用することができる。
基準3:性能優先原則
ユーザが、記憶システムにデータを連続的に記憶したり、ユーザの要求に基づいて記憶システムからなんらかの記憶データを繰り返し読み出したり、なんらかの記憶されたデータを変更したりするにつれて、ユーザのデータのうちの一部は、頻繁にアクセスされる、例えば読み出されたり修正されたりすることにより、ホットデータになり得る。また、ユーザの一部のデータは、一定期間内にアクセスされないか、アクセス回数がほとんどないことから、コールドデータになる。場合により、コントローラ100は、アクセス頻度テーブルを維持し、16KBデータブロックのホスト論理ブロックアドレスをインデックスとして使用して、各16KBデータブロックのアクセス頻度を記録することができる。データブロックがソリッドステートディスクに初めて書き込まれるとき、データブロックにアクセスする回数は1回である。その後、データブロックがアクセスされるたびに、例えば、読み出しまたは変更された場合、データブロックにアクセスする回数に1が加算される。データブロックへのアクセス回数がアクセス頻度閾値より大きい場合、データブロックはホットデータであると考えられ、さもなければデータブロックへのアクセス回数がアクセス頻度閾値よりも小さい場合、データブロックはコールドデータであると考えられる。さらに、コントローラ100はまた、コールドおよびホットデータ分布テーブルをリアルタイムに記録および維持し、コールドおよびホットデータ分布テーブルは、各ダイのコールドおよびホットデータの分布を記録する、つまり、各ダイ内のホットデータの量(すなわち、アクセス頻度がアクセス頻度閾値よりも大きいデータ量)を記録し、各ダイ内のコールドデータの量(すなわち、アクセス頻度がアクセス頻度閾値未満であるデータ量)を記録するために使用される。
場合により、コントローラ100が、ステップ401を行う前に、ソリッドステートディスクに書き込まれる目標データを判定した場合、コントローラ100は、第1のダイを選択するときの目標データのホスト論理ブロックアドレスに従って、アクセス頻度テーブルに問い合わせて、目標データのアクセス頻度を判定し、目標データがホットデータであることが確認された場合には、コントローラ100は、コールドおよびホットデータ分布テーブルに問い合わせ、コールドおよびホットデータ分布テーブルに記録されている各ダイに現在記憶されているホットデータの量を第1の閾値と比較し、ホットデータの量が第1の閾値未満であるダイからダイを第1のダイとして選択する。場合により、現在記憶されているホットデータの量が第1の閾値未満である複数のダイがあることが問い合わせにより分かった場合、コントローラ100は、複数のダイから、最も少ない量のホットデータを現在記憶しているダイを第1のダイとして選択することができる。場合により、現在記憶されているホットデータの量が第1の閾値未満である複数のダイがあることが問い合わせにより分かった場合、コントローラ100はまた、上述の基準1および2、または後述する基準4から6のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを選択できる。
場合により、コントローラ100が、ステップ401を行う前に、ソリッドステートディスクに書き込む目標データを判定していない場合、このステップでは、コントローラ100は、上述の分割および/または結合動作を行って取得された各16KBデータブロックのホスト論理ブロックアドレスに基づいて、アクセス論理テーブルにまず別々に問い合わせて、各16KBのデータブロックのアクセス頻度を確認し、問い合わせ結果から、各16KBデータブロックがホットデータであるかコールドデータであるかを識別できる。次いで、コントローラ100は、コールドおよびホットデータ分布テーブルに問い合わせし、各ダイに現在記憶され、かつコールドおよびホットデータ分布テーブルに記録された、ホットデータの量を第1の閾値と比較し、ホットデータの量が第1の閾値未満であるダイからのダイを第1のダイとして選択し、第1のダイは、ホットデータとして識別される16KBデータブロックのうちに1つ以上を記憶するために使用され得る。場合により、現在記憶されているホットデータの量が第1の閾値未満である複数のダイがあることが問い合わせにより分かった場合、コントローラ100は、複数のダイから、最も少ない量のホットデータを現在記憶しているダイを第1のダイとして選択することができる。場合により、現在記憶されているホットデータの量が第1の閾値未満である複数のダイがあることが問い合わせにより分かった場合、コントローラ100はまた、上述の基準1および2、または後述する基準4から6のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを選択できる。場合により、複数の第1のダイを選択することができ、各第1のダイは、ホットデータである複数の16KBデータブロックの一部を運ぶために使用される。極端な場合は、Lの16KBデータブロックがホットデータである場合、Lの第1のダイが選択され、各第1のダイは1つの16KBデータブロックを記憶することができる。コールドデータである識別された1つ以上の16KBデータブロックに対して、場合により、コントローラ100は、コールドおよびホットデータ分布テーブルに問い合わせることによって、現在記憶されているホットデータの量が第1の閾値よりも大きいダイからダイを第1のダイとして選択する。場合により、現在記憶されているホット
データの量が第1の閾値よりも大きい複数のダイがあることが問い合わせにより分かった場合、コントローラ100は、複数のダイから、最も多い量のホットデータを現在記憶しているダイを第1のダイとして選択することができる。場合により、現在記憶されているホットデータの量が第1の閾値よりも大きい複数のダイがあることが問い合わせにより分かった場合、コントローラ100はまた、上述の基準1および2、または後述する基準4から6のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを選択できる。場合により、複数の第1のダイも選択することができ、各第1のダイは、コールドデータである複数の16KBデータブロックの一部を記憶するために使用される。極端な場合は、Lの16KBデータブロックがコールドデータである場合、Lの第1のダイが選択され、各第1のダイは1つの16KBデータブロックを記憶することができる。場合により、コールドデータである16KBデータブロックでは、コントローラ100はまた、コールドおよびホットデータテーブルに問い合わせることによってダイを選択しないが、上述の基準1および2、または後述する基準4から6のいずれか1つ以上をさらに参照することによって、複数のダイから第1のダイを直接選択し得る。
上述したように、ダイはソリッドステートディスクの最小同時処理単位であるため、ホットデータの場合、第1のダイ内のホットデータの量が第1の閾値未満である場合、ホットデータである1つ以上の16KBデータブロックデータが第1のダイに書き込まれ、第1のダイが属するソリッドステートディスクの処理のリアルタイム品質が比較的良好であり、第1のダイに含まれるブロックに1つ以上の16KBデータブロックを書き込む処理時間が比較的短いことが予想され得る。これは、記憶システムの全体的な処理効率の向上を促進するので、コントローラ100は、ソリッドステートディスクの記憶空間をより効果的に使用することができる。
さらに、ソリッドステートディスクの各ダイの性能をより洗練された方法で識別するために、各ダイの性能に基づいて適切な選択を行うことができる。本発明の本実施形態では、ユーザのデータは、アクセス頻度テーブルにおいて複数のコールドまたはホットレベルに分割され得る。これに対応して、各ダイのコールドおよびホットデータの分布に関する統計が収集されるときに、複数の閾値を設定することができる。このようにして、データに対応するコールドまたはホットレベルを参照することによって、適切な第1のダイを選択することができる。
基準4:有効データ量バランス原則
コントローラ100は、各ダイに記憶された有効データ量を記録することができる。この場合、コントローラ100は、有効データ量が第2の閾値未満であるダイを第1のダイとして選択する。有効データ量が第2の閾値未満である複数のダイがある場合、コントローラ100は、複数の処理方式を有する:有効データ量が最も少ないダイを第1のダイとして選択する、または上述の基準1から3、または後述する基準5から6のいずれか1つ以上をさらに参照することによって、有効データ量が第2の閾値未満の複数のダイから第1のダイを選択する。
第1のダイは、この基準に従って選択される。このようにして、各ダイに記憶された有効データ量は、比較的バランスがとれている。従って、コントローラ100は、ソリッドステートディスクの記憶空間をより効果的に使用することができる。
基準5:疲弊度分散原理
コントローラ100は、各ダイの疲弊度を記録してもよい。コントローラ100は、第1の疲弊度閾値未満の疲弊度のダイを第1のダイとして選択する。疲弊度が第1の疲弊度閾値未満である複数のダイがある場合、コントローラ100は、複数の処理方式を有する:疲弊度が最も少ないダイを第1のダイとして選択する、または上述の基準1から4、または後述する基準6のいずれか1つ以上をさらに参照することによって、疲弊度が第1の疲弊度閾値未満の複数のダイから第1のダイを選択する。
コントローラ100は、疲弊度分散原理に基づいて第1のダイを選択し、それに応じて、ダイの粒度における疲弊度分散を実現することができるので、ソリッドステートディスクの寿命を延ばすことができ、コントローラ100は、ソリッドステートディスクの記憶空間をより効果的かつ適切に使用できる。
基準6:読み出し要求レイテンシ原則
コントローラ100は、メッセージキューを維持することができる。メッセージキューは、読み出し要求や書き込み要求など、ソリッドステートディスクに送信できるメッセージを記録する、または1つのこのようなメッセージキューが各ダイについて維持され得る。第1のダイを選択する場合、コントローラ100は、メッセージキューに問い合わせを行い、ダイに処理すべき要求が現在ないことが判明した場合には、ダイを第1のダイとして選択する、または現在処理すべき読み出し要求が第3の閾値未満であるダイを第1のダイとして選択する。複数のダイで処理すべき読み出し要求がない場合、コントローラ100は、上述の基準1から5のいずれか1つ以上をさらに参照して、処理すべき読み出し要求がない複数のダイから、第1のダイを選択し得る。現在処理すべき読み出し要求の数が第3の閾値未満である複数のダイがある場合、コントローラ100は、複数の処理方式を有する:現在処理すべき読み出し要求の数が最も少ないダイを第1のダイとして選択する、または上述の基準1から5いずれか1つ以上をさらに参照することによって、第1のダイを選択する。
基準6の使用は、キー読み出し要求が現在処理される必要がある可能性のあるダイに目標データを書き込むことによって引き起こされる読み出しレイテンシを回避することができる。これは、記憶システムの全体的な性能を向上させることができるので、コントローラ100は、ソリッドステートディスクの記憶空間をより効果的に使用することができる。
さらに、本発明の本実施形態では、実際の適用において、上述の基準1から6のそれぞれを別々に使用してもよく、または基準のいずれか1つ以上を組み合わせて使用してもよい。
ステップ402:コントローラは、第1のセグメントを選択し、使用可能なオフセットを判定する。
上述のように、コントローラ100は、予め複数のセグメントを作成する。この場合、コントローラ100は、第1のセグメントを選択し、第1のセグメントの使用可能なオフセットを判定する必要がさらにある。
場合により、コントローラ100は、各ダイに割り当てられたセグメントを記録でき、例えば、各ダイについて割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストを維持し得る。割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストの各ノードは、既にダイに割り当てられているセグメントに関する基本情報を記録するために使用される。最初は、割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストはnullである。従って、コントローラ100は、第1のセグメントを選択するとき、ステップ401で選択された第1のダイに従って、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストをまず問い合わせ、第1のダイに割り当てられた特定のセグメントが存在する場合、特定のセグメントに使用可能な記憶空間があるか否かをさらに判定する、例えば、特定のセグメントの基本情報に記録されている使用可能なオフセットの値が最大値(上述の例に示すように、最大値は1023である)であるか否かを判定し得る。もし存在するならば、それは、特定のセグメントに使用可能な記憶空間が現在あり、特定のセグメントが第1のセグメントとして選択されていることを示し、使用可能なオフセットを判定することは、後続の手続きで処理するために第1のセグメントの基本情報に現在記録されている使用可能なオフセットを読み出すことである。コントローラ100が第1のダイにセグメントを割り当てなかったこと、または第1のダイに割り当てられた各セグメントに使用可能な記憶空間がないことが問い合わせによって検出された場合、例えば、第1のダイに割り当てられたすべてのセグメントの使用可能なオフセットの値が最大値に達した場合、新しいセグメントを第1のダイに割り当てる必要があることを示す。例えば、コントローラ100は、上述のブランクセグメントキューから任意のブランクセグメントを第1のセグメントとして選択してもよい。この場合、第1のセグメントの使用可能なオフセットは、第1のセグメントの開始アドレスである、すなわち、使用可能なオフセットは0であり得る。当業者であれば、セグメントのオフセットが1から開始して記録される場合、この場合、使用可能なオフセットは1であることを理解されよう。次いで、選択された第1のセグメントに関する基本情報がブランクセグメントキューから除去され、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストに記録される。
一般に、セグメントがダイに割り当てられた後、そのセグメントに対応する整数量のブロックがすべてダイから来るはずである。しかしながら、実際の適用では、記憶システムによって記憶空間をより柔軟に管理および割り当てする目的を達成するために、別のオプションの実装は、セグメントを複数のダイに割り当てることができることである。この場合、セグメントに対応する整数量のブロックは、異なるダイから来ることができる。上述のように、柔軟な管理の目的を達成するために、パーシャルロードセグメントキューを作成することができる。コントローラ100は、各ダイについて維持されている割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストに記録された各割り当てられたセグメントの使用可能なオフセットを、リアルタイムまたは周期的に検出することができる。各割り当てられたセグメントの記憶空間の使用は、使用可能なオフセットに基づいて計算され、例えば、式「(使用可能なオフセット+1)/各ブロックに含まれるページ数」を使用して計算することができる。計算結果が正の整数である場合、整数量のブロックの記憶空間がセグメント内に現在既に使用されていることを示す。この場合、セグメントに関する基本情報は、割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストから除去され、セグメントに関する基本情報がパーシャルロードセグメントキューに記録され得る。この場合、第1のセグメントを選択し、使用可能なオフセットを確認することは、以下のステップに従って行うことができる。
コントローラ100は、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストをまず問い合わせし、第1のダイに割り当てられたセグメントが存在し、セグメントに使用可能な記憶空間がある場合、セグメントを第1のセグメントとして選択する。コントローラ100が第1のダイにセグメントを割り当てなかったこと、または第1のダイに割り当てられた各セグメントに使用可能な記憶空間がないことが問い合わせによって検出された場合、コントローラ100は、パーシャルロードセグメントキューに問い合わせし、セグメントがパーシャルロードセグメントキューに存在する場合、セグメントを第1のセグメントとして選択する。さらに、選択された第1のセグメントに関する基本情報がパーシャルロードセグメントキューから除去され、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストに記録され得る。さらに、パーシャルロードセグメントキューがnullである場合、上述のブランクセグメントキューから任意のブランクセグメントが第1のセグメントとして選択され、次いで、選択された第1のセグメントに関する基本情報がブランクセグメントキューから除去され、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストに記録される。
場合により、コントローラ100は、第1のダイに割り当てられたセグメント内に使用可能な空間があるか否か最初に問い合わせることはしないが、ブランクセグメントキューから任意のブランクセグメントを第1のセグメントとしてまず直接選択でき、次いで、選択された第1のセグメントに関する基本情報をブランクセグメントキューから除去し、第1のダイに対応する割り当てられたセグメントのアレイまたは割り当てられたセグメントのリンクされたリストに基本情報を記録する。当業者であれば以下の場合が生じ得ることを理解されよう:記憶システムのすべてのブランクセグメントがまもなく割り当てられる。この場合、ブランクセグメントを割り当てできない場合、コントローラ100は、ガベージコレクションメカニズムを開始でき、その結果、各ダイの有効データがいくつかのセグメントに記憶され、いくつかのセグメントが後続の割り当てのためにブランクセグメントとして解放される。別の可能な実装は、この段落で説明したセグメント選択方法および上述の割り当て方法を組み合わせて使用することである。
当業者であれば、本明細書ではアレイまたはリンクされたリストは一実施形態にすぎないことを理解されよう。しかしながら、実際の適用では、ツリーなどの他の可能な様々なデータ構造が、各ダイに割り当てられたセグメントに関する基本情報を記録するために柔軟に使用されてもよい。本発明の本実施形態では、データ構造は具体的に限定されるものではない。
ステップ403:コントローラは、書き込み要求を生成する。
書き込み要求は、ソリッドステートディスクにデータを書き込むために使用される。コントローラ100は、第1のダイおよび第1のセグメントを選択し、使用可能なオフセットを判定した後に、書き込み要求を生成することができる。書き込み要求には、書き込みアドレスと、目標データと、データ長と、が含まれる。
書き込みアドレスに含まれる内容については、次の2つのシナリオが存在し得る。
(1)書き込みアドレスは、第1のダイに接続されたチャネルの識別子、第1のダイの識別子、第1のセグメントの識別子、および使用可能なオフセットを含む。
(2)書き込みアドレスは、第1のダイの識別子、第1のセグメントの識別子、および使用可能なオフセットを含む。上述した実施形態で説明したコントローラ100によって割り当てられたダイ識別子に関する説明を参照すると、チャネル識別子がダイ識別子の一部としてダイ識別子に既に含まれている場合、書き込みアドレスはシナリオ(2)に適用され得る。
目標データは、ソリッドステートディスクに書き込まれるデータであり、データ長は、目標データのデータ長である。上述したように、可能な実装は次のとおりである:ステップ402の後、コントローラ100は、第1のセグメントの使用可能なオフセットの値に基づいて、目標データおよびデータ長を判定する。具体的には、使用可能なオフセットの値に基づいて、第1のセグメントにおける現在の残りの使用可能な記憶空間を判定することができる。この場合、書き込み要求におけるデータ長は残りの使用可能な記憶空間を超えることはできず、判定されたデータ長に基づいて目標データが選択される。例えば、使用可能なオフセットの値が1023である場合、これは、1つのオフセットに対応する記憶空間が第1のセグメントで使用可能であることを示す。上述のように、1つのオフセットは1ページの容量、すなわち16KBに対応する。従って、データ長は16KBである。この場合、目標データは、16KBのデータ長の上述の1つのデータブロックでなければならない。同様に、使用可能なオフセットの値が1022である場合、データ長は32KBでなければならず、目標データは上述の2つの16KBデータブロックでなければならない。残りは類推によって推測することができる。極端な場合は、使用可能なオフセットの値が0である場合、データ長は最大16KBに1024を乗じたものになり得る。この場合、目標データは、最大1024×16KBデータブロックであり得る。当業者であればセグメント内に十分な使用可能な空間がある場合、すなわち、使用可能なオフセットの値が依然として比較的小さい場合には、コントローラ100は、十分な使用可能な空間の範囲においてデータ長を柔軟に設定できることを理解されよう。このことは、本実施形態においてここでは限定されるものではない。コントローラ100は、分割および/または結合を行って取得された上述の複数の16KBデータブロックから、対応するデータブロック数を目標データとして選択し得る。ここで、ステップ401において基準3に基づいて第1のダイが選択された場合、このステップで目標データが選択された場合、目標データは、ホットデータとして識別される1つ以上の16KBデータブロックから選択されるべきであることに留意されたい。
場合により、上述したように、目標データおよび目標データのデータ長はまた、上述のステップ401の前にコントローラ100によって判定されてもよい。この場合、コントローラ100は、ステップ403の前に、目標データの判定されたデータ長と、第1のセグメントの使用可能なオフセットに基づいて判定される第1のセグメントの使用可能な記憶空間と、をまず比較してもよい。目標データのデータ長が第1のセグメントの使用可能な記憶空間未満である場合、目標データおよび目標データのデータ長は直接書き込み要求に含められる。目標データのデータ長が第1のセグメントの使用可能な記憶空間よりも大きい場合、コントローラ100は、第1のセグメントの使用可能な記憶空間に従って、目標データを2つのサブブロックに分割する必要があり、第1のサブブロックのデータ長は、第1のセグメントの使用可能な記憶空間以下であり、第2のサブブロックは、目標データにおける第1のサブブロック以外の残りの部分である。この場合、このステップでは、コントローラ100は、分割により取得された第1のサブブロックおよび第1のサブブロックの対応するデータ長を、それぞれ、目標データおよび目標データのデータ長として、書き込み要求に含め、後続の手続きを行う。第2のサブブロックについて、ステップ402および403を繰り返し実行してもよいし、場合により、ステップ401、402、および403を繰り返し実行してもよい。例えば、ステップ401の前にコントローラ100によって確認された目標データのデータ長が64KBであるが、ステップ402で選択された第1のセグメントの使用可能なオフセットが1022である場合、第1のセグメントにおける残りの使用可能な空間は32KBのデータしか記憶できないことを示している。この場合、本発明の本実施形態では、コントローラ100は、64KBの目標データを32KBのデータ長の第1のサブブロックと第2のサブブロックとに分割し、第1のサブブロックを書き込み要求に追加し、後続の手続きを行うことができる。第2のサブブロックについて、ステップ402および403が繰り返し実行され、場合により、第2のサブブロックについて、ステップ401、402、および403を繰り返し実行してもよい。
場合により、コントローラ100は、目標データを判定した後、目標データに基づいて第1のセグメントに関する基本情報を更新することができ、具体的には、第1のセグメントに関する基本情報におけるホスト論理ブロックアドレスフィールドが、目標データのホスト論理ブロックアドレスを含むか否かを問い合わせるステップと、含まない場合、目標データのホスト論理ブロックアドレスを第1のセグメントに関する基本情報におけるホスト論理ブロックアドレスフィールドに記録するステップ、または含む場合、これは、ホスト書き込み要求が履歴的に記憶されたデータを修正することを意図することを示し、第1のセグメントに関する基本情報における無効データの量の値に1を加えるステップと、第1のセグメントの状態を「書き込み状態」に更新するステップと、目標データのデータ長に基づいて、第1のセグメントに関する基本情報に記録されている使用可能なオフセットの値を更新するステップと、を含む。例えば、データ長をソリッドステートディスク200のページの容量で割って計算結果を求めることができ、その計算結果を第1のセグメントに関する基本情報の現在の使用可能なオフセットの値に加算し、使用可能なオフセットの更新された値が得られ、使用可能なオフセットの更新された値は、別の新しい書き込み要求を処理するために使用される。場合により、基本情報におけるソリッドステートディスク識別子は、第1のダイが属するソリッドステートディスクの識別子として記録されてもよく、チャネル識別子は、第1のダイが接続するチャネルの識別子として記録されてもよく、ダイ識別子は、第1のダイの識別子として記録されてもよい。さらに、コントローラ100はまた、目標データのホスト論理ブロックアドレスを使用して、第1のセグメント以外であり、各ダイに既に割り当てられているセグメントを問い合わせする。セグメントが他の割り当てられたセグメントに存在し、セグメントに関する基本情報に記録されているホスト論理アドレスが、記憶するデータのホスト論理アドレスを含む場合には、目標データのホスト論理アドレスは、セグメントに関する基本情報から削除され、セグメントに関する基本情報における無効データ量の値に1が加算される。第1のセグメントに関する基本情報をリフレッシュする動作は、ステップ403の後に行われてもよい。
ステップ404:コントローラは、書き込み要求を送信する。
書き込み要求を生成した後、コントローラ100は、ソリッドステートディスクにデータを書き込むために、第1のダイが属するソリッドステートディスクに書き込み要求を送信する。
さらに、本発明の本実施形態では、コントローラ100は、予めシステムマッピングテーブルを生成することができる。以下の表1に示すように、システムマッピングテーブルの各行は、「ホスト論理ブロックアドレス」と「ソリッドステートディスクの書き込みアドレス」との間のマッピング関係を記録するために使用されるマッピング関係を表すことができ、ソリッドステートディスクの書き込みアドレスは、「ソリッドステートディスク識別子+チャネル識別子+ダイ識別子+セグメント識別子+使用可能なオフセット」によって示され得る。初期状態のシステムマッピングテーブルは、nullであり得る。以下の表1に示すように、表1はシステムマッピングテーブルの一例である。
Figure 2019508765
場合により、上述のマッピング関係の本質が満たされる場合、具体的には、各行の記録形式は、例えば、複数の変数実装を含む。
変数実装1:ホスト論理ブロックアドレスの最後のビットまたは複数のビットがソリッドステートディスク識別子に対応する。この場合、ソリッドステートディスク識別子に関する情報は、上記表1の右列に再び記録されない場合がある。
変数実装2:上述のダイ識別子割り当て規則を参照すると、ダイ識別子がダイ識別子の一部としてチャネル識別子を既に使用している場合、チャネル識別子に関する情報は、上記表1の右列に再び記録されない場合がある。さらに、ダイ識別子がソリッドステートディスク識別子およびチャネル識別子をダイ識別子の一部として既に使用している場合、ソリッドステートディスク識別子およびチャネル識別子に関する情報は、上記表1の右列に再び記録されない場合がある。
他の変数実装は、本実施形態では1つ1つこれ以上示さない。上述のマッピング関係の本質を満たす様々な変数実装はすべて、本発明の実施形態の保護範囲内に含まれる。
上述のステップ402、ステップ403、またはステップ404を行った後、コントローラ100は、書き込み動作のための新しいマッピング関係を生成し、システムマッピングテーブルに新しいマッピング関係を記憶することができる。新しいマッピング関係では、ホスト論理ブロックアドレスは、書き込み要求で運ばれる目標データのホスト論理ブロックアドレスであり、ソリッドステートディスク識別子は、選択された第1のダイが属するソリッドステートディスクの識別子であり、チャネル識別子は、選択された第1のダイに接続されたチャネルの識別子であり、ダイ識別子は、選択された第1のダイの識別子であり、使用可能なオフセットは、選択された第1のセグメントの記録された使用可能なオフセットである。
さらに、本発明の本実施形態では、コントローラ100は、新しいマッピング関係を生成する前または後に、書き込み要求で運ばれた目標データのホスト論理ブロックアドレスに基づいて、システムマッピングテーブルに問い合わせることができる。コントローラ100が、目標データのホスト論理ブロックアドレスに関連付けられたマッピング関係が、システムマッピングテーブルに既に存在することを発見した場合、書き込み要求が履歴的に書き込まれたデータを変更することを意図していることを示す。この場合、システムマッピングテーブル内の既存のマッピング関係は、無効状態でマークされる。当業者であれば、新しいマッピング関係が生成された後に問い合わせ動作が行われる場合、新しいマッピング関係が問い合わせ範囲内に入るべきではないことを理解されよう。上述の無効化動作は、既存の履歴マッピング関係を主に対象としている。
上記表1は、マッピング関係を記憶するための一形態にすぎないことを留意されたい。実際の適用では、アレイまたはリンクされたリストなどの複数の形式を使用してマッピング関係を記憶できる。このことは、本実施形態において限定されるものではない。
本発明の本実施形態では、ソリッドステートディスクに書き込むデータがある場合、コントローラ100は、第1のダイを選択する必要があり、書き込む目標データが第1のダイに含まれるブロックに記憶されるべきであることを示し、その後、ソリッドステートディスクは、目標データを記憶するために第1のダイの範囲内に物理的な記憶リソースを割り当てる必要がある。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。さらに、第1のダイを選択する際に、コントローラ100は、ソリッドステートディスクに書き込むデータのための最適なダイを選択するために、上述の選択基準、例えば、ダイの状態、データアクセス頻度、ダイの有効データ量、ダイの疲弊度、およびダイで処理される読み出し要求などの要因のうちの1つ以上を柔軟に使用でき、その結果、コントローラ100は、ソリッドステートディスクの記憶空間を有効に使用できる。
図5に示すように、図5は、ソリッドステートディスク200が書き込み要求を受信した後の処理の流れ図である。図2に示すソリッドステートディスク200の概略的な構成図を参照すると、通信インターフェース2001は、コントローラ100から書き込み要求を受信し、プロセッサ2002は、具体的には以下のような、後続の処理を行う。
ステップ500:ソリッドステートディスクは、ローカルマッピングテーブルに問い合わせし、ローカルマッピングテーブルは、「セグメント」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピング関係を記録するために使用される。
ソリッドステートディスク200は、予めローカルマッピングテーブルを生成する。例えば、プロセッサ2002は、プログラム命令を実行して、ローカルマッピングテーブルを作成することができる。ローカルマッピングテーブルは、メモリ2003に記憶されてもよいし、記憶媒体に記憶されてもよく、使う必要に応じてメモリ2003に読み込まれてもよい。ローカルマッピングテーブルに記録されたマッピング関係は、「セグメント」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピング関係を示すために使用される。ローカルマッピングテーブルは、最初はnullであり得る。ソリッドステートディスク200によってチャネル識別子、ダイ識別子、およびブロック識別子を割り当てるための異なる規則に基づいて、ローカルマッピングテーブルは複数の実装を有することができる。
実装1:以下の表2に示すように、ローカルマッピングテーブル内のソリッドステートディスクの物理ブロックアドレスは、ブロック識別子によって示され得る。
Figure 2019508765
実装2:ソリッドステートディスクの物理ブロックアドレスは、「ダイ識別子+ブロック識別子」によって示される、または「チャネル識別子+ダイ識別子+ブロック識別子」によって示される。具体的には、どの方法が使用されるかは、以下の表3に示すように、ダイ識別子がチャネル識別子を含むか否かによって決まる。
Figure 2019508765
さらに、ローカルマッピングテーブルでは、使用可能なオフセットおよびページに関する情報を上述のマッピング関係に追加して、「セグメント+使用可能なオフセット」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピングを形成することもできる。ソリッドステートディスクの物理ブロックアドレスは、ページの識別子をさらに含む。表4に示すように、上述の実装1では、使用可能なオフセットおよびページの識別子がマッピング関係に追加される。
Figure 2019508765
以下の表5に示すように、使用可能なオフセットおよびページの識別子も、上述の実装2のマッピング関係に追加することができる。
Figure 2019508765
ソリッドステートディスク200の通信インターフェース2001がコントローラ100から書き込み要求を受信した後、プロセッサ2002は、書き込み要求を解析し、書き込み要求で運ばれる書き込みアドレスに含まれる第1のセグメントの識別子および使用可能なオフセットに基づいて、ローカルマッピングテーブルに問い合わせる。
実際の適用では、各セグメントの容量が2以上のブロックの容量に相当する場合、ブロックの容量が8MBであり、セグメントの容量が16MBである上述の例に示すように、各ブロックに512ページが含まれているが、16MBの容量を有するセグメントのオフセットは1024であり、それぞれ1204ページに対応し、この場合、ローカルマッピング関係は、次の表6に示す多次元アレイのローカルマッピングテーブルなどの多次元アレイの方式で記憶され得る。表中、各行はセグメントのすべてのマッピング関係を記録するために使用される。表中、ソリッドステートディスクの物理ブロックアドレス1、ソリッドステートディスクの物理ブロックアドレス2、・・・、ソリッドステートディスクの物理ブロックアドレスXは、セグメントに対応する複数のブロックのそれぞれの具体的な物理ブロックアドレスをそれぞれ表し、セグメントの容量に基づいてXの値が判定される。セグメントの容量がブロックの容量の2倍の場合、Xの値は2に設定され、セグメントの容量がブロックの容量の5倍の場合、Xの値は5に設定され、残りは類推によって推論することができる。テーブルが問い合わせされると、プロセッサ2002は、書き込み要求の書き込みアドレスに含まれる第1のセグメントの識別子に基づいて、問い合わせをまず行う。ローカルマッピングテーブルの行に記録されたセグメント識別子のいずれも、第1のセグメントの識別子と同じでないことが判明した場合、書き込み要求を受信する前にソリッドステートディスクが第1のセグメントにブロックを割り当てなかったことを示す。さらに、ローカルマッピングテーブルのマッピング関係の行に記録されたセグメント識別子が、第1のセグメントの識別子と同じであることが判明した場合、プロセッサ2002は、書き込み要求の書き込みアドレスに含まれる使用可能なオフセットに基づいて、ソリッドステートディスクの物理ブロックアドレスのどの列に問い合わせを行うべきかを計算する。例えば、計算は、式「X=(使用可能なオフセット+1)/各ブロックに含まれるページの数」従って行われてもよく、Xは切り上げされる。つまり、0<X≦1の場合、Xの値は1であり、1<X≦2の場合、Xの値は2、残りは類推によって推論することができる。上述の例に示すように、各ブロックに含まれるページ数は512である。この
場合、使用可能なオフセットが0から511でる場合、ソリッドステートディスクの物理ブロックアドレス1の列を照会しなければならず、使用可能なオフセットが512から1023である場合、ソリッドステートディスクの物理ブロックアドレス2の列を照会しなければならず、残りは類推によって推論することができる。多次元アレイのローカルマッピングテーブルに問い合わせるステップは、第1のセグメントの識別子に対応する行が、使用可能なオフセットに基づいて計算されるソリッドステートディスクの物理ブロックアドレスXの列と交差するセルに、ブロックの識別子が記録されているか否かを判定するステップである。記録されていれば、それは、ソリッドステートディスク200のプロセッサ2002が、使用可能なオフセットに対応するブロックを第1のセグメントに割り当てたことを示す。問い合わせ結果がnullである場合、これは、ソリッドステートディスク200のプロセッサ2002が、使用可能なオフセットに対応するブロックを第1のセグメントに割り当てなかったことを示す。
Figure 2019508765
場合により、ソリッドステートディスク200のすべてのローカルマッピング関係は、複数レベルのローカルマッピングテーブルを使用することによって管理することができる。各レベルのローカルマッピングテーブルは、セグメントの使用可能なオフセットが1つのブロックに対応するローカルマッピング関係を管理するために使用される。例えば、第1のレベルのローカルマッピングテーブルは、セグメントの使用可能なオフセットが0から511であるローカルマッピング関係を記憶するために使用され、第2レベルのローカルマッピングテーブルは、セグメントの使用可能なオフセットが512から1023であるローカルマッピング関係を記憶するために使用される。セグメントの容量が大きい場合には、より多くのレベルのローカルマッピングテーブルが対応して作成される。ソリッドステートディスク200のプロセッサ2002がローカルマッピングテーブルに問い合わせることは、具体的には、次のとおりであり得る:書き込み要求内の書き込みアドレスに含まれる使用可能なオフセットに基づいて、例えば、次の式を用いて、第Xのレベルのローカルマッピングテーブルをまず判定するステップ。
X=(使用可能なオフセット+1)/各ブロックに含まれるページの数。
Xは切り上げされる。つまり、0<X≦1の場合、Xの値は1であり、1<X≦2の場合、Xの値は2、残りは類推によって推論することができる。上述の例に示すように、各ブロックに含まれるページ数は512である。この場合、使用可能なオフセットが0から511である場合、使用可能なオフセットは第1のレベルのローカルマッピングテーブルに対応し、使用可能なオフセットが512から1023である場合、使用可能なオフセットは第2のレベルのローカルマッピングテーブルに対応し、残りは類推によって推論することができる。次いで、対応するレベルのローカルマッピングテーブルは、書き込み要求の書き込みアドレスに含まれる第1のセグメントの識別子に基づいて、問い合わせされる。マッピング関係が対応するレベル上のローカルマッピングテーブル内で見つけることができる場合、それは、ソリッドステートディスク200のプロセッサ2002が、使用可能なオフセットに対応するブロックを第1のセグメントに割り当てたことを示す。マッピング関係が見つからない場合、これは、ソリッドステートディスク200のプロセッサ2002が、使用可能なオフセットに対応するブロックを第1のセグメントに割り当てなかったことを示す。
ステップ501:ソリッドステートディスクは、割り当てられたブロックが存在するか否かを確認する。
上述のステップ500の問い合わせ結果に従って、使用可能なオフセットに対応するブロックが既に第1のセグメントに割り当てられていることが確認された場合、ステップ502が行われる、または、使用可能なオフセットに対応するブロックが第1のセグメントに割り当てられていない場合、ステップ503が行われる。
ステップ502:ソリッドステートディスクは、割り当てられたブロックにデータを書き込む。
ソリッドステートディスク200のプロセッサ2002が、割り当てられたブロックに書き込み要求で運ばれた目標データを書き込むことは、具体的には、以下のとおりであり得る:使用可能なオフセットを使用して対応するページ識別子をまず計算するステップ。例えば、次の式を計算に使用できる。
ページ識別子=使用可能なオフセット%各ブロックに含まれるページの数、
ここで、「%」はモジュロ演算を示す。
ソリッドステートディスク200のプロセッサ2002は、ページ識別子に対応するページから開始して、割り当てられたブロックに書き込み要求で運ばれた目標データを書き込む。
ステップ503:ソリッドステートディスクは、ブランクブロックを選択する。
ステップ402の上述の説明を参照すると、書き込みアドレスが、第1のダイに接続されたチャネルの識別子および第1のダイの識別子を含む場合、このステップにおけるソリッドステートディスク200のプロセッサ2002は、第1のダイに接続されたチャネルの識別子および第1のダイの識別子に従って、第1のダイに含まれる複数のブロックからブランクブロックを選択する、または書き込みアドレスが、第1のダイの識別子を含む場合、ソリッドステートディスク200のプロセッサ2002は、第1のダイの識別子に従って、第1のダイに含まれる複数のブロックからブランクブロックを選択する。さらに、本実施形態では、ここで、第1のダイの識別子と第1のダイに接続されたチャネルの識別子とが、ソリッドステートディスク200によってコントローラ100に報告された場合、コントローラ100は、第1のダイの識別子に従って、もしくは第1のダイに接続されたチャネルの識別子および第1のダイの識別子に従って、第1のダイを直接識別できる、または上述のように、第1のダイに接続されたチャネルの識別子および第1のダイの識別子がコントローラ100自身によって割り当てられている場合、ソリッドステートディスク200のプロセッサ2002は、コントローラ100が先に送信した識別子割り当て規則に従って、第2の書き込み要求で運ばれた第1のダイに接続されたチャネルの識別子と第1のダイの識別子とを、チャネルとダイについてソリッドステートディスク200によって使用される識別子に変換し、変換によって取得された識別子に基づいて、第1のダイに含まれる複数のブロックからブランクブロックを選択する。
ステップ504:ソリッドステートディスクは、ブランクブロックにデータを書き込む。
ソリッドステートディスク200のプロセッサ2002が、ブランクブロックに書き込み要求で運ばれた目標データを書き込むことはまた、具体的には、以下のとおりであり得る:使用可能なオフセットを使用して対応するページをまず計算するステップ。例えば、次の式を計算に使用できる。
ページ識別子=使用可能なオフセット%各ブロックに含まれるページの数、
ここで、「%」はモジュロ演算を示す。
ソリッドステートディスク200のプロセッサ2002は、ページ識別子に対応するページから開始して、ブランクブロックに書き込み要求で運ばれたデータを書き込む。
さらに、ソリッドステートディスク200のプロセッサ2002は、新しいマッピング関係を生成する。上述したようにローカルマッピングテーブルが「セグメント」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピングを示す場合、ステップ503またはステップ504の後に、プロセッサ2002は、第1のセグメントの識別子および選択されたブランクブロックの識別子に基づいて、新しいマッピング関係を生成し、新しいマッピング関係をローカルマッピングテーブルに記憶し得る。上述のようにローカルマッピングテーブルが「セグメント+使用可能なオフセット」と「ソリッドステートディスクの物理ブロックアドレス」との間のマッピングを示す場合、ステップ502の後、プロセッサ2002は、第1のセグメントの識別子、使用可能なオフセット、割り当てられたブロックの識別子、および使用可能なオフセットに対応するページ識別子に基づいて、新しいマッピング関係を生成し、新しいマッピング関係をローカルマッピングテーブルに記憶する、またはステップ503またはステップ504の後に、プロセッサ2002は、第1のセグメントの識別子、使用可能なオフセット、ブランクブロックの識別子、および使用可能なオフセットに対応するページ識別子に基づいて、新しいマッピング関係を生成し、新しいマッピング関係をローカルマッピングテーブルに記憶する。
場合により、ソリッドステートディスク200の通信インターフェース2001がコントローラ100から書き込み要求を受信した後、プロセッサ2002は、書き込み要求で運ばれたデータをメモリ2003にまずキャッシュし、次いで、書き込み成功メッセージをコントローラ100に送信してもよいし、ステップ503またはステップ505の後に、書き込み成功メッセージ(図示せず)をコントローラ100に送信してもよい。
本発明の本実施形態では、ソリッドステートディスクは、コントローラ100によって指定されたダイに含まれるブロックに書き込み要求における目標データを書き込む。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。
図6に示すように、図6は、本発明の一実施形態による記憶システムにおける読み出し要求を処理するための方法の流れ図である。
ステップ600:コントローラは、第1の読み出し要求を受信する。
コントローラ100は、ホストから第1の読み出し要求を受信する。第1の読み出し要求は、ホスト論理ブロックアドレスおよびデータ長を運ぶ。ここで、ホスト論理ブロックアドレスは、読み出しするデータの開始アドレスを示し、データ長は、読み出しするデータの長さを示すために用いられる。
ステップ601:コントローラは、システムマッピングテーブルに問い合わせる。
コントローラ100は、第1の読み出し要求で運ばれたホスト論理ブロックアドレスに基づいて、システムマッピングテーブルに問い合わせる。ホスト論理ブロックアドレスに対応するマッピング関係が見つかり得る場合には、これは、読み出しするデータが記憶システムに既に記憶されていることを示し、その後の処理が継続され、そうでない場合には、これは、読み出しするデータが記憶システムに記憶されていないことを示し、コントローラ100は、ホストに読み出し失敗メッセージ(図示せず)を返すことができる。
ステップ602:コントローラは、第2の読み出し要求を生成する。
コントローラ100は、第2の読み出し要求を生成する。第2の読み出し要求には、読み出しアドレスとデータ長とが含まれる。データ長は、第1の読み出し要求で運ばれるデータ長であり、読み出しアドレスは、システムマッピングテーブルから見出されたマッピング関係に基づいて生成される。上述の実施形態で説明したように、マッピング関係は、「ホスト論理ブロックアドレス」と「ソリッドステートディスク識別子+チャネル識別子+ダイ識別子+セグメント識別子+使用可能なオフセット」との間のマッピングを記録するために使用される。この場合、コントローラ100が、第1の読み出し要求で運ばれたホスト論理ブロックアドレスに基づいて、ホスト論理ブロックアドレスに関連付けられたマッピング関係を見つけた後、コントローラ100は、マッピング関係に基づいて読み出しアドレスを生成する。場合により、読み出しアドレスは、ホストブロック論理アドレスに対応するマッピング関係に記録された、チャネル識別子、ダイ識別子、セグメント識別子、および使用可能なオフセットを含むことができる。場合により、上述の実施形態で説明したシステムマッピングテーブルの複数の可能な実装では、ダイ識別子が既にダイ識別子の一部としてチャネル識別子を使用している可能性があるので、読み出しアドレスもチャネル識別子を含まない場合がある。つまり、この場合、読み出しアドレスは、ホスト論理アドレスに対応するマッピング関係に記録された、ダイ識別子、セグメント識別子、および使用可能なオフセットを含むことができる。
ステップ603:コントローラは、第2の読み出し要求をソリッドステートディスクに送信する。
第2の読み出し要求を生成した後、コントローラ100は、見つかったマッピング関係に含まれる半導体ディスク識別子に基づいて、ソリッドステートディスク識別子に対応するソリッドステートディスク200に第2の読み出し要求を送信する。
ステップ604:ソリッドステートディスクは、ローカルマッピングテーブルに問い合わせる。
ソリッドステートディスク200の通信インターフェース2001が第2の読み出し要求を受信した後、ソリッドステートディスク200のプロセッサ2002は、第2の読み出し要求で運ばれた読み出しアドレスとデータ長とに基づいて、データを読み出す。ここで、ローカルマッピングテーブルは、読み出しアドレスで運ばれたセグメント識別子に従って、まず問い合わせされる。ローカルマッピングテーブルにマッピング関係が見つからない場合、ソリッドステートディスク200のプロセッサ2002は、通信インターフェース2001を使用して、コントローラ100に読み出し失敗メッセージ(図示せず)を返すことができ、処理を終了する。
ステップ605:ソリッドステートディスクは、データを読み出す。
ソリッドステートディスク200のプロセッサ2002は、第2の読み出し要求の読み出しアドレスで運ばれたダイ識別子と、ステップ604においてローカルマッピングテーブルから見つけたマッピング関係に含まれるソリッドステートディスクの物理アドレスと、に基づいてデータを読み出す、または第2の読み出し要求の読み出しアドレスで運ばれたチャネル識別子およびダイ識別子と、ステップ604においてローカルマッピングテーブルから見つけたマッピング関係に含まれるソリッドステートディスクの物理アドレスと、に基づいてデータを読み出す。
場合により、実際の適用では、このステップでは、ソリッドステートディスクのいくつかのブロックまたはページの損傷などのために、データを読み出すことができない場合がある。このことが生じた場合、ソリッドステートディスク200のプロセッサ2002は、通信インターフェース2001を使用して、コントローラ100に読み出し失敗メッセージ(図示せず)を返すことができ、処理を終了する。
ステップ606:ソリッドステートディスクは、読み出されたデータをコントローラに送信する。
データを読み出した後、ソリッドステートディスクのプロセッサ2002は、通信インターフェース2001を使用して、読み出されたデータをコントローラ100に送信する。
ステップ607:コントローラは、読み出されたデータをホストに送信する。
コントローラ100は、ソリッドステートディスク200が送信した読み出されたデータを受信した後、読み出されたデータをホストに送信する。ここまでで、読み出し要求の処理が完了している。
上述の実施形態では、コントローラ100がセグメントを作成した場合、新たに作成されたセグメントと、ソリッドステートディスク、チャネル、およびダイと、の間に関係はない。第1のダイと第1のセグメントとの間の関連関係は、第1のダイが選択され、第1のセグメントが選択された後にのみ確立される。本発明の本実施形態によって提供される別のオプションの実装では、コントローラ100は、セグメントを作成するとき、セグメントに割り当てられたセグメント識別子を使用して、セグメントと、ソリッドステートディスク、チャネル、およびダイと、の関連関係を確立する。例えば、セグメント識別子を各セグメントに割り当てる場合、コントローラ100は、セグメントとダイとの間の関連関係を確立することができる。具体的には、複数の実装が存在し得る。場合により、例えば、セグメント識別子は、チャネル識別子+ダイ識別子+セグメント識別子の3つの部分を含んで、チャネル識別子およびダイ識別子に対応するダイ内のブロックからセグメントの記憶空間が来るべきであること示すことができる。場合により、セグメント識別子とチャネル識別子とダイ識別子との間のマッピング関係は、アルゴリズム、例えばハッシュ(Hash)アルゴリズム:チャネル識別子=セグメント識別子%チャネルの数を使用することによって確立されてもよい。上述の例に示すように、チャネルの数は16であってもよく、ダイ識別子=(セグメント識別子%チャネルの数)%各チャネルのダイの数である。上述の例に示すように、各チャネルのダイの数は8であってもよく、この場合、コントローラ100は、上述のハッシュアルゴリズムに基づいて各セグメントの識別子を判定することができる。セグメントを作成した後、コントローラ100は、上述の規則に基づいて、セグメントに関する基本情報にセグメント識別子を構成する。セグメントに関する基本情報の他の項目の構成については、上述の実施形態の説明を参照されたい。ここでは細部をこれ以上説明しない。本実施形態では、各セグメントが作成され、セグメント識別子が割り当てられた後、セグメントとダイとの間の関連関係が確立される。この場合、セグメントは、セグメントに関連付けられたダイのアレイまたはリンクされたリストに直接記録されてもよく、アレイまたはリンクされたリストの各ノードは、ダイに関連付けられたセグメントに関する基本情報を記録するために使用される。
上述のセグメントに基づいて、本発明の一実施形態は、記憶システムにおける書き込み要求を処理するための別の方法を提供する。本方法では、コントローラ100によって第1のダイを選択するステップは、上述の実施形態のステップ400と同じであり、ここではこれ以上説明しない。コントローラ100は、第1のセグメントを選択し、使用可能なオフセットを判定する。ここで、コントローラ100は、選択された第1のダイの識別子に基づいて、第1のダイに関連付けられた複数のセグメントから第1のセグメントを選択する。選択規則については、図4および上述の実施形態のステップ401の説明を参照されたい。ここでは細部をこれ以上説明しない。次いで、コントローラ100は、書き込み要求を生成し、書き込み要求には、書き込みアドレスと、目標データと、目標データのデータ長と、が含まれる。場合により、図4およびステップ403の説明を参照すると、ここでの書き込みアドレスの設定は、ステップ403における設定と同じであり得る。このようにして、後続の処理ステップは、図4、ステップ403、および図5および対応する実施形態のものと全く同じである。ここでは細部をこれ以上説明しない。場合により、本実施形態では、セグメント識別子がチャネル識別子およびダイ識別子に関する情報を既に含んでいるので、書き込みアドレスは、セグメント識別子および使用可能なオフセットのみを含む必要があり、チャネル識別子およびダイ識別子に関する情報を再度含む必要はない。次いで、コントローラ100は、書き込み要求をソリッドステートディスク200に送信する。本実施形態では、コントローラ100は、システムマッピングテーブルを維持および更新する。場合により、システムマッピングテーブルの設定は、図4の実施形態で説明した設定と同じであってもよい。場合により、セグメント識別子はチャネル識別子およびダイ識別子に関する情報を既に含んでいるので、セグメント識別子および使用可能なオフセットのみを、システムマッピングテーブルの各マッピング関係においてソリッドステートディスクの書き込みアドレスの列に記録することができる。
ソリッドステートディスク200が書き込み要求を受信した後の処理は、図5と対応する実施形態の説明と基本的には同じである。相違点は、ステップ503を行ってブランクブロックを選択する場合、ソリッドステートディスク200は、書き込み要求内の書き込みアドレスに含まれるセグメント識別子を解析して、チャネル識別子およびダイ識別子を取得し、解析により取得されたチャネル識別子およびダイ識別子に従って、対応する第1のダイに含まれる複数のブロックからブランクブロックを選択する必要があることにある。
さらに、本発明の一実施形態は、記憶システムにおける読み出し要求を処理するための別の方法をさらに提供する。本方法は、図6と対応する実施形態の説明と基本的には同じである。相違点は、ステップ602において第2の読み出し要求が生成された場合に、第2の読み出し要求の読み出しアドレスは、セグメント識別子および使用可能なオフセットのみを含む必要があり得ることにある。
本発明の本実施形態では、ソリッドステートディスクに書き込むデータがある場合、コントローラ100は、第1のダイを選択し、第1のダイに基づいて、第1のダイに関連付けられたセグメントを選択し、セグメントのセグメント識別子は、ダイ識別子およびチャネル識別子を黙示的に運び、書き込まれるべき目標データが第1のダイに含まれるブロックに記憶されるべきであることを示す。これにより、ソリッドステートディスクが、内部ポリシーだけに基づいて、物理的記憶リソースを書き込み要求に自律的に割り当てるために生じる不均衡なデータ分布やいくつかのダイの輻輳などにより、ソリッドステートディスクの記憶リソースを有効に使用できないという従来の問題が回避される。さらに、第1のダイを選択する際に、コントローラ100は、ソリッドステートディスクに書き込むデータのための最適なダイを選択するために、選択ポリシー、例えば、ダイの状態、データアクセス頻度、ダイの有効データ量、ダイの疲弊度、およびダイで処理される読み出し要求などの要因のうちの1つ以上を柔軟に使用でき、その結果、コントローラ100は、ソリッドステートディスクの記憶空間を有効に使用できる。
図7は、コントローラ100の構成例を示す図である。コントローラ100は、第1の通信インターフェース7001と、プロセッサ7002と、メモリ7003と、第2の通信インターフェース7004と、を備える。
第1の通信インターフェース7001は、ホストと通信するように構成される。コントローラ100は、第1の通信インターフェース7001を用いて、ホストの読み出し要求またはホストの書き込み要求などのホストの動作命令を受信し、処理命令をプロセッサ7002に渡して処理するようにしてもよい。第1の通信インターフェース7001は、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し失敗メッセージ、または読み出されたデータなどのメッセージをホストに送信するようにさらに構成される。第1の通信インターフェース7001は、ホストバスアダプタ(Host Bus Adapter、HBA)カードであってもよい。
プロセッサ7002は、中央処理装置(central processing unit、CPU)または特定用途向け集積回路ASIC(Application−Specific Integrated Circuit)であってもよいし、本発明の本実施形態を実装するための1つ以上の集積回路として構成されてもよい。
メモリ7003は、ホストから第1の通信インターフェース7001が受信したホスト書き込み要求で運ばれたデータをキャッシュする、またはソリッドステートディスク200から読み出されたデータをキャッシュするように構成されてもよい。メモリ7003は、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせであってもよい。揮発性メモリは、例えば、ランダムアクセスメモリ(random−access memory、RAM)であってもよい。不揮発性メモリは、フロッピーディスク、ハードディスク、ソリッドステートディスク(solid state disk、SSD)、または光ディスクなどのプログラムコードまたはデータを記憶することができる機械可読媒体であってもよい。メモリ7003は、停電保護機能を有していてもよい。停電保護機能とは、システムに停電が発生して再度電源が投入されてもメモリ7003に記憶されたデータが失われないことを意味する。
メモリ7003は、プログラム命令をさらに記憶することができる。プロセッサ7002は、コントローラ100の様々な処理動作を完了するためにプログラム命令を実行するように構成される。詳細については、図3〜図6の上述のすべての処理動作および対応する実施形態を参照されたい。本装置実施形態では細部をこれ以上説明しない。場合により、システムマッピングテーブルを生成した後、プロセッサ7002は、システムマッピングテーブルをメモリ7003に記憶することもできる。
第2の通信インターフェース7004は、ソリッドステートディスク200と通信するように構成される。第2の通信インターフェース7004を使用することによって、コントローラ100のプロセッサ7002は、書き込み要求または読み出し要求などの動作命令をソリッドステートディスク200に送信し、ソリッドステートディスク200から様々なメッセージを受信することができる。
図8に示すように、図8は、本発明の一実施形態によるコントローラ100の概略的な論理構造図である。コントローラ100は、第1の通信モジュール8001と、記憶モジュール8002と、処理モジュール8003と、ダイ選択モジュール8004と、セグメント選択モジュール8005と、第2の通信モジュール8006と、を備える。
第1の通信モジュール8001は、ホストと通信し、ホストの読み出し要求またはホスト書き込み要求などのホストの動作命令を受信するように構成され、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し失敗メッセージ、または読み出されたデータなどのメッセージをホストに送信するようにさらに構成される。
記憶モジュール8002は、ホストから第1の通信モジュール8001によって受信されたホスト書き込み要求で運ばれるデータをキャッシュするように構成されてもよい。
処理モジュール8003は、キャッシュされたデータに対して分割および/または結合動作を行って、単位長(例えば16KBなど)のデータブロックおよび各データブロックのホスト論理ブロックアドレスを生成するように構成されてもよく、ソリッドステートディスクに書き込まれる目標データおよび目標データのデータ長を判定するように構成されてもよく、複数のセグメントを作成し、複数の作成されたセグメントに関する基本情報を記憶モジュール8002に記憶するようにさらに構成されてもよい。具体的な記憶方式の具体的な実装については、図4およびその実施形態の説明を参照されたい。
ダイ選択モジュール8004は、第1のダイを選択するように構成される。具体的な実装については、図4およびステップ400の詳細な説明を参照されたい。
セグメント選択モジュール8005は、第1のセグメントを選択し、使用可能なオフセットを判定するように構成される。具体的な実装については、図4およびステップ401の詳細な説明、または記憶システムにおいて書き込み要求を処理するための別の方法の上述の説明を参照されたい。
処理モジュール8003は、ダイ選択モジュール8004によって選択された第1のダイ、ならびにセグメント選択モジュール8005によって選択された第1のセグメントおよび判定された使用可能なオフセットに従って、書き込み要求を生成するようにさらに構成される。場合により、処理モジュール8003は、第1のセグメントの使用可能なオフセットの値に従って、目標データおよび目標データのデータ長を判定し、目標データおよび目標データのデータ長に基づいて、書き込み要求を生成するようにさらに構成され、システムマッピングテーブルを生成し、リアルタイムでシステムマッピングテーブルを更新するようにさらに構成される。具体的な実装については、図4およびステップ402の詳細な説明、または記憶システムにおいて書き込み要求を処理するための別の方法の上述の説明を参照されたい。
記憶モジュール8002は、システムマッピングテーブルを記憶するようにさらに構成され得る。
第2の通信モジュール8006は、ソリッドステートディスクと通信するように構成される。第2の通信モジュール8006を使用することによって、処理モジュール8003は、書き込み要求および読み出し要求などの様々な動作コマンドをソリッドステートディスクに送信し、ソリッドステートディスクから様々なメッセージを受信することができる。記憶モジュール8002は、ソリッドステートディスクから第2の通信モジュール8006によって受信された様々なメッセージで運ばれたデータをキャッシュするようにさらに構成されてもよい。
処理モジュール8003は、ホストから第1の通信モジュール8001が受信した読み出し要求に従って、システムマッピングテーブルに問い合わせ、第2の読み出し要求を生成し、第2の通信モジュール8006を使用して第2の読み出し要求をソリッドステートディスクに送信するようにさらに構成される。第2の通信モジュール8006は、ソリッドステートディスクから返された読み出されたデータを受信する。記憶モジュール8002は、読み出されたデータをキャッシュするようにさらに構成される。処理モジュール8003は、具体的には図6および実施形態で説明したように、または記憶システムにおいて読み出し要求を処理するための別の方法の上述の実施形態で説明したように、第1の通信モジュール8001を使用することによって、ホストに読み出されたデータを送信するようにさらに構成される。
図9に示すように、図9は、本発明の一実施形態によるソリッドステートディスクの概略的な論理構造図である。ソリッドステートディスクは、通信モジュール9001と、キャッシュモジュール9002と、処理モジュール9003と、記憶モジュール9004と、を備える。
通信モジュール9001は、コントローラ100と通信し、コントローラ100からの書き込み要求、読み出し要求、または別の命令などのメッセージを受信するように構成され、書き込み成功メッセージ、書き込み失敗メッセージ、読み出し成功メッセージ、または読み出し失敗メッセージなどのメッセージをコントローラ100に送信するようにさらに構成される。
キャッシュモジュール9002は、コントローラ100から通信モジュール9001が受信したメッセージで運ばれたデータをキャッシュするように構成される。
処理モジュール9003は、具体的には図5および実施形態のステップ500で説明したように、ローカルマッピングテーブルを生成するように構成され、ローカルマッピングテーブルは、キャッシュモジュール9002に記憶されてもよいし、記憶モジュール9004に記憶されてもよく、使用のために必要な場合には、処理モジュール9003によって読み出され、キャッシュモジュール9002にキャッシュされ、通信モジュール9001によって受信された書き込み要求を処理し、ローカルマッピングテーブルに問い合わせし、ブロックが割り当てられていることが問い合わせによって分かった場合、具体的には図5および実施形態のステップ500から502で説明したように、記憶モジュール9004の対応するブロックに書き込み要求で運ばれたデータを書き込み、ブロックが割り当てられていないと問い合わせによって分かった場合、具体的には図5および実施形態のステップ500、501、503、および504で説明したように、または記憶システムにおける書き込み要求を処理するための別の方法の上述の実施形態で説明したように、記憶モジュール9004内のブランクブロックを選択し、記憶モジュール9004のブランクブロックに書き込み要求で運ばれたデータを書き込むようにさらに構成される。
処理モジュール9003は、具体的には図5および実施形態で説明したように、新しいマッピング関係を生成し、新しいマッピング関係をローカルマッピングテーブルに記憶するようにさらに構成される。
処理モジュール9003は、具体的には図6および実施形態で説明したように、通信モジュール9001が受信した読み出し要求に従って、ローカルマッピングテーブルに問い合わせ、問い合わせ結果に基づいて記憶モジュール9004からデータを読み出し、通信モジュール9001を使用して読み出されたデータをホストに送信するようにさらに構成される。
当業者であれば、本発明の実施形態の各実施態様または各実施態様の可能な実装が、システム、方法、またはコンピュータプログラム製品として具体的に実装され得ることを理解されよう。従って、本発明の各実施態様または各実施態様の可能な実装は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態(ファームウェア、常駐ソフトウェアなどを含む)、またはソフトウェアとハードウェアの組み合わせを備えた実施形態を使用することができ、本明細書では「回路」、「モジュール」、または「システム」と一律に呼ばれる。加えて、本発明の実施形態の各実施態様または各実施態様の可能な実装は、コンピュータプログラム製品の形態をとることができる。コンピュータプログラム製品は、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードである。
コンピュータ可読記憶媒体としては、限定するものではないが、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、および光ディスクなどの、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、デバイス、もしくは装置、またはそれらの任意の適切な組み合わせが挙げられる。
コンピュータ内のプロセッサは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを読み出し、その結果、プロセッサは、流れ図の各ステップまたはステップの組み合わせで指定された機能アクションを実行することができる。
すべてのコンピュータ可読プログラムコードは、ユーザコンピュータ上で実行されてもよいし、いくつかは、スタンドアローンソフトウェアパッケージとしてユーザコンピュータ上で実行されてもよいし、いくつかは、リモートコンピュータ上で実行されている間にユーザのコンピュータ上で実行されてもよいし、すべてのコードは、リモートコンピュータまたはサーバ上で実行されてもよい。一部の代替的な実装解決策では、流れ図またはブロック図の各ブロックに指定された機能の各ステップが図示の順序で行われないことがあることにも留意されたい。例えば、関連する機能に依存する図示の2つの連続するステップまたは2つのブロックは、実際には実質的に同時に実行されてもよいし、これらのブロックが時々逆の順序で実行されるのであってもよい。
当業者であれば、本明細書で開示した各実施形態において説明した例と組み合わせて、電子的ハードウェアまたはコンピュータソフトウェアと電子的ハードウェアとの組み合わせによって、ユニットおよびアルゴリズムステップを実施してよいことを承知しているはずである。機能をハードウェアで行うかソフトウェアで行うかは、技術的解決策の具体的なアプリケーションと設計制約条件とによって決まる。当業者は、異なる方法を使用して、それぞれの具体的なアプリケーションに対して、説明された機能を実施できるが、こうした実施が、本発明の範囲を超えるものであるとみなすべきではない。
上記の説明は、単に本発明の具体的な実施にすぎず、本発明の保護範囲を限定することを意図するものではない。本発明において開示された技術的範囲内にあり、当業者によって容易に想到される、あらゆる変形や置き換えは、本発明の保護範囲内に含まれるものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に属する。
100 コントローラ
200 ソリッドステートディスク
2001 通信インターフェース
2002 プロセッサ
2003 メモリ
7001 第1の通信インターフェース
7002 プロセッサ
7003 メモリ
7004 第2の通信インターフェース
8001 第1の通信モジュール
8002 記憶モジュール
8003 処理モジュール
8004 ダイ選択モジュール
8005 セグメント選択モジュール
8006 第2の通信モジュール
9001 通信モジュール
9002 キャッシュモジュール
9003 処理モジュール
9004 記憶モジュール
第9の実施態様によれば、本発明の一実施形態は、記憶媒体を提供し、記憶媒体はプログラムを記憶する。コンピューティングデバイスがプログラムを実行すると、コンピューティングデバイスは、第1の実施態様または第1の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第2の実施態様または第2の実施態様の各実装のいずれか1つに記載の記憶システムにおけるコントローラの処理動作を行う、または第5の実施態様または第5の実施態様の各実装のいずれか1つに記載のソリッドステートディスクにデータを書き込むための方法を行う、または第6の実施態様または第6の実施態様の各実装のいずれか1つに記載のコントローラの動作を行う、または第7の実施態様または第7の実施態様の各実装のいずれか1つに記載のコントローラの動作を行う。記憶媒体は、フラッシュメモリ、ハードディスクドライブ(HDD、またはソリッドステートドライブ(SSDを含むが、これに限定されるものではない。


Claims (31)

  1. 記憶システムであって、前記記憶システムはコントローラとソリッドステートディスクとを備え、前記コントローラは前記ソリッドステートディスクと通信することができ、前記ソリッドステートディスクは複数のチャネルを含み、前記複数のチャネルのそれぞれは複数のダイに接続され、
    前記コントローラは、複数のセグメントを作成し、前記複数のダイから第1のダイを選択し、前記複数のセグメントから第1のセグメントを選択し、前記第1のセグメントの使用可能なオフセットを判定し、書き込み要求を生成し、前記書き込み要求は、書き込みアドレス、目標データ、および前記目標データのデータ長を含み、前記書き込みアドレスは、前記第1のダイに接続されたチャネルの識別子、前記第1のダイの識別子、前記第1のセグメントの識別子、および前記使用可能なオフセットを含み、前記ソリッドステートディスクに前記書き込み要求を送信するように構成され、
    前記ソリッドステートディスクは、前記書き込み要求を受信し、前記書き込みアドレスおよび前記目標データの前記データ長に従って、前記目標データを記憶するように構成される、
    記憶システム。
  2. 前記コントローラは、前記複数のダイの状態を記録するようにさらに構成され、
    前記コントローラは、前記複数のダイからステートレスダイを前記第1のダイとして選択するように特に構成される、
    請求項1に記載の記憶システム。
  3. 前記コントローラは、前記目標データのホスト論理ブロックアドレスに基づいて前記目標データのアクセス頻度を判定するようにさらに構成され、
    前記目標データの前記アクセス頻度がアクセス頻度閾値よりも大きい場合、前記コントローラは、前記アクセス頻度閾値よりもアクセス頻度が大きい、記憶されるデータ量が第1の閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項1に記載の記憶システム。
  4. 前記コントローラは、前記複数のダイのそれぞれに記憶された有効データ量を記録するようにさらに構成され、
    前記コントローラは、有効データ量が第2の閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項1に記載の記憶システム。
  5. 前記コントローラは、前記複数のダイのそれぞれの疲弊度を記録するようにさらに構成され、
    前記コントローラは、疲弊度が疲弊度閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項1に記載の記憶システム。
  6. 前記コントローラは、前記複数のダイのそれぞれで処理される読み出し要求の量を記録するようにさらに構成され、
    前記コントローラは、処理される読み出し要求がないダイを前記第1のダイとして選択する、または処理される読み出し要求の量が第3の閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項1に記載の記憶システム。
  7. 前記コントローラは、特定のセグメントが前記第1のダイに既に割り当てられ、使用可能な記憶空間を有する場合、前記特定のセグメントを前記第1のセグメントとして選択する、または前記複数のセグメントからブランクセグメントを前記第1のセグメントとして選択するように特に構成される、請求項1から6のいずれか一項に記載の記憶システム。
  8. 前記コントローラは、マッピング関係を生成し、前記マッピング関係は、前記目標データの前記ホスト論理ブロックアドレスと、前記第1のダイに接続された前記チャネル、前記第1のダイ、前記第1のセグメント、および前記使用可能なオフセットと、の間のマッピングを記録するように構成され、前記マッピング関係をシステムマッピングテーブルに記憶するようにさらに構成される、請求項1から7のいずれか一項に記載の記憶システム。
  9. 前記ソリッドステートディスクは、
    前記書き込みアドレスに含まれた前記第1のセグメントの前記識別子および前記使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、前記ローカルマッピングテーブルは、前記ソリッドステートディスクのセグメントと物理ブロックアドレスとの間のマッピング関係を記憶するように構成され、前記ローカルマッピングテーブルに前記第1のセグメントに対応するブロックが記録されている場合、前記書き込みアドレスに含まれた前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブロックに書き込む
    ように特に構成される、さもなければ
    前記第1のダイに接続された前記チャネルの前記識別子と前記第1のダイの前記識別子とに基づいて、前記第1のダイの複数のブロックからブランクブロックを選択し、前記書き込みアドレスに含まれる前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブランクブロックに書き込む
    ように特に構成される、請求項1に記載の記憶システム。
  10. 前記ソリッドステートディスクは、新しいマッピング関係を生成し、前記新しいマッピング関係は、前記第1のセグメントと前記ブランクブロックとの間のマッピングを記録するように構成され、前記新しいマッピング関係を前記ローカルマッピングテーブルに記憶するようにさらに構成される、請求項9に記載の記憶システム。
  11. 記憶システムであって、前記記憶システムはコントローラとソリッドステートディスクとを備え、前記コントローラは前記ソリッドステートディスクと通信することができ、前記ソリッドステートディスクは複数のチャネルを含み、前記複数のチャネルのそれぞれは複数のダイに接続され、
    前記コントローラは、複数のセグメントを作成し、前記複数のダイから第1のダイを選択し、前記複数のセグメントから第1のセグメントを選択し、前記第1のセグメントの使用可能なオフセットを判定し、書き込み要求を生成し、前記書き込み要求は、書き込みアドレス、目標データ、および前記目標データのデータ長を含み、前記書き込みアドレスは、前記第1のセグメントの識別子および前記使用可能なオフセットを含み、前記第1のセグメントの前記識別子は、前記第1のダイの識別子および前記第1のダイに接続されたチャネルの識別子を含み、前記第1のダイが属する前記ソリッドステートディスクに前記書き込み要求を送信するように構成され、
    前記ソリッドステートディスクは、前記書き込み要求を受信し、前記書き込みアドレスおよび前記目標データの前記データ長に従って、前記目標データを記憶するように構成される、
    記憶システム。
  12. 前記コントローラは、前記複数のダイの状態を記録するようにさらに構成され、
    前記コントローラは、前記複数のダイからステートレスダイを前記第1のダイとして選択するように特に構成される、
    請求項11に記載の記憶システム。
  13. 前記コントローラは、前記目標データのホスト論理ブロックアドレスに基づいて前記目標データのアクセス頻度を判定するようにさらに構成され、前記目標データの前記アクセス頻度がアクセス頻度閾値よりも大きい場合、
    前記コントローラは、前記アクセス頻度閾値よりもアクセス頻度が大きい、記憶されるデータ量が第1の閾値未満であるダイを前記第1のダイとして選択するように特に構成される
    請求項11に記載の記憶システム。
  14. 前記コントローラは、前記複数のダイのそれぞれに記憶された有効データ量を記録するようにさらに構成され、
    前記コントローラは、有効データ量が第2の閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項11に記載の記憶システム。
  15. 前記コントローラは、前記複数のダイのそれぞれの疲弊度を記録するようにさらに構成され、
    前記コントローラは、疲弊度が疲弊度閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項11に記載の記憶システム。
  16. 前記コントローラは、前記複数のダイのそれぞれで処理される読み出し要求の量を記録するようにさらに構成され、
    前記コントローラは、処理される読み出し要求がないダイを前記第1のダイとして選択する、または処理される読み出し要求の量が第3の閾値未満であるダイを前記第1のダイとして選択するように特に構成される、
    請求項11に記載の記憶システム。
  17. 前記コントローラは、マッピング関係を生成し、前記マッピング関係は、前記目標データのホスト論理ブロックアドレスと、前記第1のセグメントおよび前記使用可能なオフセットと、の間のマッピングを記録するように構成され、前記マッピング関係をシステムマッピングテーブルに記憶するようにさらに構成される、請求項11に記載の記憶システム。
  18. 前記ソリッドステートディスクは、
    前記書き込みアドレスに含まれた前記第1のセグメントの前記識別子および前記使用可能なオフセットに従って、ローカルマッピングテーブルに問い合わせし、前記ローカルマッピングテーブルは、前記ソリッドステートディスクのセグメントと物理ブロックアドレスとの間のマッピング関係を記憶するように構成され、
    前記ローカルマッピングテーブルに前記第1のセグメントに対応するブロックが記録されている場合、前記書き込みアドレスに含まれた前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブロックに書き込むように特に構成される、さもなければ
    前記第1のセグメントの前記識別子を解析して、前記第1のダイに接続された前記チャネルの前記識別子および前記第1のダイの前記識別子を取得し、前記第1のダイに接続された前記チャネルの前記識別子と前記第1のダイの前記識別子とに基づいて、前記第1のダイの複数のブロックからブランクブロックを選択し、前記書き込みアドレスに含まれる前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブランクブロックに書き込むように特に構成される、
    請求項11に記載の記憶システム。
  19. ソリッドステートディスクであって、前記ソリッドステートディスクは、プロセッサ、メモリ、通信インターフェース、および複数のチャネルを含み、前記プロセッサおよび前記メモリは、前記複数のチャネルのそれぞれを介して、複数のダイにそれぞれ接続され、前記複数のダイのそれぞれが複数のブロックを含み、前記プロセッサ、前記メモリ、および前記通信インターフェースが互いに通信することができ、
    前記通信インターフェースは、書き込み要求を受信するように構成され、前記書き込み要求は、書き込みアドレス、目標データ、および前記目標データのデータ長を含み、前記書き込みアドレスは、第1のダイの識別子、前記第1のダイに接続されたチャネルの識別子、第1のセグメントの識別子、および使用可能なオフセットを含み、
    前記メモリは、ローカルマッピングテーブルを記憶するように構成され、前記ローカルマッピングテーブルは、セグメントと前記ソリッドステートディスクの物理ブロックアドレスとの間のマッピング関係を記録するように構成され、
    前記プロセッサは、前記書き込みアドレスに含まれた前記第1のセグメントの前記識別子および前記使用可能なオフセットに従って、前記ローカルマッピングテーブルに問い合わせし、前記ローカルマッピングテーブルに前記第1のセグメントに対応するブロックが記録されている場合、前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブロックに書き込むように構成される、さもなければ、前記第1のダイに接続された前記チャネルの前記識別子と前記第1のダイの前記識別子とに基づいて、前記第1のダイの複数のブロックからブランクブロックを選択し、前記書き込みアドレスに含まれる前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブランクブロックに書き込むように構成される、
    ソリッドステートディスク。
  20. 前記プロセッサは、新しいマッピング関係を生成し、前記新しいマッピング関係は、前記第1のセグメントと前記ブランクブロックとの間のマッピングを記録するように構成され、前記新しいマッピング関係を前記ローカルマッピングテーブルに記憶するようにさらに構成される、請求項19に記載のソリッドステートディスク。
  21. ソリッドステートディスクであって、前記ソリッドステートディスクは、プロセッサ、メモリ、通信インターフェース、および複数のチャネルを含み、前記プロセッサおよび前記メモリは、前記複数のチャネルのそれぞれを介して、複数のダイにそれぞれ接続され、前記複数のダイのそれぞれが複数のブロックを含み、前記プロセッサ、前記メモリ、および前記通信インターフェースが互いに通信することができ、
    前記通信インターフェースは、書き込み要求を受信するように構成され、前記書き込み要求は、書き込みアドレス、目標データ、および前記目標データのデータ長を含み、前記書き込みアドレスは、第1のセグメントの識別子および使用可能なオフセットを含み、前記第1のセグメントの前記識別子は、第1のダイの識別子および前記第1のダイに接続されたチャネルの識別子を運び、
    前記メモリは、ローカルマッピングテーブルを記憶するように構成され、前記ローカルマッピングテーブルは、セグメントと前記ソリッドステートディスクの物理ブロックアドレスとの間のマッピング関係を記録するように構成され、
    前記プロセッサは、前記書き込みアドレスに含まれた前記第1のセグメントの前記識別子および前記使用可能なオフセットに従って、前記ローカルマッピングテーブルに問い合わせし、前記ローカルマッピングテーブルに前記第1のセグメントに対応するブロックが記録されている場合、前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブロックに書き込むように構成される、さもなければ
    前記第1のセグメントの前記識別子を解析して、前記第1のダイの前記識別子および前記第1のダイに接続された前記チャネルの前記識別子を取得し、前記第1のダイに接続された前記チャネルの前記識別子と前記第1のダイの前記識別子とに基づいて、前記第1のダイの複数のブロックからブランクブロックを選択し、前記書き込みアドレスに含まれる前記使用可能なオフセットに従って、ページ識別子を判定し、前記目標データの前記データ長に基づいて、かつ前記ページ識別子に対応するページから開始して、前記目標データを前記ブランクブロックに書き込むように構成される、
    ソリッドステートディスク。
  22. 前記プロセッサは、新しいマッピング関係を生成し、前記新しいマッピング関係は、前記第1のセグメントと前記ブランクブロックとの間のマッピングを記録するように構成され、前記新しいマッピング関係を前記ローカルマッピングテーブルに記憶するようにさらに構成される、請求項21に記載のソリッドステートディスク。
  23. ソリッドステートディスクにデータを書き込むための方法であって、前記方法は、記憶システムに適用可能であり、前記記憶システムはコントローラと前記ソリッドステートディスクとを備え、前記コントローラは前記ソリッドステートディスクと通信することができ、前記ソリッドステートディスクは複数のチャネルを含み、前記複数のチャネルのそれぞれは複数のダイに接続され、前記コントローラは、予め複数のセグメントを作成し、前記方法は、
    前記コントローラによって、前記複数のダイから第1のダイを選択するステップと、
    前記コントローラによって、前記複数のセグメントから第1のセグメントを選択し、前記第1のセグメントの使用可能なオフセットを判定するステップと、
    前記コントローラによって、書き込み要求を生成するステップであって、前記書き込み要求は、書き込みアドレス、目標データ、および前記目標データのデータ長を含み、前記書き込みアドレスは、前記第1のダイに接続されたチャネルの識別子、前記第1のダイの識別子、前記第1のセグメントの識別子、および前記使用可能なオフセットを含む、ステップと、
    前記コントローラによって、前記ソリッドステートディスクに前記書き込み要求を送信するステップと、
    を含む、方法。
  24. 前記第1のダイがステートレスダイである、請求項23に記載の方法。
  25. 前記コントローラは、前記目標データのホスト論理ブロックアドレスに基づいて前記目標データのアクセス頻度を判定し、
    前記目標データの前記アクセス頻度がアクセス頻度閾値よりも大きい場合、前記第1のダイに記憶され、かつ前記アクセス頻度閾値よりもアクセス頻度が大きい、データ量が第1の閾値未満である、
    請求項23に記載の方法。
  26. 前記第1のダイに記憶された有効データの量が第2の閾値未満である、請求項23に記載の方法。
  27. 前記第1のダイの疲弊度が疲弊度閾値未満である、請求項23に記載の方法。
  28. 前記第1のダイには処理される読み出し要求がない、または前記第1のダイにおける処理される読み出し要求の量が第3の閾値未満である、請求項23に記載の方法。
  29. 前記第1のセグメントがブランクセグメントである、請求項23に記載の方法。
  30. 前記第1のセグメントは既に前記第1のダイに割り当てられ、前記第1のセグメントには使用可能な空間がある、請求項23に記載の方法。
  31. 前記方法は、
    前記コントローラによって、マッピング関係を生成するステップであって、前記マッピング関係は、前記目標データのホスト論理ブロックアドレスと、前記第1のダイに接続された前記チャネル、前記第1のダイ、前記第1のセグメント、および前記使用可能なオフセットと、の間のマッピングを記録するように構成される、ステップと、
    前記マッピング関係をシステムマッピングテーブルに記憶するステップと、
    をさらに含む、請求項23に記載の方法。
JP2018522781A 2016-12-29 2016-12-29 記憶システムおよびソリッドステートディスク Active JP6667629B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/113088 WO2018119901A1 (zh) 2016-12-29 2016-12-29 存储系统和固态硬盘

Publications (2)

Publication Number Publication Date
JP2019508765A true JP2019508765A (ja) 2019-03-28
JP6667629B2 JP6667629B2 (ja) 2020-03-18

Family

ID=62710177

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018522781A Active JP6667629B2 (ja) 2016-12-29 2016-12-29 記憶システムおよびソリッドステートディスク

Country Status (6)

Country Link
US (1) US10768857B2 (ja)
EP (1) EP3367251B1 (ja)
JP (1) JP6667629B2 (ja)
CN (1) CN109154917B (ja)
SG (1) SG11201802566PA (ja)
WO (1) WO2018119901A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230050837A (ko) * 2021-10-08 2023-04-17 중앙대학교 산학협력단 Wan 환경에서의 데이터 사용률 기반의 데이터 관리 방법 및 장치

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520704B1 (en) * 2021-06-30 2022-12-06 International Business Machines Corporation Writing store data of multiple store operations into a cache line in a single cycle
CN108255414B (zh) * 2017-04-14 2020-04-03 新华三信息技术有限公司 固态硬盘访问方法及装置
US10664196B2 (en) * 2017-07-14 2020-05-26 Clipchamp Ip Pty Ltd Random access file management
CN112997162A (zh) * 2018-11-20 2021-06-18 华为技术有限公司 一种删除内存中索引项的方法、装置
CN109634873A (zh) * 2018-12-10 2019-04-16 浪潮(北京)电子信息产业有限公司 固态盘存储主机系统日志信息方法、装置、设备及介质
KR20200110863A (ko) * 2019-03-18 2020-09-28 에스케이하이닉스 주식회사 메모리 시스템, 컴퓨팅 장치 및 동작 방법
CN111949560B (zh) * 2019-05-16 2024-01-23 兆易创新科技集团股份有限公司 一种数据写入方法、装置及存储设备
CN110275800B (zh) * 2019-06-20 2021-06-08 深圳忆联信息系统有限公司 Ssd数据物理备份方法、装置、计算机设备及存储介质
CN110716699A (zh) * 2019-10-17 2020-01-21 北京百度网讯科技有限公司 用于写入数据的方法和装置
US11249896B2 (en) 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US11221802B2 (en) * 2020-06-10 2022-01-11 Western Digital Technologies, Inc. Zone allocation for data storage device based on zone reset behavior
CN112363833B (zh) * 2020-11-10 2023-01-31 海光信息技术股份有限公司 一种网络数据包的内存分配方法、装置及相关设备
CN112433673B (zh) * 2020-11-13 2022-08-09 苏州浪潮智能科技有限公司 一种固态硬盘存储数据的方法和设备
JP2022120544A (ja) * 2021-02-05 2022-08-18 東芝テック株式会社 メモリ制御装置およびプログラム
US11803311B2 (en) * 2021-03-31 2023-10-31 Advanced Micro Devices, Inc. System and method for coalesced multicast data transfers over memory interfaces
US11907123B2 (en) * 2021-04-20 2024-02-20 International Business Machines Corporation Flash memory garbage collection
US12007998B2 (en) * 2021-05-27 2024-06-11 Sap Se Caching for disk based hybrid transactional analytical processing system
JP2023000085A (ja) * 2021-06-17 2023-01-04 キオクシア株式会社 メモリシステム及び情報処理システム
US20230088364A1 (en) * 2021-09-17 2023-03-23 Red Hat, Inc. Dynamically Switching A Software Service Between Stateful Mode And Stateless Mode
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法
CN116244225A (zh) * 2021-12-08 2023-06-09 华为技术有限公司 存储介质、存储元件、存储介质配置方法及数据传输方法
US11860811B2 (en) * 2022-03-23 2024-01-02 Arm Limited Message protocol for a data processing system
CN116991759B (zh) * 2023-09-25 2024-01-26 苏州元脑智能科技有限公司 片上存储空间的分配方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
KR20080017982A (ko) * 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
KR101449524B1 (ko) * 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) * 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
US8239724B2 (en) * 2009-04-08 2012-08-07 Google Inc. Error correction for a data storage device
US8321647B2 (en) * 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8402243B2 (en) * 2010-02-25 2013-03-19 Apple Inc. Dynamically allocating number of bits per cell for memory locations of a non-volatile memory
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
CN102567257B (zh) * 2011-12-26 2014-08-27 华中科技大学 一种控制多通道固态盘数据读写的方法
CN103218270B (zh) * 2013-03-11 2016-08-17 北京忆恒创源科技有限公司 具有多个固态盘的计算机
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
US9336129B2 (en) * 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
US10089033B2 (en) 2014-04-24 2018-10-02 Hitachi, Ltd. Storage system
CN104090847B (zh) * 2014-06-25 2017-01-11 华中科技大学 一种固态存储设备的地址分配方法
CA2896369C (en) * 2014-06-27 2017-08-15 Chenyi Zhang Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
CN104461393B (zh) * 2014-12-09 2017-05-17 华中科技大学 一种闪存存储器的混合映射方法
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230050837A (ko) * 2021-10-08 2023-04-17 중앙대학교 산학협력단 Wan 환경에서의 데이터 사용률 기반의 데이터 관리 방법 및 장치
KR102688447B1 (ko) 2021-10-08 2024-07-24 중앙대학교 산학협력단 Wan 환경에서의 데이터 사용률 기반의 데이터 관리 방법 및 장치

Also Published As

Publication number Publication date
US10768857B2 (en) 2020-09-08
JP6667629B2 (ja) 2020-03-18
CN109154917B (zh) 2020-09-29
SG11201802566PA (en) 2018-08-30
EP3367251A1 (en) 2018-08-29
CN109154917A (zh) 2019-01-04
EP3367251A4 (en) 2019-04-10
WO2018119901A1 (zh) 2018-07-05
EP3367251B1 (en) 2023-06-21
US20180232181A1 (en) 2018-08-16

Similar Documents

Publication Publication Date Title
JP2019508765A (ja) 記憶システムおよびソリッドステートディスク
US11029848B2 (en) File management method, distributed storage system, and management node
JP6785205B2 (ja) メモリシステムおよび制御方法
US10303618B2 (en) Power savings via dynamic page type selection
JP6785204B2 (ja) メモリシステムおよび制御方法
JP2017021805A (ja) 不揮発性メモリ装置内でデータ属性基盤データ配置を利用可能にするインターフェイス提供方法及びコンピュータ装置
US20140304452A1 (en) Method for increasing storage media performance
CN103488685B (zh) 一种基于分布式存储系统的碎片文件存储方法
JP6526235B2 (ja) データチェック方法および記憶システム
KR102398181B1 (ko) 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
JP6455900B2 (ja) ストレージシステムおよびシステムガベージコレクション方法
CN110837479B (zh) 数据处理方法、相关设备及计算机存储介质
KR101579941B1 (ko) 가상머신 i/o 관리 방법 및 장치
JP2018073038A (ja) メモリシステム
US11875152B2 (en) Methods and systems for optimizing file system usage
CN113535597A (zh) 内存管理方法、内存管理单元和物联网设备
JP7524443B2 (ja) メモリシステムおよび制御方法
JP2022019787A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200225

R150 Certificate of patent or registration of utility model

Ref document number: 6667629

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