(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-01
(45)【発行日】2023-12-11
(54)【発明の名称】メモリシステム及びその制御方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20231204BHJP
G06F 9/445 20180101ALI20231204BHJP
G06F 11/20 20060101ALI20231204BHJP
G06F 12/00 20060101ALI20231204BHJP
【FI】
G06F12/02 510A
G06F9/445 150
G06F11/20 658
G06F12/00 597U
G06F12/02 570A
(21)【出願番号】P 2020038803
(22)【出願日】2020-03-06
【審査請求日】2022-09-12
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】高梨 良寛
【審査官】北村 学
(56)【参考文献】
【文献】特開2018-025925(JP,A)
【文献】特表2008-511929(JP,A)
【文献】特表2007-518166(JP,A)
【文献】米国特許出願公開第2015/0242202(US,A1)
【文献】特開2002-222084(JP,A)
【文献】特開2008-257773(JP,A)
【文献】米国特許出願公開第2013/0117502(US,A1)
【文献】米国特許出願公開第2014/0344797(US,A1)
【文献】米国特許出願公開第2015/0199190(US,A1)
【文献】米国特許出願公開第2016/0070477(US,A1)
【文献】米国特許出願公開第2019/0087174(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/06 - 3/08
G06F 9/44 - 9/445
G06F 11/16 - 11/20
G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリを制御するコントローラと、を具備し、
前記不揮発性メモリは、
特定のソフトウェアを記憶可能である第1の領域と、
前記特定のソフトウェアを記憶し、前記第1の領域よりも
データを保護する性能が高い第2の領域と、を具備し、
前記コントローラは、
前記コントローラの起動時にロード可能な候補として複数のソフトウェアを前記第2の領域に記憶させ、
前記特定のソフトウェアを指定するコマンドを受信した場合に、
前記複数のソフトウェアの中から前記特定のソフトウェアを選択し、選択された前記特定のソフトウェアを前記第1の領域に記憶させ、
前記コントローラの起動時に、前記第1の領域に記憶されている前記特定のソフトウェアをロードする、メモリシステム。
【請求項2】
前記コントローラは、論理アドレスを物理アドレスに変換し、前記第2の領域に対して前記物理アドレスに基づいてアクセスを行う、請求項1のメモリシステム。
【請求項3】
前記コントローラは、前記第1の領域に対してウェアレベリングを実行せず、前記第2の領域に対してウェアレベリングを実行可能である、請求項1または請求項2のメモリシステム。
【請求項4】
前記コントローラは、前記第1の領域に対してガベージコレクションを実行せず、前記第2の領域に対してガベージコレクションを実行可能である、請求項1ないし請求項3のうちのいずれか1項のメモリシステム。
【請求項5】
前記コントローラは、NVMe(Non-Volatile Memory express)規格に準拠しており、
前記複数のソフトウェアのそれぞれは、前記第2の領域内の複数のスロットのそれぞれに記憶可能であり、
前記第1の領域は、アクティブスロットとして前記特定のソフトウェアを記憶可能である、
請求項1ないし請求項4のうちのいずれか1項のメモリシステム。
【請求項6】
前記第2の領域から読み出された前記特定のソフトウェアに誤りが発生する確率は、前記第1の領域から読み出された前記特定のソフトウェアに誤りが発生する確率より低い、請求項1ないし請求項5のうちのいずれか1項のメモリシステム。
【請求項7】
前記第2の領域から読み出された前記特定の
ソフトウェアのエラー訂正可能なビット数は、前記第1の領域から読み出された前記特定の
ソフトウェアのエラー訂正可能なビット数よりも多い、請求項1ないし請求項6のうちのいずれか1項のメモリシステム。
【請求項8】
前記コントローラは、前記第2の領域から読み出した前記特定のソフトウェアに対してエラー訂正を実行する、請求項7のメモリシステム。
【請求項9】
前記コントローラは、前記コントローラの起動時に、イニシャルプログラムローダを実行し、
前記イニシャルプログラムローダは、前記コントローラに実行されると、前記第1の領域から前記特定の
ソフトウェアを読み出す、請求項1ないし請求項8のうちのいずれか1項のメモリシステム。
【請求項10】
前記第1の領域は、前記不揮発性メモリの所定の位置に配置されており、
前記イニシャルプログラムローダは、前記所定の位置から前記特定
のソフトウェアを読み出す、請求項9のメモリシステム。
【請求項11】
前記コントローラは、ダウンロード・コマンドを受信した場合に、前記特定のソフトウェアを取得し、コミット・コマンドを受信した場合に、前記特定のソフトウェアを前記第2の領域に記憶させる、請求項1ないし請求項10のうちのいずれか1項のメモリシステム。
【請求項12】
前記コントローラは、前記特定のソフトウェアを多重化した状態で前記第1の領域に記憶させ、前記第1の領域から読み出した前記特定のソフトウェアにエラーが発生している場合に、前記第1の領域に多重化された状態で記憶されている他の特定の
ソフトウェアを読み出す、請求項1ないし請求項11のうちのいずれか1項のメモリシステム。
【請求項13】
前記第2の領域における前記特定のソフトウェアの多重化数は、前記第1の領域における前記特定のソフトウェアの多重化数よりも少ない、請求項12のメモリシステム。
【請求項14】
前記不揮発性メモリは、ユーザデータを記憶可能な第3の領域をさらに具備し、
前記第3の領域は、前記第1の領域よりも
データを保護する性能が高い、請求項1ないし請求項13のうちのいずれか1項のメモリシステム。
【請求項15】
第1の領域と、前記第1の領域よりも
データを保護する性能が高い第2の領域とを含む不揮発性メモリ
と、前記不揮発性メモリを制御するコントローラとを具備するメモリシステムの制御方法において、
前記コントローラは、
前記コントローラの起動時にロード可能な候補として複数のソフトウェアを前記第2の領域に記憶させ、
特定のソフトウェアを指定するコマンドを受信した場合に、
前記複数のソフトウェアの中から前記特定のソフトウェアを選択し、選択された前記特定のソフトウェアを前記第1の領域に記憶させ、
前記
コントローラの起動時に、前記第1の領域に記憶されている前記特定のソフトウェアをロード
させる、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステム及びその制御方法に関する。
【背景技術】
【0002】
メモリシステムの不揮発性メモリは、メモリシステムの起動時にロードされるソフトウェア(具体的には、ファームウェアのイメージ)を記憶する領域(記憶領域)と、ユーザデータを記憶する領域とを含む。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6218869号公報
【文献】特許第6265746号公報
【文献】米国特許第10007508号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本実施形態は、メモリシステムの起動時にロード可能であるソフトウェアの記憶領域を削減することを目的とする。
【課題を解決するための手段】
【0005】
本実施形態によれば、不揮発性メモリとコントローラとを含む。コントローラは、不揮発性メモリを制御する。不揮発性メモリは、特定のソフトウェアを記憶可能である第1の領域と、特定のソフトウェアを記憶し、第1の領域よりもデータを保護する性能が高い第2の領域とを含む。コントローラは、コントローラの起動時にロード可能な候補として複数のソフトウェアを第2の領域に記憶させ、特定のソフトウェアを指定するコマンドを受信した場合に、複数のソフトウェアの中から特定のソフトウェアを選択し、選択された特定のソフトウェアを第1の領域に記憶させ、コントローラの起動時に、第1の領域に記憶されている特定のソフトウェアをロードする。
【図面の簡単な説明】
【0006】
【
図1】本実施形態に係るメモリシステムの構成の一例を示すブロック図。
【
図2】本実施形態に係るコントローラのハードウェア構成の具体例を示すブロック図。
【
図3】本実施形態に係るコントローラの機能構成の具体例を示すブロック図。
【
図4】本実施形態に係るメモリシステムにおけるファームウェアの設定処理の一例を示すフローチャート。
【
図5】本実施形態に係るメモリシステムにおける起動時の処理の一例を示すフローチャート。
【
図6】比較例のメモリシステムにおけるファームウェアの記憶状態の一例を示すブロック図。
【発明を実施するための形態】
【0007】
以下、図面を参照して、本実施形態について具体的に説明する。なお、以下の説明において、実質的に同一の構成要素及び機能については、同一符号を付し、必要に応じて説明を行う。
【0008】
本実施形態においては、メモリシステムがNVMe(Non-Volatile Memory express)規格に準拠する場合を例として説明する。しかしながら、メモリシステムは、NVMe規格に準拠しない場合においても、同様の構成により同様の作用効果を得ることができる。また、メモリシステムは、NVMe規格とは異なる規格に準拠する場合においても、同様の構成により同様の作用効果を得ることができる。
【0009】
本実施形態においては、メモリシステムの起動時(例えばブート時)に、コントローラがファームウェアをロードする場合を例として説明する。言い換えれば、本実施形態においては、メモリシステムに備えられるコントローラの起動時に、コントローラがファームウェアをロードする場合を例として説明する。しかしながら、コントローラがメモリシステムの起動時にファームウェアではない他のソフトウェアをロードする場合においても、同様の構成により同様の作用効果を得ることができる。
【0010】
図1は、本実施形態に係るメモリシステム1の構成の一例を示すブロック図である。
図1は、ファームウェアFW1がアクティブである場合を例示している。
【0011】
メモリシステム1は、例えばSSD(Solid State Drive)である。メモリシステム1は、HDD(Hard Disk Drive)、USB(Universal Serial Bus)メモリ、メモリカード、ハードディスクドライブとSSDとを含むハイブリッド型ストレージシステム、光ディスクデバイスなど様々な種類のストレージデバイスであってもよい。メモリシステム1は、外部の情報処理装置2と通信可能に接続されている。
【0012】
メモリシステム1は、不揮発性メモリ3と、インタフェース部4と、コントローラ5とを備える。
【0013】
不揮発性メモリ3は、例えばNAND型フラッシュメモリである。不揮発性メモリ3は、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、PRAM(Phasechange Random Access Memory:相変化メモリ)、ReRAM(Resistive Random Access Memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory)など他の不揮発性半導体メモリでもよい。不揮発性メモリ3は、複数のメモリチップを含む。例えば、不揮発性メモリ3は、磁気メモリ、3次元構造の半導体メモリなどでもよい。不揮発性メモリ3に対するデータの読み出し及び記憶は、ページと呼ばれる単位で実行され得る。不揮発性メモリ3に対するデータのイレーズは、ブロックと呼ばれる単位で実行され得る。ブロックの1単位は、複数のページを含む。不揮発性メモリ3に対するデータの読み出し及び記憶は、複数のページ単位で実行されてもよい。不揮発性メモリ3に対するデータのイレーズは、複数のブロック単位で実行されてもよい。
【0014】
インタフェース部4は、各種のコマンドを受信し、受信した各種のコマンドをコントローラ5へ送信する。インタフェース部4は、ファームウェアを受信した場合に、受信したファームウェアをコントローラ5へ送信する。インタフェース部4は、コントローラ5の一部であってもよい。
【0015】
コントローラ5は、インタフェース部4経由でコマンドを受信した場合に、受信したコマンドに基づいて不揮発性メモリ3に対する制御を実行する。
【0016】
不揮発性メモリ3は、初期ロード領域6と、論理アドレス領域7と、拡張論理アドレス領域8とを含む。本実施形態において、論理アドレス領域7と拡張論理アドレス領域8とは、初期ロード領域6よりも信頼性が高い。本実施形態において、データを記憶する領域の信頼性が高いとは、データに誤りが発生する確率が低いことと、データの誤り訂正可能なビット数が多いこととのうちの少なくとも1つを意味する。また、領域の信頼性が高いとは、メモリセルの耐久性が高いことを意味してもよい。領域の信頼性が高いほど、この領域のデータを保護する性能が高いことを意味する。論理アドレス領域7および拡張論理アドレス領域8は、例えば、ECC(Error Correction Code)の付されたデータを記憶する。論理アドレス領域7および拡張論理アドレス領域8は、コントローラ1がメモリシステム1の起動時にアクセスできない領域であってもよい。
【0017】
初期ロード領域6は、メモリシステム1の起動時にロードすべき特定のファームウェアを記憶可能である領域である。初期ロード領域6は、アクティブスロットとして利用される。アクティブスロットは、メモリシステム1の起動時にロードされるファームウェアを記憶可能であるスロットである。初期ロード領域6は、不揮発性メモリ3の所定の位置(例えば固定ブロック)に配置されている。初期ロード領域6は、メモリシステム1の起動時にアクセス可能な領域である。初期ロード領域6は、論理アドレス領域7および拡張論理アドレス領域8よりも、信頼性が低い。初期ロード領域6は、例えば、コントローラ5によるウェアレベリングおよびガベージコレクションの対象外であるとする。初期ロード領域6は、多重化した状態のファームウェアFW1を記憶可能である。ここで、多重化とは、例えば、同じファームウェアを複数個記憶する方式をいう。多重化を採用することにより、コントローラ5は、複数個のファームウェアのうちのいくつかのファームウェアがリード不可となっても、他のファームウェアがリード可能であれば正常なファームウェアを取得することができる。また、多重化を採用することにより、コントローラ5は、複数個のファームウェアのうちのいくつかのファームウェアの一部分がリード不可となっても、複数個のファームウェアのうちのリード可能な他の一部分からファームウェアを修復することで、正常なファームウェアを取得することができる。
【0018】
論理アドレス領域7は、例えばユーザデータを記憶するユーザデータ領域である。論理アドレス領域7に対しては、ユーザの指示に基づくデータの読み出しを行うことができる。
【0019】
拡張論理アドレス領域8は、例えば、初期ロード領域6よりも、信頼性が高い領域である。拡張論理アドレス領域8は、例えば、論理アドレス領域7と同レベルの信頼性を持つ。拡張論理アドレス領域8は、コントローラ5などのシステムの制御に基づくアクセスのみ許可される領域であってもよい。拡張論理アドレス領域8は、例えばシステム領域と表記されてもよい。システム領域に対しては、ユーザの指示に基づくデータの読み出しを行うことはできない。拡張論理アドレス領域8は、複数のスロットSL1~SLnを備える。複数のスロットSL1~SLnのそれぞれは、初期ロード領域6に記憶可能である複数のファームウェアFW1~FWnのそれぞれを記憶する。複数のスロットSL1~SLnのそれぞれに記憶されている複数のファームウェアFW1~FWnは、メモリシステム1の起動時にロードされる対象となり得るファームウェアの候補である。複数のファームウェアFW1~FWnのうちのいずれか1つが、メモリシステム1の起動時にロード対象となるアクティブなファームウェアとして選択される。
【0020】
本実施形態において、拡張論理アドレス領域8に記憶されている複数のファームウェアFW1~FWnは、多重化されていないものとする。しかしながら、拡張論理アドレス領域8に記憶されている複数のファームウェアFW1~FWnのそれぞれは、論理アドレス領域7に記憶されているファームウェアFW1よりも少ない数で多重化されてもよい。
【0021】
本実施形態において、論理アドレスはLBA(Logical Block Address)であってもよい。論理アドレスに対応する物理アドレスは、PBA(Physical Block Address)であってもよい。この場合、コントローラ5は、アドレス変換データにしたがってLBAを当該LBAに対応するPBAに変換する。次に、コントローラ5は、当該PBAの示す位置に記憶されたデータの読み出しまたは当該PBAの示す位置へのデータの記憶が可能である。
【0022】
次に、コントローラ5のハードウェア構成について説明する。
図2は、本実施形態に係るコントローラ5のハードウェア構成の具体例を示すブロック図である。
【0023】
コントローラ5は、メモリ10、プロセッサ20、エラー訂正装置21、バッファメモリ11、リード/ライトコントローラ22を備える。なお、メモリ10およびバッファメモリ11は、コントローラ5と別の構成であってもよい。
【0024】
メモリ10は、例えばDRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などである。メモリ10は、例えばメインメモリとして使用される。メモリ10は、例えば、アドレス変換データ9を記憶する。アドレス変換データ9は、例えば、コントローラ5により不揮発性メモリ3から読み出され、メモリ10に記憶される。
【0025】
プロセッサ20は、例えば、メモリシステム1の起動後にメモリ10に記憶されたファームウェアFW1を実行し、エラー訂正装置21、メモリ10、バッファメモリ11、リード/ライトコントローラ22などを制御する。
【0026】
エラー訂正装置21は、インタフェース部4経由で受信したユーザデータに対して、ECCを付加する。また、エラー訂正装置21は、不揮発性メモリ3からリード/ライトコントローラ22経由で読み出されたデータに対してエラー訂正を実行する。
【0027】
バッファメモリ11は、例えば、ラッチ回路、レジスタ、DRAM、または、SRAMなどである。バッファメモリ11は、例えば、コントローラ5の複数の構成要素の間でデータをやり取りするために使用される。バッファメモリ11は、不揮発性メモリ3に記憶されるデータを一時的に記憶する。また、バッファメモリ11は、不揮発性メモリ3から読み出されたデータを一時的に記憶する。より具体的には、バッファメモリ11は、例えば、リード/ライトコントローラ22が不揮発性メモリ3から読み出したデータを記憶する。また、バッファメモリ11は、例えば、リード/ライトコントローラ22が不揮発性メモリ3へ記憶させるデータを記憶する。
【0028】
リード/ライトコントローラ22は、不揮発性メモリ3に対するデータの読み出しを制御する。また、リード/ライトコントローラ22は、不揮発性メモリ3に対するデータの記憶を制御する。さらに、リード/ライトコントローラ22は、不揮発性メモリ3に対するイレーズを制御する。具体的には、リード/ライトコントローラ22は、不揮発性メモリ3から読み出したデータをバッファメモリ11へ記憶させる。また、リード/ライトコントローラ22は、バッファメモリ11に記憶されているデータを不揮発性メモリ3へ記憶させる。
【0029】
次に、コントローラ5の機能構成について説明する。
図3は、本実施形態に係るコントローラ5の機能構成の具体例を示すブロック図である。
【0030】
コントローラ5は、ファームウェア受信機能12、登録機能13、設定機能14、アドレス変換機能15、エラー訂正機能16、ウェアレベリング機能17、ガベージコレクション機能18、IPL機能19を備える。ファームウェア受信機能12、登録機能13、設定機能14、アドレス変換機能15、エラー訂正機能16、ウェアレベリング機能17、ガベージコレクション機能18、IPL機能19のうちの少なくとも一部は、コントローラ5とは異なる別の構成要素により実現されてもよい。ファームウェア受信機能12、登録機能13、設定機能14、アドレス変換機能15、エラー訂正機能16、ウェアレベリング機能17、ガベージコレクション機能18、IPL機能19のうちの少なくとも一部は、例えば、電子回路により実現されてもよい。プロセッサ20が、ソフトウェアを実行することにより、ファームウェア受信機能12、登録機能13、設定機能14、アドレス変換機能15、エラー訂正機能16、ウェアレベリング機能17、ガベージコレクション機能18、IPL機能19のうちの少なくとも一部を実現してもよい。
【0031】
コントローラ5は、ファームウェア受信機能12により、情報処理装置2からインタフェース部4経由で、ファームウェア・イメージ・ダウンロード・コマンドを受信した場合に、情報処理装置2からインタフェース部4経由で、ファームウェアFW1を取得する。そして、コントローラ5は、ファームウェア受信機能12により、ファームウェアFW1をバッファメモリ11に記憶させる。
【0032】
コントローラ5は、登録機能13により、情報処理装置2からインタフェース部4経由で、第1のファームウェア・コミット・コマンドを受信した場合に、バッファメモリ11のファームウェアFW1を拡張論理アドレス領域8のスロットSL1へ記憶させる。これにより、ファームウェアFW1が、IPL機能19によりロード可能な1つの候補として登録される。
【0033】
コントローラ5は、設定機能14により、情報処理装置2からインタフェース部4経由で、第2のファームウェア・コミット・コマンドを受信した場合に、拡張論理アドレス領域8のスロットSL1に記憶されている特定のファームウェアFW1を読み出す。そして、コントローラ5は、設定機能14により、読み出した特定のファームウェアFW1を初期ロード領域6へ記憶させる。これにより、ファームウェアFW1が、メモリシステム1の起動時にIPL機能19によってロードされる対象として設定される。第2のファームウェア・コミット・コマンドは、言い換えると、アクティブにするファームウェアFW1を特定するコマンドである。
【0034】
コントローラ5は、アドレス変換機能15により、アドレス変換データ9にしたがって、LBAをPBAへ変換する。
【0035】
コントローラ5は、エラー訂正機能16により、不揮発性メモリ3の論理アドレス領域7および拡張論理アドレス領域8から読み出されたデータに対するエラー訂正を行う。エラー訂正機能16では、エラー訂正装置21を用いてエラー訂正が行われてもよい。コントローラ5は、エラー訂正機能16により、不揮発性メモリ3の初期ロード領域6から読み出されたファームウェアFW1にエラーが発生している場合に、初期ロード領域6に多重化された状態で記憶されている他のファームウェアFW1をリード/ライトコントローラ22経由で読み出す。これにより、コントローラ5は、正常なファームウェアFW1を取得可能である。
【0036】
コントローラ5は、ウェアレベリング機能17により、不揮発性メモリ3の論理アドレス領域7および拡張論理アドレス領域8における各ブロックの消耗度を平滑化する。
【0037】
コントローラ5は、ガベージコレクション機能18により、不揮発性メモリ3の論理アドレス領域7および拡張論理アドレス領域8の不要になった領域を解放する。
【0038】
コントローラ5は、IPL機能19により、コントローラ5の起動時に、初期ロード領域6に記憶されているファームウェアFW1を読み出し、メモリ10に記憶させる。コントローラ5(例えばプロセッサ20)は、コントローラ5の起動時にIPL(イニシャルプログラムローダ)を実行して、IPL機能19を実現する。IPLは、ソフトウェアである。IPLは、例えばコントローラ5に不揮発に記憶されている。または、IPLは、不揮発性メモリ3に不揮発に記憶されていてもよい。
【0039】
図4は、本実施形態に係るメモリシステム1におけるファームウェアFW1の設定処理の一例を示すフローチャートである。
【0040】
情報処理装置2からインタフェース部4経由で、ファームウェア・イメージ・ダウンロード・コマンドを受信すると(開始)、コントローラ5は、情報処理装置2からインタフェース部4経由で、ファームウェアFW1を取得する(S401)。コントローラ5は、取得したファームウェアFW1をバッファメモリ11に記憶させる(S402)。
【0041】
情報処理装置2からインタフェース部4経由で第1のファームウェア・コミット・コマンドを受信すると、コントローラ5は、バッファメモリ11に記憶されているファームウェアFW1を、不揮発性メモリ3の拡張論理アドレス領域8のスロットSL1へ記憶させる(S403)。
【0042】
情報処理装置2からインタフェース部4経由で第2のファームウェア・コミット・コマンドを受信すると、コントローラ5は、拡張論理アドレス領域8のスロットSL1~SLnに記憶されているファームウェアFW1~FWnのうち、第2のファームウェア・コミット・コマンドによって指定された特定のファームウェアFW1を読み出す(S404)。コントローラ5は、読み出した特定のファームウェアFW1を不揮発性メモリ3の初期ロード領域6へ記憶させる(S405)。そして、設定処理は終了する(終了)。
【0043】
図5は、本実施形態に係るメモリシステム1における起動時の処理の一例を示すフローチャートである。
【0044】
メモリシステム1が起動すると(開始)、コントローラ5は、IPL機能19により、初期ロード領域6のファームウェアFW1を読み出す(S501)。
【0045】
コントローラ5は、IPL機能19により、読み出したファームウェアFW1をメモリ10に記憶させる(S502)。
【0046】
コントローラ5は、メモリ10のファームウェアFW1を実行する(S503)。そして、起動時の処理は終了する(終了)。
【0047】
以上説明した本実施形態に係るメモリシステム1においては、例えば、ユーザデータを記憶する論理アドレス領域7と同レベルの信頼性を持つ拡張論理アドレス領域8の複数のスロットSL1~SLnのそれぞれに、複数のファームウェアFW1~FWnのそれぞれが記憶される。
【0048】
論理アドレス7と拡張論理アドレス領域8との信頼性は同レベルであるため、本実施形態においては、ユーザデータと同じレベルで、複数のファームウェアFW1~FWnを保護することができる。具体的には、本実施形態においては、論理アドレス7から読み出されたユーザデータと同じように、拡張論理アドレス領域8から読み出された複数のファームウェアFW1~FWnに対してエラー訂正を行うことができる。さらに、論理アドレス領域7と同じように、拡張論理アドレス領域8に対してウェアレベリングおよびガベージコレクションを実行することにより、メモリセルの耐久性を高くすることができる。このため、拡張論理アドレス領域8に記憶されるファームウェアFW1~FWnの多重化数を削減することができる。拡張論理アドレス領域8に記憶されるファームウェアFW1~FWnは、例えば、多重化されなくてもよい。このように拡張論理アドレス領域8に記憶されるファームウェアFW1~FWnの多重化数が削減されることにより、不揮発性メモリ3にファームウェアFW1~FWnを記憶するために必要になる領域のサイズを削減することができる。本実施形態においては、メモリシステム1においてサポートすべきスロットSL1~SLnの数が増加しても、不揮発性メモリ3に必要とされるブロックの数が増加することを抑制することができる。
【0049】
本実施形態において、初期ロード領域6の信頼性は、論理アドレス7と拡張論理アドレス領域8との信頼性よりも低い。しかしながら、コントローラ5は、ファームウェアFW1を多重化して初期ロード領域6に記憶することにより、正常なファームウェアFW1を読み出すことができる。
【0050】
本実施形態においては、IPL機能19によってメモリシステム1の起動時にロードされるファームウェアFW1のみが初期ロード領域6に記憶される。他のファームウェアFW2~FWnは、初期ロード領域6に記憶されない。コントローラ5は、IPL機能19により、固定のブロックである初期ロード領域6(アクティブスロットに相当)からファームウェアFW1をロードする。アクティブのファームウェアの切り替えは、第2のファームウェア・コミット・コマンドの実行時に、初期ロード領域6内に記憶されているファームウェアを書き替えることにより実現される。このため、コントローラ5は、IPL機能19により、複数のスロットSL1~SLnの中から起動時にアクティブスロットを選択する必要がない。
【0051】
したがって、本実施形態においては、IPLを簡略化することができる。
【0052】
以下において、本実施形態に係るメモリシステム1と比較例のメモリシステムとを対比し、本実施形態に係るメモリシステム1の有効性を説明する。
【0053】
図6は、比較例のメモリシステムにおけるファームウェアFW1~FWnの記憶状態の一例を示すブロック図である。
【0054】
比較例のメモリシステムは、例えば、NVMe規格に準拠する。比較例のメモリシステムは、例えば、不揮発性メモリ23を備えるSSDである。比較例のメモリシステムの不揮発性メモリ23は、固定ブロック24と、ユーザデータ領域25とを含む。複数のスロットSL1~SLnは、比較例のメモリシステムの起動時に、コントローラのIPL機能26により参照可能な固定ブロック24に用意されている。複数のスロットSL1~SLnのそれぞれには、複数のファームウェアFW1~FWnのそれぞれが記憶されている。各スロットSL1~SLn内のファームウェアFW1~FWnは、多重化されている。具体的には、スロットSL1内には、複数のファームウェアFW1が記憶されている。スロットSL2内には、複数のファームウェアFW2が記憶されている。スロットSLn内には、複数のファームウェアFWnが記憶されている。比較例のメモリシステムの起動時にロードされるアクティブなファームウェアを記憶するスロットは、コントローラのIPL機能26によりアクティブスロットとして選択される。アクティブスロットは、ファームウェア・コミット・コマンドで切り替え可能である。コントローラは、IPL機能26により、比較例のメモリシステムの起動時に、アクティブスロットを選択する。コントローラは、IPL機能26により、アクティブスロットのファームウェアを例えばDRAMなどのメモリへ記憶させる。
【0055】
ユーザデータ領域25は、LBAに基づいてアクセス可能な領域である。ユーザデータ領域25は、データを固定の位置に配置する必要はない。ユーザデータ領域25には、ウェアレベリングなどを適用可能である。
【0056】
比較例のメモリシステムにおけるスロットSL1~SLnは、固定ブロック24に用意されている。比較例のメモリシステムにおいて、スロットSL1~SLnの領域に対してウェアレベリング、エラー訂正、ガベージコレクションなどを適用することはできない。このような理由から、比較例のメモリシステムでは、上記のように、スロットSL1~SLnごとにファームウェアFW1~FWnを多重化することにより、ファームウェアFW1~FWnを保護している。あるいは、比較例のメモリシステムでは、MLC(Multiple Level Cell)形式、TLC(Trirple Level Cell)形式、または、QLC(Quadruple Level Cell)形式よりも信頼性の高いSLC(Single level cell)形式でスロットSL1~SLnにファームウェアFW1~FWnを記憶させることにより、ファームウェアFW1~FWnを保護している。
【0057】
このような比較例のメモリシステムにおける保護方法では、スロットSL1~SLnのサポート数の増加に伴って、スロットSL1~SLn用のブロックの増加が生じる。そして、比較例のメモリシステムでは、スロットSL1~SLn用のブロックが増加することにより、ユーザデータ領域25として使用可能なブロック数が減少する場合がある。また、コントローラは、IPL機能26によりアクティブスロットを選択可能である必要がある。
【0058】
これに対して、本実施形態に係るメモリシステム1は、複数のファームウェアFW1~FWnを含む複数のスロットSL1~SLnを備える。本実施形態において、複数のスロットSL1~SLnは、固定ブロック24ではなく、拡張論理アドレス領域8に備えられる。本実施形態においては、複数のファームウェアFW1~FWnのそれぞれが拡張論理アドレス領域8のスロットSL1~SLnのそれぞれに記憶される。不揮発性メモリ3の拡張論理アドレス領域8と論理アドレス領域7では、データが固定の位置に配置される必要がない。IPL機能19によりアクティブスロットとしてアクセス可能な初期ロード領域6は、メモリシステム1の起動時にロードされるべきファームウェアFW1を記憶可能である。初期ロード領域6は、メモリシステム1の起動時にロードされるべきファームウェアFW1ではない他のファームウェアFW2~FWnを記憶しない。コントローラ5は、複数のファームウェアFW1~FWnを記憶する拡張論理アドレス領域8に対して、ウェアレベリングとガベージコレクションとのうちの少なくとも1つを実行することができる。コントローラ5は、拡張論理アドレス領域8から読み出したファームウェアFW1~FWnに対してエラー訂正を実行することができる。
【0059】
このため、本実施形態に係るメモリシステム1においては、比較例のメモリシステムと比べて、ファームウェアFW1~FWnの多重化を抑制することができる。本実施形態に係るメモリシステム1においては、拡張論理アドレス領域8に対してMLC形式、TLC形式、QLC形式の記憶を適用することができる。このため、本実施形態に係るメモリシステム1においては、比較例のメモリシステムと比べて、SLC形式の記憶を適用する必要性を低減できる。したがって本実施形態に係るメモリシステム1においては、複数のファームウェアFW1~FWnを記憶するために必要な不揮発性メモリ3の領域を削減することができる。
【0060】
また、本実施形態に係るメモリシステム1においては、第2のファームウェア・コミット・コマンドを受信した場合に、拡張論理アドレス領域8の複数のスロットSL1~SLnのうち選択されたスロットの特定のファームウェアがアクティブスロットに相当する初期ロード領域6に記憶される。このように、選択されたスロットの特定のファームウェアが初期ロード領域6に記憶されることにより、アクティブのファームウェアの切り替えが行われる。そして、メモリシステム1の起動時には、コントローラ5は、IPL機能19により、初期ロード領域6に記憶されている特定のファームウェアFW1をコントローラ5にロードする。
【0061】
このため、本実施形態のIPL機能19においては、比較例のメモリシステムのIPL機能26のようにアクティブスロットを選択可能である必要はない。したがって、本実施形態においては、IPLを簡略化することができる。
【0062】
本実施形態においては、初期ロード領域6が拡張論理アドレス領域8よりも信頼性が高くない。しかしながら、初期ロード領域6においてファームウェアFW1を多重化した状態で記憶することにより、メモリシステム1の起動時に正常なファームウェアFW1をロードすることができる。
【0063】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0064】
1…メモリシステム
2…情報処理装置
3…不揮発性メモリ
4…インタフェース部
5…コントローラ
6…初期ロード領域
7…論理アドレス領域
8…拡張論理アドレス領域
9…アドレス変換データ
10…メモリ
11…バッファメモリ
12…ファームウェア受信機能
13…登録機能
14…設定機能
15…アドレス変換機能
16…エラー訂正機能
17…ウェアレベリング機能
18…ガベージコレクション機能
19…IPL機能
SL1~SLn…スロット
FW1~FWn…ファームウェア
20…プロセッサ
21…エラー訂正装置
22…リード/ライトコントローラ