(57)【要約】【課題】システムを動作させるためのシステム情報を保全して、システムの動作を正常に行う。【解決手段】エラー検出訂正部は、システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行う。制御部は、検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給する。また、制御部は、検出訂正処理に失敗した場合にはシステム情報のバックアップを第１のメモリとは異なる第２のメモリから読み出して、ホストコンピュータに供給する。【選択図】図３
2015022516.tif 000002
【特許請求の範囲】
【請求項１】
システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶制御装置。
【請求項２】
前記第２のメモリに圧縮されて記憶されている前記システム情報のバックアップを伸張して前記制御部に供給する伸張部をさらに具備する請求項１記載の記憶制御装置。
【請求項３】
前記第２のメモリから読み出された前記システム情報のバックアップの検出訂正処理を行う第２のエラー検出訂正部をさらに具備し、
前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記ホストコンピュータに供給する
請求項１記載の記憶制御装置。
【請求項４】
前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記第１のメモリに記憶させる請求項３記載の記憶制御装置。
【請求項５】
前記制御部は、前記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を前記ホストコンピュータに通知する
請求項３記載の記憶制御装置。
【請求項６】
前記第２のエラー検出訂正部は、前記エラー検出訂正部より高いエラー検出訂正能力を有する請求項３記載の記憶制御装置。
【請求項７】
前記制御部は、前記システム情報の更新が指示された場合には新たに指示されたシステム情報を前記第１および第２のメモリに記憶させる請求項１記載の記憶制御装置。
【請求項８】
前記制御部は、前記検出訂正処理に失敗した場合には前記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して前記システム情報として前記ホストコンピュータに供給する
請求項１記載の記憶制御装置。
【請求項９】
前記制御部は、前記選択されたバックアップを前記システム情報として前記第１のメモリに記憶させる請求項８記載の記憶制御装置。
【請求項１０】
前記第１のメモリに記憶される前記システム情報と前記第２のメモリに記憶される前記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、
前記制御部は、前記対応テーブルに基づいて前記システム情報に対応する前記システム情報のバックアップを前記第２のメモリから読み出す請求項１記載の記憶制御装置。
【請求項１１】
前記第２のメモリに記憶される前記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、
前記制御部は、前記アクセス履歴に基づいて前記システム情報のバックアップの書き直しを前記第２のメモリに指示する
請求項１記載の記憶制御装置。
【請求項１２】
前記制御部は、前記検出訂正処理に失敗した場合に前記システム情報を供給するまでに時間を要する旨を通知する請求項１記載の記憶制御装置。
【請求項１３】
前記制御部は、前記第１のメモリに記憶される前記システム情報と前記第２のメモリに記憶される前記システム情報のバックアップとを比較して両者が一致しているか否かを確認する請求項１記載の記憶制御装置。
【請求項１４】
システムを動作させるためのシステム情報を記憶する第１のメモリと、
前記システム情報のバックアップを記憶する第２のメモリと、
前記システム情報を前記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶装置。
【請求項１５】
前記第１および第２のメモリは不揮発性メモリであり、
前記第１のメモリは、前記第２のメモリよりも読出し処理時間が短い請求項１４記載の記憶装置。
【請求項１６】
ホストコンピュータと、
情報処理システムを動作させるためのシステム情報を記憶する第１のメモリと、
前記システム情報のバックアップを記憶する第２のメモリと、
前記システム情報を前記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報を前記ホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する情報処理システム。
【請求項１７】
システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正手順と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第２のメモリから読み出して前記ホストコンピュータに供給する制御手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、複数種類のメモリを扱う記憶制御装置に関する。詳しくは、システムを動作させるためのシステム情報を複数種類のメモリに記憶する記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
情報処理システムにおいては、システムを起動するために必要な起動情報が予め用意され、起動時にその起動情報を読み出すように構成される。この起動情報は、ディスクや不揮発性メモリのような不揮発性の記録媒体に記憶され、起動時に主記憶上に展開されるのが一般的である。また、システムを動作させるためのシステム情報についても同様である。例えば、ブートプログラムを圧縮して不揮発性メモリに格納しておき、電源投入時にそのブートプログラムを伸張しながらＲＡＭに展開する電子機器が開示されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−０７２９８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、不揮発性メモリに格納された起動情報を起動時に読み出して、主記憶上に展開している。起動情報はシステムの起動のたびに読み出される情報であり、通常のデータに比べて読み出し回数が多くなる。不揮発性メモリにおいては、読出し回数の多いセルほど劣化する場合があり、その場合にはエラー訂正を施しても正常に読み出すことが困難となるおそれがある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、システムを動作させるためのシステム情報を保全して、システムの動作を正常に行うことを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを第２のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する記憶制御装置およびその記憶制御方法である。これにより、システム情報の読出しに失敗した場合にそのバックアップを利用するという作用をもたらす。
【０００７】
また、この第１の側面において、上記第２のメモリに圧縮されて記憶されている上記システム情報のバックアップを伸張して上記制御部に供給する伸張部をさらに具備してもよい。これにより、圧縮されたバックアップを利用して第２のメモリの記憶容量を効率化するという作用をもたらす。
【０００８】
また、この第１の側面において、上記第２のメモリから読み出された上記システム情報のバックアップの検出訂正処理を行う第２のエラー検出訂正部をさらに具備し、上記制御部は、上記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として上記ホストコンピュータに供給するようにしてもよい。これにより、バックアップの保全性を高めるという作用をもたらす。
【０００９】
また、この第１の側面において、上記制御部は、上記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として上記第１のメモリに記憶させてもよい。これにより、検出訂正処理に失敗したシステム情報を修復するという作用をもたらす。
【００１０】
また、この第１の側面において、上記制御部は、上記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を上記ホストコンピュータに通知するようにしてもよい。これにより、例外的処置を促すという作用をもたらす。
【００１１】
また、この第１の側面において、上記第２のエラー検出訂正部は、上記エラー検出訂正部より高いエラー検出訂正能力を有するものであることが望ましい。これにより、バックアップの保全性を高めるという作用をもたらす。
【００１２】
また、この第１の側面において、上記制御部は、上記システム情報の更新が指示された場合には新たに指示されたシステム情報を上記第１および第２のメモリに記憶させてもよい。これにより、システム情報を更新するという作用をもたらす。
【００１３】
また、この第１の側面において、上記制御部は、上記検出訂正処理に失敗した場合には上記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して上記システム情報として上記ホストコンピュータに供給してもよい。これにより、複数のバックアップから任意のものを指定してシステム情報として利用するという作用をもたらす。
【００１４】
また、この第１の側面において、上記制御部は、上記選択されたバックアップを上記システム情報として上記第１のメモリに記憶させてもよい。これにより、複数のバックアップから任意のものを指定してシステム情報として修復するという作用をもたらす。
【００１５】
また、この第１の側面において、上記第１のメモリに記憶される上記システム情報と上記第２のメモリに記憶される上記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、上記制御部は、上記対応テーブルに基づいて上記システム情報に対応する上記システム情報のバックアップを上記第２のメモリから読み出すようにしてもよい。これにより、他方のメモリの対応するアドレスを認識するという作用をもたらす。
【００１６】
また、この第１の側面において、上記第２のメモリに記憶される上記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、上記制御部は、上記アクセス履歴に基づいて上記システム情報のバックアップの書き直しを上記第２のメモリに指示するようにしてもよい。これにより、アクセス履歴に基づいてバックアップのリフレッシュを行うという作用をもたらす。
【００１７】
また、この第１の側面において、上記制御部は、上記検出訂正処理に失敗した場合に上記システム情報を供給するまでに時間を要する旨を通知するようにしてもよい。これにより、ホストコンピュータが起動情報待ち状態からタイムアウトすることを防ぐという作用をもたらす。
【００１８】
また、この第１の側面において、上記制御部は、上記第１のメモリに記憶される上記システム情報と上記第２のメモリに記憶される上記システム情報のバックアップとを比較して両者が一致しているか否かを確認するようにしてもよい。これにより、バックアップの保全性を向上させるという作用をもたらす。
【００１９】
また、本技術の第２の側面は、システムを動作させるためのシステム情報を記憶する第１のメモリと、上記システム情報のバックアップを記憶する第２のメモリと、上記システム情報を上記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを上記第２のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する記憶装置である。これにより、システム情報の読出しに失敗した場合にそのバックアップを供給するという作用をもたらす。
【００２０】
また、この第２の側面において、上記第１および第２のメモリは不揮発性メモリであり、上記第１のメモリは、上記第２のメモリよりも読出し処理時間が短いことが望ましい。これにより、正常動作時のシステム情報の読出しを高速に行うという作用をもたらす。
【００２１】
また、本技術の第３の側面は、ホストコンピュータと、情報処理システムを動作させるためのシステム情報を記憶する第１のメモリと、上記システム情報のバックアップを記憶する第２のメモリと、上記システム情報を上記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報を上記ホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを上記第２のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する情報処理システムである。これにより、システム情報の読出しに失敗した場合にそのバックアップを利用して動作を行うという作用をもたらす。
【発明の効果】
【００２２】
本技術によれば、システムを動作させるためのシステム情報を保全して、システムの動作を正常に行うことができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２３】
【図１】本技術の実施の形態における情報処理システムの構成概要を示す図である。
【図２】本技術の実施の形態における高速不揮発性メモリ４００として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。
【図３】本技術の第１の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図４】本技術の第１の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【図５】本技術の第２の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図６】本技術の第２の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【図７】本技術の第３の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図８】本技術の第３の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【図９】本技術の第４の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図１０】本技術の第４の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【図１１】本技術の第５の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図１２】本技術の第５の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【図１３】本技術の第５の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【図１４】本技術の第６の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【図１５】本技術の第６の実施の形態における高速不揮発性メモリ４００の起動情報更新処理の処理手順の一例を示す流れ図である。
【図１６】本技術の第６の実施の形態における低速不揮発性メモリ３００のバックアップの記憶処理の処理手順の一例を示す流れ図である。
【図１７】本技術の第１の変形例におけるメモリシステムモジュール５００の構成例を示す図である。
【図１８】本技術の第１の変形例におけるメモリシステムモジュール５００の他の構成例を示す図である。
【図１９】本技術の第２の変形例におけるメモリシステムモジュール５００の構成例を示す図である。
【図２０】本技術の第３の変形例におけるメモリシステムモジュール５００の構成例を示す図である。
【発明を実施するための形態】
【００２４】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（起動情報の更新なし、メモリコントローラ主導）
２．第２の実施の形態（起動情報の更新なし、ホストコンピュータ主導）
３．第３の実施の形態（起動情報の更新あり、メモリコントローラ主導）
４．第４の実施の形態（起動情報の更新あり、ホストコンピュータ主導）
５．第５の実施の形態（起動情報の複数バックアップ、メモリコントローラ主導）
６．第６の実施の形態（起動情報の複数バックアップ、ホストコンピュータ主導）
７．変形例
【００２５】
＜１．第１の実施の形態＞
［情報処理システムの概要］
図１は、本技術の実施の形態における情報処理システムの構成概要を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、低速不揮発性メモリ３００と、高速不揮発性メモリ４００とから構成される。メモリコントローラ２００、低速不揮発性メモリ３００および高速不揮発性メモリ４００は、メモリシステムモジュール５００を構成する。
【００２６】
ホストコンピュータ１００は、メモリシステムモジュール５００に対してデータのリード処理やライト処理等を要求するコマンドを発行するものである。
【００２７】
メモリコントローラ２００は、ホストコンピュータ１００と通信してコマンドを受信し、低速不揮発性メモリ３００または高速不揮発性メモリ４００に対するアクセスを行うものである。メモリコントローラ２００は、ライトコマンドを受信した場合、ホストコンピュータ１００から受信したデータを、低速不揮発性メモリ３００または高速不揮発性メモリ４００に書き込むよう指示する。また、メモリコントローラ２００は、リードコマンドを受信した場合、低速不揮発性メモリ３００または高速不揮発性メモリ４００からデータを読み出してホストコンピュータ１００に転送する。
【００２８】
メモリコントローラ２００は、高速不揮発性メモリ４００と低速不揮発性メモリ３００のエラー訂正符号（ＥＣＣ：Error Correction Code）の生成処理を行うとともに、ＥＣＣを用いたエラー検出訂正処理を行う。すなわち、データの書込み時にはそれぞれに対応したパリティを付加して書き込む（以下、符号化と称する場合がある。）。また、データの読出し時にはデータおよびパリティに基づいてエラーの検出訂正を行う（以下、復号と称する場合がある。）。なお、エラー訂正符号（ＥＣＣ）は、情報およびパリティによって構成される。
【００２９】
低速不揮発性メモリ３００および高速不揮発性メモリ４００は、ともに不揮発性のメモリ（ＮＶＭ：Non-Volatile Memory）である。高速不揮発性メモリ４００は、低速不揮発性メモリ３００よりも読出し処理時間が短いという性質を有する。低速不揮発性メモリ３００（以下、低速ＮＶＭと略す場合がある。）としては、例えば、ＮＡＮＤフラッシュメモリを想定する。また、高速不揮発性メモリ４００（以下、高速ＮＶＭと略す場合がある。）としては、例えば、抵抗変化型不揮発性メモリを想定する。なお、高速不揮発性メモリ４００は、特許請求の範囲に記載の第１のメモリの一例である。また、低速不揮発性メモリ３００は、特許請求の範囲に記載の第２のメモリの一例である。なお、以下では、低速不揮発性メモリ３００および高速不揮発性メモリ４００は異なるメモリであるものと想定して説明するが、物理的に同じメモリを２つの領域に分けて低速不揮発性メモリ３００および高速不揮発性メモリ４００として機能させることも可能である。例えば、１つの高速不揮発性メモリにおいて、バックアップに対して圧縮を施してさらに訂正能力の高い誤り訂正符号化を施した場合、ホストコンピュータ１００からはバックアップの方が読出し処理時間が長いようにみえる。したがって、このようなバックアップの領域については低速不揮発性メモリとして取り扱うことが可能である。
【００３０】
本技術の実施の形態においては、高速不揮発性メモリ４００に起動情報を記憶しておいて、システム起動時にこれを読み出してホストコンピュータ１００に供給することを想定する。起動情報は、システムを起動するために必要な情報であり、例えば、起動プログラム、オペレーティングシステム、メインアプリケーションプログラムなどが含まれる。起動情報を高速不揮発性メモリ４００に保持することにより、読出しを速くして、システムの起動を高速化することができる。なお、以下ではシステム起動時に起動情報を読み出す例について説明するが、起動時に読み出される情報だけではなく、システムを動作させるためのシステム情報にも本技術を広く適用することができる。例えば、起動後に高い頻度で用いられるその他のアプリケーションプログラムもシステム情報の一例である。すなわち、特許請求の範囲に記載のシステム情報は起動情報を含む広い概念である。
【００３１】
一方、高速アクセスを要しないデータについては低速不揮発性メモリ３００に保持することによって、高価な高速不揮発性メモリ４００と比較的安価な低速不揮発性メモリ３００とを使い分け、システム構成における性能と価格の最適化を図る。
【００３２】
また、本技術の実施の形態においては、起動情報のバックアップを低速不揮発性メモリ３００に記憶しておく。これにより、高速不揮発性メモリ４００からの起動情報の読出しに失敗した際に、必要な起動情報をホストコンピュータ１００に供給し、システムを正常に起動することができる。
【００３３】
低速不揮発性メモリ３００のアクセスを高速化するために、低速不揮発性メモリ３００に記憶するデータを圧縮して、データサイズを小さくしてもよい。これにより、アクセス領域を削減するとともに、処理を高速化することができる。低速不揮発性メモリ３００の書込みや読出しに要する処理時間は長いため、圧縮または伸張処理による処理時間の増加を考慮しても、低速不揮発性メモリ３００の書込み時間および読出し時間を短縮することができる。
【００３４】
なお、本技術の実施の形態においては、圧縮は可逆圧縮を意味する。可逆圧縮を施す単位は任意である。すなわち、起動情報全体を単位として、まとめて可逆圧縮を施してもよい。また、起動プログラム、オペレーティングシステム、メインアプリケーションプログラムごとに圧縮を施してもよい。また、それぞれの属性に応じてさらに細分化して圧縮を施してもよい。また、高速不揮発性メモリ４００のページサイズ等のアクセス区分を単位として圧縮を施してもよい。
【００３５】
［高速不揮発性メモリの抵抗状態］
図２は、本技術の実施の形態における高速不揮発性メモリ４００として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。抵抗変化型不揮発性メモリは、セット動作により低抵抗状態（ＬＲＳ：Low Resistance State）に遷移し、リセット動作により高抵抗状態（ＨＲＳ：High Resistance State）に遷移する。抵抗変化型不揮発性メモリからデータを読み出す場合、リード閾値で示したリファレンス抵抗値を基準として抵抗状態を判断する。
【００３６】
セット動作とリセット動作ではセルに対して印加される電圧の方向が互いに逆方向となる。読出しの際には、読出し対象となったセルに対してリセット動作と同方向に弱い電圧を印加する。読出し処理は、弱い書込み処理であると考えることができ、読出しによりセルは劣化する。したがって、読出し回数の多いセルは保持特性が悪い傾向になる。
【００３７】
低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、１つのメモリセルによって１ビットを記憶することが可能なメモリが実現される。電圧の印加を止めた後もデータは保持されるため不揮発性メモリとして機能する。以下では、低抵抗状態のセルから読み出されるデータを「１」とし、高抵抗状態から読み出されるデータを「０」とした例について説明するが、これらは何れに対応付けても構わない。
【００３８】
［メモリシステムモジュールの構成］
図３は、本技術の第１の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。なお、この図では煩雑さ回避のために、実施の形態の説明に必要な回路構成と信号線のみを記しているが、システム構成に必要なその他の回路と信号線を備えてもよい。
【００３９】
高速不揮発性メモリ４００は２つの領域を有しており、第１の領域は起動のためのブート領域、第２の領域はその他の領域となっている。ブート領域には製品出荷時に起動情報４１０が記憶されている。ホストコンピュータ１００がメモリシステムモジュール５００に起動情報の読出し指令を発行すると、メモリコントローラ２００の制御回路２１０は、対応テーブルを参照して、ブート領域に記憶された起動情報４１０を読み出す。第２の領域には、起動情報以外の任意のデータを記憶することができる。例えば、高速アクセスが要求されるデータをこの高速不揮発性メモリ４００に記憶してもよい。また、低速不揮発性メモリ３００に記憶されているデータのコピーをキャッシュとして記憶してもよい。低速不揮発性メモリ３００は書込みに比較的長い時間を要するため、書込み中に電源遮断が起きるとデータを損失することがある。そのため、低速不揮発性メモリ３００に書き込む前に、高速不揮発性メモリ４００に一時的にキャッシュとして書き込むことでデータ損失を防ぐことができる。
【００４０】
低速不揮発性メモリ３００は２つの領域を有しており、第１の領域はブート領域として圧縮してバックアップした起動情報を記憶する領域、第２の領域はユーザデータの記憶領域となっている。ブート領域には、製品出荷時に高速不揮発性メモリ４００に記憶した起動情報を圧縮したバックアップ３１０が記憶される。高速不揮発性メモリ４００から起動情報４１０を読み出す際に、起動情報４１０が破損していた場合には、低速不揮発性メモリ３００に記憶されたバックアップ３１０が読み出される。第２の領域にはユーザデータが記憶されるが必要に応じて他のデータを記憶してもよい。
【００４１】
なお、低速不揮発性メモリ３００および高速不揮発性メモリ４００に記憶するデータにはホストコンピュータ１００から転送されるユーザデータの他、低速不揮発性メモリ３００および高速不揮発性メモリ４００の管理情報が含まれる。ここでは、便宜上、管理情報の信号経路を省略している。
【００４２】
この第１の実施の形態において、メモリコントローラ２００は、制御回路２１０と、ＥＣＣ生成部２２１および２２２と、エラー検出訂正部２３１および２３２と、伸張回路２４０と、選択器２５１、２５２および２６０とを備える。
【００４３】
制御回路２１０は、メモリコントローラ２００における各種の動作を制御する回路である。この制御回路２１０は、ホストコンピュータ１００からの指令を解釈する機能を有する。また、この制御回路２１０は、エラー検出訂正部２３１および２３２における検出訂正処理結果に基づいて、低速不揮発性メモリ３００および高速不揮発性メモリ４００に対するアクセス制御を行う。また、この制御回路２１０は、後述する起動情報修復中フラグや起動情報修復成功フラグを通じて、メモリシステムモジュール５００の状態をホストコンピュータ１００に通知する。また、この制御回路２１０は、選択器２５１および２６０に対して選択信号を供給する。
【００４４】
また、この制御回路２１０は、低速不揮発性メモリ３００と高速不揮発性メモリ４００における領域の対応関係を示す対応テーブルを保持し、高速不揮発性メモリ４００のブート領域に対応する低速不揮発性メモリ３００のブート領域を認識する機能を有する。この第１の実施の形態では、高速不揮発性メモリ４００から起動情報４１０の読出しに失敗した場合に、制御回路２１０が低速不揮発性メモリ３００からバックアップ３１０の読出しを開始する。バックアップ３１０は、低速不揮発性メモリ３００のブート領域に記憶されており、制御回路２１０はブート領域を自動的に判断して読出しを開始する。高速不揮発性メモリ４００と低速不揮発性メモリ３００のブート領域の対応は、ホストから対応関係を指示されるのではなく、制御回路２１０の対応テーブルを用いて、自動的に対応関係が認識される。
【００４５】
高速不揮発性メモリ４００のブート領域に対応する低速不揮発性メモリ３００のブート領域を認識するための対応テーブルは、予め仕様で規定されているか、または、管理情報に含まれているものとする。対応テーブルが仕様において一意に定まる場合には、ハードウェアやＲＯＭデータとして有してもよい。予め定めない場合には、管理情報として高速不揮発性メモリ４００または低速不揮発性メモリ３００に記憶された情報として、メモリシステムモジュール５００の電源投入後に自動的に読み出されるようにしてもよい。
【００４６】
高速不揮発性メモリ４００の起動情報４１０のアドレスと、それに対応する低速不揮発性メモリ３００のバックアップ３１０のアドレスとの対応関係は、圧縮を施す単位に依存する。例えば、起動プログラム、ＯＳ、メインアプリケーションプログラムの３つに分けて圧縮を施した場合に、対応するバックアップ３１０を低速不揮発性メモリ３００から読み出すためには、アドレスの対応関係が必要となる。
【００４７】
ＥＣＣ生成部２２１は、低速不揮発性メモリ３００に書き込むデータについてＥＣＣを生成するものである。このＥＣＣ生成部２２１により生成されたＥＣＣのパリティはデータと関連付けてＥＣＣとして低速不揮発性メモリ３００に書き込まれる。
【００４８】
ＥＣＣ生成部２２２は、高速不揮発性メモリ４００に書き込むデータについてＥＣＣを生成するものである。このＥＣＣ生成部２２２により生成されたＥＣＣのパリティはデータと関連付けてＥＣＣとして高速不揮発性メモリ４００に書き込まれる。
【００４９】
エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出されたＥＣＣに基づいてエラーの検出訂正処理を行うものである。この検出訂正処理の成否は信号線２３８を介して制御回路２１０に通知される。エラーが検出されなければ、検出訂正処理としては成功したことになる。エラーが検出されてもそのエラーを訂正することができた場合には検出訂正処理は成功したことになる。一方、検出されたエラーを訂正することができなかった場合には検出訂正処理は失敗になる。なお、エラー検出訂正部２３１は、特許請求の範囲に記載の第２のエラー検出訂正部の一例である。
【００５０】
エラー検出訂正部２３２は、高速不揮発性メモリ４００から読み出されたＥＣＣに基づいてエラーの検出訂正処理を行うものである。この検出訂正処理の成否は信号線２３９を介して制御回路２１０に通知される。なお、エラー検出訂正部２３２は、特許請求の範囲に記載のエラー検出訂正部の一例である。
【００５１】
伸張回路２４０は、エラー検出訂正部２３１によって検出訂正処理が施されたデータを伸張するものである。この伸張回路２４０は、入力されたデータが圧縮されたものであることを前提として、その圧縮を元に戻すための伸張処理を行う。
【００５２】
選択器２５１は、エラー検出訂正部２３１によって検出訂正処理が施されたデータ、または、伸張回路２４０によって伸張されたデータの何れか一方を選択するものである。この選択器２５１は、信号線２５９を介して制御回路２１０から指示された選択信号に従って選択を行う。
【００５３】
選択器２５２は、ホストコンピュータ１００から指示された書込みデータ、または、選択器２５１の出力の何れか一方を選択するものである。この選択器２５２は、選択器２５１から指示された選択信号に従って選択を行う。
【００５４】
選択器２６０は、エラー検出訂正部２３２によって検出訂正処理が施されたデータ、または、選択器２５１の出力の何れか一方を選択するものである。この選択器２６０は、信号線２６９を介して制御回路２１０から指示された選択信号に従って選択を行う。
【００５５】
この第１の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１乃至１３２を備える。信号線１１０は低速不揮発性メモリ３００または高速不揮発性メモリ４００からの読出しデータをホストコンピュータ１００に供給するものである。この読出しデータには起動情報も含まれる。信号線１２０は低速不揮発性メモリ３００または高速不揮発性メモリ４００への書込みデータをホストコンピュータ１００から供給するものである。
【００５６】
信号線１３１は、起動情報の読出し指令をホストコンピュータ１００から指示するためのものである。信号線１３２は、起動情報の修復中である旨を示す起動情報修復中フラグをホストコンピュータ１００に通知するためのものである。信号線１３３は、起動情報の修復に成功した旨を示す起動情報修復成功フラグをホストコンピュータ１００に通知するためのものである。
【００５７】
なお、ここではインターフェースとしてそれぞれ専用の信号線を利用する例について示したが、コマンドによる指令、レジスタポーリングによる処理状態確認、別ポートとの共有等により同一の情報を伝送できるのであれば、他の手段により実現してもよい。また、図の煩雑さ回避のために省略しているが、コマンドアドレスの伝送機能などメモリシステムモジュール５００が具備する機能は、情報処理システムとしても同様に具備するものとする。同図では選択器を明示するために単方向通信インターフェースの例を示したが、双方向通信インターフェースを利用してもよい。
【００５８】
［メモリシステムモジュールの動作］
図４は、本技術の第１の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【００５９】
まず、ホストコンピュータ１００は、起動情報の読出し指令をメモリシステムモジュール５００に発行する（ステップＳ９１１）。制御回路２１０は、ホストコンピュータ１００から発行された起動情報の読出し指令を解釈して、高速不揮発性メモリ４００から起動情報４１０の読出し制御を行う（ステップＳ９１２）。エラー検出訂正部２３２は、高速不揮発性メモリ４００から読み出された起動情報４１０についてエラーの検出訂正処理を行い、信号線２３９を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ９１３）。
【００６０】
検出訂正処理に成功した場合（ステップＳ９１４：Ｙｅｓ）、制御回路２１０は信号線２６９を介して選択器２６０を制御して、エラー検出訂正部２３２から出力された起動情報をホストコンピュータ１００に出力する（ステップＳ９１５）。ホストコンピュータ１００は、この起動情報を用いて起動処理を行う（ステップＳ９１６）。
【００６１】
検出訂正処理に失敗した場合（ステップＳ９１４：Ｎｏ）、制御回路２１０は信号線１３２を介して、起動情報が修復中であり、起動情報の供給までに時間を要する旨をホストコンピュータ１００に通知する（ステップＳ９２１）。この通知は、ホストコンピュータ１００が起動情報待ち状態からタイムアウトしないようにするためである。そして、制御回路２１０は、低速不揮発性メモリ３００から圧縮された起動情報のバックアップ３１０の読み出し制御を行う（ステップＳ９２２）。エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出されたバックアップ３１０についてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ９２３）。
【００６２】
検出訂正処理に成功した場合（ステップＳ９２４：Ｙｅｓ）、伸張回路２４０はエラー検出訂正部２３１から出力されたバックアップを伸張する（ステップＳ９３１）。制御回路２１０は、信号線２５９および２６９を介して選択器２５１および２６０を制御して、伸張回路２４０の出力を起動情報としてホストコンピュータ１００に出力する（ステップＳ９３２）。また、選択器２５１からの信号線２５８により選択器２５２が制御され、選択器２５１の出力がＥＣＣ生成部２２２に供給される。これにより、ＥＣＣ生成部２２２は選択器２５２の出力についてＥＣＣを生成する（ステップＳ９３５）。制御回路２１０は、高速不揮発性メモリ４００の起動情報４１０を修復するために、選択器２５２の出力に基づいてＥＣＣ生成部２２２によって生成されたＥＣＣを高速不揮発性メモリ４００に書き込む（ステップＳ９３７）。そして、制御回路２１０は、信号線１３２および１３３を介して起動情報の修復が成功して終了した旨をホストコンピュータ１００に通知する（ステップＳ９３８）。これにより、ホストコンピュータ１００は、ステップＳ９３２において出力された起動情報を用いて起動処理を行う（ステップＳ９１６）。
【００６３】
検出訂正処理に失敗した場合（ステップＳ９２４：Ｎｏ）、制御回路２１０は、信号線１３２および１３３を介して起動情報の修復が失敗して終了した旨をホストコンピュータ１００に通知する（ステップＳ９２５）。これにより、ホストコンピュータ１００は、起動処理に失敗し、起動できない旨をユーザに通知する（ステップＳ９２６）。
【００６４】
なお、この例では、ステップＳ９３５およびＳ９３６において高速不揮発性メモリ４００の起動情報４１０の修復を終えてからホストコンピュータ１００における起動処理を行っているが、起動情報４１０の修復と起動処理とを並行して行うようにしてもよい。
【００６５】
また、この例では、起動情報全体をまとめて圧縮することを想定したが、圧縮の単位が小さい場合には圧縮単位毎に逐次、対応テーブルを参照して復旧を行うことも可能である。例えば、ファイル種別ごとに圧縮を施した場合には、高速不揮発性メモリ４００から１ファイルずつ読み出してエラー検出訂正処理を行い、１ファイル分の起動情報をホストコンピュータ１００に出力して、これらの処理を繰り返すことが考えられる。また、例えば、ページごとに圧縮を施した場合には、高速不揮発性メモリ４００から１ページずつ読み出してエラー検出訂正処理を行い、１ページ分の起動情報をホストコンピュータ１００に出力して、これらの処理を繰り返すことが考えられる。
【００６６】
このように、本技術の第１の実施の形態によれば、高速不揮発性メモリ４００からの起動情報４１０の読出しに失敗した場合に、低速不揮発性メモリ３００から圧縮されたバックアップ３１０を読み出して伸張することにより、システムを起動することができる。また、伸張されたバックアップ３１０に基づいて高速不揮発性メモリ４００の起動情報４１０を修復することができる。
【００６７】
［変形例］
なお、この例では、ホストコンピュータ１００とメモリコントローラ２００との間のインターフェースとして、起動情報修復中フラグおよび起動情報修復成功フラグの専用の信号線を設けたが、レジスタ値のポーリング等、通知可能であれば手段は問わない。また、この例では、ホストコンピュータ１００からの起動情報の読出し指令の専用の信号線を設けたが、コマンド等として指令可能であれば手段は問わない。
【００６８】
また、起動情報４１０とバックアップ３１０とを比較して一致確認を指令する機能をホストコンピュータ１００が有するようにしてもよい。このとき、メモリシステムモジュール５００は、一致確認の結果をホストコンピュータ１００へ通知する機能を有する。例えば、起動処理が所定回数行われるたびに一致確認を指令することが想定される。また、ホストコンピュータ１００は、起動時以外であっても、起動情報の確認手段として、一致確認を指令する機能とその結果の通知を受ける手段を有してもよい。例えば、ホストコンピュータ１００において誤訂正が検出された際に一致確認を指令することも想定される。
【００６９】
また、高速不揮発性メモリ４００のブート領域と低速不揮発性メモリ３００のブート領域の対応テーブルについて、ＥＣＣを生成して、誤りビット数に応じて対応テーブルのリフレッシュを行う等の機能を有してもよい。
【００７０】
また、複数のシステムを起動可能なデュアルブートシステムの場合には、それぞれの領域管理テーブルを分割して使い分けるようにすることが考えられる。
【００７１】
また、ここでは、バックアップ３１０は圧縮されていることを前提として説明したが、未圧縮の状態で低速不揮発性メモリ３００に記憶しても構わない。ただし、その場合には、バックアップ３１０のための記憶容量は圧縮した場合に比べて大きくなる。
【００７２】
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
【００７３】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ２００が主導して起動情報の取得を行っていたが、この第２の実施の形態ではホストコンピュータ１００からの指令に従って起動情報を取得するものとする。
【００７４】
［メモリシステムモジュールの構成］
図５は、本技術の第２の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【００７５】
この第２の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１、１３４乃至１３６を備える。信号線１１０、１２０および１３１については、第１の実施の形態のものと同様である。
【００７６】
信号線１３４は、バックアップ読出し指令をホストコンピュータ１００から指示するためのものである。信号線１３５は、起動情報の修復指令をホストコンピュータ１００から指示するためのものである。信号線１３６は、起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ１００に通知するためのものである。
【００７７】
この第２の実施の形態におけるメモリシステムモジュール５００は、作業メモリ２７０を備える点において第１の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
【００７８】
作業メモリ２７０は、メモリコントローラ２００において行われる様々な処理に関して、必要なデータを一時的に保持するための揮発性メモリである。この作業メモリ２７０を設けることにより、ホストコンピュータ１００からの指令による結果を一時的に保持することができるため、ホストコンピュータ１００からの指令に従って各処理を進めることが可能になる。
【００７９】
この第２の実施の形態においては、制御回路２１０は、起動情報読出し失敗フラグを通じて、メモリシステムモジュール５００の状態をホストコンピュータ１００に通知する。また、この制御回路２１０は、信号線２５７を介して作業メモリ２７０のアクセス制御を行う。それ以外の点については第１の実施の形態の場合と同様である。
【００８０】
［メモリシステムモジュールの動作］
図６は、本技術の第２の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【００８１】
ホストコンピュータ１００の起動情報の読出し指令（ステップＳ９１１）に対して、正常に起動情報を取得できた場合の起動処理（ステップＳ９１６）が行われるまでの処理手順は、第１の実施の形態の場合と同様である。
【００８２】
検出訂正処理に失敗した場合（ステップＳ９１４：Ｎｏ）、制御回路２１０は信号線１３６を介して起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ１００に通知する（ステップＳ９１７）。これに対して、ホストコンピュータ１００は、信号線１３４を介して、圧縮された起動情報のバックアップ３１０の低速不揮発性メモリ３００からの読出し指令を発行する（ステップＳ９１８）。この指令を解釈した制御回路２１０は、信号線１３６の起動情報読出し失敗フラグをリセットする（ステップＳ９１９）。これにより、ホストコンピュータ１００は、バックアップ３１０の読出しが開始されたことを知る。そして、制御回路２１０は、低速不揮発性メモリ３００から圧縮された起動情報のバックアップ３１０の読み出し制御を行う（ステップＳ９２２）。エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出されたバックアップ３１０についてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ９２３）。
【００８３】
検出訂正処理に成功した場合（ステップＳ９２４：Ｙｅｓ）、伸張回路２４０はエラー検出訂正部２３１から出力されたバックアップを伸張する（ステップＳ９３１）。制御回路２１０は、信号線２５９および２６９を介して選択器２５１および２６９を制御して、伸張回路２４０の出力を起動情報としてホストコンピュータ１００に出力する（ステップＳ９３３）。これと同時に、制御回路２１０は、信号線２５９を介して選択器２５１を制御するとともに、信号線２５７を介して作業メモリ２７０に書込み制御を行うことにより、伸張回路２４０の出力（伸張された起動情報）を作業メモリ２７０に書き込む（ステップＳ９３３）。その後、ホストコンピュータ１００は、信号線１３５を介して高速不揮発性メモリ４００の起動情報４１０の修復指令を発行する（ステップＳ９３４）。この指令を解釈した制御回路２１０は、伸張された起動情報を作業メモリ２７０から読み出して、選択器２５２からＥＣＣ生成部２２２に供給する。これにより、ＥＣＣ生成部２２２は選択器２５２の出力についてＥＣＣを生成する（ステップＳ９３６）。制御回路２１０は、高速不揮発性メモリ４００の起動情報４１０を修復するために、選択器２５２の出力に基づいてＥＣＣ生成部２２２によって生成されたＥＣＣを高速不揮発性メモリ４００に書き込む（ステップＳ９３７）。ホストコンピュータ１００は、書込みの成否について、状態レジスタの読出し等、通常のデータ書込みの成否確認と同様の手段により知ることができる。これにより、ホストコンピュータ１００は、ステップＳ９３３において出力された起動情報を用いて起動処理を行う（ステップＳ９１６）。
【００８４】
検出訂正処理に失敗した場合（ステップＳ９２４：Ｎｏ）、制御回路２１０は、信号線１３６の起動情報読出し失敗フラグをリセットすることにより、起動情報の修復が失敗して終了した旨をホストコンピュータ１００に通知する（ステップＳ９２５）。これにより、ホストコンピュータ１００は、起動処理に失敗し、起動できない旨をユーザに通知する（ステップＳ９２６）。
【００８５】
なお、この例では、ステップＳ９３６およびＳ９３７による修復処理を起動処理（ステップＳ９１６）の前に行っているが、起動情報は作業メモリ２７０に保持されているため、ホストコンピュータ１００が起動後に修復指令を発行するようにしてもよい。
【００８６】
このように、本技術の第２の実施の形態によれば、起動情報４１０の読出しに失敗した場合にバックアップ３１０を読み出す処理をホストコンピュータ１００の主導により行うことができる。
【００８７】
［変形例］
なお、この例では、メモリコントローラ２００におけるエラー検出訂正処理の失敗を異常として扱っていた。これに対し、エラー検出訂正処理に成功した場合であっても、ホストコンピュータ１００自身が起動情報の異常を検知したときには、ホストコンピュータ１００が圧縮されたバックアップ３１０を利用できるようにしてもよい。この異常は、高速不揮発性メモリ４００への書込み時にメモリコントローラ２００が生成するＥＣＣだけではなく、ホストコンピュータ１００が起動情報にＣＲＣやチェックサムを付加しておくことによっても検出することができる。
【００８８】
また、ホストコンピュータ１００が何らかのユーザインタフェースを有する場合には、ユーザがバックアップの利用および修復を指示することも可能となる。すなわち、ＥＣＣの誤判定などシステムが自動的に検出できなかった場合に、ユーザが起動動作の不良を発見して、バックアップ３１０を利用した起動と、高速不揮発性メモリ４００起動情報４１０の修復を指示することもできる。
【００８９】
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
【００９０】
＜３．第３の実施の形態＞
上述の第１および第２の実施の形態では、起動情報の内容を更新することなく、出荷時に書き込まれたものを使い続けることを想定していた。これに対し、第３の実施の形態では、必要に応じて起動情報を適宜更新するものとする。
【００９１】
［メモリシステムモジュールの構成］
図７は、本技術の第３の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【００９２】
この第３の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１乃至１３３および１３７を備える。信号線１１０、１２０、１３１乃至１３３については、第１の実施の形態のものと同様である。信号線１３７は、起動情報の書込み指令をホストコンピュータ１００から指示するためのものである。
【００９３】
この第３の実施の形態におけるメモリシステムモジュール５００は、選択器２５２に代えて選択器２５３を備え、新たに圧縮回路２４１を備える点において第１の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
【００９４】
圧縮回路２４１は、信号線１２０を介して供給された書込みデータを圧縮する回路である。選択器２５３は、圧縮回路２４１によって圧縮されたデータまたは圧縮されていないデータの何れか一方を選択するものである。選択器２５３の選択信号は、制御回路２１０から信号線２５６を介して与えられる。選択器２５３の出力はＥＣＣ生成部２２１に供給される。
【００９５】
この第３の実施の形態においては、制御回路２１０は、信号線２５６を介して選択器２５３の選択制御を行う。それ以外の点については第１の実施の形態の場合と同様である。
【００９６】
［メモリシステムモジュールの動作］
この第３の実施の形態では、起動情報取得処理の処理手順は上述の第１の実施の形態と同様である。
【００９７】
図８は、本技術の第３の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【００９８】
まず、ホストコンピュータ１００は、起動情報の書込み指令を発行し、更新後の起動情報をメモリシステムモジュール５００に転送する（ステップＳ９４１）。制御回路２１０は、ホストコンピュータ１００から発行された起動情報の書込み指令を解釈する（ステップＳ９４２）。
【００９９】
高速不揮発性メモリ４００に対する書込みは、以下の手順で行われる。ホストコンピュータ１００から出力された起動情報は、選択器２５３を介してそのままＥＣＣ生成部２２１に供給される。ＥＣＣ生成部２２１はその起動情報についてＥＣＣを生成する（ステップＳ９４３）。そして、制御回路２１０は、生成されたＥＣＣを高速不揮発性メモリ４００に書き込むよう制御する（ステップＳ９４４）。
【０１００】
低速不揮発性メモリ３００に対する書込みは、以下の手順で行われる。ホストコンピュータ１００から発行された起動情報に対して、圧縮回路２４１が圧縮処理を行う（ステップＳ９４８）。圧縮された起動情報は、選択器２５３を介してＥＣＣ生成部２２１に供給される。ＥＣＣ生成部２２１はその圧縮された起動情報についてＥＣＣを生成する（ステップＳ９５１）。そして、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ９５２）。
【０１０１】
なお、この例では、高速不揮発性メモリ４００に対する書込みと低速不揮発性メモリ３００に対する書込みとを逐次に行うことを想定したが、両者は並行して行うことが可能である。すなわち、ステップＳ９４３およびＳ９４４と、ステップＳ９４８、Ｓ９５１およびＳ９５２とを互いに並列に処理してもよい。
【０１０２】
また、この例では、ホストコンピュータ１００から起動情報の全てが入力されることを前提としたが、更新すべき部分を示す更新ファイルのみを入力するようにしてもよい。この場合、対応テーブルを参照することにより起動情報４１０の更新部分に対応するバックアップ３１０のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
【０１０３】
また、更新されたページのみが入力された場合にも同様に、対応テーブルを参照することにより起動情報４１０の更新ページに対応するバックアップ３１０のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
【０１０４】
また、起動情報の全てが入力され、ファイル種別毎に圧縮してバックアップする場合にも同様に、１ファイルずつ対応テーブルを参照することによりそのファイルに対応するバックアップ３１０のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
【０１０５】
また、起動情報の全てが入力され、ページ毎に圧縮してバックアップする場合にも同様に、１ページずつ対応テーブルを参照することによりそのページに対応するバックアップ３１０のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
【０１０６】
このように、本技術の第３の実施の形態によれば、起動情報４１０およびバックアップ３１０を更新することができる。
【０１０７】
［変形例］
なお、この例において、圧縮アルゴリズムにより、元のサイズよりも小さくならない場合には、圧縮することなく低速不揮発性メモリ３００に書き込んでもよい。その場合には、バックアップ３１０のヘッダ等に圧縮されているか否を示す圧縮フラグを保持することにより、圧縮の有無を示すことが考えられる。また、対応テーブルにおいて、圧縮フラグを備えるようにしてもよい。また、それ以外の管理情報として圧縮フラグを管理してもよい。読出し時に制御回路２１０が圧縮フラグを参照して、選択器２５３を制御することにより、圧縮回路２４１を通さずにバックアップの起動情報を出力することが可能となる。
【０１０８】
また、低速不揮発性メモリ３００の圧縮バックアップと高速不揮発性メモリ４００の非圧縮情報との比較確認を行うための指令をホストコンピュータ１００から発行できるようにしてもよい。第１の実施の形態の場合に加えてこの第３の実施の形態では、圧縮バックアップが破損している場合に、高速不揮発性メモリ４００に記憶されていた起動情報を圧縮して、低速不揮発性メモリ３００の圧縮バックアップを書き替える機能を有することが想定される。すなわち、低速不揮発性メモリ３００のエラー検出訂正処理の失敗やその他の読出し不良が発生した場合、高速不揮発性メモリ４００から読み出した起動情報を圧縮して、低速不揮発性メモリ３００の圧縮バックアップを書き替えるようにしてもよい。
【０１０９】
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
【０１１０】
＜４．第４の実施の形態＞
上述の第３の実施の形態では、メモリコントローラ２００が主導して起動情報の更新を行っていたが、この第４の実施の形態ではホストコンピュータ１００からの指令に従って起動情報を取得するものとする。
【０１１１】
［メモリシステムモジュールの構成］
図９は、本技術の第４の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【０１１２】
この第４の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１、１３４、１３６乃至１３８を備える。信号線１１０、１２０および１３１については、第１の実施の形態のものと同様である。また、信号線１３４および１３６については、第２の実施の形態のものと同様である。また、信号線１３７については、第３の実施の形態のものと同様である。信号線１３８は、バックアップ書込み指令をホストコンピュータ１００から指示するためのものである。なお、この第４の実施の形態では、第２の実施の形態において起動情報の修復指令のために設けられた信号線１３５はなく、起動情報の書込み指令のために設けられた信号線１３７で代用する。
【０１１３】
この第４の実施の形態におけるメモリシステムモジュール５００は、選択器２５２に代えて選択器２５３を備え、新たに圧縮回路２４２を備える点において第２の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
【０１１４】
圧縮回路２４２は、作業メモリ２７０に保持された書込みデータを圧縮する回路である。選択器２５３は、圧縮回路２４２によって圧縮された書込みデータまたは信号線１２０を介して供給された書込みデータの何れか一方を選択するものである。選択器２５３の選択信号は、制御回路２１０から信号線２５６を介して与えられる。選択器２５３の出力はＥＣＣ生成部２２１に供給される。
【０１１５】
この第４の実施の形態においては、制御回路２１０は、信号線２５６を介して選択器２５３の選択制御を行う。それ以外の点については第２の実施の形態の場合と同様である。
【０１１６】
［メモリシステムモジュールの動作］
この第４の実施の形態では、起動情報取得処理の処理手順は上述の第２の実施の形態と同様である。
【０１１７】
図１０は、本技術の第４の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【０１１８】
ホストコンピュータ１００の起動情報の書込み指令（ステップＳ９４１）に対して、高速不揮発性メモリ４００に対する書込み処理（ステップＳ９４４）が行われるまでの処理手順は、第３の実施の形態の場合と同様である。
【０１１９】
低速不揮発性メモリ３００に対する書込みは、以下の手順で行われる。制御回路２１０は、信号線２７９を介して作業メモリ２７０を制御して、ホストコンピュータ１００から出力された起動情報を作業メモリ２７０に書き込む（ステップＳ９４５）。その後、ホストコンピュータ１００は、信号線１３８を介して、バックアップ書込み指令を発行する（ステップＳ９４６）。この指令を解釈した制御回路２１０は、信号線２７９を介して作業メモリ２７０を制御して、作業メモリ２７０から起動情報を読み出す（ステップＳ９４７）。圧縮回路２４２は、読み出された起動情報を圧縮する（ステップＳ９４９）。圧縮された起動情報は、選択器２５３を介してＥＣＣ生成部２２１に供給される。ＥＣＣ生成部２２１はその圧縮された起動情報についてＥＣＣを生成する（ステップＳ９５１）。そして、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ９５２）。
【０１２０】
なお、この例では、高速不揮発性メモリ４００に対する書込みと低速不揮発性メモリ３００に対する書込みとを逐次に行うことを想定したが、両者は並行して行うことが可能である。すなわち、ステップＳ９４３およびＳ９４４と、ステップＳ９４５乃至Ｓ９５２とを互いに並列に処理してもよい。
【０１２１】
このように、本技術の第４の実施の形態によれば、起動情報４１０およびバックアップ３１０の更新処理をホストコンピュータ１００の主導により行うことができる。
【０１２２】
＜５．第５の実施の形態＞
上述の第３および第４の実施の形態では、バックアップ３１０が更新される際には上書きされて常に１つが残るよう構成されていたが、この第５の実施の形態ではバックアップの履歴が低速不揮発性メモリ３００に残されていくものとする。
【０１２３】
［メモリシステムモジュールの構成］
図１１は、本技術の第５の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【０１２４】
この第５の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１、１３４、１３６、１３７および１３９を備える。信号線１１０、１２０および１３１については、第１の実施の形態のものと同様である。また、信号線１３４および１３６については、第２の実施の形態のものと同様である。また、信号線１３７については、第３の実施の形態のものと同様である。信号線１３９は、履歴テーブル読出し指令をホストコンピュータ１００から指示するためのものである。
【０１２５】
この第５の実施の形態では、上述の第３および第４の実施の形態とは異なり、低速不揮発性メモリ３００に複数の圧縮バックアップを履歴テーブル３２０として記憶する。また、ホストコンピュータ１００は、メモリシステムモジュール５００が複数の圧縮バックアップを記憶していることを知ることができる機能を有する。また、ホストコンピュータ１００は、メモリシステムモジュール５００が出力する履歴テーブルを通じて、任意のバージョンを指定することができる機能を有する。履歴テーブルは、複数の圧縮バックアップのバージョン番号や更新時刻などの、ホストコンピュータ１００が圧縮バックアップの素性を知ることのできる情報を含む。また、低速不揮発性メモリ３００のブート領域において、それぞれの圧縮バックアップが記憶されたアドレス等を示すアドレス情報も含む。
【０１２６】
この第５の実施の形態におけるメモリシステムモジュール５００は、履歴テーブル生成部２１５および選択器２５４を備える点において第３の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
【０１２７】
履歴テーブル生成部２１５は、低速不揮発性メモリ３００のブート領域に保持されていた履歴テーブルに対して、低速不揮発性メモリ３００の圧縮されたバックアップ３１０を更新する際に、バックアップのバージョン番号等の履歴を追記するものである。低速不揮発性メモリ３００のブート領域に新規の起動情報のバックアップを記憶する領域がなければ、履歴テーブル生成部２１５が自動的に最も古いバージョンを上書きする。または、ホストコンピュータ１００が書込み先を指定することによって既存のバージョンを上書きして、書込み領域を確保するようにしてもよい。
【０１２８】
選択器２５４は、履歴テーブル生成部２１５によって生成されて信号線２４８を介して供給された履歴テーブル、または、選択器２５３の出力の何れか一方を選択してＥＣＣ生成部２２１に供給するものである。この選択器２５４に対する制御は、信号線２５５を介して制御回路２１０が行う。
【０１２９】
この第５の実施の形態においては、制御回路２１０は、起動情報読出し失敗フラグを通じて、メモリシステムモジュール５００の状態をホストコンピュータ１００に通知する。また、制御回路２１０は、信号線２５５を介して選択器２５４における選択処理を制御する。
【０１３０】
［メモリシステムモジュールの動作］
図１２は、本技術の第５の実施の形態におけるメモリシステムモジュール５００の起動情報取得処理の処理手順の一例を示す流れ図である。
【０１３１】
ホストコンピュータ１００の起動情報の読出し指令（ステップＳ８１１）に対して、正常に起動情報を取得できた場合の起動処理（ステップＳ８１６）が行われるまでの処理手順は、第１の実施の形態の場合（ステップＳ９１１乃至Ｓ９１６）と同様である。
【０１３２】
検出訂正処理に失敗した場合（ステップＳ８１４：Ｎｏ）、制御回路２１０は信号線１３６を介して起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ１００に通知する（ステップＳ８１７）。これに対して、ホストコンピュータ１００は、信号線１３９を介して、低速不揮発性メモリ３００からの履歴テーブル読出し指令をメモリシステムモジュール５００に発行する（ステップＳ８１８）。この指令を解釈した制御回路２１０は、低速不揮発性メモリ３００から履歴テーブルの読出し制御を行う（ステップＳ８１９）。エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ８２１）。
【０１３３】
検出訂正処理に成功した場合（ステップＳ８２２：Ｙｅｓ）、制御回路２１０は、信号線２５９および２６９を介して選択器２５１および２６９を制御して、履歴テーブルをホストコンピュータ１００に出力する（ステップＳ８３１）。その後、ホストコンピュータ１００は、履歴テーブルから圧縮バックアップのバージョンを１つ選択して、信号線１３４を介して、指定バージョンとともにバックアップ読出し指令を発行する（ステップＳ８３２）。制御回路２１０は、バックアップ読出し指令を解釈して、指定されたバージョンの読出し制御を行う（ステップＳ８３３）。エラー検出訂正部２３１は、読み出されたバックアップについてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ８３４）。
【０１３４】
検出訂正処理に成功した場合（ステップＳ８３５：Ｙｅｓ）、制御回路２１０は、信号線２５９および２６９を介して選択器２５１および２６０を制御して、伸張回路２４０の出力を起動情報としてホストコンピュータ１００に出力する（ステップＳ８３６）。また、ＥＣＣ生成部２２２は、伸張回路２４０が伸張した圧縮してバックアップされた起動情報のＥＣＣを生成する（ステップＳ８３７）。制御回路２１０は、高速不揮発性メモリ４００の起動情報４１０を修復するために、ＥＣＣ生成部２２２によって生成されたＥＣＣを高速不揮発性メモリ４００に書き込む（ステップＳ８３８）。これにより、ホストコンピュータ１００は、ステップＳ８３６において出力された起動情報を用いて起動処理を行う（ステップＳ８１６）。
【０１３５】
検出訂正処理に失敗した場合（ステップＳ８２２またはＳ８３５：Ｎｏ）、制御回路２１０は、信号線１３６を介してバックアップの読出しに失敗し、起動情報の修復に失敗した旨をホストコンピュータ１００に通知する（ステップＳ８２３）。これにより、ホストコンピュータ１００は、起動処理に失敗し、起動できない旨をユーザに通知する（ステップＳ８２４）。
【０１３６】
図１３は、本技術の第５の実施の形態におけるメモリシステムモジュール５００の起動情報更新処理の処理手順の一例を示す流れ図である。
【０１３７】
ホストコンピュータ１００の起動情報の書込み指令（ステップＳ９６１）に対して、高速不揮発性メモリ４００に対する書込み処理（ステップＳ９６４）が行われるまでの処理手順は、第３の実施の形態の場合（ステップＳ９４１乃至Ｓ９４４）と同様である。
【０１３８】
この図では、高速不揮発性メモリ４００に対する書込みと低速不揮発性メモリ３００に対する書込みとを並列に行うことを想定する。低速不揮発性メモリ３００に対する書込みは、以下の手順で行われる。ホストコンピュータ１００から発行された起動情報に対して、圧縮回路２４１が圧縮処理を行う（ステップＳ９６５）。このとき、制御回路２１０は、圧縮された起動情報がＥＣＣ生成部２２１に入力されるように信号線２５５および２５６を制御する。制御回路２１０は、低速不揮発性メモリ３００から履歴テーブルの読出し制御を行う（ステップＳ９６６）。エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ９６７）。
【０１３９】
検出訂正処理に成功した場合（ステップＳ９６８：Ｙｅｓ）、履歴テーブル生成部２１５は、履歴テーブルから低速不揮発性メモリ３００におけるブート領域の空きを確認する（ステップＳ９６９）。容量に追記分の空きがある場合は（ステップＳ９６９：Ｙｅｓ）、履歴テーブル生成部２１５は、履歴テーブルに対して、新規に書き込む圧縮バックアップのバージョン番号、時刻、ブート領域内のアドレスを追記する（ステップＳ９７１）。なお、圧縮バックアップがファイル毎やページ毎になる場合には、起点となるアドレスのみを履歴テーブルに記憶しておき、詳細なアドレスの対応関係は対応テーブルに記憶する。一方、容量に追記分の空きがない場合は（ステップＳ９６９：Ｎｏ）、履歴テーブル生成部２１５は、履歴テーブルから最古の履歴情報を判断して、新規に書き込む圧縮バックアップのバージョン番号，時刻、ブート領域内のアドレスを上書き記憶する（ステップＳ９７２）。
【０１４０】
検出訂正処理に失敗した場合（ステップＳ９６８：Ｎｏ）、履歴テーブル生成部２１５は、履歴テーブルのうち、仕様等で予め定められた初期履歴の領域に、新規に書き込む圧縮バックアップのバージョン番号、時刻、ブート領域内のアドレスを記憶する（ステップＳ９７３）。すなわち、検出訂正処理に失敗したことにより、これまでの履歴を失ってしまったため、履歴テーブルを新規に作り直すことと同様の処理を行うことになる。
【０１４１】
ステップＳ９７１乃至Ｓ９７３の何れかにおいて履歴テーブルを記憶した後、ステップＳ９６５において圧縮された起動情報は、選択器２５３および２５４を介してＥＣＣ生成部２２１に供給される。ＥＣＣ生成部２２１はその圧縮された起動情報についてＥＣＣを生成する（ステップＳ９７４）。そして、制御回路２１０は、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ９７５）。
【０１４２】
制御回路２１０は、信号線２５５を制御して、履歴テーブルをＥＣＣ生成部２２１に入力する（ステップＳ９７６）。ＥＣＣ生成部２２１はその履歴テーブルについてＥＣＣを生成する（ステップＳ９７７）。そして、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ９７８）。
【０１４３】
なお、この例では、高速不揮発性メモリ４００に対する書込みと低速不揮発性メモリ３００に対する書込みとを並列に行うことを想定したが、両者は逐次に行ってもよい。
【０１４４】
また、ブート領域に空きがない場合に最古の履歴を上書きしたが（ステップＳ９７２）、メモリシステムモジュール５００から空き領域がない旨をホストコンピュータ１００に通知して、ホストコンピュータ１００が上書きする領域を指定する機能を有してもよい。
【０１４５】
また、この例では、高速不揮発性メモリ４００のブート領域を修復した後に、ホストコンピュータ１００の起動処理を実施していたが、高速不揮発性メモリ４００のブート領域の修復とホストコンピュータ１００の起動処理とを並行して実施してもよい。
【０１４６】
また、この例では、バックアップのエラー検出訂正処理に失敗すると修復失敗として扱っいた。しかし、バックアップは複数保持しているため、ホストコンピュータ１００が他のバージョンを指定して修復を試みるようにしてもよい。
【０１４７】
このように、本技術の第５の実施の形態によれば、起動情報のバックアップの履歴を低速不揮発性メモリ３００に記憶することができる。
【０１４８】
［変形例］
この例では、低速不揮発性メモリ３００のブート領域に空きがなくなった場合に、最古の領域を自動的に上書きしたが、ホストコンピュータ１００から上書きする領域を指定してもよい。その場合、メモリシステムモジュール５００は、ホストコンピュータ１００に対して空き領域がない旨を通知する機能を有する。また、ホストコンピュータ１００は通知を受けて、履歴テーブルの中から上書きすべきバージョンの指定をメモリシステムモジュール５００に指示する機能を有する。
【０１４９】
また、この例では、履歴テーブルを低速不揮発性メモリ３００に記憶したが、高速不揮発性メモリ４００に記憶してもよい。また、メモリシステムモジュール５００が他の記録媒体を有している場合には、その記録媒体に記憶してもよい。
【０１５０】
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
【０１５１】
＜６．第６の実施の形態＞
上述の第５の実施の形態では、メモリコントローラ２００が主導してバックアップの履歴を低速不揮発性メモリ３００に記憶していたが、この第６の実施の形態ではホストコンピュータ１００からの指令に従ってバックアップの履歴を記憶するものとする。
【０１５２】
［メモリシステムモジュールの構成］
図１４は、本技術の第６の実施の形態におけるメモリシステムモジュール５００の構成例を示す図である。
【０１５３】
この第６の実施の形態におけるメモリシステムモジュール５００は、ホストコンピュータ１００との間のインターフェースとして信号線１１０、１２０、１３１、１３４、１３６乃至１３９を備える。信号線１１０、１２０および１３１については、第１の実施の形態のものと同様である。また、信号線１３４および１３６については、第２の実施の形態のものと同様である。また、信号線１３７については、第３の実施の形態のものと同様である。また、信号線１３８については、第４の実施の形態のものと同様である。また、信号線１３９については、第５の実施の形態のものと同様である。
【０１５４】
この第６の実施の形態におけるメモリシステムモジュール５００は、作業メモリ２７０を備える点において第５の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。作業メモリ２７０は、第２の実施の形態および第４の実施の形態と同様の機能を有するメモリである。
【０１５５】
この第６の実施の形態においては、制御回路２１０は、低速不揮発性メモリ３００から読み出した対応テーブルに基づいて、高速不揮発性メモリ４００のブート領域に対応する低速不揮発性メモリ３００のブート領域を自動的に認識する機能を有する。
【０１５６】
［メモリシステムモジュールの動作］
この第６の実施の形態では、起動情報取得処理の処理手順は上述の第５の実施の形態と同様である。また、この第６の実施の形態では、メモリシステムモジュール５００の起動情報更新処理については、高速不揮発性メモリ４００の起動情報の更新と、圧縮バックアップの低速不揮発性メモリ３００への記憶とを連動させる必要がないため、両者を分けて示す。
【０１５７】
図１５は、本技術の第６の実施の形態における高速不揮発性メモリ４００の起動情報更新処理の処理手順の一例を示す流れ図である。
【０１５８】
まず、ホストコンピュータ１００は、起動情報の書込み指令を発行し、更新後の起動情報をメモリシステムモジュール５００に転送する（ステップＳ８４１）。制御回路２１０は、ホストコンピュータ１００から発行された起動情報の書込み指令を解釈して、作業メモリ２７０に書き込む（ステップＳ８４２）。ＥＣＣ生成部２２２は、起動情報のＥＣＣを生成する（ステップＳ８４３）。そして、制御回路２１０は、生成されたＥＣＣを高速不揮発性メモリ４００に書き込むよう制御する（ステップＳ８４４）。
【０１５９】
図１６は、本技術の第６の実施の形態における低速不揮発性メモリ３００のバックアップの記憶処理の処理手順の一例を示す流れ図である。
【０１６０】
まず、ホストコンピュータ１００は、履歴テーブルの読出し指令を発行する（ステップＳ８５１）。制御回路２１０は、低速不揮発性メモリ３００から履歴テーブルの読出し制御を行う（ステップＳ８５２）。エラー検出訂正部２３１は、低速不揮発性メモリ３００から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線２３８を介して検出訂正処理の成否を制御回路２１０に通知する（ステップＳ８５３）。これに従って、制御回路２１０は、ホストコンピュータ１００に履歴テーブルのエラー検出訂正処理の成否を通知する（ステップＳ８５４）。そして、制御回路２１０は、履歴テーブルのホストコンピュータ１００への出力制御を行う（ステップＳ８５５）。ホストコンピュータ１００は、履歴テーブルを参照して、バックアップの書込み領域を決定する（ステップＳ８５６）。
【０１６１】
ホストコンピュータ１００は、起動情報をメモリシステムモジュール５００に転送する（ステップＳ８５７）。そして、制御回路２１０は、ホストコンピュータ１００から転送された起動情報を作業メモリ２７０に記憶する（ステップＳ８５８）。なお、これらステップＳ８５７およびＳ８５８は、ステップＳ８４２において起動情報が記憶済であれば省略することができる。
【０１６２】
ホストコンピュータ１００は、バックアップの書込み領域を指定して、バックアップ書込み指令を、信号線１３８を介して発行する（ステップＳ８５９）。制御回路２１０は、作業メモリ２７０に記憶された起動情報を読み出して、圧縮回路２４２に圧縮させる（ステップＳ８６１）。
【０１６３】
ステップＳ８５３におけるエラー検出訂正処理に失敗した場合（ステップＳ８６２：Ｎｏ）、制御回路２１０は、履歴テーブルを初期化する（ステップＳ８６３）。制御回路２１０は、ホストコンピュータ１００から指定された領域の履歴を更新する（ステップＳ８６４）。ＥＣＣ生成部２２１は、ステップＳ８６１において圧縮された起動情報についてＥＣＣを生成する（ステップＳ８６５）。そして、制御回路２１０は、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ８６６）。
【０１６４】
制御回路２１０は、信号線２５５を制御して、履歴テーブルをＥＣＣ生成部２２１に入力する（ステップＳ８６７）。ＥＣＣ生成部２２１はその履歴テーブルについてＥＣＣを生成する（ステップＳ８６８）。そして、生成されたＥＣＣを低速不揮発性メモリ３００に書き込む（ステップＳ８６９）。
【０１６５】
このように、本技術の第６の実施の形態によれば、起動情報のバックアップの履歴の記憶処理をホストコンピュータ１００の主導により行うことができる。
【０１６６】
＜７．変形例＞
［第１の変形例］
上述の各実施の形態では、低速不揮発性メモリ３００と高速不揮発性メモリ４００における領域の対応関係を示す対応テーブルを制御回路２１０が保持するものと想定していたが、この対応テーブルを低速不揮発性メモリ３００に記憶しておいてもよい。この第１の変形例では、制御回路２１０は、低速不揮発性メモリ３００から読み出した対応テーブルから、高速不揮発性メモリ４００のブート領域と低速不揮発性メモリ３００のブート領域の対応関係を認識することができる。
【０１６７】
図１７は、本技術の第１の変形例におけるメモリシステムモジュール５００の構成例を示す図である。この構成例は第１の実施の形態をベースとしたものであり、低速不揮発性メモリ３００に対応テーブル３３０を記憶する点において異なっている。
【０１６８】
この第１の変形例では、第１の実施の形態をベースとした場合、ステップＳ９２２における圧縮された起動情報の読出しの前に、低速不揮発性メモリ３００から対応テーブルを読出し、そのＥＣＣを生成する処理手順が挿入される。それ以外の点は第１の実施の形態と同様である。
【０１６９】
この第１の変形例によれば、出荷時や、それ以降の対応テーブルの生成に対応できるため、圧縮アルゴリズムや起動情報の大きさなど、製品に応じた適切な領域分割が可能となる。
【０１７０】
なお、この第１の実施の形態では、出荷時に記憶した起動情報とその圧縮バックアップを使い続けるため、対応テーブルに変化がなかった。第３乃至６の実施の形態のような起動情報の更新があり、対応テーブルにも変更がある場合には、対応テーブルを更新して書き戻す必要がある。その場合の第１の変形例のメモリシステムモジュール５００の構成例を図１８に示す。制御回路２１０は、対応テーブルを更新する対応テーブル更新部２１６を備える。また、メモリコントローラ２００は、ホストコンピュータ１００からの対応テーブルと制御回路２１０からの対応テーブルの何れか一方を選択する選択器２５４を備える。この選択器２５４は、制御回路２１０からの信号線２５５により制御される。対応テーブルに更新があれば、対応テーブル更新部２１６が更新した対応テーブルが低速不揮発性メモリ３００に書き込まれる。
【０１７１】
また、この第１の変形例では、対応テーブルを低速不揮発性メモリ３００に記憶することを想定したが高速不揮発性メモリ４００に記憶してもよく、メモリコントローラ２００が何らかの不揮発性メモリを備える場合にはその不揮発性メモリを利用してもよい。また、この第１の変形例では、対応テーブルの誤り耐性強化として、起動情報と同様に、低速不揮発性メモリ３００と高速不揮発性メモリ４００の両方に記憶するようにしてもよく、その場合、低速不揮発性メモリ３００には圧縮して記憶するようにしてもよい。また、対応テーブルは通常のＥＣＣに加えて強力なＥＣＣにより保護してもよい。
【０１７２】
［第２の変形例］
この第２の変形例では、バックアップの誤り耐性強化として、強化されたＥＣＣを使用する。
【０１７３】
図１９は、本技術の第２の変形例におけるメモリシステムモジュール５００の構成例を示す図である。この構成例は第１の実施の形態をベースとしたものであり、強化されたエラー検出訂正部２８１と、エラー検出訂正部２８１または低速不揮発性メモリ３００からのデータの何れか一方を信号線２８３に従って選択する選択器２８２をさらに備える。また、低速不揮発性メモリ３００には強化されたＥＣＣが使用されたバックアップ３１１が記憶される。
【０１７４】
エラー検出訂正部２８１は、低速不揮発性メモリ３００から読み出したバックアップ３１１のエラー検出訂正処理を行うものである。この例では、エラー検出訂正部２８１は、制御回路２１０にエラー検出訂正処理の成否を通知しない。読み出したバックアップ３１１のエラー検出訂正処理の成否はエラー検出訂正部２３１において判断される。
【０１７５】
この第２の変形例では、第１の実施の形態をベースとした場合、ステップＳ９２３における圧縮された起動情報のエラー検出訂正処理の前に、エラー検出訂正部２８１によるエラー検出訂正の処理手順が挿入される。それ以外の点は第１の実施の形態と同様である。
【０１７６】
この第２の変形例によれば、エラー検出訂正部２３１による通常のエラー検出訂正処理に加えて、エラー検出訂正部２８１により強化されたエラー検出訂正処理を行うことにより、圧縮して記憶されたバックアップ３１１を保護して、誤り耐性を強化することができる。ここで、バックアップ３１１は圧縮しているため、領域には余裕がある。この圧縮によって空いた領域に強化用のＥＣＣを追加することにより、圧縮せずにバックアップするよりも誤り耐性を向上させることができる。
【０１７７】
なお、この第２の変形例では、エラー検出訂正部２８１をエラー検出訂正部２３１と直列に配置したが、これらを並列に配置してエラー検出訂正部２３１よりも強力なＥＣＣを用いてもよい。エラー検出訂正部２３１による単独のＥＣＣよりも高い誤り訂正能力を有するＥＣＣの付加方法であれば、いずれの方法を用いてもよい。
【０１７８】
［第３の変形例］
この第３の変形例では、圧縮バックアップされた起動情報に管理情報を付随させて、リフレッシュ処理等の状態管理を行う。
【０１７９】
図２０は、本技術の第３の変形例におけるメモリシステムモジュール５００の構成例を示す図である。この構成例は第１の実施の形態をベースとしたものであり、選択器２５２に代えて選択器２５３および２５４を備え、新たに圧縮回路２４１とアクセス情報管理部２１４とを備える。また、低速不揮発性メモリ３００は、アクセス情報３４０の記憶領域を有する。
【０１８０】
圧縮回路２４１は、信号線１２０を介して供給された書込みデータを圧縮する回路である。選択器２５３は、圧縮回路２４１によって圧縮されたデータまたは圧縮されていないデータの何れか一方を選択するものである。選択器２５３の選択信号は、制御回路２１０から信号線２５６を介して与えられる。
【０１８１】
選択器２５４は、アクセス情報管理部２１４によって生成されて信号線２４７を介して供給されたアクセス情報、または、選択器２５３の出力の何れか一方を選択してＥＣＣ生成部２２１に供給するものである。この選択器２５４に対する制御は、信号線２５５を介して制御回路２１０が行う。
【０１８２】
アクセス情報管理部２１４は、アクセス情報を生成および管理するものである。アクセス情報は、バックアップ３１０に対してアクセスした履歴に関する情報であり、例えば、バックアップ３１０を最後に読み出した時刻や読み出した回数等を含むものである。このアクセス情報は、出荷時に初期情報が記憶されており、低速不揮発性メモリ３００のブート領域を読み出す際に、このアクセス情報も読み出されて更新された後に再び低速不揮発性メモリ３００に書き戻される。
【０１８３】
一般に、不揮発性メモリに記憶された情報を保護する手段としてその内容を書き直すリフレッシュ処理が知られている。この第３の変形例において、低速不揮発性メモリ３００のブート領域は長期間読み出しがない場合や、読み出し回数が多い場合に、記憶内容の破損が進むおそれがある。そこで、以下のように、ブート領域のアクセス情報を有することにより、記憶からの経過時間や読出し回数に対して閾値を使ったリフレッシュ判定が可能となる。
【０１８４】
低速不揮発性メモリ３００として想定するＮＡＮＤフラッシュにおいては、記憶からの経過時間とともに破損確率が高くなることがある。ブート領域を読み出した時刻をアクセス情報として保持しておくと、経過時間から破損確率を推定することができる。例えば、ＥＣＣの訂正可能ビット数が破損確率ｐに基づいて設計されている場合、破損確率がｐを上回るとエラー訂正に失敗する可能性がある。一方、ある経過時間の破損確率の推定値をｑと仮定すると、ｑ＜ｐである経過時間Ｔを閾値として予め設定しておき、経過時間がＴに達した時点でリフレッシュすることにより、記憶情報の保護が可能となる。
【０１８５】
高速不揮発性メモリ４００として想定する抵抗変化型メモリにおいては、読出し回数が多いほど、記憶情報の破損確率が高くなることがある。ブート領域を読み出した回数をアクセス情報として保持しておくと、読み出した回数から破損確率を推定することができる。例えば、ＥＣＣの訂正可能ビット数が破損確率ｐに基づいて設計されている場合、破損確率がｐを上回ると復号に失敗する可能性がある。一方、ある回数を読み出した後の破損確率の推定値をｑと仮定すると、ｑ＜ｐである読出し回数Ｎを閾値として予め設定しておき、読出し回数がＮに達した時点でリフレッシュすることにより、記憶情報の保護が可能となる。
【０１８６】
この第３の変形例では、第１の実施の形態をベースとした場合、ステップＳ９２２における圧縮された起動情報の読出しの前に、次の３つの処理手順が挿入される。すなわち、アクセス情報を読み出す処理、アクセス情報からリフレッシュを行うか判断する処理、および、リフレッシュの条件を満たした場合にリフレッシュ処理を実行する処理である。それ以外の点は第１の実施の形態と同様である。
【０１８７】
この第３の変形例によれば、低速不揮発性メモリ３００に記憶されたバックアップの効果的なリフレッシュ処理が可能となり、バックアップの信頼性、システム起動の安全性を向上させることができる。
【０１８８】
なお、リフレッシュ処理については、記憶された情報を読み出してそのまま再書込みする手法や、エラー訂正後の値を書き戻す手法等が考えられるが、ここでは何れを採用してもよい。
【０１８９】
また、この第３の変形例では、アクセス情報をバックアップとは別領域に記憶することを前提とし、バックアップの読出し制御とは別にアクセス情報の読出し制御を行い、別のＥＣＣを有するデータとして扱った。これに対し、他の変形例として、アクセス情報とバックアップとを一括してＥＣＣを生成してもよい。
【０１９０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１９１】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１９２】
なお、本技術は以下のような構成もとることができる。
（１）システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶制御装置。
（２）前記第２のメモリに圧縮されて記憶されている前記システム情報のバックアップを伸張して前記制御部に供給する伸張部をさらに具備する前記（１）に記載の記憶制御装置。
（３）前記第２のメモリから読み出された前記システム情報のバックアップの検出訂正処理を行う第２のエラー検出訂正部をさらに具備し、
前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記ホストコンピュータに供給する
前記（１）または（２）に記載の記憶制御装置。
（４）前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記第１のメモリに記憶させる前記（３）に記載の記憶制御装置。
（５）前記制御部は、前記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を前記ホストコンピュータに通知する
前記（３）に記載の記憶制御装置。
（６）前記第２のエラー検出訂正部は、前記エラー検出訂正部より高いエラー検出訂正能力を有する前記（３）に記載の記憶制御装置。
（７）前記制御部は、前記システム情報の更新が指示された場合には新たに指示されたシステム情報を前記第１および第２のメモリに記憶させる前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記制御部は、前記検出訂正処理に失敗した場合には前記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して前記システム情報として前記ホストコンピュータに供給する
前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）前記制御部は、前記選択されたバックアップを前記システム情報として前記第１のメモリに記憶させる前記（８）に記載の記憶制御装置。
（１０）前記第１のメモリに記憶される前記システム情報と前記第２のメモリに記憶される前記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、
前記制御部は、前記対応テーブルに基づいて前記システム情報に対応する前記システム情報のバックアップを前記第２のメモリから読み出す前記（１）から（９）のいずれかに記載の記憶制御装置。
（１１）前記第２のメモリに記憶される前記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、
前記制御部は、前記アクセス履歴に基づいて前記システム情報のバックアップの書き直しを前記第２のメモリに指示する
前記（１）から（１０）のいずれかに記載の記憶制御装置。
（１２）前記制御部は、前記検出訂正処理に失敗した場合に前記システム情報を供給するまでに時間を要する旨を通知する前記（１）から（１１）のいずれかに記載の記憶制御装置。
（１３）前記制御部は、前記第１のメモリに記憶される前記システム情報と前記第２のメモリに記憶される前記システム情報のバックアップとを比較して両者が一致しているか否かを確認する前記（１）から（１２）のいずれかに記載の記憶制御装置。
（１４）システムを動作させるためのシステム情報を記憶する第１のメモリと、
前記システム情報のバックアップを記憶する第２のメモリと、
前記システム情報を前記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶装置。
（１５）前記第１および第２のメモリは不揮発性メモリであり、
前記第１のメモリは、前記第２のメモリよりも読出し処理時間が短い前記（１４）に記載の記憶装置。
（１６）ホストコンピュータと、
情報処理システムを動作させるためのシステム情報を記憶する第１のメモリと、
前記システム情報のバックアップを記憶する第２のメモリと、
前記システム情報を前記第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報を前記ホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第２のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する情報処理システム。
（１７）システムを動作させるためのシステム情報を第１のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正手順と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第２のメモリから読み出して前記ホストコンピュータに供給する制御手順と
を具備する記憶制御方法。
【符号の説明】
【０１９３】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  制御回路
２１４  アクセス情報管理部
２１５  履歴テーブル生成部
２１６  対応テーブル更新部
２２１、２２２  ＥＣＣ生成部
２３１、２３２  エラー検出訂正部
２４０  伸張回路
２４１、２４２  圧縮回路
２５１〜２５４、２６０、２８２  選択器
２７０  作業メモリ
２８１  強化されたエラー検出訂正部
３００  低速不揮発性メモリ
３１０、３１１  バックアップ
３２０  履歴テーブル
３３０  対応テーブル
３４０  アクセス情報
４００  高速不揮発性メモリ
４１０  起動情報
５００  メモリシステムモジュール
【図１】
2015022516.tif 000003
【図２】
2015022516.tif 000004
【図３】
2015022516.tif 000005
【図４】
2015022516.tif 000006
【図５】
2015022516.tif 000007
【図６】
2015022516.tif 000008
【図７】
2015022516.tif 000009
【図８】
2015022516.tif 000010
【図９】
2015022516.tif 000011
【図１０】
2015022516.tif 000012
【図１１】
2015022516.tif 000013
【図１２】
2015022516.tif 000014
【図１３】
2015022516.tif 000015
【図１４】
2015022516.tif 000016
【図１５】
2015022516.tif 000017
【図１６】
2015022516.tif 000018
【図１７】
2015022516.tif 000019
【図１８】
2015022516.tif 000020
【図１９】
2015022516.tif 000021
【図２０】
2015022516.tif 000022