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

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

Info

Publication number
JP2011107925A
JP2011107925A JP2009261511A JP2009261511A JP2011107925A JP 2011107925 A JP2011107925 A JP 2011107925A JP 2009261511 A JP2009261511 A JP 2009261511A JP 2009261511 A JP2009261511 A JP 2009261511A JP 2011107925 A JP2011107925 A JP 2011107925A
Authority
JP
Japan
Prior art keywords
page
descriptor
shared
read
fault
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.)
Pending
Application number
JP2009261511A
Other languages
English (en)
Other versions
JP2011107925A5 (ja
Inventor
Kenichi Hashimoto
健一 橋本
Tomohiro Masubuchi
友裕 増渕
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 JP2009261511A priority Critical patent/JP2011107925A/ja
Priority to PCT/JP2010/053628 priority patent/WO2011061948A1/ja
Priority to CN2010800517732A priority patent/CN102687113A/zh
Priority to US13/510,019 priority patent/US20120254499A1/en
Priority to EP10831347.9A priority patent/EP2503458A4/en
Publication of JP2011107925A publication Critical patent/JP2011107925A/ja
Publication of JP2011107925A5 publication Critical patent/JP2011107925A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/445Program loading or initiating
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/4418Suspend and resume; Hibernate and awake
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed

Abstract

【課題】起動時間を短縮する。
【解決手段】Memory Management Unit(MMU)を搭載したコンピュータシステム上で、MMUのテーブルに対し、ソフトウェアの動作に必要なページに対して、全てのページにてページフォルトが発生するようにページテーブルエントリが書き換えられる。起動時は、アクセスするRAMに対して発生したページフォルトに対し、保存したメモリイメージのページ単位の読み込みが実行される。このような読み込みが行われことで、不要なページの読み込みが行われず、その分の起動時間を短縮することが可能となる。本発明は、パーソナルコンピュータや組み込み型のコンピュータを備える電子機器に適用できる。
【選択図】図4

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イメージのみをロードすることが可能になる。よって、高速に所望のソフトウェアを起動・動作させることが可能となる。
本発明を使用することで、従来は数十秒〜数分を要していた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に装備されている必要がある。
ところでLinuxやWindows(登録商標)などのOSでは、一般的に共有メモリと呼ばれる概念(機能)が存在する。それぞれのタスク間で共通なメモリ(Linux等では最小単位で分割されているページを意味、以下ページと記述)が存在し、それぞれのタスク空間からその同一のページ(共有ページ)にアクセスできる仕組みがある。
共有ページの機能を使用し、かつ高速起動を実現するためには、既存の共有ページ、即ち他のタスクが指し示すページに対して新規で共有ページを確保した場合にも対応できるようにする必要がある。そしてページフォルト発生による動的読み込みの対象が、共有ページまでとなることにより、従来は全て単純な事前読み込みを必要としていた共有ページに対しても動的読み込み可能となり、より高速な起動を実現できるようになる。そして、共有ページも、ページフォルトによる動的ロードの対象とすることを可能とし、結果として、ソフトウェアの起動時間を更に改善させることができるようになる。
共有ページの概念は一般的なOSのメモリ管理機能として実装されているもので、特にOSやメーカ等に依存はしない。よって、以下に説明する実施の形態も、一般的なOSのメモリ管理機能に対して適用可能であり、OSのメモリ管理機能に依存して限定されるものではない。
図4はページディスクリプタテーブルとページディスクリプタを示した図である。ページディスクリプタ401−1乃至401−Nが格納されているテーブルが、ページディスクリプタテーブル402である。以下の説明において、ページディスクリプタ401−1乃至401−Nを、個々に区別する必要がない場合、単に、ページディスクリプタ401と記述する。他の部分に関しても同様に記述する。
ページディスクリプタ401は、例えば、図2に示した物理ページ207の属性を格納するためのページディスクリプタである。属性の情報はOS等に依存し、本発明を適用するうえで、格納される属性の情報に制限は無い。各物理ページ207に対応する1つのページディスクリプタ401が存在する。通常、複数の物理ページ、例えば、図6(後述する)に示した物理ページ207−0乃至207−nにそれぞれ対応するページディスクリプタ401−1乃至401−Nは、ページディスクリプタテーブル402内で、ページ順に並んで配置されている。
図5において、ページディスクリプタの属性情報501−1乃至501−Nは、それぞれページディスクリプタ401−1乃至401−Nの属性情報を表している。一般的に属性情報501は、OS等に依存する。本実施の形態では、これらの属性情報501に、ページ読み込みフラグ502を追加する。ページ読み込みフラグ502は、ページフォルトによる動的読み込みにより、そのページフォルトが発生したページに対して既に読み込み済かどうかを表すフラグである。
[物理ページについて]
図6は、物理ページ207が、RAM102(図1)上に並んでいる状態を擬似的に示している。RAM102には、1ページ分の物理ページ207が、物理ページ207−0から順に、物理ページ207−nまで配列されている。MMU131搭載のCPU101上でソフトウェアが動作される場合、1ページの物理ページ207は、このように4KB乃至64KB単位で1ページとして管理されるように構成されていることが多い。
図7は、ソフトウェアが所定の動作状態であるときの物理ページの使用状況について説明するための図である。図7中、数字が記載されているページが使用されているページであり、数字が記載されていないページは使用されていないページを示す。ソフトウェアが使うプログラムコードやデータが、図6に示したように、全ての領域を使っていたとしても、ソフトウェアの状態をある単位時間でみた場合、図7で示すように使われていることが多い。すなわち、使用されているページと使用されていないページとがあり、全てのページが使用されているわけではない。
このソフトウェアが、所定の動作状態のときには、物理ページ207−0、物理ページ207−2、物理ページ207−4、物理ページ207−5、物理ページ207−9、物理ページ207−16、および物理ページ207−18が使用される。すなわち、図6に示したように、RAM102には、1ページ分の物理ページ207が、物理ページ207−0から順に、物理ページ207−nまで配列されているが、そのうち所定のソフトウェアが、所定の動作状態のときには、全てのページが使われるわけではなく、図7に示したように、複数のページのみが使用される。
従来のハイバネーション起動による起動の場合、ソフトウェアが動作する前に、図6に示したように、物理ページ207−0から物理ページ207−nまで、順次読み出しが行われてから復帰動作が始まり、所定の動作状態にされる。しかしながら実際に、そのソフトウェアが所定の動作状態になるためには、図7に示したように、所定の複数の物理ページ207が読み出されるだけでよい。そこで、本発明においては、後述するように読み出しを制御することで、図7に示したように、必要とされる物理ページ207のみが読み出されるようにする。
従来のハイバネーション起動による起動の場合、図6に示したように物理ページ207−0から順次読み出しが行われるため、換言すれば、必要のない物理ページ207も読み出されるため、読み出しに時間がかかり、結果として、所定のソフトウェア(OSなども含む)の起動が遅くなるということがあった。しかしながら、本発明によれば、図7に示したように、必要とされる物理ページ207のみが読み出されるため、読み出しにかかる時間を短縮することができ、所定のソフトウェア(OSなども含む)の起動を早くすることが可能となる。
図8は、ソフトウェアの物理メモリマップを示す図である。なお、以下に説明する処理は、CPU101やOSに依存するもので、これらの機能が実装されていれば構成やメモリ配置に制限はなく、以下の説明だけに、本発明が適用されることを示すものではない。
不揮発メモリ104は、電源を切っても記憶内容が保持されるメモリである。図8に示した例では、不揮発メモリ104としてFLASH ROMをイメージしている。不揮発メモリ104は、メインメモリ上にマッピングされているが、電源を切っても内容が保持され、且つ、RAM102以上の容量を装備している。しかしながら、本発明を適用できる不揮発メモリ104は、I/O経由でのアクセス等、必ずしもメモリマップ上にマッピングされている必要はなく、そのアーキテクチャに制限はない。
データ601は、プログラムコード602が使用する読み書きができるデータ領域である。データ601は物理ページ207として、ある特定の大きさに分割されて格納される。データ601は、読み書きできる必要があるのでRAM102上に置かれることが好ましい。
プログラムコード602は、起動・実行させる所望のプログラムを示す。一般的なパーソナルコンピュータでWindows(登録商標)やLinuxと言ったOSが搭載され、そのうえで動作するソフトウェアである場合、プログラムとは、そのOSとソフトウェアを含む。プログラムコード602は、物理ページ207として、ある特定の大きさに分割されて格納される。このプログラムコード602は、RAM102またはROM103上に置かれる。
MMUテーブル603は、図2に示したレベル1ディスクリプタテーブル201およびレベル2ディスクリプタテーブル204を示している。ページフォルトハンドラ604は、MMU131のレベル2ディスクリプタ206がアクセス禁止の属性であり、ページフォルトが発生したとき、割込ベクタ経由で例外処理を行うためのプログラムである。ここではプログラムコード602と分けて、ページフォルトハンドラ604を記述しているが、プログラムコード602に含まれる場合もある。
割込ベクタ605は、一般的なCPUが持つ割込ベクタである。ページフォルトが発生した場合、この割込ベクタ内のページフォルトにプログラムコードがジャンプし、結果的にページフォルトハンドラ604が呼び出される。
データ601、プログラムコード602、MMUテーブル603、および割込ベクタ605の論理アドレスに対する物理アドレスは、任意のアドレスにマッピングできる。
イメージ保存プログラム606は、所望のプログラムが起動された後、所望の状態でメモリイメージが不揮発メモリ104に保存されるようにするためのプログラムである。イメージ保存プログラム606の論理アドレスと物理アドレスは、同一アドレスにマッピングされる必要がある。
イメージ復帰プログラム607は、イメージ保存プログラム606の処理により保存された物理メモリイメージを、必要に応じて物理ページ単位に、データ601やプログラムコード602を、対応する物理ページに、不揮発メモリ104から読み込み、復帰させるためのプログラムである。イメージ復帰プログラム607の論理アドレスと物理アドレスは、同一アドレスにマッピングされる必要がある。
ブートローダ608は、電源投入もしくはリセット後に最初に起動されるブートローダである。主にブートローダ608は、起動に必要な最低限のI/Oの初期化を行う。このような構成をソフトウェアは有する。
[ソフトウェアの動作について]
次に、本発明を適用したソフトウェアの動作について説明する。まず、概要を説明し、その後詳細を説明する。本発明によれば、ソフトウェアの局所性を利用し、ソフトウェアを高速に起動することができる。ソフトウェアには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のテーブルは、全てアクセス禁止に設定されているので、戻りアドレスにジャンプした時にページフォルトが発生する。データアクセス時も同じである。ページフォルトを処理するページフォルトハンドラ604は、ページフォルトが発生したアドレスからページを計算し、且つ、本発明が適用されたソフトウェアが、マークしたマークをチェックし、そのページを不揮発メモリ104からメインメモリ(例えば、RAM102)へ読み込み、MMU131のテーブルを書き換え前の元の通りに書き戻す。
このような処理が繰り返されることで、大容量のメモリイメージであっても、所望の状態に復帰させるには最低限のメモリイメージの読み込みだけで済み、高速に起動することが可能となる。
[動作の詳細について]
上記してきたように、本発明によれば、所望のソフトウェアをある状態まで通常の起動と比較して高速に起動することが可能である。その高速起動を行う手順を大きく分けると、簡便に上記したが、(A)、(B)、(C)の3つに分類される。さらに(A)、(B)、(C)を、フローチャートを参照した説明の前に、さらに説明を加える。(A)、(B)の一連の流れは、一度実行されれば、毎回行う必要がない処理である。通常、(C)から実行されるようにすることで、高速起動することが可能となる。
(A)通常起動
(A−1) 起動モード切替部110を通常起動モードに設定し、通常の方法により、OSや所望のプログラムが起動される。
(A−2) 所望のプログラムが起動された後、ソフトウェアが操作されて、ソフトウェアが所望の状態にされる。高速起動時は、この状態で起動される。
(B)状態の保存
(B−1) 何らかのキーやコマンドなどによりイメージ保存プログラム606が起動される。この起動に関する起動方法には、特に制限はない。
(B−2) イメージ保存プログラム606は、次回以降に高速に起動したい状態で、メモリイメージとレジスタを保存する。具体的には、イメージ保存プログラム606は、MMU131のテーブルを全てアクセス禁止状態に設定し、その時点でのデータ601、プログラムコード602、MMUテーブル603、ページフォルトハンドラ604、割込ベクタ605、およびレジスタ類を不揮発メモリ104に保存させる。
(C)高速起動
(C−1) 起動モード切替部110が、高速起動モードに設定される。ブートローダ608が、起動モードを判断し、高速起動モードの場合は、イメージ復帰プログラム607を呼び出す。イメージ復帰プログラム607は、イメージ保存プログラム606が保存したMMUテーブル603、ページフォルトハンドラ604、割込ベクタ605を復帰させる。
(C−2) B−1の処理でイメージ保存プログラム606が起動された後のアドレスに戻る、即ちジャンプする。MMU131が全てアクセス禁止状態に設定されているので、プログラムコード602やデータ601にアクセスされる毎に、対応するアドレスにてページフォルトが発生し、ページフォルトハンドラ604が呼ばれる。
(C−3) ページフォルトハンドラ604は、対応する物理ページ207を不揮発メモリ104から1ページ分読み出し、MMU131を元に戻す。
(C−4) ページフォルトが次々に発生し、A−2の状態になるまで、必要なページフォルトが発生し続ける。
(C−5) A−2の状態になるまで物理ページ207が読み込まれる。この処理で読み込まれる物理ページ207は、実行されるソフトウェアや、その状態にも依存するが、極めて少なく、従来のハイバネーション技術で行われていたように、全ての物理ページ207を読み込むのと比較して起動時間は著しく短くすることが可能となる。
図9乃至11のフローチャートを参照し、上記(A)、(B)、(C)の各動作についてさらに説明を加える。
図9のフローチャートは、上記(A)、(B)の処理に該当する。すなわち、主に、電源投入からイメージ保存までの処理に係わるフローチャートである。ステップS101において、ハードディスクレコーダ100(図1)の電源が投入、もしくはリセットが発生してシステムが起動される。
ステップS102において、ブートローダ608(図8)が起動される。このステップS102で起動されるブートローダ608は、OSや所望のソフトウェアを動作させるために最低限のハードウエアの初期化や、必要に応じてROM103やHDD108に格納されているソフトウェアをRAM102に転送させたりする処理を想定し、そのような処理を実行できるブートローダであればよい。ブートローダ608は、システムに依存するものであり必須のものではない。よって、システムによっては、このステップS102が省略される場合もある。
ステップS103において、起動モード切替部110の状態がチェックされ、通常起動モードか、高速起動モードかの遷移が切り替えられる(通常起動スイッチがONであるか否かが判断される)。起動モード切替部110が通常起動モードの場合、ステップS104に処理が進められ、高速起動モードの場合、ステップS161(図12)に進められる。
ステップS103において、通常起動スイッチがONであると判断されると、通常起動モードで起動するため、通常起動フラグがONに設定される。通常起動フラグがONに設定されると、ステップS105に処理が進められ、OSが搭載されているシステムであれば、OSが起動される。一般的なシステムの場合、OSが起動される時にMMU131が初期化され、図2のMMU131のテーブルが作成される。本発明においては、OSの搭載は必須ではないが、仮にOSを搭載しないシステムの場合、MMU131の初期化を行う必要がある。また、OS搭載の場合であっても、OSの種類等に制限はない。
ステップS106において、高速起動させたい所望のソフトウェアが起動される。ステップS107において、起動されたソフトウェアが動作する。この処理は、上記したA−2の処理に該当する。高速起動により起動した状態と同じ状態にソフトウェアを遷移させる。例えば、所望のソフトウェアに複数のモードがあったと仮定し、その中である特定のモードで高速起動させたいのであれば、ソフトウェアを操作し、そのモードにまで遷移させる。例えば、ハードディスクレコーダ100の場合、予約するモード、再生するモード、設定するモードなどがあるが、ユーザが再生するモードをよく利用する場合、再生モードにまで遷移される。
ステップS108において、イメージ保存プログラム606(図8)の処理が開始されたか否かが判断される。この処理は、上記したB−1の処理に該当する。コマンドやキー操作、スイッチ等によってイメージ保存プログラム606による処理が開始される。このイメージ保存プログラム606の実行手段に制限はない。ステップS108において、イメージ保存プログラム606(図8)の処理は開始されていないと判断された場合、ステップS107に処理が戻され、それ以降の処理が繰り返される.すなわちこの場合、ソフトウェアの動作が継続される。
一方、ステップS107において、イメージ保存プログラム606(図8)の処理が開始されたと判断された場合、換言すれば、ソフトウェアの動作は終了したと判断された場合、ステップS109に処理が進められる。以下のステップS109乃至S117の処理は、上記したB−2の処理に該当する。また、ステップS109乃至S117の処理は、イメージ保存プログラム606が実行する処理である。
ステップS109において、図1に示したI/O部109のレジスタが保存される。基本的には、設定されている値が取得され、保存される。I/Oに関しては、全てのレジスタが読み込める仕様のI/Oとは限らないので、その場合は個別に対応する必要がある。なお、I/Oの種類や仕様は任意であり、特に本発明を適用するうえでの制限はない。
ステップS110において、CPU101のレジスタが保存される。基本的にはCPU101の全レジスタが保存される。CPU101やレジスタの種類は任意であり、特に本発明を適用するうえでの制限はない。
ステップS111において、アドレス空間の切り換えが行われる。CPU101は、通常、仮想アドレスモードで動作している。このモードが、仮想アドレスモードから物理アドレスモードに遷移される。仮想アドレスモードから物理アドレスモードへの遷移方法は、MMU131のアーキテクチャに依存するため、本発明を適用するうえでの遷移方法に制限はない。また、仮想アドレスモードから物理アドレスモードに遷移させ場合、アドレス空間が変化するため、ステップS111における処理では、論理アドレスと物理アドレスとで同一アドレス空間にマッピングされる必要がある。
ステップS112において、キャッシュフラッシュが実行される。CPU101が、TLB(Translation Look-aside Buffer)、一次キャッシュ、二次キャッシュを搭載し、それらが有効だった場合、TLBおよびキャッシュがフラッシュされる必要がある。これは、次のステップS113において、RAM102上に置かれたMMUテーブル603の内容を書き換える必要があり、キャッシュに格納されているデータが、全てRAM102に反映されている必要があるからである。このステップS112におけるキャッシュフラッシュの処理は、必要に応じて行われ、場合によっては省略されても良い処理である。
ステップS113において、MMU131のMMUテーブル603が、全ての物理ページ207へのアクセスを禁止する情報に書き換えられる。このステップS113におけるMMUテーブル書き換え処理については、図10のフローチャートを参照して後述する。
ステップS113において、MMU131のMMUテーブル603が書き換えられると、ステップS114に処理が進められる。ステップS114において、ページディスクリプタの初期化の処理が実行されるが、その処理については、図11のフローチャートを参照して後述する。
ステップS115において、キャッシュフラッシュが実行される。CPU101がTLB、一次キャッシュ、二次キャッシュを搭載し、それらが有効だった場合、TLBおよびキャッシュがフラッシュされる必要がある。これは前段のステップS113の処理で書き換えたMMU131のMMUテーブル603の内容を、確実にRAM102へ反映させるためである。このステップS115におけるキャッシュフラッシュの処理は、必要に応じて行われ、場合によっては省略されても良い処理である。
ステップS116において、不揮発メモリ104に対して、RAM102の全容量の内容が全て保存される。RAM102のアドレスに対する不揮発メモリ104の相対的なアドレス位置が一致している必要がある。例えば、RAM102の物理アドレスが 0x10000000 から 0x1fffffff にマッピングされていたとする。この場合、例えば不揮発メモリ104に対しては、0x40000000 から 0x4fffffff のアドレスにより、データが読み込める必要がある。
この例の場合、RAM102のアドレスに対する不揮発メモリ104のオフセットは 0x30000000 となるため、RAM102に対するアドレスであっても、0x30000000 のオフセットを加えるだけで不揮発メモリ104内のアドレスに変換することが可能となる。不揮発メモリ104は、必ずしもメモリマップ上にマッピングされる必要はない。上記オフセットを加えたアドレスをキーにして読み込みができれば良い。また、不揮発メモリ104に対する保存方法は、アーキテクチャに依存するが、本発明の適用するうえで、その保存方法に制限はない。
ステップS117で、イメージ保存プログラム606での処理が終了される。イメージ保存プログラム606での処理が終了されることで、電源がOFFまたはリセット(RESET)することができる状態となる。
図9に示したフローチャートにおいて、ステップS103において、通常起動スイッチがONではないと判断されたときの処理と、ステップS113でのMMUテーブル書き換え処理についての詳細な説明が残っているが、まずここでは、図10のフローチャートを参照し、ステップS113でのMMUテーブル書き換え処理についての詳細な説明を行う。
図10に示したフローチャートに基づく処理は、MMU131のMMUテーブル603が、図2で示した構成になっており、このMMUテーブル603を書き換える処理である。
ステップS131において、MMU131のMMUテーブル603の書き換えが開始されると、まず、変数レベル1ディスクリプタポインタに、レベル1ディスクリプタテーブル201の先頭アドレスが代入される。ステップS132において、変数レベル1ディスクリプタポインタが指すアドレスからレベル1ディスクリプタ203が取得される。
ステップS133において、ステップS132の処理で取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在するか否かが判断される。ステップS133において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS136に処理が進められ、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在しないと判断された場合、ステップS134に処理が進められる。
ステップS134において、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動される。そして、ステップS135に処理が進められ、レベル1ディスクリプタポインタが最終に到達したか否かが判断される。
ステップS135において、レベル1ディスクリプタポインタが最終に到達したと判断されるまで、ステップS134に処理が戻され、変数レベル1ディスクリプタポインタが次のレベル1ディスクリプタポインタのアドレスに移動されるといった処理が繰り返される。そして、ステップS135において、レベル1ディスクリプタポインタが最終に到達したと判断されると、処理はステップS115(図9)に進められる。すなわち、MMUテーブルの書き換えが終了したと判断され、図9に示したフローチャートの処理に、処理が戻される。
一方、ステップS133において、レベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS136に処理が進められる。ステップS136において、変数レベル2ディスクリプタポインタに、レベル2ディスクリプタテーブル204の先頭アドレスが代入される。
ステップ137において、変数レベル2ディスクリプタポインタが指すアドレスからレベル2ディスクリプタ206が取得される。ステップS138において、ステップS137の処理で取得されたレベル2ディスクリプタ206内に物理ページ207が存在するか否かが判断される。ステップS138において、取得されたレベル2ディスクリプタ206内に物理ページ207が存在すると判断された場合、ステップS139に処理が進められ、取得されたレベル2ディスクリプタ206内に物理ページ207は存在しないと判断された場合、ステップS144に処理が進められる。
ステップS139において、ステップS137の処理で取得されたレベル2ディスクリプタ206内の物理ページ207が、ステップS116(図9)にて保存の対象となるRAM102内のアドレスの範囲内であるか否かが判断される。ステップS139において、レベル2ディスクリプタ206内の物理ページ207が、保存の対象となるRAM102内のアドレスの範囲内であると判断された場合、ステップS140に処理が進められ、保存の対象となるRAM102内のアドレスの範囲内ではないと判断された場合、ステップS144に処理が進められる。
ステップS140において、ステップS137で取得されたレベル2ディスクリプタ206のアクセス許可bit(図3のアクセス許可bit305)がチェックされ、その物理ページ207がアクセス許可にされているか否かが判断される。ステップS140において、物理ページ207へのアクセスが許可されていると判断された場合、ステップS141に処理が進められ、物理ページ207へのアクセスは許可されていないと判断された場合、ステップS144に処理が進められる。
ステップS141において、ステップS137の処理で取得されたレベル2ディスクリプタ206のアクセス許可bit305がアクセス禁止を表すbitに書き換えられる。ステップS142においてページ読み込みフラグ502(図5)がONにされる。そして、ステップS143において、書き換えられたレベル2ディスクリプタ206に対してマーキングが実行される。この処理は、ステップS137の処理で取得されたレベル2ディスクリプタ206のアクセス許可bit305が、本発明が適用されたソフトウェアにより書き換えられたのか、他のソフトウェア、例えば、本来のOS等の動作によって書き換えられたのかを識別するための情報を保存する(マーキングする)ために行われる。
ステップS143におけるマーキングの仕方については、アーキテクチャに依存し、本発明を適用するうえでの制限はない。例えば、レベル2ディスクリプタ206に使われていない空きbitが存在するのであれば、その空きbitをマーキングの情報を埋め込むbitとして使用することができる。また、別途テーブルを持たせてマーキングされたところとされていないところとが管理されるようにしても良い。いずれにせよ、仮にOS等が搭載されたシステムで、かつ、OSがこれらのbitを使用していた場合は、共存するような仕組みにすることで、本発明を実施することが可能である。
ステップS144において、変数レベル2ディスクリプタポインタが、次のレベル2ディスクリプタ206のポインタのアドレスに移動される。このステップS144への処理には、ステップS138において、レベル2ディスクリプタ206内に物理ページ207が存在しないと判断された場合、ステップS139において、レベル2ディスクリプタ206がRAM102を指していないと判断された場合、または、ステップS140において、物理ページ207へのアクセスは許可されていないと判断された場合にも来る。
ステップS145において、レベル2ディスクリプタポインタが最終に到達したか否かが判断される。ステップS145において、レベル2ディスクリプタポインタが最終に到達したと判断されるまで、ステップS137に処理が戻され、それ以降の処理が繰り返される。一方、ステップS145において、レベル2ディスクリプタポインタが最終に到達したと判断された場合、ステップS134に処理が進められる。ステップS134以降の処理については既に説明したので、その説明は省略する。
このようにして、MMU131のMMUテーブル603が書き換えられる。
次に、MMU131のMMUテーブル603が書き換えられた後に実行されるステップS114(図9)における処理について説明する。ステップS114において、ページディスクリプタの初期化処理が実行される。このページディスクリプタの初期化処理について、図11のフローチャートを参照して説明する。
ステップS151において、ページディスクリプタの初期化が開始されると、まずステップS152において、ページディスクリプタテーブルのポインタがテーブルの先頭に移動されることで、初期化が実行される。例えば、図4に示したページディスクリプタテーブル402が処理対象とされたときには、ページディスクリプタ401−1にポインタが移動される。
ステップS153において、ページディスクリプタ内に存在する読み込みフラグがOFFに設定される。例えば、ページディスクリプタ401−1の属性情報の1つであるページ読み込みフラグ502(図5)が、オフに設定される。
ステップS154において、ページディスクリプタテーブルのポインタが+1だけ加算され、次のページディスクリプタに処理が進められる。すなわち、例えば、ページディスクリプタ401−1にポインタが位置していたときには、ページディスクリプタ401−2にポインタが移動され、ページディスクリプタ401−2が処理対象とされる。
ステップS155において、ページディスクリプタテーブルのポインタが、最終テーブルか否かが判断される。ポインタの値が1だけ加算された結果、次のページディスクリプタに処理が移動するが、最終であった場合には、処理すべきページディスクリプタが存在しないことになる。よって、ステップS155において、ページディスクリプタのポインタが最終テーブルに位置すると判断された場合、処理が終了され、最終テーブルに位置してないと判断された場合、ステップS153に処理が戻され、異動先のページディスクリプタに対して、ステップS153以降の処理が実行される。
このようにして、ページディスクリプタ401内の属性情報であるページ読み込みフラグが全てオフ(OFF)に設定されることで、ページディスクリプタの初期化処理が実行される。その後、ステップS114(図9)に処理が進められ、それ以降の処理が、上述したように実行される。
[高速起動時の処理について]
次に、高速起動時の処理について説明する。高速起動は、ステップS103において、通常起動スイッチがONになっていないと判断されたとき、すなわち、高速起動にスイッチが切り替えられていると判断されたときに実行される。図12のフローチャートは、ステップS103において、通常起動スイッチがONにはなっていないと判断されたときに処理が進められるフローチャートであり、高速起動時の処理について説明するためのフローチャートである。
ステップS161において、高速起動モードで起動するため、通常起動フラグがOFF(高速起動フラグがON)に設定される。ステップS162において、必要に応じて、割込ベクタ605、ページフォルトハンドラ604、MMUテーブル603が、イメージが保存された時と同じRAM102のアドレスに読み込まれる。
ステップS163において、MMU131のMMUテーブルが読み込まれる。このステップS163において実行されるMMUテーブル読み込み処理については、図13のフローチャートを参照し、後述する。
MMUテーブルの読み込みが終わると、ステップS164に処理が進められる。ステップS164において、CPU101のアドレス空間が、物理アドレスモードから仮想アドレスモードに遷移される。物理アドレスモードから仮想アドレスモードに遷移させる場合、アドレス空間が変化するため、ステップS164における処理では、論理アドレスと物理アドレスが同一アドレス空間にマッピングされる。
ステップS165において、ステップS110(図9)で保存されたCPU101のレジスタの値が不揮発メモリ104から読み出され、CPU101に対して復帰される。CPU101やレジスタの種類は任意であり、本発明を適用するうえでの制限はない。
ステップS166において、ステップS109(図9)で保存されたI/Oのレジスタの値が、不揮発メモリ104から読み出され、I/O部109に対して復帰される。I/Oの種類や仕様は任意であり、本発明を適用するうえでの制限はない。
このように、レジスタなどが復帰されると、ステップS107(図9)に処理が進められる。ステップS107において、ソフトウェアが動作する。この場合、ステップS104乃至S106の処理が実行されずに、ステップS107においてソフトウェアが動作開始となる。よって、ステップS104乃至S106の処理が実行される分だけ、少なくともソフトウェアが動作開始できるまでにかかる時間が短縮できることになる。特に、ステップS105におけるOSの起動やMMUの初期化にかかる時間、およびステップS106におけるソフトウェアの起動にかかる時間をなくすことができることで、大幅な時間の短縮を期待することができる。
図12のフローチャートの説明に戻り、ステップS163で実行されるMMUテーブル読み込み処理の詳細について、図13のフローチャートを参照して説明する。
ステップS181において、MMUテーブル603の読み出しが開始されると、まずレベル1ディスクリプタテーブル201が読み出される。このレベル1ディスクリプタテーブル201は、ステップS116(図9)の処理で、不揮発メモリ104にRAM102の内容が保存されたが、その不揮発メモリ104に保存されている内容から、レベル1ディスクリプタテーブル201のみが読み出される。
ステップS182において、変数レベル1ディスクリプタポインタに、レベル1ディスクリプタテーブル201の先頭アドレスが代入される。ステップS183において、変数レベル1ディスクリプタポインタが指すアドレスからレベル1ディスクリプタ203が取得される。ステップS184において、ステップS183の処理で取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在するか否かが判断される。
ステップ184において、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断された場合、ステップS187に処理が進められ、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタは存在しないと判断された場合、ステップS185に処理が進められる。
ステップS185において、変数レベル1ディスクリプタポインタが、次のレベル1ディスクリプタポインタのアドレスに移動される。そして、ステップS186において、レベル1ディスクリプタポインタが、最終に到達したか否かが判断される。ステップS186において、レベル1ディスクリプタポインタが、最終に到達したと判断された場合、ステップS164(図12)に処理が進められる。すなわちこの場合、MMUテーブル603の読み込みが完了されたため、次の処理へ処理が進められる。
一方、ステップS186において、レベル1ディスクリプタポインタ203は、最終に到達していないと判断された場合、ステップS183に処理が戻され、それ以降の処理が繰り返される。ステップS183乃至S186が繰り返され、ステップS184において、取得されたレベル1ディスクリプタ203内にレベル2ディスクリプタテーブル204へのポインタが存在すると判断されると、ステップS187に処理が進められる。
ステップS187において、ステップS183で取得されたレベル1ディスクリプタ203内にある、レベル2ディスクリプタテーブル204へのポインタが、RAM102を指しているか否かが判断される。ステップS187において、レベル2ディスクリプタテーブル204へのポインタが、RAM102を指していると判断された場合、ステップS188に処理が進められ、レベル2ディスクリプタテーブル204へのポインタは、RAM102を指していないと判断された場合、ステップS185に処理が進められ、それ以降の処理が繰り返される。
ステップS188において、レベル2ディスクリプタテーブルが読み出される。このレベル2ディスクリプタテーブル204は、ステップS116(図9)の処理で、不揮発メモリ104にRAM102の内容として保存され、その不揮発メモリ104に保存されている内容から、レベル2ディスクリプタテーブル204のみが読み出される。その後、処理は、ステップS185に進められ、それ以降の処理が繰り返される。
このようにして、MMUテーブルの読み出しが行われる。
[ページフォルト発生時の処理について]
次に、図14のフローチャートを参照し、ページフォルトが発生したときに実行される処理について説明を加える。ステップS201において、ページフォルトが発生すると、割込ベクタ605にジャンプされる。すなわち、割込ベクタ605から、実際のページフォルト処理を行う割込ハンドラへのジャンプが実行される。
一般的なCPU101は、ページフォルトが発生した場合、割込処理として特定の割込ベクタにジャンプし、その割込ハンドラとして処理する。図14に示したページフォルト発生時の処理に係わるフローチャートは、ページフォルトの割込を処理する割込ハンドラを想定しているが、これらはCPU101のアーキテクチャに依存する。なお、本発明の適用は、CPU101のメーカや型番により、制限が加えられることはない。
ステップS202において、通常起動フラグがONであるか否かがが判断される。通常起動フラグは、例えば、ステップS104(図9)の処理でONに設定される。ステップS202において、通常起動フラグがONであると判断された場合、換言すれば、通常起動であると判断された場合、ステップS207に処理が進められる。一方、ステップS202において、通常起動フラグがONではないと判断された場合、換言すれば、高速起動であると判断された場合、ステップS203に処理が進められる。
ステップS203において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207が、マーキングされた物理ページ207であるか否かが判断される。マーキングは、ステップS143(図10)の処理で実行されたマーキングである。すなわち、マーキングされている物理ページ207は、本発明を適用したソフトウェアにより、アクセス禁止に書き換えられた物理ページ207である。
なお、一般的に物理ページ207とアドレスには、以下の計算式が満たされるが、これらはCPU101のアーキテクチャに依存するので、特にこの計算式に本発明の適用範囲が限定されるものではない。
物理ページ = アドレス/ページサイズ(例えば、上記した例では4KB)
この式が示すように物理ページは、アドレスをページサイズで除算したものとなる。
ステップS203において、ページフォルトが発生したアドレスに対応する物理ページ207は、マーキングされた物理ページ207であると判断された場合、ステップS204に処理が進められ、マーキングされていない物理ページ207であると判断された場合、ステップS207に処理が進められる。
ステップS204において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207が、ステップS116(図9)の処理で不揮発メモリ104に保存されたイメージから4KB分のみ読み出される。
ステップS205において、対象となる物理ページ207、即ちページフォルトが発生したアドレスに対応する物理ページ207の、レベル2ディスクリプタ206のアクセス許可bit305がアクセス許可に書き換えられる。ステップS206において、ステップS143(図10)の処理でマーキングした識別情報が解除される。
このようにして、ページフォルトが発生されたときの処理が実行されることで、高速起動が実現される。
一方、ページフォルトが発生したが、ステップS202において、通常起動フラグがONであると判断された場合、または、ステップS203において、対象ページはマーキングされていないと判断された場合、ステップS207に処理が進められる。ステップS207において、標準のページフォルトの処理が実行される。すなわち、通常起動のときや、本発明が適用されたソフトウェア以外のソフトウェア(OSなど)が、アクセスを不許可に設定していたような場合、通常起動や、アクセス不許可時の処理が実行される。
本発明を適用したシステムに、OS等が搭載されていた場合、標準的なページフォルトハンドラが通常実装されている。それに対して、上記したようなページフォルト機能がシステムに実装された場合、OS本来が行うページフォルト処理が、改めて実行される必要があるときもある。このステップS207の処理は、OS等のシステムに依存するものであり必須の処理ではないため、本実施の形態として省略することも可能である。
このようにして、ページフォルトが発生したときの処理が実行されることで、高速起動が実現される。
[ディスクリプタの書き換えについて]
次に、レベル2ディスクリプタの書き換えの処理について説明する。共有ページの機能を有する場合、例えば、物理ページ207(図2)が共有される場合、複数のタスクから、アクセスされる可能性がある。レベル2ディスクリプタ206は、物理ページ207を示すポインタや属性から構成されるディスクリプタであるが、所定のタスク(タスクAと記述する)が、レベル2ディスクリプタ206を書き換えた後、タスクAとは異なるタスクBが物理ページ207にアクセスする可能性がある。
そこで、高速起動後に共有メモリが確保された際、任意のタスク、例えばタスクAやタスクBがレベル2ディスクリプタ206を書き換える際に実行する処理について、図15のフローチャートを参照して説明する。
レベル2ディスクリプタ206の書き換え処理が実行されると、ステップS231において、書き換えを実行するタスクが、共有メモリを確保した際に割り当てられる物理ページ207に対するページディスクリプタのページ読み込みフラグ502(図5)がオン(ON)であるか否かを判断する。ページ読み込みフラグ502は、ページフォルトによる動的読み込みにより、そのページフォルトが発生したページに対して既に読み込み済かどうかを表すフラグであるので、オンと設定されているときには、ページフォルトが発生したページに対する読み込みが既に済んでいるときである。
ステップS231において、ページ読み込みフラグはオンであると判断された場合、ステップS232に処理が進められ、そのページを指し示すレベル2ディスクリプタ206のマーキング処理が実行される。このマーキングの処理は、ステップS143(図10)で実行される“書き換えたレベル2ディスクリプタ206に対してマーキングする”という処理と同様に行われる。
一方、ステップS231において、ページ読み込みフラグはオフであると判断された場合、ステップS233に処理が進められ、そのページを指し示すレベル2ディスクリプタ206のマーキングの解除が実行される。このマーキングの解除は、ステップS206(図14)で実行される“対象ページに対してマーキングを解除する”という処理と同様に行われる。
このようにして、レベル2ディスクリプタの書き換えが実行される。
[アイドルタイム時の処理について]
上記したように、本実施の形態を適用することで高速起動が可能となるが、さらなる高速化を実現するために、以下の処理が、上記した処理とは別のタイミングで行われるようにすることも可能である。一般的にコンピュータなどの制御装置は、何もしないアイドル時間が存在する。例えば、ユーザが何らかの操作を行うような制御装置の場合、特に何も操作がされない時間が発生する。この時間、すなわち、アイドルタイムを利用し、後の時点で読み込む必要があると思われるページを事前に読み込みしておくことで、さらなる高速起動を実現する。
OSの機能として、アイドルタイムを検出する機能がある。アイドルタイムを検出し、負荷が軽い時と判断されるときに、将来読むであろうと思われるページを事前読み込みを実行する。そのような処理について、図16のフローチャートを参照して説明する。
アイドルタイムの先行読み込み処理が開始されると、ステップS301において、ページディスクリプタテーブルを指すページディスクリプタテーブルポインタが先頭にされることで初期化が実行される。図11のフローチャートのステップS152の処理と同様に処理が実行される。例えば、図4に示したページディスクリプタテーブル402が処理対象とされたときには、ページディスクリプタ401−1にポインタが移動される。
ステップS302において、CPU101への負荷が低い状態であるか否かが判断される。CPUの負荷に関する情報は、OSが提供する場合が多く、そのOSや提供方法に基づいて提供される情報を利用して、ステップS302における処理が実行される。よって、CPUの負荷に関する情報の取得や、その負荷に対する判断は、OSや提供方法の実装依存となるが、本発明を適用するうえで、OSなどで制限が加えられることを意味するものではない。
ステップS302において、CPU101の負荷が高いと判断された場合、ステップS302の処理が繰り返される。すなわち、CPU101の負荷が低いと判断されるまで、ステップS302の処理が繰り返され、低いと判断された時点で、次の処理に処理が移行される。
ステップS303において、ページ読み込みフラグがオフ(OFF)であるか否かが判断される。読み込みを実行するタスクが、読み込みを実行したい物理ページ207に対するページディスクリプタのページ読み込みフラグ502(図5)がオフであるか否かを判断することで行われる。ページ読み込みフラグ502は、ページフォルトによる動的読み込みにより、そのページフォルトが発生したページに対して既に読み込み済かどうかを表すフラグであるので、オフと設定されているときは、ページフォルトが発生したページに対する読み込みが、まだ済んでいないときである。
ステップS303において、ページ読み込みフラグはオフであると判断された場合、ステップS304に処理が進められ、オフであると判断されたページ読み込みフラグがオン(ON)に設定される。そして、ステップS305において、ページディスクリプタに対応するページの一部がダミーリードされる。このダミーリードにおける読み込みサイズに制限は無い。1バイトでも読み込みが実行されれば、上記したページフォルトが発生し、そのページは読み込まれたことになる。
すなわち、ステップS304とステップS305において、読み込みが行われていないページ(ページ読み込みフラグがオフに設定されているページ)が読み込まれ、読み込みが実行されたので、そのことを示すために、ページ読み込みフラグがオンにされる。このようにして、読み込まれてないページが判断され、読み込みが実行される。
ステップS305において、ダミーリードが実行された場合、または、ステップS303において、ページ読み込みフラグはオンであると判断された場合、ステップS306に処理が進められ、ページディスクリプタテーブルのポインタが+1だけ加算され、次のページディスクリプタに処理対象が進められる。すなわち、例えば、ページディスクリプタ401−1にポインタが位置していたときには、ページディスクリプタ401−2にポインタが移動され、ページディスクリプタ401−2が処理対象とされる。
ステップS307において、ページディスクリプタテーブルのポインタが、最終テーブルか否かが判断される。ポインタの値が1だけ加算された結果、次のページディスクリプタに処理が移動するが、最終であった場合には、処理すべきページディスクリプタが存在しないことになる。よって、ステップS307において、ページディスクリプタのポインタが最終テーブルに位置すると判断された場合、処理が終了され、最終テーブルに位置してないと判断された場合、ステップS302に処理が戻され、それ以降の処理が実行される。
このようにして、CPU101の負荷が低いと判断されるときに、ダミーリードが実行されることで、将来読み込まれる可能性のあるページが先読みされる。上記したように高速起動を実現したときに、ページアクセス時にページフォルトが発生して動的にページを読み込む処理が発生するため、読み込むページ数が増大すると、処理が重くなり起動が遅くなってしまう可能性も考えられる。しかしながら、このようなアイドルタイムを利用した処理を実行することで、アイドルタイム時に先行して将来読まれると思われるページが読み込まれ、動的メモリの読み込み処理を減らすことができ、全体の速度向上を実現できる。
読み込むページ数が増大することにより処理が重くなるようなときでも、起動を高速化できることは勿論のこと、読み込むページ数が多くないときであっても、さらなる高速化を実現できることは言うまでもない。
[効果]
上記したように、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 (6)

  1. メモリを管理する機能を有する制御装置に、
    所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換え、
    前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出す
    ステップを含み、
    前記ページが複数のタスクで共有される共有ページである場合、前記共有ページを管理するページディスクリプタに、前記ページフォルトが発生したページに対して既に読み込み済か否かを表すフラグが属性情報として含まれ、
    既存のページに対して新規で前記共有ページを確保した場合、その新規に確保した前記共有ページに対応するページディスクリプタを書き直し、新規に確保した前記共有ページを確保した仮想メモリアドレスに対してもページフォルトが発生するようにする
    処理を実行するコンピュータが読み取り可能なプログラム。
  2. 前記所定のソフトウェアが起動された後、前記ページテーブルエントリを書き換え、その起動時のデータ、プログラムコード、テーブル、ページフォルトハンドラ、割り込みベクタ、およびレジスタを、前記メモリに記憶させる
    請求項1に記載のプログラム。
  3. 前記メモリのうち、書き換えの対象となる前記ページテーブルエントリを記憶しているのはRAMであり、順次読み出される前記ページを記憶しているのは不揮発メモリである
    請求項1に記載のプログラム。
  4. 組み込み型のコンピュータが読み込む
    請求項1に記載のプログラム。
  5. メモリを管理する機能を有する制御装置の制御方法において、
    所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換え、
    前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出す
    ステップを含み、
    前記ページが複数のタスクで共有される共有ページである場合、前記共有ページを管理するページディスクリプタに、前記ページフォルトが発生したページに対して既に読み込み済か否かを表すフラグが属性情報として含まれ、
    既存のページに対して新規で前記共有ページを確保した場合、その新規に確保した前記共有ページに対応するページディスクリプタを書き直し、新規に確保した前記共有ページを確保した仮想メモリアドレスに対してもページフォルトが発生するようにする
    制御方法。
  6. メモリを管理する機能を有する制御装置において、
    所定のソフトウェアの動作に必要なページに対して、全てのページでページフォルトが発生するようにページテーブルエントリを書き換える書き換え手段と、
    前記ソフトウェアが起動時に、前記ページテーブルエントリで、ページフォルトが発生し、そのページフォルトが発生したページを順次読み出す読み出し手段と
    を備え、
    前記ページが複数のタスクで共有される共有ページである場合、前記共有ページを管理するページディスクリプタに、前記ページフォルトが発生したページに対して既に読み込み済か否かを表すフラグが属性情報として含まれ、
    既存のページに対して新規で前記共有ページを確保した場合、その新規に確保した前記共有ページに対応するページディスクリプタを書き直し、新規に確保した前記共有ページを確保した仮想メモリアドレスに対してもページフォルトが発生するようにする
    制御装置。
JP2009261511A 2009-11-17 2009-11-17 プログラム、制御方法、並びに制御装置 Pending JP2011107925A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2009261511A JP2011107925A (ja) 2009-11-17 2009-11-17 プログラム、制御方法、並びに制御装置
PCT/JP2010/053628 WO2011061948A1 (ja) 2009-11-17 2010-03-05 プログラム、制御方法、並びに制御装置
CN2010800517732A CN102687113A (zh) 2009-11-17 2010-03-05 程序、控制方法以及控制装置
US13/510,019 US20120254499A1 (en) 2009-11-17 2010-03-05 Program, control method, and control device
EP10831347.9A EP2503458A4 (en) 2009-11-17 2010-03-05 PROGRAM, CONTROL PROCEDURE AND CONTROL DEVICE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009261511A JP2011107925A (ja) 2009-11-17 2009-11-17 プログラム、制御方法、並びに制御装置

Publications (2)

Publication Number Publication Date
JP2011107925A true JP2011107925A (ja) 2011-06-02
JP2011107925A5 JP2011107925A5 (ja) 2013-03-28

Family

ID=44059434

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009261511A Pending JP2011107925A (ja) 2009-11-17 2009-11-17 プログラム、制御方法、並びに制御装置

Country Status (5)

Country Link
US (1) US20120254499A1 (ja)
EP (1) EP2503458A4 (ja)
JP (1) JP2011107925A (ja)
CN (1) CN102687113A (ja)
WO (1) WO2011061948A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662690B (zh) * 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US9304711B2 (en) * 2012-10-10 2016-04-05 Apple Inc. Latency reduction in read operations from data storage in a host device
JP6381187B2 (ja) * 2013-08-09 2018-08-29 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
US9383935B1 (en) * 2014-12-16 2016-07-05 Vmware, Inc. Secondary CPU MMU initialization using page fault exception
CN106155507A (zh) * 2015-03-31 2016-11-23 北京搜狗科技发展有限公司 一种页面内容显示方法及电子设备
WO2017159620A1 (ja) * 2016-03-14 2017-09-21 オムロン株式会社 拡張性保有装置
US11341058B2 (en) * 2018-07-26 2022-05-24 Vmware Inc. Handling software page faults using data from hierarchical data structures

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520197A (ja) * 1991-07-09 1993-01-29 Hitachi Ltd 記憶管理システム及びマイクロプロセツサ
JP2005149225A (ja) * 2003-11-17 2005-06-09 Sony Corp コンピュータシステム及びその起動方法
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
WO2006109095A1 (en) * 2005-04-11 2006-10-19 Johnson Matthey Plc Steam reforming
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694451B2 (en) * 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
GB0505289D0 (en) * 2005-03-15 2005-04-20 Symbian Software Ltd Computing device with automated page based rem shadowing and method of operation
CN101180612A (zh) * 2005-03-31 2008-05-14 日本电气株式会社 计算机系统、存储器管理方法及其程序
US7523323B2 (en) * 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
JP5289153B2 (ja) * 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520197A (ja) * 1991-07-09 1993-01-29 Hitachi Ltd 記憶管理システム及びマイクロプロセツサ
JP2005149225A (ja) * 2003-11-17 2005-06-09 Sony Corp コンピュータシステム及びその起動方法
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
WO2006109095A1 (en) * 2005-04-11 2006-10-19 Johnson Matthey Plc Steam reforming
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム

Also Published As

Publication number Publication date
EP2503458A1 (en) 2012-09-26
WO2011061948A1 (ja) 2011-05-26
US20120254499A1 (en) 2012-10-04
EP2503458A4 (en) 2013-05-29
CN102687113A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
JP4986247B2 (ja) プログラム、制御方法、並びに制御装置
US8949512B2 (en) Trim token journaling
WO2011061948A1 (ja) プログラム、制御方法、並びに制御装置
KR102084816B1 (ko) Bpram을 사용한 소프트웨어 애플리케이션들의 레이아웃 및 실행
TWI388983B (zh) 用於促進快閃記憶體系統之快速喚起的方法及系統
US8347029B2 (en) Systems and methods for fast state modification of at least a portion of non-volatile memory
US8825946B2 (en) Memory system and data writing method
JP6259459B2 (ja) Bpramを使用したオペレーティング・システムのレイアウトおよび実行
US20140304497A1 (en) Electronic device having function of booting operating system by bootloader, method of performing the same function, and storage medium
KR20070070122A (ko) 하드 디스크 드라이브 캐시 메모리 및 재생 장치
KR20100126069A (ko) 메모리 장치 및 메모리 장치의 동작 방법
US20120311240A1 (en) Information processing apparatus, information processing method, and storage medium
TW201525869A (zh) 用於雙作業系統記憶體切換的系統及方法
JP5506418B2 (ja) プログラム、制御方法、並びに制御装置
US10635614B2 (en) Cooperative overlay
WO2022200760A1 (en) Accelerator interface mechanism for data processing system
US20190324868A1 (en) Backup portion of persistent memory
KR101582919B1 (ko) 전자장치 및 그 부팅방법
WO2011061949A1 (ja) プログラム、制御方法、並びに制御装置
CN115774681A (zh) 信息处理装置
JP4334312B2 (ja) 起動時間短縮演算装置およびデータロード方法
KR20030060342A (ko) 개인 휴대 정보 단말기의 부팅 방법
JP2007094497A (ja) 情報処理装置及び情報処理方法
US11061728B2 (en) Systems and methods for heterogeneous address space allocation
CN112579481B (zh) 数据处理方法、数据处理装置和计算装置

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130212

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140218