(57)【要約】【課題】  データの書込み中に電源遮断が生じた場合でも、既に書込み済のデータが修復できなくなるまで破壊されることのない電源障害耐性と、データ書込みの高速性とを両立可能な「メモリ管理装置およびメモリ管理方法」を提供する。【解決手段】  書込み要求に係るデータのサイズがブロックを丸ごと含むほど大きい場合であって、最新の書込位置がブロックの先頭に合致した場合、データ書込モードを多値モードに切替えて書込要求に係るデータの書込みを行わせる。これにより、ブロック単位から外れた比較的小容量のデータの書込みは電源障害耐性に優れた複合モードで行われる一方、ブロック単位での比較的大容量のデータの書込みはデータ書込みの高速性に優れた多値モードで行われるようにする。【選択図】図２
2012027806.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリの記憶領域にデータを書込むためのデータ書込モードとして、一のセルに２値を超える多値形式でデータを書込む多値モードと、一のセルに２値形式でデータを書込む２値モードによりいったんデータを書込んだ後、この書込み済データを用いて他のセルに前記多値モードによりデータを書込む複合モードとを有し、前記複合モードを優先適用して前記フラッシュメモリに対するデータの書込み制御を行うメモリ管理装置であって、
データのサイズ情報を含む書込要求を受け付ける書込要求受付部と、
前記書込要求に係るデータの書込みを前記フラッシュメモリに行わせる書込制御部と、
前記フラッシュメモリが有するブロックのサイズの情報、及び前記フラッシュメモリの記憶領域における最新の書込位置の情報を含むメモリ情報を取得するメモリ情報取得部と、
前記書込要求受付部により受け付けた書込要求に係るデータのサイズ情報と、前記メモリ情報取得部で取得したメモリ情報とに基づいて、前記書込要求に係るデータを前記フラッシュメモリの記憶領域に書込んだ場合に一以上のブロックを含むブロック書込みが生じるか否かを判定するブロック書込判定部と、を備え、
前記書込制御部は、前記ブロック書込判定部により前記ブロック書込みが生じると判定された場合であって、前記メモリ情報取得部により取得したメモリ情報のうち前記最新の書込位置が前記一以上のブロックの先頭に合致した場合、前記データ書込モードを前記多値モードに切替えて前記書込要求に係るデータの書込みを行わせる、
ことを特徴とするメモリ管理装置。
【請求項２】
請求項１に記載のメモリ管理装置であって、
前記書込制御部は、前記データ書込モードが前記多値モードに切替えられている場合であって、前記メモリ情報取得部により取得したメモリ情報のうち前記最新の書込位置が前記一以上のブロックの終端に合致した場合、前記データ書込モードを前記複合モードに戻して前記書込要求に係るデータの書込みを行わせる、
ことを特徴とするメモリ管理装置。
【請求項３】
請求項１又は２に記載のメモリ管理装置であって、
前記フラッシュメモリへの給電状態を監視する給電監視部と、
前記ブロック書込みの処理中に前記給電監視部により電源の遮断が検出された場合、前記ブロック書込みの該当ブロックに係るデータを無効化する無効化指令を前記フラッシュメモリに発行する無効化指令部と、
を更に備えた
ことを特徴とするメモリ管理装置。
【請求項４】
フラッシュメモリの記憶領域にデータを書込むためのデータ書込モードとして、一のセルに２値を超える多値形式でデータを書込む多値モードと、一のセルに２値形式でデータを書込む２値モードによりいったんデータを書込んだ後、この書込み済データを用いて他のセルに前記多値モードによりデータを書込む複合モードとを有し、いずれかのデータ書込モードを適用して前記フラッシュメモリに対するデータの書込み制御を行うためのメモリ管理方法であって、
データのサイズ情報を含む書込要求を受け付ける書込要求受付手順と、
前記フラッシュメモリが有するブロックのサイズの情報、及び前記フラッシュメモリの記憶領域における最新の書込位置の情報を含むメモリ情報を取得するメモリ情報取得手順と、
前記書込要求受付手順で受け付けた書込要求に係るデータのサイズ情報と、前記メモリ情報取得手順で取得したメモリ情報とに基づいて、前記書込要求に係るデータを前記フラッシュメモリの記憶領域に書込んだ場合に一以上のブロックを含むブロック書込みが生じるか否かを判定するブロック書込判定手順と、
前記書込要求に係るデータの書込みを前記フラッシュメモリに行わせる書込制御手順と、を有し、
前記書込制御手順では、前記ブロック書込判定手順により前記ブロック書込みが生じると判定された場合において、前記メモリ情報取得手順により取得したメモリ情報のうち前記最新の書込位置が前記一以上のブロックの先頭に合致しない場合、前記データ書込モードを前記複合モードにして前記書込要求に係るデータの書込みを行わせる一方、前記最新の書込位置が前記一以上のブロックの先頭に合致した場合、この合致したタイミングで、前記データ書込モードを前記多値モードにして前記書込要求に係るデータの書込みを行わせる、
ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリに対するデータの書込み制御を行うためのメモリ管理装置およびメモリ管理方法に関する。
【背景技術】
【０００２】
最近の携帯情報端末等の情報処理装置では、起動時間が短く振動に強いという利点から、内蔵又は外部の記憶装置としてフラッシュメモリを用いるものが普及してきた。フラッシュメモリの記録容量向上を狙って、一のセルに２値を超える多値形式でデータを書込み可能な多値フラッシュメモリと呼ばれるものが開発された（例えば特許文献１参照）。多値フラッシュメモリでは、セルの浮遊ゲートに電子が注入されると、セルに蓄えられる電荷の量（閾値電圧）が変化する。この現象を利用して多値データを記憶する。特許文献１の多値化技術によれば、単位面積当たりの記録密度を高めて記録容量を大きくすることができる。
【０００３】
しかし、特許文献１に係る多値化技術は、データ書込みの信頼性が低いという問題がある。これについて説明すると、この多値化技術では、一のセルに対し、相異なる一対のページのデータが多値形式で書込まれる。このため、一のセルに第１のページのデータを書込んだ後、同一のセルに第１のページと対をなす第２のページのデータを書込み中に電源遮断が生じると、書込み中であった第２のページのデータのみならず、既に書込み済の第１のページのデータまでもが破壊されてしまう。
【０００４】
こうした不具合を解消するために、一のセルに２値形式でデータをいったん書込んだ後、この書込み済データを用いて他のセルに多値形式でデータを書込む技術が提案されている（例えば特許文献２，３参照）。また、同一のセルに相対するページの一部が書込まれる多値フラッシュメモリにおいて、複数のブロックから選択した一対のブロックのそれぞれに、相対するページのデータを多値形式で重複させて書込む技術が提案されている（例えば特許文献４参照）。
【０００５】
特許文献２，３に係る技術では、多値形式データを書込み中に電源遮断が生じた場合、該当するブロック内で書込み中の多値形式データは一時的に失われるが、２値形式の書込み済データを用いて全てのデータを復旧することができる。また、特許文献４に係る技術では、多値形式データを書込み中に電源遮断が生じた場合、一対のブロックのうち一方のブロックにおいて書込み中の多値形式データは失われるが、他方のブロックにおいて書込み済の多値形式データは残っている。従って、特許文献２〜４に係る技術によれば、データを書込み中に電源障害が生じた場合でも、既に書込み済のデータが修復できなくなるほど破壊されることはないため、電源障害耐性を高めることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１７３２８１号公報
【特許文献２】特開２００７−２５７１０９号公報
【特許文献３】特開２００８−００３６８４号公報
【特許文献４】特開２００８−１５８９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２，３に係る技術では、データ書込みを二段階に分けて行うこと、並びに２値データを多値データに変換するための演算を要することが災いし、データ書込みに長時間を要するという問題があった。また、特許文献４に係る技術では、同一のデータを一対のブロックにそれぞれ重複させて書込むため、特許文献２，３と同様に、データ書込みに長時間を要するという問題があった。
【０００８】
本発明は、こうした問題を解決するためになされたものであり、データの書込み中に電源遮断が生じた場合でも、既に書込み済のデータが修復できなくなるまで破壊されることのない電源障害耐性と、データ書込みの高速性とを両立できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係るメモリ管理装置では、書込み要求に係るデータのサイズがブロックを丸ごと含むほど大きい場合であって、最新の書込位置がブロックの先頭に合致した場合、電源障害耐性に優れた複合モードからデータ書込みの高速性に優れた多値モードにデータ書込モードを切替えることとした。
【発明の効果】
【００１０】
本発明に係るメモリ管理装置では、書込み要求に係るデータのサイズがブロックを丸ごと含むほど大きい場合において、ブロック単位から外れた比較的小容量のデータの書込みは、電源障害耐性に優れた複合モードで行われる。一方、ブロック単位での比較的大容量のデータの書込みは、高速性に優れた多値モードで行われる。従って、本発明に係るメモリ管理装置によれば、データの書込み中に電源遮断が生じた場合でも既に書込み済のデータが修復できなくなるまで破壊されることのない電源障害耐性と、データ書込みの高速性とを両立することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るメモリ管理装置及びその周辺の概略構成図である。
【図２】図１のメモリ管理装置が行うデータ書込モード制御に係る処理の流れを示すフロー図である。
【図３】図１のメモリ管理装置が行う割込み処理の流れを示すフロー図である。
【図４】本実施形態に係るメモリ管理装置がデータ書込モード制御を伴うデータ書込みを行った場合にもたらされる効果を概念的に示す説明図である。
【図５】比較例１に係るメモリ管理装置が多値モードによりデータ書込みを行った場合に生じる問題を概念的に示す説明図である。
【図６】比較例２に係るメモリ管理装置が複合モードによりデータ書込みを行った場合に生じる問題を概念的に示す説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態について、添付の図面を参照しながら詳細に説明する。
【００１３】
（メモリ管理装置及びその周辺の概略構成）
図１は、本実施形態に係るメモリ管理装置及びその周辺の概略構成図である。本実施形態に係るメモリ管理装置１１は、入力系要素であるアプリケーション１３を実装した不図示のマイクロコンピュータを接続する一方、出力系要素であるフラッシュメモリ１５を、不図示の物理インタフェースを介して接続してなる。メモリ管理装置１１は、フラッシュメモリ１５の記憶領域にデータを書込むためのデータ書込モードとして、一のセルに２値を超える多値形式でデータを書込む多値モードと、一のセルに２値形式でデータを書込む２値モードによりいったんデータを書込んだ後、この書込み済データを用いて他のセルに多値モードによりデータを書込む複合モードとを有する。メモリ管理装置１１は、フラッシュメモリ１５に対して読み書き指令を行うと共に、読み書き指令に伴うデータの送受信を行う。なお、本実施形態に係るメモリ管理装置１１では、複合モードを優先適用してフラッシュメモリ１５に対するデータの書込み制御を行う。
【００１４】
アプリケーション１３は、メモリ管理装置１１に書込指令を行うと共に書込データを提供する機能と、書込指令に従ってデータ書込みが行われたか否かに係る書込成否を判断する機能とを有する。フラッシュメモリ１５は、一のセルに対し一対のページに跨ったデータが書込まれる多値ＮＡＮＤ型のメモリである。
【００１５】
フラッシュメモリ１５は、メモリ管理装置１１の物理インタフェースを介して電源の供給を受けて動作する。フラッシュメモリ１５は、後述する書込制御部２３からの書込指令を受けて、書込指令に従うデータ書込みを行う。フラッシュメモリ１５は、複数（例えば４０９６個など）の物理ブロックを有する。各ブロックのサイズは、例えば５１２ｋＢ〜４ＭＢ程度である。ブロックは、データの消去単位である。各物理ブロックは、それぞれが例えば１２８ページからなる。各ページは、メモリ管理装置１１からのアクセス単位であり、例えば２１１２バイトの記憶容量をもつ。
【００１６】
メモリ管理装置１１は、バッファメモリ１７及び制御部１９を有する。バッファメモリ１７は、フラッシュメモリ１５に対する読み書き指令に従うデータを一時的に蓄積する。制御部１９は、例えば、ＣＰＵ（Central processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等を備えたマイクロコンピュータにより構成される。ＣＰＵは、ＲＯＭに格納されたプログラムに従って、ＲＡＭをワークエリアとして用いて各種の処理を実行する。
【００１７】
具体的には、制御部１９は、フラッシュメモリ１５に対する読み書き指令を行うと共に、この読み書き指令に伴うデータの送受信を制御する。フラッシュメモリ１５に対するデータの書込みを行うため、制御部１９は、書込要求受付部２１、書込制御部２３、メモリ情報取得部２５、ブロック書込判定部２７、給電監視部３１、及び無効化指令部３３を備える。なお、データの読出しを行うための構成は、本発明の要旨と直接関係がないため省略する。
【００１８】
書込要求受付部２１は、アプリケーション１３から送信されてきた書込指令を受信・解釈し、データのサイズ情報を含む書込要求を受け付ける。ここで受け付けられた書込要求に含まれるデータのサイズ情報は、ブロック書込判定部２７においてブロック書込判定を行う際に参照される。書込制御部２３は、アプリケーション１３から送信されてきた書込指令とは別に、書込要求に係るデータの書込指令を作成し、作成した書込指令をフラッシュメモリ１５に発行する。これにより、書込制御部２３は、書込要求に係るデータの書込みをフラッシュメモリ１５に行わせる。
【００１９】
また、書込制御部２３は、フラッシュメモリ１５の記憶領域の物理状態を管理する。詳しく述べると、書込制御部２３は、書込要求受付部２１により受け付けたデータのサイズ情報を含む書込要求と、次述するメモリ情報取得部２５により取得したメモリ情報と、後述するブロック書込判定部２７によるブロック書込判定結果とに基づいて、書込要求に係るデータを書込処理する際に参照されるデータ書込スケジュールを作成する。このデータ書込スケジュールには、フラッシュメモリ１５が有する記憶領域のうち任意の場所を一意に指定可能なアドレス情報（物理アドレスまたは論理アドレスのうちいずれか）に対応付けて、データ書込モードの種別（複合モードか、或いは多値モードか）が記述されている。このデータ書込モードの種別に代えて、データ書込モードの切替え内容（データ書込モードを、複合モードから多値モードに切替えるか、多値モードから複合モードに戻す）を記述してもよい。このデータ書込スケジュールの記述内容と、最新の書込位置とに基づいて、書込制御部２３は、データ書込モードの種別の切替えを適確なタイミングで制御する。
【００２０】
メモリ情報取得部２５は、フラッシュメモリ１５が有する物理ブロックのサイズの情報、及びフラッシュメモリ１５の記憶領域における最新の書込位置の情報（例えば、物理ブロックの物理アドレス）を含むメモリ情報を取得する。物理ブロックのサイズの情報は、次述するブロック書込み判定を行う際に参照される。最新の書込位置の情報は、データ書込みの進捗状況を判断する際に逐次参照される。
【００２１】
メモリ情報のうちフラッシュメモリ１５が有する物理ブロックのサイズの情報の取得経路としては、例えば、フラッシュメモリ１５の製品型番のバリエーション毎にメモリ情報を関連付けたテーブルを制御部１９の中に予め記憶させておき、製品型番を与えることで対応するメモリ情報を取得すればよい。或いは、フラッシュメモリ１５の側にメモリ情報を持たせておき、これを読み出すことでメモリ情報を取得してもよい。
【００２２】
メモリ情報の取得タイミングは、メモリ情報の内容によって異なる。フラッシュメモリ１５が有する物理ブロックのサイズの情報は、フラッシュメモリ１５に固有の情報で内容が変動する性質のものでないため、実際にデータ書込みを実行する前までに少なくとも１回取得すればよい。一方、フラッシュメモリ１５の記憶領域における最新の書込位置の情報は、データ書込みの進捗に伴って時々刻々と内容が変動する性質のものであるため、データ書込みの進捗に伴って、例えば所定時間毎に繰り返し取得すればよい。
【００２３】
ブロック書込判定部２７は、書込要求受付部２１で受け付けた書込要求に係るデータのサイズ情報と、メモリ情報取得部２５で取得したメモリ情報とに基づいて、書込要求に係るデータをフラッシュメモリ１５の記憶領域に書込んだ場合に一以上のブロックを丸ごと含むブロック書込みが生じるか否かを判定する。この判定は、ブロックのサイズの情報を取得したときに、ブロック書込判定部２７が行う。ブロック書込判定部２７は、少なくとも１単位のブロック書込みが生じる場合に”Ｙｅｓ”の判定を下す。ただし、電源遮断耐性とデータ書込みの高速性とを比較考量した場合、前者が後者を上回る（データ書込みの高速性の要請が比較的低い）ようなフラッシュメモリ１５の使用環境下では、所定数単位（ただし、所定数は２以上の任意の値）以上のブロック書込みが生じる場合に”Ｙｅｓ”の判定を下すような、ブロック書込判定部２７の構成を採用してもよい。
【００２４】
ブロック書込判定部２７によりブロック書込みが生じると判定された場合、書込制御部２３は、メモリ情報取得部２５により取得したメモリ情報のうち最新の書込位置がブロックの先頭に合致するか否かを判断する。最新の書込位置がブロックの先頭に合致しない（最新の書込位置がブロックの先頭に未だ達していない）と判断した場合、書込制御部２３は、書込要求に係るデータの書込みを複合モードで行わせる書込指令をフラッシュメモリ１５に発行する。一方、最新の書込位置がブロックの先頭に合致した（最新の書込位置がブロックの先頭に達した）と判断した場合、書込制御部２３は、この合致したタイミングで、書込要求に係るデータの書込みを多値モードで行わせる書込指令をフラッシュメモリ１５に発行する。
【００２５】
ブロック書込判定部２７によりブロック書込みが生じると判定され、かつ、データ書込モードが多値モードに切替えられている場合（つまり、ブロック書込み実行中の場合）、書込制御部２３は、メモリ情報取得部２５により取得したメモリ情報のうち最新の書込位置がブロックの終端に合致するか否かを判断する。最新の書込位置がブロックの終端に合致しない（最新の書込位置がブロックの終端に未だ達していない）と判断した場合、書込制御部２３は、書込要求に係るデータの書込みを多値モードで行わせる書込指令をフラッシュメモリ１５に発行する。一方、最新の書込位置がブロックの終端に合致した（最新の書込位置がブロックの終端に達した）と判断した場合、書込制御部２３は、この合致したタイミングで、書込要求に係るデータの書込みを複合モードで行わせる書込指令をフラッシュメモリ１５に発行する。
【００２６】
給電監視部３１は、フラッシュメモリ１５への給電状態を監視する。例えば、フラッシュメモリ１５がメモリ管理装置１１の物理インタフェースから外れた場合に、給電監視部３１は、フラッシュメモリ１５に対する電源遮断を検出する。また、メモリ管理装置１１それ自身の電源が遮断された場合は、給電監視部３１は、例えば、バックアップ用電池から供給される電源を用いて自身の電源遮断を検出するか、或いは、メモリ管理装置１１の電源供給が再開された場合に、過去に電源遮断があった旨を検出するなど、適当な技術的手段を用いて電源の遮断を検出すればよい。
【００２７】
無効化指令部３３は、ブロック書込みの処理中に給電監視部３１により電源の遮断が検出された場合、ブロック書込みの該当ブロックに係るデータを無効化する無効化指令をフラッシュメモリ１５に発行する。ここで、データの無効化を行う趣旨はふたつある。すなわち、ブロック書込みの処理中に電源遮断が生じた場合、その該当ブロック以外のブロックに属するデータには何ら影響を及ぼさないが、その該当ブロックでは任意の部分（どの部分かは一般に追跡困難）のデータに瑕疵を生じる蓋然性が高いので、こうした瑕疵を一掃するのが第１の趣旨である。また、データの無効化が済んだ該当ブロックを再利用して初めからデータの書き直しを行うことにより、メモリ資源の有効活用を図るのが第２の趣旨である。
【００２８】
（データ書込モード制御に係る処理の流れ）
次に、本実施形態に係るメモリ管理装置１１が行うデータ書込モード制御に係る処理の流れについて、図面を参照して説明する。図２は、本実施形態に係るメモリ管理装置１１が行うデータ書込モード制御に係る処理の流れを示すフロー図である。図２に示すデータ書込モード制御に係る処理は、新しいデータ書込要求が生じる毎に開始される。
【００２９】
図２に示すステップＳ１１において、書込制御部２３は、データ書込モードを複合モードに優先設定する指令をフラッシュメモリ１５に発行する。これにより、フラッシュメモリ１５では、データ書込モードが複合モードに初期設定される。ステップＳ１２において、書込要求受付部２１は、アプリケーション１３から送信されてきた書込指令を受信・解釈し、データのサイズ情報を含む書込要求を受け付ける。ステップＳ１２は、”書込要求受付手順”に相当する。ステップＳ１３において、メモリ情報取得部２５は、フラッシュメモリ１５からメモリ情報を取得する。ステップＳ１３は、”メモリ情報取得手順”に相当する。
【００３０】
ステップＳ１４において、ブロック書込判定部２７は、書込要求受付部２１で受け付けた書込要求に係るデータのサイズ情報と、メモリ情報取得部２５で取得したメモリ情報とに基づいて、書込要求に係るデータをフラッシュメモリ１５の記憶領域に書込んだ場合に１単位以上のブロックを丸ごと含むブロック書込みが生じるか否かを判定する。ステップＳ１４において、ブロック書込判定部２７は、１単位以上のブロック書込みが生じる場合に”Ｙｅｓ”の判定を下す。ステップＳ１４は、”ブロック書込判定手順”に相当する。
【００３１】
書込制御部２３は、ステップＳ１２で受け付けたデータのサイズ情報を含む書込要求と、ステップＳ１３で取得したメモリ情報と、ステップＳ１４によるブロック書込判定結果とに基づいて、書込要求に関するデータ書込スケジュールを作成する。このデータ書込スケジュールには、フラッシュメモリ１５における記憶領域の相互に異なるアドレスに対応付けて、相応しいデータ書込モードの内容（モードの切替えタイミングでも可）が記述されている。
【００３２】
ステップＳ１４の判定の結果、１単位以上のブロック書込みが生じない旨の判定が下された場合、制御部１９は、処理の流れをステップＳ１５に進ませる。ステップＳ１５において、書込制御部２３は、メモリ情報取得部２５により取得したメモリ情報のうち最新の書込位置と、データ書込スケジュールとに基づいて、書込要求に係る全データの書込みが終了したかを調べる。そして、制御部１９は、全データの書込み終了を待って、全ての処理の流れを終了させる。
【００３３】
ステップＳ１４の判定の結果、１単位以上のブロック書込みが生じる旨の判定が下された場合、ステップＳ１６において、書込制御部２３は、メモリ情報取得部２５により取得したメモリ情報のうち最新の書込位置がブロックの先頭に合致するか否かを判断する。
【００３４】
ステップＳ１６の判断の結果、最新の書込位置がブロックの先頭に合致しない（最新の書込位置がブロックの先頭に未だ達していない）と判断された場合、ステップＳ１７において、書込制御部２３は、書込要求に係るデータの書込みを初期設定された複合モードで行わせる書込指令をフラッシュメモリ１５に発行する。これにより、フラッシュメモリ１５では、複合モードによるデータ書込処理が行われる。このデータ書込処理は、例えば、予め定めた任意のアドレス数の分だけ行われる（以下、同様）。書込指令に従うデータ書込処理が行われると、ステップＳ１８において、メモリ情報取得部２５は、最新の書込位置を（前述の任意のアドレス数の分だけ；以下、同様）更新する。
【００３５】
ステップＳ１９において、書込制御部２３は、メモリ情報取得部２５により取得したメモリ情報のうち最新の書込位置と、データ書込スケジュールとに基づいて、書込要求に係る全データの書込みが終了したか否かを判断する。ステップＳ１９の判断の結果、書込要求に係る全データの書込みが未だ終了していないと判断された場合、制御部１９は、処理の流れをステップＳ１６へと戻し、以下の処理を実行させる。一方、ステップＳ１９の判断の結果、書込要求に係る全データの書込みが終了したと判断された場合、制御部１９は、全ての処理の流れを終了させる。
【００３６】
一方、ステップＳ１６の判断の結果、最新の書込位置がブロックの先頭に合致した（最新の書込位置がブロックの先頭に達した）と判断された場合、ステップＳ２０において、書込制御部２３は、初期設定された複合モードから多値モードに切替えて書込要求に係るデータの書込みを行わせる書込指令をフラッシュメモリ１５に発行する。これにより、フラッシュメモリ１５では、多値モードによるデータ書込処理が行われる。書込指令に従うデータ書込処理が行われると、ステップＳ２１において、メモリ情報取得部２５は、最新の書込位置を更新する。
【００３７】
ステップＳ２２において、書込制御部２３は、ステップＳ２１で更新した最新の書込位置がブロックの終端に合致するか否かを判断する。ステップＳ２２の判断の結果、最新の書込位置がブロックの終端に合致しない（最新の書込位置がブロックの終端に未だ達していない）と判断された場合、制御部１９は、処理の流れをステップＳ２０へと戻して、以下の処理を実行させる。一方、ステップＳ２２の判断の結果、最新の書込位置がブロックの終端に合致した（最新の書込位置がブロックの終端に達した）と判断された場合、制御部１９は、処理の流れをステップＳ１６へと戻して、以下の処理を実行させる。なお、ステップＳ１６からＳ２２に至る一連の処理は、”書込制御手順”に相当する。
【００３８】
（割込み処理の流れ）
次に、本実施形態に係るメモリ管理装置１１が行う割込み処理の流れについて、図面を参照して説明する。図３は、メモリ管理装置１１が行う割込み処理の流れを示すフロー図である。図３に示す割込み処理は、給電監視部３１の給電監視の結果、フラッシュメモリ１５に対する電源の遮断が検出された場合に実行される。
【００３９】
図３に示すステップＳ３１において、無効化指令部３３は、ブロック書込みの該当ブロックに係るデータを無効化する無効化指令をフラッシュメモリ１５に発行する。これにより、フラッシュメモリ１５では、ブロック書込みの該当ブロックに係るデータの消去が行われる。
【００４０】
（データ書込モード制御を伴うデータ書込みの実施形態）
次に、データ書込モード制御を伴うデータ書込みの実施形態について、図面を参照して説明する。図４は、本実施形態に係るメモリ管理装置１１によりデータ書込モード制御を伴うデータ書込みを行った場合に、本実施形態の効果がもたらされる様子を概念的に示す説明図である。
【００４１】
図４に示すフラッシュメモリ１５では、説明の便宜上、４つの物理ブロックＢ０，Ｂ１，Ｂ２，Ｂ３を拡大して表した。同図に示すフラッシュメモリ１５の右側部分には、記憶領域が複数の物理ブロックＢ０〜Ｂ３によって均等に区切られている様子を表す。同図の左側部分には、複数に区切られたそれぞれの記憶領域毎にもたらされる本実施形態の効果を概念的に示した。物理ブロックＢ０には、先頭を表す物理アドレスＢ０_Ｓ、終端を表す物理アドレスＢ０_Ｅ、これらのちょうど中間に位置する物理アドレスＢ０_Ｍがそれぞれ付与されている。同様に、物理ブロックＢ１，Ｂ２には、先頭を表す物理アドレスＢ１_Ｓ，Ｂ２_Ｓ、終端を表す物理アドレスＢ１_Ｅ，Ｂ２_Ｅがそれぞれ付与されている。そして、物理ブロックＢ３には、先頭を表す物理アドレスＢ３_Ｓ、終端を表す物理アドレスＢ３_Ｅ、これらのちょうど中間に位置する物理アドレスＢ３_Ｍがそれぞれ付与されている。
【００４２】
図４に示す物理ブロックＢ０のうち先頭アドレスＢ０_Ｓと中間アドレスＢ０_Ｍとの間の領域Ａ００は、既に書込み済のデータ領域を表す。同様に、物理ブロックＢ３のうち中間アドレスＢ３_Ｍと終端アドレスＢ３_Ｅとの間の領域Ａ３１も、既に書込み済のデータ領域を表す。本実施形態において、物理ブロックＢ０のうち中間アドレスＢ０_Ｍと、物理ブロックＢ３のうち中間アドレスＢ３_Ｍとの間の領域（領域Ａ０１＋Ａ１＋Ａ２＋Ａ３０）が、書込要求に係るデータの占有領域に相当するものとする。
【００４３】
前述のサイズ情報を含む書込要求に係るデータを受けた制御部１９において、ブロック書込判定部２７は、２単位分のブロック書込み（物理ブロックＢ１及びＢ２）が生じる旨の判定を下す。この場合、書込制御部２３は、物理ブロックＢ０のうち中間アドレスＢ０_Ｍと終端アドレスＢ０_Ｅとの間の領域Ａ０１と、物理ブロックＢ３のうち先頭アドレスＢ３_Ｓと中間アドレスＢ３_Ｍとの間の領域Ａ３０では、電源遮断耐性に優れた複合モードによるデータ書込みを行う旨の判断を下す。また、書込制御部２３は、物理ブロックＢ１及びＢ２に係る領域（領域Ａ１＋Ａ２）では、データ書込みの高速性に優れた多値モードによるデータ書込みを行う旨の判断を下す。
【００４４】
ここで、本実施形態に係る多値ＮＡＮＤ型のフラッシュメモリ１５では、多値モードにより一のセルに第１のページのデータを書込んだ後、同一のセルに第１のページと対をなす第２のページのデータを書込み中に電源遮断が生じると、書込み中であった第２のページのデータのみならず、既に書込み済の第１のページのデータまでもが破壊されてしまう。しかも、こうして破壊されてしまった第１のページのデータは、フラッシュメモリ１５の仕様上、どのアドレスに格納されていたどのデータであるかを追跡することが困難である。このため、破壊されてしまった第１のページのデータを修復することは二度とできなくなってしまう。要するに、多値モードによるデータ書込みは、修復できなくなるまでデータが破壊されるリスクを本来的に内在している。
【００４５】
しかし、本実施形態では、多値モードによるデータ書込みはブロック単位で行われる。このため、例えば、物理ブロックＢ２での多値モードによるデータ書込み中に電源遮断が生じた場合に、別の物理ブロックＢ０，Ｂ３内にある既に書込み済のデータが破壊されることはない。従って、この場合、物理ブロックＢ２に関するデータ書込みをはじめからやり直しさえすれば、書込要求に係るデータ書込みの実行に支障を来たすことはないし、既に書込み済のデータに支障を来たすこともない。
【００４６】
また、多値モードによるデータ書込みでは、複合モードによるそれと比べて、データ書込みの速度が約３倍程度速い。このため、多値モードによるデータ書込みが行われる多値モード書込領域（Ａ１＋Ａ２）では、高速性に優れたデータ書込みを実現することができる。
【００４７】
多値モードによるデータ書込みに対し、複合モードによるデータ書込みでは、仮に、その書込み中に電源遮断が生じた場合でも、共通の物理ブロックＢ０，Ｂ３内にある既に書込み済のデータが修復できなくなるまで破壊されることはない。このため、複合モードによるデータ書込みが行われる複合モード書込領域（Ａ０１＋Ａ３０）では、電源遮断耐性に優れたデータ書込みを実現することができる。
【００４８】
要するに、本実施形態では、多値モードによるデータ書込みはブロック単位のデータに限って適用するようにしている。これにより、多値モードによるデータ書込み時に、修復できなくなるまでデータが破壊される事態を未然に回避すると共に、書込要求に係る全データの処理の高速化を図っている。
【００４９】
（多値モードによるデータ書込みの比較例１）
次に、多値モードによるデータ書込みの比較例１について、図面を参照して説明する。図５は、比較例１に係るメモリ管理装置が多値モードによりデータ書込みを行った場合に生じる問題を概念的に示す説明図である。
【００５０】
図５に示す比較例１では、書込要求領域（Ａ０１＋Ａ１＋Ａ２＋Ａ３０）の全てに対し、多値モードによるデータ書込みが行われる。この場合において、仮に、多値モード書込領域（Ａ０１＋Ａ３０）における書込み中に電源遮断が生じた場合、共通の物理ブロックＢ０，Ｂ３内にある既に書込み済のデータは、多値モードによるデータ書込みが本来的に内在する”修復できなくなるまでデータが破壊される”リスクを負う蓋然性が高い。このため、比較例１に係る多値モード書込領域（Ａ０１＋Ａ３０）では、電源遮断耐性に優れたデータ書込みを実現することはできないことがわかる。
【００５１】
（複合モードによるデータ書込みの比較例２）
次に、複合モードによるデータ書込みの比較例２について、図面を参照して説明する。図６は、比較例２に係るメモリ管理装置が複合モードによるデータ書込みを行った場合に生じる問題を概念的に示す説明図である。
【００５２】
図６に示す比較例２では、書込要求領域（Ａ０１＋Ａ１＋Ａ２＋Ａ３０）の全てに対し、複合モードによるデータ書込みが行われる。この場合には、仮に、複合モード書込領域（Ａ０１＋Ａ３０）における書込み中に電源遮断が生じた場合であっても、共通の物理ブロックＢ０，Ｂ３内にある既に書込み済のデータが修復できなくなるほど破壊されることはない。しかし、比較例２に係る複合モード書込領域（Ａ０１＋Ａ１＋Ａ２＋Ａ３０）では、データ書込みに長時間を要する。このため、高速性に優れたデータ書込みを実現することはできないことがわかる。
【００５３】
以上説明したように、本実施形態に係るメモリ管理装置１１では、ブロック書込みが生じる場合、最新の書込位置がブロックの先頭に合致するタイミングで、データ書込モードを電源障害耐性に優れた複合モードからデータ書込みの高速性に優れた多値モードに切替える。従って、本実施形態に係るメモリ管理装置１１によれば、データの書込み中に電源遮断が生じた場合でも、既に書込み済のデータが修復できなくなるまで破壊されることのない電源障害耐性と、データ書込みの高速性とを両立することができる。
【００５４】
また、本実施形態に係るメモリ管理装置１１では、データ書込モードが多値モードに切替えられている場合であって、最新の書込位置がブロックの終端に合致合致した場合、データ書込モードを複合モードに戻すようにしている。従って、ブロック単位のデータ書込み後にブロック単位から外れた比較的小容量のデータの書込みが未だ残っている場合に、このデータに係る書込モードを、優先適用された複合モードに速やかに戻すことができる。
【００５５】
さらに、本実施形態に係るメモリ管理装置１１では、ブロック書込みの処理中に給電監視部３１により電源の遮断が検出された場合、ブロック書込みの該当ブロックに係るデータを無効化するようにしている。従って、ブロック書込みの途中に電源遮断が生じた場合でも、電源遮断によって瑕疵を生じたデータを一掃すると共に、データの無効化が済んだ該当ブロックを再利用して初めからデータの書き直しを行うことにより、メモリ資源の有効活用を図ることができる。
【００５６】
なお、本実施形態に係るメモリ管理装置１１の制御部１９は、ソフトウェアドライバの態様で実現することができる。このように構成すれば、書込要求に係るデータのサイズと最新の書込位置の情報に基づいてデータ書込モードの切替えに係る条件判断をドライバレベルで行うことができる。従って、アプリケーションの変更を要することなく、データ書込モード制御機能に係る実装を簡易に実現することができる。
【００５７】
また、本実施形態に係るメモリ管理装置１１は、その適用用途を特に限定することなく、あらゆる態様で実施することができる。一例をあげれば、内蔵メモリ又は外部メモリとしてフラッシュメモリを有する車載用ナビゲーション装置において、このフラッシュメモリに対するデータの書込み制御を行う用途に、本実施形態に係るメモリ管理装置１１を適用してもよい。この場合、本実施形態に係るメモリ管理装置１１は、例えば、車載用ナビゲーション装置に組み込んで構成すればよい。
【００５８】
車載用ナビゲーション装置において、経路の案内又は誘導を行う通常の使用時には、大容量のデータを書き込む機会はほとんど生じない。このため、こうした通常の使用時においては、シーケンシャルライトが多少遅くても問題にはならず、それよりも電源遮断耐性が求められる。従って、本実施形態のように、電源遮断耐性の高い複合モードを優先適用するのが好ましい。
【００５９】
ところが、例えば、車載用ナビゲーション装置の工場出荷時や、年次の地図データベースを定期更新する場合等には、マスターデータを用いて１０ＧＢ程度の比較的大容量の地図データをフラッシュメモリに書込むべき要請が生じる。この要請に応えるための所要時間は、例えば、多値モードによるデータ書込み（比較例１参照）では約１０分程度であるが、複合モードによるデータ書込み（比較例２参照）では約３０分程度と約３倍も長くかかってしまう。
【００６０】
この点、車載用ナビゲーション装置に搭載されたフラッシュメモリに対する地図データの書込み制御を行う用途に本実施形態に係るメモリ管理装置１１を適用した場合、メモリ管理装置１１は次のように動作する。すなわち、書込み要求に係る地図データのサイズがブロックを丸ごと含むほど大きい場合に、ブロック単位から外れた比較的小容量の地図データの書込みは、電源障害耐性に優れた複合モードで行われる。一方、ブロック単位での比較的大容量の地図データの書込みは、高速性に優れた多値モードで行われる。このため、フラッシュメモリに対する地図データ書込み要求を、全体として高速に処理することができる。
【００６１】
従って、車載用ナビゲーション装置に搭載されたフラッシュメモリに対する地図データの書込み制御を行う用途に、本実施形態に係るメモリ管理装置１１を適用した場合、地図データの書込み中に電源遮断が生じた場合でも既に書込み済のデータが修復できなくなるまで破壊されることのない電源障害耐性と、地図データ書込みの高速性とを両立することができる。同時に、工場出荷時、或いは地図データベース更新時の生産性の向上を実現することができる。
【００６２】
さらに、本実施形態に係るメモリ管理装置１１として、物理インタフェースを介してフラッシュメモリ１５を外部接続し、このフラッシュメモリ１５に対するデータの書込み制御を行う態様を例示して説明したが、本発明はこの例に限定されない。フラッシュメモリ１５の一構成要素として、本実施形態に係るメモリ管理装置１１を一体に構成してもよい。
【００６３】
また、本実施形態に係るメモリ管理装置１１として、データ書込スケジュールと呼ぶテーブルを用いて、最新の書込位置に対応するデータ書込モードを判断し、この判断に従ってデータ書込モードの制御を行う態様を例示して説明したが、本発明はこの例に限定されない。最新の書込位置と、書込要求に係る残余のデータ量とを参照して、ブロック書込みが生じるか否か、及び最新の書込位置にふさわしいデータ書込モードを逐次判断し、この判断に従ってデータ書込モードの制御を行う態様を採用してもよい。
【００６４】
また、本実施形態に係るフラッシュメモリ１５は、例えばＳＤメモリカード、ＵＳＢ（Universal Serial Bass）メモリなどの形態で実現されているか、或いは将来実現されるものをも全て含む。
【００６５】
その他、本実施形態は、本発明を実施するにあたっての具体化の一例を示したものに過ぎない。このため、これによって本発明の技術的範囲が限定的に解釈されてはならない。すなわち、本発明はその要旨またはその主要な特徴から逸脱することなく、様々な形態で実施することができる。
【符号の説明】
【００６６】
１１  メモリ管理装置
１３  アプリケーション
１５  多値ＮＡＮＤ型のフラッシュメモリ
１９  制御部
２１  書込要求受付部
２３  書込制御部
２５  メモリ情報取得部
２７  ブロック書込判定部
３１  給電監視部
３３  無効化指令部
【図１】
2012027806.tif 000003
【図２】
2012027806.tif 000004
【図３】
2012027806.tif 000005
【図４】
2012027806.tif 000006
【図５】
2012027806.tif 000007
【図６】
2012027806.tif 000008