説明

データの更新方法、メモリシステムおよびメモリデバイス

【課題】メモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供する。
【解決手段】ホストデバイス2と接続可能なメモリデバイス1で、メモリ部5とメモリコントローラ6とを有し、メモリ部5が、複数の異なる属性を有するパーティションに分割可能である第1のメモリ部3と、メモリコントローラ6が管理するワークスペース4とからなるメモリデバイス1に記憶されるデータの更新方法であって、パーティションにデータを書き込むための複数の異なる書き込み方法の中から、パーティションの属性に応じて選択された一の書き込み方法を用いて更新処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストデバイスに接続可能であり、複数のパーティションに分割されたメモリ部を有するメモリデバイスに記憶されるデータの更新方法に関し、特に、前記ホストデバイスを起動するためのデータが記憶されるパーティションのデータの更新方法に関する。
【背景技術】
【0002】
コンピュータシステムにおいては、外部記憶装置であるメモリデバイスにホストデバイスのシステム管理プログラムおよびシステムデータであるオペレーティングシステム(Operating System、以下、「OS」という。)等を記憶している。そして、システム起動時には、OSをメモリデバイスから読み出すことによりシステムを立ち上げる。コンピュータシステム全体を管理するソフトウエアであるOSは、複数のプログラムファイル群から構成されている。
【0003】
なお、OSの起動のときには、OSを起動するための別のプログラムを起動するには十分な機能を持っているブートローダと呼ばれる特殊な小さなプログラムが使用される。多段階のブートローダがよく使われ、ある小さなプログラムから別の小さなプログラムを呼び出すということを繰り返して、最終的にOSが起動される。すなわち、OSの起動、言い換えればシステムの起動のために、小さな容量のプログラムが多数、メモリデバイスに記憶される。
【0004】
OSおよびブートローダは、機能追加や不具合修正のために度々、部分的な更新が必要である。そして、複数のプログラムファイル群から構成されるOSまたはブートローダ群等のモジュールを更新する場合には、すべてのプログラムファイルが正しく更新されてはじめて、モジュールを正しく動作させることができる。言い換えれば、OSまたはブートローダの更新処理に失敗するとシステム自体を起動することができなくなり、その問題点を修復することは容易ではなかった。
【0005】
一方、近年、不揮発性の半導体記憶媒体であるフラッシュメモリの開発が行われ、特に、ひとつのメモリセルに、単ビットでなく、多値ビットを記憶する多値記録技術が実用化されたことで、フラッシュメモリの大容量化および高密度化が進んでいる。さらに最近では、メモリシステムにエンベッドされた(embedded)メモリデバイスに、ホストデバイスの起動用ソフトウエア、すなわち、OSおよびブートローダを記憶するシステムが使用されるようになってきた。
【0006】
NAND型フラッシュメモリは、トンネル絶縁膜を介して浮遊ゲートもしくは積層膜からなるトラップ層(以下電荷蓄積層と呼ぶ)に注入した電荷をその電荷量に応じてデジタルビット情報として用 い、2値または多値情報として読み出す。NAND型フラッシュメモリは、DRAM等の破壊読出し型のメモリとは異なりデータ破壊を伴わずにデータの読み出しが可能である。
【0007】
ここで、多値記録技術により、さらなる大容量化を実現することが可能であるが、その性質上、物理的特性、例えば、データの書き込み速度、データの読み出し速度、書き込み許容回数、および書き込まれたデータの信頼性等が、単ビット(2値)記録に比べると良いとはいえない場合があった
OSおよびブートローダ群が、NAND型フラッシュメモリを有するメモリデバイスに記憶される場合、NAND型フラッシュメモリは、1)データの書き込みはページと呼ばれる単位で行われる、2)データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる、3)データの上書きができない、という特徴を有する。このため、NAND型フラッシュメモリデバイスに記憶されるデータを小さな容量単位のデータで更新すると、更新の必要のないプログラムも別のブロックに再書き込みされる、いわゆる「引越し」が多数回、発生することがある。すなわち、更新されるデータがデータの書き込まれていない新ブロックに書き込まれ、さらに、旧データを含んでいる旧ブロックに記憶される更新されない残りのデータも、新ブロックに書き込まれる。多数回の「引越し」は何度もプログラムが書き換えられることを意味する。このため、NAND型フラッシュメモリデバイスのOSまたはブートローダ群の更新処理は、安全性が高いとはいえない場合があった。
【0008】
なお、特開2007−193596号公報には、ファームウェア更新時に電源断などの障害が発生した場合でも不揮発性メモリを交換することなく、ファームウェアに関するデータをオンボードで更新することのできるファームウェア更新回路が開示されている。
【特許文献1】特開2007−193596号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明は、メモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本願発明の一態様によれば、ホストデバイスと接続可能なメモリデバイスで、メモリ部とメモリコントローラとを有し、メモリ部が、複数の異なる属性を有するパーティションに分割可能である第1のメモリ部と、メモリコントローラが管理するワークスペースとからなるメモリデバイスに記憶されるデータの更新方法であって、パーティションにデータを書き込むための複数の異なる書き込み方法の中から、パーティションの属性に応じて選択された一の書き込み方法を用いて更新処理を行うことを特徴とするデータの更新方法が提供される。
【発明の効果】
【0011】
本発明はメモリデバイスに記憶されるデータを安全に更新できるデータの更新方法を提供するものである。
【発明を実施するための最良の形態】
【0012】
<第1の実施の形態>
最初に、本発明の第1の実施の形態のメモリシステム10について図面を参照して説明する。図1は、メモリシステム10の構成を示す概略図である。
【0013】
メモリシステム10は、ホストデバイス2と、ホストデバイス2と接続可能で、ホストデバイス2を起動するためのデータが記憶可能な、メモリシステム10に埋め込まれた(embedded)メモリデバイス1とから構成されている。
【0014】
メモリデバイス1のメモリ部5は、不揮発性半導体メモリであり、例えば、NAND型のフラッシュメモリにより構成される。ホストデバイス2から送信されたデータなどは、メモリコントローラ6の制御により、メモリ部5に記憶される。
【0015】
メモリ部5は、ユーザが認識可能なメモリ部である第1のメモリ部であるメモリ部3と、メモリコントローラ6が管理しユーザからは認識不可能なワークスペース4とから構成されている。
【0016】
なお、メモリデバイス1においては、メモリ部3とワークスペース4の関係は、固定されたものではなく、メモリコントローラ6の制御により、メモリ部3の一部とワークスペース4の一部とを置き換える(リプレイス)すること、すなわち、メモリ部3の一のパーティションをユーザからは認識不可能なワークスペース4とし、反対に、ワークスペース4の一部をユーザが認識可能なメモリ部3の一のパーティションとする置き換え処理が可能である。
【0017】
ホストデバイス2は、インタフェースを介して接続されたメモリデバイス1に対するアクセス制御等を行うホストコントローラ8と、システムメモリ部7とを備えている。メモリデバイス1は、ホストデバイス2からのコマンドに従い処理を行う。
【0018】
なお、図1および以下の説明では、メモリシステム10が1個のメモリデバイス1を有する例について説明するが、メモリシステム10は、複数個のメモリデバイス1を有していてもよい。次に、図2、図3、および図4を用いて、本実施の形態のメモリデバイス1の第1のメモリ部であるメモリ部3の構成について説明する。図2および図3は、メモリデバイス1のメモリ部3の構成を説明するための説明図であり、図4は、メモリデバイス1の情報パーティションの構造を説明するための説明図である。
【0019】
図2に示すように、メモリデバイス1のメモリ部3は、保存されるデータの属性に応じた複数のパーティションに区分けされている。すなわち、公知のメモリデバイスでは、記憶領域であるメモリ部3A全体を、ひとつのパーティションとして管理していた。これに対して、本実施の形態のメモリデバイス1では、コンフィグレーション(Configuration)と呼ばれる処理によって、メモリ部3を、複数のパーティション31〜36に物理的に分割している。図2は、左側がひとつの大きな記憶領域のメモリ部3Aを示し、右側はメモリ部3を複数のパーティション31〜36に分割、言い換えれば、コンフィグレーションした例を示している。なお、ここで、「物理的」とは、「論理的」ではなく、実際のメモリ部3における各記憶セルに対応した分割、言い換えれば各記憶セル集合体の「区別化」であることを意味する。
【0020】
メモリデバイス1では、分割された各パーティション31〜36は、複数の異なる属性を有する。例えば、図2に例示したメモリ部3は、複数のパーティション31〜36に分割されているが、それぞれのパーティションは図3に示す属性を有している。すなわち、データ1パーティション31およびデータ2パーティション32はデータ属性を、コードパーティション33はコード属性を、ブート1パーティション34およびブート2パーティション35はブート属性を、情報パーティション36はインフォメーション属性を有している。すなわち、複数のパーティション31〜36が、それぞれ異なる属性を有している訳ではなく、属性の種類はパーティション31〜36の数より少ない。
【0021】
データ属性のパーティション31および32(以下、「データパーティション」ともいう。)は、アプリケーションパーティションとも呼ばれ、ユーザデータおよびアプリケーションプログラム等を記憶するパーティションであり、ファイルシステムで管理され、書き込み回数だけでなく読み出し回数も多いパーティションである。なお、例えば、ユーザデータはデータ1パーティション31に記憶し、アプリケーションプログラムはデータ2パーティション32に記憶するという使用方法も可能である。
【0022】
コード属性のパーティション33(以下、「コードパーティション」ともいう。)は、システムパーティションとも呼ばれ、OSプログラムおよびシステムデータを記憶するパーティションであり、ファイルシステムで管理され、読み出し回数は多いが、書き込みはめったにない。
【0023】
ブート属性のパーティション34および35(以下、「ブートパーティション」ともいう。)は、ブートローダを記憶するパーティションであり、ファイルシステムを有しておらず、読み出し回数は多いが、書き込みはめったにない。このブートローダは、起動時に最初に読み出されるPrimary Boot Loaderであってもよいし、Primary Boot Loaderをメモリデバイス1外の例えばROMに有しメモリ部3にSecondary Boot Loaderが記憶される構成であってもよい。
【0024】
インフォメーション属性のパーティション36(以下、「情報パーティション」ともいう。)は、図4に示すように、分割された複数のパーティションの情報、例えば、所定のパーティション番号のパーティションの有無の情報、属性情報、ライトプロテクト情報、パーティション容量(サイズ)などを記憶するパーティションであり、ファイルシステムを有しておらず、読み出し回数は多いが、書き込みは1回だけである。
【0025】
情報パーティション36は、コンフィグレーションによって、メモリ部3を、複数のパーティションに物理的に分割した本実施の形態のメモリデバイス1には不可欠なパーティションであり、メモリデバイス1のメモリコントローラ6は、情報パーティションの情報を基に、複数のパーティションへのアクセス方法を変更する。
【0026】
例えば、ブートパーティション34のデータが壊れてしまうと、システムは立ち上がらず、ブートコード自体の更新ができなくなってしまうため、ブートパーティション34は、更新に対する信頼性が特に必要なパーティションである。
【0027】
そして、本実施の形態のメモリデバイス1のメモリ部5は、多値記録のNAND型フラッシュメモリであることから、分割したパーティション31〜36の物理的特性を、それぞれの属性に応じた異なる仕様とすることが好ましい。ここで、物理的特性とは、データの書き込み速度、データの読み出し速度、および書き込まれたデータの信頼性等である。例えば、多値記録可能なメモリ部5においても、多値記録を行わないパーティションを設けることで、記憶可能な容量は減少するが、単ビット記録と同等の物理的特性を得ることができる。同様に例えば、8値記録可能なメモリセルを4値記録メモリセルとして用いることもできる。
【0028】
例えば、インフォメーション属性の情報パーティション36を、他のパーティションよりも高速アクセス可能なパーティションとすることで、ホストデバイス2のメモリデバイス1へのアクセス速度を向上することができる。また、ブート属性のパーティションまたはコードパーティションの属性のパーティションを、他のパーティションよりも信頼性の高い物理的特性のパーティションとすることも好ましい。なお、パーティション31〜36の読み出し可能回数および書き込み可能回数は、直接的な物理的特性ではなく、代替特性であるが、ここでは物理的特性とする。
【0029】
上記の説明のように、メモリデバイス1では、メモリ部3を分割した場合には、それぞれの分割したパーティション31〜36の物理的特性が異なるため、分割した複数のパーティション31〜36の合計容量が、分割前のメモリ部3の容量と同じになるとは限らない。
【0030】
なお、図3は、メモリ部3のパーティションマップの割り当ての一例を示した表である。メモリデバイス1では、パーティションの番号を4ビットデータにより区別している。このため、ホストデバイス2等は、最大で、No.0からNo.15の16のパーティションを、パーティション選択コマンドにおいてパーティション番号を用いて選択可能である。もちろん、図3に示すように、最大16のパーティションの中には、設定しない予約パーティションも存在する。
【0031】
ホストデバイス2は、コマンドを用いてそれぞれのパーティションを制御するときには、各パーティション31〜36を、それぞれのパーティション番号をパラメータとして用いる。すなわち、ホストデバイス2は、各パーティション31〜36に、データを記憶または読み出しをする場合は、最初に、図5に示すパーティション選択コマンドをメモリデバイス1に送信することで、バーティション番号を指定して、ひとつのパーティションを選択する。これに対して、メモリデバイス1は、図5に示すパーティション選択コマンドに対するレスポンスで、ホストデバイス2に応答する。その後、ホストデバイス2は、選択したパーティションに対して、各パーティション共通のリード/ライトコマンドをメモリデバイス1に送信することにより、アクセスを行う。
【0032】
例えば、ホストデバイス2は、メモリデバイス1のバーティション番号15に割り当てられた情報パーティション36にアクセスすることで、メモリデバイス1のバーティション情報などを取得することができる。
【0033】
次に、図6および図7を用いて、本実施の形態のデータ更新方法について説明する。図6は、ブート1パーティション34に記憶されるブートローダを更新する場合の処理を説明するための説明図であり、図7は、ブート1パーティション34に記憶されるブートローダを更新する場合の処理の流れを説明するためのフローチャートである。
【0034】
すでに説明したように、ホストデバイス2のシステムの起動を行うブート1パーティション34には、多数の小さなプログラムから構成されたブートローダ群が、記憶される。そして、ブート1パーティション34は、更新処理に対する信頼性が特に必要なパーティションである。このため、本実施の形態のデータ更新方法においては、ブート1パーティション34の更新処理の際には、他のパーティションとは異なる方法を用いて更新処理の安全性を確保する。
【0035】
すなわち、ブートローダにはサイズの制限があるために小さな容量のプログラムである。このため、ブート1パーティション34の更新処理においては、メモリコントローラ6は、更新する新ブートローダ等を、ワークスペース4のワークスペース4に記憶することができる。その後、メモリコントローラ6は、更新する新ブートローダ等を記憶したワークスペース4とブート1パーティション34とを置き換え(リプレイス)する。
【0036】
以下、図7のフローチャートに沿ってブート1パーティション34の更新処理について説明する。
【0037】
<ステップS11> 更新ブートパーティション選択
ホストデバイス2は、更新の対象となるパーティションをパーティション選択コマンドによって選択する。
【0038】
<ステップS12> 書き込み禁止解除
本実施の形態のメモリデバイス1においては、ブート1パーティション34は、ウイルスなどにより改ざんされることを防止するために、後述するプロテクト手段により、書き込み禁止状態にしてある。このため、定められた方法によりブート1パーティション34の書き込み禁止状態を解除する必要がある。
【0039】
<ステップS13> 書き込み禁止解除?
メモリデバイス1は、ホストデバイス2が選択したパーティションの書き込み禁止が解除できた場合(No)には、ステップS14以降の処理を行う。一方、メモリデバイス1は、ブート1パーティション34の書き込み禁止が解除できなかった場合(Yes)には、エラーを示すレスポンス信号をホストデバイス2に送信し、更新処理を中止する。
【0040】
<ステップS14> ブートパーティション書き込み?
メモリデバイス1は、ホストデバイス2が選択したパーティションが、ブート属性のパーティションの場合(Yes)には、ステップS15以降の書き込み方法で更新処理を行い更新処理の安全性を確保する。一方、メモリデバイス1は、ホストデバイス2が選択したパーティションが、ブート属性のパーティションではない場合(No)には、ステップS15以降の書き込み方法とは異なる書き込み方法で更新処理を行う。
【0041】
<ステップS15> CMD25+CMD12
ホストデバイス2は、ブート1パーティション34を更新する際であっても、通常のマルチブロックライトコマンド(CMD25)および書き込み停止コマンド(CMD12)を用いる。これは、メモリデバイス1を制御するメモリコントローラ6等は、選択中のパーティションの属性が「Boot」であることをステップS12ですでに認識しているためである。このため、メモリコントローラ6は、通常と同じメモリライトコマンドをホストデバイス2から受信しても、ブート1パーティション34に対する更新方法を変える。
【0042】
<ステップS16> ワークスペースへの書き込み
図6(1)に示すように、ブート1パーティション34を更新する場合、メモリコントローラ6は、まずブート1パーティション34に記憶されるブートコーダを記憶可能なサイズを有する、言い換えれば、ブート1パーティション34と同じ容量のワークスペース4をワークスペース4に用意する。ワークスペース4がワークスペース4に取得できなかった場合は、メモリコントローラ6は、書き込み処理を実行しないで、ワークスペース利用不可能のエラーレスポンス信号をホストデバイス2に送信し、更新処理を中止する。
【0043】
ワークスペース4がメモリ部5に取得できた場合には、図6(2)に示すように、メモリコントローラ6は、新しいブートローダ群のデータを、ワークスペース4の領域の先頭から最後まで一気に、すなわちシーケンシャルに書き込む。シーケンシャルに書き込む、すなわち、シーケンシャルライトのためには、ホストデバイス2はマルチブロックライトコマンド(CMD25)を用いる。
【0044】
<ステップS17、ステップS18> 書き込みエラー?
ステップS16で書き込みエラーが発生した場合には、メモリコントローラ6は、ワークスペース4をキャンセルし、書き込み失敗のエラー情報をCMD12のレスポンス信号にのせてホストデバイス2に送信し、ホストデバイスはS17によりエラーを検出し更新処理を中止する。
【0045】
<ステップS19> 置き換え(Replace)処理
ワークスペース4へのデータ書き込みが正しく完了した場合には、メモリコントローラ6は、ワークスペース4を、ホストデバイス2の起動時に用いるブートパーティション34として割り当て、ブート1パーティション34をワークスペース4に割り当てる、置き換え処理を行う。
【0046】
置き換え処理が完了した時点で、ワークスペース4は、新たなブート1パーティション34となるが、置き換え処理に失敗した場合は、ブート1パーティション34は以前のデータを保持し、ワークスペース4の内容は破棄される。
【0047】
<ステップS20>
メモリコントローラ6は、置き換え処理が失敗しなかったかを確認する。置き換え処理に失敗があった場合(Yes)には、更新処理は中止される。
【0048】
<ステップS21、ステップS22、ステップS23> CMD13によるエラーチェック/書き込みエラー?
ホストデバイス2は、書き込み処理が完了する(ステップS19:No)と、コマンドCMD13のレスポンス信号にエラーがないか確認する。CMD13を用いて、そのレスポンス信号にエラーがまったくなければ(ステップS22:No)、ワークスペース4へのブートローダ更新処理は成功である。CMD13のレスポンス信号にエラーがあった場合には、更新処理は中止される。
【0049】
<ステップS24>
置き換え処理に失敗がなかった場合(ステップS24:No))には、ホストデバイス2は、ブート1パーティション34を、再び書き込み禁止状態として、更新処理を完了する。
【0050】
なお、上記処理で、更新処理のいずれかのステップで更新処理が中止された場合であっても、ホストデバイス2は、ブート1パーティション34に更新処理前のブートコードが記憶されるため、起動することができる。
【0051】
本実施の形態のメモリデバイス1は、更新のシーケンスが異常終了してしまった場合も、更新をキャンセルし、以前に記憶したブートローダを用いることができるので、システムが起動できなくなるような事態からは回避することができる。
【0052】
言い換えれば、ブートパーティションの更新に失敗した場合、以前のデータが読めないとシステムが立ち上がらなくなってしまう事態になる。しかし、メモリデバイス1ではワークスペース4を用いて書き込みをすることで安全にブート属性のパーティションのデータ更新をすることができる。
【0053】
また、ホストデバイス2は、ブート1パーティション34を更新する際であっても、通常のメモリライトコマンドを用いることができる。すなわち、メモリデバイス1においては、使用者が特に認識することなく、ブート1パーティション34の更新処理の際には、他のパーティションとは異なる方法を用いて更新処理の安全性を確保することができる。
【0054】
なお、本実施の形態のメモリデバイス1は、図2に示すように、ブート1パーティション34だけでなく、同じブート属性の第5のパーティションであるブート2パーティション35を、バックアップパーティションとして有している。すなわち、ブート2パーティション35の第5パーティションブートコードは、ブート1パーティション34の第2パーティションブートコードと同じである。このため、ブート2パーティション35をワークスペースとして用いて、ブート1パーティション34の更新処理を行うことも可能である。更新処理後に、ブート1パーティション34の読み出しエラーなどがあった場合には、ブート2パーティション35からブートができるようにしておく、いわゆる、パーティションのスワップ処理を行うことでも、2重の安全策を取ることもできる。しかし、ブート2パーティション35をホストデバイス2の起動のために用いるには、特別のコマンドを定義しなければならない。このため、メモリシステム1が複雑化するため、スワップ処理は、余り好ましい方法とはいえない側面もある。
【0055】
<第2の実施の形態>
次に、本発明の第2の実施の形態のメモリシステム10A(不図示)について図8を参照して説明する。図8は、メモリシステム10Aにおけるコードパーティション33のデータ更新方法を説明するための説明図である。本実施の形態のメモリシステム10Aの基本構成は第1の実施の形態のメモリシステム10と、ほぼ同じであるため、以下、同じ構成要素には同じ符号を付し説明は省略し、メモリシステム10と異なる点についてのみ説明する。
【0056】
メモリシステム10Aでは、コードパーティション33のデータの更新のときには、コード属性に応じたデータの更新方法を用いる。コードパーティション33は、ブートパーティション34と同様に、更新処理に失敗するとシステム自体を起動することができなくなるパーティションである。このため、コードパーティション33のデータの更新でも、最も安全に更新を行うために、ブートパーティション34の更新と同様に、コードパーティション33と同じ大きさのワークスペース4をメモリ部5に確保して更新する方法を用いることが好ましい。
【0057】
すなわち、コードパーティション33はファイルシステムで管理されているので、一部のファイルを更新可能ではあるが、通常のライトコマンドでランダムライトを行うと、いわゆる「引越し」が発生して何度もコードデータを書き込みすることになる。更新処理中に電源が落ちてしまった場合は、コードパーティション33のデータが破損してしまうこともある。このため、コードパーティション33を、データ属性のパーティション等への書き込み方法と同じように、直接書き込んで更新することは可能であるが、他のパーティションにいったん書き込んだ後に、コードパーティション33の先頭から順番に書き込むシーケンシャルライトの方が安全性が高い。
【0058】
しかし、ブートパーティション35は比較的小さな容量のパーティションであるのに対して、コードパーティション33は、その容量が不明である。このため、コードパーティション33では、必ずしも、コードパーティション33と同じ容量のワークスペース4がメモリ部5に確保できるとき限らない。
【0059】
このため、コードパーティション33の更新処理では、メモリコントローラ6は、メモリ部5にワークスペース4が確保できない場合には、更新に必要なプログラムを、メモリ部3の他のパーティション、例えば、データパーティション31に構築しておく方法を用いる。
【0060】
図5は、メモリ部5にワークスペース4が確保できない場合にコードパーティション33に格納されているプログラムを更新する方法の一例を示している。
図5に示す例では、コード1とコード3とが、Old Code1、Old Code 1から、それぞれ新しいNew Code1、New Code 3とに更新される一方で、コード2とコード4とが、変更されないOld Code2、Old Code 4である。
【0061】
図5(A)に示すように、最初に、メモリコントローラ6は、コードパーティション33と同じ大きさのパーティション、厳密にはFAT(ファイル・アロケーション・テーブル)データを除いたコードパーティション33と同じ大きさの領域であるワークスペース領域31Aをデータ1パーティション31に確保する。
【0062】
そして、図5(B)に示すように、メモリコントローラ6は、更新処理するNew Code1およびNew Code 3をワークスペース領域31Aに書き込むと同時に、更新されないOld Code2およびOld Code 4も、コードパーティション33からワークスペース領域31Aにコピーする。メモリコントローラ6は、更新処理後の新コードパーティション用のFATデータは、システムメモリ部7に作成しておく。
【0063】
すなわち、図5(C)に示すように、ワークスペース領域31Aに、更新処理されないOld Code2およびOld Code 4と、更新処理するNew Code1およびNew Code 3とが連続した状態で記憶された状態が構築される。
【0064】
なお、コードパーティション33の更新処理のためには、更新の対象となるコードパーティション33をパーティション選択コマンドによって選択する。コードパーティション33は、ウイルスなどにより改ざんされることを防止するために、通常は、ブート属性のパーティションと同様に、プロテクト手段により書き込み禁止状態に設定されている。このため、定められた方法によりコードパーティション33の書き込み禁止状態が解除される。コードパーティション33を更新する場合であっても、ホストデバイス2は、通常のメモリライトコマンドを用いたのでよい。これは、メモリデバイス1を制御するメモリコントローラ6等は、選択されたパーティションの属性が「Code」であることを認識しているためである。このため、メモリコントローラ6は、通常と同じメモリライトコマンドをホストデバイス2から受信しても、コード属性のパーティションに対する書き込み方法で更新処理を行う。
【0065】
そして、図5(D)に示すように、メモリコントローラ6は、コードパーティション33へのデータの書き込みは、「引越し」が発生しないように、先頭アドレスからシーケンシャルに書き込んでいく。すなわち、メモリコントローラ6は、システムメモリ部7に記憶されているFATデータと、ワークスペース領域31Aに記憶されている更新処理されないデータおよび更新処理するデータとを、コードパーティション33に、シーケンシャルに書き込む。
【0066】
メモリシステム10Aでは、更新処理に必要な大きさのワークスペースがメモリ部5に確保できない場合であっても、コードパーティション33を、他のパーティションへの書き込み方法とは異なる方法を用いて、更新処理の安全性を確保することができる。
【0067】
以上の説明のように、メモリシステム10Aは、パーティションのひとつである第3のパーティション33の属性が、ホストデバイス2のOSプログラムのデータを記憶したコード属性のパーティション33であり、第3のパーティション33のデータの更新方法が、第3のパーティション33に記憶されるホストデバイス2のOSプログラムのデータを記憶可能なパーティションのひとつである第4のパーティション31に、第3のパーティション33に記憶される更新されないデータOld Code2、Old Code 4、および、更新するデータNew Code1、New Code 3を記憶し、更新処理後の第3のパーティション33のファイル・アロケーション・テーブル(FAT)を、システムメモリ部7に記憶し、ワシステムメモリ部7に記憶されているファイル・アロケーション・テーブルと、第4のパーティション31に記憶されている更新されないデータOld Code2、Old Code 4および更新するデータNew Code1、New Code 3とを、第3のパーティション33に、シーケンシャルに書き込むシーケンシャルライトを行う。
【0068】
なお、メモリシステム10Aでは、例えば、コードパーティション33が更新処理中には、フラグ50を立てておく、すなわち、コードパーティション33のデータの更新処理の開始前に、更新中フラグ50を設定し、更新処理が完了したときに、更新中フラグ50をクリアすることが好ましい。すると、メモリシステム10Aでは、ホストデバイス2を再起動する場合に、コードパーティション33の更新中フラグ50が立っている、すなわち設定されたままの状態であった場合は、システムダウンが発生したことが認識される。そして、メモリシステム10Aでは、ホストデバイス2の起動処理をせずに、コードパーティション33の再インストールを行うようにブートローダのブログラムを構成しておくことが好ましい。
【0069】
すなわち、コードパーティション33の更新中フラグ50を用いることにより、メモリシステム10Aでは、システムが再起動できなくなるという危険から回避することができる。すなわち、メモリシステム10Aは、コードパーティション33の更新処理中に正しく更新できなかった場合、システム起動を停止し、システムを復活させる仕組みを有する。
【0070】
以上の説明のメモリシステム10Aは、起動時に、第2のパーティション35に記憶されるブートコードの読み出しができなかった場合には、ワークスペース4に記憶されるブートコードの読み出しを行う。また、メモリシステム10Aは、ワークスペース4に記憶されるブートコードの読み出しにより起動した場合、ワークスペース4に記憶されるブートコードを、第2のパーティション35に書き込む。また、メモリシステム10Aは、第2のパーティションのデータの更新処理の開始前に、更新中フラグ50を設定し、更新処理が完了したときに、更新中フラグ50をクリアし、ホストデバイス2の起動時に、更新中フラグ50が設定されていた場合には、ホストデバイス2を起動する処理を行わず、再度、FAT作成と、シーケンシャルライト処理を実行した後に、ホストデバイスを起動するメモリシステム10Aである。
【0071】
次に、メモリデバイス1のプロテクト手段について、図9を用いて説明する。図9は、メモリデバイス1のプロテクト手段を説明するための説明図である。
【0072】
複数のパーティションを設定したメモリデバイス1は、パーティションを割り当てるコンフィグレーション処理の後に、メモリデバイス1のためのシステムファイルおよびアプリケーションファイルがインストールされてから出荷され、ユーザが使用する状態になる。
また、すでに説明したように、メモリデバイス1のブートパーティション34およびコードパーティション33の更新は、ユーザが使用中にも行われる。
【0073】
しかし、メモリシステム10の安定化のためには、パーティションの構成は開発段階では変更ができるが、出荷された後は、ユーザが、むやみに変えることはできないようにすることが好ましい。ブートパーティション34またはコードパーティション33に対しても、ウイルスなどが改ざんすることを防止する目的で、メモリデバイス1は、ライトプロテクション機能を持つことが好ましい。
【0074】
すなわち、メモリデバイス1は、Configuration Protection(CP)とSystem Write Protection(SWP)という2つの異なるプロテクト手段を有し、それぞれのプロテクト手段により、パーティションの構成と、ブートパーティション34またはコードパーティション33とに対して、保護を行う。例えば、メモリデバイス1は、以下のような2つのプロテクト手段、言い換えれば、2つのパラメータの設定を行うことにより、パーティションの構成と、ブートパーティション34またはコードパーティション33とを、それぞれ保護を設定することができる。
【0075】
Configuration Protection(CP) CP=0:再構成可能 CP=1: 再構成禁止
System Write Protection (SWP) SWP=0:書き込み可能 SWP=1:書き込み禁止
以下、図9に従ってメモリデバイス1のプロテクト手段について説明する。
図9(1)は、メモリデバイス1の、パーティションが切られていない初期状態のメモリ部3Aを示している。
【0076】
図9(2)は、コンフィグレーション処理により、パーティション構成が設定された状態のメモリ部3を示している。パーティション構成は、パーティション番号15の情報パーティション36に書き込まれている。パーティション構成が完了後、コマンドによりCP=1が設定される(Set Configuration Protection)。
【0077】
図9(3)は、システムがインストールされ、ブートパーティション34およびコードパーティション33にデータが書き込まれたメモリ部3を示している。必要に応じてデータパーティション31、32にもデータは書き込まれる。そして、メモリデバイス1は、コマンドによりSWP=1が設定(Set System Write Protection)された状態で出荷される。
【0078】
図9(4)は、出荷前に、パーティション構成を変更したい場合、特別なコマンドシーケンスにより、CP=0と解除すること(Re-Configuration)ができることを示している。
【0079】
図9(5)は、ユーザが使用している状態のメモリデバイス1のメモリ部3Aを示している。
【0080】
図9(6)は、ブートパーティション34またはコードパーティション33の更新処理が必要になった場合、ある特別なコマンドシーケンスにより、SWP=1に解除する(Clear System Write Protection)ことで一時的に書き込みを許可した状態のメモリデバイス1のメモリ部3Aを示している。ブートパーティション34またはコードパーティション33の更新処理後は、SWP=0に戻す。
【0081】
メモリデバイス1は、分割されたメモリ部3の再構成を禁止する第1のプロテクト手段であるSWPと、それぞれのパーティションに対する書き込みを禁止する第2のプロテクト手段CPとを有する。このため、メモリデバイス1は、次の利点がある。
【0082】
デバイスメーカーは、メモリデバイス1にパーティションのコンフィグレーション処理を行って出荷する場合は、メモリデバイス1をCP=1として出荷すると、メモリデバイス1のパーティション構成は再構成を禁止できる。
【0083】
デバイスメーカー(eSD device maker)は、CP=0として、システムベンダー(System vendor)にデバイスを渡し、システムベンダーがパーティションのコンフィグレーション処理を実行後に、CP=1として出荷する。出荷後(After Shipping)は、メモリ部3の再構成は禁止される。デバイスメーカーはCP=1を解除する手段を持つことにより、システムベンダーの再コンフィグレーション処理、言い換えれば、再構成の許可不許可または、回数を制御できる。
【0084】
メモリデバイス1は、メモリデバイス1をSWP=1と設定して出荷することにより、改ざんを防止することができる。デバイスメーカーは、また、メモリデバイス1に、SWP=0に解除する手段を実装することにより、パーティションの更新を可能にする。メモリデバイス1の各プロテクト手段の設定状況、言い換えれば、セキュリティレベルは、解除する手段によって制御できる。
【0085】
以上の説明のように、メモリデバイス1は、ホストデバイス2と接続可能で、ホストデバイス2を起動するためのデータを記憶可能なメモリ部3を有し、かつ、メモリ部3が、複数の異なる属性を有するパーティション31〜36に分割されたメモリデバイス1であって、属性が、ホストデバイス2を起動するためのブートコードのデータを記憶するブート属性およびホストデバイスのOSプログラムのデータを記憶したコード属性を含み、分割されたメモリ部のパーティションの構成変更を禁止する第1のプロテクト手段と、それぞれのパーティションに対する書き込みを禁止する第2のプロテクト手段および第3のプロテクト手段とを有し、第1のプロテクト手段は、個々のメモリデバイス1に対して固有な設定可能なプロテクト手段であり、第2のプロテクト手段は、個々のメモリデバイス1に対して設定するか、またはブート属性およびコード属性のパーティションに対して解除方法を個別に設定可能な固有なプロテクト手段であり、第3のプロテクト手段は、単一の設定解除手段を有するコマンドにより設定可能である共通のプロテクト手段であることを特徴とするメモリデバイス1である。
【0086】
メモリシステム10は、パーティション再構成を禁止でき、システムプログラムがウイルスなどにより改ざんされることができる
以上の説明のように、本発明のメモリシステムは、以下の通りである。
【0087】
ホストデバイスと、前記ホストデバイスと接続可能で、メモリ部とメモリコントローラとを有するメモリデバイスとを有するメモリシステムであって、
前記メモリ部が、複数の異なる属性を有するパーティションに分割可能であり、
前記パーティションに前記データを書き込むための複数の異なる書き込み方法の中から、
前記パーティションの属性に応じて選択された一の前記書き込み方法を用いて更新処理を行うことを特徴とするメモリシステムである。
【0088】
また、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【0089】
【図1】第1の実施の形態にかかるメモリシステムの構成を示す概略図である。
【図2】第1の実施の形態にかかるメモリデバイスのメモリ部の構成を説明するための説明図である。
【図3】第1の実施の形態にかかるメモリデバイスのメモリ部の構成を説明するための説明図である。
【図4】第1の実施の形態にかかるメモリデバイスの情報パーティションの構造を説明するための説明図である。
【図5】第1の実施の形態にかかるメモリデバイスのパーティション選択コマンドを説明するための説明図である。
【図6】第1の実施の形態にかかるメモリデバイスのブート属性のパーティションの更新処理を説明するための説明図である。
【図7】第1の実施の形態にかかるメモリデバイスのブート属性のパーティションの更新処理の流れを説明するためのフローチャートである。
【図8】第2の実施の形態にかかるメモリシステムにおけるコードパーティションのデータ更新方法を説明するための説明図である。
【図9】第1の実施の形態にかかるメモリシステムのメモリデバイスのプロテクト手段を説明するための説明図である。
【符号の説明】
【0090】
1…メモリデバイス、2…ホストデバイス、3…メモリ部、3A…メモリ部、4…ワークスペース、5…メモリ部、6…メモリコントローラ、7…システムメモリ部、8…ホストコントローラ、10…メモリシステム、10A…メモリシステム、31…データパーティション、31A…ワークスペース領域、33…コードパーティション、34…ブートパーティション、35…コードパーティション、36…情報パーティション、50…更新中フラグ

【特許請求の範囲】
【請求項1】
ホストデバイスと接続可能なメモリデバイスで、メモリ部とメモリコントローラとを有し、前記メモリ部が、複数の異なる属性を有するパーティションに分割可能である第1のメモリ部と、前記メモリコントローラが管理するワークスペースとからなる前記メモリデバイスに記憶されるデータの更新方法であって、
前記パーティションにデータを書き込むための複数の異なる書き込み方法の中から、
前記パーティションの属性に応じて選択された一の前記書き込み方法を用いて更新処理を行うことを特徴とするデータの更新方法。
【請求項2】
前記メモリデバイスが、前記ホストデバイスを起動するための前記データを、いずれかの前記パーティションに記憶および更新可能であることを特徴とする請求項1に記載のデータの更新方法。
【請求項3】
前記パーティションのひとつである第1のパーティションが、前記複数のパーティションのそれぞれの有無情報、属性情報、およびサイズ情報を記憶したインフォメーション属性を有するパーティションであり、
前記第1のパーティションの情報と、前記選択された一の書き込み方法とが対応していることを特徴とする請求項1または請求項2に記載のデータの更新方法。
【請求項4】
前記属性が、前記ホストデバイスを起動するためのブートコードのデータを記憶するブート属性を有する前記パーティションである第2のパーティションの前記データの更新方法が、
前記第2のパーティションに記憶されるデータを記憶可能なサイズを有する前記ワークスペースに、前記第2のパーティションに記憶される更新されないデータと、更新するデータとをシーケンシャルに書き込むシーケンシャルライトステップと、
前記ワークスペースへの前記書き込みが正常に終了したことを確認する正常終了確認ステップと、
前記正常終了確認ステップにおいて前記書き込みが正常に終了したことを確認できた場合には、前記メモリデバイスが、前記ワークスペースと前記第2のパーティションとを置き換える、置き換えステップと、
前記正常終了確認ステップにおいて前記書き込みが正常に終了したことを確認できなかった場合には、前記更新処理を中止し、前記ワークスペースに記録した前記データを破棄する更新処理中止ステップとを有することを特徴とする請求項1から請求項3のいずれか1項に記載のデータの更新方法。
【請求項5】
前記ホストデバイスが、システムメモリ部を有し、
前記パーティションのひとつである第3のパーティションの前記属性が、前記ホストデバイスのシステム管理プログラムおよびシステムデータを記憶したコード属性のパーティションであり、
前記第3のパーティションのデータの更新方法が、前記第3のパーティションの大きさを記憶可能な前記パーティションのひとつである第4のパーティションに、更新後の前記第3のパーティションの前記データを記憶するステップと、
更新処理後の前記第3のパーティションのファイル・アロケーション・テーブルを、前記システムメモリ部に記憶するFAT作成ステップと、
前記システムメモリ部に記憶されるファイル・アロケーション・テーブルと、前記第4のパーティションに記憶される前記更新後の第3のパーティションデータとを、前記第3のパーティションに、シーケンシャルに書き込むシーケンシャルライトステップとを有することを特徴とする請求項1から請求項3のいずれか1項に記載のデータの更新方法。
【請求項6】
前記メモリ部が、NAND型フラッシュメモリであることを特徴とする請求項1から請求項5のいずれか1項に記載のデータの更新方法。
【請求項7】
前記メモリ部が、多値記録のNAND型フラッシュメモリであり、
前記属性が異なる前記パーティションの物理的特性が異なることを特徴とする請求項1から請求項6のいずれか1項に記載のデータの更新方法。
【請求項8】
前記物理的特性が、前記メモリコントローラによって管理・制御され、前記パーティションへのデータの書き込みに要する時間、データの読み出しに要する時間、データ書き込み可能回数、データ読み出し可能回数または、記憶されたデータの信頼性の少なくとも1つであることを特徴とする請求項7に記載のデータの更新方法。
【請求項9】
起動時に、
前記第2のパーティションに記憶される第2パーティションブートコードの読み出しができなかった場合には、
第5のパーティションに記憶される第5パーティションブートコードの読み出しを行うことを特徴とする請求項1から請求項4のいずれか1項に記載のデータの更新方法を行うホストデバイス。
【請求項10】
前記第5のパーティションに記憶されていた前記第5パーティションブートコードの読み出しにより起動した場合、
前記第2のパーティションに記憶されていた前記第2パーティションブートコードを、前記第2のパーティションに再度書き込むことを特徴とする請求項9に記載のホストデバイス。
【請求項11】
前記メモリコントローラが管理する更新フラグを持ち、前記第3のパーティションに対して前記シーケンシャルライトステップを開始する前に、更新中フラグを設定し、前記更新処理が完了したときに、更新中フラグをクリアし、
前記メモリコントローラは、前記ホストデバイスを起動するために、前記第3のパーティションのデータを読み出すときに、前記更新中フラグが設定されていた場合には、前記ホストデバイスに読み出しエラーを通知することにより、
前記ホストデバイスを起動する処理を中断し、
再度、FAT作成ステップと、シーケンシャルライトステップとを実行後に、
前記ホストデバイスを再起動することを特徴とする請求項5から請求項8のいずれか1項に記載のデータの更新方法を行うメモリシステム。
【請求項12】
ホストデバイスと接続可能で、前記ホストデバイスを起動するためのデータを記憶可能なメモリ部を有し、かつ、
前記メモリ部が、複数の異なる属性を有するパーティションに分割されたメモリデバイスであって、
前記属性が、前記ホストデバイスを起動するためのブートコードのデータを記憶するブート属性および前記ホストデバイスのOSプログラムのデータを記憶したコード属性を含み、
分割された前記メモリ部の前記パーティションの構成変更を禁止する第1のプロテクト手段と、
それぞれの前記パーティションに対する書き込みを禁止する第2のプロテクト手段および第3のプロテクト手段とを有し、
前記第1のプロテクト手段は、前記メモリデバイスに対して固有な設定可能なプロテクト手段であり、
前記第2のプロテクト手段は、前記メモリデバイスに対して設定するか、または前記ブート属性および前記コード属性の前記パーティションに対して解除方法を個別に設定可能な固有なプロテクト手段であり、
前記第3のプロテクト手段は、単一の設定解除手段を有するコマンドにより設定可能である共通のプロテクト手段であることを特徴とするメモリデバイス。
【請求項13】
前記メモリ部が、NAND型フラッシュメモリであることを特徴とする請求項12に記載のメモリデバイス。
【請求項14】
前記メモリ部が、多値記録のNAND型フラッシュメモリであり、
前記属性が異なる前記パーティションの物理的特性が異なることを特徴とする請求項11または請求項13に記載のメモリデバイス。
【請求項15】
前記物理的特性が、前記パーティションへのデータの書き込みに要する時間、データの読み出しに要する時間、データ書き込み可能回数、データ読み出し可能回数または、記憶されたデータの信頼性の少なくとも1つであることを特徴とする請求項14に記載のメモリデバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−230407(P2009−230407A)
【公開日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願番号】特願2008−74258(P2008−74258)
【出願日】平成20年3月21日(2008.3.21)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】