説明

記憶装置、その制御方法及びその記憶装置を備える電子装置

【課題】データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことが可能な記憶装置、その制御方法及びその記憶装置を用いた電子装置を提供する。
【解決手段】ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作させることなく、フラッシュメモリに全て書き込めるか判断する書き込み判断部と、書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、ホストから書き込み要求された書き込みデータを受信させるデータ受信制御部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置、その制御方法及びその記憶装置を備える電子装置に関し、特に、フラッシュメモリを用いた記憶装置、その制御方法及びその記憶装置を備える電子装置に関する。
【背景技術】
【0002】
パーソナルコンピュータ等に用いられる記憶装置として、磁気ディスク装置(HDD:Hard Disk Drive)が主に使用されている。しかし、HDDは、ヘッドやモーターといった駆動部品を有するため耐衝撃性が弱く、物理的な衝撃が加わることにより、誤動作や故障が発生する場合があった。また、HDDは、ヘッドを移動させるためのシーク時間やディスクの回転数を高めるスピンアップ時間を要するため、時間的ロスも生じていた。そこで、近年、HDDの変わりに、不揮発性メモリであるフラッシュメモリを用いたSSD(Solid State Drive)と呼ばれる記憶装置が開発されている。
【0003】
フラッシュメモリに書き込みを行う場合は、予め、ブロック単位でデータを消去した後、書き込みを行う。このような、ブロック単位で行うデータの消去は、読み込み・書き込みの時間に比べて、非常に大きな時間を要する。また、フラッシュメモリは、データの書き換え可能回数は有限(通常、10〜10回)であるという特徴も有する。
【0004】
フラッシュメモリにデータを書き込む際に、データの消去・書き込みという手順を踏まず、即座にデータの書き込みができるよう、データ書き込み後に、次のデータ書き込みに備えてデータ消去を予め行い、データ未格納領域を確保しておく方法も提案されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−304320号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
フラッシュメモリを用いた記憶装置では、データの書き込み回数を抑える等の目的から、データバッファと呼ばれるDRAM(Dynamic Random Access Memory)等の揮発性メモリを用意し、データの書き換えはデータバッファ上で行い、データバッファの容量が一杯になってから、データバッファ上のデータをフラッシュメモリに書き出すという方法が用いられている。
【0007】
しかし、上述した方法では、記憶装置の主電源がOFFされた場合に、データバッファ上のデータが、フラッシュメモリに書き込まれる前に消失してしまうという課題が生じる。このため、上述の方法を用いる場合は、バッテリやキャパシタ等の充電池で電源を補い、記憶装置の主電源がOFFされた場合でも、データバッファ上のデータをフラッシュメモリに書き込むための時間を確保している。
【0008】
フラッシュメモリへのデータの書き込みは、一般的に、データの消去・書き込みの手順を踏むため、非常に長い時間がかかる。したがって、上述の方法を用いる際の充電地には、大容量の充電池を用意している。
【0009】
また、特許文献1で提案されている方法では、次のデータ書き込みの際に実際に必要なデータ未格納領域を確実に確保することが保証できない。このため、データの書き込みの際に、データの消去・書き込みの手順を踏む場合が生じる。
【0010】
本発明は、上記課題に鑑みなされたものであり、データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことが可能な記憶装置、その制御方法及びその記憶装置を用いた電子装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
本明細書に記載の記憶装置は、ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作させることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断部と、前記書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御部と、を有している。
【0012】
これによれば、データバッファ上の全てのデータを、フラッシュメモリに消去動作させることなく書き込むことができるため、短い時間でフラッシュメモリに書き込むことが可能となる。
【0013】
本明細書に記載の記憶装置の制御方法は、ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断工程と、前記書き込み判断工程により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御工程と、を有している。
【0014】
これによれば、データバッファ上の全てのデータを、フラッシュメモリに消去動作させることなく書き込むことができるため、短い時間でフラッシュメモリに書き込むことが可能となる。
【0015】
本明細書に記載の電子装置は、本明細書に記載の記憶装置を有している。
【0016】
これによれば、データバッファ上の全てのデータを短い時間でフラッシュメモリに書き込むことが可能な記憶装置を備えた電子装置を得ることができる。
【発明の効果】
【0017】
本明細書に記載の記憶装置及びその制御方法によれば、データバッファ上の全てのデータを、短い時間でフラッシュメモリに書き込むことができるという効果を奏する。また、本明細書に記載の電子装置によれば、データバッファ上の全てのデータを短い時間でフラッシュメモリに書き込むことが可能な記憶装置を備えた電子装置が得られるという効果を奏する。
【図面の簡単な説明】
【0018】
【図1】図1は比較例、実施例1、及び実施例2に係る記憶装置の構成を説明するブロック図である。
【図2】図2は比較例及び実施例1に係る記憶装置に含まれるデータバッファ管理テーブルを説明する図である。
【図3】図3は比較例に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図4】図4は比較例に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図である。
【図5】図5は比較例に係る記憶装置の課題を説明するための図である。
【図6】図6は実施例1に係る記憶装置のMPUの機能ブロック図である。
【図7】図7は実施例1に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図8】図8は実施例1に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図である。
【図9】図9は実施例2に係る記憶装置のMPUの機能ブロック図である。
【図10】図10は実施例2に係る記憶装置について、データバッファに書き込みデータを受信する処理を説明するフローチャートである。
【図11】図11は実施例2に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図(その1)である。
【図12】図12は実施例2に係る記憶装置に関し、データバッファに書き込みデータを受信する処理を説明するための図(その2)である。
【図13】図13は実施例2に係る記憶装置に含まれるデータバッファ管理テーブルを説明する図である。
【図14】図14は実施例1及び実施例2のいずれかを備えた電子装置の構成を説明するブロック図である。
【発明を実施するための形態】
【0019】
まず初めに、比較例とその課題について説明する。図1は、比較例に係る記憶装置100のブロック図である。記憶装置100は、例えば、Flash SSD(Flash Solid State Drive)である。
【0020】
図1のように、記憶装置100は、3個のフラッシュメモリ10、ROM(Read Only Memory)12、MPU(Micro Processing Unit)14、データバッファ16とデータバッファ管理テーブル18とアドレス変換マップ20とを有するRAM(Random Access Memory)22、及び充電池24、を有する。
【0021】
フラッシュメモリ10は、ホスト26からの書き込みデータを記憶するデータ記憶用素子として用いられる。フラッシュメモリ10が有する記憶領域は、データの書き込みや読み出しを実行することができる複数のページ単位に分割されている。また、フラッシュメモリ10は、当該ページを複数有するブロック単位で、データの消去を実行することができる。また、図1のように、3個のフラッシュメモリ10が、RAM22に対して互いに並列に接続されていることで、3個のフラッシュメモリ10は同時読み出し/同時書き込み(並列処理)が可能となり、記憶装置100の転送速度を向上させることができる。
【0022】
ROM12は、MPU14によって実行される制御プログラムが予め格納されている。MPU14は、ホスト26からの書き込みデータの受信や、フラッシュメモリ10への書き込みデータの書き込み等、記憶装置100全体の制御を行う。
【0023】
データバッファ16は、ホスト26から送信された書き込みデータやフラッシュメモリ10から読み出されたデータを一時的に記憶する。
【0024】
データバッファ管理テーブル18は、図2のように、データバッファ16内のバッファ毎に論理アドレスを管理している。このようなデータバッファ管理テーブル18を参照することで、データバッファ16に記憶しているデータの中から、ホスト26から入力された論理アドレスに対応したデータにアクセスすることが可能となる。
【0025】
アドレス変換マップ20は、ホスト26から入力された論理アドレスと、フラッシュメモリ10の物理アドレスと、を関連付けるアドレス変換テーブルを記憶している。これにより、ホスト26から入力される論理アドレスに対応したフラッシュメモリ10の物理アドレスにアクセスすることが可能となる。なお、アドレス変換テーブルの情報は、記憶装置100の主電源がOFFされる際に、少なくとも1つのフラッシュメモリ10に転送され記憶される。そして、記憶装置100の主電源がONされた際に、フラッシュメモリ10に記憶されていたアドレス変換テーブルの情報が、再度アドレス変換マップ20に転送される。
【0026】
充電池24は、例えば、バッテリやキャパシタ等であり、記憶装置100の主電源がOFFされた際に、データバッファ16に記憶しているデータを、フラッシュメモリ10に書き込む時間を確保するために用いられる。
【0027】
ここで、図3及び図4を用い、ホスト26から書き込み要求がされた場合に、ホスト26からデータバッファ16への書き込みデータの受信処理について説明する。図3は書き込みデータの受信処理を説明するフローチャートであり、図4は受信処理の際におけるデータバッファ16とフラッシュメモリ10とのデータ記憶状態を表す一例である。
【0028】
まず、図4(a)により、ホスト26から書き込みコマンドを受信する前の、データバッファ16とフラッシュメモリ10とのデータ記憶状態を説明する。フラッシュメモリ10のP1からP20は、フラッシュメモリ10の記憶領域を消去単位毎に分割した第1ブロックを表している。データバッファ16のB1からB8は、データバッファ16の記憶領域を第1ブロックと同じ大きさのブロックに分割した第2ブロックを表している。P1からP20における有効は、実際に使用しているデータを記憶していることを表していて、無効は、実際に使用してはいないがデータは記憶していることを表している。未使用は、データ消去済で、データを記憶していないことを表している。B1とB2とは、ホスト26から受信した書き込みデータを記憶していて、B1とB2とに記憶するデータは、未だフラッシュメモリ10には書き込みがなされていないことを表している。B3からB8については、データを記憶していないことを表している。
【0029】
図4(a)の状態で、MPU14が、ホスト26から書き込みコマンドを受信すると(ステップS10)、MPU14は、書き込みコマンドに応じた書き込みデータをデータバッファ16に受信する(ステップS12)。
【0030】
図4(b)に、例えば、6ブロック分の書き込みデータをデータバッファ16が受信した場合を示す。図4(b)のように、ホスト26から新たに受信した6ブロック分の書き込みデータが、B3からB8に記憶される。このようにして、ホスト26からデータバッファ16への書き込みデータの受信処理が行われる。なお、この状態では、未だB1からB8に記憶されているデータは、フラッシュメモリ10に書き込まれていない。
【0031】
図4(b)の状態で、記憶装置100の主電源がOFFされた場合を想定する。この場合、充電池24から電圧が供給されて、データバッファ16上のデータはフラッシュメモリ10に書き込みが行われる。ここで、フラッシュメモリ10のP1からP20のうち、データ消去済である未使用ブロックは6個である(P1、P4、P17からP20)。したがって、図5のように、データバッファ16のB1からB6に記憶するデータは、P1、P4、P17からP20に消去動作を行わずに書き込むことができる。しかしながら、残るB7、B8に記憶するデータは、フラッシュメモリ10の無効データブロック(例えばP7、P8)を消去した後、P7、P8にデータを書き込む。
【0032】
背景技術で述べたように、ブロック単位で行うデータの消去は、非常に長い時間を要する。つまり、B7、B8のデータをP7、P8に書き込むには長い時間がかかる。仮に、充電池24の容量が小さい場合は、データの消去・書き込みという一連の動作時間を確保することができず、B7、B8のデータをP7、P8に書き込む前に、充電地24からの電圧の供給が途絶え、データが消失してしまうということが生じる。そこで、以下に、データバッファ16上の全てのデータを、短い時間でフラッシュメモリ10に書き込むことが可能な記憶装置の実施例について説明する。
【実施例1】
【0033】
以下に、本発明の実施例1に係る記憶装置を説明する。実施例1に係る記憶装置100は、例えば、Flash SSD(Flash Solid State Drive)であり、ブロック図は比較例と同じであり、図1に示しているため、ここでは説明を省略する。また、データバッファ管理テーブル18についても比較例と同じであり、図2に示しているため、ここでは説明を省略する。
【0034】
実施例1に係る記憶装置100が有するMPU14は、図6のように、コマンド受信部28、書き込み判断部30、データ消去部32、及びデータ受信制御部34を備える。これらコマンド受信部28、書き込み判断部30、データ消去部32、及びデータ受信制御部34は、システムバス36により互いに接続している。また、コマンド受信部28、書き込み判断部30、データ消去部32、及びデータ受信制御部34は、ROM12に予め格納されている制御プログラムをMPU14が読み出して実行することにより行われる。
【0035】
コマンド受信部28は、ホスト26から入力される書き込みコマンド等を受信する。書き込み判断部30は、フラッシュメモリ10に消去動作をさせることなく、コマンド受信部28で受信した書き込みコマンドに対応した書き込みデータを全てフラッシュメモリ10に書き込めるか判断する。書き込めるか否かの具体的な判断方法については後述する。データ消去部32は、書き込み判断部30で書き込みができないと判断された場合に、フラッシュメモリ10の第1ブロックの中から無効データを保有しているブロックを選び、データの消去を行う。データ受信制御部34は、書き込み判断部30で書き込みができると判断された場合に、コマンド受信部28で受信した書き込みコマンドに対応した書き込みデータを全てホスト26からデータバッファ16に受信させる。
【0036】
次に、図7及び図8を用い、ホスト26から書き込み要求がされた場合に、ホスト26からデータバッファ16への書き込みデータの受信処理について説明する。図7は書き込みデータの受信処理を説明するフローチャートである。図8は受信処理の際におけるデータバッファ16とフラッシュメモリ10とのデータ記憶状態を表す一例である。
【0037】
まず、ホスト26から書き込みコマンドを受信する前においては、データバッファ16とフラッシュメモリ10とは、図4(a)で示したデータ記憶状態をしている場合を例とする。
【0038】
MPU14が、ホスト26から書き込みコマンドを受信すると(ステップS20)、MPU14は、データバッファ16に既に記憶しているデータが占める第2ブロックの数と、ホスト26から受信した書き込みコマンドに対応した書き込みデータを全てデータバッファ16に記憶した場合に占める予定の第2ブロックの数と、の合計を算出する。ここで、具体例として、MPU14が受信した書き込みコマンドは、6ブロック分のデータの書き込み要求であった場合を想定する。この場合、図4(a)のように、データバッファ16のB1とB2とは既にデータを記憶しているため、MPU14は、第2ブロックの数の合計を8と算出する。
【0039】
次に、MPU14は、フラッシュメモリ10の第1ブロックのうち、データ消去済である第1ブロックの数を算出する。図4(a)においては、データ消去済の第1ブロックは、P1、P4、P17からP20であるため、MPU14は、データ消去済の第1ブロックの数を6と算出する。
【0040】
そして、MPU14は、算出した第2ブロックの数の合計が、算出したデータ消去済である第1ブロックの数以下か判断する(ステップS22)。算出した第2ブロックの数の合計が、算出したデータ消去済の第1ブロックの数以下である場合に、MPU14は、ホスト26からの書き込みデータ全てを、フラッシュメモリ10に消去動作させることなく書き込みできると判断する。ここでは、算出した第2ブロックの数の合計は8で、データ消去済である第1ブロックの数は6である。このため、MPU14は、データ消去済である第1ブロックの数の方が小さいと判断し、フラッシュメモリ10に消去動作させることなく書き込みはできないと判断する。
【0041】
ステップS22で第1ブロックの数の方が小さいと判断された場合(Noの場合)、MPU14は、フラッシュメモリ10の第1ブロックの中から無効データを保有しているブロックを1ブロック選び、データの消去を行う(ステップS24)。例えば、図4(a)において、MPU14は、無効データを保有するP7を選び、P7のデータを消去する。
【0042】
再び、MPU14は、算出した第2ブロックの数の合計が、データ消去済である第1ブロックの数以下か否か判断する(ステップS22)。図4(a)の状態からP7のデータを消去したため、データ消去済の第1ブロックの数は7である。したがって、MPU14は、データ消去済の第1ブロック数の方が小さいと判断する。
【0043】
再度、ステップS24に進み、MPU14は、無効データを保有する第1ブロックを1ブロック選び、データを消去する。例えば、図4(a)において、MPU14は、P8を選び、P8のデータを消去する。これにより、データバッファ16とフラッシュメモリ10とのデータ記憶状態は、図8(a)に示すような状態となる。
【0044】
再度、MPU14は、算出した第2ブロックの数の合計が、データ消去済である第1ブロックの数以下か判断する(ステップS22)。図8(a)の状態では、データ消去済の第1ブロックの数は8である。したがって、MPU14は、算出した第2ブロックの数の合計が、データ消去済である第1ブロックの数以下であると判断し、ホスト26からの書き込みデータ全てを、フラッシュメモリ10に消去動作させることなく書き込みができると判断する。
【0045】
ステップS22で、算出した第2ブロックの数の合計がデータ消去済の第1ブロックの数以下であると判断された場合(Yesの場合)、MPU14は、ホスト26から受信した書き込みコマンドに対応した書き込みデータを、データバッファ16に受信させる(ステップS26)。これにより、図8(b)に示すように、データバッファ16のB3からB8に6ブロック分の書き込みデータが受信される。
【0046】
図7において、ステップS20を実行するMPUは、図6におけるコマンド受信部28に相当する。ステップS22を実行するMPUは、図6における書き込み判断部30に相当する。ステップS24を実行するMPUは、図6におけるデータ消去部32に相当する。ステップS26を実行するMPUは、図6におけるデータ受信制御部34に相当する。
【0047】
ここで、図8(b)の状態で記憶装置100の主電源がOFFされた場合を想定する。この場合、充電池24から電圧が供給されて、データバッファ16上のデータはフラッシュメモリ10に書き込まれる。フラッシュメモリ10のP1からP20のうち、データ消去済ブロックである未使用ブロックは8個ある(P1、P4、P7、P8、P17からP20)。したがって、データバッファ16上のB1からB8のデータは、フラッシュメモリ10に消去動作をさせることなく、P1、P4、P7、P8、P17からP20に書き込むことができる。
【0048】
このように、実施例1によれば、データバッファ16に記憶しているデータが占める第2ブロックの数と新たに送信される書き込みデータが占める予定の第2ブロックの数との合計がデータ消去済の第1ブロックの数以下である場合に、データバッファ16に新たな書き込みデータを受信させる。これにより、データバッファ16に記憶するデータを、フラッシュメモリ10に消去動作させることなく書き込むことが可能となる。つまり、データバッファ16上の全てのデータを、短い時間でフラッシュメモリ10に書き込むことが可能となる。したがって、充電池24の容量を小さくした場合でも、充電地24から電圧が供給されている間に、データバッファ16上のデータを全てフラッシュメモリ10に書き込むことができる。換言すると、データバッファ16上のデータを消失させることなく、充電池24の容量を小さくすることができる。
【0049】
また、充電池24から電圧が供給された状態で、フラッシュメモリ10に消去動作は行われない。つまり、実施例1によれば、充電池24から電圧が供給された状態で、高い電圧を必要とする消去動作が行われないため、充電池24の電圧を低く抑えることも可能となる。
【実施例2】
【0050】
実施例2に係る記憶装置100は、例えば、Flash SSD(Flash Solid State Drive)であり、ブロック図は比較例と同じであり、図1に示しているため、ここでは説明を省略する。
【0051】
実施例2に係る記憶装置100が有するMPU14は、図9のように、コマンド受信部38、ブロック判断部40、データ消去部42、予約制御部44、書き込み判断部46、及びデータ受信制御部48を備えている。コマンド受信部38、ブロック判断部40、データ消去部42、予約制御部44、書き込み判断部46、及びデータ受信制御部48は、システムバス50により互いに接続している。また、コマンド受信部38、ブロック判断部40、データ消去部42、予約制御部44、書き込み判断部46、及びデータ受信制御部48は、ROM12に予め格納されている制御プログラムをMPU14が読み出して実行することにより行われる。
【0052】
コマンド受信部38は、ホスト26から入力される書き込みコマンド等を受信する。ブロック判断部40は、コマンド受信部38で書き込みコマンドを受信した場合に、フラッシュメモリ10の第1ブロックの中にデータ消去済のブロックがあるか否かを判断する。データ消去部42は、ブロック判断部40でデータ消去済の第1ブロックがないと判断された場合に、第1ブロックの中から無効データを保有しているブロックを選び、データの消去を行う。予約制御部44は、ブロック判断部40でデータ消去済の第1ブロックがあると判断されたか又はデータ消去部42で第1ブロックのデータ消去を行った場合に、データ消去済の第1ブロックを、コマンド受信部38で受信した書き込みコマンドに対応した書き込みデータが記憶される予定の第2ブロックで予約する。書き込み判断部46は、フラッシュメモリ10にデータ消去を行うことなく、コマンド受信部38で受信した書き込みコマンドに対応した書き込みデータを全てフラッシュメモリ10に書き込めるか判断する。書き込めるか否かの具体的な判断方法については後述する。データ受信制御部48は、書き込み判断部46で書き込みができると判断された場合に、コマンド受信部38で受信した書き込みコマンドに対応した書き込みデータを全てホスト26からデータバッファ16に受信させる。
【0053】
次に、図10から図12を用い、ホスト26から書き込み要求がされた場合に、ホスト26からデータバッファ16への書き込みデータの受信処理について説明する。図10は、書き込みデータの受信処理を説明するフローチャートである。図11及び図12は、受信処理の際におけるデータバッファ16とフラッシュメモリ10とのデータ記憶状態を表す一例である。
【0054】
図11(a)は、ホスト26から書き込みコマンドを受信する前における、データバッファ16とフラッシュメモリ10とのデータ記憶状態の例である。図11(a)のように、データバッファ16のB1とB2は既にデータを記憶している。P17をB1で予約し、P18をB2で予約することで、B1に記憶されているデータはフラッシュメモリ10のP17に書き込み、B2に記憶されているデータはP18に書き込むことが予約されている。予約方法としては、例えば、図13のように、データバッファ管理テーブル18に、データバッファ16内のバッファ毎の論理アドレスの管理に加え、バッファ毎にデータの書き込み予定先の物理アドレスを管理することで行うことができる。
【0055】
MPU14が、ホスト26から書き込みコマンドを受信すると(ステップS30)、MPU14は、フラッシュメモリ10の第1ブロックのうち、書き込み予約がされていないデータ消去済の第1ブロックがあるか否か判断する(ステップS32)。ここで、具体例として、MPU14が受信した書き込みコマンドは、6ブロック分のデータの書き込み要求であった場合を想定する。図11(a)の状態では、P1、P4、P19、P20はデータ消去済であり、且つ書き込み予約もされていないため、MPU14は、書き込み予約がされていないデータ消去済の第1ブロックがあると判断する。
【0056】
ステップS32で書き込み予約がされていないデータ消去済の第1ブロックがあると判断された場合(Yesの場合)、MPU14は、ホスト26からの書き込みデータが記憶される予定のデータバッファ16内のバッファに対して、書き込み予定先の物理アドレスを特定する。これにより、MPU14は、データ消去済の第1ブロックを、ホスト26からの書き込みデータが記憶される予定の第2ブロックで予約することができる(ステップS36)。例えば、図11(a)において、P19をB3で予約し、B3に記憶されるデータはP19に書き込むことを予約することができる。
【0057】
次に、MPU14は、ホスト26からの書き込みデータが記憶される予定の第2ブロック全てに対して、第1ブロックが予約されているか判断する(ステップS38)。書き込みデータが記憶される予定の第2ブロック全てについて、データ消去済の第1ブロックが予約されている場合に、MPU14は、ホスト26からの書き込みデータ全てを、フラッシュメモリ10に消去動作させることなく書き込みできると判断する。ここでは、ホスト26から受信した書き込みコマンドは6ブロック分のデータの書き込み要求であるため、MPU14は、書き込みデータが記憶される予定の全ての第2ブロックについて第1ブロックは予約されていないと判断する。ステップS38で予約されていないと判断された場合(Noの場合)、ステップS32に戻る。
【0058】
ここで、図11(a)において、P1、P4、P20については、書き込み予約がされていないデータ消去済のブロックである。したがって、ステップS32、S36、S38を繰り返し実行することで、図11(b)のように、P20をB4で予約し、B4に記憶されるデータはP20に書き込むことを予約することができる。同様に、P1をB5で予約し、P4をB6で予約し、B5に記憶されるデータはP1に書き込み、B6に記憶されるデータはP4に書き込むことを予約することができる。
【0059】
図11(b)においては、ホスト26からの書き込みデータが記憶される予定の第2ブロック(B3からB8)全てについて、第1ブロックがまだ予約されていない。このため、ステップS38でNoと判断され、ステップS32に戻る。
【0060】
ステップS32では、MPU14は、データ消去済の第1ブロックがあるか否かを判断するが、図11(b)では、データ消去済の第1ブロックはない。したがって、MPU14は、データ消去済の第1ブロックはないと判断し(No)、MPU14は、無効データを保有する第1ブロックの中から1ブロック選び、データを消去する(ステップS34)。例えば、図11(b)において、P7が保有する無効データを消去する。
【0061】
次に、MPU14は、P7をB7で予約し(ステップS36)、B7に記憶されるデータをP7に記憶することを予約する。B8についても、ステップS32からステップS36を繰り返し行うことで、例えば、P8をB8で予約し、B8に記憶されるデータをP8に書き込むことを予約することができる。これにより、図12(a)のように、B3からB8全てについて第1ブロックを予約することができる。
【0062】
ステップS38で書き込みデータが記憶される予定の第2ブロック全てについて第1ブロックが予約されていると判断された場合(Yesの場合)、MPU14は、ホスト26から受信した書き込みコマンドに対応した書き込みデータを全てデータバッファ16に受信させる(ステップS40)。これにより、図12(b)に示すように、データバッファ16のB3からB8に6ブロック分の書き込みデータが受信される。
【0063】
図10において、ステップS30を実行するMPUは、図9におけるコマンド受信部38に相当する。ステップS32を実行するMPUは、図9におけるブロック判断部40に相当する。ステップS34を実行するMPUは、図9におけるデータ消去部42に相当する。ステップS36を実行するMPUは、図9における予約制御部44に相当する。ステップS38を実行するMPUは、図9における書き込み判断部46に相当する。ステップS40を実行するMPUは、図9におけるデータ受信制御部48に相当する。
【0064】
ここで、図12(b)の状態で、記憶装置100の主電源がOFFされた場合を想定する。この場合、充電池24から電圧が供給されて、データバッファ16上のデータをフラッシュメモリ10に書き込むことになる。データバッファ16のB1からB8に記憶されているデータは、データの書き込み先として、データ消去済の第1ブロックを予約している。したがって、データバッファ16のB1からB8に記憶されているデータは、フラッシュメモリ10に消去動作をさせることなく、P1、P4、P7、P8、P17からP20に書き込むことができる。
【0065】
このように、実施例2によれば、ホスト26から送信される書き込みデータを記憶する予定の第2ブロック全てに対して、データ消去済の第1ブロックを予約させた後、データバッファ16にホスト26から書き込みデータを受信する。これにより、データバッファ16上のデータを、フラッシュメモリ10に消去動作させることなくフラッシュメモリ10に書き込むことが可能となる。つまり、データバッファ16上の全てのデータを、短い時間でフラッシュメモリ10に書き込むことが可能となる。よって、充電池24の容量を小さくした場合でも、充電地24から電圧が供給されている間に、データバッファ16上のデータを全てフラッシュメモリ10に書き込むことができる。換言すると、データバッファ16上のデータを消失させることなく、充電池24の容量を小さくすることができる。
【0066】
また、実施例2によれば、データの書き込み先を予め特定している。このため、データバッファ16上のデータをフラッシュメモリ10に書き込むために要する時間を、実施例1に比べて短くすることができ、充電池24の容量をより小さくすることが可能となる。
【0067】
実施例1のデータバッファ管理テーブル18は、図2のように、論理アドレスのみ記憶している。したがって、実施例1によれば、実施例2の図13のように、論理アドレスに加え、書き込み予定先の物理アドレスを記憶している場合に比べ、データバッファ管理テーブル18の容量を小さくすることが可能となる。
【0068】
実施例1及び実施例2において、無効データを保有する第1ブロックのデータ消去は、1ブロックづつ選び、データ消去する場合を例に示したが、複数の第1ブロックのデータを同時に消去する場合でもよい。
【0069】
実施例1及び実施例2に係る記憶装置100は、図14のように、電子装置200に備わることができる。電子装置200の例としては、電話機、オーディオ機、パソコン、HDDレコーダー等のデータを記憶する装置が挙げられる。フラッシュメモリを用いた記憶装置は、耐衝撃性等に優れているため、携帯型電話機、携帯型オーディオ機、ノートパソコン等の持ち運びを行う電子装置に、実施例1及び実施例2に係る記憶装置100が備わることが好適である。
【0070】
上述した実施例は、本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲内において種々の変形実施が可能である。
【符号の説明】
【0071】
10 フラッシュメモリ
12 ROM
14 MPU
16 データバッファ
18 データバッファ管理テーブル
20 アドレス変換マップ
22 RAM
24 充電池
26 ホスト
28 コマンド受信部
30 書き込み判断部
32 データ消去部
34 データ受信制御部
36 システムバス
38 コマンド受信部
40 ブロック判断部
42 データ消去部
44 予約制御部
46 書き込み判断部
48 データ受信制御部
50 システムバス
100 記憶装置
200 電子装置

