転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第1の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該記憶手段へのさらなるプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第3の手順とを有し、前記認識手段にて接続される機器を最初に検出した場合には当該第1の手順を実行し、当該認識手段にて接続される機器の変更を検出しない場合には当該第2の手順を実行し、当該認識手段にて接続される機器の変更を検出した場合には当該第3の手順を実行することを特徴とする情報処理装置。前記実行手段は、前記認識手段にて接続される機器の変更を検出した場合において、当該機器の変更量が予め決められた閾値以上となった場合には前記第1の手順を実行することを特徴とする請求項1記載の情報処理装置。前記記憶手段に転送されるプログラムを圧縮した状態で格納する格納手段をさらに含み、前記実行手段は、前記格納手段から圧縮されたプログラムを読み出し且つ展開してから前記記憶手段に記憶させることを特徴とする請求項1または2記載の情報処理装置。前記不揮発性メモリが、MRAM、FeRAM、PRAM、ReRAMのいずれかであることを特徴とする請求項1乃至3のいずれか1項記載の情報処理装置。記録材に画像を形成する画像形成部と、前記画像形成部の動作を制御する制御部とを備え、前記制御部は、前記画像形成部の制御に用いるために転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第1の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該記憶手段へのさらなるプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第3の手順とを有し、前記認識手段にて接続される機器を最初に検出した場合には当該第1の手順を実行し、当該認識手段にて接続される機器の変更を検出しない場合には当該第2の手順を実行し、当該認識手段にて接続される機器の変更を検出した場合には当該第3の手順を実行することを特徴とする画像形成装置。コンピュータに、転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶させる機能と、前記不揮発性メモリに記憶されるプログラムを読み出して実行させる機能と、接続される機器を認識する機能と、前記不揮発性メモリへのプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第1の手順と、当該不揮発性メモリへのプログラムの転送に連続せず既に当該不揮発性メモリに記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該不揮発性メモリへのさらなるプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第3の手順とを有し、接続される機器を最初に検出した場合には当該第1の手順を実行させ、接続される機器の変更を検出しない場合には当該第2の手順を実行させ、接続される機器の変更を検出した場合には当該第3の手順を実行させる機能とを実現させるプログラム。本発明は、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることを目的とする。請求項1記載の発明は、転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記記憶手段に記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第1の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該記憶手段へのさらなるプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第3の手順とを有し、前記認識手段にて接続される機器を最初に検出した場合には当該第1の手順を実行し、当該認識手段にて接続される機器の変更を検出しない場合には当該第2の手順を実行し、当該認識手段にて接続される機器の変更を検出した場合には当該第3の手順を実行することを特徴とする情報処理装置である。請求項2記載の発明は、前記実行手段は、前記認識手段にて接続される機器の変更を検出した場合において、当該機器の変更量が予め決められた閾値以上となった場合には前記第1の手順を実行することを特徴とする請求項1記載の情報処理装置である。請求項3記載の発明は、前記記憶手段に転送されるプログラムを圧縮した状態で格納する格納手段をさらに含み、前記実行手段は、前記格納手段から圧縮されたプログラムを読み出し且つ展開してから前記記憶手段に記憶させることを特徴とする請求項1または2記載の情報処理装置である。請求項4記載の発明は、前記不揮発性メモリが、MRAM、FeRAM、PRAM、ReRAMのいずれかであることを特徴とする請求項1乃至3のいずれか1項記載の情報処理装置である。請求項5記載の発明は、記録材に画像を形成する画像形成部と、前記画像形成部の動作を制御する制御部とを備え、前記制御部は、前記画像形成部の制御に用いるために転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶する記憶手段と、前記不揮発性メモリに記憶されるプログラムを読み出して実行する実行手段と、接続される機器を認識する認識手段とを含み、前記実行手段は、前記記憶手段へのプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第1の手順と、当該記憶手段へのプログラムの転送に連続せず既に当該記憶手段に記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該記憶手段へのさらなるプログラムの転送に連続して当該記憶手段に記憶されるプログラムを読み出して実行する第3の手順とを有し、前記認識手段にて接続される機器を最初に検出した場合には当該第1の手順を実行し、当該認識手段にて接続される機器の変更を検出しない場合には当該第2の手順を実行し、当該認識手段にて接続される機器の変更を検出した場合には当該第3の手順を実行することを特徴とする画像形成装置である。請求項6記載の発明は、コンピュータに、転送されるプログラムを、読み書き可能であって、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリに記憶させる機能と、前記不揮発性メモリに記憶されるプログラムを読み出して実行させる機能と、接続される機器を認識する機能と、前記不揮発性メモリへのプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第1の手順と、当該不揮発性メモリへのプログラムの転送に連続せず既に当該不揮発性メモリに記憶されるプログラムを読み出して実行する第2の手順と、既にプログラムが記憶された当該不揮発性メモリへのさらなるプログラムの転送に連続して当該不揮発性メモリに記憶されるプログラムを読み出して実行する第3の手順とを有し、接続される機器を最初に検出した場合には当該第1の手順を実行させ、接続される機器の変更を検出しない場合には当該第2の手順を実行させ、接続される機器の変更を検出した場合には当該第3の手順を実行させる機能とを実現させるプログラムである。請求項1記載の発明によれば、本構成を有していない場合と比較して、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。請求項2記載の発明によれば、本構成を有しない場合と比較して、起動処理で使用するプログラムの断片化を抑制することができる。請求項3記載の発明によれば、本構成を有しない場合と比較して、起動処理をさらに高速化することができる。請求項4記載の発明によれば、例えば不揮発性メモリとしてEEPROMあるいはフラッシュメモリを用いた場合と比較して、不揮発性メモリからのプログラムの読み取りをより高速に行うことができる。請求項5記載の発明によれば、本構成を有していない場合と比較して、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。請求項6記載の発明によれば、本構成を有していない場合と比較して、プログラムの読み出しおよび実行を伴う起動処理の高速化を図るとともに、起動処理で使用するプログラムの書き換えを可能とすることができる。以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。図1は、本実施の形態が適用される画像形成システムの構成の一例を示す図である。この画像形成システムは、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を備えた所謂複合機として動作する画像形成装置1と、画像形成装置1に接続されるネットワーク2と、ネットワーク2に接続される端末装置3と、ネットワーク2に接続されるファクシミリ装置4と、ネットワーク2に接続されるサーバ装置5とを有している。ここで、ネットワーク2は、インターネット回線や電話回線等によって構成されている。また、端末装置3は、ネットワーク2を介して、画像形成装置1に画像の形成等を指示するものであり、例えばPCPersonalComputerで構成される。さらに、ファクシミリ装置4は、ネットワーク2を介して、画像形成装置1との間でファクシミリを送受信する。さらにまた、サーバ装置5は、ネットワーク2を介して、画像形成装置1との間でデータプログラムを含むを送受信する。また、画像形成装置1は、紙等の記録媒体に記録された画像を読み取る画像読取部10と、紙等の記録媒体に画像を形成する画像形成部20と、ユーザから電源のオン/オフ、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を用いた動作に関連する指示を受け付けるとともに、ユーザに対してメッセージを表示するユーザインタフェースUI30と、ネットワーク2を介して端末装置3、ファクシミリ装置4およびサーバ装置5との間でデータの送受信を行う送受信部40と、これら画像読取部10、画像形成部20、UI30および送受信部40の動作を制御する制御部50とを備えている。そして、この画像形成装置1では、画像読取部10によってスキャン機能が実現され、画像形成部20によってプリント機能が実現され、画像読取部10および画像形成部20によってコピー機能が実現され、画像読取部10、画像形成部20および送受信部40によってファクシミリ機能が実現される。なお、送受信部40は、例えばインターネット回線用のものと電話回線用のものとを、別々に設けるようにしてもかまわない。図2は、図1に示す画像形成装置1に設けられた制御部50の内部構成の一例を示すハードウェアブロック図である。情報処理装置の一例としての制御部50は、種々の演算を実行することによって画像形成装置1の各部を制御する実行手段あるいは認識手段の一例としてのCPUCentralProcessingUnit:中央処理装置51と、CPU51に接続され、CPU51との間で各種データのやりとりを行うバスブリッジ52とを備えている。制御部50において、バスブリッジ52には、第1のクロックでデータのやりとりを行うメモリバス53と、第1のクロックよりも周波数が低い第2のクロックでデータのやりとりを行うPCIPeripheralComponentInterconnectバス54とが接続されている。また、制御部50は、ROMReadOnlyMemory55と、不揮発性RAMRandomAccessMemory56と、揮発性RAM57とを備えている。そして、これらROM55、不揮発性RAM56および揮発性RAM57は、それぞれ、メモリバス53に接続されている。さらに、制御部50は、UI30を制御するためのUIインタフェース回路UIIF61と、画像形成部20を制御するためのプリントインタフェース回路プリントIF62と、例えば画像形成が行われた記録媒体に後処理を施す後処理装置70など、画像形成装置1に後付けで装着されるオプションユニットを制御するためのオプションインタフェース回路オプションIF63と、送受信部40を制御するためのネットワークインタフェース回路ネットワークIF64と、USBUniversalSerialBusデバイスを制御するためのUSBインタフェース回路USBIF65とを備えている。そして、これらUIIF61、プリントIF62、オプションIF63、ネットワークIF64およびUSBIF65は、それぞれ、PCIバス54に接続されている。また、本実施の形態では、USBIF65に対し、画像読取部10が接続されている。なお、USBIF65には、例えば、装着されたメモリカード81に対しデータを読み書きするカードリーダ80が接続されることもある。そして、制御部50は、制御部50を構成する各部CPU51等が動作するクロックの基準となる基準クロックを生成するクロックジェネレータ58と、CPU51等の動作に伴って計時を行うタイマ59とをさらに備えている。本実施の形態における制御部50は、例えば、1チップのマイクロコントローラによって構成されている。ただし、制御部50を、複数のチップで構成してもかまわない。また、本実施の形態の制御部50において、CPU51は、ROM55、不揮発性RAM56および揮発性RAM57に直接アクセスすることが可能となっている。以下の説明では、メモリバス53に接続されるROM55、不揮発性RAM56および揮発性RAM57を、まとめてメインメモリと称することがある。ここで、格納手段の一例としてのROM55は、所謂マスクROM、各種PROMProgrammableROM:例えばOTPROM、UV-EPROMUltraVioletErasableProgrammableROM、EEPROMElectricallyErasableProgrammableROM、フラッシュメモリなどで構成されている。なお、この例では、ROM55として、フラッシュメモリが用いられている。また、記憶手段の一例としての不揮発性RAM56は、MRAMMagnetoresistiveRAM、FeRAMFerroelectricRAM、PRAMPhasechangeRAM、ReRAMResistanceRAMなど、電源を供給しなくても、記憶している情報を保持することが可能な不揮発性メモリによって構成されている。なお、この例では、不揮発性RAM56として、ROM55として用いられるフラッシュメモリよりも高速にデータの読み書きが可能なMRAMが用いられている。さらに、揮発性RAM57は、DRAMDynamicRAMやSRAMStaticRAMなど、電源を供給しないと、記憶している情報を保持することができない揮発性メモリによって構成されている。なお、この例では、揮発性RAM57として、DRAMが用いられている。そして、本実施の形態では、不揮発性RAM56および揮発性RAM57が、ともに第1のクロックでデータの読み書きを行う。このため、不揮発性RAM56は、揮発性RAM57この例ではDRAMと同等の読み書き性能を有していることになる。図3は、図2に示す制御部50に設けられたCPU51の内部構成の一例を示すハードウェアブロック図である。本実施の形態のCPU51は、制御部50に設けられたバスブリッジ52と接続され、バスブリッジ52との間で各種データのやりとりを行うバスコントロールユニット511と、バスコントロールユニット511に接続され、CPU51内において上述した第1のクロックよりも周波数が高い第3のクロックで各種データのやりとりを行うCPU内部バス512とを備えている。またCPU51は、CPU51内の各部を制御する制御ユニット513と、読み出したプログラムにしたがって各種演算を実行する演算ユニット514と、演算ユニット514が実行するプログラムが格納されたアドレスの保持、演算ユニット514による演算結果の保持、さらにはメインメモリROM55、不揮発性RAM56および揮発性RAM57との間でデータのやりとりを行う際のアドレスの保持を行うための各種レジスタを備えたレジスタ群515と、演算ユニット514による演算結果を一時的に保持するキャッシュメモリ516と、CPU51が要求するメモリアクセスを処理するメモリ管理ユニット517とを備えている。ここで、レジスタ群515は、演算ユニット514が次に実行するべき命令を格納するメインメモリ上のアドレスを保持するプログラムカウンタPC515aと、一時的にデータを退避しておくために用意するスタック領域のアドレスを保持するスタックポインタSP515bと、CPU51の状態や演算の状態などを保持するステータスレジスタSR515cと、演算やデータ転送の一次記憶などに使用されるアキュムレータ、メインメモリ上のデータにアクセスするためのアドレスを保持するアドレスレジスタ、さらにはCPU51の動作設定の情報を保持するコントロールレジスタ等として機能する汎用レジスタ515dとを含んでいる。そして、レジスタ群515およびキャッシュメモリ516は、ともに、電源を供給しないと、記憶している情報を保持することができない揮発性メモリによって構成されている。なお、この例では、レジスタ群515およびキャッシュメモリ516として、揮発性RAM57で用いられるDRAMよりも高速にデータの読み書きが可能なSRAMが用いられている。図4は、上述したメインメモリROM55、不揮発性RAM56および揮発性RAM57によるメモリマップの構成の一例を示す図である。この例では、ROM55にリセットベクタ領域A01および圧縮プログラム領域A02が配置され、不揮発性RAM56にプログラム/変数領域A11および履歴領域A12が配置され、揮発性RAM57にワーク領域A21およびバッファ領域A22が配置されている。また、不揮発性RAM56に配置される履歴領域A12は、起動フラグ領域A12aと、構成ステータス領域A12bと、ログ領域A12cとを有している。これらのうち、ROM55に配置されるリセットベクタ領域A01は、画像形成装置1を起動するにあたり、制御部50においてCPU51が実行するプログラムである、イニシャルプログラムローダInitialProgramLoader:IPLを格納している。また、ROM55に配置される圧縮プログラム領域A02は、本実施の形態の画像形成装置1に実装され得る各構成に対応したプログラムおよびこのプログラムで用いられる変数以下では、これらをプログラム/変数と称するを、構成毎にまとめて圧縮した状態で格納している。例えば図4に示す例では、圧縮プログラム領域A02に、構成Aを動作させるためのプログラム/変数を圧縮した圧縮プログラム構成A用圧縮プログラム、構成Bを動作させるためのプログラム/変数を圧縮した圧縮プログラム構成B用圧縮プログラム、構成Cを動作させるためのプログラム/変数を圧縮した圧縮プログラム構成C用圧縮プログラム、構成Dを動作させるためのプログラム/変数を圧縮した圧縮プログラム構成D用圧縮プログラム、...、を格納している。なお、ここでいう構成A~構成Dは、上述した画像読取部10、画像形成部20、UI30、送受信部40、後処理装置70、そしてカードリーダ80等のそれぞれに対応するものであり、画像形成装置1の本体に対し着脱可能であって、画像形成装置1に装着された場合には、単独であるいは他の構成部とともに、予め決められた機能を発揮するものである。このように、本実施の形態では、実際に使用する際の画像形成装置1の構成図1に示す画像形成装置1は後処理装置70を備えていないとは関係なく、この画像形成装置1に実装され得る各構成に対応した複数の圧縮プログラムを、ROM55に配置された圧縮プログラム領域A02に、予め格納させている。これにより、画像形成装置1の装置構成の変更に伴って、ROM55を交換したり、あるいは、ROM55に格納されるプログラムの更新を行ったりしなくてもよいようにしている。次に、不揮発性RAM56に配置されるプログラム/変数領域A11は、上述した圧縮プログラム領域A02から読み出した圧縮プログラムを、CPU51が伸張することによって得たプログラム/変数を格納する。また、不揮発性RAM56に配置される履歴領域A12のうち、起動フラグ領域A12aは、画像形成装置1が過去に起動されたことがあるか否かを示すフラグを格納する。ここで、起動フラグ領域A12aには、画像形成装置1が過去に起動されている場合にはオン1が格納され、画像形成装置1が過去に起動されていない場合にはオフ0が格納される。さらに、不揮発性RAM56に配置される履歴領域A12のうち、構成ステータス領域A12bは、画像形成装置が前回起動された際の装置構成以下では、前回の装置構成と称するを、構成ステータスとして格納する。ここで、構成ステータス領域A12bには、この画像形成装置1に装着され得る各構成に対し、その構成が存在している場合にはオン1が格納され、その構成が存在していない場合にはオフ0が格納される。さらにまた、不揮発性RAM56に配置される履歴領域A12のうち、ログ領域A12cは、画像形成装置1が受けた指示の内容、装置構成が変更された際の内容、さらには発生したエラーの内容等を、ログデータとして格納する。そして、揮発性RAM57に配置されるワーク領域A21は、CPU51によるプログラムの実行に伴って一時的に発生するデータを格納する。また、揮発性RAM57に配置されるバッファ領域A22は、CPU51によるデータ処理に伴って、画像形成装置の各構成要素に対して出力される指示PCIバス54を介して各IFに出力されるデータに関するデータを格納する。図5は、図1に示す画像形成装置1の起動処理を説明するためのフローチャートである。なお、この起動処理は、例えばUI30を介して画像形成装置1の電源が投入されることに伴ってCPU51にリセット指示が入力されたとき、また、画像形成装置1の電源が投入された後に何らかの理由によりCPU51にリセット指示が入力されたとき、などに実行される。制御部50に設けられたCPU51がリセット指示を受け付けるとステップ1、CPU51は、自身のリセットCPUリセットを実行するステップ2。このとき、CPUリセットに伴って、CPU51に設けられたレジスタ群515およびキャッシュメモリ516ともに揮発性メモリで構成されるの記憶内容もクリアされる。また、CPUリセットに伴って、制御部50に設けられた揮発性RAM57の記憶内容もクリアされる。一方、CPUリセットが実行されても、制御部50に設けられたROM55および不揮発性RAM57の記憶内容はクリアされず、CPUリセット前の記憶内容がそのまま保持される。続いて、CPU51は、バスブリッジ52およびメモリバス53を介して、ROM55のリセットベクタ領域A01に格納されるイニシャルプログラムローダIPLを読み出すとともに、読み出したIPLを実行しステップ3、画像形成装置1に実装された各構成が使用可能となるように動作準備を行う。そして、画像形成装置1の動作準備が完了するステップ4ことで、一連の起動処理を終了する。次に、上述したステップ3におけるIPLの実行について、より詳細に説明する。図6~図8は、IPLの実行に伴う処理の手順を説明するためのフローチャートである。IPLの実行に伴い、CPU51は、最初に、バスブリッジ52およびPCIバス54を介して接続されている各IFこの例では、UIIF61、プリントIF62、オプションIF63、ネットワークIF64およびUSBIF65を用いて、画像形成装置1の装置構成を検出するステップ11。なお、ステップ11では、例えば各IFにコネクタ等が物理的に接続されているか否かを検出するハードウェア的な手法を用いてもよいし、また、例えば各IFを介して接続対象と通信が行えるか否かを検出するソフトウェア的な手法を用いてもよい。続いて、CPU51は、不揮発性RAM56の履歴領域A12における起動フラグ領域A12aから、起動フラグを読み出して取得するステップ12。そして、CPU51は、起動フラグがオフ0であるか否か、すなわち、今回の起動が初回の起動であるか否かを判断するステップ13。ステップ13において肯定の判断Yesを行った場合、すなわち、今回の起動処理が初回の起動処理であった場合、CPU51は、続いて、ステップ11で検出した今回の装置構成に基づき、ROM55の圧縮プログラム領域A02から、今回の装置構成の中に含まれる1つの構成に対応する圧縮プログラムを読み出しステップ14、ステップ14で読み出した圧縮プログラムを展開しステップ15、ステップ15で圧縮プログラムを展開して得られたプログラム/変数を、不揮発性RAM56におけるプログラム/変数領域A11に格納するステップ16。その後、ステップ11で検出した今回の装置構成について、全構成に対応するプログラム/変数の、プログラム/変数領域A11への格納が完了したか否かを判断するステップ17。ステップ17において否定の判断Noを行った場合は、ステップ14に戻り、今回の装置構成における残りの構成に対応する圧縮プログラムの読み出し、読み出した圧縮プログラムの展開、そして展開によって得られたプログラム/変数の格納を続けて行う。一方、ステップ17において肯定の判断Yesを行った場合、CPU51は、不揮発性RAM56の履歴領域A12における起動フラグ領域A12aに、起動フラグとしてオン1を格納させるステップ18。続いて、CPU51は、ステップ11で検出した今回の装置構成の内容を反映させた変更ログを作成し、作成した変更ログを履歴領域A12のログ領域A12cに格納するステップ19。さらに、CPU51は、ステップ11で検出した今回の装置構成について、存在する構成をオン1、存在しない構成をオフ0とした構成ステータスを、履歴領域A12の構成ステータス領域A12bに格納するステップ20。そして、後述するステップ25に進む。また、上述したステップ13において否定の判断Noを行った場合、すなわち、今回の起動処理が2回目以降の起動処理であった場合、CPU51は、不揮発性RAM56の履歴領域A12における構成ステータス領域A12bから、構成ステータスを読み出して取得しステップ21、ステップ11で検出した今回の装置構成が、ステップ21で取得した構成ステータスすなわち前回の装置構成から変更されているか否かを判断するステップ22。ステップ22において否定の判断Noを行った場合、すなわち、前回の装置構成と今回の装置構成とが同じである場合、CPU51は、不揮発性メモリ56のプログラム/変数領域A11に格納される各プログラム/変数に対してエラーチェックを実行するステップ23。なお、ステップ23で実行されるエラーチェックの手法としては、例えばCRCCyclicRedundancyCheck:巡回冗長検査が挙げられる。そして、CPU51は、ステップ23でエラーチェックを実行した結果に基づき、不揮発性RAM56のプログラム/変数領域A11に格納される各プログラム/変数においてエラーが発生しているか否かを、プログラム毎に判断するステップ24。ステップ24において否定の判断Noを行った場合、および、上述したステップ20における処理を行った後、CPU51は、不揮発性RAM56のプログラム/変数領域A11に格納された各プログラム/変数を用いて処理を行うことにより、画像形成装置1の初期設定を行いステップ25、IPLの実行を完了する。一方、上述したステップ22において肯定の判断Yesを行った場合、すなわち、前回の装置構成と今回の装置構成とが相違していた場合、CPU51は、前回の装置構成を基準とした場合における今回の装置構成の変更量が、予め決められた閾値以上となっているか否かを判断するステップ26。ここで、変更量は、例えば、変更された構成の数追加および削減の両者を含むや、変更された構成に対応するプログラム/変数の記憶領域の、プログラム/変数領域A11に占める割合占有率等に基づいて決められる。そして、本実施の形態では、1つの閾値が、変更された構成の数2以上に設定されており、他の1つの閾値が、変更された構成に対応するプログラム/変数の記憶領域がプログラム/変数領域A11に占める割合30以上に設定されている。なお、この例では、変更量が、上述した2つの閾値の少なくともいずれか一方以上となった場合に、肯定の判断を行う。ステップ26において否定の判断Noを行った場合、すなわち、装置構成の変更量が閾値未満であった場合、CPU51は、今回の装置構成の変更が構成の追加によるものであるか否かを判断するステップ27。ステップ27において肯定の判断Yesを行った場合、すなわち、構成が追加されていた場合、CPU51は、続いて、今回の起動において追加された構成に基づき、ROM55の圧縮プログラム領域A02から、追加された構成に対応する圧縮プログラムを読み出しステップ28、ステップ28で読み出した圧縮プログラムを展開しステップ29、ステップ29で圧縮プログラムを展開して得られたプログラム/変数を、不揮発性RAM56におけるプログラム/変数領域A11に格納するステップ30。一方、ステップ27において否定の判断Noを行った場合、すなわち、構成が削減されていた場合、CPU51は、続いて、不揮発性RAM56におけるプログラム/変数領域A11に格納される各プログラム/変数のうち、今回の起動において削減された構成に対応するプログラム/変数を無効化するステップ31。ステップ30あるいはステップ31を経た後、CPU51は、今回の装置構成に関し他に変更があるか否かを判断するステップ32。ステップ32において肯定の判断Yesを行った場合は、ステップ27に戻り、今回変更された他の構成に対応するプログラム/変数の、プログラム/変数領域A11への格納あるいはプログラム/変数領域A11での無効化を続けて行う。一方、ステップ32において否定の判断Noを行った場合、CPU51は、ステップ11で検出した今回の装置構成の内容を反映させた変更ログを作成し、作成した変更ログを履歴領域A12のログ領域A12cに格納するステップ33。続いて、CPU51は、ステップ11で検出した今回の装置構成について、存在する構成をオン1、存在しない構成をオフ0とした構成ステータスを、履歴領域A12の構成ステータス領域A12bに格納するステップ34。そして、上述したステップ23に進む。また、ステップ26において肯定の判断Yesを行った場合、すなわち、装置構成の変更量が閾値以上であった場合、CPU51は、前回の装置構成から今回の装置構成に至る変更内容を反映させた変更ログを作成し、作成した変更ログを履歴領域A12のログ領域A12cに格納するステップ35。続いて、CPU51は、起動フラグをリセットしステップ36、不揮発性RAM56の履歴領域A12における起動フラグ領域A12aに、起動フラグとしてオフ0を格納させた状態で、上述したステップ14に移行する。これにより、前回の起動処理と今回の起動処理とにおいて、装置構成に閾値以上となるような変更大幅な変更があった場合は、ステップ11で検出した今回の装置構成に基づき、各構成に対応するプログラム/変数が、再度、不揮発性RAM56のプログラム/変数領域A11に書き込まれる。このとき、新たに書き込まれるプログラム/変数は、今回の起動処理よりも前の起動処理において、プログラム/変数領域A11に既に書き込まれていたプログラム/変数に上書きされる。一方、前回の起動処理と今回の起動処理とにおいて、装置構成に閾値未満となるような変更小幅な変更があった場合は、今回の起動において追加された構成にのみ対応するプログラム/変数が、不揮発性RAM56のプログラム/変数領域A11に追加して書き込まれ、あるいは、今回の起動において削除された構成にのみ対応するプログラム/変数が、不揮発性RAM56のプログラム/変数領域A11にて無効化される。このとき、追加して書き込まれるプログラム/変数は、プログラム/変数領域A11に既に書き込まれていたプログラム/変数とは異なる領域に追記される。また、ステップ24において肯定の判断Yesを行った場合、すなわち、不揮発性RAM56のプログラム/変数領域A11に格納されるいずれかのプログラム/変数においてエラーが発生した場合、CPU51は、不揮発性RAM56のログ領域A12cに格納されているエラーログを読み出して取得するステップ37。続いて、CPU51は、ステップ24でエラーが検出されたプログラム/変数が、ステップ37で取得したエラーログにおいて最後直近にエラーを発生したプログラム/変数と同一であるか否かを判断するステップ38。ステップ38において否定の判断Noを行った場合、すなわち、今回エラーが検出されたプログラム/変数と直近にエラーを発生したプログラム/変数とが異なる場合、CPU51は、今回エラーが検出されたプログラム/変数に対応する圧縮プログラムを読み出しステップ39、ステップ39で読み出した圧縮プログラムを展開しステップ40、ステップ40で圧縮プログラムを展開して得られたプログラム/変数を、不揮発性RAM56におけるプログラム/圧縮領域11に格納するステップ41。そして、CPU51は、さらに他のプログラム/変数でエラーがあったか否かを判断するステップ42。ステップ42において肯定の判断Yesを行った場合は、ステップ39に戻り、今回エラーが発生したプログラム/変数に対応するプログラム/変数の、プログラム変数領域A11への再格納を続けて行う。そして、後述するステップ44に進む。一方、ステップ38において肯定の判断Yesを行った場合、すなわち、今回エラーが検出されたプログラム/変数と直近にエラーを発生したプログラム/変数とが同じ場合、CPU51は、不揮発性RAM56におけるプログラム/変数領域A11に格納される各プログラム/変数のうち、今回エラーが発生したプログラム/変数を無効化するステップ43。そして、後述するステップ44に進む。そして、CPU51は、どのプログラムにおいてエラーが発生しているのかを反映させたエラーログを作成し、作成したエラーログを履歴領域A12のログ領域A12cに格納するステップ44。続いて、CPU51は、ステップ11で検出した今回の装置構成について、存在する構成をオン1、存在しない構成をオフ0とした構成ステータスを、履歴領域A12の構成ステータス領域A12bに格納するステップ45。そして、上述したステップ23に移行する。これにより、今回の起動処理において、プログラム/変数領域A11に格納されている特定のプログラム/変数に初めてエラーが発生した場合は、この特定のプログラム/変数が、この特定のプログラム/変数のもととなる圧縮プログラムから改めて作成されるとともに、再度、不揮発性RAM56のプログラム/変数領域A11に書き込まれる。このとき、再度書き込まれる特定のプログラム/変数は、プログラム/変数領域A11に既に書き込まれていた特定のプログラム/変数に上書きされる。一方、今回の起動処理において、上述した特定のプログラム/変数に、連続して2回目のエラーが発生した場合は、不揮発性RAM56のプログラム/変数領域A11においてこの特定のプログラム/変数が無効化されることにより、この特定のプログラム/変数に対応する構成が存在しないものとして、ステップ25の初期設定が行われることになる。次に、図6~図8に示すIPLの実行に伴う処理の手順について、具体的に例を挙げながら説明する。<最初の起動>図9は、画像形成装置1が初めて起動される場合初回起動時における、CPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図9aはIPLの実行中における状態を例示しており、図9bはIPLの実行が完了した状態を例示している。なお、ここでは、初回起動時において、構成A、構成Bおよび構成Cが接続されているものとする。図9aに示すように、初回の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには起動フラグFlagとして0が格納されており、構成ステータス領域A12bには構成ステータスとしてA=B=C=D=0が格納されている。また、図9aに示すように、初回の起動が開始される前の不揮発性RAM56において、プログラム/変数領域A11およびログ領域A12cは、ともに空の状態となっている。CPU51は、ステップ11において、図9aに示すように、構成A、構成Bおよび構成Cを検出するA=B=C=1、D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして0を取得する。これにより、CPU51は、ステップ13において肯定の判断を行う。続いて、CPU51は、ステップ11で検出した今回の構成A=B=C=1、D=0に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Aに対応する構成A用圧縮プログラム図9aではA圧縮を読み出し、読み出した構成A用圧縮プログラムを展開し、展開によって得られた構成A用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。次に、CPU51は、ステップ11で検出した今回の構成に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Bに対応する構成B用圧縮プログラム図9aではB圧縮を読み出し、読み出した構成B用圧縮プログラムを展開し、展開によって得られた構成B用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。続いて、CPU51は、ステップ11で検出した今回の構成に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Cに対応する構成C用圧縮プログラム図9aではC圧縮を読み出し、読み出した構成C用圧縮プログラムを展開し、展開によって得られた構成C用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図9bに示すように、構成A用のプログラム/変数図9bではA展開、構成B用のプログラム/変数図9bではB展開、および構成C用のプログラム/変数図9bではC展開が、それぞれ格納されることになる。その後、CPU51は、ステップ18において、図9bに示すように、不揮発性RAM56に配置された起動フラグ領域A12aに起動フラグとして1を格納し、また、ステップ19において、不揮発性RAM56に配置されたログ領域A12cに変更ログ履歴を格納し、さらに、ステップ20において、不揮発性RAM56に配置された構成ステータス領域A12bにA=B=C=1、D=0を格納する。そして、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラム、構成B用のプログラムおよび構成C用のプログラムを順次実行することで初期設定を行い、その結果、画像形成装置1において構成A、構成Bおよび構成Cが使用可能な状態となる。<2回目以降の起動:その1>図10は、図9に示す状態構成A、構成Bおよび構成Cを備えた状態で画像形成装置1が初回起動された後、装置構成の変更がない状態で、2回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図10aはIPLの実行中における状態を例示しており、図10bはIPLの実行が完了した状態を例示している。図10aに示すように、2回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図9に示す初回の起動に伴い構成ステータスとしてA=B=C=1、D=0が格納されている。また、図10aに示すように、2回目の起動が開催される前の不揮発性RAM56において、プログラム/変数領域A11には、図9に示す初回の起動に伴い構成A用のプログラム/変数、構成B用のプログラム変数および構成C用のプログラム/変数が格納され、ログ領域A12cには、図9に示す初回の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図10aに示すように、構成A、構成Bおよび構成Cを検出するA=B=C=1、D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ11において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では初回起動時の構成ステータスA=B=C=1、D=0を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致することから、ステップ22において否定の判断を行う。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム/変数においてエラーが発生しなかったことより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラム、構成B用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成A、構成Bおよび構成Cが使用可能な状態となる。このように、今回の構成が前回の構成から変更されていない場合は、起動時に、各構成に対応する圧縮プログラムの読み出し、展開および格納を行わずに、前回までの起動において、不揮発性RAM56に配置されたプログラム/変数領域A11に既に格納されている各プログラムをそのまま実行することで、起動時に、今回の構成のすべてに対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行する場合と比較して、起動処理にかかる時間が短縮化されることになる。<2回目以降の起動:その2>図11は、図9に示す状態構成A、構成Bおよび構成Cを備えた状態で画像形成装置1が初回起動された後、構成A~Cにさらに構成Dを追加する変更がなされた状態で、2回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図11aはIPLの実行中における状態を例示しており、図11bはIPLの実行が完了した状態を例示している。図11aに示すように、2回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図9に示す初回の起動に伴い構成ステータスとしてA=B=C=1、D=0が格納されている。また、図11aに示すように、2回目の起動が開催される前の不揮発性RAM56において、プログラム/変数領域A11には、図9に示す初回の起動に伴い構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数が格納され、ログ領域A12cには、図9に示す初回の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図11aに示すように、構成A、構成B、構成Cに加えて、構成Dも検出するA=B=C=D=1。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ21において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では初回起動時の構成ステータスA=B=C=1、D=0を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致しないことから、ステップ22において肯定の判断を行う。次に、CPU51は、ステップ26において、前回と今回との装置構成の変更量を演算し、閾値との比較を行う。なお、この例では、構成の変更数が1追加であり、また、プログラム/変数領域A11に占める、構成Dに対応するプログラム/変数の記憶領域の割合が30未満であることから、ステップ26において否定の判断を行う。すると、CPU51は、今回の構成において構成Dが追加されていることに基づき、ステップ27において肯定の判断を行う。これに伴い、CPU51は、ROM55に配置された圧縮プログラム領域A02から、構成Dに対応する構成D用圧縮プログラム図11aではD圧縮を読み出し、読み出した構成D用圧縮プログラムを展開し、展開によって得られた構成D用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ28~ステップ30。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図11bに示すように、前回までの起動において既に格納されていた構成A用のプログラム/変数図11bではA展開、構成B用のプログラム/変数図11bではB展開、および構成C用のプログラム/変数図11bではC展開に加え、新たに構成D用のプログラム/変数図11bではD展開が格納される。ここで、プログラム/変数領域A11において、構成D用のプログラム/変数は、上述した構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数とは異なる領域に書き込まれることになる。それから、CPU51は、ステップ32において否定の判断を行い、ステップ33において不揮発性RAM56に配置されたログ領域A12cに変更ログを格納し、ステップ34において、図11bに示すように、不揮発性RAM56に配置された構成ステータス領域A12bにA=B=C=D=1を格納する。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム/変数においてエラーが発生しなかったことより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラム、構成B用のプログラム、構成C用のプログラムおよび構成D用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成A、構成B、構成Cおよび構成Dが使用可能な状態となる。このように、今回の構成が前回の構成から閾値未満となる範囲内で増加した場合は、起動時に、増加した構成のみに対応する圧縮プログラムの読み出し、展開および格納を新たに行い、前回までの起動において、不揮発性RAM56に配置されたプログラム/変数領域A11に既に格納されている各プログラム、および、今回の起動において新たに格納したプログラムを実行することで、起動時に、今回の構成のすべて対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行する場合と比較して、起動処理にかかる時間が短縮化されることになる。<2回目以降の起動:その3>図12は、図9に示す状態構成A、構成Bおよび構成Cを備えた状態で画像形成装置1が初回起動された後、構成Bを削減する変更がなされた状態で、2回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図12aはIPLの実行中における状態を例示しており、図12bはIPLの実行が完了した状態を例示している。図12aに示すように、2回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図9に示す初回の起動に伴い構成ステータスとしてA=B=C=1、D=0が格納されている。また、図12aに示すように、2回目の起動が開催される前の不揮発性RAM56において、プログラム/変数領域A11には、図9に示す初回の起動に伴い構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数が格納され、ログ領域A12cには、図9に示す初回の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図12aに示すように、構成Aおよび構成Cを検出するA=C=1、B=D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ21において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では初回起動時の構成ステータスA=B=C=1、D=0を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致しないことから、ステップ22において肯定の判断を行う。次に、CPU51は、ステップ26において、前回と今回との装置構成の変更量を演算し、閾値との比較を行う。なお、この例では、構成の変更数が1削減であり、また、プログラム/変数領域A11に占める、構成Dに対応するプログラム/変数の記憶領域の割合が30未満であることから、ステップ26において否定の判断を行う。それから、CPU51は、今回の構成において構成Bが削減されていることに基づき、ステップ27において否定の判断を行う。これに伴い、CPU51は、ステップ31において、不揮発性RAM56に配置されたプログラム/変数領域A11に格納されている、構成B用のプログラム/変数を無効化する。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図12bに示すように、前回までの起動において既に格納されていた構成A用のプログラム/変数図12bではA展開、構成B用のプログラム/変数図12bではB展開、および構成C用のプログラム/変数図12bではC展開のうち、構成A用のプログラム/変数および構成C用のプログラム/変数は有効に維持される一方、構成B用のプログラム/変数は無効なものとなる。それから、CPU51は、ステップ32において否定の判断を行い、ステップ33において不揮発性RAM56に配置されたログ領域A12cに変更ログを格納し、ステップ34において、図12bに示すように、不揮発性RAM56に配置された構成ステータス領域A12bにA=C=1、B=D=0を格納する。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数および構成C用のプログラム/変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム/変数においてエラーが発生しなかったことより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成Aおよび構成Cが使用可能な状態となる。このように、今回の構成が前回の構成から閾値未満となる範囲内で削減された場合は、起動時に、削減された構成に対応するプログラムの無効化を行い、前回までの起動において、不揮発性RAM56に配置されたプログラム/変数領域A11に既に格納されている各プログラム無効化されていないもののみを実行することで、起動時に、今回の構成のすべて対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行する場合と比較して、起動処理にかかる時間が短縮化されることになる。<2回目以降の起動:その4>図13は、図9に示す状態構成A、構成Bおよび構成Cを備えた状態で画像形成装置1が初回起動された後、構成Aを削減する変更がなされた状態で、2回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図13aはIPLの実行中における状態を例示しており、図13bはIPLの実行が完了した状態を例示している。図13aに示すように、2回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図9に示す初回の起動に伴い構成ステータスとしてA=B=C=1、D=0が格納されている。また、図13aに示すように、2回目の起動が開催される前の不揮発性RAM56において、プログラム/変数領域A11には、図9に示す初回の起動に伴い構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数が格納され、ログ領域A12cには、図9に示す初回の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図13aに示すように、構成Bおよび構成Cを検出するB=C=1、A=D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ21において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では初回起動時の構成ステータスA=B=C=1、D=0を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致しないことから、ステップ22において肯定の判断を行う。次に、CPU51は、ステップ26において、前回と今回との装置構成の変更量を演算し、閾値との比較を行う。なお、この例では、構成の変更数が1削減であるものの、プログラム/変数領域A11に占める、構成Aに対応するプログラム/変数の記憶領域の割合が30以上であることから、ステップ26において肯定の判断を行う。次いで、CPU51は、ステップ35において、不揮発性RAM56に配置されたログ領域A12cに変更ログを格納し、さらに、ステップ36において、不揮発性RAM56に配置された起動フラグ領域A12aに起動フラグとして0を格納した後、ステップ14に移行する。それから、CPU11は、ステップ11で検出した今回の構成B=C=1、A=D=0に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Bに対応する構成B用圧縮プログラム図13aではB圧縮を読み出し、読み出した構成B用圧縮プログラムを展開し、展開によって得られた構成B用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。次に、CPU51は、ステップ11で検出した今回の構成に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Cに対応する構成C用圧縮プログラム図13aではC圧縮を読み出し、読み出した構成C用圧縮プログラムを展開し、展開によって得られた構成C用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図13bに示すように、新たに、構成B用のプログラム/変数図13bではB展開および構成C用のプログラム図13bではC展開が、それぞれ格納上書きされることになる。その後、CPU51は、ステップ18において、図13bに示すように、不揮発性RAM56に配置された起動フラグ領域A12aに起動フラグとして1を格納し、また、ステップ19において、不揮発性RAM56に配置されたログ領域A12cに変更ログ履歴を格納し、さらに、ステップ20において、不揮発性RAM56に配置された構成ステータス領域A12bにB=C=1、A=D=0を格納する。そして、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成B用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成Bおよび構成Cが使用可能な状態となる。このように、今回の構成が前回の構成から閾値以上となる範囲で削減された場合は、起動時に、今回の構成のすべてに対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行することで、不揮発性RAM56に配置されたプログラム/変数領域A11における各プログラムの断片化および起動後における処理速度の低下が抑制されることになる。<2回目以降の起動:その5>図14は、図11に示す状態構成A、構成B、構成Cおよび構成Dを備えた状態で画像形成装置1が2回目に起動された後、構成Bおよび構成Dを削減する変更がなされた状態で、3回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図14aはIPLの実行中における状態を例示しており、図14bはIPLの実行が完了した状態を例示している。図14aに示すように、3回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図11に示す2回目の起動に伴い構成ステータスとしてA=B=C=D=1が格納されている。また、図14aに示すように、3回目の起動が開始される前の不揮発性RAM56において、プログラム/変数領域A11には、図11に示す2回目の起動に伴い構成A用のプログラム/変数、構成B用のプログラム/変数、構成C用のプログラム/変数および構成D用のプログラム/変数が格納され、ログ領域A12cには、図11に示す2回目の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図14aに示すように、構成Aおよび構成Cを検出するA=C=1、B=D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ21において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では2回目の起動時の構成ステータスA=B=C=D=1を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致しないことから、ステップ22において肯定の判断を行う。次に、CPU51は、ステップ26において、前回と今回との装置構成の変更量を演算し、閾値との比較を行う。なお、この例では、構成の変更数が2ともに削減であることから、ステップ26において肯定の判断を行う。次いで、CPU51は、ステップ35において、不揮発性RAM56に配置されたログ領域A12cに変更ログを格納し、さらに、ステップ36において、不揮発性RAM56に配置された起動フラグ領域A12aに起動フラグとして0を格納した後、ステップ14に移行する。それから、CPU11は、ステップ11で検出した今回の構成A=C=1、B=D=0に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Aに対応する構成A用圧縮プログラム図14aではA圧縮を読み出し、読み出した構成A用圧縮プログラムを展開し、展開によって得られた構成A用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。次に、CPU51は、ステップ11で検出した今回の構成に基づき、ROM55に配置された圧縮プログラム領域A02から、構成Cに対応する構成C用圧縮プログラム図14aではC圧縮を読み出し、読み出した構成C用圧縮プログラムを展開し、展開によって得られた構成C用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ14~ステップ16。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図14bに示すように、新たに、構成A用のプログラム/変数図14bではA展開および構成C用のプログラム図14bではC展開が、それぞれ格納上書きされることになる。その後、CPU51は、ステップ18において、図14bに示すように、不揮発性RAM56に配置された起動フラグ領域A12aに起動フラグとして1を格納し、また、ステップ19において、不揮発性RAM56に配置されたログ領域A12cに変更ログ履歴を格納し、さらに、ステップ20において、不揮発性RAM56に配置された構成ステータス領域A12bにA=C=1、B=D=0を格納する。そして、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成Aおよび構成Cが使用可能な状態となる。このように、今回の構成が前回の構成から閾値以上となる範囲で削減された場合は、起動時に、改めて、今回の構成のすべてに対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行することで、不揮発性RAM56に配置されたプログラム/変数領域A11における各プログラムの断片化が抑制されることになり、起動後における処理速度の低下が抑制されることになる。<2回目以降の起動:その6>図15は、図9に示す状態構成A、構成Bおよび構成Cを備えた状態で画像形成装置1が初回起動された後、装置構成に変更がない状態で、2回目に起動される場合におけるCPU51、ROM55および不揮発性RAM56の状態を説明するための図である。ここで、図15aはIPLの実行中における状態を例示しており、図15bはIPLの実行が完了した状態を例示している。図15aに示すように、2回目の起動が開始される前の不揮発性RAM56において、起動フラグ領域A12aには、図9に示す初回の起動に伴い起動フラグとして1が格納されており、構成ステータス領域A12bには、図9に示す初回の起動に伴い構成ステータスとしてA=B=C=1、D=0が格納されている。また、図15aに示すように、2回目の起動が開催される前の不揮発性RAM56において、プログラム/変数領域A11には、図9に示す初回の起動に伴い構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数が格納され、ログ領域A12cには、図9に示す初回の起動に伴い変更ログが格納されている。CPU51は、ステップ11において、図15aに示すように、構成A、構成Bおよび構成Cを検出するA=B=C=1、D=0。また、CPU51は、ステップ12において、起動フラグ領域A12aから起動フラグとして1を取得する。これにより、CPU51は、ステップ13において否定の判断を行う。続いて、CPU51は、ステップ11において、不揮発性RAM56に配置された構成ステータス領域A12bから、前回起動時この例では初回起動時の構成ステータスA=B=C=1、D=0を取得する。そして、CPU51は、ステップ11で検出した今回の構成とステップ21で取得した前回の構成とが一致することから、ステップ22において否定の判断を行う。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数について順次エラーチェックを実行する。なお、この例では、図15aに示したように、エラーチェックの結果、構成B用のプログラム/変数においてエラーが発生することにより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ37において不揮発性RAM56に配置されたログ領域A12cより、直近のエラーログを取得し、ステップ38において今回発生したエラーと前回発生したエラーとが、同じ構成を対象とするプログラム/変数であったか否かを判断する。なお、この例では、今回エラーが発生したプログラム/変数が直近にエラーが発生したプログラム/変数とは異なることにより、CPU51が、ステップ38において否定の判断を行っているものとする。すると、CPU51は、構成B用のプログラム/変数においてエラーが発生していることに基づき、ROM55に配置された圧縮プログラム領域A02から、構成Bに対応する構成B用圧縮プログラム図15aではB圧縮を読み出し、読み出した構成B用圧縮プログラムを展開し、展開によって得られた構成B用のプログラム/変数を不揮発性RAM56に配置されたプログラム/変数領域A11に格納するステップ39~ステップ41。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図15bに示すように、前回までの起動において既に格納されていた構成A用のプログラム/変数図15bではA展開、構成B用のプログラム/変数図15bではB展開、および構成C用のプログラム/変数図15bではC展開のうち、構成A用のプログラム/変数および構成C用のプログラム/変数はそのままの状態で維持される一方、構成B用のプログラム/変数が再度書き込まれる。ここで、プログラム/変数領域A11において、新たに書き込まれる構成B用のプログラム/変数は、既に買い込まれていた構成B用のプログラム/変数に上書きされることになる。それから、CPU51は、ステップ42において否定の判断を行い、ステップ44において不揮発性RAM56に配置されたログ領域A12cにエラーログを格納し、ステップ45において、不揮発性RAM56に配置された構成ステータス領域A12bにA=B=C=1、D=0を格納する。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数について再度エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム/変数においてエラーが発生しなかったことより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラム、構成B用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成A、構成Bおよび構成Cが使用可能な状態となる。このように、不揮発性RAM56におけるプログラム/変数領域A11に格納された特定のプログラムにエラーが生じた場合には、起動時に、エラーが生じたプログラム/変数に対応する圧縮プログラムの読み出し、展開および格納を再度行い、前回までの起動において、不揮発性RAM56に配置されたプログラム/変数領域A11に既に格納されている各プログラム、および、今回の起動において再度格納したプログラムを実行することで、起動時に、今回の構成のすべて対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行する場合と比較して、起動処理にかかる時間が短縮化されることになる。一方、上記ステップ39~ステップ41において構成B用のプログラム/変数をプログラム/変数領域A11に再度書き込んだ後、上述したステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数、構成B用のプログラム/変数および構成C用のプログラム/変数について再度エラーチェックを実行した結果として、構成B用のプログラム/変数で再びエラーが発生した場合、CPU51は、ステップ38において肯定の判断を行う。すると、CPU51は、構成B用のプログラム/変数において連続してエラーが発生していることに基づき、ステップ31において、不揮発性RAM56に配置されたプログラム/変数領域A11に格納されている、構成B用のプログラム/変数を無効化する。以上の手順により、不揮発性RAM56に配置されたプログラム/変数領域A11には、図16に示すように、前回までの起動において既に格納されていた構成A用のプログラム/変数図16ではA展開、構成B用のプログラム/変数図16ではB展開、および構成C用のプログラム/変数図16ではC展開のうち、構成A用のプログラム/変数および構成C用のプログラム/変数は有効に維持される一方、構成B用のプログラム/変数は無効なものとなる。それから、CPU51は、ステップ44において不揮発性RAM56に配置されたログ領域A12cにエラーログを格納し、ステップ45において、不揮発性RAM56に配置された構成ステータス領域A12bにA=C=1、B=D=0を格納する。そして、CPU51は、ステップ23において、プログラム/変数領域A11に格納された構成A用のプログラム/変数および構成C用のプログラム/変数について順次エラーチェックを実行する。なお、この例では、エラーチェックの結果、すべてのプログラム/変数ここでは構成A用のプログラム/変数および構成C用のプログラム/変数においてエラーが発生しなかったことより、CPU51が、ステップ24において肯定の判断を行っているものとする。その後、CPU51は、ステップ25において、プログラム/変数領域A11に格納された構成A用のプログラムおよび構成C用のプログラムを順次実行する初期設定を行い、その結果、画像形成装置1において構成Aおよび構成Cが使用可能な状態となる。このように、不揮発性RAM56におけるプログラム/変数領域A11に格納された特定のプログラムに連続してエラーが生じた場合には、起動時に、エラーが生じたプログラムの無効化を行い、前回までの起動において、不揮発性RAM56に配置されたプログラム/変数領域A11に既に格納されている各プログラム無効化されていないもののみを実行することで、起動時に、今回の構成のすべて対応する圧縮プログラムの読み出し、展開および格納を行ってから各プログラムを実行する場合と比較して、起動処理にかかる時間が短縮化されることになる。ここで、上述した説明では、構成の追加あるいは削減に伴って、装置構成が変更される場合を例としたが、例えば接触不良や装置故障など、実際の装置構成が変更されていないにも関わらず、特定の構成を検出できないような場合も生じ得る。本実施の形態で説明した手法を用いれば、このような理由によって装置構成の変更が生じた場合であっても、使用可能な残りの構成で構築された装置を動作させるためのプログラムを再構成することが可能になる。なお、本実施の形態では、各圧縮プログラムを格納する圧縮プログラム領域A02を、不揮発性RAM56に配置していたが、これに限られるものではない。すなわち、圧縮プログラム領域A02を、例えば画像形成装置1にネットワーク2を介して接続されるサーバ装置5図1参照や、USBIF65に接続されたカードリーダ80に配置されるメモリカード81に配置するようにしてもよい。なお、このような場合には、IPLの実行時において、各圧縮プログラムの読み取り対象を、サーバ装置5あるいはカードリーダ80に装着されたメモリカードに設定すればよい。また、本実施の形態では、不揮発性RAM56にプログラム/変数領域A11および履歴領域A12を配置するとともに、揮発性RAM57にワーク領域A21およびバッファ領域A22を配置するようにしていたが、これに限られるものではなく、例えば不揮発性RAM56のみを設け、この不揮発性RAM56にプログラム/変数領域A11、履歴領域A12、ワーク領域A21およびバッファ領域A22を配置するようにしてもかまわない。さらに、本実施の形態では、制御部50を画像形成装置1に組み込んだ場合を例として説明を行ったが、これに限られるものではなく、複数のユニットの組み合わせによって構成され、これら複数のユニットの着脱に伴って構成が変更され得る装置に適用しても差し支えない。さらにまた、本実施の形態では、プログラム/変数領域A11に格納されるプログラム/変数の書き込み、再書き込みあるいは無効化が生じた原因を、履歴領域A12より具体的にはログ領域A12cに格納された変更ログあるいはエラーログ等を読み出して解析することが可能となる。