IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特許-記憶装置及び記憶方法 図1
  • 特許-記憶装置及び記憶方法 図2
  • 特許-記憶装置及び記憶方法 図3
  • 特許-記憶装置及び記憶方法 図4A
  • 特許-記憶装置及び記憶方法 図4B
  • 特許-記憶装置及び記憶方法 図5
  • 特許-記憶装置及び記憶方法 図6
  • 特許-記憶装置及び記憶方法 図7
  • 特許-記憶装置及び記憶方法 図8
  • 特許-記憶装置及び記憶方法 図9
  • 特許-記憶装置及び記憶方法 図10A
  • 特許-記憶装置及び記憶方法 図10B
  • 特許-記憶装置及び記憶方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】記憶装置及び記憶方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20231225BHJP
【FI】
G06F12/02 570A
G06F12/02 510A
【請求項の数】 16
(21)【出願番号】P 2020050893
(22)【出願日】2020-03-23
(65)【公開番号】P2021149768
(43)【公開日】2021-09-27
【審査請求日】2022-09-12
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】長岡 亜季則
(72)【発明者】
【氏名】田所 三徳
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2013-152676(JP,A)
【文献】米国特許出願公開第2019/0163620(US,A1)
【文献】特表2014-523032(JP,A)
【文献】特開2014-238769(JP,A)
【文献】特開2016-224708(JP,A)
【文献】特開2001-142774(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
揮発性メモリと、
複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて前記不揮発性メモリにアクセスするコントローラと、
を具備する記憶装置であって、
前記不揮発性メモリに書き込まれるデータと前記揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして前記不揮発性メモリと前記揮発性メモリに書き込まれ、
前記アドレス変換テーブルの所定数の前記エントリはリージョンを構成し、
前記アドレス変換テーブルは、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で前記不揮発性メモリに記憶され、
前記アドレス変換テーブルの少なくとも一部は、前記第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレスと一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で前記揮発性メモリにも記憶される記憶装置。
【請求項2】
前記コントローラは、
前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信し、
前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記揮発性メモリから前記不揮発性メモリへ前記第2状態で送信する請求項1記載の記憶装置。
【請求項3】
前記コントローラは、
前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信された前記少なくとも一つのリージョンに関する前記データを含む前記符号化フレームを前記第1状態で前記揮発性メモリに書き込む請求項2記載の記憶装置。
【請求項4】
前記コントローラは、
第1論理アドレスを含むライトコマンドを受信すると、前記第1論理アドレスを前記不揮発性メモリの第1物理アドレスに対応させ、前記第1論理アドレスと前記第1物理アドレスが対応することを示す前記アドレス変換テーブルの第1リージョンに関するデータを生成し、
生成した前記データを符号化して得られた前記第1リージョンに関する第1符号化フレームを前記揮発性メモリの第1領域に前記第1状態で書き込む、又は前記第1符号化フレームを前記揮発性メモリの第2領域に前記第2状態で書き込み、前記第2状態で書き込まれた前記第1リージョンに関する前記第1符号化フレームを前記揮発性メモリの前記第1領域に前記第1状態で書き込む請求項1記載の記憶装置。
【請求項5】
前記コントローラは、
前記第1符号化フレームを前記揮発性メモリから読み出し、
読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する前記データを取り出し
取り出した前記データを符号化して得られた前記第1リージョンに関する第2符号化フレームを前記第2状態で前記不揮発性メモリに送信する請求項4記載の記憶装置。
【請求項6】
前記コントローラは、
前記不揮発性メモリから第1リージョンに関する第1符号化フレームを読み出し、
読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する第1データを取り出し
前記揮発性メモリから第2リージョンに関する第2符号化フレームを読み出し、
読み出した前記第2符号化フレームを復号し、前記第2リージョンに関する第2データを取り出し
取り出した前記第1データと前記第2データを符号化して得られた前記第1リージョンに関する第3符号化フレームを前記揮発性メモリへ前記第2状態で送信する請求項1記載の記憶装置。
【請求項7】
前記コントローラは、
前記揮発性メモリへ前記第2状態で送信された前記第3符号化フレームを前記第1状態で前記揮発性メモリに書き込む請求項6記載の記憶装置。
【請求項8】
一つのリージョンに関するデータのサイズは一つの符号化フレームのサイズより大きい請求項1乃至請求項7のいずれか一項記載の記憶装置。
【請求項9】
不揮発性メモリと、
揮発性メモリと、
複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて前記不揮発性メモリにアクセスするコントローラと、
を具備し、
前記不揮発性メモリに書き込まれるデータと前記揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして前記不揮発性メモリと前記揮発性メモリに書き込まれ、
前記アドレス変換テーブルの所定数の前記エントリはリージョンを構成する記憶装置の記憶方法であって、
前記アドレス変換テーブルを、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で前記不揮発性メモリに記憶することと、
前記アドレス変換テーブルの少なくとも一部を、前記第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレス一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で前記揮発性メモリにも記憶することと、
を具備する記憶方法。
【請求項10】
前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信することと、
前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記揮発性メモリから前記不揮発性メモリへ前記第2状態で送信することと、
をさらに具備する請求項9記載の記憶方法。
【請求項11】
前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信された前記少なくとも一つのリージョンに関する前記データを含む前記符号化フレームを前記第1状態で前記揮発性メモリに書き込むことをさらに具備する請求項10記載の記憶方法。
【請求項12】
第1論理アドレスを含むライトコマンドを受信すると、前記第1論理アドレスを前記不揮発性メモリの第1物理アドレスに対応させ、前記第1論理アドレスと前記第1物理アドレスが対応することを示す前記アドレス変換テーブルの第1リージョンに関するデータを生成することと、
生成した前記データを符号化して得られた前記第1リージョンに関する第1符号化フレームを前記揮発性メモリの第1領域に前記第1状態で書き込む、又は前記第1符号化フレームを前記揮発性メモリの第2領域に前記第2状態で書き込み、前記第2状態で書き込まれた前記第1リージョンに関する前記第1符号化フレームを前記揮発性メモリの前記第1領域に前記第1状態で書き込むことと、
をさらに具備する請求項9記載の記憶方法。
【請求項13】
前記第1符号化フレームを前記揮発性メモリから読み出すことと、
読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する前記データを取り出すことと、
取り出した前記データを符号化して得られた前記第1リージョンに関する第2符号化フレームを前記第2状態で前記不揮発性メモリへ送信することと、
をさらに具備する請求項12記載の記憶方法。
【請求項14】
前記不揮発性メモリから第1リージョンに関する第1符号化フレームを読み出すことと、
読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する第1データを取り出すことと、
前記揮発性メモリから第2リージョンに関する第2符号化フレームを読み出すことと、
読み出した前記第2符号化フレームを復号し、前記第2リージョンに関する第2データを取り出すことと、
取り出した前記第1データと前記第2データを符号化して得られた前記第1リージョンに関する第3符号化フレームを前記揮発性メモリへ前記第2状態で送信することと、
をさらに具備する請求項9記載の記憶方法。
【請求項15】
前記揮発性メモリへ前記第2状態で送信された前記第3符号化フレームを前記第1状態で前記揮発性メモリに書き込むことをさらに具備する請求項14記載の記憶方法。
【請求項16】
一つのリージョンに関するデータのサイズは一つの符号フレームのサイズより大きい請求項9乃至請求項15のいずれか一項記載の記憶方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は不揮発性メモリを備える記憶装置及び記憶方法に関する。
【背景技術】
【0002】
記憶装置の外部の情報処理装置であるホストは、記憶装置のデータの記憶位置を、論理アドレスで指す。記憶装置は、論理アドレスと記憶装置が備える不揮発性メモリの物理アドレスとの対応を示すアドレス変換テーブル(ルックアップテーブル、LUTとも称される)を作成する。
【0003】
アドレス変換テーブルは、不揮発性メモリに記憶されている。ただし、アドレス変換テーブルの少なくとも一部は、不揮発性メモリから読み出し速度がより速い揮発性メモリに複製されることがある。ホストから指定される論理アドレスが揮発性メモリに記憶されているアドレス変換テーブルに含まれていれば、アドレス変換テーブルがより高速に参照される。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願公開第2011/0131374号明細書
【文献】米国特許第7653779号明細書
【文献】特開2012-94132号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
揮発性メモリがアドレス変換テーブルを記憶すると、アドレス変換以外の用途に使用できる揮発性メモリの容量が減少する課題がある。
【0006】
本発明の目的は、揮発性メモリが記憶するアドレス変換テーブルのサイズを削減することができる記憶装置及び記憶方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態に係る記憶装置は、不揮発性メモリと、揮発性メモリと、複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて不揮発性メモリにアクセスするコントローラを具備する。不揮発性メモリに書き込まれるデータと揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして不揮発性メモリと揮発性メモリに書き込まれる。アドレス変換テーブルの所定数のエントリはリージョンを構成する。アドレス変換テーブルは、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で不揮発性メモリに記憶される。アドレス変換テーブルの少なくとも一部は、第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレスと一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で揮発性メモリにも記憶される。
【図面の簡単な説明】
【0008】
図1】実施形態に係る情報処理システムの構成の一例を示すブロック図である。
図2】実施形態に係るアドレス変換テーブルの一例を示す図である。
図3】実施形態に係るECCフレームのデータ構造の一例を示す図である。
図4A】実施形態に係るライト処理の一例を示すフローチャートである。
図4B】実施形態に係るライト処理の一例を示すフローチャートである。
図5】(a)本願の実施形態に係るLUTキャッシュ26cの第1状態のデータ配置を示す図である。(b)本願の実施形態に係るLUTキャッシュ26cの第2状態のデータ配置を示す図である。(c)本願の実施形態に係るLUTキャッシュ26cの第3状態のデータ配置を示す図である。
図6】(a)実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第4状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第5状態のデータ配置を示す図である。(c)実施形態に係るアドレス変換テーブルの不揮発化処理における不揮発性メモリ24のLUTエリアの第6状態のデータ配置を示す図である。
図7】実施形態に係るアドレス変換テーブルの不揮発化処理の一例を示すフローチャートである。
図8】(a)実施形態に係るアドレス変換テーブルの展開処理における不揮発性メモリ24のLUTエリアの第7状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第8状態のデータ配置を示す図である。(c)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第9状態のデータ配置を示す図である。
図9】(a)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第10状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第11状態のデータ配置を示す図である。
図10A】実施形態に係るアドレス変換テーブルの展開処理の一例を示すフローチャートである。
図10B】実施形態に係るアドレス変換テーブルの展開処理の一例を示すフローチャートである。
図11】実施形態によるアドレス変換テーブルの記憶方式の効果を示すために、実施形態による方式と他の方式において揮発性メモリが記憶するアドレス変換テーブルのサイズを比較する図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。一つの要素に複数の呼称を付す場合がある。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
【0010】
図1は、本発明の実施形態に係る情報処理システムの構成の一例を示すブロック図である。情報処理システム1は、ホストデバイス(以下、ホストと称する)10と記憶装置20とを含む。
【0011】
ホスト10は、記憶装置20にアクセスする外部の情報処理装置である。
【0012】
記憶装置20は、コントローラ22、不揮発性メモリ24、揮発性メモリ26等を備える。
【0013】
コントローラ22は、不揮発性メモリ24、揮発性メモリ26の動作を制御する。コントローラ22は、System-on-chip(SoC)のような回路によって実現され得る。
【0014】
不揮発性メモリ24は、データを記憶する。不揮発性メモリ24は電力が供給されなくても記憶したデータを保持できる。不揮発性メモリ24は、二次元構造のNAND型のフラッシュメモリであってもよいし、三次元構造のNAND型のフラッシュメモリであってもよい。不揮発性メモリ24としては、NAND型のフラッシュメモリに限らず、NOR型のフラッシュメモリや他の不揮発性半導体メモリが用いられてもよい。
【0015】
揮発性メモリ26もデータを記憶する。揮発性メモリ26は、電力が供給されないと記憶したデータを保持できない。揮発性メモリ26は、例えばDDR3L(Double Data Rate 3 Low voltage)規格のDRAM(Dynamic Random Access Memory)である。揮発性メモリ26は、コントローラ22の内部に設けてもよい。その場合、揮発性メモリ26としてSRAM(Static Random Access Memory)を用いてもよい。また、ホスト10に備えられているメインメモリとしてのDRAMの一部をホストメモリバッファ(Host Memory Buffer: HMB)として揮発性メモリ26の代わりに利用してもよい。
【0016】
次に、不揮発性メモリ24の詳細な構成を説明する。不揮発性メモリ24のメモリセルアレイは、複数のブロックB0~Bm-1を含む。ブロックB0~Bm-1の各々は複数のページ(ここではページP0~Pn-1)を含む。ブロックB0~Bm-1は、データ消去の処理単位として機能する。ブロックは、消去ブロック又は物理ブロックと称されることもある。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込みとデータ読み出しの処理単位である。ページの代わりにワード線をデータ書き込みとデータ読み出しの処理単位としてもよい。
【0017】
ブロックB0~Bm-1の各々に対して許容できるプログラムおよび消去の回数(以下P/Eサイクルと称される)の最大値は限られている。あるブロックの1回のP/Eサイクルは、このブロックの全てのメモリセルを消去状態にするためのデータ消去とこのブロックのページそれぞれにデータを書き込むプログラムを含む。
【0018】
次に、揮発性メモリ26の詳細な構成を説明する。揮発性メモリ26は、ライトバッファ26a、リードバッファ26b、ルックアップテーブルキャッシュ(LUTキャッシュ)26c、及び一時領域26dを備える。ライトバッファ26aは、不揮発性メモリ24に書き込むデータを一時的に記憶する。リードバッファ26bは、不揮発性メモリ24から読み出されたデータを一時的に記憶する。LUTキャッシュ26cは、論理アドレスと物理アドレスとの対応を示すアドレス変換テーブル(ルックアップテーブル、LUTとも称される)の少なくとも一部のデータ(コピー)を記憶する。一時領域26dは、LUTの更新等の際、作業中のLUTのデータを一時的に記憶する。
【0019】
論理アドレスは、ホスト10が、情報処理システム1におけるデータの記憶位置を論理的に指すアドレスである。論理アドレスの例としては、論理ブロックアドレス(LBA)がある。物理アドレスは、不揮発性メモリ24における物理的なデータの記憶位置を指すアドレスである。論理アドレスから対応した物理アドレスを求めることはアドレス変換又はアドレス解決と称される。
【0020】
次に、アドレス変換テーブル(LUT)について、詳細に説明する。図2は、実施形態に係るアドレス変換テーブルの一例を示す図である。LUTは、複数の論理アドレスと不揮発性メモリ24の複数の物理アドレスそれぞれの間の対応表である。LUTの最小構成単位をエントリと呼ぶ。エントリは論理アドレスそれぞれに対応しており、論理アドレスに対応する物理アドレスが各エントリに記憶される。LUTは不揮発性メモリ24に記憶される。LUTのサイズは、不揮発性メモリ24の記憶容量の約1/1000程度である。LUTは複数のエントリから構成されるリージョンと呼ばれる単位で管理される。例えば128エントリが1リージョンを構成する。図2は、リージョン内にエントリが論理アドレスの順番(例えば、昇順)に配置される例を示すが、リージョン内のエントリの配置はこれに限らず、任意である。
【0021】
不揮発性メモリ24とLUTキャッシュ26cとの間で転送されるLUTは、エントリ単位ではなく、リージョン単位である。エントリへのアクセスは、リージョンの先頭からの距離を表す値(オフセット)に基づいて行われる。コントローラ22は、LUTの少なくとも一部分を不揮発性メモリ24からLUTキャッシュ26cに複製する。複製処理は展開処理、揮発化処理とも称される。複製するLUTは、少なくとも一つのリージョンによって構成されている。LUTキャッシュ26cのサイズは不揮発性メモリ24に記憶されているLUTの全てのエントリを記憶できるようなサイズでもよいし、不揮発性メモリ24に記憶されているLUTの一部分のエントリしか記憶できないようなサイズでもよい。後者の場合、コントローラ22は、複製するLUTを、アクセスされる頻度が高いと予想される物理アドレスが含まれるように選択してもよい。LUTキャッシュ26cに複製されたLUTを、複製LUTと称する。
【0022】
コントローラ22は、アクセスする論理アドレスが複製LUTに含まれている場合は、複製LUTを用いてアドレス変換する。コントローラ22は、アクセスする論理アドレスが複製LUTに含まれていない場合は、LUTの中のアクセスする論理アドレスを含むリージョンを複製LUTとして不揮発性メモリ24から揮発性メモリ26に複製する。そして、コントローラ22は、複製LUTを用いてアドレス変換する。
【0023】
なお、複製LUTは不揮発性メモリ24へのデータの書き込みによって更新されることもある。複製LUTが更新されると、更新後の複製LUTのコピーが不揮発性メモリ24に書き込まれる。これにより、不揮発性メモリ24に記憶されているLUTも更新される。
【0024】
不揮発性メモリ24の一つのページへのデータの書き込みは、一つのP/Eサイクル当たり一回のみ可能である。このため、コントローラ22は、或る論理アドレスに対応するデータを更新する際、更新データを、更新前のデータを格納する物理アドレスではなく、別の物理アドレスに書き込む。そして、コントローラ22は、LUTにおいて別の物理アドレスのエントリに或る論理アドレスを対応付けると共に、更新前のデータのエントリを無効化する。不揮発性メモリ24にデータを書き込む際、コントローラ22は、ブロック毎のP/E回数ができるだけ均等になるように、論理アドレスと物理アドレスの対応関係を調整する。
【0025】
LUTから参照されているデータ(すなわち論理アドレスに対して関連付けされている最新のデータ)は有効データと称される。また、どの論理アドレスとも関連付けされていないデータは無効データと称される。有効データは、後にホスト10からリードされる可能性があるデータである。無効データは、ホスト10からリードされる可能性が無いデータである。
【0026】
次に、コントローラ22の詳細な構成を説明する。コントローラ22は、CPU32、ホストインタフェース(ホスト I/F)34、NANDインタフェース(NAND I/F)36、DRAMインタフェース(DRAM I/F)38、誤り訂正符号(ECC)エンコーダ/デコーダ40等を備える。CPU32、ホスト I/F34、NAND I/F36、DRAM I/F38、ECCエンコーダ/デコーダ40はバスライン42に接続される。
【0027】
CPU32は、不揮発性メモリ24に記憶されているファームウェアと協働して、不揮発性メモリ24のリードコマンド、ライトコマンド等のホスト10からの様々なコマンドを処理するためのコマンド処理等を実行することができる。そのため、CPU32は、リード制御部32a、ライト制御部32b、LUT制御部32c等の機能部として動作する。リード制御部32aは不揮発性メモリ24からのデータの読み出しを制御する。ライト制御部32bは不揮発性メモリ24へのデータの書き込みを制御する。LUT制御部32cはLUTの作成、更新、不揮発化、展開等を制御する。リード制御部32a、ライト制御部32b、LUT制御部32c等の機能部の一部又は全部は、コントローラ22の内部の専用ハードウェアによって実現されてもよい。
【0028】
ホスト I/F34は、ホスト10とコントローラ22とを通信可能に接続する。ホスト I/F34としては、様々な規格が使用され得る。例えばSmall Computer System Interface(SCSI)(登録商標)、PCI Express(登録商標)(PCIe(登録商標)とも称する)、Serial Attached SCSI(SAS)(登録商標)、Serial Advanced Technology Attachment(SATA)(登録商標)、Non Volatile Memory Express(NVMe(登録商標))、Universal Serial Bus(USB)(登録商標)、Universal Asynchronous Receiver/Transmitter(UART)(登録商標)、Ethernet(登録商標)、Fibre channel等の規格がホスト I/F34として使用され得る。
【0029】
NAND I/F36は、コントローラ22と不揮発性メモリ24とを通信可能に接続する。NAND I/F36としては、Toggle DDR、Open NAND Flash Interface(ONFI)等が使用され得る。NAND I/F36は、複数のチャンネルChを介して、不揮発性メモリ24の複数のチップにそれぞれ接続されていてもよい。
【0030】
DRAM I/F38は、コントローラ22と揮発性メモリ26とを通信可能に接続する。
【0031】
ECCエンコーダ/デコーダ40は、不揮発性メモリ24に記憶されるデータまたは揮発性メモリ26に記憶されるデータに対して誤り訂正符号(ECC)データを生成し、記憶されるデータとECCデータとからECCフレームを構成する。この動作を、符号化(エンコード)という。ECCエンコーダ/デコーダ40は、ECCフレームを不揮発性メモリ24又は揮発性メモリ26に記憶させる。また、ECCエンコーダ/デコーダ40は、不揮発性メモリ24又は揮発性メモリ26から読み出されたECCフレームの誤りを訂正し、記憶されているデータを取り出す。この動作を、復号(デコード)という。ECCエンコーダ/デコーダ40によって符号化されるデータの一例としては、LUTやユーザデータがある。LUTについてのECCフレームとユーザデータについてのECCフレームとはサイズが異なることがある。ECCデータの例は、ハミング符号、BCH符号等がある。
【0032】
ここで、LUTに関するECCフレームのデータ配置の一例を説明する。図3は実施形態に係るECCフレームのデータ配置の一例を示す図である。一つのECCフレームは、例えば一つのリージョンの一部分のデータ(リージョンデータ)とECCデータとから構成される。図3では、ECCデータはリージョンデータの後尾に配置されているが、ECCデータはECCフレーム内のどこに配置されてもよい。たとえば、先頭でも中間でもよい。さらに、ECCデータは一カ所に纏めて配置されず、ECCフレーム内に分散して配置されてもよい。ECCフレームのサイズとリージョンのサイズには制限がない。例えば、ECCフレームのサイズは8バイト、リージョンのサイズは128バイト、としてもよい。この場合、一つのリージョンは複数のECCフレームに分割して記憶される。また、一つのECCフレーム内に空き領域ができる場合もある。
【0033】
以上のように構成された記憶装置20のライト処理の一例を図4A図4Bに示すフローチャートを参照して説明する。図4A図4Bは、ホスト10からライトコマンドを受信したCPU32の動作を示す。ライトコマンドは、ユーザデータと論理アドレスを含む。
【0034】
ライトコマンドを受信すると(スタート)、CPU32は、ライトコマンドから論理アドレスを取り出す(S20)。論理アドレスを取り出した後、CPU32は、ライトコマンドからユーザデータを取り出す(S22)。ユーザデータを取り出した後、CPU32は、ライト制御部32bを使って、取り出したユーザデータを不揮発性メモリ24に書き込む(S24)。不揮発性メモリ24は、書き込みの順番が決まっている。例えば、物理アドレスの昇順に不揮発性メモリ24にデータが書き込まれる。なお、CPU32は、S22、S24を先に実行し、その後S20を実行してもよい。
【0035】
ユーザデータを不揮発性メモリ24に書き込んだ後、CPU32は、LUT制御部32cを使って、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にあるか否かを判定する(S26)。
【0036】
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にある場合(S26 YES)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。リージョンデータを特定した後、CPU32は、リード制御部32aを使って、特定したリージョンデータを含むECCフレームをLUTキャッシュ26cから読み出す(S34)。ECCフレームを読み出した後、CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S36)。
【0037】
CPU32からECCフレームを受信すると、ECCエンコーダ/デコーダ40は、受信したECCフレームを復号し、リージョンデータを取り出す(S38)。リージョンデータを取り出した後、ECCエンコーダ/デコーダ40は、取り出したリージョンデータをCPU32へ送信する(S40)。
【0038】
リージョンデータを受信すると、CPU32は、受信したリージョンデータの内、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリに、S24で書き込んだユーザデータの物理的な記憶位置を指す物理アドレスを設定する(S42)。CPU32は、物理アドレスが設定されたリージョンデータをECCエンコーダ/デコーダ40へ送信する(S44)。
【0039】
リージョンデータを受信すると、ECCエンコーダ/デコーダ40は、受信したリージョンデータを符号化し、ECCフレームを構成する(S46)。ECCエンコーダ/デコーダ40は、ECCフレームをCPU32へ送信する(S47)。
【0040】
CPU32は、受信したECCフレームをLUTキャッシュ26cに記憶させる(S48)。S48の後、処理は終了する(エンド)。これにより、S24で書き込まれたユーザデータの物理アドレスと論理アドレスとの対応関係が複製LUTとしてLUTキャッシュ26cに書き込まれる。なお、詳細は後述するが、LUTキャッシュ26cに記憶されている複製LUTは、適宜なタイミングで不揮発性メモリ24に転送され、不揮発化される。
【0041】
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内に無い場合(S26 NO)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内にあるか否かを判定する(S28)。
【0042】
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内にある場合(S28 YES)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S52)。リージョンデータを特定した後、CPU32は、特定したリージョンデータを含むECCフレームを不揮発性メモリ24から読み出す(S54)。ECCフレームを読み出した後、CPU32は、読み出したECCフレームをLUTキャッシュ26cに記憶させる(S56)。これにより、S24で書き込まれたユーザデータの物理アドレスが記憶されているエントリを含むリージョンデータがLUTキャッシュ26cに書き込まれる。CPU32は、S56の前に、属性情報に基づいて、最後に参照された時刻が最も古いリージョンをLUTキャッシュ26cから削除してもよい。削除として実際に無効データを上書きする場合は、対象となるECCフレームに含まれる別のリージョンデータを破壊しないようにする必要がある。属性情報とは、リージョンが最後に参照された時刻を示すデータである。属性情報は、リージョンに付加されている場合がある。
【0043】
S56の後、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。この後、S34、S36、S38、S40、S42、S44、S46、S47、S48の処理を実行する。
【0044】
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内に無い場合(S28 NO)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含む複数の空白エントリからなるリージョンデータを一時領域26dに作成する(S62)。空白エントリとは、論理アドレスに対応しているが、物理アドレスは無効であるエントリである。リージョンデータを作成した後、CPU32は、作成したリージョンデータを一時領域26dから読み出す(S64)。リージョンデータを読み出した後、CPU32は、読み出したリージョンデータをECCエンコーダ/デコーダ40へ送信する(S66)。
【0045】
リージョンデータを受信すると、ECCエンコーダ/デコーダ40は、受信したリージョンデータを符号化し、ECCフレームを構成する(S68)。ECCエンコーダ/デコーダ40は、ECCフレームをCPU32へ送信する(S69)。
【0046】
CPU32は、受信したECCフレームをLUTキャッシュ26cに記憶させる(S70)。CPU32は、S70の前に、属性情報に基づいて、最後に参照された時刻が最も古いリージョンをLUTキャッシュ26cから削除してもよい。
【0047】
S70の後、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。この後、S34、S36、S38、S40、S42、S44、S46、S47、S48の処理を実行する。
【0048】
図5(a)は、本願の実施形態に係るLUTキャッシュ26cの第1状態のデータ配置の一例を示す。図5(b)は、本願の実施形態に係るLUTキャッシュ26cの第2状態のデータ配置の一例を示す。図5(c)は、本願の実施形態に係るLUTキャッシュ26cの第3状態のデータ配置の一例を示す。図5(a)、(b)、(c)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図5(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。
【0049】
LUTキャッシュ26cの第1状態においては、複数のリージョンデータがそれらの間に空き領域が生じないように詰めて記憶される。第1状態はPacked状態とも称される。図5(a)の例では、5個のリージョンデータR0~R4が9個のECCフレームECC0~ECC8に詰めて記憶されている。図5では、説明の便宜上、一つのリージョンデータのサイズは一つのECCフレームより大きいが、二つのECCフレームより小さい例を示す。しかし、一つのリージョンデータのサイズはi(iは3以上の正整数)個のECCフレームより大きいが、(i+1)個のECCフレームより小さくてもよい。さらに、一つのリージョンデータのサイズは一つのECCフレームより小さくてもよい。
【0050】
LUTキャッシュ26cの第2状態においては、複数のリージョンデータがそれらの間に空き領域が生じるように記憶される。第2状態はAligned状態とも称される。図5(b)の例では、各リージョンデータが二つのECCフレームにAligned状態で記憶されている。すなわち、5個のリージョンデータR0~R4が10個のECCフレームECC0~ECC9に空き領域を残して記憶されている(図5(b)、斜線領域)。空き領域に他のリージョンデータは記憶されていない。
【0051】
LUTキャッシュ26cの第3状態においては、一部のリージョンデータはPacked状態で、他のリージョンデータはAligned状態で記憶される。図5(c)の例では、4個のリージョンデータR0~R3が8個のECCフレームECC0~ECC7にPacked状態で記憶される。なお、リージョンデータR3の一部が記憶されるECCフレームECC7は、空き領域を含む。一つのリージョンデータR4が二つのECCフレームECC8、ECC9に空き領域とともにAligned状態で記憶されている。LUTキャッシュ26cのアドレス空間内で、リージョンデータがAligned状態で記憶される領域(ECCフレーム)はAligned領域とも称される。LUTキャッシュ26cのアドレス空間内で、リージョンデータがPacked状態で記憶される領域(ECCフレーム)はPacked領域とも称される。
【0052】
リージョンデータが第1状態(Packed状態)でLUTキャッシュ26cに記憶されると、リージョンデータ間に空き領域が生じない。このため、第1状態のLUTキャッシュ26c(揮発性メモリ26)の記憶容量の利用効率は高い。第1状態では、リージョンデータの先頭アドレスとECCフレームの先頭アドレスが必ずしも一致しない。そのため、第1状態では、リージョンデータを読み出す際に、アドレスオフセット等の処理が必要となることがある。つまり、第1状態は、リージョンデータの読出しに時間がかかるデータ配置である。
【0053】
リージョンデータが第2状態(Aligned状態)でLUTキャッシュ26cに記憶されると、リージョンデータ間に空き領域が生じる。このため、第2状態のLUTキャッシュ26c(揮発性メモリ26)の記憶容量の利用効率は低い。第2状態では、リージョンデータの先頭アドレスとECCフレームの先頭アドレスが一致している。このため、第2状態では、リージョンデータにアクセスする際に、アドレスオフセット等の処理が不要である。つまり、第2状態は、リージョンデータの読出しに時間がかからないデータ配置である。
【0054】
リージョンデータが第3状態(Packed状態とAligned状態が混合している状態)でLUTキャッシュ26cに記憶されると、第1状態と第2状態それぞれの長所を部分的に受けることができる。なお、ECCフレームをLUTキャッシュ26cに記憶させる際、Packed状態の複数のECCフレームを作成し、Packed領域に記憶させてもよいし、Aligned状態の複数のECCフレームを作成し、一旦Aligned領域に記憶させ、Aligned状態の複数のECCフレームをPacked状態の複数のECCフレームに変更した後、Packed領域に記憶させてもよい。
【0055】
図6(a)は、実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第4状態のデータ配置の一例を示す。図6(b)は、実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第5状態のデータ配置の一例を示す。図6(c)は、実施形態に係るアドレス変換テーブルの不揮発化処理における不揮発性メモリ24内のLUTエリアの第6状態のデータ配置の一例を示す。LUTエリアのサイズは、LUTの全リージョンの物理データを記憶するサイズである。図6(a)、(b)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図6(c)は、不揮発性メモリ24のアドレス空間におけるデータの配置を示す。図6(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。図6(a)に示すLUTキャッシュ26cの第4状態は、リージョンデータ(R0,R1,R2)がPacked領域に記憶され、Aligned領域にはリージョンデータが記憶されていない状態である。図6(b)に示すLUTキャッシュ26cの第5状態は、リージョンデータ(R0,R1,R2)がPacked領域に記憶され、Packed領域に記憶されている1つのリージョンデータ(R0)のコピーがAligned領域に記憶されている状態である。図6(c)に示す不揮発性メモリ24の第6状態は、Aligned状態のリージョンデータ(R0)が記憶されている状態である。
【0056】
LUTキャッシュ26cに記憶されている複製LUTは適宜なタイミングに不揮発性メモリ24へ送信され、不揮発性メモリ24に記憶される。これを複製LUTの不揮発化と呼ぶ。適宜なタイミングは、例えば記憶装置20の電源がオフされる直前でもよいし、一定期間毎でもよいし、LUTキャッシュ26cに記憶される複製LUTのサイズが一定サイズを超えるタイミングでもよい。
【0057】
複製LUTの不揮発化の際、LUTキャッシュ26cにPacked状態で記憶されているリージョンデータは、不揮発性メモリ24へ送信される前に、Aligned状態のリージョンデータに変換される。リージョンデータが不揮発性メモリ24に記憶される際は、Aligned状態で記憶される。
【0058】
複製LUTの不揮発化の一例を説明する。図7は、本発明の実施形態に係るアドレス変換テーブルの不揮発化処理の一例を示すフローチャートである。
【0059】
不揮発化処理の実行タイミングになると(スタート)、CPU32は、不揮発化する1つのリージョンデータを、複製LUTから指定する(S102)。不揮発化処理の実行タイミングとは、例えば記憶装置20の電源がオフされる直前、LUTキャッシュ26cに記憶される複製LUTのサイズが一定サイズを超えるタイミング、又は前回の不揮発化処理の実行タイミングから一定期間が経過するタイミング、である。
【0060】
不揮発化する1つのリージョンデータを指定した後、CPU32は、LUT制御部32cを使って、指定したリージョンデータを含むPacked領域のECCフレームをLUTキャッシュ26cから読み出す(S104)。S104において、指定されたリージョンデータを含むPacked領域のECCフレームは複数である場合もある。ECCフレームをLUTキャッシュ26cから読み出した後、CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S106)。
【0061】
CPU32が送信したECCフレームを受信すると、ECCエンコーダ/デコーダ40は、受信したECCフレームを復号し、リージョンデータを取り出す(S108)。
【0062】
リージョンデータを取り出した後、ECCエンコーダ/デコーダ40は、取り出したリージョンデータを符号化し、ECCフレームを構成する(S110)。ECCエンコーダ/デコーダ40は、構成したECCフレームをCPU32へ送信する(S111)。
【0063】
CPU32は、受信したECCフレームをLUTキャッシュ26cのAligned領域に記憶させる(S112)。CPU32は、LUTキャッシュ26cのAligned領域に記憶されているECCフレームを不揮発性メモリ24に記憶させる(S113)。これにより、一つのリージョンデータが不揮発化される。不揮発性メモリ24は、LUTの全リージョンデータを記憶するサイズのLUTエリアを備えており、送信されてきたAligned状態のECCフレームをLUTエリア内の空いているブロックにAligned状態のまま記憶する。
【0064】
ECCフレームを不揮発性メモリ24に記憶させた後、CPU32は、不揮発化されたリージョンデータのトータルサイズに基づいて、複製LUTの全てのリージョンデータの不揮発化が完了したか否かを判定する(S114)。
【0065】
複製LUTの全てのリージョンデータの不揮発化が完了していない場合(S114 NO)、CPU32は、不揮発化する他のリージョンデータを、複製LUTから指定し(S116)、S104以降の処理を繰り返す。
【0066】
複製LUTの全てのリージョンデータの不揮発化が完了した場合(S114 YES)、CPU32は、処理を終了する(エンド)。
【0067】
LUTキャッシュ26cにPacked領域を設けることで、LUTキャッシュ26cが全てAligned領域である場合に比べて、LUTキャッシュ26cが記憶できるリージョンデータの量を増やすことができる。また、LUTキャッシュ26cにAligned領域も設けることで、Aligned領域に記憶されているECCフレーム全体を、ECCデータが付いたまま複製LUTの不揮発化の対象とすることができる。
【0068】
次に、不揮発性メモリ24に記憶されているLUTの一部分を複製LUTとしてLUTキャッシュ26cに記憶させる展開処理(LUTの揮発化処理とも称される)の一例を説明する。展開処理は、不揮発化処理と同様に、適宜なタイミング、例えば一定期間毎に行ってもよいし、ホスト10からリードコマンドやライトコマンドを受信した場合に行ってもよい。
【0069】
図8(a)は、本願の実施形態に係るLUTの展開処理における不揮発性メモリ24内のLUTエリアの第7状態のデータ配置の一例を示す。図8(b)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第8状態のデータ配置の一例を示す。図8(c)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第9状態のデータ配置の一例を示す。図8(a)は、不揮発性メモリ24のアドレス空間におけるデータの配置を示す。図8(b)、(c)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図8(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。
【0070】
例えば、不揮発性メモリ24のLUTエリアは、図8(a)に示すように、複数、すなわち、10個のECCフレームECC0~ECC9を有する。図8(a)において、リージョンデータは二つのECCフレームにAligned状態で記憶される。5個のリージョンデータR0~R4は10個のECCフレームECC0~ECC9に空き領域を残して記憶されている。空き領域に他のリージョンデータは記憶されていない。
【0071】
図8(b)に示すLUTキャッシュ26cの第8状態は、リージョンデータ(R0、R1)がPacked領域に記憶されている状態である(ECC0b~ECC3b)。また、図8(b)に示すLUTキャッシュ26cの第8状態は、一つのリージョンデータ(R2)がAligned領域に記憶されている状態である(ECC4、ECC5)。
【0072】
図8(c)に示すLUTキャッシュ26cの第9状態は、複数のリージョンデータ(R0~R2)がPacked領域に記憶されている状態である(ECC0b、ECC1b、ECC2b、ECC3b´、ECC4b、ECC5b)。また、図8(c)に示すLUTキャッシュ26cの第9状態は、リージョンデータR2がAligned領域に記憶されている状態である(ECC4、ECC5)。なお、Aligned領域のリージョンデータは、Packed領域に記憶された後、削除されてもよい。
【0073】
リージョンデータがLUTキャッシュ26cのPacked領域に記憶される時、Packed領域のいずれかのECCフレーム(ここでは、ECC3b)が空き領域を有している場合(図8(b))と、全てのECCフレームが空き領域を有していない場合があり得る。
【0074】
リージョンデータがLUTキャッシュ26cのPacked領域に記憶される結果、Packed領域の全てのECCフレームが空き領域を有していない場合の展開処理の一例を図9を参照して説明する。
【0075】
図9(a)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第10状態のデータ配置の一例を示す。図9(a)に示すLUTキャッシュ26cの第10状態は、リージョンデータR1を含む複数のECCフレームECC2b~ECC3bがPacked領域に記憶されており、全てのECCフレームが空き領域を有していない状態である。
【0076】
図9(b)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第11状態のデータ配置の一例を示す。
【0077】
アドレス変換テーブルの展開処理の一例を説明する。図10A及び図10Bは、本発明の実施形態に係るアドレス変換テーブルの展開処理の一例として、リードコマンドを受信した場合の展開処理の一例を示す。
【0078】
リードコマンドを受信すると(スタート)、CPU32は、リードコマンドから論理アドレスを取り出す(S201)。論理アドレスを取り出した後、CPU32は、LUT制御部32cを使って、S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にあるか否かを判定する(S202)。
【0079】
S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にある場合(S202 YES)、CPU32は、LUT制御部32cを使って、S201で取り出した論理アドレスに関して複製LUTを用いてアドレス変換を実行し、物理アドレスを得る(S204)。物理アドレスを得た後、CPU32は、リード制御部32aを使って、物理アドレスが指す、不揮発性メモリ24における物理的なデータの記憶位置からデータを読み出す(S205)。この後、処理は終了する(エンド)。
【0080】
S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にない場合(S202 NO)、CPU32は、不揮発性メモリ24内のLUTの内、S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S206)。リージョンデータを特定した後、CPU32は、リード制御部32aを使って、特定したリージョンデータを含むECCフレームを不揮発性メモリ24から読み出す(S207)。ECCフレームを不揮発性メモリ24から読み出した後、CPU32は、読み出したECCフレームをLUTキャッシュ26cのAligned領域へ記憶させる(S208)。
【0081】
読み出したECCフレームをLUTキャッシュ26cのAligned領域へ記憶させた後、CPU32は、LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームがあるか否かを判定する(S212)。
【0082】
LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームがある場合(S212 YES)、CPU32は、LUT制御部32cを使って、LUTキャッシュ26cのAligned領域に記憶されているECCフレームを読み出す(S214)。加えて、CPU32は、LUT制御部32cを使って、LUTキャッシュ26cのPacked領域にある移動先ECCフレームのうち、他のリージョンデータが含まれているECCフレームを読み出す(S215)。
【0083】
なお、LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームが無い場合(S212 NO)、LUTキャッシュ26cから読み出されるECCフレームはS214で読み出されるECCフレームのみとなる。
【0084】
CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S216)。
【0085】
ECCエンコーダ/デコーダ40は、CPU32が送信したECCフレームを受信すると、受信したECCフレームを復号して、リージョンデータを取り出す(S218)。
【0086】
ECCエンコーダ/デコーダ40は、S215で読み出したECCフレームがある場合、フレーム内の更新対象領域のリージョンデータのみを書き換える(S219)。
【0087】
リージョンデータを書き換えた後、ECCエンコーダ/デコーダ40は、リージョンデータを符号化し、Packed状態のECCフレームを構成する(S220)。ECCエンコーダ/デコーダ40は、構成したECCフレームをCPU32へ送信する(S221)。
【0088】
CPU32は、受信したECCフレームをLUTキャッシュ26cのPacked領域に記憶させる(S222)。これにより、リードコマンドから取り出した論理アドレスと一致する論理アドレスを含むエントリを含む複製LUTがLUTキャッシュ26cに展開される。S222でECCフレームがLUTキャッシュ26cのPacked領域に記憶された後、CPU32は、S201で取り出した論理アドレスに関して複製LUTを用いてアドレス変換を実行し、物理アドレスを得る(S204)。物理アドレスを得た後、CPU32は、リード制御部32aを使って、物理アドレスが指す、不揮発性メモリ24における物理的なデータの記憶位置からデータを読み出す(S205)。この後、処理は終了する(エンド)。
【0089】
LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームが無い場合(S212 NO)、CPU32は、LUT制御部32cを使って、属性情報に基づいて、LUTキャッシュ26cのAligned領域に記憶されている、最後に参照された時刻が最も古いリージョンデータを含むECCフレームを削除する(S223)。ECCフレームを削除した後は、S214の処理に進む。LUT制御部32cは、LUTの属性情報として、各リージョンが参照された時刻を管理している。
【0090】
上記はリードコマンドの受信時に展開処理を行う例を示したが、一定期間毎に展開処理を行う場合は、CPU32は、展開するリージョンデータを指定し、指定したリージョンデータを含む複数のECCフレームを不揮発性メモリ24から読み出し、LUTキャッシュ26cのAligned領域へ記憶させる。その後、図10BのS212以降の処理を実行する。
【0091】
LUTキャッシュ26cにAligned領域を設けているので、Aligned状態で不揮発性メモリ24に記憶されているECCフレームを揮発性メモリ26にそのまま送信できる。
【0092】
図11は、Aligned状態とPacked状態でLUTキャッシュ26cに記憶される複製LUTのデータサイズの例をドライブ容量毎に比較して示す。なお、比較のために、Unpacking状態で記憶される場合のデータサイズも記載する。上述の説明では、複数エントリが1リージョンとされ、LUTデータはリージョン単位で管理されるが、Unpacking状態では、リージョンの概念が無く、LUTデータはエントリ単位で管理される。1エントリは4KBとする。いずれのケースでも、LUTサイズはECCデータも含む。
【0093】
Unpacking状態では、ドライブ容量が16TB、64TBの場合、LUTサイズはドライブ容量の1/1000を超えており、Aligned状態とPacked状態では、ドライブ容量が64TBの場合、LUTサイズはドライブ容量の1/1000を超えているが、ドライブ容量が16TBの場合、LUT容量はドライブ容量の1/1000を超えていない。しかし、Unpacking状態に比べてAligned状態ではLUTサイズが削減され、Aligned状態に比べてPacked状態ではLUTサイズがさらに削減されている。
【0094】
一方、揮発性メモリ26にはドライブ容量に因らない複製LUT以外のユーザデータも保持される。従って、小容量ドライブでは搭載DRAM容量に対するユーザデータの比率が増してしまうため、LUTデータに利用できるDRAMの割合が減少してしまう。そのため、フットプリント削減効果は小容量ドライブにおいて効果が大きい。
【0095】
Packed状態は一番効率の良い記憶方法ではあるものの、Aligned状態でもフットプリントを大きく削減することが可能である。しかし、データの扱いコストはAligned状態の方が安いので、LUTキャッシュ26cのAligned領域のサイズは、フットプリントとデータの扱いコストを考慮して決定してもよい。
【0096】
本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【0097】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0098】
10…ホスト
20…記憶装置
22…コントローラ
24…不揮発性メモリ
26…揮発性メモリ
26a…ライトバッファ
26b…リードバッファ
26c…LUTキャッシュ
26d…一時領域
32…CPU
32a…リード制御部
32b…ライト制御部
32c…LUT制御部
34…ホスト I/F
36…NAND I/F
38…DRAM I/F
40…ECCエンコーダ/デコーダ
ECC0~ECC7…ECCフレーム領域
R0~R7…リージョンデータ領域
図1
図2
図3
図4A
図4B
図5
図6
図7
図8
図9
図10A
図10B
図11