JP4967680B2 - 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 - Google Patents

記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 Download PDF

Info

Publication number
JP4967680B2
JP4967680B2 JP2007012608A JP2007012608A JP4967680B2 JP 4967680 B2 JP4967680 B2 JP 4967680B2 JP 2007012608 A JP2007012608 A JP 2007012608A JP 2007012608 A JP2007012608 A JP 2007012608A JP 4967680 B2 JP4967680 B2 JP 4967680B2
Authority
JP
Japan
Prior art keywords
page
address
flash memory
memory device
stored
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.)
Expired - Fee Related
Application number
JP2007012608A
Other languages
English (en)
Other versions
JP2008181204A (ja
Inventor
利幸 西原
一行 伊達
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2007012608A priority Critical patent/JP4967680B2/ja
Priority to US12/003,889 priority patent/US8745310B2/en
Publication of JP2008181204A publication Critical patent/JP2008181204A/ja
Application granted granted Critical
Publication of JP4967680B2 publication Critical patent/JP4967680B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステム、並びに記憶装置の管理方法に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
一方、フラッシュメモリのプログラム速度は非常に遅く、セルあたり数百マイクロ(μ)秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数m秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
フラッシュメモリの代表例として、NAND型フラッシュメモリの簡単な構成例を図1に示す。
フラッシュメモリ1において、たとえば同一ワード線に接続されたセル群2は一括書き込み、および読み出しの単位であり、ページと称される。さらに複数のページで構成されたセルアレイ3は一括消去の単位であり、ブロックと称される。フラッシュメモリ1全体は複数のブロックにより構成されている。
具体的には、たとえば非特許文献1には1GbのNAND型フラッシュメモリが掲載されており、ページサイズを2kバイト、消去ブロックサイズを128kBとしている。すなわち、一つのメモリアレイ内で128kバイトのメモリセル群を並列消去し、そこにメモリセルを2kバイト毎に並列でプログラムしていくことによって、10MB/sのプログラム転送速度を実現している。
なお、通常NAND型フラッシュの各ページは、たとえば2kバイトのユーザーデータ格納領域に対して64バイトの予備領域を有している。
この予備領域には、NAND型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行なう必要があり、両者は常にセットとして扱われる。
ところで、フラッシュメモリの使用において注意すべき制約事項として、消去回数の上限が規定されていることが挙げられる。
同一ブロックの書き換えが繰り返されて、その消去回数が上限値を越えると、該ブロックにおけるデータ保持は保証されなくなる。たとえば上記NAND型フラッシュの消去回数の上限は10万回またはそれ以下である。
今後メモリセルの微細化に伴ってセルトランジスタの閾値ばらつきが増大し、動作マージンが劣化するため、さらに消去回数の上限は低下していく傾向にある。
また、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にNAND型フラッシュには以下のような制約が新たに課される傾向にある。
まず、ブロック内の各ページの書き込み順序に制約がつくようになった。
すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
さらに、各ページの多重書き込みが困難になった。すなわち同一ページ内のデータは2回に分けて書き込むことが出来ない。従って各ページにデータを書き込む前に予備領域の一部のビットを予めマークしたり、データ書き込み後に予備領域にフラグを立てる等、これまでフラッシュメモリの管理に使用されていた各種テクニックが使えない状況になりつつある。
ISSCC2002予稿集のp106、セッション6.4 特開平8−328762号公報
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。
このようなフラッシュメモリの仕様に対応し、小型のデータに関しても高速に書き換えを実施すべく、追記型の記憶システムが提案されている。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
たとえば、特許文献1には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。図2に一例を示す。
図2において、10はフラッシュメモリ、11はブロック、12はページ領域、13はページバッファ、14は消去済み空きブロック、15はページ領域、16は予備領域、17はアドレス変換テーブル、をそれぞれ示している。
アドレス変換テーブル17からは、論理ページアドレス(Logical Page Abbress =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Abbress =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス”0x5502”への書き込みに対して、アドレス変換テーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ10上の物理ページアドレス“0x6B05”を取得する。これによりブロック11内の対応するページ領域12へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接かきこめる適当な空きページ領域が検索される。たとえば物理ブロックアドレス“0xAA”に相当する消去済み空きブロック14の先頭ページ領域15が適切な書き込み先として選択された場合、ページ領域12のデータのみがページバッファ13を介して更新され、ページ領域15に書き込まれる。この際論理ページアドレス“0x5502”はページ領域15の物理アドレス“0xAA00”にリマッピングされ、それに従ってアドレス変換テーブル17の該当フィールドが更新される。
なお、ページ領域12上の旧データは、当面そのまま残して無効扱いとしておく。
またページ領域15にデータが書き込まれる際、その予備領域16には、同時に対応する論理ページアドレス“0x5502”が記載される。これによって予備領域16を参照することで、物理ページアドレス“0xAA00”と論理ページアドレス“0x5502”との対応を逆引きすることができる。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、どのような論理アドレスに対しても、ページ単位で高速に書き込み、書き換えを実施できる。すなわち、書き込みに都合のよい空きブロックを検索し、その先頭ページから順次書き込みを行なっていけば良い。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
なお、このようなシステムにおいてデータ更新が繰り返され、無効化されたページが蓄積してくると、ストレージの記憶領域を圧迫する。したがって、適時無効化されたページを多く含むブロックを選択し、そこに回復処理を実施する。
具体的には、消去前に有効ページのみを他のブロックに全てコピーし、これに応じて変換テーブルに記載された物理アドレスを書き換え、最後に元ブロックを消去する。これらの作業は、記憶装置の待機時や、システムのアイドル時に実施することで、そのオーバーヘッドをユーザーから隠蔽することができる。
ところで、このような記憶システムにおいては、アドレス変換テーブル17は、高速にアクセスできるよう、通常SRAM等の揮発性のRAM内に保存されている。これらは電源オフ時にはフラッシュメモリ内にバックアップ保存され、起動時に再びRAM内にロードされて、再構築される。
しかし、電源瞬断が発生すると、このようなバックアップが存在しない状態でテーブルが消滅し、論理アドレスと物理アドレスとの対応が不明になってしまう。このときシステムはアドレス変換テーブル17を再構築しようとするが、それはフラッシュメモリ10内の全ページの予備領域をスキャンすることで実現される。
すなわち、各ページの予備領域には対応する論理ページアドレスが記載されているので、フラッシュメモリ10内の全ページを物理ページアドレスに従ってスキャンしていけば、物理ページアドレスと論理ページアドレスの対応を全域で検査することが可能である。
なお、データが更新された場合、旧データが格納されたページと更新後データが格納されたページは、予備領域に同じ論理ページアドレスが記載されている。この場合、たとえば予備領域にデータの新旧を判定するための履歴情報(たとえばタイムスタンプ)を論理ページアドレスと同時に記載しておく。記載された論理ページアドレスが他と重複していて、かつ書き込み履歴がより古いページは無効化されたページであり、そこで示される論理アドレスと物理アドレスの対応は無視して良い。このような手順を経ることで、アドレス変換テーブル17の完全な再構築が可能である。
しかし、フラッシュメモリの容量が大型化していくと、その全てのページの予備領域をスキャンし、必要な処理を行うには多大な時間を要するようになる。たとえば1GBのフラッシュメモリが2kBのページで構成されているとすると、そのページ数は512kに及ぶ。各ページの予備領域を読み出すには50μ秒程度の時間がかかるので、単に全ページをスキャンするだけでも25.6秒もの時間がかかる。さらに限られたRAMリソースでテーブルを再構築するにはその倍以上の時間を必要とする。
したがって、たとえばコンセントを引き抜く等で記憶システムの電源を瞬断させた後には、電源を入れてもシステムが1分間近く立ち上がらないという問題が発生する。
また、リムーバブルメディアにおいては、ユーザーのメディア引き抜きがそのまま電源瞬断に直結するので、電源瞬断が頻発する。従ってこのような用途では使い物にならないことになる。
本発明は、ストレージの容量の大きさに関わらず、電源瞬断に対して僅かな時間でアドレス変換テーブルの再構築が可能な記憶装置およびコンピュータシステム、並びに記憶装置の管理方法を提供することにある。
本発明の第1の観点の記憶装置は、主記憶媒体としてのフラッシュメモリデバイスと、
アドレス変換テーブルが格納される第2メモリと、上記フラッシュメモリデバイスと上記第2メモリの制御を行う制御部と、を有し、上記フラッシュメモリデバイスは、データ格納単位である複数のページによって形成され、かつ各ページは予備領域を有しており、上記制御部は、上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存する機能と、コマンドに応じてユーザーデータの書き込み、更新が実施される際、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納し、その際入力アドレスに基づく論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録し、上記各ページの予備領域には、対応する論理ページアドレスを特定するための情報を格納する機能と、当該記憶装置を起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を検出する機能と、上記ページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築する機能と、を有する。
本発明の第2の観点のコンピュータシステムは、主記憶媒体としてのフラッシュメモリデバイス、アドレス変換テーブルが格納される第2メモリ、および上記フラッシュメモリデバイスと上記第2メモリの制御を行う制御部を有する記憶装置と、上記フラッシュメモリデバイスのデータにアクセス可能なホストしての処理装置と、を有し、上記フラッシュメモリデバイスは、データ格納単位である複数のページによって形成され、かつ各ページは予備領域を有しており、上記制御部は、上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存する機能と、上記処理装置からのコマンドに応じてユーザーデータの書き込み、更新が実施される際、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納し、その際上記処理装置からの入力アドレスに基づく論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録し、上記各ページの予備領域には、対応する論理ページアドレスを特定するための情報を格納する機能と、当該記憶装置を起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を検出する機能と、上記ページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築する機能と、を有する。
本発明の第3の観点は、主記憶媒体としてのフラッシュメモリデバイスと、アドレス変換テーブルが格納される第2メモリと、を有する記憶装置の管理方法であって、上記フラッシュメモリデバイスを、データ格納単位である複数のページによって形成し、かつ各ページには予備領域を持たせるステップ、上記フラッシュメモリデバイスに、特定の論理ページアドレスに対応したユーザーデータが書き込む際は、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納するステップと、上記ページ単位で格納する際、上記論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録するステップと、各ページの予備領域に対応する論理ページアドレスを特定するための情報を格納するステップと、上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存するステップと、システムを起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行なわれたページ群を検出するステップと、上記ページアドレス領域内のページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築するステップとを有する。
本発明によれば、制御部の制御の下、たとえばホストからのコマンドに応じてユーザーデータの書き込みや更新が実施される際、ユーザーデータはフラッシュメモリ内の適当な空き領域に、上記ページ単位で格納される。
その際ホストからの入力アドレスに基づく論理ページアドレスとフラッシュメモリ上の格納先ページアドレスとの対応が、上記アドレス変換テーブルに記録され、さらに各ページの予備領域には、対応する論理ページアドレスを特定するための情報が格納される。
また、第2メモリ内のアドレス変換テーブルは、フラッシュメモリデバイスに適時保存される。
そして、記憶装置を起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群が検出され、検出されたページ群の予備領域が検査され、テーブル保存以降のテーブル更新状態を再生することで、完全なテーブルが再構築される。
本発明によれば、ストレージの容量の大きさに関わらず、電源瞬断に対して僅かな時間でアドレス変換テーブルの再構築が可能であり、たとえば5秒以下で記憶装置の立ち上げが可能になる。
したがって、電源瞬断後のシステム起動にユーザーが長時間待たされることは無い。また、リムーバブルメディアとしても問題なく使用できる。
以下、本発明の実施形態を図面に関連付けて説明する。
図3は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステムCOMSYSは、記憶装置20、およびホストシステム(処理装置)40を主構成要素として有している。
記憶装置20は、インターフェース回路(I/F)21、制御回路22、内部バス23、ページバッファ24、NAND型フラッシュメモリ25,26、制御回路27、およびメモリバス28を有する。
制御回路22は、第2メモリとしてのRAM30を含み、RAM30にはワーキングエリア31が設けられ、アドレス変換テーブル32、検索テーブル33、ライトポインタ34、および周回カウンタ35が構築されている。
ホストシステム40は、CPU、RAM、ROM、システムバス等を含んで構成されている。
記憶装置20の内部においては、32ビットのメモリバス28に、16ビットの入出力を持つ2チップの8GbNAND型フラッシュメモリ(フラッシュメモリチップという場合もある)25,26が並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。すなわち、メモリバス28は16ビットバスを2チャンネル備えた構成となっている。各々のフラッシュメモリは書き込みや読み出しのアクセスをたとえば4kBのページ単位で行う。したがって、実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ24はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ25,26とページバッファ24との間のデータの送受は、制御回路27で制御されている。
さらに、制御回路27は、必要に応じて転送データにECC符号化によるエラー補正を施す。両フラッシュメモリ25,26は、ページバッファ24を介して記憶装置の内部バス23との間でデータを入出力する。
すなわち、ページバッファ24、NAND型フラッシュメモリ25,26、制御回路27、およびメモリバス28の回路群は実質的に一つのフラッシュメモリデバイス(フラッシュメモリモジュールという場合もある)29を構成し、記憶装置20の内部バスW3に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは4kBである。すなわち装置内には512k個のページデータが格納される。
さらに、内部バス23にはインターフェース回路21、および制御回路22が接続されている。
インターフェース回路21は、ATAやPCIエクスプレス等の規格に従ってホストシステム40との間で、データやコマンドの送受を行う。
制御回路22はCPUを内蔵し、制御プログラムに従って、記憶装置の内部においてページバッファ24とインターフェース回路21の間のデータの送受を管理する。
制御回路22に内蔵されたRAM30には、制御プログラムを実行するためのコードエリアやワーキングエリア31が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル32、正常な空きブロックを検索する検索テーブル33、ライトポインタ34、およびライトポインタ34の周回カウンタ35等が構築されている。
本コンピュータシステムCOMSYSにおいては、ホストシステム40は内蔵するCPUによって制御され、アプリケーションやオペレーティングシステム(OS)の要求に応じて、記憶装置20を介して、フラッシュメモリデバイス29にユーザーデータを保存する。
制御回路22はその間のデータ授受に介在し、アドレス変換テーブル32を用いてアドレス変換を伴うアクセス管理を実施する。
記憶装置20は、ハードディスクと同様に512バイト(Byte)のセクタをアクセス単位とする。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ24内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下、このような記憶装置20の内部動作を説明する。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
図4は、アドレス変換テーブル32、および検索テーブル33の構成例を示す図である。また、図5は、そのようなテーブルを使用したデータアクセスのフローを示す図である。記憶装置20の内部におけるフラッシュメモリデバイス29への具体的アクセスは、図5のフロー図に従って、以下のような手順で実行される。
<データの読み出し動作>
ステップST1
ホストシステム40からユーザーデータのアクセスコマンドとともに“0x005502C”のセクタドレスが入力されると、制御回路22は論理ページアドレス部(LPA)“0x005502”をインデックスにアドレス変換テーブル22を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x0060B0”を取得する。
ステップST2
上記物理ページアドレスをもって、フラッシュメモリデバイス29がアクセスされ、ページバッファ24内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス“0xC”に相当する部分がページバッファ24から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
<データの更新(書き込み)動作>
ステップST1,ST2
読み出し時と同様に、フラッシュメモリデバイス29より読み出した所望のデータをページバッファ24に格納する。
ステップST3
ページバッファ上で所望のセクタ箇所を更新する。
ステップST4
更新したユーザーデータのフラッシュメモリデバイス29への書き込み先として、RAM30内に常駐した検索テーブル33およびライトポインタ34から、適当なページ領域の物理ページアドレスPPAが選択される。
以下のその手順の詳細を説明する。ここでは簡単のため、物理ページアドレスは、上位16ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(2)より構成される。
検索テーブル33には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
ライトポインタ34は、まずその物理ブロックアドレス部のインクリメントに従って、検索テーブル33のアドレス上を下位から上位に向けて良品の消去済みブロックを検索しつつ巡回する。一旦対象ブロックが検出されれば、検索テーブル33の所定の“Used Flag”に“1”が立ち、まずその先頭ページが書き込み先として選択される。
さらにここからはページオフセット部のインクリメントに従って、書き込み先のページが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用かつ良品のブロックの検索を進める。
このようにしてライトポインタ34はフラッシュメモリデバイス29のアドレス上を循環する。そして検索テーブル33の末尾アドレスのブロックに達し、更にあるいはその末尾ページに達したら、周回カウンタ35を一つインクリメントして再びその先頭アドレスに戻る。
ライトポインタ34の値は現在“0x00AA01”であり、制御回路22はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x00AA02”を選択する。
ステップST5
上記物理ページアドレスをもって、フラッシュメモリデバイス29がアクセスされ、ページバッファ24内のユーザーデータがフラッシュメモリデバイス29に一括書き込みされる。
この時同時に、ページ領域内の冗長部に、周回カウンタ35のカウンタ値“0x000352”と、データの論理ページアドレス“0x005502”が記載される。前者は各ページへのデータ記載の履歴を示すものであり、この値を比較することで、その新旧を判定できる。また、後者は物理ページアドレスと論理ページアドレスの対応を取得するための記載である。両者はアドレス変換テーブル32が消滅した際の再構築に使用される。
ページに記載されたデータの新旧を判別することが可能である。
書き込みが完了すると、アドレス変換テーブル32が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。
また、これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス“0x0060B0”に相当するページ領域はアドレス変換テーブル32の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
上述のような記憶装置20において、アドレス変換テーブル32はRAM30内に構築されており、電源瞬断が発生すると消失してしまう。それを速やかに復帰させるために本実施形態で導入する手法を、図6の概念図と図7のフロー図に関連付けて以下に説明する。テーブル構成については図4の例を使用する。
ステップST10:通常のアクセス動作中の処理
ライトポインタ34の進捗量を基準に、アドレス変換テーブル32のフラッシュメモリデバイス29へのバックアップ保存を実施する。
ステップST101
ユーザーデータの書き込みが、ライトポインタ34の進捗に従って実施される。ライトポインタ34は、検索テーブル33の各物理ブロックアドレスPBAを順にスキャンする形で空きブロックを検索しつつ、物理ページアドレス上を巡回している。
ここで“0x0000”〜“0x07FF”の物理ブロックアドレスPBAに64ブロックごとの区切りを設ける。すなわち区切りは“0x0000”、“0x0040”、“0x0080”、・・・・・“0x0780”、“0x07C0”のブロックアドレス上に各々設けられる。
ステップST102、ST103
ここでライトポインタ34が各区切りに達するごとに、RAM30上のアドレス変換テーブル32をフラッシュメモリデバイス29にバックアップ保存する。このようなバックアップ保存は予め決められたアドレスPBAのブロックに実施しても良いし、ライトポインタに従って動的にバックアップ格納用ブロックを確保し、そこに実施しても良い。後者の場合、たとえば上記区切り以降の最初の空きブロックから必要な数だけ格納用ブロックを動的に確保する。
なお、アドレス変換テーブル32が前回のバックアップから全く更新されていない場合、上記保存は省略することが可能である。
ステップST20:電源瞬断からの復帰;
ステップST201
電源瞬断が発生し、その後システムを再起動する際は、まず各ブロックの先頭ページの予備領域がスキャンされる。ここに記載された周回カウンタ35の値が最も大きく、かつアドレスPBAが最も後方にある使用済みブロックが直近に書き込まれたブロックである。またそのブロック内のデータが残存する最上位アドレスのページが直近に書き込まれたページである。
ステップST202
こうして抽出された該当ブロック51のアドレスが“0x022A”であったとする。その場合アドレス変換テーブル32がその直近でバックアップされたのは、ライトポインタが”0x0200”のブロック52に達した時であると解る。
したがって、アドレス変換テーブル32が最後にバックアップされてから後、新たに書き込まれたページの存在範囲はブロック領域53に限定される。さらに具体的には、左記領域に存在し、かつ予備領域に記載された周回カウンタ35の値が上記ST201における最大値と一致するページが、バックアップ後に書き込まれたページであると特定される。
ステップST203
直近でバックアップされたアドレス変換テーブルをRAM内に読み出す。
ステップST204
領域53の各ページの予備領域を順次スキャンする。予備領域に記載された周回カウンタ35の値から上述のようにバックアップ後に書き込まれたページを特定し、さらに予備領域に記載された論理ページアドレス値から物理ページアドレスとの対応を取得して、RAM上のテーブルに反映させる。これによって最新のアドレス変換テーブルが再構築される。
なおブロックを共有するページ群に記載された周回カウンタ35の値は同一なので、ブロックの先頭ページがバックアップ後に書き込まれたページに該当しない場合は、そのブロックの残りページの検査はスキップしても良い。
既存の技術では、テーブル全体をゼロから再構築していたため、フラッシュメモリデバイス全域のページをスキャンして、アドレス対応を検査する必要があった。そのため本ハードウエア構成の例では、2kブロック、すなわち512kページ全体をスキャンする必要があり、それだけで数十秒の時間を要していた。
これに対し、本発明を採用することで、ページのスキャン範囲は最大でも64ブロック、すなわち16kページ以下に限定され、スキャンに要する時間は1/32以下に短縮される。これによってスキャン時間は1秒以下に短縮され、瞬時の復帰が可能になる。
なお、上述の例ではライトポインタ34の軌道上に予めアドレス境界を定め、それを基準にバックアップを行なうことで、直近のバックアップ時のライトポインタ位置を特定した。さらにそれによって直近のバックアップ以降に新規書き込みが行なわれたページ群を特定できた。この手法は簡便で実装が容易だが、直近バックアップ以降の書き込みページ群の特定にはバリエーションが存在し得る。
たとえば、アドレス変換テーブル32のバックアップ保存時に、バックアップ格納ブロックの空き領域やページの予備領域等にその時点のライトポインタ値を保存しても良い。この場合、保存されたライトポインタ値から直近に書き込まれたページまでを検査範囲とし、その間の各ページの予備領域をスキャンすれば、バックアップ後に書き込まれたページを容易に特定できる。
またはバックアップ保存を、特定のブロック数が書き込まれるごとに実施しても良い。この場合上述のようにテーブルバックアップ時にライトポインタを保存しておき、これによって検査範囲を確定する。
あるいは直近に書き込まれたブロックを特定し、そこから上記規定量分の新規書き込みブロックを遡れば、直近のバックアップ後に書き込まれたページ群は必ずその領域内に存在している。その間をスキャン範囲として予備領域の検査を実施し、アドレス変換テーブルを再生する。
ところで、このようなアドレス変換テーブルのバックアップ作業は、通常のデータ書き込み作業に対するオーバーヘッドであり、その量が大きく頻度が高いと、記憶装置のアクセスパフォーマンスを劣化させる要因に成り得る。
たとえば、図4のアドレス変換テーブル32において、512kページに対して、各論理アドレスに対応する物理アドレス格納に4バイトのフィールドを設けるとすれば、その全体サイズは2Mバイトに達する。この格納にはフラッシュメモリデバイス29の2ブロック分を消費する。ここでライトポインタが64ブロック進むごとに、テーブル全体のバックアップを行なうとすると、そのオーバーヘッドは無視し得ないものとなる。
一方、アドレス変換テーブルを通常フラッシュメモリ内に保存しておき、必要に応じてその一部をRAM内に読み出す管理法は、RAM容量の節約になるとともに、上記課題の解決にもなり、本発明の適用に非常に適している。
そこで以下に、そのような管理法を導入した本発明の第2の実施形態について説明する。
本第2の実施形態においては、アドレス変換テーブルを複数の小テーブルに分割し、それをフラッシュメモリデバイス内に保存しておき、その一部のみを必要に応じてRAM内に読み出すようにする。
たとえば2Mバイトのサイズを持つ前述のテーブルを、512ページ分の論理アドレスごとに、1k個の小テーブルに分割すれば、小テーブル一つのサイズは2kBとなり、フラッシュメモリデバイス29の1ページ内に収納できる。したがって、そのバックアップは1ページのみの書き込みでよく、1m秒以下で瞬時に実行できる。
図8は、アドレス変換テーブルを分割するテーブルの管理例を示す図である。
各小テーブルのフラッシュメモリ上の所在を示すのがテーブルリスト36bであり、これはRAM内に常駐している。テーブルリスト36bには、論理ページアドレスLPAの上位ビットをインデックスとして、対応する小テーブルのフラッシュメモリデバイス内格納ブロックの物理ページアドレスPPAが記載されている。
なお、分割された1k個の小テーブルは128個ごとに8グループをなし、各グループの格納用にフラッシュメモリデバイス上のブロックが一つずつ使用される。すなわち、各グループを構成する128個の小テーブルは同一のブロックに格納され、その格納先情報として物理ブロックアドレスPBAを共有するので、実際に小テーブルごとに用意されるフィールドはブロック内のページオフセットPOFFのみで良い。これは物理ページアドレスPPAの下位8ビットに相当し、テーブルリスト36b全体でのサイズは僅か1kバイトである。すなわちRAM内に常駐するテーブルリスト36bの容量は全体でも1kバイト強に過ぎない。
ユーザーアクセスは以下の手順で実施される。たとえば論理ページアドレス”0x05502C”のユーザーデータにアクセスする場合を想定する。
<データの読み出し動作>
ステップST31
まず論理ページアドレスの上位ビット“0x0550”をインデックスとして、テーブルリスト36bから所望の小テーブルの格納場所を取得する。ここでは対応する物理ページアドレス“0x00B004”が取得され、これを元にフラッシュメモリデバイスがアクセスされて、RAM上に小テーブル37bが読み出される。
ステップST32
さらに小テーブル37bから論理ページアドレス“0x05502C”をインデックスとして、所望のユーザーデータの格納ページを取得する。ここでは対応する物理ページアドレス“0x0060B0”が取得され、これを元にフラッシュメモリデバイスがアクセスされて、ユーザーデータが読み出される。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
<データの更新(書き込み)動作>
ステップST31,ST32
読み出し時と同様の手順で、フラッシュメモリデバイスより読み出した小テーブル37bがRAM内に格納され、さらに所望のユーザーデータがフラッシュメモリデバイスより読み出されてページバッファに格納される。
ステップST33
ページバッファ上で所望のセクタ箇所を更新する。
ステップST34
更新したユーザーデータのフラッシュメモリデバイスへの書き込み先として、RAM内に常駐した検索テーブル33bおよびライトポインタ34bから、適当なページ領域の物理ページアドレスPPAが選択される。この検索手順は図4において説明したものと同様である。
ステップST35
上記物理ページアドレスをもって、フラッシュメモリデバイスがアクセスされ、ページバッファ内で更新されたユーザーデータがフラッシュメモリデバイスに一括書き込みされる。この時同時にページ領域内の冗長部に、周回カウンタ35bのカウンタ値“0x000352”と、データの論理ページアドレス“0x005502”が記載される。
書き込みが完了すると、RAM上の小テーブル37bが更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。また、これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。
なお、このようなRAM上の小テーブルは、テーブルのキャッシュとして使用される。すなわち記憶装置に次のユーザーアクセスがなされた場合、その論理ページアドレスから得られる小テーブルのインデックスが前アクセスと同一であれば、RAM上の小テーブルをそのまま使用できる。
一方、異なる小テーブルが必要とされれば、元の小テーブルを破棄して、新しい小テーブルをフラッシュメモリデバイスからRAM上に読み出す必要がある。この際元の小テーブルが更新されている場合には、新規小テーブルの読み出しに先立って、それをフラッシュメモリデバイスに保存しておく必要がある。
またはRAM上に複数の小テーブルをキャッシュエントリとして格納し、ユーザーアクセスにおいてそれらの内のいずれかがヒットすればそれを使用する形態としても良い。全てがミスヒットし、キャッシュのエントリに空きが無い場合には、エントリされた各小テーブルの更新の有無、アクセス頻度、あるいはRAM上に読み出された順序等から優先順位が判定され、一つの小テーブルが選択されて破棄される。この際、この小テーブルが更新されている場合にはフラッシュメモリデバイスにそれが保存される。しかる後に所望の小テーブルがフラッシュメモリデバイスから読み出され、新たなエントリとしてキャッシュに登録され、RAM上に格納される。
ところで、上述のような小テーブルのフラッシュメモリデバイスへの保存は、たとえば図9のように実施される。
図9に示すように、RAM内に読み出された小テーブル37cが更新され、フラッシュメモリデバイス29cに保存されるとする。
上記小テーブルのインデックスたる論理ページアドレスの上位ビットは“0x0550〜0x0551”であり、その旧所在はテーブルリスト36cに記載されている。これは同じグループに所属する他の小テーブルとともに物理ブロックアドレスPBA“0x00B0”のブロックに保存されており、その中のオフセット値POFF“0x04”に対応するページに相当する。
各ブロックは256ページをもつので、対応するブロックグループの2倍を格納できる余裕がある。更新した小テーブルをバックアップする際にはそれを対応ブロックの空いたページに下詰で書き込み、テーブルリスト36cを書き換える。ここでは同ブロックにおいて最下位にある空きページのオフセット値POFFは“0xA1”なので、更新後の小テーブルはこのページに保存される。しかる後にテーブルリスト36cの対応する論理ページアドレスは“0x00B0A1”に書き換えられる。
これにより、更新前に保存されていた小テーブルのデータは無効化され、1ページ分の書き込みのみで迅速に小テーブルの書き戻し保存が完了する。ブロック内の256ページ全てにテーブルが書き込まれたら、新規ブロックを確保して、有効ブロックのみをそこにコピー移動する。
なお、小テーブルが保存される際、保存先ページの予備領域54cには小テーブルを識別するインデックス値が記載される。これはたとえばテーブルリスト36cで使用されたインデックス値“0x0550”である。この値から各小テーブルとそれが格納された物理ページアドレスの対応を取得することができる。したがって,小テーブルが格納された8ブロック内の全ページの予備領域をスキャンすることで、テーブルリスト36cを再構築することが可能である。
また、上記8ブロック内の少なくとも先頭ページの予備領域には、ユーザーデータではなく小テーブルが格納されていることを示すフラグが記載されている。
このような第2の実施形態の記憶装置における、電源瞬断からのテーブルの再構築までの手順を、図10の概念図と図11のフロー図に関連付けて以下に説明する。テーブル構成については図8の例を使用する。
ステップST40:通常のアクセス動作中の処理;
ユーザーデータの書き込み量、あるいはライトポインタ34bの進捗量を基準に、RAM上に格納されているアドレス変換テーブル32bのフラッシュメモリデバイス29cへの強制保存を実施する。これは前述のようなエントリの不足とは関わり無く実施する。
ステップST41
ユーザーデータの書き込みが、ライトポインタ34bに従って実施される。ライトポインタ34bは、検索テーブル33bの各物理ブロックアドレスPBAを順にスキャンする形で空きブロックを検索しつつ、物理ページアドレス上を巡回している。ここで“0x0000”〜“0x07FF”の物理ブロックアドレスPBAに8ブロックごとの区切りを設ける。すなわち区切りは“0x0000”、“0x0008”、“0x0010”、・・・・・“0x07F0”、“0x07F8”のブロックアドレス上に各々設けられる。
ステップST42、ST43
ここでライトポインタが各区切りに達するごとに、RAM上の小テーブル37bをフラッシュメモリデバイス29cに強制保存する。保存方法は図9に説明した通りである。
なお、キャッシュが複数のエントリを持ち、RAM上に複数の小テーブルが登録されている場合には、それらを全て強制保存する。
ただし、小テーブルがRAM上に読み出された後全く更新されていない場合、上記保存は省略することが可能である。
ステップST50:電源瞬断からの復帰;
ステップST51
電源瞬断が発生し、その後システムを再起動する際は、まず各ブロックの先頭ページの予備領域がスキャンされる。ここに記載された周回カウンタ値が最も大きく、かつアドレスPBAが最も後方にある使用済みブロックが直近に書き込まれたブロックである。またそのブロック内のデータが残存する最上位アドレスのページが直近に書き込まれたページである。
ステップST52
こうして抽出された該当ブロック51cのアドレスが“0x022A”であったとする。その場合、RAM上の小テーブルがその直近で強制保存されたのは、ライトポインタ34cが“0x0228”のブロック52cに達した時であると解る。
したがって、小テーブルが最後に強制保存されてから後、新たに書き込まれたページの存在範囲は53cのブロック領域に限定される。さらに具体的には、左記領域に存在し、かつ予備領域に記載された周回カウンタ値が上記最大値と一致するページが、バックアップ後に書き込まれたページであると特定される。
ステップST53
一方、ステップST51における各ブロックの先頭ページ予備領域スキャンで、アドレス変換テーブルを保存した8ブロックを特定する。アドレス変換テーブルが格納されたブロックについてはさらにその中の全ページをスキャンして、各小テーブルと物理ページアドレスPPAとの対応を取得し、テーブルリスト36cを再生する。
ステップST54
領域53cの各ページの予備領域を順次スキャンする。予備領域に記載された周回カウンタ値から強制保存後に書き込まれたページを特定し、さらに予備領域に記載された論理ページアドレスLPA値から物理ページアドレスPPAとの対応を取得する。
これをフラッシュメモリデバイス内に保存されている小テーブルに反映させるには、以下の処理を行なう必要がある。
まず、ステップST54で再生されたテーブルリスト36cを参照し、上記論理ページアドレスに対応する小テーブルの所在を得る。次に、該当する小テーブルをフラッシュメモリデバイスからRAM内に読み出して、上記アドレス対応を反映させるべく更新処理を行なう。最後に、RAM内の小テーブルをフラッシュメモリデバイスに書き戻して保存する。小テーブルの保存手順は段落[0079]以降に前述した手順に従う。
上記作業を繰り返すことで、最新のアドレス変換テーブルが再構築される。
ところで、ステップST54においてアドレス対応を小テーブルに反映させるには、ページごとに小テーブルの読み出しと保存が必要である。この作業には400μ秒程度の時間を要する。
しかし第1の実施形態と比較して、領域53cのアドレススキャン範囲は最大で8ブロック(2kページ)に縮小されており、アドレス変換テーブルの再生に要するトータルの所要時間はほぼ同等となる。
一方、本第2の実施形態における小テーブルの強制保存に関しては、ライトポインタが8ブロック(2kページ)分進行するごとに僅か1ページの書き込みで良い。あるいはRAM上に4つの小テーブルが格納されている場合でも4ページの書き込みで良く、相対的な作業のオーバーヘッドは僅かである。
したがって、第1の実施形態において課題であったアドレス変換テーブルの保存作業におけるオーバーヘッドは、本第2の実施形態では大幅に低減されている。また、必要なRAMも大幅に節約されている。
なお、上の手順では、ステップST53におけるテーブルリスト38cの再生に小テーブルのスキャンを使用した。しかし、ステップST52のアドレス変換テーブル強制保存の際、それに引き続いてテーブルリスト36cをフラッシュメモリデバイス内にバックアップ保存しておけば、ステップST53はバックアップされたテーブルリストを読み出すのみで良く、小テーブルのスキャンは不要である。
すなわち、アドレス変換テーブルとテーブルリストの状態がステップST43で保存されていれば、それ以降の電源瞬断までの両者更新経緯は、ステップST51〜ST54で強制保存後にユーザーデータが書き込まれたページを特定し、その予備領域を順次検査して対応する小テーブルの更新を進めて行くことで、完全な再生が可能である。
また、ステップST43のテーブル保存はライトポインタの進捗ではなく、フラッシュメモリに書き込まれたユーザーデータ量に応じて実施しても良い。この場合たとえばテーブル保存時にその時点でのライトポインタ34cの所在をフラッシュメモリ内に同時に保存しておくことで、保存後にユーザーデータが書き込まれたページを限定的に特定できる。このようなバリエーションが存在し得るのは、第1の実施形態の場合と全く同様である。
ところでここまでは、独立した記憶装置の内部に、アドレス変換等各種制御を実装する場合について説明してきた。しかしアドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施することも可能である。このような形態は、特にフラッシュメモリが内部に組み込まれた、安価なコンピュータシステムに適している。そのようなコンピュータシステムの例を図12に示す。
図12は、アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
この場合、ホストシステム60dは、CPU61dとシステムメモリ62dを含む。
CPU61dは32ビットのシステムバス63dを介してシステムメモリであるRAM62dと接続されている。さらに、システムバス63dにはブリッジ回路64dが接続されており、ブリッジ回路64dに繋がる32ビットのデータバス28dには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ25d,26dが並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ24dは、ブリッジ回路24dに内蔵されている。
ブリッジ回路24dは、CPU61dから各種コマンドを受け取り、フラッシュメモリ25d、26dとCPU61dまたはシステムメモリ62dとの間のデータのやり取りを、ページバッファ24dを用いて媒介する。また必要に応じて転送データにECC符号化によるエラー補正を施す。
ブリッジ回路24dが受け取るコマンドは、たとえばフラッシュメモリ25d、26dの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ62d内には上記フラッシュ記憶システムを制御するためのドライバ66dが常駐している。このドライバ66dは、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル32dを参照してアクセス時のページアドレスを変換する。
また、データ更新時には検索テーブル33dとライトポインタ34dを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路64dに送信する。また同時に変換前の論理ページアドレスを送信し、それはユーザーデータと一括して書き込み先ページの予備領域に記録される。
すなわちこのようなケースでは、CPU61dとシステムメモリ62dよりなるホストシステム65d自体が図3における制御回路22dの役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。すなわちドライバ66dは各種テーブルやポインタを使用し、OSやアプリケーションから論理アドレスを受け、物理アドレスPPAを生成してブリッジ回路64dにコマンドを送信することで、フラッシュメモリ25d、26dの各種アクセスを実施する。
なお、これらアドレス変換テーブル32d、検索テーブル33d、およびライトポインタ34dには、たとえば図4に示したテーブル32、33、よびポインタ34と同様のものが使用される。
このようなシステムにおいても本発明の概念は同様に適用することが可能である。すなわちドライバ66dは、システムメモリ62d内に構築されたアドレス変換テーブル32dを適時フラッシュメモリ25d、26d内に保存する。電源瞬断が発生した際の再起動時には、直近のテーブル保存以降にユーザーデータの書き込みが実施されたページを特定し、その冗長領域からその後のテーブル更新状態を取得する。これを保存したアドレス変換テーブルに反映させることで、完全なアドレス変換テーブルを再構築することができる。
NAND型フラッシュメモリの内部構成例を示す図である。 フラッシュメモリにおける書き込みとマッピング手順を説明するための図である。 本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。 アドレス変換テーブル、および検索テーブルの構成例を示す図である。 記憶装置の内部におけるフラッシュメモリデバイスへの具体的アクセス処理を説明するためのフローチャートである。 第1の実施形態においてテーブル再構築する際のメモリの概念図である。 第1の実施形態においてテーブル再構築する際の処理を説明するためのフローチャートである。 第2の実施形態に係るアドレス変換テーブルを分割するテーブルの管理例を示す図である。 第2の実施形態において小テーブルのフラッシュメモリへの保存処理を示す図である。 第2の実施形態における電源瞬断からのテーブルの再構築までの手順を説明するための図である。 第2の実施形態における電源瞬断からのテーブルの再構築までの手順を説明するためのフローチャートである。 アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
符号の説明
20・・・記憶装置、21・・・インターフェース回路、22・・・制御回路、23・・・内部バス、24・・・ページバッファ、25,26・・・NAND型フラッシュメモリ、27・・・制御回路、28・・・メモリバス、29・・・フラッシュメモリデバイス(フラッシュメモリモジュール)、30・・・RAM、31・・・ワーキングエリア、32,32b,32d・・・アドレス変換テーブル、33,33b,33c・・・検索テーブル、34,34b,34c,34d・・・ライトカウンタ、36,36b・・・周回カウンタ、40,60b・・・ホストシステム。

Claims (18)

  1. 主記憶媒体としてのフラッシュメモリデバイスと、
    アドレス変換テーブルが格納される第2メモリと、
    上記フラッシュメモリデバイスと上記第2メモリの制御を行う制御部と、を有し、
    上記フラッシュメモリデバイスは、データ格納単位である複数のページによって形成され、かつ各ページは予備領域を有しており、
    上記制御部は、
    上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存する機能と、
    コマンドに応じてユーザーデータの書き込み、更新が実施される際、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納し、その際入力アドレスに基づく論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録し、上記各ページの予備領域には、対応する論理ページアドレスを特定するための情報を格納する機能と、
    当該記憶装置を起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を検出する機能と、
    上記ページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築する機能と、を有する
    記憶装置。
  2. 上記制御部は、
    記憶装置を起動する際、直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を全て包含するフラッシュメモリデバイス上のページアドレス領域を限定的に特定し、その領域内のページの予備領域を検査することで、上記テーブル保存以降のテーブル更新状態を再生する
    請求項1記載の記憶装置。
  3. 上記制御部は、
    ユーザーデータの書き込みを、規定のページアドレス順に沿って空き領域が検索されることで実施し、当該書き込みの進行度合いを基準にして上記アドレス変換テーブルの保存を実施する
    請求項1記載の記憶装置。
  4. 上記制御部は、
    ユーザーデータの書き込みは、記憶装置内に保存されたページアドレスポインタの進行に従って実施し、当該ポインタの進行度合いを基準にしてアドレス変換テーブルの保存を実施する
    請求項1記載の記憶装置。
  5. 上記制御部は、
    ユーザーデータの書き込みを、規定のページアドレス順に沿って空き領域が検索されることで実施し、上記アドレス変換テーブルの保存時には、その時点での検索場所を示す情報を保存する
    請求項1記載の記憶装置。
  6. 上記第2メモリ内のアドレス変換テーブルは、フラッシュメモリデバイス内に保存されたアドレス変換テーブル全体の一部であり、上記アドレス変換テーブル全体は複数の小テーブルに分割されてフラッシュメモリデバイス内に保存されており、各小テーブルごとに必要に応じて上記第2メモリ内に読み出されて使用される
    請求項1記載の記憶装置。
  7. 主記憶媒体としてのフラッシュメモリデバイス、
    アドレス変換テーブルが格納される第2メモリ、および
    上記フラッシュメモリデバイスと上記第2メモリの制御を行う制御部を有する記憶装置と、
    上記フラッシュメモリデバイスのデータにアクセス可能なホストしての処理装置と、を有し、
    上記フラッシュメモリデバイスは、データ格納単位である複数のページによって形成され、かつ各ページは予備領域を有しており、
    上記制御部は、
    上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存する機能と、
    上記処理装置からのコマンドに応じてユーザーデータの書き込み、更新が実施される際、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納し、その際上記処理装置からの入力アドレスに基づく論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録し、上記各ページの予備領域には、対応する論理ページアドレスを特定するための情報を格納する機能と、
    当該記憶装置を起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を検出する機能と、
    上記ページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築する機能と、を有する
    コンピュータシステム。
  8. 上記制御部は、
    システムを起動する際、直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を全て包含するフラッシュメモリデバイス上のページアドレス領域を限定的に特定し、その領域内のページの予備領域を検査することで、上記テーブル保存以降のテーブル更新状態を再生する
    請求項7記載のコンピュータシステム。
  9. 上記制御部は、
    ユーザーデータの書き込みを、規定のページアドレス順に沿って空き領域が検索されることで実施し、当該書き込みの進行度合いを基準にして上記アドレス変換テーブルの保存を実施する
    請求項7記載のコンピュータシステム。
  10. 上記制御部は、
    ユーザーデータの書き込みは、上記記憶装置内に保存されたページアドレスポインタの進行に従って実施し、当該ポインタの進行度合いを基準にしてアドレス変換テーブルの保存を実施する
    請求項7記載のコンピュータシステム。
  11. 上記制御部は、
    ユーザーデータの書き込みを、規定のページアドレス順に沿って空き領域が検索されることで実施し、上記アドレス変換テーブルの保存時には、その時点での検索場所を示す情報を保存する
    請求項7記載のコンピュータシステム。
  12. 上記第2メモリ内のアドレス変換テーブルは、フラッシュメモリデバイス内に保存されたアドレス変換テーブル全体の一部であり、上記アドレス変換テーブル全体は複数の小テーブルに分割されてフラッシュメモリデバイス内に保存されており、各小テーブルごとに必要に応じて上記第2メモリ内に読み出されて使用される
    請求項7記載のコンピュータシステム。
  13. 主記憶媒体としてのフラッシュメモリデバイスと、
    アドレス変換テーブルが格納される第2メモリと、を有する記憶装置の管理方法であって、
    上記フラッシュメモリデバイスを、データ格納単位である複数のページによって形成し、かつ各ページには予備領域を持たせるステップ、
    上記フラッシュメモリデバイスに、特定の論理ページアドレスに対応したユーザーデータが書き込む際は、ユーザーデータをフラッシュメモリデバイス内の適当な空き領域に、上記ページ単位で格納するステップと、
    上記ページ単位で格納する際、上記論理ページアドレスとフラッシュメモリデバイス上の格納先ページアドレスとの対応を、上記アドレス変換テーブルに記録するステップと、
    各ページの予備領域に対応する論理ページアドレスを特定するための情報を格納するステップと、
    上記第2メモリ内のアドレス変換テーブルを、フラッシュメモリデバイスに適時保存するステップと、
    システムを起動する際、少なくとも直近のテーブル保存以降にユーザーデータの書き込みが行なわれたページ群を検出するステップと、
    上記ページアドレス領域内のページ群の予備領域を検査し、上記テーブル保存以降のテーブル更新状態を再生することで、テーブルを再構築するステップと
    を有する記憶装置の管理方法。
  14. システムを起動する際、直近のテーブル保存以降にユーザーデータの書き込みが行われたページ群を全て包含するフラッシュメモリデバイス上のページアドレス領域を限定的に特定し、その領域内のページの予備領域を検査することで、上記テーブル保存以降のテーブル更新状態を再生する
    請求項13記載の記憶装置の管理方法。
  15. ユーザーデータの書き込みは、規定のページアドレス順に沿って空き領域が検索されることで実施し、当該書き込みの進行度合いを基準にしてアドレス変換テーブルの保存を実施する
    請求項13記載の記憶装置の管理方法。
  16. ユーザーデータの書き込みは、システム内のRAMまたはレジスタに保存されたページアドレスポインタの進行に従って実施し、当該ポインタの進行度合いを基準にしてアドレス変換テーブルの保存を実施する
    請求項13記載の記憶装置の管理方法。
  17. ユーザーデータの書き込みは、規定のページアドレス順に沿って空き領域が検索されることで実施し、上記アドレス変換テーブルの保存時には、その時点での検索場所を示す情報を保存する
    請求項13記載の記憶装置の管理方法。
  18. 上記第2メモリ内のアドレス変換テーブルは、フラッシュメモリデバイス内に保存されたアドレス変換テーブル全体の一部であり、上記アドレス変換テーブル全体は複数の小テーブルに分割されてフラッシュメモリデバイス内に保存されており、各小テーブルごとに必要に応じて上記第2メモリ内に読み出して使用する
    請求項13記載の記憶装置の管理方法。
JP2007012608A 2007-01-23 2007-01-23 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 Expired - Fee Related JP4967680B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007012608A JP4967680B2 (ja) 2007-01-23 2007-01-23 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US12/003,889 US8745310B2 (en) 2007-01-23 2008-01-03 Storage apparatus, computer system, and method for managing storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007012608A JP4967680B2 (ja) 2007-01-23 2007-01-23 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法

Publications (2)

Publication Number Publication Date
JP2008181204A JP2008181204A (ja) 2008-08-07
JP4967680B2 true JP4967680B2 (ja) 2012-07-04

Family

ID=39642375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007012608A Expired - Fee Related JP4967680B2 (ja) 2007-01-23 2007-01-23 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法

Country Status (2)

Country Link
US (1) US8745310B2 (ja)
JP (1) JP4967680B2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
KR101515525B1 (ko) * 2008-10-02 2015-04-28 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR101555022B1 (ko) * 2008-12-02 2015-09-23 삼성전자주식회사 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법
JP4439578B1 (ja) * 2008-12-24 2010-03-24 株式会社東芝 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
JP2010152517A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法
JP5198245B2 (ja) 2008-12-27 2013-05-15 株式会社東芝 メモリシステム
JP2010165251A (ja) * 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
JP2010282369A (ja) * 2009-06-03 2010-12-16 Toshiba Corp メモリシステム
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
JP5377175B2 (ja) * 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置
US8745357B2 (en) * 2009-11-30 2014-06-03 Hewlett-Packard Development Company, L.P. Remapping for memory wear leveling
US20110208898A1 (en) * 2010-02-23 2011-08-25 Samsung Electronics Co., Ltd. Storage device, computing system, and data management method
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US8966176B2 (en) 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
KR20110139956A (ko) * 2010-06-24 2011-12-30 삼성전자주식회사 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법
JP5646402B2 (ja) * 2011-07-06 2014-12-24 パナソニック株式会社 不揮発性メモリのページ管理方法
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
US9507639B2 (en) * 2012-05-06 2016-11-29 Sandisk Technologies Llc Parallel computation with multiple storage devices
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
KR20150020384A (ko) * 2013-08-13 2015-02-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9798470B2 (en) * 2015-01-23 2017-10-24 Toshiba Memory Corporation Memory system for storing and processing translation information
US10055236B2 (en) 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US10353813B2 (en) * 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof
KR20200089547A (ko) * 2019-01-17 2020-07-27 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
KR20220067797A (ko) * 2020-11-18 2022-05-25 에스케이하이닉스 주식회사 메모리 컨트롤러

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0877074A (ja) * 1994-09-09 1996-03-22 Hitachi Ltd フラッシュメモリを用いた記憶装置システム
US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
JP2001243110A (ja) * 1999-12-20 2001-09-07 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法
JP4037605B2 (ja) * 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
US7617352B2 (en) * 2000-12-27 2009-11-10 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
JP3526452B2 (ja) * 2001-12-18 2004-05-17 株式会社東芝 ディスクアレイ装置及びデータバックアップ方法
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
JP2005222202A (ja) * 2004-02-04 2005-08-18 Matsushita Electric Ind Co Ltd 不揮発性記憶装置のデータ保護方法
EP3422583B1 (en) * 2004-08-30 2020-07-08 Google LLC Systems and methods for providing nonvolatile memory management in wireless phones
WO2006067839A1 (ja) * 2004-12-22 2006-06-29 Renesas Technology Corp. 記憶装置及びコントローラ
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
US7917723B2 (en) * 2005-12-01 2011-03-29 Microsoft Corporation Address translation table synchronization
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Also Published As

Publication number Publication date
US20080177937A1 (en) 2008-07-24
US8745310B2 (en) 2014-06-03
JP2008181204A (ja) 2008-08-07

Similar Documents

Publication Publication Date Title
JP4967680B2 (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
JP5076411B2 (ja) 記憶装置、コンピュータシステム
US9183132B2 (en) Storage device, computer system, and storage system
US8180955B2 (en) Computing systems and methods for managing flash memory device
US8312204B2 (en) System and method for wear leveling in a data storage device
US5907856A (en) Moving sectors within a block of information in a flash memory mass storage architecture
JP2008146255A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP4910360B2 (ja) 記憶装置、コンピュータシステム、およびデータ書き込み方法
US8516182B2 (en) Controller and memory system for managing data
US20100241798A1 (en) Robust index storage for non-volatile memory
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2004318940A (ja) 記憶装置
KR20060127760A (ko) 기억장치
KR20080037283A (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
JP2006515086A (ja) ブロック内のページをグループ化する方法及び装置
JP2008146254A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP3421581B2 (ja) 不揮発性半導体メモリを用いた記憶装置
US20100318726A1 (en) Memory system and memory system managing method
JP2004303238A (ja) フラッシュメモリアクセス装置及び方法
US8555086B2 (en) Encrypting data on a non-volatile memory
JP5036078B2 (ja) 記憶装置
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
JP2007334413A (ja) 記憶装置
JP2008181203A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091127

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: 20120306

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120319

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150413

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4967680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150413

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees