(58)【調査した分野】(Int.Cl.,DB名)
NAND型フラッシュメモリと、このNAND型フラッシュメモリに対するデータの書き込み/読み出しを制御する制御部とを備え、ホスト機器にインタフェースを介して接続された記憶装置において、
前記制御部は、
前記ホスト機器から、前記インタフェースを介して前記ホスト機器に接続されるインタフェース部と、
前記NAND型フラッシュメモリ内の特定領域に対して上書き用データを上書きすることにより、この特定領域内に記憶されていた既存データの消去が、前記インタフェースが定める上書き命令により前記ホスト機器から指示されたか否かを判断する判断部と、
前記判断部が、前記特定領域内に記憶された前記既存データへの消去指示がされたと判断したら、この特定領域を含む物理ブロックに対してブロック消去を指示し、前記特定領域を含む物理ブロックの前記NAND型フラッシュメモリの電荷を除去することで前記既存データを消去する消去部と
を備え、
前記記憶装置は記憶媒体を備え、
この記憶媒体には、前記特定領域内に記憶されていた前記既存データの消去指示がされる際に前記ホスト機器から送信される前記上書き用データが保持され、
前記制御部は、
前記ホスト機器から前記特定領域内のデータ読み出しが指示されたら、前記記憶媒体内の上書き用データを前記インタフェース部を介して前記ホスト機器に転送する転送部
を備えることを特徴とする記憶装置。
【発明を実施するための形態】
【0017】
(第1の実施形態)
以下、図面を参照して、本発明の実施形態について説明する。
【0018】
図1は、本発明の記憶装置をSSD装置に適用した第1の実施形態の概略構成を示すブロック図、
図2は、第1の実施形態のSSD装置の機能を示す機能ブロック図である。
【0019】
(SSD装置の概略構成)
これら図において、10は第1の実施形態であるSSD装置であり、このSSD装置10は、コントローラ11、RAM(Random Access Memory)12、ROM(Read Only Memory)13及びフラッシュメモリ14を備えている。本実施形態のSSD装置10は、例えば本実施形態ではMFPであるホスト機器20に接続され、ホスト機器20からの書き込み指令に応じて所定のデータを格納し、また、読み出し指令に応じて格納された所定のデータを送出するものである。
【0020】
コントローラ11はSSD装置10全体の制御を行うもので、CPU(Central Processing Unit)15、ホストインタフェース(I/F)16、フラッシュインタフェース(I/F)17、RAMインタフェース(I/F)18及びROMインタフェース(I/F)19を備える。
【0021】
CPU15は、ROM13内に格納されているファームウェアが電源投入時にRAM12に展開され、このファームウェアが実行されることでコントローラ11、ひいてはSSD装置10の制御を行うとともに、
図2に示す各機能部に示す機能を備える。
図2に示す各機能部については後述する。ホストI/F16は、所定の外部インタフェースを介してホスト機器20に接続され、CPU15の制御下において、このホスト機器20との間で、外部インタフェースが定めるプロトコル、コマンドに準拠してデータの送受信を行う。本実施形態では、ホストI/F16とホスト機器20とは、HDDなどで多用される汎用性を有するインタフェース、例えばATA、SCSIにより接続されている。フラッシュI/F17はフラッシュメモリ14に接続され、CPU15の制御下において、このフラッシュメモリ14に対してデータの書き込み/読み出し動作を行う。RAM I/F18はRAM12に接続され、CPU15の制御下において、このRAM12に対してデータの書き込み/読み出し動作を行う。ROM I/F19はROM13に接続され、CPU15の制御下において、このROM13に対してデータの読み出し動作を行う。
【0022】
RAM12はコントローラ11のワークメモリとして用いられ、各種データが一時的に格納される。また、このRAM12には、ホスト機器20から送出される、フラッシュメモリ14の特定領域にあるスキャンデータ消去のための上書き用データ12aが格納されているとともに、フラッシュメモリ14の論理アドレスと物理ブロックとの対応関係が記述された論理アドレス−物理ブロック変換テーブル12bが格納されている。ホスト機器20がどのような上書き用データを用いて上書き消去を指令するかはホスト機器20により一意に定まるので、SSD装置10の立ち上げ時において、ホスト機器20から送出される上書き用データと同一パターンの上書き用データ12aがCPU15により生成され、RAM12内に格納される。また、変換テーブル12bの詳細については後述する。ROM13には、上述のようにSSD装置10の制御を行うファームウェアが格納されている。
【0023】
(フラッシュメモリの論理領域等)
フラッシュメモリ14は、本実施例ではNAND型フラッシュメモリである。このフラッシュメモリ14は、
図3に示すような論理領域、論理アドレス及び物理ブロックを有する。以下、
図3を参照して、フラッシュメモリ14の論理領域、論理アドレス及び物理ブロックについて説明する。
【0024】
図3に示すように、本実施形態のフラッシュメモリ14の論理領域は、MBR(マスターブートレコード:Master Boot Record)30及びパーティションA31〜C33に分割されている。本実施形態では、パーティションA31にはホスト機器20全体の制御を行うオペレーティングシステム(OS)310が、パーティションB32にはホスト機器20の各種動作を実行するためのアプリケーションプログラム320が、パーティションCには、ホスト機器20の各種動作時に一時的に使用されるデータが格納される。パーティションCに格納されるデータには、ホスト機器20によりスキャンされたスキャンデータ(既存データ)330が含まれる。また、本実施形態では、MBR30及びパーティションA31、B32は、ホスト機器20から消去指令があっても消去動作が拒否される非Erase領域とされ、パーティションC33は、ホスト機器からの消去指令により消去可能なErase領域とされている。なお、本明細書において、「パーティション」とは、ホスト機器20のOS310が管理してMBR30に記載する論理アドレスの区切りだけでなく、OS310が管理しない、ホスト機器20のアプリケーションプログラム320が書き込み先論理アドレスをデータの種類によって区別する、書き込みエリアの区切りをも含む。
【0025】
MBR30には、パーティションテーブル30a及びブートローダ30bが格納されている。パーティションテーブル30aには、フラッシュメモリ14のパーティションに関する情報が格納されており、具体的には、パーティションの位置情報(開始セクタアドレス、終了セクタアドレス)、種類、サイズがパーティション毎に格納されている。
【0026】
ブートローダ30bは、SSD装置10起動時に最初に読み込まれるコードである。具体的には、ホスト機器20に電源が投入されると、ホスト機器20に備えられる不図示のブートストラップが起動され、このブートストラップがフラッシュメモリ14内のMBR(パーティションテーブル30a及びブートローダ30b)をホスト機器20側に読み出す。そして、ブートローダ30bは、パーティションテーブル30aに記載された情報に基づき、パーティションA31に格納されたオペレーティングシステム310を読み出し、ホスト機器20に送出する。ホスト機器20は、不図示のメモリ内にこのオペレーティングシステム310を展開し、以降、このオペレーティングシステム310によりホスト機器20全体の制御が行われる。ここに、パーティションとは、フラッシュメモリ14が有する論理アドレスを複数の領域に分割した際の一つの領域であり、ホスト機器20からは各パーティションが1つの論理ドライブとして認識される。このようなパーティションは、HDDにおけるパーティションと同様の概念である。
【0027】
また、本実施形態では、フラッシュメモリ14内の空間は論理アドレス(LBA:Logical Block Addressing)及び物理ブロックにより把握され、ホスト機器20はこの論理アドレスを直接指定することで特定領域に対するデータのアクセスを行うことが可能とされている。コントローラ11は、ホスト機器20から論理アドレスが直接指定されると、RAM13内に格納された論理アドレス−物理ブロック変換テーブル12bを参照して、実際にアクセスすべき物理ブロックを特定し、この物理ブロックに対するアクセスを行う。
【0028】
なお、本実施形態では、MBR30及びパーティションA31、B32については、論理アドレスと物理ブロックとは略同一の領域が確保されている一方、パーティションC33については、論理アドレスの領域よりも物理ブロックの領域が小さくなるように、パーティションA31〜C33が設定されている。
【0029】
また、
図3には図示しないが、本実施形態のフラッシュメモリ14では、1つの物理ブロックは複数のページを有しており、データの書き込み動作はページ単位で、データの消去動作はブロック単位で行われる。また、各ページは複数のセクタからなる。
【0030】
(SSD装置の機能構成)
次に、
図2は、本実施形態のSSD装置10の機能を示すブロック図である。本実施形態のSSD装置10は、制御部40と、フラッシュメモリ14と、記憶媒体41とを備える。
【0031】
制御部40は、フラッシュメモリ14に対するデータの読み出し/書き込みを制御するものであり、インタフェース部42、判断部43、消去部44及び転送部45を備える。インタフェース部42は、ホスト機器20と汎用性を有するインタフェース、例えばATAやSCSIを介して接続され、ホスト機器20との間で、外部インタフェースが定めるプロトコル、コマンドに準拠してデータの送受信を行う。判断部43は、インタフェース部42が受信したコマンドに応じて、このコマンドが上書き命令であった場合、フラッシュメモリ14内の特定領域内に記憶されていた既存データの消去がホスト機器20から指示されたか否かを判断する。消去部44は、判断部43により、フラッシュメモリ14内の特定領域内に記憶されていた既存データの消去がホスト機器20から指示されたと判断されたときに、この特定領域を含む物理ブロックに対してブロック消去を指示し、特定領域を含む物理ブロックのフラッシュメモリ14の電荷を除去することでデータを消去する。
【0032】
また、記憶媒体41には、ホスト機器20から送信される上書き用データと同一パターンの上書き用データ12a(
図1参照)が保持されている。転送部45は、フラッシュメモリ14の特定領域内のデータ読み出しがホスト機器20から指示されたら、記憶媒体41内の上書き用データ12aをインタフェース部42を介してホスト機器20に転送する。
【0033】
以上の説明において、制御部40はコントローラ11、特にCPU15の動作により実現され、記憶媒体41はRAM12により実現され、インタフェース部42はホストI/F16及びCPU15により実現され、判断部43はCPU15により実現され、消去部44はフラッシュI/F17及びCPU15により実現され、転送部45はホストI/F16及びCPU15により実現される。
【0034】
(SSD装置の動作の概要)
次に、
図4を参照して、本実施形態のSSD装置10の動作の概要について説明する。本実施形態のSSD装置10では、まず、ホスト機器20から、スキャンデータをフラッシュメモリ14内の特定の論理アドレスで指定される特定領域51に書き込む指示がされる。汎用性のあるインタフェースでは、この書き込み指示は、データ書き込み用に用意されているWriteコマンド(Programコマンド)が発行されることにより行われる。
【0035】
次に、ホスト機器20においてスキャンデータを利用したジョブが終了したことをトリガとして、このホスト機器20が、フラッシュメモリ14内の特定領域51に存在するスキャンデータを消去する指示がされる。上述のように、汎用性のあるインタフェースにおいては、データを直接消去するコマンドは用意されていないので、ホスト機器20は、この特定領域51に対して、スキャンデータ消去用の上書き用データを上書きする(汎用性のあるインタフェースでは削除(消去)という特別なコマンドがないことが多いので、単純にデータを書き込む)コマンドであるWriteコマンドによりスキャンデータ消去指示を行う。
【0036】
SSD装置10は、スキャンデータ消去用の上書き用データによる書き込み指示がホスト機器20からされたことを検出すると、かかる書き込み指示はスキャンデータの消去指示であると判断、解釈し、フラッシュメモリ14の特定領域51を含む物理ブロックに対して消去動作を行う。これとともに、SSD装置10は、変換テーブル12bを更新し、消去動作が行われた特定領域51の論理アドレスと物理ブロックとの対応を、論理アドレスとRAM12内の上書き用データ12aが格納されたアドレスとに変更する。ここに、スキャンデータの消去指示であるか否かの判断は、Writeコマンドの到来及び書き込み指示がされたデータが上書き用データ、例えば全て「0」のデータ、全て「1」のデータ、あるいは乱数を含む所定パターンを有するデータであるか否かの判断により行う。かかる判断の詳細については後述する。また、NAND型フラッシュメモリ14における消去動作は、特定の物理ブロックを構成する複数のセルに対して電荷層から電荷を除去することにより行われる。
【0037】
さらに、ホスト機器20が、上述したスキャンデータ消去指示の後、フラッシュメモリ14の特定領域51に格納されたスキャンデータが確実に消去されたか否かを確認する目的で、この特定領域51にその時点で格納されているデータの読み出し指示をReadコマンドにより行うことがある。SSD装置10は、かかるデータ読み出し指示がホスト機器20からされたことを検出すると、変換テーブル12bを参照して上書き用データ12aをRAM12から読み出し、この上書き用データ12aをホスト機器20に送出する。ホスト機器20は、特定領域51の特定を論理アドレスにより行うので、上述のように消去動作によって変換テーブル12bが更新されていることにより、この論理アドレスに対応するのは上書き用データ12aが格納されているRAM12のアドレスである。従って、SSD装置10は、変換テーブル12bを参照すれば、RAM12の上書き用データ12aにアクセスし、この上書き用データ12aを読み出してホスト機器20に送出することができる。
【0038】
(SSD装置の動作)
次に、
図5〜
図9のシーケンス図及び
図10のフローチャートを参照して、
図4に概要を示した本実施形態のSSD装置10の動作について説明する。なお、
図5〜
図10の説明において、SSD装置10とホスト機器20とは、汎用性のあるインタフェースのうちATAインタフェースにより相互接続されているものとする。
【0039】
図5は、SSD装置10を含むホスト機器20立ち上げ時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS1において、ホスト機器20は、ATAデバイスであるSSD装置10のモデル名や対応転送モードといったATAデバイス固有の情報を取得するために、これら情報をSSD装置10に要求するコマンドを送信する(Identify Deviceコマンド)。SSD装置10の制御部40は、ステップS1においてインタフェース部42がIdentify Deviceコマンドを受信すると、ステップS2においてインタフェース部42を介して自身の情報をホスト機器20に返送する。次いで、ホスト機器20は、ステップS3において、上述したMBRの送出をSSD装置10に要求する。SSD装置10の制御部40は、インタフェース部42がかかる要求を受信すると、ステップS4において、フラッシュメモリ14に格納されているMBR30(
図3参照)の読み出しをこのフラッシュメモリ14に要求する。ステップS5では、制御部40はフラッシュメモリ14からMBR30のデータを受信する。ステップS6では、制御部40がフラッシュメモリ14から受信したMBR30を解析し、Erase領域(
図3に示すように、本実施形態ではパーティションC33)のLBAを取得し、Erase領域の開始論理アドレス及び終了論理アドレスを抽出する。ステップS7では、制御部40がErase領域(パーティションC33)の開始論理アドレス及び終了論理アドレスをRAM12内に書き込む。そして、ステップS8では、制御部40がインタフェース部42を介してステップS5で取得したMBRのデータをホスト機器20に送出する。
【0040】
次に、
図6は、フラッシュメモリ14の非Erase領域へのデータ書き込み時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS10において、ホスト機器20からSSD装置10に対して、データを書き込むべき論理アドレスを指定して書き込み指令がされる。SSD装置10の制御部40は、インタフェース部42がかかる指令を受信すると、ステップS11において、
図5のステップS6でRAM12内に書き込んだErase領域の開始論理アドレス等を参照して、データを書き込むべき論理アドレスがErase領域に存在するか否かを判断する。
図6に示す例では、データを書き込むべき論理アドレスは非Erase領域(
図3に示すように、本実施形態ではパーティションA31、B32のいずれか)にあるので、ステップS11ではErase領域でないとの判断になる。次いで、ステップS12では、制御部40はインタフェース部42を介してホスト機器20に対して書き込み動作の準備が完了した旨の通知をする。ステップS13では、ホスト機器20は、書き込むべきデータをSSD装置10に送出するので、ステップS14では、インタフェース部42がこの書き込むべきデータを受信し、制御部40はホスト機器20から送出されたデータをフラッシュメモリ14に対して書き込む。上述したように、このデータが書き込まれる領域は非Erase領域(パーティションA31、B32のいずれか)である。ステップS15では、フラッシュメモリ14からデータ書き込み完了通知が制御部40にされ、これを受けて、ステップS16では、制御部40がインタフェース部42を介してホスト機器20にデータ書き込み完了通知を送出する。
【0041】
次に、
図7は、フラッシュメモリ14のErase領域の特定領域51に格納されたスキャンデータ330(
図3参照)の上書き消去動作時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS20において、ホスト機器20からSSD装置10に対して、データを書き込むべき論理アドレス、この場合はスキャンデータ330が存在する特定領域51のアドレスを指定して上書き指令がされる。SSD装置10の制御部40は、ステップS21において、インタフェース部42がかかる上書き指令を受信し、次いで、制御部40は、
図5のステップS6でRAM12内に書き込んだErase領域の開始論理アドレス等を参照して、データを上書きすべき論理アドレスがErase領域に存在するか否かを判断する。
図7に示す例では、データを書き込むべき論理アドレスはErase領域(
図3に示すように、本実施形態ではパーティションC33)にあるので、ステップS21ではErase領域であるとの判断になる。次いで、ステップS22では、制御部40はインタフェース部42を介してホスト機器20に対して書き込み動作の準備が完了した旨の通知をする。ステップS23では、ホスト機器20は、上書き用データをSSD装置10に送出する。ステップS24では、制御部40の判断部43は、ホスト機器20から送出されてインタフェース部42が受信したデータが上書き用データであるかどうかを判断する。この、上書き用データであるかどうかの判断の詳細なルーチンについては後述する。
図7に示す例では、ホスト機器20から送出された書き込み用データはスキャンデータ330消去のための上書き用データであるので、ステップS24では上書き用データであるとの判断になる。次いで、ステップS25では、制御部40の消去部44は特定領域51を含む物理ブロックに対して消去指示し、さらに、ステップS26において、制御部40は、ホスト機器20から送出された上書き用データ12a(
図1参照)をRAM12に格納し、ステップS27において、制御部40はRAM12内の変換テーブル12b(
図1参照)を更新し、消去指示を行った特定領域51の論理アドレスに対応する宛先を、消去動作を行った物理ブロックから上書き用データ12aが格納されたRAM12のアドレスに変更する。ステップS28では、フラッシュメモリ14から消去動作完了通知が制御部40にされ、これを受けて、ステップS29では、制御部40がインタフェース部42を介してホスト機器20にデータ書き込み完了通知を送出する。
【0042】
次に、
図8は、フラッシュメモリ14のErase領域へのデータ書き込み時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS30において、ホスト機器20からSSD装置10に対して、データを書き込むべき論理アドレス、この場合はスキャンデータ330が存在する特定領域51のアドレスを指定して書き込み指令がされる。SSD装置10の制御部40は、ステップS31において、インタフェース部42がかかる書き込み指令を受信し、次いで、制御部40は、
図5のステップS6でRAM12内に書き込んだErase領域の開始論理アドレス等を参照して、データを書き込むべき論理アドレスがErase領域に存在するか否かを判断する。
図8に示す例では、データを書き込むべき論理アドレスはErase領域(パーティションC33)にあるので、ステップS31ではErase領域であるとの判断になる。次いで、ステップS32では、制御部40はインタフェース部42を介してホスト機器20に対して書き込み動作の準備が完了した旨の通知をする。ステップS33では、ホスト機器20は、書き込み用データをSSD装置10に送出する。ステップS34では、制御部40の判断部43は、ホスト機器20から送出されてインタフェース部42が受信したデータが上書き用データであるかどうかを判断する。
図8に示す例では、ホスト機器20から送出された書き込み用データは書き込み用データであるので、ステップS34では上書き用データでないとの判断になる。ステップS35では、制御部40はホスト機器20から送出されたデータをフラッシュメモリ14のErase領域(パーティションC33)に対して書き込む。ステップS36では、フラッシュメモリ14からデータ書き込み完了通知が制御部40にされ、これを受けて、ステップS37では、制御部40がインタフェース部42を介してホスト機器20にデータ書き込み完了通知を送出する。
【0043】
次に、
図9は、フラッシュメモリ14のErase領域の特定領域51に格納されたスキャンデータ330(
図3参照)の上書き消去動作後に、正しくスキャンデータ330が上書き消去されたかどうかの確認のために、ホスト機器20がこの特定領域51に現在格納されているデータを読み出す時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS40において、ホスト機器20からSSD装置10に対して、スキャンデータ330が存在した特定領域51の論理アドレスを指定してデータ読み出し指令がされる。SSD装置10の制御部40は、ステップS41において、インタフェース部42がかかる読み出し指令を受信し、次いで、制御部40は、RAM12内の変換テーブル12bを参照して、ホスト機器20から指定された論理アドレスに対応する、実際に読み出しを行うべき領域を特定する。
図9に示す例では、ホスト機器20はスキャンデータ330が存在した特定領域51の論理アドレスを指定しており、この論理アドレスに対応するのは、上述のようにRAM12に格納された上書き用データ12aのアドレスである。従って、ステップS42では、制御部40の転送部45は、
図7のステップS26でRAM12内に格納した上書き用データ12aをRAM12から読み出し、ステップS43では、この上書き用データ12aがRAM12から制御部40に送出される。ステップS44では、制御部40はインタフェース部42を介してこの上書き用データ12aをホスト機器20に送出する。
【0044】
次に、
図10は、
図7のステップS24等で行われる、判断部43により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
図10の説明において、ホスト機器20から送出される上書き用データは、全て「0」のデータであるものとする。まず、ステップS100において、ホスト機器20から転送(送出)されてきたデータのバイト数が取得される。次いで、ステップS101において、変数Cが初期化され、その値が0にされる。ステップS102において、この変数Cが転送バイト数より小さいか否かが判断され、変数Cが転送バイト数より小さい(ステップS102においてYES)ときはステップS103に進み、変数Cが転送バイト数以上である(ステップS102においてNO)ときはステップS105に進む。ステップS103では、転送されてきたデータが「0」(
図10では16進数表示の「0x00」)であるか否かが判定され、転送されてきたデータが「0」である(ステップS103においてYES)場合はステップS104に進み、転送されてきたデータが「0」でない場合はステップS105に進む。ステップS104では変数Cが1つインクリメントされ、次の転送データが読み込まれる。ステップS105では、変数Cが転送バイト数に等しいか否かが判断され、変数Cが転送バイト数に等しい(ステップS105においてYES)場合はステップS106に進み、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ14に対して消去動作が指示される。一方、変数Cが転送バイト数に等しくない(ステップS105においてNO)場合はステップS107に進み、通常のデータ書き込みであると判断し、フラッシュメモリ14に対してデータ書き込みが指示される。このように、
図10のルーチンでは、個々のデータについて「0」であるかどうかの判断を行い、全てのデータが「0」であるときに、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断している。
【0045】
(第1の実施形態の効果)
以上詳細に説明したように、本実施形態のSSD装置10は、フラッシュメモリ14の特定領域51に存在するスキャンデータ330消去のための上書き用データ12aがホスト機器20から送出されてきたことを判断し、この上書き用データ12aの代わりに特定領域51を含む物理ブロック51に対して消去指示を行うことで、このスキャンデータ330を消去している。従って、フラッシュメモリ14が1回の動作を行うだけでスキャンデータ330を確実に消去することができる。
【0046】
加えて、本実施形態のSSD装置10では、ホスト機器20はATAインタフェース等の汎用性のあるインタフェースに準拠した上書き指示コマンド(Writeコマンド等)及び上書き用データ12aをSSD装置10に送出すれば、SSD装置10が上書き消去指示であるか否かを判断して、上書き消去指示であると判断した場合はフラッシュメモリ14に対して消去動作を指示するので、上述した従来のMFPのようにベンダー準拠の特殊コマンドを用意する必要がない。これにより、ホスト機器20に特別な仕様変更を施すことなく、汎用HDDを換装することの可能なSSD装置10を提供することが可能となる。
【0047】
さらに、本実施形態のSSD装置10では、ホスト機器20から送出されてきた上書き用データ12aをRAM内に格納し、ホスト機器20からの読み出し指示に応じてこの上書き用データ12aを送出しているので、SSD装置10がフラッシュメモリ14の特定領域51に対して消去動作を行っても、ホスト機器20によるデータ消去確認動作に十分対応することが可能となる。
【0048】
また、
図3に示すように、本実施形態のSSD装置10では、非Erase領域であるパーティションA31、B32については論理アドレスと物理ブロックとで略同一の領域が確保されている一方、Erase領域であるパーティションC33については論理アドレスよりも物理ブロックの領域のほうが小さいように各パーティションA31〜C33が設定されている。従って、ホスト機器20から把握するSSD装置10の容量は確保されている論理アドレスに対応する容量である一方、実際のSSD装置10の容量は、物理ブロックに対応する容量であり、その分、SSD装置10の容量を削減することが可能となる。
【0049】
そして、このように、論理アドレスに対応する容量よりも実際のSSD装置10の容量が小さくても、上述のように上書き用データ12aをRAM12内に保管してあるので、ホスト機器20からデータ消去確認のためのデータ読み出し指令が来てもこの上書き用データ12aをホスト機器20に送出すれば良く、スキャンデータ330が格納された領域を消去動作直後に解放することができ、新たなスキャンデータ330を直ちに書き込むことができる。このような動作により、Erase領域であるパーティションC33を有効活用することができ、パーティションC33について論理アドレスよりも物理ブロックの領域を小さくしても円滑動作が可能となる。
【0050】
(第1の実施形態におけるパーティション更新動作の概要)
本実施形態のSSD装置10では、パーティション更新動作にも特徴がある。以下、
図11〜
図13を参照して本実施形態のSSD装置10におけるパーティション更新動作について説明する。
【0051】
図11は、本実施形態のSSD装置10におけるパーティション更新動作の概要を説明する図である。通常、パーティション更新動作において、各パーティションは論理アドレスにより確保され、実際のデータ読み込み/書き出し動作は、上述した変換テーブル12bにより特定される物理ブロックに対して行われる。ここで、各パーティションの領域は、例えばセクタ単位で設定することが可能である。従って、物理ブロック単位で見ると、
図11に示すように物理ブロックの中にパーティションの境界が来る可能性がある。本実施形態のSSD装置10では、
図11に示すように物理ブロックの中にパーティションの境界が来た場合、次のパーティションの開始位置を次の物理ブロックの先頭にしている。
【0052】
仮に、
図11に示すように、非Erase領域のパーティションとErase領域のパーティションとが隣り合い、しかも、物理ブロックの中にパーティションの境界が存在する場合を考える。本実施形態のようにフラッシュメモリ14の物理ブロックに対して消去指示をすると、消去動作はブロック単位で行われるので、パーティション境界が存在する物理ブロックのうち、非Erase領域に存在する部分にあるデータを(そこにデータが書き込まれているか否かにかかわらず)一時的に待避させ、この物理ブロックに消去指示をした後、待避したデータを再度書き込むという面倒な動作が必要になる。この動作は、フラッシュメモリ14の書き換え回数を消費することにつながる。
【0053】
一方、本実施形態のSSD装置10によれば、パーティションの開始位置は必ず物理ブロックの先頭になっているので、上述したデータ退避作業を行うことなく物理ブロックに対して消去指示を行うことができ、フラッシュメモリ14の書き換え回数を消費することを抑制することができる。
【0054】
(第1の実施形態におけるパーティション更新動作)
図12は、パーティション更新動作時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS110において、ホスト機器20は、パーティション更新動作のために、フラッシュメモリ14内に格納されたMBRを更新する指示を行う。SSD装置10の制御部40は、ステップS111においてMBR更新作業の準備が完了したことをホスト機器20に通知し、ホスト機器20は、ステップS111におけるMBR更新作業の準備が完了したことの通知を受け、ステップS112においてMBR更新用のデータを送信する。次いで、ステップS113では、制御部40が、ステップS112においてホスト機器20から送出されたMBRを解析し、Erase領域(パーティションC33)のLBAを取得し、Erase領域の開始論理アドレス及び終了論理アドレスを抽出するとともに、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスを把握する。ステップS114では、制御部40がフラッシュメモリ14のMBRを更新する。ステップS115では、フラッシュメモリ14からMBRへの更新データ書き込み完了通知が制御部40にされ、これを受けて、ステップS116では、制御部40がMBR書き込み完了通知をホスト機器20に送出する。
【0055】
次に、
図13は、
図11に示すパーティションの境界と次のパーティションの開始位置との間の論理アドレスに対してデータの書き込み/読み出し指示がされた時における、SSD装置10とホスト機器20との間のデータ送受信及びSSD装置10の動作を説明するためのシーケンス図である。まず、ステップS120において、ホスト機器20からSSD装置10に対して、データを書き込むべき論理アドレスを指定して書き込み指令がされる。ステップS120においてホスト機器20が指定した、データを書き込むべき論理アドレスは、非Erase領域のパーティションの境界と次のErase領域のパーティションの開始位置との間の論理アドレスに対応する。SSD装置10の制御部40は、ステップS121において、
図12のステップS113で行ったMBR解析で得られた結果に基づき、データを書き込むべき論理アドレスが非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるか否かを判断する。
図13に示す例では、データを書き込むべき領域は非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるので、ステップS121では、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるとの判断になる。次いで、ステップS122では、制御部40は、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスの分だけ、論理アドレスをオフセットしたフラッシュメモリ14の領域に、ホスト機器20から送出されたデータを書き込む。ここにいうオフセットとは、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスの分だけ進んだ値(大きな値)を有する論理アドレスの位置にデータを書き込む、あるいは読み出すことを意味する。ステップS123では、フラッシュメモリ14からデータ書き込み完了通知が制御部40にされ、これを受けて、ステップS124では、制御部40がホスト機器20にデータ書き込み完了通知を送出する。
【0056】
続いて、ステップS125において、ホスト機器20からSSD装置10に対して、データを読み出すべき論理アドレスを指定して読み出し指令がされる。ステップS125においてホスト機器20が指定した、データを読み出すべき論理アドレスは、非Erase領域のパーティションの境界と次のErase領域のパーティションの開始位置との間の論理アドレスに対応する。SSD装置10の制御部40は、ステップS126において、データを読み出すべき論理アドレスが非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるか否かを判断する。
図13に示す例では、データを書き込むべき領域は非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるので、ステップS126では、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスであるとの判断になる。次いで、ステップS127では、制御部40は、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスの分だけ、論理アドレスをオフセットしたフラッシュメモリ14の領域にあるデータを読み出す。ステップS128では、フラッシュメモリ14から読み出されたデータが制御部40に送出され、これを受けて、ステップS129では、制御部40が読み出されたデータをホスト機器20に送出する。
【0057】
以上説明したように、本実施形態のSSD装置10では、パーティションの開始位置は必ず物理ブロックの先頭になっており、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する論理アドレスの分だけオフセットした位置にデータを書き込む、あるいは読み出しているので、非Erase領域のパーティションの境界とErase領域のパーティションの開始位置との間に存在する領域に対してデータの書き込み/読み出し動作はされない。従って、この領域には何もデータが書き込まれていないことが保証されるので、上述したデータ退避作業を行うことなく物理ブロックに対して消去指示を行うことができ、フラッシュメモリ14の書き換え回数を消費することを抑制することができる。
【0058】
(第2の実施形態)
図14は、本発明の第2の実施形態であるSSD装置において、判断部43により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。本実施形態のSSD装置は、上書き用データであるかどうかのルーチン以外は上述した第1の実施形態のSSD装置と同一であり、従って、同一の構成要素については同一の符号を付し、その説明を簡略化する。また、以降の説明において、ホスト機器20から送出される上書き用データは、全て「0」のデータであるものとする。
【0059】
まず、ステップS200において、ホスト機器20から転送(送出)されてきたデータのバイト数が取得される。次いで、ステップS201において、変数C及びSが初期化され、その値が0にされる。ステップS202において、この変数Cが転送バイト数より小さいか否かが判断され、変数Cが転送バイト数より小さい(ステップS202においてYES)ときはステップS203に進み、変数Cが転送バイト数以上である(ステップS202においてNO)ときはステップS205に進む。ステップS203では、変数Sに転送されてきたデータが加算される。ステップS204では変数Cが1つインクリメントされ、次の転送データが読み込まれる。ステップS205では、変数Sが「0」(
図14では16進数表示の「0x0000」)に等しいか否かが判断され、変数Sが「0」に等しい(ステップS205においてYES)場合はステップS206に進み、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ14に対して消去動作が指示される。一方、変数Sが「0」に等しくない(ステップS205においてNO)場合はステップS207に進み、通常のデータ書き込みであると判断し、フラッシュメモリ14に対してデータ書き込みが指示される。このように、
図14のルーチンでは、個々のデータの加算値Sを算出し、この加算値が「0」であるときに、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断している。
【0060】
従って、本実施例のSSD装置10によっても、上述の第1の実施形態と同様の効果を得ることができる。
【0061】
(第3の実施形態)
図15は、本発明の第3の実施形態であるSSD装置において、判断部43により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【0062】
まず、ステップS300において、ホスト機器20から転送(送出)されてきたデータのセクタ数が取得される。次いで、ステップS301において、変数Cが初期化され、その値が0にされる。ステップS302において、この変数Cが転送セクタ数より小さいか否かが判断され、変数Cが転送セクタ数より小さい(ステップS302においてYES)ときはステップS303に進み、変数Cが転送セクタ数以上である(ステップS302においてNO)ときはステップS306に進む。ステップS303では、転送されてきたデータのハッシュ値が算出される。ここで、ハッシュ値は既知のハッシュ関数、一例としてMD2(Message Digest Algorithm 2)により算出されればよい。ステップS304では、ステップS303で算出されたハッシュ値が期待値と等しいかどうかが判断され、ハッシュ値が期待値と等しい(ステップS304においてYES)場合はステップS305に進み、ハッシュ値が期待値と等しくない(ステップS304においてNO)場合はステップS306に進む。ここに、期待値は、データが「0」であった場合のハッシュ値である。ステップS305では変数Cが1つインクリメントされ、次の転送データが読み込まれる。ステップS306では、変数Cが転送セクタ数に等しいかどうかが判断され、変数Cが転送セクタ数に等しい(ステップS306においてYES)場合はステップS307に進み、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ14に対して消去動作が指示される。一方、変数Cが転送セクタ数に等しくない(ステップS306においてNO)場合はステップS308に進み、通常のデータ書き込みであると判断し、フラッシュメモリ14に対してデータ書き込みが指示される。このように、
図15のルーチンでは、個々のデータのハッシュ値を算出し、このハッシュ値が、データが「0」である時のハッシュ値である期待値と等しいときに、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断している。
【0063】
従って、本実施例のSSD装置10によっても、上述の第1、第2の実施形態と同様の効果を得ることができる。
【0064】
(第4の実施形態)
図16は、本発明の第4の実施形態であるSSD装置において、判断部43により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【0065】
まず、ステップS400において、ホスト機器20から転送されてきたデータのCRC(Cyclic Redundancy Check)値が算出される。ステップS401では、ステップS400で算出されたCRC値が期待値と等しいかどうかが判断され、CRC値が期待値と等しい(ステップS401においてYES)場合はステップS402に進み、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ14に対して消去動作が指示される。一方、ハッシュ値が期待値と等しくない(ステップS401においてNO)場合はステップS403に進み、通常のデータ書き込みであると判断し、フラッシュメモリ14に対してデータ書き込みが指示される。このように、
図16のルーチンでは、データのCRC値を算出し、このCRC値が、データが「0」である時のCRC値である期待値と等しいときに、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断している。
【0066】
従って、本実施例のSSD装置10によっても、上述の第1〜第3の実施形態と同様の効果を得ることができる。
【0067】
(第5の実施形態)
図17は、本発明の第5の実施形態であるSSD装置において、判断部43により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【0068】
まず、ステップS500において、ホスト機器20から転送(送出)されてきたデータのバイト数が取得される。次いで、ステップS501において、変数C及びSが初期化され、その値が0にされる。ステップS502において、この変数Cが転送バイト数より小さいか否かが判断され、変数Cが転送バイト数より小さい(ステップS502においてYES)ときはステップS503に進み、変数Cが転送バイト数以上である(ステップS502においてNO)ときはステップS506に進む。ステップS503では、変数Cが、ステップS502において取得した転送バイト数の最初の値か、真ん中の値か、あるいは最後の値かが判断され、変数Cが転送バイト数の最初の値か、真ん中の値か、あるいは最後の値である(ステップS503においてYES)場合はステップS504に進み、変数Cが転送バイト数の最初の値か、真ん中の値か、あるいは最後の値でない(ステップS503においてNO)場合はステップS505に進む。ステップS504では、転送されてきたデータが「0」(
図17では16進数表示の「0x00」)であるか否かが判定され、転送されてきたデータが「0」である(ステップS504においてYES)場合はステップS505に進み、転送されてきたデータが「0」でない場合はステップS506に進む。ステップS505では変数Cが1つインクリメントされ、次の転送データが読み込まれる。ステップS506では、変数Cが転送バイト数に等しいか否かが判断され、変数Cが転送バイト数に等しい(ステップS506においてYES)場合はステップS507に進み、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ14に対して消去動作が指示される。一方、変数Cが転送バイト数に等しくない(ステップS506においてNO)場合はステップS508に進み、通常のデータ書き込みであると判断し、フラッシュメモリ14に対してデータ書き込みが指示される。このように、
図17のルーチンでは、転送されてきたデータの最初、真ん中及び最後の値を抽出し、抽出された値が全て「0」であるときに、ホスト機器20から転送、送出されてきたデータは上書き用データであると判断している。
【0069】
従って、本実施例のSSD装置10によっても、上述の第1〜第4の実施形態と同様の効果を得ることができる。
【0070】
(変形例)
本発明の記憶装置
及び記憶装置におけるデータ消去方法は、その細部が上述した各実施形態に限定されず、種々の変形例が可能である。
【0071】
一例として、上述の各実施形態では、ホスト機器から送出される上書き消去用の上書き用データは全て「0」のデータであるとして、上書き消去判断のルーチンを説明したが、ホスト機器から送出される上書き消去用の上書き用データが特定できる限り、ルーチンを適宜変更することで対応可能である。また、上書き消去判断のルーチンは上述の各実施形態に説明したものに限定されない。
【0072】
また、上述の第1の実施形態において、Erase領域の論理アドレスは、
図5に示すように起動時にフラッシュメモリのMBRを取得し、このMBRから取得していたが、これに限らず、例えば、記憶装置を組み込んだホスト機器の出荷時においてパーティションを作成した際に、Erase領域に対応するパーティションの論理アドレスを取得し、この論理アドレスを、ホスト機器から送出される記憶装置初期化コマンド内に設定しておけばよい。これにより、記憶装置初期化動作によって記憶装置はErase領域の論理アドレスを取得することができる。あるいは、ホスト機器特有の(ベンダー依存の)コマンドを用意し、このコマンド内にErase領域に対応するパーティションの論理アドレスを予め設定してもよい。
【0073】
また、上述の第1の実施形態において、RAM内に格納されている上書き用データはSSD装置が自ら生成していたが、ホスト機器から上書き消去指示の際に送出されてきた上書き用データを都度RAM内に格納してもよい。