(57)【要約】      （修正有）【課題】データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことが可能な記憶装置、その制御方法及びその記憶装置を用いた電子装置を提供する。【解決手段】ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作させることなく、フラッシュメモリに全て書き込めるか判断する書き込み判断部と、書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、ホストから書き込み要求された書き込みデータを受信させるデータ受信制御部と、を備える。【選択図】図７
2010198149.tif 000002
【特許請求の範囲】
【請求項１】
ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断部と、
前記書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御部と、を有することを特徴とする記憶装置。
【請求項２】
前記フラッシュメモリは、消去単位である第１ブロック毎に複数分割された記憶領域を有し、
前記データバッファは、前記第１ブロックと同じ大きさである第２ブロック毎に複数分割された記憶領域を有し、
前記書き込み判断部は、前記データバッファ上に記憶されている書き込みデータが占める前記第２ブロックの数と前記ホストから書き込み要求された前記書き込みデータが占める予定の前記第２ブロックの数との合計が、データ消去済である前記第１ブロックの数以下であるかを判断し、
前記データ受信制御部は、前記書き込み判断部で前記第２ブロックの数の合計がデータ消去済である前記第１ブロックの数以下であると判断された場合に、前記書き込み要求に対応する前記書き込みデータを前記ホストから前記データバッファに受信させることを特徴とする請求項１記載の記憶装置。
【請求項３】
前記フラッシュメモリは、消去領域である第１ブロック毎に複数分割された記憶領域を有し、
前記データバッファは、前記第１ブロックと同じ大きさである第２ブロック毎に複数分割された記憶領域を有し、
データ消去済である前記第１ブロックを、前記ホストから書き込み要求された前記書き込みデータが記憶される予定の第２ブロックで予約する予約制御部を更に有し、
前記書き込み判断部は、前記予約制御部により前記ホストから書き込み要求された前記書き込みデータが占める予定の前記第２ブロック全てに対して、データ消去済である前記第１ブロックが予約されているか判断し、
前記データ受信制御部は、前記書き込み判断部で前記第２ブロック全てに対して、データ消去済である前記第１ブロックが予約されていると判断された場合に、前記書き込み要求に対応する前記書き込みデータを前記ホストから前記データバッファに受信させることを特徴とする請求項１記載の記憶装置。
【請求項４】
ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断工程と、
前記書き込み判断工程により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御工程と、を有することを特徴とする記憶装置の制御方法。
【請求項５】
請求項１から３のいずれか一項に記載の記憶装置を備えることを特徴とする電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、その制御方法及びその記憶装置を備える電子装置に関し、特に、フラッシュメモリを用いた記憶装置、その制御方法及びその記憶装置を備える電子装置に関する。
【背景技術】
【０００２】
パーソナルコンピュータ等に用いられる記憶装置として、磁気ディスク装置（ＨＤＤ：Hard Disk Drive）が主に使用されている。しかし、ＨＤＤは、ヘッドやモーターといった駆動部品を有するため耐衝撃性が弱く、物理的な衝撃が加わることにより、誤動作や故障が発生する場合があった。また、ＨＤＤは、ヘッドを移動させるためのシーク時間やディスクの回転数を高めるスピンアップ時間を要するため、時間的ロスも生じていた。そこで、近年、ＨＤＤの変わりに、不揮発性メモリであるフラッシュメモリを用いたＳＳＤ（Solid State Drive）と呼ばれる記憶装置が開発されている。
【０００３】
フラッシュメモリに書き込みを行う場合は、予め、ブロック単位でデータを消去した後、書き込みを行う。このような、ブロック単位で行うデータの消去は、読み込み・書き込みの時間に比べて、非常に大きな時間を要する。また、フラッシュメモリは、データの書き換え可能回数は有限（通常、１０５〜１０６回）であるという特徴も有する。
【０００４】
フラッシュメモリにデータを書き込む際に、データの消去・書き込みという手順を踏まず、即座にデータの書き込みができるよう、データ書き込み後に、次のデータ書き込みに備えてデータ消去を予め行い、データ未格納領域を確保しておく方法も提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３０４３２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
フラッシュメモリを用いた記憶装置では、データの書き込み回数を抑える等の目的から、データバッファと呼ばれるＤＲＡＭ（Dynamic Random Access Memory）等の揮発性メモリを用意し、データの書き換えはデータバッファ上で行い、データバッファの容量が一杯になってから、データバッファ上のデータをフラッシュメモリに書き出すという方法が用いられている。
【０００７】
しかし、上述した方法では、記憶装置の主電源がＯＦＦされた場合に、データバッファ上のデータが、フラッシュメモリに書き込まれる前に消失してしまうという課題が生じる。このため、上述の方法を用いる場合は、バッテリやキャパシタ等の充電池で電源を補い、記憶装置の主電源がＯＦＦされた場合でも、データバッファ上のデータをフラッシュメモリに書き込むための時間を確保している。
【０００８】
フラッシュメモリへのデータの書き込みは、一般的に、データの消去・書き込みの手順を踏むため、非常に長い時間がかかる。したがって、上述の方法を用いる際の充電地には、大容量の充電池を用意している。
【０００９】
また、特許文献１で提案されている方法では、次のデータ書き込みの際に実際に必要なデータ未格納領域を確実に確保することが保証できない。このため、データの書き込みの際に、データの消去・書き込みの手順を踏む場合が生じる。
【００１０】
本発明は、上記課題に鑑みなされたものであり、データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことが可能な記憶装置、その制御方法及びその記憶装置を用いた電子装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本明細書に記載の記憶装置は、ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作させることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断部と、前記書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御部と、を有している。
【００１２】
これによれば、データバッファ上の全てのデータを、フラッシュメモリに消去動作させることなく書き込むことができるため、短い時間でフラッシュメモリに書き込むことが可能となる。
【００１３】
本明細書に記載の記憶装置の制御方法は、ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断工程と、前記書き込み判断工程により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御工程と、を有している。
【００１４】
これによれば、データバッファ上の全てのデータを、フラッシュメモリに消去動作させることなく書き込むことができるため、短い時間でフラッシュメモリに書き込むことが可能となる。
【００１５】
本明細書に記載の電子装置は、本明細書に記載の記憶装置を有している。
【００１６】
これによれば、データバッファ上の全てのデータを短い時間でフラッシュメモリに書き込むことが可能な記憶装置を備えた電子装置を得ることができる。
【発明の効果】
【００１７】
本明細書に記載の記憶装置及びその制御方法によれば、データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことができるという効果を奏する。また、本明細書に記載の電子装置によれば、データバッファ上の全てのデータを短い時間でフラッシュメモリに書き込むことが可能な記憶装置を備えた電子装置が得られるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は比較例、実施例１、及び実施例２に係る記憶装置の構成を説明するブロック図である。
【図２】図２は比較例及び実施例１に係る記憶装置に含まれるデータバッファ管理テーブルを説明する図である。
【図３】図３は比較例に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図４】図４は比較例に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図である。
【図５】図５は比較例に係る記憶装置の課題を説明するための図である。
【図６】図６は実施例１に係る記憶装置のＭＰＵの機能ブロック図である。
【図７】図７は実施例１に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図８】図８は実施例１に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図である。
【図９】図９は実施例２に係る記憶装置のＭＰＵの機能ブロック図である。
【図１０】図１０は実施例２に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図１１】図１１は実施例２に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図（その１）である。
【図１２】図１２は実施例２に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図（その２）である。
【図１３】図１３は実施例２に係る記憶装置に含まれるデータバッファ管理テーブルを説明する図である。
【図１４】図１４は実施例１及び実施例２のいずれかを備えた電子装置の構成を説明するブロック図である。
【発明を実施するための形態】
【００１９】
まず初めに、比較例とその課題について説明する。図１は、比較例に係る記憶装置１００のブロック図である。記憶装置１００は、例えば、Ｆｌａｓｈ  ＳＳＤ（Flash Solid State Drive）である。
【００２０】
図１のように、記憶装置１００は、３個のフラッシュメモリ１０、ＲＯＭ（Read Only Memory）１２、ＭＰＵ（Micro Processing Unit）１４、データバッファ１６とデータバッファ管理テーブル１８とアドレス変換マップ２０とを有するＲＡＭ（Random Access Memory）２２、及び充電池２４、を有する。
【００２１】
フラッシュメモリ１０は、ホスト２６からの書き込みデータを記憶するデータ記憶用素子として用いられる。フラッシュメモリ１０が有する記憶領域は、データの書き込みや読み出しを実行することができる複数のページ単位に分割されている。また、フラッシュメモリ１０は、当該ページを複数有するブロック単位で、データの消去を実行することができる。また、図１のように、３個のフラッシュメモリ１０が、ＲＡＭ２２に対して互いに並列に接続されていることで、３個のフラッシュメモリ１０は同時読み出し／同時書き込み（並列処理）が可能となり、記憶装置１００の転送速度を向上させることができる。
【００２２】
ＲＯＭ１２は、ＭＰＵ１４によって実行される制御プログラムが予め格納されている。ＭＰＵ１４は、ホスト２６からの書き込みデータの受信や、フラッシュメモリ１０への書き込みデータの書き込み等、記憶装置１００全体の制御を行う。
【００２３】
データバッファ１６は、ホスト２６から送信された書き込みデータやフラッシュメモリ１０から読み出されたデータを一時的に記憶する。
【００２４】
データバッファ管理テーブル１８は、図２のように、データバッファ１６内のバッファ毎に論理アドレスを管理している。このようなデータバッファ管理テーブル１８を参照することで、データバッファ１６に記憶しているデータの中から、ホスト２６から入力された論理アドレスに対応したデータにアクセスすることが可能となる。
【００２５】
アドレス変換マップ２０は、ホスト２６から入力された論理アドレスと、フラッシュメモリ１０の物理アドレスと、を関連付けるアドレス変換テーブルを記憶している。これにより、ホスト２６から入力される論理アドレスに対応したフラッシュメモリ１０の物理アドレスにアクセスすることが可能となる。なお、アドレス変換テーブルの情報は、記憶装置１００の主電源がＯＦＦされる際に、少なくとも１つのフラッシュメモリ１０に転送され記憶される。そして、記憶装置１００の主電源がＯＮされた際に、フラッシュメモリ１０に記憶されていたアドレス変換テーブルの情報が、再度アドレス変換マップ２０に転送される。
【００２６】
充電池２４は、例えば、バッテリやキャパシタ等であり、記憶装置１００の主電源がＯＦＦされた際に、データバッファ１６に記憶しているデータを、フラッシュメモリ１０に書き込む時間を確保するために用いられる。
【００２７】
ここで、図３及び図４を用い、ホスト２６から書き込み要求がされた場合に、ホスト２６からデータバッファ１６への書き込みデータの受信処理について説明する。図３は書き込みデータの受信処理を説明するフローチャートであり、図４は受信処理の際におけるデータバッファ１６とフラッシュメモリ１０とのデータ記憶状態を表す一例である。
【００２８】
まず、図４（ａ）により、ホスト２６から書き込みコマンドを受信する前の、データバッファ１６とフラッシュメモリ１０とのデータ記憶状態を説明する。フラッシュメモリ１０のＰ１からＰ２０は、フラッシュメモリ１０の記憶領域を消去単位毎に分割した第１ブロックを表している。データバッファ１６のＢ１からＢ８は、データバッファ１６の記憶領域を第１ブロックと同じ大きさのブロックに分割した第２ブロックを表している。Ｐ１からＰ２０における有効は、実際に使用しているデータを記憶していることを表していて、無効は、実際に使用してはいないがデータは記憶していることを表している。未使用は、データ消去済で、データを記憶していないことを表している。Ｂ１とＢ２とは、ホスト２６から受信した書き込みデータを記憶していて、Ｂ１とＢ２とに記憶するデータは、未だフラッシュメモリ１０には書き込みがなされていないことを表している。Ｂ３からＢ８については、データを記憶していないことを表している。
【００２９】
図４（ａ）の状態で、ＭＰＵ１４が、ホスト２６から書き込みコマンドを受信すると（ステップＳ１０）、ＭＰＵ１４は、書き込みコマンドに応じた書き込みデータをデータバッファ１６に受信する（ステップＳ１２）。
【００３０】
図４（ｂ）に、例えば、６ブロック分の書き込みデータをデータバッファ１６が受信した場合を示す。図４（ｂ）のように、ホスト２６から新たに受信した６ブロック分の書き込みデータが、Ｂ３からＢ８に記憶される。このようにして、ホスト２６からデータバッファ１６への書き込みデータの受信処理が行われる。なお、この状態では、未だＢ１からＢ８に記憶されているデータは、フラッシュメモリ１０に書き込まれていない。
【００３１】
図４（ｂ）の状態で、記憶装置１００の主電源がＯＦＦされた場合を想定する。この場合、充電池２４から電圧が供給されて、データバッファ１６上のデータはフラッシュメモリ１０に書き込みが行われる。ここで、フラッシュメモリ１０のＰ１からＰ２０のうち、データ消去済である未使用ブロックは６個である（Ｐ１、Ｐ４、Ｐ１７からＰ２０）。したがって、図５のように、データバッファ１６のＢ１からＢ６に記憶するデータは、Ｐ１、Ｐ４、Ｐ１７からＰ２０に消去動作を行わずに書き込むことができる。しかしながら、残るＢ７、Ｂ８に記憶するデータは、フラッシュメモリ１０の無効データブロック（例えばＰ７、Ｐ８）を消去した後、Ｐ７、Ｐ８にデータを書き込む。
【００３２】
背景技術で述べたように、ブロック単位で行うデータの消去は、非常に長い時間を要する。つまり、Ｂ７、Ｂ８のデータをＰ７、Ｐ８に書き込むには長い時間がかかる。仮に、充電池２４の容量が小さい場合は、データの消去・書き込みという一連の動作時間を確保することができず、Ｂ７、Ｂ８のデータをＰ７、Ｐ８に書き込む前に、充電地２４からの電圧の供給が途絶え、データが消失してしまうということが生じる。そこで、以下に、データバッファ１６上の全てのデータを、短い時間でフラッシュメモリ１０に書き込むことが可能な記憶装置の実施例について説明する。
【実施例１】
【００３３】
以下に、本発明の実施例１に係る記憶装置を説明する。実施例１に係る記憶装置１００は、例えば、Ｆｌａｓｈ  ＳＳＤ（Flash Solid State Drive）であり、ブロック図は比較例と同じであり、図１に示しているため、ここでは説明を省略する。また、データバッファ管理テーブル１８についても比較例と同じであり、図２に示しているため、ここでは説明を省略する。
【００３４】
実施例１に係る記憶装置１００が有するＭＰＵ１４は、図６のように、コマンド受信部２８、書き込み判断部３０、データ消去部３２、及びデータ受信制御部３４を備える。これらコマンド受信部２８、書き込み判断部３０、データ消去部３２、及びデータ受信制御部３４は、システムバス３６により互いに接続している。また、コマンド受信部２８、書き込み判断部３０、データ消去部３２、及びデータ受信制御部３４は、ＲＯＭ１２に予め格納されている制御プログラムをＭＰＵ１４が読み出して実行することにより行われる。
【００３５】
コマンド受信部２８は、ホスト２６から入力される書き込みコマンド等を受信する。書き込み判断部３０は、フラッシュメモリ１０に消去動作をさせることなく、コマンド受信部２８で受信した書き込みコマンドに対応した書き込みデータを全てフラッシュメモリ１０に書き込めるか判断する。書き込めるか否かの具体的な判断方法については後述する。データ消去部３２は、書き込み判断部３０で書き込みができないと判断された場合に、フラッシュメモリ１０の第１ブロックの中から無効データを保有しているブロックを選び、データの消去を行う。データ受信制御部３４は、書き込み判断部３０で書き込みができると判断された場合に、コマンド受信部２８で受信した書き込みコマンドに対応した書き込みデータを全てホスト２６からデータバッファ１６に受信させる。
【００３６】
次に、図７及び図８を用い、ホスト２６から書き込み要求がされた場合に、ホスト２６からデータバッファ１６への書き込みデータの受信処理について説明する。図７は書き込みデータの受信処理を説明するフローチャートである。図８は受信処理の際におけるデータバッファ１６とフラッシュメモリ１０とのデータ記憶状態を表す一例である。
【００３７】
まず、ホスト２６から書き込みコマンドを受信する前においては、データバッファ１６とフラッシュメモリ１０とは、図４（ａ）で示したデータ記憶状態をしている場合を例とする。
【００３８】
ＭＰＵ１４が、ホスト２６から書き込みコマンドを受信すると（ステップＳ２０）、ＭＰＵ１４は、データバッファ１６に既に記憶しているデータが占める第２ブロックの数と、ホスト２６から受信した書き込みコマンドに対応した書き込みデータを全てデータバッファ１６に記憶した場合に占める予定の第２ブロックの数と、の合計を算出する。ここで、具体例として、ＭＰＵ１４が受信した書き込みコマンドは、６ブロック分のデータの書き込み要求であった場合を想定する。この場合、図４（ａ）のように、データバッファ１６のＢ１とＢ２とは既にデータを記憶しているため、ＭＰＵ１４は、第２ブロックの数の合計を８と算出する。
【００３９】
次に、ＭＰＵ１４は、フラッシュメモリ１０の第１ブロックのうち、データ消去済である第１ブロックの数を算出する。図４（ａ）においては、データ消去済の第１ブロックは、Ｐ１、Ｐ４、Ｐ１７からＰ２０であるため、ＭＰＵ１４は、データ消去済の第１ブロックの数を６と算出する。
【００４０】
そして、ＭＰＵ１４は、算出した第２ブロックの数の合計が、算出したデータ消去済である第１ブロックの数以下か判断する（ステップＳ２２）。算出した第２ブロックの数の合計が、算出したデータ消去済の第１ブロックの数以下である場合に、ＭＰＵ１４は、ホスト２６からの書き込みデータ全てを、フラッシュメモリ１０に消去動作させることなく書き込みできると判断する。ここでは、算出した第２ブロックの数の合計は８で、データ消去済である第１ブロックの数は６である。このため、ＭＰＵ１４は、データ消去済である第１ブロックの数の方が小さいと判断し、フラッシュメモリ１０に消去動作させることなく書き込みはできないと判断する。
【００４１】
ステップＳ２２で第１ブロックの数の方が小さいと判断された場合（Ｎｏの場合）、ＭＰＵ１４は、フラッシュメモリ１０の第１ブロックの中から無効データを保有しているブロックを１ブロック選び、データの消去を行う（ステップＳ２４）。例えば、図４（ａ）において、ＭＰＵ１４は、無効データを保有するＰ７を選び、Ｐ７のデータを消去する。
【００４２】
再び、ＭＰＵ１４は、算出した第２ブロックの数の合計が、データ消去済である第１ブロックの数以下か否か判断する（ステップＳ２２）。図４（ａ）の状態からＰ７のデータを消去したため、データ消去済の第１ブロックの数は７である。したがって、ＭＰＵ１４は、データ消去済の第１ブロック数の方が小さいと判断する。
【００４３】
再度、ステップＳ２４に進み、ＭＰＵ１４は、無効データを保有する第１ブロックを１ブロック選び、データを消去する。例えば、図４（ａ）において、ＭＰＵ１４は、Ｐ８を選び、Ｐ８のデータを消去する。これにより、データバッファ１６とフラッシュメモリ１０とのデータ記憶状態は、図８（ａ）に示すような状態となる。
【００４４】
再度、ＭＰＵ１４は、算出した第２ブロックの数の合計が、データ消去済である第１ブロックの数以下か判断する（ステップＳ２２）。図８（ａ）の状態では、データ消去済の第１ブロックの数は８である。したがって、ＭＰＵ１４は、算出した第２ブロックの数の合計が、データ消去済である第１ブロックの数以下であると判断し、ホスト２６からの書き込みデータ全てを、フラッシュメモリ１０に消去動作させることなく書き込みができると判断する。
【００４５】
ステップＳ２２で、算出した第２ブロックの数の合計がデータ消去済の第１ブロックの数以下であると判断された場合（Ｙｅｓの場合）、ＭＰＵ１４は、ホスト２６から受信した書き込みコマンドに対応した書き込みデータを、データバッファ１６に受信させる（ステップＳ２６）。これにより、図８（ｂ）に示すように、データバッファ１６のＢ３からＢ８に６ブロック分の書き込みデータが受信される。
【００４６】
図７において、ステップＳ２０を実行するＭＰＵは、図６におけるコマンド受信部２８に相当する。ステップＳ２２を実行するＭＰＵは、図６における書き込み判断部３０に相当する。ステップＳ２４を実行するＭＰＵは、図６におけるデータ消去部３２に相当する。ステップＳ２６を実行するＭＰＵは、図６におけるデータ受信制御部３４に相当する。
【００４７】
ここで、図８（ｂ）の状態で記憶装置１００の主電源がＯＦＦされた場合を想定する。この場合、充電池２４から電圧が供給されて、データバッファ１６上のデータはフラッシュメモリ１０に書き込まれる。フラッシュメモリ１０のＰ１からＰ２０のうち、データ消去済ブロックである未使用ブロックは８個ある（Ｐ１、Ｐ４、Ｐ７、Ｐ８、Ｐ１７からＰ２０）。したがって、データバッファ１６上のＢ１からＢ８のデータは、フラッシュメモリ１０に消去動作をさせることなく、Ｐ１、Ｐ４、Ｐ７、Ｐ８、Ｐ１７からＰ２０に書き込むことができる。
【００４８】
このように、実施例１によれば、データバッファ１６に記憶しているデータが占める第２ブロックの数と新たに送信される書き込みデータが占める予定の第２ブロックの数との合計がデータ消去済の第１ブロックの数以下である場合に、データバッファ１６に新たな書き込みデータを受信させる。これにより、データバッファ１６に記憶するデータを、フラッシュメモリ１０に消去動作させることなく書き込むことが可能となる。つまり、データバッファ１６上の全てのデータを、短い時間でフラッシュメモリ１０に書き込むことが可能となる。したがって、充電池２４の容量を小さくした場合でも、充電地２４から電圧が供給されている間に、データバッファ１６上のデータを全てフラッシュメモリ１０に書き込むことができる。換言すると、データバッファ１６上のデータを消失させることなく、充電池２４の容量を小さくすることができる。
【００４９】
また、充電池２４から電圧が供給された状態で、フラッシュメモリ１０に消去動作は行われない。つまり、実施例１によれば、充電池２４から電圧が供給された状態で、高い電圧を必要とする消去動作が行われないため、充電池２４の電圧を低く抑えることも可能となる。
【実施例２】
【００５０】
実施例２に係る記憶装置１００は、例えば、Ｆｌａｓｈ  ＳＳＤ（Flash Solid State Drive）であり、ブロック図は比較例と同じであり、図１に示しているため、ここでは説明を省略する。
【００５１】
実施例２に係る記憶装置１００が有するＭＰＵ１４は、図９のように、コマンド受信部３８、ブロック判断部４０、データ消去部４２、予約制御部４４、書き込み判断部４６、及びデータ受信制御部４８を備えている。コマンド受信部３８、ブロック判断部４０、データ消去部４２、予約制御部４４、書き込み判断部４６、及びデータ受信制御部４８は、システムバス５０により互いに接続している。また、コマンド受信部３８、ブロック判断部４０、データ消去部４２、予約制御部４４、書き込み判断部４６、及びデータ受信制御部４８は、ＲＯＭ１２に予め格納されている制御プログラムをＭＰＵ１４が読み出して実行することにより行われる。
【００５２】
コマンド受信部３８は、ホスト２６から入力される書き込みコマンド等を受信する。ブロック判断部４０は、コマンド受信部３８で書き込みコマンドを受信した場合に、フラッシュメモリ１０の第１ブロックの中にデータ消去済のブロックがあるか否かを判断する。データ消去部４２は、ブロック判断部４０でデータ消去済の第１ブロックがないと判断された場合に、第１ブロックの中から無効データを保有しているブロックを選び、データの消去を行う。予約制御部４４は、ブロック判断部４０でデータ消去済の第１ブロックがあると判断されたか又はデータ消去部４２で第１ブロックのデータ消去を行った場合に、データ消去済の第１ブロックを、コマンド受信部３８で受信した書き込みコマンドに対応した書き込みデータが記憶される予定の第２ブロックで予約する。書き込み判断部４６は、フラッシュメモリ１０にデータ消去を行うことなく、コマンド受信部３８で受信した書き込みコマンドに対応した書き込みデータを全てフラッシュメモリ１０に書き込めるか判断する。書き込めるか否かの具体的な判断方法については後述する。データ受信制御部４８は、書き込み判断部４６で書き込みができると判断された場合に、コマンド受信部３８で受信した書き込みコマンドに対応した書き込みデータを全てホスト２６からデータバッファ１６に受信させる。
【００５３】
次に、図１０から図１２を用い、ホスト２６から書き込み要求がされた場合に、ホスト２６からデータバッファ１６への書き込みデータの受信処理について説明する。図１０は、書き込みデータの受信処理を説明するフローチャートである。図１１及び図１２は、受信処理の際におけるデータバッファ１６とフラッシュメモリ１０とのデータ記憶状態を表す一例である。
【００５４】
図１１（ａ）は、ホスト２６から書き込みコマンドを受信する前における、データバッファ１６とフラッシュメモリ１０とのデータ記憶状態の例である。図１１（ａ）のように、データバッファ１６のＢ１とＢ２は既にデータを記憶している。Ｐ１７をＢ１で予約し、Ｐ１８をＢ２で予約することで、Ｂ１に記憶されているデータはフラッシュメモリ１０のＰ１７に書き込み、Ｂ２に記憶されているデータはＰ１８に書き込むことが予約されている。予約方法としては、例えば、図１３のように、データバッファ管理テーブル１８に、データバッファ１６内のバッファ毎の論理アドレスの管理に加え、バッファ毎にデータの書き込み予定先の物理アドレスを管理することで行うことができる。
【００５５】
ＭＰＵ１４が、ホスト２６から書き込みコマンドを受信すると（ステップＳ３０）、ＭＰＵ１４は、フラッシュメモリ１０の第１ブロックのうち、書き込み予約がされていないデータ消去済の第１ブロックがあるか否か判断する（ステップＳ３２）。ここで、具体例として、ＭＰＵ１４が受信した書き込みコマンドは、６ブロック分のデータの書き込み要求であった場合を想定する。図１１（ａ）の状態では、Ｐ１、Ｐ４、Ｐ１９、Ｐ２０はデータ消去済であり、且つ書き込み予約もされていないため、ＭＰＵ１４は、書き込み予約がされていないデータ消去済の第１ブロックがあると判断する。
【００５６】
ステップＳ３２で書き込み予約がされていないデータ消去済の第１ブロックがあると判断された場合（Ｙｅｓの場合）、ＭＰＵ１４は、ホスト２６からの書き込みデータが記憶される予定のデータバッファ１６内のバッファに対して、書き込み予定先の物理アドレスを特定する。これにより、ＭＰＵ１４は、データ消去済の第１ブロックを、ホスト２６からの書き込みデータが記憶される予定の第２ブロックで予約することができる（ステップＳ３６）。例えば、図１１（ａ）において、Ｐ１９をＢ３で予約し、Ｂ３に記憶されるデータはＰ１９に書き込むことを予約することができる。
【００５７】
次に、ＭＰＵ１４は、ホスト２６からの書き込みデータが記憶される予定の第２ブロック全てに対して、第１ブロックが予約されているか判断する（ステップＳ３８）。書き込みデータが記憶される予定の第２ブロック全てについて、データ消去済の第１ブロックが予約されている場合に、ＭＰＵ１４は、ホスト２６からの書き込みデータ全てを、フラッシュメモリ１０に消去動作させることなく書き込みできると判断する。ここでは、ホスト２６から受信した書き込みコマンドは６ブロック分のデータの書き込み要求であるため、ＭＰＵ１４は、書き込みデータが記憶される予定の全ての第２ブロックについて第１ブロックは予約されていないと判断する。ステップＳ３８で予約されていないと判断された場合（Ｎｏの場合）、ステップＳ３２に戻る。
【００５８】
ここで、図１１（ａ）において、Ｐ１、Ｐ４、Ｐ２０については、書き込み予約がされていないデータ消去済のブロックである。したがって、ステップＳ３２、Ｓ３６、Ｓ３８を繰り返し実行することで、図１１（ｂ）のように、Ｐ２０をＢ４で予約し、Ｂ４に記憶されるデータはＰ２０に書き込むことを予約することができる。同様に、Ｐ１をＢ５で予約し、Ｐ４をＢ６で予約し、Ｂ５に記憶されるデータはＰ１に書き込み、Ｂ６に記憶されるデータはＰ４に書き込むことを予約することができる。
【００５９】
図１１（ｂ）においては、ホスト２６からの書き込みデータが記憶される予定の第２ブロック（Ｂ３からＢ８）全てについて、第１ブロックがまだ予約されていない。このため、ステップＳ３８でＮｏと判断され、ステップＳ３２に戻る。
【００６０】
ステップＳ３２では、ＭＰＵ１４は、データ消去済の第１ブロックがあるか否かを判断するが、図１１（ｂ）では、データ消去済の第１ブロックはない。したがって、ＭＰＵ１４は、データ消去済の第１ブロックはないと判断し（Ｎｏ）、ＭＰＵ１４は、無効データを保有する第１ブロックの中から１ブロック選び、データを消去する（ステップＳ３４）。例えば、図１１（ｂ）において、Ｐ７が保有する無効データを消去する。
【００６１】
次に、ＭＰＵ１４は、Ｐ７をＢ７で予約し（ステップＳ３６）、Ｂ７に記憶されるデータをＰ７に記憶することを予約する。Ｂ８についても、ステップＳ３２からステップＳ３６を繰り返し行うことで、例えば、Ｐ８をＢ８で予約し、Ｂ８に記憶されるデータをＰ８に書き込むことを予約することができる。これにより、図１２（ａ）のように、Ｂ３からＢ８全てについて第１ブロックを予約することができる。
【００６２】
ステップＳ３８で書き込みデータが記憶される予定の第２ブロック全てについて第１ブロックが予約されていると判断された場合（Ｙｅｓの場合）、ＭＰＵ１４は、ホスト２６から受信した書き込みコマンドに対応した書き込みデータを全てデータバッファ１６に受信させる（ステップＳ４０）。これにより、図１２（ｂ）に示すように、データバッファ１６のＢ３からＢ８に６ブロック分の書き込みデータが受信される。
【００６３】
図１０において、ステップＳ３０を実行するＭＰＵは、図９におけるコマンド受信部３８に相当する。ステップＳ３２を実行するＭＰＵは、図９におけるブロック判断部４０に相当する。ステップＳ３４を実行するＭＰＵは、図９におけるデータ消去部４２に相当する。ステップＳ３６を実行するＭＰＵは、図９における予約制御部４４に相当する。ステップＳ３８を実行するＭＰＵは、図９における書き込み判断部４６に相当する。ステップＳ４０を実行するＭＰＵは、図９におけるデータ受信制御部４８に相当する。
【００６４】
ここで、図１２（ｂ）の状態で、記憶装置１００の主電源がＯＦＦされた場合を想定する。この場合、充電池２４から電圧が供給されて、データバッファ１６上のデータをフラッシュメモリ１０に書き込むことになる。データバッファ１６のＢ１からＢ８に記憶されているデータは、データの書き込み先として、データ消去済の第１ブロックを予約している。したがって、データバッファ１６のＢ１からＢ８に記憶されているデータは、フラッシュメモリ１０に消去動作をさせることなく、Ｐ１、Ｐ４、Ｐ７、Ｐ８、Ｐ１７からＰ２０に書き込むことができる。
【００６５】
このように、実施例２によれば、ホスト２６から送信される書き込みデータを記憶する予定の第２ブロック全てに対して、データ消去済の第１ブロックを予約させた後、データバッファ１６にホスト２６から書き込みデータを受信する。これにより、データバッファ１６上のデータを、フラッシュメモリ１０に消去動作させることなくフラッシュメモリ１０に書き込むことが可能となる。つまり、データバッファ１６上の全てのデータを、短い時間でフラッシュメモリ１０に書き込むことが可能となる。よって、充電池２４の容量を小さくした場合でも、充電地２４から電圧が供給されている間に、データバッファ１６上のデータを全てフラッシュメモリ１０に書き込むことができる。換言すると、データバッファ１６上のデータを消失させることなく、充電池２４の容量を小さくすることができる。
【００６６】
また、実施例２によれば、データの書き込み先を予め特定している。このため、データバッファ１６上のデータをフラッシュメモリ１０に書き込むために要する時間を、実施例１に比べて短くすることができ、充電池２４の容量をより小さくすることが可能となる。
【００６７】
実施例１のデータバッファ管理テーブル１８は、図２のように、論理アドレスのみ記憶している。したがって、実施例１によれば、実施例２の図１３のように、論理アドレスに加え、書き込み予定先の物理アドレスを記憶している場合に比べ、データバッファ管理テーブル１８の容量を小さくすることが可能となる。
【００６８】
実施例１及び実施例２において、無効データを保有する第１ブロックのデータ消去は、１ブロックづつ選び、データ消去する場合を例に示したが、複数の第１ブロックのデータを同時に消去する場合でもよい。
【００６９】
実施例１及び実施例２に係る記憶装置１００は、図１４のように、電子装置２００に備わることができる。電子装置２００の例としては、電話機、オーディオ機、パソコン、ＨＤＤレコーダー等のデータを記憶する装置が挙げられる。フラッシュメモリを用いた記憶装置は、耐衝撃性等に優れているため、携帯型電話機、携帯型オーディオ機、ノートパソコン等の持ち運びを行う電子装置に、実施例１及び実施例２に係る記憶装置１００が備わることが好適である。
【００７０】
上述した実施例は、本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲内において種々の変形実施が可能である。
【符号の説明】
【００７１】
１０  フラッシュメモリ
１２  ＲＯＭ
１４  ＭＰＵ
１６  データバッファ
１８  データバッファ管理テーブル
２０  アドレス変換マップ
２２  ＲＡＭ
２４  充電池
２６  ホスト
２８  コマンド受信部
３０  書き込み判断部
３２  データ消去部
３４  データ受信制御部
３６  システムバス
３８  コマンド受信部
４０  ブロック判断部
４２  データ消去部
４４  予約制御部
４６  書き込み判断部
４８  データ受信制御部
５０  システムバス
１００  記憶装置
２００  電子装置
【図１】
2010198149.tif 000003
【図２】
2010198149.tif 000004
【図３】
2010198149.tif 000005
【図４】
2010198149.tif 000006
【図５】
2010198149.tif 000007
【図６】
2010198149.tif 000008
【図７】
2010198149.tif 000009
【図８】
2010198149.tif 000010
【図９】
2010198149.tif 000011
【図１０】
2010198149.tif 000012
【図１１】
2010198149.tif 000013
【図１２】
2010198149.tif 000014
【図１３】
2010198149.tif 000015
【図１４】
2010198149.tif 000016