JP2018073038A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2018073038A JP2018073038A JP2016210524A JP2016210524A JP2018073038A JP 2018073038 A JP2018073038 A JP 2018073038A JP 2016210524 A JP2016210524 A JP 2016210524A JP 2016210524 A JP2016210524 A JP 2016210524A JP 2018073038 A JP2018073038 A JP 2018073038A
- Authority
- JP
- Japan
- Prior art keywords
- die
- write
- color
- controller
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】寿命を短くすること無く性能を改善することができるメモリシステムを実現する。
【解決手段】実施形態によれば、メモリシステムは、優先順位が付けられた複数の不揮発性メモリダイを各々が含む複数のダイ集合を管理する。前記コントローラは、ホストから受信した論理的な書き込み先のダイを指定する識別子基づいて前記複数のダイ集合から一つのダイ集合を選択する。前記コントローラは、前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択する。前記コントローラは、前記選択された不揮発性メモリダイを、前記ホストから受信されるライトデータの書き込み先のダイとして決定する。
【選択図】図1
【解決手段】実施形態によれば、メモリシステムは、優先順位が付けられた複数の不揮発性メモリダイを各々が含む複数のダイ集合を管理する。前記コントローラは、ホストから受信した論理的な書き込み先のダイを指定する識別子基づいて前記複数のダイ集合から一つのダイ集合を選択する。前記コントローラは、前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択する。前記コントローラは、前記選択された不揮発性メモリダイを、前記ホストから受信されるライトデータの書き込み先のダイとして決定する。
【選択図】図1
Description
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、その高性能という特徴により、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDに搭載されるNAND型フラッシュメモリは、複数のNAND型フラッシュメモリダイ(NAND型フラッシュメモリチップとも云う)から構成されるのが一般的である。これらダイは並列に動作することができる。
"Open-Channel Solid State Drives NVMe Specification"、Revision 1.2、April 2016、[online]、[平成28年10月11日検索]、インターネット(URL:http://lightnvm.io/docs/Open-ChannelSSDInterfaceSpecification12-final.pdf)
本発明が解決しようとする課題は、寿命を短くすること無く受信した要求に対する応答性能を改善することができるメモリシステムを提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、並列動作可能な複数の不揮発性メモリダイを備える不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備する。前記コントローラは、前記複数の不揮発性メモリダイのうち優先順位付けされた複数の不揮発性メモリダイを各々が含む複数のダイ集合を管理する。前記コントローラは、前記ホストから受信した論理的な書き込み先のダイを指定する識別子に基づいて前記複数のダイ集合から一つのダイ集合を選択する。前記コントローラは、前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択する。前記コントローラは、前記選択された不揮発性メモリダイを、前記ホストから受信されるライトデータの書き込み先のダイとして決定する。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NAND型フラッシュメモリを備えたソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、SSD3をアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータをSSD3に保存するストレージサーバ(サーバ)であってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel、NVM Express(NVMe)(登録商標)等を使用し得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。SSD3は、DRAM6も備えていてもよい。NAND型フラッシュメモリ5は、メモリセルアレイを含む。このメモリセルアレイは、多数のブロックB0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「消去ブロック」または「物理ブロック」と称されることもある。
ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NAND型フラッシュメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データを消去するための消去動作はブロック単位で実行される。
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。
NAND型フラッシュメモリ5は、図2に示すように、複数のNAND型フラッシュメモリダイ(不揮発性メモリダイ)を含む。ダイは、「チップ」とも称される。各NAND型フラッシュメモリダイは、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。このメモリセルアレイは、複数のブロックによって編成される。各ブロックは多数のページによって編成される。図2においては、NANDインタフェース13に8個のチャンネル(Ch#1〜Ch#8)が接続されており、8個のチャンネル(Ch#1〜Ch#8)の各々に4つのNAND型フラッシュメモリダイが接続されている場合が例示されている。各チャンネルは、対応するNAND型フラッシュメモリダイと通信するための通信線(メモリバス)を含む。コントローラ4の制御の下、NANDインタフェース13は、8個のチャンネル(Ch#1〜Ch#8)を介してNAND型フラッシュメモリダイ#0〜#31をアクセスすることができる。なお、SSD3に搭載されるNAND型フラッシュメモリダイの数は32個に限定されず、任意の数のNAND型フラッシュメモリダイがSSD3に搭載され得る。また、チャンネルの数も8個に限定されず、任意の数のチャンネルが使用され得る。
ところで、近年、SSDなどに代表される高速なストレージデバイスに対する読み込み応答性能への要求が高まっている。特に、テールレイテンシ(tail latency)と呼ばれる、アクセス要求に対する応答時間(レイテンシ)の平均値に対して極端に遅くなるような応答が問題となることがあるとされており、特にリード要求に対する応答時間(リードレイテンシ)の予測性を高めることが求められる。
リードレイテンシが変動する要因の一つとして、NANDフラッシュメモリへのアクセスの衝突がある。一つのNAND型フラッシュメモリダイ(単にダイともいう)に対する処理(書き込み動作、読み出し動作、消去動作)は並列化されず、逐次的に処理される。すなわち、ダイは並列実行の単位であり、多くのダイがあれば、チャンネルの帯域の制限はあるが、ダイの数と同数の処理を並列に行うことができる。
一般的に、NAND型フラッシュメモリへの書き込み動作には読み出し動作に対してより長い時間がかかる。よって、書き込み動作中のダイに対して読み出し動作が発生した場合、その読み出しのレイテンシは通常よりも非常な長くなり、これがリードレイテンシ変動の一因となる。
また、NAND型フラッシュメモリにおいては、消去状態のブロックにのみ書き込みが可能となる。このため、最初の書き込みの前にブロック単位で消去処理を行わなければならない。この消去処理を行っているダイに対して読み出し動作が発生した場合、その読み出しのレイテンシは通常よりも非常な長くなり、これもリードレイテンシ変動の一因となる。
このように、同一のダイに対して処理が要求されることを以下ダイ衝突(die collision)と呼ぶ。
ホストからSSDへの書き込みにおいて、データが書き込まれるべき記憶位置は、通常、論理ブロックアドレス(LBA)と称される論理アドレスで指示される。
一方、どのLBAがどのダイのどのブロックに割り当てられるかは、通常、SSD内部で隠蔽されるためホストが知ることはできない。
よって、ホストが書き込みを行った場合、どのダイが書き込み動作中になっているかをホストは知ることができない。このため、ホストはどの要求がダイ衝突を招くかを知ることができない。
ダイ衝突を避けるための一つの方法としては、SSD内部のチャンネルおよびダイの構成に関する情報をホストに通知する方法が考えられる。この方法を使用すれば、ホストは、データが書き込まれるべき記憶位置を指定する情報として、通常のLBAではなく、チャンネルおよびダイを指定することができる。これにより、ホスト側から、データが書き込まれるべきダイを直接的に指定することができるため、ホストはどの要求がダイ衝突を引き起こすかを知ることができる。
一方、この方法にはウェアレベリングの問題がある。
ウェアレベリングとは、書き替え回数(Program−Erase Cycles (P/E Cycles))を平準化する技術である。NAND型フラッシュメモリでは、書き替え回数は有限であり、あるブロックの書き替え回数が上限を超えると、そのブロックは使用できなくなるという性質がある。
このため、SSDでは、SSD全体の寿命を高めるため、ブロック間で書き替え回数を平準化することが必要である。
例えば、ホストから同じLBAへの書き込み(書き替え)要求が到来しても、SSDは、同じ記憶位置にデータを書き込むのではなく、異なる記憶位置にデータを書き込み、そして、このLBAと、データが実際に書き込まれた記憶位置との間の関係を記録する。データの書き込み先は、ブロック間で書き替え回数ができる限り平準化されるように選択される。
ホスト側から書き込み先のダイを直接的に指定するという上述の方法が適用されたSSDでは、この平準化のための範囲が強く制約される。例えば、64個のダイを持つSSDの場合、ホストが同一のLBAへの書き込みを続けた場合、通常のSSDに対して64分の1の書き込み量で、あるブロックの書き替え回数が限界を超えることが予想される。
このように、ホスト側から書き込み先のダイを直接的に指定するという上述の方法では、ある特定のダイにデータ書き込みが集中してしまう場合がある。この場合、この特定のダイの書き替え回数(Program−Erase Cycles (P/E Cycles))が早く上限に達しやすくなり、この結果、SSDの寿命が短くなる可能性がある。また、チャンネルやダイの数はSSDのモデルによって異なるため、アプリケーションの振る舞いをモデルに合わせて変更する必要があり、これによってアプリケーションの開発負荷が高くなる。
そこで、本実施形態に係るSSD3は、SSD3の寿命を短くすること無く、要求に対するSSD3の応答性能を改善することを可能にする新たな機能(以下カラーリングと称する)を有している。このカラーリングは、ホスト2に書き込み先のダイを直接指定させるのではなく、ある論理的な書き込み先ダイを示す識別子をホスト2から受信し、この受信された識別子に基づいて幾つかのダイ集合からいずれか一つのダイ集合を選択し、この選択されたダイ集合内のいずれか一つのダイを実際の書き込み先ダイとして決定する。
各ダイ集合においては、このダイ集合に含まれるダイそれぞれに優先順位が付けられている。SSD3は、受信された識別子に基づいてダイ集合を選択し、この選択されたダイ集合内のダイそれぞれに対する上述の優先順位付けに基づいて、この選択されたダイ集合から一つのダイを選択し、選択されたダイを、ホスト2から受信されるライトデータの書き込み先のダイとして決定する。
よって、本実施形態のカラーリング機能では、ホスト2から受信された識別子に基づいてダイ集合と云う広い書き込み先範囲を選択することができ、この選択されたダイ集合内のダイ間で書き込み先を分散することができる。このことは、SSD3の寿命を短くすることなくSSD3の応答性能を改善することを可能にする。
受信された識別子に基づいて選択されたダイ集合内の複数のダイからひとつのダイ(書き込み先のダイ)を選択するための方法としては、選択されたダイ集合内のダイの優先順位付けに基づいて書き込み先のダイを選択可能な任意の方法を使用できる。
例えば、SSD3は、ウェアレベリングまたは性能の少なくとも一方に関する条件を満たし且つより高い優先順位を有するダイを書き込み先ダイとして決定してもよい。この場合、SSD3は、選択されたダイ集合内のダイそれぞれの状態(例えば、書き替え回数、または未完了の処理の残数、等)を、これらダイの優先順位の順に評価してもよい。
SSD3の使用が開始されているある一定の期間(初期期間)においては、どのダイもほぼ同じ状態である。このため、SSD3への書き込みが要求される度に、選択されたダイ集合内の最高優先順位のダイが最優先で書き込み先ダイとして決定される。これにより、ホストからのライトデータは、選択されたダイ集合内の最高優先順位のダイに書き込まれる。
時間の経過に連れ、選択されたダイ集合内の最高優先順位のダイの書き替え回数は徐々に増える。いずれ、この最高優先順位のダイの書き替え回数と現在の最小書き替え回数との差は、ある書き替え回数許容差を超える。この場合、SSD3は、この最高優先順位のダイの書き替え回数が、ウェアレベリングのための条件を満たなくなったと判定し、そして、書き込み先ダイを、選択されたダイ集合内で次に優先順位に高いダイに変更する。
このようにして、選択されたダイ集合においては、このダイ集合内のダイそれぞれの書き替え回数に応じて、書き込み先ダイとして使用されるダイは、最高優先順位のダイから最低優先順位のダイに向けて徐々に移動される。よって、たとえホスト2が特定のカラーに偏った書き込みを行った場合でも、このカラーに対応するダイ集合内のダイ間で書き替え回数を平準化することができ、SSD3の寿命を維持することができる。
また、ホスト2が異なるカラーを指定したならば、異なるダイ集合が選択される。したがって、ホスト2が特定のカラーに偏らない書き込みを行う限り、ダイ衝突が発生する確率を下げることが可能となる。
ここでは、ウェアレベリングに関する条件(書き替え回数)に基づいて書き込み先ダイを決定する場合を説明したが、性能に関する条件(未完了の処理の残数)に基づいて書き込み先ダイを決定してもよい。この場合においても、初期の期間においては、最高優先順位のダイが最優先で書き込み先ダイとして決定されることが期待される。時間が経過するに連れ、最高優先順位のダイに格納されたデータ量が増加し、これに伴って最高優先順位のダイに向けられる読み出し動作の数も増える。よって、最高優先順位のダイの未完了の処理の残数が徐々に増えるので、書き込み先ダイは、選択されたダイ集合内のダイに亘って徐々に分散される。よって、性能に関する条件(未完了の処理の残数)を使用した場合においても、ウェアレベリングに関する条件(書き替え回数)を使用した場合と同様に、SSD3の寿命を短くすることなくSSD3の性能を改善することができる。
次に、図1のコントローラ4の構成について説明する。
コントローラ4は、複数のチャンネル(例えば8個のチャンネル)を介して複数のNAND型フラッシュメモリダイに電気的に接続される。コントローラ4は、NAND型フラッシュメモリ5(複数のNAND型フラッシュメモリダイ)のデータ管理とNANDフラッシュメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホストによって使用されるアドレスである。この論理アドレスとしては、通常、論理ブロックアドレス(LBA)が使用される。以下では、論理アドレスが論理ブロックアドレス(LBA)である場合を想定する。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)32を用いて実行される。コントローラ4は、ルックアップテーブル(LUT)32を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。管理サイズ単位は、限定されないが、例えば、4Kバイトであってもよい。アドレス変換テーブル(LUT32)は、SSD3の電源オン時にNANDフラッシュメモリ5からDRAM6にロードされてもよい。
あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDフラッシュメモリ5内の物理記憶位置を示す。物理アドレスは、例えば、ダイ番号とブロック番号とページ番号等との組み合わせによって表現されてもよい。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。このため、コントローラ4は、同じLBAへのライト(上書き)を、NAND型フラッシュメモリ5上の異なるページにマッピングする。つまり、コントローラ4は、ホスト2から受信されるライトコマンドによって指定されるデータ(ライトデータ)を、このデータのLBAとは無関係に、書き込み先ダイに含まれる書き込み先ブロック内の次の利用可能ページにライトする。そして、コントローラ4は、ルックアップテーブル(LUT)32を更新して、このLBAを、このデータが実際にライトされた物理記憶位置の物理アドレスに関連付ける。この書き込み先ブロックに利用可能ページが無くなると、新たなブロックが書き込み先ブロックとして割り当てられる。
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。
ホスト2は、読み出し要求(リードコマンド)、書き込み要求(ライトコマンド)、他の様々な要求(他の様々なコマンド)をSSD3に送出する。リードコマンドは、SSD3に対してデータのリードを要求するコマンドである。リードコマンドは、リードすべきデータのLBA(開始LBA)と、リードすべきデータのデータ長(転送長)とを含む。ライトコマンドは、SSD3に対してデータのライトを要求するコマンドである。ライトコマンドは、ライトデータ(つまり書き込むべきデータ)のLBA(開始LBA)と、ライトデータのデータ長(転送長)とを含む。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14等を含んでもよい。これらCPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド(例えば、ライトコマンド、リードコマンド、イレーズコマンド、アンマップ(UNMAP)/トリム(Trim)コマンド、等)を受信する。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、SSD3の電源オンに応答して、図示しないROMまたはNAND型フラッシュメモリ5に格納されている制御プログラム(ファームウェア)をDRAM6上にロードして所定の処理を実行する。このCPU12は、例えば、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。CPU12の動作は、CPU12によって実行されるファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、ライト動作制御部21、リード動作制御部22、カラーリング制御部23として機能することができる。
ライト動作制御部21は、ホスト2からの書き込み要求(ライトコマンド)の受信に応答して、書き込みデータ(ライトデータ)をホスト2から受信する。そして、ライト動作制御部21は、ライトデータを、NAND型フラッシュメモリ5内の書き込み先ダイに書き込む。リード動作制御部22は、ホスト2からの読み出し要求(リードコマンド)の受信に応答して、リードコマンドによって指定されるデータをNAND型フラッシュメモリ5から読み出す。そして、リード動作制御部22は、読み出されたデータをホスト2に送信する。
カラーリング制御部23は、上述のカラーリング機能を実行する。
カラーリング制御部23は、NAND型フラッシュメモリ5内の複数のNAND型フラッシュメモリダイを複数のダイ集合として管理する。各ダイ集合は、優先順位付けされた幾つかのNAND型フラッシュメモリダイを含む。カラーリング制御部23は、論理的な書き込み先のダイを指定する識別子(カラー)をホスト2から受信し、このカラーに基づいて複数のダイ集合から一つのダイ集合を選択する。カラーリング制御部23は、選択されたダイ集合内のNAND型フラッシュメモリダイそれぞれの状態をこれらNAND型フラッシュメモリダイの優先順位の順に評価することによって、選択されたダイ集合から、ウェアレベリングまたは性能の少なくとも一方に関する条件を満たし且つより高い優先順位を有するNAND型フラッシュメモリダイを選択する。そして、カラーリング制御部23は、選択されたNAND型フラッシュメモリダイを、ホスト2から受信されるライトデータを書き込むべき書き込み先のダイとして決定する。
NANDインタフェース13は、NAND型フラッシュメモリ5を制御するNANDコントローラである。DRAMインタフェース14は、DRAM6をアクセス制御するDRAMコントローラである。DRAM6の記憶領域は、ライトバッファ(WB)31、ルックアップテーブル(LUT)32、システム管理情報33を格納するために利用される。システム管理情報33は、上述のカラーリング機能に必要な様々な管理情報を含む。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43が含まれる。
一般に知られているように、オペレーティングシステム(OS)42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム43として使用されても良い。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System (例えば、Rocks DB) がファイルシステム43として使用されても良い。
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションソフトウェアレイヤ41がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。
ファイルシステム43は、カラー指定部44を含んでいてもよい。このカラー指定部44は、上述の識別子(カラー)を指定するためのプログラムモジュールである。カラー指定部44は、特定のカラーに偏らない書き込みを行うために、ファイルシステム43が、カラーの値がパラメータとして追加されたライトコマンド(拡張ライトコマンド)を発行することを可能にする。なお、カラー指定部44は、オペレーティングシステム42に組み込まれていてもよいし、アプリケーションに組み込まれていてもよい。
図3は、書き替え回数(p/e cycles)テーブル33Aを示す。
書き替え回数(p/e cycles)テーブル33Aは、システム管理情報33の一部であり、SSD3に搭載されたNAND型フラッシュメモリダイ#0、#1、#2、…#nの書き替え回数(p/e cycles)を示す。各ダイの書き替え回数は、このダイに含まれる多数のブロックそれぞれの書き替え回数の総和である。
図4は、NAND型フラッシュメモリ5の構造情報を示す。
NAND型フラッシュメモリ5の構造情報は、システム管理情報33の一部であり、ブロックサイズ(容量)、SSD容量(ユーザ容量)、等を含む。ブロックサイズは、一つのブロックのサイズ(容量)を示す。SSD容量(ユーザ容量)は、NAND型フラッシュメモリ5の総容量の内、ホスト2が利用可能な容量(ユーザ容量)を示す。コントローラ4は、ホスト2からの要求に応じて、この構造情報をホスト2に報告することができる。
図5は、優先順位テーブル33Cを示す。
優先順位テーブル33Cは、システム管理情報33の一部であり、カラーリング機能のための複数のダイ集合を管理するために利用される。
すなわち、SSD3のコントローラ4は、SSD3に搭載されたNAND型フラッシュメモリダイを、カラーリングのための異なる属性(ベースカラー)を使用して管理する。コントローラ4によって使用されるベースカラーの総数は、カラー分離数(number of base colors, NBC)と称される。このカラー分離数(number of base colors, NBC)は、カラーリングに使用されるダイ集合の数を示す。コントローラ4は、これらベースカラーに0から始まる連続した整数値を割り当てる。コントローラ4は、ベースカラー毎に、ダイの書き込み優先順位を決定する。
最高優先順位のダイは、ベースカラー間で互いに異なることが好ましい。したがって、典型的には、カラー分離数は、SSD3に搭載されたダイの総数と等しくなる。なお、カラー分離数は、ダイの総数よりも少なくてもよい。各ベースカラーに対応するダイの優先順位は事前に定められ、その後、ダイの優先順位は変更されない。例えば、SSD3の出荷時に、ベースカラー毎にダイの優先順位が定められてもよい。
図5の優先順位テーブル33Cは、SSD3に搭載されたダイの総数が3で、カラー分離数が3の場合を示している。優先順位テーブル33Cにおいては、3つのベースカラー「0」、「1」、「2」に対して、3つの異なるダイ#0、#1、#2が最高優先順位のダイとして割り当てられている。そして、ベースカラー「0」においては、ダイ#0、#1、#2の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「0」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定されている。つまり、ダイ#0、#1、#2は、ベースカラー「0」に対応するダイ集合として機能する。
同様に、ベースカラー「1」においては、ダイ#1、#2、#0の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「1」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定され、ベースカラー「2」においては、ダイ#2、#0、#1の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「2」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定されている。
なお、図5の優先順位テーブル33Cにおいては、各ベースカラーに対応するダイ集合に含まれるダイの数は、SSD3に搭載されたダイの総数(ここでは3)に等しい場合が示されているが、各ダイ集合に含まれるダイの数は、SSD3に搭載されたダイの総数よりも少なくてもよい。
すなわち、ベースカラー毎に、SSD3が持つ全てのダイについて優先順位を定めるのではなく、ベースカラー毎に、限られた一定個数のダイに対して優先順位を定めてもよい。この場合、ある選択されたベースカラーに対応するダイ集合内の全てのダイが書き込みのための条件を満たさない場合は、このダイ集合に含まれていない他のダイから書き込み先ダイを選択してもよい。
ベースカラーそれぞれとこれらベースカラーの各々が有するダイの優先順位(書き込み優先順位)の内容には、一定の関係性を持たせてもよい。例えば、隣り合うベースカラーが持つダイの書き込み優先順位は、隣り合うベースカラー間で書き込み先ダイとして選択されるダイが統計的に最も重複しにくくなるように定めてもよい。この場合、ホスト2は、最も衝突してほしくない2つの処理があった場合、この2つの処理に対して2つの隣接するカラーを割り当てる。これにより、ダイ衝突が発生する確率を最小にすることができる。なお、ベースカラーが隣接しているとは、2つの異なるベースカラーC1,C2が与えられたとき、C2−C1が1に等しいか、あるいは、C2−C1が、カラー分離数−1に等しいことを満たすことである。
ホスト2によって指定されるカラー(論理的な書き込み先ダイを示す識別子)としては、例えば、任意の整数が使用されてもよい。いま、ホスト2があるデータ書き込みのためにカラーcを指定したとする(color=c)。cは、任意の整数でよい。コントローラ4は、まず、以下の式に従って、ベースカラー(base color)を求める。
base color = color % number of base colors
ここで、%は、モジュロ演算を示す演算記号である。
ここで、%は、モジュロ演算を示す演算記号である。
つまり、コントローラ4は、カラーcをカラー分離数(number of base colors)で除した余りを求め、この余りをベースカラーとする。モジュロ演算の結果がbcであったとする。このbcは、選択すべきベースカラーの数字を示す。
このようにして、コントローラ4は、ホスト2によって指定されるカラーに基づいて、複数のベースカラー(複数のダイ集合)から一つのベースカラー(一つダイ集合)を選択することができる。選択されたベースカラーに対応するダイそれぞれには優先順位が割り当てられている。コントローラ4は、選択されたダイ集合内のダイそれぞれの状態をこれらダイの優先順位の順に評価することによって、選択されたダイ集合から、ウェアレベリングまたは性能に関する条件を満たし且つより高い優先順位を有するダイを選択する。
例えば、ダイ選択のためにウェアレベリングに関する条件が使用される場合には、コントローラ4は、選択されたダイ集合内に含まれるダイそれぞれの書き替え回数を優先順位順に評価することによって、ウェアレベリングに関する条件を満たし且つより高い優先順位を有するダイを選択する。ウェアレベリングに関する条件を満たすダイとは、現在の最小書き替え回数との差がある許容差以内の書き替え回数を有するダイを意味する。
また、例えば、ダイ選択のために性能に関する条件が使用される場合には、コントローラ4は、選択されたダイ集合内に含まれるダイそれぞれに割り当てられている未完了の処理の残数を優先順位順に評価することによって、選択されたダイ集合から、未完了の処理がより少なく且つより高い優先順位を有するダイを選択する。
ホスト2がカラーを指定せずにライトコマンドをSSD3に送信した場合には、コントローラ4は、このライトコマンドによって指定される書き込み先のLBAに自動的にあるカラーを与えてもよい。この場合、コントローラ4は、このLBAに与えたカラーをホスト2に通知してよい。これにより、ホスト2は、このLBAに与えられたカラーを知ることができる。また,ホスト2は任意の時点で,あるLBAに与えられたカラーが何であるかをSSD3に問い合わせてもよい.この時も,SSD3はこのLBAに与えられたカラーをホスト2に通知してもよい.
なお、ホスト2は、カラーのみならず、書き込み先ダイの選択のために適用されるポリシーを指定することもできる。このポリシーは、ダイ選択のために優先して適用すべき条件を指定するための付加的な情報である。ポリシーは、例えば、「ダイ位置優先」、「書き込み速度優先」、または「ウェアレベリング優先」のいずれかを示してもよい。
なお、ホスト2は、カラーのみならず、書き込み先ダイの選択のために適用されるポリシーを指定することもできる。このポリシーは、ダイ選択のために優先して適用すべき条件を指定するための付加的な情報である。ポリシーは、例えば、「ダイ位置優先」、「書き込み速度優先」、または「ウェアレベリング優先」のいずれかを示してもよい。
ホスト2によってポリシーが指定された場合には、コントローラ4は、各ダイの書き替え回数の評価または未完了処理の残数の評価に対する重み付け値が変更される。
(1)ダイ位置優先
ポリシーが「ダイ位置優先」を示す場合、コントローラ4は、選択されたダイ集合から、可能な限り、最高優先度のダイを選択してもよい。ここで、可能な限りとは、SSDが決定する絶対に許容できないレベルを規定するルールを破らない、ということである。
ポリシーが「ダイ位置優先」を示す場合、コントローラ4は、選択されたダイ集合から、可能な限り、最高優先度のダイを選択してもよい。ここで、可能な限りとは、SSDが決定する絶対に許容できないレベルを規定するルールを破らない、ということである。
例えば、どのダイの書き替え回数についても、その書き替え回数と現在の最小書き替え回数との差が最大許容差を上回らない、ということを厳守することが必要とされる。現在の最小書き替え回数は、全てのダイそれぞれの現在の書き替え回数の内の最小値である。この他にも、未完了の処理の残数が最大許容処理残数を上回らない、ということを厳守することが必要とされてもよい。
(2)書き込み速度優先
ポリシーが「書き込み速度優先」を示す場合、コントローラ4は、選択されたダイ集合から、可能な限り、要求された書き込み動作が早く終わるダイ、例えば、未完了の処理の残数が最も少ないダイを書き込み先ダイとして選択する。
ポリシーが「書き込み速度優先」を示す場合、コントローラ4は、選択されたダイ集合から、可能な限り、要求された書き込み動作が早く終わるダイ、例えば、未完了の処理の残数が最も少ないダイを書き込み先ダイとして選択する。
この場合、未完了の処理の残数に基づいて書き込み先ダイを選択する方法としては、未完了の処理の残数のみに基づいて書き込み先ダイを選択する方法を使用してもよいし、未完了の処理の内容に基づいて残数に重み付けを行い、この重み付けされた残数に基づいて書き込み先ダイを選択する方法を使用してもよい。重み付けの例を以下に説明する。
例えば、読み出し処理の重みを1とした場合、書き込み処理の重みは10、消去処理の重みは100といった重み付けが行われてもよい。いま、優先順位が1位で、且つ書き込み処理が1個残っているダイXと、優先順位が2位で、且つ読み出し処理が9個残っているダイYとが存在する場合を想定する。ダイXの未完了の処理の残数の重み付け結果は10となり、ダイYの未完了の処理の残数の重み付け結果は9となる。したがって、ダイYが選択される。
さらに、ダイの優先順位が下がることに対する重み付けを行ってもよい。例えば、優先順位が1つ下がることに対して、3の重みが付加されてもよい。いま、優先順位が1位で、且つ書き込み処理が1個残っているダイXと、優先順位が2位で、且つ読み出し処理が9個残っているダイYとが存在する場合を想定する。ダイXの未完了の処理の残数の重み付け結果は10となり、ダイYの未完了の処理の残数の重み付け結果は12(=9+3)となる。したがって、ダイXが選択される。
(3)ウェアレベリング優先
ポリシーが「ウェアレベリング優先」を示す場合、コントローラ4は、選択されたダイ集合から、最小書き替え回数との差がある許容差以下の書き替え回数を有し、且つより優先順位の高いダイを選択してもよい。
ポリシーが「ウェアレベリング優先」を示す場合、コントローラ4は、選択されたダイ集合から、最小書き替え回数との差がある許容差以下の書き替え回数を有し、且つより優先順位の高いダイを選択してもよい。
この許容差としては、例えば、
(i)最小書き替え回数に対する最大許容差
(ii)最小書き替え回数に対する好ましい許容差
が使用されても良い。
(i)最小書き替え回数に対する最大許容差
(ii)最小書き替え回数に対する好ましい許容差
が使用されても良い。
通常、最大許容差は、好ましい許容差よりも大きい値に設定される。ポリシーが「ウェアレベリング優先」を示す場合、ダイ間の書き替え回数の差がより平準化されるように、コントローラ4は、選択されたダイ集合から、最小書き替え回数との差がある好ましい許容差以下の書き替え回数を有し、且つより優先順位の高いダイを選択してもよい。
(4)ポリシーの指定なし
ポリシーの指定がない場合、コントローラ4は、SSD3が最も重要視する特性に対応するポリシー(デフォルトポリシー)を使用して、ダイを選択する。例えば、ウェアレベリングが最も重要視する指標であるならば、SSD3は、最小書き替え回数との差がある許容差(例えば好ましい許容差)以下の書き替え回数を有し、且つより優先順位の高いダイを選択してもよい。
ポリシーの指定がない場合、コントローラ4は、SSD3が最も重要視する特性に対応するポリシー(デフォルトポリシー)を使用して、ダイを選択する。例えば、ウェアレベリングが最も重要視する指標であるならば、SSD3は、最小書き替え回数との差がある許容差(例えば好ましい許容差)以下の書き替え回数を有し、且つより優先順位の高いダイを選択してもよい。
図6は、実行キュー状態テーブル33Dを示す。
実行キュー状態テーブル33Dは、システム管理情報33の一部であり、「書き込み速度優先」のポリシーで書き込み先ダイを決定するために使用される。
実行キュー状態テーブル33Dは、ダイ毎に、そのダイに割り当てられ且つ未完了の処理の残数を示してもよい。
次に、カラーを指示するための幾つかの方法について説明する。
(1)ホストが書き込み時にカラーを明示的に指示
ホスト2は、SSD3にライトコマンド(write)を送信する度に、以下のように、カラー(color)とポリシー(policy)とを指定してもよい。
ホスト2は、SSD3にライトコマンド(write)を送信する度に、以下のように、カラー(color)とポリシー(policy)とを指定してもよい。
write (addr=x, data=y, color=z, policy=w)
ここで、addrはデータが書き込まれるべき開始論理アドレス(e.g. 開始LBA)を示す。
ここで、addrはデータが書き込まれるべき開始論理アドレス(e.g. 開始LBA)を示す。
(2)ホストが事前に論理アドレス(e.g. LBA)の範囲を指定してカラーを明示的に指示
この場合、ホスト2は、以下のように、論理アドレス範囲とこの論理アドレス範囲に適用すべきカラーとの組を含むカラー割り当て要求をSSD3に事前に送信する。
この場合、ホスト2は、以下のように、論理アドレス範囲とこの論理アドレス範囲に適用すべきカラーとの組を含むカラー割り当て要求をSSD3に事前に送信する。
color_assign(addr=100, len=16, color=z, policy=w)
ここで、addrはデータが書き込まれるべき開始論理アドレス(e.g. 開始LBA)を示し、lenは論理アドレス長(論理ブロックの数)を示す。
ここで、addrはデータが書き込まれるべき開始論理アドレス(e.g. 開始LBA)を示し、lenは論理アドレス長(論理ブロックの数)を示す。
colorが指定されていない書き込みに対しては、以下のように、color=z, policy=wが適用される。
write(addr=101, data=y) => color= z, policy=w
なお、lenは任意の長さを指定可能であるが、例えば、ブロックサイズに対応するlenを使用してもよい。この場合、ホスト2は、SSD容量に対応する論理アドレス空間(LBA空間)をブロックサイズ境界の単位で複数の論理アドレス範囲(LBA範囲)に分け、これら複数のLBA範囲と、これら複数のLBA範囲にそれぞれ割り当てるべき複数のカラーとを指定するカラー割り当て要求をSSD3に送信してもよい。これにより、ブロック単位でカラーを容易に割り当てる事ができ、また、例えば、隣接する2つのLBA範囲への2つの書き込みを異なる2つのダイに向けることができる。
なお、lenは任意の長さを指定可能であるが、例えば、ブロックサイズに対応するlenを使用してもよい。この場合、ホスト2は、SSD容量に対応する論理アドレス空間(LBA空間)をブロックサイズ境界の単位で複数の論理アドレス範囲(LBA範囲)に分け、これら複数のLBA範囲と、これら複数のLBA範囲にそれぞれ割り当てるべき複数のカラーとを指定するカラー割り当て要求をSSD3に送信してもよい。これにより、ブロック単位でカラーを容易に割り当てる事ができ、また、例えば、隣接する2つのLBA範囲への2つの書き込みを異なる2つのダイに向けることができる。
(3)SSDが動的にカラーを選択
ホスト2が現在の書き込みに対してカラーを指定せず、且つ事前にもカラーが指定されていなかった場合、SSD3は、動的にその書き込み先の論理アドレスに対してカラーを割り当ててもよい。
ホスト2が現在の書き込みに対してカラーを指定せず、且つ事前にもカラーが指定されていなかった場合、SSD3は、動的にその書き込み先の論理アドレスに対してカラーを割り当ててもよい。
つまり、SSD3は、以下のライトコマンドをホスト2から受信する。
write(addr=x, data=y)
addr xに対してホスト2が事前にカラーを指定していなかった場合、SSD3は、このaddr xに対して、あるカラーを与えることができる。この時、SSD3は、与えたカラーと上述のデフォルトポリシーとを使用して、ライトデータによって指定されるデータを書き込むべき書き込み先ダイを決定する。また,この時,SSD3は,デフォルトポリシーに対して最良の結果が得られるダイを選択し,そのダイが最優先となるカラーを,与えるカラーとして選択してもよい.
(4)SSDが事前に暗黙的にカラーを割り当てる
また、SSD3は、事前に全ての論理アドレスに対して暗黙的にカラーを割り当ててもよい。例えば、SSD3は、SSD3の容量(ユーザ容量)に対応するLBA空間をx個のLBA毎(これをstepと呼ぶ)に分割し、これらstepに、異なるカラーを周期的に割り当てても良い。例えば stepが2、カラー分離数が4の場合、SSD3は、図7に示すように、カラー0、カラー1、カラー2、カラー3を全ての論理アドレス(LBA)に割り当てる。
addr xに対してホスト2が事前にカラーを指定していなかった場合、SSD3は、このaddr xに対して、あるカラーを与えることができる。この時、SSD3は、与えたカラーと上述のデフォルトポリシーとを使用して、ライトデータによって指定されるデータを書き込むべき書き込み先ダイを決定する。また,この時,SSD3は,デフォルトポリシーに対して最良の結果が得られるダイを選択し,そのダイが最優先となるカラーを,与えるカラーとして選択してもよい.
(4)SSDが事前に暗黙的にカラーを割り当てる
また、SSD3は、事前に全ての論理アドレスに対して暗黙的にカラーを割り当ててもよい。例えば、SSD3は、SSD3の容量(ユーザ容量)に対応するLBA空間をx個のLBA毎(これをstepと呼ぶ)に分割し、これらstepに、異なるカラーを周期的に割り当てても良い。例えば stepが2、カラー分離数が4の場合、SSD3は、図7に示すように、カラー0、カラー1、カラー2、カラー3を全ての論理アドレス(LBA)に割り当てる。
このようにSSD3が事前に暗黙的にカラーを割り当てるケースにおいては、ポリシーとしては、デフォルトポリシーが適用されてもよい。
なお、ホスト2が明示的にカラーを指定するライトコマンドをSSD3に送信した場合、暗黙的に割り当てられたカラーよりも、このライトコマンドによって指定されたカラーが優先的に適用される。
例えば、図7のように論理アドレス(LBA)にカラーが割り当てられている状態で、ホスト2が以下のライトコマンドをSSD3に送信した場合を想定する。
write(addr=2, data=X, color=3, policy=w)
この場合、addr 2については、暗黙的な値であるカラー1ではなく、ホスト2によって指定されたカラー3が割り当てられる。
この場合、addr 2については、暗黙的な値であるカラー1ではなく、ホスト2によって指定されたカラー3が割り当てられる。
また、ホスト2は、LBAに現在割り当てられているカラーをSSD3に問い合わせることができる。
color_query(addr=100)
SSD3は、この問い合わせによって指定されたLBAに割り当てられているカラーをホスト2に通知する。
SSD3は、この問い合わせによって指定されたLBAに割り当てられているカラーをホスト2に通知する。
また、全てのLBAに暗黙的にカラーが割り当てられている場合においては、ホスト2は、暗黙的なカラー割り当ての設定を問い合わせる以下の問い合わせコマンドをSSD3に送信することができる。
color_implicit_setting_query()
この問い合わせコマンドを受信したことに応答して、SSD3は、以下の応答をホスト2に送信してもよい。
この問い合わせコマンドを受信したことに応答して、SSD3は、以下の応答をホスト2に送信してもよい。
color_implicit_setting_query_reply(number_of_base_colors = 4, step=2)
図8は、SSD3のコントローラ4によって実行されるデータ書き込み処理シーケンスを示す。
図8は、SSD3のコントローラ4によって実行されるデータ書き込み処理シーケンスを示す。
ここでは、「ホストが書き込み時にカラーを明示的に指示」する方法または「ホストが事前に論理アドレス(e.g. LBA)の範囲を指定してカラーを明示的に指示」する方法を使用して、ホスト2がカラーを指定する場合を想定する。
コントローラ4は、ホスト2が受信されたカラーに基づいて、複数のベースカラー(複数のダイ集合)から、一つのベースカラー(一つのダイ集合)を選択する(ステップS101)。次いで、コントローラ4は、選択されたダイ集合に属するダイの状態を優先順位の高いダイから順に評価し、これによって、選択されたダイ集合から、ウェアレベリングまたは性能に関する条件を満たし且つより高い優先順位を有するダイを選択する(ステップS102)。次いで、コントローラ4は、この選択されたダイを、ホスト2から受信されるライトデータを書き込むべき書き込み先ダイとして決定する(ステップS103)。
コントローラ4は、ライトデータを、書き込み先ダイとして決定されたダイに書き込む(ステップS104)。そして、コントローラ4は、LUT32を更新して、このライトデータのLBAに、ライトデータが書き込まれたNAND型フラッシュメモリ5の記憶位置を示す物理アドレスをマッピングする(ステップS105)。
図9は、SSD3に適用されるライトコマンド(拡張ライトコマンド)の例を示す。
ライトコマンドは、以下のパラメータを含む。
(1)開始LBA
(2)データ長(論理ブロックの数)
(3)Color
(4)Policy(オプショナル)
開始LBA(開始論理アドレス)は、書き込まれるべきデータの最初のLBAを示す。
(2)データ長(論理ブロックの数)
(3)Color
(4)Policy(オプショナル)
開始LBA(開始論理アドレス)は、書き込まれるべきデータの最初のLBAを示す。
データ長は、書き込まれるべきデータの長さ(書き込まれるべきデータに対応する論理ブロックの数)を示す。
Colorは、書き込み先ダイ(論理的な書き込み先ダイ)を指定する識別子である。任意の整数をこの識別子として使用することができる。
Policyは、ダイ選択のために優先して適用すべき条件を指定するための付加的な情報であり、「ダイ(die)位置優先」、「書き込み速度優先」、「ウェアレベリング(wear leveling)優先」のいずれかを指定する。
図10は、SSD3のコントローラ4によって実行されるデータ書き込み処理シーケンスを示す。
ここでは、ライトコマンドによってカラーとポリシーとが指定される場合を想定する。
コントローラ4は、ホスト2から受信されたライトコマンドに含まれるカラーに基づいて複数のベースカラー(複数のダイ集合)から一つのベースカラー(一つのダイ集合)を選択する(ステップS201)。次いで、コントローラ4は、選択されたダイ集合に属するダイの状態を優先順位が高いダイから順に評価し、これによって、選択されたダイ集合から、ウェアレベリングまたは性能に関する条件を満たし且つより高い優先順位を有するダイを選択する(ステップS202)。次いで、コントローラ4は、この選択されたダイを、ホスト2から受信されるライトデータを書き込むべき書き込み先ダイとして決定する(ステップS203)。
コントローラ4は、ライトデータを、書き込み先ダイとして決定されたダイに書き込む(ステップS204)。そして、コントローラ4は、LUT32を更新して、このライトデータのLBAに、ライトデータが書き込まれたNAND型フラッシュメモリ5の記憶位置を示す物理アドレスをマッピングする(ステップS205)。
図11は、カラー管理コマンドの例を示す。
カラー管理コマンドは、上述のカラー割り当て要求として使用されるコマンドである。カラー管理コマンドは、複数のLBA範囲と、これらLBA範囲に割り当てるべき複数のカラー、及び複数のポリシーを含んでもよい。つまり、カラー管理コマンドは、各組がLBA範囲、カラー、およびポリシーを含む、複数の組を指定することができる。
LBA範囲#1は、同じカラーが適用されるべき、あるLBA範囲(論理アドレス範囲)を示す。
Color#1で指定されるカラーは、LBA範囲#1に適用される。また、Policy#1で指定されるポリシーは、LBA範囲#1に適用される。
LBA範囲#2は、同じカラーが適用されるべき、別のLBA範囲(論理アドレス範囲)を示す。
Color#2で指定されるカラーは、LBA範囲#2に適用され、Policy#2で指定されるポリシーは、LBA範囲#2に適用される。
同様に、Color#nで指定されるカラーは、LBA範囲#nに適用され、Policy#nで指定されるポリシーは、LBA範囲#nに適用される。nは、カラー管理コマンドによって指定可能な、LBA範囲、カラー、ポリシーの組の最大数である。
図12は、カラー管理コマンドに応じてSSD3のコントローラ4によって生成されるカラーテーブル33Eを示す。
カラーテーブル33Eの各エントリは、LBA範囲フィールド、カラーフィールド、およびポリシーフィールドを含む。
エントリ#1においては、カラー管理コマンドによって指定されるLBA範囲#1がLBA範囲フィールドに登録され、カラー管理コマンドによって指定されるColor#1がカラーフィールドに登録され、カラー管理コマンドによって指定されるPolicy#1がポリシーフィールドに登録される。
エントリ#2においては、カラー管理コマンドによって指定されるLBA範囲#2がLBA範囲フィールドに登録され、カラー管理コマンドによって指定されるColor#2がカラーフィールドに登録され、カラー管理コマンドによって指定されるPolicy#2がポリシーフィールドに登録される。
同様に、エントリ#nにおいては、カラー管理コマンドによって指定されるLBA範囲#nがLBA範囲フィールドに登録され、カラー管理コマンドによって指定されるColor#nがカラーフィールドに登録され、カラー管理コマンドによって指定されるPolicy#nがポリシーフィールドに登録される。
図13は、SSD3のコントローラ4によって実行されるカラー割り当ておよびデータ書き込み処理シーケンスを示す。
ここでは、ホスト2がカラー管理コマンドを使用してカラー及びポリシーを事前に指定し、そしてカラー及びポリシーを含まないライトコマンドをSSD3に送信する場合を想定する。
SSD3が、ホスト2からカラー管理コマンドを受信すると、コントローラ4は、カラーテーブル33Eを作成する(ステップS301)。
この後、SSD3が、ホスト2からライトコマンドを受信すると、コントローラ4は、カラーテーブル33Eと、ホスト2から受信されたライトコマンドに含まれる開始LBAとに基づいて、一つのベースカラー(一つのダイ集合)を選択する(ステップS302)。ステップS302では、コントローラ4は、カラーテーブル33Eを参照して、開始LBAが属するLBA範囲に対応するカラーを特定し、この特定されたカラーに基づいて、一つのベースカラー(一つのダイ集合)を選択する。
次いで、コントローラ4は、選択されたダイ集合に属するダイの状態を優先順位の高いダイから順に評価し、これによって、選択されたダイ集合から、ウェアレベリングまたは性能に関する条件を満たし且つより高い優先順位を有するダイを選択する(ステップS303)。次いで、コントローラ4は、この選択されたダイを、受信されたライトコマンドによって指定されるライトデータを書き込むべき書き込み先ダイとして決定する(ステップS304)。
コントローラ4は、ライトデータを、書き込み先ダイとして決定されたダイに書き込む(ステップS305)。そして、コントローラ4は、LUT32を更新して、このライトデータのLBAに、ライトデータが書き込まれたNAND型フラッシュメモリ5の記憶位置を示す物理アドレスをマッピングする(ステップS306)。
図14は、ダイ数が8、カラー分離数が8の場合の優先順位テーブル33Cの例を示す。優先順位テーブル33Cは、ベースカラー「0」〜「7」と、ベースカラー「0」〜「7」に対応する8つのダイ集合との間の関係を示す。
優先順位テーブル33Cにおいては、8つのベースカラー「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」に対して、8つの異なるダイ#0、#1、#2、#3、#4、#5、#6、#7が最高優先順位のダイとして割り当てられている。
ベースカラー「0」においては、ダイ#0、#3、#6、#1、#4、#7、#2、#5の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「0」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定されている。
ベースカラー「1」においては、ダイ#1、#4、#7、#2、#5、#0、#3、#6の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「1」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定されている。
同様に、ベースカラー「7」においては、ダイ#7、#2、#5、#0、#3、#6、#1、#4の順で優先順位(書き込み優先順位)が下がるように、ベースカラー「7」に対応するダイ集合に関する優先順位(書き込み優先順位)が決定されている。
具体的には、ベースカラー「0」に対応するダイ集合は、ダイ#0、ダイ#3、ダイ#6、ダイ#1、ダイ#4、ダイ#7、ダイ#2、ダイ#5を含む。左端のダイ#0はこのダイ集合の最高優先順位のダイであり、右端のダイ#5はこのダイ集合の最も低優先順位のダイである。このように、ダイ番号は、優先順位が1レベル低下する毎に3ずつ増加される。
ベースカラー「1」に対応するダイ集合は、ダイ#1、ダイ#4、ダイ#7、ダイ#2、ダイ#5、ダイ#0、ダイ#3、ダイ#6を含む。左端のダイ#1はこのダイ集合の最高優先順位のダイであり、右端のダイ#6はこのダイ集合の最も低優先順位のダイである。
ベースカラー「2」に対応するダイ集合は、ダイ#2、ダイ#5、ダイ#0、ダイ#3、ダイ#6、ダイ#1、ダイ#4、ダイ#7を含む。左端のダイ#2はこのダイ集合の最高優先順位のダイであり、右端のダイ#7はこのダイ集合の最も低優先順位のダイである。
同様に、ベースカラー「3」〜「7」に対応するダイ集合の各々においても、優先順位順にダイの番号が配置されている。
なお、図14では、ダイ数が8、カラー分離数が8の優先順位テーブル33Cを示したが、これに限定されない。例えば、カラー分離数はダイ数よりも小さい数であってもよい。
図15は、書き替え回数テーブル33Aの一例を示す。
書き替え回数テーブル33Aは、ダイ#0〜#7の書き替え回数を管理するために使用される。ここでは、ダイ#0、#1、#2、#3、#4、#5、#6、#7それぞれの現在の書き替え回数が、952、963、1031、1012、1041、993、963、1017である場合が例示されている。
図16は、実行キュー状態テーブル33Dの一例を示す。
実行キュー状態テーブル33Dは、各ダイの実行キュー状態を管理するために使用される。ここで、実行キュー状態は、各ダイに割り当てられている個々の処理の内容を示す。図中の「R」は、読み出し処理、「W」は書き込み処理、「E」は、消去処理を表す。
ここでは、ダイ#0については、未完了の処理が無い状態が示されている。ダイ#1については、一つの読み出し処理が未完了である状態が示されている。ダイ#2については、二つの読み出し処理が未完了である状態が示されている。ダイ#3については、一つの読み出し処理と一つの書き込み処理が未完了である状態が示されている。ダイ#4については、未完了の処理が無い状態が示されている。ダイ#5については、一つの書き込み処理が未完了である状態が示されている。ダイ#6については、一つの消去処理が未完了である状態が示されている。ダイ#7については、一つの書き込み処理と一つの消去処理が未完了である状態が示されている。
図17は、重み付け結果テーブルの一例を示している。
コントローラ4は、各ダイの実行キュー状態に基づいて、ダイ毎に、未完了処理の残数の重み付け結果を計算してもよい。図17は、図14の優先順位テーブル33Cにおいてベースカラー「3」が選択され、各ダイの実行キュー状態が図16の実行キュー状態テーブル33Dで示された通りである場合の重み付け結果テーブルである。「Weight」は、コントローラ4によって計算された重み付け結果を表しており、「breakdown」は、重み付け結果の計算過程を表す。
ここで、重み付けには、優先順位によるものと、処理の種類によるものとがある。優先順位による重み付けでは、最も優先順位が高いダイの場合には重み値0、そこから優先順位が1つ下がる毎に3ずつ増やした重み値を用いる。例えば、優先順位が2位のダイであれば重み値3、3位のダイであれば重み値6を用いる。処理の種類による重み付けでは、読み出し処理に重み値1、書き込み処理に重み値10、消去処理に重み値100を用いる。
「書き込み速度優先」のポリシーで書き込み先ダイを決定する場合において、ベースカラー「3」が選択された場合、コントローラ4は、ベースカラー「3」のダイ集合から最も書き込み速度の速いダイを選択する。優先順位テーブル33Cが図14に示す内容である場合、コントローラ4は、ダイ#3、#6、#1、#4、#7、#2、#5、#0の順で、これらダイの状態を評価する。
すなわち、コントローラ4は、最初にベースカラー「3」のダイ集合の中で最も優先順位が高いダイ#3の未完了処理の残数の重み付け結果を計算する。図16によると、ダイ#3の未完了処理には一つの書き込み処理と一つの読み出し処理とが含まれる。コントローラ4は、優先順位による重み値として0、書き込み処理の重み値として10、読み出し処理の重み値として1を用いて、それらの和からダイ#3の未完了処理の残数の重み付け結果を11と算出する。
次に、コントローラ4は、優先順位が2位のダイ#6の未完了処理の残数の重み付け結果を、優先順位による重み値として3、消去処理の重み値として100を用いて、103と算出する。
次に、コントローラ4は、優先順位が3位のダイ#1の未完了処理の残数の重みを、優先順位による重み付けとして「6」、読み出し処理の重み付けとして「1」を用いて、「7」と算出する。
次に、コントローラ4は、優先順位が4位のダイ#4の未完了処理の残数の重みを、優先順位による重み付けとして「9」を用いて、「9」と算出する。優先順位が5位以降の各ダイ#の優先順位による重み付けは「12」以上であるので、この時点で、ダイ#1に関する未完了処理の残数の重みが最も小さいことが分かる。したがって、ダイ#1が、最も書き込み速度の速いダイとして選択される。
図18のフローチャートは、ホスト2がカラーを指定した場合にSSD3によって実行される書き込み動作の手順を示す。
以下では、優先順位テーブル33Cが図14のように規定され、書き替え回数テーブル33Aが図15に示す内容であり、実行キュー状態テーブル33Dが図15に示す内容である場合を想定する。
SSD3がホスト2からライトコマンドを受信すると(ステップS401のYES)、コントローラ4は、ライトコマンドによって指定されたカラーに基づいてベースカラーを選択する(ステップS402)。
例えば、ライトコマンドによってカラー「1051」が指定された場合、コントローラ4は、ベースカラーとして「3」を選択する。それは、SSD3のカラー分離数8でカラー「1051」を除した余りが「3」であるためである。以下では、ベースカラーとして「3」が選択されたとして説明する。
続いて、コントローラ4は、ライトコマンドによってポリシーが指定されているか否かを判定する(ステップS403)。
ライトコマンドによってポリシーが指定されているならば(ステップS403のYES)、コントローラ4は、以下の処理を実行する。
ライトコマンドによって指定されたポリシーが「ウェアレベリング優先」であった場合(ステップS404のYES)、コントローラ4は、書き替え回数テーブル33Aと、好ましい書き替え回数とに基づいて、ベースカラー「3」のダイ集合からダイを選択する(ステップS405)。
ここで、ウェアレベリングの条件が、例えば、
(1)最小の書き替え回数に対する最大許容差が100
(2)好ましい許容差が30
であったとする。コントローラ4は、図15の書き替え回数テーブル33Aから、最小書き替え回数が952であると判定する。したがって、好ましい書き替え回数は、982(=952+30)であり、最大書き替え回数は、1052(=952+100)である。
(1)最小の書き替え回数に対する最大許容差が100
(2)好ましい許容差が30
であったとする。コントローラ4は、図15の書き替え回数テーブル33Aから、最小書き替え回数が952であると判定する。したがって、好ましい書き替え回数は、982(=952+30)であり、最大書き替え回数は、1052(=952+100)である。
コントローラ4は、ベースカラー「3」のダイの集合の中の優先順位が高いダイから順に、その書き替え回数と、好ましい書き替え回数(982回)とを比較していく。本説明の例では、優先順位が1位のダイ#3の書き替え回数(1012回)は、好ましい書き替え回数(982回)を上回っている。優先順位が2位のダイ#6の書き替え回数(963回)は、好ましい書き替え回数(982回)以下である。このため、コントローラ4は、ダイ#6を選択する。なお、コントローラ4は、ダイ#6を選択した後、優先順位が3位以降のダイの書き替え回数と好ましい書き替え回数との比較は行わない。
ライトコマンドによって指定されているポリシーが「ダイ位置優先」であった場合(ステップS404のYES)、コントローラ4は、選択されたダイ集合内のダイそれぞれの書き替え回数を考慮して、ダイを選択する(ステップS407)。
コントローラ4は、ベースカラー「3」の集合の中で優先順位が高いダイから順に、その書き替え回数と、最大書き替え回数とを比較していく。ここで、最大書き替え回数とは、上述したウェアレベリング条件から導かれるもので、本説明の例では、1052である。
本説明の例では、優先順位が1位のダイ#3の書き替え回数(1012)が最大書き替え回数(1052)以下であるため、コントローラ4は、ダイ#3を選択する。
ライトコマンドによって指定されているポリシーが「書き込み速度優先」であった場合(ステップS408のYES)、コントローラ4は、実行キュー状態テーブル33Dに基づいてダイを選択する(ステップS409)。
実行キュー状態テーブル33Dが図16で示す通りである場合、コントローラ4は、ベースカラー「3」のダイ集合の中で優先順位が高いダイから順にダイの未完了処理の残数の重み付け結果を計算していく。その重み付け結果は、図17で示す重み付け結果テーブルの通りである。重み付け結果が小さいとは、受信されたライトコマンドに対する応答速度がそれだけ速いことを意味している。図17で示す重み付け結果テーブルによれば、計算した重み付け結果が最小のダイはダイ#1である。このため、コントローラ4は、ダイ#1を選択する。
次に、ライトコマンドによってポリシーが指定されていない場合について説明する(ステップS403のNO)。
この場合、コントローラ4は、ポリシーとして「ウェアレベリング優先」が指定された場合と同じ方法でダイを選択してもよい(ステップS405)。なお、図18では、ポリシーの指定がない場合に「ウェアレベリング優先」のポリシーに従ってダイを選択することにしたが、これに限定されない。ポリシーの指定がない場合に、「ダイ位置優先」、或いは「書き込み速度優先」のポリシーに従ってダイを選択することにしてもよい。
続いて、コントローラ4は、選択したダイを書き込み先のダイとして決定し(ステップS410)、ライトコマンドによって指定されたライトデータを、この決定したダイに書き込む(ステップS411)。その後、コントローラ4は、LUT32を更新して、ライトデータのLBAに、このライトデータが書き込まれたNAND型フラッシュメモリ5の記憶位置を示す物理アドレスをマッピングする(ステップS412)。
次に、カラー管理コマンドの受信に応答してSSD3によって実行される書き込み動作を説明する。
図19のフローチャートは、ホスト2からのカラー管理コマンドの受信時にSSD3によって実行される書き込み動作の手順を示す。
SSD3がホスト2からカラー管理コマンドを受信すると(ステップS50のYES)、コントローラ4は、以下の手順でカラーテーブル33Eを作成する。
まず、コントローラ4は、変数Kに「1」を代入し(ステップS502)、カラー管理コマンド内のLBA範囲#Kをカラーテーブル33Eのエントリ#KのLBA範囲フィールドに登録する(ステップS503)。なお、Kがとりうる範囲は、1≦K≦nである。nは、カラー管理コマンドによって指定可能な、LBA範囲、カラー、ポリシーの組の最大数である。
次に、コントローラ4は、カラー管理コマンド内のカラー#Kをカラーテーブル33Eのエントリ#Kのカラーフィールドに登録する(ステップS504)。
続いて、コントローラ4は、カラー管理コマンド内のポリシー#Kをカラーテーブル33Eのエントリ#Kのポリシーフィールドに登録する(ステップS505)。なお、カラー管理コマンドにポリシー指定がない場合、カラーテーブル33Eのポリシーフィールドは、空白となる。
ステップS505の処理が終わると、カラーテーブル33Eのエントリ#Kのすべてのフィールドが登録済みの状態になる。
次に、コントローラ4は、現在の変数Kがnであるか否かを確認し、Kがnでない場合(ステップS506のNO)、Kに「K+1」を代入し(ステップS507)、ステップS503〜S505の処理を実行する。ステップS503〜S507の処理は、カラー管理コマンド内のすべてのLBA範囲、カラー、ポリシーがカラーテーブル33Eに登録されるまで実行される。
コントローラ4は、S503〜S507の処理を繰り返し、K=nであることを確認した場合(ステップS506のYES)、カラーテーブル33Eの作成の処理を終える。このようにして、コントローラ4は、カラーテーブル33Eを作成する。
図20のフローチャートは、ホストからのカラー管理コマンドの処理の完了後に通常のライトコマンドが受信された場合にSSD3によって実行される書き込み動作の手順を示す。ここで、ステップS401、ステップS403〜S412の処理は、図18と同様の処理である。
なお、図20で示す書き込み動作の前処理として、図19で示したカラーテーブル33Eを作成する処理が既に行われているものとする。
ホスト2からのライトコマンドをSSD3が受信すると(ステップS401のYES)、コントローラ4は、カラーテーブル33Eと、ライトコマンドに含まれる開始LBAとに基づいてベースカラーを決定する(ステップS602)。ステップS602では、コントローラ4は、ライトコマンドに含まれる開始LBAが、事前に作成されたカラーテーブル33Eに登録されたLBA範囲の中のいずれに属するかを判定する。例えば、開始LBAが例えばLBA範囲#1に属する場合、コントローラ4は、LBA範囲#1に対応するカラー#1に基づき、ベースカラーを選択する。例えば、カラー#1が整数値「1051」を示すならば、コントローラ4は、ベースカラーとして「3」を選択する。それは、図18の動作と同様に、「1051」をカラー分離数8で除した余りが「3」であるからである。
コントローラ4は、ベースカラーを選択した後、図18で説明したステップS403〜S412の処理を実行する。
図21は、ホスト2として機能する情報処理装置(コンピューティングデバイス)のハードウェア構成例を示す。
この情報処理装置は、サーバ(例えばストレージサーバ)のようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42、ファイルシステム43、およびカラー指定部44を含む。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
図22は、複数のSSD3とホスト2とを含む情報処理装置(コンピューティングデバイス)の構成例を示す。
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、本実施形態によれば、複数の不揮発性メモリダイは、優先順位が付けられた複数の不揮発性メモリダイを各々が含む複数のダイ集合として管理される。そして、ホスト2から受信されるカラー(論理的な書き込み先のダイを指定する識別子)に基づいて、複数のダイ集合から一つのダイ集合が選択される。さらに、選択されたダイ集合内のダイの優先順位付けに基づいて、この選択されたダイ集合から不揮発性メモリダイが選択され、そして選択された不揮発性メモリダイが、ホスト2から受信されるライトデータを書き込むべき書き込み先のダイとして決定される。
よって、時間の経過に伴って、書き込み先ダイとして使用されるダイを、選択されたダイ集合内のダイに渡って徐々に分散することができる。この結果、たとえホスト2が特定のカラーに偏った書き込みを行った場合でも、このカラーに対応するダイ集合内のダイ間に書き込みを分散させることができ、SSD3の寿命を維持することができる。
また、異なるカラーが指定された場合には異なるダイ集合が選択される。よって、ホスト2が特定のカラーに偏らない書き込みを行う限り、ダイ衝突が発生する確率を下げることが可能となる。
よって、SSD3の寿命を短くすることなくSSD3の性能を改善することができる。
なお、本実施形態では、カラー分離数とホスト2が指定可能なカラーの数とが互いに異なる場合を主に説明したが、ホスト2が指定可能なカラーの数は、カラー分離数と同じ出あっても良い。この場合、SSD3のコントローラ4は、例えば、ホスト2からの要求に応じて、カラー分離数をホスト2に通知してもよい。これにより、ホスト2は、指定可能なカラーの数を、このカラー分離数に一致させることが可能となる。
また、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、21…ライト動作制御部、22…リード動作制御部、23…カラーリング制御部。
Claims (10)
- ホストに接続可能なメモリシステムであって、
並列動作可能な複数の不揮発性メモリダイを備える不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備し、
前記コントローラは、
前記複数の不揮発性メモリダイのうち優先順位付けされた複数の不揮発性メモリダイを各々が含む複数のダイ集合を管理し、
前記ホストから受信した論理的な書き込み先のダイを指定する識別子に基づいて前記複数のダイ集合から一つのダイ集合を選択し、
前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択し、
前記選択された不揮発性メモリダイを、前記ホストから受信されるライトデータの書き込み先のダイとして決定するように構成されている、メモリシステム。 - 前記コントローラは、前記選択されたダイ集合内に含まれる不揮発性メモリダイそれぞれの書き替え回数と、前記選択されたダイ集合内の優先順位順と、に基づいて不揮発性メモリダイを選択するように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、前記選択されたダイ集合内に含まれる不揮発性メモリダイそれぞれに割り当てられている未完了の処理の残数がより少なく且つより高い優先順位を有する不揮発性メモリダイを選択するように構成されている請求項1記載のメモリシステム。
- 前記複数のダイ集合それぞれに含まれる最高優先順位の不揮発性メモリダイは、前記複数のダイ集合間で互いに異なっている請求項1記載のメモリシステム。
- 前記コントローラは、前記識別子を含むライトコマンドを前記ホストから受信した場合に、前記受信されたライトコマンドに含まれる前記識別子に基づいて前記複数のダイ集合から一つのダイ集合を選択し、前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択し、前記選択された不揮発性メモリダイを前記書き込み先のダイとして決定し、前記ライトコマンドによって指定されるライトデータを前記書き込み先のダイに書き込むように構成されている請求項1記載のメモリシステム。
- 前記受信されたライトコマンドが、ウェアレベリングを優先すべきことを示すポリシーを含む場合、前記コントローラは、前記選択されたダイ集合から、前記不揮発性メモリ内の前記複数の不揮発性メモリダイの最小書き替え回数との差が許容差以内である書き替え回数を有し且つより高い優先順位を有する不揮発性メモリダイを選択するように構成されている請求項5記載のメモリシステム。
- 前記受信されたライトコマンドが、書き込み速度を優先すべきことを示すポリシーを含む場合、前記コントローラは、前記選択されたダイ集合内に含まれる不揮発性メモリダイそれぞれに割り当てられている未完了の処理がより少なく且つより高い優先順位を有する不揮発性メモリダイを選択するように構成されている請求項5記載のメモリシステム。
- 前記コントローラは、
複数の論理アドレス範囲と、前記複数の論理アドレス範囲にそれぞれに割り当てるべき複数の識別子とを指定する第1コマンドを前記ホストから受信し、
前記ホストからライトコマンドを受信し、
前記受信されたライトコマンドによって指定される開始論理アドレスが前記複数の論理アドレス範囲のいずれに属するかを判定し、
前記開始論理アドレスが属する論理アドレス範囲に対応する識別子に基づいて、前記複数のダイ集合から一つのダイ集合を選択し、
前記選択されたダイ集合から、前記優先順位付けに基づいて不揮発性メモリダイを選択し、
前記選択された不揮発性メモリダイを前記書き込み先のダイとして決定し、
前記受信されたライトコマンドによって指定されるライトデータを前記書き込み先のダイに書き込むように構成されている請求項1記載のメモリシステム。 - 前記第1コマンドは、前記複数の論理アドレス範囲にそれぞれに適用すべきポリシーをさらに指定し、
前記開始論理アドレスが属する論理アドレス範囲に適用すべきポリシーが、ウェアレベリングを優先すべきことを示す場合、前記コントローラは、前記選択されたダイ集合から、前記不揮発性メモリ内の前記複数の不揮発性メモリダイの最小書き替え回数との差が許容差以内である書き替え回数を有し且つより高い優先順位を有する不揮発性メモリダイを選択するように構成されている請求項8記載のメモリシステム。 - 前記第1コマンドは、前記複数の論理アドレス範囲にそれぞれに適用すべきポリシーをさらに指定し、
前記開始論理アドレスが属する論理アドレス範囲に適用すべきポリシーが、書き込み速度を優先すべきことを示すポリシーを含む場合、前記コントローラは、前記選択されたダイ集合内に含まれる不揮発性メモリダイそれぞれに割り当てられている未完了の処理の残数がより少なく且つより高い優先順位を有する不揮発性メモリダイを選択するように構成されている請求項8記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016210524A JP2018073038A (ja) | 2016-10-27 | 2016-10-27 | メモリシステム |
US15/694,976 US10365857B2 (en) | 2016-10-27 | 2017-09-04 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016210524A JP2018073038A (ja) | 2016-10-27 | 2016-10-27 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018073038A true JP2018073038A (ja) | 2018-05-10 |
Family
ID=62021475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016210524A Pending JP2018073038A (ja) | 2016-10-27 | 2016-10-27 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10365857B2 (ja) |
JP (1) | JP2018073038A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021140306A (ja) * | 2020-03-03 | 2021-09-16 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776023B2 (en) * | 2016-11-07 | 2020-09-15 | Gaea LLC | Data storage device with configurable policy-based storage device behavior |
US10922014B1 (en) * | 2018-06-05 | 2021-02-16 | Seagate Technology Llc | Die access order variation |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266639B2 (en) * | 2004-12-10 | 2007-09-04 | Infineon Technologies Ag | Memory rank decoder for a multi-rank Dual Inline Memory Module (DIMM) |
CN101673245B (zh) | 2008-09-09 | 2016-02-03 | 株式会社东芝 | 包括存储器管理装置的信息处理装置和存储器管理方法 |
JP2011022933A (ja) | 2009-07-17 | 2011-02-03 | Toshiba Corp | メモリ管理装置を含む情報処理装置及びメモリ管理方法 |
US8437163B2 (en) * | 2010-02-11 | 2013-05-07 | Micron Technology, Inc. | Memory dies, stacked memories, memory devices and methods |
CN103620563B (zh) | 2011-04-26 | 2015-04-29 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
US8543758B2 (en) | 2011-05-31 | 2013-09-24 | Micron Technology, Inc. | Apparatus including memory channel control circuit and related methods for relaying commands to logical units |
US9542344B2 (en) * | 2014-02-19 | 2017-01-10 | Sandisk Technologies Llc | Datapath management in a memory controller |
US9502118B2 (en) * | 2014-09-26 | 2016-11-22 | Intel Corporation | NAND memory addressing |
US9323657B1 (en) * | 2014-12-30 | 2016-04-26 | Sandisk Technologies Inc. | Memory system and method for improving read latency of a high-priority partition |
US10073627B2 (en) * | 2015-01-13 | 2018-09-11 | Sandisk Technologies Llc | Addressing, interleave, wear leveling, and initialization schemes for different chip enables and memory arrays of different types |
US9753653B2 (en) * | 2015-04-14 | 2017-09-05 | Sandisk Technologies Llc | High-priority NAND operations management |
US20170123666A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for managing maintenance scheduling in a non-volatile memory |
-
2016
- 2016-10-27 JP JP2016210524A patent/JP2018073038A/ja active Pending
-
2017
- 2017-09-04 US US15/694,976 patent/US10365857B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021140306A (ja) * | 2020-03-03 | 2021-09-16 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180121136A1 (en) | 2018-05-03 |
US10365857B2 (en) | 2019-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6553566B2 (ja) | メモリシステムおよび制御方法 | |
JP6785205B2 (ja) | メモリシステムおよび制御方法 | |
JP6524039B2 (ja) | メモリシステム及び制御方法 | |
JP6414852B2 (ja) | メモリシステムおよび制御方法 | |
US10528464B2 (en) | Memory system and control method | |
JP6414853B2 (ja) | メモリシステムおよび制御方法 | |
JP6517684B2 (ja) | メモリシステムおよび制御方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
US10545863B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP6517685B2 (ja) | メモリシステムおよび制御方法 | |
KR101467939B1 (ko) | 비휘발성 저장부에 대한 가변 오버프로비저닝 | |
KR102094236B1 (ko) | 스토리지 디바이스 및 컴퓨터 시스템 | |
US11747989B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
TW202230136A (zh) | 儲存裝置 | |
JP2016170583A (ja) | メモリシステムおよび情報処理システム | |
JP2019082813A (ja) | メモリシステムおよび制御方法 | |
US20130103893A1 (en) | System comprising storage device and related methods of operation | |
JP2018142237A (ja) | メモリシステムおよび制御方法 | |
JP2018101334A (ja) | メモリシステムおよび制御方法 | |
US10365857B2 (en) | Memory system | |
JP2018160189A (ja) | メモリシステム | |
JP2021007059A (ja) | メモリシステム | |
JP6721765B2 (ja) | メモリシステムおよび制御方法 | |
JP6552701B2 (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170531 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |