JP2012531655A - フラッシュメモリモジュール - Google Patents
フラッシュメモリモジュール Download PDFInfo
- Publication number
- JP2012531655A JP2012531655A JP2012516981A JP2012516981A JP2012531655A JP 2012531655 A JP2012531655 A JP 2012531655A JP 2012516981 A JP2012516981 A JP 2012516981A JP 2012516981 A JP2012516981 A JP 2012516981A JP 2012531655 A JP2012531655 A JP 2012531655A
- Authority
- JP
- Japan
- Prior art keywords
- physical
- block
- page
- logical
- flash memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
論物変換情報を、第1の変換情報と第2の変換情報とで構成する。フラッシュメモリモジュールのコントローラは、起動の際に第1の変換情報を復元し、第1の変換情報を復元した後にホストからアクセスコマンドの受信が可能となり、アクセスコマンド受信可能となった後に、第2の変換情報を復元する。
【選択図】図6
【選択図】図6
Description
本発明は、フラッシュメモリを有するモジュールに関する。
フラッシュメモリの大容量及び低価格化が進んでいることから、フラッシュメモリの適用が広がりつつある。特に、性能及び電力等の点で優れていることから、これらの要件を重視するモジュール(例えばストレージシステム或いは小型モバイル機器)について、急速な広がりを見せている。
フラッシュメモリは、複数のフラッシュメモリチップ(以下、チップ)を有し、各チップが、複数の物理ブロックを有する。物理ブロックが、複数の物理ページで構成されている。物理ブロックも物理ページも物理的な記憶領域である。例えば、データの読み書きはページ単位で行われ、データの消去のブロック単位で行われる。
フラッシュメモリ、特に、大容量のNAND型フラッシュメモリは、以下の2つの特徴がある。
一つは、既に書き込まれている物理ページに新たにデータを上書きすることができず、その物理ページに新たにデータを書き込むためには、その物理ページを含んだ物理ブロックに対して消去処理を行っておく必要があることである。消去処理が施された物理ブロックには、その先頭から順に一定サイズでデータが書き込まれる。以上のように、フラッシュメモリには、読み書きの大きさ及び順序についての制約がある。
もう一つは、ウェアアウト現象である。ウェアアウト現象とは、消去処理が或る程度の回数以上に繰り返されたことが原因で情報を保持できなくなる現象である。高頻度で書き込みされた場合、消去回数が上限に達しやすい。特に、特定の領域への書き込みが集中した場合、その領域を含んだ物理ブロックが早く寿命に達する。
これらの課題に対し、例えば特許文献1に、フラッシュメモリを制御するコントローラが読み書きの大きさ及び順序制約を隠蔽する技術が開示されている。特許文献1によれば、フラッシュメモリ内にデータを追記するための領域が設けられている。また、例えば特許文献2に、書き込み先を分散させることでフラッシュメモリの寿命を延ばす技術が開示されている。
これらの技術では、ホストがアクセス先を指定するために用いる論理アドレスを格納先フラッシュメモリアドレス(物理アドレス)に対応づけるための情報(論物変換情報)を持つ必要がある。ホストから読み書きされるデータと同様、この論物変換情報も不揮発にしておかないと、データを正しく記憶することができない。例えば特許文献3には、この論物変換情報をユーザデータと共に格納すると共に、格納されたデータから元の論物変換情報を復元する技術が開示されている。
一般に、フラッシュメモリモジュールは、電源が投入された場合に起動し、起動の際に、論物変換情報を復元する。論物変換情報の復元には、管理情報ユニットが必要である。管理情報ユニットは、例えば、物理ページの冗長領域に書き込まれる情報ユニットであり、その物理ページがどの物理ブロックに含まれておりどの論理ブロック内のどの論理ページに対応するかを表す。
前述の技術によれば、論物変換情報を復元することができるものの、復元のために、全ての管理情報ユニットを読む必要がある。このため、論物変換情報の復元に長い時間を要する。例えば、フラッシュメモリの容量を256GB(ギガバイト)とし、物理ページのサイズを4kB(キロバイト)とした場合、64M(メガ)個(256GB÷4kB)の物理ページからそれぞれ管理情報ユニットを読み出す必要がある。読み出しに要する時間は、一般に一物理ページあたり100μs(マイクロ秒)程度であるから、6,400秒程度の時間を論物変換情報の復元に要することになる。これは、ハードディスクの起動に要する時間(例えば10秒程度)に比べると非常に大きい。フラッシュメモリがより大容量になれば、その分、起動に要する時間が延びると考えられる。
本発明の目的は、フラッシュメモリモジュールの起動に要する時間を抑えることにある。
論物変換情報を、第1の変換情報と第2の変換情報とで構成する。フラッシュメモリモジュールのコントローラは、起動の際に第1の変換情報を復元し、第1の変換情報を復元した後にホストからアクセスコマンドの受信が可能となり、アクセスコマンド受信可能となった後に、第2の変換情報を復元する。
本発明により、フラッシュメモリモジュールの起動に要する時間を抑えることができる。
以下、添付図面を参照して、本発明の一実施形態に係るフラッシュメモリモジュールが適用されたフラッシュメモリモジュールを説明する。ただし、本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
図1は、本発明の一実施形態に係るフラッシュメモリモジュールの構成を示す。
フラッシュメモリモジュール1は、フラッシュメモリコントローラ(以下、コントローラ)2、揮発メモリ3、チップアレイ(一以上のフラッシュメモリ)4、フラッシュメモリバス8、及びホストインターフェース9を有する。フラッシュメモリモジュール1は、例えば3.5インチや2.5インチのハードディスクドライブと同じ形状でも良いし、より大型であったり小型であったりしてもよい。
チップアレイ4は、複数のフラッシュメモリチップ(以下、チップ)5で構成されている。
コントローラ2は、チップアレイ4を制御すると共に、ホスト11との通信を制御する。例えば、コントローラ2は、フラッシュメモリ制御ソフトウェア(コンピュータプログラム)を実行するプロセッサと、チップ5に対するデータの読み書きを行うメモリコントローラと、ホスト11とのデータのやり取りを行うホストインターフェースコントローラとを有する。図1では、コントローラ2は、一つのLSI(Large Scale Integration)で構成されているが、たとえばプロセッサが外付けになっているなど、複数のIC(Integrated Circuit)チップで構成されていてもよい。コントローラ2が持つフラッシュメモリモジュール制御機能(以下、モジュール制御機能)7については後述する。
揮発メモリ3は、コントローラ2が扱う情報のうち高速にアクセスする必要のある情報を格納するために用いられる。具体的には、例えば、前述のフラッシュメモリ制御ソフトウェアや、それが使うためのフラッシュメモリモジュール制御データ(以下、モジュール制御データ)6がある。モジュール制御データ6の詳細については後述する。揮発メモリ3は、例えばDRAM(Dynamic Random Access Memory)である。なお、高速にアクセスできれば、揮発メモリ3に代えて不揮発メモリなど他種の記憶媒体が採用されても良い。
チップ5は、ホスト11から読み書きされる情報を格納するために用いられる。また、制御に必要な情報のうち、不揮発であるべきデータも格納する。詳しくは後述する。
フラッシュメモリバス8は、コントローラ2とチップ5を接続するために用いられる。図1では、一つのフラッシュメモリバス8に複数のチップ5が接続されているが、他の接続方式が採用されても良い。
ホストインターフェース9は、フラッシュメモリモジュール1をホスト11に接続し、情報のやりとりを行うために用いられる。ホストインターフェース9としては、例えば、SATA(Serial ATA)、SAS(Serial Attached SCSI)、FC(Fibre Channel)などのストレージインターフェースが採用されても良いし、PCI-Express等のI/O系インターフェースが採用されても良い。
フラッシュメモリモジュール1は、ストレージシステムに設けられても良い。この場合、ストレージシステムは、複数のフラッシュメモリモジュール1を有する。二以上のメモリモジュール1でRAIDグループが構成される。RAIDグループを基に論理ボリュームが形成される。このケースでは、ホスト11は、ストレージシステムが有するコントローラ(以下、ストレージコントローラ)であっても良いし、ストレージシステムに接続されているホストコンピュータであっても良い。前者の場合、ストレージコントローラは、ホストコンピュータからのI/Oコマンドに従うアクセス先論理アドレスを、その論理アドレスを管理するフラッシュメモリモジュール1に送信し、その論理アドレスに対応する物理ブロックにアクセスすることができる。
また、フラッシュメモリモジュール1は、SSD(Solid State Drive)や、可搬型のフラッシュメモリモジュールであっても良い。この場合、ホスト11は、コンピュータであってよい。
図2は、チップ5内部の構成を示す。なお、図2以降の図面では、物理ブロックが「PB」、物理ページが「PP」、論理ブロックが「LB」、論理ページが「LP」とそれぞれ略記されることがある。
チップ5は、複数の物理ブロック51で構成される。物理ブロック51は、複数の物理ページ52で構成される。
チップ5は、読み込み、書き込み及び消去の3つのインターフェースを持つ。具体的には、以下の通りである。
(読み込み)物理ページ52全体、あるいは、物理ページ52の一部からデータを読み込むことが可能である。
(書き込み)物理ブロック51の先頭から順に、空き物理ページ(消去済みであり何も書かれていない物理ページ)52にデータを書き込むことが可能である。具体的には、例えば、物理ページ#1のみにデータが書き込まれている物理ブロック51に対して、物理ページ#2への書き込みが可能であるが、物理ページ#1にデータを上書きすることはできない。また、物理ページ#2をスキップして物理ページ#3にデータを書き込むことはできない。
(消去)物理ブロック51の単位でデータの消去が可能である。即ち、物理ブロック51内の一部分だけを消去し、未書き込み状態にすること(つまり空きブロックとすること)はできない。
一般に、物理ブロックの大きさ、物理ページの大きさ、及び、ホスト11からの読み書きの単位の大きさは異なっている。例えば、図21に示すように、物理ブロックは256kB、物理ページは2kB、ホスト11からの読み書きされる単位の大きさ(アクセスのサイズ)は512Bである。すなわち、ホスト11から指定され得る論理アドレスの範囲毎に、論理ブロックが割り当てられており、論理ブロックに、物理ブロックが割り当てられる。一個の論理ブロックに一個以上の物理ブロックが割り当てられて良いが、本実施形態では、一個の論理ブロックに一個の物理ブロックが割り当てられるとする。物理ブロックは、複数の物理ページで構成されている。論理ブロックを構成する各論理ページに、その論理ブロックに割り当てられている物理ブロック内の物理ページが割り当てられている。コントローラ2は、ホスト11からのアクセスコマンドで指定されている論理アドレスを基に所定の演算を行うことで、アクセス先の論理ページを特定し、モジュール制御データ6を基に、アクセス先論理ページに対応した物理ページを特定することができる。
このため、書き込みについて、ホスト11からのアクセスのサイズとチップ5への書き込み単位/消去単位(ページ/ブロック)の大きさとの差を埋めるための仕掛けが必要となる。
図3A〜図3Cが、チップ5のページ/ブロックのサイズとホスト11からのアクセスのサイズとの差を隠蔽するためのコントローラ2の動作の例を示す。なお、図3A〜図3Cには、物理ブロック番号(PB#)がpの物理ブロック51が例示されているが、他の物理ブロック51も同様の構成である。以下、PB#がpの物理ブロック51を、「物理ブロック#p」と言う。
物理ブロック#p内の複数の物理ページ52が、マスタ領域と追記領域に分けられている。つまり、物理ブロック#pには、マスタ領域に属する物理ページ52と、追記領域に属する物理ページ52とがある。各物理ページ52に書かれているデータは、論理ページの番号(LP#)を用いて管理されている。
図3Aは、初期状態における物理ブロック#pの状態を示す。
初期状態では、物理ページ#1(物理ページ番号(PP#が1の物理ページ)から物理ページ#aまでの各物理ページ52に、論理ページ#1(LP#が1の論理ページ)から論理ページ#aまでのデータがそれぞれ書き込まれている。また、残りの物理ページ52(すなわち、物理ページ#(a+1)から物理ページ#n)については、まだデータが書き込まれていない状態(消去状態)になっている。
図3Bは、物理ブロック#pに対して新たにデータが書き込まれた後の状態の一例を示す。
この例では、物理ページ#(a+1)に、論理ページ#aに書き込まれるべきデータが格納されており、物理ページ#nに、論理ページ#2に書き込まれるべきデータが格納されている。このようにして、物理ブロック#pの大きさよりも小さい書き込み単位での要求に対して、物理ブロック#pを消去することなく(厳密には、物理ブロック#pに対して消去処理を行うことなく)、物理ブロック#pにデータを追記することが可能となっている。
ただし、図3Bの例によれば、追記領域の最後の物理ページ#nにまでデータが書き込まれているため、物理ブロック#pに書き込み可能な物理ページが存在しない。そこで、コントローラ2は、追記されたデータをマスタ領域に反映させるマージ動作(リクラメーション)を行う。マージ動作では、コントローラ2は、物理ブロック#pから各論理ページの最新データを読み込み、物理ブロック#pに対する消去処理を行った後に、マスタ領域の先頭物理ページから順に、その物理ページに対応する論理ページについての最新データを書き込む。なお、データの書き込みは、先頭物理ページから末端物理ページに順次に行われるため、同一の論理ページに対応する最新のデータは、末端物理ページ又は末端物理ページに最も近い物理ページに存在することになる。
図3Cは、マージ動作が行われた後の物理ブロック#pの状態を示す。
マスタ領域の先頭物理ページから順にデータが書き込まれており、追記領域を構成する全ての物理ページが消去状態になっている。マスタ領域の先頭物理ページ#1〜末端物理ページ#aは、論理ページ#1〜#aに対応している。従って、例えば、物理ページ#1には、マージ動作前の物理ページ#1に書き込まれていたデータ(最新データ)が再び書き込まれている。論理ページ#1のデータが更新されていないためである。物理ページ#2には、論理ページ#2の最新データ(追記領域に書き込まれていたデータ)が書き込まれている。
なお、マージ動作でのデータの書込み先は、同一の物理ブロック#pであることに代えて、他の空きブロック(消去状態の物理ブロック)とされても良い。具体的には、例えば、物理ブロック#p内の、各論理ページに対応する各最新データが、空きブロックにコピーされ、その後に、物理ブロック#pに対して消去処理が行われて良い。
図4は、モジュール制御データ6の構成を示す。
モジュール制御データ6は、チップアレイ4へのアクセスの制御に使用されるデータである。モジュール制御データ6は、論理ブロックと物理ブロックの対応関係を表す情報を含んだブロックマッピングテーブル61と、論理ページと物理ページの対応関係を表す情報を含んだページマッピングテーブル62とを含む。テーブル61及び62については後に詳述する。なお、テーブル61及び62が有する情報は、テーブル以外の形式で管理されてもよい。
図5は、モジュール制御機能7の構成を示す。
モジュール制御機能7は、例えば、コントローラ2が有するプロセッサ(典型的にマイクロプロセッサ)で実行されるソフトウェア(コンピュータプログラム)である。以下、機能7が行う処理は、実際には、ソフトウェアを実行するプロセッサが行う。モジュール制御機能7の少なくとも一部が、ハードウェア回路で実現されても良い。モジュール制御機能7は、ホストリードサービス機能71、ホストライトサービス機能72、ページマッピングテーブル再構成機能74、電源オン機能75及び初期化機能76を有する。機能71〜76については後に詳述する。
図6は、揮発メモリ3内のテーブル61及び62とチップアレイ4内の物理ブロックの状態との対応関係の一例を示す。
本実施形態では、ホスト11から指定された論理アドレスを基に論理ブロック番号及び論理ページ番号が特定され、特定された論理ブロック番号及び論理ページ番号に対応する物理ページに対してアクセスが行われる。具体的には、例えば、ホスト11からフラッシュメモリモジュール1へのアクセスが、SCSIにおけるLBA(Logical Block Address)を用いて行われる場合、LBAをブロック内マスタ領域の容量で割ることにより得られた商が、論理ブロック番号であり、その余りをページ容量で割ることにより得られた商が、論理ページ番号である。
ブロックマッピングテーブル61は、論理ブロック番号611と物理ブロック番号612の対応関係を表す情報を有する。このテーブル61を参照することにより、ホスト11から指定された論理アドレスに対応するアクセス先領域がどの物理ブロック51に存在するかを求めることができる。
ページマッピングテーブル62は、例えば、論理ブロック毎に存在する。ページマッピングテーブル62は、論理ページ番号621と物理ページ番号622の対応関係を表す情報を有する。このテーブル62を参照することにより、ホスト11から指定された論理アドレスに対応するアクセス先領域がどの物理ページに存在するかを求めることができる。
物理ブロック51には、その物理ブロック51が割り当てられている論理ブロックの論理ブロック番号517が格納される。物理ページ52(例えばそのユーザ領域)には、ホスト11から直接読み書きされるデータ(いわゆるユーザデータ)523が格納される。また、その物理ページ52(例えばその冗長領域)には、その物理ページ52に対応する論理ページ番号528が格納される。
具体的には、例えば、各物理ページ52の冗長領域に、その物理ページ52に対応する論理ページの番号528を含んだメタデータが格納される。本実施形態で言う「メタデータ」とは、ホスト11から直接読み書きされるデータではないが管理上保持しておくことが必要なデータのことである。メタデータは、例えば管理情報ユニットである。
また、例えば、先頭物理ページ#iの冗長領域に格納されるメタデータは、先頭物理ページ#iに対応する論理ページの番号528の他に、その先頭物理ページ#iを有する物理ブロック51が割り当てられている論理ブロックの論理ブロック番号517を含んでいても良い。
図7は、ブロックマッピングテーブル61の構成の一例を示す。
このテーブル61は、前述したように、論理ブロック番号611と物理ブロック番号612の対応関係(ブロック対応関係)を表す情報を有する。このテーブル61は、フラッシュメモリモジュール1の電源が投入された際に作成され、ホスト11からの読み書きの際に参照される。このテーブル61は、ブロック対応関係が変わった場合に更新される。ブロック対応関係は、例えば、消去回数の偏りを抑えるためのウェアレベリング処理が行われた場合に変わる。また、ブロック対応関係は、いずれかの物理ブロック51に対してマージ動作が行われた場合や、ページマッピングテーブル62を再構成した場合に変わり得る。
ブロックマッピングテーブル61は、論理ブロック番号611毎に、対応する物理ブロック番号612と、ページマッピングテーブル62が存在するか否かを示すページマッピングテーブル存在フラグ613とを有する。論理ブロックについて有効なページマッピングテーブル62が存在する場合、その論理ブロックの番号611に対応したフラグ613の値は「Y」であり、そうでない場合、そのフラグ613の値は「N」である。なお、フラグ613の値は、例えば、対応する論理ブロックに割り当てられる物理ブロックが別の物理ブロックに変更された場合(つまりマージ動作が行われた場合)、「Y」から「N」に変更される。このため、対応する論理ブロックその別の物理ブロックが割り当てられたから初めてその論理ブロックに対してアクセスが行われる場合には、その論理ブロックについてのページマッピングテーブル62が再構成されることになる。
図8は、ページマッピングテーブル62の構成の一例を示す。
このテーブル62は、前述したように、論理ページ番号621と物理ページ番号622の対応関係(ページ対応関係)を表す情報を有する。前述のブロックマッピングテーブル61は、フラッシュメモリモジュール1の電源が投入された際に作成されるが、このテーブル62は、フラッシュメモリモジュール1の電源が投入された際ではなく、フラッシュメモリモジュール1の電源が投入された後、論理アドレスを基に特定された論理ブロックが初めてのアクセス先である場合に作成される。テーブル62は、ホスト11からのデータの読み書きの際に参照され、ホスト11からのデータの書き込みやマージ動作の際に更新される。テーブル62は、論理ページ番号611毎に、対応する物理ページ番号612を持つ。また、テーブル62は、追記領域を構成する複数の物理ページのうちの最後にデータを追記した物理ページの番号(最後尾追記物理ページ番号)623も持つ。
図9は、物理ブロック51へのデータ格納方式の一例を示す。
前述したように、物理ブロック51に含まれる複数の物理ページ52は、マスタ領域に属する物理ページ52と、追記領域に属する物理ページ52である。各物理ページ52が、メタデータ521が格納される領域(冗長領域)と、ユーザ領域とを有し、ユーザ領域が、複数のデータ523がそれぞれ格納される複数のデータ領域(例えばセクタ)523を有する。
以下、マスタ領域内のメタデータの集合、すなわち、マスタ領域に属する物理ページ52のメタデータ521の集合を、「ブロックメタデータ」515と言う。一方、追記領域内の個々のメタデータ521、すなわち、追記領域に属する物理ページ52のメタデータ521を、「ページメタデータ」526と言う。なお、マスタ領域内のメタデータ領域の合計容量が、格納すべきブロックメタデータ515の容量より大きい場合、ブロックメタデータ515の格納のためにマスタ領域内の少なくとも一つの物理ページ52が用いられなくて良い。
図10は、物理ページ52の構成の詳細の一例を示す。
物理ページ52は、メタデータ521が格納されるメタデータ領域と、メタデータ521のECC(Error Correcting Code)522が格納されるECC領域と、複数のデータ523がそれぞれ格納される複数のデータ領域と、それぞれのデータのECC524が格納されるECC領域とを有する。
メタデータ領域は、図9に示したように、その領域を含んだ物理ページ52がマスタ領域に属する場合には、ブロックメタデータ515の一部を格納し、その物理ページ52が追記領域に属する場合には、ページメタデータ526を格納する。
メタデータ521(具体的には、ブロックメタデータ515の一部、又は、ページメタデータ526)に対してECC522を設けることで、メタデータ521のみを読み込んだ場合にも、そのメタデータ521の妥当性(即ち、誤りが発生しているかどうか)を判定することができる。
図11は、ブロックメタデータ515の構成の一例を示す。
ブロックメタデータ515は、物理ブロック51に対応する論理ブロックの番号517を有する。
図12は、ページメタデータ526の構成の一例を示す。
ページメタデータ526は、追記領域内の物理ページ52に対応する論理ページの番号528を有する。尚、マスタ領域内の物理ページ52については、対応する論理ページの番号は一意に定まるので、対応する論理ページ番号528が、マスタ領域内のメタデータ領域に格納される必要はない。
図13は、ホストリードサービス機能71によって行われる処理の流れの一例を示す。
本機能71は、ホスト11からコントローラ2がリード要求を受けた時に呼び出され、要求されたデータがチップアレイ4上のどの場所に格納されているかを特定すると共に、データをホスト11に転送する。以下、順を追って処理内容を説明する。
ホスト11からリード要求を受けると、機能71が、論理ブロック番号と論理ページ番号を求める(S711)。具体的には、例えば、機能71は、ホスト11から指定された論理アドレスがLBA等のリニアアドレスの場合、論理アドレスを論理ブロック容量で割ることにより得られた商を論理ブロック番号とし、余りを論理ページ容量で割ることにより得られた商を論理ページ番号とすることができる。以下、S711で特定された論理ブロック番号及び論理ページ番号を、「リード元論理ブロック番号」及び「リード元論理ページ番号」と言う。
次に、機能71は、揮発メモリ3上のブロックマッピングテーブル61を参照し、リード元論理ブロック番号611に対応する物理ブロック番号(リード元物理ブロック番号)612を求める(S712)。
次に、機能71は、リード元論理ブロックに対応した有効なページマッピングテーブル62が揮発メモリ3上に存在するかどうかを調べる(S713)。具体的には、例えば、機能71は、ブロックマッピングテーブル61を参照し、リード元論理ブロック番号に対応するフラグ613が「Y」であるかどうかを調べる。有効なページマッピングテーブル62が存在しない場合(S713:NO)、機能71は、再構成機能74を呼び出す。それにより、リード元論理ブロックに対応した有効なページマッピングテーブル62が構成される。そして、S715に進む。なお、S713において、有効なページマッピングテーブル62が存在する場合(S713:YES)、S715に進む。
機能71は、リード元論理ブロックに対応するページマッピングテーブル62を参照し、リード元論理ページ番号621に対応する物理ページ番号(リード元物理ページ番号)622を求める(S715)。以上により、ホスト11から要求されたデータのリード元物理ブロックとリード元物理ページが判明する。
次に、機能71は、判明したリード元物理ブロック内の判明したリード元物理ページからデータを読み込み(S716)、読み込んだデータをホスト11に応答する(S717)。
以上の処理により、ホスト11からリード要求を受けた場合、アクセス先として、まず、大まかな格納場所であるリード元物理ブロック51が特定され、その後、必要に応じて、論理ページと物理ページの対応関係を表すページマッピングテーブル62が構成されて、リード元物理ページ62が特定される。このため、詳細な論物対応関係を表す情報、すなわち、論理ページと物理ページの対応関係を表すテーブル62を予め作成しておく必要がない。また、ブロックマッピングテーブル61やページマッピングテーブル62は揮発メモリ3上に格納されている。これらにアクセスするのに要する時間はフラッシュメモリへのアクセスに要する時間に比べ短いため、リード性能の悪化を抑えることができる。
図14は、ホストライトサービス機能72によって行われる処理の流れの一例を示す。
本機能72は、ホスト11からライト要求を受けた時に呼び出され、要求されたデータを適切な場所に格納する。以下、順を追って処理内容を説明する。
ホスト11からライト要求を受けると、機能72は、ライト要求で指定されている論理アドレスを基に論理ブロック番号(ライト先論理ブロック番号)と論理ページ番号(ライト先論理ページ番号)を求める(S721)。
次に、機能72は、ブロックマッピングテーブル61を参照し、ライト先論理ブロック番号に対応する物理ブロック番号(ライト先物理ブロック番号)を求める(S722)。
そして、機能72は、ライト先論理ブロック番号に対応したフラグ613を参照し、その論理ブロック番号に対応した有効なページマッピングテーブル62が存在するかどうかを調べる(S723)。そのテーブル62が存在しない場合(S723:NO)、機能72は、再構成機能74を呼び出す。それにより、ライト先論理ブロックに対応したページマッピングテーブル62が作成される。そして、S725に進む。
機能72は、ライト先物理ブロックに消去済ページ(空き物理ページ)が十分存在するかどうかを調べる(S725)。具体的には、例えば、機能72は、ライト先論理ページに対応したページマッピングテーブル62の最後尾追記物理ページ番号623を参照する。そして、機能72は、そのページ番号623と物理ページ番号の最大値(末端物理ページの番号)とを比較することで、ライト先物理ブロック内の空き物理ページの数を調べる。機能72は、ホスト11からのライト要求に従うデータ(ライトデータ)の量が、特定された空き物理ページ数に相当する容量を超えているかどうかを判断する。
S725の判断の結果が肯定的の場合、すなわち、消去済ページが十分存在する場合(S725:YES)、機能72は、ホスト11から受け取ったライトデータを、ページメタデータ526と共に消去済ページに書き込む(S726)。ページメタデータ526には、S721で求められた論理ページ番号が含まれる。なお、S732又は74とS725との間に、機能72は、ライト先論理ページ番号と同じ番号の物理ページ(つまりマスタ領域内の対応する物理ページ)にデータが格納済みか否かを判断し、格納済みと判断された場合に、S725の判断を行ってもよい。格納済みと判断されなかった場合、機能72は、ホスト11から受け取ったライトデータを、ライト先論理ページ番号と同じ番号の物理ページに書き込むことができる。ライト先物理ブロックへの初めての書き込みであれば、機能72は、ライトデータとともにブロックメタデータ515をその物理ブロックに書き込んでよい。
S726の後、機能72は、ライト先論理ブロックに対応するページマッピングテーブル62を更新する(S727)。具体的には、例えば、機能72は、ライト先論理ページ番号を有するエントリ(テーブル62内のエントリ)の物理ページ番号622を、S726でのライト先物理ページの番号に更新し、且つ、最後尾追記物理ページ番号623を、S726での最後のライト先の物理ページの番号に更新する。そして、S734に進む。
一方、S725にて、消去済ページが十分になかった場合には(S725:NO)、マージ動作が行われる。すなわち、機能72は、ライト先物理ブロック(以下、元の物理ブロック)に存在するデータ(論理ページに対応した一以上のデータのうちの最新データ)を読み込み、ホスト11から受け取ったライトデータと併せて、マスタ領域に書き込むべきデータの集合を生成する(S728)。次に、機能72は、未使用の物理ブロック(空き物理ブロック)を一つ選ぶ(S729)。この時、機能72は、チップアレイ4上の物理ブロック間で消去回数の偏りを抑制するよう、あまり消去が行われていない物理ブロックを選ぶ等の選択方法を取っても良い。そして、機能72は、S728で生成したデータを、選択した物理ブロックに、ブロックメタデータ515と共に書き込む(S730)。そのブロックメタデータ515は、元の物理ブロックが割り当てられた論理ブロックの番号(ライト先論理ブロック番号)を含む。そして、機能72は、ライト先論理ブロックに対応するページマッピングテーブル62を更新する(S731)。具体的には、例えば、機能72は、全ての論理ページ621に対応する物理ページ622がマスタ領域を指すように更新し、且つ、最後尾追記物理ページ番号623を、追記領域の先頭物理ページの番号に更新する。次に、機能72は、ブロックマッピングテーブル61を更新する(S732)。具体的には、例えば、機能72は、ライト先論理ブロック番号611に対応する物理ブロック番号612を、S730で書き込んだ新たな物理ブロック(S729で選択された物理ブロック)の番号を指すように更新する。次に、機能72は、元の物理ブロック51のデータを消去する(S733)。そして、S734に進む。
最後に、機能72は、書き込みが完了したことをホスト11に応答する(S734)。
以上の処理により、コントローラ2は、ホスト11からライト要求を受けた場合に、まず大まかな格納場所であるライト先物理ブロック51を特定することができる。そして、コントローラ2は、必要に応じて、論理ページと物理ページの対応関係を表すマッピングテーブル62を作成し、適切な場所にデータを格納することができる。また、論理ブロックと物理ブロックの対応関係が変化する場合と、論理ページと物理ページの対応関係が変化する場合のそれぞれにおいて、コントローラ2は、ライトデータをフラッシュメモリに書き込むことに加えて、ライト先論理ブロック及びライト先論理ページがどれであるかを示す情報をメタデータとして書き込むことができる。このため、余分なアクセスを発生させることなく、論物変換のための情報をフラッシュメモリへと書き込むことができる。このため、電源が供給されなくなるなどの要因により揮発メモリ3が揮発し、ブロックマッピングテーブル61やページマッピングテーブル62が揮発したとしても、フラッシュメモリに書かれたメタデータ(ブロックメタデータ及びページメタデータ)からテーブル61及び62を復元することができる。なお、復元は、例えば、ブロックマッピングテーブル61のみしておき、その後に、ライトアクセス及びリードアクセスに応じて、必要に応じて、ページマッピングテーブル62が復元されてよい。
図15は、ページマッピングテーブル再構成機能74によって行われる処理の流れの一例を示す。
本機能74は、論理ブロックに対応するページマッピングテーブル62が揮発メモリ3上に存在しない場合に呼び出され、フラッシュメモリ上のページメタデータ526を基にページマッピングテーブル62を作成する。以下、順を追って処理内容を説明する。
機能74は、呼び出されると、まず、呼び出された論理ブロック(リード元論理ブロック又はライト先論理ブロック)に対応するページマッピングテーブル62について、論理ページがマスタ領域の物理ページ52を指すように初期化する(S741)。具体的には、例えば、機能74は、先頭の論理ページが先頭の物理ページを指すように、2番目の論理ページが2番目の物理ページを指すようにし、以下の論理ページについても同様に処理する。
次に、機能74は、追記領域内の全ての物理ページ52について(S742)、まず、ページメタデータ526を読み込み、そのメタデータ526内の論理ページ番号528を取得する(S743)。また、機能74は、読み込んだページメタデータ526について、ECCをチェックすることで、そのメタデータ526が正しいことを確認する(メタデータ526のエラーの有無を判断する)(S744)。そのメタデータ526が正しくない場合には、ECCを用いてそのメタデータ526が訂正される。データのリード元の物理ページが消去済のページであった場合は、既に追記領域内の全物理ページからページメタデータを読んだことになるので、S747へ進む。データのリード元の物理ページが消去済ページでない場合、その物理ページには追記されたデータが存在するので、機能74は、S743で特定された論理ページ番号を有するエントリ(ページマッピングテーブル62内のエントリ)について、そのリード元の物理ページの番号を、S743で特定された論理ページ番号に対応する物理ページ番号622として書き込む(S746)。機能74は、以上の処理を、追記領域の他の物理ページ52に対しても繰り返し(S742)、終了した場合にはS747へ進む。
ページマッピングテーブル62の物理ページ番号622の更新が終了すると、最後に、機能74は、最後尾追記物理ページ番号623を、最新データが書き込まれていた最後の物理ページの番号に更新する(S747)。
以上の手順により、ある指定された論理ブロック内の各論理ページについて、追記されたデータがある場合には、最新のデータが追記されている物理ページが対応付けられ、追記されたデータがない場合には、マスタ領域の物理ページが対応付けられる。この結果、一つのブロックについてページの論物対応関係を再構成(作成)することができる。本処理では追記領域のページメタデータ526のみを読めば良いため、復元のためのオーバヘッドを小さくすることが期待できる。
尚、機能74は、既に説明してあるように、ページマッピングテーブル62が作成されていない論理ブロックへのアクセスが発生した場合に、ホストリードサービス機能71やホストライトサービス機能72によって呼び出される。ただし、要求がなくても、コントローラ2の処理能力に余裕がある時など、適切なタイミングで、図15に示す処理が実行されてもよい。
図16は、電源オン機能75によって行われる処理の流れの一例を示す。
本機能75は、フラッシュメモリモジュール1の電源投入時に呼び出され、フラッシュメモリ上のメタデータからブロックマッピングテーブル61を作成する。以下、順を追って処理内容を説明する。
電源が投入されると、まず、機能75は、全ての物理ブロック51に対し、S752〜S754の処理を行う。すなわち、機能75は、各物理ブロック51からブロックメタデータ515を読み出し、そのメタデータ515から論理ブロック番号517を抽出する(S752)。次に、機能75は、読み込んだブロックメタデータ515について、ECCをチェックすることで、そのメタデータ515が正しいことを確認する(S753)。そして、機能75は、ブロックマッピングテーブル61における、S752で読み込んだ論理ブロック番号611に対応するエントリに、メタデータ515のリード元の物理ブロックの番号612を書き込む(S754)。以上の処理を、他の物理ブロック51に対しても繰り返し(S751)、終了した場合にはS755へ進む。
次に、機能75は、ブロックマッピングテーブル61の全てのエントリのページマッピングテーブル存在フラグ613を「N」、即ち非存在を表す値を設定する(S755)。
最後に、機能75は、ホスト11にI/Oを受け付けられる状態になったことを伝える(S756)。
以上の手順により、フラッシュメモリモジュール1内の全ての論理ブロックについて、対応する物理ブロックが判明する。この結果、ブロックの論物対応関係を、フラッシュメモリに格納された情報から復元することができる。尚、本処理では、マスタ領域に格納されたブロックメタデータ515のみを読めば良く、ホスト11から受け取ったデータやページメタデータ526等は読み出す必要がない。このため、復元のためのオーバヘッドを小さくすることができる。その結果、起動に要する時間を抑えることができ、それ故、ホスト11に対し、短い時間でI/O受付可能を伝えることができる。
図17は、初期化機能76によって行われる処理の流れの一例を示す。
本機能76は、初めてフラッシュメモリモジュール1が使われるとき、或いは既に格納されているデータを消去し、再度未使用状態に戻す際に用いられる。以下、順を追って処理内容を説明する。
機能76は、呼び出されると、まず、全ての物理ブロック51に対して消去処理を行う(S761)。
機能76は、未処理の論理ブロックのうちの一つの論理ブロックについて、未使用の物理ブロック(空き物理ブロック)51を選ぶ(S763)。
次に、機能76は、ブロックメタデータ515とそのECCとを生成する(S764)。ブロックメタデータ515には、今回の処理で扱われている上記一つの論理ブロックの番号が格納される。
次に、機能76は、生成したブロックメタデータ515とデータとを、マスタ領域の物理ページ52に格納する(S765)。ここでいう「データ」は、HDDのフォーマットなどで用いられるような、一定の値でよい。
最後に、機能76は、今回処理を行った論理ブロックに対応するブロックマッピングテーブル61のエントリについて、物理ブロック番号612を、S763で選んだ物理ブロック51の番号に更新する(S766)。
機能76は、以上のS763〜S766を、全ての論理ブロックについて繰り返す(S762)。
以上の処理により、全ての論理ブロックに対し、対応する物理ブロック51が割り当てられると共に、割り当てられた物理ブロック51に、その物理ブロック51に対応する論理ブロックの番号を含んだブロックメタデータ515が格納される。その結果、以後のホストコ11からのアクセスを適切に処理することができるようになる。また、電源オン時に論物変換の情報をフラッシュメモリ4上から正しく復元することができるようになる。
図18は、ホストライトサービス機能72のS726における、コントローラ2とチップアレイ4との間のやりとりの一例を示す。
コントローラ2は、書き込みコマンドと共に、物理ページ52に書き込むデータを送信する。書き込むデータには、ページメタデータ526及びそのECC522、ホストから送られたデータ523及びそのECC524が含まれる。
ここで、全てのメタデータ書き込みは、ホストから送られたデータの書き込みに付随して行われるため、メタデータ書き込みは、フラッシュメモリの書き込みの性能や、書き込み回数による寿命に実質的に影響を与えない。
図19は、ホストライトサービス機能のS728〜S730における、コントローラ2とチップアレイ4との間でのやりとりの一例を示す。
この図では、物理ブロックaが元の物理ブロック、物理ブロックbが新たに使われることになった物理ブロックである。
まず、物理ブロックaの中の最新データが格納されている物理ページ6から最新データが読みだされる。これがS728で行われる動作に対応する。
そして、物理ブロックb内の物理ページ52(マスタ領域内の物理ページ62)に対する書き込みコマンドと共に、その物理ページ52に書き込むデータが送信される。データには、ブロックメタデータ515の一部及びそのECC522と、ホスト11から送られたデータ523及びそのECC524とが含まれる。これがS730に対応する。
ここで、全てのメタデータ書き込みは、ホスト11から送られたデータの書き込みに付随して行われるため、メタデータ書き込みは、フラッシュメモリの書き込みの性能や、書き込み回数による寿命に実質的に影響を与えない。
図20は、電源オン機能75についてのS752、及び、ページマップ再構成機能74についてのS743における、コントローラ2とチップアレイ4との間でのやりとりの一例を示す。
電源が投入されると、まず、物理ブロック51から、ブロックメタデータ515が読み出される。具体的には、マスタ領域の物理ページ52から、メタデータ521及びそのECC522が読み出される。これが、全ての物理ブロック51について繰り返される。以上が、電源オン機能75のS752に対応する。そして、読み出し及び構築が終わると、ホスト11に対し、I/O受付可能であることが通知される。
その後、ホスト11からアクセス要求(I/O要求)を受け取ると、そのアクセス要求で指定されている論理アドレスを基に特定された物理ブロック51から、ページメタデータ526が読み出される。具体的には、追記領域内の物理ページ52から、メタデータ521及びそのECC522が読み出される。これが、追記領域内の物理ページ52について繰り返される。以上が、ページマップ再構成機能74のS743に対応する。
ここで、電源投入時にはブロックメタデータ515のみ、即ちマスタ領域内のメタデータ521のみが読み出され、ページメタデータ526は読み出されない。このため、起動に要する時間が抑えられ、それ故、短い時間でホスト11へI/O受付可能であることを通知できる。
また、ホスト11からアクセス要求を受け、そのアクセス要求で指定されている論理アドレスを基に特定された論理ブロックに対応するページマッピングテーブル62が存在しない場合に、ページメタデータ526のみが読み出され、テーブル62が作成される。このため、最低限の読み込みで、論物変換のための情報を復元することが可能である。
上述した実施形態によれば、フラッシュメモリの通常動作時の書き込み性能への影響を抑えつつ、起動に要する時間を抑えることができる。
以上、本発明の一つの実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
なお、ページマッピングテーブル62は、論理ブロック毎に代えて、複数の論理ブロック毎に用意されても良い。例えば、コントローラ2は、アクセスコマンドを受信した場合、アクセスコマンドで指定されている論理アドレスを基に特定されるアクセス先論理ブロックと次の論理ブロックとに対応するページマッピングテーブル62を作成しても良い。
また、二以上の物理ブロックで一つのマスタ領域と一つの追記領域が構成されても良い。例えば、第1の物理ブロックがマスタ領域であり第2の物理ブロックが追記領域であっても良い。
ブロックマッピングテーブル61は、揮発メモリ3上に構築されるが、その構築方法には、複数の方法が考えられる。
一つ目は、揮発メモリ3に物理ブロック番号612を格納し、アクセスの際に物理ブロック番号612を求めるために、揮発メモリ3上のアドレス値(address)を計算するというものである。論理ブロック番号611から、ブロックマッピングテーブル61の揮発メモリ3上の開始アドレス値(start address)に、ブロックマッピングテーブル61の1エントリ分の構成情報のバイト数と論理ブロック番号611を掛けた値を加えて求まる。このアドレス値は一意に計算される。ホストからリード又はライト要求を受けた場合、このアドレス値を用いて揮発メモリ3にアクセスし、物理ブロック番号612とフラグ613の情報を得ることができる。この方法では、参照時間を短くできる特徴がある。
二つ目には、一つ目の方式の、ブロックマッピングテーブル61の揮発メモリ3に、論理ブロック番号611と物理ブロック番号612とフラグ613の情報を格納しておく方法である。一つ目の方式で論理ブロック番号611から計算したアドレス値が正しいことを、揮発メモリ3に格納してある論理ブロック番号611と比較して確認することができ、コントローラ2の論理のエラーや、揮発メモリ3のソフトエラー等を検出でき信頼性向上に効果がある。
三つ目には、論理ブロック番号611と物理ブロック番号612とフラグ613の情報を、揮発メモリ3に格納し、使用している論理ブロックの数の分だけ、ブロックマッピングテーブル61を構築する方法である。物理ブロックに論理ブロック番号612が格納されていなければ、使用していないものと判断する。この方法では、使用している論理ブロック分の容量のブロックマッピングテーブル61を構築すれば良く、ブロックマッピングテーブル61の容量を削減できる効果がある。
また、図13のS712に関して、物理ブロック番号612の求め方には、ブロックマッピングテーブル61の構築方法により複数の方法がある。例えば、リード元論理ブロック番号611から計算により、ブロックマッピングテーブル61のアドレスを求め、格納してある物理ブロック番号612を求める方法がある。他にはブロックマッピングテーブル61にリード元論理ブロック番号611の値も格納しておき、計算が正しいことを確認もする方法がある。またはリード元論理ブロック番号611と物理ブロック番号612の値のペアをブロックマッピングテーブル61に格納しておき、リード元論理ブロック番号611で、ブロックマッピングテーブル61内を検索し、対応する物理ブロック番号612を求める方法などである。
また、図14のS722に関して、物理ブロック番号612の求め方には、ブロックマッピングテーブル61の構築方法により複数の方法がある。ライト先論理ブロック番号から計算により、ブロックマッピングテーブル61のアドレスを求め、格納してある物理ブロック番号を求める方法や、さらにブロックマッピングテーブル61にライト先論理ブロック番号の値も格納しておき、計算が正しいことを確認もする方法や、またはライト先論理ブロック番号と物理ブロック番号の値のペアをブロックマッピングテーブル61に格納しておき、ライト先論理ブロック番号で、ブロックマッピングテーブル61内を検索し、対応する物理ブロック番号を求める方法などである。
図16のS754における、ブロックマッピングテーブル61の構築の際、ブロックマッピングテーブル61に書き込むデータには、ブロックマッピングテーブル61の構成方法により、複数の方法がある。
一つ目は、メタデータ515から抽出した論理ブロック番号517を元に、計算してブロックマッピングテーブル61のアドレスを求め、物理ブロック番号611を格納する方法である。
二つ目は、一つ目に加えさらに、計算したアドレスの確認用に論理ブロック番号517もブロックマッピングテーブル61に格納する方法である。
三つ目は、メタデータ515を読み出した物理ブロック51の順番に、論理ブロック番号517と物理ブロック番号611のペアを格納する方法である。物理ブロック51に論理ブロック番号517が格納されていない場合、つまり物理ブロック51が使用されていない場合は、ブロックマッピングテーブル61に論理ブロック番号517も物理ブロック番号611も格納しない。
1:フラッシュメモリモジュール
Claims (15)
- フラッシュメモリと、
ホストからアクセスコマンドを受信し、論理アドレスと前記フラッシュメモリの物理アドレスとの対応関係を表す論物変換情報を基に、前記受信したアクセスコマンドで指定されている論理アドレスに対応した物理アドレスに従う領域にアクセスするコントローラと
を有し、
前記論物変換情報は、第1の変換情報と第2の変換情報で構成され、
前記コントローラは、起動の際に前記第1の変換情報を復元し、前記第1の変換情報を復元した後にアクセスコマンド受信可能となり、アクセスコマンド受信可能となった後に、前記第2の変換情報を復元する、
フラッシュメモリモジュール。 - 請求項1記載のフラッシュメモリモジュールであって、
前記フラッシュメモリは、ページ単位でアクセスが行われブロック単位で消去が行われるフラッシュメモリであり、
前記フラッシュメモリは、複数の物理ブロックを有し、
各物理ブロックは、複数の物理ページを有し、
前記第1の変換情報は、論理ブロックと物理ブロックとの対応関係を表すブロックマッピング情報であり、
前記第2の変換情報は、論理ページと物理ページとの対応関係を表すページマッピング情報であり、
前記ページマッピング情報は、一以上の論理ブロック毎に復元される情報であり、
前記コントローラは、消去状態の物理ブロックである空き物理ブロックに初めてユーザデータを書き込む場合、そのユーザデータの他に、その空き物理ブロックが割り当てられる論理ブロックのIDを含んだデータであるブロックメタデータをその空き物理ブロックに書き込み、
前記コントローラは、物理ブロック内の或るユーザデータを更新する場合、更新後のユーザデータの他に、前記更新後のユーザデータのライト先の論理ページのIDを含んだデータであるページメタデータを、前記或るユーザデータが格納されている物理ページとは別の物理ページに書き込み、
前記コントローラは、前記起動の際に、前記フラッシュメモリが有する各物理ブロックから前記ブロックメタデータを読み込んで前記ブロックマッピング情報を復元し、
前記コントローラは、
(W)アクセスコマンド受信可能となった後、前記ホストからライトコマンドを受信した場合、
(w1)前記受信したライトコマンドで指定されている論理アドレスを基にライト先論理ブロック及びライト先論理ページを特定し、
(w2)前記ブロックマッピング情報を基に、前記ライト先論理ブロックに対応する物理ブロックを特定し、
(w3)前記ライト先論理ブロックに対応した有効なページマッピング情報があるか否かを判断し、
(w4)前記(w3)の判断の結果が否定的の場合、前記ライト先論理ブロックに対応する物理ブロック内の物理ページから前記ページメタデータを読み込んで、前記ライト先論理ブロックに対応した前記ページマッピング情報を作成し、
(w5)前記受信したライトコマンドの対象のユーザデータと、前記ライト先論理ページのIDを含んだページメタデータとを、前記ライト先論理ブロックに対応する物理ブロック内の物理ページ又は前記ライト先論理ブロックに対応付けられる別の物理ブロック内の物理ページに格納し、前記ライト先論理ブロックに対応したページマッピング情報を更新し、
(R)アクセスコマンド受信可能となった後、前記ホストからリードコマンドを受信した場合、
(r1)前記受信したリードコマンドで指定されている論理アドレスを基にリード元論理ブロック及びリード元論理ページを特定し、
(r2)前記リード元論理ブロックに対応する物理ブロックを前記ブロックマッピング情報を基に特定し、
(r3)前記リード元論理ブロックに対応した有効なページマッピング情報があるか否かを判断し、
(r4)前記(r3)の判断の結果が否定的の場合、前記リード元論理ブロックに対応する物理ブロック内の物理ページから前記ページメタデータを読み込んで、前記リード元論理ブロックに対応した前記ページマッピング情報を作成し、
(r5)前記ライト先論理ブロックに対応した前記ページマッピング情報を基に、前記ライト先論理ページに対応する物理ページを特定し、特定した物理ページからユーザデータを読み出す、
フラッシュメモリモジュール。 - 請求項2記載のフラッシュメモリモジュールであって、
前記コントローラは、前記ブロックメタデータを格納する際、前記ブロックメタデータの、物理ページに格納される部分と共にECC(Error Correcting Code)も格納し、
前記コントローラは、前記ページメタデータを格納する際、前記ページメタデータの他にECCも格納し、
前記コントローラは、前記ブロックメタデータの読み込みの際、前記ブロックメタデータの各部分と共に読込まれたECCを用いて各部分のエラーの有無を判断し、
前記コントローラは、前記ページメタデータの読み込みの際、そのページメタデータと共に読み込まれたECCを用いてそのページメタデータのエラーの有無を判断する、
フラッシュメモリモジュール。 - 請求項2記載のフラッシュメモリモジュールであって、
一以上の物理ブロックでマスタ領域と追記領域が構成されており、
前記マスタ領域に前記ブロックメタデータが格納され、前記追記領域に前記ページメタデータが格納される、
フラッシュメモリモジュール。 - 請求項4記載のフラッシュメモリモジュールであって、
前記コントローラは、各論理ページについて、更新後のユーザデータではないユーザデータを、前記マスタ領域に属する物理ページに書き込み、更新後のユーザデータと、その更新後のユーザデータのライト先論理ページのIDを含んだ前記ページメタデータとを、前記追記領域に属する物理ページに書き込む、
フラッシュメモリモジュール。 - 請求項1記載のフラッシュメモリモジュールであって、
前記フラッシュメモリは、領域単位でアクセスが行われ複数の領域を含んだ領域群単位で消去が行われるフラッシュメモリであり、
前記第1の変換情報は、論理的な領域と物理的な領域との対応関係を表す情報であり、
前記第2の変換情報は、論理的な領域群と物理的な領域群との対応関係を表す情報である、
フラッシュメモリモジュール。 - 請求項6記載のフラッシュメモリモジュールであって、
前記第2の変換情報は、一以上の領域群毎に復元される情報である、
フラッシュメモリモジュール。 - 請求項7記載のフラッシュメモリモジュールであって、
前記領域群はブロックであり、
前記コントローラは、前記ホストからアクセスコマンドを受信し、そのアクセスコマンドで指定されている論理アドレスを基に特定されたブロックについて有効な前記第2の変換情報が無い場合に、そのブロックを含む一以上のブロックについて前記第2の変換情報を復元する、
フラッシュメモリモジュール。 - 請求項8記載のフラッシュメモリモジュールであって、
一以上の物理ブロックで、マスタ領域と追記領域が構成されており、
前記コントローラは、
(X)前記追記領域にユーザデータを書き込む際に、前記第2の変換情報を復元するのに必要な情報も前記追記領域に書き込み、
(Y)前記マスタ領域にユーザデータを書き込む際に、前記第1の変換情報を復元するのに必要な情報も前記マスタ領域に書き込む、
フラッシュメモリモジュール。 - 請求項7記載のフラッシュメモリモジュールであって、
前記コントローラは、各一以上の物理的な領域群に、その一以上の物理的な領域群が割り当てられる一以上の論理的な領域群を表す情報を含んだ第1の管理情報を格納し、
前記コントローラは、物理的な領域群における物理的な領域に、その物理的な領域に割り当てられる論理的な領域を表す情報を含んだ第2の管理情報を格納し、
前記コントローラは、各一以上の物理的な領域群から第1の管理情報を読み込んで、前記第1の変換情報を復元し、
前記コントローラは、一以上の論理的な領域群について、第2の管理情報が格納されている各物理的な領域から第2の管理情報を読み込んで、その一以上の論理的な領域群に対応する前記第2の変換情報を復元する、
フラッシュメモリモジュール。 - 請求項10記載のフラッシュメモリモジュールであって、
前記コントローラは、前記第1の管理情報を格納する際、前記第1の管理情報の、物理的な領域に格納される部分と共にECC(Error Correcting Code)も格納し、
前記コントローラは、前記第2の管理情報を格納する際、前記第2の管理情報の他にECCも格納し、
前記コントローラは、前記第1の管理情報の読み込みの際、前記第1の管理情報の各部分と共に読込まれたECCを用いて各部分のエラーの有無を判断し、
前記コントローラは、前記第2の管理情報の読み込みの際、その第2の管理情報と共に読み込まれたECCを用いてその第2の管理情報のエラーの有無を判断する、
フラッシュメモリモジュール。 - 請求項1記載のフラッシュメモリモジュールであって、
前記コントローラは、前記ホストからアクセスコマンドを受信した場合に前記第2の変換情報を復元する、
フラッシュメモリモジュール。 - 請求項1記載のフラッシュメモリモジュールであって、
前記フラッシュメモリは、一以上の物理ブロックから構成され、
前記コントローラは、メモリに接続され、
前記コントローラは、起動の際に、前記物理ブロックから論理アドレスを読み出し、前記論理アドレスと前記論理アドレスに対応する物理アドレスと、を前記第1の変換情報として前記メモリに格納する、
フラッシュメモリモジュール。 - 請求項13記載のフラッシュメモリモジュールであって、
前記コントローラは、起動の際に、前記物理ブロックから前記論理アドレスを読み出し、前記論理アドレス及び前記メモリの開始アドレス値から前記論理アドレスの格納場所に対応する第一のアドレス値を算出し、
前記コントローラは、前記メモリに格納した論理ブロックアドレスと前記開始アドレス値から第二のアドレス値を算出し、
前記コントローラは、前記第一のアドレス値と、前記第二のアドレス値と、が一致することを確認する、
フラッシュメモリモジュール。 - ホストからアクセスコマンドを受信し、論理アドレスとフラッシュメモリの物理アドレスとの対応関係を表す論物変換情報を基に、前記受信したアクセスコマンドで指定されている論理アドレスに対応した物理アドレスに従う領域にアクセスするフラッシュメモリモジュールの制御方法であり、
起動の際に、前記論物変換情報のうちの第1の変換情報を復元し、
前記第1の変換情報を復元した後に前記ホストに対してアクセスコマンド受信可能を通知し、
アクセスコマンド受信可能を通知した後に、前記論物変換情報のうちの第2の変換情報を復元する、
方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/005859 WO2011055407A1 (en) | 2009-11-04 | 2009-11-04 | Flash memory module |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012531655A true JP2012531655A (ja) | 2012-12-10 |
JP5525605B2 JP5525605B2 (ja) | 2014-06-18 |
Family
ID=42289325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012516981A Active JP5525605B2 (ja) | 2009-11-04 | 2009-11-04 | フラッシュメモリモジュール |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110231713A1 (ja) |
JP (1) | JP5525605B2 (ja) |
WO (1) | WO2011055407A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015041290A (ja) * | 2013-08-22 | 2015-03-02 | 株式会社東芝 | ストレージ装置 |
WO2015098894A1 (ja) * | 2013-12-27 | 2015-07-02 | 住友電装株式会社 | データ記憶装置、車載データ記憶装置及びデータ記憶方法 |
KR20190099648A (ko) * | 2018-02-19 | 2019-08-28 | 에스케이하이닉스 주식회사 | 메모리 장치, 반도체 장치 및 반도체 시스템 |
JP2021068129A (ja) * | 2019-10-21 | 2021-04-30 | Tdk株式会社 | メモリコントローラ及びフラッシュメモリシステム |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8219746B2 (en) * | 2009-10-08 | 2012-07-10 | International Business Machines Corporation | Memory package utilizing at least two types of memories |
US8364886B2 (en) * | 2010-01-26 | 2013-01-29 | Seagate Technology Llc | Verifying whether metadata identifies a most current version of stored data in a memory space |
US8726126B2 (en) * | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US8201024B2 (en) * | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
TWI438630B (zh) * | 2011-03-22 | 2014-05-21 | Phison Electronics Corp | 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置 |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
KR101301828B1 (ko) * | 2011-09-29 | 2013-08-29 | 한양대학교 산학협력단 | 플래시 메모리에 기반한 ssd에서의 전원-손실 복구 방법 및 장치 |
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
CN104040483B (zh) * | 2011-12-27 | 2017-07-07 | 英特尔公司 | 用于非易失性存储器的优化的冷引导 |
US9208082B1 (en) * | 2012-03-23 | 2015-12-08 | David R. Cheriton | Hardware-supported per-process metadata tags |
US8954698B2 (en) | 2012-04-13 | 2015-02-10 | International Business Machines Corporation | Switching optically connected memory |
WO2013190597A1 (en) * | 2012-06-21 | 2013-12-27 | Hitachi, Ltd. | Flash memory device and storage control method |
US20130346673A1 (en) * | 2012-06-25 | 2013-12-26 | Yi-Chou Chen | Method for improving flash memory storage device access |
US9032244B2 (en) | 2012-11-16 | 2015-05-12 | Microsoft Technology Licensing, Llc | Memory segment remapping to address fragmentation |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
JP5950286B2 (ja) * | 2014-05-29 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | アドレス変換テーブルを書き込む装置及び方法 |
KR20180058456A (ko) * | 2016-11-24 | 2018-06-01 | 삼성전자주식회사 | 메모리를 관리하는 방법 및 장치. |
US10496319B2 (en) * | 2017-02-28 | 2019-12-03 | Sap Se | Lifecycle management for data in non-volatile memory including blocking creation of a database savepoint and associating non-volatile memory block identifiers with database column fragments |
CN112948173A (zh) * | 2021-02-02 | 2021-06-11 | 湖南国科微电子股份有限公司 | 一种数据恢复方法、装置、设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09282111A (ja) * | 1996-04-15 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | 半導体メモリ装置及びその制御方法 |
JP2004086300A (ja) * | 2002-08-23 | 2004-03-18 | Megawin Technology Co Ltd | フラッシュメモリ論理アドレス検出方法 |
US20040109376A1 (en) * | 2002-12-09 | 2004-06-10 | Jin-Shin Lin | Method for detecting logical address of flash memory |
JP2005196736A (ja) * | 2003-12-30 | 2005-07-21 | Samsung Electronics Co Ltd | フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ |
WO2006126445A1 (ja) * | 2005-05-23 | 2006-11-30 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 |
US20070300037A1 (en) * | 2006-06-23 | 2007-12-27 | Microsoft Corporation | Persistent flash memory mapping table |
EP1939750A1 (en) * | 2005-09-25 | 2008-07-02 | Netac Technology Co., Ltd. | Data management method in flash memory medium |
JP2009053950A (ja) * | 2007-08-27 | 2009-03-12 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US20090073762A1 (en) * | 2007-08-30 | 2009-03-19 | Samsung Electronics Co., Ltd. | Methods of operating multi-bit flash memory devices and related systems |
US20090228679A1 (en) * | 2008-03-07 | 2009-09-10 | Via Technologies, Inc. | Mapping management methods and systems |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4863749B2 (ja) * | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
JP5087347B2 (ja) * | 2007-09-06 | 2012-12-05 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
US7917803B2 (en) * | 2008-06-17 | 2011-03-29 | Seagate Technology Llc | Data conflict resolution for solid-state memory devices |
US8732388B2 (en) * | 2008-09-16 | 2014-05-20 | Micron Technology, Inc. | Embedded mapping information for memory devices |
US8819385B2 (en) * | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
US9063886B2 (en) * | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
-
2009
- 2009-11-04 JP JP2012516981A patent/JP5525605B2/ja active Active
- 2009-11-04 WO PCT/JP2009/005859 patent/WO2011055407A1/en active Application Filing
- 2009-11-04 US US12/664,488 patent/US20110231713A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09282111A (ja) * | 1996-04-15 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | 半導体メモリ装置及びその制御方法 |
JP2004086300A (ja) * | 2002-08-23 | 2004-03-18 | Megawin Technology Co Ltd | フラッシュメモリ論理アドレス検出方法 |
US20040109376A1 (en) * | 2002-12-09 | 2004-06-10 | Jin-Shin Lin | Method for detecting logical address of flash memory |
JP2005196736A (ja) * | 2003-12-30 | 2005-07-21 | Samsung Electronics Co Ltd | フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ |
WO2006126445A1 (ja) * | 2005-05-23 | 2006-11-30 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 |
EP1939750A1 (en) * | 2005-09-25 | 2008-07-02 | Netac Technology Co., Ltd. | Data management method in flash memory medium |
US20070300037A1 (en) * | 2006-06-23 | 2007-12-27 | Microsoft Corporation | Persistent flash memory mapping table |
JP2009053950A (ja) * | 2007-08-27 | 2009-03-12 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US20090073762A1 (en) * | 2007-08-30 | 2009-03-19 | Samsung Electronics Co., Ltd. | Methods of operating multi-bit flash memory devices and related systems |
US20090228679A1 (en) * | 2008-03-07 | 2009-09-10 | Via Technologies, Inc. | Mapping management methods and systems |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015041290A (ja) * | 2013-08-22 | 2015-03-02 | 株式会社東芝 | ストレージ装置 |
WO2015098894A1 (ja) * | 2013-12-27 | 2015-07-02 | 住友電装株式会社 | データ記憶装置、車載データ記憶装置及びデータ記憶方法 |
KR20190099648A (ko) * | 2018-02-19 | 2019-08-28 | 에스케이하이닉스 주식회사 | 메모리 장치, 반도체 장치 및 반도체 시스템 |
KR102398540B1 (ko) | 2018-02-19 | 2022-05-17 | 에스케이하이닉스 주식회사 | 메모리 장치, 반도체 장치 및 반도체 시스템 |
JP2021068129A (ja) * | 2019-10-21 | 2021-04-30 | Tdk株式会社 | メモリコントローラ及びフラッシュメモリシステム |
Also Published As
Publication number | Publication date |
---|---|
WO2011055407A1 (en) | 2011-05-12 |
JP5525605B2 (ja) | 2014-06-18 |
US20110231713A1 (en) | 2011-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5525605B2 (ja) | フラッシュメモリモジュール | |
TWI497293B (zh) | 固態儲存裝置內之資料管理 | |
US9343153B2 (en) | De-duplication in flash memory module | |
US8108595B2 (en) | Storage apparatus and method of managing data storage area | |
US10061710B2 (en) | Storage device | |
US7831764B2 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
US9946616B2 (en) | Storage apparatus | |
JP6007332B2 (ja) | ストレージシステム及びデータライト方法 | |
US20070233931A1 (en) | Storage system using flash memories, wear-leveling method for the same system and wear-leveling program for the same system | |
JP5364807B2 (ja) | メモリコントローラ及び不揮発性記憶装置 | |
WO2015162758A1 (ja) | ストレージシステム | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
JP2011253251A (ja) | データ記憶装置及びデータ書き込み方法 | |
JP2013061799A (ja) | 記憶装置、記憶装置の制御方法およびコントローラ | |
JP4745465B1 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP5331018B2 (ja) | ソリッド・ステート・ドライブ装置およびミラー構成再構成方法 | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP6817340B2 (ja) | 計算機 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5204265B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP2019215777A (ja) | メモリシステム | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP6722354B2 (ja) | ストレージシステム | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 | |
JP2015191295A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131001 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140408 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140411 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5525605 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |