JP2015022516A - 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 - Google Patents

記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 Download PDF

Info

Publication number
JP2015022516A
JP2015022516A JP2013150003A JP2013150003A JP2015022516A JP 2015022516 A JP2015022516 A JP 2015022516A JP 2013150003 A JP2013150003 A JP 2013150003A JP 2013150003 A JP2013150003 A JP 2013150003A JP 2015022516 A JP2015022516 A JP 2015022516A
Authority
JP
Japan
Prior art keywords
memory
backup
system information
information
host computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013150003A
Other languages
English (en)
Inventor
塁 阪井
Rui Sakai
塁 阪井
敬一 筒井
Keiichi Tsutsui
敬一 筒井
藤波 靖
Yasushi Fujinami
靖 藤波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2013150003A priority Critical patent/JP2015022516A/ja
Priority to US14/318,927 priority patent/US9542270B2/en
Priority to CN201410332356.5A priority patent/CN104298626B/zh
Publication of JP2015022516A publication Critical patent/JP2015022516A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】システムを動作させるためのシステム情報を保全して、システムの動作を正常に行う。【解決手段】エラー検出訂正部は、システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行う。制御部は、検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給する。また、制御部は、検出訂正処理に失敗した場合にはシステム情報のバックアップを第1のメモリとは異なる第2のメモリから読み出して、ホストコンピュータに供給する。【選択図】図3

Description

