(57)【要約】【課題】  ウェアレベリングを実施しているＳＳＤにおいて、ＳＳＤの外部から特定の領域にデータを書き込む事が困難であり、上書き消去も困難であった。【解決手段】  不揮発性メモリの記憶領域の全てに無効データを書き込み、有効データの書き込みが指示されると、当該有効データに相当するデータ量の無効データを不揮発性メモリから削除して、当該削除した無効データの替わりに書込みが指示された有効データを書き込む。そして、有効データの削除が指示されると、不揮発性メモリから有効データを削除して、削除した有効データの替わりに無効データを書き込む。【選択図】  図１１
2015204072.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを備える情報処理装置であって、
前記不揮発性メモリの記憶領域に無効データで書き込む初期化手段と、
有効データの書き込みが指示されると、当該有効データのデータ量に基づいて無効データを前記不揮発性メモリから削除して、前記有効データを書き込む書き込み手段と、
前記有効データの削除が指示されると、前記不揮発性メモリから前記有効データを削除して、無効データを書き込む削除手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記不揮発性メモリの有する複数の領域について、前記無効データと前記有効データのどちらが保持されているかを示す管理情報を保持する保持手段を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記不揮発性メモリに無効データまたは有効データが書き込まれる際に、前記保持手段が保持する管理情報を更新する更新手段を更に備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記不揮発性メモリはＮＡＮＤ型フラッシュメモリであり、読み書き単位としてのページのサイズと削除単位としてのブロックのサイズとが異なることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記初期化手段は、前記フラッシュメモリの全てのページについて無効データを書き込むことで前記フラッシュメモリの記憶領域を初期化することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記不揮発性メモリに書き込む有効データを前記不揮発性メモリの削除単位に調整する調整手段を更に備えることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記調整手段は前記不揮発性メモリに書き込む有効データに付加データを付加して、前記削除単位の整数倍になるように調整することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記不揮発性メモリはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であることを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記削除手段は、前記不揮発性メモリから前記有効データを削除する際に削除指示を発行することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記削除指示はＡＴＡ規格におけるＴＲＩＭコマンドであることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
不揮発性メモリを備える情報処理装置における情報処理方法であって、
前記不揮発性メモリの記憶領域に無効データで書き込む初期化工程と、
有効データの書き込みが指示されると、当該有効データのデータ量に基づいて無効データを前記不揮発性メモリから削除し、前記有効データを書き込む書き込み工程と、
前記有効データの削除が指示されると、前記不揮発性メモリから前記有効データを削除して、無効データを書き込む削除工程とを有する情報処理方法。
【請求項１２】
不揮発性メモリを備える情報処理装置を、
前記不揮発性メモリの記憶領域に無効データで書き込む初期化手段、
有効データの書き込みが指示されると、当該有効データのデータ量に基づいて無効データを前記不揮発性メモリから削除して、前記有効データを書き込む書き込み手段、
前記有効データの削除が指示されると、前記不揮発性メモリから前記有効データを削除して、無効データをA書き込む削除手段として機能させることを特徴とするコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリなどの不揮発性メモリを利用した情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、情報処理装置のＨＤＤ（ハードディスクドライブ）の代替えのストレージとして、フラッシュメモリを記憶媒体として利用した半導体ディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、以下ＳＳＤと呼ぶ）の利用が進んでいる。ＳＳＤはＨＤＤと比べて高速なランダムアクセスが可能であるばかりでなく、低消費電力、高耐衝撃性、軽量、および省スペースという利点がある。
【０００３】
ただし、ＳＳＤに搭載されるフラッシュメモリには書き込み可能回数に上限があるとされる。そこで、ＳＳＤに搭載されたフラッシュメモリコントローラは、フラッシュメモリの特定領域に書き込みが集中して不良記憶素子が早期に発生し難いように、書き込み先の領域を平均に分散させている。詳細には、フラッシュメモリコントローラがフラッシュメモリの書込み回数を平準化するために、フラッシュメモリの論理アドレスと物理アドレスの対応付けを変えてしまう。例えば、新しく書込みを行う際に、一番書込み回数の少ない空き領域の物理アドレスを書込み要求に指定される論理アドレスに対応させる。これによって、フラッシュメモリ、つまり、ＳＳＤの寿命の長期化を実現している。この技術はウェアレベリングと呼ばれる。
【０００４】
ここで、セキュリティの観点から、プリントアウトなどの処理に用いたデータを、処理後に利用できない様にすることが望まれることがある。例えば、特許文献１は、無効化対象のデータを暗号化してＳＳＤに書き込み、暗号化鍵を消去することでデータを再利用され難いようにする手法を提案している。
【０００５】
また、別の手法として、ＨＤＤにおいてプリントアウトなどの処理に用いたデータを保持している領域をダミーデータ（固定値やランダム値など）で上書きする技術が知られている。しかし、従来のＳＳＤであると、ウェアレベリングにより書き込み先領域を分散させ、物理アドレスと論理アドレスの対応付けも変えてしまっているため無効化対象のデータを上書きすることが困難である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−０１８５０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術では、暗号化プロトコルの性能に依存しており、データそのものの消去は実現できていない。また、上書き消去の技術については、ウェアレベリングを実施しているＳＳＤにおいて、ＳＳＤの外部側（ＯＳやアプリ）からは実際にデータを書き込む位置や領域（ＳＳＤの物理アドレス）を指定できないため、従来の手法では上書き消去が困難であった。
そこで、本発明では、ウェアレベリングを実施しているＳＳＤにおいても、上書き消去を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の情報処理装置は、不揮発性メモリを備える情報処理装置であって、前記不揮発性メモリの記憶領域に無効データで書き込む初期化手段と、有効データの書き込みが指示されると、当該有効データのデータ量に基づいて無効データを前記不揮発性メモリから削除して、前記有効データを書き込む書き込み手段と、前記有効データの削除が指示されると、前記不揮発性メモリから前記有効データを削除して、無効データを書き込む削除手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ウェアレベリングを使用して書込みを分散させているフラッシュメモリやＳＳＤにおいても、簡単な構成で上書き消去を実現できる。
【図面の簡単な説明】
【００１０】
【図１】（Ａ）情報処理装置の全体構成を示す模式図である。（Ｂ）情報処理装置のプログラム構成を示す模式図である。
【図２】ＳＳＤの構成を示す概略図である。
【図３】（Ａ）ＳＳＤのデータ構成を示す概略図である。（Ｂ）ＳＳＤの論理・物理テーブルを示す模式図である。
【図４】初期化処理のフローチャートである。
【図５】データ書き込み処理のフローチャートである。
【図６】データ削除処理のフローチャートである。
【図７】（ａ）〜（ｃ）無効データ管理テーブルの例を示す図である。
【図８】初期化処理時のＳＳＤの状態を示す模式図である。
【図９】（ａ）、（ｂ）データ書き込み処理時のＳＳＤの状態を示す模式図である。
【図１０】（ａ）、（ｂ）データ消去処理時のＳＳＤの状態を示す模式図である。
【図１１】（ａ）〜（ｃ）データ書き込み処理および消去処理に関する機能構成を示す概略図である。
【図１２】データ読み込み処理のフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態である第１の実施形態について図面を用いて説明する。
【００１２】
《第１の実施形態》
本実施形態では、予めＳＳＤの全ての領域を疑似的に無効なデータ（以降、無効データと称す）で書き込み、ＳＳＤ側で書き込み可能な領域がないと判断される状態にする。例えば、無効データとして「０」で書き込む。そして、新しくデータを書き込む際には、書き込むデータ分だけ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）の無効データを削除するようにしてから、データを書き込む。また、ＳＳＤのデータを削除する際には、データを削除してから、上書きデータを書き込む。その結果、上書きデータを書き込む領域が無効データを削除した領域のみに絞られるので、ウェアレベリングを使用しているＳＳＤにおいても上書き消去することが可能になる。
【００１３】
＜情報処理装置の全体構成＞
本実施形態における情報処理装置１００の全体構成例を図１（Ａ）に示す。
【００１４】
図１（Ａ）において情報処理装置１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、Ｉ／Ｆ１０４、ＳＳＤ１０５、操作部１０６、表示部１０７、およびエンジン１０８を有し、それぞれの構成はバス１０９で接続されている。
【００１５】
ＣＰＵ１０１はＲＯＭ１０２の内容に沿って情報処理装置１００内の各部の動作を制御したり、ＲＡＭ１０３にロードしたプログラム（ＯＳやアプリケーション）を実行したりする。ＲＯＭ１０２は読み出し専用メモリであり、ブートプログラムやファームウェア、後述する処理を実現するための各種処理プログラム、各種データを格納している。ＲＡＭ１０３はＣＰＵ１０１にて処理を行うために一時的にプログラムやデータを格納しておくワークメモリであり、ＣＰＵ１０１により各種処理プログラムやデータがロードされる。
【００１６】
Ｉ／Ｆ１０４はネットワーク機器やＵＳＢデバイスといった外部装置と通信するためのインタフェースであり、ネットワークを通じたデータ通信や、外部装置とデータの送受信を行う。ＳＳＤ１０５はＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）や各種プログラム、または各種データを保持するものであり、ＮＡＮＤ型フラッシュメモリを利用した不揮発性の記憶装置（不揮発性メモリ）である。
【００１７】
操作部１０６は利用者の操作指示、及び種々のパラメータ設定をはじめとする各種の指示を受け付けるためのユーザーインタフェースであり、キーボード、マウス、テンキー、タッチパネル等の少なくともいずれか１つを備える。表示部１０７は操作確認、処理ステータスなどを利用者へ通知するための表示装置であり、ディスプレイ、タッチパネル等の少なくともいずれか１つを備える。エンジン１０８は、オプショナルな処理部であり、利用者からの指示がなされると、印刷、読み込み等の各種処理を行う。例えば、画像データを紙に印刷するためのプリンタエンジンや、記録媒体から画像データを取り込むスキャナエンジンである。ここで、画像データを紙に印刷するためのプリンタエンジンとは、ビットマップデータに応じて複数のプリンタヘッドを制御するものである。記録媒体から画像データを取り込むスキャナエンジンとは、例えば、ラインセンサによって取得した画像データをＲＡＭに転送するものである。
【００１８】
情報処理装置１００は、一般に普及しているパーソナルコンピュータであってもよいし、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であってもよい。操作部１０６を用いて指示がなされた際に、エンジン１０８によりプリント、スキャン、コピー等の各種操作の少なくとも１つが実施可能な装置であればよい。
【００１９】
次に、本実施形態における情報処理装置１００のプログラム構成を図１（Ｂ）に示す。本実施形態における情報処理装置１００は、ＯＳ１１０と複数のアプリケーション１１１を動作させ、ＯＳ１１０より上位に複数のアプリケーション１１１を動作させている。
【００２０】
アプリケーション１１１としては情報処理を実施するものであればよい。例えば、文書編集アプリケーション、画像編集アプリケーションおよびＷｅｂ接続アプリケーション、プリント処理アプリケーション、スキャン処理アプリケーション、コピー処理アプリケーションなどがある。アプリケーション１１１はデータをＳＳＤ１０５に書き込む場合には、ＯＳ１１０を介して書込み処理を実施する。読出し処理も同様である。ここで、ＯＳ１１０側ではＳＳＤ１０５の論理アドレスを指定してＳＳＤ１０５に対する読み書きを実施する。
【００２１】
ＳＳＤ１０５は、ＯＳ１１０からの書込み要求または読出し要求に含まれる論理アドレスを、アドレス変換テーブルによって物理アドレスに変換して、自身の不揮発メモリにアクセスする。
【００２２】
＜ＳＳＤの構成＞
図２に、ＳＳＤ１０５の構成を示す。ＳＳＤ１０５は、ＳＳＤコントローラ２００、外部Ｉ／Ｆ２０１、ＲＯＭ２０２、キャッシュメモリ２０３および不揮発メモリ２０４から構成されている。さらにＳＳＤコントローラ２００は、プロセッサ２０５、内部Ｉ／Ｆ２０６およびレジスタ２０７を有する。
【００２３】
ＳＳＤコントローラ２００は、ＳＳＤ１０５の全体を制御する。情報処理装置１００のＣＰＵ１０１やＤＭＡＣ（不図示）からバス１０９および外部Ｉ／Ｆ２０１を介して受け取った書き込み命令とデータに基づいて不揮発メモリ２０４へデータを書き込む。読み込み命令に基づいて不揮発メモリ２０４からデータを読み出す。ＳＳＤコントローラ２００は、これらの処理の過程で、書き込みデータまたは読み出しデータを一時的にキャッシュメモリ２０３へ保持することもある。ＲＯＭ２０２は、読み出し専用メモリであり、ＳＳＤ１０５で利用する各種プログラム・データを格納する。キャッシュメモリ２０３はＳＳＤコントローラ２００が処理する過程で一時的にデータを保持し、不揮発メモリ２０４でデータを保持する。本実施形態では不揮発メモリ２０４はＮＡＮＤ型フラッシュメモリとする。
【００２４】
＜ＳＳＤの処理＞
図３に、ＳＳＤ１０５の記憶領域の構成を示す。ＳＳＤ１０５は、ページいう単位とブロックという単位でデータを管理する。ページは書込みまたは読出し処理の最小単位であり、通常数Ｋバイトを有する。ブロックは消去処理の単位であり複数のページを有する。図３（Ａ）は１ブロックが６４ページで構成される例を示している。ＳＳＤ１０５は、データを書き込み済みのページに直接的に上書きはできず、書き込む前に消去処理を行う必要がある。この消去処理はページ単位でなく、削除単位としてのブロック単位で行う必要があるため、書き込み可能な消去済みページ存在しない状態においてのデータ書き込み処理の際には、書き込み処理に先立ち、ブロック消去処理を行う。
【００２５】
ブロック消去には、ＴＲＩＭコマンドとガーベッジコレクションを用いる。ＴＲＩＭコマンドはＯＳ１１０側からＳＳＤ１０５へ、不要になった領域（ページ）を通知するＡＴＡ規格のコマンドである。ガーベッジコレクションは有効なページを再配置して無効なページのみを有する消去可能なブロックを作り、ブロック消去処理を実施して空きブロックを増やす仕組みである。これらにより、書き込み処理以前にブロック消去処理を実施し、書き込み処理時のブロック消去処理の削減を実現している。本実施形態ではＴＲＩＭコマンドによって無効なページを通知してから、ガーベッジコレクションを実施することでより効率的なブロック消去処理を実現する。
【００２６】
また、図３（Ｂ）に例示するように、ＳＳＤ１０５では論理アドレスと物理アドレスの対応テーブル（アドレス変換テーブル）を内部Ｉ／Ｆ２０６に保持し、対応テーブルに基づいてデータの書き込み・読出し処理を行う。例えば、コントローラ２００は頻繁に変更があるデータは書込み回数の少ない物理ページに移動させ、変更の少ないデータは書込み回数の多い物理ページに移動させることで、物理的なデータ書き込み領域を分散することができる。この時、データを移動させる先の物理ページのアドレスを元の論理アドレスと対応付けるように対応テーブルを更新する。また、新規の書き込み処理要求があった場合に、書き込み回数の少ない領域に優先的に書き込むこともできる。これらの仕組みはウェアレベリングと呼ばれる。さらにコントローラ２００は、不図示の構成によりデータの読み出し処理・書き込み処理の過程で、誤り訂正符号化処理を行うことも可能である。
【００２７】
＜ファイル操作の論理構成＞
図１１（ａ）は図１のＯＳ１１０内で実現されるファイル操作の機能構成を示す模式図である。なお、ＯＳ１１０の各機能はＣＰＵ１０１がＯＳのプログラムコードを実行することにより実現される。
【００２８】
ファイルＩ／Ｏ１１０１は、アプリケーション１１１からの要求やユーザから入力された命令に基づいて、初期化処理部１１０３、データ書込み部１１０４、データ読み込み部１１０５、データ削除部１１０６に指示をする。
【００２９】
テーブル１１０２は、ＯＳ１１０側でＳＳＤ１０５に書き込まれたデータを管理するテーブルである。詳細には、テーブル１１０２はＳＳＤ１０５上のデータが無効データであるか否かをページ単位で管理する管理情報（以降、無効データ管理テーブルと称す）であり、図７（ａ）に一例を示す。図７（ａ）の例では、無効データフラグは、無効データである場合は「１」を示し、無効データではない場合（有効データである場合）は「０」を示し、２４ページに無効なデータ「０」が書き込まれている状態である。ここで、無効データとはダミーデーターであり、書き込んだページを占有するために用いるデータである。一方、有効データとは通常の内容のあるデータである。なお、本実施形態においてＳＳＤ１０５は無効データと有効データを区別せずに同様に扱い、ＯＳ１１０が無効データと有効データを区別して管理する。
【００３０】
初期化部１１０３は、ＳＳＤ１０５の全ての記録領域を無効データで書き込み、無効データ管理テーブル１１０２を初期化し、図７（ａ）のようにする。
【００３１】
データ書き込み部１１０４の詳細は図１１（ｂ）に示すとおりであり、データ書込み部１１０４は無効データ削除部１１０７と有効データ書込み部１１０８とを有する。無効データ削除部１１０７は、ＳＳＤ１０５に有効データを書き込む前に書き込む有効データのデータ量（以降、有効データ量と称す）に基づいて、ＳＳＤ１０５の無効データを削除する。有効データ書き込み部１１０８は、書き込み指示が出た有効データを書き込み、無効データ管理テーブル１１０２を更新する。
【００３２】
データ読み出し部１１０５は、ＳＳＤ１０５に記憶されている有効データを読み出す様にＳＳＤ１０５に指示を出す。
【００３３】
データ削除部１１０６の詳細は図１１（ｃ）に示すとおりであり、データ削除部１１０６は有効データ削除部１１０９と無効データ書込み部とを有する。データ削除部１１０６は、ＳＳＤ１０５に対してファイルＩ／Ｏ１１０１からの指示に基づいて有効データを削除する要求を発行する。そして、無効データ書き込み部１１１０は、有効データが削除された領域に無効データを書き込み、さらに無効データ管理テーブル１１０２を更新する。
【００３４】
＜初期化処理＞
図４は、ＳＳＤ１０５の初期化処理の詳細を示すフローチャートである。図２および図１１の各構成と対応づけて説明する。
【００３５】
まず、図４のステップＳ４０１において、ファイルＩ／Ｏ１１０１がＯＳ１１０から初期化処理の指示を受信する。ＳＳＤ１０５の初期化処理は、情報処理装置１００の初期化時や、ＳＳＤ１０５交換時、工場出荷時などに行えばよい。
【００３６】
次に、ステップＳ４０２において、初期化部１１０３は、不揮発メモリ２０４の全てのページを「０」で書き込む要求をＳＳＤコントローラ２００に出す。この要求に沿って、ＳＳＤコントローラ２００は不揮発メモリ２０４の全てのページを「０」で書き込む。例えば、ＳＳＤ１０５が１ブロック１２ページで２ブロック構成であるとすると、図８のブロックＸおよびブロックＹのように全て「０」が書き込まれている。
【００３７】
そして、ステップＳ４０３において、ＳＳＤコントローラ２００は無効データ管理テーブル１１０２を初期化する。例えば、図７（ａ）のように、無効データ管理テーブル１１０２の無効データフラグは、全て無効データが書き込まれていることを示す「１」に設定される。
【００３８】
＜データ書き込み処理＞
図５は、ＳＳＤ１０５に対するデータ書き込み処理の詳細を示すフローチャートである。図２および図１１の各構成と対応づけて説明する。
【００３９】
なお、データ書き込み処理を行う前に、上記で説明した初期化処理を実施しており、データ書込み処理を行う時点でＳＳＤ１０５の記憶領域は図８のようになっており、無効データ管理テーブル１１０２は、図７（ａ）のようになっているものとする。
【００４０】
まず、図５のステップＳ５０１において、ファイルＩ／Ｏ１１０１はデータ書き込み指示を受信する。
【００４１】
ステップＳ５０２において、無効データ削除部１１０７は、書き込み指示で書込む対象の有効データ量（有効データのサイズ）がブロック容量の整数倍か否かを判定する。有効データ量がブロック容量の整数倍である場合（Ｓ５０２でＹＥＳ）はステップＳ５０４に進み、有効データ量がブロック容量の整数倍ではない場合（Ｓ５０２ＮＯ）はステップＳ５０３に進む。
【００４２】
ステップＳ５０３において、無効データ削除部（調整部）１１０７は、有効データをブロック容量の整数倍になるようにパディングする。例えば、図８のように、１ブロックの容量が１２ページで、有効データ量が４ページの場合は有効データ量が１２ページになるように、有効データの後ろに８ページ分の付加データ（スペーサー）をパディング（付加）する。パディングは例えば、「０」で埋めてサイズを調整する。
【００４３】
ステップＳ５０４において、無効データ削除部１１０７は、空き容量を確認する。空き容量の確認は無効データ管理テーブル１１０２の無効データフラグが「１」のページをカウントして行う。例えば、図７（ａ）の場合は、無効データフラグが「１」のページ数は２４ページなので、空き容量は２４ページと確認できる。
【００４４】
ステップＳ５０５において、無効データ削除部１１０７は、パディング後の有効データ量と空き容量を比較する。パディング後の有効データ量が空き容量以下の場合（Ｓ５０５でＹＥＳ）は、ステップＳ５０６に進む。有効データ量が空き容量より大きい場合（Ｓ５０５でＮＯ）は、ステップＳ５０９に進む。例えば、図７（ａ）の状態で、パディング後の書き込みデータ量が１２ページの場合は、空き容量２４ページより小さいので、ステップＳ５０６に進み、書き込み処理を実施する。
【００４５】
ステップＳ５０６において、無効データ削除部１１０７は、図８のブロックＸを無効ページとして通知するＴＲＩＭコマンドをＳＳＤ１０５に対して発行する。ＴＲＩＭコマンドを利用して消去するページ数はステップＳ５０３にてパディングした後の有効データ量となり、ブロック容量の整数倍となる。ＴＲＴＩＭコマンドを発行後、ＳＳＤ１０５のＳＳＤコントローラ２００は、ＴＲＩＭコマンドに基づいてガーベッジコレクションを実施する。その結果、ＳＳＤ１０５は図８から図９（ａ）の状態となり、ブロックＸの全てのページは消去済みページとなる。図中のＦｒｅｅ（縦線のパターン）は消去済みページを意味する。
【００４６】
ステップＳ５０７において、有効データ書き込み部１１０８は、ＳＳＤコントローラ２００に対して、有効データの書き込み要求を行う。書き込み要求発行後、ＳＳＤ１０５のＳＳＤコントローラ２００は不揮発メモリ２０４のブロックＸに有効データの書き込み処理を行う。この時点で、書き込み可能な消去済みページはステップＳ５０６で消去したページとなる。そして、例えば、ＳＳＤ１０５は図９（ａ）から図９（ｂ）のように所定の領域に上書き（書き換え）できる。なお、本実施形態では上書き（書き換え）とは、同じ物理アドレス（詳細にはページに相当する物理アドレス）に対して所定の値を書き込むことにより間接的に上書きして消去する処理を指すものとする。
【００４７】
ステップＳ５０８において、有効データ書き込み部１１０８は、テーブル１１０２を更新し、処理を終了する。有効データ書き込み部１１０８は、書き込みを行ったページについて、無効データフラグを「１」から無効データが書き込まれていないことを示す「０」に変更する。その結果、無効データ管理テーブル１１０２は例えば図７（ｂ）から図７（ｃ）のように書き変わる。
【００４８】
なお、ステップＳ５０５でパディング後の有効データ量が空き容量を超えてしまっている場合は、ステップＳ５０９において、無効データ削除部１１０７がエラーメッセージを発行し、書き込み要求をキャンセルして処理を終了する。
【００４９】
＜データ読み出し処理＞
図１２は、ＳＳＤ１０５に対するデータ読み出し処理を示す。図２および図１１の各構成と対応づけて説明する。まず、図１２のステップＳ１２０１において、ファイルＩ／Ｏ  １１０１がアプリケーション１１１などから有効データの読み出し指示を受信する。次に、ステップＳ１２０２において、データ読み出し部１１０５がＳＳＤ１０５のＳＳＤコントローラ２００に対して読み出し要求を行う。読出し要求を受けたＳＳＤコントローラは、読出し要求で指示されている領域（論理アドレス）を、アドレス変換テーブルを参照して物理アドレスに変換し、変換した物理アドレスに従ってキャッシュメモリ２０３またはＲＡＭ１０３に内容読み出す。
【００５０】
＜データ削除処理＞
図６は、ＳＳＤ１０５に対するデータ削除処理を示す。図２および図１１の各構成と対応づけて説明する。
【００５１】
まず、図６のステップＳ６０１において、ファイルＩ／Ｏ  １１０１はデータ削除指示を受信する。
【００５２】
次に、ステップＳ６０２において、有効データ削除部１１０９は、削除対象の有効データに対してＴＲＩＭコマンドを発行する。ＴＲＩＭコマンド発行後、ＳＳＤ１０５のＳＳＤコントローラ２００はガーベッジコレクションを実施する。その結果、ＳＳＤ１０５は図９（ｂ）から図１０（ａ）の状態となり、ブロックＢｌｏｃｋ  Ｘの全てのページは消去済みページとなる。
【００５３】
ステップＳ６０３において、無効データ書き込み部１１１０は、ＳＳＤコントローラ２００に対して、無効データの書き込み要求を行う。書き込み要求発行後、ＳＳＤ１０５のＳＳＤコントローラ２００は無効データの書き込み処理を行う。書き込み可能な消去済みページはステップＳ６０２で、消去したページだけであるので、ＳＳＤ１０５を図１０（ａ）から図１０（ｂ）のように所定の領域に上書きすることができる。
【００５４】
ステップＳ６０４において、無効データ書き込み部１１１０は、無効データ管理テーブル１１０２を更新し、処理を終了する。無効データ書き込み部１１１０は、書き込みを行ったページの無効データフラグを「０」から無効データが書き込まれていることを示す「１」に変更する。その結果、テーブル１１０２は例えば図７（ｃ）から図７（ａ）のように書き変わる。
【００５５】
以上のように本実施形態では、予めＳＳＤの全ての領域を無効データで書き込むことでＳＳＤのデータ領域を初期化し、ＳＳＤ側で書き込み可能な領域がないと判断される状態にする。そして、有効データを書き込もうとする際にはＯＳ側で無効データを削除して書き込み可能な領域を生成してから、有効データを書き込む。一方、有効データを削除する際には、有効データを削除してから、無効データで上書きする。つまり、常に書き込み可能な領域の生成と書き込み処理をセットで実施することにより、ウェアレベリングを使用しているＳＳＤについて、ＳＳＤの外部（ＯＳ側）から消去対象のデータを保持する領域（物理ページ）について、書き換え処理を実現できる。これにより、上書き消去が可能になる。
【００５６】
なお、オーバー・プロビジョニングと呼ばれる予備領域を設定できるＳＳＤがあり、予備領域の利用により初期化されない領域が発生する可能性がある。その場合は、ＳＳＤの初期化前に、予備領域の量をゼロに設定する。例えば、図２に記載のレジスタ２０７が備えるコンフィギュレーションレジスタの値を書き換えることで予備領域の量をゼロに設定すればよい。また、予備領域も無効データで書き込むことで初期化しても良い。具体的には、上記の方法と同様に、予備領域の量をゼロに設定し、全ての領域を無効データにする。そのあと、予備領域の量を再度設定すれば良い。
【００５７】
また、上述の実施形態ではＳＳＤの初期化時に全ての領域を無効データで書込むとしたが、予めアプリケーションが書き込める固定の領域を設定し、その領域について無効データで埋めるようにしても同様の効果を得ることができる。また、無効データで実際にＳＳＤ１０５を書き込まずに、ＳＳＤ１０５の各ページを占有状態に変更できる指示を初期化部１１０３や無効データ書込み部１１０６が出すようにしてもよい。
【００５８】
なお、上述の実施形態ではＴＲＩＭコマンドを例に挙げて説明したが、ＴＲＩＭコマンドはＡＴＡ規格の削除指示の呼称である。ＳＣＳＩ規格ではＵＮＭＡＰコマンドに相当し、Ｄｉｓｃａｒｄコマンドと呼称されることもあるが、どのコマンドを利用しても本実施形態を実現できる。
【００５９】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が読み取り可能なプログラムを読み出して実行する処理である。
【図１】
2015204072.tif 000003
【図２】
2015204072.tif 000004
【図３】
2015204072.tif 000005
【図４】
2015204072.tif 000006
【図５】
2015204072.tif 000007
【図６】
2015204072.tif 000008
【図７】
2015204072.tif 000009
【図８】
2015204072.tif 000010
【図９】
2015204072.tif 000011
【図１０】
2015204072.tif 000012
【図１１】
2015204072.tif 000013
【図１２】
2015204072.tif 000014