(57)【要約】      （修正有）【課題】メモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供する。【解決手段】ホストデバイス２と接続可能なメモリデバイス１で、メモリ部５とメモリコントローラ６とを有し、メモリ部５が、複数の異なる属性を有するパーティションに分割可能である第１のメモリ部３と、メモリコントローラ６が管理するワークスペース４とからなるメモリデバイス１に記憶されるデータの更新方法であって、パーティションにデータを書き込むための複数の異なる書き込み方法の中から、パーティションの属性に応じて選択された一の書き込み方法を用いて更新処理を行う。【選択図】図１
2009230407.tif 000002
【特許請求の範囲】
【請求項１】
ホストデバイスと接続可能なメモリデバイスで、メモリ部とメモリコントローラとを有し、前記メモリ部が、複数の異なる属性を有するパーティションに分割可能である第１のメモリ部と、前記メモリコントローラが管理するワークスペースとからなる前記メモリデバイスに記憶されるデータの更新方法であって、
前記パーティションにデータを書き込むための複数の異なる書き込み方法の中から、
前記パーティションの属性に応じて選択された一の前記書き込み方法を用いて更新処理を行うことを特徴とするデータの更新方法。
【請求項２】
前記メモリデバイスが、前記ホストデバイスを起動するための前記データを、いずれかの前記パーティションに記憶および更新可能であることを特徴とする請求項１に記載のデータの更新方法。
【請求項３】
前記パーティションのひとつである第１のパーティションが、前記複数のパーティションのそれぞれの有無情報、属性情報、およびサイズ情報を記憶したインフォメーション属性を有するパーティションであり、
前記第１のパーティションの情報と、前記選択された一の書き込み方法とが対応していることを特徴とする請求項１または請求項２に記載のデータの更新方法。
【請求項４】
前記属性が、前記ホストデバイスを起動するためのブートコードのデータを記憶するブート属性を有する前記パーティションである第２のパーティションの前記データの更新方法が、
前記第２のパーティションに記憶されるデータを記憶可能なサイズを有する前記ワークスペースに、前記第２のパーティションに記憶される更新されないデータと、更新するデータとをシーケンシャルに書き込むシーケンシャルライトステップと、
前記ワークスペースへの前記書き込みが正常に終了したことを確認する正常終了確認ステップと、
前記正常終了確認ステップにおいて前記書き込みが正常に終了したことを確認できた場合には、前記メモリデバイスが、前記ワークスペースと前記第２のパーティションとを置き換える、置き換えステップと、
前記正常終了確認ステップにおいて前記書き込みが正常に終了したことを確認できなかった場合には、前記更新処理を中止し、前記ワークスペースに記録した前記データを破棄する更新処理中止ステップとを有することを特徴とする請求項１から請求項３のいずれか１項に記載のデータの更新方法。
【請求項５】
前記ホストデバイスが、システムメモリ部を有し、
前記パーティションのひとつである第３のパーティションの前記属性が、前記ホストデバイスのシステム管理プログラムおよびシステムデータを記憶したコード属性のパーティションであり、
前記第３のパーティションのデータの更新方法が、前記第３のパーティションの大きさを記憶可能な前記パーティションのひとつである第４のパーティションに、更新後の前記第３のパーティションの前記データを記憶するステップと、
更新処理後の前記第３のパーティションのファイル・アロケーション・テーブルを、前記システムメモリ部に記憶するＦＡＴ作成ステップと、
前記システムメモリ部に記憶されるファイル・アロケーション・テーブルと、前記第４のパーティションに記憶される前記更新後の第３のパーティションデータとを、前記第３のパーティションに、シーケンシャルに書き込むシーケンシャルライトステップとを有することを特徴とする請求項１から請求項３のいずれか１項に記載のデータの更新方法。
【請求項６】
前記メモリ部が、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１から請求項５のいずれか１項に記載のデータの更新方法。
【請求項７】
前記メモリ部が、多値記録のＮＡＮＤ型フラッシュメモリであり、
前記属性が異なる前記パーティションの物理的特性が異なることを特徴とする請求項１から請求項６のいずれか１項に記載のデータの更新方法。
【請求項８】
前記物理的特性が、前記メモリコントローラによって管理・制御され、前記パーティションへのデータの書き込みに要する時間、データの読み出しに要する時間、データ書き込み可能回数、データ読み出し可能回数または、記憶されたデータの信頼性の少なくとも１つであることを特徴とする請求項７に記載のデータの更新方法。
【請求項９】
起動時に、
前記第２のパーティションに記憶される第２パーティションブートコードの読み出しができなかった場合には、
第５のパーティションに記憶される第５パーティションブートコードの読み出しを行うことを特徴とする請求項１から請求項４のいずれか１項に記載のデータの更新方法を行うホストデバイス。
【請求項１０】
前記第５のパーティションに記憶されていた前記第５パーティションブートコードの読み出しにより起動した場合、
前記第２のパーティションに記憶されていた前記第２パーティションブートコードを、前記第２のパーティションに再度書き込むことを特徴とする請求項９に記載のホストデバイス。
【請求項１１】
前記メモリコントローラが管理する更新フラグを持ち、前記第３のパーティションに対して前記シーケンシャルライトステップを開始する前に、更新中フラグを設定し、前記更新処理が完了したときに、更新中フラグをクリアし、
前記メモリコントローラは、前記ホストデバイスを起動するために、前記第３のパーティションのデータを読み出すときに、前記更新中フラグが設定されていた場合には、前記ホストデバイスに読み出しエラーを通知することにより、
前記ホストデバイスを起動する処理を中断し、
再度、ＦＡＴ作成ステップと、シーケンシャルライトステップとを実行後に、
前記ホストデバイスを再起動することを特徴とする請求項５から請求項８のいずれか１項に記載のデータの更新方法を行うメモリシステム。
【請求項１２】
ホストデバイスと接続可能で、前記ホストデバイスを起動するためのデータを記憶可能なメモリ部を有し、かつ、
前記メモリ部が、複数の異なる属性を有するパーティションに分割されたメモリデバイスであって、
前記属性が、前記ホストデバイスを起動するためのブートコードのデータを記憶するブート属性および前記ホストデバイスのＯＳプログラムのデータを記憶したコード属性を含み、
分割された前記メモリ部の前記パーティションの構成変更を禁止する第１のプロテクト手段と、
それぞれの前記パーティションに対する書き込みを禁止する第２のプロテクト手段および第３のプロテクト手段とを有し、
前記第１のプロテクト手段は、前記メモリデバイスに対して固有な設定可能なプロテクト手段であり、
前記第２のプロテクト手段は、前記メモリデバイスに対して設定するか、または前記ブート属性および前記コード属性の前記パーティションに対して解除方法を個別に設定可能な固有なプロテクト手段であり、
前記第３のプロテクト手段は、単一の設定解除手段を有するコマンドにより設定可能である共通のプロテクト手段であることを特徴とするメモリデバイス。
【請求項１３】
前記メモリ部が、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１２に記載のメモリデバイス。
【請求項１４】
前記メモリ部が、多値記録のＮＡＮＤ型フラッシュメモリであり、
前記属性が異なる前記パーティションの物理的特性が異なることを特徴とする請求項１１または請求項１３に記載のメモリデバイス。
【請求項１５】
前記物理的特性が、前記パーティションへのデータの書き込みに要する時間、データの読み出しに要する時間、データ書き込み可能回数、データ読み出し可能回数または、記憶されたデータの信頼性の少なくとも１つであることを特徴とする請求項１４に記載のメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストデバイスに接続可能であり、複数のパーティションに分割されたメモリ部を有するメモリデバイスに記憶されるデータの更新方法に関し、特に、前記ホストデバイスを起動するためのデータが記憶されるパーティションのデータの更新方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、外部記憶装置であるメモリデバイスにホストデバイスのシステム管理プログラムおよびシステムデータであるオペレーティングシステム（Operating System、以下、「ＯＳ」という。）等を記憶している。そして、システム起動時には、ＯＳをメモリデバイスから読み出すことによりシステムを立ち上げる。コンピュータシステム全体を管理するソフトウエアであるＯＳは、複数のプログラムファイル群から構成されている。
【０００３】
なお、ＯＳの起動のときには、ＯＳを起動するための別のプログラムを起動するには十分な機能を持っているブートローダと呼ばれる特殊な小さなプログラムが使用される。多段階のブートローダがよく使われ、ある小さなプログラムから別の小さなプログラムを呼び出すということを繰り返して、最終的にＯＳが起動される。すなわち、ＯＳの起動、言い換えればシステムの起動のために、小さな容量のプログラムが多数、メモリデバイスに記憶される。
【０００４】
ＯＳおよびブートローダは、機能追加や不具合修正のために度々、部分的な更新が必要である。そして、複数のプログラムファイル群から構成されるＯＳまたはブートローダ群等のモジュールを更新する場合には、すべてのプログラムファイルが正しく更新されてはじめて、モジュールを正しく動作させることができる。言い換えれば、ＯＳまたはブートローダの更新処理に失敗するとシステム自体を起動することができなくなり、その問題点を修復することは容易ではなかった。
【０００５】
一方、近年、不揮発性の半導体記憶媒体であるフラッシュメモリの開発が行われ、特に、ひとつのメモリセルに、単ビットでなく、多値ビットを記憶する多値記録技術が実用化されたことで、フラッシュメモリの大容量化および高密度化が進んでいる。さらに最近では、メモリシステムにエンベッドされた（embedded）メモリデバイスに、ホストデバイスの起動用ソフトウエア、すなわち、ＯＳおよびブートローダを記憶するシステムが使用されるようになってきた。
【０００６】
ＮＡＮＤ型フラッシュメモリは、トンネル絶縁膜を介して浮遊ゲートもしくは積層膜からなるトラップ層（以下電荷蓄積層と呼ぶ）に注入した電荷をその電荷量に応じてデジタルビット情報として用  い、２値または多値情報として読み出す。ＮＡＮＤ型フラッシュメモリは、ＤＲＡＭ等の破壊読出し型のメモリとは異なりデータ破壊を伴わずにデータの読み出しが可能である。
【０００７】
ここで、多値記録技術により、さらなる大容量化を実現することが可能であるが、その性質上、物理的特性、例えば、データの書き込み速度、データの読み出し速度、書き込み許容回数、および書き込まれたデータの信頼性等が、単ビット（２値）記録に比べると良いとはいえない場合があった
ＯＳおよびブートローダ群が、ＮＡＮＤ型フラッシュメモリを有するメモリデバイスに記憶される場合、ＮＡＮＤ型フラッシュメモリは、１）データの書き込みはページと呼ばれる単位で行われる、２）データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる、３）データの上書きができない、という特徴を有する。このため、ＮＡＮＤ型フラッシュメモリデバイスに記憶されるデータを小さな容量単位のデータで更新すると、更新の必要のないプログラムも別のブロックに再書き込みされる、いわゆる「引越し」が多数回、発生することがある。すなわち、更新されるデータがデータの書き込まれていない新ブロックに書き込まれ、さらに、旧データを含んでいる旧ブロックに記憶される更新されない残りのデータも、新ブロックに書き込まれる。多数回の「引越し」は何度もプログラムが書き換えられることを意味する。このため、ＮＡＮＤ型フラッシュメモリデバイスのＯＳまたはブートローダ群の更新処理は、安全性が高いとはいえない場合があった。
【０００８】
なお、特開２００７−１９３５９６号公報には、ファームウェア更新時に電源断などの障害が発生した場合でも不揮発性メモリを交換することなく、ファームウェアに関するデータをオンボードで更新することのできるファームウェア更新回路が開示されている。
【特許文献１】特開２００７−１９３５９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、メモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願発明の一態様によれば、ホストデバイスと接続可能なメモリデバイスで、メモリ部とメモリコントローラとを有し、メモリ部が、複数の異なる属性を有するパーティションに分割可能である第１のメモリ部と、メモリコントローラが管理するワークスペースとからなるメモリデバイスに記憶されるデータの更新方法であって、パーティションにデータを書き込むための複数の異なる書き込み方法の中から、パーティションの属性に応じて選択された一の書き込み方法を用いて更新処理を行うことを特徴とするデータの更新方法が提供される。
【発明の効果】
【００１１】
本発明はメモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供するものである。
【発明を実施するための最良の形態】
【００１２】
＜第１の実施の形態＞  
最初に、本発明の第１の実施の形態のメモリシステム１０について図面を参照して説明する。図１は、メモリシステム１０の構成を示す概略図である。
【００１３】
メモリシステム１０は、ホストデバイス２と、ホストデバイス２と接続可能で、ホストデバイス２を起動するためのデータが記憶可能な、メモリシステム１０に埋め込まれた（embedded）メモリデバイス１とから構成されている。
【００１４】
メモリデバイス１のメモリ部５は、不揮発性半導体メモリであり、例えば、ＮＡＮＤ型のフラッシュメモリにより構成される。ホストデバイス２から送信されたデータなどは、メモリコントローラ６の制御により、メモリ部５に記憶される。
【００１５】
メモリ部５は、ユーザが認識可能なメモリ部である第１のメモリ部であるメモリ部３と、メモリコントローラ６が管理しユーザからは認識不可能なワークスペース４とから構成されている。
【００１６】
なお、メモリデバイス１においては、メモリ部３とワークスペース４の関係は、固定されたものではなく、メモリコントローラ６の制御により、メモリ部３の一部とワークスペース４の一部とを置き換える（リプレイス）すること、すなわち、メモリ部３の一のパーティションをユーザからは認識不可能なワークスペース４とし、反対に、ワークスペース４の一部をユーザが認識可能なメモリ部３の一のパーティションとする置き換え処理が可能である。
【００１７】
ホストデバイス２は、インタフェースを介して接続されたメモリデバイス１に対するアクセス制御等を行うホストコントローラ８と、システムメモリ部７とを備えている。メモリデバイス１は、ホストデバイス２からのコマンドに従い処理を行う。
【００１８】
なお、図１および以下の説明では、メモリシステム１０が１個のメモリデバイス１を有する例について説明するが、メモリシステム１０は、複数個のメモリデバイス１を有していてもよい。次に、図２、図３、および図４を用いて、本実施の形態のメモリデバイス１の第１のメモリ部であるメモリ部３の構成について説明する。図２および図３は、メモリデバイス１のメモリ部３の構成を説明するための説明図であり、図４は、メモリデバイス１の情報パーティションの構造を説明するための説明図である。
【００１９】
図２に示すように、メモリデバイス１のメモリ部３は、保存されるデータの属性に応じた複数のパーティションに区分けされている。すなわち、公知のメモリデバイスでは、記憶領域であるメモリ部３Ａ全体を、ひとつのパーティションとして管理していた。これに対して、本実施の形態のメモリデバイス１では、コンフィグレーション（Configuration）と呼ばれる処理によって、メモリ部３を、複数のパーティション３１〜３６に物理的に分割している。図２は、左側がひとつの大きな記憶領域のメモリ部３Ａを示し、右側はメモリ部３を複数のパーティション３１〜３６に分割、言い換えれば、コンフィグレーションした例を示している。なお、ここで、「物理的」とは、「論理的」ではなく、実際のメモリ部３における各記憶セルに対応した分割、言い換えれば各記憶セル集合体の「区別化」であることを意味する。
【００２０】
メモリデバイス１では、分割された各パーティション３１〜３６は、複数の異なる属性を有する。例えば、図２に例示したメモリ部３は、複数のパーティション３１〜３６に分割されているが、それぞれのパーティションは図３に示す属性を有している。すなわち、データ１パーティション３１およびデータ２パーティション３２はデータ属性を、コードパーティション３３はコード属性を、ブート１パーティション３４およびブート２パーティション３５はブート属性を、情報パーティション３６はインフォメーション属性を有している。すなわち、複数のパーティション３１〜３６が、それぞれ異なる属性を有している訳ではなく、属性の種類はパーティション３１〜３６の数より少ない。
【００２１】
データ属性のパーティション３１および３２（以下、「データパーティション」ともいう。）は、アプリケーションパーティションとも呼ばれ、ユーザデータおよびアプリケーションプログラム等を記憶するパーティションであり、ファイルシステムで管理され、書き込み回数だけでなく読み出し回数も多いパーティションである。なお、例えば、ユーザデータはデータ１パーティション３１に記憶し、アプリケーションプログラムはデータ２パーティション３２に記憶するという使用方法も可能である。
【００２２】
コード属性のパーティション３３（以下、「コードパーティション」ともいう。）は、システムパーティションとも呼ばれ、ＯＳプログラムおよびシステムデータを記憶するパーティションであり、ファイルシステムで管理され、読み出し回数は多いが、書き込みはめったにない。
【００２３】
ブート属性のパーティション３４および３５（以下、「ブートパーティション」ともいう。）は、ブートローダを記憶するパーティションであり、ファイルシステムを有しておらず、読み出し回数は多いが、書き込みはめったにない。このブートローダは、起動時に最初に読み出されるＰｒｉｍａｒｙ  Ｂｏｏｔ  Ｌｏａｄｅｒであってもよいし、Ｐｒｉｍａｒｙ  Ｂｏｏｔ  Ｌｏａｄｅｒをメモリデバイス１外の例えばＲＯＭに有しメモリ部３にＳｅｃｏｎｄａｒｙ  Ｂｏｏｔ  Ｌｏａｄｅｒが記憶される構成であってもよい。
【００２４】
インフォメーション属性のパーティション３６（以下、「情報パーティション」ともいう。）は、図４に示すように、分割された複数のパーティションの情報、例えば、所定のパーティション番号のパーティションの有無の情報、属性情報、ライトプロテクト情報、パーティション容量（サイズ）などを記憶するパーティションであり、ファイルシステムを有しておらず、読み出し回数は多いが、書き込みは１回だけである。
【００２５】
情報パーティション３６は、コンフィグレーションによって、メモリ部３を、複数のパーティションに物理的に分割した本実施の形態のメモリデバイス１には不可欠なパーティションであり、メモリデバイス１のメモリコントローラ６は、情報パーティションの情報を基に、複数のパーティションへのアクセス方法を変更する。
【００２６】
例えば、ブートパーティション３４のデータが壊れてしまうと、システムは立ち上がらず、ブートコード自体の更新ができなくなってしまうため、ブートパーティション３４は、更新に対する信頼性が特に必要なパーティションである。
【００２７】
そして、本実施の形態のメモリデバイス１のメモリ部５は、多値記録のＮＡＮＤ型フラッシュメモリであることから、分割したパーティション３１〜３６の物理的特性を、それぞれの属性に応じた異なる仕様とすることが好ましい。ここで、物理的特性とは、データの書き込み速度、データの読み出し速度、および書き込まれたデータの信頼性等である。例えば、多値記録可能なメモリ部５においても、多値記録を行わないパーティションを設けることで、記憶可能な容量は減少するが、単ビット記録と同等の物理的特性を得ることができる。同様に例えば、８値記録可能なメモリセルを４値記録メモリセルとして用いることもできる。
【００２８】
例えば、インフォメーション属性の情報パーティション３６を、他のパーティションよりも高速アクセス可能なパーティションとすることで、ホストデバイス２のメモリデバイス１へのアクセス速度を向上することができる。また、ブート属性のパーティションまたはコードパーティションの属性のパーティションを、他のパーティションよりも信頼性の高い物理的特性のパーティションとすることも好ましい。なお、パーティション３１〜３６の読み出し可能回数および書き込み可能回数は、直接的な物理的特性ではなく、代替特性であるが、ここでは物理的特性とする。
【００２９】
上記の説明のように、メモリデバイス１では、メモリ部３を分割した場合には、それぞれの分割したパーティション３１〜３６の物理的特性が異なるため、分割した複数のパーティション３１〜３６の合計容量が、分割前のメモリ部３の容量と同じになるとは限らない。
【００３０】
なお、図３は、メモリ部３のパーティションマップの割り当ての一例を示した表である。メモリデバイス１では、パーティションの番号を４ビットデータにより区別している。このため、ホストデバイス２等は、最大で、Ｎｏ．０からＮｏ．１５の１６のパーティションを、パーティション選択コマンドにおいてパーティション番号を用いて選択可能である。もちろん、図３に示すように、最大１６のパーティションの中には、設定しない予約パーティションも存在する。
【００３１】
ホストデバイス２は、コマンドを用いてそれぞれのパーティションを制御するときには、各パーティション３１〜３６を、それぞれのパーティション番号をパラメータとして用いる。すなわち、ホストデバイス２は、各パーティション３１〜３６に、データを記憶または読み出しをする場合は、最初に、図５に示すパーティション選択コマンドをメモリデバイス１に送信することで、バーティション番号を指定して、ひとつのパーティションを選択する。これに対して、メモリデバイス１は、図５に示すパーティション選択コマンドに対するレスポンスで、ホストデバイス２に応答する。その後、ホストデバイス２は、選択したパーティションに対して、各パーティション共通のリード／ライトコマンドをメモリデバイス１に送信することにより、アクセスを行う。
【００３２】
例えば、ホストデバイス２は、メモリデバイス１のバーティション番号１５に割り当てられた情報パーティション３６にアクセスすることで、メモリデバイス１のバーティション情報などを取得することができる。
【００３３】
次に、図６および図７を用いて、本実施の形態のデータ更新方法について説明する。図６は、ブート１パーティション３４に記憶されるブートローダを更新する場合の処理を説明するための説明図であり、図７は、ブート１パーティション３４に記憶されるブートローダを更新する場合の処理の流れを説明するためのフローチャートである。
【００３４】
すでに説明したように、ホストデバイス２のシステムの起動を行うブート１パーティション３４には、多数の小さなプログラムから構成されたブートローダ群が、記憶される。そして、ブート１パーティション３４は、更新処理に対する信頼性が特に必要なパーティションである。このため、本実施の形態のデータ更新方法においては、ブート１パーティション３４の更新処理の際には、他のパーティションとは異なる方法を用いて更新処理の安全性を確保する。
【００３５】
すなわち、ブートローダにはサイズの制限があるために小さな容量のプログラムである。このため、ブート１パーティション３４の更新処理においては、メモリコントローラ６は、更新する新ブートローダ等を、ワークスペース４のワークスペース４に記憶することができる。その後、メモリコントローラ６は、更新する新ブートローダ等を記憶したワークスペース４とブート１パーティション３４とを置き換え（リプレイス）する。
【００３６】
以下、図７のフローチャートに沿ってブート１パーティション３４の更新処理について説明する。
【００３７】
＜ステップＳ１１＞  更新ブートパーティション選択  
ホストデバイス２は、更新の対象となるパーティションをパーティション選択コマンドによって選択する。
【００３８】
＜ステップＳ１２＞  書き込み禁止解除  
本実施の形態のメモリデバイス１においては、ブート１パーティション３４は、ウイルスなどにより改ざんされることを防止するために、後述するプロテクト手段により、書き込み禁止状態にしてある。このため、定められた方法によりブート１パーティション３４の書き込み禁止状態を解除する必要がある。
【００３９】
＜ステップＳ１３＞  書き込み禁止解除？  
メモリデバイス１は、ホストデバイス２が選択したパーティションの書き込み禁止が解除できた場合（Ｎｏ）には、ステップＳ１４以降の処理を行う。一方、メモリデバイス１は、ブート１パーティション３４の書き込み禁止が解除できなかった場合（Ｙｅｓ）には、エラーを示すレスポンス信号をホストデバイス２に送信し、更新処理を中止する。
【００４０】
＜ステップＳ１４＞  ブートパーティション書き込み？  
メモリデバイス１は、ホストデバイス２が選択したパーティションが、ブート属性のパーティションの場合（Ｙｅｓ）には、ステップＳ１５以降の書き込み方法で更新処理を行い更新処理の安全性を確保する。一方、メモリデバイス１は、ホストデバイス２が選択したパーティションが、ブート属性のパーティションではない場合（Ｎｏ）には、ステップＳ１５以降の書き込み方法とは異なる書き込み方法で更新処理を行う。
【００４１】
＜ステップＳ１５＞  ＣＭＤ２５＋ＣＭＤ１２  
ホストデバイス２は、ブート１パーティション３４を更新する際であっても、通常のマルチブロックライトコマンド（ＣＭＤ２５）および書き込み停止コマンド（ＣＭＤ１２）を用いる。これは、メモリデバイス１を制御するメモリコントローラ６等は、選択中のパーティションの属性が「Ｂｏｏｔ」であることをステップＳ１２ですでに認識しているためである。このため、メモリコントローラ６は、通常と同じメモリライトコマンドをホストデバイス２から受信しても、ブート１パーティション３４に対する更新方法を変える。
【００４２】
＜ステップＳ１６＞  ワークスペースへの書き込み  
図６（１）に示すように、ブート１パーティション３４を更新する場合、メモリコントローラ６は、まずブート１パーティション３４に記憶されるブートコーダを記憶可能なサイズを有する、言い換えれば、ブート１パーティション３４と同じ容量のワークスペース４をワークスペース４に用意する。ワークスペース４がワークスペース４に取得できなかった場合は、メモリコントローラ６は、書き込み処理を実行しないで、ワークスペース利用不可能のエラーレスポンス信号をホストデバイス２に送信し、更新処理を中止する。
【００４３】
ワークスペース４がメモリ部５に取得できた場合には、図６（２）に示すように、メモリコントローラ６は、新しいブートローダ群のデータを、ワークスペース４の領域の先頭から最後まで一気に、すなわちシーケンシャルに書き込む。シーケンシャルに書き込む、すなわち、シーケンシャルライトのためには、ホストデバイス２はマルチブロックライトコマンド（ＣＭＤ２５）を用いる。
【００４４】
＜ステップＳ１７、ステップＳ１８＞  書き込みエラー？  
ステップＳ１６で書き込みエラーが発生した場合には、メモリコントローラ６は、ワークスペース４をキャンセルし、書き込み失敗のエラー情報をＣＭＤ１２のレスポンス信号にのせてホストデバイス２に送信し、ホストデバイスはＳ１７によりエラーを検出し更新処理を中止する。
【００４５】
＜ステップＳ１９＞  置き換え（Ｒｅｐｌａｃｅ）処理  
ワークスペース４へのデータ書き込みが正しく完了した場合には、メモリコントローラ６は、ワークスペース４を、ホストデバイス２の起動時に用いるブートパーティション３４として割り当て、ブート１パーティション３４をワークスペース４に割り当てる、置き換え処理を行う。
【００４６】
置き換え処理が完了した時点で、ワークスペース４は、新たなブート１パーティション３４となるが、置き換え処理に失敗した場合は、ブート１パーティション３４は以前のデータを保持し、ワークスペース４の内容は破棄される。
【００４７】
＜ステップＳ２０＞  
メモリコントローラ６は、置き換え処理が失敗しなかったかを確認する。置き換え処理に失敗があった場合（Ｙｅｓ）には、更新処理は中止される。
【００４８】
＜ステップＳ２１、ステップＳ２２、ステップＳ２３＞  ＣＭＤ１３によるエラーチェック／書き込みエラー？  
ホストデバイス２は、書き込み処理が完了する（ステップＳ１９：Ｎｏ）と、コマンドＣＭＤ１３のレスポンス信号にエラーがないか確認する。ＣＭＤ１３を用いて、そのレスポンス信号にエラーがまったくなければ（ステップＳ２２：Ｎｏ）、ワークスペース４へのブートローダ更新処理は成功である。ＣＭＤ１３のレスポンス信号にエラーがあった場合には、更新処理は中止される。
【００４９】
＜ステップＳ２４＞  
置き換え処理に失敗がなかった場合（ステップＳ２４：Ｎｏ））には、ホストデバイス２は、ブート１パーティション３４を、再び書き込み禁止状態として、更新処理を完了する。
【００５０】
なお、上記処理で、更新処理のいずれかのステップで更新処理が中止された場合であっても、ホストデバイス２は、ブート１パーティション３４に更新処理前のブートコードが記憶されるため、起動することができる。
【００５１】
本実施の形態のメモリデバイス１は、更新のシーケンスが異常終了してしまった場合も、更新をキャンセルし、以前に記憶したブートローダを用いることができるので、システムが起動できなくなるような事態からは回避することができる。
【００５２】
言い換えれば、ブートパーティションの更新に失敗した場合、以前のデータが読めないとシステムが立ち上がらなくなってしまう事態になる。しかし、メモリデバイス１ではワークスペース４を用いて書き込みをすることで安全にブート属性のパーティションのデータ更新をすることができる。
【００５３】
また、ホストデバイス２は、ブート１パーティション３４を更新する際であっても、通常のメモリライトコマンドを用いることができる。すなわち、メモリデバイス１においては、使用者が特に認識することなく、ブート１パーティション３４の更新処理の際には、他のパーティションとは異なる方法を用いて更新処理の安全性を確保することができる。
【００５４】
なお、本実施の形態のメモリデバイス１は、図２に示すように、ブート１パーティション３４だけでなく、同じブート属性の第５のパーティションであるブート２パーティション３５を、バックアップパーティションとして有している。すなわち、ブート２パーティション３５の第５パーティションブートコードは、ブート１パーティション３４の第２パーティションブートコードと同じである。このため、ブート２パーティション３５をワークスペースとして用いて、ブート１パーティション３４の更新処理を行うことも可能である。更新処理後に、ブート１パーティション３４の読み出しエラーなどがあった場合には、ブート２パーティション３５からブートができるようにしておく、いわゆる、パーティションのスワップ処理を行うことでも、２重の安全策を取ることもできる。しかし、ブート２パーティション３５をホストデバイス２の起動のために用いるには、特別のコマンドを定義しなければならない。このため、メモリシステム１が複雑化するため、スワップ処理は、余り好ましい方法とはいえない側面もある。
【００５５】
＜第２の実施の形態＞  
次に、本発明の第２の実施の形態のメモリシステム１０Ａ（不図示）について図８を参照して説明する。図８は、メモリシステム１０Ａにおけるコードパーティション３３のデータ更新方法を説明するための説明図である。本実施の形態のメモリシステム１０Ａの基本構成は第１の実施の形態のメモリシステム１０と、ほぼ同じであるため、以下、同じ構成要素には同じ符号を付し説明は省略し、メモリシステム１０と異なる点についてのみ説明する。
【００５６】
メモリシステム１０Ａでは、コードパーティション３３のデータの更新のときには、コード属性に応じたデータの更新方法を用いる。コードパーティション３３は、ブートパーティション３４と同様に、更新処理に失敗するとシステム自体を起動することができなくなるパーティションである。このため、コードパーティション３３のデータの更新でも、最も安全に更新を行うために、ブートパーティション３４の更新と同様に、コードパーティション３３と同じ大きさのワークスペース４をメモリ部５に確保して更新する方法を用いることが好ましい。
【００５７】
すなわち、コードパーティション３３はファイルシステムで管理されているので、一部のファイルを更新可能ではあるが、通常のライトコマンドでランダムライトを行うと、いわゆる「引越し」が発生して何度もコードデータを書き込みすることになる。更新処理中に電源が落ちてしまった場合は、コードパーティション３３のデータが破損してしまうこともある。このため、コードパーティション３３を、データ属性のパーティション等への書き込み方法と同じように、直接書き込んで更新することは可能であるが、他のパーティションにいったん書き込んだ後に、コードパーティション３３の先頭から順番に書き込むシーケンシャルライトの方が安全性が高い。
【００５８】
しかし、ブートパーティション３５は比較的小さな容量のパーティションであるのに対して、コードパーティション３３は、その容量が不明である。このため、コードパーティション３３では、必ずしも、コードパーティション３３と同じ容量のワークスペース４がメモリ部５に確保できるとき限らない。
【００５９】
このため、コードパーティション３３の更新処理では、メモリコントローラ６は、メモリ部５にワークスペース４が確保できない場合には、更新に必要なプログラムを、メモリ部３の他のパーティション、例えば、データパーティション３１に構築しておく方法を用いる。
【００６０】
図５は、メモリ部５にワークスペース４が確保できない場合にコードパーティション３３に格納されているプログラムを更新する方法の一例を示している。  
図５に示す例では、コード１とコード３とが、Old Code１、Old Code １から、それぞれ新しいNew Code1、New Code 3とに更新される一方で、コード２とコード４とが、変更されないOld Code2、Old Code 4である。
【００６１】
図５（Ａ）に示すように、最初に、メモリコントローラ６は、コードパーティション３３と同じ大きさのパーティション、厳密にはＦＡＴ（ファイル・アロケーション・テーブル）データを除いたコードパーティション３３と同じ大きさの領域であるワークスペース領域３１Ａをデータ１パーティション３１に確保する。
【００６２】
そして、図５（Ｂ）に示すように、メモリコントローラ６は、更新処理するNew Code1およびNew Code 3をワークスペース領域３１Ａに書き込むと同時に、更新されないOld Code2およびOld Code 4も、コードパーティション３３からワークスペース領域３１Ａにコピーする。メモリコントローラ６は、更新処理後の新コードパーティション用のＦＡＴデータは、システムメモリ部７に作成しておく。
【００６３】
すなわち、図５（Ｃ）に示すように、ワークスペース領域３１Ａに、更新処理されないOld Code2およびOld Code 4と、更新処理するNew Code1およびNew Code 3とが連続した状態で記憶された状態が構築される。
【００６４】
なお、コードパーティション３３の更新処理のためには、更新の対象となるコードパーティション３３をパーティション選択コマンドによって選択する。コードパーティション３３は、ウイルスなどにより改ざんされることを防止するために、通常は、ブート属性のパーティションと同様に、プロテクト手段により書き込み禁止状態に設定されている。このため、定められた方法によりコードパーティション３３の書き込み禁止状態が解除される。コードパーティション３３を更新する場合であっても、ホストデバイス２は、通常のメモリライトコマンドを用いたのでよい。これは、メモリデバイス１を制御するメモリコントローラ６等は、選択されたパーティションの属性が「Ｃｏｄｅ」であることを認識しているためである。このため、メモリコントローラ６は、通常と同じメモリライトコマンドをホストデバイス２から受信しても、コード属性のパーティションに対する書き込み方法で更新処理を行う。
【００６５】
そして、図５（Ｄ）に示すように、メモリコントローラ６は、コードパーティション３３へのデータの書き込みは、「引越し」が発生しないように、先頭アドレスからシーケンシャルに書き込んでいく。すなわち、メモリコントローラ６は、システムメモリ部７に記憶されているＦＡＴデータと、ワークスペース領域３１Ａに記憶されている更新処理されないデータおよび更新処理するデータとを、コードパーティション３３に、シーケンシャルに書き込む。
【００６６】
メモリシステム１０Ａでは、更新処理に必要な大きさのワークスペースがメモリ部５に確保できない場合であっても、コードパーティション３３を、他のパーティションへの書き込み方法とは異なる方法を用いて、更新処理の安全性を確保することができる。
【００６７】
以上の説明のように、メモリシステム１０Ａは、パーティションのひとつである第３のパーティション３３の属性が、ホストデバイス２のＯＳプログラムのデータを記憶したコード属性のパーティション３３であり、第３のパーティション３３のデータの更新方法が、第３のパーティション３３に記憶されるホストデバイス２のＯＳプログラムのデータを記憶可能なパーティションのひとつである第４のパーティション３１に、第３のパーティション３３に記憶される更新されないデータOld Code2、Old Code 4、および、更新するデータNew Code1、New Code 3を記憶し、更新処理後の第３のパーティション３３のファイル・アロケーション・テーブル（ＦＡＴ）を、システムメモリ部７に記憶し、ワシステムメモリ部７に記憶されているファイル・アロケーション・テーブルと、第４のパーティション３１に記憶されている更新されないデータOld Code2、Old Code 4および更新するデータNew Code1、New Code 3とを、第３のパーティション３３に、シーケンシャルに書き込むシーケンシャルライトを行う。
【００６８】
なお、メモリシステム１０Ａでは、例えば、コードパーティション３３が更新処理中には、フラグ５０を立てておく、すなわち、コードパーティション３３のデータの更新処理の開始前に、更新中フラグ５０を設定し、更新処理が完了したときに、更新中フラグ５０をクリアすることが好ましい。すると、メモリシステム１０Ａでは、ホストデバイス２を再起動する場合に、コードパーティション３３の更新中フラグ５０が立っている、すなわち設定されたままの状態であった場合は、システムダウンが発生したことが認識される。そして、メモリシステム１０Ａでは、ホストデバイス２の起動処理をせずに、コードパーティション３３の再インストールを行うようにブートローダのブログラムを構成しておくことが好ましい。
【００６９】
すなわち、コードパーティション３３の更新中フラグ５０を用いることにより、メモリシステム１０Ａでは、システムが再起動できなくなるという危険から回避することができる。すなわち、メモリシステム１０Ａは、コードパーティション３３の更新処理中に正しく更新できなかった場合、システム起動を停止し、システムを復活させる仕組みを有する。
【００７０】
以上の説明のメモリシステム１０Ａは、起動時に、第２のパーティション３５に記憶されるブートコードの読み出しができなかった場合には、ワークスペース４に記憶されるブートコードの読み出しを行う。また、メモリシステム１０Ａは、ワークスペース４に記憶されるブートコードの読み出しにより起動した場合、ワークスペース４に記憶されるブートコードを、第２のパーティション３５に書き込む。また、メモリシステム１０Ａは、第２のパーティションのデータの更新処理の開始前に、更新中フラグ５０を設定し、更新処理が完了したときに、更新中フラグ５０をクリアし、ホストデバイス２の起動時に、更新中フラグ５０が設定されていた場合には、ホストデバイス２を起動する処理を行わず、再度、ＦＡＴ作成と、シーケンシャルライト処理を実行した後に、ホストデバイスを起動するメモリシステム１０Ａである。
【００７１】
次に、メモリデバイス１のプロテクト手段について、図９を用いて説明する。図９は、メモリデバイス１のプロテクト手段を説明するための説明図である。
【００７２】
複数のパーティションを設定したメモリデバイス１は、パーティションを割り当てるコンフィグレーション処理の後に、メモリデバイス１のためのシステムファイルおよびアプリケーションファイルがインストールされてから出荷され、ユーザが使用する状態になる。  
また、すでに説明したように、メモリデバイス１のブートパーティション３４およびコードパーティション３３の更新は、ユーザが使用中にも行われる。
【００７３】
しかし、メモリシステム１０の安定化のためには、パーティションの構成は開発段階では変更ができるが、出荷された後は、ユーザが、むやみに変えることはできないようにすることが好ましい。ブートパーティション３４またはコードパーティション３３に対しても、ウイルスなどが改ざんすることを防止する目的で、メモリデバイス１は、ライトプロテクション機能を持つことが好ましい。
【００７４】
すなわち、メモリデバイス１は、Configuration Protection(CP)とSystem Write Protection(SWP)という２つの異なるプロテクト手段を有し、それぞれのプロテクト手段により、パーティションの構成と、ブートパーティション３４またはコードパーティション３３とに対して、保護を行う。例えば、メモリデバイス１は、以下のような２つのプロテクト手段、言い換えれば、２つのパラメータの設定を行うことにより、パーティションの構成と、ブートパーティション３４またはコードパーティション３３とを、それぞれ保護を設定することができる。
【００７５】
Configuration Protection(CP) CP=0:再構成可能          CP=1: 再構成禁止  
System Write Protection (SWP) SWP=0:書き込み可能      SWP=1:書き込み禁止
以下、図９に従ってメモリデバイス１のプロテクト手段について説明する。  
図９（１）は、メモリデバイス１の、パーティションが切られていない初期状態のメモリ部３Ａを示している。
【００７６】
図９（２）は、コンフィグレーション処理により、パーティション構成が設定された状態のメモリ部３を示している。パーティション構成は、パーティション番号１５の情報パーティション３６に書き込まれている。パーティション構成が完了後、コマンドによりＣＰ＝１が設定される(Set Configuration Protection)。
【００７７】
図９（３）は、システムがインストールされ、ブートパーティション３４およびコードパーティション３３にデータが書き込まれたメモリ部３を示している。必要に応じてデータパーティション３１、３２にもデータは書き込まれる。そして、メモリデバイス１は、コマンドによりＳＷＰ＝１が設定(Set System Write Protection)された状態で出荷される。
【００７８】
図９（４）は、出荷前に、パーティション構成を変更したい場合、特別なコマンドシーケンスにより、ＣＰ＝０と解除すること(Re-Configuration)ができることを示している。
【００７９】
図９（５）は、ユーザが使用している状態のメモリデバイス１のメモリ部３Ａを示している。
【００８０】
図９（６）は、ブートパーティション３４またはコードパーティション３３の更新処理が必要になった場合、ある特別なコマンドシーケンスにより、ＳＷＰ＝１に解除する(Clear System Write Protection)ことで一時的に書き込みを許可した状態のメモリデバイス１のメモリ部３Ａを示している。ブートパーティション３４またはコードパーティション３３の更新処理後は、ＳＷＰ＝０に戻す。
【００８１】
メモリデバイス１は、分割されたメモリ部３の再構成を禁止する第１のプロテクト手段であるＳＷＰと、それぞれのパーティションに対する書き込みを禁止する第２のプロテクト手段ＣＰとを有する。このため、メモリデバイス１は、次の利点がある。
【００８２】
デバイスメーカーは、メモリデバイス１にパーティションのコンフィグレーション処理を行って出荷する場合は、メモリデバイス１をＣＰ＝１として出荷すると、メモリデバイス１のパーティション構成は再構成を禁止できる。
【００８３】
デバイスメーカー（eSD device maker）は、ＣＰ＝０として、システムベンダー(System vendor)にデバイスを渡し、システムベンダーがパーティションのコンフィグレーション処理を実行後に、ＣＰ＝１として出荷する。出荷後(After Shipping)は、メモリ部３の再構成は禁止される。デバイスメーカーはＣＰ＝１を解除する手段を持つことにより、システムベンダーの再コンフィグレーション処理、言い換えれば、再構成の許可不許可または、回数を制御できる。
【００８４】
メモリデバイス１は、メモリデバイス１をＳＷＰ＝１と設定して出荷することにより、改ざんを防止することができる。デバイスメーカーは、また、メモリデバイス１に、ＳＷＰ＝０に解除する手段を実装することにより、パーティションの更新を可能にする。メモリデバイス１の各プロテクト手段の設定状況、言い換えれば、セキュリティレベルは、解除する手段によって制御できる。
【００８５】
以上の説明のように、メモリデバイス１は、ホストデバイス２と接続可能で、ホストデバイス２を起動するためのデータを記憶可能なメモリ部３を有し、かつ、メモリ部３が、複数の異なる属性を有するパーティション３１〜３６に分割されたメモリデバイス１であって、属性が、ホストデバイス２を起動するためのブートコードのデータを記憶するブート属性およびホストデバイスのＯＳプログラムのデータを記憶したコード属性を含み、分割されたメモリ部のパーティションの構成変更を禁止する第１のプロテクト手段と、それぞれのパーティションに対する書き込みを禁止する第２のプロテクト手段および第３のプロテクト手段とを有し、第１のプロテクト手段は、個々のメモリデバイス１に対して固有な設定可能なプロテクト手段であり、第２のプロテクト手段は、個々のメモリデバイス１に対して設定するか、またはブート属性およびコード属性のパーティションに対して解除方法を個別に設定可能な固有なプロテクト手段であり、第３のプロテクト手段は、単一の設定解除手段を有するコマンドにより設定可能である共通のプロテクト手段であることを特徴とするメモリデバイス１である。
【００８６】
メモリシステム１０は、パーティション再構成を禁止でき、システムプログラムがウイルスなどにより改ざんされることができる
以上の説明のように、本発明のメモリシステムは、以下の通りである。
【００８７】
ホストデバイスと、前記ホストデバイスと接続可能で、メモリ部とメモリコントローラとを有するメモリデバイスとを有するメモリシステムであって、
前記メモリ部が、複数の異なる属性を有するパーティションに分割可能であり、
前記パーティションに前記データを書き込むための複数の異なる書き込み方法の中から、
前記パーティションの属性に応じて選択された一の前記書き込み方法を用いて更新処理を行うことを特徴とするメモリシステムである。
【００８８】
また、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００８９】
【図１】第１の実施の形態にかかるメモリシステムの構成を示す概略図である。
【図２】第１の実施の形態にかかるメモリデバイスのメモリ部の構成を説明するための説明図である。
【図３】第１の実施の形態にかかるメモリデバイスのメモリ部の構成を説明するための説明図である。
【図４】第１の実施の形態にかかるメモリデバイスの情報パーティションの構造を説明するための説明図である。
【図５】第１の実施の形態にかかるメモリデバイスのパーティション選択コマンドを説明するための説明図である。
【図６】第１の実施の形態にかかるメモリデバイスのブート属性のパーティションの更新処理を説明するための説明図である。
【図７】第１の実施の形態にかかるメモリデバイスのブート属性のパーティションの更新処理の流れを説明するためのフローチャートである。
【図８】第２の実施の形態にかかるメモリシステムにおけるコードパーティションのデータ更新方法を説明するための説明図である。
【図９】第１の実施の形態にかかるメモリシステムのメモリデバイスのプロテクト手段を説明するための説明図である。
【符号の説明】
【００９０】
１…メモリデバイス、２…ホストデバイス、３…メモリ部、３Ａ…メモリ部、４…ワークスペース、５…メモリ部、６…メモリコントローラ、７…システムメモリ部、８…ホストコントローラ、１０…メモリシステム、１０Ａ…メモリシステム、３１…データパーティション、３１Ａ…ワークスペース領域、３３…コードパーティション、３４…ブートパーティション、３５…コードパーティション、３６…情報パーティション、５０…更新中フラグ
【図１】
2009230407.tif 000003
【図２】
2009230407.tif 000004
【図３】
2009230407.tif 000005
【図４】
2009230407.tif 000006
【図５】
2009230407.tif 000007
【図６】
2009230407.tif 000008
【図７】
2009230407.tif 000009
【図８】
2009230407.tif 000010
【図９】
2009230407.tif 000011