【特許請求の範囲】
【請求項1】
ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断部と、
前記書き込み判断部により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御部と、を有することを特徴とする記憶装置。
【請求項2】
前記フラッシュメモリは、消去単位である第1ブロック毎に複数分割された記憶領域を有し、
前記データバッファは、前記第1ブロックと同じ大きさである第2ブロック毎に複数分割された記憶領域を有し、
前記書き込み判断部は、前記データバッファ上に記憶されている書き込みデータが占める前記第2ブロックの数と前記ホストから書き込み要求された前記書き込みデータが占める予定の前記第2ブロックの数との合計が、データ消去済である前記第1ブロックの数以下であるかを判断し、
前記データ受信制御部は、前記書き込み判断部で前記第2ブロックの数の合計がデータ消去済である前記第1ブロックの数以下であると判断された場合に、前記書き込み要求に対応する前記書き込みデータを前記ホストから前記データバッファに受信させることを特徴とする請求項1記載の記憶装置。
【請求項3】
前記フラッシュメモリは、消去領域である第1ブロック毎に複数分割された記憶領域を有し、
前記データバッファは、前記第1ブロックと同じ大きさである第2ブロック毎に複数分割された記憶領域を有し、
データ消去済である前記第1ブロックを、前記ホストから書き込み要求された前記書き込みデータが記憶される予定の第2ブロックで予約する予約制御部を更に有し、
前記書き込み判断部は、前記予約制御部により前記ホストから書き込み要求された前記書き込みデータが占める予定の前記第2ブロック全てに対して、データ消去済である前記第1ブロックが予約されているか判断し、
前記データ受信制御部は、前記書き込み判断部で前記第2ブロック全てに対して、データ消去済である前記第1ブロックが予約されていると判断された場合に、前記書き込み要求に対応する前記書き込みデータを前記ホストから前記データバッファに受信させることを特徴とする請求項1記載の記憶装置。
【請求項4】
ホストから書き込み要求された書き込みデータを、フラッシュメモリに消去動作をさせることなく、前記フラッシュメモリに全て書き込めるか判断する書き込み判断工程と、
前記書き込み判断工程により書き込めると判断された場合に、フラッシュメモリに書き込みデータを書き込む前に一時的に書き込みデータを記憶するデータバッファに、前記ホストから書き込み要求された前記書き込みデータを受信させるデータ受信制御工程と、を有することを特徴とする記憶装置の制御方法。
【請求項5】
請求項1から3のいずれか一項に記載の記憶装置を備えることを特徴とする電子装置。

【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate