(57)【要約】【課題】複数のフラッシュメモリを含む半導体ストレージにデータを書き込む際に、インタリーブの実行状態を適切に制御することで、不要データの消去に起因したシステム性能の低下を防ぐ技術を提供する。【解決手段】本発明の情報処理装置は、複数のフラッシュメモリを含む半導体ストレージへデータを書き込む際に、書き込み対象のデータが、当該データに関連する不要データを半導体ストレージに残存しないように消去可能にすべきことが設定された特定のデータ（完全消去に対応したデータ）であるか否かを判定する。情報処理装置は、書き込み対象のデータが特定のデータではないと判定した場合、インタリーブを有効にした状態で、データの書き込み処理を行う。一方、情報処理装置は、書き込み対象のデータが特定のデータであると判定した場合、インタリーブを無効にした状態で、データの書き込み処理を行う。【選択図】図５
2015076070.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数のフラッシュメモリを含む半導体ストレージと、
前記半導体ストレージへデータを書き込む際に、書き込み対象のデータが、当該データに関連する不要データを前記半導体ストレージに残存しないように消去可能にすることが設定された特定のデータであるか否かを判定する判定手段と、
前記書き込み対象のデータが前記特定のデータではないと判定された場合には、前記複数のフラッシュメモリにデータを分散して書き込むインタリーブを有効にした状態で、前記書き込み対象のデータが前記特定のデータであると判定された場合には、前記インタリーブを無効にした状態で、前記書き込み対象のデータを前記半導体ストレージに書き込む書き込み手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記書き込み手段は、前記インタリーブを無効にした状態では、前記書き込み対象のデータを、前記複数のフラッシュメモリのいずれかにおける連続した記憶領域に書き込むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定手段は、前記情報処理装置が所定の動作モードに設定されている場合には、前記書き込み対象のデータが前記特定のデータであると判定し、前記情報処理装置が前記所定の動作モードに設定されていない場合には、前記書き込み対象のデータが前記特定のデータではないと判定する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記所定の動作モードは、前記半導体ストレージへのデータの書き込み後に、当該データに関連する不要データを前記半導体ストレージに残存しないように消去可能にする動作を行う動作モードであることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記判定手段は、前記書き込み対象のデータの配置先として、前記半導体ストレージに含まれる各フラッシュメモリの所定の記憶領域が指定されている場合には、前記書き込み対象のデータが前記特定のデータであると判定し、前記所定の記憶領域が指定されていない場合には、前記書き込み対象のデータが前記特定のデータではないと判定する
ことを特徴とする請求項１から４のいずれか１項の情報処理装置。
【請求項６】
前記所定の記憶領域は、前記半導体ストレージに含まれる各フラッシュメモリの、前記特定のデータの配置用に予め設けられた記憶領域であることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記判定手段は、前記書き込み対象のデータに対して指定されているアドレスが、前記所定の記憶領域に配置されるデータに対して指定される所定の範囲内のアドレスであるか否かに基づいて、前記書き込み対象のデータが前記特定のデータであるか否かを判定することを特徴とする請求項５または６に記載の情報処理装置。
【請求項８】
前記情報処理装置のシャットダウンが指示され、かつ、前記情報処理装置の次回の起動時に前記インタリーブの実行状態を前記シャットダウンの前とは異なる状態に変更する場合に、前記シャットダウンの前に、前記複数のフラッシュメモリに配置されているデータを、変更後の前記インタリーブの実行状態に応じて前記複数のフラッシュメモリにおいて再配置する再配置手段と、
前記再配置手段による再配置後に前記複数のフラッシュメモリに残存する不要データを、前記シャットダウンの前に一括で消去する消去手段と
を更に備えることを特徴とする請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記再配置手段は、
前記情報処理装置の次回の起動時に、前記インタリーブの実行状態が無効から有効の状態に変更される場合には、前記複数のフラッシュメモリのいずれかの連続した記憶領域に配置されているデータを前記複数のフラッシュメモリにおいて分散した空き領域に再配置し、
前記情報処理装置の次回の起動時に、前記インタリーブの実行状態が有効から無効の状態に変更される場合には、前記複数のフラッシュメモリに分散して配置されているデータを前記複数のフラッシュメモリのいずれかにおいて連続した空き領域に再配置する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記複数のフラッシュメモリの記憶領域におけるブロックごとの摩耗度を示す摩耗情報を取得する取得手段を更に備え、
前記再配置手段は、前記取得手段によって取得された摩耗情報が示す摩耗度が少ないブロック内の空き領域に対して優先してデータを再配置する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
複数のフラッシュメモリを含む半導体ストレージを備える情報処理装置の制御方法であって、
前記半導体ストレージへデータを書き込む際に、書き込み対象のデータが、当該データに関連する不要データを前記半導体ストレージに残存しないように消去可能にすることが設定された特定のデータであるか否かを判定する判定工程と、
前記書き込み対象のデータが前記特定のデータではないと判定された場合には、前記複数のフラッシュメモリにデータを分散して書き込むインタリーブを有効にした状態で、前記書き込み対象のデータが前記特定のデータであると判定された場合には、前記インタリーブを無効にした状態で、前記書き込み対象のデータを前記半導体ストレージに書き込む書き込み工程と
を含むことを特徴とする情報処理装置の制御方法。
【請求項１２】
請求項１１に記載の情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体ドライブ（ＳＳＤ）を搭載した情報処理装置及びその制御方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
一般に、画像形成装置にはハードディスクドライブ（ＨＤＤ）が搭載され、ＨＤＤにプログラムや画像データを格納するようにしている。一方、近年では、半導体ドライブ（ＳＳＤ）の大容量化及び低価格化が進み、モバイルＰＣを中心として急速にＳＳＤの普及が進んでいる。ＳＳＤは、ＨＤＤと比べて高速なランダムアクセスが可能であるだけでなく、低消費電力、高い耐衝撃性、軽量、及び省スペースという利点がある。特に、システム起動の際にＨＤＤにおいて必要となるスピンアップ等の初期動作がＳＳＤでは不要であり、高速なデータ転送と相まって、ＳＳＤの起動時間は大幅に短縮されている。更に、ＳＳＤは、衝撃によって破損しやすいディスクの駆動部分を有しないので、耐衝撃性に優れるだけでなく耐熱性にも優れている。このため、ＳＳＤは画像形成装置のストレージデバイスとしても注目されている。
【０００３】
ただし、ＳＳＤに搭載される記憶デバイスであるフラッシュメモリには、書き込み可能回数に上限がある。例えば、ＳＬＣ（Single Level Cell）での書き込み可能回数は約１０万回であり、ＭＬＣ（Multiple Level Cell）での書き込み可能回数は約１万回である。更に、フラッシュメモリの製造プロセスの微細化に起因して、フラッシュメモリにおける書き換え可能回数は減少する傾向にある。
【０００４】
フラッシュメモリにおける書き込み可能回数の制限に対処するため、ＳＳＤに搭載されたフラッシュメモリコントローラは、フラッシュメモリにおいて同一の領域に対して書き込みの頻度が集中しないように、データの書き込み先の領域を平均的に分散させる。この技術は、「ウェアレベリング」と呼ばれている。更に、フラッシュメモリコントローラは、データの書き込み先の領域を複数のフラッシュメモリに分散させる「インタリーブ」という技術も用いている。このような技術により、フラッシュメモリ、即ち、ストレージデバイスの寿命を延ばすことができる。
【０００５】
一方、画像形成装置において、画像データ等のデータに対するセキュリティ確保の要求、及びプライバシー保護に対する要求は非常に高く、ストレージに記録されたスプールデータ及び保存データを完全に消去可能であることが要求されている。ＨＤＤでは、消去対象データが記録された領域にダミーデータを複数回上書きすることにで残留磁気を除去することにより、消去対象データの完全消去を行う技術が提案されている（例えば特許文献１及び２を参照）。
【０００６】
ＳＳＤでは、ＨＤＤとは異なり、１回の書き換えで消去対象データを完全に消去することが可能である。しかし、アドレス指定でデータの消去を実行したとしても、通常の書き込み処理では、上述のウェアレベリングに起因して、消去対象データを直接書き換えることができない。このため、ＳＳＤにおいて消去対象データを完全に消去するためには、完全消去に対応した特別な書き込み処理を行う必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１５３５１６号公報
【特許文献２】特開２００６−０２３８５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ＳＳＤに搭載される各フラッシュメモリでは、その特性上、データの消去は所定のブロック単位でしか行うことができない。このため、ＳＳＤに格納されたデータの完全消去を行う場合、データ消去の際のオーバヘッドに起因して、システム性能が著しく低下してしまうという課題がある。例えば、不要となったデータのサイズが、ＳＳＤに搭載されるフラッシュメモリのブロックサイズより小さい場合、消去対象のブロックに格納された、消去対象のデータ以外のデータを他のブロックへ退避させた上で、当該ブロックの消去処理を行う必要がある。また、複数のチップまたはバンクに対してインタリーブが行われることで多数のブロックにデータが分散して配置されている場合、不要なデータを消去するためには、データが分散して配置されているブロックごとに消去処理を個別に行う必要がある。
【０００９】
本発明は、上述の問題に鑑みてなされたものである。本発明は、複数のフラッシュメモリを含む半導体ストレージにデータを書き込む際に、インタリーブの実行状態を適切に制御することで、不要データの消去に起因したシステム性能の低下を防ぐ技術を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明は、例えば、情報処理装置として実現できる。本発明の一態様に係る情報処理装置は、複数のフラッシュメモリを含む半導体ストレージと、前記半導体ストレージへデータを書き込む際に、書き込み対象のデータが、当該データに関連する不要データを前記半導体ストレージから読み出せなくすべきことが設定された特定のデータであるか否かを判定する判定手段と、前記書き込み対象のデータが前記特定のデータではないと判定された場合には、前記複数のフラッシュメモリにデータを分散して書き込むインタリーブを有効にした状態で、前記書き込み対象のデータが前記特定のデータであると判定された場合には、前記インタリーブを無効にした状態で、前記書き込み対象のデータを前記半導体ストレージに書き込む書き込み手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、複数のフラッシュメモリを含む半導体ストレージにデータを書き込む際に、インタリーブの実行状態を適切に制御することで、不要データの消去に起因したシステム性能の低下を防ぐ技術を提供できる。
【図面の簡単な説明】
【００１２】
【図１】画像形成装置３００の制御系の構成例を示すブロック図。
【図２】メインコントローラ４００の構成例を示すブロック図。
【図３】操作部８００の構成例を示す図。
【図４】ＳＳＤ４１３の構成例を示すブロック図。
【図５】ＳＳＤ４１３へのデータ書き込み処理を行う際の、インタリーブの実行状態の制御手順を示すフローチャート。
【図６】ＳＳＤ４１３におけるデータ書き込み処理の手順を示すフローチャート。
【図７】通常のデータ書き込み処理及び完全消去対応のデータ書き込み処理による、ＳＳＤ４１３内の記憶領域の使用例を示す図。
【図８】画像形成装置３００がシャットダウンする際に行われる、ＳＳＤ４１３におけるデータの再配置及び不要データの消去の手順を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１４】
＜システム構成＞
図１は、本発明の実施形態に係る画像形成装置３００の制御系の構成例を示すブロック図である。以下の実施形態では、画像形成装置３００を本発明の情報処理装置の一例として機能させた例について説明する。
【００１５】
画像形成装置３００の全体を制御するメインコントローラ４００を備える。メインコントローラ４００には、原稿給送装置制御部１０１、イメージリーダ制御部２０１、プリンタ制御部３０１、折り装置制御部５０１、フィニッシャ制御部６０１、操作部８００及び外部インタフェース（Ｉ／Ｆ）４５１が接続されている。
【００１６】
メインコントローラ４００は、操作部８００または外部コンピュータ４５３から与えられた指示に基づいて、原稿給送装置制御部１０１及びイメージリーダ制御部２０１を制御する。原稿給送装置制御部１０１は、原稿給送装置（図示せず）を制御して、原稿をイメージリーダ（図示せず）による読み取り位置に給送する。また、イメージリーダ制御部２０１は、イメージリーダを制御することで、当該イメージリーダによって原稿の画像を読み取って画像データを得る。プリンタ制御部３０１は、メインコントローラ４００の制御下でプリンタ（図示せず）を制御することで、画像データに応じて、例えば、電子写真プロセスによってシートに画像形成を行う。
【００１７】
折り装置制御部５０１及びフィニッシャ制御部６０１は、メインコントローラ４００の制御下で、それぞれ折り装置（図示せず）及びフィニッシャ（図示せず）を制御することで、シートに折り処理、ステイプル処理またはパンチ穴処理等の後処理を実行する。
【００１８】
外部Ｉ／Ｆ４５１は、外部コンピュータ４５３が接続されるＩ／Ｆである。メインコントローラ４００は、外部Ｉ／Ｆ４５１によって外部バス４５２に接続され、外部バス４５２には外部コンピュータ４５３が接続されている。外部バス４５２は、例えばネットワークまたはＵＳＢ等である。
【００１９】
メインコントローラ４００は、外部Ｉ／Ｆ４５１を介して外部コンピュータ４５３からプリントデータを受信し、プリンタ制御部３０１を制御することで、当該プリントデータに応じた印刷を実行する。また、メインコントローラ４００は、後述するストレージ機器（図２のＨＤＤ４０７またはＳＳＤ４１３）に記録された画像データを、外部Ｉ／Ｆ４５１を介して外部コンピュータ４５３に送信する。
【００２０】
図２は、メインコントローラ４００の構成例を示すブロック図である。メインコントローラ４００は、ＣＰＵ４０１及びＣＰＵ４０８の２つのＣＰＵを備え、各ＣＰＵではオペレーティングシステム（以下、ＯＳ）が動作する。
【００２１】
ＣＰＵ４０１はバスブリッジ４０４と接続されている。ＣＰＵ４０１は、バスブリッジ４０４を介してＣＰＵ４０８との通信を行う。バスブリッジ４０４には、ＲＯＭ４０２、ＲＡＭ４０３、外部Ｉ／Ｆ制御部４０５、操作部制御部４０６、及びストレージ制御部４１２が接続されている。ＲＯＭ４０２にはＣＰＵ４０１の初期起動プログラムを格納される。ＲＡＭ４０３は、ＣＰＵ４０１の制御データを一時的に保持し、また、ＣＰＵ４０１による制御に伴う演算用の作業領域としても用いられる。
【００２２】
外部Ｉ／Ｆ制御部４０５は、外部Ｉ／Ｆ４５１に接続されており、外部Ｉ／Ｆ４５１の制御を行う。操作部制御部４０６は、操作部８００に接続されており、操作部８００の制御を行う。ストレージ制御部４１２には、ストレージ機器として、半導体ドライブ（ＳＳＤ）４１３と、ハードディスクドライブ（ＨＤＤ）４０７と接続される。ただし、ＨＤＤ４０７は、オプションのストレージ機器であるため、存在しない場合もありうる。ストレージ制御部４１２は、ＳＳＤ４１３及びＨＤＤ４０７を制御する。
【００２３】
ＳＳＤ４１３には、例えば、ＣＰＵ４０１及びＣＰＵ４０８で動作するＯＳを含むメインプログラムが格納される。なお、メインプログラムには、後述する図５に従った処理を実現するためのプログラムが含まれる。ストレージ制御部４１２にＨＤＤ４０７が接続されていない場合、ＳＳＤ４１３には、イメージリーダ及び外部Ｉ／Ｆ４５１により取得した画像データ、並びに操作部８００の操作に応じて編集された画像データが格納される。また、ストレージ制御部４１２にＨＤＤ４０７が接続されていない場合、ＳＳＤ４１３には、アプリケーションプログラム及びユーザプリファレンスデータ等のデータも格納される。なお、本実施形態では、ＳＳＤ４１３はフラッシュディスクとして用いられる。
【００２４】
一方、ストレージ制御部４１２にＨＤＤ４０７が接続されている場合、イメージリーダ及び外部Ｉ／Ｆ４５１により取得した画像データ、並びに操作部８００の操作に応じて編集された画像データは、ＨＤＤ４０７に格納される。また、アプリケーションプログラム及びユーザプリファレンスデータ等のデータも、ＨＤＤ４０７に格納される。ＣＰＵ４０１及びＣＰＵ４０８は、ストレージ制御部４１２を介してＨＤＤ４０７にアクセスすることができる。
【００２５】
ＣＰＵ４０８は、バスブリッジ４０４、ＲＯＭ４０９、ＲＡＭ４１０、及びデバイス制御部４１１と接続されている。ＲＯＭ４０９にはＣＰＵ４０８の初期起動プログラムが格納される。ＲＡＭ４１０は、ＣＰＵ４０８の制御データを一時的に保持し、また、ＣＰＵ４０８による制御に伴う演算用の作業領域としても用いられる。デバイス制御部４１１は、原稿給送装置制御部１０１、イメージリーダ制御部２０１、プリンタ制御部３０１、折り装置制御部５０１、及びフィニッシャ制御部６０１の制御を司る。
【００２６】
図３は、画像形成装置３００の操作部８００の構成例を示す図である。操作部８００は、表面にタッチパネルシートが貼られた液晶ディスプレイ（ＬＣＤ）９００、テンキー８０１、スタートキー８０２、ガイドキー８０５、コピーモードキー８０６、ＦＡＸキー８０７、ファイルキー８０８、及びプリンタキー８０９を有している。
【００２７】
ＬＣＤ９００には操作画面が表示される。操作画面に表示されたキーがユーザによって押下されると、タッチパネル上で押下された位置を示す位置情報が操作部８００からメインコントローラ４００に伝達される。メインコントローラ４００は、当該位置情報に応じた制御を実行する。
【００２８】
また、ユーザはテンキー８０１を用いて、例えば、コピー枚数を入力できる。ユーザが所望の条件を設定した後、スタートキー８０２を押下すると、メインコントローラ４００は、例えば、複写動作又は原稿の読取り動作を開始する。ガイドキー８０５は、各キーの機能に関する説明をＬＣＤ９００に表示するために用いられる。コピーモードキー８０６は、複写を行うために用いられる。ＦＡＸキー８０７は、ＦＡＸに関する設定を行うために用いられる。ファイルキー８０８は、ファイルデータの出力のために用いられる。プリンタキー８０９は、外部コンピュータ４５３等の外部装置から送られた画像データをプリント出力する際の設定等のために用いられる。
【００２９】
図４は、ＳＳＤ４１３の構成例を示すブロック図である。図４に示すように、ＳＳＤ４１３は、フラッシュ制御部１０００と半導体ストレージ１０１０とを備え、半導体ストレージは、複数のフラッシュメモリ１０１１を含む。フラッシュ制御部１０００は、ストレージＩ／Ｆ１００１、メモリ制御部１００２、ＣＰＵ１００５、及びＲＡＭ１００６を備える。ストレージＩ／Ｆ１００１は、ストレージ制御部４１２と接続されており、ストレージ制御部４１２との通信を行うためのモジュールである。本実施形態では、ストレージＩ／Ｆ１００１として、シリアルＡＴＡ（ＳＡＴＡ：Serial AT Attachment）Ｉ／Ｆが用いられる。
【００３０】
半導体ストレージ１０１０に含まれる各フラッシュメモリ１０１１は、メモリ制御部１００２と接続されている。メモリ制御部１００２は、ストレージＩ／Ｆ１００１を介して受信したコマンドに基づいて、フラッシュメモリ１０１１に対するデータのリード／ライトを行う。ＣＰＵ１００５は、フラッシュメモリ１０１１に保存された制御ファームウェアをＲＡＭ１００６に読み出して実行することで、メモリ制御部１００２を制御する。これにより、ＣＰＵ１００５は、後述するように、インタリーブを有効にした状態で行う、フラッシュメモリ１０１１に対する書き込み処理と、インタリーブを無効にした状態で行う、フラッシュメモリ１０１１に対する書き込み処理との切り替え制御を行う。
【００３１】
ＣＰＵ１００５及びメモリ制御部１００２は、複数のフラッシュメモリ１０１１を並列で制御するインタリーブ機能を有する。インタリーブ機能としては、バンクインタリーブとチップインタリーブが知られている。バンクインタリーブでは、複数のフラッシュメモリ１０１１内に複数のバンクを設け、チップのアドレス及びデータバスを共有しながら、チップセレクト信号によって並列リード／ライトの対象となるバンクを切り替える。一方、チップインタリーブでは、複数のフラッシュチップについて、チップセレクト信号によって並列リード／ライトの対象となるチップを切り替える。一般に、これらのインタリーブ機能によれば、インタリーブの対象となるバンクまたはチップの並列度が高ければ高いほど、見かけ上、高速にリード／ライトを行うことができる。
【００３２】
＜インタリーブの実行状態の制御＞
本実施形態に係る画像形成装置３００は、ＳＳＤ４１３に格納されているデータに対する「完全消去」を行う機能を有する。「完全消去」とは、半導体ストレージ１０１０（ＳＳＤ４１３）へのデータの書き込みの後、当該データの消去を行う際に、当該データに関連する不要データを半導体ストレージ１０１０（ＳＳＤ４１３）に残存しないように消去する動作に相当する。例えば、画像形成装置３００は、ＳＳＤ４１３に格納されているデータの完全消去を行う場合、不要となったデータが格納されたＳＳＤ４１３内のブロックからのデータの読み出しを禁止し、その後、適切なタイミングに当該ブロック内のデータを消去する。このようにして、消去処理後のブロックからアドレス指定でデータが読み出されることを防止するとともに、当該ブロック内のデータをＳＳＤ４１３内に残存させることなく確実に消去することを実現する。
【００３３】
しかし、このような完全消去を行う場合、上述のように、不要なデータの消去の際に必要となる付加的な処理に起因して、画像形成装置３００におけるシステム性能が著しく低下する可能性がある。そこで、本実施形態に係る画像形成装置３００は、ＳＳＤ４１３（半導体ストレージ１０１０）にデータを書き込む際に、複数のフラッシュメモリ１０１１にデータを分散して書き込むインタリーブの実行状態を適切に制御する。これにより、不要データの消去に起因したシステム性能の低下を防ぐことを可能にする。
【００３４】
具体的には、画像形成装置３００（ＣＰＵ１００５）は、半導体ストレージ１０１０への書き込み対象のデータが、完全消去に対応したデータであるか否かに応じて、インタリーブの実行状態を制御する。ここで、完全消去に対応したデータとは、当該データに関連する不要データを半導体ストレージ１０１０に残存しないように消去可能にすべきことが設定されたデータ（特定のデータ）に相当する。画像形成装置３００は、半導体ストレージ１０１０へデータを書き込む際に、書き込み対象のデータが完全消去に対応したデータであるか否かを判定する。更に、画像形成装置３００は、書き込み対象のデータが完全消去に対応したデータではないと判定した場合、インタリーブを有効にした状態で、（通常の）データの書き込み処理を行う。一方、画像形成装置３００（ＣＰＵ１００５）は、書き込み対象のデータが完全消去に対応したデータであると判定した場合、インタリーブを無効にした状態で、データの書き込み処理を行う。
【００３５】
このように、完全消去に対応したデータをＳＳＤ４１３に書き込む場合には、インタリーブは実行されず、データが複数のフラッシュメモリ１０１１に分散して格納されることがない。このため、不要データの消去の際に上述のような付加的な処理が必要となることがなく、不要データの消去に起因したシステム性能の低下を防ぐことが可能である。その一方で、完全消去に対応していないデータをＳＳＤ４１３に書き込む場合には、インタリーブを有効にした状態で通常の書き込み処理を実行するため、高速な書き込み処理を実現できる。
【００３６】
インタリーブが無効の状態である場合、画像形成装置３００は、書き込み対象のデータを、複数のフラッシュメモリ１０１１に分散して書き込むのではなく、例えば、いずれかのフラッシュメモリにおける連続した記憶領域（ブロック）に書き込めばよい。これにより、１つのフラッシュメモリから一括して不要データを消去することが可能になるため、データの完全消去を効率良く実現できるようになる。
【００３７】
以下では、図５〜図７を参照して、上述のような処理を実現するための実施例についてより具体的に説明する。
【００３８】
図５は、ＳＳＤ４１３へのデータ書き込み処理を行う際にメインコントローラ４００のＣＰＵ４０１によって実行される、インタリーブの実行状態の制御手順を示すフローチャートである。図５に示す各ステップの処理は、ＣＰＵ４０１がＳＳＤ４１３またはＨＤＤ４０７に格納されたプログラムをＲＡＭ４０３に読み出して実行することによって実現される。
【００３９】
ＣＰＵ４０１は、Ｓ１０１で、ＣＰＵ４０１上で動作中のＯＳからＳＳＤ４１３に対するデータの書き込み要求を受け付けると、Ｓ１０２で、画像形成装置３００が完全消去モード（所定の動作モード）に設定されているか否かを判定する。ここで、完全消去モードは、ＳＳＤ４１３（半導体ストレージ１０１０）へのデータの書き込み後に、当該データについての完全消去を可能にする動作モードに相当する。即ち、完全消去モードは、ＳＳＤ４１３へ書き込まれたデータに関連する不要データをＳＳＤ４１３に残存しないように消去可能にする動作を行う動作モードに相当する。
【００４０】
Ｓ１０２で、ＣＰＵ４０１は、画像形成装置３００が完全消去モードに設定されていると判定した場合には、処理をＳ１０３に進める。一方、ＣＰＵ４０１は、画像形成装置３００が完全消去モードに設定されていないと判定した場合には、処理をＳ１０６に進める。
【００４１】
Ｓ１０３で、ＣＰＵ４０１は、ＳＳＤ４１３への書き込み対象のデータのデータアドレスを確認する。ここで、データアドレスとは、図７を用いて後述するように、メインコントローラ４００において、ＳＳＤ４１３内に配置されているデータを特定するために使用される、ＬＢＡ（Logical Block Addressing）に対応したアドレスである。Ｓ１０４で、ＣＰＵ４０１は、書き込み対象のデータに対して指定されているデータアドレスが所定の範囲内のアドレスであるか否かを判定する。ＣＰＵ４０１は、書き込み対象のデータに対して指定されているデータアドレスが、所定の範囲内のアドレスである場合には、Ｓ１０５に処理を進め、所定の範囲内のアドレスではない場合には、処理をＳ１０６に進める。
【００４２】
本実施形態では、Ｓ１０４で用いられるデータアドレスの所定の範囲は、ＳＳＤ４１３の各フラッシュメモリ１０１１における、セキュアデータ（特定のデータ）の配置用に予め設けられた特定のパーティション（所定の記憶領域）に対応する。本実施形態では、この特定のパーティションに対してデータの書き込み処理を行う場合には、インタリーブを無効にし、それ以外のパーティションに対してデータの書き込み処理を行う場合には、インタリーブを有効にする。したがって、Ｓ１０４では、書き込み対象のデータの配置先として、各フラッシュメモリの特定のパーティションが指定されているか否かに応じて、処理がＳ１０５またはＳ１０６に進められることになる。
【００４３】
Ｓ１０６で、ＣＰＵ４０１は、通常の書き込み命令（通常のライトコマンド）を生成する。一方、Ｓ１０５で、ＣＰＵ４０１は、通常の書き込み命令に、書き込み対象のデータが完全消去に対応したデータ（特定のデータ）であることを示す完全消去フラグを設定することで、拡張書き込み命令（拡張ライトコマンド）を生成する。なお、拡張書き込み命令を通常の書き込み命令から識別するための、完全消去フラグが設定される領域としては、ＳＡＴＡまたはＡＴＡ規格のストレージ・インタフェースにおいてはフィーチャー・レジスタが利用されうる。
【００４４】
Ｓ１０５またはＳ１０６の後、ＣＰＵ４０１は、Ｓ１０７で、生成した書き込み命令（通常の書き込み命令または拡張書き込み命令）と、ＳＳＤ４１３への書き込み対象データとを、ストレージ制御部４１２を介してＳＳＤ４１３へ送信する。このようにして、ＣＰＵ４０１は、ＳＳＤ４１３へのデータ書き込み（データライト）を実行する。
【００４５】
なお、図５に示す破線で囲まれたＳ１０３及びＳ１０４の処理については、後述するＳ２０２で代替の処理が実行されてもよい。その場合、ＣＰＵ４０１は、Ｓ１０２の判定結果にかかわらず、処理をＳ１０６に進め、通常の書き込み命令を生成し、ＳＳＤ４１３に送信する。
【００４６】
次に、図６（Ａ）〜（Ｃ）は、ＳＳＤ４１３におけるデータ書き込み処理の手順を示すフローチャートである。図６（Ａ）〜（Ｃ）に示す各ステップの処理は、ＳＳＤ４１３のＣＰＵ１００５が、フラッシュメモリ１０１１に格納されたプログラムをＲＡＭ１００６に読み出して実行することによって実現される。
【００４７】
まず、図６（Ａ）に示すように、ストレージ制御部４１２からＳＳＤ４１３へ書き込み命令が送信されると、Ｓ２０１で、ＣＰＵ１００５は、フラッシュ制御部１０００内のストレージＩ／Ｆ１００１を介して、当該書き込み命令を受信する。次に、Ｓ２０２で、ＣＰＵ１００５は、受信したデータ書き込み命令に完全消去フラグが存在するか否かを判定し、存在すると判定した場合にはＳ２０３へ、存在しないと判定した場合にはＳ２０４へ、処理を進める。即ち、ＣＰＵ１００５は、書き込み対象のデータが、完全消去に対応したデータ（特定のデータ）である場合には、処理をＳ２０３に進め、完全消去に対応したデータではない場合には、処理をＳ２０４に進める。
【００４８】
Ｓ２０３では、ＣＰＵ１００５は、図６（Ｂ）に示す手順に従って、インタリーブを無効にした状態で行う完全消去対応のデータ書き込み処理によって、フラッシュメモリ１０１１に対してデータの書き込みを行う。一方、Ｓ２０４では、図６（Ｃ）に示す手順に従って、インタリーブを有効にした状態で行う通常のデータ書き込み処理によって、フラッシュメモリ１０１１に対してデータの書き込みを行う。Ｓ２０３またはＳ２０４の後、ＣＰＵ１００５はデータの書き込みを終了する。
【００４９】
このように、ＣＰＵ１００５は、Ｓ１０２及びＳ１０４における判定結果に対応する書き込み命令に従って、インタリーブを無効または有効にした状態で、書き込み対象のデータを半導体ストレージ１０１０（フラッシュメモリ１０１１）に書き込む。なお、上述のようにＳ１０３及びＳ１０４の処理が実行されない場合には、Ｓ２０２においてその代替の処理が実行される。その場合、Ｓ２０２で、ＣＰＵ１００５は、書き込み命令に完全消去フラグが存在するか否かを判定するのではなく、書き込み命令に含まれる、書き込み対象のデータのデータアドレスに基づく判定処理を、Ｓ１０４と同様に実行すればよい。
【００５０】
また、ＣＰＵ４０１からＳＳＤ４１３に送信される書き込み命令には、上述の完全消去フラグに代えて、インタリーブを禁止する（無効にする）か否かを示すインタリーブ禁止フラグが設定されてもよい。この場合、Ｓ２０２では、ＣＰＵ４０１は、受信したデータ書き込み命令にインタリーブ禁止フラグが存在するか否かを判定し、存在すると判定した場合にはＳ２０３へ、存在しないと判定した場合にはＳ２０４へ、処理を進めればよい。
【００５１】
（Ｓ２０３の処理）
完全消去対応の書き込み処理は、図６（Ｂ）に示す手順に従って実行される。まず、Ｓ２１１で、ＣＰＵ１００５は、フラッシュメモリ１０１１の記憶領域内の書き換え対象ブロックに存在する、差分書き込みの対象となるデータを、未使用のブロックに一時的に保存する。
【００５２】
次に、Ｓ２１２で、ＣＰＵ１００５は、書き換え対象ブロック内で、更新されないデータと、差分書き込みの対象となるデータとについて、新ブロックへの書き込みを行う。完全消去対応のデータ書き込み処理の場合には、ＳＳＤ４１３へのデータの書き込みの際にインタリーブを実行しない。このため、Ｓ２１２における書き込み処理では、複数のフラッシュメモリ１０１１のいずれか（チップまたはバンク）の連続した領域に、書き込み対象のデータが連続して配置された状態となるように書き込まれる。
【００５３】
最後に、Ｓ２１３で、ＣＰＵ１００５は、不要になったデータが存在する、書き換え前のブロック及び差分書き込みの対象となるデータが一時的に保存されたブロックに対して、読み出しを禁止することを示すマーキングを行う。これにより、ＣＰＵ１００５は、それらのブロックからのデータの読み出しを禁止する。その結果、それらのブロックに対してアドレス指定でデータの読み出しが行われたとしても、ダミーデータしか読み出せなくなる。以上により、完全消去対応のデータ書き込み処理が終了する。
【００５４】
（Ｓ２０４の処理）
通常のデータ書き込み処理は、図６（Ｃ）に示す手順に従って実行される。まず、Ｓ２２１で、ＣＰＵ１００５は、ＳＳＤ４１３（フラッシュメモリ１０１１）の記憶領域内の書き換え対象ブロックに存在する、差分書き込みの対象となるデータを、差分データ保存用のブロックに保存（追記）する。
【００５５】
次に、Ｓ２２２で、ＣＰＵ１００５は、差分書き込みの対象となるデータのサイズがブロックサイズを超えたか否かを判定し、ブロックサイズを超えていない場合、通常のデータ書き込み処理を終了し、ブロックサイズを超えている場合、処理をＳ２２３に進める。
【００５６】
Ｓ２２３で、ＣＰＵ１００５は、書き換え対象のブロック内で、更新されないデータと、差分書き込みの対象となるデータと、ブロックサイズを超えた分のデータとについて、新ブロックへの書き込みを行う。通常のデータ書き込み処理の場合、データの書き込みの際にインタリーブを実行する。このため、Ｓ２２３における書き込み処理では、複数のチップまたはバンクに、書き込み対象のデータが分散して配置された状態となるように、同時に書き込まれる。
【００５７】
最後に、Ｓ２２４で、ＣＰＵ１００５は、不要になったデータが存在する、書き換え前のブロック差分書き込みの対象となるデータが一時的に保存されたブロックに対して、ブラックであることを示すマーキングを行う。これにより、ＣＰＵ１００５は、それらのブロックを未使用の状態に設定することで、他の用途に使用可能とする。以上により、通常のデータ書き込み処理が終了する。
【００５８】
次に、図７は、通常のデータ書き込み処理及び完全消去対応のデータ書き込み処理による、ＳＳＤ４１３（半導体ストレージ１０１０）内の記憶領域の使用例を示す図である。図７（Ａ）は、通常のデータ書き込み処理が行われた場合、図７（Ｂ）は、完全消去対象のデータ書き込み処理が行われた場合をそれぞれ示している。
【００５９】
図７では、ＳＳＤ４１３における２個のフラッシュメモリ１０１１を使用する場合を示し、各フラッシュメモリ１０１１内の各行は、１ブロック分のデータを格納可能な領域を示す。フラッシュメモリ１０１１内のシステム領域には、ＣＰＵ１００５によってＲＡＭ１００６に読み出されて実行されるプログラムが格納される。また、フラッシュメモリ１０１１内のデータ領域には、ＣＰＵ４０１及びＣＰＵ４０８によって使用されるデータが格納される。図７に示すデータ領域に格納されている各データにはそれぞれ異なる数値が与えられており、これは、メインコントローラ４００においてデータを特定するために使用される、ＬＢＡに対応したアドレスを示す。
【００６０】
図７では、各フラッシュメモリ１０１１のデータ領域は３つの領域（パーティション）に分割されている（領域１，２及び３）。領域１及び２には、インタリーブ配置の対象となるデータ７０１が格納される、即ち、インタリーブを有効にした状態でデータが格納される。このため、領域１及び２には、奇数ＬＢＡのデータと偶数ＬＢＡのデータとが、それぞれ物理的に異なるブロックに格納されている。領域１及び２には、ＬＢＡのアドレス１〜５０００、５００１〜８０００に対応するデータがそれぞれ格納される。
【００６１】
一方、領域３は、連続配置の対象となるデータ７０２が配置される、セキュアデータ（特定のデータ）の格納用のパーティションに相当する。領域３には、連続配置の対象となるデータ７０２が格納される。インタリーブを無効にした状態では、図７（Ｂ）に示すように、領域３には、ＬＢＡのアドレスが連続するデータが連続して配置されるように格納される。一方、インタリーブを有効にした状態では、図７（Ａ）に示すように、領域３であっても、ＬＢＡのアドレスが連続するデータが、２個のフラッシュメモリ１０１１に分散して格納される。
【００６２】
このように、フラッシュメモリ１０１１内の領域ごとに、インタリーブを無効（禁止）にするか否かを予め設定してもよい。即ち、画像形成装置３００が完全消去モードに設定されている場合に、ＬＢＡのアドレスが連続するデータが連続して配置される領域（領域３）を、予め定めてもよい。その場合、予め定められた領域以外の領域（領域１及び２）については、インタリーブを常に有効にすればよい。このような設定は、フラッシュ制御部１０００に対して予め行われうる。
【００６３】
本実施形態によれば、完全消去に対応したデータが格納された領域については、システム性能の低下を防ぎつつ、データの消去を一括して確実に行うことが可能になる。その一方で、完全消去に対応していない通常のデータが格納される領域については、インタリーブを行うことで高速なデータの書き込み処理を実現できる。即ち、ＳＳＤ４１３（半導体ストレージ１０１０）にデータを書き込む際に、インタリーブの実行状態を適切に制御することができるため、不要データの消去に起因したシステム性能の低下を防ぎつつ、高速なデータの書き込みを実現できる。
【００６４】
＜画像形成装置のシャットダウン時の制御＞
図８は、画像形成装置３００がシャットダウンする際に行われる、ＳＳＤ４１３におけるデータの再配置及び不要データの消去の手順を示すフローチャートである。図８に示す各ステップの処理は、ＳＳＤ４１３のＣＰＵ１００５が、フラッシュメモリ１０１１に格納されたプログラムをＲＡＭ１００６に読み出して実行することによって実現される。
【００６５】
ＳＳＤ４１３のＣＰＵ１００５は、Ｓ３０１で、ＣＰＵ４０１からシャットダウン命令を受信すると（即ち、シャットダウンが指示されると）、Ｓ３０２で、シャットダウンシーケンスに移行する。次に、Ｓ３０３で、ＣＰＵ１００５は、画像形成装置３００における完全消去モードに関する設定が変更されているか否かを判定する。即ち、ＣＰＵ１００５は、次回のシステム起動時に、インタリーブの実行状態をシャットダウン前とは異なる状態に変更するか否かを判定する。Ｓ３０３で、ＣＰＵ１００５は、完全消去モードに関する設定が変更されていると判定した場合、処理をＳ３０４に進め、変更されていないと判定した場合、処理をＳ３０９に進める。
【００６６】
Ｓ３０４で、ＣＰＵ１００５は、フラッシュメモリ１０１１内の完全消去の対象領域に関する情報（完全消去の対象となるデータアドレスの範囲）と、完全消去モードが有効か否かを示す情報とを取得する。ＣＰＵ１００５は、取得した情報をフラッシュメモリ１０１１のシステム領域に保存する。次に、Ｓ３０５で、ＣＰＵ１００５は、フラッシュメモリ１０１１内の各ブロックに格納されたデータの再配置のために、ブロックごとの摩耗度を示す摩耗情報を取得する。
【００６７】
その後、Ｓ３０６で、ＣＰＵ１００５は、フラッシュメモリ１０１１のシステム領域に保存した情報を読み出して、次回起動時にインタリーブの実行状態を無効から有効の状態に変更する設定であるか否かを判定する。ここで、ＣＰＵ１００５は、次回起動時にインタリーブを有効の状態にする設定であると判定した場合、処理をＳ３０７に進める。一方、ＣＰＵ１００５は、次回起動時にインタリーブの実行状態を有効から無効の状態に変更する設定であると判定した場合、処理をＳ３１１に進める。
【００６８】
Ｓ３０７〜Ｓ３０９で、ＣＰＵ１００５は、画像形成装置３００のシャットダウンの前に、複数のフラッシュメモリ１０１１に配置されているデータを、変更後のインタリーブの実行状態に応じて当該複数のフラッシュメモリ１０１１において再配置する。
【００６９】
具体的には、Ｓ３０７では、ＣＰＵ１００５は、フラッシュメモリ１０１１内の完全消去の対象領域（図７の領域３）について、ブロックごとに、当該ブロックに格納されたデータを、異なるチップまたはバンクの空きブロックのいずれに再配置するかを決定する。即ち、ＣＰＵ１００５は、ブロックごとのデータの再配置先を、異なるチップまたはバンク内においていずれかのブロックに決定することで、複数のフラッシュメモリ１０１１において分散した空き領域にデータが再配置されるようにする。
【００７０】
一方、Ｓ３０８では、ＣＰＵ１００５は、フラッシュメモリ１０１１内の完全消去の対象領域（図７の領域３）について、有効になっているインタリーブを解除するように、データの再配置先のブロックを決定する。具体的には、ＣＰＵ１００５は、完全消去対象の領域について、同一のチップまたはバンク内の空きブロックにおいて、データが連続したブロックに格納されるように、各ブロックのデータの再配置先となるブロックを決定する。これにより、複数のフラッシュメモリ１０１１のいずれかにおいて連続した空き領域にデータが再配置されるようにする。
【００７１】
その後、Ｓ３０９で、更新前のブロック及び更新中の差分ブロックについて、Ｓ３０７またはＳ３０８で決定されたフラッシュメモリ１０１１内の再配置先のブロックに、データの再配置（書き込み）を行う。データの書き込みが完了すると、ＣＰＵ１００５は、処理をＳ３１０に進める。Ｓ３１０で、ＣＰＵ１００５は、読み出し禁止のマーキングが存在するブロックに格納された、データの再配置後に複数のフラッシュメモリ１０１１に残存する不要データを、画像形成装置３００のシャットダウンの前に一括で消去する。データの消去が完了すると、ＣＰＵ１００５は処理を終了する。
【００７２】
ＣＰＵ１００５は、Ｓ３０３からＳ３０９に処理を進めた場合、読み出し禁止のマーキングが存在するブロックに格納された、不要データを一括で消去し、処理を終了する。
【００７３】
なお、図８において破線で示すＳ３０５の処理については、必ずしも実行される必要はない。ＣＰＵ１００５は、Ｓ３０５の処理を実行しない（即ち、ブロックごとの摩耗情報を取得しない）場合、Ｓ３０７またはＳ３０８では、ブロックごとの摩耗情報を考慮せずに、単に空きブロックを再配置先として決定すればよい。一方、ＣＰＵ１００５は、ブロックごとの摩耗情報を取得した場合、Ｓ３０７では、異なるチップ／バンクの内で最も摩耗度が少ないブロックが優先して使用されるように、再配置先のブロックを決定する。また、Ｓ３０８では、ＣＰＵ１００５は、摩耗度の少ないブロックがより多く含まれるチップ／バンクが優先して使用されるように、再配置先のブロックを決定する。
【００７４】
このように、図８に示す処理では、次回のシステム起動後に、フラッシュメモリ１０１１内のデータ配置を、インタリーブの実行状態に応じたデータ配置とすることが可能である。これにより、システム起動後に、不要データの消去に起因したシステム性能の低下を防ぐことが可能になる。また、フラッシュメモリ１０１１内のブロックの摩耗度に基づいてデータの再配置を行うことにより、特定のブロックのみが極端に摩耗する状況を回避することが可能になる。
【００７５】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワークまたは各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015076070.tif 000003
【図２】
2015076070.tif 000004
【図３】
2015076070.tif 000005
【図４】
2015076070.tif 000006
【図５】
2015076070.tif 000007
【図６】
2015076070.tif 000008
【図７】
2015076070.tif 000009
【図８】
2015076070.tif 000010