(57)【要約】【課題】ＲＡＭ実行のシステムでも、デマンドページング処理を利用した起動の高速化を可能にする。【解決手段】マスクＲＯＭ２０に格納されているブートローダは、ＲＡＭ１７にロードするプログラムのコード及びデータのうち、プログラムのエントリーポイント、ページテーブルを初期化するコードなど、デマンドページング処理を行うのに必要なものだけをＲＡＭ１７にロードする。ブートローダは、プログラムのエントリーポイントにジャンプし、割り込み処理の初期化、ページテーブルの初期化などを行う。以降の処理でデマンドページング処理が可能になる。【選択図】図１
2015022373.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのコード及びデータが格納される不揮発性の第１の記憶部と、
前記プログラムの作業領域となる第２の記憶部と、
デマンドページング処理に必要なコード及びデータを前記第１の記憶部から前記第２の記憶部へロードする手段と、
該ロードされたコード及びデータを用いて、デマンドページング処理に必要な初期化処理を行う手段と、を有する制御装置。
【請求項２】
請求項１に記載された制御装置において、
前記デマンドページング処理に必要なコード及びデータは、プログラムのエントリーポイント、ページテーブルを初期化するコード、ベクターテーブル、前記第１の記憶部のデバイスドライバ、デマンドページング処理コード、及び割り込み処理コードである、制御装置。
【請求項３】
請求項１又は２に記載された制御装置において、
前記デマンドページング処理に必要なコード及びデータが、前記第２の記憶部の連続したアドレスの領域に配置されている、制御装置。
【請求項４】
請求項３に記載された制御装置において、
前記領域のアドレスは、プログラムのビルド時に使用されるリンカースクリプトの記述により設定される、制御装置。
【請求項５】
請求項３又は４に記載された制御装置において、
最も低位のアドレスが0x0である、制御装置。
【請求項６】
請求項１〜５のいずれかに記載された制御装置において、
前記初期化処理を行っている最中に、優先度の低いタスクを起動しておき、そのタスクに、デマンドページング処理が行われていない最も低位のアドレスから終端アドレスまで、ページ単位で順次読み出しアクセスさせることにより、バックグラウンドでデマンドページングを引き起こす、制御装置。
【請求項７】
請求項１〜６のいずれかに記載された制御装置を備えた画像形成装置。
【請求項８】
プログラムのコード及びデータが格納される不揮発性の第１の記憶部と、前記プログラムの作業領域となる第２の記憶部と、を有する制御装置の起動処理方法であって、
デマンドページング処理に必要なコード及びデータを前記第１の記憶部から前記第２の記憶部へロードする工程と、
該ロードされたコード及びデータを用いて、デマンドページング処理に必要な初期化処理を行う工程と、
を有する制御装置の起動処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デマンドページング機能を有する制御装置及びその起動処理方法、並びにその制御装置を備えた画像形成装置に関する。
【背景技術】
【０００２】
画像形成装置などの電子機器を起動する際に、デマンドページング処理を利用して、起動時間を短縮する技術が存在する。デマンドページング処理とは、必要になったときに不揮発性メモリからＲＡＭにプログラムのコードもしくはデータをページ単位でロードする処理のことである。デマンドページング処理を利用すれば、必要最低限のコードもしくはデータのみをロードすればよいため、起動時間を短縮することが可能である。デマンドページング機能を利用した起動高速化技術は既に知られている（特許文献１）。
【０００３】
しかしながら、今までのデマンドページング処理を利用した起動高速化技術は、ＲＯＭ実行を前提としたシステムで動作するというシステム制約があり、ＲＡＭ実行のシステムには適用できないという問題がある。
【０００４】
ＲＯＭ実行とは、マスクＲＯＭやＮＯＲフラッシュＲＯＭなどの直接コードを実行することが可能なＲＯＭを搭載するシステムにおいて採用される方式で、コードをＲＯＭからＲＡＭに展開せず、直接ＲＯＭ上のコードを実行することである。また、ＲＡＭ実行とは、ＮＡＮＤフラッシュＲＯＭやシリアルフラッシュＲＯＭなどの直接コードを実行することができないＲＯＭを搭載するシステムにおいて採用される方式で、コードをＲＯＭからＲＡＭに展開してからＲＡＭ上のコードを実行することである。
【０００５】
ＲＯＭ実行は、ＲＡＭを削減できるためコスト面では有利であるが、速度面では不利なため、コストが重要な電子機器では採用されるものの、画像形成装置など、速度が要求される電子機器においてはＲＡＭ実行が採用されることが殆どである。
【０００６】
特許文献１に記載された発明では、リード時間を短縮する目的で、デマンドページング処理によりＲＯＭ上のデータをＲＡＭに展開している。しかし、この発明は、コードをＲＯＭ実行し、データはＲＡＭアクセスするというシステムを前提としており、ＲＡＭ実行のシステムには適用できない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、このような問題を解決するためになされたものであり、その目的は、ＲＡＭ実行のシステムでも、デマンドページング処理を利用した起動の高速化を実現することである。
【課題を解決するための手段】
【０００８】
本発明は、制御装置であって、プログラムのコード及びデータが格納される不揮発性の第１の記憶部と、前記プログラムの作業領域となる第２の記憶部と、デマンドページング処理に必要なコード及びデータを前記第１の記憶部から前記第２の記憶部へロードする手段と、該ロードされたコード及びデータを用いて、デマンドページング処理に必要な初期化処理を行う手段と、を有する制御装置である。
【発明の効果】
【０００９】
本発明によれば、ＲＡＭ実行のシステムでも、デマンドページング処理を利用した起動の高速化を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る画像形成装置のハードウェア構成を示すブロック図である。
【図２】図１におけるコントローラボードの起動処理を示すフローチャートである。
【図３】図２のフローにおいて、ブートローダがデマンドページング処理に必要なコード及びデータをＲＡＭにロードした時点でのＲＡＭマップを示す図である。
【図４】図２のフローにおいて、ページング設定が行われた後のＲＡＭのアクセス属性について説明するための図である。
【図５】図２のフローにおいて、デマンドページング処理により初期化コード及びデータがロードされていく様子について説明するための図である。
【図６】本発明の実施形態に係る画像形成装置において、低優先度タスクがＲＡＭに読み出しアクセスを行うことによって起動をより高速化する手法について説明するための図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して説明する。
＜画像形成装置のハードウェア構成＞
図１は、本発明の実施形態に係る画像形成装置のハードウェア構成を示すブロック図である。
【００１２】
この画像形成装置１は、コントローラボード１０と、それぞれがコントローラボード１０に接続されたスキャナ３０、プロッタ４０、及び操作（オペレーション）パネル５０を備えている。
【００１３】
スキャナ３０は、原稿などの画像を読み取り、画像データを生成する画像入力手段である。プロッタ４０は、画像データに基づいて、用紙などの印刷媒体に画像を形成する画像出力手段である。操作パネル５０は、各種ボタン、ＬＣＤなどの表示デバイス、及び表示デバイス上に配置されたタッチパネルなどを備えており、ユーザがこの画像形成装置１に各種指示を入力するための操作入力手段である。
【００１４】
制御装置としてのコントローラボード１０は、この画像形成装置１の全体を制御する機能を持ち、バス２１と、それぞれがバス２１に接続されたＣＰＵ１１、スキャナＩ／Ｆ（インタフェース）１２、パネルＩ／Ｆ１３、画像処理Ｈ／Ｗ（ハードウェア）１４、プロッタＩ／Ｆ１５、不揮発性メモリ１６、ＲＡＭ１７、ネットワークＩ／Ｆ１８、ＵＳＢＩ／Ｆ１９、及びマスクＲＯＭ２０を備えている。
【００１５】
ＣＰＵ１１は、この画像形成装置１の全体を制御するために各種処理や演算などを実行する演算処理手段である。また、ＣＰＵ１１は、デマンドページング処理時にアドレス変換などのメモリ管理を実行するＭＭＵ（Memory Management Unit：メモリ管理ユニット）１１ａを内蔵している。
【００１６】
パネルＩ／Ｆ１３は、操作パネル５０とのインタフェース手段である。画像処理Ｈ／Ｗ１４は、スキャナ３０から入力された画像データ、ネットワークＩ／Ｆ１８から入力された画像データ、ＵＳＢＩ／Ｆ１９から入力された画像データに対して、所定の画像処理を施す。プロッタＩ／Ｆ１５は、プロッタ４０とのインタフェース手段である。
【００１７】
不揮発性メモリ１６は、ＮＡＮＤフラッシュＲＯＭ、シリアルフラッシュＲＯＭなどからなり、画像形成装置としてのサービスを提供するプログラム（コピーアプリやＦＡＸアプリなどのアプリケーションプログラム）を格納している。ＲＡＭ１７は、不揮発性メモリ１６からロードされたプログラムの作業領域（ワークエリア）などとして使用される主記憶部（メインメモリ）である。マスクＲＯＭ２０は、ブートローダを格納している。
【００１８】
ネットワークＩ／Ｆ１８は、ＬＡＮなどのネットワークとのインタフェース手段である。ＵＳＢＩ／Ｆ１９は、ＵＳＢに対応した不揮発性メモリ（ＵＳＢメモリ）などのＵＳＢデバイスとのインタフェース手段である。
【００１９】
以上の構成を備えた画像形成装置１において、起動時には、ＣＰＵ１１によって、マスクＲＯＭ２０に格納されているブートローダが実行される。ブートローダは、スキャナ３０やプロッタ４０、操作パネル５０を制御し、画像形成装置１としてのサービスを提供するプログラムを不揮発性メモリ１６から読み出し、ＲＡＭ１７にロードする。
【００２０】
ＲＡＭ１７にロードされたプログラムにはエントリーポイントと呼ばれるプログラムの開始点があり、ブートローダはそこにジャンプして、プログラムの実行を開始する。プログラムの初期化コードにより、ソフトウェア内部データや、スキャナ３０やプロッタ４０等のハードウェアが初期化され、初期化が完了すると、画像形成装置１は、コピーや印刷などの指示を受け付けることができるようになる。
【００２１】
ブートローダが不揮発性メモリ１６からＲＡＭ１７にプログラムをロードする際、プログラム全体をロードしてからエントリーポイントにジャンプすると、起動時間が長くなってしまう。そこで、プログラムを部分的にＲＡＭ１７にロードして起動時間を短縮する方法について以降で説明する。
【００２２】
＜コントローラボードの起動処理＞
図２は、図１におけるコントローラボード１０の起動処理を示すフローチャートである。ブートローダは、画像形成装置１の電源が入ると最初に実行される（ステップＳ１０１）。
【００２３】
ブートローダは、ＲＡＭ１７にロードするプログラムのうち、デマンドページング処理を行うのに必要なコード及びデータのみをＲＡＭ１７にロードする（ステップＳ１０２）。
【００２４】
ここで、デマンドページング処理を行うのに必要なコード及びデータとは、プログラムのエントリーポイント（以下、プログラムエントリーポイント）、ページテーブルを初期化するコード（以下、ページテーブル初期化コード）、ベクターテーブル、不揮発性メモリのデバイスドライバ（以下、不揮発性メモリデバイスドライバ）、デマンドページング処理コード、及び割り込み処理コードである。この不揮発性メモリは、コントローラボード１０上の不揮発性メモリ１６（ＮＡＮＤフラッシュＲＯＭ、シリアルフラッシュＲＯＭなど）である。また、ＳＳＤ、ＨＤＤ、ＵＳＢメモリ等も可能である。
【００２５】
図３は、ブートローダがデマンドページング処理に必要なコード及びデータをＲＡＭ１７にロードした時点、即ちステップＳ１０２が終了した時点でのＲＡＭマップを示す図である。
【００２６】
ＲＡＭ１７の先頭部分のＲＡＭ領域１７１にベクターテーブル、プログラムエントリーポイント、ページテーブル初期化コード、不揮発性メモリデバイスドライバ、デマンドページング処理コード、及び割り込み処理コードがロードされている。一方、それ以外のＲＡＭ領域１７２には何もロードされておらず、不定値のままである。
【００２７】
図示のように、ベクターテーブル、プログラムエントリーポイント、ページテーブル初期化コード、不揮発性メモリデバイスドライバ、デマンドページング処理コード、及び割り込み処理コードを、最も低位のアドレスを0x0として連続して配置する。これは、プログラムのビルド時に使用されるリンカースクリプトを適切に記述することによって行うことができる。リンカースクリプトはプログラムのＲＡＭマップを決定する設定ファイルであり、テキストファイルで記述されているので、ソフトウェア開発者が自由にＲＡＭマップのレイアウトを変更することができる。
【００２８】
図２の説明に戻る。ステップＳ１０２でブートローダがデマンドページング処理を行うのに必要なだけのコード及びデータをＲＡＭ１７にロードした後、プログラムエントリーポイントにジャンプし（ステップＳ１０３）、割り込み処理の初期化、ページテーブルの初期化、不揮発性メモリデバイスドライバの初期化を行う（ステップＳ１０４）。これにより、以降の処理でデマンドページング処理が可能になる。
【００２９】
図４は、ページング設定、即ちステップＳ１０４におけるページテーブルの初期化が行われた後のＲＡＭ１７のアクセス属性について説明するための図である。
【００３０】
ページテーブルの初期化により、ＲＡＭ１７全体のアクセス属性が決定する。アクセス属性としては、一般的なＣＰＵでは、書き込みアクセス禁止、読み書きアクセス禁止、アクセス禁止なしを設定することができる。
【００３１】
アクセス属性は、ページ単位で設定することができる。図４においては、斜線を付した部分（以下、斜線部分）１７４を読み書きアクセス禁止属性としている。この斜線部分１７４に読み出しアクセスや書き込みアクセスが発生すると、ページフォールト例外が発生し、これを契機にデマンドページング処理が行われる。
【００３２】
図４において、白抜きの部分（以下、白抜き部分）には、書き込みアクセス禁止属性、もしくはアクセス禁止なし属性を設定する。書き込みアクセス禁止属性を設定した領域は、読み出しアクセスは成功するが、書き込みアクセスをした場合にはページフォールト例外が発生する。アクセス禁止なし属性を設定した領域は、読み出しアクセスも書き込みアクセスも成功する。ここでは、白抜き部分のうち、デマンドページング処理を行うのに必要なだけのコード及びデータをロードした領域１７１は書き込みアクセス禁止属性に、ページテーブルを含むデータ部分１７３はアクセス禁止なし属性を設定すればよい。
【００３３】
図２の説明に戻る。デマンドページング処理を行うために必要な初期化（ステップＳ１０４）を行った後は、通常初期化処理（プログラムの初期化処理）を行う。通常初期化処理を行うためのコード及びデータはまだＲＡＭ１７にロードされていないため、通常初期化処理コードを実行しようとすると（ステップＳ１０５）、ページフォールト例外が発生する（ステップＳ１０６：YES）。
【００３４】
ページフォールト例外を契機として、デマンドページング処理が行われる（ステップＳ１０７）。即ち、プログラムのコード及びデータが格納された不揮発性メモリ１６から必要なコード及びデータを読み出し、ＲＡＭ１７に展開する。このデマンドページング処理は、ＯＳ（オペレーティングシステム）とＭＭＵ１１ａにより実行される。
【００３５】
デマンドページング処理が完了したら、元のプログラムに戻って、通常初期化処理を再開する（ステップＳ１０８：YES→ステップＳ１０５）。この過程を通常初期化処理を全て実行し終わるまで繰り返す（ステップＳ１０８：NO→起動完了）。
【００３６】
通常初期化処理の中には、デマンドページング処理を行わずに済むものもある（ステップＳ１０６：NO）。これは、以前の通常初期化処理によってデマンドページング処理が行われた際に、現在実行中の通常初期化処理のコード及びデータがついでに読み込まれたケースである。
【００３７】
図５は、デマンドページング処理により初期化コード及びデータがロードされていく様子について説明するための図である。
【００３８】
ＲＡＭアクセス属性がアクセス禁止属性に設定されている斜線部分１７４内の領域に対して、コード実行もしくはデータアクセスが行われると、デマンドページング処理が行われる。この結果、その領域は書き込みアクセス禁止属性（コードの場合）、もしくはアクセス禁止なし属性（データの場合）が設定される。
【００３９】
図５において、白抜き部分の領域１７５及び１７６が、初期化コードがロードされた領域を表し、白抜き部分の領域１７７及び１７８が、初期化データがロードされた領域を表す。デマンドページング処理により、初期化コード及び初期化データのロードが進むにつれて、白抜き部分が増えていく。
【００４０】
＜低優先度タスクの読み出しによる起動の高速化＞
図６は、低優先度タスクがＲＡＭに読み出しアクセスを行うことによって起動をより高速化する手法について説明するための図である。
【００４１】
初期化処理の最中に、低優先度タスク（優先度の低いタスク）２００を１つ生成し、実行する。この低優先度タスク２００は、ＲＡＭ１７に対して、ページ単位で読み出しアクセスする役割を持つ。読み出しアクセスの範囲は、デマンドページング処理に必要なコード及びデータが配置されている領域１７１の直後のアドレスから、ＲＡＭ１７の終端アドレスまでである。
【００４２】
アクセス単位は１バイトであり、ページ単位で順次読み出しアクセスを行う。ページサイズはＣＰＵに依存する。仮にページサイズを４KBとし、読み出しアクセスを開始するアドレスを0x4000とすると、この低優先度タスク２００は、0x4000,0x5000,0x6000,0x7000…に対して読み出しアクセスを行う。ＲＡＭ１７の終端アドレスまでの読み出しアクセスを完了すると、このタスクは終了する。
【００４３】
このタスクの効果について、以下に述べる。
初期化処理の中には、待ち時間を必要とする処理が行われる可能性がある。例えば、周辺デバイスの初期化を行うコードにおいて、周辺デバイスのステータスが変化することを待つ処理が挙げられる。このような待ち時間には、ＣＰＵは有効な処理を行うことができず、アイドル状態になるだけである。
【００４４】
そこで、この間に、低優先度タスクを動かしておけば、ＲＡＭアドレスに読み出しアクセスを行うことによってデマンドページング処理を引き起こすことができる。これにより、将来のデマンドページング処理を先取りすることができる可能性があり、デマンドページング処理時間の短縮に繋がる。また、このタスクは優先度が低いため、初期化処理が実行されている際には、その初期化処理の実行を邪魔することがない。
【００４５】
このようにＣＰＵがアイドル状態になる時に、少しでもデマンドページング処理を進めることにより、トータルの起動時間を短縮させることができる。
【００４６】
以上詳細に説明したように、本発明の実施形態に係る画像形成装置１によれば、起動時に、不揮発性メモリ１６に格納されているプログラムのコード及びデータのうち、デマンドページング処理を行うのに必要なコード及びデータ（必要最低限のコード及びデータ）だけをＲＡＭ１７にロードすることによって、ロード時間を短縮することができる。
その後、ロードしたプログラムのエントリーポイントにジャンプし、割り込み処理の初期化、ページテーブルの初期化、および不揮発性メモリのデバイスドライバの初期化を行うことによって、デマンドページング処理が可能になる。この後は、デマンドページング処理により、随時必要なコード、データが不揮発性メモリ１６からＲＡＭ１７にロードされる。
このように、デマンドページング処理を行うことができるだけのロード及び初期化を実行しておけば、デマンドページング機能を提供することが出来、その結果、起動高速化を実現することができる。
即ち、ＲＡＭ実行のシステムであっても起動高速化を実現できる。
また、バックグラウンドで低優先度のタスクにより意図的にデマンドページングを引き起こすことによってトータルの起動時間をさらに短縮することができる。
【００４７】
なお、以上説明した実施形態は、本発明を画像形成装置に適用したものであるが、本発明は、例えばデジタルカメラ、スマートフォン、タブレット端末、パーソナルコンピュータ等の電子機器にも適用することができる。
【符号の説明】
【００４８】
１…画像形成装置、１０…コントローラボード、１１…ＣＰＵ、１１ａ…ＭＭＵ、１６…不揮発性メモリ、１７…ＲＡＭ、２０…マスクＲＯＭ、２００…低優先度タスク。
【先行技術文献】
【特許文献】
【００４９】
【特許文献１】特許第４７３２４３２号公報
【図１】
2015022373.tif 000003
【図２】
2015022373.tif 000004
【図３】
2015022373.tif 000005
【図４】
2015022373.tif 000006
【図５】
2015022373.tif 000007
【図６】
2015022373.tif 000008