JP5506418B2 - プログラム、制御方法、並びに制御装置 - Google Patents

プログラム、制御方法、並びに制御装置 Download PDF

Info

Publication number
JP5506418B2
JP5506418B2 JP2010006930A JP2010006930A JP5506418B2 JP 5506418 B2 JP5506418 B2 JP 5506418B2 JP 2010006930 A JP2010006930 A JP 2010006930A JP 2010006930 A JP2010006930 A JP 2010006930A JP 5506418 B2 JP5506418 B2 JP 5506418B2
Authority
JP
Japan
Prior art keywords
page
flag
software
read
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010006930A
Other languages
English (en)
Other versions
JP2011145933A (ja
Inventor
健一 橋本
友裕 増渕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ubiquitous Corp
Original Assignee
Ubiquitous Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ubiquitous Corp filed Critical Ubiquitous Corp
Priority to JP2010006930A priority Critical patent/JP5506418B2/ja
Priority to PCT/JP2010/053630 priority patent/WO2011086710A1/ja
Publication of JP2011145933A publication Critical patent/JP2011145933A/ja
Application granted granted Critical
Publication of JP5506418B2 publication Critical patent/JP5506418B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Description

本発明はプログラム、制御方法、並びに制御装置に関し、特に、ソフトウェアの起動を制御するときに好適なプログラム、制御方法、並びに制御装置に関する。
パーソナルコンピュータにおいて、OS(Operating System)を起動させ、所望のソフトウェアを動作させるまでには数分単位の起動時間が必要であった。これを高速に起動させる手法として、ハイバネーション(hibernation)と呼ばれる手法が存在する(例えば、特許文献1参照)。
特許文献1には、起動後のCPU(central processing unit)やI/O(input/output)レジスタ、RAM(Random Access Memory)イメージが、ハードディスクドライブ(HDD)やフラッシュメモリに格納されることが記載されている。そして、次に起動されるときに、格納されているRAMイメージが復帰され、その後、CPUやI/Oレジスタが再設定されることが記載されている。このように起動することで、OSの起動を高速化させることが、特許文献1では提案されている。このような提案に基づくハイバネーションと称される手法は、既にパーソナルコンピュータで適用されている。
また、組み込み型のコンピュータ、例えば、テレビジョン受像器、ハードディスクレコーダといった電子機器に組み込まれているコンピュータにおいても、ハイバネーションの手法が応用されている。
特開2005−149225号公報 特開2007−334383号公報
ハイバネーションを適用し、OSを起動させる場合とOSを通常通りに起動させる場合とを比較した場合、ハイバネーションを適用してOSを起動させる方が、より高速に起動させることができる。しかしながら、RAMの容量増加に伴って保存すべきRAMイメージのサイズも増加してしまい、起動時に、そのRAMイメージの展開時間も増加してしまう。結果として、RAMの大容量化に伴い高速起動が困難になってしまう。
また、パーソナルコンピュータは、CPUの性能も比較的高いため、仮にRAMイメージのサイズが増加してしまっても、そのRAMイメージを処理する性能が確保される。しかしながら、組み込み型のコンピュータの場合、CPUの性能が比較的低いものが使われることが多い。そのため、組み込み型のコンピュータの場合、RAMイメージが増加すれば、ハイバネーションの手法を適用しても、起動時の速度は低下してしまう。すなわち、組み込み型のコンピュータの場合、RAMイメージの増加による速度の低下は、より顕著に表れてしまう。
また、RAMイメージを圧縮することで、RAMイメージのサイズを小さくすることも提案されているが、起動時に伸張する処理が必要となる。この伸張処理にかかるCPUへの負荷や、伸張処理にかかる時間を考慮すると、起動の高速化という点では効果的な方法ではない。
このようなことを考慮し、特許文献2では、ハイバネーションのイメージの全ての転送を完了する前に、OSの実行を開始する手法が提案されている。しかしながら、この手法では、特別なハードウエアを搭載し、先行転送するページを予め特定しておく必要があるため、その特別なハードウエアの分だけコストが高くなるなどの問題点があった。
本発明は、このような状況に鑑みてなされたものであり、起動時間を短縮することができるようにするものである。
本発明の一側面のプログラムは、メモリを管理する機能を有する制御装置に、所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換え、前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出すステップを含み、該当する前記ページを起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記ページが動的ロードされたかどうかを表す読み込み済フラグと、起動後の任意の時点での前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶し、記憶されているイメージ内にあるページディスクリプタを書き換えることで先行読み込みの対象となる前記ページでページフォルトを発生させないように制御する。
前記所定のソフトウェアが起動された後、前記ページテーブルエントリを書き換え、その起動時のデータ、プログラムコード、テーブル、ページフォルトハンドラ、割り込みベクタ、およびレジスタを、前記メモリに記憶させるようにすることができる。
前記メモリのうち、書き換えの対象となる前記ページテーブルエントリと前記読み込み済フラグを記憶しているのはRAMであり、順次読み出される前記ページと前記先行読み込みフラグを記憶しているのは不揮発メモリであるようにすることができる。
組み込み型のコンピュータが読み込むようにすることができる。
本発明の一側面の制御方法は、メモリを管理する機能を有する制御装置の制御方法において、所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換え、前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出すステップを含み、該当する前記ページを起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記ページが動的ロードされたかどうかを表す読み込み済フラグと、起動後の任意の時点での前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶し、記憶されているイメージ内にあるページディスクリプタを書き換えることで先行読み込みの対象となる前記ページでページフォルトを発生させないように制御する。
本発明の一側面の制御装置は、メモリを管理する機能を有する制御装置において、所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換える書き換え手段と、前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出す読み出し手段とを備え、該当する前記ページを起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記ページが動的ロードされたかどうかを表す読み込み済フラグと、起動後の任意の時点での前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶し、記憶されているイメージ内にあるページディスクリプタを書き換えることで先行読み込みの対象となる前記ページでページフォルトを発生させないように制御する。
本発明の一側面のプログラム、制御方法、並びに制御装置は、所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリが書き換えられ、ソフトウェアが起動時に、ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページが順次読みだされる。また該当するページを起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当するページが動的ロードされたかどうかを表す読み込み済フラグが備えられ、起動後の任意の時点での読み込み済みフラグの状態が、先行読み込みフラグとして記憶され、記憶されているイメージ内にあるページディスクリプタが書き換えられる。
本発明の一側面によれば、OSの起動時間を短縮することが可能となる。
本発明を適用した情報処理装置の一実施の形態の構成を示す図である。 MMUのモデルを示す図である。 ディスクリプタについて説明するための図である。 物理ページの読み込みについて説明するための図である。 物理ページの読み込みについて説明するための図である。 物理メモリマップについて説明するための図である。 先行読み込みフラグについて説明するための図である。 読み込み済フラグについて説明するための図である。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。 起動の処理について説明するためのフローチャートである。
以下に、本発明の実施の形態について図面を参照して説明する。
まず、本発明の概略を説明する。本発明は、Memory Management Unit(以下、MMUと略記する)を搭載したCPU(central processing unit)上で動作するOS(Operating System)やアプリケーション等のソフトウェアを高速に起動させるための手法である。
高速起動の対象となるソフトウェアが、一度、通常通りの方法で起動され、その状態のRAM(Random Access Memory)イメージが不揮発メモリ等に保存される。RAMイメージが、不揮発メモリ等に保存されるとき、MMUのテーブルが書き換えられ、全てのページでページフォルトが発生するように変更される。対象とされるソフトウェアには、ページフォルトハンドラが用意されており、ページフォルトが発生した場合、そのページフォルトが発生したページのみが、不揮発メモリからロードされる。
任意のソフトウェアが起動され、プログラムコードが実行されたり、そのソフトウェアが動作に必要なデータを読み出すために、RAMにアクセスしたりした場合、毎回ページフォルトが発生し、必要なページが不揮発メモリからRAMに逐次ロードされることになる。これにより、従来のハイバネーション起動とは異なり、全てのRAMイメージを不揮発メモリからメインRAMに予めロードする必要が無くなり、動作に必要な必要最小限のRAMイメージのみをロードすることが可能になる。よって、高速に所望のソフトウェアを起動・動作させることが可能となる。
しかしながら、このような処理だけで高速起動を実現すると、厳密にはページアクセス時にページフォルトが発生して動的にページを読み込む処理が発生するため、状況によってはその読み込みによるオーバーヘッドによって動作が遅くなる可能性もある。
例えば、RAMイメージから起動したときの処理を考えると、まずハードウェアの初期化や、保存した状態を復元するなどの初期化処理を行い、その後にユーザが操作できる状態となる。これらの初期化処理の間にもメモリアクセスにより動的にメモリイメージがロードされる。
しかしながら、これらの初期化処理はRAMイメージから起動する際に必ず実行される処理であり、必ず動的ロードが行われる部分であるため、起動時に先行してまとめて読み込んでおいたほうがページフォルトのオーバーヘッドが無くなり、起動時間を短縮することができる。そこで、起動後に動的ロードしたページを記憶し、任意の時点でのロード済み情報を元に次回起動時に該当ページの先行読み込みを行うことで、さらなる起動時間の短縮を実現するようにする。
本発明を使用することで、従来は数十秒〜数分を要していたOSやソフトウエア(以下、単にソフトウェアとする)の起動時間を数秒程度に短縮することが可能となることが、本出願人により確認されている。以下に、具体的に説明する。
[情報処理装置の構成について]
図1は、本発明を適用した情報処理装置の一実施の形態の構成を示す図である。本発明を適用した情報処理装置は、パーソナルコンピュータ(PC)に適用できることは勿論のこと、組み込み型のコンピュータを有する装置にも適用できる。組み込み型のコンピュータを含む装置としては、テレビジョン受像器、ハードディスクレコーダといった電子機器がある。ここでは、ハードディスクレコーダに対して本発明を適用したときを例にあげて説明する。
図1は、本発明を適用した情報処理装置としてのハードディスクレコーダの構成を示す図である。図に示したハードディスクレコーダ100は、CPU101、RAM102、ROM(Read Only Memory)103、不揮発メモリ104、MPEG(Moving Picture Experts Group)エンコード・デコード部105、チューナ106、HDDインターフェース107、HDD108、I/O部109、起動モード切替部110を備える。
CPU101は、ハードディスクレコーダ100の各部を制御する。このCPU101は、Memory Management Unit(以下、MMUと記述する)を搭載し、RAM102を小分割して小単位(ページ)で管理できる仕組みを有している。なお、ここでは、MMU131がCPU101に含まれるとして説明を続けるが、MMU131が、CPU101に含まれず、外部に備えられている構成とすることも可能である。また、MMU131の形式には特に制限はないが、ページ単位にアクセスの許可・禁止の属性が設定可能で、アクセス禁止のページにアクセスした場合は、ページフォルトの例外が発生できる構成とされている。また、CPU101のMMU131は、4キロバイト(以下、4KBと記述する)を1ページとして管理するとして説明を続ける。
RAM102は、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などで構成することが可能である。RAM102は、CPU101が使用する主記憶装置として機能し、そのような機能を有していれば、RAM102として用いることが可能である。
ROM103は、FLASH ROMやMask ROMなどの読み込み専用のメモリである。ROM103は、OSやアプリケーションソフトウェアが格納され、そのような格納が行えれば、どのような種類のROMが用いられても本発明においては良い。
不揮発メモリ104は、ハードディスクレコーダ100の電源が切られても、記憶している内容が保持されるメモリである。例えば、FLASH ROMや、バックアップ機能付きのSRAM、DRAMなどで構成することが可能である。
不揮発メモリ104には、後述するソフトウェアが起動した後に、RAM102に格納されたソフトウェアのメモリイメージが格納される。そのため、不揮発メモリ104の容量は、RAM102の容量以上の容量とされることが好ましい。ただし、データ圧縮等によりデータを縮小するようにした場合、不揮発メモリ104の容量は、RAM102の容量以下の容量でも良い。また、不揮発メモリ104は、HDD108と兼用することも可能である(HDD108を不揮発メモリ108として利用することも可能である)。
MPEGエンコード・デコード部105は、動画の圧縮・伸張を行う。動画は、チューナ106を介して供給される。チューナ106は、ユーザの指示に基づき、複数の番組(動画)から、1つの動画を選択し、MPEGエンコード・デコード部105に供給する。MPEGエンコード・デコード部105は、必要に応じ、HDDインターフェース107を介して、HDD108にチューナ106からのデータを供給したり、HDD108からのデータをHDDインターフェース107を介して、受信したりする。また、その際、必要に応じ、エンコードまたはデコードの処理を実行する。
I/O部109は、起動モード切替部110の状態をCPU101が読みとるために設けられている。以下に説明するソフトウェアは、高速起動イメージを取得するための通常起動モードと、高速起動イメージが取得された後の起動モードとしての高速起動モードを有する。I/O109と起動モード切替部110は、これらの起動モードの切り替えに用いられる。通常起動モードと高速起動モードの切り換えのために、起動モード切替部110をスイッチで構成することが可能である。また、通常起動モードと高速起動モードの切り換えのために、起動モード切替部110を、ブートローダ等からコマンドで切り替える構成とすることも可能である。
また、一度高速起動のイメージが作成されれば、通常起動モードを不要とすることができるため、高速起動モードのみが実装され、通常起動モードと高速起動モードの切り換えを不要とする構成としても良い。そのような構成とした場合、I/O部109と起動モード切替部110を省略した構成とすることも可能である。
[MMUについて]
図2は、CPU101が装備するMMU131のモデルを示す図である。図2に示したMMU131は、32bitクラス以上のCPU101が装備するモデルである。MMU131の構成や、物理アドレス、仮想アドレス、各テーブルのインデックスに使用するbit数、テーブルの段数等は、CPU101のメーカに依存するものであるが、特にメーカのアーキテクチャに依存はしない。ここでは説明の都合上、32bit等の具体的な数字を例にあげて説明するが、その数値は、本発明の適用範囲の限定を示すものではない。
MMU131は、最終的な物理ページを指し示すテーブル内エントリの属性にアクセス許可もしくはアクセス許可相当の機能を実装し、不許可の場合にアクセスしたときには、ページフォルトもしくはページフォルト相当の例外処理が発生できる機能を少なくとも有する。
MMUレジスタ200は、MMU131に装備されるレジスタである。このレジスタにレベル1ディスクリプタテーブル201の先頭アドレスが代入される。レベル1ディスクリプタテーブル201は、メモリ上に置かれたレベル1メモリテーブルである。物理アドレス空間が32bitの場合、1つのアドレスを指し示すのに32bit、即ち4バイトが使用されるため、レベル1ディスクリプタテーブル201のサイズは、12bit空間=4KB空間×4バイトで16KBのサイズとなる。
仮想アドレス202は、レベル1メモリテーブルのインデックスとして使われる仮想アドレスの31bitから20bitを示す。VAはVirtual Address(仮想アドレス)を意味する。所定の仮想アドレスにアクセスがあった場合、レベル1ディスクリプタテーブル201の先頭アドレスから仮想アドレスの31bitから20bitがインデックスとされ、レベル1ディスクリプタ203にアクセスがされる。
物理アドレス空間が32bitのCPU101である場合、1つのアドレスを示すのに32bit、即ち4バイトが使用されるため、レベル1ディスクディスクリプタのアドレスは以下のような式になる。
レベル1ディスクリプタ203のアドレス
= レベル1ディスクリプタテーブル201の先頭アドレス
+ 仮想アドレス202(VA[31:20]) ×4
レベル1ディスクリプタ203は、レベル2ディスクリプタテーブル204の先頭アドレスを指し示すポインタや属性から構成されるディスクリプタである。レベル2ディスクリプタテーブル204の先頭アドレスから仮想アドレスの19bitから12bitがインデックスとされ、レベル2ディスクリプタ206にアクセスされる。
物理アドレス空間が32bitのCPU101である場合、1つのアドレスを示すのに32bit、即ち4バイトが使用されるため、レベル2ディスクディスクリプタのアドレスは以下のような式になる。
レベル2ディスクリプタ206のアドレス
= レベル2ディスクリプタテーブル204の先頭アドレス
+ 仮想アドレス205(VA[19:12]) ×4
レベル2ディスクリプタ206は、4KBの物理ページ207を示すポインタや属性から構成されるディスクリプタである。物理ページ207は、最終的に仮想アドレスから物理アドレスに変換された1ページの物理メモリである。物理ページ207の4KB内のアドレスは、仮想アドレス208(VA[11:0])で指定される。
図3は、レベル1ディスクリプタ203やレベル2ディスクリプタ206の一例である。図3におけるディスクリプタはあくまでも一例であり、本発明は、このような一例で示した特定のCPU101やアーキテクチャに依存することを示すものではない。
ベースアドレス301は、次のテーブルや物理ページの先頭アドレスを指すポインタである。属性302乃至304は、それぞれ、実行可・不可、特権モード・ユーザモードといった属性を示す属性bitである。アクセス許可bit305は、このディスクリプタが示す物理ページに対してのアクセスが許可されているか否かを示すbitである。このアクセス許可bit305で、アクセスを禁止するように設定されている物理ページにアクセスがあった場合、一般的には、ページフォルトと呼ばれる例外処理、即ち割込み処理が実行され、そのような機構が必要である。よって、CPU101のアーキテクチャに依存はしないが、ページフォルト、もしくはページフォルト相当の機能は、CPU101に装備されている必要がある。
[物理ページについて]
図4は、物理ページ207が、RAM102(図1)上に並んでいる状態を擬似的に示している。RAM102には、1ページ分の物理ページ207が、物理ページ207−0から順に、物理ページ207−nまで配列されている。MMU131搭載のCPU101上でソフトウェアが動作される場合、1ページの物理ページ207は、このように4KB乃至64KB単位で1ページとして管理されるように構成されていることが多い。
図5は、ソフトウェアが所定の動作状態であるときの物理ページの使用状況について説明するための図である。図5中、数字が記載されているページが使用されているページであり、数字が記載されていないページは使用されていないページを示す。ソフトウェアが使うプログラムコードやデータが、図4に示したように、全ての領域を使っていたとしても、ソフトウェアの状態をある単位時間でみた場合、図5で示すように使われていることが多い。すなわち、使用されているページと使用されていないページとがあり、全てのページが使用されているわけではない。
このソフトウェアが、所定の動作状態のときには、物理ページ207−0、物理ページ207−2、物理ページ207−4、物理ページ207−5、物理ページ207−9、物理ページ207−16、および物理ページ207−18が使用される。すなわち、図4に示したように、RAM102には、1ページ分の物理ページ207が、物理ページ207−0から順に、物理ページ207−nまで配列されているが、そのうち所定のソフトウェアが、所定の動作状態のときには、全てのページが使われるわけではなく、図5に示したように、複数のページのみが使用される。
従来のハイバネーション起動による起動の場合、ソフトウェアが動作する前に、図4に示したように、物理ページ207−0から物理ページ207−nまで、順次読み出しが行われてから復帰動作が始まり、所定の動作状態にされる。しかしながら実際に、そのソフトウェアが所定の動作状態になるためには、図5に示したように、所定の複数の物理ページ207が読み出されるだけでよい。そこで、本発明においては、後述するように読み出しを制御することで、図5に示したように、必要とされる物理ページ207のみが読み出されるようにする。
従来のハイバネーション起動による起動の場合、図4に示したように物理ページ207−0から順次読み出しが行われるため、換言すれば、必要のない物理ページ207も読み出されるため、読み出しに時間がかかり、結果として、所定のソフトウェア(OSなども含む)の起動が遅くなるということがあった。しかしながら、本発明によれば、図5に示したように、必要とされる物理ページ207のみが読み出されるため、読み出しにかかる時間を短縮することができ、所定のソフトウェア(OSなども含む)の起動を早くすることが可能となる。
さらに、起動後に動的にロードした物理ページ207を記憶し(後述する学習機能による処理で記憶し)、任意の時点でのロード済情報を元に、次回の起動時に該当する物理ページ207を先行読み込みすることで、さらなる起動時間の短縮を可能とする。
図6は、ソフトウェアの物理メモリマップを示す図である。なお、以下に説明する処理は、CPU101やOSに依存するもので、これらの機能が実装されていれば構成やメモリ配置に制限はなく、以下の説明だけに、本発明が適用されることを示すものではない。
不揮発メモリ104は、電源を切っても記憶内容が保持されるメモリである。図6に示した例では、不揮発メモリ104としてFLASH ROMをイメージしている。不揮発メモリ104は、メインメモリ上にマッピングされているが、電源を切っても内容が保持され、且つ、RAM102以上の容量を装備している。しかしながら、本発明を適用できる不揮発メモリ104は、I/O経由でのアクセス等、必ずしもメモリマップ上にマッピングされている必要はなく、そのアーキテクチャに制限はない。
データ401は、プログラムコード402が使用する読み書きができるデータ領域である。データ401は物理ページ207として、ある特定の大きさに分割されて格納される。データ401は、読み書きできる必要があるのでRAM102上に置かれることが好ましい。
プログラムコード402は、起動・実行させる所望のプログラムを示す。一般的なパーソナルコンピュータでWindows(登録商標)やLinuxと言ったOSが搭載され、その上で動作するソフトウェアである場合、プログラムとは、そのOSとソフトウェアを含む。プログラムコード402は、物理ページ207として、ある特定の大きさに分割されて格納される。このプログラムコード402は、RAM102またはROM103上に置かれる。
MMUテーブル403は、図2に示したレベル1ディスクリプタテーブル201およびレベル2ディスクリプタテーブル204を示している。ページフォルトハンドラ404は、MMU131のレベル2ディスクリプタ206がアクセス禁止の属性であり、ページフォルトが発生したとき、割込ベクタ経由で例外処理を行うためのプログラムである。ここではプログラムコード402と分けて、ページフォルトハンドラ404を記述しているが、プログラムコード402に含まれる場合もある。
割込ベクタ405は、一般的なCPUが持つ割込ベクタである。ページフォルトが発生した場合、この割込ベクタ内のページフォルトにプログラムコードがジャンプし、結果的にページフォルトハンドラ404が呼び出される。
データ401、プログラムコード402、MMUテーブル403、および割込ベクタ405の論理アドレスに対する物理アドレスは、任意のアドレスにマッピングできる。
イメージ保存プログラム406は、所望のプログラムが起動された後、所望の状態でメモリイメージが不揮発メモリ104に保存されるようにするためのプログラムである。イメージ保存プログラム406の論理アドレスと物理アドレスは、同一アドレスにマッピングされる必要がある。
イメージ復帰プログラム407は、イメージ保存プログラム406の処理により保存された物理メモリイメージを、必要に応じて物理ページ単位に、データ401やプログラムコード402を、対応する物理ページに、不揮発メモリ104から読み込み、復帰させるためのプログラムである。イメージ復帰プログラム407の論理アドレスと物理アドレスは、同一アドレスにマッピングされる必要がある。
ブートローダ408は、電源投入もしくはリセット後に最初に起動されるブートローダである。主にブートローダ408は、起動に必要な最低限のI/Oの初期化を行う。このような構成をソフトウェアは有する。
[先行読み込みフラグについて]図7は先行読み込みフラグテーブル501を示す図である。この先行読み込みフラグテーブル501は、複数の先行読み込みフラグ502−1乃至502−Nを含むテーブルである。この先行読み込みフラグ502は、該当する物理ページ207を起動時に先行読込をすべきかどうかを表すフラグであり、オン(ON)に設定されている場合、起動時に該当物理ページ207が不揮発メモリ104(図1)から RAM102へ、ロードされることを示すフラグである。
この先行読み込みフラグテーブル501は不揮発メモリ104に格納される。一般的に、OSでは、物理メモリをページ単位で分割して管理しているため、先行読み込みフラグテーブル501も、物理メモリの全ページに対する先行読み込みフラグ502を有している。
図8は、読み込み済フラグテーブル521を示す図である。この読み込み済フラグテーブル521は、複数の読み込み済フラグ522−1乃至522−Nを含むテーブルである。この読み込み済フラグ522は、後述する高速起動時に全てオフ(OFF)に初期化され、該当ページに動的ロードが行われた際にオン(ON)にされるフラグである。
この読み込み済フラグテーブル521は、RAM102(図1)に格納される。読み込み済フラグテーブル521も、先行読み込みフラグテーブル501と同様に、物理メモリの全ページに対する読み込み済フラグ522を有している。換言すれば、先行読み込みフラグ502と読み込み済フラグ522は同数用意されており、物理ページ207の数だけ用意されている。
[ソフトウェアの動作について]
次に、本発明を適用したソフトウェアの動作について説明する。まず、概要を説明し、その後詳細を説明する。本発明によれば、ソフトウェアの局所性を利用し、ソフトウェアを高速に起動することができる。ソフトウェアにはOS等も含まれる。例えば、容量4GBのRAMを備えるハードウエア上で、所定のソフトウェアを動作させると仮定する。その所定のソフトウェアのプログラムおよびデータの容量の合計が、仮に4GBであったとする。一般的にソフトウェアは、様々なモードや機能を有し、所定の単一の機能だけで、全容量の4GBを使う可能性は極めて低い。
例えばソフトウェアが、起動後、特定の状態でユーザからのキー入力を待つとする。一般的にはハードウェアのリセット後、ブートローダが起動され、このソフトウェアが立ち上がってユーザからのキー入力待ちの状態とされる。このソフトウェアを既知の技術であるハイバネーションを適用して高速に起動させた場合、メモリイメージを作成する準備として、ユーザからのキー入力待ちの状態でCPUや各I/Oのレジスタが保存され、プログラムコードやデータの合計4GBが、何らかの不揮発メモリに格納されることになる。起動時はこの逆で、通常の起動プロセスは通らず、4GBのメモリが展開され、CPUやI/Oのレジスタが復帰され、キー入力の処理に戻ることになる。
上記ソフトウェアにおいて、「ユーザからの入力を待つ」という状態を考える。この状態では、キー入力の処理が繰り返されており、このようなキー入力に係わる処理に係わるプログラムコードやデータは比較的小さい。本発明は、この原理を利用して高速起動を実現する。動作は大きく分けると以下のようになる。
(A) 通常起動モードでOSや所望のソフトウェアが起動され、そのソフトウェアが所望の状態にされる
(B) イメージ保存プログラムが起動され、その起動されたイメージ保存プログラムにより、MMU131の全てのページテーブルに対してのアクセスを禁止するために、アクセス禁止を示す情報に所定の情報が書き換えられた後、上記(A)の状態のメモリイメージがレジスタに保存されて終了される
(C) 次回以降は、高速起動モードにされることで、(A)の所望の状態で起動される
このような高速起動を実現するにあたり、基本的な準備として、通常通りにソフトウェアが起動され、そのソフトウェアが所望の状態にされ、その後、メモリイメージやレジスタが保存される。高速起動時は、ハイバネーション起動とは異なり、全てのメモリイメージがメインメモリに展開されるのではなく、実際に使われるメモリ、即ちプログラムコードやデータが、必要に応じて一部分のみ小刻みに展開される。
小刻みにプログラムコードやメモリが、メインメモリに展開される方法として、本実施の形態としてはCPUが持つMemory Management Unit(MMU131)が利用される例をあげて説明する。OSが、MMU131を使用する場合もあるが、OSが利用する前に、本発明が適用されたソフトウェアが元に戻し、OSは、本発明が適用されたソフトウェアがMMU131を操作したことには関知しない。
具体的には、メモリイメージが保存される前に、MMU131のテーブルの内容が書き換えられ、全てのページがアクセス禁止に設定される。また、本発明が適用されたソフトウェアは、前記ページをアクセス禁止にしたというマークを付与する機能も有する。
仮に、所望のソフトウェアがOS上で動作し、そのOSがMMU131を使用する場合も同じである。高速起動時は、MMU131のテーブルおよびCPUのレジスタのみ先行で復帰される。そして、メモリイメージが作成された後のアドレスに戻される。MMU131のテーブルは、全てアクセス禁止に設定されているので、戻りアドレスにジャンプした時にページフォルトが発生する。データアクセス時も同じである。ページフォルトを処理するページフォルトハンドラ404は、ページフォルトが発生したアドレスからページを計算し、且つ、本発明が適用されたソフトウェアが、マークしたマークをチェックし、そのページを不揮発メモリ104からメインメモリ(例えば、RAM102)へ読み込み、MMU131のテーブルを書き換え前の元の通りに書き戻す。
このような処理が繰り返されることで、大容量のメモリイメージであっても、所望の状態に復帰させるには最低限のメモリイメージの読み込みだけで済み、高速に起動することが可能となる。
[動作の詳細について]
上記してきたように、本発明によれば、所望のソフトウェアをある状態まで通常の起動と比較して高速に起動することが可能である。その高速起動を行う手順を大きく分けると、簡便に上記したが、(A)、(B)、(C)の3つに分類される。さらに(A)、(B)、(C)を、フローチャートを参照した説明の前に、さらに説明を加える。(A)、(B)の一連の流れは、一度実行されれば、毎回行う必要がない処理である。通常、(C)から実行されるようにすることで、高速起動することが可能となる。
(A)通常起動
(A−1) 起動モード切替部110を通常起動モードに設定し、通常の方法により、OSや所望のプログラムが起動される。
(A−2) 所望のプログラムが起動された後、ソフトウェアが操作されて、ソフトウェアが所望の状態にされる。高速起動時は、この状態で起動される。
(B)状態の保存
(B−1) 何らかのキーやコマンドなどによりイメージ保存プログラム406が起動される。この起動に関する起動方法には、特に制限はない。
(B−2) イメージ保存プログラム406は、次回以降に高速に起動したい状態で、メモリイメージとレジスタを保存する。具体的には、イメージ保存プログラム406は、MMU131のテーブルを全てアクセス禁止状態に設定し、その時点でのデータ401、プログラムコード402、MMUテーブル403、ページフォルトハンドラ404、割込ベクタ405、およびレジスタ類を不揮発メモリ104に保存させる。
(C)高速起動
(C−1) 起動モード切替部110が、高速起動モードに設定される。ブートローダ408が、起動モードを判断し、高速起動モードの場合は、イメージ復帰プログラム407を呼び出す。イメージ復帰プログラム407は、イメージ保存プログラム406が保存したMMUテーブル403、ページフォルトハンドラ404、割込ベクタ405を復帰させる。
(C−2) B−1の処理でイメージ保存プログラム406が起動された後のアドレスに戻る、即ちジャンプする。MMU131が全てアクセス禁止状態に設定されているので、プログラムコード402やデータ401にアクセスされる毎に、対応するアドレスにてページフォルトが発生し、ページフォルトハンドラ404が呼ばれる。
(C−3) ページフォルトハンドラ404は、対応する物理ページ207を不揮発メモリ104から1ページ分読み出し、MMU131を元に戻す。
(C−4) ページフォルトが次々に発生し、A−2の状態になるまで、必要なページフォルトが発生し続ける。
(C−5) A−2の状態になるまで物理ページ207が読み込まれる。この処理で読み込まれる物理ページ207は、実行されるソフトウェアや、その状態にも依存するが、極めて少なく、従来のハイバネーション技術で行われていたように、全ての物理ページ207を読み込むのと比較して起動時間は著しく短くすることが可能となる。
図9乃至17のフローチャートを参照し、上記(A)、(B)、(C)の各動作についてさらに説明を加える。
図9乃至11のフローチャートは、上記(A)、(B)の処理に該当する。すなわち、主に、電源投入からイメージ保存までの処理に係わるフローチャートである。ステップS101において、ハードディスクレコーダ100(図1)の電源が投入、もしくはリセットが発生してシステムが起動される。
ステップS102において、ブートローダ408(図6)が起動される。このステップS102で起動されるブートローダ408は、OSや所望のソフトウェアを動作させるために最低限のハードウエアの初期化や、必要に応じてROM103やHDD108に格納されているソフトウェアをRAM102に転送させたりする処理を想定し、そのような処理を実行できるブートローダであればよい。ブートローダ408は、システムに依存するものであり必須のものではない。よって、システムによっては、このステップS102が省略される場合もある。
ステップS103において、起動モード切替部110の状態がチェックされ、通常起動モードか、高速起動モードかの遷移が切り替えられる(通常起動スイッチがONであるか否かが判断される)。起動モード切替部110が通常起動モードの場合、ステップS104に処理が進められ、高速起動モードの場合、ステップ120(図11)に進められる。
ステップS103において、通常起動スイッチがONであると判断されると、通常起動モードで起動するため、通常起動フラグがONに設定される。通常起動フラグがONに設定されると、ステップS105に処理が進められ、OSが搭載されているシステムであれば、OSが起動される。一般的なシステムの場合、OSが起動される時にMMU131が初期化され、図2のMMU131のテーブルが作成される。本発明においては、OSの搭載は必須ではないが、仮にOSを搭載しないシステムの場合、MMU131の初期化を行う必要がある。また、OS搭載の場合であっても、OSの種類等に制限はない。
ステップS106において、高速起動させたい所望のソフトウェアが起動される。ステップS107において、起動されたソフトウェアが動作する。この処理は、上記したA−2の処理に該当する。高速起動により起動した状態と同じ状態にソフトウェアを遷移させる。例えば、所望のソフトウェアに複数のモードがあったと仮定し、その中である特定のモードで高速起動させたいのであれば、ソフトウェアを操作し、そのモードにまで遷移させる。例えば、ハードディスクレコーダ100の場合、予約するモード、再生するモード、設定するモードなどがあるが、ユーザが再生するモードをよく利用する場合、再生モードにまで遷移される。
ステップS108において、学習機能の処理が開始されたか否かが判断される。ステップS108において、学習機能の処理が開始されていないと判断された場合、ステップS109に処理が進められる。ステップS109において、イメージ保存プログラム406(図6)の処理が開始されたか否かが判断される。この処理は、上記したB−1の処理に該当する。コマンドやキー操作、スイッチ等によってイメージ保存プログラム406による処理が開始される。このイメージ保存プログラム406の実行手段に制限はない。ステップS109において、イメージ保存プログラム406(図6)の処理は開始されていないと判断された場合、ステップS107に処理が戻され、それ以降の処理が繰り返される.すなわちこの場合、ソフトウェアの動作が継続される。
一方、ステップS109において、イメージ保存プログラム406(図6)の処理が開始されたと判断された場合、換言すれば、ソフトウェアの動作は終了したと判断された場合、ステップS110(図10)に処理が進められる。以下のステップS110乃至S119の処理は、上記したB−2の処理に該当する。また、ステップS110乃至S119の処理は、イメージ保存プログラム406が実行する処理である。
ステップS110において、図1に示したI/O部109のレジスタが保存される。基本的には、設定されている値が取得され、保存される。I/Oに関しては、全てのレジスタが読み込める仕様のI/Oとは限らないので、その場合は個別に対応する必要がある。なお、I/Oの種類や仕様は任意であり、特に本発明を適用するうえでの制限はない。
ステップS111において、CPU101のレジスタが保存される。基本的にはCPU101の全レジスタが保存される。CPU101やレジスタの種類は任意であり、特に本発明を適用するうえでの制限はない。
ステップS112において、アドレス空間の切り換えが行われる。CPU101は、通常、仮想アドレスモードで動作している。このモードが、仮想アドレスモードから物理アドレスモードに遷移される。仮想アドレスモードから物理アドレスモードへの遷移方法は、MMU131のアーキテクチャに依存するため、本発明を適用するうえでの遷移方法に制限はない。また、仮想アドレスモードから物理アドレスモードに遷移させ場合、アドレス空間が変化するため、ステップS112における処理では、論理アドレスと物理アドレスとで同一アドレス空間にマッピングされる必要がある。
ステップS113において、キャッシュフラッシュが実行される。CPU101が、TLB(Translation Look-aside Buffer)、一次キャッシュ、二次キャッシュを搭載し、それらが有効だった場合、TLBおよびキャッシュがフラッシュされる必要がある。これは、次のステップS114において、RAM102上に置かれたMMUテーブル403の内容を書き換える必要があり、キャッシュに格納されているデータが、全てRAM102に反映されている必要があるからである。このステップS113におけるキャッシュフラッシュの処理は、必要に応じて行われ、場合によっては省略されても良い処理である。
ステップS114において、MMU131のMMUテーブル403が、全ての物理ページ207へのアクセスを禁止する情報に書き換えられる。このステップS114におけるMMUテーブル書き換え処理については、図12のフローチャートを参照して後述する。
ステップS114において、MMU131のMMUテーブル403が書き換えられると、ステップS115に処理が進められる。ステップS115において、キャッシュフラッシュが実行される。CPU101がTLB、一次キャッシュ、二次キャッシュを搭載し、それらが有効だった場合、TLBおよびキャッシュがフラッシュされる必要がある。これは前段のステップS114の処理で書き換えたMMU131のMMUテーブル403の内容を、確実にRAM102へ反映させるためである。このステップS115におけるキャッシュフラッシュの処理は、必要に応じて行われ、場合によっては省略されても良い処理である。
ステップS116において、不揮発メモリ104に対して、RAM102の全容量の内容が全て保存される。RAM102のアドレスに対する不揮発メモリ104の相対的なアドレス位置が一致している必要がある。例えば、RAM102の物理アドレスが 0x10000000 から 0x1fffffff にマッピングされていたとする。この場合、例えば不揮発メモリ104に対しては、0x40000000 から 0x4fffffff のアドレスにより、データが読み込める必要がある。
この例の場合、RAM102のアドレスに対する不揮発メモリ104のオフセットは 0x30000000 となるため、RAM102に対するアドレスであっても、0x30000000 のオフセットを加えるだけで不揮発メモリ104内のアドレスに変換することが可能となる。不揮発メモリ104は、必ずしもメモリマップ上にマッピングされる必要はない。上記オフセットを加えたアドレスをキーにして読み込みができれば良い。また、不揮発メモリ104に対する保存方法は、アーキテクチャに依存するが、本発明の適用するうえで、その保存方法に制限はない。
ステップS117において、不揮発メモリ104に記憶されている先行読み込みフラグテーブル501内の全ての先行読み込みフラグ502(図7)が、オフに設定される(初期化される)。そして、ステップS118において、全ての先行読み込みフラグ502がオフに設定された先行読み込みフラグテーブル501が、不揮発メモリ102に保存される。
ステップS119で、イメージ保存プログラム406での処理が終了される。イメージ保存プログラム406での処理が終了されることで、電源がOFFまたはリセット(RESET)することができる状態となる。
図9に示したフローチャートにおいて、ステップS103において、通常起動スイッチがONではないと判断されたときの処理、ステップS108において、学習機能の処理が開始されたと判断されたときの処理、およびステップS114でのMMUテーブル書き換え処理についての詳細な説明が残っているが、まずここでは、図12のフローチャートを参照し、ステップS114でのMMUテーブル書き換え処理についての詳細な説明を行う。
[MMUテーブルの書き換え処理について]
図12に示したフローチャートに基づく処理は、MMU131のMMUテーブル403が、図2で示した構成になっており、このMMUテーブル403を書き換える処理である。
ステップS161において、MMU131のMMUテーブル403の書き換えが開始されると、まず、変数レベル1ディスクリプタポインタに、レベル1ディスクリプタテーブル201の先頭アドレスが代入される。ステップS162において、変数レベル1ディスクリプタポインタが指すアドレスからレベル1ディスクリプタ203が取得される。
ステップS163において、ステップS162の処理で取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在するか否かが判断される。ステップS163において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS166に処理が進められ、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在しないと判断された場合、ステップS164に処理が進められる。
ステップS164において、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動される。そして、ステップS165に処理が進められ、レベル1ディスクリプタポインタが最終に到達したか否かが判断される。
ステップS165において、レベル1ディスクリプタポインタが最終に到達したと判断されるまで、ステップS164に処理が戻され、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動されるといった処理が繰り返される。そして、ステップS165において、レベル1ディスクリプタポインタが最終に到達したと判断されると、処理はステップS115(図10)に進められる。すなわち、MMUテーブルの書き換えが終了したと判断され、図10に示したフローチャートの処理に、処理が戻される。
一方、ステップS163において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS166に処理が進められる。ステップS166において、変数レベル2ディスクリプタポインタに、レベル2ディスクリプタテーブル204の先頭アドレスが代入される。
ステップ167において、変数レベル2ディスクリプタポインタが指すアドレスからレベル2ディスクリプタ206が取得される。ステップS168において、ステップS167の処理で取得されたレベル2ディスクリプタ206内に物理ページ207が存在するか否かが判断される。ステップS168において、取得されたレベル2ディスクリプタ206内に物理ページ207が存在すると判断された場合、ステップS169に処理が進められ、取得されたレベル2ディスクリプタ206内に物理ページ207は存在しないと判断された場合、ステップS173に処理が進められる。
ステップS169において、ステップS167の処理で取得されたレベル2ディスクリプタ206内の物理ページ207が、ステップS116(図10)にて保存の対象となるRAM102内のアドレスの範囲内であるか否かが判断される。ステップS169において、レベル2ディスクリプタ206内の物理ページ207が、保存の対象となるRAM102内のアドレスの範囲内であると判断された場合、ステップS170に処理が進められ、保存の対象となるRAM102内のアドレスの範囲内ではないと判断された場合、ステップS173に処理が進められる。
ステップS170において、ステップS167で取得されたレベル2ディスクリプタ206のアクセス許可bit(図3のアクセス許可bit305)がチェックされ、その物理ページ207がアクセス許可にされているか否かが判断される。ステップS170において、物理ページ207へのアクセスが許可されていると判断された場合、ステップS171に処理が進められ、物理ページ207へのアクセスは許可されていないと判断された場合、ステップS173に処理が進められる。
ステップS171において、ステップS167の処理で取得されたレベル2ディスクリプタ206のアクセス許可bit305がアクセス禁止を表すbitに書き換えられる。そして、ステップS172において、書き換えられたレベル2ディスクリプタ206に対してマーキングが実行される。この処理は、ステップS167の処理で取得されたレベル2ディスクリプタ206のアクセス許可bit305が、本発明が適用されたソフトウェアにより書き換えられたのか、他のソフトウェア、例えば、本来のOS等の動作によって書き換えられたのかを識別するための情報を保存する(マーキングする)ために行われる。
ステップS172におけるマーキングの仕方については、アーキテクチャに依存し、本発明を適用するうえでの制限はない。例えば、レベル2ディスクリプタ206に使われていない空きbitが存在するのであれば、その空きbitをマーキングの情報を埋め込むbitとして使用することができる。また、別途テーブルを持たせてマーキングされたところとされていないところとが管理されるようにしても良い。いずれにせよ、仮にOS等が搭載されたシステムで、かつ、OSがこれらのbitを使用していた場合は、共存するような仕組みにすることで、本発明を実施することが可能である。
ステップS173において、変数レベル2ディスクリプタポインタが、次のレベル2ディスクリプタ206のポインタのアドレスに移動される。このステップS173への処理には、ステップS168において、レベル2ディスクリプタ206内に物理ページ207が存在しないと判断された場合、ステップS169において、レベル2ディスクリプタ206がRAM102を指していないと判断された場合、または、ステップS170において、物理ページ207へのアクセスは許可されていないと判断された場合にも来る。
ステップS174において、レベル2ディスクリプタポインタが最終に到達したか否かが判断される。ステップS174において、レベル2ディスクリプタポインタが最終に到達したと判断されるまで、ステップS167に処理が戻され、それ以降の処理が繰り返される。一方、ステップS174において、レベル2ディスクリプタポインタが最終に到達したと判断された場合、ステップS164に処理が進められる。ステップS164以降の処理については既に説明したので、その説明は省略する。
このようにして、MMU131のMMUテーブル403が書き換えられる。
[高速起動時の処理について]
次に、高速起動時の処理について説明する。高速起動は、ステップS103において、通常起動スイッチがONになっていないと判断されたとき、すなわち、高速起動にスイッチが切り替えられていると判断されたときに実行される。図11のフローチャートは、ステップS103において、通常起動スイッチがONにはなっていないと判断されたときに処理が進められるフローチャートであり、高速起動時の処理について説明するためのフローチャートである。
ステップS120において、高速起動モードで起動するため、通常起動フラグがOFF(高速起動フラグがON)に設定される。ステップS121において、必要に応じて、割込ベクタ405、ページフォルトハンドラ404、MMUテーブル403が、イメージが保存された時と同じRAM102のアドレスに読み込まれる。
ステップS122において、先行読み込み処理が実行される。このステップS122において実行される先行読み込み処理について、図13のフローチャートを参照して説明する。ステップS191において、不揮発メモリ104に記憶されている先行読み込みフラグテーブル501が読み込まれる。なお、このステップS191で読み込まれる先行読み込みフラグテーブル501は、上述したステップS118(図10)や、後述するステップS237(図15)の処理で、不揮発メモリ104に記憶された先行読み込みフラグテーブル501である。
ステップS192において、物理メモリを指し示すページポインタが、物理メモリの先頭の物理ページ207に移動されることで初期化が行われる。ステップS193において、ページポインタが指し示す物理ページ207に対応する先行読み込みフラグテーブル501内の先行読み込みフラグ502が、オンに設定されているか否かが判断される。
ステップS193において、ページポインタに対する先行読み込みフラグ502がオンであると判断された場合、ステップS194に処理が進められる。ページポインタに対する先行読み込みフラグ502がオンである状態とは、起動時に該当する物理ページ207が不揮発メモリ104(図1)から RAM102へ、ロードされることを意味する。よって、ステップS194において、ページポインタが指し示す物理ページ207が読み込まれる。この処理で読み込まれる物理ページ207は、不揮発メモリ104に、ステップS116(図10)の処理で保存されたページである。
ステップS194によるページ読み込みの処理が終了された場合、ステップS195に処理が進められる。ステップS195における処理は、ステップS193においてページポインタに対する先行読み込みフラグ502がオンではないと判断された場合、すなわち、起動時に該当ページが不揮発メモリ104(図1)から RAM102へ、ロードされる必要がない場合にも来る処理である。
ステップS195において、ページポインタが、次のページに移動される。そして、その結果、全ての先行読み込みフラグテーブル501内の先行読み込みフラグ502を処理したか否か、すなわち、全ての物理ページに対する処理が終了したか否かが、ステップS196において判断される。ステップS196において、全ての先行読み込みフラグ502に対する処理は終了していないと判断された場合、まだ処理対象とされていない先行読み込みフラグ502を処理対象として、ステップS193以降の処理が繰り返される。
一方、ステップS196において、全ての先行読み込みフラグ502に対する処理が終了したと判断された場合、処理は、ステップS123(図11)に進められる。
ステップS123において、読み込み済フラグテーブル521に書き込まれている全ての読み込み済フラグ522がオフに設定される。読み込み済フラグ522は、高速起動時に全てオフに初期化され、該当ページに動的ロードが行われた際にオンにされるフラグであるので、高速起動時の1処理であるステップS123において全てオフに設定される。また、初期化された読み込み済フラグテーブル521は、RAM102に記憶される。
ステップS124において、MMU131のMMUテーブルが読み込まれる。このステップS124において実行されるMMUテーブル読み込み処理については、図14のフローチャートを参照し、後述する。
MMUテーブルの読み込みが終わると、ステップS125に処理が進められる。ステップS125において、CPU101のアドレス空間が、物理アドレスモードから仮想アドレスモードに遷移される。物理アドレスモードから仮想アドレスモードに遷移させる場合、アドレス空間が変化するため、ステップS125における処理では、論理アドレスと物理アドレスが同一アドレス空間にマッピングされる。
ステップS126において、ステップS111(図10)で保存されたCPU101のレジスタの値が不揮発メモリ104から読み出され、CPU101に対して復帰される。CPU101やレジスタの種類は任意であり、本発明を適用する上での制限はない。
ステップS127において、ステップS110(図10)で保存されたI/Oのレジスタの値が、不揮発メモリ104から読み出され、I/O部109に対して復帰される。I/Oの種類や仕様は任意であり、本発明を適用する上での制限はない。
このように、レジスタなどが復帰されると、ステップS107(図9)に処理が進められる。ステップS107において、ソフトウェアが動作する。この場合、ステップS104乃至S106の処理が実行されずに、ステップS107においてソフトウェアが動作開始となる。よって、ステップS104乃至S106の処理が実行される分だけ、少なくともソフトウェアが動作開始できるまでにかかる時間が短縮できることになる。特に、ステップS105におけるOSの起動やMMUの初期化にかかる時間、およびステップS106におけるソフトウェアの起動にかかる時間をなくすことができることで、大幅な時間の短縮を期待することができる。
図11のフローチャートの説明に戻り、ステップS124で実行されるMMUテーブル読み込み処理の詳細について、図14のフローチャートを参照して説明する。
ステップS201において、MMUテーブル403の読み出しが開始されると、まずレベル1ディスクリプタテーブル201が読み出される。このレベル1ディスクリプタテーブル201は、ステップS116(図10)の処理で、不揮発メモリ104にRAM102の内容が保存されたが、その不揮発メモリ104に保存されている内容から、レベル1ディスクリプタテーブル201のみが読み出される。
ステップS202において、変数レベル1ディスクリプタポインタに、レベル1ディスクリプタテーブル201の先頭アドレスが代入される。ステップS203において、変数レベル1ディスクリプタポインタが指すアドレスからレベル1ディスクリプタ203が取得される。ステップS204において、ステップS203の処理で取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在するか否かが判断される。
ステップS204において、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS207に処理が進められ、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタは存在しないと判断された場合、ステップS205に処理が進められる。
ステップS205において、変数レベル1ディスクリプタポインタが、次のレベル1ディスクリプタポインタのアドレスに移動される。そして、ステップS206において、レベル1ディスクリプタポインタが、最終に到達したか否かが判断される。ステップS206において、レベル1ディスクリプタポインタが、最終に到達したと判断された場合、ステップS125(図11)に処理が進められる。すなわちこの場合、MMUテーブル403の読み込みが完了されたため、次の処理へ処理が進められる。
一方、ステップS206において、レベル1ディスクリプタポインタは、最終に到達していないと判断された場合、ステップS203に処理が戻され、それ以降の処理が繰り返される。ステップS203乃至S206が繰り返され、ステップS204において、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断されると、ステップS207に処理が進められる。
ステップS207において、ステップS203で取得されたレベル1ディスクリプタ203内にある、レベル2ディスクリプタテーブル204へのポインタが、RAM102を指しているか否かが判断される。ステップS207において、レベル2ディスクリプタテーブル204へのポインタが、RAM102を指していると判断された場合、ステップS208に処理が進められ、レベル2ディスクリプタテーブル204へのポインタは、RAM102を指していないと判断された場合、ステップS205に処理が進められ、それ以降の処理が繰り返される。
ステップS208において、レベル2ディスクリプタテーブルが読み出される。このレベル2ディスクリプタテーブル204は、ステップS116(図10)の処理で、不揮発メモリ104にRAM102の内容として保存され、その不揮発メモリ104に保存されている内容から、レベル2ディスクリプタテーブル204のみが読み出される。その後、処理は、ステップS205に進められ、それ以降の処理が繰り返される。
このようにして、MMUテーブルの読み出しが行われる。
「学習機能の処理について」
図9のフローチャートの説明に戻る。ステップS108において、学習機能の処理が開始されたと判断された場合、ステップS128に処理が進められる。ステップS128において、学習処理が実行され、ステップS129において、学習用MMUテーブル書き換え処理が実行される。このステップS128において実行される学習処理については、図15のフローチャートを参照して説明し、ステップS129において実行される学習用MMUデーブル書き換え処理については、図16のフローチャートを参照して説明する。
図15のフローチャートを参照し、ステップS128で実行される学習処理について説明する。ステップS231において、不揮発メモリ104に記憶されている先行読み込みフラグテーブル501が読み込まれる。そして、ステップS232において、物理メモリを指し示すページポインタが、物理メモリの先頭の物理ページ207に移動されることで初期化が行われる。ステップS233において、ページポインタが指し示す物理ページ207に対応する読み込み済フラグテーブル521内の読み込み済フラグ522が、オンに設定されているか否かが判断される。
ステップS233において、ページポインタに対する読み込み済フラグ522がオンであると判断された場合、ステップS234に処理が進められる。ステップS234において、ページポインタに対する先行読み込みフラグ502がオンに設定される。すなわちこの場合、読み込み済フラグ522がオンであるので、該当する物理ページ207に対して動的ロードが行われた状態であり、そのようなページを、次回、読み込む機会があるときに、不揮発メモリ104からRAM102にロードさせるために、その該当する物理ページ207の先行読み込みフラグ502がオンに設定される。このように、学習機能は、次回ロードすべき物理ページ207を、学習するための機能である。
ステップS234において、ページポインタに対する先行読み込みフラグ502がオンにされた場合、または、ステップS233において、ページポインタに対する読み込み済フラグ522がオンではない判断された場合、すなわち、読み込み済フラグ522がオフであると判断された場合、ステップS235に処理が進められる。
ステップS235において、ページポインタが、次の物理ページ207を指し示すように移動される。そして、その結果、読み込み済フラグテーブル521内の全ての読み込み済フラグ522を処理したか否か、すなわち、全ての物理ページに対する処理が終了したか否かが、ステップS236において判断される。ステップS236において、全ての読み込み済フラグ522に対する処理は終了していないと判断された場合、まだ処理対象とされていない読み込み済フラグ522を処理対象として、ステップS233以降の処理が繰り返される。
一方、ステップS236において、全ての読み込み済フラグ522に対する処理が終了したと判断された場合、ステップS237に処理が進められる。ステップS237において、先行読み込みフラグテーブル501が不揮発メモリ104に上書きされる(先行読み込みフラグテーブル501が更新される)。
このようにして、先行読み込みフラグテーブル501が上書きされると、ステップS129(図9)の処理に進められ、学習用MMUテーブル書き換え処理が実行される。ステップS129において、実行される学習用MMUテーブル書き換え処理について、図16のフローチャートを参照して説明する。
ステップS261において、MMUテーブル読み込み処理が実行される。このステップS261において実行されるMMUテーブル読み込み処理は、既に説明したステップS124(図11)における処理と同様に行われ、図14に示したフローチャートに基づいて処理が行われる。そのため、ここではその説明を省略する。
ステップS261において、MMUテーブルが読み込まれると、ステップS262に処理が進められる。ステップS262において、MMU131のMMUテーブル403の書き換えが開始されると、まず、変数レベル1ディスクリプタポインタに、レベル1ディスクリプタテーブル201の先頭アドレスが代入される。ステップS263において、変数レベル1ディスクリプタポインタが指すアドレスからレベル1ディスクリプタ203が取得される。
ステップS264において、ステップS263の処理で取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在するか否かが判断される。ステップS264において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS267に処理が進められ、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在しないと判断された場合、ステップS265に処理が進められる。
ステップS265において、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動される。そして、ステップS266に処理が進められ、レベル1ディスクリプタポインタが最終に到達したか否かが判断される。
ステップS266において、レベル1ディスクリプタポインタが最終に到達したと判断されるまで、ステップS263に処理が戻され、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動されるといった処理が繰り返される。そして、ステップS266において、レベル1ディスクリプタポインタが最終に到達したと判断されると、処理はステップS119(図10)に進められる。すなわち、学習用MMUテーブルの書き換えが終了したと判断され、図10に示したフローチャートの処理に、処理が戻される。
一方、ステップS264において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS267に処理が進められる。ステップS267において、変数レベル2ディスクリプタポインタに、レベル2ディスクリプタテーブル204の先頭アドレスが代入される。
ステップS268において、変数レベル2ディスクリプタポインタが指すアドレスからレベル2ディスクリプタ206が取得される。ステップS269において、対象となる物理ページ207、即ちレベル2ディスクリプタが位置する物理ページ207が、マーキングされた物理ページ207であるか否かが判断される。マーキングは、ステップS172(図12)の処理で実行されたマーキングである。すなわち、マーキングされている物理ページ207は、本発明を適用したソフトウェアにより、アクセス禁止に書き換えられた物理ページ207である。
ステップS269において、マーキングされた物理ページ207であると判断された場合、ステップS270に処理が進められ、マーキングされていない物理ページ207であると判断された場合、ステップS273に処理が進められる。
ステップS270において、レベル2ディスクリプタが示す物理ページ207に対する先行読み込みフラグ502がオンであるか否かが判断される。ステップS270において、先行読み込みフラグ502がオンであると判断された場合、ステップS271に処理が進められ、先行読み込みフラグ502がオンではないと判断された場合、ステップS273に処理が進められる。
ステップS271において、対象となる物理ページ207の、レベル2ディスクリプタ206のアクセス許可bit305がアクセス許可に書き換えられる。ステップS272において、ステップS172(図12)の処理でマーキングした識別情報が解除される。
ステップS273において、レベル2ディスクリプタポインタが、次のレベル2ディスクリプタ206のポインタのアドレスに移動される。そしてステップS274において、レベル2ディスクリプタポインタが最終に到達したか否かが判断される。ステップS274において、レベル2ディスクリプタポインタが最終に到達したと判断されるまで、ステップS268に処理が戻され、それ以降の処理が繰り返される。一方、ステップS274において、レベル2ディスクリプタポインタが最終に到達したと判断された場合、ステップS275に処理が進められる。
ステップS275において、このようにして書き換えられたレベル2ディスクリプタ206を含むレベル2ディスクリプタテーブル204が、不揮発メモリ104に書き戻される。このようにして、レベル2ディスクリプタテーブル204が更新されると、ステップS265に処理が進められる。ステップS265以降の処理については、既に説明したので、その説明は省略する。
[ページフォルト発生の処理について]
次に、図17のフローチャートを参照し、ページフォルトが発生したときに実行される処理について説明を加える。ステップS301において、ページフォルトが発生すると、割込ベクタ405にジャンプされる。すなわち、割込ベクタ405から、実際のページフォルト処理を行う割込ハンドラへのジャンプが実行される。
一般的なCPU101は、ページフォルトが発生した場合、割込処理として特定の割込ベクタにジャンプし、その割込ハンドラとして処理する。図17に示したページフォルト発生時の処理に係わるフローチャートは、ページフォルトの割込を処理する割込ハンドラを想定しているが、これらはCPU101のアーキテクチャに依存する。なお、本発明の適用は、CPU101のメーカや型番により、制限が加えられることはない。
ステップS302において、通常起動フラグがONであるか否かがが判断される。通常起動フラグは、例えば、ステップS104(図9)の処理でONに設定される。ステップS302において、通常起動フラグがONであると判断された場合、換言すれば、通常起動であると判断された場合、ステップS308に処理が進められる。一方、ステップS302において、通常起動フラグがONではないと判断された場合、換言すれば、高速起動であると判断された場合、ステップS303に処理が進められる。
ステップS303において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207が、マーキングされた物理ページ207であるか否かが判断される。マーキングは、ステップS172(図12)の処理で実行されたマーキングである。すなわち、マーキングされている物理ページ207は、本発明を適用したソフトウェアにより、アクセス禁止に書き換えられた物理ページ207である。
なお、一般的に物理ページ207とアドレスには、以下の計算式が満たされるが、これらはCPU101のアーキテクチャに依存するので、特にこの計算式に本発明の適用範囲が限定されるものではない。
物理ページ = アドレス/ページサイズ(例えば、上記した例では4KB)
この式が示すように物理ページは、アドレスをページサイズで除算したものとなる。
ステップS303において、ページフォルトが発生したアドレスに対応する物理ページ207は、マーキングされた物理ページ207であると判断された場合、ステップS304に処理が進められ、マーキングされていない物理ページ207であると判断された場合、ステップS308に処理が進められる。
ステップS304において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207が、ステップS116(図10)の処理で不揮発メモリ104に保存されたイメージから4KB分のみ読み出される。
ステップS306において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207の、レベル2ディスクリプタ206のアクセス許可bit305がアクセス許可に書き換えられる。ステップS307において、ステップS172(図12)の処理でマーキングした識別情報が解除される。
このようにして、ページフォルトが発生されたときの処理が実行されることで、高速起動が実現される。
一方、ページフォルトが発生したが、ステップS302において、通常起動フラグがONであると判断された場合、または、ステップS303において、対象ページはマーキングされていないと判断された場合、ステップS308に処理が進められる。ステップS308において、標準のページフォルトの処理が実行される。すなわち、通常起動のときや、本発明が適用されたソフトウェア以外のソフトウェア(OSなど)が、アクセスを不許可に設定していたような場合、通常起動や、アクセス不許可時の処理が実行される。
本発明を適用したシステムに、OS等が搭載されていた場合、標準的なページフォルトハンドラが通常実装されている。それに対して、上記したようなページフォルト機能がシステムに実装された場合、OS本来が行うページフォルト処理が、改めて実行される必要があるときもある。このステップS308の処理は、OS等のシステムに依存するものであり必須の処理ではないため、本実施の形態として省略することも可能である。
このようにして、ページフォルトが発生したときの処理が実行されることで、高速起動が実現される。
さらに、ページアクセス時にページフォルトが発生して動的にページを読み込む処理が発生することで、ページフォルトの発生のオーバーヘッドが発生してしまう可能性があるが、起動からある時点の間にRAMイメージから動的ロードされた領域を、次回以降の起動ではまとめて先行読み込みする機能を設けたことで、ページフォルト発生のオーバーヘッドを減らすことができ、さらなる起動時間の短縮が実現される。
[効果]
上記したように、Memory Management Unit(MMU)、もしくは、MMU相当のメモリ管理機能を搭載したコンピュータシステム上で、MMUのテーブルに対し、ソフトウェアの動作に必要なRAMの最小単位、いわゆるページに対して、全てのページにてページフォルトが発生するようにページテーブルエントリを書き換え、起動時は、アクセスするRAMに対して発生したページフォルトに対し、本来OS等が有する既知の技術であるページイン・ページアウトとしての機能だけでなく、発生したページフォルトの機能を保存したメモリイメージのページ単位の読み込みに用いることで、以下のような効果がある。
まず、必要最小限のメモリイメージの読み込み容量を実現することが可能となる。このことにより、例えば、パーソナルコンピュータの起動時間を短縮することが可能となる。具体的には、従来、数十秒から数分を要していた起動時間を、数秒以内で起動させることができるようになる。
また、デジタル家電の起動時間を短縮することが可能となる。テレビジョン受像器やハードディスクレコーダなどのデジタル家電(電子機器)には、OS(所定のソフトウェア)を搭載した機種がある。所定のソフトウェアを搭載した機器の場合、起動時間が長くなることがあるが、本発明を適用することで、これらのデジタル家電における起動時間を短縮できるようになる。
また、バッテリの寿命を延命化することが可能となる。従来の高速起動を実現させる方法として、CPUやメモリを省電力モードに移行させる方法があった。この方法では、省電力モードとは言え、電力は必要であり、バッテリで動く機器にとってはその消費電力は無視できない。本発明を適用することで、不揮発メモリに起動イメージを保存することが可能となり、電源をRAMに供給したまま停止させる、いわゆるサスペンド(従来の省電力モードに対応)を使う必要がなくなる。よって、結果的に、バッテリ寿命を著しく伸ばすことができる。
さらに、家電製品の省エネルギー化を実現することが可能となる。テレビジョン受像器やハードディスクレコーダなどは一般的に起動が遅く、そのために「高速起動モード」なるモードを持つ機種も存在している。しかしながら、この「高速起動モード」は、家電製品を高速に起動させるため、常に電源を投入していることで、高速起動を実現している。そのため電力は電源投入時と同等に消費されている。
しかしながら、本発明を適用することで、起動時間を短くすることができるため、「高速起動モード」のときにかかる起動時間と同等、またはそれ以上に短い起動時間で起動させることができるようになり、「高速起動モード」を設ける必要がなくなる。したがって、「高速起動モード」のときに、常に電源を投入してなくてはならないといった状態をなくすことが可能となるため、結果として省エネルギー化を実現することが可能となる。
上記したコンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。また、専用のハードウェアで構成することもできる。また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
100 ハードディスクレコーダ, 101 CPU, 102 RAM, 103 ROM, 104 不揮発メモリ, 105 MPEGエンコード・デコード部, 106 チューナ, 107 HDDインターフェース, 108 HDD, 109 I/O部, 110 起動モード切替部

Claims (15)

  1. 記憶媒体にコンピュータ読み取り可能に記憶されるプログラムであって、
    メモリを管理する機能を有するプロセッサに、
    所定の動作状態にあるソフトウェアの前記所定の動作に必要な物理ページに対して、全ての物理ページでページフォルトが発生するように、メモリ管理用のページテーブルエントリを書き換える、第1の書き換えステップ、
    前記第1の書き換えステップの後に、前記所定の動作状態にあるソフトウェアのメモリイメージを保存するステップ、および
    前記ソフトウェアを高速起動させる時、前記メモリ管理用のページテーブルエントリを使用して、各ページテーブルエントリでページフォルトを発生させ、そのページフォルトが発生したページを順次読み出すステップ、
    を実行させ、さらに
    該当する前記物理ページを前記ソフトウェアの高速起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記物理ページが動的ロードされたかどうかを表す読み込み済フラグとを、それぞれ第1のフラグテーブルと第2のフラグテーブルに属性情報として含ませ、前記ソフトウェアが起動後の任意の時点での前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶することにより、前記第1のフラグテーブルを更新するステップ、
    前記第1のフラグテーブルの前記先行読み込みフラグを参照し、先行読み込みの対象となる前記物理ページでページフォルトを発生させないように、前記第1の書き換えステップで書き換えられた前記メモリ管理用のページテーブルエントリを書き換える、第2の書き換えステップ、および
    前記ソフトウェアを高速起動させる時、前記ページフォルトが発生したページを順次読み出すステップの前に、前記第1のフラグテーブルを使用して、前記先行読み込みの対象となる前記物理ページを先行読み込みするステップ
    を実行させる、プログラム。
  2. 請求項1に記載のプログラムにおいて、
    前記メモリは、RAMおよび不揮発性メモリを含み、
    前記第1の書き換えステップは、前記RAMに記憶されているページテーブルエントリを書き換えるステップを含み、
    前記保存するステップは、前記所定の動作状態にあるソフトウェアのデータ、プログラムコード、ページテーブルエントリを書き換えられたメモリ管理用テーブル、ページフォルトハンドラ、割込ベクタ、およびレジスタを、前記不揮発性メモリに記憶させるステップを含み、
    前記第1のフラグテーブルを更新するステップは、前記RAMに記憶されている前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記不揮発性メモリに記憶されている前記第1のフラグテーブルに上書きするステップを含み、
    前記第2の書き換えステップは、前記不揮発性メモリに記憶されている前記第1のフラグテーブルの前記先行読み込みフラグを参照し、前記不揮発性メモリに記憶されている前記メモリ管理用のページテーブルエントリを書き換えるステップを含む
    プログラム。
  3. 請求項2に記載のプログラムにおいて、
    前記第1の書き換えステップは、各ページテーブルエントリが示す物理ページが存在するか否か、および前記物理ページがRAM内にあるかを判断するステップ、前記RAMが記憶している前記ページテーブルエントリのうち前記物理ページが存在するページテーブルエントリを、前記物理ページへのアクセスを禁止する情報に書き換えるステップ、および前記ページテーブルエントリを書き換えるステップにより前記物理ページへのアクセスを禁止する情報に書き換えられたことを識別するマーキングを実行するステップを含み、
    前記読み出すステップは、前記ページフォルトが発生した物理ページに前記マーキングがされているかを判断し、前記マーキングがされたと判断された物理ページを読み出す
    プログラム。
  4. 請求項2または3に記載のプログラムにおいて、
    前記読み出すステップは、
    ページフォルトが発生したとき、前記割込ベクタが前記ページフォルトハンドラを呼び出し、前記ページフォルトハンドラが、ページフォルトが発生したアドレスからページを計算し、そのページを前記不揮発性メモリから読み出すステップを含む
    プログラム。
  5. 請求項1または2に記載のプログラムにおいて、
    前記プロセッサが、組み込み型のコンピュータのプロセッサである
    プログラム。
  6. ソフトウェアの起動を制御する方法であって、メモリを管理する機能を有するプロセッサに、
    所定の動作状態にあるソフトウェアの前記所定の動作に必要な物理ページに対して、全ての物理ページでページフォルトが発生するように、メモリ管理用のページテーブルエントリを書き換える、第1の書き換えステップ、
    前記第1の書き換えステップの後に、前記所定の動作状態にあるソフトウェアのメモリイメージを保存するステップ、および
    前記ソフトウェアを高速起動させる時、前記メモリ管理用のページテーブルエントリを使用して、各ページテーブルエントリでページフォルトを発生させ、そのページフォルトが発生したページを順次読み出すステップ、
    を実行させ、さらに
    該当する前記物理ページを前記ソフトウェアの高速起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記物理ページが動的ロードされたかどうかを表す読み込み済フラグとを、それぞれ第1のフラグテーブルと第2のフラグテーブルに属性情報として含ませ、前記ソフトウェアが起動後の任意の時点での前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶することにより、前記第1のフラグテーブルを更新するステップ、
    前記第1のフラグテーブルの前記先行読み込みフラグを参照し、先行読み込みの対象となる前記物理ページでページフォルトを発生させないように、前記第1の書き換えステップで書き換えられた前記メモリ管理用のページテーブルエントリを書き換える、第2の書き換えステップ、および
    前記ソフトウェアを高速起動させる時、前記ページフォルトが発生したページを順次読み出すステップの前に、前記第1のフラグテーブルを使用して、前記先行読み込みの対象となる前記物理ページを先行読み込みするステップ
    を実行させる、ソフトウェアの起動制御方法。
  7. 請求項6に記載のソフトウェアの起動制御方法において、
    前記メモリは、RAMおよび不揮発性メモリを含み、
    前記第1の書き換えステップは、前記RAMに記憶されているページテーブルエントリを書き換えるステップを含み、
    前記保存するステップは、前記所定の動作状態にあるソフトウェアのデータ、プログラムコード、ページテーブルエントリを書き換えられたメモリ管理用テーブル、ページフォルトハンドラ、割込ベクタ、およびレジスタを、前記不揮発性メモリに記憶させるステップを含み、
    前記第1のフラグテーブルを更新するステップは、前記RAMに記憶されている前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記不揮発性メモリに記憶されている前記第1のフラグテーブルに上書きするステップを含み、
    前記第2の書き換えステップは、前記不揮発性メモリに記憶されている前記第1のフラグテーブルの前記先行読み込みフラグを参照し、前記不揮発性メモリに記憶されている前記メモリ管理用のページテーブルエントリを書き換えるステップを含む
    方法。
  8. 請求項7に記載のソフトウェアの起動制御方法において、
    前記第1の書き換えステップは、各ページテーブルエントリが示す物理ページが存在するか否か、および前記物理ページがRAM内にあるかを判断するステップ、前記RAMが記憶している前記ページテーブルエントリのうち前記物理ページが存在するページテーブルエントリを、前記物理ページへのアクセスを禁止する情報に書き換えるステップ、および前記ページテーブルエントリを書き換えるステップにより前記物理ページへのアクセスを禁止する情報に書き換えられたことを識別するマーキングを実行するステップを含み、
    前記読み出すステップは、前記ページフォルトが発生した物理ページに前記マーキングがされているかを判断し、前記マーキングがされたと判断された物理ページを読み出す
    方法。
  9. 請求項7または8に記載のソフトウェアの起動制御方法において、
    前記読み出すステップは、
    ページフォルトが発生したとき、前記割込ベクタが前記ページフォルトハンドラを呼び出し、前記ページフォルトハンドラが、ページフォルトが発生したアドレスからページを計算し、そのページを前記不揮発性メモリから読み出すステップを含む
    方法。
  10. 請求項6または7に記載のソフトウェアの起動制御方法において、
    前記プロセッサが、組み込み型のコンピュータのプロセッサである
    方法。
  11. 情報処理装置であって、
    メモリ、前記メモリを管理する機能を有するプロセッサ、およびプログラムコードを有し、
    前記プログラムコードは、ソフトウェアの起動を制御するために前記プロセッサに、
    所定の動作状態にあるソフトウェアの前記所定の動作に必要な物理ページに対して、全ての物理ページでページフォルトが発生するように、メモリ管理用のページテーブルエントリを書き換える、第1の書き換えステップ、
    前記第1の書き換えステップの後に、前記所定の動作状態にあるソフトウェアのメモリイメージを保存するステップ、および
    前記ソフトウェアを高速起動させる時、前記メモリ管理用のページテーブルエントリを使用して、各ページテーブルエントリでページフォルトを発生させ、そのページフォルトが発生したページを順次読み出すステップ、
    を実行させ、さらに
    該当する前記物理ページを前記ソフトウェアの高速起動時に先行読込をすべきかどうかを表す先行読み込みフラグと、該当する前記物理ページが動的ロードされたかどうかを表す読み込み済フラグとを、それぞれ第1のフラグテーブルと第2のフラグテーブルに属性情報として含ませ、前記ソフトウェアが起動後の任意の時点での前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記先行読み込みフラグとして記憶することにより、前記第1のフラグテーブルを更新するステップ、
    前記第1のフラグテーブルの前記先行読み込みフラグを参照し、先行読み込みの対象となる前記物理ページでページフォルトを発生させないように、前記第1の書き換えステップで書き換えられた前記メモリ管理用のページテーブルエントリを書き換える、第2の書き換えステップ、および
    前記ソフトウェアを高速起動させる時、前記ページフォルトが発生したページを順次読み出すステップの前に、前記第1のフラグテーブルを使用して、前記先行読み込みの対象となる前記物理ページを先行読み込みするステップ
    を実行させる、情報処理装置。
  12. 請求項11に記載の情報処理装置において、
    前記メモリは、RAMおよび不揮発性メモリを含み、
    前記第1の書き換えステップは、前記RAMに記憶されているページテーブルエントリを書き換えるステップを含み、
    前記保存するステップは、前記所定の動作状態にあるソフトウェアのデータ、プログラムコード、ページテーブルエントリを書き換えられたメモリ管理用テーブル、ページフォルトハンドラ、割込ベクタ、およびレジスタを、前記不揮発性メモリに記憶させるステップを含み、
    前記第1のフラグテーブルを更新するステップは、前記RAMに記憶されている前記第2のフラグテーブルにおける前記読み込み済みフラグの状態を、前記不揮発性メモリに記憶されている前記第1のフラグテーブルに上書きするステップを含み、
    前記第2の書き換えステップは、前記不揮発性メモリに記憶されている前記第1のフラグテーブルの前記先行読み込みフラグを参照し、前記不揮発性メモリに記憶されている前記メモリ管理用のページテーブルエントリを書き換えるステップを含む
    装置。
  13. 請求項12に記載の情報処理装置において、
    前記第1の書き換えステップは、各ページテーブルエントリが示す物理ページが存在するか否か、および前記物理ページがRAM内にあるかを判断するステップ、前記RAMが記憶している前記ページテーブルエントリのうち前記物理ページが存在するページテーブルエントリを、前記物理ページへのアクセスを禁止する情報に書き換えるステップ、および前記ページテーブルエントリを書き換えるステップにより前記物理ページへのアクセスを禁止する情報に書き換えられたことを識別するマーキングを実行するステップを含み、
    前記読み出すステップは、前記ページフォルトが発生した物理ページに前記マーキングがされているかを判断し、前記マーキングがされたと判断された物理ページを読み出す
    装置。
  14. 請求項12または13に記載の情報処理装置において、
    前記読み出すステップは、
    ページフォルトが発生したとき、前記割込ベクタが前記ページフォルトハンドラを呼び出し、前記ページフォルトハンドラが、ページフォルトが発生したアドレスからページを計算し、そのページを前記不揮発性メモリから読み出すステップを含む
    装置。
  15. 請求項11または12に記載の情報処理装置において、
    前記プロセッサが、組み込み型のコンピュータのプロセッサである
    装置。
JP2010006930A 2010-01-15 2010-01-15 プログラム、制御方法、並びに制御装置 Active JP5506418B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010006930A JP5506418B2 (ja) 2010-01-15 2010-01-15 プログラム、制御方法、並びに制御装置
PCT/JP2010/053630 WO2011086710A1 (ja) 2010-01-15 2010-03-05 プログラム、制御方法、並びに制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010006930A JP5506418B2 (ja) 2010-01-15 2010-01-15 プログラム、制御方法、並びに制御装置

Publications (2)

Publication Number Publication Date
JP2011145933A JP2011145933A (ja) 2011-07-28
JP5506418B2 true JP5506418B2 (ja) 2014-05-28

Family

ID=44304013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010006930A Active JP5506418B2 (ja) 2010-01-15 2010-01-15 プログラム、制御方法、並びに制御装置

Country Status (2)

Country Link
JP (1) JP5506418B2 (ja)
WO (1) WO2011086710A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5984500B2 (ja) 2011-11-30 2016-09-06 三菱電機株式会社 情報処理装置、放送受信装置及びソフトウェア起動方法
CN102662690B (zh) * 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
JP6046978B2 (ja) 2012-10-26 2016-12-21 キヤノン株式会社 情報処理装置およびその方法
CN103150186B (zh) * 2013-03-15 2014-11-19 腾讯科技(深圳)有限公司 一种设备运行速度优化方法和装置
BR112019007619B1 (pt) 2016-10-27 2023-02-14 Välinge Innovation AB Conjunto de painéis com um dispositivo de travamento mecânico

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005149225A (ja) * 2003-11-17 2005-06-09 Sony Corp コンピュータシステム及びその起動方法
JP4078360B2 (ja) * 2004-12-24 2008-04-23 キヤノン株式会社 電子機器、データ処理方法、及びコンピュータプログラム
GB0507269D0 (en) * 2005-04-11 2005-05-18 Johnson Matthey Plc Steam reforming
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム

Also Published As

Publication number Publication date
JP2011145933A (ja) 2011-07-28
WO2011086710A1 (ja) 2011-07-21

Similar Documents

Publication Publication Date Title
JP4986247B2 (ja) プログラム、制御方法、並びに制御装置
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US20130219106A1 (en) Trim token journaling
JP5404798B2 (ja) 仮想記憶管理装置及び記憶管理装置
JP5636034B2 (ja) データ利用についてのマウント時間の調停
WO2011061948A1 (ja) プログラム、制御方法、並びに制御装置
KR101650424B1 (ko) 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송
JP2013137770A (ja) Lbaビットマップの使用
US8825946B2 (en) Memory system and data writing method
JP5506418B2 (ja) プログラム、制御方法、並びに制御装置
KR20100126069A (ko) 메모리 장치 및 메모리 장치의 동작 방법
TW201535411A (zh) 分割成包括元資料區域之多個區域的位元組可定址非依電性讀寫主記憶體
US9575758B2 (en) Method for setting breakpoints, and an integrated circuit and debug tool therefor
KR20140121233A (ko) 부트로더에 의한 운영 체제 부팅 기능의 전자 장치, 방법 및 저장 매체
JP2012252576A (ja) 情報処理装置、起動方法およびプログラム
US10162762B2 (en) Managing memory based on hint data generated from mapping data entries
KR20140073955A (ko) 메모리 시스템 및 그 구동 방법
KR101582919B1 (ko) 전자장치 및 그 부팅방법
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
WO2010116405A1 (ja) 不揮発性の主記憶を備えた計算機システム
WO2011061949A1 (ja) プログラム、制御方法、並びに制御装置
JP5795418B2 (ja) キャッシュ装置、及び記憶システム
JP5627754B2 (ja) 仮想記憶管理装置及び記憶管理装置
KR20100018017A (ko) 비휘발성 메모리에 기반한 컴퓨터 시스템
WO2009086692A1 (zh) 嵌入式系统利用nand闪存记忆体储存及启动的处理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111101

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111101

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20111104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140318

R150 Certificate of patent or registration of utility model

Ref document number: 5506418

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250