(57)【要約】【課題】パーティションのサイズ（ブロック数）にあわせ、自動的かつ常に、パーティションのスペアブロック数を適切な数に設定する。【解決手段】情報処理装置は、ブロック単位でデータの消去が可能であり、複数のパーティションが設けられたフラッシュメモリーと、データ消去を制御し、発生した不良ブロックをスペアブロックに置き換え、パーティションのスペアブロック数を設定する制御回路を含む。フラッシュメモリーの起動処理のとき、制御回路は、パーティションのブロック数を認識し、ブロック数に基準割合を乗じて得た値よりも大きい数をパーティションのスペアブロック数に設定する。【選択図】図６
2018081626.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティションが設けられたフラッシュメモリーと、
前記フラッシュメモリーの読み書きを制御し、データ消去を制御し、発生した不良ブロックをスペアブロックに置き換え、前記パーティションのスペアブロック数を設定する制御回路と、
を含み、
前記フラッシュメモリーの起動処理のとき、前記制御回路は、前記パーティションのブロック数を認識し、前記ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数を前記パーティションの前記スペアブロック数に設定することを特徴とする情報処理装置。
【請求項２】
前記制御回路は、前記ブロック数に予め定められた基準割合を乗じて得た値よりも大きい最小の整数を前記スペアブロック数に設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記フラッシュメモリーの起動処理のとき、前記制御回路は、サブシステムをアタッチし、
前記制御回路は、前記サブシステムにより、前記フラッシュメモリーの各ブロックの消去回数を管理してウェアレベリングを行い、
前記制御回路は、前記サブシステムのアタッチの前に、前記パーティションのうち、前記サブシステム上で動作させる特定パーティションの前記ブロック数を認識し、前記特定パーティションの前記ブロック数に前記基準割合を乗じて得た値に基づき前記特定パーティションの前記スペアブロック数を設定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御回路は、カーネルコンフィグレーションで設定された前記特定パーティションの前記スペアブロック数を、前記アタッチ時に求めた前記スペアブロック数に書き換えることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記サブシステムはＵＢＩサブシステムであることを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
印刷を行う印刷部と、
ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティションが設けられたフラッシュメモリーと、
前記フラッシュメモリーの読み書きを制御し、ブロック単位でのデータ消去を制御し、発生した不良ブロックをスペアブロックに置き換え、前記パーティションのスペアブロック数を設定する制御回路と、
を含み、
前記フラッシュメモリーの起動処理のとき、前記制御回路は、前記パーティションのブロック数を認識し、前記ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数を前記パーティションの前記スペアブロック数に設定することを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリーを含む情報処理装置、画像形成装置に関する。
【背景技術】
【０００２】
情報（データ）を処理、記憶する装置には、フラッシュデバイスが搭載されることがある。フラッシュデバイスの各ブロックの消去回数には制限がある。このようなフラッシュデバイスでは、読み書きしているうちに正しくデータを保持できないブロック（不良ブロック）が発生することがある。不良ブロックが増え、必要な記憶容量が確保できなくなる場合がある。
【０００３】
特許文献１には、フラッシュデバイスの寿命に関する技術が記載されている。具体的に、特許文献１には、揮発性の主記憶手段と、ブロック単位に書き込み回数の制限数がある不揮発性の補助記憶手段を含み、画像データを処理し、主記憶手段に画像データを書き込む領域があると判断した場合に当該画像データを主記憶手段に書き込み、主記憶手段に画像データを書き込む領域がないと判断した場合に画像データを補助記憶手段に書き込み、補助記憶手段のブロックのうち書き込み回数が制限数に達した不良ブロックを検出し、不良ブロックの数が所定の数に達した場合、補助記憶手段への書き込みを規制する画像形成装置が記載されている。この構成により、不揮発性の記憶手段の寿命を延ばそうとする（特許文献１：請求項１、段落［０００７］）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−０５５４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複合機、プリンター、複写機、ファクシミリ装置のような画像形成装置にも、フラッシュメモリーが搭載される。フラッシュメモリーは、フラッシュデバイス、フラッシュＲＯＭ、半導体不揮発性メモリーと称されることもある。フラッシュメモリーには、ブロック単位でデータを消去するものがある。言い換えると、ブロック内の一部のデータのみを消去することができない。例えば、ＮＡＮＤフラッシュメモリーが該当する。
【０００６】
フラッシュメモリーでは、先天的に（製造当初から）不良ブロックが含まれることがある。また、後天的に（使用中に）不良ブロックが発生することもある。不良ブロックは読み書きに使用できない。不良ブロックの数だけ容量が減る。そこで、スペアブロックを用意しておくことがある。不良ブロックの代わりにスペアブロックが使用される。これにより、不良ブロックによる容量不足が生じにくくなる。また、不良ブロックが発生したフラッシュメモリーを直ちに交換せずにすむ。フラッシュメモリーを継続使用することができる。
【０００７】
不良ブロックのワースト数（フラッシュメモリーに含まれる不良ブロックの最大数）は、フラッシュメモリーの仕様として定義される場合がある。ここで、フラッシュメモリーの記憶領域は、複数のパーティションに分けられることがある。各パーティションにワースト数分のスペアブロックを用意すると、スペアブロックの全容量が大きくなりすぎる。そこで、ワースト数程度のスペアブロックをそれぞれのパーティションに配分することが考えられる。通常、不良ブロックの位置に大きな偏りはない。そのため、スペアブロック数を、パーティションのサイズ（ブロック数）に応じた数にすることが考えられる。例えば、パーティションのサイズが大きいほど、スペアブロック数を多くする。
【０００８】
パーティションのスペアブロック数は、起動時のカーネルコンフィグレーションで設定される場合がある。カーネルの起動用ファイルにスペアブロック数が定義される。カーネルコンフィグレーションで起動用ファイルが参照される。その結果、パーティションのスペアブロック数が設定される。ここで、パーティションのサイズ変更がなされることがある。変更後のパーティションのサイズに応じた値にスペアブロック数を変更する必要がある。パーティションのサイズを変更した場合、起動用ファイル内のスペアブロック数の変更作業が必要である。しかし、パーティションのサイズ変更作業と起動用ファイルの変更作業は別作業である。そのため、起動用ファイルの変更作業が忘れられる場合がある。
【０００９】
その結果、サイズが大きくなったパーティションでは、スペアブロック数が少な過ぎる状態になることがある。不良ブロック数がスペアブロック数よりも多くなり得る。つまり、データ格納不可の発生リスクが高くなる。反対に、サイズが小さくなったパーティションでは、スペアブロック数が多すぎる状態になることもある。必要以上に多いスペアブロックの確保は無駄である。このように、パーティションのサイズ変更後、スペアブロック数が不適切となる場合があるという問題がある。
【００１０】
なお、特許文献１記載の技術は、パーティションのサイズ変更に関する記載はない。従って、上記の問題を解決することはできない。
【００１１】
上記問題点を鑑み、本発明は、パーティションのサイズ（ブロック数）にあわせ、自動的かつ常に、パーティションのスペアブロック数を適切な数に設定する。
【課題を解決するための手段】
【００１２】
上記目的を達成するために請求項１に係る情報処理装置は、フラッシュメモリーと制御回路を含む。前記フラッシュメモリーは、ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティションが設けられる。前記制御回路は、前記フラッシュメモリーの読み書きを制御する。前記制御回路は、データ消去を制御し、発生した不良ブロックをスペアブロックに置き換える。前記制御回路は、前記パーティションのスペアブロック数を設定する。前記フラッシュメモリーの起動処理のとき、前記制御回路は、前記パーティションのブロック数を認識する。前記制御回路は、前記ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数を前記パーティションの前記スペアブロック数に設定する。
【００１３】
また、上記目的を達成するために請求項６に係る画像形成装置は、印刷部、フラッシュメモリー、制御回路を含む。前記印刷部は印刷を行う。前記フラッシュメモリーは、ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティションが設けられる。前記制御回路は、前記フラッシュメモリーの読み書きを制御し、ブロック単位でのデータ消去を制御し、発生した不良ブロックをスペアブロックに置き換える。前記制御回路は、前記パーティションのスペアブロック数を設定する。前記フラッシュメモリーの起動処理のとき、前記制御回路は、前記パーティションのブロック数を認識し、前記ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数を前記パーティションの前記スペアブロック数に設定する。
【発明の効果】
【００１４】
本発明によれば、パーティションのスペアブロック数をパーティションのブロック数にあわせた数（適切な数）に自動的に設定することができる。パーティションのサイズ変更があっても、パーティションのスペアブロック数を適切な数で保つことができる。
【図面の簡単な説明】
【００１５】
【図１】実施形態に係る複合機の一例を示す図である。
【図２】実施形態に係るフラッシュメモリーの一例を示す図である。
【図３】実施形態に係る特定パーティションでの階層構造の一例を示す図である。
【図４】実施形態に係るＵＢＩサブシステムの動作の一例を示す図である。
【図５】実施形態に係るフラッシュメモリーでのパーティションのサイズ変更の一例を示す図である。
【図６】実施形態に係る情報処理装置での特定パーティションのスペアブロック数の設定の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を図１〜図６を用いて説明する。制御回路１、フラッシュメモリー２を含む情報処理装置１０を説明する。情報処理装置１０として複合機１００（画像形成装置に相当）を例に挙げて説明する。但し、以下に記載する構成、配置等の各要素は、発明の範囲を限定するものではなく単なる説明例にすぎない。
【００１７】
（画像形成装置の概要）
まず、図１を用いて、実施形態に係る複合機１００の概要を説明する。図１は、実施形態に係る複合機１００の一例を示す図である。
【００１８】
複合機１００は、制御部３を含む。制御部３は基板である。制御部３は複合機１００の各部を制御する。制御部３は、制御回路１、フラッシュメモリー２（フラッシュデバイス）、ＲＡＭ３１（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、画像処理部３２を含む。制御回路１はＣＰＵである。制御回路１は、処理、制御、演算を行う。制御回路１は複合機１００の各部の制御を行う。
【００１９】
例えば、フラッシュメモリー２には、ＮＡＮＤ型を用いることができる。他のタイプのフラッシュメモリー２でもよい。フラッシュメモリー２は、ブロック単位でデータの消去が可能である。１ブロックの容量は決まっている。フラッシュメモリー２に含まれるブロック数も決まっている。情報処理装置１０のフラッシュメモリー２は、１ブロックのサイズが１２８ＫＢｙｔｅ、全ブロック数が１０２４である。ブロックのサイズが１２８ＫＢｙｔｅでないフラッシュメモリー２を用いてもよい。また、全ブロック数が１０２４でないフラッシュメモリー２を用いてもよい。
【００２０】
フラッシュメモリー２はデータを上書きできない。既にデータが書き込まれている部分にデータを新たに書き込む場合、制御回路１は上書きしようとする場所を含むブロックのデータを全ていったん消去させる。消去後、制御回路１は、データをフラッシュメモリー２に書き込ませる。
【００２１】
制御回路１は各種演算や処理を行う。フラッシュメモリー２、ＲＡＭ３１は制御に関するデータ、プログラムを記憶する。制御回路１は、プログラム、データに基づき、フラッシュメモリー２の読み書きや消去を制御する。画像処理部３２は画像データに対し画像処理を行って印刷や送信に用いる画像データを生成する。
【００２２】
複合機１００はＨＤＤ３３（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含む。ＨＤＤ３３は大容量の記憶装置である。ＨＤＤ３３は制御部３と通信可能に接続される。制御回路１は、フラッシュメモリー２やＨＤＤ３３に記憶されたプログラムや制御用データに基づき、演算や処理を行う。
【００２３】
複合機１００は、原稿搬送部４ａと画像読取部４ｂを含む。制御部３は、セットされた原稿を原稿搬送部４ａに搬送させる。原稿搬送部４ａは、原稿を１枚ずつ読み取り位置（送り読取用コンタクトガラス、不図示）に向けて搬送する。制御部３は原稿を画像読取部４ｂに読み取らせる。画像読取部４ｂは搬送原稿や、載置読取用コンタクトガラス（不図示）にセットされた原稿を読み取る。画像読取部４ｂは画像データを生成する。
【００２４】
複合機１００は、操作パネル５を含む。操作パネル５は、表示パネル５１、タッチパネル５２、ハードキー５３を含む。表示パネル５１は、印刷やスキャンに関する設定画面や各種メッセージを表示する。タッチパネル５２は表示パネル５１に対して設けられる。ハードキー５３はスタートキーのような操作用のキーである。操作パネル５は、使用者による設定を受け付ける。制御部３は、操作パネル５で設定された内容を認識する。
【００２５】
複合機１００は印刷部６を含む。印刷部６は、給紙部６ａ、用紙搬送部６ｂ、画像形成部６ｃ、定着部６ｄを含む。印刷時、制御部３は、給紙部６ａに用紙を供給させる。制御部３は用紙を用紙搬送部６ｂに搬送させる。制御部３は、画像データに基づきトナー像を画像形成部６ｃに形成させる。制御部３は搬送される用紙へのトナー像の転写を画像形成部６ｃに行わせる。制御部３は、トナー像が転写された用紙を定着部６ｄに加熱・加圧させる。これにより、用紙にトナー像が定着する。定着後の用紙は機外に排出される。
【００２６】
制御部３は通信部３４と接続される。通信部３４は、通信用のコネクターや通信制御用のチップを含む。通信部３４は、ネットワーク４００を介し、コンピューター２００やＦＡＸ装置３００と通信を行う。コンピューター２００は、ＰＣやサーバーである。通信部３４は印刷用データ（画像データや印刷設定）を受信する。制御部３は、印刷用データに基づく印刷を印刷部６に行わせる（プリンター機能）。又、通信部３４は、画像データをコンピューター２００やＦＡＸ装置３００に送信できる（送信機能）。
【００２７】
（フラッシュメモリー２）
次に、図２に基づき、本発明の実施形態に係るフラッシュメモリー２の一例を説明する。図２は、実施形態に係るフラッシュメモリー２の一例を示す図である。
【００２８】
情報処理装置１０（複合機１００）は、制御回路１（ＣＰＵ）、フラッシュメモリー２、ＲＡＭ３１を含む。制御回路１は、フラッシュメモリー２からのデータ読み出しを制御する。制御回路１は、フラッシュメモリー２へのデータ書き込みを制御する。
【００２９】
フラッシュメモリー２の記憶領域は、複数のパーティション７に予め分割される。言い換えると、フラッシュメモリー２の記憶領域に、複数のパーティション７が設けられる。各パーティション７のサイズ（ブロック数、容量）は予め定められる。例えば、あるパーティション７には起動用プログラム２１、起動用ファイル２２が記憶される。また、他のパーティション７には、ファームウェア２３が記憶される。例えば、印刷用、スキャン用、送信用のファームウェア２３がそれぞれ記憶される。このように、フラッシュメモリー２に記憶させるデータは、何れかのパーティション７に格納される。
【００３０】
パーティション７のサイズは変更されることがある（図５参照）。開発段階において、あるプログラムのサイズが想定よりも大きくなった場合、そのプログラムを格納するパーティション７のサイズを大きくすることがある。また、他のパーティション７のサイズを大きくしたために、容量に余裕があるパーティション７のサイズを小さくすることがある。また、複合機１００の設置後でもパーティション７のサイズを変更する可能性がある。例えば、新機能を追加するためにパーティション７のサイズを大きくする場合がある。入力されたサイズの変更命令に基づき、制御回路１はフラッシュメモリー２の各パーティション７のサイズを変更する。
【００３１】
フラッシュメモリー２のパーティション７のうち、１又は複数は、更新頻度が高い特定データＤ１（プログラムを含む）を記憶させる特定パーティション７０とされる（図２参照）。言い換えると、特定パーティション７０は、更新頻度が高いと定められたデータ（特定データＤ１）を記憶させるパーティション７である。制御回路１は、特定データＤ１Ｄ１を特定パーティション７０に記憶させる。どのデータを特定データＤ１とするかは、予め定められる。なお、更新頻度が低い、あるいは、全く更新されないデータを特定パーティション７０に記憶させてもよい。
【００３２】
例えば、特定データＤ１は、ジョブを実行するたびに書き換えられるデータである。累計印刷枚数や、印刷部６の各部分の累計稼働時間のようなデータが特定データＤ１とされる。これらのデータは、メンテナンスや寿命解析に必須である。また、ジョブに関する設定値のうち、頻繁に変更される設定値も特定データＤ１としてもよい。また、周期的に上書きされるバックアップデータを特定データＤ１としてもよい。
【００３３】
更新頻度が高いことを考慮し、情報処理装置１０（複合機１００）では、特定パーティション７０には、ＵＢＩファイルシステム８が用いられる（詳細は後述）。
【００３４】
特定パーティション７０以外のパーティション７には、例えば、ファームウェア２３や起動用プログラム２１を記憶させることができる。ファームウェア２３は、アップデートのときのみ更新される。ファームウェア２３は一切更新されない場合もあり得る。そのため、ファームウェア２３や起動用プログラム２１は、特定パーティション７０以外のパーティション７に記憶させてもよい。
【００３５】
（特定パーティション７０）
次に、図３、図４に基づき、実施形態に係る特定パーティション７０を説明する。図３は、特定パーティション７０に係るソフトウェアの階層構造の一例を示す図である。図４は、実施形態に係るＵＢＩサブシステム９の動作の一例を示す図である。
【００３６】
特定パーティション７０は他のパーティション７よりも頻繁に書き換えられる。特定パーティション７０は、情報処理装置１０を使用しているうちに、各ブロックの消去回数が増加してゆくパーティション７である。ブロックの消去回数は、不良ブロック２４の発生と関係がある。特定パーティション７０では、ウェアレベリングや不良ブロック２４の発生に注意する必要がある。そこで、特定パーティション７０のファイルシステムには、ＵＢＩファイルシステム８が用いられる。
【００３７】
制御回路１は、ＵＢＩファイルシステム８に基づき、特定パーティション７０の読み書きを行う。ＵＢＩファイルシステム８を利用するには、ＵＢＩサブシステム９（ＵＢＩレイヤー）とＭＴＤサブシステム２０（ＭＴＤレイヤー）が必要である。ＵＢＩはＵｎｓｏｒｔｅｄ  Ｂｌｏｃｋ  Ｉｍａｇｅｓの省略語である。ＭＴＤは、Ｍｅｍｏｒｙ  Ｔｅｃｈｎｏｌｏｇｙ  Ｄｅｖｉｃｅの省略語である。ＵＢＩサブシステム９はＭＴＤサブシステム２０を介して、各ブロックの読み書き、消去を行う。
【００３８】
図３に示すように、ＭＴＤサブシステム２０は、フラッシュメモリー２にアクセスするためのサブシステムである。ＭＴＤサブシステム２０は、フラッシュメモリー２の各ブロックの読み出し、書き込み、全体消去をサポートする。
【００３９】
図３に示すように、ＵＢＩサブシステム９は、ＭＴＤサブシステム２０とファイルシステム間に位置する管理レイヤーである。ＵＢＩサブシステム９はＭＴＤ用のサブシステムである。ＵＢＩファイルシステム８はＵＢＩサブシステム９の上で動作する。なお、ＵＢＩサブシステム９の上で動作するファイルシステムは、ＵＢＩファイルシステム８に限られない。他のファイルシステムもＵＢＩサブシステム９の上で動作させることができる。そのため、特定パーティション７０のファイルシステムは、ＵＢＩファイルシステム８以外のファイルシステムでもよい。
【００４０】
ＵＢＩサブシステム９を用いる場合、制御回路１は、ＵＢＩサブシステム９とＭＴＤサブシステム２０を関連付けする処理を行う。この処理は、ＵＢＩサブシステム９のアタッチと呼ばれる。アタッチは情報処理装置１０（複合機１００）の起動時に行われる。言い換えると、ＵＢＩサブシステム９のアタッチは、ＵＢＩサブシステム９を使えるようにするための処理である。
【００４１】
このように、ＭＴＤサブシステム２０とＵＢＩサブシステム９は、読み出し、書き込みを制御回路１とフラッシュメモリー２に行わせる。ここで、ＵＢＩサブシステム９は、フラッシュメモリー２の各ブロックの消去回数を管理する。この回数管理に基づき、ＵＢＩサブシステム９は、ウェアレベリングを提供する。ＵＢＩサブシステム９より上位のファイルシステムは、ウェアレベリングを気にしなくてよくなる。
【００４２】
図４を用いて、ＵＢＩサブシステム９に基づく制御回路１によるフラッシュメモリー２の制御を説明する。ＵＢＩサブシステム９は、論理消去ブロック（ＬＥＢ＝Ｌｏｇｉｃａｌ  Ｅｒａｓｅｂｌｏｃｋ）を管理する。ＭＴＤサブシステム２０は、フラッシュメモリー２上の物理消去ブロック（Ｐｈｙｓｉｃａｌ  Ｅｒａｓｅｂｌｏｃｋ）を管理する。ＵＢＩサブシステム９は、ＬＥＢとＰＥＢの変換マッピングを制御回路１に行わせる（対応付けさせる）。ＵＢＩサブシステム９は、各ブロックの消去回数が均等になるように、ＬＥＢとＰＥＢの対応付けを随時変化させる。制御回路１は、変換マッピングに応じ、ブロック単位で消去をフラッシュメモリー２に行わせる。ＵＢＩサブシステム９は、フラッシュメモリー２の各ブロックのウェアレベリングを制御回路１に実現させる。
【００４３】
また、ＵＢＩサブシステム９に基づき、制御回路１は不良ブロック２４（図４参照）を認識する。製造当初から不良なブロックがある。また、使用しているうちに不良ブロック２４となることがある。書き込みや消去のとき、電荷が各メモリーセルの絶縁膜（絶縁層）を通過する。電荷の通過により絶縁膜が劣化していく。制御回路１は、劣化が進むことにより異常が出たメモリーセルを含むブロックを不良ブロック２４と認識する。
【００４４】
例えば、制御回路１は、消去が失敗したブロックを不良ブロック２４と認識する。また、制御回路１は、書き込み無効が生じたブロックを不良ブロック２４と認識する。また、制御回路１は、誤り訂正符号を用いても訂正できないエラーが生じたブロックを不良ブロック２４と認識する。制御回路１は、不良ブロック２４と認識したブロックを示すデータをフラッシュメモリー２内に設けられた不良ブロック２４用テーブルに書き込ませる。不良ブロック２４用テーブルに基づき、制御回路１は、不良ブロック２４を管理する。制御回路１は、不良ブロック２４のスペアブロック２５（図４参照）への置き換えをフラッシュメモリー２に行わせる。以後、不良ブロック２４は使用されなくなる。スペアブロック２５が不良ブロック２４の代わりに用いられる。
【００４５】
（スペアブロック数の設定の流れ）
次に、図５、図６を用いて、実施形態に係る情報処理装置１０での特定パーティション７０のスペアブロック数の設定の流れの一例を説明する。図５は、実施形態に係るフラッシュメモリー２でのパーティション７のサイズ変更の一例を示す図である。図６は、実施形態に係る情報処理装置１０での特定パーティション７０のスペアブロック数の設定の流れの一例を示すフローチャートである。
【００４６】
不良ブロック２４は使用できない。不良ブロック２４置き換えるためのスペアブロック２５が無い場合、不良ブロック２４を含むパーティション７の記憶容量は、不良ブロック２４分だけ少なくなる。スペアブロック２５が無い場合、不良ブロック２４を含むパーティション７において、パーティション７に格納すべきデータを全て格納できなくなる場合がある。その結果、何らかの不具合が生じ得る。そこで、情報処理装置１０では、各パーティション７にスペアブロック２５が設けられる。
【００４７】
使用できるブロックの最小数や最大数は、フラッシュメモリー２の仕様で定められる場合がある。例えば、全ブロック数から使用できるブロックの最小数を減じた値が、発生し得る不良ブロック２４の最大数（ワースト数）となる。例えば、１０２４ブロックのＮＡＮＤのフラッシュメモリーの場合、ワースト数は、２０ブロック程度とされることが多い。全ブロックの２％程度が不良ブロック２４となり得る。情報処理装置１０のフラッシュメモリー２は、１ブロックのサイズが１２８ＫＢｙｔｅ、全ブロック数が１０２４である。そのため、フラッシュメモリー２の容量は、１２８ＭＢｙｔｅである。
【００４８】
ワースト数の不良ブロック２４が１つのパーティション７内に集中する可能性はゼロではない。そのため、各パーティション７にワースト数のスペアブロック２５を確保することが考えられる。しかし、パーティション数が多いほど、スペアブロック数は多くなる。パーティション数が１０、ワースト数が２０の場合、２００ものスペアブロック２５が必要となる。各パーティション７のスペアブロック数をワースト数とすることは現実的ではない。また、通常、不良ブロック２４の位置に極端な偏りはない。
【００４９】
そこで、情報処理装置１０（複合機１００）では、ワースト数＋αのスペアブロック２５を、各パーティション７に配分する。過不足なく各パーティション７にスペアブロック２５が配分される。各パーティション７で不良ブロック２４率が同じと仮定すると、パーティション７のサイズが大きいほど、そのパーティション７のスペアブロック数は多くすべきである。反対に、パーティション７のサイズが小さいほど、そのパーティション７のスペアブロック数は少なくすべきである。情報処理装置１０では、パーティション７のブロック数に応じたスペアブロック数を設定する。
【００５０】
特定パーティション７０（ＵＢＩファイルシステム８、ＵＢＩサブシステム９）のスペアブロック数は、カーネルコンフィグレーションで設定する必要がある。フラッシュメモリー２の起動用のパーティション７には、起動用ファイル２２（カーネルのファイルや、カーネル構築に用いるファイル）が記憶される。起動時、制御回路１は、起動用ファイル２２を読み出す。そして、制御回路１はカーネルを構築する（カーネルコンフィグレーション）。いずれかの起動用ファイル２２に特定パーティション７０のスペアブロック数が定義される。カーネルの構築過程で、制御回路１は、特定パーティション７０のスペアブロック数を確認する。そして、制御回路１は、起動用ファイル２２に基づき、特定パーティション７０のスペアブロック数を設定する。
【００５１】
ここで、上述したように、各パーティション７のサイズ（ブロック数）が変更される場合がある（図５参照）。これにより、パーティション７のブロック数が変化する。特に、データの書き換えが頻繁になされる特定パーティション７０は、他のパーティション７よりも後天的に不良ブロック２４が発生しやすい。特定パーティション７０のスペアブロック数は不足がないようにする必要がある。
【００５２】
特定パーティション７０のサイズ変更があったとき、起動用ファイル２２内の特定パーティション７０のスペアブロック数の定義を変更する必要がある。例えば、特定パーティション７０のサイズが大きくなった場合、スペアブロック数を増やすべきである。特定パーティション７０のサイズが小さくなった場合、スペアブロック数を減らすべきである。
【００５３】
パーティション７のサイズ変更作業と、起動用ファイル２２のスペアブロック数の変更作業は別の手続である。そのため、スペアブロック数の変更作業を忘れることがある。変更作業を忘れることにより、特定パーティション７０のスペアブロック数が不足する可能性がある。スペアブロック数が足りないとき、特定パーティション７０に格納できないデータが出てくるリスクが高くなる。
【００５４】
そこで、情報処理装置１０では、特定パーティション７０のスペアブロック数を自動的に適切な値に設定する。これにより、特定パーティション７０のサイズ変更があっても、スペアブロック数は適切な値で維持される。そこで、以下、図６を用いて、特定パーティション７０のスペアブロック数の設定の流れを説明する。
【００５５】
図６のスタートは、情報処理装置１０（複合機１００）の制御部３の起動開始時である。複合機１００の主電源が投入されたとき、制御部３の起動が開始される。また、省電力モードが解除されたとき、制御部３の起動が開始されることがある。
【００５６】
制御回路１は、カーネルコンフィグレーションで特定パーティション７０のスペアブロック数を設定する。ここで設定されるスペアブロック数は、何れかの起動用ファイル２２に定義された値である（ステップ♯１）。
【００５７】
ＵＢＩサブシステムのアタッチの前に、制御回路１は、特定パーティション７０のブロック数を認識する（ステップ♯２）。そして、制御回路１は、ブロック数に予め定められた基準割合を乗じた値を得る（ステップ♯３）。この値に基づき、制御回路１は、特定パーティション７０のスペアブロック数を求める。
【００５８】
基準割合は適宜定められる。基準割合の値は、フラッシュメモリー２の何れかのパーティション７に記憶される。ワースト数のスペアブロック２５を各パーティション７に配分する。そこで、基準割合は、フラッシュメモリー２の仕様上のブロック不良率と対応させてもよい。例えば、基準割合は、フラッシュメモリー２の仕様上の不良ブロック２４のワースト数をフラッシュメモリー２の全ブロック数で除した値に基づき定めてもよい。
【００５９】
情報処理装置１０のフラッシュメモリー２では、仕様上のワースト数が２０、全ブロック数が１０２４である。２０／１０２４≒０．０１９５３である。そこで、情報処理装置１０では、０．０２（２％）を基準割合とする。つまり、ワースト数÷全ブロック数で求めた値のうち、百分率で小数点以下第１位の値を四捨五入して基準割合を定める。
【００６０】
そして、制御回路１は、特定パーティション７０のブロック数に基準割合を乗じて得た値よりも大きい最小の整数を求める（ステップ♯４）。言い換えると、制御回路１は、得た値の小数点以下を切り上げた値を求める。ブロック数は正の整数であり、基準割合も正の整数である。そのため、求められる値は常に正の整数となる。制御回路１は、求めた整数をスペアブロック数に設定する（ステップ♯５）。
【００６１】
ステップ♯２〜ステップ♯５を実行するプログラムが特定パーティション７０に関する起動用プログラムとして予め用意される。特定パーティション７０に関する起動用プログラムは、フラッシュメモリー２（特定パーティション７０以外のパーティション７）に記憶される。特定パーティション７０に関する起動用のプログラムは、ＵＢＩサブシステム９のアタッチ前に実行される。
【００６２】
カーネルコンフィグレーションで設定したスペアブロック数に変えて、制御回路１は求めた最小の整数を特定パーティション７０のスペアブロック数として再設定する。その結果、起動時、常に適切なスペアブロック数が求められる。ステップ♯５で求めたスペアブロック数は、カーネルコンフィグレーションによるスペアブロック数よりも優先される。
【００６３】
図５を用いて特定パーティション７０のスペアブロック数の設定を説明する。図５のうち、上側の表はサイズ変更前の各パーティション７のサイズ、ブロック数、スペアブロック数の一例を示す。図５のうち、下側の表はサイズ変更後の各パーティション７のサイズ、ブロック数、スペアブロック数の一例を示す。
【００６４】
特定パーティション７０は２番のパーティション７である（網掛けで図示）。図５において、変更前の特定パーティション７０のサイズは、１６ＭＢｙｔｅ、ブロック数は、１２８である。基準割合は２％とする。１２８×２％＝２．５６である。２．５６の小数点以下を切り上げた値は３である。そこで、制御回路１は、特定パーティション７０のスペアブロック数を３に設定する。
【００６５】
図５において、変更後の特定パーティション７０のサイズは、６４ＭＢｙｔｅ、ブロック数は、５１２である。基準割合は２％とする。５１２×２％＝１０．２４である。１０．２４の小数点以下を切り上げた値は１１である。そこで、制御回路１は、特定パーティション７０のスペアブロック数を１１に設定する。このように、起動用ファイル２２に含まれるスペアブロック数の変更が忘れられても、特定パーティション７０のスペアブロック数は常に適切な値とされる。
【００６６】
次に、制御回路１は、ＵＢＩサブシステム９のアタッチを開始する（ステップ♯６）。ＵＢＩサブシステム９のアタッチにより、ＵＢＩファイルシステム８も使用できるようになる。制御回路１は、特定パーティション７０のスペアブロック数をステップ♯５で設定した数としている。なお、少なくともステップ♯６の前に、制御回路１は、ＭＴＤサブシステム２０を利用可能としている。
【００６７】
特定パーティション７０のＵＢＩサブシステム９のアタッチの後、制御回路１は、特定パーティション７０において、ＵＢＩファイルシステム８をマウントする（ステップ♯７）。これにより、特定パーティション７０（フラッシュメモリー２）において、ＵＢＩファイルシステム８が利用可能となる。そして、本フローは終了する（エンド）。
【００６８】
このようにして、実施形態に係る情報処理装置１０は、フラッシュメモリー２と制御回路１を含む。フラッシュメモリー２は、ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティション７が設けられる。制御回路１は、フラッシュメモリー２の読み書きを制御する。制御回路１は、データ消去を制御し、発生した不良ブロック２４をスペアブロック２５に置き換える。制御回路１は、パーティション７のスペアブロック数を設定する。フラッシュメモリー２の起動処理のとき、制御回路１は、パーティション７のブロック数を認識する。制御回路１は、ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数をパーティション７のスペアブロック数に設定する。
【００６９】
これにより、パーティション７のサイズが大きいほど、そのパーティション７のスペアブロック数を多くすることができる。パーティション７のサイズが小さいほど、そのパーティション７のスペアブロック数を小さくすることができる。適切な（パーティション７のブロック数に応じた）スペアブロック数を自動的に設定することができる。また、常に適切なスペアブロック数とすることができる。パーティション７のサイズ変更の前後を問わず、スペアブロック数は、常にパーティション７のブロック数に応じた数になる。パーティション７のサイズ変更後、起動用ファイル２２（カーネルコンフィグレーションに用いるファイル）の変更を忘れても問題はない。言い換えると、スペアブロック数の変更作業を忘れても問題はない。むしろ、スペアブロック数の変更作業をしなくてすむ。
【００７０】
従って、パーティション７のサイズが大きくなっても、スペアブロック２５の不足は生じない。不良ブロック２４数がスペアブロック数を超えた場合、データ格納不可の発生リスクは高くなる。スペアブロック数は適切なので、このリスクを下げることができる。また、パーティション７のサイズが小さくなっても、必要以上に多いスペアブロック２５は設定されない。スペアブロック数は、適切な値で保たれる。
【００７１】
また、制御回路１は、ブロック数に予め定められた基準割合を乗じて得た値よりも大きい最小の整数をスペアブロック数に設定する。これにより、パーティション７に配するスペアブロック数を過不足のない数に設定することができる。また、パーティション７のブロック数に仕様上の不良ブロック２４発生率を乗じた個数の不良ブロック２４が生じても、データ格納不可は生じない。
【００７２】
サブシステムを用いるパーティション７では、スペアブロック数の設定が必要な場合がある。そこで、フラッシュメモリー２の起動処理のとき、制御回路１は、サブシステム（ＵＢＩサブシステム９）をアタッチする。制御回路１は、サブシステムにより、フラッシュメモリー２の各ブロックの消去回数を管理してウェアレベリングを行う。制御回路１は、サブシステムのアタッチの前に、パーティション７のうち、サブシステム上で動作させる特定パーティション７０のブロック数を認識し、特定パーティション７０のブロック数に基準割合を乗じて得た値に基づき特定パーティション７０のスペアブロック数を設定する。これにより、サブシステムを用いる特定パーティション７０でのスペアブロック数を適切な数にすることができる。特定パーティション７０のサイズ変更があっても、特定パーティション７０のサイズ（ブロック数）に応じたスペアブロック数を自動的に設定することができる。
【００７３】
カーネルコンフィグレーションに用いる起動用ファイル２２でスペアブロック数を設定することがある。しかし、特定パーティション７０のサイズ変更時、起動用ファイル２２のスペアブロック数の変更作業を忘れることがある。そこで、制御回路１は、カーネルコンフィグレーションで設定された特定パーティション７０のスペアブロック数を、アタッチ時に求めたスペアブロック数に書き換える。これにより、カーネルコンフィグレーション時に設定されたスペアブロック数よりも、アタッチ時に求めたスペアブロック数を優先的に適用することができる。スペアブロック数の変更作業がなされなくても、特定パーティション７０のスペアブロック数を適切な数に設定することができる。
【００７４】
また、サブシステムはＵＢＩサブシステム９である。特定パーティション７０のファイルシステムは、ＵＢＩサブシステム９上で動作させるファイルシステムである。例えば、ファイルシステムには、ＵＢＩファイルシステム８を用いることができる。これにより、ＵＢＩサブシステム９を用いる特定パーティション７０のスペアブロック数を常時、適切な値に設定することができる。
【００７５】
また、画像形成装置は、印刷部６、フラッシュメモリー２、制御回路１を含む。印刷部６は印刷を行う。フラッシュメモリー２は、ブロック単位でデータの消去が可能であり、記憶領域に複数のパーティション７が設けられる。制御回路１は、フラッシュメモリー２の読み書きを制御する。制御回路１は、データ消去を制御し、発生した不良ブロック２４をスペアブロック２５に置き換える。制御回路１は、パーティション７のスペアブロック数を設定する。フラッシュメモリー２の起動処理のとき、制御回路１は、パーティション７のブロック数を認識する。制御回路１は、ブロック数に予め定められた基準割合を乗じて得た値よりも大きい数をパーティション７のスペアブロック数に設定する。パーティション７のブロック数に応じたスペアブロック数を自動的に設定できる画像形成装置を提供することができる。画像形成装置では、パーティション７のサイズ変更があっても、スペアブロック数は常に変更後のパーティション７のブロック数に応じた数になる。
【００７６】
以上、本発明の実施形態について説明したが、本発明の範囲はこれに限定されるものではなく、発明の主旨を逸脱しない範囲で種々の変更を加えて実施することができる。そこで、以下、変形例を説明する。
【００７７】
上記の説明では、特定パーティション７０のスペアブロック数を起動時のアタッチ時に設定する例を説明した。しかし、特定パーティション７０以外のパーティション７について、制御回路１は、サイズに基づきスペアブロック数を設定してもよい。
【産業上の利用可能性】
【００７８】
本発明は、制御回路、フラッシュメモリーを含む情報処理装置に利用可能である。
【符号の説明】
【００７９】
複合機１００（画像形成装置）            １０    情報処理装置
１      制御回路                        ２      フラッシュメモリー
２４    不良ブロック                    ２５    スペアブロック
６      印刷部                          ７      パーティション
７０    特定パーティション              ９      ＵＢＩサブシステム
８      ＵＢＩファイルシステム
【図１】
2018081626.tif 000003
【図２】
2018081626.tif 000004
【図３】
2018081626.tif 000005
【図４】
2018081626.tif 000006
【図５】
2018081626.tif 000007
【図６】
2018081626.tif 000008