(57)【要約】  情報処理装置は、情報処理装置本体と、不揮発性半導体メモリドライブとを備える。半導体メモリドライブは、不揮発性半導体メモリに対するデータのリードおよびライトの実行を、所定数のセクタ群を単位として制御する制御手段を含む。制御手段は、前記情報処理装置本体からのライトデータのデータサイズが前記所定数のセクタ群のデータサイズ未満である場合、前記ライトデータが書き込まれるべきセクタを含む所定数のセクタ群内のデータを前記不揮発性半導体メモリからリードし、前記リードされたデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を管理テーブルに格納する。
2010521014.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置本体と、
前記情報処理装置本体内に収容される不揮発性半導体メモリドライブであって、複数のセクタを有する不揮発性半導体メモリと、前記不揮発性半導体メモリに対するデータのリードおよびライトの実行を所定数のセクタ群を単位として制御する制御手段であって、前記情報処理装置本体からのライトデータのデータサイズが前記所定数のセクタ群のデータサイズ未満である場合、前記ライトデータが書き込まれるべきセクタを含む所定数のセクタ群内のデータを前記不揮発性半導体メモリからリードし、前記リードされたデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を管理テーブルに格納する制御手段とを含む不揮発性半導体メモリドライブとを具備する情報処理装置。
【請求項２】
前記制御手段は、前記リードされたデータと前記ライトデータとをマージすることによって得られる、前記所定数のセクタ群のデータサイズを有する新たなライトデータを、前記不揮発性半導体メモリにライトする請求項１に記載の情報処理装置。
【請求項３】
前記不揮発性半導体メモリドライブは前記情報処理装置本体からのライトデータを一時的に記憶するライトキャッシュを含み、
前記制御手段は、前記管理テーブルの空き容量が第１の容量以上である場合、前記情報処理装置本体からのライトデータが前記ライトキャッシュにライトされた時点で前記情報処理装置本体にライト完了を通知するライトバックモードで動作し、前記管理テーブルの空き容量が前記第１の容量未満である場合、前記ライトデータが前記不揮発性半導体メモリにライトされた後に前記情報処理装置本体にライト完了を通知するライトスルーモードで動作する請求項１に記載の情報処理装置。
【請求項４】
前記制御手段は、前記管理テーブルの空き容量が前記第１の容量よりも小さい第２の容量以下である場合、前記情報処理装置本体による前記不揮発性半導体メモリへのライトアクセスを禁止し且つ前記情報処理装置本体による前記不揮発性半導体メモリへのリードアクセスを許可するリードオンリーモードで動作する請求項３に記載の情報処理装置。
【請求項５】
前記不揮発性半導体メモリは複数のブロックからなり、前記ブロックの各々は１０２４個のクラスタで構成され、前記クラスタの各々は８個のセクタを含む請求項１に記載の情報処理装置。
【請求項６】
前記制御手段は、前記不揮発性半導体メモリのブロックそれぞれの書き替え回数を平準化するためのウェアレベリング処理を実行し、前記ウェアレベリング処理の実行時に、前記不揮発性半導体メモリからリードされるデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を前記管理テーブルに格納する請求項１に記載の情報処理装置。
【請求項７】
前記制御手段は、
前記管理テーブルに格納された不良セクタ情報によって識別されるセクタへのデータのライトが成功した場合、前記不良セクタ情報を前記管理テーブルから削除する請求項１に記載の情報処理装置。
【請求項８】
前記制御手段は、前記管理テーブルの空き容量が無くなった場合、前記情報処理装置本体による前記不揮発性半導体メモリへのリードアクセスおよびライトアクセスを禁止する故障モードで動作する請求項１に記載の情報処理装置。
【請求項９】
前記制御手段は、前記情報処理装置本体からのリードコマンドの受信に応答して、前記リードコマンドによって指定されるセクタを示す不良セクタ情報が前記管理テーブルに格納されているか否かを判別し、前記リードコマンドによって指定されるセクタを示す不良セクタ情報が前記管理テーブルに格納されている場合、エラーの発生を前記情報処理装置本体に通知する請求項１に記載の情報処理装置。
【請求項１０】
情報処理装置の外部記憶装置として使用される不揮発性半導体メモリドライブであって、
複数のセクタを有する不揮発性半導体メモリと、
前記不揮発性半導体メモリに対するデータのリードおよびライトの実行を所定数のセクタ群を単位として制御する制御手段であって、前記情報処理装置からのライトデータのデータサイズが前記所定数のセクタ群のデータサイズ未満である場合、前記ライトデータが書き込まれるべきセクタを含む所定数のセクタ群内のデータを前記不揮発性半導体メモリからリードし、前記リードされたデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を管理テーブルに格納する制御手段とを具備する不揮発性半導体メモリドライブ。
【請求項１１】
前記制御手段は、前記リードされたデータと前記ライトデータとをマージすることによって得られる、前記所定数のセクタ群のデータサイズを有する新たなライトデータを、前記不揮発性半導体メモリにライトする請求項１０に記載の不揮発性半導体メモリドライブ。
【請求項１２】
前記情報処理装置からのライトデータを一時的に記憶するライトキャッシュをさらに具備し、
前記制御手段は、前記管理テーブルの空き容量が第１の容量以上である場合、前記情報処理装置からのライトデータが前記ライトキャッシュにライトされた時点で前記情報処理装置にライト完了を通知するライトバックモードで動作し、前記管理テーブルの空き容量が前記第１の容量未満である場合、前記ライトデータが前記不揮発性半導体メモリにライトされた後に前記情報処理装置にライト完了を通知するライトスルーモードで動作する請求項１０に記載の不揮発性半導体メモリドライブ。
【請求項１３】
前記制御手段は、前記管理テーブルの空き容量が前記第１の容量よりも小さい第２の容量以下である場合、前記情報処理装置による前記不揮発性半導体メモリへのライトアクセスを禁止し且つ前記情報処理装置による前記不揮発性半導体メモリへのリードアクセスを許可するリードオンリーモードで動作する請求項１０に記載の不揮発性半導体メモリドライブ。
【請求項１４】
前記制御手段は、前記不揮発性半導体メモリのブロックそれぞれの書き替え回数を平準化するためのウェアレベリング処理を実行し、前記ウェアレベリング処理の実行時に、前記不揮発性半導体メモリからリードされるデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を前記管理テーブルに格納する請求項１０に記載の不揮発性半導体メモリドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び不揮発性半導体メモリドライブに関する。
【背景技術】
【０００２】
従来、複数のビットからなるクラスタを複数有する半導体メモリがある。この半導体メモリを管理するシステムとしては、例えば、特許文献１に記載された管理システムが知られている。この管理システムは、クラスタ毎に全てのビットが正常であるか否かを判別する判別手段と、判別手段による判別結果に基づいて正常であるビットを有するクラスタ、及び不良であるビットを有するクラスタを示す識別情報を生成する管理手段とを備えている。
【０００３】
この管理システムは、正常なビットと不良なビットを識別して管理することができるので、正確な記憶、及び再生を要求されるデータには全てのビットが正常であるクラスタを割り当て、正確な記憶、及び再生を要求されないデータには不良であるビットを含むクラスタを優先的に割り当てることができる。したがって、品質保証されていない安価な半導体メモリを使用することができるので、製品コストを抑えることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２０２９６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、この管理システムにおいては、識別情報の作成は半導体メモリの工場出荷時に行われる。したがって、出荷後に、全てのビットが正常であるクラスタに不良が発生しても、その不良を判別することができず、データの正確な記憶、及び再生が行えなくなる可能性があった。
【０００６】
本発明の目的は、データの正確な書込み、及びデータの正確な読出しを行うことができる情報処理装置及び不揮発性半導体メモリドライブを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、情報処理装置本体と、前記情報処理装置本体内に収容される不揮発性半導体メモリドライブであって、複数のセクタを有する不揮発性半導体メモリと、前記不揮発性半導体メモリに対するデータのリードおよびライトの実行を所定数のセクタ群を単位として制御する制御手段であって、前記情報処理装置本体からのライトデータのデータサイズが前記所定数のセクタ群のデータサイズ未満である場合、前記ライトデータが書き込まれるべきセクタを含む所定数のセクタ群内のデータを前記不揮発性半導体メモリからリードし、前記リードされたデータにエラーが検出された場合、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を管理テーブルに格納する制御手段とを含む不揮発性半導体メモリドライブとを具備する情報処理装置が提供される。
【発明の効果】
【０００８】
この情報処理装置によれば、データの正確な書込み、及びデータの正確な読出しを行うことがきる。
【図面の簡単な説明】
【０００９】
【図１】図１は本発明の一実施形態に係る情報処理装置の外観の例を示す斜視図である。
【図２】図２は同実施形態の情報処理装置の概略構成の例を示すブロック図である。
【図３】図３は同実施形態の情報処理装置に適用されるＳＳＤの概略構成の例を示すブロック図である。
【図４】図４は図３に示されるＳＳＤの記憶容量及び記憶領域の例を示す概略図である。
【図５】図５は図３に示されるＳＳＤ内に設けられるＮＡＮＤメモリの構成例を示す概略構成図である。
【図６】図６は図３に示されるＳＳＤにおいて使用されるＢＣＴの例を示す概略構成図である。
【図７】図７は図３に示されるＳＳＤの動作の例を概略的に示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の情報処理装置の実施形態を説明する。
【００１１】
＜情報処理装置の構成＞
図１は、本発明の一実施形態に係る情報処理装置の外観を示す斜視図である。
【００１２】
この情報処理装置１は、図１に示すように、情報処理装置本体２と、この本体２に取り付けられた表示ユニット３とから構成されている。
【００１３】
本体２は、箱状の筐体４を有し、その筐体４は、上壁４ａ、周壁４ｂ及び下壁４ｃを備える。筐体４の上壁４ａは、情報処理装置１を操作するユーザに近い側から順にフロント部４０、中央部４１及びバック部４２を有する。下壁４ｃは、この情報処理装置１が置かれる設置面に対向する。周壁４ｂは、前壁４ｂａ、後壁４ｂｂ及び左右の側壁４ｂｃ、４ｂｄを有する。
【００１４】
フロント部４０は、ポインティングデバイスであるタッチパッド２０と、パームレスト２１と、情報処理装置１の各部の動作に連動して点灯する発光ダイオード（ＬＥＤ）２２とを備える。
【００１５】
中央部４１は、文字情報等を入力可能なキーボード２３ａが取り付けられるキーボード載置部２３を備える。
【００１６】
バック部４２は、着脱可能に取り付けられたバッテリパック２４を備えている。バッテリパック２４の右側には、情報処理装置１の電源を投入するための電源スイッチ２５が設けられている。バッテリパック２４の左右には、表示ユニット３を回転可能に支持する一対のヒンジ部２６ａ、２６ｂが設けられている。
【００１７】
筐体４の左の側壁４ｂｃには、筐体４内から外部に対して風を排出する排出口（図示せず）が設けられている。また、右の側壁４ｂｄには、例えば、ＤＶＤ等の光記憶媒体にデータを読み書き可能なＯＤＤ（光ディスクドライブ）２７と、各種のカードが出し入れされるカードスロット２８とが配置されている。
【００１８】
筐体４は、周壁４ｂの一部及び上壁４ａを含む筐体カバーと、周壁４ｂの一部及び下壁４ｃを含む筐体ベースとにより形成されている。筐体カバーは、筐体ベースに対して着脱自在に組み合わされ、筐体ベースとの間に収容空間を形成する。この収容空間には、例えば、不揮発性半導体メモリドライブとして機能するＳＳＤ（ソリッドステートドライブ）１０が収容される。
【００１９】
なお、ＳＳＤ１０の詳細は後述する。
【００２０】
表示ユニット３は、開口部３０ａを有するディスプレイハウジング３０と、表示画面３１ａに画像を表示可能なＬＣＤ等からなる表示装置３１とを備える。表示装置３１はディスプレイハウジング３０に収容され、表示画面３１ａは開口部３０ａを通じてディスプレイハウジング３０の外部に露出している。
【００２１】
筐体４内には、上述のＳＳＤ１０、バッテリパック２４、ＯＤＤ２７及びカードスロット２８の他に、図示しないメイン回路基板、拡張モジュール及びファン等が収容されている。
【００２２】
図２は、情報処理装置１のシステム構成を概略的に示すブロック図である。
【００２３】
この情報処理装置１は、図２に示すように、上述のＳＳＤ１０、拡張モジュール１２、ファン１３、タッチパッド２０、ＬＥＤ２２、キーボード２３ａ、電源スイッチ２５、ＯＤＤ２７、カードスロット２８及び表示装置３１の他に、ＥＣ（組み込みコントローラ）１１１と、ＢＩＯＳ（Basic Input Output System）１１２ａを格納するフラッシュメモリ１１２と、サウスブリッジ１１３と、ノースブリッジ１１４と、ＣＰＵ（中央処理装置）１１５と、ＧＰＵ（Graphic Processing Unit）１１６と、メインメモリ１１７とを備えている。
【００２４】
ＥＣ（組み込みコントローラ）１１１は各部を制御する組込システムである。ノースブリッジ１１４は、ＣＰＵ１１５、ＧＰＵ１１６、メインメモリ１１７及び各種バスそれぞれとの間の接続を制御するＬＳＩである。ＣＰＵ１１５は各種信号を演算処理するプロセッサであり、ＳＳＤ１０からメインメモリ１１７にロードされるオペレーティングシステムおよび各種アプリケーションプログラムを実行する。ＧＰＵ１１６は映像信号を演算処理して表示制御を実行する表示コントローラである。
【００２５】
拡張モジュール１２は、拡張回路基板と、この拡張回路基板に設けられたカードソケットと、このカードソケットに挿入された拡張モジュール基板とを備える。カードソケットは、例えば、Ｍｉｎｉ−ＰＣＩ等の規格に対応している。拡張モジュール基板の例としては、３Ｇ（第３世代）モジュール、テレビチューナー、ＧＰＳモジュール、及びＷｉｍａｘ(登録商標)モジュール等が挙げられる。
【００２６】
ファン１３は、筐体４内を送風に基づいて冷却する冷却部であり、筐体４内の空気を排出口（図示せず）を介して風として外部に排出する。
【００２７】
なお、ＥＣ１１１、フラッシュメモリ１１２、サウスブリッジ１１３、ノースブリッジ１１４、ＣＰＵ１１５、ＧＰＵ１１６及びメインメモリ１１７は、メイン回路基板に実装された電子部品である。
【００２８】
＜ＳＳＤの構成＞
図３は、本実施形態の情報処理装置１に適用されるＳＳＤの概略構成を示すブロック図である。ＳＳＤ１０は、ハードディスクの代わりに本情報処理装置１の外部記憶装置として使用される不揮発性半導体メモリドライブである。このＳＳＤ１０は、図３に示すように、コネクタ１０２と、制御部１０３と、ＮＡＮＤメモリ（ＮＡＮＤ型フラッシュＥＥＰＲＯＭ）１０４Ａ〜１０４Ｈと、ＤＲＡＭ（メモリ）１０５と、電源回路１０６と、を備えて概略構成されている。ＳＳＤ１０は、データやプログラムを格納し、且つ電源を供給しなくても記憶内容が消えない外部記憶装置である。ＳＳＤ１０は、ハードディスクドライブとは異なり、磁気ディスクやヘッド等の駆動機構を持たないが、不揮発性半導体メモリであるＮＡＮＤメモリの記憶領域に、ＯＳ（オペレーティングシステム）等のプログラムと、ユーザやソフトウエアに基づいて作成されたデータとを、読み書き可能に長期的に保存でき、情報処理装置１の起動ドライブとして動作することのできるドライブである。
【００２９】
制御部１０３は、コネクタ１０２、８つのＮＡＮＤメモリ１０４Ａ〜１０４Ｈ、ＤＲＡＭ１０５、及び電源回路１０６にそれぞれ接続されている。また、制御部１０３は、コネクタ１０２を介してホスト装置８に接続され、必要に応じて外部装置９に接続される。
【００３０】
電源７は、バッテリパック２４又は図示しないＡＣアダプタであり、例えば、ＤＣ３．３Ｖがコネクタ１０２を介して電源回路１０６に供給される。また、電源７は、情報処理装置１全体に対して電力を供給する。
【００３１】
ホスト装置８は、本実施形態においては、情報処理装置本体２（本体２のメイン回路基板）である。メイン回路基板に実装されたサウスブリッジ１１３はコネクタ１０２を介して制御部１０３に接続される。サウスブリッジ１１３と制御部１０３との間は、例えば、シリアルＡＴＡ等の規格に基づいてデータの送受信が行われる。
【００３２】
外部装置９は、情報処理装置１とは異なる他の情報処理装置である。外部装置９は、情報処理装置１から取り外されたＳＳＤ１０に対して、例えば、ＲＳ−２３２Ｃ等の規格に基づいて制御部１０３に接続され、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈに記憶されたデータを読み出す機能を有する。
【００３３】
ＳＳＤ１０が実装される基板は、例えば、１．８インチタイプ又は２．５インチタイプのＨＤＤ（ハードディスクドライブ）と同等の外形サイズを有する。なお、本実施の形態では、１．８インチタイプと同等である。
【００３４】
制御部１０３は、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈに対するデータのリードおよびライトを制御する。具体的には、制御部１０３は、ホスト装置８として機能する情報処理装置本体２からの要求（リードコマンド、ライトコマンド、等）に応じて、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈに対するデータのリードおよびライトの実行を制御する。各ＮＡＮＤメモリは複数のセクタを有している。ＮＡＮＤメモリ１０４Ａ〜１０４Ｈに対するデータのリードおよびライトの実行の制御は、クラスタと称される所定数のセクタ群の単位で実行される。データの転送速度は、例えば、データ読出し時で１００ＭＢ／Ｓｅｃ、書込み時で４０ＭＢ／Ｓｅｃである。
【００３５】
ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの各々は、例えば記憶容量が１６ＧＢの不揮発性半導体メモリである。ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの各々は、例えば、１つのメモリセルに２ビットを記録可能なＭＬＣ（マルチレベルセル）−ＮＡＮＤメモリ（多値ＮＡＮＤメモリ）から構成されている。ＭＬＣ−ＮＡＮＤメモリは、ＳＬＣ（シングルレベルセル）−ＮＡＮＤメモリに比較して書き換え可能回数は少ないが、ＳＬＣ（シングルレベルセル）−ＮＡＮＤメモリよりも記憶容量の大容量化は容易であるという特徴を有している。
【００３６】
ＤＲＡＭ１０５は、制御部１０３の制御によりＮＡＮＤメモリ１０４Ａ〜１０４Ｈに対するデータの読出し、書込みが行われる際に一時的にデータが格納されるバッファである。このＤＲＡＭ１０５は、ホスト装置８として機能する情報処理装置本体２からのライトデータを一時的に格納するライトキャッシュとして機能する。
【００３７】
コネクタ１０２は、シリアルＡＴＡ等の規格に基づいた形状を有する。なお、制御部１０３及び電源回路１０６は、別々のコネクタによりホスト装置８及び電源７にそれぞれ接続されていてもよい。
【００３８】
電源回路１０６は、電源７から供給されたＤＣ３．３Ｖを、例えば、ＤＣ１．８Ｖ、１．２Ｖ等に変換するとともに、それら３種類の電圧をＳＳＤ１０の各部の駆動電圧に合わせて各部に供給する。
【００３９】
＜ＳＳＤの記憶容量＞
図４は、ＳＳＤ１０の記憶容量及び記憶領域を示す概略図である。
【００４０】
ＳＳＤ１０の制御部１０３は、図４に示す、７種類の記憶容量１０４ａ〜１０４ｇを管理する。
【００４１】
記憶容量１０４ａは、ＮＡＮＤ  Ｃａｐａｃｉｔｙであり、すべてのＮＡＮＤメモリ１０４Ａ〜１０４Ｈの記憶領域を用いた最大の記憶容量である。つまり、記憶容量１０４ａは、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈそれぞれの物理記憶容量の合計値である。例えば、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの記憶容量がそれぞれ１６ＧＢであるとき、記憶容量１０４ａは、１２８ＧＢである。記憶容量１０４ａ、つまりＮＡＮＤ  Ｃａｐａｃｉｔｙは、例えば、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）の製造情報書込みコマンドのＮＡＮＤ構成情報で与えられる。
【００４２】
記憶容量１０４ｂは、Ｍａｘ  Ｌｏｇｉｃａｌ  Ｃａｐａｃｉｔｙであり、論理ブロックアドレス（ＬＢＡ）でアクセスできる最大記憶容量である。
【００４３】
記憶容量１０４ｃは、Ｓ．Ｍ．Ａ．Ｒ．Ｔログ領域開始ＬＢＡであり、記憶容量１０４ｂと以下に説明する記憶容量１０４ｄとを分割するために設けられる。Ｓ．Ｍ．Ａ．Ｒ．Ｔログ領域開始ＬＢＡは、ログデータを格納する記憶領域の先頭ＬＢＡを示す。
【００４４】
記憶容量１０４ｄは、Ｖｅｎｄｅｒ  Ｎａｔｉｖｅ  Ｃａｐａｃｉｔｙであり、ユーザ使用領域として与えられる最大の記憶容量である。記憶容量１０４ｄは、例えば、ＡＴＡ特殊コマンドの初期Ｉｄｅｎｔｉｆｙ  Ｄｅｖｉｃｅデータで与えられる。また、記憶容量１０４ｄは、ＩＤＥＭＡ（The International Disk Drive Equipment and Materials Association）標準に基づき、製造元（Ｖｅｎｄｅｒ）においてＳＳＤ１０の設計段階で決定され、以下の式で表される。
【００４５】
LBA = 97,696,368 + (1,953,504,× ((Capacity in GB) - 50))
記憶容量１０４ｅは、ＯＥＭ  Ｎａｔｉｖｅ  Ｃａｐａｃｉｔｙであり、ＯＥＭ（Original Equipment Manufacturer）の要求により製造時に決定する記憶容量である。記憶容量１０４ｅは、例えば、ＡＴＡ特殊コマンドの固有情報書込みで与えられる。また、記憶容量１０４ｅは、Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｏｖｅｒｌａｙ  Ｆｅａｔｕｒｅ  Ｓｅｔがサポートされたとき、Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｉｄｅｎｔｉｆｙコマンドで返される値である。
【００４６】
記憶容量１０４ｆは、Ｎａｔｉｖｅ  Ｃａｐａｃｉｔｙであり、初期値は記憶容量１０４ｅと同値である。Ｆｅａｔｕｒｅ  ｓｅｔがサポートされたときは、Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｅｔコマンドで変更することができる値である。また、記憶容量１０４ｆは、Ｒｅａｄ  Ｎａｔｉｖｅ  Ｍａｘ  Ａｄｄｒｅｓｓ（ＥＸＴ）コマンドで返される値である。
【００４７】
記憶容量１０４ｇは、Ｃｕｒｒｅｎｔ  Ｃａｐａｃｉｔｙであり、ユーザの使用中における記憶容量で、初期値は記憶容量１０４ｆと同値である。Ｓｅｔ  Ｍａｘ  Ａｄｄｒｅｓｓコマンドで変更することができる。Ｉｄｅｎｔｉｆｙ  ＤｅｖｉｃｅコマンドのＷｏｒｄ６１：６０、Ｗｏｒｄ１０３：１００で返される値である。
【００４８】
また、ＳＳＤ１０の記憶領域は、各記憶容量１０４ａ〜１０４ｇの間にそれぞれ存在する。
【００４９】
記憶容量１０４ａと１０４ｂとの間の記憶領域（管理領域）には、ＳＳＤ１０を動作させるための管理データ１０７ａと、アドレス変換テーブル（論理／物理テーブル）１０８ａと、後述するバッドクラスタテーブル（ＢＣＴ）１０９ａとが格納される。アドレス変換テーブル（論理／物理テーブル）１０８ａは、クラスタ単位で論理ブロックアドレスＬＢＡそれぞれとＮＡＮＤメモリ１０４Ａ〜１０４Ｈの物理アドレスそれぞれとの対応関係を管理するテーブルである。各クラスタは、上述したように所定数のセクタ群から構成されている。ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの各々は複数のセクタを有している。セクタはＮＡＮＤメモリ１０４Ａ〜１０４Ｈの記憶単位である。例えば、１つのクラスタが８個のセクタから構成されている場合には、アドレス変換テーブル（論理／物理テーブル）１０８ａは、クラスタ毎（ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの記憶領域の４ＫＢ境界毎）に、そのクラスタの例えば先頭セクタの論理ブロックアドレスＬＢＡと、当該先頭セクタが割り当てられたＮＡＮＤメモリ１０４Ａ〜１０４Ｈ内のある記憶領域を示す物理アドレスとを保持し得る。
【００５０】
本実施形態では、１ＭＢのデータサイズを有するクラスタも使用できる。１ＭＢのクラスタが割り当てられたＮＡＮＤメモリ１０４Ａ〜１０４Ｈ内の記憶領域に対するリードおよびライトは１ＭＢ単位で制御される。４ＫＢのクラスタが割り当てられたＮＡＮＤメモリ１０４Ａ〜１０４Ｈ内の記憶領域に対するリードおよびライトは４ＫＢ単位で制御される。
【００５１】
このように、データのリード／ライトは、クラスタ単位（所定数のセクタ群単位）で実行される。
【００５２】
管理データ１０７ａ、論理／物理テーブル１０８ａ、及びＢＣＴ１０９ａの各々は、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈ内の固定領域に記録されるデータである。管理データ１０７ａ、論理／物理テーブル１０８ａ、及びＢＣＴ１０９ａの各々には、ＬＢＡは割り当てられていない。したがって、管理データ１０７ａ、論理／物理テーブル１０８ａ、及びＢＣＴ１０９ａの各々を、ＬＢＡをキーとしてアクセスすることはできない。制御部１０３は管理データ１０７ａ、論理／物理テーブル１０８ａ、及びＢＣＴ１０９ａの各々をアクセスするための固定アクセスパスを有しており、この固定アクセスパスを介して管理データ１０７ａ、論理／物理テーブル１０８ａ、及びＢＣＴ１０９ａの各々に対するアクセスを実行する。
【００５３】
記憶容量１０４ｂと記憶容量１０４ｃとの間の記憶領域には、Ｓ．Ｍ．Ａ．Ｒ．Ｔ．（Self-Monitoring Analysis and Reporting Technology）ログデータ１０７ｂが格納される。Ｓ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂは、例えば、温度情報等の統計情報である。また、Ｓ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂに割り当てられたＬＢＡは、制御部１０３内で実行されるファームウエアがＳ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂをアクセスするためにローカルに使用されるものである。制御部１０３内で実行されるファームウエアはＳ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂをＬＢＡをキーにしてアクセスことができるが、ホスト装置８は通常のＲｅａｄ又はＷｒｉｔｅコマンドでＳ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂをアクセスすることはできない。
【００５４】
記憶容量１０４ｃと１０４ｄとの間の記憶領域には、例えば、記憶容量２ＭＢの未使用の記憶領域が設定される。これは、ＬＢＡの最小記憶単位が８セクタであり、４ＫＢに相当する記憶単位（大きな記憶単位は１ＭＢ）であるのに対して、実際のデータの最小記録単位は当然１セクタであるため、記憶容量１０４ｃと１０４ｄとの間に１ＭＢ以上の記憶容量の空き記憶領域を設けることで、Ｓ．Ｍ．Ａ．Ｒ．Ｔ．ログデータ１０７ｂと、記憶容量１０４ｄ以下に記録されるデータとをそれぞれ独立して扱うためである。
【００５５】
記憶容量１０４ｄと１０４ｅとの間の記憶領域は、未使用であり特別な場合を除いて記憶容量１０４ｄと１０４ｅは同値である。
【００５６】
記憶容量１０４ｅと１０４ｆとの間の記憶領域は、ＯＥＭによって使用される記憶領域であり、上述したようにＯＥＭの要求で決定される固有情報１０７ｅが書き込まれる。
【００５７】
記憶容量１０４ｆと１０４ｇとの間の記憶領域は、ＯＥＭ又はユーザによって使用される記憶領域であり、ＯＥＭ又はユーザの設定によりデータの書込みが行われる。
【００５８】
記憶容量１０４ｇの記憶領域は、ユーザによって使用される記憶領域であり、ユーザの設定によりデータの書込みが行われる。
【００５９】
なお、記憶容量１０４ａ〜１０４ｇは、以下の式で表される関係を満たす。
【００６０】
記憶容量１０４ａ＞記憶容量１０４ｂ＞記憶容量１０４ｃ＞記憶容量１０４ｄ≧記憶容量１０４ｅ≧記憶容量１０４ｆ≧記憶容量１０４ｇ
製造元（Ｖｅｎｄｅｒ）からの出荷時、記憶容量１０４ｄ〜１０４ｇは同値となる。
【００６１】
＜ＮＡＮＤメモリの構成＞
図５は、本実施形態で使用されるＮＡＮＤメモリの概略構成図である。ＮＡＮＤメモリ１０４Ａ〜１０４Ｈは、同じ機能及び構成を有しているので、ここでは、ＮＡＮＤメモリ１０４Ａについて説明する。なお、クラスタ１０４１及びセクタ１０４２の左に付された０〜７の番号は、クラスタ番号及びセクタ番号を示すものとする。
【００６２】
ＮＡＮＤメモリ１０４Ａは、複数のブロック（複数の消去ブロック）１０４０から構成されている。また、各ブロック１０４０は、複数のクラスタ、例えば１０２４個のクラスタ１０４１から構成されている。各クラスタ１０４１は、所定個数のセクタ群、例えば８つのセクタ１０４２から構成されている。８つのセクタから各クラスタが構成されている場合、各クラスタのデータサイズは４ＫＢである。また、本実施形態では、上述のように、１ＭＢのデータサイズを有するクラスタも使用できる。データのリード／ライトは、クラスタ単位（所定数のセクタ群単位）で実行される。
【００６３】
ＳＳＤ１０の制御部１０３は、ホスト装置８からのライトコマンドに応答して、ホスト装置８からのライトデータをＮＡＮＤメモリ１０４Ａにライトするためのライト処理を実行する。データライトはクラスタ単位で実行される。
【００６４】
したがって、１つのクラスタ１０４１のデータサイズに満たないライトデータの書込みを行うとき、制御部１０３は、管理データ１０７ａに基づいて、クラスタ１０４１を構成する所定数（例えば８つ）のセクタ１０４２の読出しを行ってそれらセクタのデータを一時的にＤＲＡＭ１０５に格納する。そして、制御部１０３は、ＤＲＡＭ１０５上において、読出しを行ったクラスタにライトデータの書込みを行い、ライトデータが書き込まれたクラスタをＤＲＡＭ１０５から該当するＮＡＮＤメモリのクラスタ１０４１に書込む。
【００６５】
具体的には、ＳＳＤ１０の制御部１０３は、論理／物理テーブル１０８ａを用いて、ＮＡＮＤメモリ１０４Ａ内のセクタそれぞれに対するＬＢＡの割り当てをクラスタ毎に管理し、ＮＡＮＤメモリ１０４Ａに対するデータのリードおよびライトをクラスタ毎に制御する。ホスト装置８（情報処理装置本体２）からのライトデータのデータサイズがクラスタのデータサイズ（例えば、４ＫＢまたは１ＭＢ）未満である場合、制御部１０３は、ライトデータが書き込まれるべきセクタを含むクラスタ（例えば８セクタ）に格納されたデータをＮＡＮＤメモリ１０４Ａからリードする。そして、制御部１０３は、リードされたデータとライトデータとをマージし、これによって１クラスタ（例えば８セクタ）のデータサイズを有する新たなライトデータを生成し、この生成したライトデータをＮＡＮＤメモリ１０４Ａにライトする。
【００６６】
＜ＢＣＴの構成＞
図６は、本実施形態で用いられるバッドクラスタテーブル（ＢＣＴ）の概略構成図である。ＢＣＴ（管理テーブル）１０９ａは、複数のエントリ１０９０からなるテーブルである。１エントリ１０９０は、クラスタアドレス（４バイト）とクラスタ内ビットマップ（１バイト）の計５バイトである。１ブロック（１Ｋクラスタ）の不良が発生しても動作できるように、ＢＣＴ（管理テーブル）１０９ａには４Ｋ個程度のエントリが確保されている。
【００６７】
図６に示すＢＣＴ１０９ａには、一例として、２つの不良セクタ（不良記憶単位）１０４５及び１０４６が登録されている。ＢＣＴ１０９ａは、ＳＳＤ１０のリフレッシュ時に制御部１０３によって作成され、管理データ１０７ａの中に記憶される。また、ＳＳＤ１０のフラッシュ時（データ書込み時）に行われるセクタからのデータリードにおいて、リードエラーが発生したとき、リードエラーが発生したセクタ（不良セクタ）を示す不良セクタ情報がＢＣＴ１０９ａに制御部１０３によって格納される。
【００６８】
制御部１０３は、一例として図５及び６に示すように、誤り訂正処理によって誤りの訂正ができない不良セクタ１０４５を含むクラスタ１０４１、又はフラッシュ時においてリードエラーが発生した不良セクタ１０４５を含むクラスタ１０４１を、不良クラスタ１０４４として、ＢＣＴ１０９ａに登録する。
【００６９】
ＢＣＴ１０９ａにおいては、一例として、不良クラスタの情報が格納されていないエントリ１０９０を空エントリ１０９１と呼ぶものとする。
【００７０】
また、制御部１０３は、一例として、不良クラスタ１０４４にデータの書込みが正常に行われたとき、ＢＣＴ１０９ａの該当するエントリ１０９０を削除するものとする。これ
は、不良クラスタ１０４４は、データの読込みが不良であっても、データの書込みが正常に終了した場合、その後はデータの読出しを正常に行うことができるからである。よって不良クラスタ１０４４は再利用されるので、情報処理装置１及びＳＳＤ１０の本来の機能を長期間にわたって利用することができる。
【００７１】
ＢＣＴ１０９ａへの不良セクタ情報の格納は、ライト時においてデータのリードエラーが発生した場合に実行される。上述したように、ホスト装置８（情報処理装置本体２）からのライトデータのデータサイズがクラスタのデータサイズ未満である場合、制御部１０３は、ライトデータが書き込まれるべきセクタを含むクラスタ内のデータをＮＡＮＤメモリ１０４Ａからリードする。ライトデータが書き込まれるべきセクタは、ホスト装置８からのライトコマンドに含まれる論理ブロックアドレスＬＢＡによって指定される。
【００７２】
もちろん、必ずしも、ライトデータが書き込まれるべきセクタを含むクラスタ内に属する８セクタそれぞれに格納されている全てのデータをリードする必要はなく、ライトデータが書き込まれるべきセクタ以外の他のセクタに格納されているデータ（欠落データ）のみをＮＡＮＤメモリ１０４Ａからリードしてもよい。そして、制御部１０３は、例えば、リードされたデータ（欠落データ）とライトデータとをマージすることによって、１クラスタ（８セクタ）分のデータサイズを有する新たなライトデータを生成する。そして、制御部１０３は、１クラスタ分のデータサイズを有する新たなライトデータをＮＡＮＤメモリ１０４Ａにライトする。この場合、新たなライトデータは、例えば、ＮＡＮＤメモリ１０４Ａ上に用意された空きクラスタにライトされ、元のクラスタ内のデータは無効化される。
【００７３】
欠落データをリードした時、制御部１０３は、リードされた欠落データのエラー検出を行う。もしリードされた欠落データにエラー（ＥＣＣエラー）の発生が検出されたならば、制御部１０３は、エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を、ＢＣＴ１０９ａの空きエントリに格納する。
【００７４】
リードされた欠落データにエラーが検出された場合には、正しい１クラスタ分のライトデータを生成することは出来ない。しかし、本実施形態では、ＥＣＣエラーが発生したデータが格納されていた不良セクタを示す不良セクタ情報がＢＣＴ１０９ａに格納され、ＥＣＣエラーが発生したデータとホスト装置８からのライトデータとをマージすることによって得られる１クラスタ分の新たなライトデータがＮＡＮＤメモリ１０４Ａの空きクラスタにライトされる。したがって、後に、ＥＣＣエラーが発生した欠落データのＬＢＡを指定するホスト装置８からのリードコマンドを受けた場合には、制御部１０３は、確実にリードエラーをホスト装置８に返すことが出来、誤った内容のデータがホスト装置８に送られることを防止することが出来る。よって、ライト処理時に実行される欠落データのリード時にたとえそのリードデータにＥＣＣエラーが発生しても、ライト処理をアボートすることなく、そのライト処理を正常終了することができ、ホスト装置８からのライトデータをＮＡＮＤメモリ１０４Ａにライトすることができる。よって、ホスト装置８からのライトデータの正確な書込み、及びデータの正確な読出しを行うことができる。
【００７５】
ＢＣＴ１０９ａへの不良セクタ情報の格納は、ライト時のみならず、ウェアレベリング処理時にも実行される。すなわち、制御部１０３は、ＮＡＮＤメモリ１０４Ａ内のブロックそれぞれの書き替え回数を平準化するためのウェアレベリング処理を実行する。ウェアレベリング処理においては、データの移動が行われる。ウェアレベリング処理の実行時に、ＮＡＮＤメモリ１０４Ａからリードされるデータにエラー（ＥＣＣエラー）が検出された場合、制御部１０３は、当該エラーが検出されたデータが格納されているセクタを示す不良セクタ情報を、ＢＣＴ１０９ａの空きエントリに格納する。
【００７６】
ＢＣＴ１０９ａの不良セクタ情報は、上述したように、ホスト装置８に対してリードエラーを通知するために使用される。すなわち、制御部１０３は、ホスト装置８からのリードコマンドの受信に応答して、ＢＣＴ１０９ａを参照する。そして、制御部１０３は、リードコマンドに含まれるＬＢＡによって指定されるリード対象セクタが不良セクタであるか否か、つまりリード対象セクタを示す不良セクタ情報がＢＣＴ１０９ａに格納されているか否かを判別する。リード対象セクタを示す不良セクタ情報がＢＣＴ１０９ａに格納されている場合、制御部１０３は、エラーの発生をホスト８に通知し、リード対象セクタをＮＡＮＤメモリ１０４Ａから実際にリードする処理は実行しない。よって、誤った内容のデータがホスト８に送られてしまうことを防止することが出来る。
【００７７】
また、制御部１０３は、ＢＣＴ１０９ａに格納された不良セクタ情報によって識別されるセクタへのデータのライトが成功した場合、その不良セクタ情報をＢＣＴ１０９ａから削除する。例えば、あるＬＢＡｎが不良セクタ情報としてＢＣＴ１０９ａに格納されている状態で、このＬＢＡｎを指定するライトコマンドをホスト８装置から受信した時、制御部１０３は、このＬＢＡｎが割り当てられたセクタを含むクラスタに対するライト処理を実行する。このライト処理が成功したならば、ＬＢＡｎが割り当てられたセクタのデータは正しく更新される。よって、もはやＬＢＡｎは不良セクタではなくなる。
【００７８】
＜動作＞
以下に、情報処理装置１の動作を各図を参照しつつ説明する。
【００７９】
（ＢＣＴの容量に基づいたＳＳＤの動作モード切替）
図７は、本実施形態に係るＳＳＤ動作モード切替処理の手順を示すフローチャートである。
【００８０】
まず、ユーザが電源スイッチ２５を押下すると、その電源スイッチ２５の押下を検出したＥＣ１１１は、電源７から情報処理装置１の各部に電力の供給を開始する。そして、ＥＣ１１１は、ＢＩＯＳ１１２ａに基づいて情報処理装置１の起動を行う。
【００８１】
情報処理装置１の起動が完了すると、ユーザは表示装置３１の表示画面３１ａを視認しながら、タッチパッド２０及びキーボード２３ａを用いて情報処理装置１に対する操作を行う。
【００８２】
情報処理装置１は、ユーザによる操作を受け付けると、その操作に応じて所定の動作を行う。例えば、情報処理装置１のＣＰＵ１５が、ＳＳＤ１０に記憶されたデータを表示装置３１に表示する操作を受け付けた場合には、ＣＰＵ１１５は、ＳＳＤ１０に対してデータの読出しを指示するリードコマンドをＳＳＤ１０に送出する。リードコマンドに応答して、ＳＳＤ１０の制御部１０３は、ＮＡＮＤメモリ１０４Ａ〜１０４Ｈからデータの読出しを行い、そのデータをサウスブリッジ１１３及びノースブリッジ１１４を介して、ＧＰＵ１１６に送る。そして、ＧＰＵ１１６は、そのデータを表示装置３１に画像として表示する。
【００８３】
ユーザが、例えばアプリケーションの操作によって画像の加工を行い、表示画面３１ａに表示された加工された画像の保存をタッチパッド２０及びキーボード２３ａを用いて指示したとき（Ｓ１）、ＣＰＵ１１５は、ＳＳＤ１０に対して加工された画像の画像データの書き込みを指示するライトコマンドをＳＳＤ１０に送出する。
【００８４】
ＳＳＤ１０の制御部１０３は、ＣＰＵ１１５からのライトコマンドをコネクタ１０２を介して受信すると、画像データをＮＡＮＤメモリ１０４Ａ〜１０４Ｈに記憶するため、各ＮＡＮＤメモリ１０４Ａ〜１０４Ｈの管理データ１０７ａを参照し、画像データを記憶させるＮＡＮＤメモリを決定する。
【００８５】
制御部１０３は、管理データ１０７ａに基づいて、例えば、図５に示すブロック１０４
０に対して画像データ（以下、「データ」という。）の書込みを行うため、ＢＣＴ１０９ａを参照し、ＢＣＴ１０９ａの容量（空き容量）を確認する（Ｓ２）。
【００８６】
制御部１０３は、ＢＣＴ１０９ａの空エントリ１０９１つまりＢＣＴ１０９ａの空き容量が、ＢＣＴ１０９ａの容量の１／８未満（第１の容量）であったとき、ライトスルーモード（ＷＴモード）で動作し（Ｓ３）、ライトコマンドに対応するコマンド処理をＷＴモードで実行し、コマンド処理の完了時にホスト装置８に対してライト完了を通知する（Ｓ７）。
【００８７】
ここで、ＷＴモードの動作とは、データの書込みを行うブロック１０４０をデータとともにＤＲＡＭ１０５に記憶させ、ＤＲＡＭ１０５内において、読出しを行ったブロック１０４０にデータの書込みを行い、ＤＲＡＭ１０５から該当するＮＡＮＤメモリ１０４Ａのブロック１０４０にデータの書込みを行ってから、ホスト装置８に正常にデータの書込みが終了したことを示す応答を返す動作のことである。つまり、ＷＴモードにおいては、制御部１０３は、ライトコマンドに応答してライトデータをＮＡＮＤメモリ１０４Ａ〜１０４Ｈのいずれかにライトし、ライトデータがＮＡＮＤメモリ１０４Ａ〜１０４Ｈに実際にライトされた後に、ホスト装置８にライト完了を通知する。
【００８８】
ＷＴモードにおいて、ホスト装置８からのライトデータが１クラスタ分のデータサイズ未満である場合、制御部１０３は、１クラスタ分のライトデータを生成するために、ライトコマンドに含まれるＬＢＡによって指定されるセクタを含むクラスタ内のデータをＮＡＮＤメモリ１０４Ａ〜１０４Ｈのいずれかからリードして、ＤＲＡＭ１０５に格納する。このリード時には、上述したように、リードデータのＥＣＣエラーを検出する処理、および不良セクタ情報をＢＣＴ１０９ａに格納する処理が実行される。リードデータとホスト装置８からのライトデータとをマージすることによって１クラスタ分のライトデータが生成される。そして、１クラスタ分のライトデータがＮＡＮＤメモリ１０４Ａ〜１０４Ｈのいずれかにライトされた後に、制御部１０３は、ライト完了をホスト装置８に通知する。
【００８９】
また、制御部１０３は、ＢＣＴ１０９ａの空エントリ１０９１の容量つまりＢＣＴ１０９ａの空き容量が、ＢＣＴ１０９ａの容量の１／８未満の状態から１／８以上の状態に遷移したとき、制御部１０３の動作モードを、ＷＴモードからライトバックモード（ＷＢモード）に切り換え（Ｓ４）、ライトコマンドに対応するコマンド処理をＷＢモードで実行し、コマンド処理の完了時にホスト装置８に対してライト完了を通知する（Ｓ７）。
【００９０】
ここで、ＷＢモードの動作とは、ＳＳＤ１０の残記憶容量が多いときに行われる動作であり、ライトデータをＤＲＡＭ１０５に記憶させたのち、ホスト装置８に正常にデータの書込みが終了したことを示すレスポンスを返す動作のことである。すなわち、ＷＢモードにおいては、制御部１０３は、ホスト装置８からのライトデータがライトキャッシュとしてのＤＲＡＭ１０５にライトされた時点で、ホスト装置８にライト完了を通知する。ライトキャッシュのライトデータをＮＡＮＤメモリ１０４Ａ〜１０４Ｈにライトする処理（キャッシュフラッシュ）は、ホスト装置８からのフラッシュコマンドの受信に応答して、またはライトコマンドの受信から所定時間経過した時に、実行される。ライトデータが１クラスタ分のデータサイズ未満である場合、キャッシュフラッシュ時に、制御部１０３は、１クラスタ分のライトデータを生成するために、ライトコマンドに含まれるＬＢＡによって指定されるセクタを含むクラスタ内のデータをＮＡＮＤメモリ１０４Ａ〜１０４Ｈのいずれかからリードする。このリード時には、上述したように、リードデータのＥＣＣエラーを検出する処理、および不良セクタ情報をＢＣＴ１０９ａに格納する処理が実行される。リードデータとライトデータとをマージすることによって１クラスタ分のライトデータが生成される。そして、１クラスタ分のライトデータがＮＡＮＤメモリ１０４Ａ〜１０４Ｈのいずれかにライトされる。
【００９１】
このＷＢモードの動作は、ＳＳＤ１０の残記憶容量が多いときに有効な動作である。なぜなら、ＳＳＤ１０の残記憶容量が多い場合には、ＤＲＡＭ１０５に記憶させたデータを確実にＮＡＮＤメモリ１０４Ａ〜１０４Ｈに記憶させることができるからである。
【００９２】
制御部１０３は、ＢＣＴ１０９ａの空き容量が１／８程度であるとき、ＳＳＤ１０の残記憶容量が少ないとして、確実にデータを記憶することができるＷＴ動作をまず行い、残記憶容量に余裕が生じたところで通常のＷＢ動作に戻す。なお、制御部１０３は、ＢＣＴ１０９ａの容量が１／８を超えたところでＷＢ動作へと動作の切換えを行ったが、ＷＴ動作を継続し、ＢＣＴ１０９ａの空き容量が十分になったところで、ＷＢ動作に戻るようにしても良い。また、制御部１０３は、ＷＴ動作の継続中に情報処理装置１の電源が切断され、その後電源が再投入されたとき、ＷＴ動作からＷＢ動作へと動作の切換えを行うものとする。
【００９３】
このように、本実施形態においては、ＢＣＴ１０９ａの空き容量が１／８にまで低下すると、制御部１０３の動作モードはＷＢモードからＷＴモードに遷移される。ＷＢモードにおいては、ライトキュッシュにライトデータがライトされた時点でライトコマンドの完了がホスト装置８に通知され、欠落データのリードはキャッシュフラッシュ時に実行される。したがって、ＢＣＴ１０９ａの空きエントリ数が減少した場合には、不良セクタ情報をＢＣＴ１０９ａに格納できないという不具合が発生する可能性がある。これに対し、ＷＴモードにおいては、たとえ不良セクタ情報を書き込むための空きエントリがＢＣＴ１０９ａに存在しなくなっても、ライト処理の中でエラーの発生をホスト装置８に通知することができる。
【００９４】
また、制御部１０３は、ＢＣＴ１０９ａの空エントリ１０９１が、ＢＣＴ１０９ａの容量の１／１６以下（第２の容量）になったとき、ＲＯ（リードオンリー）モードに移行し（Ｓ５）、ライトコマンドを送信したホスト装置８に対して書き込み保護（Ｗｒｉｔｅ  Ｐｒｏｔｅｃｔ）エラーを返信する（Ｓ７）。なお、制御部１０３は、読出しが不良であるセクタ１０４２が３回連続増加した場合にも、ＲＯモードに移行する。
【００９５】
ここでＲＯモードとは、データの書込みができず、データの読出しのみが行えるモードのことである。つまり、ＲＯモードにおいては、制御部１０３は、ホスト装置８によるＮＡＮＤメモリ１０４Ａ〜１０４Ｈへのライトアクセスを禁止し、且つホスト装置８によるＮＡＮＤメモリ１０４Ａ〜１０４Ｈへのリードアクセスのみを許可する。
【００９６】
さらに制御部１０３は、ＢＣＴ１０９ａの空エントリ１０９１が無くなってしまったとき、故障モードに移行し（Ｓ６）、リード／ライトコマンドを送信したホスト装置８にＡｂｏｒｔエラーを返信する（Ｓ７）。
【００９７】
ここで、故障モードとは、ホスト装置８からのデータの読込み及びデータの書込みを行うことができないモードのことであり、修理を要する状態を表している。つまり、ＢＣＴ１０９ａの空き容量が無くなった場合、制御部１０３は、ホスト装置８によるＮＡＮＤメモリ１０４Ａ〜１０４Ｈへのリードアクセスおよびライトアクセスを禁止する故障モードで動作する。
【００９８】
ここで、従来の不揮発性半導体メモリドライブでは、データの書込みが行われる空クラスタ１０４３は、データの読出しによって読出し不良が発生する不良クラスタ１０４４ではないため、データの書込みを正常に終了していた。しかし、従来の不揮発性半導体メモリドライブでは、不良クラスタ１０４４を含むブロック１０４０のデータの書込みが正常に終了しているため、例えば、当該ブロック１０４０に記憶されたデータの再生が行われたとき、不良クラスタ１０４４の読出しによって再生に不都合が生じる恐れがある。
【００９９】
しかし、本実施の形態における情報処理装置１に搭載されたＳＳＤ１０は、ＢＣＴ１０９ａの空き容量に基づいて動作モードの切替えを行うことができるので、不良クラスタ１０４４に起因する問題を回避することができ、ＳＳＤ１０としての本来の機能を長期間にわたって利用することができる。
【０１００】
上記した実施形態によると、ライト処理時に行われる欠落データのリードでＥＣＣエラーが検出された場合には、その欠落データが格納されていた不良セクタを示す不良セクタ情報がＢＣＴ１０９ａに格納される。よって、ライト処理時に実行される欠落データのリード時にたとえそのリードデータにＥＣＣエラーが発生しても、ライト処理をアボートすることなく、そのライト処理を正常終了することができ、ホスト装置８からのライトデータをＮＡＮＤメモリ１０４Ａにライトすることができる。また、後に、ＥＣＣエラーが発生した欠落データのＬＢＡを指定するホスト装置８からのリードコマンドを受けた場合には、制御部１０３は、確実にリードエラーをホスト装置８に返すことが出来、誤った内容のデータがホスト装置８に送られることを防止することが出来る。よって、ホスト装置８からのライトデータの正確な書込み、及びデータの正確な読出しを行うことができる。
【０１０１】
また、本実施形態では、ＢＣＴ１０９ａの空き容量に基づいてＷＴモード、ＷＢモード、ＲＯモード、及び故障モードとの間で動作モードの切替えを行うことができ、さらに、不良であるクラスタ１０４１を再利用することができるので、ＳＳＤ１０を効率良く制御することができ、正確なデータの書込み、データの読出し、及びＳＳＤ１０の本来の機能を長期間にわたって利用することができる。
【０１０２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図１】
2010521014.tif 000003
【図２】
2010521014.tif 000004
【図３】
2010521014.tif 000005
【図４】
2010521014.tif 000006
【図５】
2010521014.tif 000007
【図６】
2010521014.tif 000008
【図７】
2010521014.tif 000009
【国際調査報告】
2010521014.tif 000010