(57)【要約】【課題】コストアップ等を招くことなくデータ再配置に伴うアドレステーブルの更新を速やかに実行することを実現した不揮発性半導体メモリドライブ装置を提供する。【解決手段】論理／物理アドレス管理部２０３１は、データをＮＡＮＤメモリ２０４Ａ〜２０４Ｈに書き込む際、書き込み先として指定された論理アドレスと書き込み先を示す物理アドレスとを対応づけるためのクラスタテーブルの更新を行うと共に、その論理アドレスを当該データを書き込むページの冗長領域に格納する処理を行う。そして、コンパクション処理部２０３２によってコンパクションが実施された際、論理／物理アドレス管理部２０３１は、再配置対象となったデータの論理アドレスを再配置前のページの冗長領域から取得することで、クラスタテーブルの更新を効率的かつ経済的に実行する。【選択図】      図３
2010152517.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）と物理的なＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上の位置とを対応づけるクラスタテーブルを格納する領域であり、制御部２０３は、本ＳＳＤ１２の起動時に、このクラスタテーブルをＤＲＡＭ２０５上の管理データ格納部２０５１に取り込み、このＤＲＡＭ２０５上のクラスタテーブルを使って、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈに対するアクセスを実行する。このクラスタテーブルの管理のために、制御部２０３は、論理／物理アドレス管理部２０３１を備えている。
【００３５】
ＤＲＡＭ２０５上のクラスタテーブルは、例えば本ＳＳＤ１２の停止時などに発行される所定のコマンドを受けた際、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上に書き戻される。また、この管理データ格納部２０５１および管理データ領域２０４１には、プライマリバッファ領域２０４２内やコンパクションバッファ領域２０４５内における書き込み位置を示すポインタ情報なども格納される。
【００３６】
ホスト装置からデータの書き込みが要求されると、制御部２０３は、そのデータをＤＲＡＭ２０５上のライトキャッシュ２０５２に一時的に蓄えながら、プライマリバッファ領域２０４２内の書き込み位置に書き込み、その書き込み位置と指定されたクラスタアドレスとを対応づけるべくＤＲＡＭ２０５上のクラスタテーブルを更新する。もし、このデータの書き込みによって、プライマリバッファ領域２０４２として割り当てられているＮＡＮＤグループが満杯になったならば、制御部２０３は、管理上、このＮＡＮＤグループをメインストレージ領域２０４３に移行させ、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの１つを新たにプライマリバッファ領域２０４２として割り当てる。
【００３７】
なお、本ＳＳＤ１２は、データを追記していくタイプの記憶装置であり、いわゆるデータの更新時には、更新前のデータを無効化し、更新後のデータを新たにプライマリバッファ領域２０４２内に書き込むことを内部的に実行する。つまり、例えばメインストレージ領域２０４３のＮＡＮＤグループにおいてデータの置き換えが発生することはない。制御部２０３の論理／物理アドレス管理部２０３１は、データの更新時、この更新前のデータの無効化および更新後のデータの新たな書き込みに伴うクラスタテーブルの更新を併せて実行する。
【００３８】
一方、ホスト装置からデータの読み出しが要求されると、制御部２０３は、そのデータがＤＲＡＭ２０５上のリードキャッシュ２０５３に存在しない場合、指定されたクラスタアドレスのＮＡＮＤメモリ２０４Ａ〜２０４Ｈ上における位置をＤＲＡＭ２０５上のクラスタテーブルを参照して取得し、その位置に格納されたデータをリードキャッシュ２０５３に読み出して、ホスト装置に返却する。要求されたデータがリードキャッシュ２０５３に存在したならば、制御部２０３は、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈへのアクセスを行うことなく、そのデータを即座にホスト装置に返却する。
【００３９】
以上のような流れでデータの書き込みおよびデータの読み出しを実行する本ＳＳＤ１２においては、データの書き込み効率を維持するために、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの数を一定の水準以上に常時保っていることが好ましい。そのために、制御部２０３は、コンパクション処理部２０３２を備えている。ＮＡＮＤフリーグループの数が予め定められた値以下となった場合、制御部２０３は、コンパクション処理部２０３２によるコンパクションを実行する。
【００４０】
コンパクション処理部２０３２は、まず、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの１つをコンパクションバッファ領域２０４５として割り当てる。次に、コンパクション処理部２０３２は、メインストレージ領域２０４３のＮＡＮＤグループの中から有効なデータ（有効クラスタ）の最も少ない、即ち、無効化されたデータ（無効化クラスタ）の最も多いＮＡＮＤグループを選択し、その選択したＮＡＮＤグループ内の有効クラスタのみをコンパクションバッファ領域２０４５に再配置していく。
【００４１】
選択したＮＡＮＤグループ内のすべての有効クラスタを再配置し終えたら、このＮＡＮＤグループをフリーグループ領域２０４４に返却する。続いて、２番目に有効クラスタの少ないＮＡＮＤグループを選択して、同じく有効クラスタのみをコンパクションバッファ領域２０４５に再配置した後、フリーグループ領域２０４４に返却する。この処理を繰り返していき、もし、コンパクションバッファ領域２０４５として割り当てたＮＡＮＤグループが満杯になったならば、コンパクション処理部２０３２は、このＮＡＮＤグループをメインストレージ領域２０４３に移行させ、新たなＮＡＮＤフリーグループを、コンパクションバッファ領域２０４５として割り当てる。例えば所定数のＮＡＮＤフリーグループを新たに確保できた場合に、コンパクション処理部２０３２は、このコンパクションを終了する。
【００４２】
つまり、コンパクション処理部２０３２は、（最も無効化クラスタの多い順の）ｎ個のＮＡＮＤグループに点在する有効クラスタをｎ−１個以下のＮＡＮＤグループに再配置することにより、最大ｎ−１個のＮＡＮＤフリーグループを確保する。
【００４３】
ところで、このコンパクションは、あるＮＡＮＤグループ上の有効クラスタを別のＮＡＮＤグループ上に移動させる、つまりデータの再配置を行うものであるので、論理／物理アドレス管理部２０３１によるクラスタテーブルの更新が当然に発生する。クラスタテーブルは、論理アドレスから物理アドレスを取得することを目的として作成されている。よって、逆に、再配置対象のデータに割り当てられた論理アドレスを再配置前の物理アドレスから取得するためには、クラスタテーブルのエントリを先頭から１つずつ参照していく必要があり、負荷の増加等を招く。また、物理アドレスから論理アドレスを取得するための逆クラスタテーブルを作成しようとすると、ＤＲＡＭ２０５上の管理データ格納部２０５１用の容量を、この逆クラスタテーブル分さらに確保しなければならず、コストアップを招く。
【００４４】
そこで、本ＳＳＤ１２は、制御部２０３の論理／物理アドレス管理部２０３１が、物理アドレスから論理アドレスを効率的かつ経済的に取得するための仕組みを備え、データ再配置に伴うアドレステーブルの更新を速やかに行えるようにしたものであり、以下、この点について詳述する。
【００４５】
図６は、この論理／物理アドレス管理部２０３１が実行する、本ＳＳＤ１２のＮＡＮＤメモリ２０４Ａ〜２０４Ｈの論理アドレス空間と物理アドレス空間との対応づけの管理を説明するための概念図である。
【００４６】
図６に示すように、ＮＡＮＤメモリ２０４Ａ〜２０４Ｈの論理アドレス空間と物理アドレス空間とは、クラスタ単位で動的に割り当てが行われる。クラスタテーブルは、１つの論理アドレスに対して１つのエントリを設け、このエントリを論理アドレス順に並べ、各々の論理アドレスに対応づけられた物理アドレスを格納することで、論理アドレスを検索キーとして物理アドレスを取得できるように作成される。そこで、論理／物理アドレス管理部２０３１は、データの書き込み時、その書き込み位置を示す物理アドレスを指定された論理アドレスのエントリに格納する処理を実行する。
【００４７】
また、このクラスタテーブルに対する処理に加えて、論理／物理アドレス管理部２０３１は、データの書き込み時、その書き込み位置を示す物理アドレスが対応づけられた論理アドレス（図６のＬＢＡ）を、当該データが書き込まれたページの冗長領域に格納する処理を実行する。
【００４８】
各ページの冗長領域に対応する論理アドレスを格納しておくことにより、論理／物理アドレス管理部２０３１は、コンパクション処理部２０３２によってコンパクションが行われた場合、再配置対象のデータに割り当てられた論理アドレスを、再配置前のページの冗長領域から即座に取得できる。よって、論理／物理アドレス管理部２０３１は、例えば逆クラスタテーブルを必要とすることなく、クラスタテーブルの目的のエントリを再配置後の物理アドレスに更新する処理を速やかに実行することを実現する。
【００４９】
なお、図６においては、１つのページに１クラスタ分の実データが格納される例を示したが、前述したように、１つのページに２以上のクラスタを格納するようにページサイズを設定することも可能であるので、その場合には、格納した２以上の実データの論理アドレスを冗長領域に格納するようにすればよい。
【００５０】
図７は、本ＳＳＤ１２の制御部２０３が実行するデータ書き込みの動作手順を示すフローチャートである。
【００５１】
制御部２０３は、データの書き込み要求を受けると、そのデータをＮＡＮＤメモリ２０４Ａ〜２０４Ｈのプライマリバッファ領域２０４２に書き込むと共に（ステップＡ１）、指定された論理アドレス（クラスタアドレス）を、当該データを書き込んだページの冗長領域に書き込む（ステップＡ２）。
【００５２】
また、制御部２０３は、当該データの書き込み位置を示す物理アドレスを、指定されたクラスタアドレスのエントリに格納するためのクラスタテーブルの更新を実行する（ステップＡ３）。
【００５３】
図８は、本ＳＳＤ１２の制御部２０３が実行するコンパクションの動作手順を示すフローチャートである。
【００５４】
制御部２０３は、フリーグループ領域２０４４として残存する未使用状態のＮＡＮＤフリーグループの数が予め定められた値以下となった場合（ステップＢ１のＹＥＳ）、メインストレージ領域２０４３のＮＡＮＤグループの中から最も無効化クラスタが多い順にｎ個のＮＡＮＤグループを選択し（ステップＢ２）、この選択したＮＡＮＤグループに点在する有効クラスタをｎ−１個以下のＮＡＮＤグループに再配置するコンパクションを実行して、最大ｎ−１個のＮＡＮＤフリーグループを確保する（ステップＢ３）。
【００５５】
また、制御部２０３は、コンパクションにより再配置されたデータのクラスタアドレスを、再配置前のデータが格納されていたページの冗長領域から取得し、この取得したクラスタアドレスのエントリに再配置後のデータの格納位置を示す物理アドレスを格納するためのクラスタテーブルの更新を実行する（ステップＢ３）。
【００５６】
なお、以上では、コンパクションのために行われるデータの再配置に伴うクラスタテーブルの更新について説明したが、コンパクションに限らず、いずれを要因とするデータの再配置においても、本発明の手法は当然に有効である。例えば、ＮＡＮＤグループ毎に実行されるデータ消去の回数を平均化するためのいわゆるウェアレベリングのために行われるデータの再配置時においても、再配置対象のデータのクラスタアドレスをページの冗長領域から取得することで、クラスタテーブルを速やかに更新することができる。
【００５７】
また、各ページの冗長領域に、当該ページに格納したデータのクラスタアドレスを格納しておくことにより、制御部２０３は、仮に、クラスタテーブルが破壊してしまった場合であっても、すべてのページを辿っていくことで、クラスタテーブルを復旧することが可能となる。
【００５８】
以上のように、本ＳＳＤ１２においては、ページの冗長領域に、当該ページが保持しているデータの論理アドレスを記録しておくことにより、クラスタテーブルのエントリを1つずつ参照していったり、物理アドレスから論理アドレスを求める逆クラスタテーブルを設けることを行うことなしに、コンパクション等によるデータ再配置に伴うクラスタテーブルの更新を速やかに実行することを実現する。
【００５９】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６０】
【図１】この発明の一実施形態に係る情報処理装置（コンピュータ）の外観を示す図
【図２】同実施形態のコンピュータのシステム構成を示す図
【図３】同実施形態のコンピュータに起動ドライブとして搭載されるＳＳＤの概略構成を示すブロック図
【図４】同実施形態のコンピュータに搭載されるＳＳＤに設置されるＮＡＮＤメモリの概略構成を示す概念図
【図５】同実施形態のコンピュータに搭載されるＳＳＤ１２の動作手順を説明するための概念図
【図６】同実施形態のコンピュータに搭載されるＳＳＤが実行するＮＡＮＤメモリの論理アドレス空間と物理アドレス空間との対応づけの管理を説明するための概念図
【図７】同実施形態のコンピュータに搭載されるＳＳＤが実行するデータ書き込みの動作手順を示すフローチャート
【図８】同実施形態のコンピュータに搭載されるＳＳＤが実行するコンパクションの動作手順を示すフローチャート
【符号の説明】
【００６１】
１…パーソナルコンピュータ、２…コンピュータ本体、３…ディスプレイユニット、４…ＬＣＤ、５…電源スイッチ、６…キーボード、７…タッチパッド、８…ＬＥＤ、９…ＯＤＤ、１０…ＰＣカードスロット、１１…ＵＳＢコネクタ、１２…ＳＳＤ、１０１…ＣＰＵ、１０２…ノースブリッジ、１０３…メインメモリ、１０４…ＧＰＵ、１０５…サウスブリッジ、１０６…フラッシュメモリ、１０７…ＥＣ／ＫＢＣ、１０８…ファン、２０１…温度センサ、２０２…コネクタ、２０３…制御部、２０４Ａ〜２０４Ｈ…ＮＡＮＤメモリ、２０５…ＤＲＡＭ、２０６…電源回路、２０３１…論理／物理アドレス管理部、２０３２…コンパクション処理部、２０４１…管理データ領域、２０４２…プライマリバッファ領域、２０４３…メインストレージ領域、２０４４…フリーグループ領域、２０４５…コンパクションバッファ領域、２０５１…管理データ格納部、２０５２…ライトキャッシュ、２０５３…リードキャッシュ。
【図１】
2010152517.tif 000003
【図２】
2010152517.tif 000004
【図３】
2010152517.tif 000005
【図４】
2010152517.tif 000006
【図５】
2010152517.tif 000007
【図６】
2010152517.tif 000008
【図７】
2010152517.tif 000009
【図８】
2010152517.tif 000010