(57)【要約】【課題】バックアップ電源を使うことなくプログラムの起動時間を短縮化することが可能な「情報処理装置およびプログラム起動方法」を提供する。【解決手段】情報処理装置の電源がオンにされたときに、プログラム実行領域である仮想アドレスをＦｌａｓｈメモリ１３の物理メモリ領域にマップし、プログラムをＦｌａｓｈメモリ１３上で動作させてタスクを起動する。その後、起動したタスクによりプログラムをＲＡＭ１４へロードし、そのロードが完了した時点で、仮想アドレスをＲＡＭ１４の物理メモリ領域にリマップする。これにより、Ｆｌａｓｈメモリ１３に保存されているプログラムが、ＲＡＭ１４へロードされる前にＦｌａｓｈメモリ１３上で起動し、プログラム起動前の段階では時間のかかるメモリ展開が行われないようにする。【選択図】        図２
2008015725.tif 000002
【特許請求の範囲】
【請求項１】
電源のオン時にプログラムを不揮発性メモリから揮発性メモリへロードして実行する情報処理装置において、
上記電源がオンにされたときに、上記プログラムを上記揮発性メモリへロードせずに、上記プログラムを上記不揮発性メモリ上で動作させてタスクを起動し、起動したタスクにより上記プログラムを上記揮発性メモリへロードするプログラムロード手段と、
上記プログラムをメモリ空間の仮想アドレス上で動作させ、上記プログラムの上記揮発性メモリへのロードが完了するまでは上記仮想アドレスを上記不揮発性メモリの物理メモリ領域にマップし、上記プログラムの上記揮発性メモリへのロードが完了した時点で上記仮想アドレスを上記揮発性メモリの物理メモリ領域にリマップするリマップ手段とを備えたことを特徴とする情報処理装置。
【請求項２】
電源のオン時にプログラムを不揮発性メモリから揮発性メモリへロードして実行するように成されるとともに、上記プログラムをメモリ空間の仮想アドレス上で動作させるように成された情報処理装置に用いられるプログラム起動方法であって、
上記情報処理装置の電源がオンにされたときに、上記仮想アドレスを上記不揮発性メモリの物理メモリ領域にマップし、上記プログラムを上記不揮発性メモリ上で動作させてタスクを起動する第１のステップと、
上記第１のステップで起動したタスクにより上記プログラムを上記揮発性メモリへロードする第２のステップと、
上記プログラムの上記揮発性メモリへのロードが完了した時点で、上記仮想アドレスを上記揮発性メモリの物理メモリ領域にリマップする第３のステップとを有することを特徴とするプログラム起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラム起動方法に関し、特に、プログラムを不揮発性メモリから揮発性メモリへロードして実行する情報処理装置および、同装置に用いられるプログラム起動方法に関するものである。
【背景技術】
【０００２】
従来、ナビゲーション装置等の車載機やＰＤＡ（Personal Digital Assistance）のように、ハードディスクを持たない情報処理装置は、不揮発性のＦｌａｓｈメモリを備え、このＦｌａｓｈメモリにＯＳ（Operating System）を含む各種アプリケーションプログラム（以下、単にアプリケーションプログラムと言う）を格納している。この種の情報処理装置では、プログラム実行の応答性能向上のため、アプリケーションプログラムはＦｌａｓｈメモリからアクセス速度がより高速なＲＡＭにコピーされて、ＲＡＭ上で実行されることが多い。
【０００３】
このような情報処理装置は、装置の機能を実現するアプリケーションプログラムの他に、アプリケーションプログラムの起動時に最低限の処理を行うＩＰＬ（initial Program Loader）を持つ構成となっている。このＩＰＬもＦｌａｓｈメモリに保存されていて、ＦｌａｓｈメモリからＲＡＭにコピーされて、ＲＡＭ上で実行される。具体的には、情報処理装置の電源をオンにすると、まずＩＰＬがＲＡＭにロードされて起動する。そして、このＩＰＬの処理によってアプリケーションプログラムがＦｌａｓｈメモリからＲＡＭにロードされ、ＲＡＭ上でアプリケーションプログラムが起動する。
【０００４】
図４は、従来のプログラム起動シーケンスを示す図である。図４に示すように、情報処理装置の電源をオンにすると、ＩＰＬがＦｌａｓｈメモリからＲＡＭにロードされて起動し、ＣＰＵ周りの初期化が行われた後（ステップＳ１０１）、アプリケーションプログラムの正当性がチェックされる（ステップＳ１０２）。ここでプログラムの正当性が確認されると、アプリケーションプログラムがＦｌａｓｈメモリからＲＡＭにロードされる（ステップＳ１０３）。
【０００５】
アプリケーションプログラムのＲＡＭへの展開が終わると、その他の初期化処理が行われ（ステップＳ１０４）、アプリケーションプログラムへの分岐処理が行われる（ステップＳ１０５）。アプリケーションプログラムでは複数のタスクが順次に立ち上がり、それぞれのタスクで所定の処理が実行される。最初に起動するタスクでは、ＲＡＭに展開されたＯＳの初期化が行われた後（ステップＳ１０６）、マルチタスクの動作開始が指示される（ステップＳ１０７）。これに応じて、続く各タスクにおいて初期化が順次行われ（ステップＳ１０８，Ｓ１０９，Ｓ１１０）、アプリケーションプログラムの起動が完了する。
【０００６】
以上のように、アプリケーションプログラムがＦｌａｓｈメモリからＲＡＭにロードされた後は、高速にアクセスが可能なＲＡＭ上でアプリケーションプログラムが実行されるので、プログラム実行のパフォーマンスが向上する。しかしながら、装置を起動する度にアプリケーションプログラムをＲＡＭにロードしなければならないので、起動に時間がかかるという問題があった。近年の情報処理装置は多機能化が進んでおり、今後もプログラムサイズはますます拡大していく方向にある。メモリ展開に要する時間は、アプリケーションプログラムのサイズに依存して長くなるため、起動時間の短縮化は大きな課題となっている。
【０００７】
なお、起動時にＲＡＭにプログラムがロード済みであるか否かをチェックし、ロード済みであれば、そのプログラムがＲＡＭ上で正常に起動できるか否かをチェックし、正常であれば当該プログラムを実行することにより、起動時におけるプログラムのロード処理を省略して起動時間の短縮化を図った情報処理装置が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００３−１３１８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１に記載の従来技術では、揮発性のＲＡＭにプログラムを保存しておくために、情報処理装置のメイン電源がオフにされてもＲＡＭへの電力供給が停止しないように、バックアップ電源を使う必要がある。そのため、バックアップ電源を持たない情報処理装置の場合は、特許文献１に記載の技術を使って起動時間の高速化を図ることはできない。また、バックアップ電源を有する情報処理装置であっても、電源の消費電力が多くなってしまうという問題があった。
【０００９】
本発明は、このような問題を解決するために成されたものであり、バックアップ電源を使うことなく、装置の電源オン時におけるプログラム起動時間を短縮化できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
上記した課題を解決するために、本発明では、情報処理装置の電源がオンにされたときに、プログラム実行領域である仮想アドレスを不揮発性メモリの物理メモリ領域にマップし、プログラムを不揮発性メモリ上で動作させてタスクを起動する。そして、起動したタスクによりプログラムを揮発性メモリへロードし、そのロードが完了した時点で、仮想アドレスを揮発性メモリの物理メモリ領域にリマップするようにしている。
【発明の効果】
【００１１】
上記のように構成した本発明によれば、情報処理装置の電源がオンにされたときに、不揮発性メモリに保存されているプログラムが、揮発性メモリへロードされる前に不揮発性メモリ上で起動するので、従来はプログラム起動の前に行われていたメモリ展開の処理をプログラム起動前の段階では省略することができ、プログラムが起動するまでの時間を短縮することができる。また、プログラムの起動後には、不揮発性メモリから揮発性メモリに対するプログラムのロードがプログラム自身のタスクとして行われる。そして、ロードが完了した時点で、当該プログラムの実行領域である仮想アドレスが不揮発性メモリの物理メモリ領域から揮発性メモリの物理メモリ領域にリマップされることで、プログラムは何も意識することなく揮発性メモリ上での動作に切り替わる。これにより、プログラムの起動後におけるプログラム実行の応答速度性能も確保することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態による情報処理装置のハードウェア構成例を示すブロック図である。図１に示すように、本実施形態の情報処理装置は、ＣＰＵ１１と、このＣＰＵ１１にシステムバス１０を介して接続されたキーインタフェース１２、Ｆｌａｓｈメモリ１３、ＲＡＭ１４およびＬＣＤ（Liquid Crystal Display）等の表示装置１５と、キーインタフェース１２に接続された、電源をオンにするための電源キー１６とを備えている。
【００１３】
Ｆｌａｓｈメモリ１３は、本発明の不揮発性メモリに相当するものであり、アプリケーションプログラムやＩＰＬ等のローダプログラムがあらかじめ記憶されている他、ユーザにより作成されたデータや追加されたプログラムなどが適宜記憶される。このＦｌａｓｈメモリ１３に記憶されたプログラムやデータは、ＲＡＭ１４にロードされて使用される。
【００１４】
ＲＡＭ１４は、本発明の揮発性メモリに相当するものであり、Ｆｌａｓｈメモリ１３からロードされるアプリケーションプログラムやローダプログラム、ユーザデータなどが記憶される。また、このＲＡＭ１４には、アプリケーションプログラムのチェックサム値やロード完了フラグなどが記憶される。ロード完了フラグはアプリケーションプログラムのロードが完了したか否かを示すものである。
【００１５】
ＣＰＵ１１は、本装置全体の制御を行うものであり、プログラムを読み込むことによって、そのプログラムに記述された手順に従って所定の処理を実行する。ＣＰＵ１１は、その機能構成として、本発明のプログラムロード手段とリマップ手段とを備えている。リマップ手段は、ＣＰＵ１１のメモリ空間において、あるアドレスの空間を、仮想的に選択された物理メモリ領域として見せることができるようにしたものである。仮想アドレスに見せることができる物理メモリ領域は複数持つことができ、プログラムで切り替えることにより、複数の物理メモリ領域を仮想アドレスに見せることができる。なお、このリマップ機能自体は公知の技術を利用することが可能である。
【００１６】
本実施形態では、このリマップ機能を利用して、アプリケーションプログラムをメモリ空間の仮想アドレス上で動作させる。プログラム起動時は仮想アドレスをＦｌａｓｈメモリ１３の物理メモリ領域にマップすることで、Ｆｌａｓｈメモリ１３上でアプリケーションプログラムを実行する。そして、アプリケーションプログラムの初期化処理中に、Ｆｌａｓｈメモリ１３からＲＡＭ１４へアプリケーションプログラムを動的にロードする。
【００１７】
すなわち、情報処理装置の電源がオンにされたときに、アプリケーションプログラムをＲＡＭ１４へロードせずに、アプリケーションプログラムをＦｌａｓｈメモリ１３上で動作させてタスクを起動する。そして、起動したタスクによってアプリケーションプログラムをＲＡＭ１４へロードする。このアプリケーションプログラムのロードが完了するまでは、仮想アドレスはＦｌａｓｈメモリ１３の物理メモリ領域にマッピングしたままである。
【００１８】
その後、アプリケーションプログラムのＲＡＭ１４へのロードが完了した時点で、仮想アドレスをＲＡＭ１４の物理メモリ領域にリマップする。これにより、アプリケーションプログラムは何も意識することなく、ＲＡＭ１４上での実行に切り替わる。図３は、リマップ手段によるアプリケーションプログラムの実行メモリの遷移状態を示す図である。なお、図３において、Ｂａｎｋ０は仮想アドレス、Ｂａｎｋ２４はＦｌａｓｈメモリ１３の物理メモリ領域、Ｂａｎｋ２５はＲＡＭ１４の物理メモリ領域である。
【００１９】
図３に示すように、プログラム起動時には、仮想アドレス（Ｂａｎｋ０）がＦｌａｓｈメモリ１３の物理メモリ領域（Ｂａｎｋ２４）にマッピングされている。これにより、仮想アドレスのプログラム実行領域には、Ｆｌａｓｈメモリ１３のプログラム格納領域が見えている。このため、仮想アドレス上において、Ｆｌａｓｈメモリ１３のプログラム格納領域に格納されているアプリケーションプログラムを実行することが可能となる。
【００２０】
アプリケーションプログラムをＦｌａｓｈメモリ１３からＲＡＭ１４へ展開しているときも、仮想アドレス（Ｂａｎｋ０）がＦｌａｓｈメモリ１３の物理メモリ領域（Ｂａｎｋ２４）にマッピングされたままになっている。これにより、仮想アドレスのプログラム実行領域には、依然としてＦｌａｓｈメモリ１３のプログラム格納領域が見えている。このため、アプリケーションプログラムをＦｌａｓｈメモリ１３からＲＡＭ１４へとロードしながら、当該アプリケーションプログラムを仮想アドレス上において実行することが可能となる。
【００２１】
その後、アプリケーションプログラムのＲＡＭ１４へのロードが完了した時点で、仮想アドレス（Ｂａｎｋ０）がＲＡＭ１４の物理メモリ領域（Ｂａｎｋ２５）にリマップされる。これにより、仮想アドレスのプログラム実行領域には、ＲＡＭ１４のプログラム格納領域が見えるように切り替わる。このため、仮想アドレス上において、ＲＡＭ１４のプログラム格納領域に展開されたアプリケーションプログラムを実行することが可能となる。このとき、同じ仮想アドレス上でアプリケーションプログラムが実行されるので、アプリケーションプログラムは何も意識することなく、Ｆｌａｓｈメモリ１３上での実行からＲＡＭ１４上での実行に切り替わる。
【００２２】
図２は、本実施形態の情報処理装置によって実現されるプログラム起動シーケンスの例を示す図である。図２に示すように、情報処理装置の電源をオンにすると、ＩＰＬがＦｌａｓｈメモリ１３からＲＡＭ１４にロードされて起動し、ＣＰＵ１１周りの初期化を行った後（ステップＳ１）、アプリケーションプログラムの正当性をチェックする（ステップＳ２）。
【００２３】
ここでプログラムの正当性が確認されると、アプリケーションプログラムをＲＡＭ１４に展開せずにその他の初期化処理を行った後（ステップＳ３）、アプリケーションプログラムが格納されているＦｌａｓｈメモリ１３上のアドレスに分岐する（ステップＳ４）。このとき、ＣＰＵ１１の仮想アドレスはＦｌａｓｈメモリ１３の物理メモリ領域にマッピングされており、アプリケーションプログラムはＦｌａｓｈメモリ１３上で動作するようになっている。
【００２４】
アプリケーションプログラムでは複数のタスクが順次に立ち上がり、それぞれのタスクで所定の処理が実行される。最初に起動するタスクでは、Ｆｌａｓｈメモリ１３に格納されているＯＳの初期化を行った後（ステップＳ５）、マルチタスクの動作開始を指示する（ステップＳ６）。これに応じて、続く各タスクにおいて初期化が順次行われ（ステップＳ７，Ｓ８，Ｓ９）、アプリケーションプログラムの起動が完了する。
【００２５】
マルチタスク動作の開始によって最初に立ち上がったタスクでは、初期化の終了後に、アプリケーションプログラムをＦｌａｓｈメモリ１３からＲＡＭ１４にロードするメモリ展開処理を行う（ステップＳ１０）。続いて立ち上がる各タスクの初期化処理は、このメモリ展開処理と並行して行われ、最終的にアプリケーションのメインタスクが起動する。メモリ展開を行っているタスクでは、Ｆｌａｓｈメモリ１３からＲＡＭ１４へのロードが完了した時点でメモリのリマップ処理を行い、アプリケーションプログラムをＲＡＭ１４上での動作に切り替える（ステップＳ１１）。これ以降、アプリケーションプログラムはＲＡＭ１４上で通常動作を開始する。
【００２６】
上述のように、ステップＳ１１でリマップ処理が完了するまでは、アプリケーションプログラムはＦｌａｓｈメモリ１３上で動作している。この間のＣＰＵ１１のプログラム実行応答性能は、ＲＡＭ１４上で実行する場合と比較するとやや劣る。しかし、アプリケーションの初期化処理中であるため、実際の機能を実行するピーク時の性能は要求されない。メモリのリマップ処理が完了すると、アプリケーションプログラムはＲＡＭ１４上で実行されることになる。これ以降、全ての処理はＲＡＭ１４上で実行されるため、プログラム実行の応答性能も充分に向上させることができる。
【００２７】
以上詳しく説明したように、本実施形態によれば、装置の電源がオンとされたときに、アプリケーションプログラムをＦｌａｓｈメモリ１３上で実行することで、アプリケーションプログラムをＲＡＭ１４に展開するタイミングをできるだけ遅らせ、アプリケーションプログラムのメインタスクの起動（初期化完了）までの時間を短縮することができる。また、装置の電源オフ後にアプリケーションプログラムをＲＡＭ１４上に保存しておく必要もないので、バックアップ電源を使うことなく、プログラム起動時間を短縮化することができる。また、メモリ展開後はアプリケーションプログラムをＲＡＭ１４上で実行することにより、アプリケーションプログラムの機能を実際に使用する処理ピーク時において、プログラム実行の応答速度性能を確保することもできる。
【００２８】
なお、上記実施形態では、不揮発性メモリの例としてＦｌａｓｈメモリ１３、揮発性メモリの例としてＲＡＭ１４を挙げたが、これに限定されない。
また、上記実施形態では、マルチタスク動作の開始によって最初に立ち上がったタスクにおいてメモリ展開処理を行う例について説明したが、２番目以降のタスクにおいてメモリ展開処理を行うようにしても良い。ただし、プログラムの起動後にできるだけ早くＲＡＭ１４へのリマップを行うために、最初に立ち上がったタスクにおいてメモリ展開処理を行うのが好ましい。また、最初に立ち上げるタスクをメモリ展開専用のタスクとしても良い。
【００２９】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００３０】
【図１】本実施形態による情報処理装置のハードウェア構成例を示すブロック図である。
【図２】本実施形態の情報処理装置によって実現されるプログラム起動シーケンスの例を示す図である。
【図３】本実施形態によるプログラムの実行メモリの遷移（メモリのリマップ機能）について説明するための図である。
【図４】従来のプログラム起動シーケンスを示す図である。
【符号の説明】
【００３１】
１１  ＣＰＵ
１３  Ｆｌａｓｈメモリ
１４  ＲＡＭ
【図１】
2008015725.tif 000003
【図２】
2008015725.tif 000004
【図３】
2008015725.tif 000005
【図４】
2008015725.tif 000006