(57)【要約】【課題】不揮発性記憶装置が寿命に近づいたときに、不揮発性記憶装置に対する書き込み動作を行わないようシステムを構築し、不揮発性記憶装置のさらなる信頼性劣化を防止し、不揮発性記憶装置のデータ破壊を防止する。【解決手段】実施形態に係る情報処理装置は、不揮発性半導体メモリと揮発性半導体メモリとコントローラ回路とインタフェース回路とを備える半導体記憶装置と、書き込み及び読み出し命令を送信するホスト装置を備える。前記不揮発性半導体メモリには、第１のオペレーティングシステム及び前記半導体記憶装置に対する書き込みコマンドを送信することを禁止する第２のオペレーティングシステムが保存されている。ホスト装置は、半導体記憶装置の残り寿命を計算し、計算された半導体記憶装置が寿命に到達したと判断する場合に、次に前記情報処理装置が起動されたときに前記第２のオペレーティングシステムを起動するように構成される。【選択図】図１
2020144910.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するためのメモリセルを備え複数個の前記メモリセルを第１の単位として前記メモリセルに記録されたデータを電気的に消去可能な不揮発性半導体メモリと、揮発性半導体メモリと、前記不揮発性半導体メモリと前記揮発性半導体メモリを制御するためのコントローラ回路と、インタフェース回路と、
を備える半導体記憶装置と、
前記半導体記憶装置と接続可能であり、前記半導体記憶装置へ書き込み及び読み出し命令を送信するように構成されるホスト装置と、
を備える情報処理装置であって、
前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一つは、前記インタフェース回路を介して前記ホスト装置から受信された論理アドレス情報に対応する前記不揮発性半導体メモリの物理アドレスを指定する第１情報を記録可能に構成され、
前記コントローラ回路は、前記インタフェース回路を介して前記ホスト装置から書き込み命令を受信した際は、前記ホスト装置から受信したデータを用いて訂正符号を生成し、前記不揮発性半導体メモリに、前記データならびに前記訂正符号を記録し、かつ、前記インタフェース回路を介して前記ホスト装置から読み出し命令を受信した際は、前記第１情報を用いて前記不揮発性半導体メモリから読み込んだデータならびに対応する前記訂正符号に基づいて、前記読み出したデータを訂正可能に構成され、
前記不揮発性半導体メモリは、
前記半導体記憶装置の使用時間総計に基づく第２情報と、
前記ホスト装置から受信した書き込み命令に応じて受信した書き込みデータの総量に基づく第３情報と、
前記ホスト装置から受信した読み込み命令に応じて前記不揮発性半導体メモリから読み出したデータの総量に基づく第４情報と、
前記コントローラ回路が、前記不揮発性半導体メモリから読み込んだデータを、対応する前記訂正符号を用いても、訂正することが出来なかったデータの個数に関する第５情報と、
前記不揮発性半導体メモリのうち、データを書き込むことが出来ないと判断されたメモリセルの個数に応じた情報を前記第１の単位で示した第６情報と、
を記憶するように構成され、  第１のオペレーティングシステム及び前記半導体記憶装置に対する書き込みコマンドを送信することを禁止する第２のオペレーティングシステムが保存されており、
前記ホスト装置は、
前記半導体記憶装置から前記第１のオペレーティングシステムを読み出して実行し、
前記半導体記憶装置から前記第２情報乃至前記第６情報を含む複数の情報を取得し、前記取得した複数の情報の少なくとも１つに基づいて前記半導体記憶装置の残り寿命を計算し、前記計算された残り寿命を前記ホスト装置に接続される表示装置に表示可能に構成され、
前記半導体記憶装置から前記複数の情報のそれぞれに対応する閾値を取得し、前記取得した複数の情報の少なくとも１つに対応する閾値に基づいて前記残り寿命を計算し、
前記計算された残り寿命に基づいて前記半導体記憶装置が寿命に到達したと判断する場合に、次に前記情報処理装置が起動されたときに前記第２のオペレーティングシステムが起動される旨をユーザに通知し前記半導体記憶装置から前記第２のオペレーティングシステムを読み出し前記第２のオペレーティングシステムを起動するように構成されている情報処理装置。
【請求項２】
前記ホスト装置は、前記残り寿命が所定値を下回った場合に前記半導体記憶装置が寿命に到達したと判断する請求項１に記載の情報処理装置。
【請求項３】
前記半導体記憶装置に、前記第１のオペレーティングシステムを起動するためのブートローダが記憶され、前記ホスト装置は、前記半導体記憶装置が寿命に到達したと判断する場合に、前記第２のオペレーティングシステムが起動されるように前記ブートローダを書き換える請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ホスト装置は、前記ホスト装置と接続可能なバックアップ用記憶装置へ前記不揮発性記憶装置に保存されているデータをバックアップすることを特徴とする請求項１乃至請求項３の何れか一つに記載の情報処理装置。
【請求項５】
前記ホスト装置は、前記半導体記憶装置が寿命に到達したと判断する場合に、前記不揮発性記憶装置に対してバックグラウンドでの書き込み処理を禁止する指令を送信することを特徴とする請求項１乃至請求項４の何れか一つに記載の情報処理装置。
【請求項６】
前記ホスト装置は、前記半導体記憶装置が寿命に到達したと判断する場合、前記表示装置に警告画面を表示することを特徴とする請求項１乃至請求項５の何れか一つに記載の情報処理装置。
【請求項７】
前記警告画面には、前記半導体記憶装置に保存されているデータのバックアップを促すメッセージが含まれることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第２乃至第５情報はそれぞれ属性ＩＤを備える請求項１乃至請求項７の何れか一つに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
コンピュータシステムに用いられる外部記憶装置として、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Solid State Drive）が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。ＳＳＤ内には、複数のフラッシュメモリチップ、ホスト装置からの要求に応じて各フラッシュメモリチップのリード／ライト制御を行うコントローラ、各フラッシュメモリチップとホスト装置との間でデータ転送を行うためのバッファメモリ、電源回路、ホスト装置に対する接続インタフェースなどを備えている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１７６０３号公報
【特許文献２】特開２００８−０９０５３９号公報
【特許文献３】特開２００２−３５１６２１号公報
【特許文献４】特開２００６−１８８４８号公報
【特許文献５】特開平０７−７８１０２号公報
【特許文献６】特開２００４−１５１７８５号公報
【特許文献７】特開２００５−１９００７５号公報
【特許文献８】特開２００８−９０５３９号公報
【特許文献９】特開２００１−７５８１３号公報
【特許文献１０】特許第４４８９１２７号
【特許文献１１】特許第４６３５０９２号
【非特許文献】
【０００４】
【非特許文献１】ATA/ATAPI Command Set - 2 (ACS-2) d2015r6 Feb.22.2011http://www.t13.org/Documents/UploadedDocuments/docs2011/d2015r6-ATAATAPI_Command_Set_-_2_ACS-2.pdf  ・73頁目〜74頁目、290頁目〜306頁目：SELF-MONITORING, ANALYSIS, AND REPORTING TECHNOLOGY (SMART)   ・98頁目〜99頁目、50頁目：Data Set Management Command （トリムコマンド）  ・342頁目〜365頁目：SCT Command Transport
【非特許文献２】CrystalDiskInfoマニュアル（SMART情報による不揮発性記憶装置の健康状態のモニタソフト）http://crystalmark.info/software/CrystalDiskInfo/manual-ja/http://crystalmark.info/software/CrystalDiskInfo/manual-en/
【非特許文献３】Smartmontools（SMART情報による不揮発性記憶装置の健康状態のモニタソフト）http://sourceforge.net/apps/trac/smartmontools/wiki
【非特許文献４】Samsung SSD Magician USER GUIDEhttp://www.samsungssd.com/faq
【非特許文献５】Intel Solid State Drive Toolboxhttp://downloadcenter.intel.com/Detail_Desc.aspx?lang=jpn&DwnldID=18455http://downloadcenter.intel.com/Detail_Desc.aspx?lang=eng &DwnldId=18455
【非特許文献６】S.M.A.R.T. attributes meaninghttp://www.ariolic.com/activesmart/smart-attributes/
【非特許文献７】S.M.A.R.T. attributes meaninghttp://www.siguardian.com/products/siguardian/on_line_help/s_m_a_r_t_attribute_meaning.html
【非特許文献８】Self-Monitoring, Analysis and Reporting Technology :: Attributeshttp://smartlinux.sourceforge.net/smart/attributes.php
【非特許文献９】Serial ATA International Organization: Serial ATA Revision 3.1RC Clean DRAFT 2010.09.29 ５５４頁〜５５８頁 13.9 Phy Event Counters (Optional)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、不揮発性記憶装置が寿命に近づいたときに、不揮発性記憶装置に対する書き込み動作を行わないようシステムを構築し、不揮発性記憶装置のさらなる信頼性劣化を防止し、不揮発性記憶装置のデータ破壊を防止する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を達成するために、実施形態に係る情報処理装置は、不揮発性半導体メモリと、揮発性半導体メモリと、前記不揮発性半導体メモリと前記揮発性半導体メモリを制御するためのコントローラ回路と、インタフェース回路と、を備える半導体記憶装置と、前記半導体記憶装置と接続可能であり、前記半導体記憶装置へ書き込み及び読み出し命令を送信するように構成されるホスト装置と、を備える。前記不揮発性半導体メモリは、データを記憶するためのメモリセルを備え、複数個の前記メモリセルを第１の単位として前記メモリセルに記録されたデータを電気的に消去可能である。前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一つは、前記インタフェース回路を介して前記ホスト装置から受信された論理アドレス情報に対応する前記不揮発性半導体メモリの物理アドレスを指定する第１情報を記録可能に構成される。前記コントローラ回路は、前記インタフェース回路を介して前記ホスト装置から書き込み命令を受信した際は、前記ホスト装置から受信したデータを用いて訂正符号を生成し、前記不揮発性半導体メモリに、前記データならびに前記訂正符号を記録し、かつ、前記インタフェース回路を介して前記ホスト装置から読み出し命令を受信した際は、前記第１情報を用いて前記不揮発性半導体メモリから読み込んだデータならびに対応する前記訂正符号に基づいて、前記読み出したデータを訂正可能に構成される。前記不揮発性半導体メモリは、第２情報、第３情報と、第４情報と、第５情報と、第６情報と、を記憶するように構成される。前記第２情報は、前記半導体記憶装置の使用時間総計に基づく。前記第３情報は、前記ホスト装置から受信した書き込み命令に応じて受信した書き込みデータの総量に基づく。前記第４情報は、前記ホスト装置から受信した読み込み命令に応じて前記不揮発性半導体メモリから読み出したデータの総量に基づく。前記第５情報は、前記コントローラ回路が、前記不揮発性半導体メモリから読み込んだデータを、対応する前記訂正符号を用いても、訂正することが出来なかったデータの個数に関する。前記第６情報は、前記不揮発性半導体メモリのうち、データを書き込むことが出来ないと判断されたメモリセルの個数に応じた情報を前記第１の単位で示した情報である。前記不揮発性半導体メモリには、第１のオペレーティングシステム及び前記半導体記憶装置に対する書き込みコマンドを送信することを禁止する第２のオペレーティングシステムが保存されている。前記ホスト装置は、前記半導体記憶装置から前記第１のオペレーティングシステムを読み出して実行するように構成される。前記ホスト装置は、前記半導体記憶装置から前記第２情報乃至前記第６情報を含む複数の情報を取得し、前記取得した複数の情報の少なくとも１つに基づいて前記半導体記憶装置の残り寿命を計算し、前記計算された残り寿命を前記ホスト装置に接続される表示装置に表示可能に構成される。前記ホスト装置は、前記半導体記憶装置から前記複数の情報のそれぞれに対応する閾値を取得し、前記取得した複数の情報の少なくとも１つに対応する閾値に基づいて前記残り寿命を計算し、前記計算された残り寿命に基づいて前記半導体記憶装置が寿命に到達したと判断する場合に、次に前記情報処理装置が起動されたときに前記第２のオペレーティングシステムが起動される旨をユーザに通知し前記半導体記憶装置から前記第２のオペレーティングシステムを読み出し前記第２のオペレーティングシステムを起動するように構成される。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態のコンピュータシステムの機能構成例を示すブロック図である。
【図２】図２は、制御ツールをＳＳＤに保存する場合のコンピュータシステムの機能構成例を示すブロック図である。
【図３】図３は、制御ツールをその他の外部記憶装置に保存する場合のコンピュータシステムの機能構成例を示すブロック図である。
【図４】図４は、制御ツールをＷＥＢからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図５】図５は、制御ツールを光学ドライブからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図６】図６は、制御ツールをＵＳＢメモリからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図７】図７は、通常時ＯＳおよび緊急時ＯＳがＳＳＤに保存されている場合のコンピュータシステムの機能構成例を示すブロック図である。
【図８】図８は、通常時ＯＳおよび緊急時ＯＳが信頼性劣化したＳＳＤ以外の不揮発性記憶装置に保存されている場合のコンピュータシステムの機能構成例を示すブロック図である。
【図９】図９は、緊急時ＯＳをＷＥＢ上の記憶媒体からインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図１０】図１０は、緊急時ＯＳを光学ドライブからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図１１】図１１は、緊急時ＯＳをＵＳＢメモリからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図１２】図１２は、ホストの階層的機能構成例を示すブロック図である。
【図１３】図１３は、コンピュータシステムの外観的構成を示す図である。
【図１４】図１４は、コンピュータシステムの他の外観的構成を示す図である。
【図１５】図１５は、ＮＡＮＤメモリチップの内部構成例を示すブロック図である。
【図１６】図１６は、ＮＡＮＤメモリチップに含まれる１個のプレーンの構成例を示す回路図である。
【図１７】図１７は、４値データ記憶方式でのしきい値分布を示す図である。
【図１８】図１８は、ＳＳＤの内部構成例を示す機能ブロック図である。
【図１９】図１９は、ＳＳＤの管理情報を示す図である。
【図２０】図２０は、ＬＢＡとＳＳＤの管理単位との関係を示す図である。
【図２１】図２１は、ＬＢＡから物理アドレスを特定する手順を示すフローチャートである。
【図２２】図２２は、ＳＳＤの読み出し動作例を示すフローチャートである。
【図２３】図２３は、ＳＳＤの読み出し動作例を示すフローチャートである。
【図２４】図２４は、ＳＳＤの書き込み動作例を示すフローチャートである。
【図２５】図２５は、ＳＳＤの書き込み動作例を示すフローチャートである。
【図２６】図２６は、ＳＳＤのＮＡＮＤメモリの整理の動作例を示すフローチャートである。
【図２７】図２７は、削除通知を受信したときのＳＳＤの動作例を示すフローチャートである。
【図２８】図２８は、ＳＳＤのエラー発生時の動作例を示すフローチャートである。
【図２９】図２９は、制御ツールの動作手順を示すフローチャートである。
【図３０】図３０は、統計情報Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４の管理テーブルの一例を示す図である。
【図３１】図３１は、統計情報の生の値とＳＳＤの不良率の関係を示すグラフである。
【図３２】図３２は、制御ツールの他の動作手順を示すフローチャートである。
【図３３】図３３は、制御ツールの他の動作手順を示すフローチャートである。
【図３４】図３４は、制御ツールの寿命到達時処理を示すフローチャートである。
【図３５】図３５は、制御ツールの他の寿命到達時処理を示すフローチャートである。
【図３６】図３６は、制御ツールの他の寿命到達時処理を示すフローチャートである。
【図３７】図３７は、コンピュータシステムの起動時の動作手順を示すフローチャートである。
【図３８】図３８は、緊急時ＯＳがバックアップ機能を搭載している場合の、ホストの構成を示す図である。
【図３９】図３９は、コンピュータシステムの起動時のバックアップ動作を含む動作手順を示すフローチャートである。
【図４０】図４０は、ＮＡＮＤメモリの記憶内容およびファイル管理テーブルの記憶内容を示す図である。
【図４１】図４１は、バックアップ用記憶装置としてＵＳＢストレージが用いられた場合の、コンピュータシステムの機能構成例を示す図である。
【図４２】図４２は、バックアップ用記憶装置として光学記憶媒体が用いられた場合の、コンピュータシステムの機能構成例を示す図である。
【図４３】図４３は、バックアップ用記憶装置としてストレージサーバが用いられた場合の、コンピュータシステムの機能構成例を示す図である。
【図４４】図４４は、緊急時起動用ディスクを作成する時のデータの移動の概念を示す図である。
【図４５】図４５は、緊急時起動用ディスクを作成する時の動作手順を示すフローチャートである。
【図４６】図４６は、緊急時ツールを含む緊急時起動用ディスクを作成する時のデータの移動の概念を示す図である。
【図４７】図４７は、緊急時ツールを含む緊急時起動用ディスクを作成する時の動作手順を示すフローチャートである。
【図４８】図４８は、バックアップ処理をユーザへ案内する画面例を示す図である。
【図４９】図４９は、制御ツールの他の動作手順を示すフローチャートである。
【図５０】図５０は、コンピュータシステムの起動時の他の動作手順を示すフローチャートである。
【図５１】図５１は、統計情報の時系列データ例を示す図である。
【図５２】図５２は、統計情報の経時変化を示す図である。
【図５３】図５３は、統計情報の経時変化に基づき予測寿命を求める処理を概念的に示す図である。
【図５４】図５４は、ＳＳＤの寿命到達時のユーザへの案内画面例を示す図である。
【図５５】図５５は、ブートローダの復元処理を行う際のコンピュータシステムの機能構成例を示すブロック図である。
【図５６】図５６は、寿命到達時処理の際のブートローダの復元処理の動作手順を示すフローチャートである。
【図５７】図５７は、ブートローダの書き換え差分ログを示す図である。
【図５８】図５８は、緊急時ＯＳによるバックアップ動作手順を示すフローチャートである。
【図５９】図５９は、ブートローダの復元処理を行う際のコンピュータシステムの機能構成例を示すブロック図である。
【図６０】図６０は、緊急時ＯＳによるブートローダ復元処理の動作手順を示すフローチャートである。
【図６１】図６１は、第８の実施形態の全体的動作手順を示すフローチャートである。
【発明を実施するための形態】
【０００８】
不揮発性半導体メモリには、ＮＡＮＤ型フラッシュメモリのように、データを記憶させる場合にブロック単位で一度データを消去してからその後に書き込みを行うもの、ページ単位で書き込み／読み出しを行うものなど、消去／書き込み／読み出しの単位が固定されているものがある。一方、パーソナルコンピュータなどのホスト機器がハードディスクをはじめとする２次記憶装置に対してデータの書き込み／読み出しを行う単位は、セクタと呼ばれる。セクタは、半導体記憶装置の消去／書き込み／読み出しの単位とは独立に定められる。例えば、不揮発性半導体メモリの消去／書き込み／読み出しの単位は、ホスト機器の書き込み／読み出しの単位よりも大きい場合がある。
【０００９】
また、フラッシュメモリを用いてパーソナルコンピュータの二次記憶装置を構成する場合、誤りが多いなどの理由によって記憶領域として使用できなくなるブロック（不良ブロック、バッドブロック）や、読み出せなくなる領域（不良領域）などが生じる場合がある。このような不良ブロック数や不良領域数が上限値を超えた場合には、新たな不良ブロックや不良領域を登録することができないので、バッファメモリ（キャッシュメモリ）に格納されているデータとライト要求のあったデータの両方をフラッシュメモリへ書き込むことを保障できない。このため、不良ブロック数や不良領域数が所定値を超えた場合には、フラッシュメモリに空き容量があるにも関わらず、突然データの書き込みが不能になるといった問題があった。
【００１０】
それに対する解決策として、ＮＡＮＤ型フラッシュメモリで発生したバッドクラスタの数とバッドブロックの数を管理し、バッドクラスタ数、バッドブロック数に応じて、ホスト装置からＮＡＮＤ型フラッシュメモリへのデータの書き込みの際の動作モードを切り替えるという方法がある。クラスタとは、ＳＳＤでの論理アドレスとしての管理単位である。クラスタサイズは、セクタサイズの２以上の自然数倍であり、クラスタアドレスは、ＬＢＡの所定のビットから上位のビット列で構成される。
【００１１】
この方法においては、ＳＳＤの動作モードは、例えば以下の３つのモードに分かれる。
【００１２】
・ＷＢモード（Write Back Mode）：キャッシュメモリに一旦データを書き込み、所定の条件に基づきＮＡＮＤ型フラッシュメモリへの追い出しを行う通常の動作モード。
【００１３】
・ＷＴモード：（Write Through Mode）：一回のライト要求でキャッシュメモリに書き込まれたデータを、ＮＡＮＤ型フラッシュメモリに都度書き込む動作モード。ＮＡＮＤ型フラッシュメモリに都度書き込むことで、ホストから書き込まれたデータをできるだけ保障する。ＳＳＤは、バッドクラスタテーブルまたはバッドブロックテーブルの残エントリ数が所定数以下になったとき、ＷＴモードへと遷移する。
【００１４】
・ＲＯモード（Read Only Mode）：ＮＡＮＤ型フラッシュメモリへの書き込みを伴う処理を全て禁ずるモード。ホストからの全てのライト要求に対してエラーを返し書き込みを行わないようにすることで、ＳＳＤが寿命に近づいたときに、ホストからすでに書き込まれていたデータをできるだけ保障できるようにしている。ＳＳＤは、バッドクラスタテーブルまたはバッドブロックテーブルの残エントリ数が所定数以下になったとき、またはフリーブロックが不足となったとき、ＲＯモードへと遷移する。
【００１５】
ＷＢモード及びＷＴモードにおいては、ＳＳＤはホストからリード要求とライト要求の両方を受け付けて処理をする。一方、ＲＯモードにおいては、ＳＳＤはホストからリード要求を受け付けて処理をするが、ホストからのライト要求に対しては処理をせずエラーを返す。
【００１６】
Windows(登録商標)などのオペレーティングシステム(ＯＳ)を搭載したホストに対してＳＳＤが接続されたとき、ホストはＳＳＤに対してライト要求を送信し、ライト要求が正常に処理されたとき、ホストはＳＳＤを利用可能な外部記憶装置として認識する。
【００１７】
一方、上記ＲＯモードに遷移したＳＳＤがWindows(登録商標)を搭載したホストに接続されたとき、ホストがＳＳＤに対してライト要求を送信すると、ＳＳＤはホストにエラーを返すため、ホストはＳＳＤを利用可能な外部記憶装置として認識しない場合がある。そのため、読み出しは可能なＲＯモードのＳＳＤをホストに接続しても、過去に記録したデータをＳＳＤから読み出せない可能性があった。
【００１８】
このように、ＳＳＤが寿命が到達した場合、あるいはＳＳＤが寿命に近づいた場合は、ＳＳＤに対する書き込みを禁止すべきである。しかし、コンピュータシステムに搭載される通常のオペレーティングシステム（ＯＳ）では、ブート時にＳＳＤへの書き込みが発生し、またユーザが意図しないＳＳＤへの書き込みがバックグラウンドで発生する。このため、ＳＳＤが寿命が到達した場合、あるいはＳＳＤが寿命に近づいた場合に、コンピュータシステムに通常のＯＳが搭載される状況下では、ＳＳＤの信頼性がさらに劣化し、既に書き込まれているデータが破壊される可能性がある。
【００１９】
そこで、本実施形態においては、ＳＳＤが寿命に到達したと判断された場合、ブートローダを書き換え、システムを再起動した際、ＳＳＤ２に対する書き込み動作を行わない緊急時ソフトウェアとしての例えば緊急時ＯＳが起動されるようにすることで、ＳＳＤの信頼性劣化を防止し、既に書き込まれているデータ破壊を防止する。緊急時ＯＳとしては、ブート時にＳＳＤに対し読み出し動作のみを行い、ユーザが意図しないバックグラウンドでのＳＳＤへの書き込みを行わないものを採用する。
【００２０】
以下に添付図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、これら実施形態により本発明が限定されるものではない。
【００２１】
（第１の実施形態）
図１にコンピュータシステムの第１の実施形態の構成を示す。本コンピュータシステム１は、不揮発性記憶装置としてのＳＳＤ２と、ホスト装置３と、ＳＳＤ２とホスト装置３とを結ぶメモリインタフェース１９とから構成されている。本実施形態では、不揮発性記憶装置として、ＳＳＤ（Solid State Drive）を用いるが、たとえば、ハードディスクドライブ、ハイブリッドディスクドライブ、ＳＤカード、ＵＳＢメモリ、マザーボード上に直接実装されたＮＡＮＤ型フラッシュメモリなど、他の不揮発性記憶装置であってもよい。また、本実施形態では、インタフェース１９として、ＡＴＡ（Advanced Technology Attachment）インタフェースを用いるが、ＵＳＢ（Universal Serial Bus）やＳＡＳ（Serial Attached SCSI）やThunderbolt（登録商標）やPCI Expressなど他のインタフェースであってもよい。ＣＰＵ（制御回路）４がホスト装置３における中央演算処理装置であり、ホスト装置３における種々の演算及び制御はＣＰＵ４によって行われる。ＣＰＵ４はサウスブリッジ７を介してＳＳＤ２や、ＤＶＤ−ＲＯＭなどの光学ドライブ１０の制御を行う。ＣＰＵ４は、ノースブリッジ５を介して、主メモリ６の制御を行う。主メモリ６としては、たとえばＤＲＡＭを採用してよい。
【００２２】
ユーザは、キーボード１４やマウス１５などの入力装置を通してホスト装置３の制御を行い、キーボード１４やマウス１５からの信号は、ＵＳＢ（Universal Serial Bus）コントローラ１３及びサウスブリッジ７を介してＣＰＵ４で処理される。ＣＰＵ４は、ノースブリッジ５及び表示コントローラ８を介してディスプレイ（表示装置）９に画像データやテキストデータなどを送る。ユーザは、ディスプレイ９を介してホスト装置３からの画像データやテキストデータなどを視認することができる。
【００２３】
ＣＰＵ４は、コンピュータシステム１の動作を制御するために設けられたプロセッサであり、ＳＳＤ２から主メモリ６にロードされるオペレーティングシステム（ＯＳ）１００を実行する。更に、光学ドライブ１０が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ４は、それらの処理を実行する。また、ＣＰＵ４は、ＢＩＯＳ（Basic Input/Output System）−ＲＯＭ１１に格納されたシステムＢＩＯＳも実行する。尚、システムＢＩＯＳは、コンピュータシステム１内のハードウェア制御のためのプログラムである。その他、ＣＰＵ４は、サウスブリッジ７を介してＬＡＮ（Local Area Network）コントローラ１２を制御する。
【００２４】
ノースブリッジ５は、ＣＰＵ４のローカルバスと接続するブリッジデバイスである。ノースブリッジ５には、主メモリ６をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ５は、表示コントローラ８との通信などを実行する機能も有している。
【００２５】
主メモリ６は、プログラムやデータを一時的に記憶し、ＣＰＵ４の作業用メモリとして機能する。主メモリ６は、ＯＳ１００を格納する記憶領域６Ａと、制御ツール２００を格納する記憶領域６Ｂを含んでいる。ＯＳは、一般的に知られているように、ホスト装置３の入出力装置を管理し、ディスクやメモリを管理し、ソフトウェアがホスト装置３のハードウェアを利用可能にするための制御を行うなど、ホスト装置３全体を管理するプログラムである。
【００２６】
表示コントローラ８は、コンピュータシステム１のディスプレイ９を制御するビデオ再生コントローラである。サウスブリッジ７は、ＣＰＵ４のローカルバスと接続するブリッジデバイスである。サウスブリッジ７は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ２を、ＡＴＡインタフェース１９を介して制御する。
【００２７】
コンピュータシステム１では、論理セクタ単位でＳＳＤ２へのアクセスを行う。ＡＴＡインタフェース１９を介して、ライトコマンド（ライト要求）、リードコマンド（リード要求）、フラッシュコマンド等がＳＳＤ２に入力される。
【００２８】
また、サウスブリッジ７は、ＢＩＯＳ−ＲＯＭ１１、光学ドライブ１０、ＬＡＮコントローラ１２、ＵＳＢコントローラ１３をアクセス制御するための機能も有している。ＵＳＢコントローラ１３にキーボード１４、マウス１５が接続されている。
【００２９】
制御ツール２００は、例えば、図２に示すように、ホスト装置３が電源オフになっているときはＳＳＤ２のＮＡＮＤ型フラッシュメモリ（ＮＡＮＤメモリ）１６の領域１６Ｂに格納されているが、ホスト３の起動時またはプログラム起動時に、ＮＡＮＤメモリ１６の領域１６Ｂから主メモリ６上の領域６Ｂにロードされる。一方、ホスト３に複数の不揮発性記憶装置が接続されている場合は、図３に示すように、ＳＳＤ制御ツール２００は、ＳＳＤ２とは別の不揮発性記憶装置２０の領域２０Ｂに格納されており、ホスト装置３の起動時またはプログラム起動時に、領域２０Ｂから主メモリ６上の領域６Ｂにロードされるようにしてもよい。特に、不揮発性記憶装置２０がＯＳを格納するシステムドライブとして使用されており、ＳＳＤ２が文書や静止画データや動画データなどユーザデータを格納するデータドライブとして使用されている場合は、システムドライブ２０にはＯＳやアプリケーションプログラムを主として格納するドライブとして使用し、データドライブ２にはユーザデータを格納するドライブとして使用するというように、ドライブ２とドライブ２０の役割を明確に分ける観点で、システムドライブとしての不揮発性記憶装置２０に制御ツールを格納することが望ましい。
【００３０】
制御ツール２００のセットアップをユーザが行う労力を省く観点では、例えば図２や図３に示したように、制御ツール２００がＳＳＤ２や不揮発性記憶装置２０に格納された状態でコンピュータシステム１が出荷され、店頭に並び、ユーザの手に渡ることが望ましい。一方、ユーザが制御ツールのインストールの可否を選択できるようにする観点、およびユーザに最新の制御ツールを提供できるようにするという観点では、制御ツール２００は、ＷＥＢからのダウンロード、またはＤＶＤ−ＲＯＭやＵＳＢメモリなど外部記憶媒体からのインストールによりＳＳＤ２や不揮発性記憶装置２０に格納できるようにすることが望ましい。
【００３１】
図４はＷＥＢからのダウンロードの一例である。制御ツール２００はＷＥＢサーバ２１内の記憶媒体２２の領域２２Ｂに格納されており、制御ツール２００はインターネットやローカルネットワークや無線ＬＡＮなどのネットワークを介して、たとえばＬＡＮコントローラ１２を経由してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｂにダウンロード（またはインストール）される。図３の場合は、制御ツール２００は、不揮発性記憶装置２０上の領域２０Ｂにダウンロードまたはインストールされる。
【００３２】
図５はＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなど光学メディアからのインストールの一例である。制御ツール２００はＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなどの光学メディア２３に格納されており、光学メディア２３が光学ドライブ１０にセットされることで、制御ツール２００は光学ドライブ１０を介してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｂ（または領域２０Ｂ）にインストールされる。図６はＵＳＢメモリからのインストールの一例である。制御ツール２００はＵＳＢメモリ２４の領域２４Ｂに格納されており、ＵＳＢメモリ２４がＵＳＢコントローラ１３に接続されることで、制御ツール２００はＵＳＢコントローラ１３を介してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｂ（または領域２０Ｂ）にインストールされる。ＵＳＢメモリ２４のかわりに、ＳＤカードなどその他外部メモリであってもよいのはもちろんである。ユーザによる入手容易性の観点から、光学メディア２３やＵＳＢメモリ２４は、ＳＳＤ２の出荷時に、付属品としてＳＳＤ２と一緒に梱包されて販売されることが望ましい。一方、光学メディア２３やＵＳＢメモリ２４はソフトウェア商品として単独で販売されてもよいし、雑誌や書籍の付録として付属していてもよい。
【００３３】
本実施形態では、ＯＳ１００として、通常時ＯＳ（第１のオペレーティングシステム）１００Ａと緊急時ＯＳ（第２のオペレーティングシステム）１００Ｂの２種類が存在する。通常時ＯＳ１００ＡはＳＳＤ２の信頼性が劣化していない場合に使用されるオペレーティングシステムである。前述したように、通常時ＯＳは、ブート時にＳＳＤへの書き込みが発生し、またユーザが意図しないＳＳＤへの書き込みがバックグラウンドで発生する。通常時ＯＳ１００Ａは、図７に示すように、ホスト装置３が電源オフになっているときはＮＡＮＤメモリ１６の領域１６Ｄに格納されている。緊急時ＯＳ１００ＢはＳＳＤ２の信頼性が劣化した場合に使用されるオペレーティングシステムであり、ＳＳＤ２への書き込みは行わない（書き込み非サポート）。すなわち、緊急時ＯＳは、ブート時にＳＳＤに対し読み出し動作のみを行い、ユーザが意図しないバックグラウンドでのＳＳＤへの書き込みを行わない。なお、緊急時ＯＳ１００Ｂは信頼性劣化した時のＳＳＤ２以外の不揮発性記憶装置に対しては書き込みを行うことができてもよい。また、緊急時ＯＳ１００Ｂは、緊急時ＯＳのシステム情報など一部のデータをＳＳＤ２に書き込む必要がある場合は、例外としてＳＳＤ２に当該データを書き込むことを許可してもよいが、当該データはデータ量がＮＡＮＤメモリ１６の容量に対して十分に小さいことが望ましい。さらに望ましくは、ユーザが誤って書き込みコマンドを送信してしまいＳＳＤ２に対してデータを書き込んでしまうことを防止するために、緊急時ＯＳ１００ＢはＳＳＤ２に対する通常の書き込みコマンドを行うことを禁止し、ＳＳＤ２に対して例外的にデータを書き込む必要がある場合は、たとえばINCITS ACS-2に記述されているSCT Command Transportやその他ベンダー独自のコマンドなど、特殊なコマンドを用いたコマンドのみによりＳＳＤ２に対する書き込みを許可するようにすることが望ましい。
【００３４】
緊急時ＯＳ１００Ｂは、図７に示すように、ホスト装置３が電源オフになっているときはＮＡＮＤメモリ１６の領域１６Ｅに格納されている。緊急時ＯＳ１００ＢはＳＳＤ２が正常な状態においては使用されないため、領域１６Ｅでの緊急時ＯＳデータの破壊を防止する観点では、通常時ＯＳ使用時には領域１６Ｅはホスト装置３から書き換えできないように設定されていることが望ましい。たとえば、通常時ＯＳ１００Ａの動作時には、領域１６Ｅには後述するＳＳＤ２の管理情報において、ＬＢＡが割り当てられていないことが望ましく、この場合は、緊急時ＯＳ動作が必要になった後に領域１６ＥにＬＢＡが割り当てられる。あるいは、通常時ＯＳ１００Ａの動作時には、領域１６Ｅは通常時ＯＳ１００Ａによって書き込みプロテクトを設定されていることが望ましい。
【００３５】
ＳＳＤ２の信頼性が劣化した状態でＳＳＤ２へのアクセスを極力減らすという観点では、緊急時ＯＳ１００Ｂが格納されている領域１６Ｅのデータ量はＮＡＮＤメモリ１６の容量に比べて大幅に小さいことが望ましい。緊急時ＯＳ１００Ｂとしては、たとえばＭＳ−ＤＯＳ（商標）やＬｉｎｕｘなどのＯＳにＳＳＤ２への書き込みを禁止するようなカスタマイズを行ったり、ＳＳＤ２のバックアップ機能を付加したりしたものを採用してもよいし、ＳＳＤ２用に独自に開発したソフトウェアであってもよい。
【００３６】
コンピュータシステム１の電源がＯＮしたときやＯＳが再起動されたときなどのような、コンピュータシステム１の起動時、ホスト装置３はＮＡＮＤメモリ１６の領域１６Ｃに書き込まれているブートローダ３００を読み出し、ブートローダ３００の情報をもとに、通常時ＯＳ１００Ａと緊急時ＯＳ１００Ｂのどちらがホスト装置３における領域６Ａにロードされるかが決定される。そのためには、ブートローダ３００には読み出すべきＯＳのＬＢＡを示すＯＳポインタ情報ＯＳＰＴを保持させておく。ホスト装置３はブートローダ３００の読み出し時、ＯＳポインタ情報ＯＳＰＴの示すＬＢＡを開始点として読み出しを行い、読み出したデータを主メモリ６上の領域６Ａに書き込むようにすればよい。ブートローダ３００は、初期状態では、通常時ＯＳ１００Ａをロードされるように構成されている。ＳＳＤ２の信頼性が劣化したのち、主メモリ６上の領域６Ｂに格納された制御ツール２００はＮＡＮＤメモリ１６上の領域１６Ｃに記憶されているブートローダ３００を書き換えて、緊急時ＯＳ１００Ｂを読み出すようにブートローダ３００を再構築する。ブートローダ３００として、たとえばマスターブートレコード（ＭＢＲ）を採用してもよいし、ＧＵＩＤパーティションテーブル（ＧＰＴ）を採用してもよい。
【００３７】
ホスト装置３に複数の不揮発性記憶装置が接続されている場合は、ＯＳは、ＳＳＤ２とは別の不揮発性記憶装置２０に格納されていてもよい。たとえば、図８に示すように、通常時ＯＳと緊急時ＯＳの両方が不揮発性記憶装置２０に格納されていてもよいし、通常時ＯＳがＳＳＤ２に格納され、緊急時ＯＳが不揮発性記憶装置２０に格納されていてもよいし、通常時ＯＳが不揮発性記憶装置２０に格納され、緊急時ＯＳがＳＳＤ２に格納されていてもよい。特に、不揮発性記憶装置２０がＯＳを格納するシステムドライブとして使用されており、ＳＳＤ２が文書や静止画データや動画データなどユーザデータを格納するデータドライブとして使用されている場合は、システムドライブ２０にはＯＳやアプリケーションプログラムを主として格納するドライブとして使用し、データドライブ２にはユーザデータを格納するドライブとして使用するというように、ドライブ２とドライブ２０の役割を明確に分ける観点で、システムドライブとしての不揮発性記憶装置２０に通常時ＯＳが格納されていることが望ましく、さらに望ましくは、システムドライブとしての不揮発性記憶装置２０に緊急時ＯＳも格納されていることが望ましい。
【００３８】
緊急時ＯＳのセットアップをユーザが行う労力を省く観点では、例えば図７や図８に示したように、緊急時ＯＳがＳＳＤ２や不揮発性記憶装置２０に格納された状態でコンピュータシステム１が出荷され、店頭に並び、ユーザの手に渡ることが望ましい。一方、ユーザが緊急時ＯＳのインストールの可否を選択できるようにする観点、およびユーザに最新の緊急時ＯＳを提供できるようにするという観点では、緊急時ＯＳは、ＷＥＢからのダウンロード、またはＤＶＤ−ＲＯＭやＵＳＢメモリなど外部記憶媒体からのインストールによりＳＳＤ２や不揮発性記憶装置２０に格納できるようにすることが望ましい。
【００３９】
図９はＷＥＢからのダウンロードの一例である。緊急時ＯＳはＷＥＢサーバ２１内の記憶媒体２２の領域２２Ｅに格納されており、緊急時ＯＳはインターネットやローカルネットワークや無線ＬＡＮなどのネットワークを介して、たとえばＬＡＮコントローラ１２を経由してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｅにダウンロードまたはインストールされる。図８の場合は不揮発性記憶装置２０上の領域２０Ｅにダウンロードまたはインストールされる。
【００４０】
図１０はＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなど光学メディアからのインストールの一例である。緊急時ＯＳはＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなどの光学メディア２３の領域２３Ｅに格納されており、光学メディア２３が光学ドライブ１０にセットされることで、緊急時ＯＳは光学ドライブ１０を介してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｅ（または領域２０Ｅ）にインストールされる。図１１はＵＳＢメモリからのインストールの一例である。緊急時ＯＳはＵＳＢメモリ２４の領域２４Ｅに格納されており、ＵＳＢメモリ２４がＵＳＢコントローラ１３に接続されることで、緊急時ＯＳはＵＳＢコントローラ１３を介してＳＳＤ２のＮＡＮＤメモリ１６上の領域１６Ｅ（または領域２０Ｅ）にインストールされる。ＵＳＢメモリ２４のかわりに、ＳＤカードなどその他外部メモリであってもよいのはもちろんである。ユーザによる入手容易性の観点から、光学メディア２３やＵＳＢメモリ２４はＳＳＤ２の出荷時に、付属品としてＳＳＤ２と一緒に梱包されて販売されることが望ましい。一方、光学メディア２３やＵＳＢメモリ２４はソフトウェア商品として単独で販売されてもよいし、雑誌や書籍の付録として付属していてもよい。緊急時ＯＳと制御ツールは光学メディア２３やＵＳＢメモリ２４など同一の外部メモリに格納されていることが、インストールの平易さの観点では望ましい。
【００４１】
図１２に、コンピュータシステム１のソフトウェアレベルでの階層構造を示す。主メモリ６上にロードされた制御ツール２００及びその他ソフトウェア（制御ツール２００以外のソフトウェア）は、通常はＳＳＤ２と直接通信せずに、主メモリ６にロードされたＯＳ１００を経由してＳＳＤ２と通信する。制御ツール２００やその他ソフトウェアがＳＳＤ２に対しリード要求、ライト要求などの命令を送信する必要が生じた場合、制御ツール２００やその他ソフトウェアは、ＯＳ１００にファイル単位のアクセス要求を送信する。ＯＳ１００はＯＳ１００に内包されるファイル管理テーブルを参照し、アクセス要求のあったファイルに対応するＳＳＤ２の論理アドレス（ＬＢＡ）を特定し、対応するＬＢＡを含む当該インタフェース固有の命令をＳＳＤ２に送信する。ＳＳＤ２から応答が返ってきた場合、ＯＳ１００は変換後の当該インタフェース固有の応答がどのソフトウェアに対する応答かを特定し、特定したソフトウェアに対して応答を返す。
【００４２】
次に、コンピュータシステム１の構成例について説明する。コンピュータシステム１は、例えば、デスクトップコンピュータやノートブック型のポータブルコンピュータとして実現し得る。図１３は、コンピュータシステム１としてのデスクトップコンピュータの概略図である。デスクトップコンピュータは、コンピュータ本体３１、ディスプレイ９、キーボード１４、及びマウス１５などを備えている。コンピュータ本体３１は、主要なハードウェアが搭載されたマザーボード３０、ＳＳＤ２、及び電源装置３２などを備えている。ＳＳＤ２は、ＳＡＴＡケーブルを介してマザーボード３０に物理的に接続され、マザーボード３０上に実装されたサウスブリッジ７を介して、同じくマザーボード上に実装されたＣＰＵ４に電気的に接続されている。電源装置３２は、デスクトップコンピュータで使用される各種電源を発生し、電源ケーブルを介してマザーボード３０やＳＳＤ２などに電源を供給する。
【００４３】
図１４は、コンピュータシステム１としてのポータブルコンピュータの概略図である。ポータブルコンピュータは、コンピュータ本体３４、ディスプレイユニット３５などから構成されている。ディスプレイユニット３５は、例えばＬＣＤ（Liquid Crystal Display）で構成される表示装置９が組み込まれている。ディスプレイユニット３５は、コンピュータ本体３４に対し、この本体３４の上面が露出される開放位置と本体３４の上面を覆う閉塞位置との間を回動自由に取り付けられている。本体３４は薄い箱形の筐体を有しており、その上面には、電源スイッチ３６、キーボード１４、タッチパッド３３等が配置されている。また、本体３４も、デスクトップコンピュータと同様に、ＳＳＤ２、マザーボード、及び電源装置などを備えている。
【００４４】
本発明を適用する情報処理機器としては、コンピュータシステム１の他に、スチルカメラ或いはビデオカメラなどの撮像装置などであってもよいし、タブレットコンピュータやスマートフォンやゲーム機器やカーナビゲーションシステムなどであってもよい。
【００４５】
つぎに、ＳＳＤ２の主な構成要素であるＮＡＮＤメモリ１６について説明する。図１５にＮＡＮＤメモリ１６を構成するＮＡＮＤメモリチップ８０の内部構成例を示す。ＮＡＮＤメモリ１６は、１以上の数のＮＡＮＤメモリチップ８０よりなる。ＮＡＮＤメモリチップ８０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有する。メモリセルアレイを構成するメモリセルトランジスタは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び浮遊ゲート電極上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。本実施形態では、個々のメモリセルが上位ページ及び下位ページを使用しての２bit/cellの４値記憶方式の書き込み方式である場合について説明するが、個々のメモリセルが単一ページを使用しての１bit/cellの２値記憶方式の書き込み方式、または上位ページ及び中位ページ及び下位ページを使用しての３bit/cellの８値記憶方式の書き込み方式である場合、あるいは４bit/cell以上の多値記憶方式の書き込み方式を採用する場合であっても本発明の本質は変わらない。また、メモリセルトランジスタは浮遊ゲート電極を有する構造に限らず、ＭＯＮＯＳ（Metal-Oxide-Nitride-Oxide-Silicon）型など、電荷蓄積層としての窒化界面に電子をトラップさせることで閾値電圧を調整可能な構造であってもよい。ＭＯＮＯＳ型のメモリセルトランジスタについても同様に、１ビットを記憶するように構成されていてもよいし、多値を記憶するように構成されていてもよい。また、不揮発性記憶媒体として、特開２０１０−１６１１９９号公報や特開２０１１−２９５８６号公報に記述されるような３次元的にメモリセルが配置された半導体記憶媒体であってもよい。
【００４６】
図１５に示すように、ＮＡＮＤメモリチップ８０は、データを記憶するメモリセルをマトリックス状に配置してなるメモリセルアレイ８２を備えている。メモリセルアレイ８２は複数のビット線と複数のワード線と共通ソース線を含み、ビット線とワード線の交点に電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ８２には、ビット線を制御するためのビット線制御回路８３、及びワード線電圧を制御するためのワード線制御回路８５が接続されている。すなわち、ビット線制御回路８３は、ビット線を介してメモリセルアレイ８２中のメモリセルのデータを読み出す一方、ビット線を介してメモリセルアレイ８２中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。
【００４７】
ビット線制御回路８３には、カラムデコーダ８４、データ入出力バッファ８９及びデータ入出力端子８８が接続されている。メモリセルアレイ８２から読み出されたメモリセルのデータは、ビット線制御回路８３、データ入出力バッファ８９を介してデータ入出力端子８８から外部へ出力される。また、外部からデータ入出力端子８８に入力された書き込みデータは、データ入出力バッファ８９を介して、カラムデコーダ８４によってビット線制御回路８３に入力され、指定されたメモリセルへの書き込みが行われる。
【００４８】
また、メモリセルアレイ８２、ビット線制御回路８３、カラムデコーダ８４、データ入出力バッファ８９、及びワード線制御回路８５は、制御回路８６に接続されている。制御回路８６は、制御信号入力端子８７に入力される制御信号に従い、メモリセルアレイ８２、ビット線制御回路８３、カラムデコーダ８４、データ入出力バッファ８９、及びワード線制御回路８５を制御するための制御信号及び制御電圧を発生させる。ＮＡＮＤメモリチップ８０のうち、メモリセルアレイ８２以外の回路部分をＮＡＮＤコントローラ（ＮＡＮＤＣ）８１と呼ぶ。
【００４９】
図１６は、図１５に示すメモリセルアレイ８２の構成を示している。メモリセルアレイ８２はＮＡＮＤセル型メモリセルアレイであり、複数のＮＡＮＤセルを含んで構成されている。１つのＮＡＮＤセルは、直列接続されたメモリセルからなるメモリストリングＭＳと、その両端に接続される選択ゲートＳ１、Ｓ２とにより構成されている。選択ゲートＳ１はビット線ＢＬに接続され、選択ゲートＳ２はソース線ＳＲＣに接続されている。同一のロウに配置されたメモリセルＭＣの制御ゲートはワード線ＷＬ0〜ＷＬm-1に共通接続されている。また、第１の選択ゲートＳ１はセレクト線ＳＧＤに共通接続され、第２の選択ゲートＳ２はセレクト線ＳＧＳに共通接続されている。
【００５０】
メモリセルアレイ８２は、１または複数のプレーンを含んでおり、プレーンは複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤセルにより構成され、このブロック単位でデータが消去される。
【００５１】
また、１つのワード線に接続された複数のメモリセルは、１物理セクタを構成する。この物理セクタ毎にデータが書き込まれ、読み出される（この物理セクタは、後述するＬＢＡの論理セクタとは無関係である）。１物理セクタには、２bit/cell書き込み方式（４値）の場合例えば２ページ分のデータが記憶される。一方、１bit/cell書き込み方式（２値）の場合は、１物理セクタに例えば1ページ分のデータが記憶され、３bit/cell書き込み方式（８値）の場合、１物理セクタに例えば３ページ分のデータが記憶される。
【００５２】
リード動作、プログラムベリファイ動作及びプログラム動作時において、後述のＳＳＤＣ４１から受信した物理アドレスに応じて、１本のワード線が選択され、１物理セクタが選択される。この物理セクタ内のページの切り替えは物理アドレスによって行われる。本実施形態ではＮＡＮＤメモリ１６は２bit/cell書き込み方式であり、ＳＳＤＣ４１は物理セクタには上位ページ（Upper Page）と下位ページ（Lower Page）の２ページが物理ページとして割り当てられていると取扱い、それら全ページに対して物理アドレスが割り当てられている。
【００５３】
２bit/cellの４値ＮＡＮＤメモリは、１つのメモリセルにおける閾値電圧が、４通りの分布を持ち得るように構成されている。図１７は、４値ＮＡＮＤセル型フラッシュメモリのメモリセルに記憶される２ビットの４値データ（データ“１１”、“０１”、“１０”、“００”）とメモリセルの閾値電圧分布との関係を示している。なお、図１７において、ＶＡ１は、下位ページのみ書き込み済みで上位ページが未書き込みの物理セクタについて、２つのデータを読み出す場合に選択ワード線に印加される電圧であり、ＶＡ１Ｖは、Ａ１への書き込みを行う場合において、書き込みが完了したかどうかを確認するために印加されるベリファイ電圧を示している。
【００５４】
また、ＶＡ２、ＶＢ２、ＶＣ２は、下位ページと上位ページが書き込み済みの物理セクタについて、４つのデータを読み出す場合に選択ワード線に印加される電圧であり、ＶＡ２Ｖ、ＶＢ２Ｖ、ＶＣ２Ｖは、各閾値電圧分布への書き込みを行う場合において、書き込みが完了したかどうかを確認するために印加されるベリファイ電圧を示している。また、Ｖｒｅａｄ１、Ｖｒｅａｄ２は、データの読み出しを行う場合に、ＮＡＮＤセル中の非選択メモリセルに対し印加され、その保持データに拘わらず当該非選択メモリセルを導通させる読み出し電圧を示している。さらに、Ｖｅｖ１、Ｖｅｖ２は、メモリセルのデータを消去する場合において、その消去が完了したか否かを確認するためメモリセルに印加される消去ベリファイ電圧であり、負の値を有する。その大きさは、隣接メモリセルの干渉の影響を考慮して決定される。上述の各電圧の大小関係は、
Ｖｅｖ１＜ＶＡ１＜ＶＡ１Ｖ＜Ｖｒｅａｄ１
Ｖｅｖ２＜ＶＡ２＜ＶＡ２Ｖ＜ＶＢ２＜ＶＢ２Ｖ＜ＶＣ２＜ＶＣ２Ｖ＜Ｖｒｅａｄ２
である。
【００５５】
なお、消去ベリファイ電圧Ｖｅｖ１、Ｖｅｖ２、Ｖｅｖ３は前述の通り負の値であるが、実際に消去ベリファイ動作においてメモリセルＭＣの制御ゲートに印加される電圧は、負の値ではなく、ゼロ又は正の値である。すなわち、実際の消去ベリファイ動作においては、メモリセルＭＣのバックゲートに正の電圧を与え、メモリセルＭＣの制御ゲートには、ゼロ又はバックゲート電圧より小さい正の値の電圧を印加している。換言すれば、消去ベリファイ電圧Ｖｅｖ１、Ｖｅｖ２、Ｖｅｖ３は、等価的に負の値を有する電圧である。
【００５６】
ブロック消去後のメモリセルの閾値電圧分布ＥＲは、その上限値も負の値であり、データ“１１”が割り当てられる。下位ページおよび上位ページ書き込み状態のデータ“１１”、“０１”、“１０”、“００”のメモリセルは、それぞれ正の閾値電圧分布ＥＲ２、Ａ２、Ｂ２、Ｃ２を有し（Ａ２、Ｂ２、Ｃ２の下限値も正の値である）、データ“０１”の閾値電圧分布Ａ２が最も電圧値が低く、データ“００”の閾値電圧分布Ｃ２が最も電圧値が高く、各種閾値電圧分布の電圧値はＡ２＜Ｂ２＜Ｃ２の関係を有する。下位ページ書き込みかつ上位ページ未書き込み状態のデータ“１０”のメモリセルは、正の閾値電圧分布Ａ１を有する（Ａ１の下限値も正の値である）。なお、図１７に示す閾値電圧分布はあくまでも一例であって、本発明はこれに限定されるものではない。例えば、図１７では閾値電圧分布Ａ２，Ｂ２，Ｃ２は全て正の閾値電圧分布であるとして説明したが、閾値電圧分布Ａ２は負の電圧の分布であり、閾値電圧分布Ｂ２、Ｃ２が正の電圧の分布であるような場合も、本発明の範囲に含まれる。また、閾値電圧分布ＥＲ１・ＥＲ２は正の値であったとしても、本発明はこれに限定されるものではない。また、本実施形態ではＥＲ２、Ａ２、Ｂ２、Ｃ２のデータの対応関係がそれぞれ“１１”、“０１”、“１０”、“００”であるとしているが、たとえばそれぞれ“１１”、“０１”、“００”、“１０”であるような他の対応関係であってもよい。
【００５７】
１つのメモリセルの２ビットデータは、下位ページデータと上位ページデータからなり、下位ページデータと上位ページデータは別々の書き込み動作、つまり、２回の書き込み動作により、メモリセルに書き込まれる。データを“＊＠”と標記するとき、＊は上位ページデータを、＠は下位ページデータを表している。
【００５８】
まず、下位ページデータの書き込みを、図１７の１段目〜２段目を参照して説明する。全てのメモリセルは、消去状態の閾値電圧分布ＥＲを有し、データ“１１”を記憶しているものとする。図１７に示すように、下位ページデータの書き込みを行うと、メモリセルの閾値電圧分布ＥＲは、下位ページデータの値（“１”、或いは“０”）に応じて、２つの閾値電圧分布（ＥＲ１、Ａ１）に分けられる。下位ページデータの値が“１”の場合には、消去状態の閾値電圧分布ＥＲを維持するのでＥＲ１＝ＥＲであるが、ＥＲ１＞ＥＲであってもよい。
【００５９】
一方、下位ページデータの値が“０”の場合には、メモリセルのトンネル酸化膜に高電界を印加し、フローティングゲート電極に電子を注入して、メモリセルの閾値電圧Ｖｔｈを所定量だけ上昇させる。具体的には、ベリファイ電位ＶＡ１Ｖを設定し、このベリファイ電圧ＶＡ１Ｖ以上の閾値電圧となるまで書き込み動作が繰り返される。その結果、メモリセルは、書き込み状態（データ“１０”）に変化する。書き込み動作を所定回繰り返しても閾値電圧に到達しなかった場合（または閾値電圧に到達しないメモリセル数が所定値以上の場合）、当該物理ページに対する書き込みは「書き込みエラー」となる。
【００６０】
次に、上位ページデータの書き込みを、図１７の２段目〜３段目を参照して説明する。上位ページデータの書き込みは、チップの外部から入力される書き込みデータ（上位ページデータ）と、メモリセルに既に書き込まれている下位ページデータとに基づいて行われる。
【００６１】
即ち、図１７の２段目〜３段目に示すように、上位ページデータの値が“１”の場合には、メモリセルのトンネル酸化膜に高電界がかからないようにし、メモリセルの閾値電圧Ｖｔｈの上昇を防止する。その結果、データ“１１”（消去状態の閾値電圧分布ＥＲ１）のメモリセルは、データ“１１”をそのまま維持し（ＥＲ２）、データ“１０”（閾値電圧分布Ａ１）のメモリセルは、データ“１０”をそのまま維持する（Ｂ２）。ただし、各分布間の電圧マージンを確保するという点で、上述のベリファイ電圧ＶＡ１Ｖよりも大きい正のベリファイ電圧ＶＢ２Ｖを用いて閾値電圧分布の下限値を調整し、これにより閾値電圧分布の幅を狭めた閾値電圧分布Ｂ２を形成するのが望ましい。下限値調整を所定回繰り返しても敷地電圧に到達しなかった場合（または閾値電圧に到達しないメモリセル数が所定値以上の場合）、当該物理ページに対する書き込みは「書き込みエラー」となる。
【００６２】
一方、上位ページデータの値が“０”の場合には、メモリセルのトンネル酸化膜に高電界を印加し、フローティングゲート電極に電子を注入して、メモリセルの閾値電圧Ｖｔｈを所定量だけ上昇させる。具体的には、ベリファイ電位ＶＡ２Ｖ、ＶＣ２Ｖを設定し、このベリファイ電圧ＶＡ１Ｖ以上の閾値電圧となるまで書き込み動作が繰り返される。その結果、データ“１１”（消去状態の閾値電圧分布ＥＲ１）のメモリセルは、閾値電圧分布Ａ２のデータ“０１”に変化し、データ“１０”（Ａ１）のメモリセルは、閾値電圧分布Ｃ２のデータ“００”に変化する。このとき、ベリファイ電圧ＶＡ２Ｖ、ＶＣ２Ｖが用いられて、閾値電圧分布Ａ２、Ｃ２の下限値が調整される。書き込み動作を所定回繰り返しても敷地電圧に到達しなかった場合（または閾値電圧に到達しないメモリセル数が所定値以上の場合）、当該物理ページに対する書き込みは「書き込みエラー」となる。
【００６３】
一方、消去動作においては、消去ベリファイ電位Ｖｅｖを設定し、このベリファイ電圧Ｖｅｖ以下の閾値電圧となるまで消去動作が繰り返される。その結果、メモリセルは、書き込み状態（データ“００”）に変化する。消去動作を所定回繰り返しても敷地電圧に到達しなかった場合（または閾値電圧に到達しないメモリセル数が所定値以上の場合）、当該物理ページに対する消去は「消去エラー」となる。
【００６４】
以上が、一般的な４値記憶方式におけるデータ書き込み方式の一例である。３ビット以上の多ビット記憶方式においても、上記の動作に更に上位のページデータに応じ、閾値電圧分布を８通り以上に分割する動作が加わるのみであるので、基本的な動作は同様である。
【００６５】
つぎに、ＳＳＤ２の構成例について説明する。図１８に示すように、ＳＳＤ２は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下ＮＡＮＤメモリと略す）１６と、ＡＴＡインタフェース１９を介してホスト装置３との信号の送受信を行うインタフェースコントローラ（ＩＦＣ）４２と、インタフェースコントローラ４２とＮＡＮＤメモリ１６との中間バッファとして機能するキャシュメモリ（ＣＭ）４６を有する半導体メモリとしてのＲＡＭ（Random Access Memory）４０と、ＮＡＮＤメモリ１６及びＲＡＭ４０の管理、制御、及びインタフェースコントローラ４２の制御を司るＳＳＤコントローラ（ＳＳＤＣ）４１と、これら構成要素を接続するバス４３を備える。
【００６６】
ＲＡＭ４０としては、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase Change Random Access Memory）などを採用することができる。ＲＡＭ４０はＳＳＤＣ４１に含まれてもよい。
【００６７】
ＮＡＮＤメモリ１６は、複数のＮＡＮＤメモリチップ８０からなり、ホスト装置３によって指定されたユーザデータを記憶したり、ユーザデータを管理する管理テーブルを記憶したり、ＲＡＭ４０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１６は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイ８２を有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ１６は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるブロックを複数配列して構成される。また、ＮＡＮＤメモリ１６では、ページごとにデータの書き込み及びデータの読み出しが行われる。ブロックは、複数のページによって構成されている。
【００６８】
ＲＡＭ４０は、ホスト装置３とＮＡＮＤメモリ１６間でのデータ転送用キャッシュとして機能するキャッシュメモリ（ＣＭ）４６を有する。また、ＲＡＭ４０は、管理情報記憶用メモリ及び作業領域用メモリとして機能する。ＲＡＭ４０の領域４０Ａで管理される管理テーブルは、ＮＡＮＤメモリ１６の領域４０Ｍに記憶されている各種管理テーブルがＳＳＤ２起動時などに展開されたものであり、定期的あるいは電源断時にＮＡＮＤメモリ１６の領域４０Ｍに退避保存される。
【００６９】
ＳＳＤＣ４１は、ＮＡＮＤメモリ１６に記憶されたシステムプログラム（ファームウエア）を実行するプロセッサと、各種ハードウェア回路などによってその機能が実現され、ホスト装置３からのライト要求、キャッシュフラッシュ要求、リード要求等の各種コマンドに対するホスト装置３−ＮＡＮＤメモリ１６間のデータ転送制御、ＲＡＭ４０及びＮＡＮＤメモリ１６に記憶された各種管理テーブルの更新・管理、ＮＡＮＤメモリ１６に書き込むデータのＥＣＣ符号化、ＮＡＮＤメモリ１６から読み出したデータのＥＣＣ複合化などを実行する。
【００７０】
ホスト装置３はＳＳＤ２に対し、リード要求またはライト要求を発行する際には、ＡＴＡインタフェース１９を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）を入力する。ＬＢＡは、論理セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。また、ホスト装置３はＳＳＤ２に対し、リード要求またはライト要求を発行する際には、ＬＢＡと併せて、リード要求またはライト要求の対象となる論理セクタサイズを入力する。
【００７１】
ＩＦＣ４２は、ホスト装置３からのリード要求、ライト要求、その他要求及びデータを受信し、受信した要求やデータをＳＳＤＣ４１に送信したり、ＳＳＤＣ４１の制御によりＲＡＭ４０にデータを送信したりする機能を持つ。
【００７２】
図１９にＳＳＤ２で使用する管理情報の構成を示す。これらの管理情報は、前述したように、ＮＡＮＤメモリ１６の領域４０Ｍで不揮発記憶されている。領域４０Ｍで記憶された管理情報がＳＳＤ２の起動時にＲＡＭ４０の領域４０Ａに展開されて使用される。領域４０Ａの管理情報４４は、定期的あるいは電源断時に領域４０Ｍに退避保存される。ＲＡＭ４０がＭＲＡＭやＦｅＲＡＭなどのような不揮発ＲＡＭである場合には、この管理情報４４はＲＡＭ４０にのみ記憶されるようにしてもよく、この場合はこの管理情報４４はＮＡＮＤメモリ１６には記憶されない。ＮＡＮＤメモリ１６への書き込み量を少なくするためには、管理情報４５に記憶されるデータは、ＲＡＭ４０の領域４０Ａに記憶されているデータを圧縮したものであることが望ましい。また、ＮＡＮＤメモリ１６への書き込み頻度を少なくするためには、管理情報４５には、ＲＡＭ４０の領域４０Ａに記憶されている管理情報４４の更新情報（差分情報）を追記するようにすることが望ましい。
【００７３】
図１９に示すように、管理情報は、フリーブロックテーブル（ＦＢＴ）６０と、バッドブロックテーブル（ＢＢＴ）６１と、アクティブブロックテーブル（ＡＢＴ）６２と、トラックテーブル（トラック単位の論物変換テーブル）６３と、クラスタテーブル（クラスタ単位の論物変換テーブル）６４、統計情報６５を含む。
【００７４】
ＬＢＡは、図２０に示すように、論理セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。本実施形態においては、ＳＳＤ２の論理アドレス（ＬＢＡ）の管理単位として、ＬＢＡの下位（ｓ＋１）ビット目から上位のビット列で構成されるクラスタアドレスと、ＬＢＡの下位（ｓ＋ｔ＋１）ビットから上位のビット列で構成されるトラックアドレスとを定義する。すなわち、論理セクタは、ホスト装置３からの最小アクセス単位である。クラスタは、ＳＳＤ内部で「小さなデータ」を管理する管理単位であり、論理セクタサイズの自然数倍がクラスタサイズとなるように定められる。また、トラックは、ＳＳＤ内部で「大きなデータ」を管理する管理単位であり、クラスタサイズの２以上の自然数倍がトラックサイズとなるように定められる。したがって、トラックアドレスはＬＢＡをトラックサイズで割ったものであり、トラック内アドレスはＬＢＡをトラックサイズで割った余りであり、クラスタアドレスはＬＢＡをクラスタサイズで割ったものであり、クラスタ内アドレスはＬＢＡをクラスタサイズで割った余りである。以下の説明では、便宜上、トラックのサイズは１物理ブロックに記録可能なデータのサイズに等しい（物理ブロックにＳＳＤＣ４１で行うＥＣＣ処理の冗長ビットが含まれる場合はこれを除いたサイズ）とし、クラスタのサイズは１物理ページに記録可能なデータのサイズに等しい（物理ページにＳＳＤＣ４１で行うＥＣＣ処理の冗長ビットが含まれる場合はこれを除いたサイズ）とする。
【００７５】
フリーブロックテーブル（ＦＢＴ）６０は、ＮＡＮＤメモリ１６に書き込みを行うときに書き込み用に新規に割り当てることのできるＮＡＮＤメモリの用途未割り当ての物理ブロック（フリーブロック：ＦＢ）のＩＤを管理する。また、物理ブロックＩＤ毎に消去回数を管理しており、物理ブロックが消去されたとき、当該ブロックの消去回数をインクリメントする。
【００７６】
バッドブロックテーブル（ＢＢＴ）６１は、誤りが多いなど記憶領域として使用できない物理ブロック（物理ブロック）としてのバッドブロック（ＢＢ）のＩＤを管理する。ＦＢＴ６０と同様に物理ブロックＩＤ毎に消去回数を管理するようにしてもよい。
【００７７】
アクティブブロックテーブル（ＡＢＴ）６２は、用途が割り当てられた物理ブロックであるアクティブブロック（ＡＢ）を管理する。また、物理ブロックＩＤ毎に消去回数を管理しており、物理ブロックが消去されたとき、当該ブロックの消去回数をインクリメントする。
【００７８】
トラックテーブル６３は、トラックアドレスと、このトラックアドレスに対応するトラックデータが記憶される物理ブロックＩＤとの対応関係を管理する。
【００７９】
クラスタテーブル６４は、クラスタアドレスと、このクラスタアドレスに対応するクラスタデータが記憶される物理ブロックＩＤと、このクラスタアドレスに対応するクラスタデータが記憶される物理ブロック内ページアドレスとの対応関係を管理する。
【００８０】
統計情報６５には、ＳＳＤ２の信頼性に関わる種々のパラメータ（Ｘ０１〜Ｘ２４）を格納する。
【００８１】
統計情報６５としては、バッドブロック数総計（統計情報Ｘ０１）、消去回数総計（統計情報Ｘ０２）、消去回数平均値（統計情報Ｘ０３）、ＮＡＮＤメモリの書き込みエラー発生回数累積値（統計情報Ｘ０４）、ＮＡＮＤメモリの消去エラー発生回数累積値（統計情報Ｘ０５）、読み出し論理セクタ数総計（統計情報Ｘ０６）、書き込み論理セクタ数総計（統計情報Ｘ０７）、ＥＣＣ訂正不能回数総計（統計情報Ｘ０８）、nビット〜mビットＥＣＣ訂正単位総計数（統計情報Ｘ０９）、ＳＡＴＡ通信のRエラー発生回数（統計情報Ｘ１０）、ＳＡＴＡ通信のエラー発生回数（統計情報Ｘ１１）、ＲＡＭ４０のエラー発生回数（統計情報Ｘ１２）、ＳＳＤ２の使用時間総計（統計情報Ｘ１３）、温度が推奨動作温度の最高値を上回った時間累計（統計情報Ｘ１４）、温度が推奨動作温度の最低値を下回った時間累計（統計情報Ｘ１５）、コマンドの応答時間最大値（統計情報Ｘ１６）、コマンドの応答時間平均値（統計情報Ｘ１７）、ＮＡＮＤメモリの応答時間最大値（統計情報Ｘ１８）、ＮＡＮＤの応答時間平均値（統計情報Ｘ１９）、現在温度（統計情報Ｘ２０）、最高温度（統計情報Ｘ２１）、最低温度（統計情報Ｘ２２）、統計情報増加率（統計情報Ｘ２３）、ＮＡＮＤ整理失敗フラグ（統計情報Ｘ２４）などが含まれる。
【００８２】
バッドブロック数総計（統計情報Ｘ０１）について説明する。ＳＳＤ２内のＮＡＮＤメモリ１６の物理ブロックが一つバッドブロックに追加されるごとに統計情報Ｘ０１が１インクリメントされる。統計情報Ｘ０１はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましく、検査工程でエラーが発生したり、閾値分布の分布間マージンが少ないことが判明したブロックは、あらかじめバッドブロックに加えておくことがさらに望ましい。統計情報Ｘ０１は統計情報６５に格納せず、ＢＢＴ６１から直接計算してもよい。統計情報Ｘ０１が大きいほど信頼性が悪化していることを示す。
【００８３】
消去回数総計（統計情報Ｘ０２）について説明する。統計情報Ｘ０２はＳＳＤ２内のＮＡＮＤメモリ１６の全ブロックの消去回数累計値を示す。ＳＳＤ２内のＮＡＮＤメモリ１６の物理ブロックが一つ消去されるごとに統計情報Ｘ０２が１インクリメントされる。統計情報Ｘ０２はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０２は統計情報６５に格納せずＦＢＴ６０、ＢＢＴ６１、ＡＢＴ６２から直接計算してもよい。統計情報Ｘ０２が大きいほど信頼性が悪化していることを示す。
【００８４】
消去回数平均値（統計情報Ｘ０３）について説明する。統計情報Ｘ０３はＳＳＤ２内のＮＡＮＤメモリ１６の全ブロックの消去回数の１ブロックあたりの平均値を示す。管理情報を格納するブロックなど一部のブロックを統計情報Ｘ０３の集計対象から除外してもよい。統計情報Ｘ０３はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０３は統計情報６５に格納せずＦＢＴ６０、ＢＢＴ６１、ＡＢＴ６２から直接計算してもよい。統計情報Ｘ０３が大きいほど信頼性が悪化していることを示す。
【００８５】
ＮＡＮＤメモリの書き込みエラー発生回数累積値（統計情報Ｘ０４）について説明する。統計情報Ｘ０４はＳＳＤ２内のＮＡＮＤメモリ１６で書き込みエラーが１書き込み単位で発生するごとに１加算される（ブロック単位で加算してもよい）。統計情報Ｘ０４はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０４が大きいほど信頼性が悪化していることを示す。
【００８６】
ＮＡＮＤメモリの消去エラー発生回数累積値（統計情報Ｘ０５）について説明する。統計情報Ｘ０５はＳＳＤ２製造時（検査工程前）にゼロにリセットされていることが望ましい。ＳＳＤ２内のＮＡＮＤメモリ１６で消去エラーが１ブロックで発生するごとに統計情報Ｘ０５が１加算される。複数のブロックをまとめて消去単位とし、この消去単位１つで消去エラーが発生するごとに統計情報Ｘ０５に１加算するようにしてもよい。統計情報Ｘ０５が大きいほど信頼性が悪化していることを示す。
【００８７】
読み出し論理セクタ数総計（統計情報Ｘ０６）について説明する。統計情報Ｘ０６はＩＦＣ４２が読み出しデータとしてホスト装置３に送信したデータの論理セクタ数合計である。統計情報Ｘ０６はＳＳＤ２製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０６が大きいほど信頼性が悪化していることを示す。
【００８８】
書き込み論理セクタ数総計（統計情報Ｘ０７）について説明する。統計情報Ｘ０７はＩＦＣ４２が書き込みデータとしてホスト装置３から受信したデータの論理セクタ数合計である。統計情報Ｘ０７はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０７が大きいほど信頼性が悪化していることを示す。
【００８９】
ＥＣＣ訂正不能回数総計（統計情報Ｘ０８）について説明する。ＥＣＣ訂正によりエラービットが修復できなかった場合に、１読み出し単位ごとに統計情報Ｘ０８を１インクリメントする。エラー訂正できなかったエラービット数の推定値を加算するようにしてもよいし、エラー訂正できなかったブロックの数を加算するようにしてもよい。統計情報Ｘ０８はＳＳＤ２製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０８が大きいほど信頼性が悪化していることを示す。
【００９０】
ｎビット〜ｍビットＥＣＣ訂正単位総計数（統計情報Ｘ０９）について説明する。ｎ,ｍは自然数で、0≦ｎ≦ｍ≦訂正可能最大ビット数である。ＥＣＣ訂正単位（たとえば物理ページ）に対してＥＣＣ訂正を行った時、全エラービットが正常に修復され、かつ修復されたエラービット数がｎ以上ｍ以下である場合、ＥＣＣ訂正単位１つにつき「ｎビット〜ｍビットＥＣＣ訂正単位総計数」を１加算する。ＥＣＣ訂正により１訂正単位につき最大６４ビット訂正可能である場合、たとえば、「１ビット〜８ビットＥＣＣ訂正単位総計数」「９ビット〜１６ビットＥＣＣ訂正単位総計数」「１７ビット〜２４ビットＥＣＣ訂正単位総計数」「２５ビット〜３２ビットＥＣＣ訂正単位総計数」「３３ビット〜４０ビットＥＣＣ訂正単位総計数」「４１ビット〜４８ビットＥＣＣ訂正単位総計数」「４９ビット〜５６ビットＥＣＣ訂正単位総計数」「５７ビット〜６４ビットＥＣＣ訂正単位総計数」の８つのパラメータを用意し、ＥＣＣ訂正が正常に行われた場合、１ＥＣＣ訂正単位のＥＣＣ訂正につきこれら８つのパラメータのうちいずれか１つに１がインクリメントされる。統計情報Ｘ０９はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ０９が大きいほど信頼性が悪化していることを示す。
【００９１】
ＳＡＴＡ通信のＲエラー発生回数（統計情報Ｘ１０）について説明する。統計情報Ｘ１０はＳＡＴＡ規格におけるＲエラー（Reception Error, R_ERR）が１回発生するごとに１インクリメントされる。ホストとＳＳＤの間で送受信されるフレームにたとえばＣＲＣエラーなど何らかのエラーがあった場合、Ｒエラーとしてカウントされる。統計情報Ｘ１０として、SATA規格のPhy Event Countersのカウンタのいずれかを採用してもよい。統計情報Ｘ１０はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。統計情報Ｘ１０が大きいほど信頼性が悪化していることを示す。
【００９２】
ＳＡＴＡ通信のエラー発生回数（統計情報Ｘ１１）について説明する。その他の（Ｒエラー以外の）ＳＡＴＡ通信での異常が１回発生するごとに１インクリメントされる。たとえば、ＡＴＡインタフェース１９やＩＦＣ４２やＳＳＤＣ４１がSATA Generation3規格として設計されているにも関わらず、実際にＳＳＤ２やホスト装置３との間でネゴシエーションされた通信規格がGeneration2のようなより低速の通信規格であった場合、ＳＡＴＡ通信上のエラーとみなし、統計情報Ｘ１１を１インクリメントする。統計情報Ｘ１１はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【００９３】
ＲＡＭ４０のエラー発生回数（統計情報Ｘ１２）について説明する。たとえば、ＲＡＭ４０にＥＣＣ回路やエラー検知回路を搭載している場合、ＥＣＣ訂正できなかった旨の信号やエラー検知された旨の信号をＲＡＭ４０からＳＳＤＣ４１が受け取った場合、統計情報Ｘ１２を１インクリメントする。統計情報Ｘ１２はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【００９４】
ＳＳＤ２の使用時間総計（統計情報Ｘ１３）について説明する。ＳＳＤ２の電源がＯＮになっている間、ＳＳＤＣ４１がクロックをカウントしたり内部の時計回路から時刻情報を受信することで、経過時間をインクリメントする。あるいは、ＳＳＤＣ４１がホスト装置３から定期的にホスト装置３の時刻情報を受信するようにし、その時刻情報の差分をインクリメントするようにしてもよい。統計情報Ｘ１３はＳＳＤ２製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【００９５】
推奨動作温度の最高値を上回った時間累計（統計情報Ｘ１４）について説明する。たとえば、ＳＳＤ２の基板上、ＳＳＤＣ４１内、ＮＡＮＤメモリ１６内など、ＳＳＤ２内に温度計が実装されている場合、ＳＳＤＣ４１は温度計から定期的に温度情報を受信している。受信した温度が推奨動作温度（たとえば１００℃）を上回った場合、ＳＳＤＣ４１はクロックや内部の時計やホスト装置３から取得する時刻情報をもとに、推定動作温度以上で動作している時間数をインクリメントしていく。統計情報Ｘ１４はＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【００９６】
推奨動作温度の最低値を下回った時間累計（統計情報Ｘ１５）について説明する。ＳＳＤ２内に温度計が実装されている場合、ＳＳＤＣ４１は温度計から定期的に温度情報を受信している。受信した温度が推奨動作温度（たとえば−４０℃）を下回った場合、ＳＳＤＣ４１はクロックや内部の時計やホスト装置３から取得する時刻情報をもとに、推定動作温度以上で動作している時間数をインクリメントしていく。ＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【００９７】
コマンドの応答時間最大値（統計情報Ｘ１６）について説明する。統計情報Ｘ１６はホスト装置３からコマンドを受信してから、ホスト装置３へ応答するまで（またはコマンド実行完了するまで）に要した時間（またはクロック数）の最大値である。Ｘ１６を上回る応答時間が発生した場合は、この応答時間をＸ１６に上書きする。コマンドそれぞれに対して統計情報Ｘ１６を保持してもよい。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ１６がゼロにリセットされていることが望ましい。
【００９８】
コマンドの応答時間平均値（統計情報Ｘ１７）について説明する。統計情報Ｘ１７は、ホスト装置３からコマンドを受信してから、ホスト装置３へ応答するまで（またはコマンド実行完了するまで）に要した時間（またはクロック数）の平均値である。たとえば応答時間リストを一定数ＲＡＭ４０に保持しておき、その応答時間リストの平均値を算出することにより得られる。コマンドそれぞれに対して統計情報Ｘ１７を保持してもよい。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ１７がゼロにリセットされていることが望ましい。
【００９９】
ＮＡＮＤメモリの応答時間最大値（統計情報Ｘ１８）について説明する。統計情報Ｘ１８は、ＳＳＤＣ４１がＮＡＮＤメモリ１６に命令してから応答を得る（またはコマンド実行完了通知を受信する）までに要した時間（またはクロック数）の最大値である。Ｘ１８を上回る応答時間が発生した場合は、この応答時間をＸ１８に上書きする。コマンドそれぞれに対して統計情報Ｘ１８を保持してもよい。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ１８がゼロにリセットされていることが望ましい。
【０１００】
ＮＡＮＤの応答時間平均値（統計情報Ｘ１９）について説明する。統計情報Ｘ１９は、ＳＳＤＣ４１がＮＡＮＤメモリ１６に命令してから応答を得る（またはコマンド実行完了通知を受信する）までに要した時間（またはクロック数）の平均値である。たとえば応答時間リストを一定数ＲＡＭ４０に保持しておき、その応答時間リストの平均値を算出することにより得られる。コマンドそれぞれに対して統計情報Ｘ１９を保持してもよい。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ１９がゼロにリセットされていることが望ましい。
【０１０１】
現在温度（統計情報Ｘ２０）について説明する。ＳＳＤ２内に温度計が実装されている場合、ＳＳＤＣ４１は温度計から定期的に温度情報を受信する。ＳＳＤＣ４１は温度計から最後に受信した温度を現在温度として統計情報Ｘ２０に保持する。この値が極端に大きいと（たとえば８５℃以上）、ＳＳＤ２の信頼性に悪影響があり、また、この温度が極端に小さいと（たとえば−１０℃以下）、ＳＳＤ２の信頼性に悪影響があると判断する。
【０１０２】
最高温度（統計情報Ｘ２１）について説明する。ＳＳＤＣ４１は、現在温度Ｘ２０の最大値を最高温度として統計情報Ｘ２１に保持する。この値が極端に大きいと（たとえば８５℃以上）、ＳＳＤ２の信頼性に悪影響がある。ＳＳＤＣ４１は、Ｘ２１よりも大きい現在温度を温度計から受信した時、Ｘ２１を現在温度に書き換える。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ２１がＳＳＤ２の動作温度にくらべて十分に小さい温度（たとえば−４０℃）にリセットされていることが望ましい。
【０１０３】
最低温度（統計情報Ｘ２２）について説明する。ＳＳＤＣ４１は、現在温度Ｘ２０の最小値を最低温度として統計情報Ｘ２２に保持する。この値が極端に小さいと（たとえば−４０℃以下）、ＳＳＤ２の信頼性に悪影響がある。ＳＳＤＣ４１は、Ｘ２２よりも小さい現在温度を温度計から受信した時、Ｘ２２を現在温度に書き換える。ＳＳＤ２の製造時（検査工程前）またはＳＳＤ２の出荷時にはＸ２２がＳＳＤ２の動作温度にくらべて十分に大きい温度（たとえば１２０℃）にリセットされていることが望ましい。
【０１０４】
統計情報増加率（統計情報Ｘ２３）について説明する。統計情報Ｘ０１〜Ｘ１９の最新でない情報（たとえば一定時刻前や、ＳＳＤ２をパワーオンした時の値や前回ＳＳＤ２をパワーダウンしたときの値など）を別途保持しておく。統計情報Ｘ２３は、例えば、下記のいずれかで定義される。
【０１０５】
統計情報増加率＝（最新統計情報）―（旧情報）
統計情報増加率＝（（最新統計情報）―（旧情報））／（旧情報を取得してからの経過時刻）
統計情報増加率＝（（最新統計情報）―（旧情報））／（旧情報を取得してからのＮＡＮＤアクセス回数）
ＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【０１０６】
ＮＡＮＤ整理失敗フラグ（統計情報Ｘ２４）について説明する。統計情報Ｘ２４が１になっていると、ＮＡＮＤ整理によっても動作に十分な数のフリーブロック数を確保できないことになる。ＳＳＤ２の製造時（検査工程前）にゼロにリセットされていることが望ましい。この値が大きいほど信頼性が悪化していることを示す。
【０１０７】
統計情報６５としては、上述したすべてのパラメータを格納してもよいし、これらの一部あるいはどれか一つのみを格納してもよい。統計情報６５は最新情報をＲＡＭ４０上の領域４０Ａに保持し、定期的にＮＡＮＤメモリ１６上の領域４０Ｍにバックアップすることが望ましい。一方、ＲＡＭ４０やＮＡＮＤメモリ１６のどちらか一方にのみ保存するようにしてもよいし、当該統計情報をホスト装置３に送信して、ホスト装置３やホスト装置３に接続された記憶装置に保存するようにしてもよい。
【０１０８】
（ＬＢＡ正引き変換）
つぎに、図２１を用いてＳＳＤ２においてＬＢＡから物理アドレスを特定する手順（ＬＢＡ正引き変換）について説明する。ＬＢＡが指定されたとき、ＳＳＤＣ４１はＬＢＡからトラックアドレスとクラスタアドレスとクラスタ内アドレスを計算する。
【０１０９】
ＳＳＤＣ４１は、まずトラックテーブル６３を検索し、計算したトラックアドレスに対応する物理ブロックＩＤを特定する（ステップＳ１００、Ｓ１０１）。ＳＳＤＣ４１は、特定した物理ブロックＩＤが有効であるか否かを判定し（ステップＳ１０２）、物理ブロックＩＤがヌルではなく有効な値である場合は（ステップＳ１０２：Ｙｅｓ）、この物理ブロックＩＤがＡＢＴ６２にエントリされているか否かを検索する（ステップＳ１０３）。ＡＢＴ６２に物理ブロックＩＤがエントリされている場合は（ステップＳ１０４：Ｙｅｓ）、この物理ブロックＩＤの指定する物理ブロックの先頭位置からトラック内アドレス分だけシフトした位置が指定されたＬＢＡに対応するＮＡＮＤメモリ１６上の物理的な位置となる（ステップＳ１０５）。このような場合には、ＬＢＡに対応するＮＡＮＤメモリ１６上の物理的な位置の特定にはクラスタテーブル６４を必要とせず、このようなＬＢＡを「トラック管理されているＬＢＡ」と呼ぶ。ステップＳ１０４において、ＡＢＴ６２に物理ブロックＩＤがエントリされていない場合は（ステップＳ１０４：Ｎｏ）、指定されたＬＢＡは対応する物理アドレスを持たないことになり、このような状態を「未書き込み状態」と呼ぶ（ステップＳ１０６）。
【０１１０】
ステップＳ１０２において、指定されたトラックアドレスに対応する物理アドレスがヌルであり無効な値の場合は（ステップＳ１０２：Ｎｏ）、ＳＳＤＣ４１はＬＢＡからクラスタアドレスを計算し、クラスタテーブル６４を検索し、計算したクラスタアドレスに対応する物理ブロックＩＤ及び対応する物理ブロック内ページアドレスをクラスタテーブル６４から取得する（ステップＳ１０７）。物理ブロックＩＤと物理ブロック内ページアドレスが指定する物理ページの先頭位置からクラスタ内アドレス分だけシフトした位置が指定されたＬＢＡに対応するＮＡＮＤメモリ１６上の物理的な位置となる。このような場合は、ＬＢＡに対応するＮＡＮＤメモリ１６上の物理的な位置は、トラックテーブル６３のみからは特定できず、クラスタテーブル６４の参照を必要とすることになり、このようなＬＢＡを「クラスタ管理されているＬＢＡ」という（ステップＳ１０８）。
【０１１１】
（読み出し動作）
つぎに、図２２、図２３を用いてＳＳＤ２における読み出し動作を説明する。本実施形態で説明する読み出し動作はＩＮＣＩＴＳ ＡＣＳ−２に記載されている60h READ FPDMA QUEUEDの場合であるが、25h READ DMA EXTなどその他書き込みコマンドを採用してもよく、読み出しコマンドの種類の違いは発明の本質には影響しない。ＳＳＤ２がホスト装置３から読み出し命令を受信した場合は（ステップＳ１１０）、ＳＳＤＣ４１がこの読み出し命令をＲＡＭ４０上の読み出し命令待ち行列に追加し（ステップＳ１１１）、読み出し命令を受理した旨をホスト装置３に返信する。
【０１１２】
一方、ＳＳＤＣ４１は、ＲＡＭ４０上の読み出し命令待ち行列に命令が存在している場合、読み出し処理を実行可能な状態になっているか否かを判定し（ステップＳ１２０）、読み出し処理を実行可能な状態になったと判断すると、先の図２１に示したＬＢＡ正引き変換手順にしたがってホスト装置３から受信したＬＢＡからデータの物理的な位置を特定する（ステップＳ１２１）。ＳＳＤＣ４１は、特定した位置の物理ページからデータを読み出し（ステップＳ１２３）、読み出したデータのうちＥＣＣ冗長ビットを用いてＥＣＣ復号化し（ステップＳ１２４）、復号化したデータをＩＦＣ４２を介してホスト装置３に送信し（ステップＳ１２５）、統計情報６５を更新する。なお、ＮＡＮＤメモリ１６から読み出したデータは、いったんＲＡＭ４０に書き込み、ＲＡＭ４０に書き込んだデータを復号化してホスト装置３に送信するようにしてもよいし、復号化したデータをいったんＲＡＭ４０に書き込み、ＲＡＭ４０に書き込んだデータをホスト装置３に送信するようにしてもよい。
【０１１３】
ステップＳ１２４において、ＳＳＤＣ４１はＥＣＣによる復号化を試みるが、復号化できなかった場合、復号化できなかったページを含む物理ブロックをＡＢＴ６２から削除してＢＢＴ６１に登録し、統計情報６５のＥＣＣ訂正できなかったＥＣＣ訂正単位数総計（統計情報Ｘ０８）を加算する。その際、当該ブロックのデータをＦＢＴ６０から割り当てたフリーブロックにコピーし、当該フリーブロックの物理ブロックＩＤをＡＢＴ６２に登録してトラックテーブル６３およびクラスタテーブル６４の物理ブロックをコピー元物理ブロックＩＤからコピー先物理ブロックＩＤに書き換えることが望ましい。
【０１１４】
（書き込み動作）
つぎに、図２４、図２５を用いてＳＳＤ２における書き込み動作を説明する。本実施形態で説明する書き込み動作はＩＮＣＩＴＳ  ＡＣＳ−２に記載されている61h WRITE FPDMA QUEUEDの場合であるが、35h WRITE DMA EXTなどその他書き込みコマンドを採用してもよく、書き込みコマンドの種類の違いは発明の本質には影響しない。ＳＳＤ２がホスト装置３から書き込み命令を受信した場合は（ステップＳ１３０）、ＳＳＤＣ４１がこの書き込み命令をＲＡＭ４０上の読み出し命令待ち行列に追加し（ステップＳ１３１）、書き込み命令を受理した旨をホスト装置３に返信する。
【０１１５】
一方、ＳＳＤＣ４１は、ＲＡＭ４０上の書き込み命令待ち行列に命令が存在している場合、書き込み処理を実行可能な状態になっているか否かを判定し（ステップＳ１４０）、書き込み処理を実行可能な状態になったと判断すると、ホスト装置３に書き込み可能であることを通知し、ホスト装置３から書き込みデータを受信し、受信したデータをＥＣＣ符号化し、符号化したデータをＲＡＭ４０のキャッシュメモリ４６に記憶する。なお、符号化しないデータをキャッシュメモリ４６に記憶し、ＮＡＮＤメモリ１６に書き込む時に符号化するようにしてもよい。
【０１１６】
つぎに、ＳＳＤＣ４１はＦＢＴ６０を読み出し（ステップＳ１４１）、ＦＢＴ６０からフリーブロックの物理ブロックＩＤを取得する。フリーブロックが存在しない場合は（ステップＳ１４２：Ｎｏ）、ＳＳＤＣ４１は後述するＮＡＮＤメモリ１６の整理（ＮＡＮＤ整理）を行い（ステップＳ１４３）、この整理の後、ＦＢＴ６０を読み出し（ステップＳ１４４）、ＦＢＴ６０からフリーブロックの物理ブロックＩＤを取得する。ＳＳＤＣ４１は、物理ブロックＩＤを取得したフリーブロックに対し、消去動作を行う。消去エラーが発生した場合は、当該物理ブロックＩＤをＢＢＴ６１に追加し、ＦＢＴ６０から削除し、Ｓ１４１からやり直してフリーブロックを再取得する。なお、一度消去エラーが発生した物理ブロックであっても、再度消去動作を行うと消去エラーが発生せずに正常に消去できることがあるため、バッドブロック数の不必要な増大を防止するという観点では、ＦＢＴ６０やＡＢＴ６２に統計情報Ｘ０５としてのブロックごと消去エラー発生回数の項目を各ブロックごとに設け、ブロックの消去エラーが発生した場合にこれをインクリメントするようにし、ブロックごと消去エラー発生回数が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。さらに望ましくは、連続して消去エラーが発生する物理ブロックのみをバッドブロック化するために、ＳＳＤＣ４１は、前記「ブロックごと消去エラー発生回数」のかわりに「ブロックごと消去連続エラー回数」の項目をもうけ、ブロックの消去エラーが発生した場合にこれをインクリメントするようにし、消去をエラー無く行えた場合にこれをゼロにリセットするようにし、「ブロックごと消去連続エラー回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。
【０１１７】
つぎに、ＳＳＤＣ４１は、書き込み命令で指定されているＬＢＡが未書き込み状態であるか否かを検索するために、先の図２１に示した正引き変換手順にしたがってＬＢＡに対応する有効なデータがＮＡＮＤメモリ１６に記憶済みであるか否か判定する（ステップＳ１４５、Ｓ１４６）。
【０１１８】
ＬＢＡが未書き込み状態である場合は（ステップＳ１４６：Ｙｅｓ）、ＳＳＤＣ４１は、キャッシュメモリ４６に記憶している受信データをフリーブロックに書き込み（ステップＳ１４７）、書き込みを行ったフリーブロック（新物理ブロック）のＩＤ及びその消去回数をＡＢＴ６２に登録し、書き込みを行った物理ブロックのＩＤをＦＢＴ６０から削除する（ステップＳ１５１）。この際、受信データのＬＢＡをトラック単位の区画（トラック区画）で区切り、トラック区画内がデータで埋め尽くされているか否かを判定することで、トラック管理するかクラスタ管理するかを判定する（ステップＳ１５２）。すなわち、トラック区画内がデータで埋め尽くされている場合は、トラック管理となり、トラック区画内がデータで埋め尽くされていない場合は、クラスタ管理となる。クラスタ管理の場合は、クラスタテーブル６４を書き換えて、ＬＢＡに新物理ブロックＩＤを関連付け（ステップＳ１５３）、さらにトラックテーブル６３を書き換えて、ＬＢＡに無効な物理ブロックＩＤ（例えば、ヌル）を関連付ける。トラック管理の場合は、トラックテーブルを書き換えて、ＬＢＡに新物理ブロックＩＤを関連付ける（ステップＳ１５４）。
【０１１９】
一方、ステップＳ１４６において、ＬＢＡが未書き込み状態でない場合は、ＳＳＤＣ４１は正引き変換により得られた物理ブロックＩＤをもとに、対応する物理ブロック内全データをＮＡＮＤメモリ１６から読み出して、ＲＡＭ４０に書き込む（ステップＳ１４８）。そして、キャッシュメモリ４６に記憶されているデータとＮＡＮＤメモリ１６から読み出してＲＡＭ４０に書き込んだデータとをＲＡＭ４０上で合成し（ステップＳ１４９）、合成したデータをフリーブロックに書き込む（ステップＳ１５０）。
【０１２０】
なお、ステップＳ１５０で書き込みエラーが発生した場合は、当該物理ブロックＩＤをＢＢＴ６１に追加し、ＦＢＴ６０から削除し、ステップＳ１４１からやり直してフリーブロックを再取得する。なお、一度書き込みエラーが発生した物理ブロックであっても、再度書き込み動作を行うと書き込みエラーが発生せずに正常に書き込みできることがあるため、バッドブロック数の不必要な増大を防止するという観点では、ＦＢＴ６０やＡＢＴ６２に統計情報Ｘ０４としてのブロックごと書き込みエラー発生回数の項目を各ブロックごとに設け、ブロックの書き込みエラーが発生した場合にこれをインクリメントするようにし、「ブロックごと書き込みエラー発生回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。さらに望ましくは、連続して書き込みエラーが発生する物理ブロックのみをバッドブロック化するために、ＳＳＤＣ４１は、前記「ブロックごと書き込みエラー発生回数」のかわりに「ブロックごと書き込み連続エラー回数」の項目をもうけ、ブロックの書き込みエラーが発生した場合にこれをインクリメントするようにし、書き込みをエラー無く行えた場合にこれをゼロにリセットするようにし、「ブロックごと書き込み連続エラー回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。
【０１２１】
ＳＳＤＣ４１は、書き込みを行ったフリーブロック（新物理ブロック）のＩＤ及びその消去回数をＡＢＴ６２に登録し、書き込みを行った物理ブロックのＩＤをＦＢＴ６０から削除する（ステップＳ１５１）。ＬＢＡがクラスタ管理である場合は、クラスタテーブル６４の旧物理ブロックＩＤを新物理ブロックＩＤに書き換える（ステップＳ１５２、Ｓ１５３）。トラック管理の場合は、トラックテーブルの旧物理ブロックＩＤを新物理ブロックＩＤに書き換える（ステップＳ１５２、Ｓ１５４）。さらに、ＳＳＤＣ４１は、旧物理ブロックＩＤ及びその消去回数をＦＢＴ６０に追加し、旧物理ブロックＩＤ及びその消去回数をＡＢＴ６２から削除する（ステップＳ１５５）。ＳＳＤＣ４１は以上の書き込み処理の内容を統計情報６５に反映する。
【０１２２】
（ＮＡＮＤ整理）
ＳＳＤ２の全ＬＢＡの容量は、ＳＳＤ２のＮＡＮＤメモリ１６の全容量よりも小さく設計されているため、書き込み動作がトラック単位で書き込まれ続ける限りはフリーブロックが枯渇することはない。一方、未書き込みＬＢＡに対してクラスタ単位の書き込みが多数発生した場合、クラスタ単位の書き込み一つに対してクラスタよりも容量の大きい物理ブロックが割り当てられることになるため、書き込まれるデータ容量よりも多くのＮＡＮＤメモリ１６物理ブロックを必要とすることになり、それによりフリーブロックが枯渇する可能性がある。フリーブロックが枯渇した場合は、以下に示すＮＡＮＤメモリ１６の整理によってフリーブロックを新たに確保することができる。
【０１２３】
図２６を用いてＳＳＤ２におけるＮＡＮＤ整理を説明する。物理ブロックに記憶されている全てのクラスタが有効クラスタであるとは限らず、有効クラスタに該当しない無効クラスタはＬＢＡに対応付けられていない。有効クラスタとは最新のデータを記憶しているクラスタであり、無効クラスタとは同一ＬＢＡのデータが他の場所に書きこまれ、参照されることがなくなったクラスタである。物理ブロックは無効クラスタの分だけデータに空きがあることになり、有効クラスタのデータを集めて違うブロックに書き直すＮＡＮＤ整理を実行することでフリーブロックを確保することができる。
【０１２４】
まず、物理ブロックＩＤｉ＝０にし、空き領域累積量Ｓ＝０にする（ステップＳ１６０）。ＳＳＤＣ４１は、このＩＤがｉ＝０の物理ブロックがトラックテーブル６３にエントリされているか否かを判定する（ステップＳ１６１）。トラックテーブルにエントリされている場合はｉを＋１し（ステップＳ１６２）、つぎの番号のＩＤを持つ物理ブロックについて同様の判定を行う（ステップＳ１６１）。すなわち、物理ブロックＩＤがトラックテーブル６３に含まれている場合は、この物理ブロックのデータはトラック管理であるため、ＮＡＮＤ整理対象に含めない。
【０１２５】
ＳＳＤＣ４１は、ＩＤ＝ｉの物理ブロックがトラック管理でない場合は（ステップＳ１６１：Ｎｏ）、つぎにクラスタテーブル６４を参照し、ＩＤ＝ｉの物理ブロックに含まれる有効クラスタのアドレスを全て取得する（ステップＳ１６３）。そして、ＳＳＤＣ４１は、取得した有効クラスタの総容量分のサイズｖを求め（ステップＳ１６４）、ｖ＜物理ブロックサイズであるときは（ステップＳ１６５）、現在物理ブロックのＩＤをＮＡＮＤ整理対象ブロックリストに加える（ステップＳ１６６）。さらに、ＳＳＤＣ４１は、取得クラスタ累計量Ｓに現在物理ブロックの取得クラスタ容量ｖを加算し、取得クラスタ累計量Ｓを更新する（ステップＳ１６７）。
【０１２６】
ステップＳ１６５で、ｖ＜物理ブロックサイズでないとき、あるいはステップＳ１６８で取得クラスタ累計量Ｓが物理ブロックサイズに到達していない場合は、ＳＳＤＣ４１は、ｉを＋１し（ステップＳ１６２）、つぎの番号のＩＤを持つ物理ブロックについて、ステップＳ１６１〜Ｓ１６７の手順を前記同様に実行する。そして、ステップＳ１６８で、取得クラスタ累計量Ｓが物理ブロックサイズに到達するまで、ステップＳ１６１〜Ｓ１６７の手順を繰り返す。
【０１２７】
そして、ステップＳ１６８において、取得クラスタ累計量Ｓが物理ブロックサイズに到達した場合は、ＳＳＤＣ４１は、ＮＡＮＤ整理対象ブロックリスト上の全物理ブロックについての全有効クラスタのデータをＮＡＮＤメモリ１６から読み出してＲＡＭ４０に書き込み（ステップＳ１６９）、さらに、ＮＡＮＤ整理対象ブロックリスト上の全物理ブロックに対して消去処理を行い（ステップＳ１７０）、消去処理を行った全物理ブロックをＡＢＴ６２から削除してＦＢＴ６０に追加する（ステップＳ１７１）。その際、消去回数をインクリメントする。なお、ステップＳ１７０で行う消去動作の対象は、ステップＳ１７２でデータを書き込む対象のブロックに限定してもよく、ブロックの消去回数を抑制するという観点ではそのように行うことが望ましい。
【０１２８】
消去エラーが発生した場合は、当該物理ブロックＩＤをＢＢＴ６１に追加し、ＦＢＴ６０から削除する。なお、一度消去エラーが発生した物理ブロックであっても、再度消去動作を行うと消去エラーが発生せずに正常に消去できることがあるため、バッドブロック数の不必要な増大を防止するという観点では、ＦＢＴ６０やＡＢＴ６２に「ブロックごと消去エラー発生回数」の項目を各ブロックごとに設け、ブロックの消去エラーが発生した場合にこれをインクリメントするようにし、ブロックごと消去エラー発生回数が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。さらに望ましくは、連続して消去エラーが発生する物理ブロックのみをバッドブロック化するために、ＳＳＤＣ４１は、前記「ブロックごと消去エラー発生回数」のかわりに「ブロックごと消去連続エラー回数」の項目をもうけ、ブロックの消去エラーが発生した場合にこれをインクリメントするようにし、消去をエラー無く行えた場合にこれをゼロにリセットするようにし、「ブロックごと消去連続エラー回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。
【０１２９】
そして、ＳＳＤＣ４１は、ＦＢＴ６０から新たなフリーブロックを取得し、取得したフリーブロックに対しＲＡＭ４０に書き込んだデータを書き込み（ステップＳ１７２）、データを書き込んだフリーブロックの物理ブロックＩＤ及び当該ブロックの消去回数をＡＢＴ６２に追加し、さらにデータが書き込まれたブロックのブロックＩＤをＦＢＴ６０から削除する（ステップＳ１７３）。さらに、ＳＳＤＣ４１は、今回のＮＡＮＤ整理に対応するように、クラスタテーブル６４におけるクラスタアドレス、物理ブロックＩＤ及び物理ブロック内ページアドレスを更新する（ステップＳ１７４）。ＳＳＤＣ４１は上記ＮＡＮＤ整理の処理内容を統計情報６５に反映する。
【０１３０】
なお、ステップＳ１７２で書き込みエラーが発生した場合は、当該物理ブロックＩＤをＢＢＴ６１に追加し、ＦＢＴ６０から削除し、フリーブロックを再取得する。なお、一度書き込みエラーが発生した物理ブロックであっても、再度書き込み動作を行うと書き込みエラーが発生せずに正常に書き込みできることがあるため、バッドブロック数の不必要な増大を防止するという観点では、ＦＢＴ６０やＡＢＴ６２に「ブロックごと書き込みエラー発生回数」の項目を各ブロックに設け、ブロックの書き込みエラーが発生した場合にこれをインクリメントするようにし、「ブロックごと書き込みエラー発生回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。さらに望ましくは、連続して書き込みエラーが発生する物理ブロックのみをバッドブロック化するために、ＳＳＤＣ４１は、前記「ブロックごと書き込みエラー発生回数」のかわりに「ブロックごと書き込み連続エラー回数」の項目をもうけ、ブロックの書き込みエラーが発生した場合にこれをインクリメントするようにし、書き込みをエラー無く行えた場合にこれをゼロにリセットするようにし、「ブロックごと書き込み連続エラー回数」が所定値以上になった場合に当該ブロックをＢＢＴ６１に登録するようにするのが望ましい。
【０１３１】
なお、図２６の手順では、フリーブロックにデータを詰め込むことを優先するＮＡＮＤ整理を行ったが、ステップＳ１６４で、ｖを物理ブロックサイズから取得したクラスタの容量を減算することによって求め、ステップＳ１６５でｖ＞０か否かを判定し、ｖ＞０の場合はステップＳ１６８に移行し、ｖ＞０でない場合はステップＳ１６２に移行させるようにすることで、フリーブロックを確保することを優先するＮＡＮＤ整理を行うようにしてもよい。
【０１３２】
つぎに、図２７を用いてＳＳＤ２における削除通知について説明する。削除通知は、ホスト装置３上のＯＳ１００によってデータの削除が行われた場合に、ホスト装置３から外部記憶装置に対して送信される命令である。削除通知の例として、例えば、ＩＮＣＩＴＳ  ＡＴＡ／ＡＴＡＰＩ  Ｃｏｍｍａｎｄ  Ｓｅｔ−２（ＡＣＳ−２）で記述されているData Set Management Command(通称トリム（ＴＲＩＭ）コマンド)があげられる。これは、ＯＳ１００上でデータが削除された場合、削除されたデータの存在する論理アドレス領域（ＬＢＡ領域）を、ＬＢＡ及びセクタ数の組みよりなるＬＢＡ  Ｒａｎｇｅ  Ｅｎｔｒｙとして外部記憶装置に通知することにより、外部記憶装置上でもその領域を空き領域として扱うことができる方式である。削除通知により、ＳＳＤ２はフリーブロックを新たに確保することができる。なお、トリムコマンドの機能は、Ｄａｔａ  Ｓｅｔ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｍｍａｎｄだけでなく、たとえば、ＩＮＣＩＴＳ  ＡＣＳ−２で記述されているＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔや、その他ベンダー独自のコマンドなどその他コマンドによって実現してもよい。ＯＳ１００が緊急時ＯＳである場合は、ＮＡＮＤメモリに対する書き込みを減らすという観点では、緊急時ＯＳでは当該削除通知の発行を禁止することが望ましい。一方、当該削除通知処理ではＮＡＮＤメモリ１６に関して高々管理情報４５程度の書き換えしか発生しないため、緊急時ＯＳにおいても当該削除通知を許可してもよい。
【０１３３】
ＳＳＤ２がホスト装置３から削除通知を受信した場合は（ステップＳ１８０）、ＳＳＤＣ４１は、削除通知に含まれるＬＢＡを先の図２１に示した手順に従ってＬＢＡ正引き変換する。ＳＳＤＣ４１は、削除通知に含まれるＬＢＡがトラック管理である場合は（ステップＳ１８１：Ｙｅｓ）、物理ブロックＩＤをＦＢＴ６０に追加してＡＢＴ６２から削除する（ステップＳ１８４）。一方、ＳＳＤＣ４１は、削除通知に含まれるＬＢＡがクラスタ管理である場合は（ステップＳ１８１：Ｎｏ）、物理ブロックに対応する全クラスタをクラスタテーブル６４から削除し（ステップＳ１８２）、トラックテーブル６３において、ＬＢＡに対応するトラックに対応する物理ブロックＩＤに適当な有効値（例えばＦＦＦＦ）を記入し（ステップＳ１８３）、物理ブロックＩＤをＦＢＴ６０に追加してＡＢＴ６２から削除する（ステップＳ１８４）。ＳＳＤ２では、ＮＡＮＤ整理以外に、削除通知処理によってもフリーブロックを確保することができる。
【０１３４】
このようなＮＡＮＤ整理により、書き込みに対し十分な数のフリーブロックを確保できるのが通常である。ＮＡＮＤ整理によっても、書き込みに対し十分な数のフリーブロックを確保できなかった場合は、統計情報６５のＮＡＮＤ整理失敗フラグを１にして、ホスト装置３による統計情報６５の取得を通じてＳＳＤ２がフリーブロックを確保できなかったことをホスト装置３に通知できるようにすることが望ましい。ＮＡＮＤ整理失敗フラグが１になってから実際にＳＳＤ２が動作しなくなるまでの時間に猶予をもたせるという観点では、
（ＮＡＮＤ整理をして確保できたフリーブロック数）＜（書き込みに必要なフリーブロック数）＋（マージン）
の条件を満たす場合にＮＡＮＤ整理失敗フラグを１にセットするようにしておくことが望ましい。
【０１３５】
上記ＮＡＮＤ整理は、ホスト装置３からライト要求を受信した時だけでなく、ホストから最後に命令を受信してから所定時間経過した時、またはホスト装置３からスタンバイやアイドルやスリープ状態に移行するコマンドを受信した時などに実行してもよいし、ＡＣＳ−２に記載のSCT Command Transportやその他ベンダーコマンドなどを通じて、ＮＡＮＤ整理を開始する命令をＳＳＤ２がホスト装置３から受信した時などに実行してもよい。なお、ＯＳ１００が緊急時ＯＳである場合は、ＮＡＮＤメモリに対する書き込みを減らすという観点では、ホスト装置３から最後に命令を受信してから所定時間経過した時、ホスト装置３からスタンバイやアイドルやスリープ状態に移行するコマンドを受信した時に、上記ＮＡＮＤ整理を行わないことが望ましい。さらには、ＯＳ１００が緊急時ＯＳである場合は、ＮＡＮＤメモリ１６に対する書き込みを減らすという観点では、緊急時ＯＳにおいてはＮＡＮＤ整理を開始する命令発行が禁止されていることが望ましい。
【０１３６】
（エラー処理）
次に、図２８を用いてＳＳＤ２でのＮＡＮＤメモリ１６に関するエラー処理について説明する。ホスト装置３からのライト要求に対する処理やＮＡＮＤ整理処理など各種処理は通常は上記のように行われるが、ＮＡＮＤメモリ１６に対する書き込み動作（プログラム動作）で書き込みエラーが発生する場合、ＮＡＮＤメモリ１６に対する消去動作（イレーズ動作）で消去エラーが発生する場合、ＮＡＮＤメモリ１６に対する読み出し動作の際にＥＣＣエラー（誤り訂正処理の失敗）が生じる場合などがあり、これらに対する例外処理が必要となる。
【０１３７】
ＳＳＤＣ４１は、上記の何れかのエラーが発生した場合（ステップＳ１９０）、エラーが発生した物理ブロックをＢＢＴ６１に追加し（ステップＳ１９１）、エラーが発生した物理ブロックをＡＢＴ６２及びＦＢＴ６０から削除することで（ステップＳ１９２）、以後は、エラーが発生した物理ブロックにアクセスできないようにする。この際、エラーが発生した物理ブロックのデータを別の物理ブロックにコピーしてもよい。ＳＳＤＣ４１は上記エラー処理を統計情報６５に反映させる。
【０１３８】
上記では、エラー処理の一例を、読み出し処理、書き込み処理、ＮＡＮＤ整理処理に関して示したが、エラー処理はこれらの例に限らず、ＮＡＮＤメモリ１６に対する全ての読み出し処理、書き込み処理、消去処理に対して適用可能である。
【０１３９】
（制御ツール）
ＳＳＤ２を利用しているうちに、ＮＡＮＤメモリ１６の各ブロックの信頼性が劣化していき、バッドブロックの数が増えていき、フリーブロック数とアクティブブロック数の和が減っていくことになる。さらにＳＳＤ２を使用していると、ＮＡＮＤ整理を行っても、書き込み処理を行うのに十分なフリーブロック数を確保できなくなり、これがＳＳＤ２の寿命である。以下では、ＳＳＤ２の寿命が到達した場合の制御ツール２００の処理を示す。
【０１４０】
制御ツール２００は起動されると、主メモリ６に常駐してＳＳＤ２の統計情報６５を監視する。ＳＳＤ２の統計情報６５を常に監視するためには、制御ツール２００の起動プログラムが通常時ＯＳ１００Ａのスタートアッププログラムに登録されるなどして、通常時ＯＳ１００Ａが領域１６Ｄ（または２０Ｄ）から領域６Ａに読み出されるときまたはその直後に制御ツール２００が領域１６Ｂ（または領域２０Ｂ）から読み出されるのが望ましい。たとえば、ＯＳ１００がWindows（登録商標）である場合は、制御ツール２００を、例えばWindows（登録商標）のスタートアップメニューに登録したり、あるいはサービスとして登録したり、Windows（登録商標）のレジストリに登録したりすることで、制御ツール２００を起動時の常駐プログラムに設定しておくことで、制御ツール２００を自動起動させることが可能となる。
【０１４１】
制御ツール２００は、例えば図２９に示すように、一定時間おき（たとえば１分おき）にＳＳＤ２から統計情報６５を取得する。統計情報を取得する方式として、例えば、INCITS ACS-2に記述されている、メモリの自己診断機能であるS.M.A.R.T（Self-Monitoring Analysis and Reporting Technology）のコマンドであるSMART READ DATA（B0h（D0h））又はACS-2に記述されているSCT Command Transportやその他ベンダー独自のコマンドを用いてもよい。
【０１４２】
図３０は、ＳＳＤ２で管理される統計情報６５（統計情報Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４）に関するテーブルを示すものである。S.M.A.R.Tを用いる場合、図３０に示すように、統計情報６５の構成要素（Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４など）それぞれに対し、属性ＩＤ（attribute ID）を割り当るが、これら構成要素の一部のみに割り当ててもよいのはもちろんである。これら統計情報６５の構成要素に関し、規格化後、最良値としてSMABを採用し、規格化後の信頼性保証下限値としてSMAL=SMAB*AMALR（０≦AMALR＜１）（SMALは整数で、四捨五入、小数点以下切り上げ、小数点以下切り上げのいずれかにより少数から整数に変換される）を採用し、
attribute value = SMAL + SMAB×（1-AMALR）×(ＲＭＡＸ−生の値)／ ＲＭＡＸ
attribute Threshold＝30（固定値）
ＲＭＡＸ＝信頼性保証できる統計情報生の値の上限値
生の値＝統計情報の生の値
により、ＳＳＤＣ４１は、smart情報のattribute value（図３０の「Value」）を計算して制御ツール２００に送信する。attribute Thresholdは、図２６の「Threshold」であり、生の値は、図２６の「Raw Data」である。
【０１４３】
規格化後の最良値ＳＭＡＢは任意の自然数であればよく、たとえばＳＭＡＢ＝１００を採用してもよい。ＡＭＡＬＲは０≦ＡＭＡＬＲ＜１をみたす任意の数であればよく、たとえばＡＭＡＬＲ＝０．３を採用してもよい。また、ＲＭＡＸ、ＡＭＡＬＲおよびＳＭＡＢは各Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４に対して、それぞれ別の値を採用することができる。ＳＭＡＢ＝１００で、ＡＭＡＬＲ＝；０．３を採用した時、採用対象の統計情報に関してattribute valueの最良値が１００（たとえば出荷直後に１００）になっており、信頼性が劣化するにつれて徐々に減少していき、ＳＳＤ２が信頼性保証できなくなったとき（統計情報の生の値がＲＭＡＸに等しいかそれ以上になったとき）、attribute valueが３０かそれ以下の値に到達することになる。なお、Attribute ValueがThresholdを超過しているか否かをホスト３が検知する手段として、ACS-2に記載のコマンドであるB0h/DAh SMART RETURN STATUSを用い、当該コマンドのOutputからAttribute ValueがThresholdを超過しているか否かを判断してもよい。
【０１４４】
ＲＭＡＸは、たとえば図３１のように統計情報の生の値とＳＳＤ２の不良率の関係を開発段階に導き出し、不良率が許容値を超える時の統計情報生の値をＲＭＡＸとして採用することが望ましい。たとえば、ＳＳＤ２の開発段階で、多数個（たとえば１００個）の試験用ＳＳＤ２群に対して高温で書き込み動作を繰り返しながら、書き込んだデータが一定時間以上正しく記憶され続けるかを検証する摩耗試験を行い、同時に統計情報をモニタしつづけ、不良率が一定割合に到達する時点での統計情報の生の値をＲＭＡＸとして採用すればよい。たとえば、摩耗したＳＳＤ２を高温状態である時間以上放置して、その後ＳＳＤ２の温度を下げ、ＳＳＤ２に対して読み出し動作を行い、読み出したデータがＥＣＣ訂正できない場合（またはＥＣＣ訂正できないデータが一定数以上の場合）、これをＳＳＤ２の不良として定義し、不良数を、同等の試験を行ったＳＳＤ２の個数で割った値を不良率として採用すればよい。この不良率が、前記許容できる不良率を統計的に有意に下回る統計情報生の値をＲＭＡＸとして採用すればよい。ＲＭＡＸにある程度マージンをもたせて、
ＲＭＡＸ´＝ＲＭＡＸ−マージン
としたＲＭＡＸ´をＲＭＡＸとして採用してもよい。
【０１４５】
図３０の「Worst」を制御ツール２００がＳＳＤ２の寿命を診断する仕様として採用してもよい。「Worst」はattribute valueの最悪値としてＳＳＤＣ４１に計算される。たとえば、Ｘ０１〜Ｘ１９、Ｘ２３の場合、Worstは、たとえばＳＳＤ２が出荷後の（または製造後の）、attribute valueの最小値である。あるいは、Worstとして、過去ある一定時間範囲内のattribute valueの最小値をWorst Valueとして採用してもよいし、ある一定回数（一定データ量）通信または処理が行われた過去にさかのぼって、その過去から現在に至るまでの最小値をworst valueとして採用してもよい。
【０１４６】
図３０の「Raw Data」（Raw Value）を制御ツール２００がＳＳＤ２の寿命を診断する仕様として採用してもよい。統計情報（たとえば、Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４）の生の値がRaw DataとしてＳＳＤ２から制御ツール２００に送信される。この場合、制御ツール２００は、ＲＭＡＸを制御ツール２００内にすでに保持しているかＳＳＤ２から別途読み出すかその他記憶装置から読み出すかしてＲＭＡＸを取得し、ＲＭＡＸとRaw Dataを比較し、Raw Data＞RMAXまたはRaw Data≧RMAXとなった時、ＳＳＤ２が寿命に到達したと判断する。たとえば、ＮＡＮＤ整理失敗フラグの場合、これが１である場合にＳＳＤ２が寿命に到達したと判断する。たとえば、バッドブロック数総計の場合、これが所定値を上回った場合にＳＳＤ２が寿命に到達したと判断する。Raw Dataとして、必ずしも統計情報の生の値を出力する必要はなく、たとえば、統計情報の生の値を四則演算した値をRaw DataとしてＳＳＤＣ４１が制御ツール２００に送信し、同じくＲＭＡＸを四則演算した値と比較することで判定を行ってもよい。また、統計情報の生の値を暗号化したデータをRaw DataとしてＳＳＤＣ４１が制御ツール２００に送信し、ＳＳＤＣ４１がこれを復号化して復号化後のデータをＲＭＡＸと比較することで判定を行ってもよい。
【０１４７】
上記のようにして、制御ツール２００は、ＳＳＤ２が寿命に到達したか否か（ＳＳＤ２が異常状態であるか否か）を判定し、ＳＳＤ２が寿命に到達したと判定された場合（ＳＳＤ２が異常状態であると判定された場合）、後述する寿命到達時処理（ステップＳ２０５）に移行する。統計情報６５は、統計情報Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４以外にも種々の形態をとりうるが、本発明はこれらに対しても適用可能である。また、Ｘ０１〜Ｘ１９、Ｘ２３、Ｘ２４と不良率の関係には正の相関関係が存在するが、不良率と負の相関関係が存在する統計情報に対しても本発明は適用可能である。たとえば、ＳＳＤ２が出荷後に体験した最低温度などである。その場合、ＲＭＡＸの代わりに、信頼性保証できる下限値ＲＭＩＮを採用し、統計情報がＲＭＩＮを下回った場合にＳＳＤ２が寿命に到達したと判断すればよい。
【０１４８】
図２９において、S.M.A.R.Tを用いる場合、制御ツール２００は、一定時間おき（たとえば１分おき）に統計情報の取得を行う（ステップＳ２００：Ｙｅｓ）。制御ツール２００は、統計情報取得コマンドであるＡＣＳ−２に記載のＢ０ｈ／Ｄ０ｈ  ＳＭＡＲＴ  ＲＥＡＤ  ＤＡＴＡを発行し（ステップＳ２０１）、ＳＳＤ２から統計情報を含むデータを受信し（ステップＳ２０２）、この受信したデータを診断する（ステップＳ２０３）。診断方法は前述したとおりである。ステップＳ２０４において、ＳＳＤ２が寿命に到達したと制御ツール２００が判断した時（ステップＳ２０４：Ｙｅｓ）、制御ツールは寿命到達時処理に移行する（ステップＳ２０５）。ＳＳＤ２が寿命に到達していなくても、統計情報があらかじめ定められたＲＭＡＸを上回ったり、あるいは通常動作ではありえない異常値を示した場合などにおいても、ステップＳ２０５の処理に移行することが望ましい。
【０１４９】
統計情報６５以外の情報を用いて、寿命到達時処理に移行してもよい。たとえば、図３２に示すように、制御ツール２００は、ＯＳ１００がＳＳＤ２から受信する応答情報（図１２参照）をＯＳ１００から取得（監視）し（ステップＳ２１０）、エラー応答であった場合（ステップＳ２１１）、ＳＳＤ２が異常状態に至ったと判断し、寿命到達時処理に移行する（ステップＳ２１２）。監視する応答はどのようなコマンドに対する応答でもよいが、たとえばＡＣＳ−２記載の61h WRITE FPDMA QUEUEDや35h WRITE DMA EXTなどのＳＳＤ２に対する書き込みコマンドに対する応答のみを監視することが、ＣＰＵ４への負荷低減の観点から望ましい。特に、ＳＳＤ２が特許文献１として提示した特開２００９−２１７６０３号公報の発明を採用したＳＳＤである場合、ＳＳＤ２が寿命に至ると、ＳＳＤ２への書き込みコマンドに対する応答がエラーで返ってくるようになるため、統計情報の取得無しに寿命到達を判断することができる。なお、ＳＳＤ２が特許文献１として提示した特開２００９−２１７６０３号公報の発明を採用したＳＳＤで無い場合であっても本発明が適用できることはもちろんである。 
なお、ＳＳＤ２が書き込みコマンドに対してエラーを返す状態である場合で、後述するＳＳＤ２のブートローダの書き換えや緊急時ＯＳの書き込み等書き込みを行う場合は、特許文献１のＲｅａｄＯｎｌｙモード状態において特殊な書き込みコマンド（例えばＡＣＳ−２に記述されているＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔやその他ベンダー独自コマンドなど）に対してはエラーを返さないようＳＳＤＣ４１を構成しておき、前述した特殊な書き込みコマンドを用いてＳＳＤ２に書き込みを行うことが望ましい。なお、ＳＳＤ２以外の記憶装置への書き込みには必要ない。あるいは、通常時ＯＳ時が、書き込みコマンドとしてある書き込みコマンド（たとえば61h WRITE FPDMA QUEUED）のみを使うようなＯＳである場合には、ＳＳＤＣ４１が特許文献１のＲｅａｄＯｎｌｙモードに至ると、当該書き込みコマンド（たとえば61h WRITE FPDMA QUEUED）に対してエラーを返すようにＳＳＤＣ４１を構成し、別の書き込みコマンド（たとえば30h WRITE SECTOR(S)）に対してはエラーを返さないようにＳＳＤＣ４１を構成し、別の書き込みコマンド（たとえば30h WRITE SECTOR(S)）を用いてＳＳＤ２に対してブートローダや緊急時ＯＳなどの書き込みを行うようにしてもよい。
【０１５０】
監視対象のコマンドは、書き込みコマンド以外のコマンドであってもよいのはもちろんである。たとえば、コマンド応答としてＡＣＳ−２記載のB0H/D4H SMART EXECUTE OFF-LINE IMMEDIATEの応答(Outputs)やレポートを用いてもよいし、90h EXECUTE DEVICE DIAGNOSTICの応答を用いてもよい。
【０１５１】
あるコマンド応答がエラーであっても、同コマンドを再度送信するとエラーでない可能性があり、この場合はＳＳＤ２が寿命に到達していない可能性があるため、再現性のあるコマンドエラーが発生した場合にのみ寿命到達時処理を行う観点では、コマンドエラーが複数回発生した場合に寿命到達時処理を行うことが望ましい。さらに、エラー再現性を厳密に判定する観点では、コマンドエラーが複数回連続で発生した場合に寿命到達時処理を行うことが望ましい。あるいは、図３３に示すように、ＳＳＤ２へのコマンド監視中にコマンド応答がエラーで返ってきた場合（ステップＳ２２０、Ｓ２２１：Ｙｅｓ）、制御ツール２００またはＯＳ１００が同コマンドをＳＳＤ２に再度送信（コマンドリトライ）し（ステップＳ２２２）、リトライしたコマンドがエラーした場合に（ステップＳ２２３：Ｙｅｓ）、寿命到達時処理を行うようにしてもよい（ステップＳ２２４）。
【０１５２】
（寿命到達時処理）
つぎに、寿命到達時処理（異常状態時処理）について説明する。第１の実施形態では、通常時ＯＳおよび緊急時ＯＳがＳＳＤ２にすでに格納されている場合での寿命到達時処理について説明する。通常時ＯＳ１００Ａ、緊急時ＯＳ１００Ｂおよびブートローダ３００は、図７〜図１１に示したように、たとえば、コンピュータシステム１の出荷前にコンピュータシステム１の製造業者によりＳＳＤ２に書き込まれているか、コンピュータシステム１の出荷後にユーザがＤＶＤ−ＲＯＭやＵＳＢメモリやＳＳＤなどのインストールディスクによりインストールを行うか、コンピュータシステム１の出荷後にユーザがＷＥＢからインストールイメージをダウンロードしダウンロードしたインストールイメージを使ってインストールを行うことで、ＳＳＤ２に書き込まれる。ＮＡＮＤメモリ１６において、図７に示すように、ブートローダ３００は領域１６Ｃに、通常時ＯＳ１００Ａは領域１６Ｄに、緊急時ＯＳ１００Ｂは領域１６Ｅに書き込まれており、ＲＡＭ４０に格納される管理情報４４により、領域１６Ｃ、領域１６Ｄ、領域１６ＥにはそれぞれＬＢＡが割り当てられている。領域１６ＣにはＬＢＡ１６Ｃが、領域１６ＤにはＬＢＡ１６Ｄが、領域１６ＥにはＬＢＡ１６Ｅが割り当てられているとする。ブートローダ３００内で保持される前述のＯＳポインタ情報ＯＳＰＴ（読み出すべきＯＳのＬＢＡを示しているポインタ情報）にも、同様にＬＢＡが割り当てられており、ＯＳＰＴに割り当てられるＬＢＡをＬＢＡＯＳＰＴと呼称する。ＬＢＡＯＳＰＴはＬＢＡ１６Ｃに含まれている。
【０１５３】
制御ツール２００は、ブートローダ３００を書き換えることで、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂがホスト装置３の主メモリ６上の領域６Ａに読み出されるようにする。通常時ＯＳ１００ＡがＯＳ１００としてＣＰＵ４に使用されている時は、ホスト装置３はＳＳＤ２に対して書き込み動作を行う恐れがあり、それによりＳＳＤ２の寿命がさらに短くなったり、ＳＳＤ２に書き込んだデータやすでに書き込まれているデータを破壊してしまう可能性がある。一方、本実施形態により、通常時ＯＳ１００Ａではなく、緊急時ＯＳ１００Ｂを主メモリ６上の領域６Ａに読み出し、ＣＰＵ４が緊急時ＯＳ１００Ｂをオペレーティングとして使用しているときは、ホスト３がＳＳＤ２に対して書き込み動作を行うことは禁止されるため、ＳＳＤ２のデータが破壊されたりＳＳＤ２が読み出し不可能になったりする前に、ＳＳＤ２のデータを読み出したり、ＳＳＤ２に格納されているユーザデータを別の記憶媒体にバックアップしたりすることが可能になる。
【０１５４】
たとえば図２９のステップＳ２０５で寿命到達時処理が呼び出されると、図３４に示すように、制御ツール２００はブートローダ３００を書き換えて、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂが主メモリ６上の領域６Ａに読み出されるようにする。たとえば、制御ツール２００は、ＬＢＡＯＳＰＴに対して、書き込みデータとしてＬＢＡ１６Ｅを書き込む。これにより、次回以降コンピュータシステム１が起動されると、ＣＰＵ４はＯＳポインタ情報ＯＳＰＴを読み出し、ＯＳポインタ情報ＯＳＰＴの示すＬＢＡであるＬＢＡ１６Ｅに対して読み出し命令を送信することで、緊急時ＯＳ１００Ｂを読み出すことができる。ブートローダ３００の書き換え前後で、制御ツール２００がディスプレイ９を通して、「ＳＳＤが寿命に到達しました。緊急時ＯＳを有効にします。」という旨の表示を行ってもよい。
【０１５５】
図３４では、寿命到達時処理としてブートローダ３００の書き換えのみを行ったが、図３５に示すように、制御ツール２００は、ステップＳ２４０でのブートローダ書き換え後に、コンピュータシステム１に対してリセットコマンドを送信したり、通常時ＯＳに対してリセットコマンドを送信したりすることにより、コンピュータシステム１を再起動してもよい（ステップＳ２４１）。
【０１５６】
また、図３６に示すように、ステップＳ２５０でのブートローダ書き換え後に、ディスプレイ９を通して、「ＳＳＤが寿命に到達しました。緊急時ＯＳを有効にします。今すぐ再起動しますか？」という旨のテキスト表示と、ＯＫボタンの表示を行い（ステップＳ２５１）、ＯＫボタンがたとえばマウス１５やキーボード１４により押下されたとき（ステップＳ２５２：Ｙｅｓ）、コンピュータシステム１を再起動するようにしてもよい（ステップＳ２５３）。また、ＯＫボタンの表示の代わりに、コマンドプロンプト画面で「ＳＳＤが寿命に到達しました。緊急時ＯＳを有効にします。今すぐ再起動しますか？ｙ：Ｙｅｓ, ｎ：Ｎｏ」というテキスト表示を行い、キーボード１４から“ｙ”とエンターキーを入力されたとき、コンピュータシステム１を再起動するようにしてもよい。
【０１５７】
図３７は、コンピュータシステム１の再起動時の動作手順を示すものである。コンピュータシステム１が再起動されると、ＣＰＵ４は領域１６Ｃに対応するＬＢＡおよびＬＢＡＯＳＰＴを使用してブートローダ３００およびＯＳポインタ情報ＯＳＰＴをＳＳＤ２から読み出す（ステップＳ２６０）。つぎに、ＣＰＵ４は、ブートローダ３００を使用して所要のブート処理を行うとともに、ＯＳポインタ情報ＯＳＰＴを解析し、ＯＳポインタ情報ＯＳＰＴが示すＬＢＡを特定する。そして、ＣＰＵ４は、特定したＬＢＡに対する読み出し命令をＳＳＤ２へ送信することで、ＯＳポインタ情報ＯＳＰＴが指定するＯＳをＳＳＤ２から読み出す。したがって、ＯＳポインタ情報ＯＳＰＴが示すＬＢＡが通常時ＯＳ１００Ａの記憶領域である領域１６Ｄを指定しているときには（ステップＳ２６１：Ｙｅｓ）、通常時ＯＡ１００Ａが領域１６Ｄから読み出されて主メモリ６上の領域６Ａに書き込まれ（ステップＳ２６２）、ＯＳポインタ情報ＯＳＰＴが示すＬＢＡが緊急時ＯＳ１００Ｂの記憶領域である領域１６Ｅを指定しているときには（ステップＳ２６１：Ｎｏ）、緊急時ＯＡ１００Ｂが領域１６Ｅから読み出されて主メモリ６上の領域６Ａに書き込まれる（ステップＳ２６３）。このように、制御ツール２００による寿命到達時処理によってブートローダ３００のＯＳポインタ情報ＯＳＰＴが、緊急時ＯＳ１００Ｂを読み出すように書き換えられているときには、緊急時ＯＡ１００Ｂが領域１６Ｅから読み出されて主メモリ６上の領域６Ａに書き込まれることになる。
【０１５８】
（バックアップ機能）
ユーザがＳＳＤ２のユーザデータを他の記憶装置に容易にバックアップしやすくするという観点では、緊急時ＯＳ１００Ｂに、ユーザデータバックアップ機能を付加することが望ましい。ＳＳＤ２が寿命に到達したと考えられる状態では、ＳＳＤ２のデータリテンション特性が悪化していると考えられるため、できるだけ早急にＳＳＤ２上のユーザデータを他のバックアップ用記憶装置にデータを退避させることが必要である。
【０１５９】
図３８は、緊急時ＯＳ１００Ｂがバックアップ機能を搭載している場合の、ホスト装置３の構成を示す図である。ホスト装置３には、インタフェース１９（本実施形態ではＳＡＴＡインタフェースを採用する）を介して、バックアップ用記憶装置（他のＳＳＤ、ハードディスクドライブなど）１５０が接続されている。バックアップ用記憶装置１５０はコンピュータシステム１の出荷時には搭載されている必要が無く、たとえばユーザが別途購入したＳＳＤをバックアップ用記憶装置１５０として用いる場合は、ＳＳＤのＳＡＴＡポートをＳＡＴＡケーブルを経由してマザーボード３０（図１３参照）に接続し、ＳＳＤ２の電源ポートを電源ケーブルを経由して電源３２に接続するとよい。
【０１６０】
図３９は、緊急時ＯＳ１００Ｂにバックアップ機能を付加した場合の、緊急時ＯＳ１００Ｂの起動手順の一例を示すものである。図３９のステップＳ２７０〜Ｓ２７３の動作は、図３７のステップＳ２６０〜Ｓ２６３の動作と同じである。図３９では、図３７に示したコンピュータシステム１の起動手順にステップＳ２７４〜Ｓ２７６を追加している。緊急時ＯＳ１００Ｂの起動後、ステップＳ２７４以降の処理は、たとえば、ユーザがキーボード１４やマウス１５を介して緊急時ＯＳ１００Ｂのプログラムメニューからバックアップ機能を選択するか、あるいは、緊急時ＯＳ１００Ｂが起動すると自動的に開始される。バックアップ処理の前に、ディスプレイ９に「バックアップするか？」というメッセージと、ＯＫボタンを表示して、バックアップするタイミングをユーザが自由に選択できるようにすることが望ましい。マウス１５やキーボード１４によりＯＫボタンを選択すると、ステップＳ２７５のＹｅｓにすすむ。あるいは、ディスプレイ９に、コマンドプロンプト経由で「バックアップするか？Ｙｅｓ：Ｙ、Ｎｏ：Ｎ」というメッセージを表示して、キーボード１４からＹボタンとエンターキーを押すことでステップＳ２７５のＹｅｓにすすむようにしてもよい。このようにして、バックアップ機能が選択されると（ステップＳ２７５：Ｙｅｓ）、緊急時ＯＳ１００Ｂはバックアップ処理を開始する。
【０１６１】
バックアップ処理の内容としては、たとえば、緊急時ＯＳ１００Ｂは、ＳＳＤ２から読み出したデータのＬＢＡ（ＳＳＤ２のＬＢＡ）と同一のＬＢＡ（バックアップ用記憶装置１５０上のＬＢＡ）に、ＳＳＤ２から読み出したデータを書き込む（ＬＢＡ単位のバックアップ）。例えば、ＳＳＤ２上のＬＢＡ＝０ｈのデータはバックアップ用記憶装置１５０上のＬＢＡ＝０ｈにコピーされる（ステップＳ２７６）。また、ＳＳＤ２上のＬＢＡ＝２３４ｃ５ｈのデータはバックアップ用記憶装置１５０上のＬＢＡ＝２３４ｃ５ｈにコピーされる。データのコピーは、ＳＳＤ２に対し、たとえばＡＣＳ−２記載の60h READ FPDMA QUEUEDや25h READ DMA EXTコマンドをＬＢＡおよびセクタ長を指定して送信し、ＳＳＤ２から読み出しデータを受信して主メモリ６に書き込み、たとえばＡＣＳ−２記載の61h WRITE FPDMA QUEUEDや35h WRITE DMA EXTをバックアップ用記憶装置１５０にＬＢＡおよびセクタ長を指定して送信し、主メモリ６に書き込んだデータをバックアップ用記憶装置１５０に送信することで実行される。バックアップ処理は全ＬＢＡ領域について行ってもよいが、一部のＬＢＡ領域についてのみ行ってもよい。
【０１６２】
なお、このバックアップ処理の際、緊急時ＯＳ１００Ｂは、ＳＳＤ２の全ファイルをバックアップ用記憶装置１５０にコピーするようにしてもよい。多くのＯＳにおいては、ユーザはＬＢＡを直接指定してデータにアクセスするのではなく、ファイルＩＤ（ファイル名）を用いてデータにアクセスする。例えば、ＳＳＤ２は、図４０に示すように、ファイルＩＤとＬＢＡやセクタ長を関連付けるファイル管理テーブル１４０を格納している。管理情報４４によってファイル管理テーブル１４０にもＬＢＡが割り当てられている。通常時ＯＳ１００Ａは、図１２に示したその他ソフトウェアから受信したファイルＩＤを、ファイル管理テーブル１４０をもとにＬＢＡに変換してＳＳＤ２に送信したり、ＳＳＤ２から受信したＬＢＡをファイル管理テーブル１４０をもとにファイルＩＤに変換してその他ソフトウェアに送信したりする。バックアップ処理において、緊急時ＯＳ１００Ｂはファイル管理テーブル１４０をＳＳＤ２から読み出し、ファイルＩＤそれぞれに対し、ファイル管理テーブル１４０で対応しているＬＢＡのデータを読み出すコマンド（60h READ FPDMA QUEUEDや25h READ DMA EXTコマンドなど）をＳＳＤ２に送信し、ＳＳＤ２から読み出しデータを受信して主メモリ６に書き込む。さらに、緊急時ＯＳ１００Ｂは、バックアップ用記憶装置１５０のファイル管理テーブル（図示せず）を読み出し、まだファイルＩＤの割り当てられていないＬＢＡに対し主メモリ６に書き込んだデータを書き込み、書き込んだＬＢＡとファイル名を対応付けるようＳＳＤ２の全ファイルの全ＬＢＡを取得し、取得したＬＢＡの全データを読み出し、読み出したデータをバックアップ用記憶装置１５０に書き込み、書き込んだＬＢＡとファイルＩＤが対応付けられるようにバックアップ用記憶装置１５０のファイル管理テーブル（図示せず）を書き換える。バックアップ処理は全ファイルについて行ってもよいが、一部のファイルについてのみ行ってもよい。
【０１６３】
また、バックアップ用記憶装置１５０にバックアップデータを書き込む際、ＳＳＤ２から読み出したデータを圧縮して書き込んでもよい。また、ファイル管理テーブル１４０をはじめとするＳＳＤ２の管理情報を読み出し、使用されている領域やファイルの情報を取得し、取得した情報をもとに、ＳＳＤ２のデータについてのＲＯＭイメージを作成し、作成したＲＯＭイメージを他のバックアップ用記憶装置１５０に保存するようにしてもよい。
【０１６４】
上記説明では、バックアップ用記憶装置として、ＳＡＴＡインタフェースで接続されるＳＡＴＡデバイスである場合を採用したが、その他のバックアップ用記憶装置を用いてもよいのはもちろんである。たとえば、図４１に示すように、バックアップ用記憶装置としてＵＳＢメモリやＵＳＢ対応ＳＳＤなどのＵＳＢストレージデバイス１５１を採用してもよく、図４２に示すように、バックアップ用記憶装置としてＤＶＤ−ＲやＤＶＤ−ＲＷやＢｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃなどのような書き込み可能な光学ドライブ１５２を採用してもよく、図４３に示すように、バックアップ用記憶装置としてインターネットやＬＡＮ経由で接続されたネットワークストレージサーバ１５３を採用してもよい。また、当該バックアップ機能は他の実施形態の場合にも適用可能である。
【０１６５】
図７に示したように、緊急時ＯＳ１００Ｂの格納領域１６Ｅは管理情報４４でＬＢＡに対応付けられているとした。一方、ユーザによって不用意に領域１６Ｅのデータが書き換えられてしまうことを防止するためには、ＳＳＤ２の出荷時にＬＢＡを割り当てることなく格納領域１６Ｅに緊急時ＯＳを記録しておいて、寿命到達時処理時に、制御ツール２００がＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔやベンダー独自のコマンドをＳＳＤ２に送信することにより、ＳＳＤＣ４１が管理情報４４を書き換えて領域１６ＥにＬＢＡを割り当てるようにしてもよい。あるいは、ＬＢＡが割り当てられている領域１６ＥのＬＢＡ  Ｒａｎｇｅを含むＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔやベンダー独自のコマンドを制御ツール２００がＳＳＤ２に送信することにより、領域１６ＥがＬＢＡに割り当てられないようにＳＳＤＣ４１が管理情報４４を書き換え、寿命到達時処理時に、制御ツール２００がＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔやベンダー独自のコマンドをＳＳＤ２に送信することにより、ＳＳＤＣ４１が管理情報４４を書き換えて領域１６ＥにＬＢＡを割り当てるようにしてもよい。
【０１６６】
このように第１の実施形態によれば、制御ツール２００は、ＳＳＤ２が寿命に到達したか否か、ＳＳＤ２が正常な状態であるか否かを判定し、ＳＳＤ２が寿命に到達したと判定された場合やＳＳＤ２が異常な状態であると判定された場合、ブートローダ３００を、書き込み動作をサポートしていない緊急時ＯＳが起動されるように書き換え、コンピュータシステム１を再起動した際、緊急時ＯＳが起動されるようにすることで、ＳＳＤ２に対する書き込み動作を禁止、あるいはＳＳＤ２に対する書き込み動作を陽に行わないようにすることで、ＳＳＤ２の信頼性劣化を防止し、ＳＳＤ２に書き込むデータやＳＳＤにすでに書き込まれているデータが破壊されることを防止し、ユーザがユーザデータを容易にＳＳＤ２から読み出したり他の記憶装置にバックアップしたりすることを実現する。
【０１６７】
（第２の実施形態）
第１の実施形態では、通常時ＯＳ１００Ａおよび緊急時ＯＳ１００Ｂの双方がＳＳＤ２のＮＡＮＤメモリ１６に格納されている場合について説明した。第２の実施形態では、通常時ＯＳ１００ＡがＳＳＤ２に格納されており、緊急時ＯＳ１００ＢがＳＳＤ２に格納されていない場合について説明する。第２の実施形態では、図３３のステップＳ２２４に示した寿命到達時処理の際のブートローダ３００の書き換え処理（図３４、図３５のステップＳ２４０参照）の前後で、制御ツール２００が緊急時ＯＳ１００Ｂを、ＳＳＤ２と異なる外部記憶装置２０（図８参照）からＳＳＤ２のＮＡＮＤメモリ１６の領域１６Ｅにインストールする。ユーザが不用意に、ＳＳＤ２の緊急時ＯＳが格納された領域１６Ｅを書き換えることで緊急時ＯＳ用データが破壊されることを防止する観点、領域１６Ｅの確保によりＳＳＤ２の空き領域が減少することを防止する観点では、第２の実施形態を採用することが望ましい。
【０１６８】
また、制御ツール２００は、例えば、図９に示したように、ブートローダ３００の書き換え前後で、ＷＥＢサーバ２１から緊急時ＯＳ１００Ｂのデータまたはインストールプログラムをダウンロードし、ダウンロードデータをもとにＳＳＤ２のＮＡＮＤメモリ１６の領域１６Ｅに緊急時ＯＳ１００Ｂをインストールする。または、制御ツール２００は緊急時ＯＳのデータまたはインストールプログラムを格納しているＷＥＢサーバのアドレスをディスプレイ９を通じてユーザに表示するようにしてもよい。
【０１６９】
あるいは、図１０や図１１に示したように、制御ツール２００は、ブートローダ３００の書き換え前後で、外部記憶媒体（ＤＶＤ−ＲＯＭのような光学メディア、ＵＳＢメモリ、ＳＤカード、ＳＳＤなど）２３、２４から緊急時ＯＳ１００ＢをＳＳＤ２のＮＡＮＤメモリ１６の領域１６Ｅにインストールするようにしてもよい。あるいは、制御ツール２００は、ブートローダ３００の書き換え前後で、緊急時ＯＳ１００Ｂのインストールプログラムが格納された外部記憶媒体（ＤＶＤ−ＲＯＭのような光学メディア、ＵＳＢメモリ、ＳＤカード、ＳＳＤなど）をセットするように、ディスプレイ９を通じてユーザにメッセージを表示するようにしてもよい。
【０１７０】
ＮＡＮＤメモリ１６への緊急時ＯＳ１００Ｂのインストール時、ＮＡＮＤメモリ１６への書き込みが発生するので、ＮＡＮＤメモリ１６の信頼性劣化やデータ破壊を防止する観点では、緊急時ＯＳのデータ量はＮＡＮＤメモリ１６の容量に対して大幅に小さいことが望ましい。
【０１７１】
（第３の実施形態）
第３の実施形態では、通常時ＯＳ１００Ａおよび緊急時ＯＳ１００ＢがＳＳＤ２とは別の不揮発性記憶装置２０に格納されている場合の寿命到達時処理について説明する。図８に示したように、通常時ＯＳ１００Ａおよび緊急時ＯＳ１００ＢがＳＳＤ２とは別の不揮発性記憶装置２０に格納されてＳＳＤ２に格納されていない場合や、どちらか一方がＳＳＤ２に格納されていてもう一方が不揮発性記憶装置２０に格納されている場合にも本発明は適用可能である。その場合、制御ツール２００はＳＳＤ２のブートローダだけでなく、不揮発性記憶装置２０のブートローダに対しても書き換えを行う必要がある場合がある。
【０１７２】
通常時ＯＳ１００Ａおよび緊急時ＯＳ１００ＢがＳＳＤ２とは別の不揮発性記憶装置２０に格納されている場合、制御ツール２００は不揮発性記憶装置２０の記憶されているブートローダ３００の書き換えを行い、ＳＳＤ２のブートローダの書き換えは行わない。
【０１７３】
通常時ＯＳ１００ＡがＳＳＤ２に格納されており、緊急時ＯＳ１００Ｂが不揮発性記憶装置２０に格納されている場合は、制御ツール２００は、ＳＳＤ２と不揮発性記憶装置２０の両方のブートローダの書き換えを行うことが望ましい。不揮発性記憶装置２０がホスト装置３から取り外されている状態でコンピュータシステム１が起動された場合、ＳＳＤ２への書き込みアクセスが不用意に発生することを防止する観点では、通常時ＯＳが起動しないようブートローダが構成されることが望ましい。
【０１７４】
緊急時ＯＳ１００ＢがＳＳＤ２に格納されており、通常時ＯＳ１００Ａが不揮発性記憶装置２０に格納されている場合は、ＳＳＤ２と不揮発性記憶装置２０の両方のブートローダの書き換えを行うことが望ましいが、不揮発性記憶装置２０のブートローダを書き換えるだけでもよい。この場合は、不揮発性記憶装置２０がホスト装置３から取り外されている状態でコンピュータシステム１が起動された場合においても、ＳＳＤ２のブートローダ３００の読み出しを行ってＳＳＤ２のＮＡＮＤメモリ１６の領域１６Ｅから緊急時ＯＳを起動することができる。
【０１７５】
（第４の実施形態）
第４の実施形態では、通常時ＯＳ１００ＡがＳＳＤ２にインストールされているが、緊急時ＯＳがＳＳＤ２にインストールされていない場合について説明する。信頼性が劣化したＳＳＤ２へのアクセスを極力抑制する観点では、緊急時ＯＳ１００Ｂの起動はＳＳＤ２とは別の記憶装置から行うことが望ましい。本実施形態の制御ツール２００は、寿命到達時処理の際に、緊急時ＯＳをインストールした緊急時起動用の起動ディスクを作成する機能を有している。
【０１７６】
緊急時起動用の起動ディスクとしては、ＵＳＢメモリ、ＳＤカード、ＣＤ・ＤＶＤなどの光学メディア、ＳＳＤ、ハードディスクドライブなど、種々の不揮発性記憶装置を採用することができる。本実施形態ではこの中で、緊急時起動用の起動ディスクとしてＵＳＢメモリを採用した場合について説明する。
【０１７７】
緊急時起動用の起動ディスクを作成するための緊急時ＯＳデータを含むデータ（イメージデータ）は、たとえばＳＳＤ２や、その他ＳＳＤや、ＵＳＢメモリや、ＳＤカードや、ＤＶＤ−ＲＯＭドライブなど光学メディアや、ＷＥＢサーバの記憶媒体などに記憶しておけばよい。本実施形態では、緊急時ＯＳインストール用のイメージデータが格納される記憶媒体としてＳＳＤ２を採用した場合について紹介する。つまり、信頼性劣化したＳＳＤ２そのものに、インストール元イメージデータが格納されている。
【０１７８】
緊急時ＯＳのインストール時には、ＳＳＤ２からイメージデータの読み出しが発生するが、いったんインストールを行えば、同イメージデータを読み出すことはなくなる。また、ＳＳＤ２が寿命に到達するより以前の段階から、緊急時起動用の起動ディスクをユーザが任意に作成できる機能を制御ツール２００が持っていることが望ましい。
【０１７９】
図４４に緊急時起動用ディスクを作成する時のデータの移動の概念図を示す。また、図４５に、緊急時起動用ディスクを作成する際の制御ツール２００の動作手順を示す。制御ツール２００は、寿命到達時処理開始時、ホスト装置３のＵＳＢコントローラ１３にＵＳＢメモリが接続されているかどうかを確認し、接続されていない場合は、「緊急時ＯＳ起動用ＵＳＢメモリを作成します。ＵＳＢメモリを接続してください。」という旨のメッセージを、ディスプレイ９を介してユーザに表示することが望ましい。
【０１８０】
図４４に示すように、ＵＳＢメモリ２４が接続されている場合、制御ツール２００は、ＳＳＤ２のＮＡＮＤメモリ１６の領域１６Ｑに記憶されているインストールイメージデータ４００から緊急時ＯＳデータを抽出し（緊急時ＯＳデータが圧縮・暗号化されている場合はこれを復号化する）、ＵＳＢメモリ２４の領域２４Ｒにコピー（インストール）する（ステップＳ２８０）。つぎに、制御ツール２００は、ＵＳＢメモリ２４に記憶されているブートローダ３１０が読み込まれた場合にＵＳＢメモリ２４にインストールされた緊急時ＯＳ１００Ｂが読み出されるべく、緊急時ＯＳ１００Ｂの記憶領域２４Ｒを参照するようブートローダ３１０を書き換える（ステップＳ２８１）。具体的には、制御ツール２００は、たとえば、ブートローダ３１０のＯＳポインタ情報ＯＳＰＴ３１１に記憶領域２４Ｒに対応するＬＢＡを書き込む。
【０１８１】
ホスト装置３にＵＳＢメモリ２４とＳＳＤ２の両方が接続されている場合、ＵＳＢメモリ２４のブートローダ３１０が優先して起動されるよう、ブートローダ３１０とブートローダ３１０が書き換えられたり、ＢＩＯＳ−ＲＯＭ１１の設定が変更されることが望ましい（ステップＳ２８２）。なお、ステップＳ２８２を実行しなくてもよい。
【０１８２】
ホスト装置３にＵＳＢメモリ２４が接続されていない場合に、ＳＳＤ２から通常時ＯＳ１００Ａが起動してしまいＳＳＤ２に不用意に書き込みアクセスが発生することを防止する観点では、ステップＳ２８２において、ＳＳＤ２から通常時ＯＳ１００Ａが起動しないようＳＳＤ２のブートローダ３００を書き換えることが望ましい。たとえば、ブートローダ３００のＯＳポインタ情報ＯＳＰＴ３０１に通常時ＯＳ１００Ａの記憶領域１６Ｄ以外のＬＢＡを書き込んだりあるいは無効なＬＢＡを書き込むことにより、ＳＳＤ２のブートローダ３００が読み出されても通常時ＯＳ１００Ａがロードされることを防止することができる。あるいは、通常時ＯＳ１００Ａのデータを書き換えてしまってもよい。
【０１８３】
このようにして、ＳＳＤ２が寿命に到達した場合やＳＳＤ２が異常な状態になった場合に、ＳＳＤ２の信頼性悪化やＳＳＤ２のデータ破壊を抑制しながらＳＳＤ２のデータを読み出したりＳＳＤ２のデータを他の不揮発性記憶装置にバックアップすることが可能なＯＳを立ち上げるための起動ディスクを作成することができる。
【０１８４】
また、図４６に示すように、緊急時ＯＳ１００ＢとしてＭＳ−ＤＯＳ（商標）やＬｉｎｕｘ（商標）やＷｉｎｄｏｗｓ（登録商標）  ＰＥ（商標）などのＯＳを採用し、緊急時ＯＳをＵＳＢメモリ２４にインストールするのと同時に、ＳＳＤ２のデータをバックアップする機能を有する緊急時ツール２１０をＵＳＢメモリ２４の領域２４Ｓにインストールし、緊急時ツール２１０を緊急時ＯＳ１００Ｂから実行できるようにしてもよい。緊急時ツール２１０は第１の実施形態で説明したものと同様のバックアップ機能を有することが望ましい。
【０１８５】
図４７は、ホスト装置３の起動時の動作を示すものである。ホスト装置３の起動時、ＵＳＢメモリ２４から緊急時ＯＳ１００Ｂが読み出され、主メモリ６に書き込まれることで、緊急時ＯＳ１００ＢがＵＳＢメモリ２４から起動される（ステップＳ２９０）。つぎに、ＵＳＢメモリ２４から緊急時ツール２１０が読み出され、主メモリ６に書き込まれることで、緊急時ツール２１０がＵＳＢメモリ２４から起動される（ステップＳ２９１）。緊急時ツール２１０が緊急時ＯＳ１００Ｂのスタートアップに登録されるなどして、緊急時ＯＳ１００Ｂの起動後に自動的に緊急時ツール２１０が起動されることが望ましい。
【０１８６】
緊急時ＯＳ１００Ｂは、図４８に示すように、ディスプレイ９を介して、ユーザが選択可能なメニュー項目の一つとしてバックアップメニューを表示したり、「バックアップするか？」というメッセージとＯＫボタンを表示したり、または「バックアップするか？」というメッセージを表示してキーボード１４の入力待機状態にしたりすることで、ユーザが任意にバックアップ機能を起動可能状態にすることが望ましい（ステップＳ２９２）。なお、緊急時ＯＳ１００Ｂは、バックアップを自動的に開始してもよい。
【０１８７】
キーボード１４やマウス１５により、バックアップ機能起動が選択されると（ステップＳ２９３）、緊急時ツール２１０が起動する。緊急時ツール２１０はＳＳＤ２のデータをバックアップ用記憶装置１５０にコピーする（ステップＳ２９３）。バックアップの方式は、第１の実施形態で説明したものと同様の方式を採用してもよく、例えばＬＢＡ単位バックアップやファイル単位バックアップを採用してもよい。
【０１８８】
（第５の実施形態）
上述の実施形態によって、ＳＳＤ２の信頼性劣化やＳＳＤ２のデータ破壊を抑制したうえで、ユーザがユーザデータを容易にＳＳＤ２から読み出したり、他の記憶装置にバックアップしたりすることを実現した。第５の実施形態では、さらにＳＳＤ２の信頼性劣化を抑制する方法を提供する。ＳＳＤ２では、経年劣化やリードディスターブの影響によるデータの破損を修復するために、バックグラウンドでリフレッシュ処理を行う機能を搭載する場合がある。この機能では、ＮＡＮＤメモリ１６のブロックを定期的に読み出し、データの誤り数が多いブロックのデータを別のブロックに書き込む処理を行う。これにより、経年劣化やリードディスターブの影響を低減することが可能になるが、一方で、余分なブロックの消去・書き込みが発生してしまうため、ＳＳＤ２の信頼性劣化が早まるという問題もある。
【０１８９】
本実施形態では、制御ツール２００あるいは緊急時ＯＳ１００Ｂが、リフレッシュ制御コマンド（ACS-2に記述されているSCT Command Transportやその他ベンダー独自のコマンドやその他コマンド）を用いて、リフレッシュの実施を停止するようＳＳＤＣ４１に命令する。ＳＳＤＣ４１はリフレッシュ制御コマンドをうけて、リフレッシュ処理を停止したり、リフレッシュの実行間隔（たとえば１分）を長く設定したりする（たとえば２分）。ＳＳＤＣ４１にリフレッシュ実行間隔を長く設定させる場合は、リフレッシュ制御コマンド内でリフレッシュ実行間隔を明示的に指定することが望ましい。
【０１９０】
図４９は、制御ツール２００がリフレッシュ制御コマンドを発行する際の動作を示すものである。この場合、制御ツール２００は、図２９のステップＳ２０５に示した寿命到達時処理の際に、リフレッシュ制御コマンドを発行すればよい。制御ツール２００は、図３４で説明したブートローダ３００の書き換えを行い（ステップＳ３００）、この後、リフレッシュ制御コマンドをＳＳＤ２に対して送信する（ステップＳ３０１）。
【０１９１】
図５０は、緊急時ＯＳ１００Ｂがリフレッシュ制御コマンドを発行する際の動作を示すものである。この場合、ＣＰＵ４は、システム起動時、図３７で説明したように、ＳＳＤ２のＮＡＮＤメモリ１６からＯＳポインタ情報ＯＳＰＴを含むブートローダ３００を読み出し（ステップＳ３１０）、ＯＳポインタ情報ＯＳＰＴが示すＬＢＡを特定する。そして、ＣＰＵ４は、特定したＬＢＡに対する読み出し命令をＳＳＤ２へ送信することで、ＯＳポインタ情報ＯＳＰＴが指定するＯＳをＳＳＤ２から読み出す。ＯＳポインタ情報ＯＳＰＴが示すＬＢＡが通常時ＯＳ１００Ａの記憶領域である領域１６Ｄを指定しているときには（ステップＳ３１１：Ｙｅｓ）、通常時ＯＡ１００Ａが領域１６Ｄから読み出されて主メモリ６上の領域６Ａに書き込まれ（ステップＳ３１２）、ＯＳポインタ情報ＯＳＰＴが示すＬＢＡが緊急時ＯＳ１００Ｂの記憶領域である領域１６Ｅを指定しているときには（ステップＳ３１１：Ｎｏ）、緊急時ＯＡ１００Ｂが領域１６Ｅから読み出されて主メモリ６上の領域６Ａに書き込まれる（ステップＳ３１３）。緊急時ＯＡ１００Ｂが起動された場合、緊急時ＯＡ１００Ｂは、リフレッシュ制御コマンドをＳＳＤ２に対して送信する（ステップＳ３１４）。
【０１９２】
このように、第５の実施形態では、制御ツールは、寿命到達時処理の際に、リフレッシュ処理などのＳＳＤ２でのバックグラウンドでの書き込み処理を禁止方向に制御するようにしたので、ＳＳＤの信頼性劣化を抑制することが可能となる。
【０１９３】
（第６の実施形態）
第１の実施形態においては、制御ツール２００は図２９に示したように定期的に統計情報を取得して、ＳＳＤ２が寿命に到達したとき、あるいはＳＳＤ２が寿命に到達する直前に寿命到達時処理を行った。制御ツール２００は取得した統計情報をもとにＳＳＤ２の寿命を予測してディスプレイ９を通してユーザに通知するようにしてもよく、以下これに関して説明する。
【０１９４】
制御ツール２００は、図２９に示した処理手順に従って定期的に統計情報を取得する際に、取得したデータをたとえば図５１に示したような形式で、統計情報の時系列データを主メモリ６に追記していく。統計情報時系列データは、たとえばＳＳＤ２のような不揮発性記憶装置に定期的にバックアップしてもよい。また、統計情報時系列データは最新のデータが追記されるごとに古いデータを消去していってもよい。
【０１９５】
また、制御ツール２００は主メモリ６の統計情報時系列データを、例えば、図５２に示すような表示形式で、ディスプレイ９を介してユーザにグラフ表示してもよい。
【０１９６】
本実施形態では、この統計情報時系列データをもとにＳＳＤ２の寿命予測を行う。制御ツール２００は、図５３に示すように、あるAttribute IDのAttribute Valueを変数Ｙとし、時刻を変数Ｘとし、現在時刻からある所定の時間Ｔだけ前の時点の時刻Ａから、現在時刻である時刻Ｃまでの期間の、（Ｘ，Ｙ）の全データを用いてフィッティング関数Ｙ＝ｆ（Ｘ）を求める。すなわち、ｆを用いて、ＸからＹの予測値＝ｆ（Ｘ）)が得られることになる）。ｆの導き方は様々な方法が存在するが、たとえばパラメータａとパラメータｂを用いてｆ（Ｘ）＝ａＸ＋ｂとし、時刻Ａから時刻Ｃまでの（Ｘ，Ｙ）の全データに対して最小二乗法を用いてａとｂを求めることでｆを決定してもよい。
【０１９７】
そして、f（Ｘ）の逆関数であるｆ−１（Ｙ）を求める。f（Ｘ）＝ａＸ＋ｂの場合はｆ−１（Ｙ）＝（Ｙ・ｂ）／ａをもとめる。ＳＳＤ２の予測寿命到達時刻はｆ−１（Ｙ＝Threshold）となる。なお、時刻Ａから時刻Ｃまでの（Ｘ，Ｙ）の全データに対して、フィッティング関数Ｘ＝ｇ（Ｙ）を求めて、ＳＳＤ２の予測寿命到達時刻をｇ（Ｙ＝Threshold）としてもよい。また、ｆ（Ｘ）やｇ（Ｙ）は、２次関数など１次関数以外の関数にフィッティングしてもよい。
【０１９８】
本実施形態では、S.M.A.R.TのAttribute Value(=Y)とThresholdを用いて寿命を予測したが、生データであるRaw ValueをＹとして用いてｆ（Ｘ）やｇ（Ｙ）を求め、予想寿命到達時刻をｆ−１（Ｙ＝ＲＭＡＸ)またはｇ（Ｙ=ＲＭＡＸ）、あるいはｆ−１（Ｙ＝ＲＭＩＮ)またはｇ（Ｙ=ＲＭＩＮ）としてもよい。また、SMART情報以外の手段を用いて得られた統計情報により寿命予測してもよい。
【０１９９】
制御ツール２００は、このようにして得られた予測寿命到達時刻をディスプレイ９を通してユーザに通知する。通知方法としては、たとえば「予測寿命到達時刻：１９９９年０９月０９日」というふうにテキスト表示してもよいし、図５４に示すように、「ＳＳＤの寿命が残り３０日を切っています。早急にＳＳＤのデータをバックアップし、新しいＳＳＤに買い替えてください。」のような警告画面を表示してもよい。あるいは、ＳＳＤの残り寿命が所定日数をきると、制御ツール２００のアイコンの色を変えたりするなどして、ディスプレイ上に表示されるアイコンの色を変えてもよい。
【０２００】
（第７の実施形態）
第１の実施形態においては、図３８に示したように、通常時ＯＳ１００Ａおよび緊急時ＯＳ１００ＢがＳＳＤ２のＮＡＮＤメモリ１６に格納されている場合に、ＳＳＤ２のデータをバックアップ用記憶装置１５０にバックアップする機能について説明した。制御ツール２００は寿命到達時処理（図２９のステップＳ２０５）として、ブートローダ３００を書き換え、（図３４のステップＳ２３０）、バックアップ機能として、例えば前述したＬＢＡ単位バックアップを採用する場合、ＳＳＤ２をその後ホスト装置３から切り離して、バックアップ用記憶装置１５０をホスト装置３に接続した状態で、コンピュータシステム１をパワーＯＮした場合に通常時ＯＳ１００Ａが正常に起動されるようにするためには、バックアップ用記憶装置１５０にバックアップ処理によってコピーされたブートローダを、寿命到達時処理以前のＳＳＤ２のブートローダ３００の状態に復元することが望ましい。本実施形態では、バックアップ用記憶装置１５０のブートローダをバックアップ動作時に書き換える方法について説明する。
【０２０１】
図５５に、バックアップ動作前後におけるコンピュータシステム１とバックアップ用記憶装置１５０の機能構成を示す。ＳＳＤ２のＮＡＮＤメモリ１６の復元用ブートローダ領域１６Ｖには、ブートローダ３００を制御ツール２００による書き換え前の状態に戻すためのブートローダ復元情報３５０が記憶されている。領域１６Ｖは、寿命到達時処理時に制御ツール２００によって割り当てられてもよいし、制御ツール２００の起動時に割り当てられてもよいし、制御ツール２００がＳＳＤ２にインストールされるときに割り当てられてもよい。割り当てられた領域１６Ｖには、ＳＳＤ２の管理情報４５（図１８参照）によりＬＢＡが割り当てられている。
【０２０２】
図５６に、本実施形態における寿命到達時処理の動作手順を示す。寿命到達時処理においては、バックアップ用記憶装置１５０はホスト装置３に接続されていなくてもよい。制御ツール２００は、寿命到達時処理の際に、すなわちブートローダ３００の書き換え前に、ブートローダ３００のバックアップ情報、すなわちブートローダ復元情報３５０を復元用ブートローダ領域１６Ｖに書き込む（ステップＳ３２０）。領域１６Ｖに書き込む情報としては、たとえば領域１６Ｃに記憶されているブートローダ３００のデータ（イメージ）をそのままコピーしてもよいし、ブートローダの書き換え差分情報を記録してもよい。
【０２０３】
領域１６Ｖに差分情報を記録する場合は、差分情報としてたとえば図５７に示すような、書き換え前のデータと書き換わったＬＢＡとの対応関係が記録されている書き換え差分ログを採用してもよい。書き換え差分ログを採用する場合、制御ツール２００は、領域１６Ｃに記憶されているブートローダ３００のうち書き換えをおこなったＬＢＡを書き換え差分ログの「書き換わったＬＢＡ」に書き込み、同ＬＢＡの書き換え前のデータを書き換え差分ログの「書き換え前のデータ」に書き込む。たとえば、ＬＢＡの最小単位である論理セクタが５１２バイトである場合は、書き換え差分ログの「書き換え前のデータ」の１要素は５１２バイトのデータであってもよいし、書き換え前のデータを圧縮したり、あるいは可逆変換した５１２バイト以外のデータであってもよい。書き換え差分ログを用いてブートローダ３００を新ブートローダから旧ブートローダに復元する場合は、領域１６Ｃに対し、書き換え差分ログの「書き換わったＬＢＡ」が示すＬＢＡに対し、「書き換え前のデータ」を書き込むことで、旧ブートローダに復元することができる。
【０２０４】
その後、制御ツール２００は、ブートローダ３００を書き換え、第１の実施形態で説明したのと同様に、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂが主メモリ６に読み出されるようにする（ステップＳ３２１）。
【０２０５】
後述するバックアップ動作時に、復元用ブートローダ領域１６Ｖの検索を容易にするために、制御ツール２００は、ブートローダ領域１６Ｃに、復元用ブートローダ領域１６Ｖの先頭ＬＢＡを書き込んでおくことが望ましい（ステップＳ３２２）。ブートローダ領域１６Ｃに復元用ブートローダ領域１６Ｖの先頭ＬＢＡを書き込んでおくことは必ずしも必要ではなく、領域１６Ｖの先頭に特定データパターンを書き込んでおき、後述するバックアップ時にこの特定データパターンを検索することで領域１６Ｖを特定してもよいし、領域１６Ｖをあらかじめ定められた特定ＬＢＡに固定的に対応付けすることにしておいて、後述するバックアップ時に前記特定ＬＢＡにアクセスすることで領域１６Ｖを特定してもよいし、その他方法で領域１６Ｖを特定してもよい。
【０２０６】
ステップＳ３２１以降、第１の実施形態と同様に、コンピュータシステム１の再起動を行ってもよいし、第５の実施形態と同様にＳＳＤ２のリフレッシュ制御コマンドを送信してもよい。また、復元用ブートローダ領域１６ＶはＳＳＤ２以外の記憶装置に確保してもよい。
【０２０７】
図５８は、緊急時ＯＳ１００Ｂによるバックアップ動作を示すものである。バックアップ時、バックアップ用記憶装置１５０がホスト装置３に接続されていない場合は、ユーザはバックアップ用記憶装置１５０をホスト装置３に接続する。その際、制御ツール２００は、ユーザに「バックアップ装置を接続してください」というメッセージをディスプレイ９に表示してもよい。
【０２０８】
ＮＡＮＤメモリ１６の領域１６Ｅから主メモリ６の領域６Ａにロードされた緊急時ＯＳは、第１の実施形態と同様にして、ＳＳＤ２のデータをバックアップ用記憶装置１５０にコピーする（ステップＳ３３０）。たとえば、バックアップ方法として、ＬＢＡ単位バックアップを採用してかつＳＳＤ２の全ＬＢＡ領域をバックアップ用記憶装置１５０にコピーする場合、領域１６Ｄに記憶されている通常時ＯＳ１００Ａは、バックアップ用記憶装置１５０の領域１５０Ｄにコピーされ、領域１６Ｕに記憶されているその他ユーザデータは、領域１５０Ｕにコピーされる。ブートローダ領域１６Ｃに記憶されているブートローダ３００は、バックアップ用記憶装置１５０の領域１００Ｃにコピーしてもよいし、コピーしなくてもよい。領域１６Ｅに記憶されている緊急時ＯＳ１００Ｂは、バックアップ用記憶装置１５０の領域１５０Ｅにコピーしてもよいし、コピーしなくてもよい。また、復元用ブートローダ領域１６Ｖに記憶されているブートローダ復元情報３５０は、バックアップ用記憶装置１５０にコピーしなくてもよい。
【０２０９】
緊急時ＯＳ１００Ｂは、ブートローダ復元情報３５０とブートローダ３００のデータをもとに、バックアップ用記憶装置１５０に記憶するブートローダ３２０を作成し、作成したブートローダ３２０をバックアップ用記憶装置１５０の領域１５０Ｃに書き込むことで、次回以降にコンピュータシステム１の起動時にブートローダ３２０がロードされた場合は、通常時ＯＳ１００Ａが主メモリ６の領域６Ａにロードされるようにする（ステップＳ３３１）。
【０２１０】
図５６のステップＳ３２０でのブートローダのバックアップ処理において、領域１６Ｃに記憶されているブートローダ３００のデータ（イメージ）を、そのまま復元用ブートローダ領域１６Ｖにコピーした場合は、図５８のステップＳ３３１において、復元用ブートローダ領域１６Ｖのブートローダ復元情報３５０をそのままバックアップ用記憶装置１５０の領域１５０Ｃにコピーしてもよい。
【０２１１】
また、図５６のステップＳ３２０でのブートローダのバックアップ処理において、復元用ブートローダ領域１６Ｖにブートローダ領域１６Ｃの書き換え差分情報が記録された場合は、すなわちブートローダ領域１６Ｃが旧ブートローダデータから新ブートローダデータに書き換えられる時の新・旧ブートローダデータ書き換えの差分情報が復元用ブートローダ領域１６Ｖに記録された場合は、緊急時ＯＳ１００Ｂは、図５８のステップＳ３３１において、ブートローダ領域１６Ｃのデータ（新ブートローダデータ）と、復元用ブートローダ領域１６Ｖに記憶されている差分データであるブートローダ復元情報３５０を主メモリ６に読み出し、ブートローダ復元情報３５０をもとに新ブートローダデータを旧ブートローダデータに復元し、復元した旧ブートローダデータをバックアップ用記憶装置１５０の領域１５０Ｃに書き込む。
【０２１２】
上記のバックアップ処理を行った後、ＩＦ０からＳＳＤ２を取り外すことで寿命に到達したＳＳＤ２をホスト装置３から切り離し、かつＩＦ１にバックアップ用記憶装置１５０を接続することでバックアップ用記憶装置１５０をホスト装置３に接続した状態で、コンピュータシステム１を起動すると、ホスト装置３はバックアップ用記憶装置１５０のブートローダ３２０を読み出し、ブートローダ３２０の情報によりホスト装置３は、バックアップ用記憶装置１５０の領域１５０Ｄを主メモリ６の領域６Ａにロードすることで、通常時ＯＳが起動される。バックアップ用記憶装置１５０がインタフェースＩＦ０に対応している場合は、バックアップ用記憶装置１５０をＳＳＤ２と交換し、バックアップ用記憶装置１５０をインタフェースＩＦ０と接続してもよい。バックアップ用記憶装置１５０がインタフェースＩＦ０に対応してない場合は、バックアップ用記憶装置１５０をＳＳＤ２と交換し、バックアップ用記憶装置１５０をインタフェース変換装置を経由してインタフェースＩＦ０と接続してもよい。
【０２１３】
このようにして、ＳＳＤ２が寿命に到達した場合であっても、コンピュータシステム１はＳＳＤ２に保存されたユーザデータや通常時ＯＳをバックアップ用記憶装置に復元することができ、ユーザは、余分な設定や通常時ＯＳの再インストールを行うことなく、ＳＳＤ２をバックアップ用記憶装置１５０に置き換え、ＳＳＤ２のかわりにバックアップ用記憶装置１５０をシステムドライブとして使用することができる。
【０２１４】
（第８の実施形態）
本実施形態では、ＳＳＤ２が異常状態（寿命到達状態）から通常状態（健康状態）に戻ったときに、ＳＳＤ２を接続したホスト装置を起動した場合、緊急時ＯＳではなく通常時ＯＳが起動されるようにする。
【０２１５】
統計情報として、例えば、現在温度Ｘ２０、最高温度Ｘ２１のように、その数値が大きいほど信頼性が悪くなることを示し、信頼性に悪影響のある数値まで増大してもその後再び正常な値にまで回復することのできる特性を有するパラメータを採用する場合、それらの統計情報に対しては、ＲＭＡＸとして例えばＲＭＡＸ＝８５℃を採用し、
統計情報の値＞ＲＭＡＸ
または
統計情報の値≧ＲＭＡＸ
のような動作保証外の温度になる条件が成立した時、制御ツール２００はブートローダ３００を書き換えることで、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂが主メモリ６に読み出されるようにする。
【０２１６】
緊急時ＯＳ１００Ｂは、起動後、統計情報の値を監視し、
統計情報の値≦ＲＭＡＸ−ＭＡＸマージン
または
統計情報の値＜ＲＭＡＸ−ＭＡＸマージン
となって当該統計情報が再び正常値にもどったとき、ブートローダ３００を書き換えることで、次回以降コンピュータシステム１が起動されたときには、緊急時ＯＳ１００Ｂではなく通常時ＯＳ１００Ａが主メモリ６に読み出されるようにする、ブートローダ復元処理を実行する。
【０２１７】
ＭＡＸマージンはゼロ以上の値であるが、ブートローダ３００の書き換えが頻繁に発生することを防止するために、ＭＡＸマージンはゼロより大きい値とすることが望ましい。統計情報が現在温度や最高温度である場合、たとえばＭＡＸマージン＝５℃とする。統計情報の取得および条件判断に、ＳＭＡＲＴ情報を用いる場合、Attribute ValueとThresholdを用いてもよいし、Ｒａｗ  ＶａｌｕｅとＲＭＡＸを用いてもよい。また、通常時ＯＳ起動中に統計情報が異常状態から正常状態に戻った場合は、上記ブートローダ復元処理を制御ツール２００が行うようにしてもよい。
【０２１８】
統計情報として、現在温度Ｘ２０、最低温度Ｘ２２のように、その数値が小さいほど信頼性が悪くなることを示し、信頼性に悪影響のある数値まで減少してもその後再び正常な値にまで回復することのできる特性を有するパラメータを採用する場合、ＲＭＩＮとしてＲＭＩＮ＝−１０℃を採用し、
統計情報の値＜ＲＭＩＮ
または
統計情報の値≦ＲＭＩＮ
のようなたとえば動作保証外の温度になる条件が成立した時、制御ツール２００はブートローダ３００を書き換えることで、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂが主メモリに読み出されるようにする。
【０２１９】
緊急時ＯＳ１００Ｂは、起動後、統計情報の値を監視し、
統計情報の値≧ＲＭＩＮ＋ＭＩＮマージン
または
統計情報の値＞ＲＭＩＮ＋ＭＩＮマージン
となって当該統計情報が再び正常値にもどったとき、ブートローダ３００を書き換えることで、次回以降コンピュータシステム１が起動されたときには、緊急時ＯＳ１００Ｂではなく通常時ＯＳ１００Ａが主メモリ６に読み出されるようにする、ブートローダ復元処理を実行する。
【０２２０】
ＭＩＮマージンはゼロ以上の値であるが、ブートローダ３００の書き換えが頻繁に発生することを防止するために、ＭＩＮマージンはゼロより大きい値とすることが望ましい。当該統計情報が現在温度や最低温度である場合、たとえば、ＭＩＮマージン＝５℃とする。統計情報の取得および条件判断に、ＳＭＡＲＴ情報を用いる場合、Attribute ValueとThresholdを用いてもよいし、Ｒａｗ  ＶａｌｕｅとＲＭＩＮを用いてもよい。
【０２２１】
つぎに、寿命到達時処理における制御ツール２００の動作の詳細を説明する。異常状態（寿命到達状態）から通常状態（健康状態）に戻ったときには、上記したブートローダ復元処理により、ブートローダ３００は寿命到達時処理で書き換えられる以前のブートローダに復旧されることが望ましい。図５９にブートローダ復元処理前後におけるコンピュータシステム１の機能構成を示す。ＳＳＤ２のＮＡＮＤメモリ１６の復元用ブートローダ領域１６Ｖには、ブートローダ３００を制御ツール２００による書き換え前の状態に戻すためのブートローダ復元情報３５０が記憶されている。領域１６Ｖは、寿命到達時処理時に制御ツール２００によって割り当てられてもよいし、制御ツール２００の起動時に割り当てられてもよいし、制御ツール２００がＳＳＤ２にインストールされるときに割り当てられてもよい。割り当てられた領域１６Ｖには、ＳＳＤ２の管理情報４５（図１８参照）によりＬＢＡが割り当てられている。また、本実施形態の領域１６Ｖは、図５５に示した領域１６Ｖと同じものとしてバックアップ時のブートローダ復元用として使用してもよいし、図５５に示した領域１６Ｖとは異なるものであってもよい。
【０２２２】
寿命到達時処理の手順は、図５６に示したものと同様である。すなわち、制御ツール２００は、寿命到達時処理の際に、ブートローダ３００のバックアップ情報、すなわちブートローダ復元情報３５０を復元用ブートローダ領域１６Ｖに書き込む（ステップＳ３２０）。領域１６Ｖに書き込む情報としては、たとえば領域１６Ｃに記憶されているブートローダ３００のデータ（イメージ）をそのままコピーしてもよいし、ブートローダの書き換え差分情報を記録してもよい。その後、制御ツール２００は、ブートローダ３００を書き換え、次回以降コンピュータシステム１が起動されたときには、通常時ＯＳ１００Ａではなく緊急時ＯＳ１００Ｂが主メモリ６に読み出されるようにする（ステップＳ３２１）。
【０２２３】
さらに、後述するバックアップ動作時に、復元用ブートローダ領域１６Ｖの検索を容易にするために、制御ツール２００は、ブートローダ領域１６Ｃに、復元用ブートローダ領域１６Ｖの先頭ＬＢＡを書き込んでおくことが望ましい（ステップＳ３２２）。ブートローダ領域１６Ｃに復元用ブートローダ領域１６Ｖの先頭ＬＢＡを書き込んでおくことは必ずしも必要ではなく、領域１６Ｖの先頭に特定データパターンを書き込んでおき、後述するバックアップ時にこの特定データパターンを検索することで領域１６Ｖを特定してもよいし、領域１６Ｖをあらかじめ定められた特定ＬＢＡに固定的に対応付けすることにしておいて、後述するバックアップ時に前記特定ＬＢＡにアクセスすることで領域１６Ｖを特定してもよいし、その他方法で領域１６Ｖを特定してもよい。
【０２２４】
ステップＳ３２１以降、第１の実施形態と同様に、コンピュータシステム１の再起動を行ってもよいし、第５の実施形態と同様にＳＳＤ２のリフレッシュ制御コマンドを送信してもよい。また、復元用ブートローダ領域１６ＶはＳＳＤ２以外の記憶装置に確保してもよい。
【０２２５】
図６０は、緊急時ＯＳ１００Ｂによるブートローダ復元処理を示すものである。寿命到達処理後（異常時処理後）、コンピュータシステム１が緊急時ＯＳを用いて起動している時、緊急時ＯＳ１００Ｂは、たとえば前述のSMART READ DATAなどを用いて統計情報を監視し、統計情報が正常値に戻ったかどうかを判定する（ステップＳ３４０）。上述した判断基準に基づき、統計情報が正常値に戻ったとき（ステップＳ３４０：Ｙｅｓ）、緊急時ＯＳ１００Ｂは、復元用ブートローダ領域１６Ｖに記憶されたブートローダ復元情報３５０とブートローダ領域１６Ｃに記憶されたブートローダ３００のデータをもとに、通常時ＯＳ１００Ａが主メモリ６の領域６Ａにロードされるように処理するブートローダを作成し、作成したブートローダをブートローダ領域１６Ｃに書き込む（ステップＳ３４１）。これにより、次回以降コンピュータシステム１の起動時にブートローダ３００がロードされた場合は通常時ＯＳ１００Ａが主メモリ６の領域６Ａにロードされる。
【０２２６】
図５６のステップＳ３２０でのブートローダのバックアップ処理において、領域１６Ｃに記憶されているブートローダ３００のデータ（イメージ）を、そのまま復元用ブートローダ領域１６Ｖにコピーした場合は、図６０のステップＳ３４１において、復元用ブートローダ領域１６Ｖのブートローダ復元情報３５０をそのままバックアップ用記憶装置１５０の領域１５０Ｃにコピーしてもよい。
【０２２７】
また、図５６のステップＳ３２０でのブートローダのバックアップ処理において、復元用ブートローダ領域１６Ｖにブートローダ領域１６Ｃの書き換え差分情報が記録された場合は、すなわちブートローダ領域１６Ｃが旧ブートローダデータから新ブートローダデータに書き換えられる時の新・旧ブートローダデータ書き換えの差分情報が復元用ブートローダ領域１６Ｖに記録された場合は、緊急時ＯＳ１００Ｂは、図６０のステップＳ３４１において、ブートローダ領域１６Ｃのデータ（新ブートローダデータ）と、復元用ブートローダ領域１６Ｖに記憶されている差分データであるブートローダ復元情報３５０を主メモリ６に読み出し、ブートローダ復元情報３５０をもとに新ブートローダデータを旧ブートローダデータに復元し、復元した旧ブートローダデータをバックアップ用記憶装置１５０の領域１５０Ｃに書き込む。
【０２２８】
このように、本実施形態では、図６１に示すように、統計情報が正常状態から異常状態になったときには、異常時ＯＳが起動されるよう動作する異常時到達処理を実行し、統計情報が異常状態から正常状態に戻ったときは、通常時ＯＳが起動されるよう動作するブートローダ復元処理を実行する。
【０２２９】
このようにして、ＳＳＤ２が一時的に異常状態になった場合であっても、ＳＳＤ２が正常状態（健康状態）に戻った後には、コンピュータシステム１は通常時ＯＳを起動するようになり、ユーザは、余分な設定や通常時ＯＳの再インストールを行うことなく、ＳＳＤ２を寿命到達時処理前と同等にＳＳＤ２を扱うことができる。
【０２３０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３１】
１  コンピュータシステム、３  ホスト装置、６  主メモリ、１６  ＮＡＮＤメモリ、２０  不揮発性記憶装置、１００Ａ  通常時ＯＳ、１００Ｂ  緊急時ＯＳ、２００  制御ツール、２１０  緊急時ツール、３００  ブートローダ、３５０  ブートローダ復元情報。
【図１】
2020144910.tif 000003
【図２】
2020144910.tif 000004
【図３】
2020144910.tif 000005
【図４】
2020144910.tif 000006
【図５】
2020144910.tif 000007
【図６】
2020144910.tif 000008
【図７】
2020144910.tif 000009
【図８】
2020144910.tif 000010
【図９】
2020144910.tif 000011
【図１０】
2020144910.tif 000012
【図１１】
2020144910.tif 000013
【図１２】
2020144910.tif 000014
【図１３】
2020144910.tif 000015
【図１４】
2020144910.tif 000016
【図１５】
2020144910.tif 000017
【図１６】
2020144910.tif 000018
【図１７】
2020144910.tif 000019
【図１８】
2020144910.tif 000020
【図１９】
2020144910.tif 000021
【図２０】
2020144910.tif 000022
【図２１】
2020144910.tif 000023
【図２２】
2020144910.tif 000024
【図２３】
2020144910.tif 000025
【図２４】
2020144910.tif 000026
【図２５】
2020144910.tif 000027
【図２６】
2020144910.tif 000028
【図２７】
2020144910.tif 000029
【図２８】
2020144910.tif 000030
【図２９】
2020144910.tif 000031
【図３０】
2020144910.tif 000032
【図３１】
2020144910.tif 000033
【図３２】
2020144910.tif 000034
【図３３】
2020144910.tif 000035
【図３４】
2020144910.tif 000036
【図３５】
2020144910.tif 000037
【図３６】
2020144910.tif 000038
【図３７】
2020144910.tif 000039
【図３８】
2020144910.tif 000040
【図３９】
2020144910.tif 000041
【図４０】
2020144910.tif 000042
【図４１】
2020144910.tif 000043
【図４２】
2020144910.tif 000044
【図４３】
2020144910.tif 000045
【図４４】
2020144910.tif 000046
【図４５】
2020144910.tif 000047
【図４６】
2020144910.tif 000048
【図４７】
2020144910.tif 000049
【図４８】
2020144910.tif 000050
【図４９】
2020144910.tif 000051
【図５０】
2020144910.tif 000052
【図５１】
2020144910.tif 000053
【図５２】
2020144910.tif 000054
【図５３】
2020144910.tif 000055
【図５４】
2020144910.tif 000056
【図５５】
2020144910.tif 000057
【図５６】
2020144910.tif 000058
【図５７】
2020144910.tif 000059
【図５８】
2020144910.tif 000060
【図５９】
2020144910.tif 000061
【図６０】
2020144910.tif 000062
【図６１】
2020144910.tif 000063