(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-01
(45)【発行日】2024-03-11
(54)【発明の名称】メモリシステム及びメモリシステムの制御方法
(51)【国際特許分類】
G06F 11/14 20060101AFI20240304BHJP
G06F 3/08 20060101ALI20240304BHJP
G06F 3/06 20060101ALI20240304BHJP
【FI】
G06F11/14 641C
G06F11/14 658
G06F3/08 H
G06F3/06 304Z
(21)【出願番号】P 2020158382
(22)【出願日】2020-09-23
【審査請求日】2023-03-17
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】米澤 真司
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2018-073040(JP,A)
【文献】特開2005-242708(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/14
G06F 3/08
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
第1データを記憶するデータバッファを含むメモリコントローラと、
外部の主電源からの電力の供給が絶たれている場合に、前記不揮発性メモリ及び前記メモリコントローラに電力を供給するバックアップ電源と、を備え、
前記メモリコントローラは、
前記バックアップ電源から電力を供給されている場合に、前記第1データを前記不揮発性メモリに書き込むことなく、前記第1データを識別する情報を含む第2データを前記不揮発性メモリに書き込み、
前記主電源からの電力の供給が復旧した後、前記不揮発性メモリに記憶された前記情報を外部のホスト機器に送信する
ように構成されたメモリシステム。
【請求項2】
前記メモリコントローラは、前記主電源からの電力の供給が再開することに応じて、前記情報を前記ホスト機器に送信するように構成された、
請求項1記載のメモリシステム。
【請求項3】
前記メモリコントローラは、前記ホスト機器からの要求に応じて、前記情報を前記ホスト機器に送信するように構成された、
請求項1記載のメモリシステム。
【請求項4】
前記第1データは、前記不揮発性メモリへの書込みを前記ホスト機器から指示されたユーザデータである、
請求項1記載のメモリシステム。
【請求項5】
前記データバッファは、ユーザデータである第3データを更に記憶するように構成され、
前記メモリコントローラは、
前記バックアップ電源から電力を供給されている場合、前記第1データを前記不揮発性メモリに書き込むことなく、前記第2データ及び前記第3データを前記不揮発性メモリに書き込むように構成された、
請求項4記載のメモリシステム。
【請求項6】
前記第2データは、前記第1データと、前記データバッファ及び前記不揮発性メモリと、を管理するためのシステムデータである、
請求項1記載のメモリシステム。
【請求項7】
前記情報は、前記第1データを識別する第1アドレス情報と、前記第1データが記憶される記憶領域を識別する第2アドレス情報と、を含む
請求項1記載のメモリシステム。
【請求項8】
前記第2アドレス情報は、前記第1データが前記メモリシステム内の記憶領域に記憶されていないことを示す、
請求項7記載のメモリシステム。
【請求項9】
不揮発性メモリと、第1データを記憶するデータバッファを含むメモリコントローラと、外部の主電源からの電力の供給が絶たれている場合に、前記不揮発性メモリ及び前記メモリコントローラに電力を供給するバックアップ電源と、を備えたメモリシステムの制御方法であって、
前記バックアップ電源から電力を供給されている場合に、前記第1データを前記不揮発性メモリに書き込むことなく、前記第1データを識別する情報を含む第2データを前記不揮発性メモリに書き込みことと、
前記主電源からの電力の供給が復旧した後、前記不揮発性メモリに記憶された前記情報を外部のホスト機器に送信することと、
を備える、メモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステム及びメモリシステムの制御方法に関する。
【背景技術】
【0002】
データを不揮発に記憶することが可能な不揮発性メモリとしてのNANDフラッシュメモリと、NANDフラッシュメモリを制御するメモリコントローラと、を備えるメモリシステムが知られている。メモリシステムへの主電源からの電力の供給が絶たれることによるデータ喪失を防ぐため、バックアップ電源から電力が供給される間に、メモリコントローラ内部のデータをNANDフラッシュメモリへ退避させる技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
電源断に伴うデータ喪失を回避するメモリシステム及びメモリシステムの制御方法を提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、第1データを記憶するデータバッファを含むメモリコントローラと、外部の主電源からの電力の供給が絶たれている場合に、上記不揮発性メモリ及び上記メモリコントローラに電力を供給するバックアップ電源と、を備える。上記メモリコントローラは、上記バックアップ電源から電力を供給されている場合に、上記第1データを上記不揮発性メモリに書き込むことなく、上記第1データを識別する情報を含む第2データを上記不揮発性メモリに書き込み、上記主電源からの電力の供給が復旧した後、上記不揮発性メモリに記憶された上記情報を外部のホスト機器に送信するように構成される。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係るメモリシステムの構成を示すブロック図。
【
図2】実施形態に係るホスト機器及びメモリシステムの構成を示すブロック図。
【
図3】実施形態に係るメモリバスで用いられる信号の一例を示すブロック図。
【
図4】実施形態に係るメモリコントローラ内のユーザデータバッファの構成の一例を示すブロック図。
【
図5】実施形態に係るルックアップテーブルのデータ構造の一例を示す表。
【
図6】実施形態に係る喪失データ識別情報のデータ構造の一例を示す表。
【
図7】実施形態に係るメモリシステムにおける第1の動作の一例を示すフローチャート。
【
図8】実施形態に係るメモリシステムにおける第2の動作の一例を示すフローチャート。
【
図9】第1変形例に係るメモリシステムにおける第2の動作の一例を示すフローチャート。
【
図10】第2変形例に係るメモリシステムにおける第1の動作の一例を示すフローチャート。
【発明を実施するための形態】
【0007】
以下、実施形態につき図面を参照して説明する。説明に際し、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す実施形態は、技術的思想を例示するものである。実施形態は、構成部品の材質、形状、構造、配置等を特定するものではない。実施形態は、種々の変更を加えることができる。
【0008】
1.実施形態
1.1 構成
1.1.1 メモリシステムの冗長構成
まず、複数のメモリシステムによる冗長構成について、
図1を用いて説明する。
図1は、実施形態に係るメモリシステムの構成を示すブロック図である。
【0009】
図1に示すように、実施形態に係る情報処理システムは、ホスト機器5および複数のメモリシステム1(1A及び1B)を含む。ホスト機器5は、例えば、データセンターに設置されるサーバである。ホスト機器5には、複数のメモリシステム1(1A及び1B)が接続される。ホスト機器5に接続されるメモリシステムの数は3個以上であってもよい。メモリシステム1A及び1Bは、例えば、データセンターの記憶領域として機能するSSD(solid state drive)である。
【0010】
ホスト機器5は、メモリシステム1A及び1Bを用いてRAID(Redundant arrays of independent disks)を構築する。例えば、ホスト機器5は、メモリシステム1Aとメモリシステム1Bとに同一のデータを記憶させる。これにより、ホスト機器5は、メモリシステム1A及びメモリシステム1Bのいずれか一方に記憶されたデータが何らかの原因で喪失した場合に、他方に記憶されたデータを用いて、喪失したデータを復元できる。すなわち、ホスト機器5は、複数のメモリシステム1に記憶されたデータをバックアップ可能に構成される。
【0011】
以下、メモリシステム1Aの構成及び動作について詳述する。また、メモリシステム1Aにおいて喪失したデータを、メモリシステム1Bに記憶されたデータを用いて復元する処理を、「喪失データ復元処理」と呼ぶ。
【0012】
1.1.2 ホスト機器及びメモリシステムの構成
次に、ホスト機器5及びメモリシステム1Aの構成について、
図2を用いて説明する。
図2は、実施形態に係るホスト機器及びメモリシステムの構成を示すブロック図である。
【0013】
ホスト機器5は、主電源51を含んでいてもよい。主電源51は、電力をメモリシステム1Aに供給する。また、主電源51は、ホスト機器5とは別にメモリシステム1Aの外部に設けられていてもよい。
【0014】
メモリシステム1Aは、メモリコントローラ10、不揮発性メモリ20、及び電源制御回路30を含む。メモリシステム1Aは、2以上の不揮発性メモリ20を含んでいてもよい。
【0015】
メモリコントローラ10は、ホスト機器5から要求(コマンド)を受信し、受信した要求に基づいて不揮発性メモリ20を制御する。具体的には、例えば、メモリコントローラ10は、ホスト機器5から書込みを要求されたデータを不揮発性メモリ20に書き込む。また、メモリコントローラ10は、ホスト機器5から読出しを要求されたデータを不揮発性メモリ20から読み出してホスト機器5に送信する。
【0016】
不揮発性メモリ20は、不揮発にデータを記憶するメモリである。不揮発性メモリ20は、例えば、NAND型フラッシュメモリである。また、不揮発性メモリ20は、EEPROM(登録商標)(Electrically erasable programmable read only memory)であってもよい。不揮発性メモリ20は、喪失データ識別情報20aを記憶する。喪失データ識別情報20aの詳細については、後述する。
【0017】
電源制御回路30は、メモリコントローラ10及び不揮発性メモリ20に電力を供給する回路である。電源制御回路30は、主電源51から電力を供給されている間には、主電源51から電力をメモリコントローラ10及び不揮発性メモリ20に供給するように構成される。また、電源制御回路30は、主電源51からの電力の供給が絶たれた場合には、バックアップ電源31から電力をメモリコントローラ10及び不揮発性メモリ20に供給するように構成される。電源制御回路30は、メモリコントローラ10と同一基板上に設けられてもよいし、互いに異なる基板上に設けられてもよい。電源制御回路30は、バックアップ電源31を含む。バックアップ電源31は、例えば、電池及び/又はキャパシタである。バックアップ電源31は、電池及び/又はキャパシタの内部に予め蓄えられた所定量の電力に基づいて、電力をメモリコントローラ10及び不揮発性メモリ20に供給する機能を有する。
【0018】
次に、メモリコントローラ10の内部構成を説明する。メモリコントローラ10は、ホストインタフェース回路11、制御部12、ユーザデータバッファ13、システムデータバッファ14、及びメモリインタフェース回路15を含む。
【0019】
ホストインタフェース回路11は、メモリコントローラ10とホスト機器5との間の通信を司るハードウェアインタフェースである。ホストインタフェース回路11は、ホストバスを介してホスト機器5と接続される。ホストバスは、例えば、SDTMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はPCIe(Peripheral component interconnect express)等に準拠したバスである。
【0020】
制御部12は、メモリコントローラ10の全体を制御する回路である。制御部12は、例えば、ハードウェアとして、CPU(Central processing unit)等のプロセッサ、及びROM(Read only memory)を含む。
【0021】
ユーザデータバッファ13は、揮発性メモリである。ユーザデータバッファ13は、例えば、SRAM(Static random access memory)である。ユーザデータバッファ13は、ユーザデータを記憶する。ユーザデータは、不揮発性メモリ20に書き込まれるライトデータである。
【0022】
システムデータバッファ14は、揮発性メモリである。システムデータバッファ14は、例えば、DRAM(Dynamic random access memory)である。システムデータバッファ14は、システムデータを記憶する。システムデータは、ユーザデータ、ユーザデータを記憶する不揮発性メモリ20及びユーザデータバッファ13を管理するためのデータである。
【0023】
メモリインタフェース回路15は、メモリコントローラ10と不揮発性メモリ20との間の通信を司るハードウェアインタフェースである。メモリインタフェース回路15は、メモリバスBUSを介して不揮発性メモリ20と接続される。メモリバスBUSは、例えば、SDR(Single data rate)インタフェース、トグルDDR(Double data rate)インタフェース、又はONFI(Open NAND flash interface)等に準拠したバスである。
【0024】
次に、メモリコントローラ10と不揮発性メモリ20との間でやり取りされる信号の一例を説明する。
図3は、実施形態に係るメモリバスで用いられる信号の一例を示すブロック図である。
【0025】
メモリバスBUSで用いられる信号は、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディ・ビジー信号RBn、及び入出力信号I/Oを含む。なお、本明細書において、信号の名称の末尾のnは、末尾のnのない名称の信号の反転論理を示す。すなわち、信号の名称の末尾のnは、信号が“L(Low)”レベルの場合にアサートされていることを意味する。
【0026】
信号CEnは、不揮発性メモリ20をイネーブルにするための信号である。信号CEnは、“L”レベルでアサートされる。信号CLE及びALEは、不揮発性メモリ20への入力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ20に通知する信号である。信号WEnは、“L”レベルでアサートされる。信号WEnは、入力信号I/Oを不揮発性メモリ20に取り込ませるための信号である。信号REnは、“L”レベルでアサートされる。信号REnは、不揮発性メモリ20から出力信号I/Oを読み出すための信号である。信号WPnは、“L”レベルでアサートされる。信号WPnは、データの書き込み及び消去の禁止を不揮発性メモリ20に指示するための信号である。信号RBnは、不揮発性メモリ20がレディ状態であるか、それともビジー状態であるかを示す信号である。レディ状態は、不揮発性メモリ20がメモリコントローラ10からの命令を受信出来る状態である。ビジー状態は、不揮発性メモリ20がメモリコントローラ10からの命令を受信出来ない状態である。信号RBnは、“L”レベルがビジー状態を示す。入出力信号I/Oは、例えば8ビットの信号である。そして入出力信号I/Oは、メモリコントローラ10と不揮発性メモリ20との間で送受信されるデータの実体である。入出力信号I/Oは、コマンド、アドレス、並びにライトデータ及びリードデータ等のデータを含む。
【0027】
1.1.3 ユーザデータバッファ
次に、実施形態に係るユーザデータバッファ13の構成の一例について、
図4に示すブロック図を用いて説明する。
図4は、実施形態に係るメモリコントローラ内のユーザデータバッファの構成の一例を示すブロック図である。
【0028】
図4に示すように、ユーザデータバッファ13は、複数のストリームバッファSTBUF(STBUF0、STBUF1、STBUF2、…、STBUFn)を含み得る(nは3以上の整数)。
【0029】
複数のストリームバッファSTBUFは、ユーザデータバッファ13中の記憶領域である。なお、複数のストリームバッファSTBUFは、互いに異なる記憶領域が割り当てられていればよい。複数のストリームバッファSTBUFは、1つのユーザデータバッファの記憶領域上に混在していてもよい。また、複数のストリームバッファSTBUFは、複数のユーザデータバッファによって物理的に分けられていてもよい。複数のストリームバッファSTBUFの個数は、例えば、ホスト機器5からメモリコントローラ10に送信されるユーザデータの属性の数に等しい。
【0030】
ユーザデータの属性は、例えば、ユーザデータの更新頻度である。ユーザデータの属性は、ユーザデータの重要度(書込み優先度)であってもよい。ユーザデータの属性は、ユーザデータをいくつかの集合に分類するために使用される。ユーザデータの属性は、ホスト機器5によって任意の項目が設定され得る。例えば、ホスト機器5は、更新頻度が同程度のユーザデータを同じ属性に関連づけ、更新頻度が有意に異なるユーザデータ同士を互いに異なる属性に関連づける。
【0031】
1.1.4 ルックアップテーブル及び喪失データ識別情報
次に、実施形態に係るルックアップテーブル及び喪失データ識別情報のデータ構造について説明する。
【0032】
(ルックアップテーブル)
図5は、実施形態に係るルックアップテーブルのデータ構造の一例を示す表である。
【0033】
ルックアップテーブル14aは、あるユーザデータが、ユーザデータバッファ13又は不揮発性メモリ20内のどの記憶領域に記憶されているか、を特定する情報である。ルックアップテーブル14aは、システムデータの一例である。ルックアップテーブル14aには、複数のレコードが記憶される。
図5における1行が1つのレコードである。複数のレコードは、各々が論理アドレス及び物理アドレスの2つの要素を含む。論理アドレスは、ユーザデータを一意に識別するアドレス情報である。論理アドレスは、ホスト機器5によって指定される。物理アドレスは、ユーザデータバッファ13又は不揮発性メモリ20の記憶領域を一意に識別するアドレス情報である。物理アドレスは、メモリコントローラ10によって指定される。
【0034】
図5の例では、ルックアップテーブル14aは、論理アドレス“0”~“99”に対応するユーザデータがそれぞれ、メモリコントローラ10内の物理アドレス“RAM_ADDa”~“RAM_ADDxx”に対応する記憶領域に記憶されていることを示す。また、ルックアップテーブル14aは、論理アドレス“101”~“999”に対応するユーザデータがそれぞれ、不揮発性メモリ20内の物理アドレス“NAND_ADDa”~“NAND_ADDyy”に対応する記憶領域に記憶されていることを示す。
【0035】
以上のデータ構造を有するルックアップテーブル14aによって、メモリコントローラ10は、ホスト機器5から受信したユーザデータが、不揮発性メモリ20内のどの記憶領域に不揮発化されているか判断できる。また、メモリコントローラ10は、ユーザデータが不揮発化されていない場合には、メモリコントローラ10内のどの記憶領域に一時的に記憶されているか判断できる。
【0036】
(喪失データ識別情報)
図6は、実施形態に係る喪失データ識別情報のデータ構造の一例を示す表である。
【0037】
喪失データ識別情報20aには、例えば、メモリシステム1A内から喪失して正しく読み出せない“Unc(Uncorrectable)”状態であるユーザデータの論理アドレスが記憶される。
【0038】
図6の例では、喪失データ識別情報20aは、論理アドレス“0”~“99”に対応するユーザデータが、メモリシステム1Aから喪失して正しく読み出せなくなっていることを示す。
【0039】
以上のデータ構造を有する喪失データ識別情報20aによって、メモリコントローラ10は、どのユーザデータがメモリシステム1Aから喪失したか判断できる。
【0040】
1.2 電源断時データ保護動作
次に、実施形態に係るメモリシステムにおける電源断時データ保護動作について説明する。
【0041】
まず、
図7を用いて、バックアップ電源31によって電力が供給されている間の電源断時データ保護動作について説明する。
図7は、実施形態に係るメモリシステムにおける第1の動作の一例を示すフローチャートである。第1の動作は、電源断時データ保護動作のうち、バックアップ電源によって電力が供給されている間の動作である。
図7では、メモリシステム1Aへの主電源51からの電力の供給が絶たれる一方、メモリシステム1Bへの主電源51から電力の供給は継続される状況が想定される。このような状況は、メモリシステム1Aのユーザの不慮のオペレーションにより発生し得る。
【0042】
主電源51からの電力の供給が絶たれたことを検出すると(開始)、電源制御回路30は、バックアップ電源31からの電力の供給を開始する(S10)。これにより、メモリシステム1Aは、バックアップ電源31から電力を供給されている間動作できる。
【0043】
バックアップ電源31から電力が供給されていることを検出すると、メモリコントローラ10は、少なくとも一部のユーザデータを不揮発化させるか否かを判定する(S11)。例えば、バックアップ電源31によって不揮発化可能なデータ量に対するシステムデータのデータ量の割合が閾値未満である場合、メモリコントローラ10は、少なくとも一部のユーザデータを不揮発化させると判定する。バックアップ電源31によって不揮発化可能なデータ量に対するシステムデータのデータ量の割合が閾値以上である場合、メモリコントローラ10は、全てのユーザデータを不揮発化させないと判定する。閾値は、例えば、0以上1未満の値が設定される。
【0044】
少なくとも一部のユーザデータを不揮発化させる場合(S11;yes)、メモリコントローラ10は、不揮発化させるユーザデータの論理アドレスを特定する(S12)。例えば、メモリコントローラ10は、1または複数のストリームバッファSTBUFを選択する。そして、メモリコントローラ10は、選択したストリームバッファSTBUFに記憶されるユーザデータの論理アドレスを特定する。なお、メモリコントローラ10は、システムデータ及び不揮発化させるユーザデータのデータ量がバックアップ電源31によって不揮発化可能なデータ量を超えない範囲において、1または複数のストリームバッファSTBUFを選択する。また、メモリコントローラ10は、主電源51からの電力の供給が絶たれる前に、選択するストリームバッファSTBUFの順番を予め定めていてもよい。
【0045】
メモリコントローラ10は、不揮発化させるユーザデータの書込み先の物理アドレスを特定する(S13)。例えば、メモリコントローラ10は、不揮発性メモリ20内の記憶領域を選択する。そして、メモリコントローラ10は、選択した記憶領域の物理アドレスを特定する。
【0046】
メモリコントローラ10は、特定した論理アドレスと特定した物理アドレスに基づき、不揮発化させるユーザデータに関するルックアップテーブル14aを更新する(S14)。S14の処理の後はS15の処理に進む。
【0047】
全てのユーザデータを不揮発化させない場合(S11;no)、S15の処理に進む。この場合、メモリコントローラ10は、不揮発化させるユーザデータの論理アドレス及び物理アドレスの特定、並びに不揮発化させるユーザデータに関するルックアップテーブル14aの更新を行わない。
【0048】
メモリコントローラ10は、不揮発化させないユーザデータの論理アドレスをルックアップテーブル14aに基づいて特定する(S15)。
【0049】
メモリコントローラ10は、特定した不揮発化させないユーザデータの論理アドレスに基づき、喪失データ識別情報20aを生成する(S16)。そして、メモリコントローラ10は、生成した喪失データ識別情報20aをシステムデータとしてシステムデータバッファ14に記憶させる。
【0050】
次に、メモリコントローラ10は、書込みコマンドを発行する。そしてメモリコントローラ10は、発行した書込みコマンドを不揮発性メモリ20に送信する(S17)。書込みコマンドは、例えば、不揮発性メモリ20に対する書込み動作のコマンド、システムデータの物理アドレス、及びシステムデータバッファ14内の全てのシステムデータを含む。ユーザデータを不揮発化させる場合、書込みコマンドは、不揮発化させるユーザデータの物理アドレス、及び不揮発化させるユーザデータを更に含む。
【0051】
書込みコマンドを受信すると、不揮発性メモリ20は、システムデータの書込み動作を実行する(S18)。これにより、喪失データ識別情報20aが不揮発化される。S18の処理が終わると、
図7の一連の処理は終了となる(終了)。
【0052】
その後、バックアップ電源31からの電力の供給が絶たれると、メモリシステム1Aの動作は停止する。これにより、ユーザデータバッファ13に記憶されているユーザデータが失われる。
【0053】
次に、
図8を用いて、復旧した主電源51によって電力が供給されている間の電源断時データ保護動作について説明する。
図8は、実施形態に係るメモリシステムにおける第2の動作の一例を示すフローチャートである。第2の動作は、電源断時データ保護動作のうち、復旧した主電源によって電力が供給されている間の動作である。
【0054】
主電源51から電力が供給されると(開始)、メモリコントローラ10は、喪失データ識別情報20aを含むシステムデータを読み出す旨の読出しコマンドを発行する。そして、メモリコントローラ10は、読出しコマンドを不揮発性メモリ20に送信する(S20)。
【0055】
メモリコントローラ10から読出しコマンドを受信すると、不揮発性メモリ20は、喪失データ識別情報20aを含むシステムデータを読み出す(S21)。
【0056】
不揮発性メモリ20は、読み出した喪失データ識別情報20aをメモリコントローラ10に送信する(S22)。
【0057】
不揮発性メモリ20から喪失データ識別情報20aを受信すると、メモリコントローラ10は、喪失データ識別情報20aをシステムデータバッファ14に記憶させる(S23)。
【0058】
メモリコントローラ10は、システムデータバッファ14に記憶させた喪失データ識別情報20aを、ホスト機器5に送信する(S24)。
【0059】
メモリコントローラ10から喪失データ識別情報20aを受信すると、ホスト機器5は、メモリシステム1Aから喪失したユーザデータの論理アドレスを喪失データ識別情報20aに基づいて特定する(S25)。
【0060】
ホスト機器5は、特定した論理アドレスに対応するユーザデータをメモリシステム1Bから読み出す(S26)。
【0061】
ホスト機器5は、読み出したユーザデータをメモリシステム1Aに送信する(S27)。
【0062】
ホスト機器5からユーザデータを受信すると、メモリコントローラ10は、受信したユーザデータをユーザデータバッファ13に記憶させる(S28)。これにより、電源断によって喪失したユーザデータがメモリシステム1A内に復元される。以上により、電源断時データ保護動作が終了する(終了)。
【0063】
1.3 本実施形態に係る効果
実施形態によれば、メモリコントローラ10は、バックアップ電源31から電力を供給されている間に、喪失データ識別情報20aを含むシステムデータを不揮発性メモリ20に書き込む。これにより、主電源51の復旧後、メモリコントローラ10は、不揮発性メモリ20から喪失データ識別情報20aを読み出すことができ、どのユーザデータが失われたか判断することができる。
【0064】
また、メモリコントローラ10は、主電源51の復旧に応じて、不揮発性メモリ20から読み出した喪失データ識別情報20aをホスト機器5に送信する。これにより、ホスト機器5は、電源断によってメモリシステム1Aから失われたユーザデータの論理アドレスを特定することができる。このため、ホスト機器5は、メモリシステム1Bから、論理アドレスに対応するユーザデータを読み出すことができ、メモリシステム1Aから失われたユーザデータを復元することができる。したがって、電源断によってメモリシステム1Aから失われたユーザデータの特定ができなくなることを回避することができる。
【0065】
なお、バックアップ電源31が供給可能な電力量は、メモリシステム1Aが設けられる基板の面積による制約を受けるため、バックアップ電源31から電力が供給されている間に不揮発性メモリ20に記憶できるデータ量には、限りがある。一方、メモリシステム1Aは、ユーザデータの不揮発性メモリ20への書込み動作を実行するか否かを、ユーザデータの属性毎に判定する。このため、ユーザデータバッファ13内に記憶されるユーザデータのデータ量は、属性数に応じて増加し得る。つまり、属性数の増加に伴い、ユーザデータバッファ13内のユーザデータのデータ量が、バックアップ電源31から電力が供給されている間に不揮発化できるユーザデータのデータ量を上回る場合がある。
【0066】
実施形態によれば、メモリコントローラ10は、バックアップ電源31によって不揮発化させないユーザデータの論理アドレスを含む喪失データ識別情報20aを、不揮発性メモリ20に記憶させる。これにより、バックアップ電源31によって不揮発化できない量のユーザデータが記憶されている状態で電源断が発生しても、メモリシステム1Aは、どのユーザデータが失われたかを把握することができる。このため、属性数の多さに関わらず、ユーザデータをメモリシステム1A内に復元することができる。
【0067】
また、ユーザデータバッファ13内の全てのユーザデータが不揮発化できる程度に少ない場合においても、メモリコントローラ10は、不揮発化するデータ量を、全てのユーザデータを不揮発化する場合よりも少なくできる。このため、電源断時に使用される不揮発性メモリ20の容量を節約することができる。また、バックアップ電源31として、容量が小さい小型の電池又はキャパシタを用いることができる。
【0068】
また、メモリコントローラ10は、バックアップ電源31によってシステムデータを不揮発化しつつ、ユーザデータの一部を不揮発性メモリ20に記憶させる。これにより、電源断に伴うデータ喪失を回避しつつ、喪失するユーザデータのデータ量を低減することができる。
【0069】
2. 変形例等
なお、上述の実施形態は、種々の変形が可能である。以下では、実施形態と異なる構成及び動作について主に説明する。
【0070】
2.1 第1変形例
実施形態では、主電源51が復旧した後、メモリコントローラ10が自発的にホスト機器5に対して喪失データ識別情報20aを送信する場合について説明した。第1変形例では、メモリコントローラ10は、ホスト機器5からの喪失データの読出し要求に応じて、喪失データ識別情報20aを送信する。
【0071】
図9は、第1変形例に係るメモリシステムにおける第2の動作を示すフローチャートである。
【0072】
主電源51から電力が供給されると(開始)、メモリコントローラ10は、喪失データ識別情報20aを含むシステムデータを読み出す旨の読出しコマンドを発行する。そして、メモリコントローラ10は、発行した読出しコマンドを不揮発性メモリ20に送信する(S30)。
【0073】
メモリコントローラ10から読出しコマンドを受信すると、不揮発性メモリ20は、喪失データ識別情報20aを含むシステムデータを読み出す(S31)。
【0074】
不揮発性メモリ20は、読み出した喪失データ識別情報20aをメモリコントローラ10に送信する(S32)。
【0075】
不揮発性メモリ20から喪失データ識別情報を受信すると、メモリコントローラ10は、喪失データ識別情報20aをシステムデータバッファ14に記憶させる(S33)。
【0076】
S33の処理の後、メモリコントローラ10は、ホスト機器5から要求を受信するまで待機する(S34)。
【0077】
メモリコントローラ10は、ホスト機器5から受信した要求が喪失データ識別情報20aの送信要求であるか否かを判定する(S35)。なお、S35の処理において、メモリコントローラ10は、受信した要求がユーザデータの読み出し要求であるか否かを判定してもよい。読出し要求には、例えば、電源断によって喪失したユーザデータに対応する論理アドレスが含まれ得る。この場合、メモリコントローラ10は、読出し要求に含まれる論理アドレスが喪失データ識別情報20a内にあるか否かを判定する。読出し要求に含まれる論理アドレスが喪失データ識別情報20a内にある場合、メモリコントローラ10は、Unc情報をホスト機器5に送信してもよい。Unc情報は、ホスト機器5に要求されたユーザデータがメモリシステム1Aから喪失して正しく読み出せないことを示す。
【0078】
ホスト機器5から受信した要求が喪失データ識別情報20aの送信要求でない場合(S35;no)、メモリコントローラ10は、受信した要求に基づく動作を実行する(S36)。S36の処理の後はS34の処理に進む。
【0079】
ホスト機器5から受信した要求が喪失データ識別情報20aの送信要求である場合(S35;yes)、メモリコントローラ10は、システムデータバッファ14に記憶させた喪失データ識別情報20aをホスト機器5に送信する(S37)。
【0080】
メモリコントローラ10から喪失データ識別情報20aを受信すると、ホスト機器5は、受信した喪失データ識別情報20aに基づいて、論理アドレスを特定する(S38)。
【0081】
ホスト機器5は、特定した論理アドレスに対応するユーザデータをメモリシステム1Bから読み出す(S39)。
【0082】
ホスト機器5は、読み出したユーザデータをメモリシステム1Aに送信する(S40)。
【0083】
ユーザデータをホスト機器5から受信すると、メモリコントローラ10は、受信したユーザデータをユーザデータバッファ13に記憶させる(S41)。これにより、電源断によって喪失したユーザデータがメモリシステム1A内に復元される。以上により、電源断時データ保護動作が終了する(終了)。
【0084】
第1変形例によれば、メモリコントローラ10は、ユーザデータがメモリシステム1Aから喪失したことを、ホスト機器5からの要求に応じてホスト機器5に送信する。これにより、ホスト機器5が喪失したユーザデータの送信を要求しない場合、メモリコントローラ10は、ホスト機器5への喪失データ識別情報20aの送信を省略することができる。このため、ユーザデータの不要な復元処理を省略できる。したがって、ユーザデータの復元に関するメモリシステム1A及びホスト機器5の負荷を低減できる。
【0085】
2.2 第2変形例
また、上述の実施形態では、バックアップ電源31が電力を供給している間に、メモリシステム1Aが喪失データ識別情報20aを生成する場合について説明した。第2変形例では、メモリシステム1Aは、ルックアップテーブル14aを書き換えることによって、ルックアップテーブル14aに喪失データ識別情報20aとしての機能を持たせる。
【0086】
図10は、第2変形例に係るメモリシステムにおける第1の動作の一例を示すフローチャートである。
【0087】
主電源51からの電力の供給が絶たれたことを検出すると(開始)、電源制御回路30は、バックアップ電源31からの電力の供給を開始する(S50)。
【0088】
バックアップ電源31から電力が供給されていることを検出すると、メモリコントローラ10は、少なくとも一部のユーザデータを不揮発化させるか否かを判定する(S51)。
【0089】
少なくとも一部のユーザデータを不揮発化させる場合(S51;yes)、メモリコントローラ10は、不揮発化させるユーザデータの論理アドレスを特定する(S52)。
【0090】
メモリコントローラ10は、不揮発化させるユーザデータの書込み先の物理アドレスを特定する(S53)。
【0091】
メモリコントローラ10は、特定した論理アドレスと特定した物理アドレスに基づき、不揮発化させるユーザデータに関するルックアップテーブル14aを更新する(S54)。S54の処理の後はS55の処理に進む。
【0092】
全てのユーザデータを不揮発化させない場合(S51;no)、S55の処理に進む。この場合、メモリコントローラ10は、不揮発化させるユーザデータの論理アドレス及び物理アドレスの特定、並びに不揮発化させるユーザデータに関するルックアップテーブル14aの更新を行わない。
【0093】
メモリコントローラ10は、不揮発化させないユーザデータの論理アドレスをルックアップテーブル14aに基づいて特定する(S55)。
【0094】
メモリコントローラ10は、不揮発化させないユーザデータに関するルックアップテーブル14aを更新する(S56)。具体的には、メモリコントローラ10は、不揮発化させないユーザデータに対応する物理アドレスが“Unc”状態を示すように更新する。これにより、更新されたルックアップテーブル14aは、喪失データ識別情報20aとも見なすことができる。
【0095】
次に、メモリコントローラ10は、書込みコマンドを発行する。そして、メモリコントローラ10は、発行した書込みコマンドを不揮発性メモリ20に送信する(S57)。
【0096】
書込みコマンドを受信すると、不揮発性メモリ20は、システムデータの書込み動作を実行する(S58)。これにより、更新されたルックアップテーブル14aが不揮発化される。S58の処理が終わると、
図10の一連の処理は終了となる(終了)。
【0097】
第2変形例によれば、バックアップ電源31から電力が供給されていることを検出すると、メモリコントローラ10は、喪失データ識別情報20aの内容を含むようにルックアップテーブル14aを更新する。これにより、ルックアップテーブル14aとは異なる新たなテーブルを生成することなく、電源断によって喪失するユーザデータを管理することができる。
【0098】
2.3 その他
上述の実施形態では、一例として、ユーザデータバッファ13が複数のストリームバッファSTBUFを有する場合について説明した。しかしながら、ユーザデータバッファ13は、1つのストリームバッファSTBUFしか有していなくてもよい。つまり、メモリコントローラ10は、ユーザデータを不揮発性メモリ20へ書き込む際にユーザデータを属性毎に区別しないように構成されていてもよい。
【0099】
補足すると、バックアップ電源31によって不揮発化できるユーザデータ量を上回るユーザデータが1つのストリームバッファSTBUF内に記憶されている場合、上述の実施形態と同様、メモリシステム1Aは、ユーザデータを全て不揮発化することができない。このため、バックアップ電源31によって全てのユーザデータを不揮発化できないという課題は、ストリームバッファSTBUFの数に依らず顕在化し得る。
【0100】
ユーザデータバッファ13が1つのストリームバッファSTBUFしか有していない場合でも、バックアップ電源31から電力が供給されている間に、メモリコントローラ10は、喪失データ識別情報20aを不揮発化する。これにより、1つのストリームバッファSTBUF内のユーザデータ量がバックアップ電源31によって不揮発化できるユーザデータ量を上回っていても、ユーザデータをメモリシステム1A内に復元することができる。
【0101】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0102】
1,1A,1B…メモリシステム
5…ホスト機器
11…ホストインタフェース回路
12…制御部
13…ユーザデータバッファ
14…システムデータバッファ
15…メモリインタフェース回路
20…不揮発性メモリ
30…電源制御回路
31…バックアップ電源
51…主電源
14a…ルックアップテーブル
20a…喪失データ識別情報
BUS…メモリバス