本技術は、複数種類のメモリを扱う記憶制御装置に関する。詳しくは、システムを動作させるためのシステム情報を複数種類のメモリに記憶する記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
情報処理システムにおいては、システムを起動するために必要な起動情報が予め用意され、起動時にその起動情報を読み出すように構成される。この起動情報は、ディスクや不揮発性メモリのような不揮発性の記録媒体に記憶され、起動時に主記憶上に展開されるのが一般的である。また、システムを動作させるためのシステム情報についても同様である。例えば、ブートプログラムを圧縮して不揮発性メモリに格納しておき、電源投入時にそのブートプログラムを伸張しながらRAMに展開する電子機器が開示されている(例えば、特許文献1参照。)。
特開2006−072989号公報
上述の従来技術では、不揮発性メモリに格納された起動情報を起動時に読み出して、主記憶上に展開している。起動情報はシステムの起動のたびに読み出される情報であり、通常のデータに比べて読み出し回数が多くなる。不揮発性メモリにおいては、読出し回数の多いセルほど劣化する場合があり、その場合にはエラー訂正を施しても正常に読み出すことが困難となるおそれがある。
本技術はこのような状況に鑑みて生み出されたものであり、システムを動作させるためのシステム情報を保全して、システムの動作を正常に行うことを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを第2のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する記憶制御装置およびその記憶制御方法である。これにより、システム情報の読出しに失敗した場合にそのバックアップを利用するという作用をもたらす。
また、この第1の側面において、上記第2のメモリに圧縮されて記憶されている上記システム情報のバックアップを伸張して上記制御部に供給する伸張部をさらに具備してもよい。これにより、圧縮されたバックアップを利用して第2のメモリの記憶容量を効率化するという作用をもたらす。
また、この第1の側面において、上記第2のメモリから読み出された上記システム情報のバックアップの検出訂正処理を行う第2のエラー検出訂正部をさらに具備し、上記制御部は、上記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として上記ホストコンピュータに供給するようにしてもよい。これにより、バックアップの保全性を高めるという作用をもたらす。
また、この第1の側面において、上記制御部は、上記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として上記第1のメモリに記憶させてもよい。これにより、検出訂正処理に失敗したシステム情報を修復するという作用をもたらす。
また、この第1の側面において、上記制御部は、上記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を上記ホストコンピュータに通知するようにしてもよい。これにより、例外的処置を促すという作用をもたらす。
また、この第1の側面において、上記第2のエラー検出訂正部は、上記エラー検出訂正部より高いエラー検出訂正能力を有するものであることが望ましい。これにより、バックアップの保全性を高めるという作用をもたらす。
また、この第1の側面において、上記制御部は、上記システム情報の更新が指示された場合には新たに指示されたシステム情報を上記第1および第2のメモリに記憶させてもよい。これにより、システム情報を更新するという作用をもたらす。
また、この第1の側面において、上記制御部は、上記検出訂正処理に失敗した場合には上記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して上記システム情報として上記ホストコンピュータに供給してもよい。これにより、複数のバックアップから任意のものを指定してシステム情報として利用するという作用をもたらす。
また、この第1の側面において、上記制御部は、上記選択されたバックアップを上記システム情報として上記第1のメモリに記憶させてもよい。これにより、複数のバックアップから任意のものを指定してシステム情報として修復するという作用をもたらす。
また、この第1の側面において、上記第1のメモリに記憶される上記システム情報と上記第2のメモリに記憶される上記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、上記制御部は、上記対応テーブルに基づいて上記システム情報に対応する上記システム情報のバックアップを上記第2のメモリから読み出すようにしてもよい。これにより、他方のメモリの対応するアドレスを認識するという作用をもたらす。
また、この第1の側面において、上記第2のメモリに記憶される上記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、上記制御部は、上記アクセス履歴に基づいて上記システム情報のバックアップの書き直しを上記第2のメモリに指示するようにしてもよい。これにより、アクセス履歴に基づいてバックアップのリフレッシュを行うという作用をもたらす。
また、この第1の側面において、上記制御部は、上記検出訂正処理に失敗した場合に上記システム情報を供給するまでに時間を要する旨を通知するようにしてもよい。これにより、ホストコンピュータが起動情報待ち状態からタイムアウトすることを防ぐという作用をもたらす。
また、この第1の側面において、上記制御部は、上記第1のメモリに記憶される上記システム情報と上記第2のメモリに記憶される上記システム情報のバックアップとを比較して両者が一致しているか否かを確認するようにしてもよい。これにより、バックアップの保全性を向上させるという作用をもたらす。
また、本技術の第2の側面は、システムを動作させるためのシステム情報を記憶する第1のメモリと、上記システム情報のバックアップを記憶する第2のメモリと、上記システム情報を上記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを上記第2のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する記憶装置である。これにより、システム情報の読出しに失敗した場合にそのバックアップを供給するという作用をもたらす。
また、この第2の側面において、上記第1および第2のメモリは不揮発性メモリであり、上記第1のメモリは、上記第2のメモリよりも読出し処理時間が短いことが望ましい。これにより、正常動作時のシステム情報の読出しを高速に行うという作用をもたらす。
また、本技術の第3の側面は、ホストコンピュータと、情報処理システムを動作させるためのシステム情報を記憶する第1のメモリと、上記システム情報のバックアップを記憶する第2のメモリと、上記システム情報を上記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、上記検出訂正処理に成功した場合にはそのシステム情報を上記ホストコンピュータに供給し、上記検出訂正処理に失敗した場合には上記システム情報のバックアップを上記第2のメモリから読み出して上記ホストコンピュータに供給する制御部とを具備する情報処理システムである。これにより、システム情報の読出しに失敗した場合にそのバックアップを利用して動作を行うという作用をもたらす。
本技術によれば、システムを動作させるためのシステム情報を保全して、システムの動作を正常に行うことができるという優れた効果を奏し得る。
本技術の実施の形態における情報処理システムの構成概要を示す図である。 本技術の実施の形態における高速不揮発性メモリ400として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。 本技術の第1の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第1の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。 本技術の第2の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第2の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。 本技術の第3の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第3の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。 本技術の第4の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第4の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第5の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。 本技術の第6の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第6の実施の形態における高速不揮発性メモリ400の起動情報更新処理の処理手順の一例を示す流れ図である。 本技術の第6の実施の形態における低速不揮発性メモリ300のバックアップの記憶処理の処理手順の一例を示す流れ図である。 本技術の第1の変形例におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第1の変形例におけるメモリシステムモジュール500の他の構成例を示す図である。 本技術の第2の変形例におけるメモリシステムモジュール500の構成例を示す図である。 本技術の第3の変形例におけるメモリシステムモジュール500の構成例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(起動情報の更新なし、メモリコントローラ主導)
2.第2の実施の形態(起動情報の更新なし、ホストコンピュータ主導)
3.第3の実施の形態(起動情報の更新あり、メモリコントローラ主導)
4.第4の実施の形態(起動情報の更新あり、ホストコンピュータ主導)
5.第5の実施の形態(起動情報の複数バックアップ、メモリコントローラ主導)
6.第6の実施の形態(起動情報の複数バックアップ、ホストコンピュータ主導)
7.変形例
<1.第1の実施の形態>
[情報処理システムの概要]
図1は、本技術の実施の形態における情報処理システムの構成概要を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、低速不揮発性メモリ300と、高速不揮発性メモリ400とから構成される。メモリコントローラ200、低速不揮発性メモリ300および高速不揮発性メモリ400は、メモリシステムモジュール500を構成する。
ホストコンピュータ100は、メモリシステムモジュール500に対してデータのリード処理やライト処理等を要求するコマンドを発行するものである。
メモリコントローラ200は、ホストコンピュータ100と通信してコマンドを受信し、低速不揮発性メモリ300または高速不揮発性メモリ400に対するアクセスを行うものである。メモリコントローラ200は、ライトコマンドを受信した場合、ホストコンピュータ100から受信したデータを、低速不揮発性メモリ300または高速不揮発性メモリ400に書き込むよう指示する。また、メモリコントローラ200は、リードコマンドを受信した場合、低速不揮発性メモリ300または高速不揮発性メモリ400からデータを読み出してホストコンピュータ100に転送する。
メモリコントローラ200は、高速不揮発性メモリ400と低速不揮発性メモリ300のエラー訂正符号(ECC:Error Correction Code)の生成処理を行うとともに、ECCを用いたエラー検出訂正処理を行う。すなわち、データの書込み時にはそれぞれに対応したパリティを付加して書き込む(以下、符号化と称する場合がある。)。また、データの読出し時にはデータおよびパリティに基づいてエラーの検出訂正を行う(以下、復号と称する場合がある。)。なお、エラー訂正符号(ECC)は、情報およびパリティによって構成される。
低速不揮発性メモリ300および高速不揮発性メモリ400は、ともに不揮発性のメモリ(NVM:Non-Volatile Memory)である。高速不揮発性メモリ400は、低速不揮発性メモリ300よりも読出し処理時間が短いという性質を有する。低速不揮発性メモリ300(以下、低速NVMと略す場合がある。)としては、例えば、NANDフラッシュメモリを想定する。また、高速不揮発性メモリ400(以下、高速NVMと略す場合がある。)としては、例えば、抵抗変化型不揮発性メモリを想定する。なお、高速不揮発性メモリ400は、特許請求の範囲に記載の第1のメモリの一例である。また、低速不揮発性メモリ300は、特許請求の範囲に記載の第2のメモリの一例である。なお、以下では、低速不揮発性メモリ300および高速不揮発性メモリ400は異なるメモリであるものと想定して説明するが、物理的に同じメモリを2つの領域に分けて低速不揮発性メモリ300および高速不揮発性メモリ400として機能させることも可能である。例えば、1つの高速不揮発性メモリにおいて、バックアップに対して圧縮を施してさらに訂正能力の高い誤り訂正符号化を施した場合、ホストコンピュータ100からはバックアップの方が読出し処理時間が長いようにみえる。したがって、このようなバックアップの領域については低速不揮発性メモリとして取り扱うことが可能である。
本技術の実施の形態においては、高速不揮発性メモリ400に起動情報を記憶しておいて、システム起動時にこれを読み出してホストコンピュータ100に供給することを想定する。起動情報は、システムを起動するために必要な情報であり、例えば、起動プログラム、オペレーティングシステム、メインアプリケーションプログラムなどが含まれる。起動情報を高速不揮発性メモリ400に保持することにより、読出しを速くして、システムの起動を高速化することができる。なお、以下ではシステム起動時に起動情報を読み出す例について説明するが、起動時に読み出される情報だけではなく、システムを動作させるためのシステム情報にも本技術を広く適用することができる。例えば、起動後に高い頻度で用いられるその他のアプリケーションプログラムもシステム情報の一例である。すなわち、特許請求の範囲に記載のシステム情報は起動情報を含む広い概念である。
一方、高速アクセスを要しないデータについては低速不揮発性メモリ300に保持することによって、高価な高速不揮発性メモリ400と比較的安価な低速不揮発性メモリ300とを使い分け、システム構成における性能と価格の最適化を図る。
また、本技術の実施の形態においては、起動情報のバックアップを低速不揮発性メモリ300に記憶しておく。これにより、高速不揮発性メモリ400からの起動情報の読出しに失敗した際に、必要な起動情報をホストコンピュータ100に供給し、システムを正常に起動することができる。
低速不揮発性メモリ300のアクセスを高速化するために、低速不揮発性メモリ300に記憶するデータを圧縮して、データサイズを小さくしてもよい。これにより、アクセス領域を削減するとともに、処理を高速化することができる。低速不揮発性メモリ300の書込みや読出しに要する処理時間は長いため、圧縮または伸張処理による処理時間の増加を考慮しても、低速不揮発性メモリ300の書込み時間および読出し時間を短縮することができる。
なお、本技術の実施の形態においては、圧縮は可逆圧縮を意味する。可逆圧縮を施す単位は任意である。すなわち、起動情報全体を単位として、まとめて可逆圧縮を施してもよい。また、起動プログラム、オペレーティングシステム、メインアプリケーションプログラムごとに圧縮を施してもよい。また、それぞれの属性に応じてさらに細分化して圧縮を施してもよい。また、高速不揮発性メモリ400のページサイズ等のアクセス区分を単位として圧縮を施してもよい。
[高速不揮発性メモリの抵抗状態]
図2は、本技術の実施の形態における高速不揮発性メモリ400として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。抵抗変化型不揮発性メモリは、セット動作により低抵抗状態(LRS:Low Resistance State)に遷移し、リセット動作により高抵抗状態(HRS:High Resistance State)に遷移する。抵抗変化型不揮発性メモリからデータを読み出す場合、リード閾値で示したリファレンス抵抗値を基準として抵抗状態を判断する。
セット動作とリセット動作ではセルに対して印加される電圧の方向が互いに逆方向となる。読出しの際には、読出し対象となったセルに対してリセット動作と同方向に弱い電圧を印加する。読出し処理は、弱い書込み処理であると考えることができ、読出しによりセルは劣化する。したがって、読出し回数の多いセルは保持特性が悪い傾向になる。
低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、1つのメモリセルによって1ビットを記憶することが可能なメモリが実現される。電圧の印加を止めた後もデータは保持されるため不揮発性メモリとして機能する。以下では、低抵抗状態のセルから読み出されるデータを「1」とし、高抵抗状態から読み出されるデータを「0」とした例について説明するが、これらは何れに対応付けても構わない。
[メモリシステムモジュールの構成]
図3は、本技術の第1の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。なお、この図では煩雑さ回避のために、実施の形態の説明に必要な回路構成と信号線のみを記しているが、システム構成に必要なその他の回路と信号線を備えてもよい。
高速不揮発性メモリ400は2つの領域を有しており、第1の領域は起動のためのブート領域、第2の領域はその他の領域となっている。ブート領域には製品出荷時に起動情報410が記憶されている。ホストコンピュータ100がメモリシステムモジュール500に起動情報の読出し指令を発行すると、メモリコントローラ200の制御回路210は、対応テーブルを参照して、ブート領域に記憶された起動情報410を読み出す。第2の領域には、起動情報以外の任意のデータを記憶することができる。例えば、高速アクセスが要求されるデータをこの高速不揮発性メモリ400に記憶してもよい。また、低速不揮発性メモリ300に記憶されているデータのコピーをキャッシュとして記憶してもよい。低速不揮発性メモリ300は書込みに比較的長い時間を要するため、書込み中に電源遮断が起きるとデータを損失することがある。そのため、低速不揮発性メモリ300に書き込む前に、高速不揮発性メモリ400に一時的にキャッシュとして書き込むことでデータ損失を防ぐことができる。
低速不揮発性メモリ300は2つの領域を有しており、第1の領域はブート領域として圧縮してバックアップした起動情報を記憶する領域、第2の領域はユーザデータの記憶領域となっている。ブート領域には、製品出荷時に高速不揮発性メモリ400に記憶した起動情報を圧縮したバックアップ310が記憶される。高速不揮発性メモリ400から起動情報410を読み出す際に、起動情報410が破損していた場合には、低速不揮発性メモリ300に記憶されたバックアップ310が読み出される。第2の領域にはユーザデータが記憶されるが必要に応じて他のデータを記憶してもよい。
なお、低速不揮発性メモリ300および高速不揮発性メモリ400に記憶するデータにはホストコンピュータ100から転送されるユーザデータの他、低速不揮発性メモリ300および高速不揮発性メモリ400の管理情報が含まれる。ここでは、便宜上、管理情報の信号経路を省略している。
この第1の実施の形態において、メモリコントローラ200は、制御回路210と、ECC生成部221および222と、エラー検出訂正部231および232と、伸張回路240と、選択器251、252および260とを備える。
制御回路210は、メモリコントローラ200における各種の動作を制御する回路である。この制御回路210は、ホストコンピュータ100からの指令を解釈する機能を有する。また、この制御回路210は、エラー検出訂正部231および232における検出訂正処理結果に基づいて、低速不揮発性メモリ300および高速不揮発性メモリ400に対するアクセス制御を行う。また、この制御回路210は、後述する起動情報修復中フラグや起動情報修復成功フラグを通じて、メモリシステムモジュール500の状態をホストコンピュータ100に通知する。また、この制御回路210は、選択器251および260に対して選択信号を供給する。
また、この制御回路210は、低速不揮発性メモリ300と高速不揮発性メモリ400における領域の対応関係を示す対応テーブルを保持し、高速不揮発性メモリ400のブート領域に対応する低速不揮発性メモリ300のブート領域を認識する機能を有する。この第1の実施の形態では、高速不揮発性メモリ400から起動情報410の読出しに失敗した場合に、制御回路210が低速不揮発性メモリ300からバックアップ310の読出しを開始する。バックアップ310は、低速不揮発性メモリ300のブート領域に記憶されており、制御回路210はブート領域を自動的に判断して読出しを開始する。高速不揮発性メモリ400と低速不揮発性メモリ300のブート領域の対応は、ホストから対応関係を指示されるのではなく、制御回路210の対応テーブルを用いて、自動的に対応関係が認識される。
高速不揮発性メモリ400のブート領域に対応する低速不揮発性メモリ300のブート領域を認識するための対応テーブルは、予め仕様で規定されているか、または、管理情報に含まれているものとする。対応テーブルが仕様において一意に定まる場合には、ハードウェアやROMデータとして有してもよい。予め定めない場合には、管理情報として高速不揮発性メモリ400または低速不揮発性メモリ300に記憶された情報として、メモリシステムモジュール500の電源投入後に自動的に読み出されるようにしてもよい。
高速不揮発性メモリ400の起動情報410のアドレスと、それに対応する低速不揮発性メモリ300のバックアップ310のアドレスとの対応関係は、圧縮を施す単位に依存する。例えば、起動プログラム、OS、メインアプリケーションプログラムの3つに分けて圧縮を施した場合に、対応するバックアップ310を低速不揮発性メモリ300から読み出すためには、アドレスの対応関係が必要となる。
ECC生成部221は、低速不揮発性メモリ300に書き込むデータについてECCを生成するものである。このECC生成部221により生成されたECCのパリティはデータと関連付けてECCとして低速不揮発性メモリ300に書き込まれる。
ECC生成部222は、高速不揮発性メモリ400に書き込むデータについてECCを生成するものである。このECC生成部222により生成されたECCのパリティはデータと関連付けてECCとして高速不揮発性メモリ400に書き込まれる。
エラー検出訂正部231は、低速不揮発性メモリ300から読み出されたECCに基づいてエラーの検出訂正処理を行うものである。この検出訂正処理の成否は信号線238を介して制御回路210に通知される。エラーが検出されなければ、検出訂正処理としては成功したことになる。エラーが検出されてもそのエラーを訂正することができた場合には検出訂正処理は成功したことになる。一方、検出されたエラーを訂正することができなかった場合には検出訂正処理は失敗になる。なお、エラー検出訂正部231は、特許請求の範囲に記載の第2のエラー検出訂正部の一例である。
エラー検出訂正部232は、高速不揮発性メモリ400から読み出されたECCに基づいてエラーの検出訂正処理を行うものである。この検出訂正処理の成否は信号線239を介して制御回路210に通知される。なお、エラー検出訂正部232は、特許請求の範囲に記載のエラー検出訂正部の一例である。
伸張回路240は、エラー検出訂正部231によって検出訂正処理が施されたデータを伸張するものである。この伸張回路240は、入力されたデータが圧縮されたものであることを前提として、その圧縮を元に戻すための伸張処理を行う。
選択器251は、エラー検出訂正部231によって検出訂正処理が施されたデータ、または、伸張回路240によって伸張されたデータの何れか一方を選択するものである。この選択器251は、信号線259を介して制御回路210から指示された選択信号に従って選択を行う。
選択器252は、ホストコンピュータ100から指示された書込みデータ、または、選択器251の出力の何れか一方を選択するものである。この選択器252は、選択器251から指示された選択信号に従って選択を行う。
選択器260は、エラー検出訂正部232によって検出訂正処理が施されたデータ、または、選択器251の出力の何れか一方を選択するものである。この選択器260は、信号線269を介して制御回路210から指示された選択信号に従って選択を行う。
この第1の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131乃至132を備える。信号線110は低速不揮発性メモリ300または高速不揮発性メモリ400からの読出しデータをホストコンピュータ100に供給するものである。この読出しデータには起動情報も含まれる。信号線120は低速不揮発性メモリ300または高速不揮発性メモリ400への書込みデータをホストコンピュータ100から供給するものである。
信号線131は、起動情報の読出し指令をホストコンピュータ100から指示するためのものである。信号線132は、起動情報の修復中である旨を示す起動情報修復中フラグをホストコンピュータ100に通知するためのものである。信号線133は、起動情報の修復に成功した旨を示す起動情報修復成功フラグをホストコンピュータ100に通知するためのものである。
なお、ここではインターフェースとしてそれぞれ専用の信号線を利用する例について示したが、コマンドによる指令、レジスタポーリングによる処理状態確認、別ポートとの共有等により同一の情報を伝送できるのであれば、他の手段により実現してもよい。また、図の煩雑さ回避のために省略しているが、コマンドアドレスの伝送機能などメモリシステムモジュール500が具備する機能は、情報処理システムとしても同様に具備するものとする。同図では選択器を明示するために単方向通信インターフェースの例を示したが、双方向通信インターフェースを利用してもよい。
[メモリシステムモジュールの動作]
図4は、本技術の第1の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。
まず、ホストコンピュータ100は、起動情報の読出し指令をメモリシステムモジュール500に発行する(ステップS911)。制御回路210は、ホストコンピュータ100から発行された起動情報の読出し指令を解釈して、高速不揮発性メモリ400から起動情報410の読出し制御を行う(ステップS912)。エラー検出訂正部232は、高速不揮発性メモリ400から読み出された起動情報410についてエラーの検出訂正処理を行い、信号線239を介して検出訂正処理の成否を制御回路210に通知する(ステップS913)。
検出訂正処理に成功した場合(ステップS914:Yes)、制御回路210は信号線269を介して選択器260を制御して、エラー検出訂正部232から出力された起動情報をホストコンピュータ100に出力する(ステップS915)。ホストコンピュータ100は、この起動情報を用いて起動処理を行う(ステップS916)。
検出訂正処理に失敗した場合(ステップS914:No)、制御回路210は信号線132を介して、起動情報が修復中であり、起動情報の供給までに時間を要する旨をホストコンピュータ100に通知する(ステップS921)。この通知は、ホストコンピュータ100が起動情報待ち状態からタイムアウトしないようにするためである。そして、制御回路210は、低速不揮発性メモリ300から圧縮された起動情報のバックアップ310の読み出し制御を行う(ステップS922)。エラー検出訂正部231は、低速不揮発性メモリ300から読み出されたバックアップ310についてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS923)。
検出訂正処理に成功した場合(ステップS924:Yes)、伸張回路240はエラー検出訂正部231から出力されたバックアップを伸張する(ステップS931)。制御回路210は、信号線259および269を介して選択器251および260を制御して、伸張回路240の出力を起動情報としてホストコンピュータ100に出力する(ステップS932)。また、選択器251からの信号線258により選択器252が制御され、選択器251の出力がECC生成部222に供給される。これにより、ECC生成部222は選択器252の出力についてECCを生成する(ステップS935)。制御回路210は、高速不揮発性メモリ400の起動情報410を修復するために、選択器252の出力に基づいてECC生成部222によって生成されたECCを高速不揮発性メモリ400に書き込む(ステップS937)。そして、制御回路210は、信号線132および133を介して起動情報の修復が成功して終了した旨をホストコンピュータ100に通知する(ステップS938)。これにより、ホストコンピュータ100は、ステップS932において出力された起動情報を用いて起動処理を行う(ステップS916)。
検出訂正処理に失敗した場合(ステップS924:No)、制御回路210は、信号線132および133を介して起動情報の修復が失敗して終了した旨をホストコンピュータ100に通知する(ステップS925)。これにより、ホストコンピュータ100は、起動処理に失敗し、起動できない旨をユーザに通知する(ステップS926)。
なお、この例では、ステップS935およびS936において高速不揮発性メモリ400の起動情報410の修復を終えてからホストコンピュータ100における起動処理を行っているが、起動情報410の修復と起動処理とを並行して行うようにしてもよい。
また、この例では、起動情報全体をまとめて圧縮することを想定したが、圧縮の単位が小さい場合には圧縮単位毎に逐次、対応テーブルを参照して復旧を行うことも可能である。例えば、ファイル種別ごとに圧縮を施した場合には、高速不揮発性メモリ400から1ファイルずつ読み出してエラー検出訂正処理を行い、1ファイル分の起動情報をホストコンピュータ100に出力して、これらの処理を繰り返すことが考えられる。また、例えば、ページごとに圧縮を施した場合には、高速不揮発性メモリ400から1ページずつ読み出してエラー検出訂正処理を行い、1ページ分の起動情報をホストコンピュータ100に出力して、これらの処理を繰り返すことが考えられる。
このように、本技術の第1の実施の形態によれば、高速不揮発性メモリ400からの起動情報410の読出しに失敗した場合に、低速不揮発性メモリ300から圧縮されたバックアップ310を読み出して伸張することにより、システムを起動することができる。また、伸張されたバックアップ310に基づいて高速不揮発性メモリ400の起動情報410を修復することができる。
[変形例]
なお、この例では、ホストコンピュータ100とメモリコントローラ200との間のインターフェースとして、起動情報修復中フラグおよび起動情報修復成功フラグの専用の信号線を設けたが、レジスタ値のポーリング等、通知可能であれば手段は問わない。また、この例では、ホストコンピュータ100からの起動情報の読出し指令の専用の信号線を設けたが、コマンド等として指令可能であれば手段は問わない。
また、起動情報410とバックアップ310とを比較して一致確認を指令する機能をホストコンピュータ100が有するようにしてもよい。このとき、メモリシステムモジュール500は、一致確認の結果をホストコンピュータ100へ通知する機能を有する。例えば、起動処理が所定回数行われるたびに一致確認を指令することが想定される。また、ホストコンピュータ100は、起動時以外であっても、起動情報の確認手段として、一致確認を指令する機能とその結果の通知を受ける手段を有してもよい。例えば、ホストコンピュータ100において誤訂正が検出された際に一致確認を指令することも想定される。
また、高速不揮発性メモリ400のブート領域と低速不揮発性メモリ300のブート領域の対応テーブルについて、ECCを生成して、誤りビット数に応じて対応テーブルのリフレッシュを行う等の機能を有してもよい。
また、複数のシステムを起動可能なデュアルブートシステムの場合には、それぞれの領域管理テーブルを分割して使い分けるようにすることが考えられる。
また、ここでは、バックアップ310は圧縮されていることを前提として説明したが、未圧縮の状態で低速不揮発性メモリ300に記憶しても構わない。ただし、その場合には、バックアップ310のための記憶容量は圧縮した場合に比べて大きくなる。
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、メモリコントローラ200が主導して起動情報の取得を行っていたが、この第2の実施の形態ではホストコンピュータ100からの指令に従って起動情報を取得するものとする。
[メモリシステムモジュールの構成]
図5は、本技術の第2の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。
この第2の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131、134乃至136を備える。信号線110、120および131については、第1の実施の形態のものと同様である。
信号線134は、バックアップ読出し指令をホストコンピュータ100から指示するためのものである。信号線135は、起動情報の修復指令をホストコンピュータ100から指示するためのものである。信号線136は、起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ100に通知するためのものである。
この第2の実施の形態におけるメモリシステムモジュール500は、作業メモリ270を備える点において第1の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
作業メモリ270は、メモリコントローラ200において行われる様々な処理に関して、必要なデータを一時的に保持するための揮発性メモリである。この作業メモリ270を設けることにより、ホストコンピュータ100からの指令による結果を一時的に保持することができるため、ホストコンピュータ100からの指令に従って各処理を進めることが可能になる。
この第2の実施の形態においては、制御回路210は、起動情報読出し失敗フラグを通じて、メモリシステムモジュール500の状態をホストコンピュータ100に通知する。また、この制御回路210は、信号線257を介して作業メモリ270のアクセス制御を行う。それ以外の点については第1の実施の形態の場合と同様である。
[メモリシステムモジュールの動作]
図6は、本技術の第2の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。
ホストコンピュータ100の起動情報の読出し指令(ステップS911)に対して、正常に起動情報を取得できた場合の起動処理(ステップS916)が行われるまでの処理手順は、第1の実施の形態の場合と同様である。
検出訂正処理に失敗した場合(ステップS914:No)、制御回路210は信号線136を介して起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ100に通知する(ステップS917)。これに対して、ホストコンピュータ100は、信号線134を介して、圧縮された起動情報のバックアップ310の低速不揮発性メモリ300からの読出し指令を発行する(ステップS918)。この指令を解釈した制御回路210は、信号線136の起動情報読出し失敗フラグをリセットする(ステップS919)。これにより、ホストコンピュータ100は、バックアップ310の読出しが開始されたことを知る。そして、制御回路210は、低速不揮発性メモリ300から圧縮された起動情報のバックアップ310の読み出し制御を行う(ステップS922)。エラー検出訂正部231は、低速不揮発性メモリ300から読み出されたバックアップ310についてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS923)。
検出訂正処理に成功した場合(ステップS924:Yes)、伸張回路240はエラー検出訂正部231から出力されたバックアップを伸張する(ステップS931)。制御回路210は、信号線259および269を介して選択器251および269を制御して、伸張回路240の出力を起動情報としてホストコンピュータ100に出力する(ステップS933)。これと同時に、制御回路210は、信号線259を介して選択器251を制御するとともに、信号線257を介して作業メモリ270に書込み制御を行うことにより、伸張回路240の出力(伸張された起動情報)を作業メモリ270に書き込む(ステップS933)。その後、ホストコンピュータ100は、信号線135を介して高速不揮発性メモリ400の起動情報410の修復指令を発行する(ステップS934)。この指令を解釈した制御回路210は、伸張された起動情報を作業メモリ270から読み出して、選択器252からECC生成部222に供給する。これにより、ECC生成部222は選択器252の出力についてECCを生成する(ステップS936)。制御回路210は、高速不揮発性メモリ400の起動情報410を修復するために、選択器252の出力に基づいてECC生成部222によって生成されたECCを高速不揮発性メモリ400に書き込む(ステップS937)。ホストコンピュータ100は、書込みの成否について、状態レジスタの読出し等、通常のデータ書込みの成否確認と同様の手段により知ることができる。これにより、ホストコンピュータ100は、ステップS933において出力された起動情報を用いて起動処理を行う(ステップS916)。
検出訂正処理に失敗した場合(ステップS924:No)、制御回路210は、信号線136の起動情報読出し失敗フラグをリセットすることにより、起動情報の修復が失敗して終了した旨をホストコンピュータ100に通知する(ステップS925)。これにより、ホストコンピュータ100は、起動処理に失敗し、起動できない旨をユーザに通知する(ステップS926)。
なお、この例では、ステップS936およびS937による修復処理を起動処理(ステップS916)の前に行っているが、起動情報は作業メモリ270に保持されているため、ホストコンピュータ100が起動後に修復指令を発行するようにしてもよい。
このように、本技術の第2の実施の形態によれば、起動情報410の読出しに失敗した場合にバックアップ310を読み出す処理をホストコンピュータ100の主導により行うことができる。
[変形例]
なお、この例では、メモリコントローラ200におけるエラー検出訂正処理の失敗を異常として扱っていた。これに対し、エラー検出訂正処理に成功した場合であっても、ホストコンピュータ100自身が起動情報の異常を検知したときには、ホストコンピュータ100が圧縮されたバックアップ310を利用できるようにしてもよい。この異常は、高速不揮発性メモリ400への書込み時にメモリコントローラ200が生成するECCだけではなく、ホストコンピュータ100が起動情報にCRCやチェックサムを付加しておくことによっても検出することができる。
また、ホストコンピュータ100が何らかのユーザインタフェースを有する場合には、ユーザがバックアップの利用および修復を指示することも可能となる。すなわち、ECCの誤判定などシステムが自動的に検出できなかった場合に、ユーザが起動動作の不良を発見して、バックアップ310を利用した起動と、高速不揮発性メモリ400起動情報410の修復を指示することもできる。
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
<3.第3の実施の形態>
上述の第1および第2の実施の形態では、起動情報の内容を更新することなく、出荷時に書き込まれたものを使い続けることを想定していた。これに対し、第3の実施の形態では、必要に応じて起動情報を適宜更新するものとする。
[メモリシステムモジュールの構成]
図7は、本技術の第3の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。
この第3の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131乃至133および137を備える。信号線110、120、131乃至133については、第1の実施の形態のものと同様である。信号線137は、起動情報の書込み指令をホストコンピュータ100から指示するためのものである。
この第3の実施の形態におけるメモリシステムモジュール500は、選択器252に代えて選択器253を備え、新たに圧縮回路241を備える点において第1の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
圧縮回路241は、信号線120を介して供給された書込みデータを圧縮する回路である。選択器253は、圧縮回路241によって圧縮されたデータまたは圧縮されていないデータの何れか一方を選択するものである。選択器253の選択信号は、制御回路210から信号線256を介して与えられる。選択器253の出力はECC生成部221に供給される。
この第3の実施の形態においては、制御回路210は、信号線256を介して選択器253の選択制御を行う。それ以外の点については第1の実施の形態の場合と同様である。
[メモリシステムモジュールの動作]
この第3の実施の形態では、起動情報取得処理の処理手順は上述の第1の実施の形態と同様である。
図8は、本技術の第3の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。
まず、ホストコンピュータ100は、起動情報の書込み指令を発行し、更新後の起動情報をメモリシステムモジュール500に転送する(ステップS941)。制御回路210は、ホストコンピュータ100から発行された起動情報の書込み指令を解釈する(ステップS942)。
高速不揮発性メモリ400に対する書込みは、以下の手順で行われる。ホストコンピュータ100から出力された起動情報は、選択器253を介してそのままECC生成部221に供給される。ECC生成部221はその起動情報についてECCを生成する(ステップS943)。そして、制御回路210は、生成されたECCを高速不揮発性メモリ400に書き込むよう制御する(ステップS944)。
低速不揮発性メモリ300に対する書込みは、以下の手順で行われる。ホストコンピュータ100から発行された起動情報に対して、圧縮回路241が圧縮処理を行う(ステップS948)。圧縮された起動情報は、選択器253を介してECC生成部221に供給される。ECC生成部221はその圧縮された起動情報についてECCを生成する(ステップS951)。そして、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS952)。
なお、この例では、高速不揮発性メモリ400に対する書込みと低速不揮発性メモリ300に対する書込みとを逐次に行うことを想定したが、両者は並行して行うことが可能である。すなわち、ステップS943およびS944と、ステップS948、S951およびS952とを互いに並列に処理してもよい。
また、この例では、ホストコンピュータ100から起動情報の全てが入力されることを前提としたが、更新すべき部分を示す更新ファイルのみを入力するようにしてもよい。この場合、対応テーブルを参照することにより起動情報410の更新部分に対応するバックアップ310のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
また、更新されたページのみが入力された場合にも同様に、対応テーブルを参照することにより起動情報410の更新ページに対応するバックアップ310のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
また、起動情報の全てが入力され、ファイル種別毎に圧縮してバックアップする場合にも同様に、1ファイルずつ対応テーブルを参照することによりそのファイルに対応するバックアップ310のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
また、起動情報の全てが入力され、ページ毎に圧縮してバックアップする場合にも同様に、1ページずつ対応テーブルを参照することによりそのページに対応するバックアップ310のアドレスを取得する。その際、データサイズ等に変更がある場合には、対応テーブルを更新する。
このように、本技術の第3の実施の形態によれば、起動情報410およびバックアップ310を更新することができる。
[変形例]
なお、この例において、圧縮アルゴリズムにより、元のサイズよりも小さくならない場合には、圧縮することなく低速不揮発性メモリ300に書き込んでもよい。その場合には、バックアップ310のヘッダ等に圧縮されているか否を示す圧縮フラグを保持することにより、圧縮の有無を示すことが考えられる。また、対応テーブルにおいて、圧縮フラグを備えるようにしてもよい。また、それ以外の管理情報として圧縮フラグを管理してもよい。読出し時に制御回路210が圧縮フラグを参照して、選択器253を制御することにより、圧縮回路241を通さずにバックアップの起動情報を出力することが可能となる。
また、低速不揮発性メモリ300の圧縮バックアップと高速不揮発性メモリ400の非圧縮情報との比較確認を行うための指令をホストコンピュータ100から発行できるようにしてもよい。第1の実施の形態の場合に加えてこの第3の実施の形態では、圧縮バックアップが破損している場合に、高速不揮発性メモリ400に記憶されていた起動情報を圧縮して、低速不揮発性メモリ300の圧縮バックアップを書き替える機能を有することが想定される。すなわち、低速不揮発性メモリ300のエラー検出訂正処理の失敗やその他の読出し不良が発生した場合、高速不揮発性メモリ400から読み出した起動情報を圧縮して、低速不揮発性メモリ300の圧縮バックアップを書き替えるようにしてもよい。
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
<4.第4の実施の形態>
上述の第3の実施の形態では、メモリコントローラ200が主導して起動情報の更新を行っていたが、この第4の実施の形態ではホストコンピュータ100からの指令に従って起動情報を取得するものとする。
[メモリシステムモジュールの構成]
図9は、本技術の第4の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。
この第4の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131、134、136乃至138を備える。信号線110、120および131については、第1の実施の形態のものと同様である。また、信号線134および136については、第2の実施の形態のものと同様である。また、信号線137については、第3の実施の形態のものと同様である。信号線138は、バックアップ書込み指令をホストコンピュータ100から指示するためのものである。なお、この第4の実施の形態では、第2の実施の形態において起動情報の修復指令のために設けられた信号線135はなく、起動情報の書込み指令のために設けられた信号線137で代用する。
この第4の実施の形態におけるメモリシステムモジュール500は、選択器252に代えて選択器253を備え、新たに圧縮回路242を備える点において第2の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
圧縮回路242は、作業メモリ270に保持された書込みデータを圧縮する回路である。選択器253は、圧縮回路242によって圧縮された書込みデータまたは信号線120を介して供給された書込みデータの何れか一方を選択するものである。選択器253の選択信号は、制御回路210から信号線256を介して与えられる。選択器253の出力はECC生成部221に供給される。
この第4の実施の形態においては、制御回路210は、信号線256を介して選択器253の選択制御を行う。それ以外の点については第2の実施の形態の場合と同様である。
[メモリシステムモジュールの動作]
この第4の実施の形態では、起動情報取得処理の処理手順は上述の第2の実施の形態と同様である。
図10は、本技術の第4の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。
ホストコンピュータ100の起動情報の書込み指令(ステップS941)に対して、高速不揮発性メモリ400に対する書込み処理(ステップS944)が行われるまでの処理手順は、第3の実施の形態の場合と同様である。
低速不揮発性メモリ300に対する書込みは、以下の手順で行われる。制御回路210は、信号線279を介して作業メモリ270を制御して、ホストコンピュータ100から出力された起動情報を作業メモリ270に書き込む(ステップS945)。その後、ホストコンピュータ100は、信号線138を介して、バックアップ書込み指令を発行する(ステップS946)。この指令を解釈した制御回路210は、信号線279を介して作業メモリ270を制御して、作業メモリ270から起動情報を読み出す(ステップS947)。圧縮回路242は、読み出された起動情報を圧縮する(ステップS949)。圧縮された起動情報は、選択器253を介してECC生成部221に供給される。ECC生成部221はその圧縮された起動情報についてECCを生成する(ステップS951)。そして、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS952)。
なお、この例では、高速不揮発性メモリ400に対する書込みと低速不揮発性メモリ300に対する書込みとを逐次に行うことを想定したが、両者は並行して行うことが可能である。すなわち、ステップS943およびS944と、ステップS945乃至S952とを互いに並列に処理してもよい。
このように、本技術の第4の実施の形態によれば、起動情報410およびバックアップ310の更新処理をホストコンピュータ100の主導により行うことができる。
<5.第5の実施の形態>
上述の第3および第4の実施の形態では、バックアップ310が更新される際には上書きされて常に1つが残るよう構成されていたが、この第5の実施の形態ではバックアップの履歴が低速不揮発性メモリ300に残されていくものとする。
[メモリシステムモジュールの構成]
図11は、本技術の第5の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。
この第5の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131、134、136、137および139を備える。信号線110、120および131については、第1の実施の形態のものと同様である。また、信号線134および136については、第2の実施の形態のものと同様である。また、信号線137については、第3の実施の形態のものと同様である。信号線139は、履歴テーブル読出し指令をホストコンピュータ100から指示するためのものである。
この第5の実施の形態では、上述の第3および第4の実施の形態とは異なり、低速不揮発性メモリ300に複数の圧縮バックアップを履歴テーブル320として記憶する。また、ホストコンピュータ100は、メモリシステムモジュール500が複数の圧縮バックアップを記憶していることを知ることができる機能を有する。また、ホストコンピュータ100は、メモリシステムモジュール500が出力する履歴テーブルを通じて、任意のバージョンを指定することができる機能を有する。履歴テーブルは、複数の圧縮バックアップのバージョン番号や更新時刻などの、ホストコンピュータ100が圧縮バックアップの素性を知ることのできる情報を含む。また、低速不揮発性メモリ300のブート領域において、それぞれの圧縮バックアップが記憶されたアドレス等を示すアドレス情報も含む。
この第5の実施の形態におけるメモリシステムモジュール500は、履歴テーブル生成部215および選択器254を備える点において第3の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。
履歴テーブル生成部215は、低速不揮発性メモリ300のブート領域に保持されていた履歴テーブルに対して、低速不揮発性メモリ300の圧縮されたバックアップ310を更新する際に、バックアップのバージョン番号等の履歴を追記するものである。低速不揮発性メモリ300のブート領域に新規の起動情報のバックアップを記憶する領域がなければ、履歴テーブル生成部215が自動的に最も古いバージョンを上書きする。または、ホストコンピュータ100が書込み先を指定することによって既存のバージョンを上書きして、書込み領域を確保するようにしてもよい。
選択器254は、履歴テーブル生成部215によって生成されて信号線248を介して供給された履歴テーブル、または、選択器253の出力の何れか一方を選択してECC生成部221に供給するものである。この選択器254に対する制御は、信号線255を介して制御回路210が行う。
この第5の実施の形態においては、制御回路210は、起動情報読出し失敗フラグを通じて、メモリシステムモジュール500の状態をホストコンピュータ100に通知する。また、制御回路210は、信号線255を介して選択器254における選択処理を制御する。
[メモリシステムモジュールの動作]
図12は、本技術の第5の実施の形態におけるメモリシステムモジュール500の起動情報取得処理の処理手順の一例を示す流れ図である。
ホストコンピュータ100の起動情報の読出し指令(ステップS811)に対して、正常に起動情報を取得できた場合の起動処理(ステップS816)が行われるまでの処理手順は、第1の実施の形態の場合(ステップS911乃至S916)と同様である。
検出訂正処理に失敗した場合(ステップS814:No)、制御回路210は信号線136を介して起動情報の読出しに失敗した旨を示す起動情報読出し失敗フラグをホストコンピュータ100に通知する(ステップS817)。これに対して、ホストコンピュータ100は、信号線139を介して、低速不揮発性メモリ300からの履歴テーブル読出し指令をメモリシステムモジュール500に発行する(ステップS818)。この指令を解釈した制御回路210は、低速不揮発性メモリ300から履歴テーブルの読出し制御を行う(ステップS819)。エラー検出訂正部231は、低速不揮発性メモリ300から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS821)。
検出訂正処理に成功した場合(ステップS822:Yes)、制御回路210は、信号線259および269を介して選択器251および269を制御して、履歴テーブルをホストコンピュータ100に出力する(ステップS831)。その後、ホストコンピュータ100は、履歴テーブルから圧縮バックアップのバージョンを1つ選択して、信号線134を介して、指定バージョンとともにバックアップ読出し指令を発行する(ステップS832)。制御回路210は、バックアップ読出し指令を解釈して、指定されたバージョンの読出し制御を行う(ステップS833)。エラー検出訂正部231は、読み出されたバックアップについてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS834)。
検出訂正処理に成功した場合(ステップS835:Yes)、制御回路210は、信号線259および269を介して選択器251および260を制御して、伸張回路240の出力を起動情報としてホストコンピュータ100に出力する(ステップS836)。また、ECC生成部222は、伸張回路240が伸張した圧縮してバックアップされた起動情報のECCを生成する(ステップS837)。制御回路210は、高速不揮発性メモリ400の起動情報410を修復するために、ECC生成部222によって生成されたECCを高速不揮発性メモリ400に書き込む(ステップS838)。これにより、ホストコンピュータ100は、ステップS836において出力された起動情報を用いて起動処理を行う(ステップS816)。
検出訂正処理に失敗した場合(ステップS822またはS835:No)、制御回路210は、信号線136を介してバックアップの読出しに失敗し、起動情報の修復に失敗した旨をホストコンピュータ100に通知する(ステップS823)。これにより、ホストコンピュータ100は、起動処理に失敗し、起動できない旨をユーザに通知する(ステップS824)。
図13は、本技術の第5の実施の形態におけるメモリシステムモジュール500の起動情報更新処理の処理手順の一例を示す流れ図である。
ホストコンピュータ100の起動情報の書込み指令(ステップS961)に対して、高速不揮発性メモリ400に対する書込み処理(ステップS964)が行われるまでの処理手順は、第3の実施の形態の場合(ステップS941乃至S944)と同様である。
この図では、高速不揮発性メモリ400に対する書込みと低速不揮発性メモリ300に対する書込みとを並列に行うことを想定する。低速不揮発性メモリ300に対する書込みは、以下の手順で行われる。ホストコンピュータ100から発行された起動情報に対して、圧縮回路241が圧縮処理を行う(ステップS965)。このとき、制御回路210は、圧縮された起動情報がECC生成部221に入力されるように信号線255および256を制御する。制御回路210は、低速不揮発性メモリ300から履歴テーブルの読出し制御を行う(ステップS966)。エラー検出訂正部231は、低速不揮発性メモリ300から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS967)。
検出訂正処理に成功した場合(ステップS968:Yes)、履歴テーブル生成部215は、履歴テーブルから低速不揮発性メモリ300におけるブート領域の空きを確認する(ステップS969)。容量に追記分の空きがある場合は(ステップS969:Yes)、履歴テーブル生成部215は、履歴テーブルに対して、新規に書き込む圧縮バックアップのバージョン番号、時刻、ブート領域内のアドレスを追記する(ステップS971)。なお、圧縮バックアップがファイル毎やページ毎になる場合には、起点となるアドレスのみを履歴テーブルに記憶しておき、詳細なアドレスの対応関係は対応テーブルに記憶する。一方、容量に追記分の空きがない場合は(ステップS969:No)、履歴テーブル生成部215は、履歴テーブルから最古の履歴情報を判断して、新規に書き込む圧縮バックアップのバージョン番号,時刻、ブート領域内のアドレスを上書き記憶する(ステップS972)。
検出訂正処理に失敗した場合(ステップS968:No)、履歴テーブル生成部215は、履歴テーブルのうち、仕様等で予め定められた初期履歴の領域に、新規に書き込む圧縮バックアップのバージョン番号、時刻、ブート領域内のアドレスを記憶する(ステップS973)。すなわち、検出訂正処理に失敗したことにより、これまでの履歴を失ってしまったため、履歴テーブルを新規に作り直すことと同様の処理を行うことになる。
ステップS971乃至S973の何れかにおいて履歴テーブルを記憶した後、ステップS965において圧縮された起動情報は、選択器253および254を介してECC生成部221に供給される。ECC生成部221はその圧縮された起動情報についてECCを生成する(ステップS974)。そして、制御回路210は、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS975)。
制御回路210は、信号線255を制御して、履歴テーブルをECC生成部221に入力する(ステップS976)。ECC生成部221はその履歴テーブルについてECCを生成する(ステップS977)。そして、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS978)。
なお、この例では、高速不揮発性メモリ400に対する書込みと低速不揮発性メモリ300に対する書込みとを並列に行うことを想定したが、両者は逐次に行ってもよい。
また、ブート領域に空きがない場合に最古の履歴を上書きしたが(ステップS972)、メモリシステムモジュール500から空き領域がない旨をホストコンピュータ100に通知して、ホストコンピュータ100が上書きする領域を指定する機能を有してもよい。
また、この例では、高速不揮発性メモリ400のブート領域を修復した後に、ホストコンピュータ100の起動処理を実施していたが、高速不揮発性メモリ400のブート領域の修復とホストコンピュータ100の起動処理とを並行して実施してもよい。
また、この例では、バックアップのエラー検出訂正処理に失敗すると修復失敗として扱っいた。しかし、バックアップは複数保持しているため、ホストコンピュータ100が他のバージョンを指定して修復を試みるようにしてもよい。
このように、本技術の第5の実施の形態によれば、起動情報のバックアップの履歴を低速不揮発性メモリ300に記憶することができる。
[変形例]
この例では、低速不揮発性メモリ300のブート領域に空きがなくなった場合に、最古の領域を自動的に上書きしたが、ホストコンピュータ100から上書きする領域を指定してもよい。その場合、メモリシステムモジュール500は、ホストコンピュータ100に対して空き領域がない旨を通知する機能を有する。また、ホストコンピュータ100は通知を受けて、履歴テーブルの中から上書きすべきバージョンの指定をメモリシステムモジュール500に指示する機能を有する。
また、この例では、履歴テーブルを低速不揮発性メモリ300に記憶したが、高速不揮発性メモリ400に記憶してもよい。また、メモリシステムモジュール500が他の記録媒体を有している場合には、その記録媒体に記憶してもよい。
なお、ここに示した変形例は、他の実施の形態にも適用することができる。
<6.第6の実施の形態>
上述の第5の実施の形態では、メモリコントローラ200が主導してバックアップの履歴を低速不揮発性メモリ300に記憶していたが、この第6の実施の形態ではホストコンピュータ100からの指令に従ってバックアップの履歴を記憶するものとする。
[メモリシステムモジュールの構成]
図14は、本技術の第6の実施の形態におけるメモリシステムモジュール500の構成例を示す図である。
この第6の実施の形態におけるメモリシステムモジュール500は、ホストコンピュータ100との間のインターフェースとして信号線110、120、131、134、136乃至139を備える。信号線110、120および131については、第1の実施の形態のものと同様である。また、信号線134および136については、第2の実施の形態のものと同様である。また、信号線137については、第3の実施の形態のものと同様である。また、信号線138については、第4の実施の形態のものと同様である。また、信号線139については、第5の実施の形態のものと同様である。
この第6の実施の形態におけるメモリシステムモジュール500は、作業メモリ270を備える点において第5の実施の形態と異なるが、それ以外の点においては基本的には同様の構成を備える。作業メモリ270は、第2の実施の形態および第4の実施の形態と同様の機能を有するメモリである。
この第6の実施の形態においては、制御回路210は、低速不揮発性メモリ300から読み出した対応テーブルに基づいて、高速不揮発性メモリ400のブート領域に対応する低速不揮発性メモリ300のブート領域を自動的に認識する機能を有する。
[メモリシステムモジュールの動作]
この第6の実施の形態では、起動情報取得処理の処理手順は上述の第5の実施の形態と同様である。また、この第6の実施の形態では、メモリシステムモジュール500の起動情報更新処理については、高速不揮発性メモリ400の起動情報の更新と、圧縮バックアップの低速不揮発性メモリ300への記憶とを連動させる必要がないため、両者を分けて示す。
図15は、本技術の第6の実施の形態における高速不揮発性メモリ400の起動情報更新処理の処理手順の一例を示す流れ図である。
まず、ホストコンピュータ100は、起動情報の書込み指令を発行し、更新後の起動情報をメモリシステムモジュール500に転送する(ステップS841)。制御回路210は、ホストコンピュータ100から発行された起動情報の書込み指令を解釈して、作業メモリ270に書き込む(ステップS842)。ECC生成部222は、起動情報のECCを生成する(ステップS843)。そして、制御回路210は、生成されたECCを高速不揮発性メモリ400に書き込むよう制御する(ステップS844)。
図16は、本技術の第6の実施の形態における低速不揮発性メモリ300のバックアップの記憶処理の処理手順の一例を示す流れ図である。
まず、ホストコンピュータ100は、履歴テーブルの読出し指令を発行する(ステップS851)。制御回路210は、低速不揮発性メモリ300から履歴テーブルの読出し制御を行う(ステップS852)。エラー検出訂正部231は、低速不揮発性メモリ300から読み出された履歴テーブルについてエラーの検出訂正処理を行い、信号線238を介して検出訂正処理の成否を制御回路210に通知する(ステップS853)。これに従って、制御回路210は、ホストコンピュータ100に履歴テーブルのエラー検出訂正処理の成否を通知する(ステップS854)。そして、制御回路210は、履歴テーブルのホストコンピュータ100への出力制御を行う(ステップS855)。ホストコンピュータ100は、履歴テーブルを参照して、バックアップの書込み領域を決定する(ステップS856)。
ホストコンピュータ100は、起動情報をメモリシステムモジュール500に転送する(ステップS857)。そして、制御回路210は、ホストコンピュータ100から転送された起動情報を作業メモリ270に記憶する(ステップS858)。なお、これらステップS857およびS858は、ステップS842において起動情報が記憶済であれば省略することができる。
ホストコンピュータ100は、バックアップの書込み領域を指定して、バックアップ書込み指令を、信号線138を介して発行する(ステップS859)。制御回路210は、作業メモリ270に記憶された起動情報を読み出して、圧縮回路242に圧縮させる(ステップS861)。
ステップS853におけるエラー検出訂正処理に失敗した場合(ステップS862:No)、制御回路210は、履歴テーブルを初期化する(ステップS863)。制御回路210は、ホストコンピュータ100から指定された領域の履歴を更新する(ステップS864)。ECC生成部221は、ステップS861において圧縮された起動情報についてECCを生成する(ステップS865)。そして、制御回路210は、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS866)。
制御回路210は、信号線255を制御して、履歴テーブルをECC生成部221に入力する(ステップS867)。ECC生成部221はその履歴テーブルについてECCを生成する(ステップS868)。そして、生成されたECCを低速不揮発性メモリ300に書き込む(ステップS869)。
このように、本技術の第6の実施の形態によれば、起動情報のバックアップの履歴の記憶処理をホストコンピュータ100の主導により行うことができる。
<7.変形例>
[第1の変形例]
上述の各実施の形態では、低速不揮発性メモリ300と高速不揮発性メモリ400における領域の対応関係を示す対応テーブルを制御回路210が保持するものと想定していたが、この対応テーブルを低速不揮発性メモリ300に記憶しておいてもよい。この第1の変形例では、制御回路210は、低速不揮発性メモリ300から読み出した対応テーブルから、高速不揮発性メモリ400のブート領域と低速不揮発性メモリ300のブート領域の対応関係を認識することができる。
図17は、本技術の第1の変形例におけるメモリシステムモジュール500の構成例を示す図である。この構成例は第1の実施の形態をベースとしたものであり、低速不揮発性メモリ300に対応テーブル330を記憶する点において異なっている。
この第1の変形例では、第1の実施の形態をベースとした場合、ステップS922における圧縮された起動情報の読出しの前に、低速不揮発性メモリ300から対応テーブルを読出し、そのECCを生成する処理手順が挿入される。それ以外の点は第1の実施の形態と同様である。
この第1の変形例によれば、出荷時や、それ以降の対応テーブルの生成に対応できるため、圧縮アルゴリズムや起動情報の大きさなど、製品に応じた適切な領域分割が可能となる。
なお、この第1の実施の形態では、出荷時に記憶した起動情報とその圧縮バックアップを使い続けるため、対応テーブルに変化がなかった。第3乃至6の実施の形態のような起動情報の更新があり、対応テーブルにも変更がある場合には、対応テーブルを更新して書き戻す必要がある。その場合の第1の変形例のメモリシステムモジュール500の構成例を図18に示す。制御回路210は、対応テーブルを更新する対応テーブル更新部216を備える。また、メモリコントローラ200は、ホストコンピュータ100からの対応テーブルと制御回路210からの対応テーブルの何れか一方を選択する選択器254を備える。この選択器254は、制御回路210からの信号線255により制御される。対応テーブルに更新があれば、対応テーブル更新部216が更新した対応テーブルが低速不揮発性メモリ300に書き込まれる。
また、この第1の変形例では、対応テーブルを低速不揮発性メモリ300に記憶することを想定したが高速不揮発性メモリ400に記憶してもよく、メモリコントローラ200が何らかの不揮発性メモリを備える場合にはその不揮発性メモリを利用してもよい。また、この第1の変形例では、対応テーブルの誤り耐性強化として、起動情報と同様に、低速不揮発性メモリ300と高速不揮発性メモリ400の両方に記憶するようにしてもよく、その場合、低速不揮発性メモリ300には圧縮して記憶するようにしてもよい。また、対応テーブルは通常のECCに加えて強力なECCにより保護してもよい。
[第2の変形例]
この第2の変形例では、バックアップの誤り耐性強化として、強化されたECCを使用する。
図19は、本技術の第2の変形例におけるメモリシステムモジュール500の構成例を示す図である。この構成例は第1の実施の形態をベースとしたものであり、強化されたエラー検出訂正部281と、エラー検出訂正部281または低速不揮発性メモリ300からのデータの何れか一方を信号線283に従って選択する選択器282をさらに備える。また、低速不揮発性メモリ300には強化されたECCが使用されたバックアップ311が記憶される。
エラー検出訂正部281は、低速不揮発性メモリ300から読み出したバックアップ311のエラー検出訂正処理を行うものである。この例では、エラー検出訂正部281は、制御回路210にエラー検出訂正処理の成否を通知しない。読み出したバックアップ311のエラー検出訂正処理の成否はエラー検出訂正部231において判断される。
この第2の変形例では、第1の実施の形態をベースとした場合、ステップS923における圧縮された起動情報のエラー検出訂正処理の前に、エラー検出訂正部281によるエラー検出訂正の処理手順が挿入される。それ以外の点は第1の実施の形態と同様である。
この第2の変形例によれば、エラー検出訂正部231による通常のエラー検出訂正処理に加えて、エラー検出訂正部281により強化されたエラー検出訂正処理を行うことにより、圧縮して記憶されたバックアップ311を保護して、誤り耐性を強化することができる。ここで、バックアップ311は圧縮しているため、領域には余裕がある。この圧縮によって空いた領域に強化用のECCを追加することにより、圧縮せずにバックアップするよりも誤り耐性を向上させることができる。
なお、この第2の変形例では、エラー検出訂正部281をエラー検出訂正部231と直列に配置したが、これらを並列に配置してエラー検出訂正部231よりも強力なECCを用いてもよい。エラー検出訂正部231による単独のECCよりも高い誤り訂正能力を有するECCの付加方法であれば、いずれの方法を用いてもよい。
[第3の変形例]
この第3の変形例では、圧縮バックアップされた起動情報に管理情報を付随させて、リフレッシュ処理等の状態管理を行う。
図20は、本技術の第3の変形例におけるメモリシステムモジュール500の構成例を示す図である。この構成例は第1の実施の形態をベースとしたものであり、選択器252に代えて選択器253および254を備え、新たに圧縮回路241とアクセス情報管理部214とを備える。また、低速不揮発性メモリ300は、アクセス情報340の記憶領域を有する。
圧縮回路241は、信号線120を介して供給された書込みデータを圧縮する回路である。選択器253は、圧縮回路241によって圧縮されたデータまたは圧縮されていないデータの何れか一方を選択するものである。選択器253の選択信号は、制御回路210から信号線256を介して与えられる。
選択器254は、アクセス情報管理部214によって生成されて信号線247を介して供給されたアクセス情報、または、選択器253の出力の何れか一方を選択してECC生成部221に供給するものである。この選択器254に対する制御は、信号線255を介して制御回路210が行う。
アクセス情報管理部214は、アクセス情報を生成および管理するものである。アクセス情報は、バックアップ310に対してアクセスした履歴に関する情報であり、例えば、バックアップ310を最後に読み出した時刻や読み出した回数等を含むものである。このアクセス情報は、出荷時に初期情報が記憶されており、低速不揮発性メモリ300のブート領域を読み出す際に、このアクセス情報も読み出されて更新された後に再び低速不揮発性メモリ300に書き戻される。
一般に、不揮発性メモリに記憶された情報を保護する手段としてその内容を書き直すリフレッシュ処理が知られている。この第3の変形例において、低速不揮発性メモリ300のブート領域は長期間読み出しがない場合や、読み出し回数が多い場合に、記憶内容の破損が進むおそれがある。そこで、以下のように、ブート領域のアクセス情報を有することにより、記憶からの経過時間や読出し回数に対して閾値を使ったリフレッシュ判定が可能となる。
低速不揮発性メモリ300として想定するNANDフラッシュにおいては、記憶からの経過時間とともに破損確率が高くなることがある。ブート領域を読み出した時刻をアクセス情報として保持しておくと、経過時間から破損確率を推定することができる。例えば、ECCの訂正可能ビット数が破損確率pに基づいて設計されている場合、破損確率がpを上回るとエラー訂正に失敗する可能性がある。一方、ある経過時間の破損確率の推定値をqと仮定すると、q<pである経過時間Tを閾値として予め設定しておき、経過時間がTに達した時点でリフレッシュすることにより、記憶情報の保護が可能となる。
高速不揮発性メモリ400として想定する抵抗変化型メモリにおいては、読出し回数が多いほど、記憶情報の破損確率が高くなることがある。ブート領域を読み出した回数をアクセス情報として保持しておくと、読み出した回数から破損確率を推定することができる。例えば、ECCの訂正可能ビット数が破損確率pに基づいて設計されている場合、破損確率がpを上回ると復号に失敗する可能性がある。一方、ある回数を読み出した後の破損確率の推定値をqと仮定すると、q<pである読出し回数Nを閾値として予め設定しておき、読出し回数がNに達した時点でリフレッシュすることにより、記憶情報の保護が可能となる。
この第3の変形例では、第1の実施の形態をベースとした場合、ステップS922における圧縮された起動情報の読出しの前に、次の3つの処理手順が挿入される。すなわち、アクセス情報を読み出す処理、アクセス情報からリフレッシュを行うか判断する処理、および、リフレッシュの条件を満たした場合にリフレッシュ処理を実行する処理である。それ以外の点は第1の実施の形態と同様である。
この第3の変形例によれば、低速不揮発性メモリ300に記憶されたバックアップの効果的なリフレッシュ処理が可能となり、バックアップの信頼性、システム起動の安全性を向上させることができる。
なお、リフレッシュ処理については、記憶された情報を読み出してそのまま再書込みする手法や、エラー訂正後の値を書き戻す手法等が考えられるが、ここでは何れを採用してもよい。
また、この第3の変形例では、アクセス情報をバックアップとは別領域に記憶することを前提とし、バックアップの読出し制御とは別にアクセス情報の読出し制御を行い、別のECCを有するデータとして扱った。これに対し、他の変形例として、アクセス情報とバックアップとを一括してECCを生成してもよい。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶制御装置。
(2)前記第2のメモリに圧縮されて記憶されている前記システム情報のバックアップを伸張して前記制御部に供給する伸張部をさらに具備する前記(1)に記載の記憶制御装置。
(3)前記第2のメモリから読み出された前記システム情報のバックアップの検出訂正処理を行う第2のエラー検出訂正部をさらに具備し、
前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記ホストコンピュータに供給する
前記(1)または(2)に記載の記憶制御装置。
(4)前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記第1のメモリに記憶させる前記(3)に記載の記憶制御装置。
(5)前記制御部は、前記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を前記ホストコンピュータに通知する
前記(3)に記載の記憶制御装置。
(6)前記第2のエラー検出訂正部は、前記エラー検出訂正部より高いエラー検出訂正能力を有する前記(3)に記載の記憶制御装置。
(7)前記制御部は、前記システム情報の更新が指示された場合には新たに指示されたシステム情報を前記第1および第2のメモリに記憶させる前記(1)から(6)のいずれかに記載の記憶制御装置。
(8)前記制御部は、前記検出訂正処理に失敗した場合には前記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して前記システム情報として前記ホストコンピュータに供給する
前記(1)から(7)のいずれかに記載の記憶制御装置。
(9)前記制御部は、前記選択されたバックアップを前記システム情報として前記第1のメモリに記憶させる前記(8)に記載の記憶制御装置。
(10)前記第1のメモリに記憶される前記システム情報と前記第2のメモリに記憶される前記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、
前記制御部は、前記対応テーブルに基づいて前記システム情報に対応する前記システム情報のバックアップを前記第2のメモリから読み出す前記(1)から(9)のいずれかに記載の記憶制御装置。
(11)前記第2のメモリに記憶される前記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、
前記制御部は、前記アクセス履歴に基づいて前記システム情報のバックアップの書き直しを前記第2のメモリに指示する
前記(1)から(10)のいずれかに記載の記憶制御装置。
(12)前記制御部は、前記検出訂正処理に失敗した場合に前記システム情報を供給するまでに時間を要する旨を通知する前記(1)から(11)のいずれかに記載の記憶制御装置。
(13)前記制御部は、前記第1のメモリに記憶される前記システム情報と前記第2のメモリに記憶される前記システム情報のバックアップとを比較して両者が一致しているか否かを確認する前記(1)から(12)のいずれかに記載の記憶制御装置。
(14)システムを動作させるためのシステム情報を記憶する第1のメモリと、
前記システム情報のバックアップを記憶する第2のメモリと、
前記システム情報を前記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する記憶装置。
(15)前記第1および第2のメモリは不揮発性メモリであり、
前記第1のメモリは、前記第2のメモリよりも読出し処理時間が短い前記(14)に記載の記憶装置。
(16)ホストコンピュータと、
情報処理システムを動作させるためのシステム情報を記憶する第1のメモリと、
前記システム情報のバックアップを記憶する第2のメモリと、
前記システム情報を前記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
前記検出訂正処理に成功した場合にはそのシステム情報を前記ホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
を具備する情報処理システム。
(17)システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正手順と、
前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第2のメモリから読み出して前記ホストコンピュータに供給する制御手順と
を具備する記憶制御方法。
100 ホストコンピュータ
200 メモリコントローラ
210 制御回路
214 アクセス情報管理部
215 履歴テーブル生成部
216 対応テーブル更新部
221、222 ECC生成部
231、232 エラー検出訂正部
240 伸張回路
241、242 圧縮回路
251〜254、260、282 選択器
270 作業メモリ
281 強化されたエラー検出訂正部
300 低速不揮発性メモリ
310、311 バックアップ
320 履歴テーブル
330 対応テーブル
340 アクセス情報
400 高速不揮発性メモリ
410 起動情報
500 メモリシステムモジュール

Claims (17)

  1. システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
    前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
    を具備する記憶制御装置。
  2. 前記第2のメモリに圧縮されて記憶されている前記システム情報のバックアップを伸張して前記制御部に供給する伸張部をさらに具備する請求項1記載の記憶制御装置。
  3. 前記第2のメモリから読み出された前記システム情報のバックアップの検出訂正処理を行う第2のエラー検出訂正部をさらに具備し、
    前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記ホストコンピュータに供給する
    請求項1記載の記憶制御装置。
  4. 前記制御部は、前記システム情報のバックアップの検出訂正処理に成功した場合にはそのバックアップをシステム情報として前記第1のメモリに記憶させる請求項3記載の記憶制御装置。
  5. 前記制御部は、前記システム情報のバックアップの検出訂正処理に失敗した場合には起動不可能である旨を前記ホストコンピュータに通知する
    請求項3記載の記憶制御装置。
  6. 前記第2のエラー検出訂正部は、前記エラー検出訂正部より高いエラー検出訂正能力を有する請求項3記載の記憶制御装置。
  7. 前記制御部は、前記システム情報の更新が指示された場合には新たに指示されたシステム情報を前記第1および第2のメモリに記憶させる請求項1記載の記憶制御装置。
  8. 前記制御部は、前記検出訂正処理に失敗した場合には前記システム情報の複数のバックアップからなる履歴情報を読み出して当該履歴情報に含まれる何れか一つのバックアップを選択して前記システム情報として前記ホストコンピュータに供給する
    請求項1記載の記憶制御装置。
  9. 前記制御部は、前記選択されたバックアップを前記システム情報として前記第1のメモリに記憶させる請求項8記載の記憶制御装置。
  10. 前記第1のメモリに記憶される前記システム情報と前記第2のメモリに記憶される前記システム情報のバックアップとの対応関係を保持する対応テーブルをさらに具備し、
    前記制御部は、前記対応テーブルに基づいて前記システム情報に対応する前記システム情報のバックアップを前記第2のメモリから読み出す請求項1記載の記憶制御装置。
  11. 前記第2のメモリに記憶される前記システム情報のバックアップに対するアクセス履歴を管理するアクセス情報管理部をさらに具備し、
    前記制御部は、前記アクセス履歴に基づいて前記システム情報のバックアップの書き直しを前記第2のメモリに指示する
    請求項1記載の記憶制御装置。
  12. 前記制御部は、前記検出訂正処理に失敗した場合に前記システム情報を供給するまでに時間を要する旨を通知する請求項1記載の記憶制御装置。
  13. 前記制御部は、前記第1のメモリに記憶される前記システム情報と前記第2のメモリに記憶される前記システム情報のバックアップとを比較して両者が一致しているか否かを確認する請求項1記載の記憶制御装置。
  14. システムを動作させるためのシステム情報を記憶する第1のメモリと、
    前記システム情報のバックアップを記憶する第2のメモリと、
    前記システム情報を前記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
    前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
    を具備する記憶装置。
  15. 前記第1および第2のメモリは不揮発性メモリであり、
    前記第1のメモリは、前記第2のメモリよりも読出し処理時間が短い請求項14記載の記憶装置。
  16. ホストコンピュータと、
    情報処理システムを動作させるためのシステム情報を記憶する第1のメモリと、
    前記システム情報のバックアップを記憶する第2のメモリと、
    前記システム情報を前記第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正部と、
    前記検出訂正処理に成功した場合にはそのシステム情報を前記ホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを前記第2のメモリから読み出して前記ホストコンピュータに供給する制御部と
    を具備する情報処理システム。
  17. システムを動作させるためのシステム情報を第1のメモリから読み出してエラーの検出訂正処理を行うエラー検出訂正手順と、
    前記検出訂正処理に成功した場合にはそのシステム情報をホストコンピュータに供給し、前記検出訂正処理に失敗した場合には前記システム情報のバックアップを第2のメモリから読み出して前記ホストコンピュータに供給する制御手順と
    を具備する記憶制御方法。
JP2013150003A 2013-07-19 2013-07-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 Pending JP2015022516A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013150003A JP2015022516A (ja) 2013-07-19 2013-07-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US14/318,927 US9542270B2 (en) 2013-07-19 2014-06-30 Storage control device, storage device, information processing system and storage control method
CN201410332356.5A CN104298626B (zh) 2013-07-19 2014-07-11 存储控制设备、存储设备、信息处理系统与存储控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013150003A JP2015022516A (ja) 2013-07-19 2013-07-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法

Publications (1)

Publication Number Publication Date
JP2015022516A true JP2015022516A (ja) 2015-02-02

Family

ID=52318357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013150003A Pending JP2015022516A (ja) 2013-07-19 2013-07-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法

Country Status (3)

Country Link
US (1) US9542270B2 (ja)
JP (1) JP2015022516A (ja)
CN (1) CN104298626B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015204337A1 (de) * 2015-03-11 2016-09-15 Siemens Aktiengesellschaft Sicherheitsrelevantes Computersystem
JP6212073B2 (ja) * 2015-06-29 2017-10-11 ファナック株式会社 プログラムの内容に応じて格納先を自動選択する機能を備えた数値制御装置
JP6104481B1 (ja) * 2015-07-31 2017-03-29 京セラドキュメントソリューションズ株式会社 電子機器
KR20170054182A (ko) * 2015-11-09 2017-05-17 에스케이하이닉스 주식회사 반도체 장치
CN105808387A (zh) * 2016-03-30 2016-07-27 苏州美天网络科技有限公司 用于防止硬盘数据丢失的方法
CN105808385A (zh) * 2016-03-30 2016-07-27 苏州美天网络科技有限公司 硬盘数据的防丢失方法
US10564852B2 (en) * 2016-06-25 2020-02-18 International Business Machines Corporation Method and system for reducing memory device input/output operations
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
US10268543B2 (en) * 2017-01-27 2019-04-23 Hewlett Packard Enterprise Development Lp Online volume repair
US10474473B2 (en) * 2017-04-11 2019-11-12 Intel Corporation Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory
US10783252B2 (en) * 2017-08-23 2020-09-22 Qualcomm Incorporated System and method for booting within a heterogeneous memory environment
CN110660421B (zh) * 2018-06-29 2021-11-23 上海磁宇信息科技有限公司 一种带纠错和压缩电路的磁性随机存储器
TWI808362B (zh) * 2020-12-03 2023-07-11 宜鼎國際股份有限公司 可自我監視及恢復作業系統運作的電腦系統及方法
TWI765443B (zh) * 2020-12-03 2022-05-21 宜鼎國際股份有限公司 資料儲存裝置及維持資料儲存裝置正常開機的方法
US11625276B2 (en) * 2021-01-08 2023-04-11 Dell Products L.P. System and method to utilize high bandwidth memory (HBM)
US11995006B2 (en) * 2021-12-22 2024-05-28 Intel Corporation Algebraic and deterministic memory authentication and correction with coupled cacheline metadata

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2006072989A (ja) 2004-08-02 2006-03-16 Ricoh Co Ltd 電子機器
CN100471298C (zh) * 2006-09-29 2009-03-18 华为技术有限公司 数据存储系统及保证存储失败的数据不丢失的方法
KR100845526B1 (ko) * 2006-10-19 2008-07-10 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
KR100799688B1 (ko) * 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
JP4432088B2 (ja) * 2007-02-28 2010-03-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法
KR101425957B1 (ko) * 2007-08-21 2014-08-06 삼성전자주식회사 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
KR101844346B1 (ko) * 2010-11-05 2018-04-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US8713404B2 (en) * 2011-07-01 2014-04-29 Apple Inc. Controller interface providing improved data reliability
TWI467590B (zh) * 2011-07-11 2015-01-01 Phison Electronics Corp 資料處理方法、記憶體控制器及記憶體儲存裝置
KR101730497B1 (ko) * 2011-11-04 2017-04-27 삼성전자 주식회사 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
CN102541678B (zh) * 2011-12-30 2013-09-18 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器
CN102567134B (zh) * 2012-01-06 2015-01-07 威盛电子股份有限公司 存储器模块的错误检查与校正系统以及方法
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US8929146B1 (en) * 2013-07-26 2015-01-06 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)

