(57)【要約】【課題】ホスト機器に特別な仕様変更を施すことなく、汎用ＨＤＤを記憶装置に換装する。【解決手段】ＮＡＮＤ型フラッシュメモリ内の特定領域に対して上書き用データを上書きすることにより、この特定領域内に記憶されていた既存データの消去が、インタフェースが定める上書き命令によりホスト機器から指示されたか否かを判断する判断部と、判断部が、特定領域内に記憶されていた既存データの消去指示がされたと判断したら、この特定領域を含む物理ブロックに対してブロック消去を指示し、特定領域を含む物理ブロックのＮＡＮＤ型フラッシュメモリの電荷を除去することで既存データを消去する消去部とを設けた。【選択図】図２
2014010498.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリと、このＮＡＮＤ型フラッシュメモリに対するデータの書き込み／読み出しを制御する制御部とを備え、ホスト機器にインタフェースを介して接続された記憶装置において、
制御部は、
前記ホスト機器から、前記インタフェースを介して前記ホスト機器に接続されるインタフェース部と、
前記ＮＡＮＤ型フラッシュメモリ内の特定領域に対して上書き用データを上書きすることにより、この特定領域内に記憶されていた既存データの消去が、前記インタフェースが定める上書き命令により前記ホスト機器から指示されたか否かを判断する判断部と、
前記判断部が、前記特定領域内に記憶された前記既存データへの消去指示がされたと判断したら、この特定領域を含む物理ブロックに対してブロック消去を指示し、前記特定領域を含む物理ブロックの前記ＮＡＮＤ型フラッシュメモリの電荷を除去することで前記既存データを消去する消去部と
を備えることを特徴とする記憶装置。
【請求項２】
前記ＮＡＮＤ型フラッシュメモリは複数のパーティションに分割され、各々の前記パーティションは物理ブロックの先頭から開始される
ことを特徴とする請求項１記載の記憶装置。
【請求項３】
前記記憶装置は記憶媒体を備え、
この記憶媒体には、前記特定領域内に記憶されていた前記既存データの消去指示がされる際に前記ホスト機器から送信される前記上書き用データが保持され、
前記制御部は、
前記ホスト機器から前記特定領域内のデータ読み出しが指示されたら、前記記憶媒体内の上書き用データを前記インタフェース部を介して前記ホスト機器に転送する転送部
を備えることを特徴とする請求項１または２に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリを備え、ＳＳＤ（Solid State Drive）として用いて好適な記憶装置に関する。
【背景技術】
【０００２】
近年、ＳＳＤは、ＨＤＤ（Hard Disc Drive）と比較してアクセス速度が高速である、低消費電力であるとの利点があるため、ＰＣ（Personal Computer）における内部記憶装置としてＨＤＤを置換する用途で採用されている。また、ＨＤＤはＰＣに限らず、組み込み型の機器の記憶装置としても用いられており、この組み込み型機器においてもＳＳＤが採用される例が増えている。
【０００３】
このような組み込み型機器の一例として、マルチファンクションプリンタ（以下、適宜「ＭＦＰ」と称することがある）が知られている。このマルチファンクションプリンタは、プリンタ、ファクシミリ、スキャナ、複写機等の機能を１台の装置にまとめたものである。ＭＦＰにおいては、ユーザが複写等を希望する原稿が原稿台に置かれ、この原稿台にある原稿がスキャナによりスキャンされ、スキャンされたデータは、その後の処理・加工のためにＨＤＤ等の記憶装置内に一時的に格納され、さらに、スキャンされたデータに基づいて印刷、ファクシミリ送信等のジョブが実行される。
【０００４】
このようなＭＦＰでは、印刷等のジョブが終了して使用済みになったスキャンデータは、セキュリティ確保のためにＨＤＤから消去する必要がある。ＨＤＤを記憶装置として用いた従来のＭＦＰにおいては、このスキャンデータは、例えば全て「０」のデータ、全て「１」のデータ、あるいは乱数を含む所定パターンを有するデータなどの上書き用データが上書きされることにより消去される。
【０００５】
ＭＦＰに搭載されたＨＤＤをＳＳＤに換装した場合、ＭＦＰ本体側は、上述のようにスキャンデータに対して上書き用データを上書き指示することでスキャンデータの消去指示を行う。しかしながら、ＳＳＤはその記憶媒体としてＮＡＮＤ型フラッシュメモリが用いられることが多く、このＮＡＮＤ型フラッシュメモリは、直接的な上書き動作が行えないために、スキャンデータが格納されたブロックに対して消去動作を行った後、このブロックに対して上書き用データを書き込む、という手間のかかる動作が必要になる。しかも、ＮＡＮＤ型フラッシュメモリは、書き換え回数に一定の制限があるため、上述した動作を繰り返し行うことでＮＡＮＤ型フラッシュメモリの寿命を短縮してしまう可能性もあった。
【０００６】
かかる課題に鑑みて、ＭＦＰ本体側からＳＳＤに対して消去コマンドを発行し、この消去コマンドに基づいてスキャンデータが格納されたブロックに対して消去動作を行うＭＦＰが提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４３４０３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来のＭＦＰにおいては、ＭＦＰ本体がＳＳＤの特定ブロックに対する独自の消去コマンドを用意し、ＳＳＤはこの消去コマンドがＭＦＰ本体から送出されたことを受けて、対応するブロックの消去動作を行っていた。一般的に、ＨＤＤにおいては特定領域を一括して消去する動作はできないので、データ消去のためには、上述した上書き用データを特定領域に上書きすることでデータ消去動作を行っている。従って、ＨＤＤとＭＦＰ本体等のホスト機器とを接続する汎用性のあるインタフェース、例えばＡＴＡ（AT Attachment）やＳＣＳＩ（Small Computer System Interface）においては、消去コマンドは用意されておらず、通常のデータ書き込みコマンドを用いて上書き消去することになる。このため、上述した従来のＭＦＰにおいては、ＳＳＤ消去動作のためにＭＦＰ特有の（ベンダー依存の）消去コマンドを用意する必要があり、従って、ＭＦＰ本体に特別の仕様変更が必要となる。
【０００９】
本発明は、上述した課題に鑑みてなされたもので、ホスト機器に特別な仕様変更を施すことなく、汎用ＨＤＤを換装することの可能な記憶装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、ＮＡＮＤ型フラッシュメモリと、このＮＡＮＤ型フラッシュメモリに対するデータの書き込み／読み出しを制御する制御部とを備え、ホスト機器にインタフェースを介して接続された記憶装置に適用される。そして、本発明は、制御部に、ホスト機器から、インタフェースを介してホスト機器に接続されるインタフェース部と、ＮＡＮＤ型フラッシュメモリ内の特定領域に対して上書き用データを上書きすることにより、この特定領域内に記憶された既存データの消去が、インタフェースが定める上書き命令によりホスト機器から指示されたか否かを判断する判断部と、判断部が、特定領域内に記憶されていた既存データの消去指示がされたと判断したら、この特定領域を含む物理ブロックに対してブロック消去を指示し、特定領域を含む物理ブロックのＮＡＮＤ型フラッシュメモリの電荷を除去することで既存データを消去する消去部とを設けることにより、上述の目的を達成している。
【００１１】
ホスト機器から上書き用データとともに上書き命令により特定領域内の既存データの消去指示がされると、判断部はかかる上書き命令を既存データ消去指示であると判断し、この判断部の判断に基づき、消去部は特定領域を含む物理ブロックのＮＡＮＤ型フラッシュメモリの電荷を除去することで既存データを消去する。消去部による消去動作のみでＮＡＮＤ型フラッシュメモリ内の特定領域に記憶されていた既存データは消去される。
【００１２】
ここで、ＮＡＮＤ型フラッシュメモリは複数のパーティションに分割され、各々のパーティションは物理ブロックの先頭から開始されることが好ましい。
【００１３】
また、記憶装置は記憶媒体を備えることが好ましく、さらに、この記憶媒体には、好ましくは、特定領域内に記憶されていた既存データの消去指示がされる際にホスト機器から送信される上書き用データが保持される。そして、制御部は、ホスト機器から特定領域内のデータ読み出しが指示されたら、記憶媒体内の上書き用データをインタフェース部を介してホスト機器に転送する転送部を備えることが好ましい。
【発明の効果】
【００１４】
本発明の記憶装置は、ＮＡＮＤ型フラッシュメモリ内の特定領域に対して上書き用データを上書きすることにより、この特定領域内に記憶されていた既存データの消去が、インタフェースが定める上書き命令によりホスト機器から指示されたか否かを判断する判断部と、判断部が、特定領域内に記憶されていた既存データの消去指示がされたと判断したら、この特定領域を含む物理ブロックに対してブロック消去を指示し、特定領域を含む物理ブロックのＮＡＮＤ型フラッシュメモリの電荷を除去することで既存データを消去する消去部とを備えたので、この消去部による消去動作のみでＮＡＮＤ型フラッシュメモリ内の特定領域に記憶されていた既存データは消去される。従って、本発明によれば、インタフェースが定める上書き命令により既存データを確実に消去することができるので、ホスト機器に特別な仕様変更を施すことなく、汎用ＨＤＤを換装することの可能な記憶装置を提供することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態であるＳＳＤ装置の概略構成を示すブロック図である。
【図２】第１の実施形態のＳＳＤ装置の機能を示す機能ブロック図である。
【図３】第１の実施形態のＳＳＤ装置の論理領域、論理アドレス及び物理ブロックの関係を示す図である。
【図４】第１の実施形態のＳＳＤ装置の動作を説明するための図である。
【図５】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰの初期動作の一例を説明するためのシーケンス図である。
【図６】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのデータ書き込み動作の一例を説明するためのシーケンス図である。
【図７】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのデータ消去動作の一例を説明するためのシーケンス図である。
【図８】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのデータ書き込み動作の他の例を説明するためのシーケンス図である。
【図９】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのデータ読み出し動作の一例を説明するためのシーケンス図である。
【図１０】第１の実施形態におけるパターン判定の動作の詳細を説明するためのフローチャートである。
【図１１】第１の実施形態におけるパーティション領域確保の概要を説明するための図である。
【図１２】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのパーティション更新動作の一例を説明するためのシーケンス図である。
【図１３】第１の実施形態のＳＳＤ装置及びこのＳＳＤ装置が搭載されたＭＦＰのデータ書き込み動作のまた他の例を説明するためのシーケンス図である。
【図１４】本発明の第２の実施形態であるＳＳＤ装置におけるパターン判定の動作の詳細を説明するためのフローチャートである。
【図１５】本発明の第３の実施形態であるＳＳＤ装置におけるパターン判定の動作の詳細を説明するためのフローチャートである。
【図１６】本発明の第４の実施形態であるＳＳＤ装置におけるパターン判定の動作の詳細を説明するためのフローチャートである。
【図１７】本発明の第５の実施形態であるＳＳＤ装置におけるパターン判定の動作の詳細を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
（第１の実施形態）
以下、図面を参照して、本発明の実施形態について説明する。
【００１７】
図１は、本発明の記憶装置をＳＳＤ装置に適用した第１の実施形態の概略構成を示すブロック図、図２は、第１の実施形態のＳＳＤ装置の機能を示す機能ブロック図である。
【００１８】
（ＳＳＤ装置の概略構成）
これら図において、１０は第１の実施形態であるＳＳＤ装置であり、このＳＳＤ装置１０は、コントローラ１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３及びフラッシュメモリ１４を備えている。本実施形態のＳＳＤ装置１０は、例えば本実施形態ではＭＦＰであるホスト機器２０に接続され、ホスト機器２０からの書き込み指令に応じて所定のデータを格納し、また、読み出し指令に応じて格納された所定のデータを送出するものである。
【００１９】
コントローラ１１はＳＳＤ装置１０全体の制御を行うもので、ＣＰＵ（Central Processing Unit）１５、ホストインタフェース（Ｉ／Ｆ）１６、フラッシュインタフェース（Ｉ／Ｆ）１７、ＲＡＭインタフェース（Ｉ／Ｆ）１８及びＲＯＭインタフェース（Ｉ／Ｆ）１９を備える。
【００２０】
ＣＰＵ１５は、ＲＯＭ１３内に格納されているファームウェアが電源投入時にＲＡＭ１２に展開され、このファームウェアが実行されることでコントローラ１１、ひいてはＳＳＤ装置１０の制御を行うとともに、図２に示す各機能部に示す機能を備える。図２に示す各機能部については後述する。ホストＩ／Ｆ１６は、所定の外部インタフェースを介してホスト機器２０に接続され、ＣＰＵ１５の制御下において、このホスト機器２０との間で、外部インタフェースが定めるプロトコル、コマンドに準拠してデータの送受信を行う。本実施形態では、ホストＩ／Ｆ１６とホスト機器２０とは、ＨＤＤなどで多用される汎用性を有するインタフェース、例えばＡＴＡ、ＳＣＳＩにより接続されている。フラッシュＩ／Ｆ１７はフラッシュメモリ１４に接続され、ＣＰＵ１５の制御下において、このフラッシュメモリ１４に対してデータの書き込み／読み出し動作を行う。ＲＡＭ  Ｉ／Ｆ１８はＲＡＭ１２に接続され、ＣＰＵ１５の制御下において、このＲＡＭ１２に対してデータの書き込み／読み出し動作を行う。ＲＯＭ  Ｉ／Ｆ１９はＲＯＭ１３に接続され、ＣＰＵ１５の制御下において、このＲＯＭ１３に対してデータの読み出し動作を行う。
【００２１】
ＲＡＭ１２はコントローラ１１のワークメモリとして用いられ、各種データが一時的に格納される。また、このＲＡＭ１２には、ホスト機器２０から送出される、フラッシュメモリ１４の特定領域にあるスキャンデータ消去のための上書き用データ１２ａが格納されているとともに、フラッシュメモリ１４の論理アドレスと物理ブロックとの対応関係が記述された論理アドレス−物理ブロック変換テーブル１２ｂが格納されている。ホスト機器２０がどのような上書き用データを用いて上書き消去を指令するかはホスト機器２０により一意に定まるので、ＳＳＤ装置１０の立ち上げ時において、ホスト機器２０から送出される上書き用データと同一パターンの上書き用データ１２ａがＣＰＵ１５により生成され、ＲＡＭ１２内に格納される。また、変換テーブル１２ｂの詳細については後述する。ＲＯＭ１３には、上述のようにＳＳＤ装置１０の制御を行うファームウェアが格納されている。
【００２２】
（フラッシュメモリの論理領域等）
フラッシュメモリ１４は、本実施例ではＮＡＮＤ型フラッシュメモリである。このフラッシュメモリ１４は、図３に示すような論理領域、論理アドレス及び物理ブロックを有する。以下、図３を参照して、フラッシュメモリ１４の論理領域、論理アドレス及び物理ブロックについて説明する。
【００２３】
図３に示すように、本実施形態のフラッシュメモリ１４の論理領域は、ＭＢＲ（マスターブートレコード：Master Boot Record）３０及びパーティションＡ３１〜Ｃ３３に分割されている。本実施形態では、パーティションＡ３１にはホスト機器２０全体の制御を行うオペレーティングシステム（ＯＳ）３１０が、パーティションＢ３２にはホスト機器２０の各種動作を実行するためのアプリケーションプログラム３２０が、パーティションＣには、ホスト機器２０の各種動作時に一時的に使用されるデータが格納される。パーティションＣに格納されるデータには、ホスト機器２０によりスキャンされたスキャンデータ（既存データ）３３０が含まれる。また、本実施形態では、ＭＢＲ３０及びパーティションＡ３１、Ｂ３２は、ホスト機器２０から消去指令があっても消去動作が拒否される非Ｅｒａｓｅ領域とされ、パーティションＣ３３は、ホスト機器からの消去指令により消去可能なＥｒａｓｅ領域とされている。なお、本明細書において、「パーティション」とは、ホスト機器２０のＯＳ３１０が管理してＭＢＲ３０に記載する論理アドレスの区切りだけでなく、ＯＳ３１０が管理しない、ホスト機器２０のアプリケーションプログラム３２０が書き込み先論理アドレスをデータの種類によって区別する、書き込みエリアの区切りをも含む。
【００２４】
ＭＢＲ３０には、パーティションテーブル３０ａ及びブートローダ３０ｂが格納されている。パーティションテーブル３０ａには、フラッシュメモリ１４のパーティションに関する情報が格納されており、具体的には、パーティションの位置情報（開始セクタアドレス、終了セクタアドレス）、種類、サイズがパーティション毎に格納されている。
【００２５】
ブートローダ３０ｂは、ＳＳＤ装置１０起動時に最初に読み込まれるコードである。具体的には、ホスト機器２０に電源が投入されると、ホスト機器２０に備えられる不図示のブートストラップが起動され、このブートストラップがフラッシュメモリ１４内のＭＢＲ（パーティションテーブル３０ａ及びブートローダ３０ｂ）をホスト機器２０側に読み出す。そして、ブートローダ３０ｂは、パーティションテーブル３０ａに記載された情報に基づき、パーティションＡ３１に格納されたオペレーティングシステム３１０を読み出し、ホスト機器２０に送出する。ホスト機器２０は、不図示のメモリ内にこのオペレーティングシステム３１０を展開し、以降、このオペレーティングシステム３１０によりホスト機器２０全体の制御が行われる。ここに、パーティションとは、フラッシュメモリ１４が有する論理アドレスを複数の領域に分割した際の一つの領域であり、ホスト機器２０からは各パーティションが１つの論理ドライブとして認識される。このようなパーティションは、ＨＤＤにおけるパーティションと同様の概念である。
【００２６】
また、本実施形態では、フラッシュメモリ１４内の空間は論理アドレス（LBA：Logical
Block Addressing）及び物理ブロックにより把握され、ホスト機器２０はこの論理アドレスを直接指定することで特定領域に対するデータのアクセスを行うことが可能とされている。コントローラ１１は、ホスト機器２０から論理アドレスが直接指定されると、ＲＡＭ１３内に格納された論理アドレス−物理ブロック変換テーブル１２ｂを参照して、実際にアクセスすべき物理ブロックを特定し、この物理ブロックに対するアクセスを行う。
【００２７】
なお、本実施形態では、ＭＢＲ３０及びパーティションＡ３１、Ｂ３２については、論理アドレスと物理ブロックとは略同一の領域が確保されている一方、パーティションＣ３３については、論理アドレスの領域よりも物理ブロックの領域が小さくなるように、パーティションＡ３１〜Ｃ３３が設定されている。
【００２８】
また、図３には図示しないが、本実施形態のフラッシュメモリ１４では、１つの物理ブロックは複数のページを有しており、データの書き込み動作はページ単位で、データの消去動作はブロック単位で行われる。また、各ページは複数のセクタからなる。
【００２９】
（ＳＳＤ装置の機能構成）
次に、図２は、本実施形態のＳＳＤ装置１０の機能を示すブロック図である。本実施形態のＳＳＤ装置１０は、制御部４０と、フラッシュメモリ１４と、記憶媒体４１とを備える。
【００３０】
制御部４０は、フラッシュメモリ１４に対するデータの読み出し／書き込みを制御するものであり、インタフェース部４２、判断部４３、消去部４４及び転送部４５を備える。インタフェース部４２は、ホスト機器２０と汎用性を有するインタフェース、例えばＡＴＡやＳＣＳＩを介して接続され、ホスト機器２０との間で、外部インタフェースが定めるプロトコル、コマンドに準拠してデータの送受信を行う。判断部４３は、インタフェース部４２が受信したコマンドに応じて、このコマンドが上書き命令であった場合、フラッシュメモリ１４内の特定領域内に記憶されていた既存データの消去がホスト機器２０から指示されたか否かを判断する。消去部４４は、判断部４３により、フラッシュメモリ１４内の特定領域内に記憶されていた既存データの消去がホスト機器２０から指示されたと判断されたときに、この特定領域を含む物理ブロックに対してブロック消去を指示し、特定領域を含む物理ブロックのフラッシュメモリ１４の電荷を除去することでデータを消去する。
【００３１】
また、記憶媒体４１には、ホスト機器２０から送信される上書き用データと同一パターンの上書き用データ１２ａ（図１参照）が保持されている。転送部４５は、フラッシュメモリ１４の特定領域内のデータ読み出しがホスト機器２０から指示されたら、記憶媒体４１内の上書き用データ１２ａをインタフェース部４２を介してホスト機器２０に転送する。
【００３２】
以上の説明において、制御部４０はコントローラ１１、特にＣＰＵ１５の動作により実現され、記憶媒体４１はＲＡＭ１２により実現され、インタフェース部４２はホストＩ／Ｆ１６及びＣＰＵ１５により実現され、判断部４３はＣＰＵ１５により実現され、消去部４４はフラッシュＩ／Ｆ１７及びＣＰＵ１５により実現され、転送部４５はホストＩ／Ｆ１６及びＣＰＵ１５により実現される。
【００３３】
（ＳＳＤ装置の動作の概要）
次に、図４を参照して、本実施形態のＳＳＤ装置１０の動作の概要について説明する。本実施形態のＳＳＤ装置１０では、まず、ホスト機器２０から、スキャンデータをフラッシュメモリ１４内の特定の論理アドレスで指定される特定領域５１に書き込む指示がされる。汎用性のあるインタフェースでは、この書き込み指示は、データ書き込み用に用意されているＷｒｉｔｅコマンド（Ｐｒｏｇｒａｍコマンド）が発行されることにより行われる。
【００３４】
次に、ホスト機器２０においてスキャンデータを利用したジョブが終了したことをトリガとして、このホスト機器２０が、フラッシュメモリ１４内の特定領域５１に存在するスキャンデータを消去する指示がされる。上述のように、汎用性のあるインタフェースにおいては、データを直接消去するコマンドは用意されていないので、ホスト機器２０は、この特定領域５１に対して、スキャンデータ消去用の上書き用データを上書きする（汎用性のあるインタフェースでは削除（消去）という特別なコマンドがないことが多いので、単純にデータを書き込む）コマンドであるＷｒｉｔｅコマンドによりスキャンデータ消去指示を行う。
【００３５】
ＳＳＤ装置１０は、スキャンデータ消去用の上書き用データによる書き込み指示がホスト機器２０からされたことを検出すると、かかる書き込み指示はスキャンデータの消去指示であると判断、解釈し、フラッシュメモリ１４の特定領域５１を含む物理ブロックに対して消去動作を行う。これとともに、ＳＳＤ装置１０は、変換テーブル１２ｂを更新し、消去動作が行われた特定領域５１の論理アドレスと物理ブロックとの対応を、論理アドレスとＲＡＭ１２内の上書き用データ１２ａが格納されたアドレスとに変更する。ここに、スキャンデータの消去指示であるか否かの判断は、Ｗｒｉｔｅコマンドの到来及び書き込み指示がされたデータが上書き用データ、例えば全て「０」のデータ、全て「１」のデータ、あるいは乱数を含む所定パターンを有するデータであるか否かの判断により行う。かかる判断の詳細については後述する。また、ＮＡＮＤ型フラッシュメモリ１４における消去動作は、特定の物理ブロックを構成する複数のセルに対して電荷層から電荷を除去することにより行われる。
【００３６】
さらに、ホスト機器２０が、上述したスキャンデータ消去指示の後、フラッシュメモリ１４の特定領域５１に格納されたスキャンデータが確実に消去されたか否かを確認する目的で、この特定領域５１にその時点で格納されているデータの読み出し指示をＲｅａｄコマンドにより行うことがある。ＳＳＤ装置１０は、かかるデータ読み出し指示がホスト機器２０からされたことを検出すると、変換テーブル１２ｂを参照して上書き用データ１２ａをＲＡＭ１２から読み出し、この上書き用データ１２ａをホスト機器２０に送出する。ホスト機器２０は、特定領域５１の特定を論理アドレスにより行うので、上述のように消去動作によって変換テーブル１２ｂが更新されていることにより、この論理アドレスに対応するのは上書き用データ１２ａが格納されているＲＡＭ１２のアドレスである。従って、ＳＳＤ装置１０は、変換テーブル１２ｂを参照すれば、ＲＡＭ１２の上書き用データ１２ａにアクセスし、この上書き用データ１２ａを読み出してホスト機器２０に送出することができる。
【００３７】
（ＳＳＤ装置の動作）
次に、図５〜図９のシーケンス図及び図１０のフローチャートを参照して、図４に概要を示した本実施形態のＳＳＤ装置１０の動作について説明する。なお、図５〜図１０の説明において、ＳＳＤ装置１０とホスト機器２０とは、汎用性のあるインタフェースのうちＡＴＡインタフェースにより相互接続されているものとする。
【００３８】
図５は、ＳＳＤ装置１０を含むホスト機器２０立ち上げ時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ１において、ホスト機器２０は、ＡＴＡデバイスであるＳＳＤ装置１０のモデル名や対応転送モードといったＡＴＡデバイス固有の情報を取得するために、これら情報をＳＳＤ装置１０に要求するコマンドを送信する（Identify Deviceコマンド）。ＳＳＤ装置１０の制御部４０は、ステップＳ１においてインタフェース部４２がIdentify Deviceコマンドを受信すると、ステップＳ２においてインタフェース部４２を介して自身の情報をホスト機器２０に返送する。次いで、ホスト機器２０は、ステップＳ３において、上述したＭＢＲの送出をＳＳＤ装置１０に要求する。ＳＳＤ装置１０の制御部４０は、インタフェース部４２がかかる要求を受信すると、ステップＳ４において、フラッシュメモリ１４に格納されているＭＢＲ３０（図３参照）の読み出しをこのフラッシュメモリ１４に要求する。ステップＳ５では、制御部４０はフラッシュメモリ１４からＭＢＲ３０のデータを受信する。ステップＳ６では、制御部４０がフラッシュメモリ１４から受信したＭＢＲ３０を解析し、Ｅｒａｓｅ領域（図３に示すように、本実施形態ではパーティションＣ３３）のＬＢＡを取得し、Ｅｒａｓｅ領域の開始論理アドレス及び終了論理アドレスを抽出する。ステップＳ７では、制御部４０がＥｒａｓｅ領域（パーティションＣ３３）の開始論理アドレス及び終了論理アドレスをＲＡＭ１２内に書き込む。そして、ステップＳ８では、制御部４０がインタフェース部４２を介してステップＳ５で取得したＭＢＲのデータをホスト機器２０に送出する。
【００３９】
次に、図６は、フラッシュメモリ１４の非Ｅｒａｓｅ領域へのデータ書き込み時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ１０において、ホスト機器２０からＳＳＤ装置１０に対して、データを書き込むべき論理アドレスを指定して書き込み指令がされる。ＳＳＤ装置１０の制御部４０は、インタフェース部４２がかかる指令を受信すると、ステップＳ１１において、図５のステップＳ６でＲＡＭ１２内に書き込んだＥｒａｓｅ領域の開始論理アドレス等を参照して、データを書き込むべき論理アドレスがＥｒａｓｅ領域に存在するか否かを判断する。図６に示す例では、データを書き込むべき論理アドレスは非Ｅｒａｓｅ領域（図３に示すように、本実施形態ではパーティションＡ３１、Ｂ３２のいずれか）にあるので、ステップＳ１１ではＥｒａｓｅ領域でないとの判断になる。次いで、ステップＳ１２では、制御部４０はインタフェース部４２を介してホスト機器２０に対して書き込み動作の準備が完了した旨の通知をする。ステップＳ１３では、ホスト機器２０は、書き込むべきデータをＳＳＤ装置１０に送出するので、ステップＳ１４では、インタフェース部４２がこの書き込むべきデータを受信し、制御部４０はホスト機器２０から送出されたデータをフラッシュメモリ１４に対して書き込む。上述したように、このデータが書き込まれる領域は非Ｅｒａｓｅ領域（パーティションＡ３１、Ｂ３２のいずれか）である。ステップＳ１５では、フラッシュメモリ１４からデータ書き込み完了通知が制御部４０にされ、これを受けて、ステップＳ１６では、制御部４０がインタフェース部４２を介してホスト機器２０にデータ書き込み完了通知を送出する。
【００４０】
次に、図７は、フラッシュメモリ１４のＥｒａｓｅ領域の特定領域５１に格納されたスキャンデータ３３０（図３参照）の上書き消去動作時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ２０において、ホスト機器２０からＳＳＤ装置１０に対して、データを書き込むべき論理アドレス、この場合はスキャンデータ３３０が存在する特定領域５１のアドレスを指定して上書き指令がされる。ＳＳＤ装置１０の制御部４０は、ステップＳ２１において、インタフェース部４２がかかる上書き指令を受信し、次いで、制御部４０は、図５のステップＳ６でＲＡＭ１２内に書き込んだＥｒａｓｅ領域の開始論理アドレス等を参照して、データを上書きすべき論理アドレスがＥｒａｓｅ領域に存在するか否かを判断する。図７に示す例では、データを書き込むべき論理アドレスはＥｒａｓｅ領域（図３に示すように、本実施形態ではパーティションＣ３３）にあるので、ステップＳ２１ではＥｒａｓｅ領域であるとの判断になる。次いで、ステップＳ２２では、制御部４０はインタフェース部４２を介してホスト機器２０に対して書き込み動作の準備が完了した旨の通知をする。ステップＳ２３では、ホスト機器２０は、上書き用データをＳＳＤ装置１０に送出する。ステップＳ２４では、制御部４０の判断部４３は、ホスト機器２０から送出されてインタフェース部４２が受信したデータが上書き用データであるかどうかを判断する。この、上書き用データであるかどうかの判断の詳細なルーチンについては後述する。図７に示す例では、ホスト機器２０から送出された書き込み用データはスキャンデータ３３０消去のための上書き用データであるので、ステップＳ２４では上書き用データであるとの判断になる。次いで、ステップＳ２５では、制御部４０の消去部４４は特定領域５１を含む物理ブロックに対して消去指示し、さらに、ステップＳ２６において、制御部４０は、ホスト機器２０から送出された上書き用データ１２ａ（図１参照）をＲＡＭ１２に格納し、ステップＳ２７において、制御部４０はＲＡＭ１２内の変換テーブル１２ｂ（図１参照）を更新し、消去指示を行った特定領域５１の論理アドレスに対応する宛先を、消去動作を行った物理ブロックから上書き用データ１２ａが格納されたＲＡＭ１２のアドレスに変更する。ステップＳ２８では、フラッシュメモリ１４から消去動作完了通知が制御部４０にされ、これを受けて、ステップＳ２９では、制御部４０がインタフェース部４２を介してホスト機器２０にデータ書き込み完了通知を送出する。
【００４１】
次に、図８は、フラッシュメモリ１４のＥｒａｓｅ領域へのデータ書き込み時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ３０において、ホスト機器２０からＳＳＤ装置１０に対して、データを書き込むべき論理アドレス、この場合はスキャンデータ３３０が存在する特定領域５１のアドレスを指定して書き込み指令がされる。ＳＳＤ装置１０の制御部４０は、ステップＳ３１において、インタフェース部４２がかかる書き込み指令を受信し、次いで、制御部４０は、図５のステップＳ６でＲＡＭ１２内に書き込んだＥｒａｓｅ領域の開始論理アドレス等を参照して、データを書き込むべき論理アドレスがＥｒａｓｅ領域に存在するか否かを判断する。図８に示す例では、データを書き込むべき論理アドレスはＥｒａｓｅ領域（パーティションＣ３３）にあるので、ステップＳ３１ではＥｒａｓｅ領域であるとの判断になる。次いで、ステップＳ３２では、制御部４０はインタフェース部４２を介してホスト機器２０に対して書き込み動作の準備が完了した旨の通知をする。ステップＳ３３では、ホスト機器２０は、書き込み用データをＳＳＤ装置１０に送出する。ステップＳ３４では、制御部４０の判断部４３は、ホスト機器２０から送出されてインタフェース部４２が受信したデータが上書き用データであるかどうかを判断する。図８に示す例では、ホスト機器２０から送出された書き込み用データは書き込み用データであるので、ステップＳ３４では上書き用データでないとの判断になる。ステップＳ３５では、制御部４０はホスト機器２０から送出されたデータをフラッシュメモリ１４のＥｒａｓｅ領域（パーティションＣ３３）に対して書き込む。ステップＳ３６では、フラッシュメモリ１４からデータ書き込み完了通知が制御部４０にされ、これを受けて、ステップＳ３７では、制御部４０がインタフェース部４２を介してホスト機器２０にデータ書き込み完了通知を送出する。
【００４２】
次に、図９は、フラッシュメモリ１４のＥｒａｓｅ領域の特定領域５１に格納されたスキャンデータ３３０（図３参照）の上書き消去動作後に、正しくスキャンデータ３３０が上書き消去されたかどうかの確認のために、ホスト機器２０がこの特定領域５１に現在格納されているデータを読み出す時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ４０において、ホスト機器２０からＳＳＤ装置１０に対して、スキャンデータ３３０が存在した特定領域５１の論理アドレスを指定してデータ読み出し指令がされる。ＳＳＤ装置１０の制御部４０は、ステップＳ４１において、インタフェース部４２がかかる読み出し指令を受信し、次いで、制御部４０は、ＲＡＭ１２内の変換テーブル１２ｂを参照して、ホスト機器２０から指定された論理アドレスに対応する、実際に読み出しを行うべき領域を特定する。図９に示す例では、ホスト機器２０はスキャンデータ３３０が存在した特定領域５１の論理アドレスを指定しており、この論理アドレスに対応するのは、上述のようにＲＡＭ１２に格納された上書き用データ１２ａのアドレスである。従って、ステップＳ４２では、制御部４０の転送部４５は、図７のステップＳ２６でＲＡＭ１２内に格納した上書き用データ１２ａをＲＡＭ１２から読み出し、ステップＳ４３では、この上書き用データ１２ａがＲＡＭ１２から制御部４０に送出される。ステップＳ４４では、制御部４０はインタフェース部４２を介してこの上書き用データ１２ａをホスト機器２０に送出する。
【００４３】
次に、図１０は、図７のステップＳ２４等で行われる、判断部４３により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。図１０の説明において、ホスト機器２０から送出される上書き用データは、全て「０」のデータであるものとする。まず、ステップＳ１００において、ホスト機器２０から転送（送出）されてきたデータのバイト数が取得される。次いで、ステップＳ１０１において、変数Ｃが初期化され、その値が０にされる。ステップＳ１０２において、この変数Ｃが転送バイト数より小さいか否かが判断され、変数Ｃが転送バイト数より小さい（ステップＳ１０２においてＹＥＳ）ときはステップＳ１０３に進み、変数Ｃが転送バイト数以上である（ステップＳ１０２においてＮＯ）ときはステップＳ１０５に進む。ステップＳ１０３では、転送されてきたデータが「０」（図１０では１６進数表示の「０ｘ００」）であるか否かが判定され、転送されてきたデータが「０」である（ステップＳ１０３においてＹＥＳ）場合はステップＳ１０４に進み、転送されてきたデータが「０」でない場合はステップＳ１０５に進む。ステップＳ１０４では変数Ｃが１つインクリメントされ、次の転送データが読み込まれる。ステップＳ１０５では、変数Ｃが転送バイト数に等しいか否かが判断され、変数Ｃが転送バイト数に等しい（ステップＳ１０５においてＹＥＳ）場合はステップＳ１０６に進み、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ１４に対して消去動作が指示される。一方、変数Ｃが転送バイト数に等しくない（ステップＳ１０５においてＮＯ）場合はステップＳ１０７に進み、通常のデータ書き込みであると判断し、フラッシュメモリ１４に対してデータ書き込みが指示される。このように、図１０のルーチンでは、個々のデータについて「０」であるかどうかの判断を行い、全てのデータが「０」であるときに、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断している。
【００４４】
（第１の実施形態の効果）
以上詳細に説明したように、本実施形態のＳＳＤ装置１０は、フラッシュメモリ１４の特定領域５１に存在するスキャンデータ３３０消去のための上書き用データ１２ａがホスト機器２０から送出されてきたことを判断し、この上書き用データ１２ａの代わりに特定領域５１を含む物理ブロック５１に対して消去指示を行うことで、このスキャンデータ３３０を消去している。従って、フラッシュメモリ１４が１回の動作を行うだけでスキャンデータ３３０を確実に消去することができる。
【００４５】
加えて、本実施形態のＳＳＤ装置１０では、ホスト機器２０はＡＴＡインタフェース等の汎用性のあるインタフェースに準拠した上書き指示コマンド（Ｗｒｉｔｅコマンド等）及び上書き用データ１２ａをＳＳＤ装置１０に送出すれば、ＳＳＤ装置１０が上書き消去指示であるか否かを判断して、上書き消去指示であると判断した場合はフラッシュメモリ１４に対して消去動作を指示するので、上述した従来のＭＦＰのようにベンダー準拠の特殊コマンドを用意する必要がない。これにより、ホスト機器２０に特別な仕様変更を施すことなく、汎用ＨＤＤを換装することの可能なＳＳＤ装置１０を提供することが可能となる。
【００４６】
さらに、本実施形態のＳＳＤ装置１０では、ホスト機器２０から送出されてきた上書き用データ１２ａをＲＡＭ内に格納し、ホスト機器２０からの読み出し指示に応じてこの上書き用データ１２ａを送出しているので、ＳＳＤ装置１０がフラッシュメモリ１４の特定領域５１に対して消去動作を行っても、ホスト機器２０によるデータ消去確認動作に十分対応することが可能となる。
【００４７】
また、図３に示すように、本実施形態のＳＳＤ装置１０では、非Ｅｒａｓｅ領域であるパーティションＡ３１、Ｂ３２については論理アドレスと物理ブロックとで略同一の領域が確保されている一方、Ｅｒａｓｅ領域であるパーティションＣ３３については論理アドレスよりも物理ブロックの領域のほうが小さいように各パーティションＡ３１〜Ｃ３３が設定されている。従って、ホスト機器２０から把握するＳＳＤ装置１０の容量は確保されている論理アドレスに対応する容量である一方、実際のＳＳＤ装置１０の容量は、物理ブロックに対応する容量であり、その分、ＳＳＤ装置１０の容量を削減することが可能となる。
【００４８】
そして、このように、論理アドレスに対応する容量よりも実際のＳＳＤ装置１０の容量が小さくても、上述のように上書き用データ１２ａをＲＡＭ１２内に保管してあるので、ホスト機器２０からデータ消去確認のためのデータ読み出し指令が来てもこの上書き用データ１２ａをホスト機器２０に送出すれば良く、スキャンデータ３３０が格納された領域を消去動作直後に解放することができ、新たなスキャンデータ３３０を直ちに書き込むことができる。このような動作により、Ｅｒａｓｅ領域であるパーティションＣ３３を有効活用することができ、パーティションＣ３３について論理アドレスよりも物理ブロックの領域を小さくしても円滑動作が可能となる。
【００４９】
（第１の実施形態におけるパーティション更新動作の概要）
本実施形態のＳＳＤ装置１０では、パーティション更新動作にも特徴がある。以下、図１１〜図１３を参照して本実施形態のＳＳＤ装置１０におけるパーティション更新動作について説明する。
【００５０】
図１１は、本実施形態のＳＳＤ装置１０におけるパーティション更新動作の概要を説明する図である。通常、パーティション更新動作において、各パーティションは論理アドレスにより確保され、実際のデータ読み込み／書き出し動作は、上述した変換テーブル１２ｂにより特定される物理ブロックに対して行われる。ここで、各パーティションの領域は、例えばセクタ単位で設定することが可能である。従って、物理ブロック単位で見ると、図１１に示すように物理ブロックの中にパーティションの境界が来る可能性がある。本実施形態のＳＳＤ装置１０では、図１１に示すように物理ブロックの中にパーティションの境界が来た場合、次のパーティションの開始位置を次の物理ブロックの先頭にしている。
【００５１】
仮に、図１１に示すように、非Ｅｒａｓｅ領域のパーティションとＥｒａｓｅ領域のパーティションとが隣り合い、しかも、物理ブロックの中にパーティションの境界が存在する場合を考える。本実施形態のようにフラッシュメモリ１４の物理ブロックに対して消去指示をすると、消去動作はブロック単位で行われるので、パーティション境界が存在する物理ブロックのうち、非Ｅｒａｓｅ領域に存在する部分にあるデータを（そこにデータが書き込まれているか否かにかかわらず）一時的に待避させ、この物理ブロックに消去指示をした後、待避したデータを再度書き込むという面倒な動作が必要になる。この動作は、フラッシュメモリ１４の書き換え回数を消費することにつながる。
【００５２】
一方、本実施形態のＳＳＤ装置１０によれば、パーティションの開始位置は必ず物理ブロックの先頭になっているので、上述したデータ退避作業を行うことなく物理ブロックに対して消去指示を行うことができ、フラッシュメモリ１４の書き換え回数を消費することを抑制することができる。
【００５３】
（第１の実施形態におけるパーティション更新動作）
図１２は、パーティション更新動作時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ１１０において、ホスト機器２０は、パーティション更新動作のために、フラッシュメモリ１４内に格納されたＭＢＲを更新する指示を行う。ＳＳＤ装置１０の制御部４０は、ステップＳ１１１においてＭＢＲ更新作業の準備が完了したことをホスト機器２０に通知し、ホスト機器２０は、ステップＳ１１１におけるＭＢＲ更新作業の準備が完了したことの通知を受け、ステップＳ１１２においてＭＢＲ更新用のデータを送信する。次いで、ステップＳ１１３では、制御部４０が、ステップＳ１１２においてホスト機器２０から送出されたＭＢＲを解析し、Ｅｒａｓｅ領域（パーティションＣ３３）のＬＢＡを取得し、Ｅｒａｓｅ領域の開始論理アドレス及び終了論理アドレスを抽出するとともに、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスを把握する。ステップＳ１１４では、制御部４０がフラッシュメモリ１４のＭＢＲを更新する。ステップＳ１１５では、フラッシュメモリ１４からＭＢＲへの更新データ書き込み完了通知が制御部４０にされ、これを受けて、ステップＳ１１６では、制御部４０がＭＢＲ書き込み完了通知をホスト機器２０に送出する。
【００５４】
次に、図１３は、図１１に示すパーティションの境界と次のパーティションの開始位置との間の論理アドレスに対してデータの書き込み／読み出し指示がされた時における、ＳＳＤ装置１０とホスト機器２０との間のデータ送受信及びＳＳＤ装置１０の動作を説明するためのシーケンス図である。まず、ステップＳ１２０において、ホスト機器２０からＳＳＤ装置１０に対して、データを書き込むべき論理アドレスを指定して書き込み指令がされる。ステップＳ１２０においてホスト機器２０が指定した、データを書き込むべき論理アドレスは、非Ｅｒａｓｅ領域のパーティションの境界と次のＥｒａｓｅ領域のパーティションの開始位置との間の論理アドレスに対応する。ＳＳＤ装置１０の制御部４０は、ステップＳ１２１において、図１２のステップＳ１１３で行ったＭＢＲ解析で得られた結果に基づき、データを書き込むべき論理アドレスが非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるか否かを判断する。図１３に示す例では、データを書き込むべき領域は非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるので、ステップＳ１２１では、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるとの判断になる。次いで、ステップＳ１２２では、制御部４０は、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスの分だけ、論理アドレスをオフセットしたフラッシュメモリ１４の領域に、ホスト機器２０から送出されたデータを書き込む。ここにいうオフセットとは、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスの分だけ進んだ値（大きな値）を有する論理アドレスの位置にデータを書き込む、あるいは読み出すことを意味する。ステップＳ１２３では、フラッシュメモリ１４からデータ書き込み完了通知が制御部４０にされ、これを受けて、ステップＳ１２４では、制御部４０がホスト機器２０にデータ書き込み完了通知を送出する。
【００５５】
続いて、ステップＳ１２５において、ホスト機器２０からＳＳＤ装置１０に対して、データを読み出すべき論理アドレスを指定して読み出し指令がされる。ステップＳ１２５においてホスト機器２０が指定した、データを読み出すべき論理アドレスは、非Ｅｒａｓｅ領域のパーティションの境界と次のＥｒａｓｅ領域のパーティションの開始位置との間の論理アドレスに対応する。ＳＳＤ装置１０の制御部４０は、ステップＳ１２６において、データを読み出すべき論理アドレスが非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるか否かを判断する。図１３に示す例では、データを書き込むべき領域は非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるので、ステップＳ１２６では、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスであるとの判断になる。次いで、ステップＳ１２７では、制御部４０は、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスの分だけ、論理アドレスをオフセットしたフラッシュメモリ１４の領域にあるデータを読み出す。ステップＳ１２８では、フラッシュメモリ１４から読み出されたデータが制御部４０に送出され、これを受けて、ステップＳ１２９では、制御部４０が読み出されたデータをホスト機器２０に送出する。
【００５６】
以上説明したように、本実施形態のＳＳＤ装置１０では、パーティションの開始位置は必ず物理ブロックの先頭になっており、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する論理アドレスの分だけオフセットした位置にデータを書き込む、あるいは読み出しているので、非Ｅｒａｓｅ領域のパーティションの境界とＥｒａｓｅ領域のパーティションの開始位置との間に存在する領域に対してデータの書き込み／読み出し動作はされない。従って、この領域には何もデータが書き込まれていないことが保証されるので、上述したデータ退避作業を行うことなく物理ブロックに対して消去指示を行うことができ、フラッシュメモリ１４の書き換え回数を消費することを抑制することができる。
【００５７】
（第２の実施形態）
図１４は、本発明の第２の実施形態であるＳＳＤ装置において、判断部４３により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。本実施形態のＳＳＤ装置は、上書き用データであるかどうかのルーチン以外は上述した第１の実施形態のＳＳＤ装置と同一であり、従って、同一の構成要素については同一の符号を付し、その説明を簡略化する。また、以降の説明において、ホスト機器２０から送出される上書き用データは、全て「０」のデータであるものとする。
【００５８】
まず、ステップＳ２００において、ホスト機器２０から転送（送出）されてきたデータのバイト数が取得される。次いで、ステップＳ２０１において、変数Ｃ及びＳが初期化され、その値が０にされる。ステップＳ２０２において、この変数Ｃが転送バイト数より小さいか否かが判断され、変数Ｃが転送バイト数より小さい（ステップＳ２０２においてＹＥＳ）ときはステップＳ２０３に進み、変数Ｃが転送バイト数以上である（ステップＳ２０２においてＮＯ）ときはステップＳ２０５に進む。ステップＳ２０３では、変数Ｓに転送されてきたデータが加算される。ステップＳ２０４では変数Ｃが１つインクリメントされ、次の転送データが読み込まれる。ステップＳ２０５では、変数Ｓが「０」（図１４では１６進数表示の「０ｘ００００」）に等しいか否かが判断され、変数Ｓが「０」に等しい（ステップＳ２０５においてＹＥＳ）場合はステップＳ２０６に進み、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ１４に対して消去動作が指示される。一方、変数Ｓが「０」に等しくない（ステップＳ２０５においてＮＯ）場合はステップＳ２０７に進み、通常のデータ書き込みであると判断し、フラッシュメモリ１４に対してデータ書き込みが指示される。このように、図１４のルーチンでは、個々のデータの加算値Ｓを算出し、この加算値が「０」であるときに、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断している。
【００５９】
従って、本実施例のＳＳＤ装置１０によっても、上述の第１の実施形態と同様の効果を得ることができる。
【００６０】
（第３の実施形態）
図１５は、本発明の第３の実施形態であるＳＳＤ装置において、判断部４３により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【００６１】
まず、ステップＳ３００において、ホスト機器２０から転送（送出）されてきたデータのセクタ数が取得される。次いで、ステップＳ３０１において、変数Ｃが初期化され、その値が０にされる。ステップＳ３０２において、この変数Ｃが転送セクタ数より小さいか否かが判断され、変数Ｃが転送セクタ数より小さい（ステップＳ３０２においてＹＥＳ）ときはステップＳ３０３に進み、変数Ｃが転送セクタ数以上である（ステップＳ３０２においてＮＯ）ときはステップＳ３０６に進む。ステップＳ３０３では、転送されてきたデータのハッシュ値が算出される。ここで、ハッシュ値は既知のハッシュ関数、一例としてＭＤ２（Message Digest Algorithm 2）により算出されればよい。ステップＳ３０４では、ステップＳ３０３で算出されたハッシュ値が期待値と等しいかどうかが判断され、ハッシュ値が期待値と等しい（ステップＳ３０４においてＹＥＳ）場合はステップＳ３０５に進み、ハッシュ値が期待値と等しくない（ステップＳ３０４においてＮＯ）場合はステップＳ３０６に進む。ここに、期待値は、データが「０」であった場合のハッシュ値である。ステップＳ３０５では変数Ｃが１つインクリメントされ、次の転送データが読み込まれる。ステップＳ３０６では、変数Ｃが転送セクタ数に等しいかどうかが判断され、変数Ｃが転送セクタ数に等しい（ステップＳ３０６においてＹＥＳ）場合はステップＳ３０７に進み、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ１４に対して消去動作が指示される。一方、変数Ｃが転送セクタ数に等しくない（ステップＳ３０６においてＮＯ）場合はステップＳ３０８に進み、通常のデータ書き込みであると判断し、フラッシュメモリ１４に対してデータ書き込みが指示される。このように、図１５のルーチンでは、個々のデータのハッシュ値を算出し、このハッシュ値が、データが「０」である時のハッシュ値である期待値と等しいときに、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断している。
【００６２】
従って、本実施例のＳＳＤ装置１０によっても、上述の第１、第２の実施形態と同様の効果を得ることができる。
【００６３】
（第４の実施形態）
図１６は、本発明の第４の実施形態であるＳＳＤ装置において、判断部４３により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【００６４】
まず、ステップＳ４００において、ホスト機器２０から転送されてきたデータのＣＲＣ（Cyclic Redundancy Check）値が算出される。ステップＳ４０１では、ステップＳ４００で算出されたＣＲＣ値が期待値と等しいかどうかが判断され、ＣＲＣ値が期待値と等しい（ステップＳ４０１においてＹＥＳ）場合はステップＳ４０２に進み、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ１４に対して消去動作が指示される。一方、ハッシュ値が期待値と等しくない（ステップＳ４０１においてＮＯ）場合はステップＳ４０３に進み、通常のデータ書き込みであると判断し、フラッシュメモリ１４に対してデータ書き込みが指示される。このように、図１６のルーチンでは、データのＣＲＣ値を算出し、このＣＲＣ値が、データが「０」である時のＣＲＣ値である期待値と等しいときに、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断している。
【００６５】
従って、本実施例のＳＳＤ装置１０によっても、上述の第１〜第３の実施形態と同様の効果を得ることができる。
【００６６】
（第５の実施形態）
図１７は、本発明の第５の実施形態であるＳＳＤ装置において、判断部４３により実施される、上書き用データであるかどうかの判定ルーチンを説明するためのフローチャートである。
【００６７】
まず、ステップＳ５００において、ホスト機器２０から転送（送出）されてきたデータのバイト数が取得される。次いで、ステップＳ５０１において、変数Ｃ及びＳが初期化され、その値が０にされる。ステップＳ５０２において、この変数Ｃが転送バイト数より小さいか否かが判断され、変数Ｃが転送バイト数より小さい（ステップＳ５０２においてＹＥＳ）ときはステップＳ５０３に進み、変数Ｃが転送バイト数以上である（ステップＳ５０２においてＮＯ）ときはステップＳ５０６に進む。ステップＳ５０３では、変数Ｃが、ステップＳ５０２において取得した転送バイト数の最初の値か、真ん中の値か、あるいは最後の値かが判断され、変数Ｃが転送バイト数の最初の値か、真ん中の値か、あるいは最後の値である（ステップＳ５０３においてＹＥＳ）場合はステップＳ５０４に進み、変数Ｃが転送バイト数の最初の値か、真ん中の値か、あるいは最後の値でない（ステップＳ５０３においてＮＯ）場合はステップＳ５０５に進む。ステップＳ５０４では、転送されてきたデータが「０」（図１７では１６進数表示の「０ｘ００」）であるか否かが判定され、転送されてきたデータが「０」である（ステップＳ５０４においてＹＥＳ）場合はステップＳ５０５に進み、転送されてきたデータが「０」でない場合はステップＳ５０６に進む。ステップＳ５０５では変数Ｃが１つインクリメントされ、次の転送データが読み込まれる。ステップＳ５０６では、変数Ｃが転送バイト数に等しいか否かが判断され、変数Ｃが転送バイト数に等しい（ステップＳ５０６においてＹＥＳ）場合はステップＳ５０７に進み、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断し、フラッシュメモリ１４に対して消去動作が指示される。一方、変数Ｃが転送バイト数に等しくない（ステップＳ５０６においてＮＯ）場合はステップＳ５０８に進み、通常のデータ書き込みであると判断し、フラッシュメモリ１４に対してデータ書き込みが指示される。このように、図１７のルーチンでは、転送されてきたデータの最初、真ん中及び最後の値を抽出し、抽出された値が全て「０」であるときに、ホスト機器２０から転送、送出されてきたデータは上書き用データであると判断している。
【００６８】
従って、本実施例のＳＳＤ装置１０によっても、上述の第１〜第４の実施形態と同様の効果を得ることができる。
【００６９】
（変形例）
本発明の記憶装置は、その細部が上述した各実施形態に限定されず、種々の変形例が可能である。
【００７０】
一例として、上述の各実施形態では、ホスト機器から送出される上書き消去用の上書き用データは全て「０」のデータであるとして、上書き消去判断のルーチンを説明したが、ホスト機器から送出される上書き消去用の上書き用データが特定できる限り、ルーチンを適宜変更することで対応可能である。また、上書き消去判断のルーチンは上述の各実施形態に説明したものに限定されない。
【００７１】
また、上述の第１の実施形態において、Ｅｒａｓｅ領域の論理アドレスは、図５に示すように起動時にフラッシュメモリのＭＢＲを取得し、このＭＢＲから取得していたが、これに限らず、例えば、記憶装置を組み込んだホスト機器の出荷時においてパーティションを作成した際に、Ｅｒａｓｅ領域に対応するパーティションの論理アドレスを取得し、この論理アドレスを、ホスト機器から送出される記憶装置初期化コマンド内に設定しておけばよい。これにより、記憶装置初期化動作によって記憶装置はＥｒａｓｅ領域の論理アドレスを取得することができる。あるいは、ホスト機器特有の（ベンダー依存の）コマンドを用意し、このコマンド内にＥｒａｓｅ領域に対応するパーティションの論理アドレスを予め設定してもよい。
【００７２】
また、上述の第１の実施形態において、ＲＡＭ内に格納されている上書き用データはＳＳＤ装置が自ら生成していたが、ホスト機器から上書き消去指示の際に送出されてきた上書き用データを都度ＲＡＭ内に格納してもよい。
【符号の説明】
【００７３】
１０    ＳＳＤ装置
１１    コントローラ
１２    ＲＡＭ
１２ａ  上書き用データ
１２ｂ  変換テーブル
１３    ＲＯＭ
１４    フラッシュメモリ
１５    ＣＰＵ
１６    ホストインタフェース
１７    フラッシュインタフェース
１８    ＲＡＭインタフェース
１９    ＲＯＭインタフェース
２０    ホスト機器
４０    制御部
４１    記憶媒体
４２    インタフェース部
４３    判断部
４４    消去部
４５    転送部
【図１】
2014010498.tif 000003
【図２】
2014010498.tif 000004
【図３】
2014010498.tif 000005
【図４】
2014010498.tif 000006
【図５】
2014010498.tif 000007
【図６】
2014010498.tif 000008
【図７】
2014010498.tif 000009
【図８】
2014010498.tif 000010
【図９】
2014010498.tif 000011
【図１０】
2014010498.tif 000012
【図１１】
2014010498.tif 000013
【図１２】
2014010498.tif 000014
【図１３】
2014010498.tif 000015
【図１４】
2014010498.tif 000016
【図１５】
2014010498.tif 000017
【図１６】
2014010498.tif 000018
【図１７】
2014010498.tif 000019