(57)【要約】【課題】コントローラ搭載型の不揮発性メモリを適用した機器において一定値を超えるパフォーマンス低下の発生を抑制することができる制御装置を提供する。【解決手段】画像形成装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＴＣ１０９を有する。ＣＰＵ１０１は、不揮発性メモリデバイス１１０に対して実行されたデータの書き込み容量を管理し、不揮発性メモリデバイスに対して実行されたデータアクセスに要した時間を計測して管理する。ＣＰＵ１０１は、容量とデータアクセスに要した時間とに応じて導出された単位時間当たりのパフォーマンス値が所定の基準値を満たさないと判別した場合、無効データに対する物理消去処理の実行を指示する。【選択図】図１
2017059110.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する不揮発性のメモリ部と、前記メモリ部に対するデータの書き込み及び読み出しを制御するメモリコントローラであって、前記メモリ部の物理アドレスと論理アドレスを関連付けて管理し、且つ、前記物理アドレスに格納されるデータが有効データであるか無効データであるかを管理するとともに、前記メモリ部における各メモリセルそれぞれの書き換え回数を表す情報を管理するメモリコントローラとを有する不揮発性メモリデバイスを制御する制御装置であって、
前記制御装置は、
前記不揮発性メモリデバイスに対して実行されたデータの書き込み容量を管理する書込容量管理部と、
前記不揮発性メモリデバイスに対して実行されたデータアクセスの要した時間を計測して管理する処理時間計測部と、
前記書込容量管理部で管理される容量と前記処理時間計測部で管理される時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示する制御部と、を有することを特徴とする、
制御装置。
【請求項２】
前記制御部は、前記不揮発性メモリデバイスから前記情報を取得して当該情報が規定値を超えているか否かを判別し、超えていると判別した場合は前記物理消去する処理を無効データの一部を物理消去する処理に変更することを特徴とする、
請求項１に記載の制御装置。
【請求項３】
前記制御部は、前記不揮発性メモリデバイスから前記情報を取得して当該情報が規定値を超えているか否かを判別し、超えていると判別した場合は前記物理消去処理を実行しないように制御することを特徴とする、
請求項１に記載の制御装置。
【請求項４】
前記制御部は、予め設定された、前記物理消去処理の実行を制限する時間帯においては当該物理消去処理を実行しないように制御することを特徴とする、
請求項１に記載の制御装置。
【請求項５】
前記制御部は、画像形成装置から受信したジョブが所定のジョブ数を超える時間帯を前記時間帯として設定することを特徴とする、
請求項４に記載の制御装置。
【請求項６】
前記書込容量管理部は、前記不揮発性メモリデバイスに対して実行されたデータの総書き込み容量を管理し、
前記制御部は、前記総書き込み容量と前記処理時間計測部で管理される時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示することを特徴とする、
請求項１に記載の制御装置。
【請求項７】
前記制御部は、前記物理消去処理が実行された後のメモリ部の容量と前記所定の基準値との差分値を導出して、導出結果に基づいて前記基準値を更新することを特徴とする、
請求項６に記載の制御装置。
【請求項８】
前記制御部は、前記不揮発性メモリデバイスに対して実行されるデータの書き込みがシーケンシャルライト、又は、ランダムライトであるかを判別し、前記所定の基準値を当該判別結果に応じて特定することを特徴とする、
請求項１乃至７いずれか一項に記載の制御装置。
【請求項９】
前記制御部は、前記メモリ部へのデータ書き込みに対する制御をデータ読み込みに対する制御として実施することを特徴とする、
請求項１乃至８いずれか一項に記載の制御装置。
【請求項１０】
データを格納する不揮発性のメモリ部と、前記メモリ部に対するデータの書き込み及び読み出しを制御するメモリコントローラであって、前記メモリ部の物理アドレスと論理アドレスを関連付けて管理し、且つ、前記物理アドレスに格納されるデータが有効データであるか無効データであるかを管理するとともに、前記メモリ部における各メモリセルそれぞれの書き換え回数を表す情報（寿命情報）を管理するメモリコントローラとを有する不揮発性メモリデバイスを有する画像形成装置であって、
前記画像形成装置は、
前記不揮発性メモリデバイスに対して実行されたデータの書き込み容量を管理する書込容量管理部と、
前記不揮発性メモリデバイスに対して実行されたデータアクセスに要した時間を計測して管理する処理時間計測部と、
前記書込容量管理部で管理される容量と前記処理時間計測部で管理される時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示する制御部と、を有することを特徴とする、
画像形成装置。
【請求項１１】
データを格納する不揮発性のメモリ部と、
前記メモリ部に対するデータの書き込み及び読み出しを制御するメモリコントローラであって、前記メモリ部の物理アドレスと論理アドレスを関連付けて管理し、且つ、前記物理アドレスに格納されるデータが有効データであるか無効データであるかを管理するとともに、前記メモリ部における各メモリセルそれぞれの書き換え回数を表す情報（寿命情報）を管理するメモリコントローラと、
前記不揮発性メモリデバイスに対して実行されたデータの書き込み容量を管理する書込容量管理部と、
前記不揮発性メモリデバイスに対して実行されたデータアクセスに要した時間を計測して管理する処理時間計測部と、
前記書込容量管理部で管理される容量と前記処理時間計測部で管理される時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示する制御部と、を有することを特徴とする、
メモリ装置。
【請求項１２】
データを格納する不揮発性のメモリ部と、前記メモリ部に対するデータの書き込み及び読み出しを制御するメモリコントローラであって、前記メモリ部の物理アドレスと論理アドレスを関連付けて管理し、且つ、前記物理アドレスに格納されるデータが有効データであるか無効データであるかを管理するとともに、前記メモリ部における各メモリセルそれぞれの書き換え回数を表す情報を管理するメモリコントローラとを有する不揮発性メモリデバイスを制御する制御装置の制御方法であって、
前記不揮発性メモリデバイスに対して実行されたデータの書き込み容量を管理する工程と、
前記不揮発性メモリデバイスに対して実行されたデータアクセスに要した時間を計測して管理する工程と、
前記容量と前記データアクセスに要した時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示する工程と、を有することを特徴とする、
制御方法。
【請求項１３】
請求項１２記載の制御方法をコンピュータで実行可能に構成されたことを特徴とする、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリコントローラを搭載した不揮発性メモリデバイスにおけるデータリフレッシュの制御技術に関する。
【背景技術】
【０００２】
デジタル電化製品では、大容量、且つ、低コストなどのメリットが大きい不揮発性メモリデバイス、例えばＮＡＮＤ型フラッシュメモリが多く使用されている。
また、ＮＡＮＤ型フラッシュメモリでは、書き換え回数が進行することによる半導体セル（メモリセル）の劣化に伴いデータ保持特性が悪化することが知られているが、メモリを制御するコントローラの制御方法を工夫することで信頼性を保つことができる。例えば、論理物理アドレス変換と呼ばれる制御方法がある。具体的には書き換え（消去）を進行させてないために、書き換え命令の際に参照するアドレスをデータが存在しないブロック（フリーブロック）のアドレスに変換する。これにより、実際の物理データ（物理アドレスに格納されるデータ）は消去させない、つまり物理消去を行わないという制御方法である。
また、現在ではメモリコントローラをＩＣ内部に搭載した不揮発性メモリデバイス（コントローラ搭載型不揮発性メモリ）が普及している。
【０００３】
また、ＮＡＮＤ型フラッシュメモリは構造上、データの上書き処理を行うことはできない。したがって、新しいデータを書くためにはフリーブロックを設ける必要がある。しかしながら、メモリの使用進行に伴い論理物理アドレス変換によって物理データが散在した状態になった場合、新しくデータを書くためのフリーブロックがなくなってしまう。そのため、有効なデータを別のブロックにコピーして、不要データを消去してフリーブロックを作る処理（ガベージコレクションとも称される）が実行されるように制御される。
なお、ガベージコレクションは、不揮発性メモリデバイスにおいてはデータアクセス時に実行される。
【０００４】
また、これらの処理が実行された場合、不揮発性メモリデバイスの処理時間が増えたり、メモリの使い方によってはアクセス時間が増加したりする場合がある。つまり、ガベージコレクションなどの処理実行による不揮発性メモリデバイスのパフォーマンス低下を防ぐことが必要になる。
【０００５】
例えば、不揮発性メモリのデータ書き換えの際に推定論理境界を超えるデータの書き込みが発生した場合、当該メモリのキャッシュ領域を活用して過度なガベージコレクションの発生を抑制するという制御方法がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１５６６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ガベージコレクションのような不揮発性メモリデバイスにおいて実行される処理は、当該デバイスを製造する各社によって仕様が様々である。仮に同等のスペックを有するコントローラであっても、内部処理が各社多様であるためパフォーマンスの変動パターンも様々になる。したがって、不揮発性メモリデバイスのパフォーマンス低下を抑制するためには当該デバイス毎にその特性を詳細に把握して制御するための固有のコントローラが必要になる、という課題が残る。
【０００８】
本発明は、上記の点に鑑みてなされたものであり、コントローラ搭載型の不揮発性メモリを適用した機器において一定値を超えるパフォーマンス低下の発生を抑制することができる制御装置を提供することを、主たる目的とする。
【課題を解決するための手段】
【０００９】
本発明の制御装置は、データを格納する不揮発性のメモリ部と、前記メモリ部に対するデータの書き込み及び読み出しを制御するメモリコントローラであって、前記メモリ部の物理アドレスと論理アドレスを関連付けて管理し、且つ、前記物理アドレスに格納されるデータが有効データであるか無効データであるかを管理するとともに、前記メモリ部における各メモリセルそれぞれの書き換え回数を表す情報を管理するメモリコントローラとを有する不揮発性メモリデバイスを制御する制御装置であって、前記制御装置は、前記不揮発性メモリデバイスに対して実行されたデータの書き込み容量を管理する書込容量管理部と、前記不揮発性メモリデバイスに対して実行されたデータアクセスの要した時間を計測して管理する処理時間計測部と、前記書込容量管理部で管理される容量と処理時間計測部で管理される時間とに応じて導出された単位時間当たりの書込容量が所定の基準値を満たさないと判別した場合、前記無効データに対する物理消去処理の実行を指示する制御部と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、コントローラ搭載型の不揮発性メモリデバイスを適用した機器において一定値を超えるパフォーマンス低下の発生を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る画像形成装置のハードウェア構成の一例を示す図。
【図２】画像形成装置の機能構成の一例を説明するための図。
【図３】ｅＭＭＣのメモリアクセス時におけるパフォーマンスのレベルを説明するためのグラフ。
【図４】画像形成装置の制御手順の一例を示すフローチャート。
【図５】図４に示すステップＳ４０２の処理（パフォーマンス測定）の処理手順の一例を示すフローチャート。
【図６】一次格納データ、および任意の設定値など、画像形成装置が管理する各種データを説明するための図。
【図７】図４に示すステップＳ４０７の処理（無効物理データ消去）の処理手順の一例を示すフローチャート。
【図８】第２実施形態に係る画像形成装置の制御手順の一例を示すフローチャート。
【図９】第３実施形態に係る画像形成装置の制御手順の一例を示すフローチャート。
【図１０】更新無効物理データ消去処理実行容量の値の更新処理の一例を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付の図面を参照して、本発明を実施する形態について説明する。
なお、以下の実施形態において示す構成は一例であり、本発明は図示された構成に限定されるものではない。
本実施形態に係る画像形成装置は、外部記憶装置の一例であるｅＭＭＣ（Embedded
Multimediacard）（登録商標）などのメモリコントローラ（制御回路）を有する不揮発性メモリデバイスを制御する制御装置としても機能するものとして説明を進める。なお、メモリコントローラ（制御回路）を有する不揮発性メモリデバイスはｅＭＭＣの他にもＳＳＤ（Solid State Drive）、ＵＦＳ（Universal Flash Storage）などがある。
【００１３】
［第１実施形態］
図１は、本実施形態に係る画像形成装置のハードウェア構成の一例を示す図である。
画像形成装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random
Access Memory）１０２、メモリホストＩ／Ｆ（インタフェース）１０３、表示部Ｉ／Ｆ１０４、表示部１０５、操作部Ｉ／Ｆ１０６、操作部１０７を含んで構成される。また、画像形成装置１００は、外部Ｉ／Ｆ１０８、ＲＴＣ１０９、スキャンＩ／Ｆ１１８、プリンタＩ／Ｆ１１９、ｅＭＭＣ１１０を有する
【００１４】
画像形成装置１００は、データの書き込み及び読み出しを制御するメモリコントローラを有する不揮発性メモリデバイスの一例であるｅＭＭＣ１１０を制御する。なお、ｅＭＭＣ１１０は、後述するメモリホストＩ／Ｆ、バス１２０を介して画像形成装置１００の各構成機器と接続されており、当該画像形成装置１００は、ｅＭＭＣ１１０にアクセスしてデータの読み出し、並びに、書き込みを行う。
【００１５】
ＣＰＵ１０１は、画像形成装置１００全体を制御する中央演算装置である。ＲＡＭ１０２は、ＣＰＵ１０１の動作のためのシステムワークメモリである。ＣＰＵ１０１は、ｅＭＭＣ１１０からプログラムを取得してＲＡＭ１０２上に展開し、演算や各種制御などを行う。また、ＲＡＭ１０２は、ｅＭＭＣ１１０に対して実行されたデータの書き込み容量を管理する書込容量管理部としても機能する。
【００１６】
メモリホストＩ／Ｆ１０３は、ＣＰＵ１０１の制御によりｅＭＭＣ１１０とのデータの入出力を行うインタフェースである。表示部Ｉ／Ｆ１０４は、ＣＰＵ１０１の制御により表示部１０５へ表示信号を送付するインタフェースである。表示部１０５は、液晶パネルやＬＥＤなどから成り、表示や点灯／点滅／消灯することでユーザに情報を伝達する。
【００１７】
操作部Ｉ／Ｆ１０６は、操作部１０７と接続しており、操作部１０７からの電気信号をＣＰＵ１０１に送付するインタフェースである。操作部１０７は、タッチパネルやキーなどから成り、ユーザの操作による情報をＣＰＵ１０１に伝達する。外部Ｉ／Ｆ１０８は、ＵＳＢ等のインタフェースにより、外部とのデータ入出力を行うことができるように構成されている。ＲＴＣ（リアルタイムクロック）１０９は、時間を管理するために搭載された現在時刻を刻み続けるための機能部である。なお、ＲＴＣ１０９は、システム本体の電源がＯＦＦの状態でも動作するように電池でも駆動可能な構成となっている。また、ＲＴＣ１０９、ＲＡＭ１０２は、ｅＭＭＣ１１０に対して実行されたデータアクセスに要した時間を計測して管理する処理時間計測部として機能する。
【００１８】
スキャンＩ／Ｆ１１８は、図示しないスキャナユニットを介した原稿読み取り後の画像データをＣＰＵ１０１へ送信するなどの制御を行うインタフェースである。なお、画像データは、ＲＡＭ１０２、あるいはｅＭＭＣ１１０へ格納されたり、プリンタＩ／Ｆ１１９に送信されて印刷実行されたりする。
プリンタＩ／Ｆ１１９は、図示しない印刷ユニットを介した画像データの印刷を実行するなどの制御を行うインタフェースである。これらの各モジュールは、バス１２０を介してＣＰＵ１０１と接続されており、ＣＰＵ１０１はこれらが相互に連携して動作するように制御する。
【００１９】
ｅＭＭＣ１１０は、メモリＩ／Ｆ１１１、メモリコントローラ１１２、メモリ部１１３を含んで構成される。
メモリＩ／Ｆ１１１は、画像形成装置１００との間でデータの入出力を行うインタフェースである。メモリコントローラ１１２は、メモリ部１１３と接続しており受信した各種コマンドを解釈してそのコマンドに応じた動作を行う。
なお、基本的なコマンドとしては、データの読み出しを指示する読出コマンド、データの書き込みを指示する書込コマンド、データの消去を指示する消去コマンドがあり、これらコマンドによって所定のアドレスのデータの読み書きや消去が実行される。
【００２０】
また、メモリコントローラ１１２は、それらのデータアクセス時には、自身が持つ内部メモリにデータ管理テーブル１１４を参照してＣＰＵ１０１の制御によってアクセスされた論理アドレスと実際にデータが格納される物理アドレスとの関連付けを行う。
メモリコントローラ１１２は、また、消去コマンドによって論理アドレスの割り付けが変更された無効データが格納される物理アドレスの管理を行う。
このようにメモリコントローラ１１２は、メモリ部１１３に対するデータの書き込み及び読み出しを制御する。メモリコントローラ１１２は、また、メモリ部１１３の物理アドレスと論理アドレスを関連付けて管理し、且つ、物理アドレスに格納されるデータが有効データであるか無効データであるかを管理する。なお、参照するデータの格納場所は、メモリ部１１３内となるように構成しても良い。
【００２１】
メモリ部１１３は、データを記録する不揮発性のメモリ領域であり、ユーザ領域１１５と冗長領域１１６などの複数のセル（メモリセル）により構成される。データの記録は、メモリコントローラ１１２の制御によりメモリ部１１３内のセルに電荷を保持するか否かにより制御される。また、メモリ部１１３のいずれの領域が使用されるかは、メモリコントローラ１１２が制御する。なお、基本的にメモリホストＩ／Ｆ１０３に制御されるのはユーザ領域１１５である。また、本実施形態の説明においては、システムが動作するためのメインプログラムはユーザ領域１１５に格納されているものとする。
【００２２】
メモリ部１１３のセルは、データの読み書きや消去を繰り返すうちに劣化が進むことは既に述べたとおりである。そのため、メモリ部１１３のユーザ領域１１５において耐用寿命（以下、寿命と称す）に到達したセルは、不良セルとして未使用にする。これに対してメモリ部１１３の冗長領域１１６のセルが代替使用されることになる。なお、メモリコントローラ１１２は、メモリ部１１３における各メモリセルそれぞれの書き換え回数を表す情報（寿命情報）を管理する。
【００２３】
寿命管理部１１７は、このようなセルの劣化具合を示す情報として、書き換え回数、余剰ブロック数などに関するデータを寿命情報として管理する。
寿命管理部１１７は、寿命確認コマンドを受け取った場合、寿命情報としてセル毎の書き換え回数に応じた寿命の評価値、冗長領域１１６の余剰ブロック数に応じた耐用寿命の評価値などをレスポンスとして返す。また、ウェアレベリングによってセル毎の書き換え回数は平均化される。そのため、セルの書き換え回数からみた寿命の評価値は平均値で扱われる。
【００２４】
以下、本実施形態においては、セルが寿命に到達したと想定される書き換え回数を寿命書換回数と称す。寿命管理部１１７は、この寿命書換回数に対してどの程度書き換えが行なわれたのかを表す値（書換回数の進行度合いを示す値）を、１０［％］刻みでメモリセル毎の書き換え回数に応じた寿命の評価値として出力する。以下、この１０［％］刻みの値を「書換回数進行度」と称す。
なお、１０［％］刻みは現在の一例であり、５［％］刻みや２０［％］刻みであっても良い。また、メモリセルの書き換え回数からみたセルの寿命を評価可能な情報は、例えばメモリセル毎の書き換え回数の値を平均した値そのものでも良く、書き換え回数の進行度合いを複数段階のレベルで表した値であっても良い。
【００２５】
寿命管理部１１７は、また、書き換え回数が寿命書換回数に達した場合、現在の書き換え回数がメモリデバイスの寿命を上回っていることを表すステータスを出力する。なお、寿命を上回ったことを示すステータスが出力された場合、それ以降のメモリデバイスの動作は保証外の実力（性能）で動作していることになる。
【００２６】
寿命管理部１１７は、また、メモリ部１１３の冗長領域１１６における余剰ブロック数に応じた寿命の評価値を出力する。具体的には、ユーザ領域１１５と同様に、使用したブロックに対する割合を複数段階のレベルで表した値を評価値として出力する。
【００２７】
なお、本実施形態においては、余剰ブロックの８０［％］が代替ブロックとして使用されるとＷａｒｎｉｎｇステータスになり、余剰ブロックの１００［％］が代替ブロックとして使用されるとＵｒｇｅｎｔステータスになるものとする。Ｕｒｇｅｎｔステータスになった場合、ｅＭＭＣ１１０はそれ以降データの書き込み、又は、消去が出来ない状態になる。そのため、ｅＭＭＣ１１０は読み出しだけが可能な状態になる。ホスト側である画像形成装置１００においては、上述した書換回数進行度の値を取得することによりｅＭＭＣ１１０で保証される寿命が残りどれくらいなのかを把握することができる。
【００２８】
図２は、画像形成装置１００の機能構成の一例を説明するための図である。
画像形成装置１００は、メモリドライバ２０１、データアクセスパフォーマンス測定部２０２、寿命判断部２０３、無効物理データ消去部２０４、オペレーティングシステム（ＯＳ）２０５を有する。
【００２９】
メモリドライバ２０１は、メモリホストＩ／Ｆ１０３、バス１２０を介してｅＭＭＣ１１０に対する各種データアクセスを可能にする。
データアクセスパフォーマンス測定部２０２は、パフォーマンス値を導出する。具体的には、ＣＰＵ１０１がメモリドライバ２０１を介してｅＭＭＣ１１０に対してデータアクセスを実行するときに、そのデータアクセスに要した時間（経過時間）を計測して、計測結果に基づいてパフォーマンス値を導出する。
なお、アクセス時間の計測は、例えばｅＭＭＣ１１０がＢｕｓｙ状態（処理中）である時間を計測することにより行うことができる。その他にも、例えばＣＰＵ１０１が有する内部タイマのカウントに基づいて計測する構成であっても良い。このようにパフォーマンス値は、単位時間当たりの書き込み容量に応じた値である。
【００３０】
また、パフォーマンス値は、異なる種類の書き込み方法、例えばシーケンシャルライト、ランダムライトそれぞれの場合がある。データアクセスパフォーマンス測定部２０２は、また、導出されたパフォーマンス値が想定されたパフォーマンス値を満たしているか否かについて閾値を用いて判別する。
なお、判別に用いる閾値は、満たすべきパフォーマンス値を第一のパフォーマンス値（後述する図３中のパフォーマンス値３０４）として、それを超える第二のパフォーマンス値（後述する図３中のパフォーマンス値３０５）を任意の値として予め設定する。また、書き込み方法、つまりシーケンシャルライト、又は、ランダムライトではその特性が異なる。そのため、判別結果に応じてそれぞれに対して異なるパフォーマンス値を閾値として特定する。
【００３１】
寿命判断部２０３は、メモリドライバ２０１に対して寿命確認の要求を行う。寿命確認の要求を受け取ったメモリドライバ２０１は、メモリホストＩ／Ｆ１０３を介して寿命確認コマンドを発行し、ｅＭＭＣ１１０のメモリコントローラ１１２の寿命管理部１１７が管理する寿命情報を取得する。
そして、受信した寿命情報が、想定された寿命を上回っているか否かを判別する。なお、想定された寿命は、様々な評価指標の結果から任意の値を設定する。
【００３２】
無効物理データ消去部２０４は、データアクセスパフォーマンス測定部２０２が導出したパフォーマンス値が所定の閾値を満たさなかった場合、メモリドライバ２０１に無効物理データ削除（物理消去処理の実行）の要求を通知する。
無効物理データの削除要求時には、寿命判断部２０３の状態を確認して無効物理データの全てを消去するか否か、あるいは部分的に一部の物理データを消去するか否かの判別が行われる。無効物理データ消去部２０４は、判別結果に対応した無効物理データの削除を要求する。
【００３３】
無効物理データの削除要求を受け取ったメモリドライバ２０１は、メモリホストＩ／Ｆ１０３を制御して、その結果に対応した無効物理データの削除（物理消去処理の実行）を実行する。
なお、削除要求を実行する際には、所定の時間ｅＭＭＣ１１０がＢｕｓｙ状態（処理中）になるため、画像形成装置１００のアクセス繁盛時間帯や、ジョブのスタック状況を鑑みてタイミングを操作する構成にしても良い。また、上記各制御部は、例えばＣＰＵ１０１がｅＭＭＣ１１０に格納されているプログラムをＲＡＭ１０２に展開して実行するオペレーティングシステム２０５を介して制御する。
【００３４】
図３は、ｅＭＭＣ１１０のメモリアクセス時におけるパフォーマンスのレベルを説明するためのグラフである。なお図３に示すグラフは、ｅＭＭＣ１１０のメモリアクセスをシーケンシャルライトとして、縦軸をメモリデバイスの使用状況とし、横軸を単位時間あたりの書き込み容量（Ｎ［ＭＢ/ｓ］）として表わしている。
【００３５】
図３では、Ａ社、Ｂ社、Ｃ社の各メモリデバイスそれぞれの使用状況として、初期状態３０１、９０［％］使用時３０２、無効物理データ消去時３０３に分けて示している。以下、初期状態３０１、９０［％］使用時３０２、無効物理データ消去時３０３の各状態について説明する。
【００３６】
例えば、メモリコントロールのアルゴリズムは各社様々のものを使用している。
初期状態３０１においては、各社それぞれのメモリデバイスが近似するパフォーマンス値でほぼ横並びに並んでいる。メモリデバイスの使用が進行して、例えば９０［％］使用時３０２では、各社それぞれのパフォーマンス値に違いが生じてくることがグラフから見て取れる。これはｅＭＭＣ１１０のメモリコントローラ１１２がメモリ部１１３の使用状況を把握して、エラー訂正（ＥＣＣ）、ガベージコレクション、書き換え回数の平均化（ウェアレベリング）等の内部処理を行うために生じる傾向である。したがって、各社それぞれのメモリデバイスにおいて差分は存在するが、使用が進行することに伴いパフォーマンスが低下する傾向があるという点は共通する。
【００３７】
さらに使用が進行し、パフォーマンスがさらに低下した際に無効物理データの消去が実行されたとする。この場合、無効物理データ消去時３０３に示すように、パフォーマンスが改善される。これは無効物理データが削除されてフリーブロックが作成されたことにより、データアクセス時の内部処理が減少したために生じる傾向である。
以下、ｅＭＭＣ１１０の一定値を超えるパフォーマンス低下を抑制するための制御手順について詳細に説明する。
【００３８】
図４、図５、及び図７は、画像形成装置１００の制御手順の一例を示すフローチャートである。これら各処理は、主としてＣＰＵ１０１がｅＭＭＣ１１０に格納されているプログラムをＲＡＭ１０２に展開して実行することにより実現される。
また、図６は、後述する一次格納データ、および任意の設定値など、各処理においてＣＰＵ１０１が例えばＲＡＭ１０２に保存する各種データ（パラメータ毎の格納データ）を説明するための図である。このようにして各パラメータは画像形成装置により管理される。
初めに、図４を用いて上記制御手順における画像形成装置１００の基本動作フローを説明する。
【００３９】
ＣＰＵ１０１は、ｅＭＭＣ１１０への書き込み実行の指示を受信したか否かを判別する（Ｓ４０１）。受信した場合（Ｓ４０１：Ｙｅｓ）、ＣＰＵ１０１は、メモリホストＩ／Ｆ１０３を介してデータの書き込みを実行する。ＣＰＵ１０１は、パフォーマンス測定を開始する（Ｓ４０２）。以下、パフォーマンス測定の具体的な処理内容について、図５に示すフローチャートを用いて詳細に説明する。
【００４０】
図５は、図４に示すステップＳ４０２の処理（パフォーマンス測定）の処理手順の一例を示すフローチャートである。なお、パフォーマンス測定の処理は、ＣＰＵ１０１がデータアクセスパフォーマンス測定部２０２を介して実行する。
【００４１】
ＣＰＵ１０１は、書き込みデータ容量をパフォーマンス導出用の一次格納データとしてＲＡＭ１０２に保存（図６：書き込みデータ容量６０４）する（Ｓ５０１）。ＣＰＵ１０１は、ｅＭＭＣ１１０が処理中に発行するＢｕｓｙ信号を受信する（Ｓ５０２）。なお、ｅＭＭＣ１１０は、書き込み実行中になるとＢｕｓｙ信号がアサートする。
【００４２】
ＣＰＵ１０１は、ステップＳ５０２の処理において受信したＢｕｓｙ信号の時間計測を開始する（Ｓ５０３）。ＣＰＵ１１０は、書き込みが開始された時のタイムスタンプをパフォーマンス導出用の一次格納データとしてＲＡＭ１０２に保存（図６：書き込み開始時間６０１）する。
ＣＰＵ１０１は、ｅＭＭＣ１１０へのデータ書き込みが完了したか否かを判別する（Ｓ５０４）。書き込み完了と判別した場合（Ｓ５０４：Ｙｅｓ）、ＣＰＵ１０１は、データ書き込みにかかった時間を書き込み時間として保存（図６：書き込み時間６０３）する（Ｓ５０５）。  なお、書き込み時間の導出は以下に示すようなフローで行うことができる。
【００４３】
Ｂｕｓｙ信号がディアサートされたことをメモリホストＩ／Ｆ１０３を介してＣＰＵ１０１が検知したとき、書き込み終了時のタイムスタンプをパフォーマンス導出の一次格納データとしてＲＡＭ１０２に保存（図６：書き込み終了時間６０２）する。また、ステップ５０３の処理において取得した時間とステップ５０５の処理において取得した時間からデータ書き込み動作における書き込み時間を導出する。ＣＰＵ１０１は、導出した書き込み時間をパフォーマンス導出用の一次格納データとしてＲＡＭ１０２に保存（図６：書き込み時間６０３）する。
なお、書き込み時間の導出は、タイムスタンプ方式に限るものではない。例えば、図２において説明したＣＰＵ１０１が有する内部タイマのカウントに基づくものであってもよい。
【００４４】
図５の説明に戻り、ＣＰＵ１０１は、データ書き込みのパフォーマンス値を導出する（Ｓ５０６）。具体的には、ＣＰＵ１０１は、ステップ５０１の処理において取得した書き込みデータ容量と、ステップ５０５の処理において導出した書き込み時間（データアクセスに要した時間）に基づいて、単位時間あたりの書き込み容量をパフォーマンス実測値として導出する。ＣＰＵ１０１は、導出結果をＲＡＭ１０２に保存（図６：算出パフォーマンス実測値６０５）する。
【００４５】
ＣＰＵ１０１は、ステップＳ４０２の処理において実行されたデータ書き込みがシーケンシャルライトであるか否かを判別する（Ｓ５０７）。
シーケンシャルライトであると判別した場合（Ｓ５０７：Ｙｅｓ）、ＣＰＵ１０１は、導出したパフォーマンス実測値をシーケンシャルライトパフォーマンス実測値として保存（図６：シーケンシャルライトパフォーマンス実測値６０６）する（Ｓ５０８）。
また、そうでない場合（Ｓ５０７：Ｎｏ）、導出したパフォーマンス実測値をランダムライトパフォーマンス実測値として保存（図６：ランダムライトパフォーマンス実測値６０７）する（Ｓ５０９）。その後、ＣＰＵ１０１は、図４に示すステップＳ４０３の処理へ移行する。
【００４６】
図４の説明に戻り、ＣＰＵ１０１は、ステップＳ４０２の処理においてＲＡＭ１０２に保存した各種データに基づいて、パフォーマンス基準値を満たすか否かを判別するための比較を開始する（Ｓ４０３）。ＣＰＵ１０１は、ＲＡＭ１０２に保存されたパフォーマンス実測値６０６、６０７を取得する（Ｓ４０４）。ＣＰＵ１０１は、予め設定され、ＲＡＭ１０２に保存されたシーケンシャルライト第二のパフォーマンス基準値６０９、ランダムライト第二のパフォーマンス基準値６１１を取得する（Ｓ４０５）。
【００４７】
ＣＰＵ１０１は、ＲＡＭ１０２に保存されたシーケンシャルライトパフォーマンス実測値６０６を取得する。そして、シーケンシャルライトパフォーマンス実測値６０６の値がシーケンシャルライト第二のパフォーマンス基準値６０９の値未満であるか否かを判別する（Ｓ４０６）。
ここでは、シーケンシャルライトパフォーマンス実測値６０６が２５［ＭＢ／ｓ］であり、閾値である第二のパフォーマンス基準値６０９の値３０［ＭＢ／ｓ］を下回っている。
【００４８】
また、ＣＰＵ１０１は、ＲＡＭ１０２に保存されたランダムライトパフォーマンス実測値６０７を取得し、ランダムライトパフォーマンス実測値６０７の値がランダムライト第二のパフォーマンス基準値６１１の値未満であるか否かを判別する（Ｓ４０６）。
ここでは、ランダムライトパフォーマンス実測値６０７が１０［ＭＢ／ｓ］であり、閾値であるランダムライト第二のパフォーマンス基準値６１１の値１２［ＭＢ／ｓ］を下回っている。
【００４９】
このようにしてＣＰＵ１０１は、ステップＳ４０４、４０５の処理において取得した各値を比較して基準値を下回っているか否かを判別する（Ｓ４０６）。
共に基準値を下回っていると判別した場合（Ｓ４０６：Ｙｅｓ）、ＣＰＵ１０１は、本基本動作フローを終了する。また、少なくともいずれか一方が基準値を超えていると判別した場合（Ｓ４０６：Ｎｏ）、ＣＰＵ１０１は、無効物理データ消去を開始する（Ｓ４０７）。以下、無効物理データ消去の具体的な処理内容について、図７に示すフローチャートを用いて詳細に説明する。
【００５０】
図７は、図４に示すステップＳ４０７の処理（無効物理データ消去）の処理手順の一例を示すフローチャートである。なお、無効物理データ消去の処理は、主としてＣＰＵ１０１が寿命判断部２０３、無効物理データ消去部２０４を介して実行される。
【００５１】
ＣＰＵ１０１は、書換回数進行度の確認を実施する（Ｓ７０１）。具体的には、寿命確認コマンドをメモリホストＩ／Ｆ１０３を介してｅＭＭＣ１１０に送信する。
なお、寿命確認コマンドを受け取ったｅＭＭＣ１１０は、メモリコントローラ１１２を介して、寿命管理部１１７に管理されている書換回数進行度のデータをレスポンスする。レスポンスを受信したＣＰＵ１０１は、その値に基づきＲＡＭ１０２に保存されている現在の書換回数進行度６１２の値を更新する。
【００５２】
ＣＰＵ１０１は、更新後の書換回数進行度６１２の値が、予め設定した書換回数進行度規定値６１３の値を超えているか否かを判別する（Ｓ７０２）。超えていないと判別した場合（Ｓ７０２：Ｙｅｓ）、ＣＰＵ１０１は、無効物理データの消去を実施する（Ｓ７０３）。また、そうでない場合（Ｓ７０２：Ｎｏ）、ＣＰＵ１０１は、ステップ７０４の処理へ移行する。
【００５３】
なお、無効物理データとは、論理物理アドレス変換によって参照するアドレスが移されて疑似的に消された状態になっているデータである。これは、メモリコントローラ１１２によって管理されており、所定の命令により削除することが可能である。この命令は、例えばコマンド「Ｓａｎｉｔｉｚｅ」などである。
【００５４】
無効物理データの消去は、ＣＰＵ１０１が無効物理データ削除コマンドをメモリホストＩ／Ｆ１０３を介してｅＭＭＣ１１０に送信して実施される。無効物理データ削除コマンドを受信したメモリコントローラ１１２は、自身で管理する無効な物理データに割り当てられたアドレスを含むメモリ部１１３内の該当ブロックのデータを削除する。
なお、削除対象のブロックに有効物理データ（論理アドレスが割り当てられている）が存在する場合、フリーブロックにまとめてコピーされた後に該当ブロックのデータが削除される。物理アドレスに格納されるデータが有効データである場合にはこの様な処理が行われる。
このようにして無効物理データが削除されると、フリーブロックの整理が行われてメモリコントローラ１１２による内部処理が減少する。その結果、前述したようにメモリデバイスのパフォーマンスが改善される。
【００５５】
図７の説明に戻り、超えていると判別した場合（Ｓ７０２：Ｎｏ）、ＣＰＵ１０１は、縮退処理を行う（Ｓ７０４）。縮退処理は、書換回数進行度が規定値を上回ってしまい、全てのメモリ部１１３の領域の無効物理データの削除を行う余裕がないために行われる処理である。この処理により部分的に無効物理データの消去が行われ、フリーブロックを作り出すことによりパフォーマンスの改善を図ることができる。
なお、寿命以上の保証外の状態であると判断してパフォーマンス改善を実施せずに終了するように制御することもできる。
そして、ＣＰＵ１０１は、図４に示す基本動作フローに戻り、一連の処理を終了する。
【００５６】
このように本実施形態に係る画像形成装置は、コントローラ搭載型の不揮発性メモリデバイスにおける想定外のパフォーマンス低下の発生、独特な動作をするデバイスのパフォーマンス低下などの発生を回避させることができる。また、仕様が多岐にわたる不揮発性メモリデバイスを有する機器において、当該不揮発性メモリデバイスが一定値（所定の基準値）を超えてパフォーマンスが低下してしまうことを抑制することができる。
【００５７】
［第２実施形態］
図４、図５、及び図７を用いて説明したｅＭＭＣ１１０に対するパフォーマンス低下抑制制御の基本動作フローでは、無効物理データの消去を行うと所定の時間ｅＭＭＣ１１０がＢｕｓｙ状態（処理中）になる。ここでは、無効物理データの消去実行のタイミングを変更可能に構成された画像形成装置について説明する。
具体的には、画像形成装置１００における無効物理データの消去処理の実施を制限する処理実行禁止時間帯を設定する場合を例に挙げて説明を進める。
【００５８】
図８は、本実施形態に係る画像形成装置１００の制御手順の一例を示すフローチャートである。なお、図７に示す無効物理データ消去処理の各処理とは異なる処理を中心に図８を用いて説明する。また、図８に示すステップＳ８０４〜Ｓ８０７の各処理は、それぞれ図７に示すステップＳ７０１〜Ｓ７０４に対応した同じ処理であるためその説明を省略する。
【００５９】
ＣＰＵ１０１は、無効物理データ消去部２０４の処理が呼び出され、無効物理データ消去の実行指示の受け付けを契機に、画像形成装置１００の状態が処理実行禁止時間帯に含まれる状態であるか否か判別する（Ｓ８０１）。
なお、処理実行禁止時間帯は、予め設定された処理実行禁止の時間帯を設ける、受信ジョブのログから所定のジョブ数を超える時間帯をアクセス繁盛の時間とみなし処理実行禁止の時間帯とする、などが考えられる。処理実行禁止の時間帯の設定はこれらに限定するものではない。
【００６０】
なお、本実施形態の説明においては、一時間単位で処理禁止の時間帯を設定するものとする。設定する時間は、処理実行禁止時間帯６１４としてＲＡＭ１０２に保存する。また、処理実行禁止時間帯６１４は、所定の期間間隔で更新されるものとする。
【００６１】
ＣＰＵ１０１は、ＲＡＭ１０２に保存された処理実行禁止時間帯６１４を取得し、取得した処理実行禁止時間帯６１４に画像形成装置１００の状態が該当すると判別した場合（Ｓ８０１：Ｙｅｓ）、図４に示す基本動作フローに戻り、一連の処理を終了する。
また、そうでないと判別した場合（Ｓ８０１：Ｎｏ）、画像形成装置１００で実行されるジョブがスタックしているか否かを判別する（Ｓ８０２）。
【００６２】
ＣＰＵ１０１は、ジョブがスタックされていないと判別した場合（Ｓ８０２：Ｎｏ）、ステップＳ８０４の処理へ進む。また、そうでない場合（Ｓ８０２：Ｙｅｓ）、ジョブ完了まで待機する（Ｓ８０３）。待機時間の経過後、ステップＳ８０４の処理へ進む。
【００６３】
このよに、画像形成装置１００おけるアクセス繁盛の時間帯、あるいはジョブがスタックされている場合にはユーザのジョブ実施を重要視した処理を実現することができる。パフォーマンス改善に係る処理は、例えばユーザが画像形成装置１００を使用していない場合に実行するように制御される。
【００６４】
［第３実施形態］
ここでは、ｅＭＭＣ１１０に対する総書き込み容量（累積書き込み容量）に基づいてパフォーマンスが低下するタイミングを推測して、この推測結果に基づいて無効物理データ消去をする画像形成装置について説明する。
【００６５】
図９は、本実施形態に係る画像形成装置１００の制御手順の一例を示すフローチャートである。
ＣＰＵ１０１は、ｅＭＭＣ１１０に対する総書き込み容量６１５をパラメータとして管理し、総書き込み容量６１５の値が基本無効物理データ消去処理実行容量６１６の値に達したことを契機に無効物理データ消去の処理を開始する。
なお、基本無効物理データ消去処理実行容量６１６の値は、パフォーマンス低下の状況はメモリコントローラ１１２の内部処理によるため厳密に容量のみによる推測は難しいが、様々な評価を行いその傾向を把握することで設定可能なものである。また、これらの値は、その他の各種パラメータと同様にＲＡＭ１０２に保存される。
【００６６】
ＣＰＵ１０１は、ｅＭＭＣ１１０への書き込み実行指示を受け付けたか否かを判別する（Ｓ９０１）。メモリホストＩ／Ｆ１０３を介して、データの書き込み実施の指示を受け付けたことを契機に本フローが開始される。
【００６７】
ＣＰＵ１０１は、ステップＳ９０１の処理において実行される書き込みのデータ容量を、総書き込み容量６１５に加算して保存する（Ｓ９０２）。ＣＰＵ１０１は、総書き込み容量６１５の値が更新無効物理データ消去処理実行容量６１７に達したか否かを判別する（Ｓ９０３）。なお、この場合の更新無効物理データ消去処理実行容量６１７には、最初は基本無効物理データ消去処理実行容量６１６の値が格納される。また、更新無効物理データ消去処理実行容量６１７は、後述する図１０において説明する動作フローによって更新される。
【００６８】
ＣＰＵ１０１は、更新無効物理データ消去処理実行容量６１７の値に達していると判別した場合（Ｓ９０３：Ｙｅｓ）、図４に示すステップＳ４０７の処理、つまり図７あるいは図８を用いて説明した無効物理データの消去処理に移行する。
【００６９】
図１０は、更新無効物理データ消去処理実行容量６１７の値の更新処理の一例を示すフローチャートである。
ＣＰＵ１０１は、図４に示すステップＳ４０７の処理（無効物理データの消去処理）が実行されたか否かを判別する（Ｓ１００１）。無効物理データの消去処理が行われた場合（Ｓ１００１：Ｙｅｓ）、ＣＰＵ１０１は、ステップＳ１００２の処理に移行する。ＣＰＵ１０１は、無効物理データ消去後のｅＭＭＣ１１０におけるユーザ領域１１５の容量を確認する（Ｓ１００２）。例えば、容量情報の取得は次のようにして行われる。
【００７０】
例えば、容量情報の取得は、ＣＰＵ１０１がメモリホストＩ／Ｆ１０３を介してｅＭＭＣ１１０に容量確認コマンドを送信する。そして、容量確認コマンドを受け取ったｅＭＭＣ１１０側では、メモリコントローラ１１２が管理するユーザ領域１１５の容量情報をＣＰＵ１０１へレスポンスする。このレスポンスを受け取ったＣＰＵ１０１は、ＲＡＭ１０２上で管理するユーザ領域容量６１８のパラメータを更新する。
【００７１】
図１０の説明に戻り、ＣＰＵ１０１は、ステップＳ１００２の処理において取得したユーザ領域容量６１８の値と基本無効物理データ消去処理実行容量６１６の値との差分容量（差分値）を算出する。そして、算出結果を更新無効物理データ消去処理実行容量６１７のパラメータの値として更新する（Ｓ１００３）。
以上によって、図９に示す処理において使用される更新無効物理データ消去処理実行容量６１７の値を状況に応じて動的に変更することが可能になる。
【００７２】
上記説明した実施形態は、本発明をより具体的に説明するためのものであり、本発明の範囲が、これらの例に限定されるものではない。なお、上記実施形態の説明ではデータ書き込み動作を例に挙げてその説明を進めたが、その他にも、例えばデータ読み込み動作に対しても同様の方法を適用することができる。つまり、ＣＰＵ１０１が実施するメモリ部１１３へのデータ書き込みに対する制御を、メモリ部１１３からのデータ読み込みに対する制御として実施可能に構成することもできる。
【００７３】
また、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、システム又は装置のコンピュータにおける１つ以上のプロセッサーがコンピュータプログラムを読出して実行可能に構成することもできる。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ：Application Specific Integrated Circuits）によっても実現可能である。
【符号の説明】
【００７４】
１００・・・画像形成装置、１０１・・・ＣＰＵ、１０２・・・ＲＡＭ、１０３・・・メモリホストＩ／、１０４・・・表示部Ｉ／Ｆ、１０５・・・表示部、１０６・・・操作部Ｉ／Ｆ、１０７・・・操作部、１０８・・・外部Ｉ／Ｆ、１０９・・・ＲＴＣ、１１８・・・スキャンＩ／Ｆ、１１９・・・プリンタＩ／Ｆ、１１０・・・ｅＭＭＣ。
【図１】
2017059110.tif 000003
【図２】
2017059110.tif 000004
【図４】
2017059110.tif 000005
【図５】
2017059110.tif 000006
【図６】
2017059110.tif 000007
【図７】
2017059110.tif 000008
【図８】
2017059110.tif 000009
【図９】
2017059110.tif 000010
【図１０】
2017059110.tif 000011
【図３】
2017059110.tif 000012