Also Published As

Publication number Publication date
US20150026538A1 (en) 2015-01-22
CN104298626B (zh) 2018-09-21
CN104298626A (zh) 2015-01-21
US9542270B2 (en) 2017-01-10

Similar Documents

Publication Publication Date Title
JP2015022516A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
CN108874301B (zh) 数据储存装置以及其操作方法
US9141537B2 (en) Magnetic random access memory journal
US10540276B2 (en) Method of processing data based on erase operations of logical pages related to data compression rate of mapping table in data storage device
CN103995756B (zh) 存储控制器、存储设备、信息处理系统和存储控制方法
CN106255961B (zh) 存储控制设备、存储设备及存储控制方法
US9164704B2 (en) Semiconductor storage device for handling write to nonvolatile memories with data smaller than a threshold
CN106021120B (zh) 存储系统及其操作方法
CN104699417A (zh) 数据储存装置以及其数据存取方法
US9465538B2 (en) Flash memory control chip and data storage device and flash memory control method
US9304907B2 (en) Data management method, memory control circuit unit and memory storage apparatus
US10084484B2 (en) Storage control apparatus and non-transitory computer-readable storage medium storing computer program
EP2960777B1 (en) Data protection method, apparatus and device
JP2015079402A (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
US8074012B2 (en) Flash memory apparatus and method for securing a flash memory from data damage
US11003531B2 (en) Memory system and operating method thereof
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
US10387054B2 (en) Secure element including a non-volatile memory and methods for saving and restoring data including defragmenting and compressing data stored in occupied and free regions
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
CN105354107A (zh) NOR Flash的数据传输方法及系统
JP2012212415A (ja) 無線基地局装置
US20130080683A1 (en) Memory system provided with nand flash memory and method of controlling the same
US20180203615A1 (en) Storage control device, storage control method, and computer readable recording medium
CN101620575B (zh) 闪存卡及闪存预防数据毁损的方法
WO2019244417A1 (ja) 記憶制御装置、記憶装置および記憶制御方法