図面 (/)

技術 メモリシステム及び制御方法

出願人 東芝メモリ株式会社
発明者 菅野伸一
出願日 2016年9月23日 (4年3ヶ月経過) 出願番号 2016-185477
公開日 2018年3月29日 (2年9ヶ月経過) 公開番号 2018-049522
状態 特許登録済
技術分野 メモリシステム
主要キーワード 蓄積データ数 最小粒度 コピー用データ 半導体ストレージ チップマイクロコントローラ データコピー制御 データコピー動作 管理サイズ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年3月29日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (15)

課題

データが書き込まれる際のレイテンシーの変動を抑制できるメモリシステムを実現する。

解決手段

実施形態によれば、メモリシステムは不揮発性メモリコントローラとを具備する。前記コントローラは、前記不揮発性メモリからガベージコレクションGC)の対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内フリーブロック群から前記GCのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記GC動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するGC動作を実行し、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させる。

概要

背景

近年、不揮発性メモリを備えるメモリシステムが広く利用されている。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースソリッドステートドライブSSD)が知られている。SSDは、その低電力消費高性能という特徴により、様々なコンピュータメインストレージとして使用されている。

最近では、ホストとメモリシステムとの間のデータ入出力に関する性能のさらなる向上が要求されている。

概要

データが書き込まれる際のレイテンシーの変動を抑制できるメモリシステムを実現する。 実施形態によれば、メモリシステムは不揮発性メモリとコントローラとを具備する。前記コントローラは、前記不揮発性メモリからガベージコレクションGC)の対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内フリーブロック群から前記GCのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記GC動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するGC動作を実行し、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させる。

目的

本発明が解決しようとする課題は、ライトレイテンシーの変動を低減できるメモリシステム及び制御方法を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラであって、前記不揮発性メモリからガベージコレクション対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内フリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行し、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させるように構成されるコントローラとを具備するメモリシステム

請求項2

前記コントローラは、さらに、アドレス変換テーブルを使用して論理ブロックアドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピング管理サイズ単位で管理し、前記累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項1記載のメモリシステム。

請求項3

前記コントローラは、さらに、前記フリーブロック群から、前記ホストからの書き込みデータ部それぞれを書き込むための書き込み先ブロックを割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算するように構成される請求項1記載のメモリシステム。

請求項4

前記コントローラは、さらに、前記フリーブロック群に含まれるフリーブロックの数が閾値以上である場合、前記ガベージコレクション動作を実行せず、前記フリーブロック群に含まれるフリーブロックの数が前記閾値未満である場合、前記ガベージコレクション動作を実行するように構成される請求項1記載のメモリシステム。

請求項5

前記コントローラは、さらに、前記ガベージコレクションの対象ブロックに対する前記ガベージコレクション動作の実行が完了した場合、前記対象ブロックを前記フリーブロック群に返却するように構成される請求項1記載のメモリシステム。

請求項6

前記コントローラは、さらに、前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割し、前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第5ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第6ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、前記第1累積無効データ数の範囲内で前記ホストからの前記第1ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第1累積無効データ数を減少させ、前記第2累積無効データ数の範囲内で前記ホストからの前記第2ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第2累積無効データ数を減少させるように構成される請求項1記載のメモリシステム。

請求項7

前記コントローラは、さらに、前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれが書き込まれる第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれが書き込まれる第2領域とに論理的に分割し、前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第5ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第6ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、前記第1累積無効データ数と前記第2累積無効データ数との合計の範囲内で前記ホストからの書き込みデータ部の受付を許可するように構成される請求項1記載のメモリシステム。

請求項8

前記コントローラは、さらに、前記メモリシステムで不足しているフリーブロックの数が2つ以上である場合、前記第1累積無効データ数と前記第2累積無効データ数との合計を、前記メモリシステムで不足しているフリーブロックの数で除した値の範囲内で前記ホストからの書き込みデータ部の受付を許可するように構成される請求項7記載のメモリシステム。

請求項9

不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラであって、前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割し、前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、前記第1累積無効データ数の範囲内でホストからの前記第1ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第1累積無効データ数を減少させ、前記第2累積無効データ数の範囲内で前記ホストからの前記第2ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第2累積無効データ数を減少させるように構成されるコントローラとを具備するメモリシステム。

請求項10

前記コントローラは、さらに、前記フリーブロック群から、前記第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための書き込み先ブロックを前記第1領域に割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記第1累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算し、前記フリーブロック群から、前記第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための書き込み先ブロックを前記第2領域に割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記第2累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算するように構成される請求項9記載のメモリシステム。

請求項11

前記コントローラは、さらに、第1アドレス変換テーブルを使用して前記第1ネームスペースの論理ブロックアドレスそれぞれと前記第1領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理し、第2アドレス変換テーブルを使用して前記第2ネームスペースの論理ブロックアドレスそれぞれと前記第2領域の物理アドレスそれぞれとの間のマッピングを前記管理サイズ単位で管理し、前記第1累積無効データ数および前記第1累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項9記載のメモリシステム。

請求項12

不揮発性メモリを含むメモリシステムの制御方法であって、前記不揮発性メモリからガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行することと、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させることとを具備する制御方法。

請求項13

前記フリーブロック群から、前記ホストからの書き込みデータ部それぞれを書き込むための書き込み先ブロックを割り当てることと、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記累積無効データ数に、前記書き込み先第2ブロックに書き込み可能なデータ部の数に相当するデータ数を加算することとをさらに具備する請求項12記載の制御方法。

請求項14

アドレス変換テーブルを使用して論理ブロックアドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理することをさらに具備し、前記累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項12記載の制御方法。

技術分野

0001

本発明の実施形態は、不揮発性メモリを制御する技術に関する。

背景技術

0002

近年、不揮発性メモリを備えるメモリシステムが広く利用されている。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースソリッドステートドライブSSD)が知られている。SSDは、その低電力消費高性能という特徴により、様々なコンピュータメインストレージとして使用されている。

0003

最近では、ホストとメモリシステムとの間のデータ入出力に関する性能のさらなる向上が要求されている。

先行技術

0004

特許第4358299号公報

発明が解決しようとする課題

0005

ホストとメモリシステムとの間のデータ入出力の性能向上を図るためには、ライトレイテンシーの変動を低減するための新たな機能の実現が必要とされる。

0006

本発明が解決しようとする課題は、ライトレイテンシーの変動を低減できるメモリシステム及び制御方法を提供することである。

課題を解決するための手段

0007

実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記不揮発性メモリに電気的に接続される。前記コントローラは、前記不揮発性メモリからガベージコレクション対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内フリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行する。前記コントローラは、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させる。

図面の簡単な説明

0008

実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
同実施形態のメモリシステムによるデータ書き込み動作とガベージコレクション動作とを説明するための図。
図2のデータ書き込み動作が行われた場合のデータの流れの例を説明するための図。
図2のデータ書き込み動作及びガベージコレクション動作が行われた場合のデータの流れの例を説明するための図。
同実施形態のメモリシステムによって実行される書き込み処理の手順の例を示すフローチャート
同実施形態のメモリシステムによって実行されるホスト書き込みブロック割り当て処理の手順の例を示すフローチャート。
同実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の例を示すフローチャート。
同実施形態のメモリシステムがマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作との例を説明するための図。
同実施形態のメモリシステムによって実行される書き込み処理の手順の別の例を示すフローチャート。
同実施形態のメモリシステムによって実行されるホスト書き込み先ブロック割り当て処理の手順の別の例を示すフローチャート。
同実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の別の例を示すフローチャート。
同実施形態のメモリシステムがマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作との別の例を説明するための図。
ホストの構成例を説明するブロック図。
同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示すブロック図。

