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