(57)【要約】【課題】機器構成やデバイスの経時変化などに適応的に対応し、起動時間の短縮を図ることのできる情報処理装置を提供する。【解決手段】起動処理時に実行した各処理の実行記録をトレース情報として生成し、当該トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する情報処理装置である。【選択図】図１
2007219977.tif 000002
【特許請求の範囲】
【請求項１】
起動処理時に実行した各処理の実行記録をトレース情報として生成する手段と、
前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する手段と、
を含むことを特徴とする情報処理装置。
【請求項２】
起動処理時に実行した各処理の実行記録をトレース情報として生成する手順と、
前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する手順と、
を含むことを特徴とする情報処理装置の制御方法。
【請求項３】
コンピュータに、
起動処理時に実行した各処理の実行記録をトレース情報として生成する工程と、
前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する工程と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ、複合機、プリンタなど、プログラム制御される情報処理装置に係り、特に起動の高速化に関する。
【背景技術】
【０００２】
近年の情報処理装置には、一般に多数のデバイスが接続されており、起動の際に実行するべき各デバイスの初期化に比較的長い時間がかかっている。また、情報処理装置を動作させる基本プログラムであるオペレーティングシステムの構成も複雑化しており、複数のプログラムモジュールをロードする必要があるものも多い。
【０００３】
このために、利用者の操作が可能となるまで（起動処理の全体が完了するまで）に、比較的長時間を要するものも少なくない。近年では、この起動時間の短縮のために種々の技術が開発されている。例えば特許文献１には、初期化処理と起動処理とを並列的に実行して起動を高速化する技術が開示されている。
【特許文献１】特開２００１−３３７８２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術では、並列処理の対象が予め設定されており、接続するデバイスの種類が変更されるなど機器構成が変更された場合や、デバイスが劣化して起動までの時間が長くなってしまうなどといった事情に対し、適応的に対応できない。
【０００５】
本発明は上記実情に鑑みて為されたもので、機器構成やデバイスの経時変化などに適応的に対応し、起動時間の短縮を図ることのできる情報処理装置を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決するための本発明は、情報処理装置であって、起動処理時に実行した各処理の実行記録をトレース情報として生成する手段と、前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する手段と、を含むことを特徴としている。
【０００７】
また、本発明の一態様は、情報処理装置の制御方法であって、起動処理時に実行した各処理の実行記録をトレース情報として生成する手順と、前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する手順と、を含むことを特徴としている。
【０００８】
さらに本発明の別の態様は、プログラムであって、コンピュータに、起動処理時に実行した各処理の実行記録をトレース情報として生成する工程と、前記トレース情報を参照して、起動処理時に実行されている各処理の順序を変更し、又は複数の処理を並列的に実行するよう起動処理の内容を変更する工程と、を実行させることを特徴としている。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置は、一般的なコンピュータ装置や複合機、プリンタなど、プログラム制御される機器であればいかなるものであっても構わない。ここでは説明のために、プリンタを例として説明する。
【００１０】
本実施の形態に係る情報処理装置としてのプリンタ１は、図１に示すように、制御部１１と、記憶部１２と、通信部１３と、周辺インタフェース部（ＰＩ部）１４と、バス調停部１５とを含んで構成され、これら各部は互いにバスを介して接続されている。また、ＰＩ部１４には、画像形成部２１と、用紙搬送部２２とを含む複数のデバイスが接続されている。
【００１１】
ここで制御部１１はＣＰＵ等のプログラム制御デバイスであり、バスを介して記憶部１２に格納されているプログラムに記述されているインストラクションを順次に読み込み、当該読み込んだインストラクションに従って動作する。
【００１２】
例えばこの制御部１１は、電源が投入された時点や、リセットの操作がされた時点で、記憶部１２に格納されているプログラム及び設定（起動設定データ）を読み出して、当該読み出したプログラムや起動設定データに従い、起動処理を実行する。
【００１３】
またこの制御部１１は、この起動設定データを書き換える処理（起動最適化処理）を行う。さらに制御部１１は、ＰＩ部１４に接続されている各デバイスについて、それぞれデバイス識別子を割り当て、一般のプリンタとしての動作を行なうため、通信部１３を介して受信される画像データに基づいて、形成する画像を生成し、バス及びＰＩ部１４を介して用紙搬送部２２に対して、用紙の搬送を行なわせ、当該搬送させた用紙に対し生成した画像を形成するよう、バス及びＰＩ部１４を介して画像形成部２１を制御する処理を実行する。これらの制御部１１の処理のうち、起動処理と起動最適化処理とについては後に述べる。
【００１４】
記憶部１２は、ＲＡＭやＲＯＭなどの記憶素子を含む第１記憶部１２ａと、ハードディスクなど、電源が供給されていない間にも情報を保持する不揮発性記憶要素の第２記憶部１２ｂとを備える。これら第１記憶部１２ａ又は第２記憶部１２ｂには、制御部１１が実行するプログラムや、設定が格納されている。なお、設定は、不揮発性の記憶要素に格納されるとする。また、第１記憶部１２ａは、制御部１１のワークメモリとして動作する。
【００１５】
通信部１３は、ネットワークインタフェース等であり、ネットワークを介して接続されるパーソナルコンピュータ等から、画像データを受信し、バスを介して制御部１１に出力する。
【００１６】
ＰＩ部１４は、周辺機器インタフェース（ペリフェラルインタフェース）であり、デバイスが接続可能なポートを複数備える。各ポートには、予めアドレスが割り当てられており、制御部１１がこのＰＩ部１４を介してデバイスに対して指示等を出力する際には、出力先となるデバイスが接続されているポートを特定するアドレスを指定し、当該アドレスに対して指示等を出力することとなる。
【００１７】
バス調停部１５は、バスを介して接続された各部のいずれかから通信要求を受けると、バスが使用中（通信中）であるか否かを判断し、バスが使用中であれば通信要求元を特定する情報を待ち行列（キュー）に保持し、バスが使用中でなくなると、当該待ち行列に保持された順序で、通信要求元に対して通信許可を出力して、バスを使用させる動作を行なう。このバス調停部１５の働きにより、例えば制御部１１が記憶部１２からバスを介してデータを読み出しているときに（制御部１１によりバスが使用中であるときに）、通信部１３が受信したデータを制御部１１に出力するべくバスの通信要求が出力されたとしても、通信部１３は直ちにバスが使用できるようになるのではなく、バス調停部１５が制御部１１による通信が完了し、通信部１３に対して使用許可を出力した時点で、通信部１３が制御部１１に対して受信したデータを送出できるようになる。
【００１８】
画像形成部２１は、いわゆるプリンタエンジンであり、制御部１１からバスを介して入力される指示に従って、用紙搬送部２２により搬送された用紙上に、画像を形成する。用紙搬送部２２は、用紙トレイに保持されている用紙を、制御部１１からバスを介して入力される指示に従って、画像形成部２１へと搬送する。また、この用紙搬送部２２は、画像形成部２１にて画像が形成された用紙をプリンタ１のハウジング外へ排出する。
【００１９】
また本実施の形態では、通信部１３と、画像形成部２１と、用紙搬送部２２の各デバイスは、初期化時に次の処理を行う。まず通信部１３は、初期化の処理として、制御部１１からネットワークアドレスの割り当てを受けるなどの処理を行う。
【００２０】
画像形成部２１は、初期化時に、トナーを撹拌する処理や、定着ユニットのヒーターを予熱する処理などを行なう。用紙搬送部２２は、初期化の処理として用紙トレイに保持されている用紙の量を検出するなどの処理を行う。
【００２１】
次に制御部１１の起動処理について説明する。制御部１１は、起動開始時（電源投入時やリセット操作時）において、第１記憶部１２ａのＲＯＭに格納されている初期プログラム（モニタプログラム）を読み出して実行を開始する。モニタプログラムには、ハードディスク等の第２記憶部１２ｂからオペレーティングシステムやアプリケーションプログラム等、種々のプログラムを読み出して実行を行わせるためのプログラムが含まれる。
【００２２】
ここではモニタプログラムは、まず、オペレーティングシステムを構成する複数のモジュールのうち、起動用モジュールを第２記憶部１２ｂから第１記憶部１２ａのワークメモリへ読み込んで起動し、処理を開始するものとする。この起動用モジュールの動作では、
（１）接続されているデバイスを検出するデバイスプロービング動作、
（２）デバイスの初期設定データを第２記憶部１２ｂから読み出す設定データ読み出し動作、
（３）プログラムモジュールのデータを第２記憶部１２ｂから読み出して起動する起動動作、
（４）デバイスを初期化する動作、
を実行する。
【００２３】
各動作の実行順序は、記憶部１２に格納されている起動設定データによって規定される。当初、デバイスプロービング動作においては、デバイスの検出範囲として、ＰＩ部１４のすべてのポートのアドレス範囲が設定される。例えば、ＰＩ部１４のポートが１６あり、それぞれのポートが０ｘ０から、０ｘＦまでの各アドレスで特定される場合、当初は、０ｘ０から０ｘＦまでの１６個のアドレスのすべてが探索範囲として定められる。ここで接頭部「０ｘ」は、引き続く数値が１６進数であることを示す。
【００２４】
また、設定データ読み出し動作は、当初は、あるデバイスの初期化を行なう際に、当該デバイスの初期化時に参照するべき初期設定データを読み込むよう設定される。つまり、当初は、デバイスの初期化処理の直前に設定データの読み出し動作が行なわれるよう、起動設定データが記述されている。
【００２５】
またプログラムモジュールの読み込み順序は、当初は、オペレーティングシステムを構成するすべてのプログラムモジュールを順次読み込んでから、アプリケーションモジュールを読み込むよう起動設定データに記述される。
【００２６】
さらにデバイスを初期化する動作については、当初は、デバイスプロービング動作にて見いだされた順序で各デバイスを初期化するよう起動設定データに記述される。
【００２７】
起動用モジュールを実行する制御部１１は、図２にその内容を例示するように機能的に、設定解析部３１、プログラムロード部３２、デバイス初期化部３３、タイマ３４及びトレース処理部３５を含む装置を実現する。
【００２８】
なお、以下の説明ではオペレーティングシステムが複数のプログラムモジュールから構成され、各プログラムモジュールはそれぞれ独立して第２記憶部１２ｂから読み出されるものとする。
【００２９】
設定解析部３１は、起動設定データを第２記憶部１２ｂから読み出して第１記憶部１２ａに格納する。そして、この起動設定データを参照しながら、記述されている順序に従って、プログラムロード部３２やデバイス初期化部３３に対して、読み出すべきプログラムモジュールを指定する情報や、初期化するべきデバイスを指定する情報等を出力する。
【００３０】
プログラムロード部３２は、設定解析部３１から読み出すべきプログラムモジュールを指定する情報の入力を受けると、当該情報で指定されるプログラムモジュールを第２記憶部１２ｂから、第１記憶部１２ａのワークメモリへ読み出して実行を開始し、処理を完了した旨を表す信号を出力する。
【００３１】
デバイス初期化部３３は、設定解析部３１から初期化するべきデバイスを指定する情報の入力を受けると、当該情報で指定されるデバイスに対して初期化の処理を開始し、デバイス側の初期化処理が完了するまで待機して、処理の完了を表す信号を出力する。
【００３２】
タイマ３４は、起動用モジュールの実行が開始されてからの経過時間を計時する。トレース処理部３５は、設定解析部３１がプログラムロード部３２やデバイス初期化部３３に対して情報を出力したタイミングや、プログラムロード部３２等が処理の完了を表す信号を出力したタイミング、バスが使用中となったタイミング、バスが使用中でなくなったタイミング、制御部１１がインストラクションの実行を開始したタイミング、制御部１１が実行を待機しているタイミングなどにおいて、タイマ３４が計時している時刻の情報を取得して、どのタイミングであったかを特定する情報と、当該取得した時刻の情報とを関連づけて、トレース情報として第１記憶部１２ａに格納する。
【００３３】
このトレース処理部３５の処理により、各プログラムモジュールのロードに要する時間や、ＣＰＵである制御部１１が動作している時間（ＣＰＵ時間）、バスが占有されていない時間などが記録される。
【００３４】
次に制御部１１が実行する起動最適化処理について説明する。制御部１１は、所定のタイミングごとに（例えば毎月など定期的に）、起動処理の際に生成したトレース情報を参照して起動最適化処理を実行する。例えば制御部１１は、上述の起動用モジュールの各動作、
（１）デバイスプロービング動作、
（２）設定データ読み出し動作、
（３）プログラムモジュールの起動動作、
（４）デバイス初期化動作、
の各々について、順次、起動最適化を行なうことができるか否かを、それぞれの動作に応じた条件で判断し、最適化が可能と判断した場合に、起動最適化の処理を実行して、起動設定データを書き換える。
【００３５】
この処理の具体的な例を以下に説明する。まず、（１）デバイスプロービング動作において、応答のないアドレス（デバイスが接続されていないポートのアドレス）があれば、制御部１１は、当該応答のないアドレスについてはプロービングを行なわないよう、プロービングの対象となるアドレスを制限する記述を起動設定データに書込む。これにより、現実にデバイスが接続されているポートに対してのみプロービングを行なうことになって、起動時間の短縮が図られる。
【００３６】
さらに（２）設定データ読み出し動作においては、例えばデバイスプロービング動作において、デバイスへのプローブ信号（確認信号）を送出してから、デバイスからの応答信号が受信されるまでの間の時間に読み出し可能な設定データがあるか否かを、トレース情報から探索する。すなわち、各設定データの読み出し時間Ｔread（ｉ）（ここでｉは、各設定データの識別番号等）と、デバイスプロービング動作の間におけるバス及びＣＰＵの空き時間Ｔidleとを比較し、Ｔread（ｉ）＜Ｔidleとなる設定データがあるか否かを調べる。ここでそのような設定データがあれば、当該設定データの読み出しタイミングを、デバイスのプロービング動作の間に変更するよう起動設定データを変更する。これにより、デバイスのプロービング動作の待ち時間の間に設定データを読み出すことが可能となり、起動時間の短縮が図られる。
【００３７】
なお、バス及びＣＰＵの空き時間が複数ある場合は、各空き時間についてその間に読み出し可能な設定データがあるか否かを調べる。
【００３８】
また、制御部１１は、設定データの一部についてバイトコンパイル（バイナリデータ化）して設定データの送出やデバイス側での処理を短縮できるものがあるか否かを判断する。この判断は、設定データごとにバイトコンパイル可能か否かを表すフラグを設定しておき、当該フラグによりバイトコンパイル可能となっており、かつバイトコンパイルされていない設定データが見いだされたときに、制御部１１が当該設定データをバイトコンパイルして記憶部１２ｂに格納することとすればよい。
【００３９】
これにより、以降はバイトコンパイル後のバイナリデータとして設定データを読み出すことができるようになり、デバイス側での処理を短縮して、全体としての起動時間の短縮が図られる。
【００４０】
さらに制御部１１は、（３）プログラムモジュールの起動動作について最適化が可能であるか否かを判断する。この動作を行なうため、記憶部１２ｂには予め各プログラムモジュール間の依存関係（dependency）を規定する情報が保持される。この情報は、例えば、プログラムモジュールを特定する情報と、当該情報で特定されるプログラムモジュールが起動するために必要となる、他のプログラムモジュールのリストとを関連づけたものである（図３）。
【００４１】
制御部１１は、この依存関係の情報に基づき、依存グラフ（依存関係に対応する非循環有向グラフ）を生成する。さらに制御部１１は、各プログラムモジュールの読み込み時間をトレース情報から取得し、当該依存グラフと、読み込み時間の情報とに基づいて読み込み順の優先順位を定める。この処理については、広く研究されている処理であり、種々の方法がすでに知られているので、その詳細な説明を省略する。
【００４２】
制御部１１は、ここで定めた優先順位の順序でプログラムモジュールの読み込み順序を変更し、起動設定データを変更する。さらに依存関係のないオペレーティングシステムのプログラムモジュールについては、起動後に読み込むことが可能であるので、当該プログラムモジュールの読み込みを行なう旨の記述を起動設定データから削除する。これにより、オペレーティングシステムについては、起動時に必要となるプログラムモジュールのみを読み込むこととして、他のプログラムモジュールは、起動後の必要となったタイミングで読み込むこととしたので、起動の時間を短縮できる。
【００４３】
制御部１１はさらに（４）デバイス初期化動作について最適化が可能であるか否かを調べる。すなわち一般には、デバイス初期化動作においては、初期化の対象となったデバイスに対して設定データを送出して初期化を指示し、その後はデバイスから初期化完了の信号が受信されるまで待機する。この待機期間は、ＣＰＵ及びバスの双方が空き時間となる。そこで、各デバイスの初期化時のこの空き時間をトレース情報から検出し、各デバイスごとに、デバイスの初期化に関わる空き時間内に読み込み可能なプログラムモジュールがあるか否かを調べる。ある注目デバイスの初期化に関わる空き時間に、読み込み可能なプログラムモジュールが見いだされたときには、当該プログラムモジュールの読み込み前に、注目デバイスへの設定データの送出と初期化の指示の出力とを行なわせるよう、起動設定データを書き換える。
【００４４】
これにより、デバイスの初期化とプログラムモジュールの読み込みとを並列的に動作させ、起動時間を短縮できる。
【００４５】
さらに制御部１１は、これらの処理によって起動設定データを書き換えた後、書き換え後の起動設定データに基づく起動時間を、各動作に要する時間としてトレース情報に記録されている時間を総和して予測起動時間を算出する（シミュレート処理）。なお、並列的に実行する部分については、並列的に実行される処理のうち、時間の長いものを選択して総和に含め、選択しなかった処理についてはその実行に要する時間を加算しない。制御部１１は、このシミュレート処理によって得られた予測起動時間が、トレース情報から算出される現在の起動時間よりも短いか否かを調べ、短い場合に、当該書き換え後の起動設定データを、現在の起動設定データに上書きして第２記憶部１２ｂに格納する。
【００４６】
なお、新たなデバイスを接続した場合に配慮して、制御部１１は、利用者からの指示に従って起動設定データにＰＩ部１４のすべてのポートをプローブする記述を加える処理を実行することとしてもよい。
【００４７】
本実施の形態によると図４に示すように、例えば定期的に現在の起動設定データに基づいて起動処理を実行し（Ｓ１）、その際の各動作に関わる記録をトレース情報として記録し（Ｓ２）、このトレース情報を用いて、デバイスプロービング動作に関する最適化処理を実行し（Ｓ３）、設定データ読み込みに関する最適化処理を実行し（Ｓ４）、プログラムモジュールの読み出しに関する最適化処理を実行し（Ｓ５）、デバイスの初期化に係る最適化処理を実行し（Ｓ６）、シミュレート処理を実行して（Ｓ７）、シミュレート結果により起動時間が短縮できたか否かを判断し（Ｓ８）、短縮できた場合は、最適化処理の結果を保持して（Ｓ９）、処理を終了し、短縮できなかった場合は、現状のまま、処理を終了する。
【００４８】
これにより、機器構成やデバイスの経時変化などに適応的に対応し、起動時間の短縮を図ることができる。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。
【図２】本発明の実施の形態に係る情報処理装置の一例を表す機能ブロック図である。
【図３】本発明の実施の形態に係る情報処理装置が保持するプログラムモジュールの依存関係を規定する情報の例を表す説明図である。
【図４】本発明の実施の形態に係る情報処理装置の動作例を表すフローチャート図である。
【符号の説明】
【００５０】
１  情報処理装置、１１  制御部、１２  記憶部、１３  通信部、１４  周辺インタフェース部、１５  バス調停部、２１  画像形成部、２２  用紙搬送部、３１  設定解析部、３２  プログラムロード部、３３  デバイス初期化部、３４  タイマ、３５  トレース処理部。
【図１】
2007219977.tif 000003
【図２】
2007219977.tif 000004
【図３】
2007219977.tif 000005
【図４】
2007219977.tif 000006