(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20240813BHJP
【FI】
G06F12/02 510A
G06F12/02 570A
(21)【出願番号】P 2020046711
(22)【出願日】2020-03-17
【審査請求日】2022-09-12
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】田所 三徳
【審査官】田名網 忠雄
(56)【参考文献】
【文献】米国特許出願公開第2019/0227921(US,A1)
【文献】特開2017-027387(JP,A)
【文献】国際公開第2018/189858(WO,A1)
【文献】米国特許出願公開第2018/0260334(US,A1)
【文献】特開2017-004355(JP,A)
【文献】特開2017-162068(JP,A)
【文献】特開2004-240616(JP,A)
【文献】特開2016-115355(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00-12/02
G06F 3/06-3/08
(57)【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御するように構成されたコントローラと
、具備し、
前記コントローラは、
前記メモリシステムをアクセスするために前記ホストによって使用される複数のネームスペースを管理し、
前記複数のネームスペースが使用可能な総容量である前記メモリシステムの表記容量よりも大きいサイズを有する前記メモリシステムの第1の論理アドレス空間を管理し、
前記第1の論理アドレス空間から前記表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、サポートすべきネームスペースの最大数に対応する個数のエリアが割り当てられるように、前記第1の論理アドレス空間の全体を複数のエリアに等分割し、
前記複数のネームスペースの各々に、
前記複数のエリアのうちの一つ以上のエリアを割り当て、
前記複数のネームスペースの各々と前記複数のネームスペースの各々に割り当てられた前記一つ以上のエリアとの対応関係を第1の管理テーブルを使用して管理し、
前記複数のネームスペースのうちの第1のネームスペースのサイズを拡張すべき場合、
各ネームスペースのデータを移動する処理を実行せずに、前記第1の管理テーブルを更新して、前記複数のエリアのうちの未使用のエリアを前記第1のネームスペースに追加的に割り当てるように構成されている、メモリシステム。
【請求項2】
前記コントローラは、
第1のネームスペース識別子と第1の論理アドレスとを指定するリード/ライト要求を前記ホストから受信した場合、前記第1の管理テーブルを参照することによって、前記第1のネームスペース識別子によって指定される一つのネームスペースに割り当てられている一つ以上のエリアを特定し、
前記第1の論理アドレスの上位ビット部の値に基づいて、前記特定された一つ以上のエリアから一つのエリアを選択し、
前記第1の論理アドレスの前記上位ビット部を前記第1の論理アドレス空間内の前記選択したエリアの位置を示す第1のビット列で置換することによって、前記第1の論理アドレスを、前記第1の論理アドレス空間内の前記選択したエリアに属するアクセス対象の論理アドレスに変換するように構成されている請求項1記載のメモリシステム。
【請求項3】
前記コントローラは、前記第1のネームスペースのサイズを拡張する要求を前記ホストから受信したことに応じて、前記第1の管理テーブルを更新して、
前記第1のネームスペース以外の他の各ネームスペースと前記他の各ネームスペースに割り当てられている一つ以上のエリアとの対応関係を変更せずに前記未使用のエリアを前記第1のネームスペースに追加的に割り当てるように構成されている請求項1記載のメモリシステム。
【請求項4】
前記コントローラは、前記複数のネームスペースのうちの前記第1のネームスペースのサイズを拡張すべき場合、各ネームスペースのデータを移動する処理を実行せずに、前記第1の管理テーブルを更新して、前記未使用のエリアを前記第1のネームスペースに追加的に割り当てるように構成されている請求項1記載のメモリシステム。
【請求項5】
不揮発性メモリと、前記不揮発性メモリを制御するように構成されたコントローラと
、を含むメモリシステムを制御する制御方法であって、
前記コントローラにより、前記メモリシステムをアクセスするためにホストによって使用される複数のネームスペースを管理することと、
前記コントローラにより、前記複数のネームスペースが使用可能な総容量である前記メモリシステムの表記容量よりも大きいサイズを有する前記メモリシステムの第1の論理アドレス空間を管理することと、
前記コントローラにより、前記第1の論理アドレス空間から前記表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、サポートすべきネームスペースの最大数に対応する個数のエリアが割り当てられるように、前記第1の論理アドレス空間の全体を複数のエリアに等分割することと、
前記コントローラにより、前記複数のネームスペースの各々に、
前記複数のエリアのうちの一つ以上のエリアを割り当てることと、
前記コントローラにより、前記複数のネームスペースの各々と前記複数のネームスペースの各々に割り当てられた前記一つ以上のエリアとの対応関係を第1の管理テーブルを使用して管理することと、
前記複数のネームスペースのうちの第1のネームスペースのサイズを拡張すべき場合、
前記コントローラにより、前記第1のネームスペース以外の他の各ネームスペースと前記他の各ネームスペースに割り当てられている一つ以上のエリアとの対応関係を変更せずに、前記第1の管理テーブルを更新して、前記複数のエリアのうちの未使用のエリアを前記第1のネームスペースに追加的に割り当てることと
、を具備する
、制御方法。
【請求項6】
第1のネームスペース識別子と第1の論理アドレスとを指定するリード/ライト要求を前記ホストから受信した場合、
前記コントローラにより、前記第1の管理テーブルを参照することによって、前記第1のネームスペース識別子によって指定される一つのネームスペースに割り当てられている一つ以上のエリアを特定することと、
前記コントローラにより、前記第1の論理アドレスの上位ビット部の値に基づいて、前記特定された一つ以上のエリアから一つのエリアを選択することと、
前記コントローラにより、前記第1の論理アドレスの前記上位ビット部を前記第1の論理アドレス空間内の前記選択したエリアの位置を示す第1のビット列で置換することによって、前記第1の論理アドレスを、前記第1の論理アドレス空間内の前記選択したエリアに属するアクセス対象の論理アドレスに変換することと
、をさらに具備する
、請求項
5記載の制御方法。
【請求項7】
前記追加的に割り当てることは、
前記コントローラにより、前記第1のネームスペースのサイズを拡張する要求を前記ホストから受信したことに応じて、前記第1の管理テーブルを更新して、前記未使用のエリアを前記第1のネームスペースに追加的に割り当てることを含む
、請求項
5記載の制御方法。
【請求項8】
前記追加的に割り当てることは、
前記コントローラにより、各ネームスペースのデータを移動する処理を実行せずに、前記第1の管理テーブルを更新して、前記未使用のエリアを前記第1のネームスペースに追加的に割り当てることを含む
、請求項
5記載の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御するメモリシステムおよび制御方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを制御するストレージデバイスが広く普及している。
【0003】
このようなストレージデバイスとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピュータにおいて使用されている。
【0004】
SSDにおいては、SSDをアクセスためにホストによって使用されるネームスペースそれぞれを効率よく管理することを可能にする技術の実現が望まれている。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許出願公開第2017/0139610号明細書
【文献】米国特許出願公開第2017/0123976号明細書
【文献】米国特許出願公開第2017/0351431号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、ネームスペースそれぞれを効率よく管理ことができるメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリを制御するように構成されたコントローラと、を具備する。前記コントローラは、前記メモリシステムをアクセスするために前記ホストによって使用される複数のネームスペースを管理する。前記コントローラは、前記複数のネームスペースが使用可能な総容量である前記メモリシステムの表記容量よりも大きいサイズを有する前記メモリシステムの第1の論理アドレス空間を管理する。前記コントローラは、前記第1の論理アドレス空間から前記表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、サポートすべきネームスペースの最大数に対応する個数のエリアが割り当てられるように、前記第1の論理アドレス空間の全体を複数のエリアに等分割する。前記コントローラは、前記複数のネームスペースの各々に、前記複数のエリアのうちの一つ以上のエリアを割り当てる。前記コントローラは、前記複数のネームスペースの各々と前記複数のネームスペースの各々に割り当てられた前記一つ以上のエリアとの対応関係を第1の管理テーブルを使用して管理する。前記コントローラは、前記複数のネームスペースのうちの第1のネームスペースのサイズを拡張すべき場合、各ネームスペースのデータを移動する処理を実行せずに、前記第1の管理テーブルを更新して、前記複数のエリアのうちの未使用のエリアを前記第1のネームスペースに追加的に割り当てる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係るメモリシステムを含むストレージシステムの構成例を示すブロック図。
【
図2】本発明の実施形態に係るメモリシステムにおいて用いられる論理物理アドレス変換テーブル(L2Pテーブル)の構成例を示す図。
【
図3】本発明の実施形態に係るメモリシステムにおいて管理される複数のネームスペースを説明するための図。
【
図4】(A)比較例に係るメモリシステムにおいて使用される複数のネームスペースの各々に連続する複数の論理アドレスが割り当てられている状態を示す図。(B)比較例に係るメモリシステムにおいてリサイズ対象のネームスペースに後続する一つのネームスペースのデータを移動した状態を示す図。(C)リサイズ対象のネームスペースに対応する論理アドレス範囲が拡張された状態を示す図。
【
図5】本発明の実施形態に係るメモリシステムにおいて管理される複数のエリア(ネームスペースアクセスユニット)の例を示す図。
【
図6】本発明の実施形態に係るメモリシステムにおいて使用されるネームスペースマッピングテーブルの構成例を示す図。
【
図7】(A)本発明の実施形態に係るメモリシステムにおいて使用される複数のネームスペースの各々に論理アドレス空間内の一つのエリアが割り当てられている状態を示す図。(B)本発明の実施形態に係るメモリシステムにおいて使用される複数のネームスペースのうちの一つのネームスペースに論理アドレス空間内の別のエリアが追加的に割り当てられた状態を示す図。(C)本発明の実施形態に係るメモリシステムにおいて使用される複数のネームスペースのうちの一つのネームスペースに論理アドレス空間内のさらに別のエリアが追加的に割り当てられた状態を示す図。
【
図8】本発明の実施形態に係るメモリシステムにおいて使用される複数のネームスペースと論理アドレス空間内の複数のエリアとの間の対応関係の例を示す図。
【
図9】本発明の実施形態に係るメモリシステムにおいて実行されるネームスペース管理処理の手順を示すフローチャート。
【
図10】本発明の実施形態に係るメモリシステムにおいて実行されるライト動作およびリード動作の手順を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、図面を参照して、本発明の実施形態を説明する。
まず、本発明の実施形態に係るメモリシステムの構成について説明する。
図1は、本発明の実施形態に係るメモリシステム3を含むストレージシステム1の構成例を示すブロック図である。ストレージシステム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。
【0010】
ホスト2は、メモリシステム3の動作を制御する情報処理装置である。情報処理装置の例には、例えば、パーソナルコンピュータ、サーバコンピュータ、携帯端末、車載機器が含まれる。ホスト2は、データを書き込むための要求であるライト要求をメモリシステム3に送信する。また、ホスト2は、データを読み出すための要求であるリード要求をメモリシステム3に送信する。
【0011】
メモリシステム3は、不揮発性メモリにデータを書き込むように構成された半導体ストレージデバイスである。また、メモリシステム3は、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム3は、例えば、NAND型フラッシュメモリを含むSSDとして実現される。メモリシステム3はホスト2に接続可能である。メモリシステム3は、例えば、情報処理装置に内蔵される。メモリシステム3は、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【0012】
メモリシステム3は、コントローラ4、不揮発性メモリ5およびランダムアクセスメモリ(RAM)6を備える。
【0013】
コントローラ4は、不揮発性メモリ5を制御するように構成されたメモリコントローラである。コントローラ4は、System-on-a-Chip(SoC)のようなコントローラ回路によって実現されてもよい。コントローラ4は、不揮発性メモリ5と通信可能に接続されている。コントローラ4は、不揮発性メモリ5に電気的に接続されている。
【0014】
不揮発性メモリ5は、例えば、NAND型フラッシュメモリである。不揮発性メモリ5は、2次元構造のNAND型フラッシュメモリとして実現されていてもよいし、3次元構造のNAND型フラッシュメモリとして実現されていてもよい。
【0015】
NAND型フラッシュメモリのメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は消去動作の単位として機能する。ブロックBLK0~BLKm-1の各々は複数のページ(ここではページP0~Pn-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込み動作およびデータ読み出し動作の単位である。
【0016】
RAM6は、電力の供給がなくなると記憶内容が失われる、揮発性の半導体メモリである。RAM6は、例えば、ダイナミックRAM(DRAM)である。RAM6の記憶領域の一部は、ライトバッファとして使用されてもよい。ライトバッファは、不揮発性メモリ5に書き込むデータを一時的に記憶するための記憶領域である。不揮発性メモリ5に書き込むデータは、例えば、ホスト2から受信したライト要求に関連付けられたデータである。
【0017】
次に、コントローラ4の詳細な構成について説明する。コントローラ4は、ホストインタフェース回路11、CPU12、不揮発性メモリ制御回路13、RAMインタフェース回路14、直接メモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16、ECCエンコード/デコード部17、を含む。ホストインタフェース回路11、CPU12、不揮発性メモリ制御回路13、RAMインタフェース回路14、DMAC15、SRAM16、ECCエンコード/デコード部17はバス10に接続されている。
【0018】
ホストインタフェース回路11は、ホスト2との通信を実行するように構成されている。ホストインタフェース回路11は、ホスト2から様々な要求を受信する。様々な要求には、ライト要求、リード要求が含まれる。
【0019】
CPU12は、ホストインタフェース回路11、不揮発性メモリ制御回路13、RAMインタフェース回路14、DMAC15、SRAM16、ECCエンコード/デコード部17を制御するように構成されたプロセッサである。CPU12は、制御プログラム(ファームウェア)を実行することによって様々な処理を行う。CPU12は、メモリシステム3への電力の供給に応答して図示しないROMまたは不揮発性メモリ5から制御プログラム(ファームウェア)をSRAM16またはRAM6にロードする。CPU12は、不揮発性メモリ5内のデータの管理および不揮発性メモリ5内のブロックの管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。FTLによって実行されるデータ管理には、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理が含まれる。論理アドレスは、メモリシステム3の論理アドレス空間内の位置を指すアドレスである。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれた不揮発性メモリ5内の物理的な記憶位置を示す。論理アドレスとしては、一般に、LBA(logical block address)が使用され得る。CPU12は、論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)32を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を管理する。
【0020】
不揮発性メモリ制御回路13は、CPU12の制御の下、不揮発性メモリ5を制御するように構成されたメモリ制御回路である。不揮発性メモリ制御回路13は、複数の不揮発性メモリチップを制御するように構成される。不揮発性メモリ制御回路13は、例えば、複数のチャンネル(Ch)を介して複数の不揮発性メモリチップに接続されてもよい。
【0021】
RAMインタフェース回路14は、CPU12の制御の下、RAM6を制御するように構成されたRAM制御回路である。RAMインタフェース回路14は、例えば、DRAMを制御するように構成されたDRAM制御回路である。RAM6の記憶領域の一部は、ネームスペースマッピングテーブル31、およびL2Pテーブル32を記憶するために使用されてもよい。ネームスペースマッピングテーブル31は、各ネームスペースと各ネームスペースに割り当てられた論理アドレス空間内の一つ以上のエリアとの間の対応関係を管理するための管理テーブルである。L2Pテーブル32は、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を所定の管理サイズ単位で管理するための管理テーブルである。
【0022】
DMAC15は、CPU12の制御の下、ホスト2のメモリとSRAM16(またはRAM6)との間のデータ転送を実行する。
【0023】
SRAM16は、電力の供給がなくなると記憶内容が失われる、揮発性の半導体メモリである。SRAM16の記憶領域の一部は、不揮発性メモリ5に書き込むデータを一時的に記憶するためのライトバッファとして使用されてもよい。
【0024】
ECCエンコード/デコード部17は、不揮発性メモリ5にユーザデータを書き込む前に、ユーザデータをエンコード(ECCエンコード)することによってユーザデータにエラー訂正コード(ECC)を冗長コードとして付加する。不揮発性メモリ5からユーザデータが読み出された時、ECCエンコード/デコード部17は、読み出されたデータに付加されたECCを使用して、ユーザデータのエラー訂正を行う(ECCデコード)。
【0025】
次に本発明の実施形態に係るネームスペース管理について説明する。CPU12は、ネームスペース管理部21、ライト制御部22、およびリード制御部23として機能し得る。ネームスペース管理部21、ライト制御部22、およびリード制御部23の一部または全ては、コントローラ4内のハードウェアによって実現されてもよい。
【0026】
ネームスペース管理部21は、複数のネームスペースを管理する。複数のネームスペースは、互いに独立した論理アドレス範囲である。複数のネームスペースは、一つのストレージデバイスをあたかも複数のストレージデバイスであるかのように動作させるために使用される。複数のネームスペースは、メモリシステム3をアクセスするためにホスト2によって使用される。
【0027】
ネームスペース管理部21は、メモリシステム3の論理アドレス空間を等分割することによって得られる複数のエリアの各々を、ネームスペースアクセスユニットとして管理する。ネームスペース管理部21は、複数のネームスペースの各々に対して論理アドレス空間内の一つ以上のエリア(一つ以上のネームスペースアクセスユニット)を割り当てる。各ネームスペースアクセスユニットは、連続する論理アドレスを含む。各ネームスペースアクセスユニットは論理アドレス範囲としても参照される。
【0028】
ネームスペース管理部21は、ネームスペースリサイズ処理を実行するように構成されている。ネームスペースリサイズ処理は、任意のネームスペースのサイズを動的に変更する処理である。
【0029】
ライト制御部22は、あるネームスペースを識別するネームスペース識別子(NSID)を指定するパラメータとこのネームスペース内のLBA(書き込み先LBA)を指定するパラメータとを含むライト要求をホスト2から受信する。ライト制御部22は、受信したライト要求に関連付けられたデータを、不揮発性メモリ制御回路13を介して不揮発性メモリ5に書き込む。
【0030】
リード制御部23は、あるネームスペースを識別するネームスペース識別子(NSID)を指定するパラメータとこのネームスペース内のLBA(読み出し対象LBA)を指定するパラメータとを含むリード要求をホスト2から受信する。リード制御部23は、読み出し対象LBAに対応する読み出し対象データを、不揮発性メモリ制御回路13を介して不揮発性メモリ5から読み出す。
【0031】
次に、本発明の実施形態に係るL2Pテーブル32を説明する。
図2は、メモリシステム3において用いられるL2Pテーブル32の構成例を示す図である。L2Pテーブル32は、メモリシステム3の論理アドレス空間内の論理アドレスそれぞれと不揮発性メモリ5の物理アドレス空間内の物理アドレスそれぞれとの間の対応関係を所定の管理サイズ単位で管理するために使用される。メモリシステム3の論理アドレス空間は、メモリシステム3をアクセスするためにホスト2が使用可能なアドレス空間である。
【0032】
L2Pテーブル32は、複数の論理アドレスそれぞれに対応する複数のエントリを含む。ある論理アドレスに対応するエントリにおいては、この論理アドレスに関連付けられた物理アドレスが格納される。例えば、コントローラ4がある論理アドレスに対応するデータを不揮発性メモリ5内のある物理的な記憶位置に書き込んだ場合、コントローラ4は、L2Pテーブル32を更新して、この記憶位置を示す物理アドレスPBAをこの論理アドレスに関連付ける。
【0033】
図2においては、論理アドレス0x000、0x001,0x002、0x005、0x006、0x007に、物理アドレスPBA0、PBA3、PBA1、PBA4、PBA5、PBA6がそれぞれ関連付けられている場合が例示されている。
【0034】
次に、本発明の実施形態に係るネームスペースを説明する。
図3は、メモリシステム3において管理される複数のネームスペースを説明するための図である。
【0035】
図3においては、ネームスペースNS#1,ネームスペースNS#2、…、ネームスペースNS#yがメモリシステム3のコントローラ4によって管理されている場合が例示されている。各ネームスペースは、ネームスペース識別子(NSID)によって識別される。各ネームスペースは連続する複数の論理アドレス(LBA)の集合を含む。各ネームスペースに対応する論理アドレス範囲は、LBA0から始まる。各ネームスペースは任意のサイズに設定可能である。各ネームスペースのサイズは、各ネームスペースに含まれるLBAの個数に対応する。
図3においては、ネームスペースNS#1がLBA0からLBAiまでの連続する複数のLBAを含み、ネームスペースNS#2がLBA0からLBAjまでの連続する複数のLBAを含み、ネームスペースNS#yがLBA0からLBAkまでの連続する複数のLBAを含む場合が例示されている。
【0036】
次に、コントローラ4によって実行されるネームスペース作成動作について説明する。
【0037】
ホスト2は、ネームスペース作成要求(ネームスペース作成コマンド)をメモリシステム3に送信することができる。ネームスペース作成要求は、作成すべきネームスペースのサイズを指定することができる。
【0038】
ネームスペース作成要求を受信した場合、コントローラ4は、まず、受信したネームスペース作成要求によって指定されたサイズを有するネームスペースを作成する。そして、コントローラ4は、作成したネームスペースを識別するネームスペース識別子を発行し、発行したネームスペース識別子をホスト2に送信する。
【0039】
このようにして、ネームスペース作成要求をホスト2から受信する度、コントローラ4はネームスペースを作成する。これにより、メモリシステム3内において複数のネームスペースが作成される。作成された複数のネームスペースはコントローラ4によって管理される。
【0040】
次に、ネームスペースのサイズを変更するネームスペースリサイズ処理について説明する。
【0041】
まず、比較例に係るネームスペースリサイズ処理を説明する。比較例に係るSSDは、ネームスペース毎に、オフセットとサイズ(ここでは100)とをネームスペースマッピングテーブルを使用して管理する。あるネームスペースのオフセットは、このネームスペースに割り当てられている論理アドレス空間内のLBA範囲の開始位置を示す。
【0042】
図4(A)は、複数のネームスペースの各々に連続する論理アドレス(連続するLBA)が割り当てられている状態を示す図である。
図4(B)は、リサイズ対象のネームスペースに後続する一つのネームスペースのデータを移動した状態を示す図である。
図4(C)は、リサイズ対象のネームスペースに対応する論理アドレス範囲が拡張された状態を示す図である。
【0043】
図4(A)に示すように、比較例に係るSSDにおいては、例えば、ネームスペースNS#1、ネームスペースNS#2、およびネームスペースNS#3が管理されている。比較例に係るSSDにおいては、各ネームスペースには、SSDの論理アドレス空間内の連続するLBAが割り当てられる。例えば、ネームスペースNS#1には、SSDの論理アドレス空間内のLBA範囲(LBA0~LBA99)が割り当てられる。ネームスペースNS#2には、論理アドレス空間内のLBA範囲(LBA100~LBA199)が割り当てられる。ネームスペースNS#3には、論理アドレス空間内のLBA範囲(LBA200~LBA299)が割り当てられる。
【0044】
比較例に係るSSDにおいては、各ネームスペースに論理アドレス空間内の連続する複数のLBAを割り当てる必要がある。このため、ネームスペースNS#2のサイズを拡張するためには、リサイズ対象のネームスペースNS#2に割り当てられているLBA範囲(LBA100~LBA199)の直後にフリーのLBA範囲を確保することが必要である。フリーのLBA範囲は、どのネームスペースにも割り当てられていないLBA範囲である。
【0045】
一方、
図4(A)に示すように、リサイズ対象のネームスペースNS#2のLBA範囲(LBA100~LBA199)の直後のLBA範囲(LBA200~LBA299)は、ネームスペースNS#3に既に割り当てられている。したがって、
図4(A)のネームスペースNS#2のサイズを拡張するためには、ネームスペースNS#3のデータを、LBA範囲(LBA200~LBA299)から別のLBA範囲に移動することが必要となる。
【0046】
例えば、
図4(B)に示すように、ネームスペースNS#3のデータは、LBA範囲(LBA200~LBA299)からLBA範囲(LBA300~LBA399)に移動される。ネームスペースNS#3のデータがLBA範囲(LBA300~LBA399)に移動されることにより、LBA範囲(LBA200~LBA299)をフリーのLBA範囲にすることができる。
【0047】
ネームスペースNS#3のデータを移動する処理においては、ネームスペースNS#3のデータが記憶されている物理アドレスそれぞれがネームスペースNS#3の直後のLBA範囲(LBA300~LBA399)に関連付けられるようにL2Pテーブルを更新する処理が実行される。一般に、L2Pテーブルに格納されるアドレス変換情報のサイズはSSDの容量の1/1000程度である。例えば、1Tバイトの容量を有するSSDにおいては、L2Pテーブルに格納されるアドレス変換情報のサイズは1Gバイトとなる。1Tバイトの容量を有するSSDに16個のネームスペースが作成されているケースにおいては、一つのネームスペース当たりに必要なアドレス変換情報の平均サイズは約62Mバイト(=1GB/16)である。このため、ある一つのネームスペースのデータを移動する場合には、数十Mバイト程度のアドレス変換情報の書き換えが必要とされる。このようなL2Pテーブルの書き換え処理においては、アドレス変換情報をコピーするだけでも、ある程度の時間が必要とされる。
【0048】
また、不揮発性メモリ5にデータとこのデータに対応する論理アドレスとの双方が記憶されているケースにおいては、L2Pテーブルの更新だけでは済まず、実際にネームスペースNS#3のデータを移動する処理も必要となる。
【0049】
ネームスペースNS#3のデータの移動する処理が完了した後、
図4(C)に示すように、ネームスペースNS#2のサイズが100から200に変更されるようにネームスペースマッピングテーブルが更新される。さらに、ネームスペースNS#3のオフセットが200から300に変更されるようにネームスペースマッピングテーブルが更新される。この結果、ネームスペースNS#2がその直後のLBA範囲(空き領域)であるLBA範囲(LBA200~LBA299)とマージされ、空き領域をネームスペースNS#2用に利用することが可能となる。
【0050】
次に、本発明の実施形態に係るネームスペースリサイズ処理を説明する。
【0051】
本発明の実施形態に係るネームスペースリサイズ処理の説明に先立ち、まず、本発明の実施形態で使用される複数のエリアと本発明の実施形態に係るネームスペースマッピングテーブル31について説明する。
【0052】
メモリシステム3においては、コントローラ4によって管理されるメモリシステム3の論理アドレス空間(第1の論理アドレス空間)は、複数のエリア、つまり複数のネームスペースアクセスユニット(NSAU)に等分割される。ネームスペースアクセスユニット(NSAU)は、ネームスペースにLBA範囲を割り当てる単位として使用される。一つのNSAUは連続するLBAを含む。一つのNSAUのサイズは、第1の論理アドレス空間からメモリシステム3の表記容量分のサイズを有する論理アドレス空間(第2の論理アドレス空間)を除いた残りの空間に、メモリシステム3がサポートすべきネームスペースの最大数に対応する個数のNSAUが割り当て可能なサイズに設定される。これにより、第1の論理アドレス空間は、第1の論理アドレス空間内の残りの空間に、サポートすべきネームスペースの最大数に対応する個数のNSAUが割り当てられるように、複数のNSAUに分割される。
【0053】
図5は、メモリシステム3において管理される複数のエリア(ネームスペースアクセスユニット)の例を示す。
図5においては、第1の論理アドレス空間全体が同じサイズを有する複数のNSAUに分割される。
図5においては、第1の論理アドレス空間全体がx+1個のNSAU(NSAU0~NSAU12、…、NSAUk+1、NSAUk+2、…、NSAUx-1、NSAUx)に分割されている場合が例示されている。
【0054】
この場合、x+1個のNSAUの各々のサイズは、第1の論理アドレス空間から表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、メモリシステム3がサポートすべきネームスペースの最大数に対応する個数のNSAUが割り当て可能なサイズに設定される。
図5では、NSAUk+1~NSAUxの総数がサポートすべきネームスペースの最大数に対応する。一般的には、ストレージデバイスの表記容量分のサイズを有する論理アドレス空間は、2進数によって管理される実際のストレージデバイス内の論理アドレス空間の約93.14パーセント程度の大きさである。これは、IDEMA規格においても同様である。メモリシステム3においても、コントローラ4は第1の論理アドレス空間を2進数によって管理する。一方、メモリシステム3の表記容量は10進数によって表される。例えば、メモリシステム3の表記容量が1TB(=1,000,000,000,000バイト=10
12バイト)である場合、第1の論理アドレス空間のサイズは1,099,511,627,776バイト(=2
40バイト)であってもよい。
【0055】
さらに、サポートすべきネームスペースの最大数がNである場合、各NSAUのサイズは、残りの空間に少なくともN-1個のNSAUが割り当て可能なサイズに設定されてもよい。これにより、第1の論理アドレス空間は、第1の論理アドレス空間内の残りの空間に、少なくともN-1個のNSAUが割り当てられるように、複数のNSAUに分割される。
【0056】
また、第1の論理アドレス空間の分割数は、サポートすべきネームスペースの最大数によって異なる。例えば、サポートすべきネームスペースの最大数が16である場合には、第1の論理アドレス空間は例えば256個のNSAUに分割されてもよい。表記容量分のサイズを有する第2の論理アドレス空間が第1の論理アドレス空間の約93.14パーセントである場合、表記容量分のサイズを有する第2の論理アドレス空間は、256個のNSAUのうちの239個のNSAUによって表現することができる。よって、たとえ表記容量よりも僅かに少ないサイズを有する一つのネームスペース用に239個のNSAUが使用された場合であっても、17個のNSAUが余る。したがって、他の15個のネームスペースに、NSAUを一つずつ割り当てることが可能となる。サポートすべきネームスペースの最大数が32である場合には、第1の論理アドレス空間は例えば512個のNSAUに分割されてもよい。
【0057】
図6は、本発明の実施形態に係るメモリシステム3において使用されるネームスペースマッピングテーブル31の構成例を示す図である。
【0058】
ネームスペースマッピングテーブル31は、複数のネームスペースにそれぞれ対応する複数のテーブル部を含む。各テーブル部は、エントリ#0、エントリ#1、…、エントリ#xを含む。例えば、第1の論理アドレス空間が256個のNSAUに分割されるケースにおいては、各テーブル部は256個のエントリを含んでいてもよい。一つのエントリは、第1の論理アドレス空間内の一つのNSAUの位置を示すポインタを含む。
【0059】
例えば、ネームスペースNS#1のサイズが一つのNSAUのサイズ以下であり、且つネームスペースNS#1にNSAU0が割り当てられている場合、ネームスペースNS#1に対応するテーブル部内のエントリ#0内のポインタP0は、NSAU0を示す値に設定される。ネームスペースNS#1に対応するテーブル部内のエントリ#1~#xのポインタP1~pxは、未使用を示す特定の値に設定される。
【0060】
ネームスペースNS#2のサイズが一つのNSAUのサイズ以下であり、且つネームスペースNS#2にNSAU1が割り当てられている場合、ネームスペースNS#2に対応するテーブル部内のエントリ#0内のポインタP0は、NSAU1を示す値に設定される。ネームスペースNS#2に対応するテーブル部内のエントリ#1~#xのポインタP1~pxは、未使用を示す特定の値に設定される。
【0061】
同様に、ネームスペースNS#3のサイズが一つのNSAUのサイズ以下であり、且つネームスペースNS#3にNSAU2が割り当てられている場合、ネームスペースNS#3に対応するテーブル部内のエントリ#0内のポインタP0は、NSAU2を示す値に設定される。ネームスペースNS#3に対応するテーブル部内のエントリ#1~#xのポインタP1~pxは、未使用を示す特定の値に設定される。
【0062】
次に、本発明の実施形態に係るネームスペースリサイズ処理について説明する。
図7(A)は、本発明の実施形態に係るメモリシステム3において使用される複数のネームスペースの各々に論理アドレス空間内の一つのエリアが割り当てられている状態を示す図である。
図7(B)は、本発明の実施形態に係るメモリシステム3において使用される複数のネームスペースのうちの一つのネームスペースに論理アドレス空間内の別のエリアが追加的に割り当てられた状態を示す図である。
図7(C)は、本発明の実施形態に係るメモリシステム3において使用される複数のネームスペースのうちの一つのネームスペースに論理アドレス空間内のさらに別のエリアが追加的に割り当てられた状態を示す図である。
【0063】
図7(A)では、ネームスペースNS#1、ネームスペースNS#2、およびネームスペースNS#3が管理されているが想定されている。ネームスペースNS#1、ネームスペースNS#2、およびネームスペースNS#3には、NSAU0、NSAU1、およびNSAU2がそれぞれ割り当てられている。この場合、ネームスペースマッピングテーブル31においては、ネームスペースNS#1に対応するポインタP0は第1の論理アドレス空間内のNSAU0の位置を示し、ネームスペースNS#2に対応するポインタP0は第1の論理アドレス空間内のNSAU1の位置を示し、ネームスペースNS#3に対応するポインタP0は第1の論理アドレス空間内のNSAU2の位置を示す。
【0064】
次に、
図7(B)を参照して、ネームスペースNS#2のサイズを拡張するために実行される処理を説明する。まず、コントローラ4は、第1の論理アドレス空間内の複数のNSAUのうちの未使用の一つのNSAU(例えばNSAU3)を選択する。コントローラ4は、選択したNSAU3をネームスペースNS#2に追加的に割り当てる。この場合、コントローラ4は、ネームスペースNS#2に対応するポインタP1がNSAU3を示すようにネームスペースマッピングテーブル31を更新するだけでよく、各ネームスペースのデータを移動する必要は無い。また、他の各ネームスペースとNSAUとの間の対応関係を変更する必要もない。
【0065】
次に、
図7(C)を参照して、ネームスペースNS#2のサイズをさらに拡張するために実行される処理を説明する。コントローラ4は、第1の論理アドレス空間内の複数のNSAUのうちの未使用の一つのNSAU(例えばNSAU4)をさらに選択する。コントローラ4は、選択したNSAU4をネームスペースNS#2に追加的に割り当てる。この場合も、コントローラ4は、ネームスペースNS#2に対応するポインタP2がNSAU4を示すようにネームスペースマッピングテーブル31を更新するだけでよい。
【0066】
図8は、本発明の実施形態に係るメモリシステム3において使用される複数のネームスペースと第1の論理アドレス空間内の複数のエリアとの間の対応関係の例を示す図である。
図8では、メモリシステム3によってサポートされるネームスペースの最大数が16であり、且つメモリシステム3の表記容量が480GBである場合が例示されている。ネームスペースNS#1が例えば479GBのサイズを使用する場合、コントローラ4は、480GBに対応する個数のNSAU(例えばNSAU0~NSAUj)をネームスペースNS#1に割り当てる。NSAUjについては、NSAUjに含まれる複数のLBAのうちの一部のみがネームスペースNS#1によって使用される。
【0067】
しかし、NSAUjはネームスペースNS#1に割り当てられているので、NSAUj内の未使用のLBAの集合を他のネームスペースのために使用することはできない。
【0068】
本実施形態に係るメモリシステム3においては、第1の論理アドレス空間から表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、サポートすべきネームスペースの最大数に対応する個数のNSAU(例えばNSAUk+1~NSAUx)が存在している。したがって、ネームスペースNS#1に表記容量に対応する個数のNSAUを割り当てた場合であっても、残りの15個のネームスペース(NS#2~NS#15)にNSAUを一つずつ割り当てることが可能となる。
【0069】
例えば、ネームスペースNS#2にNSAUk+1が割り当てられ、ネームスペースNS#3にNSAUk+2が割り当てられる。同様にして、ネームスペースNS#4~NS#14にNSAUが一つずつ割り当てられ、そして、ネームスペースNS#15にNSAUx-1が割り当てられ、ネームスペースNS#16にNSAUxが割り当てられる。
【0070】
ネームスペースNS#2~NS#15が使用可能な総容量は1GB(=480GB-479GB)である。よって、NSAUk+1~NSAUxの各々においては、各NSAUに含まれる複数のLBAのうちの一部のみがネームスペースNS#2~NS#15の各々によって使用される。
【0071】
よって、本発明の実施形態に係るメモリシステム3は、第1の論理アドレス空間自体を拡張するための特別な処理を行うことなく、表記容量よりも僅かに少ないサイズを有する一つのネームスペース用に表記容量分の個数のNSAUを割り当てることができ、且つ同時に、残りの各ネームスペースにNSAUを一つずつ割り当てることが可能となる。よって、例えば、メモリシステムが16個のネームスペースをサポートする場合、メモリシステム3の第1の論理アドレス空間を例えば256個のNSAUに等分割することで、一つのネームスペースが最大で表記容量分のサイズを使用することを可能にしつつ、かつ、それと同時に最大16個のネームスペースのサポートも実現することができる。
【0072】
さらに、ネームスペースのサイズの変更は、メモリシステム3の応答性を損なうことなく、メモリシステム3の動作中に動的に行うことが可能となる。なぜなら、各ネームスペースのデータを移動することなく、任意のネームスペースのサイズを変更できるからであある。
【0073】
次に、本発明の実施形態に係るネームスペース管理処理について説明する。
図9は、本発明の実施形態に係るメモリシステム3において実行されるネームスペース管理処理の手順を示すフローチャートである。
【0074】
ホスト2はネームスペース作成要求をメモリシステム3に送信する。ネームスペース作成要求を受信すると(開始)、メモリシステム3のコントローラ4は、メモリシステム3の第1の論理アドレス空間を複数のエリア(NSAU)に分割し、各ネームスペースに一つ以上のNSAUを割り当てる(S101)。S101では、一つのNSAUのサイズは、第1の論理アドレス空間から表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、メモリシステム3がサポートすべきネームスペースの最大数に対応する個数のNSAUが割り当て可能なサイズに設定される。コントローラ4は、残りの空間にネームスペースの最大数に対応する個数のNSAUが割り当てられるように、第1の論理アドレス空間全体を、各々が設定されたサイズを有する複数のNSAUに分割する。そして、コントローラ4は各ネームスペースに一つ以上のNSAUを割り当てる。
【0075】
次いで、コントローラ4は、複数のネームスペースそれぞれと各ネームスペースに割り当てられた一つ以上のNSAUとの間の対応関係を、ネームスペースマッピングテーブル31を使用して管理する(S102)。
【0076】
コントローラ4はあるネームスペースのサイズを拡張することが必要か否かを判定する(S103)。例えば、ホスト2は、あるネームスペースのサイズを拡張する要求(コマンド)を、メモリシステム3に送信してもよい。この場合、コントローラ4がこの要求の受信した場合に、コントローラ4はこの受信した要求によって指定されたネームスペースのサイズを拡張することが必要であると判定してもよい。
【0077】
あるネームスペースのサイズを拡張することが必要でない場合(S103におけるNO)、コントローラ4は、処理を終了する(終了)。
【0078】
あるネームスペースのサイズを拡張することが必要である場合(S103におけるYES)、コントローラ4は、複数のNSAUから未使用のNSAUを選択する(S104)。ここで、未使用のNSAUとは、どのネームスペースにも割り当てられていないNSAUを意味する。
【0079】
コントローラ4は、ネームスペースマッピングテーブル31を更新することによって、選択した未使用のNSAUを、拡張対象のネームスペースに割り当てる(S105)。これにより、コントローラ4は、個々のネームスペースのデータを移動する処理を行うことなく、拡張対象のネームスペースのサイズを動的に拡張することができる。そして、コントローラ4は、処理を終了する(終了)。
【0080】
次に、本発明の実施形態に係るライト動作およびリード動作を説明する。
図10は、本発明の実施形態に係るメモリシステム3において実行されるライト動作およびリード動作の手順を示すフローチャートである。
【0081】
ホスト2はライト要求、リード要求を含む様々な要求をメモリシステム3に送信する。ある要求を受信すると(開始)、コントローラ4は、受信した要求がライト要求、リード要求、他の要求のいずれであるかを判定する(S111)。受信した要求がライト要求である場合(S111におけるライト要求)、コントローラ4は、NSIDを指定するパラメータと、このネームスペース内のLBA(書き込み先LBA)を指定するパラメータとを、受信したライト要求から取得する(S112)。
【0082】
次いで、コントローラ4は、ネームスペースマッピングテーブル31を参照することによって、この取得したパラメータによって指定されるNSIDに対応するネームスペースに割り当てられている一つ以上のNSAUを特定する(S113)。例えば、このNSIDに対応するネームスペースにNSAU1とNSAU3が割り当てられている場合には、コントローラ4は、NSAU1とNSAU3を、NSIDに対応するネームスペースに割り当てられている一つ以上のNSAUとして特定する。そして、コントローラ4は、S114の処理に進む。
【0083】
S114では、LBA(書き込み先LBA)の上位ビット部に基づいて、コントローラ4は、特定した一つ以上のNSAUから一つのNSAUを選択する。そして、コントローラ4は、LBA(書き込み先LBA)の上位ビット部を、第1の論理アドレス空間内の選択したNSAUの位置を示すビット列で置換することによって、LBA(書き込み先LBA)を、第1の論理アドレス空間内の選択したNSAUに属するアクセス対象の論理アドレスに変換する。
【0084】
LBA(書き込み先LBA)をアクセス対象の論理アドレスに変換した後、コントローラ4は、受信したライト要求に関連付けられたデータ(ライトデータ)を不揮発性メモリ5に書き込む(S115)。次いで、コントローラ4は、ライトデータが書き込まれた不揮発性メモリ5内の記憶位置(物理記憶位置)を示す物理アドレスがアクセス対象の論理アドレスに関連付けられるようにL2Pテーブル32を更新する(S116)。そして、コントローラ4は処理を終了する(終了)。
【0085】
受信した要求がリード要求である場合(S111におけるリード要求、)、コントローラ4は、NSIDを指定するパラメータと、このネームスペース内のLBA(読み出し対象LBA)を指定するパラメータとを、受信したリード要求から取得する(S117)。
【0086】
次いで、コントローラ4は、ネームスペースマッピングテーブル31を参照することによって、この取得したパラメータによって指定されるNSIDに対応するネームスペースに割り当てられている一つ以上のNSAUを特定する(S118)。例えば、このNSIDに対応するネームスペースにNSAU1とNSAU3が割り当てられている場合には、コントローラ4は、NSAU1とNSAU3を、NSIDに対応するネームスペースに割り当てられている一つ以上のNSAUとして特定する。そして、コントローラ4は、S119の処理に進む。
【0087】
S119では、LBA(読み出し対象LBA)の上位ビット部に基づいて、コントローラ4は、特定した一つ以上のNSAUから一つのNSAUを選択する。そして、コントローラ4は、LBA(読み出し対象LBA)の上位ビット部を、第1の論理アドレス空間内の選択したNSAUの位置を示すビット列で置換することによって、LBA(読み出し対象LBA)を、第1の論理アドレス空間内の選択したNSAUに属するアクセス対象の論理アドレスに変換する。
【0088】
LBA(読み出し対象LBA)をアクセス対象の論理アドレスに変換した後、コントローラ4は、L2Pテーブル32を参照することによって、アクセス対象の論理アドレスに対応するデータが格納されている物理アドレスを特定する(S120)。S120では、コントローラ4は、アクセス対象の論理アドレスに対応するL2Pテーブル32内のエントリに格納されている物理アドレスを、アクセス対象の論理アドレスに対応するデータが格納されている物理アドレスとしてL2Pテーブル32から取得する。
【0089】
コントローラ4は、特定した物理アドレスに基づいて、読み出し対象データを不揮発性メモリ5から読み出し、読み出した読み出し対象データをホスト2に送信する(S121)。そして、コントローラ4は処理を終了する(終了)。
【0090】
次に、S114において実行されるアドレス変換動作の例について説明する。例えば、第1の論理アドレス空間が256個のNSAU(NSAU0~NSAU255)に分割されており、且つ受信したライト要求によって指定されたNSIDに対応するネームスペースに、NSAU1とNSAU3が割り当てられている場合を想定する。
【0091】
この場合、コントローラ4は、LBA(書き込み先LBA)の上位8ビット部が「00000000」である場合は、NSAU1を選択し、そして上位8ビット部「00000000」を、第1の論理アドレス空間内のNSAU1の位置を示すビット列「00000001」で置換する。アクセス対象の論理アドレスは、置換されたビット列「00000001」と、LBA(書き込み先LBA)の下位24ビット部とによって、表現される。
【0092】
上位8ビット部が「00000001」である場合は、コントローラ4は、NSAU3を選択し、そして上位8ビット部「00000001」を、第1の論理アドレス空間内のNSAU3の位置を示すビット列「000011」で置換する。アクセス対象の論理アドレスは、置換されたビット列「00000011」と、LBA(書き込み先LBA)の下位24ビット部とによって、表現される。
【0093】
S119においても、S114で行われるアドレス変換動作と同様のアドレス変換動作が実行される。
【0094】
以上説明したように、本実施形態によれば、コントローラ4は、ホスト2によって使用される複数のネームスペースの各々に、コントローラ4によって管理されるメモリシステム3の第1の論理アドレス空間を等分割することによって得られる複数のNSAUのうちの一つ以上のNSAUを割り当てる。ここで、複数のNSAUの各々は、第1の論理アドレス空間からメモリシステム3の表記容量分のサイズを有する第2の論理アドレス空間を除いた残りの空間に、サポートすべきネームスペースの最大数に対応する個数のエリアが割り当て可能なサイズを有している。このため、第1の論理アドレス空間は、サポートすべきネームスペースの最大数に対応する個数のNSAUが残りの空間に割り当てられるように、複数のNSAUに分割される。コントローラ4は、複数のネームスペースの各々と複数のネームスペースの各々に割り当てられた一つ以上のNSAUとの対応関係を、ネームスペースマッピングテーブル31を使用して管理する。そして、コントローラ4は、複数のネームスペースのうちの第1のネームスペースのサイズを拡張すべき場合、ネームスペースマッピングテーブル31を更新して、複数のNSAUのうちの未使用のNSAUを第1のネームスペースに追加的に割り当てる。
【0095】
この場合、コントローラ4は、ネームスペースマッピングテーブル31を更新するだけでよく、各ネームスペースのデータを移動する必要は無い。また、他の各ネームスペースとNSAUとの間の対応関係を変更する必要もない。したがって、コントローラ4は、個々のネームスペースのデータを移動する処理を行うことなく、第1のネームスペースのサイズを動的に拡張することができる。
【0096】
また、第1の論理アドレス空間自体を拡張するための特別な処理を行うことなく、表記容量よりも僅かに少ないサイズを有する一つのネームスペース用に表記容量分の個数のNSAUを割り当てることができ、且つ同時に、残りの各ネームスペースにNSAUを一つずつ割り当てることが可能となる。よって、一つのネームスペースが最大で表記容量分のサイズを使用することを可能にしつつ、かつ、それと同時に、最大数のネームスペースのサポートも実現することができる。
【0097】
なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
【0098】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0099】
1 ストレージシステム
2 ホスト
3 メモリシステム
4 コントローラ
5 不揮発性メモリ
6 ランダムアクセスメモリ(RAM)
10 バス
11 ホストインタフェース回路
12 CPU
13 不揮発性メモリ制御回路
14 RAMインタフェース回路
15 直接メモリアクセスコントローラ(DMAC)
16 スタティックRAM(SRAM)
17 ECCエンコード/デコード部
21 ネームスペース管理部
22 ライト制御部
23 リード制御部
31 ネームスペースマッピングテーブル
32 論理物理アドレス変換テーブル(L2Pテーブル)