(57)【要約】【課題】よりデータの冗長性を向上させるためのデータ管理を実現する不揮発性半導体メモリドライブ装置を提供する。【解決手段】本ＳＳＤ１２は、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上に、独立して動作可能なｎ個のＮＡＮＤメモリブロックを１組として複数のグループを構成する。制御部２０３のＲＡＩＤ管理部２０３１は、ｎ−１個のデータを書き込む毎にパリティデータを生成してｎ個目のデータとする書き込みを実行する。また、論理／物理アドレス管理部２０３２は、データの書き込み時、そのページの冗長領域に論理アドレスを格納する。ＲＡＩＤ管理部２０３１は、この冗長領域の論理アドレスについても、パリティデータを生成し、ｎ個目のデータを書き込むページの冗長領域に書き込む処理を実行する。【選択図】      図３
2010152551.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
前記不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するコントローラと、
を具備し、
前記コントローラは、
前記不揮発性半導体メモリ上における記憶領域の管理単位として、独立して動作可能なｎ個のメモリブロックを並列に接続して構成される複数のグループそれぞれについて、前記不揮発性半導体メモリへのデータの書き込みおよび前記不揮発性半導体メモリからのデータの読み出し単位であるページサイズのデータをｎ−１個書き込む毎に、当該ｎ−１個のデータの中の１つのデータを他のｎ−２個のデータから復元可能とする第１のパリティデータを生成し、この生成したパリティデータをｎ番目のページに書き込むデータ管理手段と、
各ページに格納される前記不揮発性半導体メモリ上におけるデータの管理単位として定義されるクラスタサイズの各データに割り当てられた、前記不揮発性半導体メモリの論理アドレス空間内における格納位置を示す論理アドレスを含む論理アドレス情報を、当該ページの冗長領域に格納する論理アドレス格納手段と、
を有し、
前記データ管理手段は、ｎ−１個のページの冗長領域に格納されたｎ−１個の論理アドレス情報の中の１つの論理アドレス情報を他のｎ−２個の論理アドレス情報から復元可能とする第２のパリティデータを生成し、前記第１のパリティデータをｎ番目のページに書き込む際に、この生成した第２のパリティデータを当該ｎ番目のページの冗長領域に書き込む手段を含む、
ことを特徴とする不揮発性半導体メモリドライブ装置。
【請求項２】
前記コントローラの前記データ管理手段は、いずれかのデータまたは論理アドレス情報が読み出せなくなった場合、他のｎ−２個のデータまたは論理アドレス情報と前記第１のパリティデータまたは前記第２のパリティデータとを用いて、当該読み出せなくなったデータまたは論理アドレス情報を復元し、この復元したデータまたは論理アドレス情報を他のページに再配置する手段を含むことを特徴とする請求項１記載の不揮発性半導体メモリドライブ装置。
【請求項３】
前記コントローラは、
前記不揮発性半導体メモリ上においてデータの再配置を実行する場合に、前記再配置されるデータを格納するページの冗長領域に格納された論理アドレス情報に含まれる当該データに割り当てられた論理アドレスを用いて、前記不揮発性半導体メモリの論理アドレス空間内での位置を示す論理アドレスと物理アドレス空間内での位置を示す物理アドレスとを対応づけるアドレステーブルを更新するアドレステーブル管理手段、
をさらに有することを特徴とする請求項１または２記載の不揮発性半導体メモリドライブ装置。
【請求項４】
前記コントローラの前記データ管理手段は、予め定められた期間毎に、前記ｎ−１個のデータおよび論理アドレス情報と前記第１および第２のパリティデータとの読み出しを行い、前記ｎ−１個のデータおよび論理アドレス情報が読み出し可能であるか否かを検査すると共に、前記第１および第２のパリティデータおよび前記第２のパリティデータの値が正しいか否かを検査する手段を含むことを特徴とする請求項１記載の不揮発性半導体メモリドライブ装置。
【請求項５】
不揮発性半導体メモリと、前記不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するコントローラとを有する不揮発性半導体メモリドライブ装置のデータ管理方法であって、
前記コントローラが、
前記不揮発性半導体メモリ上における記憶領域の管理単位として、独立して動作可能なｎ個のメモリブロックを並列に接続して構成される複数のグループそれぞれについて、前記不揮発性半導体メモリへのデータの書き込みおよび前記不揮発性半導体メモリからのデータの読み出し単位であるページサイズのデータをｎ−１個書き込む毎に、当該ｎ−１個のデータの中の１つのデータを他のｎ−２個のデータから復元可能とする第１のパリティデータを生成し、この生成したパリティデータをｎ番目のページに書き込むステップと、
各ページに格納される前記不揮発性半導体メモリ上におけるデータの管理単位として定義されるクラスタサイズの各データに割り当てられた、前記不揮発性半導体メモリの論理アドレス空間内における格納位置を示す論理アドレスを含む論理アドレス情報を、当該ページの冗長領域に格納するステップと、
ｎ−１個のページの冗長領域に格納されたｎ−１個の論理アドレス情報の中の１つの論理アドレス情報を他のｎ−２個の論理アドレス情報から復元可能とする第２のパリティデータを生成し、前記第１のパリティデータをｎ番目のページに書き込む際に、この生成した第２のパリティデータを当該ｎ番目のページの冗長領域に書き込むステップと、
を具備することを特徴とするデータ管理方法。
【請求項６】
前記コントローラが、
いずれかのデータまたは論理アドレス情報が読み出せなくなった場合、他のｎ−２個のデータまたは論理アドレス情報と前記第１のパリティデータまたは前記第２のパリティデータとを用いて、当該読み出せなくなったデータまたは論理アドレス情報を復元し、この復元したデータまたは論理アドレス情報を他のページに再配置するステップ、
をさらに具備することを特徴とする請求項５記載のデータ管理方法。
【請求項７】
前記コントローラが、
予め定められた期間毎に、前記ｎ−１個のデータおよび論理アドレス情報と前記第１および第２のパリティデータとの読み出しを行い、前記ｎ−１個のデータおよび論理アドレス情報が読み出し可能であるか否かを検査すると共に、前記第１および第２のパリティデータの値が正しいか否かを検査するステップ、
をさらに具備することを特徴とする請求項５記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばソリッドステートドライブ（ＳＳＤ：Solid-State Drive）等の不揮発性半導体メモリドライブ装置におけるデータの冗長性を向上させるためのデータ管理技術に関する。
【背景技術】
【０００２】
近年、バッテリ駆動可能で携行容易なノートブックタイプのパーソナルコンピュータが広く普及している。モバイルノートＰＣなどと称される、この種のパーソナルコンピュータの多くは、無線通信機能を備え、または、無線通信モジュールをＵＳＢ（Universal Serial Bus）コネクタに接続したりＰＣカードスロットに装着することによって無線通信機能を必要に応じて増設することが可能である。従って、このモバイルノートＰＣを携帯すれば、ユーザは、外出先や移動中などにおいても、文書を作成して送信したり、各種情報を適宜に入手したりすることが可能となる。
【０００３】
また、この種のパーソナルコンピュータは、持ち運び易く、衝撃に強く、バッテリで長時間利用できることが要求されるので、小型軽量化、耐衝撃性の強化、省電力化のための検討が日々なされている。このようなことから、最近では、磁気ディスク駆動装置（ＨＤＤ：Hard disk drive）に代えて、フラッシュメモリを用いるＳＳＤを搭載したモバイルノートＰＣが製造・販売され始めている。
【０００４】
そして、このフラッシュメモリを用いた装置については、データを効率的に管理するための仕組みが、これまで種々提案されている（例えば特許文献１等参照）。
【特許文献１】特開２００８−２０４０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
また、データの書き込み効率を維持することを目的とした記憶領域の管理手法として、コンパクションが良く知られている。コンパクションは、記憶領域の管理単位として複数のグループが構成されると想定した場合、（追記でデータを更新する際に発生する）無効化データの容量が多くなった例えば２つのグループを選択し、これら２つのグループ上の有効データを１つのグループに纏めることによって、１つ分のグループを未使用状態に戻す処理をいう。このコンパクションを適宜に実行して未使用状態のフリーグループを確保することによって、データの書き込み効率を維持することができる。
【０００６】
ところで、このＳＳＤを含むいわゆる外部記憶装置では、データの書き込みや読み出しの要求を、論理アドレス空間内での位置を示す論理アドレスと共に受け付け、この論理アドレスを物理アドレス空間内での位置を示す物理アドレスに変換して、当該物理アドレスで示される位置にデータを書き込み、または、当該物理アドレスで示される位置に格納されているデータを読み出す。この論理アドレスから物理アドレスへの変換のために、外部記憶装置は、アドレステーブル（クラスタテーブル）を管理している。従って、上記コンパクションのようなデータの再配置を実行する場合には、このアドレステーブルの更新を併せて実行する必要がある。
【０００７】
このデータの再配置に伴うアドレスのテーブルの更新時には、配置対象のデータの再配置前の格納位置を示す物理アドレスから論理アドレスを取得する必要がある。この論理アドレスの取得を効率的に行うための一手法として、例えば、データを格納するページの冗長領域に、その格納位置を示す物理アドレスと対応づけられる論理アドレスを格納しておくこと等も考えられる。そして、このような場合には、各ページの冗長領域に格納される情報についても、そのページが読み出しエラー等を発生させた際に復元することを可能とする何らかの仕組みが求められる。
【０００８】
この発明は、このような事情を考慮してなされたものであり、よりデータの冗長性を向上させるためのデータ管理を実現する不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前述した目的を達成するために、この発明の不揮発性半導体メモリドライブ装置は、不揮発性半導体メモリと、前記不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するコントローラと、を具備し、前記コントローラは、前記不揮発性半導体メモリ上における記憶領域の管理単位として、独立して動作可能なｎ個のメモリブロックを並列に接続して構成される複数のグループそれぞれについて、前記不揮発性半導体メモリへのデータの書き込みおよび前記不揮発性半導体メモリからのデータの読み出し単位であるページサイズのデータをｎ−１個書き込む毎に、当該ｎ−１個のデータの中の１つのデータを他のｎ−２個のデータから復元可能とする第１のパリティデータを生成し、この生成したパリティデータをｎ番目のページに書き込むデータ管理手段と、各ページに格納される前記不揮発性半導体メモリ上におけるデータの管理単位として定義されるクラスタサイズの各データに割り当てられた、前記不揮発性半導体メモリの論理アドレス空間内における格納位置を示す論理アドレスを含む論理アドレス情報を、当該ページの冗長領域に格納する論理アドレス格納手段と、を有し、前記データ管理手段は、ｎ−１個のページの冗長領域に格納されたｎ−１個の論理アドレス情報の中の１つの論理アドレス情報を他のｎ−２個の論理アドレス情報から復元可能とする第２のパリティデータを生成し、前記パリティデータをｎ番目のページに書き込む際に、この生成した第２のパリティデータを当該ｎ番目のページの冗長領域に書き込む手段を含む、ことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、よりデータの冗長性を向上させるためのデータ管理を実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の一実施形態を説明する。
【００１２】
図１は、本実施形態に係る情報処理装置の外観を示す図である。本情報処理装置は、例えば、モバイルノートＰＣなどと称される、バッテリ駆動可能なノートブックタイプのパーソナルコンピュータ１として実現されている。
【００１３】
本コンピュータ１は、コンピュータ本体２と、ディスプレイユニット３とから構成されている。ディスプレイユニット３には、ＬＣＤ（Liquid Crystal Display）４で構成される表示装置が組み込まれている。
【００１４】
ディスプレイユニット３は、コンピュータ本体２に対し、コンピュータ本体２の上面が露出される開放位置とコンピュータ本体２の上面を覆う閉塞位置との間を回動自由に取り付けられている。コンピュータ本体２は薄い箱形の筐体を有しており、その上面には、電源スイッチ５、キーボード６、タッチパッド７等が配置されている。
【００１５】
また、コンピュータ本体２の前面には、ＬＥＤ（Light Emitting Diode）８が配置され、その右側面には、ＤＶＤ（Digital Versatile Disc）等に対するデータの書き込みおよび読み出しが可能なＯＤＤ（Optical disc drive）９、ＰＣカードを取り外し自在に収容するＰＣカードスロット１０、ＵＳＢ機器を接続するためのＵＳＢコネクタ１１等が配置されている。そして、本コンピュータ１では、起動ドライブとする外部記憶装置として、コンピュータ本体２の内部に、不揮発性半導体メモリドライブ装置であるＳＳＤ１２を搭載する。
【００１６】
図２は、本コンピュータ１のシステム構成を示す図である。
【００１７】
本コンピュータ１は、図２に示すように、前述のＬＣＤ４、電源スイッチ５、キーボード６、タッチパッド７、ＬＥＤ８、ＯＤＤ９、ＰＣカードスロット１０、ＵＳＢコネクタ１１およびＳＳＤ１２のほかに、ＣＰＵ１０１、ノースブリッジ１０２、メインメモリ１０３、ＧＰＵ（Graphic Processing Unit）１０４、サウスブリッジ１０５、フラッシュメモリ１０６、ＥＣ／ＫＢＣ（Embedded Controller/KeyBoard Controller）１０７、ファン１０８等を備えている。
【００１８】
ＣＰＵ１０１は、本コンピュータ１の動作を制御するプロセッサであり、ＳＳＤ１２からメインメモリ１０３にロードされる、オペレーティングシステムや、ユーティリティを含む各種アプリケーションプログラムを実行する。また、ＣＰＵ１０１は、フラッシュメモリ１０６に格納されたＢＩＯＳ（Basic Input/Output System）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００１９】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０５との間を接続するブリッジデバイスである。ノースブリッジ１０２は、バスを介してＧＰＵ１０４との通信を実行する機能を有しており、また、メインメモリ１０３をアクセス制御するメモリコントローラも内蔵されている。ＧＰＵ１０４は、本コンピュータ１の表示装置として使用されるＬＣＤ４を制御する。
【００２０】
サウスブリッジ１０５は、ＳＳＤ１２、ＯＤＤ９、ＰＣカードスロット１０に収容されたＰＣカード、ＵＳＢコネクタ１１に接続されたＵＳＢ機器、フラッシュメモリ１０６等の各種デバイスを制御するコントローラである。
【００２１】
ＥＣ／ＫＢＣ１０７は、電力管理のための組み込みコントローラと、キーボード６およびタッチパッド７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ１０７は、ＬＥＤ８および冷却用のファン１０８の制御も実行する。
【００２２】
また、図３は、以上のようなシステム構成を持つ本コンピュータ１に起動ドライブとする外部記憶装置として搭載されるＳＳＤ１２の概略構成を示すブロック図である。
【００２３】
図示のように、ＳＳＤ１２は、温度センサ２０１、コネクタ２０２、制御部２０３、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ、ＤＲＡＭ２０５、電源回路２０６等によって構成されており、電源が供給されなくても記憶が消えない（ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上のプログラムを含むデータが失われない）不揮発性の外部記憶装置である。また、ＳＳＤ１２は、ＨＤＤのようにディスクやヘッド等の駆動機構を持たない、耐衝撃性の強い、低消費電力タイプの外部記憶装置である。
【００２４】
メモリコントローラとしてＮＡＮＤメモリ２０４Ａ〜２０４Ｈに対するデータの書き込みおよび読み出しを制御する制御部２０３は、コネクタ２０２、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ、ＤＲＡＭ２０５、電源回路２０６にそれぞれ接続されている。本ＳＳＤ１２がコンピュータ本体２の内部に搭載された時、制御部２０３は、コネクタ２０２を介してホスト装置、即ちコンピュータ本体２のサウスブリッジ１０５と接続される。また、本ＳＳＤ１２が単体で存在する時には、制御部２０３は、必要に応じて、例えばＲＳ−２３２Ｃ規格のシリアルインタフェースを介してデバッグ用機器と接続することができる。
【００２５】
また、図示のように、制御部２０３は、ＲＡＩＤ管理部２０３１、論理／物理アドレス管理部２０３２およびコンパクション処理部２０３３を有しており、これらについては後述する。
【００２６】
ＮＡＮＤメモリ２０４Ａ〜２０４Ｈは、各々が例えば１６Ｇバイトの記憶容量をもつ不揮発性の半導体メモリであって、例えば１つのメモリセルに２ビットを記録可能なＭＬＣ（Multi Level Cell）−ＮＡＮＤメモリ（多値ＮＡＮＤメモリ）である。ＭＬＣ−ＮＡＮＤメモリは、ＳＬＣ（Single Level Cell）−ＮＡＮＤメモリに比較して、一般に書き換え可能回数は劣るが、記憶容量の大容量化は容易である。
【００２７】
ＤＲＡＭ２０５は、制御部２０３によってＮＡＮＤメモリ２０４Ａ〜２０４Ｈに対するデータの書き込みおよび読み出しが行われる際に一時的にデータが格納されるキャッシュメモリとして利用されるメモリデバイスである。そして、電源回路２０６は、コネクタ２０２を介してサウスブリッジ１０５経由でＥＣ／ＫＢＣ１０７から供給される電力を電源として、制御部２０３の動作用の電力を生成・供給する。
【００２８】
図４は、本ＳＳＤ１２に設置されるＮＡＮＤメモリ２０４Ａ〜２０４Ｈの概略構成を示す概念図である。
【００２９】
ＮＡＮＤメモリ２０４Ａ〜２０４Ｈが構成する物理アドレス空間に対しては、物理的な使用最小単位とされるセクタａ３として５１２バイトが定義され、また、データの管理単位とされるクラスタａ２として８個分のセクタａ３を纏めたデータサイズ、即ち、５１２バイト×８セクタ＝４，０９６バイトが定義される。これに対して、本ＳＳＤ１２は、このＮＡＮＤメモリ２０４Ａ〜２０４Ｈの物理的なデータの書き込みおよび読み出し単位であるページサイズが４，３１４バイトを有している。つまり、本ＳＳＤ１２では、１つのページに１つのクラスタａ２を格納し、各ページ毎に２１８バイトの冗長領域を設けるようにしている（４，３１４バイト−４，０９６バイト＝２１８バイト）。なお、このページサイズの設定は単なる一例であり、１つのページに２以上のクラスタａ２を格納するようにページサイズを設定することも当然に可能である。
【００３０】
また、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈは、独立して動作可能な複数のＮＡＮＤブロックａ１からそれぞれ構成されており、各ＮＡＮＤブロックａ１は１２８ページで構成されている。つまり、１つのＮＡＮＤグループａ１には、１２８個のクラスタａ２が格納される。そして、本ＳＳＤ１２では、１６個のＮＡＮＤブロックで１つのＮＡＮＤグループを構成し、このＮＡＮＤグループ（１６×１２８＝２，０４８クラスタ）単位で、データ消去を一括して行う等の記憶領域の管理を実行する。
【００３１】
図５は、本ＳＳＤ１２の動作原理を説明するための概念図である。
【００３２】
図５に示すように、キャッシュメモリとして利用されるＤＲＡＭ２０５上には、管理データ格納部２０５１、パリティ格納部２０５２、ライトキャッシュ２０５３およびリードキャッシュ２０５４が設けられる。一方、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上の各記憶領域は、管理データ領域２０４１、プライマリバッファ領域２０４２、メインストレージ領域２０４３、フリーグループ領域２０４４およびコンパクションバッファ領域２０４５のいずれかとして動的に割り当てられる。
【００３３】
管理データ領域２０４１は、論理的なクラスタアドレス（ＬＢＡ：Logical Block Address）と物理的なＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上の位置とを対応づけるクラスタテーブルを格納する領域であり、制御部２０３は、本ＳＳＤ１２の起動時に、このクラスタテーブルをＤＲＡＭ２０５上の管理データ格納部２０５１に取り込み、このＤＲＡＭ２０５上のクラスタテーブルを使って、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈに対するアクセスを実行する。このクラスタテーブルの管理のために、制御部２０３は、論理／物理アドレス管理部２０３２を備えている。
【００３４】
ＤＲＡＭ２０５上のクラスタテーブルは、例えば本ＳＳＤ１２の停止時などに発行される所定のコマンドを受けた際、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上に書き戻される。また、この管理データ格納部２０５１および管理データ領域２０４１には、プライマリバッファ領域２０４２内やコンパクションバッファ領域２０４５内における書き込み位置を示すポインタ情報なども格納される。
【００３５】
ホスト装置からデータの書き込みが要求されると、制御部２０３は、そのデータをＤＲＡＭ２０５上のライトキャッシュ２０５２に一時的に蓄えながら、プライマリバッファ領域２０４２内の書き込み位置に書き込み、その書き込み位置と指定されたクラスタアドレスとを対応づけるべくＤＲＡＭ２０５上のクラスタテーブルを更新する。もし、このデータの書き込みによって、プライマリバッファ領域２０４２として割り当てられているＮＡＮＤグループが満杯になったならば、制御部２０３は、管理上、このＮＡＮＤグループをメインストレージ領域２０４３に移行させ、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの１つを新たにプライマリバッファ領域２０４２として割り当てる。
【００３６】
なお、本ＳＳＤ１２は、データを追記していくタイプの記憶装置であり、いわゆるデータの更新時には、更新前のデータを無効化し、更新後のデータを新たにプライマリバッファ領域２０４２内に書き込むことを内部的に実行する。つまり、例えばメインストレージ領域２０４３のＮＡＮＤグループにおいてデータの置き換えが発生することはない。制御部２０３の論理／物理アドレス管理部２０３１は、データの更新時、この更新前のデータの無効化および更新後のデータの新たな書き込みに伴うクラスタテーブルの更新を併せて実行する。
【００３７】
一方、ホスト装置からデータの読み出しが要求されると、制御部２０３は、そのデータがＤＲＡＭ２０５上のリードキャッシュ２０５３に存在しない場合、指定されたクラスタアドレスのＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上における位置をＤＲＡＭ２０５上のクラスタテーブルを参照して取得し、その位置に格納されたデータをリードキャッシュ２０５３に読み出して、ホスト装置に返却する。要求されたデータがリードキャッシュ２０５３に存在したならば、制御部２０３は、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈへのアクセスを行うことなく、そのデータを即座にホスト装置に返却する。
【００３８】
そして、本ＳＳＤ１２では、いずれかのページが読み出しエラーを発生させても当該ページ上のデータを喪失することがないよう、データの冗長性を向上させるための仕組みとして、制御部２０３１が、ＲＡＩＤ管理部２０３１を備えている。
【００３９】
前述したように、本ＳＳＤ１２は、各々が１２８ページで構成される、独立して動作可能なＮＡＮＤブロックを１６個ずつ組みとしてＮＡＮＤグループを構成する。このように構成されるＮＡＮＤグループに対するデータの書き込み効率を向上させるために、複数ページ分のデータ書き込みを行う場合、あるＮＡＮＤブロックに対して１ページ分の書き込みデータを転送した後、その書き込み完了を待機することなく、他のＮＡＮＤブロックに次の１ページ分の書き込みデータを転送していく。つまり、同一のＮＡＮＤグループを構成する１６個のＮＡＮＤブロックは、論理的に並列接続されている。
【００４０】
そこで、第１に、ＲＡＩＤ管理部２０３１は、図６に示すように、同一グループを構成するＮＡＮＤブロック数（ｎ）のページ毎に１ページ分のパリティデータを生成する。より具体的には、データをｎ−１個書き込む毎に、当該ｎ−１個のデータの中の１つのデータを他のｎ−２個のデータから復元可能とするパリティデータを生成し、この生成したパリティデータをｎ番目のページ（図中の”Ｐ”）に書き込む処理を実行する。生成されたパリティデータは、ＤＲＡＭ２０５のパリティ格納部２０５２を介してプライマリバッファ領域２０４２に転送されることによって書き込みが行われる。
【００４１】
これにより、いずれかのページが読み出しエラーを発生させたとしても、当該ページのデータを復元できるので、データの冗長性を向上させることができる。ＲＡＩＤ管理部２０３１は、いずれかのページが読み出しエラーを発生させたことに起因して、当該ページのデータをその他のデータとパリティデータとを使って復元した際、その時点で、このデータを他のページに書き込むデータ更新を内部的に実行する。
【００４２】
なお、図６においては、パリティデータを書き込むページを、ＮＡＮＤブロックを変えるべく１つずつスライドさせる例を示したが、これに限らす、例えばあるＮＡＮＤブロック上に固定しても構わない。また、前述したように、本ＳＳＤ１２は、データを追記していくタイプの記憶装置であることから、データの更新は、更新前のデータを無効化し、更新後のデータを新たに書き込むことによって行われる。しかしながら、無効化されたデータは、内部的には、パリティデータと共に他のデータを復元するために必要なデータとして取り扱われる。
【００４３】
また、図５を参照しながら説明した流れでデータの書き込みおよびデータの読み出しを実行する本ＳＳＤ１２においては、データの書き込み効率を維持するために、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの数を一定の水準以上に常時保っていることが好ましい。そのために、制御部２０３は、コンパクション処理部２０３３を備えている。ＮＡＮＤフリーグループの数が予め定められた値以下となった場合、制御部２０３は、コンパクション処理部２０３３によるコンパクションを実行する。
【００４４】
コンパクション処理部２０３３は、まず、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの１つをコンパクションバッファ領域２０４５として割り当てる。次に、コンパクション処理部２０３３は、メインストレージ領域２０４３のＮＡＮＤグループの中から有効なデータ（有効クラスタ）の最も少ない、即ち、無効化されたデータ（無効化クラスタ）の最も多いＮＡＮＤグループを選択し、その選択したＮＡＮＤグループ内の有効クラスタのみをコンパクションバッファ領域２０４５に再配置していく。この有効クラスタの再配置に伴うクラスタテーブルの更新を、コンパクション処理部２０３１は併せて実行する。
【００４５】
選択したＮＡＮＤグループ内のすべての有効クラスタを再配置し終えたら、このＮＡＮＤグループをフリーグループ領域２０４４に返却する。続いて、２番目に有効クラスタの少ないＮＡＮＤグループを選択して、同じく有効クラスタのみをコンパクションバッファ領域２０４５に再配置した後、フリーグループ領域２０４４に返却する。この処理を繰り返していき、もし、コンパクションバッファ領域２０４５として割り当てたＮＡＮＤグループが満杯になったならば、コンパクション処理部２０３３は、このＮＡＮＤグループをメインストレージ領域２０４３に移行させ、新たなＮＡＮＤフリーグループを、コンパクションバッファ領域２０４５として割り当てる。例えば所定数のＮＡＮＤフリーグループを新たに確保できた場合に、コンパクション処理部２０３１は、このコンパクションを終了する。
【００４６】
つまり、コンパクション処理部２０３１は、（最も無効化クラスタの多い順の）ｎ個のＮＡＮＤグループに点在する有効クラスタをｎ−１個以下のＮＡＮＤグループに再配置することにより、最大ｎ−１個のＮＡＮＤフリーグループを確保する。
【００４７】
ところで、このコンパクションは、あるＮＡＮＤグループ上の有効クラスタを別のＮＡＮＤグループ上に移動させる、つまりデータの再配置を行うものであるので、クラスタテーブルの更新が当然に必要となる。そこで、論理／物理アドレス管理部２０３２は、物理アドレスから論理アドレスを効率的かつ経済的に取得するための仕組みを備え、データ再配置に伴うアドレステーブルの更新を速やかに行えるようにしている。
【００４８】
図７は、この論理／物理アドレス管理部２０３２が実行する、本ＳＳＤ１２のＮＡＮＤメモリ２０４Ａ〜２０４Ｈの論理アドレス空間と物理アドレス空間との対応づけの管理を説明するための概念図である。
【００４９】
図７に示すように、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈの論理アドレス空間と物理アドレス空間とは、クラスタ単位で動的に割り当てが行われる。クラスタテーブルは、１つの論理アドレスに対して１つのエントリを設け、このエントリを論理アドレス順に並べ、各々の論理アドレスに対応づけられた物理アドレスを格納することで、論理アドレスを検索キーとして物理アドレスを取得できるように作成される。そこで、論理／物理アドレス管理部２０３２は、データの書き込み時、その書き込み位置を示す物理アドレスを指定された論理アドレスのエントリに格納する処理を実行する。
【００５０】
また、このクラスタテーブルに対する処理に加えて、論理／物理アドレス管理部２０３２は、データの書き込み時、その書き込み位置を示す物理アドレスが対応づけられた論理アドレス（図７のＬＢＡ）を、当該データが書き込まれたページの冗長領域に格納する処理を実行する。
【００５１】
各ページの冗長領域に対応する論理アドレスを格納しておくことにより、論理／物理アドレス管理部２０３２は、コンパクション処理部２０３３によってコンパクションが行われた場合、再配置対象のデータに割り当てられた論理アドレスを、再配置前のページの冗長領域から即座に取得でき、クラスタテーブルの目的のエントリを再配置後の物理アドレスに更新する処理を速やかに実行することを実現する。
【００５２】
なお、図７においては、１つのページに１クラスタ分の実データが格納される例を示したが、前述したように、１つのページに２以上のクラスタを格納するようにページサイズを設定することも可能であるので、その場合には、格納した２以上の実データの論理アドレスを含む論理アドレス情報を冗長領域に格納するようにすればよい。
【００５３】
このように、本ＳＳＤ１２では、各ページの冗長領域に、当該ページに格納されたデータに割り当てられた論理アドレス情報が格納される。そこで、第２に、ＲＡＩＤ管理部２０３１は、この冗長領域に格納される論理アドレス情報についても、ｎ−１個の論理アドレス情報の中の１つの論理アドレス情報を他のｎ−２個の論理アドレス情報から復元可能とするパリティデータを生成し、この生成したパリティデータを、図６において”Ｐ”で表されるｎ番目のページの冗長領域に格納する。
【００５４】
これにより、いずれかのページが読み出しエラーを発生させた際、当該ページのデータの外、冗長領域の論理アドレス情報をも復元できるので、よりデータの冗長性を向上させることができる。
【００５５】
また、ＲＡＩＤ管理部２０３１は、この２種類のパリティデータを使ったパトロール処理を定期的に実行する。より具体的には、１６ページ分のデータ読み出しを行い、各ページが読み出し可能であることを調べ、もし、読み出しエラーを発生させたページが存在したら、その時点で、当該ページのデータおよび論理アドレス情報を復元して（パリティ用のページの場合は各パリティデータを再生成して）、他のページに書き込むリカバリ処理を行っておく。また、１６ページすべてが読み出せた場合には、２種類のパリティデータの値が正しいことをそれぞれ調べる。もし、パリティデータの値が誤っていた場合、例えば、データ訂正のためのＥＣＣ（Error Correcting Code）を持つ場合にはデータ訂正処理を行ったり、データエラーが発生している旨をホスト装置に通知する等、予め定められたエラー処理を実行する。このパトロールによって、本ＳＳＤ１２の信頼性を向上させることができる。
【００５６】
図８は、本ＳＳＤ１２の制御部２０３が実行するデータ書き込みの動作手順を示すフローチャートである。
【００５７】
制御部２０３は、データの書き込み要求を受けると、そのデータをＮＡＮＤメモリ２０４Ａ〜２０４Ｈのプライマリバッファ領域２０４２に書き込むと共に（ステップＡ１）、指定された論理アドレス（クラスタアドレス）を、当該データを書き込んだページの冗長領域に書き込む（ステップＡ２）。
【００５８】
また、制御部２０３は、当該データの書き込み位置を示す物理アドレスを、指定されたクラスタアドレスのエントリに格納するためのクラスタテーブルの更新を実行する（ステップＡ３）。
【００５９】
続いて、制御部２０３は、このデータの書き込みがｎ（ＮＡＮＤグループを構成するＮＡＮＤブロックの数）−１個目か否かを判定し（ステップＡ４）、ｎ−１個目であったならば（ステップＡ４のＹＥＳ）、ｎ−１個分のデータおよび論理アドレス情報のそれぞれについてパリティデータを生成する（ステップＡ５）。そして、制御部２０３は、データ用のパリティデータをｎ個目のページに書き込むと共に（ステップＡ６）、同ページの冗長領域に、論理アドレス情報用のパリティデータを書き込む（ステップＡ７）。
【００６０】
また、図９は、本ＳＳＤ１２の制御部２０３が実行するデータ読み出しの動作手順を示すフローチャートである。
【００６１】
制御部２０３は、データの読み出し要求を受けると、指定された論理アドレスをクラスタテーブルによって物理アドレスに変換し、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上の当該物理アドレスで示される位置に格納されているデータを読み出す（ステップＢ１）。
【００６２】
もし、この読み出しが失敗した場合（ステップＢ２のＮＯ）、制御部２０３は、同一ＮＡＮＤグループを構成する他のｎ−１個のデータを使って、読み出しが要求された当該データを復元し（ステップＢ３）、この復元したデータをホスト装置に転送する（ステップＢ４）。また、制御部２０３は、読み出しに失敗したデータを無効化して、復元したデータを別のページに書き込むリカバリ処理を併せて実行する（ステップＢ５）。
【００６３】
そして、図１０は、本ＳＳＤ１２の制御部２０３が実行するパトロールの動作手順を示すフローチャートである。
【００６４】
制御部２０３は、予め定められた期間毎に、ｎ（ＮＡＮＤグループを構成するＮＡＮＤブロックの数）個のデータの読み出しを実行し（ステップＣ１）、いずれかのデータの読み出しが失敗したら（ステップＣ２のＮＯ）、その読み出しに失敗したデータを他のｎ−１個のデータを使って復元する（ステップＣ３）。
【００６５】
続いて、制御部２０３は、ｎ個のデータを使ってパリティデータのチェックを行い（ステップＣ４）、パリティデータの誤りを発見したら（ステップＣ５のＮＯ）、データ訂正処理を実行する（ステップＣ６）。そして、制御部２０３は、このパトロール中に復元または訂正したデータの再配置を実行する（ステップＣ７）。
【００６６】
以上のように、本ＳＳＤ１２においては、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈにデータを書き込む際、ｎ個のＮＡＮＤブロックから構成されるＮＡＮＤグループについて、ｎ個のページ毎に１ページ分のパリティデータを生成することにより、データの冗長性を向上させ、また、各ページの冗長領域に格納した論理アドレス情報についても、ｎ個の論理アドレス情報毎に１つのパリティデータを生成することにより、よりデータの冗長性を向上させることを実現する。
【００６７】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６８】
【図１】この発明の一実施形態に係る情報処理装置（コンピュータ）の外観を示す図
【図２】同実施形態のコンピュータのシステム構成を示す図
【図３】同実施形態のコンピュータに起動ドライブとして搭載されるＳＳＤの概略構成を示すブロック図
【図４】同実施形態のコンピュータに搭載されるＳＳＤに設置されるＮＡＮＤメモリの概略構成を示す概念図
【図５】同実施形態のコンピュータに搭載されるＳＳＤ１２の動作原理を説明するための概念図
【図６】同実施形態のコンピュータに搭載されるＳＳＤが実行するパリティデータの生成および書き込み原理を説明するための概念図
【図７】同実施形態のコンピュータに搭載されるＳＳＤが実行するＮＡＮＤメモリの論理アドレス空間と物理アドレス空間との対応づけの管理を説明するための概念図
【図８】同実施形態のコンピュータに搭載されるＳＳＤが実行するデータ書き込みの動作手順を示すフローチャート
【図９】同実施形態のコンピュータに搭載されるＳＳＤが実行するデータ読み出しの動作手順を示すフローチャート
【図１０】同実施形態のコンピュータに搭載されるＳＳＤが実行するパトロールの動作手順を示すフローチャート
【符号の説明】
【００６９】
１…パーソナルコンピュータ、２…コンピュータ本体、３…ディスプレイユニット、４…ＬＣＤ、５…電源スイッチ、６…キーボード、７…タッチパッド、８…ＬＥＤ、９…ＯＤＤ、１０…ＰＣカードスロット、１１…ＵＳＢコネクタ、１２…ＳＳＤ、１０１…ＣＰＵ、１０２…ノースブリッジ、１０３…メインメモリ、１０４…ＧＰＵ、１０５…サウスブリッジ、１０６…フラッシュメモリ、１０７…ＥＣ／ＫＢＣ、１０８…ファン、２０１…温度センサ、２０２…コネクタ、２０３…制御部、２０４Ａ〜２０４Ｈ…ＮＡＮＤメモリ、２０５…ＤＲＡＭ、２０６…電源回路、２０３１…ＲＡＩＤ管理部、２０３２…論理／物理アドレス管理部、２０３３…コンパクション処理部、２０４１…管理データ領域、２０４２…プライマリバッファ領域、２０４３…メインストレージ領域、２０４４…フリーグループ領域、２０４５…コンパクションバッファ領域、２０４６…コンプレスドストレージ領域、２０５１…管理データ格納部、２０５２…パリティ格納部、２０５３…ライトキャッシュ、２０５４…リードキャッシュ。
【図１】
2010152551.tif 000003
【図２】
2010152551.tif 000004
【図３】
2010152551.tif 000005
【図４】
2010152551.tif 000006
【図５】
2010152551.tif 000007
【図６】
2010152551.tif 000008
【図７】
2010152551.tif 000009
【図８】
2010152551.tif 000010
【図９】
2010152551.tif 000011
【図１０】
2010152551.tif 000012