以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図1は、本実施の形態の一つにおけるMFPの外観を示す斜視図である。図1を参照して、MFP100は、画像形成装置の一例であり、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル115とを含む。
自動原稿搬送装置120は、原稿給紙トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿画像が読み取られた原稿を原稿排紙トレイ上に排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。
画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成する。
操作パネル115は、MFP100の上面に設けられ、操作画面等を表示するとともに、ユーザーによる操作を受け付けるユーザーインターフェースとして機能する。
図2は、MFPのハードウェア構成の概要の一例を示すブロック図である。図2を参照して、MFP100は、上述した、自動原稿搬送装置120、原稿読取部130、画像形成部140および給紙部150に加えて、メイン基板111と、通信インターフェース(I/F)部160と、ファクシミリ部170と、外部記憶装置180と、を含み、それぞれがPCIExPress(登録商標)の規格で定められたバス(以下「PCI−Eバス」という)で接続されている。
メイン基板111は、大容量記憶装置としてのハードディスクドライブ(HDD)113および操作パネル115と接続される。また、メイン基板111は、オプション基板201を接続可能である。MFP100は、デフォルトの状態では、メイン基板111にオプション基板201は接続されていない。オプション基板201の詳細は後述する。
メイン基板111は、MFP100の全体を制御するメインCPU(中央演算装置)13(図3参照)を備えており、デフォルトの状態では、メインCPU13が、PCI−Eバスにおいてルートコンプレックスに設定され、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180それぞれが、エンドポイントに設定される。
通信I/F部160は、ネットワークにMFP100を接続するためのインターフェースである。通信I/F部160は、TCP(Transmission Control Protocol)またはFTP(File Transfer Protocol)等の通信プロトコルで、ネットワークに接続された他のコンピューターと通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。また、通信I/F部160が接続されるネットワークは、例えば、ローカルエリアネットワーク(LAN)であり、接続形態は有線または無線を問わない。またネットワークは、LANに限らず、ワイドエリアネットワーク(WAN)、公衆交換電話網(Public Switched Telephone Networks)を用いたネットワーク等であってもよい。さらに、ネットワークは、インターネットに接続されている。このため、MFP100は、インターネットに接続されたサーバー等のコンピューターと通信が可能である。
ファクシミリ部170は、公衆交換電話網(PSTN)に接続され、ファクシミリデータを送受信する。外部記憶装置180は、CD−ROM(Compact Disk Read Only Memory)180A、または半導体メモリーが装着される。外部記憶装置180は、CD−ROM118または半導体メモリーに記憶されたデータを読み出す。外部記憶装置180は、半導体メモリーにデータを記憶する。
操作パネル115は、表示部117と、操作部119と、を含む。表示部117は、例えば、液晶表示装置(LCD)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部119は、複数のハードキーと、タッチパネルと、を含む。タッチパネルは、表示部117の上面または下面に表示部に重畳して設けられたマルチタッチ対応のタッチパネルであり、表示部の表示面中でユーザーにより指示された位置を検出する。
図3は、メイン基板の詳細な構成の一例を示すブロック図である。図3を参照して、メイン基板111は、メインSoC(System−on−a−Chip)11と、起動用CPU21と、電源回路31と、メインメモリー回路41と、接続コネクタ51と、を含む。
メインSoC11は、メインCPU13と、メイン画像制御ASIC(Application Specific Integrated Circuit)15と、を含む。
メインメモリー回路41は、メインCPU13が実行するためのプログラム等を記憶するROM(Read Only Memory)43と、メインCPU13の作業領域として使用されるRAM(Random Access Memory)45と、を含む。
メインCPU13は、起動用CPU21により制御されて起動し、メインメモリー回路41に含まれるROM43に記憶されたプログラムをRAM45にロードして実行することにより、MFP100の全体を制御する。また、メインCPU13は、HDD113と接続されており、HDD113を制御するプログラムを実行することにより、HDD113に記憶されたデータにアクセス可能である。
メイン画像制御ASIC15は、メインCPU13とPCI−Eバスで接続され、メインCPU13がルートコンプレックスの場合にメインCPU13により制御される。メイン画像制御ASIC15は、画像を処理する画像処理回路と、データの入出力を制御する入出力制御回路とを含む。メイン画像制御ASIC15は、操作パネル115と接続される。したがって、メインCPU13は、メイン画像制御ASIC15に画像処理を実行させることが可能である。また、メインCPU13は、メイン画像制御ASIC15を介して操作パネル115の表示部117に画面を表示させるとともに、操作部119によって受け付けられたユーザーによる操作を検出することができる。
起動用CPU21は、MFP100に電源が投入される起動時に、起動用プログラムを実行し、メインSoC11および電源回路31を制御する。起動用CPU21が実行する起動用プログラムは、メインメモリー回路41が備えるROM43に記憶されている。なお、起動用プログラムは、ROM43とは別に設けられたROMに記憶するようにしてもよいし、外部記憶装置180に装着されたCD−ROM180Aに記録するようにしてもよい。なお、CPU111が実行するプログラムは、ROM43、HDD113、CD−ROM180Aに記録されたプログラムに限られず、HDD113に記憶されたプログラムをRAMにロードして実行するようにしてもよい。この場合、ネットワークを介して接続された他のコンピューターが、MFP100のHDD113に記憶された起動制御プログラムを書き換える、または、新たな起動制御プログラムを追加して書き込むようにしてもよい。さらに、MFP100が、ネットワークに接続された他のコンピューターから起動制御プログラムをダウンロードして、その起動制御プログラムをHDD113に記憶するようにしてもよい。ここでいうプログラムは、起動用CPU21が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
接続コネクタ51は、オプション基板201と接続可能であり、電源コネクタ53と、読取バス用コネクタ55と、制御バス用コネクタ57と、PCI−Eバス用コネクタ59と、を含む。電源コネクタ53は、電源回路31と接続され、オプション基板201が接続される場合に、電源回路31から出力される電力をオプション基板201に供給する。読取バス用コネクタ55は、起動用CPU21の読取バスに接続され、制御バス用コネクタ57は、起動用CPU21の制御バスに接続される。PCI−Eバス用コネクタ59は、メインCPU13およびメイン画像処理用ASIC15それぞれのPCI−Eバスに接続される。なお、PCI−Eバス用コネクタ59は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180が接続されるPCI−Eバスに接続される。
電源回路31は、メインSoC11、起動用CPU21、メインメモリー回路41、接続コネクタ51に電力を供給する。電源回路31は、起動用CPU21によって制御され、メインCPU13、メイン画像制御ASIC15およびメインメモリー回路41それぞれに電力を供給する状態と、電力を供給しない状態とを切り換える。また、電源回路31は、起動用CPU21によって制御され、オプション基板201に電力を供給する状態と、電力を供給しない状態とを切り換える。具体的には、電源回路31は、MFP100に電源が投入された時点で、起動用CPU21のみに電力を供給し、その後は、起動用CPU21からの制御によって、メインCPU13、メイン画像制御ASIC15、メインメモリー回路41および電源コネクタ53それぞれに電力を供給する状態と、電力を供給しない状態とを切り換える。
オプション基板201は、接続コネクタ51と接続されるコネクタを有する。オプション基板201は、メイン基板111と接続される場合、メイン基板111から電源コネクタ53を介して電力が供給される。オプション基板201は、CPUまたはSoCを備えており、その制御バスが制御バス用コネクタ57に接続される。さらに、オプション基板201が備えるCPUまたはSoCのPCI−Eバスは、PCI−Eバス用コネクタ59に接続される。以下、オプション基板201が備えるCPUまたはSoCに含まれるCPUを、サブCPUという。
オプション基板201が備えるサブCPUは、メイン基板111の起動用CPU21により制御されて起動し、オプション基板201が備えるROMに記憶されたプログラムを実行し、ルートコンプレックスとして起動する。オプション基板201が備えるROMは、オプション基板201が備えるサブCPUをルートコンプレックスに設定するプログラムを記憶する。
さらに、オプション基板201は、オプション基板201の能力情報を記憶するオプションROMを備えており、そのオプションROMの読取バスは、読取バス用コネクタ55と接続される。以下、能力情報をオプションIDという。オプションIDは、オプション基板201が備えるサブCPUの性能、GPU(Graphics Processing Unit)搭載の有無、サブ画像制御ASIC搭載の有無、ブート制御情報、電源制御情報と、ブートプログラムに関する情報と、を含む。オプション基板201が備えるサブCPUの性能は、サブCPUが駆動するクロック周波数、クロック精度(ppm(parts per million))、コア数を含む。ブート制御情報は、サブCPUのGPIO(General Purpose Input/Output)に関する情報、サブ画像制御ASICを搭載している場合にはそのサブ画像制御ASICのGPIOに関する情報、GPUを搭載している場合にはそのGPUのGPIOに関する情報、メインCPU13をエンドポイントに設定して起動するブートプログラムに関する情報を含む。電源情報は、電源コネクタ53が有する複数の接続ピンそれぞれに対応する回路の情報である。具体的には、電源情報は、電源コネクタ53が有する複数の接続ピンと、オプション基板201が備える複数の部品それぞれの電源入力ピンとの対応関係を示す。ブートプログラムに関する情報は、メインCPU13をエンドポイントに設定して起動するブートプログラムの有無、およびそのブートプログラムのメモリーアドレスと、を含む。
メインCPU13がルートコンプレックスとして起動する場合、メインCPU13は、PCI−Eバスを用いて、終端抵抗を検出することによりエンドポイントを検出し、検出されたエンドポイントとの間でハードウェア的にリンクを確立するためのトレーニングシーケンスを実行することによってエンドポイントとリンクを確立する。その後、メインCPU13は、リンクを確立したエンドポイントとなる装置の情報を読み取り、エンドポイントとなる装置を制御するのに必要な設定をする(マッピング)。オプション基板が接続されていない場合、メインCPU13は、メイン画像制御ASIC15、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180それぞれを、エンドポイントとして検出し、制御可能に設定する。
図4は、起動用CPUが有する機能の一例を示すブロック図である。図4に示す機能は、起動用CPU21が、ROM43に記憶された起動制御プログラムを実行することにより、起動用CPU21に形成される機能である。図4を参照して、起動用CPU21は、オプション基板201の接続有無を検出する検出部61と、オプション基板201のオプションIDを取得する取得部63と、選択部65と、メイン画像処理起動部67と、サブ画像処理起動部69と、遮断部71と、切換部73と、を含む。
検出部61は、MFP100に電源が投入された時点で、接続コネクタ51にオプション基板201が接続されているか否かを判断する。具体的には、検出部61は、読取バス用コネクタ55を介してオプション基板201が備えるオプションROMにアクセス可能な場合に、接続コネクタ51にオプション基板201が接続されていると判断する。検出部61は、接続コネクタ51にオプション基板201が接続されていると判断する場合、取得部63に取得指示を出力する。
取得部63は、取得指示が入力されることに応じて、読取バス用コネクタ55を介してオプション基板201が備えるオプションROMに記憶されたオプション基板201のオプションIDを取得する。取得部63は、取得されたオプションIDを選択部65、サブ画像処理起動部69、遮断部71および切換部73に出力する。
選択部65は、オプション基板201のオプションIDに基づいて、メインCPU13と、オプション基板201が備えるサブCPUのいずれか一方を選択する。選択部65は、速度比較部81と、速度基準選択部83と、特定状況選択部85と、を含む。速度比較部81は、メインCPU13の演算速度と、オプション基板201が備えるサブCPUの演算速度と、を比較する。オプション基板201のオプションIDに含まれるクロック周波数に基づき、演算速度を比較し、比較結果を速度基準選択部83に出力する。なお、クロック周波数だけでなく、クロック精度、コア数を比較の基準とするようにしてもよい。
速度基準選択部83は、速度比較部81から入力される比較結果に基づいて、メインCPU13とオプション基板201が備えるサブCPUのうち演算速度の速い一方を選択する。速度基準選択部83は、メインCPU13を選択する場合、特定状況選択部85にメインCPU13を選択することを示す第1選択指示を出力する。速度基準選択部83は、特定状況選択部85に第1選択指示を出力した後、特定状況選択部85から不選択信号が入力されることを条件に、切換部73、サブ画像処理起動部69および遮断部71にメインCPU13を選択したことを示す切換指示を出力する。速度基準選択部83は、特定状況選択部85に第1選択指示を出力した後、特定状況選択部85から第1重複選択信号が入力される場合、切換部73、サブ画像処理起動部69および遮断部71にメインCPU13を選択したことを示す切換指示を出力しない。
速度基準選択部83は、オプション基板201が備えるサブCPUを選択する場合、特定状況選択部85にオプション基板201が備えるサブCPUを選択することを示す第2選択指示を出力する。速度基準選択部83は、特定状況選択部85に第2選択指示を出力した後、特定状況選択部85から不選択信号が入力されることを条件に、切換部73、サブ画像処理起動部69および遮断部71にオプション基板201が備えるCPUを選択したことを示す切換指示を出力する。速度基準選択部83は、特定状況選択部85に第2選択指示を出力した後、特定状況選択部85から第2重複選択信号が入力される場合、切換部73、サブ画像処理起動部69および遮断部71にメインCPU13を選択したことを示す切換指示を出力しない。
特定状況選択部85は、速度基準選択部83から第1選択指示が入力される場合、オプション基板201のオプションIDを参照して、オプション基板201がGPUを有しており、かつ、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶しているか否かを判断する。特定状況選択部85は、オプション基板201がGPUを有しており、かつ、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶している場合は、サブCPUを選択し、切換部73および速度基準選択部83にサブCPUを選択したことを示す第1重複起動信号を出力する。特定状況選択部85は、オプション基板201がGPUを有していない場合、または、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶していない場合は、オプション基板が備えるサブCPUを選択することなく、速度基準選択部83に不選択信号を出力する。
特定状況選択部85は、速度基準選択部83から第2選択指示が入力される場合、オプション基板201のオプションIDを参照して、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶しているか否かを判断する。また、特定状況選択部85は、HDD113を使用するか否かを判断する。HDD113を使用するか否かは、MFP100に予め設定しておいてもよいし、MFP100の起動時に、ユーザーが操作部119に入力するようにしてもよい。特定状況選択部85は、オプション基板201がメインCPU13をエンドポイントに設定して起動するブートプログラムを記憶している場合であって、HDD113を使用することが設定されている場合、切換部73および速度基準選択部83にHDD113を使用することを示す第2重複起動信号を出力する。特定状況選択部85は、HDD113を使用することが設定されていない場合、または、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶していない場合は、速度基準選択部83に不選択信号を出力する。
メイン画像処理起動部67は、MFP100に電源が投入された時点で、メイン画像制御ASIC15を起動する。具体的には、電源回路31を制御して、メイン画像制御ASIC15に電力を供給させ、メイン画像制御ASIC15をリセットする。メイン画像制御ASIC15は、PCI−Eバスにおいてエンドポイントに設定されているので、電源回路31から電力が供給され、リセット信号が入力されるとエンドポイントとして起動し、メインCPU13およびオプション基板201が備えるサブCPUのうちルートコンプレックスに設定される一方によって制御される。
サブ画像処理起動部69は、取得部63からオプション基板201のオプションIDが入力され、速度基準選択部83からメインCPU13を選択したことを示す切換指示またはオプション基板201が備えるサブCPUを選択したことを示す切換指示が入力される。サブ画像処理起動部69は、オプション基板201のオプションIDのサブ画像制御ASIC搭載の有無を参照し、オプション基板201にサブ画像制御ASICが搭載されているか否かを判断する。サブ画像処理起動部69は、オプション基板201がサブ画像制御ASICを搭載していれば、速度基準選択部83からメインCPU13を選択したことを示す切換指示またはサブCPUを選択したことを示す切換指示のいずれかが入力されことに応じて、オプション基板201が備えるサブ画像制御ASICを起動する。
具体的には、サブ画像処理起動部69は、オプション基板201が備えるサブ画像制御ASICを起動する場合、オプション基板201のオプションIDに含まれる電源情報を参照して、電源コネクタ53が有する複数の接続ピンのうちオプション基板201が備えるサブ画像制御ASICの電源入力ピンに対応する接続ピンを特定し、電源回路31に電源コネクタ53の特定された接続ピンに電力を供給させる。オプション基板201が備えるサブ画像制御ASICは、PCI−Eバスにおいてエンドポイントに設定されているので、電源回路31から電力が供給されるとエンドポイントとして起動し、メインCPU13およびオプション基板201が備えるサブCPUのうちルートコンプレックスに設定される一方によって制御される。
遮断部71は、取得部63からオプション基板201のオプションIDが入力され、速度基準選択部83からメインCPU13を選択したことを示す切換指示またはオプション基板201が備えるサブCPUを選択したことを示す切換指示が入力される。サブ画像処理起動部69は、オプション基板201のオプションIDに含まれるサブ画像制御ASIC搭載の有無を参照し、オプション基板201にサブ画像制御ASICが搭載されているか否かを判断するとともに、オプション基板201のオプションIDに含まれるGPU搭載の有無を参照し、オプション基板201にGPUが搭載されているか否かを判断する。
遮断部71は、オプション基板201がサブ画像制御ASICを搭載している場合、または、オプション基板201がGPUを搭載している場合、何も出力しない。また、遮断部71は、オプション基板201がサブ画像制御ASICを搭載している場合、または、オプション基板201がGPUを搭載している場合であって、速度基準選択部83からオプション基板201が備えるサブCPUを選択したことを示す切換指示を選択したことを示す切換指示が入力される場合、何も出力しない。
一方、遮断部71は、オプション基板201がサブ画像制御ASICおよびGPUのいずれも搭載していない場合であって、速度基準選択部83からメインCPU13を選択したことを示す切換指示が入力されことに応じて、電源回路31を制御して、電源コネクタ53に供給する電力を遮断させる。これにより、オプション基板201に電力が供給されないので、オプション基板201により消費される電力を削減することができる。
切換部73は、メインCPU13およびサブCPUのいずれか一方をルートコンプレックスとして起動する。切換部73は、取得部63からオプション基板201のオプションIDが入力され、選択部65からメインCPU13を選択したことを示す切換指示、サブCPUを選択したことを示す切換指示、第1の重複起動指示または第2の重複起動指示のいずれかが入力される。
切換部73は、選択起動部89と、重複起動部91と、を含む。選択起動部89は、速度基準選択部83からメインCPU13を選択したことを示す切換指示が入力される場合、メインCPU13をルートコンプレックスとして起動する。具体的には、選択起動部89は、電源回路31にメインCPU13の電力入力ピンに電力を供給させるとともに、メインCPU13をリセットする。メインCPU13は、リセットされると、ROM43に記憶されているプログラムを実行する。ROM43に記憶されているプログラムは、メインCPU13をルートコンプレックスに設定するので、メインCPU13は、ROM43に記憶されているプログラムを実行することによってルートコンプレックスとして起動する。
また、選択起動部89は、速度基準選択部83からメインCPU13を選択したことを示す切換指示が入力される場合、サブCPUを起動しない。具体的には、オプション基板201のオプションIDに含まれる電源情報を参照して、接続コネクタ51が備える複数の接続ピンのうちオプション基板201が備えるサブCPUの電源入力ピンに対応する接続ピンを特定し、電源回路31に特定された接続ピンに供給する電力を遮断させる。オプション基板201が備えるサブCPUは、電力が供給されないので、起動しない。
選択起動部89は、速度基準選択部83からオプション基板201が備えるサブCPUを選択したことを示す切換指示が入力される場合、オプション基板201が備えるサブCPUをルートコンプレックスとして起動する。具体的には、オプション基板201のオプションIDに含まれる電源情報を参照して、接続コネクタ51が備える複数の接続ピンのうちオプション基板201が備えるサブCPUの電源入力ピンに対応する接続ピンを特定し、電源回路31に特定された接続ピンに電力を供給させる。さらに、オプション基板201のオプションIDに含まれるブート情報を参照して、オプション基板201が備えるサブCPUのGPIOに関する情報を特定し、オプション基板201が備えるサブCPUにリセット信号を出力する。起動用CPU21の制御バスは、制御バス用コネクタ57を介してオプション基板201が備えるサブCPUの制御バスと接続されているので、選択起動部89は、制御バスを用いてオプション基板201が備えるサブCPUをリセットする。オプション基板201が備えるサブCPUは、リセットされると、オプション基板201が備えるROMに記憶されたプログラムを実行する。オプション基板201が備えるROMに記憶されたプログラムは、オプション基板201が備えるサブCPUをルートコンプレックスに設定するので、オプション基板201が備えるサブCPUはオプション基板201が備えるROMに記憶されたプログラムを実行することによってルートコンプレックスとして起動する。
また、選択起動部89は、速度基準選択部83からサブCPUを選択したことを示す切換指示が入力される場合、メインCPU13を起動しない。具体的には、電源回路31にメインCPU13の電源入力ピンに供給する電力を遮断させる。メインCPU13は、電力が供給されないので、起動しない。
重複起動部91は、特定状況選択部85から第1重複起動信号または第2重複起動信号が入力される場合、メインCPU13をエンドポイントとして起動するとともに、オプション基板201が備えるサブCPUをルートコンプレックスとして起動する。重複起動部91は、特定状況起動部93を含む。特定状況起動部93は、オプション基板201のオプションIDを参照して、メインCPU13をエンドポイントに設定して起動するブートプログラムのメモリーアドレスを特定する。そして、特定状況起動部93は、電源回路31にメインCPU13の電力入力ピンに電力を供給させるとともに、メインCPU13のブートプログラムをオプション基板201に記憶されたブートプログラムに設定し、リセットする。
メインCPU13は、ブートプログラムをオプション基板201に記憶されたブートプログラムに設定されてリセットされると、オプション基板201に記憶されたブートプログラムを実行する。オプション基板201に記憶されたブートプログラムは、メインCPU13をエンドポイントに設定するので、メインCPU13は、オプション基板201に記憶されたブートプログラムを実行することによってエンドポイントとして起動する。メインCPU13は、エンドポイントとして起動する場合、HDD113を制御するプログラムを実行し、HDD113を制御する。
さらに、重複起動部91は、電源回路31にオプション基板201が備えるサブCPUの電源入力ピンに電力を供給させるとともに、オプション基板201が備えるサブCPUにリセット信号を出力する。オプション基板201が備えるサブCPUは、オプション基板201が備えるROMに記憶されたプログラムを実行し、ルートコンプレックスとして起動する。このため、オプション基板201が備えるサブCPUは、重複起動部91によってリセットされると、ルートコンプレックスとして起動する。
図5および図6は、起動制御処理の流れの一例を示すフローチャートである。起動制御処理は、起動用CPU21が、MFP100に電源が投入された時点でROMに記憶された起動制御プログラムを実行することにより、起動用CPU21により実行される処理である。図5を参照して、起動用CPU21は、オプション基板201を検出したか否かを判断する(ステップS01)。オプション基板201を検出したならば処理をステップS03に進めるが、そうでなければ処理をステップS02に進める。ステップS02においては、メインSoC11を起動し、処理を終了する。具体的には、電源回路31に、メインSoC11およびメインメモリー回路41に電力を供給させ、メインCPU13をリセットする。
ステップS03においては、オプション基板201のオプションIDを取得する。具体的には、読取バス用コネクタ55を介してオプション基板201が備えるオプションROMに記憶されたオプション基板201のオプションIDを取得する。次のステップS04においては、オプション基板201が備えるサブCPUの処理速度が、メインCPU13の処理速度より大きいか否かを判断する。ステップS03において取得されたオプションIDに含まれるサブCPUのクロック周波数とメインCPU13のクロック周波数とを比較する。オプション基板201が備えるサブCPUの処理速度がメインCPU13の処理速度がより大きいならば処理をステップS05に進めるが、そうでなければ処理をステップS16に進める。
ステップS05においては、周辺装置を使用するか否かを判断する。HDD113を使用することが予め定められているかを判断する。また、ユーザーが操作部119に入力する操作によって、HDD113を使用するか否かを決定してもよい。HDD113を使用するならば処理をステップS06に進めるが、そうでなければ処理をステップS10に進める。
ステップS07においては、メインCPU13のブートプログラムを、オプション基板201に記憶されたブートプログラムに変更する。そして、メインSoCを起動する(ステップS08)。具体的には、電源回路31にメインCPU13の電力入力ピンおよびメイン画像制御ASIC15の電力入力ピンに電力を供給させるとともに、メインCPU13をリセットする。これにより、メインCPU13は、オプション基板201に記憶されたメインCPU13のブートプログラムを実行し、エンドポイントとして起動する。
次のステップS09においては、サブSoCを起動し、処理を終了する。具体的には、電源回路31に、オプション基板201のサブSoCの電源入力ピンに電力を供給させるとともに、サブCPUをリセットする。これにより、オプション基板201が備えるサブCPUは、オプション基板201が備えるROMに記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、オプション基板201が備えるサブCPUがルートコンプレックスであり、メインCPU13およびメイン画像制御ASIC15は、エンドポイントである。このため、オプション基板201が備えるサブCPUは、メイン画像制御ASIC15を制御可能となる。また、メインCPU13は、HDD113にアクセスするプログラムを実行するので、オプション基板201が備えるサブCPUは、HDD113を制御可能となる。
ステップS10においては、メインCPUの電源をOFFに設定する。具体的には、メインCPU13の電源入力ピンに電力を供給させないように電源回路31を制御する。ステップS11においては、メインメモリー回路41の電源をOFFに設定する。具体的には、メインメモリー回路41の電源入力ピンに電力を供給させないように電源回路31を制御する。ステップS12においては、メイン画像制御ASIC15を起動する。具体的には、メイン画像制御ASIC15の電源入力ピンに電力を供給させるように電源回路31を制御する。
ステップS13においては、オプション基板201は、SoCを搭載しているか否かを判断する。ステップS03において取得されたオプションIDに含まれるGPU搭載の有無が「有」に設定されている場合、または画像制御ASIC搭載の有無が「有」に設定されている場合、オプション基板はSoCを搭載していると判断する。オプション基板201がSoCを搭載しているならば処理をステップS14に進め、そうでなければ処理をステップS15に進める。
ステップS14においては、サブSoCを起動し、処理を終了する。具体的には、オプション基板201が、サブ画像制御ASICまたはGPUを備える場合、電源回路31にサブ画像制御ASICまたはGPUそれぞれの電力入力ピンに電力を供給させる。さらに、電源回路31にサブCPUの電力入力ピンに電力を供給させるとともに、サブCPUをリセットする。これにより、オプション基板201が備えるサブCPUは、オプション基板201が備えるROMに記憶されたサブCPUのブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、オプション基板201が備えるサブCPUがルートコンプレックスであり、メイン画像制御ASIC15はエンドポイントであり、オプション基板201が備えるサブ画像制御ASICまたはGPUはエンドポイントである。このため、オプション基板201が備えるサブCPUは、メイン画像制御ASIC15、および、オプション基板201が備えるサブ画像制御ASICまたはGPUを制御可能となる。
ステップS15においては、サブCPUを起動し、処理を終了する。具体的には、電源回路31にサブCPUの電力入力ピンに電力を供給させるとともに、サブCPUをリセットする。これにより、オプション基板201が備えるサブCPUは、オプション基板201が備えるROMに記憶されたサブCPUのブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、オプション基板201が備えるサブCPUがルートコンプレックスであり、メイン画像制御ASIC15はエンドポイントである。このため、オプション基板201が備えるサブCPUは、メイン画像制御ASIC15を制御可能となる。
処理がステップS16に進む場合、メインCPU13の処理速度が、オプション基板201が備えるサブCPUの処理速度以上の場合である。ステップS16においては、オプション基板はSoCを搭載しているか否かを判断する。ステップS03において取得されたオプションIDに含まれるGPU搭載の有無が「有」に設定されている場合、または画像制御ASIC搭載の有無が「有」に設定されている場合、オプション基板はSoCを搭載していると判断する。ステップS03において取得されたオプションIDに含まれるGPU搭載の有無が「無」に設定されており、かつ、画像制御ASIC搭載の有無が「無」に設定されている場合、オプション基板はSoCを搭載していないと判断する。オプション基板はSoCを搭載しているならば処理をステップS17に進めるが、そうでなければ処理をステップS26に進める。
ステップS17においては、オプション基板201はGPUを搭載しているか否かを判断する。ステップS03において取得されたオプションIDに含まれるGPU搭載の有無が「有」に設定されているならば処理をステップS18に進めるが、「無」に設定されているならば処理をステップS23に進める。
ステップS18においては、オプション基板201はメインCPU13のブートプログラムを記憶しているか否かを判断する。ステップS03において取得されたオプションIDに含まれるブートプログラムに関する情報を参照して、メインCPU13をエンドポイントに設定して起動するブートプログラムの有無が「有」に設定されていれば処理をステップS19に進めるが、そうでなければ処理をステップS22に進める。
ステップS19においては、メインCPU13のブートプログラムを、オプション基板201に記憶されたブートプログラムに変更する。そして、メインSoCを起動する(ステップS20)。具体的には、電源回路31にメインCPU13の電力入力ピンおよびメイン画像制御ASIC15の電力入力ピンに電力を供給させるとともに、メインCPU13をリセットする。これにより、メインCPU13は、オプション基板201に記憶されたメインCPU13のブートプログラムを実行し、エンドポイントとして起動する。
次のステップS21においては、サブSoCを起動し、処理を終了する。具体的には、電源回路31に、オプション基板201のサブCPUおよびGPUそれぞれの電源入力ピンに電力を供給させるとともに、サブCPUをリセットする。これにより、オプション基板201が備えるサブCPUは、オプション基板201が備えるROMに記憶されたブートプログラムを実行し、ルートコンプレックスとして起動し、オプション基板201が備えるGPUは、エンドポイントとして起動する。この場合、オプション基板201が備えるサブCPUがルートコンプレックスであり、オプション基板201が備えるGPUはエンドポイントであり、メインCPU13およびメイン画像制御ASIC15は、エンドポイントである。このため、オプション基板201が備えるサブCPUは、オプション基板201が備えるGPU、およびメイン画像制御ASIC15を制御可能となる。また、メインCPU13はHDD113にアクセスするプログラムを実行するので、オプション基板201が備えるサブCPUは、HDD113を制御可能となる。
一方、ステップS22においては、オプション基板201が備えるサブCPUの電源をOFFに設定する。具体的には、オプション基板201のサブCPUの電源入力ピンに電力を供給させないように電源回路31を制御する。
次のステップS23においては、オプション基板201が備えるサブメモリー回路の電源をOFFに設定する。具体的には、オプション基板201が備えるサブメモリー回路の電源入力ピンに電力を供給させないように電源回路31を制御する。
次のステップS24においては、オプション基板201が備えるサブ画像制御ASICを起動する。具体的には、オプション基板201が備えるサブ画像制御ASICの電源入力ピンに電力を供給させるように電源回路31を制御する。
次のステップS25においては、メインSoCを起動し、処理を終了する。具体的には、電源回路31にメインCPU13の電力入力ピンおよびメイン画像制御ASIC15の電力入力ピンに電力を供給させるとともに、メインCPU13をリセットする。これにより、メインCPU13は、メインメモリー回路41のROM43に記憶されたメインCPU13のブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、メインCPU13がルートコンプレックスであり、メイン画像制御ASIC15はエンドポイントであり、オプション基板201が備えるサブ画像制御ASICはエンドポイントである。このため、メインCPU13は、メイン画像制御ASIC15およびオプション基板201が備えるサブ画像制御ASICを制御可能となる。
処理がステップS26に進む場合、メインCPU13の処理速度が、オプション基板201が備えるサブCPUの処理速度以上で、サブCPUが汎用的な演算装置で、オプション基板201がGPUまたはASICを搭載してない場合である。この場合には、ステップS26において、オプション基板201へ供給する電力を遮断する。具体的には、電源コネクタ53に電力を供給させないように電源回路31を制御する。
次のステップS27においては、メインSoCを起動し、処理を終了する。具体的には、電源回路31にメインCPU13の電力入力ピンおよびメイン画像制御ASIC15の電力入力ピンに電力を供給させるとともに、メインCPU13をリセットする。これにより、メインCPU13は、メインメモリー回路41のROM43に記憶されたメインCPU13のブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、メインCPU13がルートコンプレックスであり、メイン画像制御ASIC15はエンドポイントであり、オプション基板201に電力は供給されない。
次に、オプション基板201の具体例として第1〜第4のオプション基板201A〜201Dを示し、それぞれがメイン基板111に接続される場合を説明する。
<第1のオプション基板>
図7は、第1のオプション基板の詳細な構成の一例を示すブロック図である。図7においては、第1のオプション基板201Aがメイン基板111と接続された状態を示している。図7を参照して、第1のオプション基板201Aは、サブSoC211と、サブメモリー回路221と、オプションROM231と、を含む。
サブSoC211は、サブCPU213と、サブ画像制御ASIC215と、を含む。サブメモリー回路221は、サブCPU213が実行するためのプログラム等を記憶するROM223と、サブCPU213の作業領域として使用されるRAM225と、を含む。
サブCPU213の制御バスは、メイン基板111の接続コネクタ51の制御バス用コネクタ57と接続され、サブCPU213のPCI−Eバスは、メイン基板111の接続コネクタ51のPCI−Eバス用コネクタ59と接続される。
サブ画像制御ASIC215のPCI−Eバスは、メイン基板111の接続コネクタ51のPCI−Eバス用コネクタ59と接続される。サブ画像制御ASIC215は、サブCPU213とPCI−Eバスで接続され、サブCPU213により制御され、画像を処理する画像処理回路を含む。したがって、サブCPU213は、サブ画像制御ASIC215に画像処理を実行させること可能である。なお、サブ画像制御ASIC215が、HDD、通信インターフェースボード等を制御するサブ入出力制御回路を含んでもよい。この場合、サブCPU213は、サブ画像制御ASIC215を介してHDDまたは通信インターフェースボードを制御することができる。
オプションROM231は、第1のオプション基板201AのオプションIDを記憶する。オプションROM231の読取バスは、メイン基板111が備える接続コネクタ51の読取バス用コネクタ55に接続される。第1のオプション基板201AのオプションIDに含まれるGPU搭載の有無は「無」に設定され、サブ画像制御ASIC搭載の有無は「有」に設定される。ブート制御情報は、サブCPU213のGPIOに関する情報を含む。電源情報は、電源コネクタ53が有する第1の接続ピンにサブCPU213の電源入力ピンを対応させた情報、第2の接続ピンにサブ画像制御ASIC215の電源入力ピンを対応させた情報、第3の接続ピンにサブメモリー回路221の電源入力ピンを対応させた情報を含む。
次に、メイン基板111に第1のオプション基板201Aが接続される場合の、起動用CPU21の動作について説明する。
(1)メインCPU13の処理速度がサブCPU213の処理速度より遅い場合
サブCPU213をルートコンプレックスとし、メインCPU13を起動せず、メイン画像制御ASIC15、サブ画像制御ASIC215がエンドポイントとなる。この際、電源回路31からメインCPU13およびメインメモリー回路41に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してサブCPU213、サブメモリー回路221、サブ画像制御ASIC215、およびメイン画像制御ASIC15に電力を供給するとともに、メインCPU13およびメインメモリー回路41へ電力を供給しないようにする。さらに、起動用CPU21は、制御バス用コネクタ57を介してサブCPU213をリセットする。サブCPU213は、リセットされると、サブメモリー回路221が備えるROM223に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
(2)メインCPU13の処理速度がサブCPU213の処理速度以上の場合
メインCPU13をルートコンプレックスとし、サブCPU213を起動せず、メイン画像制御ASIC15、サブ画像制御ASIC215がエンドポイントとなる。この際、電源回路31からサブCPU213およびサブメモリー回路221に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してメインCPU13、メインメモリー回路41、メイン画像制御ASIC15、およびサブ画像制御ASIC215に電力を供給するとともに、サブCPU213およびサブメモリー回路221へ電力を供給しないようにする。さらに、起動用CPU21は、メインCPU13をリセットする。メインCPU13は、リセットされると、メインメモリー回路41が備えるROM43に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
<第2のオプション基板>
図8は、第2のオプション基板の詳細な構成の一例を示すブロック図である。図8においては、メイン基板111と接続された状態を示している。図8を参照して、第2のオプション基板201Bは、サブCPU311と、サブメモリー回路321と、オプションROM331、を含む。サブメモリー回路321は、サブCPU311が実行するためのプログラム等を記憶するROM323と、サブCPU311の作業領域として使用されるRAM325と、を含む。
サブCPU311の制御バスは、メイン基板111の接続コネクタ51の制御バス用コネクタ57と接続され、サブCPU311のPCI−Eバスは、メイン基板111の接続コネクタ51のPCI−Eバス用コネクタ59と接続される。
オプションROM331は、第2のオプション基板201BのオプションIDを記憶する。オプションROM331の読取バスは、メイン基板111が備える接続コネクタ51の読取バス用コネクタ55に接続される。第2のオプション基板201BのオプションIDに含まれるGPU搭載の有無は「無」に設定され、サブ画像制御ASIC搭載の有無は「無」に設定される。ブート制御情報は、サブCPU311のGPIOに関する情報を含む。電源情報は、電源コネクタ53が有する第1の接続ピンにサブCPU311の電源入力ピンを対応させた情報、第2の接続ピンにサブメモリー回路321の電源入力ピンを対応させた情報を含む。
次に、メイン基板111に第2のオプション基板201Bが接続される場合の、起動用CPU21の動作について説明する。
(1)メインCPU13の処理速度がサブCPU311の処理速度より遅い場合
サブCPU311をルートコンプレックスとし、メインCPU13を起動せず、メイン画像制御ASIC15がエンドポイントとなる。この際、電源回路31からメインCPU13およびメインメモリー回路41に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してサブCPU311およびサブメモリー回路321に電力を供給するとともに、メインCPU13およびメインメモリー回路41へ電力を供給しないようにする。さらに、起動用CPU21は、制御バス用コネクタ57を介してサブCPU311をリセットする。サブCPU311は、リセットされると、サブメモリー回路321が備えるROM323に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
(2)メインCPU13の処理速度がサブCPU311の処理速度以上の場合
メインCPU13をルートコンプレックスとし、第2のオプション基板201Bに供給する電力を遮断する。メイン画像制御ASIC15がエンドポイントとなる。
具体的には、起動用CPU21は、電源回路31を制御してメインCPU13、メインメモリー回路41、およびメイン画像制御ASIC15に電力を供給するとともに、電源コネクタ53に電力を供給しないようにする。さらに、起動用CPU21は、メインCPU13をリセットする。メインCPU13は、リセットされると、メインメモリー回路41が備えるROM43に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
<第3のオプション基板>
図9は、第3のオプション基板の詳細な構成の一例を示すブロック図である。図9においては、メイン基板111と接続された状態を示している。図9を参照して、第3のオプション基板201Cは、サブCPU411と、サブメモリー回路421と、オプションROM431と、ブートROM441と、を含む。サブメモリー回路421は、サブCPU411が実行するためのプログラム等を記憶するROM423と、サブCPU411の作業領域として使用されるRAM425と、を含む。
サブCPU411の制御バスは、メイン基板111の接続コネクタ51の制御バス用コネクタ57と接続され、サブCPU411のPCI−Eバスは、メイン基板111の接続コネクタ51のPCI−Eバス用コネクタ59と接続される。
ブートROM441は、メインCPU13が実行するためのブートプログラムであって、メインCPU13をエンドポイントに設定して起動するブートプログラムを記憶する。このブートプログラムは、メインCPU13がHDD113にデータを入出力する処理を定義するプログラムを含む。ブートROM441の読取バスは、メイン基板111が備える接続コネクタ51の読取バス用コネクタ55に接続される。
オプションROM431は、第3のオプション基板201CのオプションIDを記憶する。オプションROM431の読取バスは、メイン基板111が備える接続コネクタ51の読取バス用コネクタ55に接続される。第3のオプション基板201CのオプションIDに含まれるGPU搭載の有無は「無」に設定され、サブ画像制御ASIC搭載の有無は「無」に設定される。ブート制御情報は、サブCPU411のGPIOに関する情報を含む。電源情報は、電源コネクタ53が有する第1の接続ピンにサブCPU411の電源入力ピンを対応させた情報、第2の接続ピンにサブメモリー回路421の電源入力ピンを対応させた情報を含む。また、第3のオプション基板201CのオプションIDは、メインCPU13をエンドポイントに設定して起動するブートプログラムの有無が「有」に設定され、ブートROM441に記憶されたブートプログラムのメモリーアドレスを含む。
次に、メイン基板111に第3のオプション基板201Cが接続される場合の、起動用CPU21の動作について説明する。
(1)メインCPU13の処理速度がサブCPU411の処理速度より遅い場合
(i)周辺装置としてのHDD113を使用する設定の場合
サブCPU411をルートコンプレックスとし、メインCPU13およびメイン画像制御ASIC15がエンドポイントとなる。
具体的には、起動用CPU21は、電源回路31を制御して、メインCPU13、メイン画像制御ASIC15、メインメモリー回路41、サブCPU411、サブメモリー回路421に電力を供給する。さらに、起動用CPU21は、メインCPU13のブートプログラムをブートROM441に記憶されたブートプログラムに変更し、メインCPU13をリセットした後、制御バス用コネクタ57を介してサブCPU411をリセットする。メインCPU13は、リセットされると、ブートROM441に記憶されたブートプログラムを実行し、エンドポイントとして起動する。この際、メインCPU13は、ブートプログラムに含まれるHDD113にデータを入出力する処理を定義するプログラムを実行するので、HDD113にデータを入出力する処理を実行する。一方、サブCPU411は、リセットされると、サブメモリー回路421が備えるROM423に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。このため、サブCPU411は、メインCPU13を介してHDD113を制御可能となる。
(ii)周辺装置としてのHDD113を使用しない設定の場合
サブCPU411をルートコンプレックスとし、メインCPU13を起動せず、メイン画像制御ASIC15がエンドポイントとなる。この際、電源回路31からメインCPU13およびメインメモリー回路41に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してサブCPU411、サブメモリー回路421およびメイン画像制御ASIC15に電力を供給するとともに、メインCPU13およびメインメモリー回路41へ電力を供給しないようにする。さらに、起動用CPU21は、制御バス用コネクタ57を介してサブCPU411をリセットする。サブCPU411は、リセットされると、サブメモリー回路421が備えるROM423に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。この場合、サブCPU411がルートコンプレックスとなり、メイン画像制御ASIC15がエンドポイントとなる。
(2)メインCPU13の処理速度がサブCPU411の処理速度以上の場合
メインCPU13をルートコンプレックスとし、第3のオプション基板201Cに供給する電力を遮断する。メイン画像制御ASIC15がエンドポイントとなる。
具体的には、起動用CPU21は、電源回路31を制御してメインCPU13、メインメモリー回路41、およびメイン画像制御ASIC15に電力を供給するとともに、電源コネクタ53に電力を供給しないようにする。さらに、起動用CPU21は、メインCPU13をリセットする。メインCPU13は、リセットされると、メインメモリー回路41が備えるROM43に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
<第4のオプション基板>
図10は、第4のオプション基板の詳細な構成の一例を示すブロック図である。図10においては、メイン基板111と接続された状態を示している。図10を参照して、第4のオプション基板201Dは、サブSoC511と、サブメモリー回路521と、オプションROM531と、ブートROM541と、を含む。サブSoC511は、サブCPU513と、GPU515と、を含む。サブメモリー回路521は、サブCPU513およびGPU515が実行するためのプログラム等を記憶するROM423と、サブCPU513およびGPU515の作業領域として使用されるRAM525と、を含む。
サブCPU513の制御バスは、メイン基板111の接続コネクタ51の制御バス用コネクタ57と接続され、サブCPU513のPCI−Eバスは、メイン基板111の接続コネクタ51のPCI−Eバス用コネクタ59と接続される。GPU515は、サブCPU513と接続され、サブCPU513によって制御される。GPU515は、サブメモリー回路521のROM423に記憶されたプログラムを実行することによって、画像処理を実行する。このため、サブCPU513は、画像処理をGPU515に実行させている間、別の処理を実行することが可能である。
ブートROM541は、メインCPU13が実行するためのブートプログラムであって、エンドポイントに設定して起動するブートプログラムを記憶する。このブートプログラムは、メインCPU13がHDD113にデータを入出力する処理を定義するプログラムを含む。
オプションROM531は、第4のオプション基板201DのオプションIDを記憶する。オプションROM531の読取バスは、メイン基板111が備える接続コネクタ51の読取バス用コネクタ55に接続される。第4のオプション基板201DのオプションIDに含まれるGPU搭載の有無は「有」に設定され、サブ画像制御ASIC搭載の有無は「無」に設定される。ブート制御情報は、サブCPU513のGPIOに関する情報を含む。電源情報は、電源コネクタ53が有する第1の接続ピンにサブCPU513およびGPU515の電源入力ピンを対応させた情報、第2の接続ピンにサブメモリー回路521の電源入力ピンを対応させた情報を含む。また、第4のオプション基板201DのオプションIDは、メインCPU13をエンドポイントに設定して起動するブートプログラムの有無が「有」に設定され、ブートROM541に記憶されたブートプログラムのメモリーアドレスを含む。
次に、メイン基板111に第4のオプション基板201Dが接続される場合の、起動用CPU21の動作について説明する。
(1)メインCPU13の処理速度がサブCPU513の処理速度より遅い場合
(i)周辺装置としてのHDD113を使用する設定の場合
サブCPU513をルートコンプレックスとし、メインCPU13およびメイン画像制御ASIC15がエンドポイントとなる。
具体的には、起動用CPU21は、電源回路31を制御して、メインCPU13、メイン画像制御ASIC15、メインメモリー回路41、サブCPU513、GPU515、サブメモリー回路421に電力を供給する。さらに、起動用CPU21は、メインCPU13のブートプログラムをブートROM541に記憶されたブートプログラムに変更してメインCPU13をリセットした後、制御バス用コネクタ57を介してサブCPU513をリセットする。メインCPU13は、リセットされると、ブートROM541に記憶されたブートプログラムを実行し、エンドポイントとして起動する。この際、メインCPU13は、ブートプログラムに含まれるHDD113にデータを入出力する処理を定義したプログラムを実行するので、HDD113にデータを入出力する処理を実行する。一方、サブCPU513は、リセットされると、サブメモリー回路521が備えるROM523に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。
(ii)周辺装置としてのHDD113を使用しない設定の場合
サブCPU513をルートコンプレックスとし、メインCPU13を起動せず、メイン画像制御ASIC15がエンドポイントとなる。この際、電源回路31からメインCPU13およびメインメモリー回路41に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してサブCPU513、GPU515、サブメモリー回路521、メイン画像制御ASIC15に電力を供給するとともに、メインCPU13およびメインメモリー回路41へ電力を供給しないようにする。さらに、起動用CPU21は、制御バス用コネクタ57を介してサブCPU513をリセットする。サブCPU513は、リセットされると、サブメモリー回路521が備えるROM523に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。なお、GPU515は、サブCPU513によってリセットされる。
(2)メインCPU13の処理速度がサブCPU513の処理速度以上の場合
メインCPU13の処理速度がサブCPU513の処理速度以上であっても、サブSoC511は、GPU515を含むので、サブSoC511全体での処理速度は、メインCPU13より速くなる場合が多い。このため、サブCPU513をルートコンプレックスにするのが好ましい。
(i)周辺装置としてのHDD113を使用する設定の場合
サブCPU513をルートコンプレックスとし、メインCPU13およびメイン画像制御ASIC15がエンドポイントとなる。
具体的には、起動用CPU21は、電源回路31を制御して、メインCPU13、メイン画像制御ASIC15、メインメモリー回路41、サブCPU513、GPU515、サブメモリー回路421に電力を供給する。さらに、起動用CPU21は、メインCPU13のブートプログラムをブートROM541に記憶されたブートプログラムに変更してメインCPU13をリセットした後、制御バス用コネクタ57を介してサブCPU513をリセットする。メインCPU13は、リセットされると、ブートROM541に記憶されたブートプログラムを実行し、エンドポイントとして起動する。この際、メインCPU13は、ブートプログラムに含まれるHDD113にデータを入出力する処理を定義したプログラムを実行するので、HDD113にデータを入出力する処理を実行する。一方、サブCPU513は、リセットされると、サブメモリー回路521が備えるROM523に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。なお、GPU515は、サブCPU513によってリセットされる。
(ii)周辺装置としてのHDD113を使用しない設定の場合
サブCPU513をルートコンプレックスとし、メインCPU13を起動せず、メイン画像制御ASIC15がエンドポイントとなる。この際、電源回路31からメインCPU13およびメインメモリー回路41に電力は供給されない。
具体的には、起動用CPU21は、電源回路31を制御してサブCPU513、GPU515およびサブメモリー回路521、メイン画像制御ASIC15に電力を供給するとともに、メインCPU13およびメインメモリー回路41へ電力を供給しないようにする。さらに、起動用CPU21は、制御バス用コネクタ57を介してサブCPU513をリセットする。サブCPU513は、リセットされると、サブメモリー回路521が備えるROM523に記憶されたブートプログラムを実行し、ルートコンプレックスとして起動する。なお、GPU515は、サブCPU513によってリセットされる。
以上説明したように、本実施の形態におけるMFP100は、オプション基板201を増設可能な画像形成装置である。また、MFP100は、PCIExpress(登録商標)の1以上のエンドポイントのルートコンプレックスに設定されたメインCPU13と、メインCPU13の起動を制御する起動用CPU21と、PCIExpress(登録商標)の1以上のエンドポイントのルートコンプレックスに設定されたサブCPUを搭載するオプション基板201を接続可能な接続コネクタ51と、を備え、起動用CPU21は、接続コネクタ51に接続されたオプション基板201を検出する検出部61と、オプション基板201が検出される場合、メインCPU13が起動する前の段階で、オプション基板201に関する能力情報を取得する取得部63と、能力情報に基づいて、メインCPU13とサブCPUのいずれか一方を選択する選択部65と、メインCPU13およびサブCPUのうちから選択された一方をルートコンプレックスとして起動する切換部73と、を含む。このため、ルートコンプレックスを1つにして起動するので、サブCPUを搭載したオプション基板201が接続される場合に確実に起動することができる。また、オプション基板201に関する能力情報に基づいて、メインCPU13とサブCPUのいずれか一方を選択するので、サブCPUを搭載したオプション基板201はMFP100に専用である必要はない。このため、接続可能なオプション基板201を別のMFPと共有することができる。
また、切換部73は、メインCPU13が選択される場合は、サブCPUを起動することなくメインCPU13を起動し、サブCPUが選択される場合は、メインCPU13を起動することなくサブCPUをルートコンプレックスに設定した後に起動する選択起動部89を含む。このため、メインCPU13とサブCPUとのいずれか一方を起動しないので、ルートコンプレックスを確実に1つにすることができる。
また、起動用CPU21は、オプション基板201が画像を処理する回路を有するサブ画像制御ASICを含む場合、メインCPU13およびサブCPUのいずれが選択される場合であっても、サブ画像制御ASICをエンドポイントに設定して起動するサブ画像処理起動部69を含む。このため、オプション基板201がサブ画像制御ASICを含む場合、サブ画像制御ASICはエンドポイントに設定されて起動するので、オプション基板201が有する機能を利用することができる。
さらに、オプション基板201が画像を処理する回路を有するサブ画像制御ASICを含まない場合、メインCPU13が選択される場合は、オプション基板201に供給する電力を遮断する遮断部71を含む。このため、オプション基板201が接続される場合において、MFP100の能力を最適にしつつ消費電力を低減することができる。
さらに、選択部65は、能力情報により定められるサブCPUの処理速度とメインCPU13の処理速度とを比較する速度比較部81と、サブCPUおよびメインCPU13のうち処理速度の速い一方を選択する速度基準選択部83と、を含む。このため、オプション基板201が接続された場合の処理速度を速くすることができる。
また、選択部65は、速度基準選択部83によりメインCPU13が選択される場合、能力情報によってオプション基板201が予め定められたプログラムを実行することによって画像を処理するGPUを搭載することが示される場合、サブCPUを選択する特定状況選択部85を含む。このため、オプション基板201がGPUを搭載する場合は、同じ処理をメインCPU13が実行する場合よりもサブCPUとGPUとが実行する場合の方が処理速度が速い場合がある。このため、オプション基板201が接続された場合の処理速度を速くすることができる。
さらに、切換部73は、特定状況選択部85によりサブCPUが選択される場合、メインCPU13をエンドポイントに設定した後に起動するとともに、サブCPUをルートコンプレックスに設定した後に起動する重複起動部91を、含む。このため、サブCPUでメインCPU13を制御することができる。
さらに、オプション基板201は、予め定められた処理をメインCPU13に実行させるためのブートプログラムを記憶するブートROMを搭載している場合、重複起動部91は、メインCPU13にブートROMに記憶されたブートプログラムを実行させることによって起動する特定状況起動部93を含む。このため、MFP100にオプション基板201が接続さる場合に、メインCPU13をエンドポイントに設定して起動することができる。
さらに、メインCPUと同一基板に搭載されるメイン画像制御ASIC15を、さらに備え、起動用CPU21は、メインCPU13およびサブCPUのいずれが選択される場合であっても、メイン画像制御ASIC15を起動するメイン画像処理起動部67を含む。このため、MFP100がオプション基板201が接続される以前から有する機能を有効に利用することができる。
なお、上述した実施の形態においては、画像形成装置の一例としてMFP100について説明したが、画像を形成する機能を有すれば、プリンター、ファクシミリ等であってもよい。また、図5および図6に示した起動処理を、MFP100の起動を制御する起動用CPU21に実行させる起動制御方法、また、その起動制御方法を起動用CPU21に実行させるための起動制御プログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。