(57)【要約】【課題】演算及び制御を行う演算制御装置を複数備える情報処理装置の起動に際してデバイスの自己検査が行われることによる起動遅延を低減すること。【解決手段】演算及び制御を行う演算制御装置を複数備える情報処理装置であって、情報処理装置を構成する複数のデバイスであって情報処理装置の起動に際して動作状態が検査される複数の検査対象デバイスが複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報を取得する分割情報取得部と、情報処理装置の起動に際して、複数の演算制御装置それぞれの制御に従って、取得した分割情報の設定に従って分割された複数のグループそれぞれに含まれる検査対象のデバイスの動作状態を並列して検査する状態検査部とを含むことを特徴とする。【選択図】図５
2016031656.tif 000002
【特許請求の範囲】
【請求項１】
演算及び制御を行う演算制御装置を複数備える情報処理装置であって、
前記情報処理装置を構成する複数のデバイスであって前記情報処理装置の起動に際して動作状態が検査される複数の検査対象デバイスが前記複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報を取得する分割情報取得部と、
前記情報処理装置の起動に際して、前記複数の演算制御装置それぞれの制御に従って、取得した前記分割情報の設定に従って分割された前記複数のグループそれぞれに含まれる前記検査対象のデバイスの動作状態を並列して検査する状態検査部と
を含むことを特徴とする情報処理装置。
【請求項２】
前記複数の演算制御装置のうちの１つの演算制御装置の制御に従って、前記情報処理装置全体を制御するための全体制御プログラムを起動する起動部
を含み、
前記起動部は、前記全体制御プログラムの起動を制御する前記演算制御装置以外の前記複数の演算制御装置それぞれの制御による前記検査と並列して前記全体制御プログラムを起動する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検査結果に応じて、起動した前記全体制御プログラムの制御による前記情報処理装置の動作を停止させる動作停止部
を含むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記分割情報取得部は、前記複数の検査対象デバイスそれぞれの検査時間に基づいて前記複数の検査対象デバイスが前記複数のグループに分割されて設定された前記分割情報を取得する
ことを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記分割情報取得部は、前記複数の検査対象デバイスそれぞれの過去の検査に関する情報を示す検査履歴情報に基づいて算出された前記複数の検査対象デバイスそれぞれの検査時間に基づいて前記複数の検査対象デバイスが前記複数のグループに分割されて設定された前記分割情報を取得する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記分割情報取得部は、複数の検査範囲に分割された１つの前記検査対象デバイスが前記複数のグループに分割されて設定された前記分割情報を取得する
ことを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
演算及び制御を行う演算制御装置を複数備える情報処理装置の起動に際して前記情報処理装置を構成する複数のデバイスの動作状態を検査する自己検査方法であって、
前記情報処理装置の起動に際して動作状態が検査される複数の検査対象デバイスが前記複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報を取得し、
前記情報処理装置の起動に際して、前記複数の演算制御装置それぞれの制御に従って、取得した前記分割情報の設定に従って分割された前記複数のグループそれぞれに含まれる前記検査対象のデバイスの動作状態を並列して検査する
ことを特徴とする自己検査方法。
【請求項８】
演算及び制御を行う演算制御装置を複数備える情報処理装置の起動に際して前記情報処理装置を構成する複数のデバイスの動作状態を検査するための自己検査プログラムであって、
前記情報処理装置の起動に際して動作状態が検査される複数の検査対象デバイスが前記複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報を取得するステップと、
前記情報処理装置の起動に際して、前記複数の演算制御装置それぞれの制御に従って、取得した前記分割情報の設定に従って分割された前記複数のグループそれぞれに含まれる前記検査対象のデバイスの動作状態を並列して検査するステップと
を前記情報処理装置に実行させることを特徴とする自己検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、自己検査方法及び自己検査プログラムに関し、特に、情報処理装置の起動に際して、情報処理装置を構成する複数のデバイスの動作状態を検査する処理に関する。
【背景技術】
【０００２】
近年、情報の電子化が推進される傾向にあり、電子化された情報の出力に用いられるプリンタやファクシミリ及び書類の電子化に用いるスキャナ等の画像処理装置は欠かせない機器となっている。このような画像処理装置は、撮像機能、画像形成機能及び通信機能等を備えることにより、プリンタ、ファクシミリ、スキャナ、複写機として利用可能なＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：複合機）として構成されることが多い。
【０００３】
このような画像処理装置は、主電源がオンにされると、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｍｔｅｍ）の起動前に画像処理装置を構成する各種のハードウェア等のデバイスに故障が生じていないかを自己検査することが多い。このような自己検査により、画像処理装置の移送や経年劣化等によるデバイスの故障にユーザが気づくことなく使用して所望する画像処理結果を得られないことを防止できる。
【０００４】
また、このような画像処理装置において、システム起動時のメモリチェックを省略することなく、システム起動時間をより短縮し、より早期にメモリの故障を検出することを目的として、電源投入後、メモリチェックプログラムを起動させてＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の全記憶領域のうち、システムプログラムを起動するのに必要な領域のみに対しメモリチェックをし、マルチタスクオペレーティングシステムを起動させた後に、メインプログラムとメモリチェックプログラムとを起動させて両者を並列処理させることが提案されている（例えば、特許文献１を参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような画像処理装置の自己検査はＯＳの起動前に行われるが、検査対象のデバイスが多いほど、すべてのデバイスの検査が完了するまでに時間がかかるので、ＯＳの起動完了まで時間がかかる。また、自己検査のためのプログラムは主電源の投入からＯＳ起動前までの短い時間で実行されると位置づけられている。そのため、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がマルチコアやマルチプロセッサであり並列処理可能な画像処理装置であっても、１つのコアやプロセッサで自己検査プログラムが実行されるので、検査対象のデバイスが多いと、ＯＳの起動完了まで時間がかかる。
【０００６】
特許文献１に開示された技術では、メモリ以外の検査対象のデバイスについて考慮されていないので、検査対象のデバイスが多い場合にＯＳの起動完了まで時間がかかる問題については解決することができない。
【０００７】
また、このような問題は、画像処理装置だけでなく、起動に際してデバイスの自己検査を行うＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置においても同様に生じ得る。
【０００８】
本発明は、このような課題を解決するためになされたものであり、演算及び制御を行う演算制御装置を複数備える情報処理装置の起動に際してデバイスの自己検査が行われることによる起動遅延を低減することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の一態様は、演算及び制御を行う演算制御装置を複数備える情報処理装置であって、前記情報処理装置を構成する複数のデバイスであって前記情報処理装置の起動に際して動作状態が検査される複数の検査対象デバイスが前記複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報を取得する分割情報取得部と、前記情報処理装置の起動に際して、前記複数の演算制御装置それぞれの制御に従って、取得した前記分割情報の設定に従って分割された前記複数のグループそれぞれに含まれる前記検査対象のデバイスの動作状態を並列して検査する状態検査部とを含むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、演算及び制御を行う演算制御装置を複数備える情報処理装置の起動に際してデバイスの自己検査が行われることによる起動遅延を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る画像処理装置のハードウェア構成を例示するブロック図である。
【図２】本発明の実施形態に係る画像処理装置の機能構成を例示するブロック図である。
【図３】本発明の実施形態に係る検査リスト生成部により生成された検査リストを例示する図である。
【図４】本発明の実施形態に係る検査結果情報を例示する図である。
【図５】本発明の実施形態に係るブートローダの各部による検査対象デバイスの検査処理の動作を例示するフローチャートである。
【図６】本発明の実施形態に係る検査実行制御部による検査モジュールを用いた検査対象デバイスの検査処理の動作を例示するフローチャートである。
【図７】本発明の実施形態に係るＮＡＮＤフラッシュに格納されている検査モジュールを例示する図である。
【図８】本発明の実施形態に係るデバイス検査の具体的な並列処理シーケンスを例示する図である。
【図９】本発明の実施形態に係るデバイス検査の具体的な並列処理シーケンスを例示する図である。
【図１０】本発明の実施形態に係る検査リスト生成部により生成された複数の検査範囲に分割されたデバイスを含む検査リストを例示する図である。
【図１１】本発明の実施形態に係るデバイス検査の具体的な並列処理シーケンスを例示する図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：複合機）として構成される画像処理装置を情報処理装置の例として説明する。また、本実施形態に係る画像処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がマルチコアやマルチプロセッサ、すなわち演算及び制御を行う演算制御装置を複数備えるものとする。
【００１３】
図１は、本実施形態に係る画像処理装置１のハードウェア構成を例示するブロック図である。図１に示すように、本実施形態に係る画像処理装置１は、コントローラ部１０及びオペレーションパネル２０、ＦＣＵ（Ｆａｃｓｉｍｉｌｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３０及び専用エンジン４０を含む。
【００１４】
また、コントローラ部１０は、ＣＰＵ１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１４、ＮＡＮＤフラッシュ１５、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１６及びＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コントローラ１７を含む。また、ＡＳＩＣ１３には、ＣＰＵ１１、ＲＡＭ１２、ＨＤＤ１４、ＮＡＮＤフラッシュ１５、ＮＩＣ１６及びＵＳＢコントローラ１７がバスを介して接続されている。
【００１５】
また、オペレーションパネル２０は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）２１及び操作部２２を含む。また、ＬＣＤ２１、操作部２２、ＦＣＵ３０及び専用エンジン４０は、バスを介してＡＳＩＣ１３に接続されている。
【００１６】
ＣＰＵ１１は、画像処理装置１における各種の演算及び制御を行う演算制御装置であるコア１１ａ、１１ｂ、１１ｃ、１１ｄを備える。コア１１ａ、１１ｂ、１１ｃ、１１ｄは、独立して並列に処理を行うことができる。なお、以降、コア１１ａ、１１ｂ、１１ｃ、１１ｄをそれぞれコアＡ、コアＢ、コアＣ、コアＤとする。また、本実施形態においては、ＣＰＵ１１がマルチコアである場合を例として説明するが、ＣＰＵ１１がマルチプロセッサであってもよい。また、本実施形態においては、ＣＰＵ１１が４つのコアを備える場合を例として説明するが、コアの数は４つとは限らない。
【００１７】
ＲＡＭ１２は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１１が情報を処理する際の作業領域として用いられる。ＡＳＩＣ１３は、画像処理に必要な機能を実現する画像処理用途向けの集積回路である。ＨＤＤ１４は、情報の読み書きが可能な不揮発性の記憶媒体であり、画像データや文書データ等の各種のデータ及びプログラム等が格納される。
【００１８】
ＮＡＮＤフラッシュ１５は、ＨＤＤ１４よりも情報の高速な読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ファームウェア等のプログラム、各種の制御プログラム、アプリケーション・プログラム等が格納される。
【００１９】
ＮＩＣ１６は、Ｅｔｈｅｒｎｅｔ（登録商標）やＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して接続されているクライアント端末等の他の装置との通信制御を行うコントローラである。ＵＳＢコントローラ１７は、ＵＳＢにより接続されているクライアント端末等の他の装置とのデータ送受信の制御を行うコントローラである。
【００２０】
ＬＣＤ２１は、ユーザが画像処理装置１の状態を確認するための視覚的ユーザインタフェースである。操作部２２は、キーボードやマウス、タッチパネル等、ユーザが画像処理装置１に情報を入力するためのユーザインタフェースである。
【００２１】
ＦＣＵ３０は、メモリを有し、例えば画像処理装置１の電源がオフのときに受信したファクシミリデータが一時的に格納される。専用エンジン４０は、スキャナ、プリンタ等の画像処理装置１に搭載される機能を実現するための構成である。
【００２２】
このようなハードウェア構成において、ＨＤＤ１４、ＮＡＮＤフラッシュ１５若しくは図示しない光学ディスク等の記録媒体に格納されたプログラムがＲＡＭ１２に読み出され、ＣＰＵ１１が備える複数のコアＡ〜コアＤそれぞれがＲＡＭ１２にロードされたプログラムに従って演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る画像処理装置１の機能を実現する機能ブロックが構成される。
【００２３】
次に、本実施形態に係る画像処理装置１の機能のうち、画像処理装置１の起動に際して画像処理装置１を構成する複数のデバイスうち検査対象となるデバイスの動作状態を検査する処理に関する機能を説明する。このようなデバイスの動作状態を検査する処理が本実施形態の要旨の１つである。図２は、本実施形態に係る画像処理装置１の機能のうち、上述したデバイスの動作状態の検査に関する機能構成を例示するブロック図である。図２に示すように、本実施形態に係る画像処理装置１は、ブートローダ１００、検査モジュール１１０、ＯＳ１２０及びアプリケーション１３０を含む。
【００２４】
ブートローダ１００は、画像処理装置１の電源が投入された際に動作するプログラムであり、ハードウェア初期化部１０１、検査リスト生成部１０２、プログラムカウンタ制御部１０３、検査実行制御部１０４及びＯＳ起動部１０５を含む。
【００２５】
ハードウェア初期化部１０１は、コアＡ〜コアＤを含む各種デバイスを初期化する。検査リスト生成部１０２は、複数のデバイスそれぞれが正常に動作しているか否か等の動作状態を並列して検査するために、検査対象である複数のデバイスをコアの数に応じた複数のグループに分割した検査リストを生成する。具体的には、例えば、検査リスト生成部１０２は、各グループに含まれるデバイスの数ができる限り均等になるように分割した検査リストを生成する。すなわち、検査リスト生成部１０２は、複数の検査対象デバイスが複数の演算制御装置の数に応じた複数のグループに分割されて設定された分割情報（検査リスト）を取得する分割情報取得部として機能する。
【００２６】
なお、本実施形態においては、コアＡはＯＳ１２０の起動制御等に用いられ、３つのコアＢ〜コアＤがデバイスの検査制御に用いられるものとする。また、本実施形態における検査対象デバイスは、例えば図１に示したＲＡＭ１２、ＡＳＩＣ１３、ＨＤＤ１４、ＮＡＮＤフラッシュ１５、ＮＩＣ１６、ＬＣＤ２１、専用エンジン４０のハードウェアである。なお、ＵＳＢコントローラ１７、操作部２２及びＦＣＵ３０は、本実施形態においては検査対象とはしていない。
【００２７】
ＵＳＢコントローラ１７が正常に動作しているか否かを検査するためには画像処理装置１とは異なる他の装置が常時接続されている必要があり、操作部２２が正常に動作しているか否かを検査するためにはユーザによる操作が必要だからである。また、ＦＣＵ３０が正常に動作しているか否かを検査するためには常時バスに接続されている必要があるがＦＣＵ３０はオプションだからである。しかしながら、ＵＳＢコントローラ１７、操作部２２及びＦＣＵ３０を検査対象デバイスとしてもよい。
【００２８】
図３は、検査リスト生成部１０２により生成された検査リストを例示する図である。図３（ａ）は、コアＢの制御に従って検査されるデバイスの検査リストを示し、図３（ｂ）は、コアＣの制御に従って検査されるデバイスの検査リストを示し、図３（ｃ）は、コアＤの制御に従って検査されるデバイスの検査リストを示す。
【００２９】
図３に示すように、検査リストは、例えば、各コアに従って検査される検査対象デバイスと検査状態とが関連付けられたリストである。例えば、図３（ａ）に示すように、コアＢの制御に従って、ＮＡＮＤフラッシュ１５、ＬＣＤ２１、ＮＩＣ１６が検査される。検査状態は、検査がまだ行われていないことを示す「未検査」又は検査がすでに行われたことを示す「検査済」を示し、初期状態は「未検査」である。
【００３０】
プログラムカウンタ制御部１０３は、次に実行すべき命令が格納されているメモリ上のアドレスを保持するプログラムカウンタを制御して、コアＢ〜コアＤのうちのいずれかのコアに制御を移す。
【００３１】
検査実行制御部１０４は、コアＢ〜コアＤそれぞれの制御に従って、検査リスト生成部１０２により生成された検査リスト及び後述する検査モジュール１１０を用いて検査対象デバイスの検査を実行する状態検査部として機能する。検査対象デバイスの検査処理の詳細は後述する。また、検査実行制御部１０４は、実行された検査の結果を示す検査結果情報を、例えばＲＡＭ１２に記憶させる。
【００３２】
図４は、検査結果情報を例示する図である。図４（ａ）は、コアＢの制御に従って検査されたデバイスの検査結果情報を示し、図４（ｂ）は、コアＣの制御に従って検査されたデバイスの検査結果情報を示し、図４（ｃ）は、コアＤの制御に従って検査されたデバイスの検査結果情報を示す。
【００３３】
図４に示すように、検査結果情報は、例えば、各コアに従って検査された検査対象デバイスと検査結果とが関連付けられたテーブルである。例えば、図４（ａ）に示すように、コアＢの制御に従って検査されたＮＡＮＤフラッシュ１５、ＬＣＤ２１、ＮＩＣ１６の検査結果は、正常に動作していることを示す「正常」である。一方、図４（ｂ）に示すように、コアＣの制御に従って検査された専用エンジン４０の検査結果は、物理的な故障等何らかの原因により正常に動作していないことを示す「異常」である。
【００３４】
ＯＳ起動部１０５は、コアＡの制御に従って、例えばＮＡＮＤフラッシュ１５に格納されているＯＳ１２０をロードして起動する起動部として機能する。
【００３５】
検査モジュール１１０は、検査対象デバイスごとに構成されるデバイス検査用のプログラムであり、例えばＮＡＮＤフラッシュ１５に格納されている。例えば、ＲＡＭ１２を検査する検査モジュール１１０であるＲＡＭ検査モジュールは、ＲＡＭ１２に対して“０１０１０１０１”、“１０１０１０１０”等を書き込み、正しく読み出すことができるか等のビット化けをチェックする。例えば、正しく読み出すことができないデータがあった場合、ＲＡＭ１２の検査結果は「異常」となる。
【００３６】
また、例えば、ＨＤＤ１４及びＮＡＮＤフラッシュ１５をそれぞれ検査する検査モジュール１１０であるＨＤＤ検査モジュール及びＮＡＮＤフラッシュ検査モジュールは、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）規格のＳＭＡＲＴコマンドを用いてＨＤＤ１４やＮＡＮＤフラッシュ１５の不良ブロック数等をチェックする。例えば、不良ブロック数が予め定められた数以上である場合、ＨＤＤ１４（若しくはＮＡＮＤフラッシュ１５）の検査結果は「異常」となる。
【００３７】
また、例えば、ＮＩＣ１６を検査する検査モジュール１１０であるＮＩＣ検査モジュールは、ネットワークパケットのループバックテストを行い、送信したパケットを自ら受信できるかをチェックする。例えば、送信したパケットを受信できない場合、ＮＩＣ１６の検査結果は「異常」となる。
【００３８】
また、例えば、ＬＣＤ２１を検査する検査モジュール１１０であるＬＣＤ検査モジュールは、ＬＣＤ２１の接続確認を行うために、ＬＣＤ２１を暗転した状態で表示要求を行い、所定時間内に表示応答が返ってくるかをチェックする。例えば、表示応答が所定時間内に返ってこなかった場合、ＬＣＤ２１の検査結果は「異常」となる。
【００３９】
また、例えば、専用エンジン４０を検査する検査モジュール１１０であるエンジン検査モジュールは、専用エンジン４０の接続確認を行うために、専用エンジン４０に対してテストコマンドを送信して応答が返ってくるかをチェックする。例えば、応答が返ってこなかった場合、専用エンジン４０の検査結果は「異常」となる。
【００４０】
また、例えば、ＡＳＩＣ１３を検査する検査モジュール１１０であるＡＳＩＣ検査モジュールは、レジスタの初期値が仕様通りに設定されているかをチェックする。例えば、レジスタの初期値が仕様通りに設定されていない場合、ＡＳＩＣ１３の検査結果は「異常」となる。
【００４１】
ＯＳ１２０は、例えばＵＮＩＸ（登録商標）等の画像処理装置１全体（情報処理装置全体）を制御するための全体制御プログラムであり、検査結果判定部１２１、動作停止部１２２、ＣＰＵ初期化部１２３、メモリ管理部１２４、プロセス／スレッド管理部１２５、ファイルシステム１２６及びデバイスドライバ１２７を含む。
【００４２】
検査結果判定部１２１は、検査実行制御部１０４によりＲＡＭ１２に記憶された検査結果情報に基づいて、ＯＳ起動部１０５により起動したＯＳ１２０上での動作制御を継続するかを判定する。具体的には、例えば、検査結果判定部１２１は、検査結果情報に「異常」を示す検査結果が含まれている場合、ＯＳ１２０上での動作制御を停止すると判定する。このままＯＳ１２０上での動作制御を継続していると、正常に動作していないデバイスの影響によりユーザが所望の画像処理結果を得られない可能性が高いためである。
【００４３】
動作停止部１２２は、検査結果判定部１２１がＯＳ１２０上での動作制御を停止すると判定した場合に、ＯＳ１２０の起動を停止する。これにより、画像処理装置１をシャットダウンすることになる。また、動作停止部１２２は、ＯＳ１２０の起動を停止する前に、デバイスに異常が発生している旨を通知する画面をＬＣＤ２１上に表示させるようにしてもよい。
【００４４】
ＣＰＵ初期化部１２３は、ＯＳ１２０上での動作制御が継続し、ＯＳ１２０上で後述するアプリケーション１３０等をプロセスとして並列実行する際に、ＣＰＵ１１を初期化する。メモリ管理部１２４は、ＲＡＭ１２の使用領域を管理する。プロセス／スレッド管理部１２５は、ＯＳ１２０上でアプリケーション１３０をプロセスとして並列実行する際に、プロセスを並列実行するスレッドをいずれのコアでどのようなタイミングで実行するか、どのスレッドを優先して実行するか等のスケジュールを管理する。ファイルシステム１２６は、ＨＤＤ１４及びＮＡＮＤフラッシュ等の記憶媒体に格納されているデータの管理方式やデータ（ファイル）の入出力方式を提供する。
【００４５】
デバイスドライバ１２７は、各種のデバイスを制御するためのソフトウェアモジュールであり、それぞれのデバイスごとに構成される。本実施形態における各種デバイスは、図１に示した各種ハードウェアであり、例えば、ＡＳＩＣ１３用のＡＳＩＣドライバ、ＨＤＤ１４用のＨＤＤドライバ、ＮＡＮＤフラッシュ１５用のＮＡＮＤフラッシュドライバ、ＮＩＣ１６用のＮＩＣドライバ、ＵＳＢコントローラ１７用のＵＳＢドライバ、ＬＣＤ２１用のＬＣＤドライバ、操作部２２用の操作部ドライバ、ＦＣＵ３０用のＦＣＵ通信ドライバ及び専用エンジン４０用のエンジン通信ドライバである。
【００４６】
アプリケーション１３０は、プリンタ、コピー、ファクシミリ及びスキャナ等の画像処理に係るユーザサービスにそれぞれ固有の処理を行うソフトウェアモジュールであり、それぞれのサービスごとに構成される。例えば、アプリケーション１３０の例としては、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）形式及びＰＣＬ（Ｐｒｉｎｔｅｒ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）形式、ＰＳ（ＰｏｓｔＳｃｒｉｐｔ（登録商標））等のページ記述言語の形式のデータに変換処理する機能等を有するプリンタ用のアプリケーションがある。
【００４７】
次に、ブートローダ１００の各部による検査対象デバイスの検査処理の詳細を説明する。図５は、ブートローダ１００の各部による検査対象デバイスの検査処理の動作を例示するフローチャートである。図５に示したフローチャートは、画像処理装置１の起動に際して各種デバイスの動作状態を検査する自己検査方法及び自己検査プログラムを実現する動作の一例である。
【００４８】
画像処理装置１に電源が投入されると、図５に示した処理が開始する。図５に示すように、ハードウェア初期化部１０１は、コアＡ及び画像処理装置１を構成する各種ハードウェア（デバイス）を初期化する（Ｓ５０１）。
【００４９】
コアＡ及び各種ハードウェアを初期化したハードウェア初期化部１０１は、検査リスト及び検査結果情報を記憶させるためにＲＡＭ１２の領域を確保する（Ｓ５０２）。ハードウェア初期化部１０１により初期化処理やＲＡＭ１２の領域確保が完了すると、検査リスト生成部１０２は、各コアＢ〜コアＤの制御による検査に用いられる検査リストを生成して、確保されたＲＡＭ１２の領域に記憶させる（Ｓ５０３）。
【００５０】
検査リスト生成部１０２により検査リストが生成されると、ハードウェア初期化部１０１は、コアの番号を示すインデックスｉ（ｉは正の整数）を１とする（Ｓ５０４）。本説明においては、インデックスｉに対応するコアをコア（ｉ）とし、例えばコア（１）はコアＡ、コア（２）はコアＢ、コア（３）はコアＣ、コア（４）はコアＤとする。ハードウェア初期化部１０１は、コア（ｉ）（以降、ここではコアＢとする）を初期化する（Ｓ５０５）。なお、本実施形態においては、Ｓ５０２〜Ｓ５０５までの処理は、コアＡの制御に従って実行されている。
【００５１】
ハードウェア初期化部１０１によりコアＢが初期化されると、プログラムカウンタ制御部１０３は、コアＢに制御が移るようプログラムカウンタを設定するとともに、コアＢの処理に用いられる検査リストが格納されているＲＡＭ１２のアドレスを参照するようプログラムカウンタを設定する。これにより、コアＢの制御に従って動作する検査実行制御部１０４は、所定のデバイスの検査実行を開始する（Ｓ５０６）。検査実行の詳細については後述する。
【００５２】
コアＢの制御に従って動作する検査実行制御部１０４による検査と並行して、ハードウェア初期化部１０１は、インデックスｉがコア数Ｎ（本実施形態においては、Ｎ＝３）よりも小さい場合（Ｓ５０７／ＹＥＳ）、インデックスｉに１加算する（Ｓ５０８）。そして、ハードウェア初期化部１０１は、検査を開始したコアとは別のコア（ｉ）（以降、ここではコアＣとする）を初期化する（Ｓ５０５）。
【００５３】
ハードウェア初期化部１０１によりコアＣが初期化されると、プログラムカウンタ制御部１０３は、コアＣに制御が移るようプログラムカウンタを設定するとともに、コアＣの処理に用いられる検査リストが格納されているＲＡＭ１２のアドレスを参照するようプログラムカウンタを設定する。これにより、コアＣの制御に従って動作する検査実行制御部１０４は、所定のデバイスの検査実行を開始する（Ｓ５０６）。
【００５４】
このような処理を繰り返すことにより、コアＡを除くコアＢ〜コアＤそれぞれの制御に従って、検査実行制御部１０４は、それぞれの検査リストに含まれる検査対象デバイスの検査を並列して実行することになる。
【００５５】
一方、インデックスｉがコア数Ｎ以上である場合（Ｓ５０７／ＮＯ）、コアＡの制御に従って動作するＯＳ起動部１０５は、ＮＡＮＤフラッシュ１５に格納されているＯＳ１２０のロードを開始する（Ｓ５０９）。このような処理により、コアＢ〜コアＤの制御に従って並列実行されているデバイスの検査と並列してコアＡの制御に従ってＯＳ１２０のロードが開始されることになる。
【００５６】
次に、Ｓ５０６の検査実行制御部１０４によるデバイス検査処理の詳細を説明する。図６は、検査実行制御部１０４によるデバイス検査処理の動作を例示するフローチャートである。本説明においては、コアＢの制御に従って動作する検査実行制御部１０４がデバイス検査を実行する場合を例として説明する。
【００５７】
図６に示すように、検査実行制御部１０４は、ＲＡＭ１２に記憶されているコアＢの制御に従って検査に用いられる検査リストを取得する（Ｓ６０１）。例えば、検査実行制御部１０４は、図３（ａ）に示した検査リストを取得する。
【００５８】
検査リストを取得した検査実行制御部１０４は、ＮＡＮＤフラッシュ１５に記憶されている検査モジュール１１０の中から、検査リストに含まれる検査対象デバイスを検査するための検査モジュール１１０をロードする（Ｓ６０２）。図７は、ＮＡＮＤフラッシュ１５に格納されている検査モジュール１１０を例示する図である。図７に示すように、検査モジュール１１０は、例えば、検査対象デバイス名と関連付けられてＮＡＮＤフラッシュ１５に格納されている。
【００５９】
この場合、検査実行制御部１０４は、検査リストに含まれる検査対象デバイス名と一致する検査対象デバイス名に関連付けられた検査モジュール１１０をＮＡＮＤフラッシュ１５からロードする。例えば、検査実行制御部１０４は、まず、図３（ａ）に示したＮＡＮＤフラッシュ１５を検査するＮＡＮＤフラッシュ検査モジュールをＮＡＮＤフラッシュ１５からロードする。
【００６０】
検査モジュール１１０をロードした検査実行制御部１０４は、ロードした検査モジュール１１０を実行する。例えば、ＮＡＮＤフラッシュ検査モジュールが実行された場合、上述したようにＡＴＡ規格のＳＭＡＲＴコマンドを用いてＮＡＮＤフラッシュの不良ブロック数がチェックされる。
【００６１】
検査モジュール１１０を実行した検査実行制御部１０４は、検査モジュール１１０の実行による検査結果を取得して、確保されたＲＡＭ１２の領域に記憶させる（Ｓ６０４）。また、検査実行制御部１０４は、検査を行ったデバイスの検査リストの検査状態を「未検査」から「検査済」に変更する。
【００６２】
検査結果を記憶させた検査実行制御部１０４は、検査リストの中に検査状態が「未検査」であるデバイスがあるか否かを判定する（Ｓ６０５）。検査実行制御部１０４は、未検査のデバイスがある場合（Ｓ６０５／ＹＥＳ）、未検査のデバイスを検査するための検査モジュール１１０をＮＡＮＤフラッシュ１５からロードして（Ｓ６０２）、以降の処理を繰り返す。
【００６３】
一方、検査実行制御部１０４は、検査リストの中に未検査のデバイスがない場合（Ｓ６０５／ＮＯ）、処理を終了する。図６に示した処理は、コアＢ〜コアＤそれぞれの制御に従って並列して実行される。このような処理により、例えば図４に示した検査結果情報がＲＡＭ１２の確保された領域に記憶されることになる。
【００６４】
次に、デバイス検査の具体的な並列処理シーケンスを説明する。図８は、デバイス検査の具体的な並列処理シーケンスを例示する図である。本説明においては、図３に示した検査リストに従って、各コアＢ〜コアＤの制御に従って検査処理が実行されるものとする。また、図８に示すように、上から順にコアＡ〜コアＤの制御に従って実行される処理シーケンスを示し、左から右へ時間が進行しているものとする。
【００６５】
図８に示すように、まず、コアＡの制御に従ってブートローダ１００はコアＡ及びハードウェアを初期化する。次に、ブートローダ１００はコアＢを初期化する。
【００６６】
初期化されたコアＢの制御に従って動作するブートローダ１００は、図３（ａ）に示した検査リストの中からＮＡＮＤフラッシュ検査モジュールをロードする。ロードされた検査モジュール１１０は、ＮＡＮＤフラッシュ１５を検査する。ブートローダ１００は、ＮＡＮＤフラッシュ１５の検査結果をＲＡＭ１２に記憶させる。同様に、コアＢの制御に従って動作するブートローダ１００は、ＬＣＤ検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させ、ＮＩＣ検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させる。
【００６７】
また、このようなコアＢの制御に従った処理と並行して、コアＡの制御に従って動作するブートローダ１００はコアＣを初期化する。図８に示すように、コアＢの制御に従った処理と並行して、初期化されたコアＣの制御に従って動作するブートローダ１００は、ＲＡＭ検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させ、エンジン検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させる。
【００６８】
また、このようなコアＢ及びコアＣの制御に従った処理と並行して、コアＡの制御に従って動作するブートローダ１００はコアＤを初期化する。図８に示すように、コアＢ及びコアＣの制御に従った処理と並行して、初期化されたコアＤの制御に従って動作するブートローダ１００は、ＨＤＤ検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させ、ＡＳＩＣ検査モジュールをロードして検査した結果をＲＡＭ１２に記憶させる。
【００６９】
また、このようなコアＢ〜コアＤの制御に従った処理と並行して、コアＡの制御に従って動作するブートローダ１００はＯＳ１２０をロードする。ＯＳ１２０のロードが終了したタイミングで、コアＢ〜コアＤによるエンジンの検査も終了しているので、コアＡの制御に従って動作するＯＳ１２０は、ＲＡＭ１２に格納されている検査結果情報に基づいて、ＯＳ１２０上での動作制御を継続するかを判定する。
【００７０】
以上説明したように、本実施形態に係る画像処理装置１は、検査対象となる複数のデバイスをＣＰＵのコア数に応じた数のグループに分割した検査リストを生成し、複数のコアによりそれぞれの検査リストに含まれる検査対象デバイスを並列して検査する。これにより、画像処理装置１の起動に際して複数のデバイスを同時に検査することができるので、デバイスの自己検査が行われることによる画像処理装置１の起動遅延を低減することが可能になる。
【００７１】
また、本実施形態に係る画像処理装置１は、複数のコアのうちの１つのコアでは検査処理を行わず、他のコアによる検査処理と並行してＯＳ１２０をロードする。これにより、複数のデバイスを並列して検査すると同時にＯＳ１２０をロードすることができるので、画像処理装置１の起動遅延をさらに低減することが可能になる。しかしながら、検査処理と並行してＯＳ１２０をロードするこのような構成は必須ではなく、すべてのコアにより検査処理を行った後、いずれかのコアによりＯＳ１２０をロードするようにしてもよい。このような構成であっても、デバイスの自己検査が行われることによる画像処理装置１の起動遅延を低減することが可能である。
【００７２】
なお、上記実施形態において、検査リスト生成部１０２は、複数の検査対象デバイスを各グループに含まれるデバイスの数ができる限り均等になるように、複数の検査対象デバイスを複数のグループに分割した検査リストを生成する場合を例として説明した。その他、検査リスト生成部１０２は、各グループに含まれる各デバイスの検査にかかる時間の合計時間ができる限り均等になるように分割した検査リストを生成するようにしてもよい。
【００７３】
これにより、各コアの処理負荷をできる限り均等に分散することができ、また、あるコアのみ検査が完了するまでに時間がかかることを回避することができるので、デバイスの自己検査が行われることによる画像処理装置１の起動遅延をより低減することができる。
【００７４】
また、検査リスト生成部１０２は、初期化されるタイミングの早いコアほど各デバイスの検査にかかる時間の合計時間が長くなるように、複数の検査対象デバイスを複数のグループに分割した検査リストを生成するようにしてもよい。これにより、各コアによる検査完了時間をできる限り揃えることができるので、デバイスの自己検査が行われることによる画像処理装置１の起動遅延をより低減することができる。
【００７５】
なお、検査リスト生成部１０２は、このような検査時間を、過去の検査に関する情報を示す検査履歴情報に基づいて算出する。例えば、検査履歴情報では、デバイスごとにこれまでの検査時間が関連付けられており、検査リスト生成部１０２は、検査履歴に含まれるデバイスの検査時間の平均値を、検査リストを生成する際に用いられる検査時間とする。
【００７６】
その他、画像処理装置１の管理者等により設定された各デバイスの検査時間がＨＤＤ１４やＮＡＮＤフラッシュ１５等の記憶媒体に記憶されている場合、検査リスト生成部１０２は、記憶媒体に記憶されている検査時間を用いて検査リストを生成してもよい。
【００７７】
また、上記実施形態において、検査リスト生成部１０２は、画像処理装置１の電源が投入された際に、検査リストを生成する場合を例として説明した。その他、画像処理装置１の管理者等により検査リストが予め設定されてＨＤＤ１４やＮＡＮＤフラッシュ１５等の記憶媒体に記憶されている場合、検査リスト生成部１０２は、設定された検査リストを記憶媒体から取得してＲＡＭ１２にロードするようにしてもよい。
【００７８】
また、上記実施形態において、検査リスト生成部１０２は、１つのデバイスを１つのコアにより検査する場合を例として説明した。しかしながら、この場合、ある１つのデバイスが他のデバイスに比べて検査時間が長くかかる場合、ＯＳ１２０の検査結果判定部１２１による判定処理が行われるまでに待ち時間が発生する場合がある。
【００７９】
図９は、デバイス検査の具体的な並列処理シーケンスを例示する図である。図９に示した場合においては、斜線でハッチングされたＲＡＭ１２の検査時間が他のデバイスの検査時間に比べてかなり長い。図９に示すように、コアＣの制御に従って動作するブートローダ１００によるＲＡＭ１２の検査に時間かかるため、次の専用エンジン４０の検査の完了が、コアＡの制御に従って動作するブートローダ１００によるＯＳ１２０のロード完了よりも遅くなる。
【００８０】
検査結果判定部１２１は、すべての検査対象デバイスの検査結果情報がＲＡＭ１２に記憶されるまで待機する必要があるので、図９に示すように、ＯＳ１２０のロード完了から検査結果情報に基づく判定処理の開始までに待ち時間が生じる。そのため、待ち時間の分の画像処理装置１の起動遅延が発生する。
【００８１】
そこで、検査リスト生成部１０２は、検査時間が所定時間以上である検査対象デバイスがあり、そのデバイスの検査範囲を分割することができる場合に、複数の検査範囲に分割してそれぞれの検査リストに含めるようにしてもよい。検査範囲を分割することができるデバイスは、例えば、ＲＡＭ１２のように、アドレスで指定された複数のメモリ領域から構成されるものである。
【００８２】
このようなデバイスの場合、検査リスト生成部１０２は、メモリ領域のアドレスやサイズを指定することで複数の検査範囲に分割して、分割された検査範囲を含めた検査リストを生成する。図１０は、複数の検査範囲に分割されたデバイスを含む検査リストを例示する図である。ここでは、ＲＡＭ１２が複数の検査範囲に分割されるデバイスである場合を例として説明する。
【００８３】
図１０（ａ）は、コアＢの制御に従って検査されるデバイスの検査リストを示し、ＲＡＭ１２の一部の領域（領域Ａとする）が含まれる。図１０（ｂ）は、コアＣの制御に従って検査されるデバイスの検査リストを示し、ＲＡＭ１２の一部の領域（領域Ｂ及び領域Ｄとする）が含まれる。図１０（ｃ）は、コアＤの制御に従って検査されるデバイスの検査リストを示し、ＲＡＭ１２の一部の領域（領域Ｃとする）が含まれる。このように、ＲＡＭ１２は、４つの検査範囲に分割され、それぞれの検査リストに含まれる。
【００８４】
図１１は、図１０に示した検査リストに従って実行されるデバイス検査の具体的な並列処理シーケンスを例示する図である。図１１に示すように、斜線でハッチングされたＲＡＭ１２の領域ＡはコアＢにより、ＲＡＭ１２の領域Ｂ及び領域ＤはコアＣにより、ＲＡＭ１２の領域ＣはコアＤにより、それぞれ並列して実行される。
【００８５】
これにより、検査時間の長いデバイスの検査処理は、分割された複数の検査範囲単位で複数のコアにより並列実行されるので、すべての検査対象デバイスの検査完了のタイミングが図９に示した場合に比べて早くなり、画像処理装置１の起動遅延を低減することが可能になる。
【００８６】
なお、本実施形態においては、ＲＡＭ１２が４つの領域に分割される場合を例として説明した。しかしながら、これは一例であり、任意の数の領域に分割されるようにしてもよい。また、検査リスト生成部１０２は、例えば、分割対象となるデバイスの検査時間に基づいて分割数を決定し、各検査リストに含まれる合計検査時間に基づいて、各検査リストに分割された領域のデバイスを含める。また、分割される領域のサイズは、すべて同じサイズである必要はなく、例えば他の検査対象デバイスの検査時間との関係で異なるサイズに分割されてもよい。
【００８７】
なお、上記実施形態においては、複数の演算制御装置の１つの演算制御装置であるコアＡにより検査処理以外の動作を制御し、コアＡの演算制御装置以外のコアＢ〜コアＤにより検査処理が並列して実行される場合を例として説明した。しかしながら、これは一例であり、いずれかのコアにより検査処理以外の動作を制御するようにすればよい。
【００８８】
また、上記実施形態においては、コアＢ、コアＣ、コアＤの順に初期化されて検査処理が実行される場合を例として説明した。しかしながら、これは一例であり、どのコアから順に初期化されて検査処理が実行されてもよい。
【００８９】
また、上記実施形態においては、画像処理装置１を例として説明したが、起動に際してデバイスの自己検査を行う情報処理装置であっても、同様に適用可能である。本実施形態により、このような情報処理装置においても、起動に際してデバイスの自己検査が行われることによる起動遅延を低減することが可能になる。
【符号の説明】
【００９０】
１  画像処理装置
１０  コントローラ
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＡＳＩＣ
１４  ＨＤＤ
１５  ＮＡＮＤフラッシュ
１６  ＮＩＣ
１７  ＵＳＢコントローラ
２０  オペレーションパネル
２１  ＬＣＤ
２２  操作部
３０  ＦＣＵ
４０  専用エンジン
１００  ブートローダ
１０１  ハードウェア初期化部
１０２  検査リスト生成部
１０３  プログラムカウンタ制御部
１０４  検査実行制御部
１０５  ＯＳ起動部
１１０  検査モジュール
１２０  ＯＳ
１２１  検査結果判定部
１２２  動作停止部
１２３  ＣＰＵ初期化部
１２４  メモリ管理部
１２５  プロセス／スレッド管理部
１２６  ファイルシステム
１２７  デバイスドライバ
１３０  アプリケーション
【先行技術文献】
【特許文献】
【００９１】
【特許文献１】特開２００７−１４０９２０号公報
【図１】
2016031656.tif 000003
【図２】
2016031656.tif 000004
【図３】
2016031656.tif 000005
【図４】
2016031656.tif 000006
【図５】
2016031656.tif 000007
【図６】
2016031656.tif 000008
【図７】
2016031656.tif 000009
【図８】
2016031656.tif 000010
【図９】
2016031656.tif 000011
【図１０】
2016031656.tif 000012
【図１１】
2016031656.tif 000013