JP2015082240A - ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 - Google Patents
ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 Download PDFInfo
- Publication number
- JP2015082240A JP2015082240A JP2013220317A JP2013220317A JP2015082240A JP 2015082240 A JP2015082240 A JP 2015082240A JP 2013220317 A JP2013220317 A JP 2013220317A JP 2013220317 A JP2013220317 A JP 2013220317A JP 2015082240 A JP2015082240 A JP 2015082240A
- Authority
- JP
- Japan
- Prior art keywords
- storage medium
- data
- area
- mpu
- storage
- 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.)
- Abandoned
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/7202—Allocation control and policies
-
- 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/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
【課題】不揮発性記憶媒体の実質的な記憶容量の低下を極力防止する。【解決手段】実施形態によれば、ストレージ装置は、不揮発性の第1の記憶媒体と、不揮発性の第2の記憶媒体と、キャッシュコントローラと、メインコントローラとを含む。前記第1の記憶媒体と比較して、前記第2の記憶媒体のアクセス速度は低く、且つ前記第2の記憶媒体の記憶容量は大きい。前記メンインコントローラは、ホスト装置からのアクセス要求に基づいて、前記キャッシュコントローラを制御し、且つ前記第2の記憶媒体にアクセスする。前記キャッシュコントローラは、前記第1の記憶媒体に格納されるべきデータを、前記第1の記憶媒体へのアクセスの結果に基づいて記憶性能の劣化が検出された少なくとも2つの領域に多重に書き込む。【選択図】 図1
Description
本発明の実施形態は、ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法に関する。
近年、アクセス速度及び記憶容量が異なる複数種類(例えば2種類)の不揮発性記憶媒体を備えたストレージ装置が開発されている。このようなストレージ装置の代表として、ハイブリッドドライブが知られている。ハイブリッドドライブは一般に、第1の不揮発性記憶媒体と、第1の不揮発性記憶媒体と比較してアクセス速度が低く且つ記憶容量が大きい第2の不揮発性記憶媒体とを備えている。
第1の不揮発性記憶媒体には、例えばNANDフラッシュメモリのような半導体メモリが用いられる。NANDフラッシュメモリは、単位容量当たりの単価は高いものの高速アクセスが可能な不揮発性記憶媒体として知られている。第2の不揮発性記憶媒体には、例えば磁気ディスクのようなディスク媒体が用いられる。ディスク媒体は、アクセス速度は低いものの単位容量当たりの単価が安い不揮発性記憶媒体として知られている。このため、ハイブリッドドライブは一般に、ディスク媒体(より詳細には、ディスク媒体を含むディスクドライブ)を主たるストレージとして用い、NANDフラッシュメモリ(より詳細には、ディスク媒体よりも高アクセス速度のNANDフラッシュメモリ)をキャッシュとして用いる。これにより、ハイブリッドドライブ全体のアクセス速度が高速化される。
このようなハイブリッドドライブでは、NANDフラッシュメモリの領域(記憶領域)が、ディスク媒体の領域よりも頻繁にアクセスされる。NANDフラッシュメモリの領域(より詳細には、領域の記憶性能)は、当該領域へのアクセス(より詳細には、データの書き込み/読み出し)の頻度に依存して劣化する。このため、NANDフラッシュメモリがキャッシュとして用いられるハイブリッドドライブでは、当該NANDフラッシュメモリの領域は劣化しやすい。
従来技術は、劣化によってリードエラーが発生した、NANDフラッシュメモリの領域を、使用不可能な領域(いわゆるバッド領域)として扱う。このため、バッド領域の数が増えると、NANDフラッシュメモリ(キャッシュ)の実質的な記憶容量が低下する。すると、キャッシュヒット率が低下して、ハイブリッドドライブ全体のパフォーマンスが低下する。
本発明が解決しようとする課題は、不揮発性記憶媒体の実質的な記憶容量の低下を極力防止できる、ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法を提供することにある。
実施形態によれば、ストレージ装置は、不揮発性の第1の記憶媒体と、不揮発性の第2の記憶媒体と、キャッシュコントローラと、メインコントローラとを含む。前記第1の記憶媒体と比較して、前記第2の記憶媒体のアクセス速度は低く、且つ前記第2の記憶媒体の記憶容量は大きい。前記メンインコントローラは、ホスト装置からのアクセス要求に基づいて、前記キャッシュコントローラを制御し、且つ前記第2の記憶媒体にアクセスする。前記キャッシュコントローラは、前記第1の記憶媒体に格納されるべきデータを、前記第1の記憶媒体へのアクセスの結果に基づいて記憶性能の劣化が検出された少なくとも2つの領域に多重に書き込む。
以下、実施の形態につき図面を参照して説明する。
図1は実施形態に係るハイブリッドドライブの典型的な構成を示すブロック図である。ハイブリッドドライブは、アクセス速度及び記憶容量が異なる複数種類、例えば2種類の不揮発性記憶媒体(つまり、第1の不揮発性記憶媒体及び第2の不揮発性記憶媒体)を備えている。本実施形態では、第1の不揮発性記憶媒体として、NANDフラッシュメモリ(以下、NANDメモリと称する)11が用いられ、第2の不揮発性記憶媒体として磁気ディスク媒体(以下、ディスクと称する)21が用いられる。ディスク21のアクセス速度及び記憶容量は、NANDメモリ11のそれらと比較して低速で且つ大容量である。
図1は実施形態に係るハイブリッドドライブの典型的な構成を示すブロック図である。ハイブリッドドライブは、アクセス速度及び記憶容量が異なる複数種類、例えば2種類の不揮発性記憶媒体(つまり、第1の不揮発性記憶媒体及び第2の不揮発性記憶媒体)を備えている。本実施形態では、第1の不揮発性記憶媒体として、NANDフラッシュメモリ(以下、NANDメモリと称する)11が用いられ、第2の不揮発性記憶媒体として磁気ディスク媒体(以下、ディスクと称する)21が用いられる。ディスク21のアクセス速度及び記憶容量は、NANDメモリ11のそれらと比較して低速で且つ大容量である。
図1に示されるハイブリッドドライブは、ソリッドステートドライブのような半導体ドライブユニット10と、ハードディスクドライブユニット(以下、HDDと称する)20とから構成される。半導体ドライブユニット10は、NANDメモリ11と、メモリコントローラ12とを含む。
メモリコントローラ12は、メインコントローラ27からのアクセス要求(例えば、ライト要求またはリード要求)に応じて、NANDメモリ11へのアクセスを制御する。本実施形態において、NANDメモリ11は、ホスト装置(以下、ホストと称する)からハイブリッドドライブへのアクセスの高速化のために、当該ホストによって最近アクセスされたデータを格納するためのキャッシュ(キャッシュメモリ)として用いられる。ホストは、図1に示されるハイブリッドドライブを、自身のストレージ装置として利用する。
メモリコントローラ12は、ホストインタフェースコントローラ(以下、ホストIFと称する)121と、メモリインタフェースコントローラ(以下、メモリIFと称する)122と、マイクロプロセッサユニット(MPU)123と、読み出し専用メモリ(ROM)124と、ランダムアクセスメモリ(RAM)125とを含む。ホストIF(第1のインタフェースコントローラ)121は、メインコントローラ27と接続されている。ホストIF121は、メインコントローラ27(より詳細には、メインコントローラ27の後述するMPU273)から転送される信号を受信し、且つ当該メインコントローラ27に信号を送信する。具体的には、ホストIF121は、メインコントローラ27から転送されるコマンド(ライトコマンド、リードコマンド等)を受信して、当該受信されたコマンドをMPU123に渡す。ホストIF121はまた、メインコントローラ27から転送されたコマンドに対するMPU123からの応答を、メインコントローラ27に返す。ホストIF121はまた、メインコントローラ27とMPU123との間のデータ転送を制御する。メモリIF(第2のインタフェースコントローラ)122はNANDメモリ11と接続されており、MPU123の制御の下でNANDメモリ11にアクセスする。
MPU123は、メインコントローラ27から転送されたコマンドに基づいてNANDメモリ11にアクセスするための処理(例えば、ライト処理またはリード処理)を、第1の制御プログラムに従って実行する。本実施形態において第1の制御プログラムは、ROM124に予め格納されている。なお、ROM124に代えて、書き換え可能な不揮発性ROM、例えばフラッシュROMを用いても良い。RAM125の記憶領域の一部は、MPU123のワーク領域として用いられる。RAM125の記憶領域の他の一部は、後述するアクセスカウンタテーブル125aを格納するのに用いられる。
HDD20は、ディスク21と、ヘッド22と、スピンドルモータ(SPM)23と、アクチュエータ24と、ドライバ集積回路(IC)25と、ヘッドIC26と、メインコントローラ27と、フラッシュROM(FROM)28と、RAM29とを含む。ディスク21は、例えばその一方の面に、データが磁気記録される記録面を備えている。ディスク21はSPM23によって高速に回転させられる。SPM23は、ドライバIC25から供給される駆動電流(または駆動電圧)により駆動される。
ディスク21(より詳細には、ディスク21の記録面)は、例えば同心円状の複数のトラックを備えている。なお、ディスク21が、スパイラル状に配置される複数のトラックを備えていても構わない。ヘッド(ヘッドスライダ)22はディスク21の記録面に対応して配置される。ヘッド22は、アクチュエータ24のアームから延出したサスペンションの先端に取り付けられている。アクチュエータ24は、当該アクチュエータ24の駆動源となるボイスコイルモータ(VCM)240を有している。VCM240は、ドライバIC25から供給される駆動電流により駆動される。ヘッド22は、アクチュエータ24がVCM240によって駆動されることにより、ディスク21上を当該ディスク21の半径方向に、円弧を描くように移動する。
図1の構成では、単一枚のディスク21を備えたHDD20を想定している。しかし、ディスク21が複数枚積層配置されたHDDであっても構わない。また、図1の構成では、ディスク21は、その一方の面に記録面を備えている。しかし、ディスク21がその両面に記録面を備え、当該両記録面にそれぞれ対応してヘッドが配置されても構わない。
ドライバIC25は、メインコントローラ27(より詳細には、メインコントローラ27内のMPU273)の制御に従い、SPM23とVCM240とを駆動する。ドライバIC25によりVCM240が駆動されることで、ヘッド22はディスク21上の目標トラックに位置付けられる。
ヘッドIC26はヘッドアンプとも呼ばれている。ヘッドIC26は、例えばアクチュエータ24の所定の箇所に固定され、フレキシブル印刷回路基板(FPC)を介してメインコントローラ27と電気的に接続されている。但し、図1では、作図の都合で、ヘッドIC26は、アクチュエータ24から離れた箇所に配置されている。
ヘッドIC26は、ヘッド22のリード素子によりリードされた信号(つまりリード信号)を増幅する。ヘッドIC26はまた、メインコントローラ27(より詳細には、メインコントローラ27内のR/Wチャネル271)から出力されるライトデータをライト電流に変換して、当該ライト電流をヘッド22のライト素子に出力する。
メインコントローラ27は、例えば、複数の要素が単一チップに集積された大規模集積回路(LSI)によって実現される。メインコントローラ27は、リード/ライト(R/W)チャネル271と、ハードディスクコントローラ(HDC)272と、MPU273とを含む。
R/Wチャネル271は、リード/ライトに関連する信号を処理する。即ちR/Wチャネル271は、ヘッドIC26によって増幅されたリード信号をデジタルデータに変換し、このデジタルデータからリードデータを復号する。R/Wチャネル271はまた、MPU273を介してHDC272から転送されるライトデータを符号化し、この符号化されたライトデータをヘッドIC26に転送する。
HDC272は、ホストインタフェース(ストレージインタフェース)30を介してホホストと接続されている。ホスト及び図1に示されるハイブリッドドライブは、パーソナルコンピュータ、ビデオカメラ、音楽プレーヤー、携帯端末、携帯電話機、或いはプリンタ装置のような電子機器に備えられている。
HDC272は、ホストから転送される信号を受信し、且つホストに信号を転送するホストインタフェースコントローラとして機能する。具体的には、HDC272は、ホストから転送されるコマンド(ライトコマンド、リードコマンド等)を受信して、当該受信されたコマンドをMPU273に渡す。HDC272はまた、ホストと当該HDC272との間のデータ転送を制御する。HDC272は更に、MPU273、R/Wチャネル271、ヘッドIC26及びヘッド22を介してディスク21へのデータのライト及びディスク21からのデータのリードを制御するディスクインタフェースコントローラとしても機能する。
MPU273は、ホストからのアクセス要求(ライト要求またはリード要求)に応じて、メモリコントローラ12を介したNANDメモリ11へのアクセスと、R/Wチャネル271、ヘッドIC26、及びヘッド22を介したディスク21へのアクセスとを制御する。この制御は、第2の制御プログラムに従って実行される。本実施形態において、第2の制御プログラムは、FROM28に格納されている。RAM29の記憶領域の一部は、MPU273のワーク領域として用いられる。
なお、イニシャルプログラムローダ(IPL)がFROM28に格納され、第2の制御プログラムがディスク21に格納されていても構わない。この場合、ハイブリッドドライブの電源が投入された際に、MPU273がIPLを実行することにより、第2の制御プログラムがディスク21からFROM28またはRAM29にロードされれば良い。
図2は、図1に示されるNANDメモリ11の記憶領域の典型的なフォーマットを示す概念図である。NANDメモリ11の記憶領域は、図2に示されるように、システム領域111及びキャッシュ領域112とに区分される。つまり、NANDメモリ11は、システム領域111とキャッシュ領域112とを備えている。システム領域111は、システム(例えば、メモリコントローラ12)が管理のために利用する情報を格納するのに用いられる。キャッシュ領域112は、ホストによって最近アクセスされたデータを格納するのに用いられる。NANDメモリ11の記憶領域は、M個のブロック(つまり、物理ブロック)から構成される。NANDメモリ11では、このブロックを単位にデータが一括して消去される。つまりブロックは、データが消去される単位である。
システム領域111は、物理ブロック番号が0乃至N−1のN個(N<M)の物理ブロックから構成される。キャッシュ領域112は、物理ブロック番号がN乃至M−1のM−N個の物理ブロックから構成される。一般に、M−NはNに対して十分に大きい。
システム領域111の一部は、キャッシュ管理テーブル111a、第1の空き領域リスト111b、第2の空き領域リスト111c、及びバッドブロックリスト111dを格納するのに用いられる。以下の説明では、キャッシュ管理テーブル111aが単にテーブル111aと表記されることもある。また、第1の空き領域リスト111b、第2の空き領域リスト111c、及びバッドブロックリスト111dが、それぞれ単にリスト111b、リスト111c、及びリスト111dと表記されることもある。
周知のように、NANDメモリ11では、データが既に格納されているいる領域に、新たなデータ(更新データ)を上書きすることはできない。このため、テーブル111aのシステム領域111内の位置は、当該テーブル111aが更新される都度変更される。つまり、更新されたテーブル(新テーブル)111aは、旧テーブル111aが格納されている領域とは異なる領域に書かれる。リスト111b,111c,及び111dのシステム領域111内の位置についても同様である。
テーブル111a、リスト111b、111c、及び111dの、システム領域111内の位置及びサイズの情報は、RAM125の第1の領域及びディスク21の第2の領域に格納されているものとする。本実施形態では、ディスク21の第2の領域に格納されている情報は、ハイブリッドドライブの電源の投入時にMPU273の制御によって読み出されて、ホストIF121及びMPU123を介してRAM125の第1の領域にロードされる。テーブル111a、リスト111b、111c、または111dの、システム領域111内の位置が変更された場合、MPU123及びMPU273は、それぞれ、RAM125の第1の領域内の対応する位置情報及びディスク21の第2の領域内の対応する位置情報を更新する。
キャッシュ管理テーブル111aは、NANDメモリ11のキャッシュ領域112内のブロック各々を管理するためのブロック管理情報を格納するのに用いられる。本実施形態において、このブロック管理情報は、キャッシュ領域112内のブロック(予め定められたサイズの領域)各々に格納されたデータのアドレス(記憶場所)に関するキャッシュディレクトリ情報として用いられる。キャッシュディレクトリ情報は、前記データの物理的なアドレスと前記データの論理的なアドレスとの対応を管理するための情報を含む。前記データの物理的なアドレス(ここでは、物理ブロック番号)は、当該データが格納されているNANDメモリ11内のブロック(領域)の位置を示す。前記データの論理的なアドレス(ここでは、論理ブロック番号)は、当該データの論理アドレス空間内の位置(記憶場所)を示す。キャッシュ管理テーブル111aのデータ構造については後述する。
第1の空き領域リスト111bは、キャッシュ領域112内の第1のタイプの空き領域を登録するのに用いられる。つまり第1の空き領域リスト111bは、第1のタイプの空き領域を管理するための第1の管理情報として用いられる。第1のタイプの空き領域とは、正常な空き領域を指す。第2の空き領域リスト111cは、キャッシュ領域112内の第2のタイプの空き領域を登録するのに用いられる。つまり第2の空き領域リスト111cは、第2のタイプの空き領域を管理するための第2の管理情報として用いられる。第2のタイプの空き領域とは、過去にリードエラーが発生した空き領域を指す。バッドブロックリスト111dは、使用不可能なブロック(物理ブロック)、つまりバッドブロック(領域)を登録するのに用いられる。つまりバッドブロックリスト111dは、バッドブロックを管理するための第3の管理情報として用いられる。
図3は、図1に示されるメモリコントローラ12が有するRAM125の記憶領域の典型的なフォーマットを示す概念図である。RAM125の記憶領域の一部は、アクセスカウンタテーブル125aを格納するのに用いられる。アクセスカウンタテーブル125aは、キャッシュ領域112のM−N個のブロック各々のアクセスカウント情報を、当該ブロックの物理ブロック番号に対応付けて格納するのに用いられる。アクセスカウント情報は、アクセスカウントとタイムスタンプとを含む。
アクセスカウントは、対応する物理ブロック番号のブロックへのアクセスの回数を示す。アクセスカウントの初期値はゼロである。タイムスタンプは、例えば、対応する物理ブロック番号のブロックがアクセスされた直近の時刻を示す。
アクセスカウンタテーブル125aは、ハイブリッドドライブの電源が遮断される際に、MPU123の制御によってRAM125から読み出されて、メインコントローラ27に転送される。メインコントローラ27のMPU273は、アクセスカウンタテーブル125aを、ディスク21の第3の領域に保存する。第3の領域に保存されたアクセスカウンタテーブル125aは、ハイブリッドドライブの電源の投入時にMPU273の制御によって読み出されて、ホストIF121及びMPU123を介してRAM125にロードされる。
図4は、図2に示されるキャッシュ管理テーブル111aのデータ構造の例を示す。キャッシュ管理テーブル111aは、キャッシュ領域112のM−N個のブロック各々のブロック管理情報を、当該ブロックの物理ブロック番号に対応付けて格納するのに用いられる。ブロック管理情報は、論理ブロック番号及びブロック状態情報を含む。
論理ブロック番号は、対応する物理ブロック番号のブロックが割り当てられた論理ブロックを示す。論理ブロックは、ホストから認識される論理アドレス空間を物理ブロックと同一のサイズで区分することによって得られる領域(論理領域)を指す。ブロック状態情報は、対応する物理ブロック番号のブロックの状態を示す。本実施形態では、ブロック状態情報の示すブロック状態は、W,A及びBのいずれかである。ブロック状態Wは、対応するブロックのデータが無効であることを示す。ブロック状態Aは、対応する物理ブロック番号のブロックへのアクセスの回数が1であることを示す。ブロック状態Bは、対応する物理ブロック番号のブロックへのアクセスの回数が2以上であることを示す。
このように、ブロック管理情報は、対応する物理ブロック番号のブロックを管理するための情報である。このブロック管理情報は、対応する物理ブロック番号のブロックと、当該ブロックが割り当てられた論理ブロックとの対応を示す。したがってブロック管理情報は、対応する論理ブロックに格納されたデータのNANDメモリ11における記憶場所を管理するためのキャッシュディレクトリ情報であるともいえる。そこで以下の説明では、ブロック管理情報をキャッシュディレクトリ情報と称することもある。
キャッシュ領域112のブロックの各々は、複数のページ、例えば128のページ(物理ページ)から構成されるものとする。この場合、論理ブロックも128のページ(論理ページ)から構成される。本実施形態では、1ブロックは256キロバイト(KB)であり、1ページは2KBである。
キャッシュ管理テーブル111aは更に、キャッシュ領域112のM−N個のブロック毎で、且つ当該ブロックのページ毎に、当該ページ毎のページ管理情報を、当該ブロックの物理ブロック番号及び当該ページ毎の物理ページ番号に対応付けて格納するのに用いられる。つまり、ブロック管理情報(キャッシュディレクトリ情報)は、対応するブロックのページ毎のページ管理情報を含む。ページ管理情報は、論理ページ番号及びページ状態情報を含む。
論理ページ番号は、対応する物理ブロック番号及び物理ページ番号のページ(物理ページ)が割り当てられた論理ページ(論理ブロック内の論理ページ)を示す。つまり、論理ページ番号は、対応する物理ページに格納されたデータの論理アドレス空間内の位置(記憶場所)を示す。よって、ページ管理情報もキャッシュディレクトリ情報として用いられる。
ページ状態情報は、対応する物理ページの状態を示す。ページ状態情報の示すページ状態は、IV及びVのいずれかである。ページ状態IVは、対応するページのデータが無効であることを示す。ページ状態Vは、対応するページのデータが有効であることを示す。
次に、図1のハイブリッドドライブの動作について、ホストから当該ドライブにライト要求(コマンド)が発行された場合を例に、図5を参照して説明する。図5は、ハイブリッドドライブのメモリコントローラ12(より詳細には、メモリコントローラ12のMPU123)によって実行されるライト処理の典型的な手順を示すフローチャートである。
まずホストが、図1に示されるハイブリッドドライブに、ホストインタフェース30を介して第1のライト要求を発行したものとする。この第1のライト要求は、開始論理アドレスと、書き込まれるべきデータ(書き込みデータ)D1のサイズを示すサイズ情報とを含む。本実施形態において、ホストからハイブリッドドライブへのアクセスの最小単位は2ページ(つまり、4KB)である。但し、以下では、説明の簡略化のために、ホストはブロックを単位にハイブリッドドライブにアクセスするものとする。ここでは、開始論理アドレスは、論理ブロック番号がXの論理ブロックXの開始位置を示し、データD1のサイズは、1ブロックのサイズ(256KB)であるものとする。
図1に示されるハイブリッドドライブにおけるメインコントローラ27のHDC272は、ホストからの第1のライト要求(コマンド)を受信する。HDC272はまた、第1のライト要求で指定される書き込みデータD1を、ホストから受信する。
受信された第1のライト要求は、HDC272によってメインコントローラ27のMPU273に渡される。するとMPU273は、第2のライト要求及び書き込みデータD1を、メモリコントローラ12に送出する。第2のライト要求は、第1のライト要求と同様に、開始論理アドレスと、書き込みデータD1のサイズを示すサイズ情報とを含む。つまり、第2のライト要求は、受信された第1のライト要求に対応する。
メモリコントローラ12は、MPU273からの第2のライト要求に応じてキャッシュコントローラとして機能する。即ちメモリコントローラ12は、NANDメモリ11をキャッシュメモリとして制御することにより、第2のライト要求を実行する。
まず、第2のライト要求は、メモリコントローラ12のホストIF121によって受信された後、当該ホストIF121によりメモリコントローラ12のMPU123に渡される。するとMPU123は、第2のライト要求で指定されたデータD1をNANDメモリ11のキャッシュ領域112に書き込むためのライト処理(つまり、キャッシュライト処理)を、図5のフローチャートによって示される手順で次のように実行する。
MPU123はまず、パラメータLBAに開始論理アドレスを代入し、且つパラメータS(D1)にデータD1のサイズを代入する(ステップ501)。次にMPU123は、NANDメモリ11のシステム領域111に格納されている第1の空き領域リスト111bを参照する(ステップ502)。そしてMPU123は、第1の空き領域リスト111bから、パラメータS(D1)の示す値以上のサイズの空き領域FAを探索する(ステップ503)。
本実施形態では、パラメータS(D1)の示す値は、1ブロックのサイズ(256KB)を示す。この場合、MPU123は、例えば1つの空きブロックを、空き領域FAとして探索する。そしてMPU123は、空き領域FAの探索に成功したかを判定する(ステップ504)。
もし、空き領域(ブロック)FAの探索に成功したならば(ステップ504のYes)、MPU123は、メモリIF122を制御することにより、NANDメモリ11の空き領域FAにデータD1を書き込む(ステップ505)。この場合、MPU123は、探索された空き領域FAに関する情報を、第1の空き領域リスト111bから削除する。
本実施形態では、第1の空き領域リスト111bはNANDメモリ11のシステム領域111に格納される。このためMPU123は実際には、探索された空き領域FAに関する情報が上述のように削除された新たな第1の空き領域リスト111bを、システム領域111内の空き領域に書き込む。そこで、システム領域111内の空き領域も、第1の空き領域リスト111bを用いて管理されても良い。また、システム領域111内の空き領域を管理するための空き領域リストが、第1の空き領域リスト111bとは別に、当該システム領域111に格納されても良い。
MPU123はデータD1の書き込み(ステップ505)を実行すると、当該書き込みに成功したかを判定する(ステップ506)。ここで、データD1の書き込みが正常に完了し、したがってデータD1の書き込みに成功したものとする(ステップ506のYes)。この場合、MPU123は、領域FAをデータD1のデータ領域として管理するためのブロック管理情報(つまり、キャッシュディレクトリ情報)を、キャッシュ管理テーブル111aに登録する(ステップ507)。ステップ507においてMPU123は、メインコントローラ27(MPU273)からの第2のライト要求に対する完了応答(つまり、ライト完了応答)を、ホストIF121により当該メインコントローラ27に返信させる。MPU123はステップ507を実行すると、ライト処理を終了する。
メインコントローラ27のMPU273は、メモリコントローラ12のホストIF121からの完了応答を受信すると、ホストからの第1のライト要求に対する完了応答を、HDC272により当該ホストに返信させる。この完了応答は、例えば、第1のライト要求に基づく後述するディスクライト処理の完了を待つことなくホストに返される。
ここで、ステップ507における登録動作について、空き領域FAが物理ブロック番号がNのブロックNである場合を例に具体的に説明する。まずMPU123は、パラメータLBAの示す開始論理アドレスから論理ブロック番号を抽出する。本実施形態では、論理アドレスの所定の上位アドレス(例えば、論理アドレスの下位18ビットを除く上位アドレス)によって論理ブロック番号が示される。上述の開始論理アドレスの例では、論理ブロック番号としてXが抽出される。
そこでMPU123は、論理ブロック番号X及びブロック状態情報(より詳細には、ブロック状態Aを示すブロック状態情報)を、物理ブロック番号Nに対応付けてキャッシュ管理テーブル111aに登録する。またMPU123は、論理ページ番号0乃至127及びページ状態情報(より詳細には、ページ状態Vを示すページ状態情報)を、物理ブロック番号Nに対応付けられた物理ページ番号0乃至127にそれぞれ対応付けてキャッシュ管理テーブル111aに登録する。
このようにして、物理ブロックN(より詳細には、物理ブロックNに格納された、論理ブロックXのデータD1)に関するキャッシュディレクトリ情報が、キャッシュ管理テーブル111aにおいて最新の状態に更新される。このとき、論理ブロックXの旧データに関するキャッシュディレクトリ情報がキャッシュ管理テーブル111aに登録されているならば、当該キャッシュディレクトリ情報(つまり、旧キャッシュディレクトリ情報)は無効化される。
キャッシュディレクトリ情報の無効化は、次のように行われる。まず、論理ブロックXの旧データが、物理ブロック番号がYの物理ブロックYに格納されているものとする。つまりキャッシュ管理テーブル111aに登録されている、論理ブロックXの旧データに関する旧キャッシュディレクトリ情報(つまり、物理ブロックYに関するブロック管理情報)により、論理ブロック番号Xが物理ブロック番号Yに対応付けられているものとする。この場合、MPU123は、旧キャッシュディレクトリ情報のブロック状態情報を、状態AまたはBを示す情報から状態Wを示す状態に更新する。
本実施形態では、キャッシュ管理テーブル111aはNANDメモリ11のシステム領域111に格納される。このため実際には、ステップ507では、更新されたキャッシュディレクトリ情報を含む新たなキャッシュ管理テーブル111aが、システム領域111内の空き領域に書き込まれる。一方、古いキャッシュ管理テーブル111aは無効化される。
なお上述の例と異なり、データD1のサイズが、1ブロックのサイズよりも小さい、例えば2ページのサイズ(4KB)であるものとする。データD1の最初の論理ページ(第1の論理ページ)の論理ページ番号がX0で、次の論理ページ(第2の論理ページ)の論理ページ番号がX1(X1=X0+1)であるものとする。第1の論理ページは、論理ブロック番号がXの論理ブロック内の論理ページであり、論理ページ番号X0は、開始論理アドレスの所定の中位アドレス(例えば、論理アドレスの下位18ビットの上位側の7ビット)で示される。つまり、論理ページ番号X0は、開始論理アドレスから抽出される。
さて、データD1のサイズが2ページのサイズの場合、MPU123は、探索された空き領域FA(つまり、物理ブロック番号がNのブロックN)における2つの空きページ(例えば、ページ0及び1)にデータD1を書き込めば良い。この場合、MPU123は、論理ページ番号X0及びX1と、ページ状態情報(より詳細には、ページ状態Vを示すページ状態情報)とを、物理ブロック番号Nに対応付けられた物理ページ番号0及び1にそれぞれ対応付けてキャッシュ管理テーブル111aに登録する。なお、データD1のサイズが2ページのサイズの場合、MPU123は、少なくとも2つの空きページを空き領域FAとして探索すれば良い。
さて、ステップ507においてMPU123は、RAM125に格納されているアクセスカウンタテーブル125aを更新する。上述の例では、MPU123は、物理ブロック番号Nに対応付けてアクセスカウンタテーブル125aに格納されているアクセスカウント情報を更新する。即ちMPU123は、物理ブロック番号Nに対応付けられているアクセスカウント情報のアクセスカウントを1だけインクリメントし、且つ当該アクセスカウント情報に現在の時刻を示すタイムスタンプを設定する。
次に、空き領域FAへのデータD1の書き込みに失敗した場合(ステップ506のNo)について説明する。この場合、MPU123は、例えば、領域FAを含む物理ブロック(ここでは、物理ブロックN)をバッドブロックとして、バッドブロックリスト111dに追加する(ステップ508)。つまりMPU123は、物理ブロックNを示す情報(例えば、物理ブロックNの物理ブロック番号N)を、バッドブロックリスト111dに追加する。ここで、領域FAのサイズが1ブロックのサイズよりも小さく、且つ領域FAを含む物理ブロック内の別の領域AmのデータDmがNANDメモリ11に格納されているものとする。この場合、ステップ508においてMPU123は、キャッシュ管理テーブル111aに登録されている、データDm(データDmのアドレス)に関するキャッシュディレクトリ情報を無効化する。この無効化は、領域AmのデータDmを削除することと等価である。MPU123は、ステップ508を実行すると、ステップ502に戻る。
次に、空き領域FAの探索に失敗した場合(ステップ504のNo)について説明する。この場合、MPU123は、空き領域を確保するために、以下の処理(ステップ509乃至516)を実行する。
まずMPU123は、キャッシュ管理テーブル111a(より詳細には、キャッシュ管理テーブル111a内のブロック状態情報)を参照する(ステップ509)。そしてMPU123は、アクセス頻度が低く、且つ多重化されていない物理領域(ブロック)、つまり非多重化領域(ブロック)NMAを探索する(ステップ510)。
アクセス頻度が低い物理領域(ブロック)とは、状態(ブロック状態)がAの物理領域(ブロック)、つまり1回だけアクセスされた物理領域(ブロック)を指す。一方、非多重化領域(ブロック)NMAとは、1つの論理領域(ブロック)に1つの物理領域(ブロック)のみが割り当てられている場合における、当該物理領域(ブロック)を指す。これに対し、1つの論理領域(ブロック)に少なくとも2つの物理領域(ブロック)が割り当てられている場合における、当該少なくとも2つの物理領域(ブロック)を多重化領域(ブロック)と称する。
本実施形態では、説明の簡略化のために、非多重化領域NMAとして、アクセス頻度が低い非多重化ブロックが探索されるものとする。この非多重化ブロックの探索は次のように行われる。
まずMPU123は、ブロック状態Aと対応付けられている物理ブロック番号(以下、第1の物理ブロック番号と称する)及び論理ブロック番号の組をキャッシュ管理テーブル111aから検索する。次にMPU123は、検索された論理ブロック番号と対応付けられていて、且つ第1の物理ブロック番号とは異なる第2の物理ブロック番号を検索する。もし、第2の物理ブロック番号の検索に失敗したならば、MPU123は、第1の物理ブロック番号で示される物理ブロックは、アクセス頻度の低い非多重化領域NMAであると判定する。
なお、複数の非多重化領域NMAがブロック状態Aと対応付けられている場合、最も古い時刻にアクセスされた非多重化領域NMAをMPU123が選択すると良い。つまりMPU123がアクセスカウンタテーブル125aを参照することにより、ブロック状態Aと対応付けられている複数の非多重化領域NMAから、最も古い時刻を示すタイムスタンプと対応付けられている非多重化領域NMAを選択すると良い。またMPU123が、最初に探索された非多重化領域NMAを選択しても良い。
次に、ブロック状態Aと対応付けられている非多重化領域NMAが存在しない場合を想定する。この場合、MPU123が、ブロック状態Bと対応付けられている複数の非多重化領域NMAから、最も古い時刻を示すタイムスタンプと対応付けられている非多重化領域NMAを選択すれば良い。また、MPU123がアクセスカウンタテーブル125aを参照することにより、ブロック状態Aと対応付けられている複数の非多重化領域NMAから、最小のアクセスカウントと対応付けられている非多重化領域NMAを選択しても良い。
次に、第2の物理ブロック番号の検索に成功した場合について説明する。この場合、MPU123は、第1の物理ブロック番号で示される物理ブロックは非多重化領域NMAでないと判定する。そこでMPU123は、非多重化領域NMAの探索を継続する。
このようにして、非多重化領域NMAが探索されたものとする(ステップ510)。この場合、MPU123は、非多重化領域NMAのサイズ(ここでは、256KB)を、パラメータS(Dn)に代入する(ステップ511)。次にMPU123は、第2の空き領域リスト111cを参照する(ステップ512)。そしてMPU123は、第2の空き領域リスト111cから、パラメータS(Dn)の示す値以上のサイズの2つの空き領域FA1及びFA2を探索する(ステップ513)。
本実施形態では、パラメータS(Dn)の示す値は、1ブロックのサイズ(256KB)を示す。この場合、MPU123は、例えば2つの空きブロックを、空き領域FA1及びFA2として探索する。そしてMPU123は、空き領域FA1及びFA2の探索に成功したかを判定する(ステップ514)。
もし、空き領域(ブロック)FA1及びFA2の探索に成功したならば(ステップ514のYes)、MPU123は、メモリIF122を制御することにより、NANDメモリ11の空き領域FA1及びFA2の双方にデータDnを書き込む(ステップ515)。つまりMPU123は、データDnを空き領域FA1及びFA2に多重に書き込む。
また、ステップ515においてMPU123は、探索された空き領域FA1及びFA2に関する情報を、第2の空き領域リスト111cから削除する。また、ステップ515においてMPU123は、キャッシュ管理テーブル111aに登録されている、データDnに関するキャッシュディレクトリ情報を更新する。更に、ステップ515においてMPU123は、空き領域FA1に対応する物理ブロック番号と対応付けてアクセスカウンタテーブル125aに格納されているアクセスカウント情報と、空き領域FA2に対応する物理ブロック番号と対応付けてアクセスカウンタテーブル125aに格納されているアクセスカウント情報とを更新する。そしてMPU123は、非多重化領域NMAを、第1の空き領域リスト111bに追加する(ステップ516)。これにより空き領域の数(つまり、空き領域の記憶容量)が増加する。
非多重化領域NMAが非多重化領域ブロックである本実施形態では、MPU123は、当該非多重化領域NMAを第1の空き領域リスト111bに登録した際に、当該非多重化領域NMAのデータを一括して消去する。これにより、当該非多重化領域NMAは、空き領域として利用可能となる。これに対し、非多重化領域NMAが物理ブロック内の一部の領域Aaであるものとする。この場合、物理ブロック内の残りの領域Abが既に第1の空き領域リスト111bに登録されているならば、MPU123は当該物理ブロックのデータを一括して消去する。一方、物理ブロック内の領域Abが第1の空き領域リスト111bに登録されていないならば、MPU123は、当該領域Abが第1の空き領域リスト111bに登録されるのを待って当該物理ブロックのデータを一括して消去する。
MPU123は、ステップ516を実行するとステップ502に戻る。一方、空き領域FA1及びFA2の探索に失敗したならば(ステップ514のNo)、MPU123は非多重化領域NMAのデータDnを削除する(ステップ517)。具体的には、MPU123は、キャッシュ管理テーブル111aに登録されている、データDnに関するキャッシュディレクトリ情報を無効化する。そしてMPU123は、非多重化領域NMAを第1の空き領域リスト111bに追加し(ステップ516)、しかる後にステップ502に戻る。
さて、メインコントローラ27のMPU273は、第1のライト要求に対応する第2のライト要求をメモリコントローラ12に送出した際に、第1のライト要求に基づくディスクライト処理を開始する。つまりMPU273は、ヘッド22が開始論理アドレスで指定されるディスク21上の目標トラックに位置付けられるように、ドライバIC25を制御する。そしてMPU273は、ヘッド22が目標トラックに位置付けられている状態で、R/Wチャネル271及びヘッドIC26を介して、ヘッド22によりデータD1を書き込ませる。
次に、図1のハイブリッドドライブの動作について、ホストから当該ドライブにリード要求(コマンド)が発行された場合を例に、図6を参照して説明する。図6は、ハイブリッドドライブのメモリコントローラ12(より詳細には、メモリコントローラ12のMPU123)によって実行されるリード処理の典型的な手順を示すフローチャートである。
まず、ホストが図1に示されるハイブリッドドライブに第1のリード要求を発行したものとする。この第1のリード要求は、開始論理アドレスと、読み出されるべきデータ(読み出しデータ)Dのサイズを示すサイズ情報とを含む。ここでは、開始論理アドレスは、論理ブロック番号がYの論理ブロックYの開始位置を示し、データDのサイズは、1ブロックのサイズであるものとする。
ホストからの第1のリード要求(コマンド)は、メインコントローラ27のHDC272によって受信された後、当該HDC272によってMPU273に渡される。するとMPU273は、第2のリード要求を、メモリコントローラ12に送出する。第2のリード要求は、第1のリード要求と同様に、開始論理アドレスと、読み出しデータDのサイズを示すサイズ情報とを含む。つまり、第2のリード要求は、受信された第1のリード要求に対応する。MPU273によって送出された第2のリード要求は、メモリコントローラ12のホストIF121によって受信された後、当該ホストIF121によりメモリコントローラ12のMPU123に渡される。
するとMPU123は、第2のリード要求で指定されたデータDをNANDメモリ11のキャッシュ領域112から読み出すためのリード処理(つまり、キャッシュリード処理)を、図6のフローチャートによって示される手順で次のように実行する。
MPU123はまず、パラメータLBAに開始論理アドレスを代入し、且つパラメータS(D)にデータDのサイズを代入する(ステップ601)。次にMPU123は、パラメータLBAの示す開始論理アドレスに基づいてキャッシュ管理テーブル111aを参照する(ステップ602)。このステップ602の詳細は次の通りである。
まずMPU123は、パラメータLBAの示す開始論理アドレスから論理ブロック番号を抽出する。上述の開始論理アドレスの例では、論理ブロック番号としてYが抽出される。MPU123は、抽出された論理ブロック番号Yに基づいてキャッシュ管理テーブル111aを参照する。そしてMPU123は、抽出された論理ブロック番号Yを含む有効なキャッシュディレクトリ情報(つまり、ブロック状態AまたはBを示すキャッシュディレクトリ情報)を、キャッシュ管理テーブル111aから検索する。
なお本実施形態では、キャッシュディレクトリ情報は、物理ブロック番号に対応付けてキャッシュ管理テーブル111aに登録されている。したがって、物理ブロック番号に基づいてキャッシュディレクトリ情報を検索する場合には、高速検索が可能である。これに対し、上述のように論理ブロック番号に基づいてキャッシュディレクトリ情報を検索する場合には、高速検索は難しい。そこで、論理ブロック番号(論理アドレス)を物理ブロック番号(物理アドレス)に変換するのに用いられるアドレス変換テーブルがシステム領域111に格納されても構わない。アドレス変換テーブルには、論理ブロック毎に、論理ブロック番号と物理ブロック番号との対応を示すアドレス変換情報が登録される。この場合、MPU123は、キャッシュディレクトリ情報をキャッシュ管理テーブル111aに登録する際に、当該キャッシュディレクトリ情報に対応するアドレス変換情報を、アドレス変換テーブルに登録すれば良い。
さてMPU123は、キャッシュ管理テーブル111aを参照することによりキャッシュディレクトリ情報検索を実行すると(ステップ602)、ステップ603に進む。ステップ603においてMPU123は、目的のキャッシュディレクトリ情報が検索できたかにより、データD(つまり、第2のリード要求で指定されたデータD)がNANDメモリ11に格納されているかを判定する。データDがNANDメモリ11に格納されているキャッシュヒットの場合(ステップ603のYes)、MPU123はステップ604に進む。
ステップ604においてMPU123は、NANDメモリ11内でデータDが多重化されているかを判定する。この判定は、次の手順で行われる。まず、MPU123は前記抽出された論理ブロック番号Yに基づいてキャッシュ管理テーブル111aを参照する。そしてMPU123は、抽出された論理ブロック番号Yを含み、且つステップ602で検索されたキャッシュディレクトリ情報(以下、第1のキャッシュディレクトリ情報と称する)とは異なる有効なキャッシュディレクトリ情報(以下、第2のキャッシュディレクトリ情報と称する)を、キャッシュ管理テーブル111aから検索する。MPU123は、この第2のキャッシュディレクトリ情報が検索できたかにより、データDが多重化されているかを判定する。
もし、データDが多重化されていないならば(ステップ604のNo)、MPU123はステップ605に進む。ステップ605においてMPU123は、メモリIF122を制御することにより、第1のキャッシュディレクトリ情報の示す物理ブロックからデータDを読み出す。メモリIF122は、データDの読み出しで、誤り訂正が不能なエラー(つまり、リードエラー)が検出されたかを、MPU123に通知する。また、リードエラーが検出されなかった場合、メモリIF122は正常に読み出されたデータDをMPU123に転送する。
MPU123は、データDの読み出しでリードエラーが発生したかを、メモリIF122からの前記通知に基づいて判定する(ステップ606)。もし、リードエラーが発生しなかったならば(ステップ606のNo)、MPU123は、正常に読み出されたデータDを、ホストIF121によりメインコントローラ27(MPU273)に転送させる(ステップ607)。即ちホストIF121は、メインコントローラ27からの第2のリード要求に対する完了応答(つまり、リード完了応答)を用いて、当該メインコントローラ27にデータDを返す。
また、ステップ607においてMPU123は、キャッシュ管理テーブル111a内の第1のキャッシュディレクトリ情報のブロック状態情報を、当該ブロック状態情報の示すブロック状態AまたはBに応じて更新する。つまり、ブロック状態情報がブロック状態Aを示しているならば、MPU123は、当該ブロック状態情報がブロック状態Bを示すように、当該ブロック状態情報を更新する。これに対し、ブロック状態情報がブロック状態Bを示しているならば、MPU123は、当該ブロック状態情報の更新を抑止する。これにより、NANDメモリ11のシステム領域111において、キャッシュ管理テーブル111aの更新(つまり書き込み)が頻繁に発生して、当該システム領域111が劣化するのを防止できる。
更にステップ607においてMPU123は、アクセスカウンタテーブル125aを更新する。即ちMPU123は、アクセスカウンタテーブル125aにおいて、第1のキャッシュディレクトリ情報中の物理ブロック番号と対応付けられているアクセスカウントを1だけインクリメントし、且つ現在の時刻を示すタイムスタンプを当該物理ブロック番号に対応付けて登録する。これにより、MPU123はリード処理を終了する。
メインコントローラ27のMPU273は、メモリコントローラ12のホストIF121からのリード完了応答を受信すると、HDC272によりデータDをホストに転送させる。即ちHDC272は、ホストからの第1のリード要求に対する完了応答を用いて、当該ホストにデータDを返す。
次に、データDが多重化されている場合(ステップ604のYes)について説明する。図4に示されるキャッシュ管理テーブル111aの例では、論理ブロック番号がYの論理ブロックYのデータDは、物理ブロック番号がN+1の物理ブロックN+1と、物理ブロック番号がN+3の物理ブロックN+3とに、多重に格納されている。このように、データDが多重化されている場合(ステップ604のYes)、MPU123はステップ608に進む。物理ブロックN+1及びN+3は、上述のライト処理の説明から明らかなように、第2の空き領域リスト111cから探索されて、データDの多重書き込みに用いられたブロックである。つまり物理ブロックN+1及びN+3は、過去にリードエラーが発生した際に第2の空き領域リスト111cに登録され、その後、データDの多重書き込みに用いられたブロックである。
ステップ608においてMPU123は、データDが多重に格納されているNANDメモリ11内の領域(ここでは、物理ブロックN+1及びN+3)から、1つの領域を(例えば、物理ブロックN+1)を選択する。するとMPU123は、ステップ605に進む。ステップ605においてMPU123は、NANDメモリ11内の選択された領域(物理ブロックN+1)からデータDを読み出す。MPU123は、データDの読み出しでリードエラーが発生したかを判定する(ステップ606)。
次に、データDの読み出しでリードエラーが発生した場合(ステップ606のYes)について説明する。この場合、MPU123は、リードエラーが発生した領域(つまり、リードエラーが検出されたデータDが格納されている領域)を、第2の空き領域リスト111cに追加する(ステップ609)。したがって、ステップ608で選択された物理ブロックN+1からのデータDの読み出しでリードエラーが発生したならば、当該物理ブロックN+1が再び第2の空き領域リスト111cに追加される。
次にMPU123は、データDが格納されている未選択の領域が存在するかを判定する(ステップ610)。物理ブロックN+1からのデータDの読み出しでリードエラーが発生した本実施形態では、物理ブロックN+3が未選択の領域として存在する(ステップ610のYes)。この場合、MPU123は、ステップ604に戻る。そしてMPU123は、ステップ604からステップ608に進んで、物理ブロックN+3を選択し、しかる後に当該物理ブロックN+3からデータDを読み出す(ステップ605)。
物理ブロックN+1及びN+3は、前述したように過去にリードエラーが発生したブロックである。このような物理ブロックN+1及びN+3は、従来技術では、バッドブロック(つまり、使用不可能なブロック)としてバッドブロックリスト111dに登録されて、データ格納に使用されない。これに対して本実施形態では、物理ブロックN+1及びN+3は、データの多重化に用いられるブロック(多重化記憶領域)として第2の空き領域リスト111cに登録される。
このため本実施形態によれば、リードエラーの発生に伴って、キャッシュ領域112の記憶容量が単純に減少するのを防止できる。つまり本実施形態によれば、リードエラーが発生した2つの物理ブロックをデータの多重化(二重化)に用いることにより、仮想的なバッドブロックの数を1つ(1/2)に減らすことができる。
本実施形態では、物理ブロックN+1及びN+3の双方に、データDが多重に書き込まれている。このような物理ブロックN+1及びN+3から、メモリコントローラ12(MPU123)がデータDをそれぞれ読み出す動作ROa及びRObを実行する場合を想定する。読み出し動作ROa及びRObでリードエラーが発生する確率PEa及びPEb(0<PEa<1,0<PEb<1)は高い。しかし、両読み出し動作のいずれにおいてもリードエラーが発生する確率PE(PE=PEa・PEb)は、PEa及びPEbよりも低い(PE<PEa,PE<PEb)。
つまり本実施形態によれば、物理ブロックN+1及びN+3を用いたデータDの多重化により、当該データDの読み出しに成功する確率Psを高めることができる。これにより、キャッシュメモリとして用いられるNANDメモリ11からのデータ読み出しにおける性能(つまり、リードキャッシュ性能)を向上することができる。NANDメモリ11では、リードディスターブに起因するリードエラーが、リードの回数に比例して発生する。したがって本実施形態では、このようなリードエラーに特に効果を発揮する。なお、前記確率Psは、1−PE(つまり、1−PEa・PEb)で表される。
本実施形態では、データDは、第2の空き領域リスト111cから探索された2つの物理ブロック(空き領域)に多重に書き込まれる。しかしデータDが、3つ以上の物理ブロックに多重に書き込まれても良い。この場合、データ書き込みの性能が低下し、且つキャッシュ管理テーブル111aの更新回数が増加するものの、データDの読み出しに成功する確率を一層向上することができる。
ここで、物理ブロックN+3からのデータDの読み出しでリードエラーが発生しなかったものとする(ステップ606のNo)。この場合、MPU123はステップ607に進む。ステップ607においてMPU123は、前述したようにホストIF121によりメインコントローラ27にデータDを転送させる。
これに対し、物理ブロックN+3からデータDの読み出しでリードエラーが発生したならば(ステップ606のYes)、MPU123は再びステップ609に進む。ステップ609においてMPU123は、物理ブロックN+3を再び第2の空き領域リスト111cに追加する。このとき、データDが格納されている未選択の領域は存在しない(ステップ610のNo)。この場合、MPU123はステップ611に進む。
ステップ611においてMPU123は、メインコントローラ27からの第2のリード要求の示すデータDの読み出しでエラーが発生したことを示す応答(エラー応答)を、ホストIF121により当該メインコントローラ27に返信させる。これにより、MPU123はリード処理を終了する。また、MPU123は、データDがNANDメモリ11に格納されていないキャッシュミスヒットの場合にも(ステップ603のNo)、ステップ611を実行する。
さて、メインコントローラ27のMPU273は、第1のリード要求に対応する第2のリード要求をメモリコントローラ12に送出した際に、第1のリード要求に基づくディスクリード処理を開始する。つまりMPU273は、ヘッド22が開始論理アドレスで指定されるディスク21上の目標トラックに位置付けられるように、ドライバIC25を制御する。そしてMPU273は、ヘッド22が目標トラックに位置付けられている状態で、ヘッド22によりデータDを読み出させる。
ディスクリード処理の途中で、メモリコントローラ12から完了応答が返された場合、MPU273はディスクリード処理を強制終了する。これに対し、ディスクリード処理の途中で、メモリコントローラ12からエラー応答が返された場合、MPU273はディスクリード処理を継続する。この場合、MPU273は、ディスクリード処理でリードされたデータDを、HDC272によりホストに転送させる。またMPU273は、ディスクリード処理でリードされたデータDをNANDメモリ11に書き込むことを指示するためのライト要求(より詳細には、前記第2のライト要求に相当するライト要求)をメモリコントローラ12に送出する。MPU123は、このライト要求に基づいて、前述のようなライト処理(キャッシュライト処理)を実行する。但し、ここでは、データDがNANDメモリ11に書き込まれる。
なお、メモリコントローラ12からエラー応答が返された場合に、MPU273がディスクリード処理を開始しても良い。この場合、ホストからの第1のリード要求に対する応答性は低下するものの、MPU273の制御は簡略化される。
前記実施形態では、テーブル111aと、リスト111b,111c及び111dとが、NANDメモリ11に格納される。しかし、テーブル111aと、リスト111b,111c及び111dとが、RAM125に格納されても良い。この場合、ハイブリッドドライブの電源の突然の遮断により、テーブル111aの内容と、リスト111b,111c及び111dの内容とが消失する可能性がある。このような消失が起きると、MPU123は、NANDメモリ11から目的のデータ(例えばデータD)を読み出すことができなくなる。しかし、データDはディスク21にも格納されている。このため、データDは、上述のディスクリード処理により当該ディスク21から読み出される。したがって、ホストからの第1のリード要求に対するハイブリッドドライブの応答性能は一時的に低下するものの、メインコントローラ27は、当該第1のリード要求に対する応答として、データDを当該ホストに返すことができる。
テーブル111aと、リスト111b,111c及び111dとが、RAM125に格納される構成では、ハイブリッドドライブの電源が遮断される際に、これらがディスク21の第3の領域に保存されると良い。また前記実施形態において、NANDメモリ11のシステム領域111に格納されているテーブル111aと、リスト111b,111c及び111dとが、ハイブリッドドライブの電源が投入された際に、当該NANDメモリ11からRAM125にロードされて用いられても良い。この場合、RAM125に格納されているテーブル111aと、リスト111b,111c及び111dとが、ハイブリッドドライブの電源が遮断される際にNANDメモリ11に保存され、且つNANDメモリ11内の旧テーブル111aと、旧リスト111b,111c及び111dとが無効化されれば良い。このような構成では、アクセスカウント情報がテーブル(キャッシュ管理テーブル)111aに登録されても良い。この場合、アクセスカウンタテーブル125aは不要となる。
以上説明した少なくとも1つの実施形態によれば、リードエラーが発生した記憶領域を有効に利用することで不揮発性記憶媒体の実質的な記憶容量の低下を極力防止できる
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…半導体ドライブユニット、11…NANDメモリ(NANDフラッシュメモリ、第1の不揮発性記憶媒体)、12…メモリコントローラ(キャッシュコントローラ)、20…HDD(ハードディスクドライブユニット)、21…ディスク(磁気ディスク、第2の不揮発性記憶媒体)、22…ヘッド、27…メインコントローラ、111…システム領域、111a…キャッシュ管理テーブル、111b…第1の空き領域リスト、111c…第2の空き領域リスト、111d…バッドブロックリスト、112…キャッシュ領域、121…ホストIF(ホストインタフェースコントローラ)、122…メモリIF(メモリインタフェースコントローラ)、123…MPU(マイクロプロセッサユニット、プロセッサ)、125…RAM、125a…アクセスカウンタテーブル。
Claims (7)
- 不揮発性の第1の記憶媒体と、
前記第1の記憶媒体と比較してアクセス速度が低速で記憶容量が大きい不揮発性の第2の記憶媒体と、
前記第1の記憶媒体をキャッシュとして制御するキャッシュコントローラと、
ホスト装置からのアクセス要求に基づいて、前記キャッシュコントローラを制御し、且つ前記第2の記憶媒体にアクセスするメインコントローラとを具備し、
前記キャッシュコントローラは、前記第1の記憶媒体に格納されるべきデータを、前記第1の記憶媒体へのアクセスの結果に基づいて記憶性能の劣化が検出された少なくとも2つの領域に多重に書き込む
ストレージ装置。 - 前記キャッシュコントローラは、前記少なくとも2つの領域に多重に書き込まれたデータの読み出しを、前記ホスト装置からのリード要求に応じて前記メインコントローラによって要求された場合、前記少なくとも2つの領域から前記要求されたデータを読み出すリード動作を順に実行し、読み出しに成功したデータを前記メインコントローラに返す請求項1記載のストレージ装置。
- 前記キャッシュコントローラは、
前記第1の記憶媒体内の空き領域を、第1の管理情報を用いて管理し、
前記ホスト装置からのライト要求に応じて前記メインコントローラによって書き込みが要求された場合、前記要求されたデータを書き込むのに用いられる領域を前記第1の管理情報から探索する
請求項2記載のストレージ装置。 - 前記キャッシュコントローラは、
前記劣化が検出された領域を、第2の管理情報を用いて管理し、
前記第1の管理情報からの領域の探索に失敗した場合、前記第1の記憶媒体においてデータが格納されている非多重化領域を選択し、
前記選択された非多重化領域に格納されているデータを前記格納されるべきデータとして、前記少なくとも2つの領域に多重に書き込み、
前記多重書き込みの後、前記選択された非多重化領域を空き領域として前記第1の管理情報に追加する
請求項3記載のストレージ装置。 - 前記キャッシュコントローラは、
前記第1の不揮発性記憶媒体に書き込まれたデータの記憶場所と当該記憶場所へのアクセスの状況とを、前記第1の不揮発性記憶媒体内の予め定められたサイズの領域毎に管理し、
前記第1の管理情報からの領域の探索に失敗した場合、前記管理されるアクセス状況に基づいて前記非多重化領域を選択する
請求項4記載のストレージ装置。 - 不揮発性の第1の記憶媒体と、前記第1の記憶媒体よりもアクセス速度が低速で記憶容量が大きい不揮発性の第2の記憶媒体とを具備するストレージ装置に適用されるキャッシュコントローラであって、
前記第1の記憶媒体をキャッシュとして制御するプロセッサと、
ホスト装置からのアクセス要求に基づいて前記キャッシュコントローラを制御するメインコントローラであって前記アクセス要求に基づいて前記第2の記憶媒体にアクセスするメインコントローラと前記プロセッサとの間の信号の送信及び受信を制御する第1のインタフェースコントローラと、
前記マイクロプロセッサの制御の下で前記第1の記憶媒体にアクセスする第2のインタフェースコントローラとを具備し、
前記プロセッサは、前記第1の記憶媒体に格納されるべきデータを、前記第1の記憶媒体へのアクセスの結果に基づいて記憶性能の劣化が検出された少なくとも2つの領域に多重に書き込む
キャッシュコントローラ。 - 不揮発性の第1の記憶媒体と、前記第1の記憶媒体よりもアクセス速度が低速で記憶容量が大きい不揮発性の第2の記憶媒体と、ホスト装置からのアクセス要求に基づいて前記第2の記憶媒体にアクセスするメインコントローラとを具備するストレージ装置に備えられ、前記アクセス要求に基づく前記メインコントローラによる制御の下で、前記第1の記憶媒体をキャッシュとして制御するキャッシュコントローラに適用される、前記第1の記憶媒体にデータを書き込む方法であって、
前記第1の記憶媒体に格納されるべきデータを、前記第1の記憶媒体へのアクセスの結果に基づいて記憶性能の劣化が検出された少なくとも2つの領域に多重に書き込む
方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013220317A JP2015082240A (ja) | 2013-10-23 | 2013-10-23 | ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 |
US14/163,101 US20150113208A1 (en) | 2013-10-23 | 2014-01-24 | Storage apparatus, cache controller, and method for writing data to nonvolatile storage medium |
CN201410052122.5A CN104571939A (zh) | 2013-10-23 | 2014-02-14 | 存储装置、高速缓存控制器及数据写入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013220317A JP2015082240A (ja) | 2013-10-23 | 2013-10-23 | ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015082240A true JP2015082240A (ja) | 2015-04-27 |
Family
ID=52827221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013220317A Abandoned JP2015082240A (ja) | 2013-10-23 | 2013-10-23 | ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150113208A1 (ja) |
JP (1) | JP2015082240A (ja) |
CN (1) | CN104571939A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150138528A (ko) * | 2014-05-29 | 2015-12-10 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법 |
GB2540761B (en) * | 2015-07-23 | 2017-12-06 | Advanced Risc Mach Ltd | Cache usage estimation |
US10466908B2 (en) * | 2015-08-25 | 2019-11-05 | Toshiba Memory Corporation | Memory system that buffers data before writing to nonvolatile memory |
CN106502577A (zh) * | 2015-09-07 | 2017-03-15 | 龙芯中科技术有限公司 | 存储空间的写入加速方法、装置和系统 |
KR20180108939A (ko) * | 2017-03-23 | 2018-10-05 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11024382B2 (en) * | 2019-08-29 | 2021-06-01 | Micron Technology, Inc. | Fully associative cache management |
CN113495678B (zh) * | 2020-04-01 | 2022-06-28 | 荣耀终端有限公司 | 一种dm缓存的分配方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425337B (zh) * | 2007-10-29 | 2011-11-30 | 芯邦科技(深圳)有限公司 | 一种闪存数据存储方法和装置 |
US20090150721A1 (en) * | 2007-12-10 | 2009-06-11 | International Business Machines Corporation | Utilizing A Potentially Unreliable Memory Module For Memory Mirroring In A Computing System |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US9110594B2 (en) * | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
KR101826137B1 (ko) * | 2011-03-24 | 2018-03-22 | 삼성전자주식회사 | 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 |
US9772948B2 (en) * | 2012-07-06 | 2017-09-26 | Seagate Technology Llc | Determining a criterion for movement of data from a primary cache to a secondary cache |
US8996935B2 (en) * | 2012-12-07 | 2015-03-31 | International Business Machines Corporation | Memory operation of paired memory devices |
-
2013
- 2013-10-23 JP JP2013220317A patent/JP2015082240A/ja not_active Abandoned
-
2014
- 2014-01-24 US US14/163,101 patent/US20150113208A1/en not_active Abandoned
- 2014-02-14 CN CN201410052122.5A patent/CN104571939A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20150113208A1 (en) | 2015-04-23 |
CN104571939A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9507538B2 (en) | File management system for devices containing solid-state media | |
JP2015082240A (ja) | ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
US8706985B1 (en) | System and method for optimizing garbage collection in data storage | |
US8819375B1 (en) | Method for selective defragmentation in a data storage device | |
US9703699B2 (en) | Hybrid-HDD policy for what host-R/W data goes into NAND | |
JP2009020986A (ja) | ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法 | |
US8656097B2 (en) | Selection of data storage locations based on one or more conditions | |
US11232037B2 (en) | Using a first-in-first-out (FIFO) wraparound address lookup table (ALT) to manage cached data | |
KR101674015B1 (ko) | 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체 | |
US10152236B2 (en) | Hybrid data storage device with partitioned local memory | |
US9563397B1 (en) | Disk drive using non-volatile cache when garbage collecting log structured writes | |
US20160378357A1 (en) | Hybrid storage device and method for operating the same | |
JP2016004387A (ja) | ストレージシステム、メモリコントローラ、および制御方法 | |
US9189392B1 (en) | Opportunistic defragmentation during garbage collection | |
US8345370B2 (en) | Magnetic disk drive and refresh method for the same | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
US20120162809A1 (en) | Magnetic disk drive and method of accessing a disk in the drive | |
US20170090768A1 (en) | Storage device that performs error-rate-based data backup | |
KR20070060301A (ko) | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 | |
JP4919983B2 (ja) | データ記憶装置及びデータ記憶装置におけるデータ管理方法 | |
JP2015135620A (ja) | 記憶装置、及びデータの記憶方法 | |
JP2017151609A (ja) | ストレージ、ストレージシステム | |
CN117174118A (zh) | 机械硬盘故障预测方法及相关装置 | |
US20110093645A1 (en) | Method and apparatus to record data, method and apparatus to reproduce data, and recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160106 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20160229 |