実施例

0009

以下、実施の形態について図面を参照して説明する。

0010

まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。

0011

このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。

0012

この情報処理システム1は、ホスト計算機(以下、ホストとも称する)2と、SSD3とを含む。ホスト2は、SSD3にデータに保存するように構成された情報処理装置コンピューティングデバイス)である。この情報処理装置の例には、サーバコンピュータ及びパーソナルコンピュータが含まれる。

0013

SSD3は、ホスト2として機能する情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。

0014

ホスト2とSSD3とを相互接続するためのインターフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCIExpress(PCIe)、NVM Express(NVMe)、Ethernet(登録商標)、Fibre channel等を使用し得る。

0015

SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、及びDRAM6を備えていてもよい。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。

0016

NANDメモリ5はメモリセルアレイを含み、このメモリセルアレイは、多数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。

0017

ブロックB0〜Bm−1は多数のページ物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。同じワード線に接続された複数のメモリセルが一つのページとして編成される。NANDメモリ5においては、データのリード及びデータのライトはページ単位で実行される。データの消去複数ページを含むブロック単位で実行される。

0018

コントローラ4は、Toggle、ONFIのようなNANDインターフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に接続されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。

0019

データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)33を用いて実行される。ルックアップテーブル(LUT)33は、所定の管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理サイズ単位で管理する。ホスト2からのライトコマンドの多くは、4Kバイトのデータの書き込みを要求する。したがって、ルックアップテーブル(LUT)33は、例えば4Kバイトの管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理してもよい。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDメモリ5内の物理記憶位置を示す。物理アドレスは、物理ブロックアドレス物理ページアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全てのブロックに割り当てられている。

0020

ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。

0021

このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新してこのLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。

0022

ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション動作等が含まれる。

0023

ガベージコレクション動作は、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5のフリーブロック個数を増やすため、有効データと無効データとが混在する一つ以上のブロック内の全ての有効データを別のブロック(コピー先フリーブロック)にコピーする。そして、ガベージコレクション動作は、ルックアップテーブル(LUT)33を更新して、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは消去後に再利用することが可能となる。

0024

ホスト2は、ライトコマンドをSSD3に送出する。このライトコマンドは、書き込みデータ(つまり書き込むべきライトデータ)の論理アドレス開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。

0025

SSD3のコントローラ4は、ライトコマンド内の開始論理アドレスと転送長とによって指定されるライトデータを、NANDメモリ5内のブロックのページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置を示す物理アドレスにマッピングする。

0026

より詳しくは、コントローラ4は、NANDメモリ5内のフリーブロックの一つを、ホスト2からのデータの書き込みのための書き込み先ブロックとして割り当てる。この書き込み先ブロックは、ホスト2からのデータが書き込まれるべきブロックであり、「書き込み対象ブロック」、または「入力ブロック」、等とも称される。コントローラ4は、ホスト2から受信されるライトデータのLBAとは無関係に、ルックアップテーブル(LUT)33を更新しながら、ホスト2から受信されるライトデータを書き込み先ブロックの利用可能ページに順次書き込む。書き込み先ブロックに利用可能ページが無くなった場合に、コントローラ4は、新たなフリーブロックを書き込み先ブロックとして割り当てる。

0027

次に、コントローラ4の構成について説明する。

0028

コントローラ4は、ホストインターフェース11、CPU12、NANDインターフェース13、DRAMインターフェース14等を含む。これらCPU12、NANDインターフェース13、DRAMインターフェース14は、バス10を介して相互接続される。

0029

ホストインターフェース11は、ホスト2から様々なコマンドを受信する。このコマンドは、例えば、ライトコマンド、リードコマンド、及び消去コマンドである。

0030

CPU12は、ホストインターフェース11、NANDインターフェース13、DRAMインターフェース14を制御するように構成されたプロセッサである。CPU12は、NANDメモリ5を管理する物理リソース管理処理、ホスト2から受信される様々なコマンドを処理するためのコマンド処理等を実行する。物理リソース管理処理及びコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。

0031

このファームウェアは、CPU12を、ガベージコレクション制御部21、ライト制御部22、リード制御部23、及びネームスペース管理部24として機能させる。

0032

ガベージコレクション制御部21は、ガベージコレクション動作の実行を制御する。上述したように、ガベージコレクション動作は、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作により、有効データと無効データとが混在するいくつかのブロック内の全ての有効データが別のブロックにコピーされる。ガベージコレクション制御部21は、ブロック選択部211、データコピー制御部212及び累積無効データ数計測部213を含む。

0033

ブロック選択部211は、NANDメモリ5内の多数のブロックから、ガベージコレクションの対象ブロックを選択する。

0034

データコピー制御部212は、ガベージコレクションにおけるデータコピー動作を実行する。データコピー制御部212は、ガベージコレクションの対象ブロック内の有効データを、ガベージコレクションのためのコピー先ブロックにコピーするための動作を制御する。ガベージコレクションのためのコピー先ブロックは、ガベージコレクションのための書き込み先ブロックとも称される。

0035

累積無効データ数計測部213は、ガベージコレクション動作中に発見された無効データ部の数計測することによって累積無効データ数を算出する。無効データ部の数の計測(カウント)は、例えば、上述の管理サイズ(例えば4KB)単位で実行されてもよい。累積無効データ数は、ガベージコレクション動作中に発見された無効データ部の数(総数)を示す。さらに、累積無効データ数計測部213は、ホスト2から受付た書き込みデータ部の数だけ累積無効データ数を減少させる。換言すれば、累積無効データ数計測部213は、ホスト2からの書き込み要求受け入れた場合、その書き込み要求によって指定された書き込みデータのデータサイズに相当する数を、累積無効データ数から減算する。例えば、16KBの書き込みデータを書き込むための書き込み要求が受け入れられたならば、4個の書き込みデータ部(4×4KB)が受付られ、そして累積無効データ数から4が減算される。

0036

ライト制御部22は、ホスト2からの書き込み要求(ライトコマンド)に応じた書き込み動作を制御する。ライト制御部22は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可する。つまり、ライト制御部22は、累積無効データ数を上限とする数の書き込みデータ部をホスト2から受付けることができる。ライト制御部22は、受付た書き込みデータ部それぞれを、ホスト2の書き込み先ブロックに書き込む。

0037

リード制御部23は、ホスト2からの読み出し要求(リードコマンド)に応じた読み出し動作を制御する。リード制御部23は、例えば、読み出し要求によって指定されたLBAのデータをNANDメモリ5から読み出し、読み出されたデータをホスト2に送信する。

0038

ネームスペース管理部24は、SSD3をあたかも複数のドライブであるかのように扱うことを可能にするために、複数のネームスペースそれぞれに対応する複数の論理アドレス空間(LBA空間)を管理する。各ネームスペースには、指定された数のブロックが確保(予約)される。確保されるブロックの数はネームスペース毎に異なっていてもよい。ネームスペース管理部24は、NANDメモリ5を、複数のネームスペースに関連付けられた複数の領域に論理的に分割する。例えば、第1ネームスペースと第2ネームスペースとがクリエイトされた場合には、ネームスペース管理部24は、NANDメモリ5を、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割する。

0039

第1ネームスペースの識別子(NSID#1)に関連付けられた書き込み要求によって指定される書き込みデータ(つまり、第1ネームスペースに関連付けられた書き込みデータ部それぞれ)は、第1領域(第1ネームスペース)に書き込み先ブロックとして割り当てられたブロックに書き込まれる。この書き込み先ブロックがデータで満たされたならば、新たなブロックが第1領域(第1ネームスペース)に新たな書き込み先ブロックとして割り当てられる。

0040

第2ネームスペースの識別子(NSID#2)に関連付けられた書き込み要求によって指定される書き込みデータ(つまり、第2ネームスペースに関連付けられた書き込みデータ部それぞれ)は、第2領域(第2ネームスペース)に書き込み先ブロックとして割り当てられたブロックに書き込まれる。この書き込み先ブロックがデータで満たされたならば、新たなブロックが第2領域(第2ネームスペース)に新たな書き込み先ブロックとして割り当てられる。

0041

図2を参照して、ガベージコレクション制御部21によるガベージコレクション動作と、ライト制御部22による書き込み動作とについて説明する。

0042

まず、ガベージコレクション動作について説明する。

0043

ブロック選択部211は、アクティブブロック群55からガベージコレクションの対象ブロック551(以下、GC対象ブロックとも称する)を選択する。アクティブブロック群55には、現在使用されているブロック、すなわち、アクティブブロックが含まれている。アクティブブロックは、ホスト2からのデータを含むブロックである。無効データ数保持部34は、各ブロックに含まれる無効データの数を保持していてもよい。ブロック選択部211は、この無効データ数保持部34を参照することにより、例えば無効データが含まれている割合が高いブロックを、ガベージコレクションの対象ブロック551として選択してもよい。

0044

データコピー制御部212は、GC対象ブロック551内のデータ部それぞれを順に選択する。データコピー制御部212は、あるデータ部が選択された時、選択されたデータ部が有効データであるか、それとも無効データであるかを判定する。無効データは、もはや使用されないデータ、つまりLBAが関連付けられていないデータを意味する。有効データは、使用中のデータ、つまりLBAが関連付けられているデータを意味する。選択されたデータ部が有効データである場合、データコピー制御部212はそのデータ部をGCバッファ32に一時的に書き込む。また、選択されたデータ部が無効データである場合、データコピー制御部212はそのデータ部をGCバッファ32に書き込むことなくスキップする。さらに、累積無効データ数計測部213は、データコピー制御部212によって一つの選択されたデータ部が無効データであると判定される度に、累積無効データ数に1を加算する。

0045

データコピー制御部212は、GCバッファ32に書き込まれているデータを、例えば、1ページ分ずつ、ガベージコレクションのコピー先ブロック512(以下、GCコピー先ブロックとも称する)に書き込む。このGCコピー先ブロック512はフリーブロック群51から割り当てられたブロックである。フリーブロック群51には、現在使用されていないブロック、すなわち、フリーブロックが含まれている。なお、データコピー制御部212は、GCコピー先ブロックがまだ割り当てられていない場合には、フリーブロック群51内の一つのフリーブロックを、新たなGCコピー先ブロック512として割り当てる。また、データコピー制御部212は、割り当てられているGCコピー先ブロック512の終端までデータが書き込まれた場合、そのGCコピー先ブロック512をアクティブブロック群55に移動する。

0046

データコピー制御部212は、GC対象ブロック551内の全ての有効データ部が、GCコピー先ブロック512に書き込まれた(コピーされた)場合、このGC対象ブロック551をフリーブロック群51に移動する。データコピー制御部212は、このGC対象ブロック551がフリーブロックとして解放されたことをブロック選択部211に通知するようにしてもよい。ブロック選択部211は、必要に応じて、新たなGC対象ブロックを選択してもよい。

0047

次いで、ホスト2からの書き込み要求に応じた書き込み動作について説明する。

0048

ライト制御部22はホスト2からの書き込み要求を受信する。この書き込み要求には、書き込まれるべきデータのデータサイズを指定する情報(転送長)が含まれている。ライト制御部22は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可する。例えば、現在の累積無効データ数が4であれば、ライト制御部22は、最大で、4つの書き込みデータ部(16KBの書き込みデータ=4×4KB)を受付ることができる。このため、書き込み要求によって指定されているデータサイズに相当するデータ部の数が累積無効データ数以下である場合に、ライト制御部22は、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れ可能であると判断し、ホスト2に応答する。

0049

この応答は書き込みが許可されたことを示すので、ホスト2は、この応答に応じてSSD3に書き込みデータを送信する。

0050

ライト制御部22は、ホスト2から書き込みデータ部それぞれを受付、受付た書き込みデータ部それぞれをライトバッファ31に一時的に書き込む。また、累積無効データ数計測部213は、累積無効データ数から、受付た書き込みデータ部の数を減算することによって、ホスト2から受付た書き込みデータ部の数だけ累積無効データ数を減少させる。ライト制御部22は、ライトバッファ31に書き込まれた書き込みデータ部それぞれを、例えばページ単位で、ホスト2用の書き込み先ブロック511に書き込む。

0051

なお、ライト制御部22は、ホスト2の書き込み先ブロック511がまだ割り当てられていない場合、割り当てられている書き込み先ブロック511の終端までデータが書き込まれた場合、又は書き込み先ブロック511にエラーが発生した場合には、フリーブロック群51内の一つのフリーブロックを、新たな書き込み先ブロック511として割り当てる。また、ライト制御部22は、割り当てられている書き込み先ブロック511の終端までデータが書き込まれた場合、その書き込み先ブロック511をアクティブブロック群55に移動する。

0052

累積無効データ数計測部213は、ホスト2の書き込み先ブロック511が新たに割り当てられた時、フリーブロック群51に含まれている残りのフリーブロックの数が閾値以上であるか否かを判定する。フリーブロック群51に含まれている残りのブロックの数が閾値以上である場合、累積無効データ数計測部213は、累積無効データ数に、新たに割り当てられた書き込み先ブロック511に書き込み可能なデータ部の数を加算する。書き込み先ブロック511に書き込み可能なデータ部の数は、このブロックの容量に相当するデータ部の数である。さらに、累積無効データ数計測部213は、ライトバッファ31に現在蓄積されているデータ部がある場合には、累積無効データ数からそのデータ部の数を減算するようにしてもよい。また、フリーブロック群51に含まれている残りのフリーブロックの数が閾値未満である場合、累積無効データ数計測部213は、累積無効データ数に0を設定する。さらに、累積無効データ数計測部213は、ライトバッファ31に現在蓄積されているデータ部がある場合には、累積無効データ数からそのデータ部の数を減算するようにしてもよい。

0053

なお、ライト制御部22は、書き込み要求によって指定されたデータサイズの書き込みデータを受け入れ可能でない場合には、その書き込みデータを受け入れ可能になるまでホスト2に応答しない。ライト制御部22は、例えば、書き込み要求によって指定されたデータサイズに相当するデータの数が累積無効データ数を超える場合に、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れられないと判断し、ホスト2に応答しない。そして、ライト制御部22は、上述したガベージコレクション動作によって増加した累積無効データ数が、書き込み要求によって指定されたデータサイズに相当するデータの数以上となった場合に、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れ可能であると判断し、ホスト2に応答する。

0054

図3を参照して、データ書き込み動作が行われる場合のNANDメモリ5及びライトバッファ31上のデータの流れを説明する。ここでは、フリーブロック群51に閾値以上の数のフリーブロックが含まれている場合を想定する。

0055

(1)まず、フリーブロック群51からホスト2の書き込み先ブロック511Aが割り当てられ、累積無効データ数に書き込み先ブロック511Aのブロックサイズに相当するデータ数が設定される。例えば、管理サイズが4KB、ページサイズが16KB、ブロック当たりのページの数が256である場合には、このブロックサイズに相当するデータ数は、例1024(=16KB÷4KB×256)である。

0056

(2)そして、累積無効データ数分の書き込みデータ部A1,A2,...,Axがホスト2から受付られ、この書き込みデータ部A1,A2,...,Axがライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は1つの書き込みデータが受付られる毎に1ずつ減算される。

0057

(3)ライトバッファ31内の書き込みデータ部A1,A2,...,Axは、ページ単位で書き込み先ブロック511Aに書き込まれる。

0058

(4)書き込み先ブロック511Aの終端までデータが書き込まれた場合、フリーブロック群51から新たな書き込み先ブロック511Bが割り当てられる。そして、累積無効データ数にはブロックサイズに相当するデータ数(例えば、1024)が設定される。

0059

(5)次いで、累積無効データ数分の書き込みデータ部B1,B2,...,Bxがホスト2から受付られ、この書き込みデータ部B1,B2,...,Bxがライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は1つの書き込みデータ部が受付られる毎に1ずつ減算される。

0060

(6)ライトバッファ31内の書き込みデータ部B1,B2,...,Bxは、ページ単位で書き込み先ブロック511Bに書き込まれる。

0061

このように、フリーブロック群51に閾値以上の数のフリーブロックが含まれている間は、ホスト2の書き込み先ブロックの割り当てとそのブロックへのデータの書き込みとが繰り返し行われることになる。

0062

次いで、図4を参照して、ガベージコレクション動作とデータ書き込み動作とが行われる場合の、NANDメモリ5、ライトバッファ31及びGCバッファ32上のデータの流れを説明する。ここでは、フリーブロック群51に閾値未満の数のフリーブロックが含まれている場合を想定する。

0063

(1)まず、ガベージコレクションの対象ブロック551の先頭から順に未処理のデータ部が選択される。あるデータ部が選択された場合、選択されたデータ部が有効データまたは無効データのいずれであるかが判定される。そして、データ部が無効データである場合には累積無効データ数に1が加算され、データ部が有効データである場合には、そのデータ部がGCバッファ32にコピーされる。

0064

例えば、第1ページの4つのデータ部D1,D2,D3,及びD4がそれぞれ無効データ、無効データ、有効データ、有効データである場合、無効データ部D1が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データ部D2が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データ部D3及びD4がGCバッファ32にコピーされる。なお、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D1,D2,D3,及びD4が同時に読み出され、これらデータ部内の有効データ部D3及びD4のみがGCバッファ32に蓄積されてもよい。第2ページの4つのデータ部D5,D6,D7,及びD8が無効データ、無効データ、無効データ、有効データである場合、無効データ部D5が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データ部D6が検出されたことに応じて累積無効データ数に1が加算され、無効データ部D7が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データD8がGCバッファ32にコピーされる。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D5,D6,D7,及びD8が同時に読み出され、これらデータ部内の有効データ部D8のみがGCバッファ32に蓄積されてもよい。第3ページの4つのデータD9,D10,D11,及びD12が有効データ、有効データ、無効データ、無効データである場合、有効データ部D9及びD10がGCバッファ32にコピーされる。そして、無効データD11が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データD12が検出されたことに応じて累積無効データ数に1が加算される。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D9,D10,D11,及びD12が同時に読み出され、これらデータ部内の有効データ部D9、D10のみがGCバッファ32に蓄積されてもよい。

0065

以上のように第1ページから第3ページまでのデータが処理されたことにより、GCバッファ32には1ページサイズ以上の有効データ部D3,D4,D8,D9,及びD10が蓄積され、累積無効データ数は7となる。

0066

(2)そして、GCバッファ32に蓄積された有効データ部D3,D4,D8,D9,及びD10の内、1ページ分の有効データ部D3、D4、D8、及びD9が、ガベージコレクションのコピー先ブロック512にコピーされる。この時点で、ガベージコレクション動作が一時中断されてもよく、そしてデータ書き込み動作が実行されてもよい。

0067

(3)データ書き込み動作では、累積無効データ数の範囲内で書き込みデータ部の受付が許可される。例えば、累積無効データ数分の書き込みデータ部W1,W2,...,W7がホスト2から受付られ、この書き込みデータ部W1,W2,...,W7がライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は書き込みデータ部が受け入れられる毎に1ずつ減算される。したがって、7個の書き込みデータ部W1,W2,...,W7が受け入れられたことによって、累積無効データ数は0となる。

0068

累積無効データ数が0となった場合、ホスト2からの新たな書き込みデータは受け入れられないので、例えば、この時点で、書き込み動作が一時中断されてもよく、そして続きのガベージコレクション動作が開始されてもよい。

0069

(4)続きのガベージコレクション動作において、第4ページの4つのデータ部D13,D14,D15,及びD16が無効データ、有効データ、有効データ、有効データである場合、無効データ部D13が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データ部D14,D15及びD16がGCバッファ32にコピーされる。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D13,D14,D15,及びD16が同時に読み出され、これらデータ部内の有効データ部D14、D15、D16のみがGCバッファ32に蓄積されてもよい。

0070

これにより、GCバッファ32には1ページサイズ以上の有効データ部D10,D14,D15,及びD16が蓄積され、累積無効データ数は1となる。

0071

(5)GCバッファ32に蓄積された1ページ分の有効データ部D10,D14,D15,及びD16は、ガベージコレクションのコピー先ブロック512にコピーされる。この時点で、ガベージコレクション動作が一時中断されてもよく、そしてデータ書き込み動作が実行されてもよい。

0072

(6)データ書き込み動作では、ライトバッファ31内の1ページ分の書き込みデータ部W1,W2,W3,及びW4が、書き込み先ブロック511Cに書き込まれる。

0073

(7)そして、累積無効データ数分の書き込みデータ部W8がホスト2から受付けられ、この書き込みデータ部W8がライトバッファ31に一時的に書き込まれる。累積無効データ数は書き込みデータ部W8が受付られたことに応じて1だけ減算される。したがって、1個の書き込みデータ部W8が受付られたことによって、累積無効データ数は0となる。例えば、この時点で、書き込み動作が一時中断されてもよく、そして続きのガベージコレクション動作が開始されてもよい。

0074

図5及び図6のフローチャートを参照して、SSD3によって実行される書き込み処理の手順の例を説明する。

0075

図5のフローチャートに示すように、まず、SSD3のコントローラ4は、ホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれかであるかどうかを判定する(ステップS101)。これら3つの状態のいずれかである場合(ステップS101のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS102)。

0076

このステップS102のホスト書き込み先ブロック割り当て処理の手順について、図6を参照して例示する。まず、コントローラ4は、フリーブロック群51に含まれるフリーブロックをホスト2の書き込み先ブロックとして割り当てる(ステップS21)。そして、コントローラ4は、フリーブロック群51に含まれる残りのフリーブロックの数が閾値以上であるか否かを判定する(ステップS22)。この閾値は、例えば1以上の値である。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合(ステップS22のYES)、コントローラ4は、累積無効データ数に、一つのブロックに相当するデータ数であるブロックサイズから、ライトバッファ31に蓄積されたデータ数を減算した値(すなわち、ブロックサイズ−蓄積データ数)を設定する(ステップS23)。そして、コントローラ4は、不足ブロック数に1を設定する(ステップS24)。

0077

一方、フリーブロック群51に含まれる残りのフリーブロックの数が閾値未満である場合(ステップS22のNO)、コントローラ4は、累積無効データ数に、ライトバッファ31に蓄積されたデータ数に相当する負の値(すなわち、−蓄積データ数)を設定する(ステップS25)。そして、コントローラ4は、不足ブロック数を算出する(ステップS26)。コントローラ4は、例えば、使用できない不良ブロック(バッドブロック)の数と、ホスト2による書き込みのために次に使用されるブロックの分とを考慮して、不足ブロック数として、不良ブロックの数に1を加えた値を算出する。例えば、一つの不良ブロックが新たに発生したならば不足ブロックの数は2に設定され、二つの不良ブロックが新たに同時発生したならば不足ブロックの数は3に設定される。

0078

図5のフローチャートに示すように、ステップS102のホスト書き込み先ブロック割り当て処理の手順が完了した後、あるいはホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれでもない場合(ステップS101のNO)、コントローラ4は、ホスト2からの書き込みデータが閾値以上蓄積されているか否かを判定する(ステップS103)。この書き込みデータは、例えば、ライトバッファ31に格納されているデータである。書き込みデータが閾値以上蓄積されている場合、つまり閾値以上の数の書き込みデータ部がライトバッファ31に蓄積されている場合(ステップS103のYES)、コントローラ4は、蓄積されているデータを、ホスト2の書き込み先ブロックに書き込む(ステップS104)。コントローラ4は、例えば、書き込み先ブロックに対して、ページ単位でデータを書き込む。そして、コントローラ4は、書き込みのエラーが発生したか否かを判定する(ステップS105)。書き込みのエラーが発生した場合(ステップS105のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS102)。このホスト書き込み先ブロック割り当て処理の手順は図6を参照して上述した通りである。

0079

書き込みのエラーが発生していない場合(ステップS105のNO)、コントローラ4は書き込まれたデータに応じてLUT33を更新し(ステップS106)、ステップS107の手順に進む。コントローラ4は、LUT33を更新することによって、書き込まれたデータに対応するLBAそれぞれとNANDメモリ5上の物理アドレスそれぞれとをマッピングする。

0080

また、書き込みデータが閾値以上蓄積されていない場合(ステップS103のNO)、ライトバッファ31に蓄積されているデータを書き込むための処理は行われず、ステップS107の手順に進む。

0081

ステップS107の手順において、コントローラ4は、累積無効データ数が1以上であるか否かを判定する。累積無効データ数が1以上でない場合(ステップS107のNO)、コントローラ4は書き込み処理から抜け、ガベージコレクション処理を実行する。このガベージコレクション処理の手順については、図7を参照して後述する。

0082

累積無効データ数が1以上である場合(ステップS107のYES)、コントローラ4は、累積無効データ数を不足ブロック数で除した値まで、ホスト2からのデータの受付を許可する(ステップS108)。なお、累積無効データ数を不足ブロック数で除した値の小数点以下の値は切り捨てとする。次いで、コントローラ4は、その受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求(ライトコマンド)があるかどうかを判定する(ステップS109)。

0083

受付許可の範囲内のデータ数(又はデータ量)が指定された書き込み要求がない場合(ステップS109のNO)、コントローラ4は、書き込み処理から抜け、ガベージコレクション処理を実行する。したがって、例えば、ホスト2が書き込み要求を発行しないホストアイドル状態の場合であっても、ガベージコレクション処理が進行される。

0084

受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求がある場合(ステップS109のYES)、コントローラ4は、そのホスト2からの書き込み要求に応答し、ホスト2から書き込みデータを受信する(ステップS110)。受信した書き込みデータは、ライトバッファ31に一時的に書き込まれる。コントローラ4は、累積無効データ数から、受信した書き込みデータ数に不足ブロック数を乗じた値を減算する(ステップS111)。そして、コントローラ4は、ライトバッファ31に一時的に書き込まれたデータに応じてLUT33を更新し(ステップS112)、ステップS107の手順に進む。コントローラ4は、LUT33を更新することによって、ライトバッファ31に一時的に書き込まれたデータに対応するLBAそれぞれとライトバッファ31(すなわち、DRAM6)上の物理アドレスそれぞれとをマッピングする。

0085

次いで、図7を参照して、SSD3によって実行されるガベージコレクション処理の手順の例を説明する。

0086

まず、SSD3のコントローラ4は、フリーブロック群51に含まれるフリーブロックの数が閾値以上であるか否かを判定する(ステップS301)。この閾値は、例えば1以上の値である。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合(ステップS301のYES)、コントローラ4はガベージコレクション処理を終了し、上述した書き込み処理を実行する。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合には、ガベージコレクション処理が実行されないことによって、ガベージコレクション処理が過剰に行われることを抑制することができる。

0087

フリーブロック群51に含まれるフリーブロックの数が閾値未満である場合(ステップS301のNO)、コントローラ4は、未コピーの有効データが残っているガベージコレクションの対象ブロックがあるかどうかを判定する(ステップS302)。未コピーの有効データが残っているガベージコレクションの対象ブロックがない場合(ステップS302のNO)、コントローラ4は、新たなガベージコレクションの対象ブロックを選定する(ステップS303)。未コピーの有効データが残っているガベージコレクションの対象ブロックがある場合(ステップS302のYES)、ステップS303の手順がスキップされる。

0088

次いで、コントローラ4は、ガベージコレクションの対象ブロックから未処理のデータを1個選択する(ステップS304)。データの選択は、管理サイズ(例えば4KB)と同じサイズを有する最小データ単位で実行される。コントローラ4は、選択された未処理のデータ部が有効データまたは無効データのいずれであるかを判定する(ステップS305)。選択された未処理のデータ部が有効データでない場合、すなわち、無効データである場合(ステップS305のNO)、コントローラ4は、累積無効データ数に1を加算する(ステップS306)。

0089

一方、選択された未処理のデータ部が有効データである場合(ステップS305のYES)、コントローラ4は、そのデータ部をコピー用データとして蓄積する(ステップS307)。コントローラ4は、そのデータ部を、例えばコピーバッファ32に一時的に書き込む。そして、コントローラ4は、蓄積されたコピー用データ部の数が1ページ分以上であるか否かを判定する(ステップS308)。蓄積されたコピー用データの数が1ページ分未満である場合(ステップS308のNO)、ステップS302の手順に戻る。

0090

蓄積されたコピー用データ部の数が1ページ分以上である場合(ステップS308のYES)、コントローラ4は、ガベージコレクションのコピー先ブロックが割り当てられているかどうかを判定する(ステップS309)。ガベージコレクションのコピー先ブロックが割り当てられていない場合(ステップS309のNO)、コントローラ4は、フリーブロック群51の一つのフリーブロックを、ガベージコレクションのコピー先ブロックとして割り当てる(ステップS310)。ガベージコレクションのコピー先ブロックが既に割り当てられている場合(ステップS309のYES)、ステップS310の手順がスキップされる。

0091

コントローラ4は、ガベージコレクションのコピー先ブロックに、蓄積されたコピー用データの内、1ページ分のデータをコピーする(ステップS311)。そして、コントローラ4は、コピーされたデータに対応するLUT33を更新する(ステップS312)。コントローラ4は、LUT33を更新することによって、コピーされたデータに対応するLBAそれぞれとコピー先ブロック上の物理アドレスそれぞれとをマッピングする。

0092

次いで、コントローラ4は、ガベージコレクションの対象ブロック内の、全ての有効データに対応するLUT33の更新が終了したかどうかを判定する(ステップS313)。全ての有効データに対応するLUT33の更新が終了していない場合(ステップS313のNO)、コントローラ4は書き込み処理を開始する。全ての有効データに対応するLUT33の更新が終了した場合(ステップS313のYES)、コントローラ4は、コピーが終了したガベージコレクションの対象ブロックをフリーブロックにし(ステップS314)、書き込み処理を開始する。

0093

以上のように、本実施形態においては、ガベージコレクションの対象ブロック内のデータ部が順に一つずつ選択され、選択されたデータ部が有効データであるならば、当該データ部がGCのコピー先ブロックにコピーされ、選択されたデータ部が無効データであるならば、累積無効データ数に1が加算される。そして、この累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付が許可される。累積無効データ数は、受付た書き込みデータ部の数だけ減少される。したがって、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。

0094

ライトレイテンシーはデータの書き込みに要する応答時間を示す。最近では、ブロックサイズの増大により、ガベージコレクションのためにコピーすることが必要なデータ量が増えている。本実施形態では、ホスト書き込みとガベージコレクション動作との間の比率を、ブロック単位やページ単位ではなく、データ単位で制御することができる。つまり、本実施形態では、アドレス変換テーブルとして機能するLUT33を使用してLBAそれぞれとNANDメモリ5の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理され、累積無効データ数は、この管理サイズ単位で、ガベージコレクション動作中に見つけられた無効データ部の数を示す。したがって、ライトレイテンシーを、ブロック単位やページ単位ではなく、管理サイズのような最小データ単位(つまり、最小粒度)で制御することが可能となり、安定したレイテンシーでホスト書き込みを行うことができる。

0095

また、残りフリーブロック数および累積無効データ数以外の他のパラメータ(例えば、オーバープロビジョニングサイズ、等)は不要であるので、たとえオーバープロビジョニングサイズが動的に変更されても安定して動作することができる。

0096

さらに、仮に、ブロックサイズがブロック毎に異なるようなケースであっても、ライトレイテンシーを、管理サイズのような最小データ単位(つまり、最小粒度)で安定して制御することができる。

0097

図8は、SSD3がマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作の例を示す。ネームスペース管理部24は、SSD3をあたかも複数のドライブであるかのように扱うことを可能にするために、複数のネームスペースそれぞれに対応する複数の論理アドレス空間(LBA空間)を管理することができる。各ネームスペースには、LBA範囲(LBA0〜LBAn−1)が割り当てられる。LBA範囲のサイズ(つまりLBAの数)はネームスペース毎に可変であってもよい。各LBA範囲は、LBA0から始まる。各ネームスペースには、指定された数のブロックが確保される。確保されるブロックの数はネームスペース毎に異なっていてもよい。ネームスペース管理部24は、ネームスペース毎に異なるLUTを使用することによって、LBAそれぞれと物理アドレスそれぞれとの間のマッピングをネームスペース毎に個別に管理してもよい。例えば、NSID#1のネームスペース(第1領域)に関しては、コントローラ4は、NSID#1のネームスペース用のLUTを使用して、NSID#1のネームスペースのLBAそれぞれと第1領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理する。NSID#nのネームスペース(第n領域)に関しては、コントローラ4は、NSID#nのネームスペース用のLUTを使用して、NSID#nのネームスペースのLBAそれぞれと第n領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理する。

0098

NANDメモリ5のフリーブロックは共通フリーブロックプール51で管理され、いくつかのブロックが、共通フリーブロックプール(フリーブロック群)51からNSID#1のネームスペースに割り当てられる。これら割り当てられたブロックは、NSID#1のネームスペースに関連付けられたデータの格納のために使用される。つまり、それらいくつかのブロックが、NSID#1のネームスペースに関連付けられたデータを格納するためのブロックとしてNSID#1のネームスペースに割り当てられる。NSID#nのネームスペースについても、同様にしてブロックが割り当てられる。これにより、NANDメモリ5は、NSID#1〜NSID#nのネームスペースそれぞれに対応する複数の領域に論理的に分割される。

0099

SSD3においては、ネームスペース毎に独立した仮想フラッシュプールが設けられている。仮想フラッシュプール6−1は、NSID#1のネームスペース用に確保(予約)された物理リソース量(確保されたブロックの総数)を管理するために使用される。同様に、仮想フラッシュプール6−nは、NSID#nのネームスペース用に確保(予約)された物理リソース量(確保されたブロックの総数)を管理するために使用される。この場合、どのブロックを確保(予約)すべきかを考慮する必要はなく、確保(予約)すべきブロックの個数のみが各仮想フラッシュプールで管理される。

0100

フリーブロックそれぞれは複数のネームスペースによって共有される共通フリーブロックプール51で管理される。各ネームスペースの仮想フラッシュプールから返却されたブロックは、共通フリーブロックプール51で管理される。

0101

複数のネームスペースの各々では、図2を参照して上述したようなデータ書き込み動作とガベージコレクション動作とが行われる。

0102

まず、NSID#1のネームスペースにおけるガベージコレクション動作について説明する。

0103

ブロック選択部211は、アクティブブロックプール(アクティブブロック群)55−1からガベージコレクションの対象ブロック(GC対象ブロック)551−1を選択する。データコピー制御部212は、GC対象ブロック551−1内のデータ部それぞれを順に選択し、選択されたデータ部が有効データであれば、その選択されたデータ部をGCコピー先ブロック512−1に書き込む。また、選択されたデータ部が無効データであれば、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に1を加算する。

0104

GCコピー先ブロック512−1は共通フリーブロックプール51から割り当てられたブロックである。データコピー制御部212は、割り当てられているGCコピー先ブロック512−1の終端までデータが書き込まれた場合、そのGCコピー先ブロック512−1をアクティブブロックプール55−1に移動する。

0105

また、データコピー制御部212は、GC対象ブロック551−1内の全ての有効データが、GCコピー先ブロック512−1に書き込まれた場合、このGC対象ブロック551−1を共通フリーブロックプール51に移動する。

0106

次いで、ホスト2からのNSID#1のネームスペースへの書き込み要求に応じた書き込み動作について説明する。

0107

NSID#1を含む書き込み要求(ライトコマンド)は、NSID#1のネームスペース用のライト制御部22に送られる。ライト制御部22は、NSID#1のネームスペースの累積無効データ数の範囲内で、NSID#1のネームスペースに関連付けられた書き込みデータ部の受付を許可する。つまり、ライト制御部22は、NSID#1のネームスペースに関連付けられた書き込みデータ部を、累積無効データ数を上限とする数だけホスト2から受付けることができる。ライト制御部22は、受付た書き込みデータそれぞれをライトバッファ31−1に一時的に書き込む。また、累積無効データ数計測部213は、ホスト2から受付た書き込みデータ部の数を、NSID#1のネームスペースの累積無効データ数から減算する。ライト制御部22は、ライトバッファ31−1に書き込まれたデータを、例えばページ単位で、NSID#1のネームスペースにおけるホスト2の書き込み先ブロック511−1に書き込む。

0108

なお、ライト制御部22は、NSID#1のネームスペースにおけるホスト2の書き込み先ブロック511−1がまだ割り当てられていない場合、割り当てられている書き込み先ブロック511−1の終端までデータが書き込まれた場合、又は書き込み先ブロック511−1にエラーが発生した場合には、フリーブロックプール51内の一つのフリーブロックを、新たな書き込み先ブロック511−1として割り当てる。また、ライト制御部22は、割り当てられている書き込み先ブロック511−1の終端までデータが書き込まれた場合、その書き込み先ブロック511−1をアクティブブロックプール55−1に移動する。

0109

累積無効データ数計測部213は、ホスト2の書き込み先ブロック511−1が新たに割り当てられた時、NSID#1のネームスペース用に割り当て可能な残りブロック数が閾値以上であるか否かを判定する。この残りブロック数は、NSID#1のネームスペース用に確保(予約された)された総ブロック数から、NSID#1のネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる。この残りブロック数が閾値以上である場合、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に、新たに割り当てられた書き込み先ブロック511−1に書き込み可能なデータ部の数を加算する。書き込み先ブロック511−1に書き込み可能なデータ部の数は、このブロックの容量に相当するデータ部の数である。さらに、累積無効データ数計測部213は、ライトバッファ31−1に現在蓄積されているデータ部がある場合には、NSID#1のネームスペースの累積無効データ数からそのデータ部の数を減算するようにしてもよい。また、NSID#1のネームスペース用に割り当て可能な残りブロック数が閾値未満である場合、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に0を設定する。さらに、累積無効データ数計測部213は、ライトバッファ31−1に現在蓄積されているデータ部がある場合には、NSID#1のネームスペースの累積無効データ数からそのデータ部の数を減算するようにしてもよい。

0110

同様にして、NSID#nのネームスペースにおけるガベージコレクション動作と、ホスト2からのNSID#nのネームスペースへの書き込み要求に応じた書き込み動作とが行われる。

0111

図9及び図10のフローチャートを参照して、複数のネームスペースのための複数の領域が設定されたSSD3によって実行される書き込み処理の手順の例を説明する。以下では、説明を分かりやすくするために、複数のネームスペースの内の、ある一つのネームスペースへの書き込み処理について説明するが、コントローラ4は、複数のネームスペースの各々について同様の書き込み処理を並行して実行することができる。

0112

図9のフローチャートに示すように、まず、SSD3のコントローラ4は、ホスト2からあるネームスペースへの書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれかであるかどうかを判定する(ステップS401)。これら3つの状態のいずれかである場合(ステップS401のYES)、コントローラ4は、ホスト2からそのネームスペースへの書き込み先ブロックの割り当て処理を実行する(ステップS402)。

0113

このステップS402のホスト書き込み先ブロック割り当て処理の手順について、図10を参照して例示する。まず、コントローラ4は、フリーブロック群51に含まれるフリーブロックを、ホスト2のネームスペースへの書き込み先ブロックとして割り当てる(ステップS51)。そして、コントローラ4は、そのネームスペース用に確保された総ブロック数から、当該ネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる残りブロックの数が閾値以上であるか否かを判定する(ステップS52)。この閾値は、例えば1以上の値である。残りブロック数が閾値以上である場合(ステップS52のYES)、コントローラ4は、ネームスペースの累積無効データ数に、一つのブロックに相当するデータ数であるブロックサイズから、ライトバッファ31に蓄積されたデータ数を減算した値(すなわち、ブロックサイズ−蓄積データ数)を設定する(ステップS53)。そして、コントローラ4は、ネームスペースの不足ブロック数に1を設定する(ステップS54)。

0114

一方、フリーブロック群51に含まれる残りのフリーブロックの数が閾値未満である場合(ステップS52のNO)、コントローラ4は、ネームスペースの累積無効データ数に、ライトバッファ31に蓄積されたデータ数に相当する負の値(すなわち、−蓄積データ数)を設定する(ステップS55)。そして、コントローラ4は、ネームスペースの不足ブロック数を算出する(ステップS56)。コントローラ4は、例えば、使用できない不良ブロック(バッドブロック)の数と、ホスト2による書き込みのために次に使用されるブロックの分とを考慮して、不足ブロック数として、不良ブロックの数に1を加えた値を算出する。例えば、一つの不良ブロックが新たに発生したならば不足ブロックの数は2に設定され、二つの不良ブロックが新たに同時発生したならば不足ブロックの数は3に設定される。

0115

図9のフローチャートに示すように、ステップS402のホスト書き込み先ブロック割り当て処理の手順が完了した後、あるいはあるネームスペースにおけるホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれでもない場合(ステップS401のNO)、コントローラ4は、ホスト2からそのネームスペースへの書き込みデータが閾値以上蓄積されているか否かを判定する(ステップS403)。この書き込みデータは、例えば、ライトバッファ31に格納されているデータである。書き込みデータが閾値以上蓄積されている場合、つまり閾値以上の数の書き込みデータ部がライトバッファ31に蓄積されている場合(ステップS403のYES)、コントローラ4は、蓄積されているデータを、そのネームスペースにおけるホスト2の書き込み先ブロックに書き込む(ステップS404)。コントローラ4は、例えば、書き込み先ブロックに対して、ページ単位でデータを書き込む。そして、コントローラ4は、書き込みのエラーが発生したか否かを判定する(ステップS405)。書き込みのエラーが発生した場合(ステップS405のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS402)。このホスト書き込み先ブロック割り当て処理の手順は図10を参照して上述した通りである。

0116

書き込みのエラーが発生していない場合(ステップS405のNO)、コントローラ4は書き込まれたデータに応じて、ネームスペースのLUT33を更新し(ステップS406)、ステップS407の手順に進む。コントローラ4は、ネームスペースのLUT33を更新することによって、そのネームスペースの領域に書き込まれたデータに対応するLBAそれぞれとNANDメモリ5上の物理アドレスそれぞれとをマッピングする。

0117

また、書き込みデータが閾値以上蓄積されていない場合(ステップS403のNO)、ライトバッファ31に蓄積されているデータを書き込むための処理は行われず、ステップS407の手順に進む。

0118

ステップS407の手順において、コントローラ4は、ネームスペースの累積無効データ数が1以上であるか否かを判定する。ネームスペースの累積無効データ数が1以上でない場合(ステップS407のNO)、コントローラ4は書き込み処理から抜け、ガベージコレクション処理を実行する。このガベージコレクション処理の手順については、図11を参照して後述する。

0119

ネームスペースの累積無効データ数が1以上である場合(ステップS407のYES)、コントローラ4は、ネームスペースの累積無効データ数を不足ブロック数で除した値まで、ホスト2からのデータの受付を許可する(ステップS408)。なお、累積無効データ数を不足ブロック数で除した値の小数点以下の値は切り捨てとする。次いで、コントローラ4は、そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求(ライトコマンド)があるかどうかを判定する(ステップS409)。

0120

そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された書き込み要求がない場合(ステップS409のNO)、コントローラ4は、書き込み処理から抜け、ガベージコレクション処理を実行する。したがって、例えば、ホスト2が書き込み要求を発行しないホストアイドル状態の場合であっても、ガベージコレクション処理が進行される。

0121

そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求がある場合(ステップS409のYES)、コントローラ4は、そのホスト2からの書き込み要求に応答し、ホスト2から当該ネームスペースに対する書き込みデータを受信する(ステップS410)。受信した書き込みデータは、ネームスペース毎のライトバッファ31に一時的に書き込まれる。コントローラ4は、ネームスペースの累積無効データ数から、受信した書き込みデータ数に不足ブロック数を乗じた値を減算する(ステップS411)。そして、コントローラ4は、ライトバッファ31に一時的に書き込まれたデータに応じて、ネームスペースのLUT33を更新し(ステップS412)、ステップS407の手順に進む。コントローラ4は、ネームスペースのLUT33を更新することによって、ライトバッファ31に一時的に書き込まれたデータに対応するLBAそれぞれとライトバッファ31(すなわち、DRAM6)上の物理アドレスそれぞれとをマッピングする。

0122

次いで、図11を参照して、SSD3によって実行されるガベージコレクション処理の手順の例を説明する。

0123

まず、SSD3のコントローラ4は、ネームスペース用に確保された総ブロック数から、当該ネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる残りブロックの数が閾値以上であるか否かを判定する(ステップS601)。この閾値は、例えば1以上の値である。残りブロック数が閾値以上である場合(ステップS601のYES)、コントローラ4はガベージコレクション処理を終了し、上述した書き込み処理を実行する。残りブロック数が閾値以上である場合には、ガベージコレクション処理が実行されないことによって、ガベージコレクション処理が過剰に行われることを抑制することができる。

0124

残りブロック数が閾値未満である場合(ステップS601のNO)、コントローラ4は、未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがあるかどうかを判定する(ステップS602)。未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがない場合(ステップS602のNO)、コントローラ4は、当該ネームスペースにおける、新たなガベージコレクションの対象ブロックを選定する(ステップS603)。未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがある場合(ステップS602のYES)、ステップS603の手順がスキップされる。

0125

次いで、コントローラ4は、ガベージコレクションの対象ブロックから未処理のデータを1個選択する(ステップS604)。データの選択は、管理サイズ(例えば4KB)と同じサイズを有する最小データ単位で実行される。コントローラ4は、選択された未処理のデータ部が有効データまたは無効データのいずれであるかを判定する(ステップS605)。選択された未処理のデータ部が有効データでない場合、すなわち、無効データである場合(ステップS605のNO)、コントローラ4は、そのネームスペースの累積無効データ数に1を加算する(ステップS606)。

0126

一方、選択された未処理のデータ部が有効データである場合(ステップS605のYES)、コントローラ4は、そのデータ部をコピー用データとして蓄積する(ステップS607)。コントローラ4は、そのデータ部を、例えばコピーバッファ32に一時的に書き込む。そして、コントローラ4は、そのネームスペースについて、蓄積されたコピー用データ部の数が1ページ分以上であるか否かを判定する(ステップS608)。蓄積されたコピー用データの数が1ページ分未満である場合(ステップS608のNO)、ステップS602の手順に戻る。

0127

蓄積されたコピー用データ部の数が1ページ分以上である場合(ステップS608のYES)、コントローラ4は、そのネームスペースにおけるガベージコレクションのコピー先ブロックが割り当てられているかどうかを判定する(ステップS609)。ガベージコレクションのコピー先ブロックが割り当てられていない場合(ステップS609のNO)、コントローラ4は、フリーブロック群51の一つのフリーブロックを、当該ネームスペースにおけるガベージコレクションのコピー先ブロックとして割り当てる(ステップS610)。ガベージコレクションのコピー先ブロックが既に割り当てられている場合(ステップS609のYES)、ステップS610の手順がスキップされる。

0128

コントローラ4は、そのネームスペースのガベージコレクションのコピー先ブロックに、蓄積されたコピー用データの内、1ページ分のデータをコピーする(ステップS611)。そして、コントローラ4は、ネームスペースの、コピーされたデータに対応するLUT33を更新する(ステップS612)。コントローラ4は、ネームスペースのLUT33を更新することによって、当該ネームスペースにおいて、コピーされたデータに対応するLBAそれぞれとコピー先ブロック上の物理アドレスそれぞれとをマッピングする。

0129

次いで、コントローラ4は、ガベージコレクションの対象ブロック内の、全ての有効データに対応するLUT33の更新が終了したかどうかを判定する(ステップS613)。全ての有効データに対応するLUT33の更新が終了していない場合(ステップS613のNO)、コントローラ4は書き込み処理を開始する。全ての有効データに対応するLUT33の更新が終了した場合(ステップS613のYES)、コントローラ4は、コピーが終了したガベージコレクションの対象ブロックをフリーブロックにし(ステップS614)、書き込み処理を開始する。

0130

以上のように、SSD3に複数のネームスペースのための複数の領域が設定される場合にも、各ネームスペースにおいて、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。

0131

また、図12は、SSD3がマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作の別の例を示す。複数のネームスペースの各々では、図8を参照して上述したようなガベージコレクション動作が行われる。それにより、ネームスペース毎の累積無効データ数が算出される。

0132

図12に示す例では、ライト制御部22は、複数のネームスペースの累積無効データ数の合計を算出し、算出された合計の範囲内でホスト2からの書き込みデータ部の受付を許可する。つまり、ライト制御部22は、書き込みデータ部を、複数のネームスペースの累積無効データ数の合計を上限とする数だけホスト2から受付けることができる。ライト制御部22は、ホスト2から、受付た書き込みデータそれぞれをライトバッファ31に一時的に書き込む。また、累積無効データ数計測部213は、ホスト2から受付たデータ部の数を、累積無効データ数の合計から減算してもよい。ライト制御部22は、ライトバッファ31に書き込まれたデータを、例えばページ単位で、その書き込み要求で指定されたネームスペースにおけるホスト2の書き込み先ブロック511−1、511−nに書き込む。

0133

なお、ライト制御部22は、メモリシステムで不足しているフリーブロックの数が2つ以上である場合、複数の累積無効データ数の合計を、その不足しているフリーブロックの数で除した値の範囲内でホスト2からの書き込みデータ部の受付を許可するようにしても良い。

0134

図13は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。

0135

この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、及びエンベデッドコントローラ(EC)108等を含む。

0136

プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか一つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42及びファイルシステム43を含む。

0137

また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。

0138

ネットワークコントローラ105は、有線LANコントローラ無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。

0139

コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SASexpander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。

0140

EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオン及びパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。

0141

図14は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。

0142

この情報処理装置は、ラックに収容可能な薄い箱形筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。

0143

システムボードマザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品実装されている。これら電子部品がホスト2として機能する。

0144

以上のように、本実施形態においては、ライトレイテンシーの変動を低減することができる。本実施形態のメモリシステムは、NANDメモリ(不揮発性メモリ)5と、NANDメモリ5に電気的に接続されたコントローラ4とを備える。コントローラ4は、NANDメモリ5からガベージコレクションの対象ブロックとして選択されたGC対象ブロック551内のデータ部を順に選択し、その選択されたデータ部が有効データであるならば、当該データ部を、NANDメモリ5内のフリーブロック群51からガベージコレクションのためのコピー先ブロックとして割り当てられたGCコピー先ブロック512にコピーし、その選択されたデータ部が無効データであるならば、ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行する。そして、コントローラ4は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ累積無効データ数を減少させる。

0145

したがって、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。

0146

なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。

0147

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。

0148

1…情報処理システム、2…ホスト計算機、3…SSD、4…コントローラ、5…NANDメモリ、6…DRAM、11…ホストインターフェース(I/F)、12…CPU、13…NANDインターフェース(I/F)、14…DRAMインターフェース(I/F)、21…ガベージコレクション制御部、211…ブロック選択部、212…データコピー制御部、213…累積無効データ数計測部、22…ライト制御部、23…リード制御部、24…ネームスペース管理部、31…ライトバッファ、32…GCバッファ、33…ルックアップテーブル(LUT)、34…無効データ数、51…フリーブロック群、55…アクティブブロック群。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 富士通株式会社の「 ストレージ装置、ストレージシステムおよびプログラム」が 公開されました。( 2020/10/29)

    【課題】データ読み出し時のタイムアウトの発生を防止する。【解決手段】ストレージ装置1は、制御部1a、1次ストレージm1および2次ストレージm2を備える。制御部1aは、データ書き込み要求時に1次ストレー... 詳細

  • 株式会社ポトスセミコンダクタの「 データストレージ装置」が 公開されました。( 2020/10/29)

    【課題】データストレージ装置に関する小サイズデータ領域での読出時間の短縮を実現し、小サイズデータ領域での読出速度向上を図ること。【解決手段】本発明の一実施態様にかかるデータストレージ装置は、第1のデー... 詳細

  • ルネサスエレクトロニクス株式会社の「 半導体装置及び制御方法」が 公開されました。( 2020/10/29)

    【課題】サスペンド状態であった機器を高速に復帰させることが可能な半導体装置を提供する。【解決手段】半導体装置1は、記憶部10と、制御部20とを有する。記憶部10は、複数の実行状態データ12を格納する。... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