JP2014085907A - 情報処理装置、起動方法およびプログラム - Google Patents

情報処理装置、起動方法およびプログラム Download PDF

Info

Publication number
JP2014085907A
JP2014085907A JP2012235481A JP2012235481A JP2014085907A JP 2014085907 A JP2014085907 A JP 2014085907A JP 2012235481 A JP2012235481 A JP 2012235481A JP 2012235481 A JP2012235481 A JP 2012235481A JP 2014085907 A JP2014085907 A JP 2014085907A
Authority
JP
Japan
Prior art keywords
data
initialization
kernel
volatile memory
compressed data
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.)
Granted
Application number
JP2012235481A
Other languages
English (en)
Other versions
JP6080490B2 (ja
Inventor
Kensuke Kato
謙介 加藤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2012235481A priority Critical patent/JP6080490B2/ja
Priority to US14/061,218 priority patent/US9904559B2/en
Publication of JP2014085907A publication Critical patent/JP2014085907A/ja
Application granted granted Critical
Publication of JP6080490B2 publication Critical patent/JP6080490B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Power Sources (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 カーネル機能によるハイバネーション起動は、通常の起動シーケンスに伴う処理時間を要する為、起動時間が長くなってしまう。
【解決手段】 システム中断状態への移行が要求されると、圧縮データと非圧縮データを含むハイバネーションイメージを生成する。ハイバネーション起動処理では、まずメモリ管理領域のサイズをカーネル初期化のために必要なサイズにまで抑える。そして、ハードウェア初期化と並行して圧縮データを読み込み、さらに並行して圧縮データを伸張する。ハードウェア初期化にはブートコアを用い、データ読み込みは割り込み及びDMACを用い、伸張にはスレーブコアを用いる。カーネル初期化後は、未伸張の圧縮データの伸張と並行して非圧縮データを読み込む。
【選択図】 図2

Description

本発明は、ハイバネーション機構を有する情報処理装置を高速起動する技術に関する。
近年、情報処理装置において待機状態の消費電力を低減することができるハイバネーションが注目されている。ハイバネーションとは、システム中断機構である。システムが起動している状態でメモリやCPUレジスタ、デバイスの情報(以下、ハイバネーションイメージと称す)をハードディスクなどの不揮発性記憶装置に退避する。その後電源を切っても、次回起動時は退避させたハイバネーションイメージを読み込むことで以前と同じ状態に復帰する(以下、ハイバネーション起動と称す)。ハイバネーションは、システムの起動時間の短縮を目的として用いられることもある。
ハイバネーションによるシステムの起動方式は大きく2種類に分類される。BIOS機能もしくはブートローダ機能により復帰を行う方式と、オペレーティングシステムのカーネル機能により復帰を行う方式が存在する。
カーネル機能によるハイバネーション起動では、カーネルの初期化を行った後に、予め不揮発性記憶装置に記憶されたハイバネーションイメージを読み込むことで、ハイバネーション移行前の状態を復元する。BIOSによるハイバネーションと比較すると、通常の起動シーケンスを実行することでデバイスの初期化を行う為、汎用性に優れている。
ここで、カーネル機能によるハイバネーションは、BIOSやブートローダによるハイバネーションと比較すると、起動シーケンスに伴う処理時間を要することから、起動時間が長い。そこで、特許文献1のように、ハイバネーションイメージ全体を圧縮して不揮発性記憶装置に退避させる手法がある。
特開2001−022464号公報
DMAコントローラ(ダイレクトメモリアクセスコントローラ)を用いると、CPUによる特定の処理と並行して記憶装置間で情報を読み書きすることができる。そこで、ハイバネーション起動にDMACを組み込むことができると、カーネル初期化と並行してハイバネーションイメージを読み込むことが可能となり、ハイバネーション起動時間を短縮することができる。ただし、Linux(登録商標)などの複雑なメモリ管理機構を備えたカーネル上では、DMAコントローラはカーネルが指定する不特定の領域やカーネルが管理する領域にアクセスし難いため、メモリ領域の任意のアドレスにデータを書き込むことが難しい。そのため、従来のハイバネーション起動方式では、カーネル初期化とDMACで並行してハイバネーションイメージを読み込むことが困難である。
例えば、特許文献1のようにハイバネーションイメージを圧縮する技術を利用して、カーネル初期化と並行して圧縮データの読み込みを実現するには、読み込み先となる領域が必要になるが、この領域は、カーネル初期化時の空き領域から単純に確保することは難しい。なぜなら、伸張後のデータはハイバネーション移行前と同一のアドレスに配置する必要があり、この伸張先が圧縮データの読み込み先と衝突してしまう可能性があるためである。
また、マルチコア環境であれば、特定のコアが処理を行っている間に、他のコアに異なる処理を行わせることができる。ハイバネーション起動であれば、カーネル初期化と並行して圧縮イメージを伸張させることが有効であると考えられる。しかし、DMAコントローラと同様の理由で、特定のコアによりカーネル初期化が行われている間は、残りのコアが任意のメモリ領域へハイバネーションイメージを書き込むことが困難である。そのため、従来のハイバネーション起動方式では、カーネル初期化と並行して圧縮イメージを伸張することも困難である。
揮発性メモリと、前記揮発性メモリに保持されている少なくとも一部のデータを圧縮データに圧縮する圧縮手段と、前記圧縮手段で圧縮を行わなかった非圧縮データと前記圧縮データとをハイバネーションイメージとして保持する不揮発性メモリと、前記揮発性メモリの一部を利用して行われるカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域へ読み込む初期化時データ読み込み手段と、前記カーネルの初期化と並行して、前記揮発性メモリに読み込んだ圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域に伸張する初期化時データ伸張手段と、前記初期化時データ伸張手段により伸張したデータを利用してシステムを起動させる起動手段とを有することを特徴とする。
本発明によれば、マルチコアを効率的に利用してより高速な起動が可能になる。
情報処理装置の構成を示す概略図である。 本発明のハイバネーション機構の機能構成を示す概略図である。 ハイバネーションイメージの生成処理を示すフローチャートである。 ハイバネーションイメージのフォーマットを示す図である。 システムの起動処理を示すフローチャートである。 カーネル初期化時のハイバネーションイメージの流れについて示す図である。 ハイバネーションイメージの復帰処理を示すフローチャートである。 ハイバネーション起動時の仮想メモリについて示す図である。
図1に情報処理装置100の概略構成を示す。CPU101や、ダイレクトメモリアクセスコントローラ(以下、DMACと称す)102は、DRAM(DDRSDRAMなどを含む)を備える揮発性メモリ103に対してデータを読み書きする。入出力制御部(以下、I/Oコントローラと称す)104は、CPU101やDMAC102などの要求に基づいて、不揮発性メモリとしての不揮発性記憶装置(フラッシュメモリ、HDD、SSDなど)105に対する読み書きを行う。デバイス106は、CPU101によって初期化される周辺機器であって、PCI接続のグラフィックボードやUSB接続のスキャナ、プリンタなど様々な機器をデバイス106として用いることができる。デバイス106は其々、自身の状態を保持するステータスレジスタや処理に用いる値(画像処理のパラメータに対応する値や、処理モードを示す値)を保持するコンフィギュレーションレジスタを備える。なお、デバイス106は複数あってもよい。
CPU101は複数のプロセッサコアを備え、不揮発性記憶装置105に含まれるプログラムをメモリ103に展開し、メモリ103からプログラムをフェッチして後述の処理を実行する。
カーネル初期化は、CPU101の特定のプロセッサコアを主に用いて行われる。このプロセッサコアを、以下の説明ではブートコアと称す。また、ブートコア以外のコアを、以下の説明ではスレーブコアと称す。
ハイバネーションとは、システムの状態の保存と、保存したシステムの状態を復元する技術であり、保存・復元されるシステムの状態を示すデータをハイバネーションイメージと呼称する(ハイバネーションイメージのフォーマットは後述する)。なお、ハイバネーションイメージは、不揮発性記憶装置105に保存される。
ここで、一般的なハイバネーション処理の流れを示す。ユーザ(又はユーザアプリケーション)がシステム中断を要求すると、メモリ103に書き込まれているデータ及び、その他のデバイス106の状態を表すデータ、CPU101のレジスタ値をもとにハイバネーションイメージが生成され、それが不揮発性記憶装置105へ書き込まれる。情報処理装置の電源を切り、再び起動すると、カーネルの初期化が開始される。カーネルの初期化直後に、ハイバネーションイメージが不揮発性記憶装置105からメモリ103へ読み込まれ、システム中断直前の状態に戻る。以下の説明では、ハイバネーションイメージを用いた起動シーケンスをハイバネーション起動と称す。
本実施形態では、Linux(登録商標)のバージョン2.6.18を従来手法として、ハイバネーション起動の高速化について説明する。
Linux(登録商標)では、メモリ管理をページ単位で行う。以下で述べる領域は、ひとつまたは複数のページから構成されるメモリの範囲を意味する。
図2は、本実施形態のハイバネーション機構の構成を示す図である。(A)から(E)において、同一システムにおけるハイバネーションの各状態を示す。
(A)ハイバネーションイメージ生成時について示す。203は圧縮部である。メモリ200における使用中領域をページごとに圧縮し、ハイバネーションイメージの一部として不揮発性記憶装置201へ出力する。ただし、ページによっては圧縮率が低く、圧縮を行わない方が望ましいページも存在する。そのため、圧縮率の低いページであれば、非圧縮のままハイバネーションイメージの一部として不揮発性記憶装置201へ出力する。ただし、ハイバネーション処理を行うための変数を格納する領域(以下、ハイバネーション処理用領域と称す)は、ハイバネーションイメージに含めない。ハイバネーション処理用領域は、システムが再起動されてもアドレス値が変わらないようにするため、ハイバネーション起動時にカーネル管理となる領域(後述)から静的に確保する。
202は作業領域データ生成部(領域情報生成部)である。本実施形態では、カーネル初期化中に全圧縮データの読み込みを試みるため、その読み込みのための領域をハイバネーションイメージ生成時に未使用領域から確保する。そこで、作業領域データ生成部202では、メモリ200における未使用領域のアドレスを収集し、この情報をページ変換テーブルにまとめ、ハイバネーションイメージの一部として不揮発性記憶装置201へ出力する。このページ変換テーブルのデータを作業領域データ(又は領域情報)と称し、そのデータが示す領域を作業領域と称す。
(B)カーネル初期化開始時について示す。204はメモリ制限部であり、205はメモリ初期化機構である。メモリ制限部204はメモリ初期化機構205に対してオペレーティングシステムが管理するメモリ領域の制限を指示し、メモリ初期化機構205はこの情報をもとにメモリ200の初期化を行う。この制限により、メモリ200はカーネル管理領域とカーネル管理外領域に分かれる。この制限の目的は、意図的にカーネル管理外領域を作りだすことで、ブートコアによるカーネルの初期化処理と並行して、カーネル管理外領域にデータの読み込み及び伸張を可能にすることにある。
206は作業領域有効化部である。まず、メモリ200のカーネル管理外領域に、作業領域データ生成部202で生成した作業領域データを読み込む。そして、この情報の一部を現在使用されているページ変換テーブルに上書きすることで、圧縮データを格納するための作業領域を使用可能にする。
(C)カーネル初期化時について示す。207はカーネル初期化機構である。メモリ200のメモリ初期化機構205によって初期化されたカーネル管理領域の範囲で、ブートコアによってカーネルの初期化を行う。208は初期化時データ読み込み部であり、209はDMACである。初期化時データ読み込み部208は、DMAC209を用いることでカーネル初期化機構207による初期化処理と並行し、不揮発性記憶装置201に保存されたハイバネーションイメージを作業領域へ順に読み込む。ただし、非圧縮データはハイバネーションイメージ生成時にそのデータが元々存在していた領域に読み込む。210は初期化時データ伸張部(1次伸張部)である。初期化時データ読み込み部によってメモリ200に読み込まれた圧縮データを、さらにスレーブコアによってカーネル初期化と並行し、ハイバネーションイメージ生成時にそのデータが元々存在していたメモリ200の領域へ伸張する。
(D)カーネル初期化後について示す。211は初期化後データ読み込み部である。まず、初期化時データ読み込み部208が非圧縮データ以外の読み込みを完了していない場合は、該当データの読み込みを完了させる。212は初期化後データ伸張部(2次伸張部)である。メモリ200に読み込まれた未伸張の圧縮データを、ハイバネーションイメージ生成時にそのデータが元々存在していたメモリ200の領域へ伸張する。この初期化後データ伸張部212による伸張と並行して、初期化後データ読み込み部211は、DMAC209を用いて、非圧縮データをハイバネーションイメージ生成時にそのデータが元々存在していたメモリ200の領域へ読み込む。初期化後データ読み込み部211では、カーネル管理領域及びカーネル管理外領域を区別する必要はない。
(E)ハイバネーション起動後について示す。(B)から(D)の処理により、メモリ200はハイバネーション処理用領域を除き(A)と同様の状態に復帰される。以下の説明では、初期化後データ読み込み部211の処理を、メモリ復帰処理と称す。
また、作業領域データ生成部202及び圧縮部203、メモリ制限部204、メモリ初期化機構205、カーネル初期化機構207、作業領域有効化部206、初期化時データ読み込み部208、初期化時データ伸張部210、初期化後データ読み込み部211、初期化後データ伸張部212は、不揮発性記憶装置に格納されているプログラムに基づいて処理される。
ここからは、本実施形態におけるハイバネーションイメージ生成の流れを示す。
図3は、ユーザ(又はユーザアプリケーション)がシステム中断状態への移行を要求してからシステムが停止するまでのCPU101の処理の流れを示したフローチャートである。まず概略を説明すると、ステップS300でCPU101がプロセススケジューラを停止し、ステップS301でCPU101が各デバイスを停止しCPU101への割り込みを制限し、ステップS302でCPU101がCPUレジスタの退避を行う。そして、ステップS303でCPU101がハイバネーションイメージを生成して出力し、ステップS304でCPU101がシステムの停止を行う。
以下の説明では、ステップS300及びステップS301、ステップS302をシステム中断処理と称して図3のフローチャートの詳細を説明する。ステップS300では、CPU101がすべてのプロセスを停止すると、これ以降はプロセスの処理によるメモリ内容の変更が発生しない。ステップS301では、CPU101が各デバイスの状態をメモリ内に保存し、これ以降のデバイスへのアクセスを無効にする。ステップS302では、CPU101がCPUレジスタの内容をメモリ上に保存する。このシステム中断処理により、システムの状態を表す全ての情報がメモリに保存される。よって、このメモリ内容を不揮発性記憶装置に保存しておき、必要に応じてこれをメモリに読み出し、保存した各デバイスやCPUレジスタの状態を再設定し、割り込み及びプロセススケジューラを再開することで、システムの状態を復元することができる。
ステップS303では、CPU101がシステム中断処理によりシステムの状態が保持されているメモリ領域から、ハイバネーションイメージを生成し不揮発性記憶装置へ出力する。図4は、ハイバネーションイメージのフォーマットを示した図である。ヘッダ400は、ハイバネーションイメージに関する情報であり、有効なハイバネーションイメージであるかどうかを示す識別子及び非圧縮データのサイズ、圧縮データのサイズを含む。作業領域データ401は、ページ変換テーブルのデータを格納する。圧縮データ403は、圧縮したページ及び圧縮後のサイズ、伸張先アドレスを格納する。非圧縮データ404は非圧縮のページを格納し、非圧縮データアドレス402は非圧縮データ404の読み込み先アドレスを格納する。
次に、作業領域データ401のフォーマットについて示す。
作業領域データ401は、ハイバネーション起動時にハイバネーションイメージの読み込み先となる作業領域を示すデータであり、ページ変換テーブルとして格納する。このように格納することで、物理メモリ上では不連続な未使用ページを、仮想メモリ上では連続した領域として扱うことが可能になる。ページ変換テーブルは、1個以上の変換用ページによって段階的に構成される。以下の説明では、1段階目の変換用ページをページグローバルディレクトリと称し、2段階目以降の変換用ページをページテーブルと称す。
ページグローバルディレクトリ409の作業領域に該当する項目には、複数のページテーブル410の物理メモリアドレス及び状態フラグを記載する。そして、ページ変換テーブルとしての段階に応じ、1段階目の変換用ページから順に並べて連結する。
さらに、作業領域データ401のページ変換テーブルは、ハイバネーションイメージ生成時のカーネル管理領域のマッピング情報も含める。この情報は、ハイバネーション起動時に、圧縮データの伸張先へアクセスするために用いる。
次に、非圧縮データアドレス402及び非圧縮データ406のフォーマットについて示す。
非圧縮データアドレス402と、非圧縮データ406は対応関係にあり、非圧縮データ406のN番目に格納されたデータの配置先は、非圧縮データアドレス402のN番目に格納されたアドレスとなる。N番目に格納された非圧縮ページアドレス411と、同じくN番目に格納された非圧縮ページ412は対応関係にある。非圧縮データアドレス402の情報の個数と、非圧縮データ406の情報の個数は、それぞれ等しい。
非圧縮データ406は、カーネル管理外領域に復帰させる非圧縮データ407及び、カーネル管理領域に復帰させる非圧縮データ408の2種類のデータを含む。このように分割する理由は、カーネル初期化時に読み込み可能なハイバネーションイメージが、先頭のヘッダ400から非圧縮データ407までに限定され、非圧縮データ408はカーネル初期化後にしか読み込むことができないためである。そのため、非圧縮データ407は、非圧縮データ408より前方に配置する。そして、カーネル初期化が完了するまでは、ヘッダ400から非圧縮データ407までを読み込み対象とする。
最後に、圧縮データ403のフォーマットについて示す。
413は1ページ分のデータを圧縮した際に生成する情報を示しており、圧縮ページサイズ414及び圧縮ページアドレス415、圧縮ページ416を含む。圧縮はページ単位で行う。これらの情報をもとに、1ページ分のデータをメモリに復元することができる。
例えば、アドレスサイズが32bitのCPUでは、圧縮ページサイズ414を12Bit、圧縮ページアドレス415を20bit(4GB分のページを指定可能なサイズ)とする。この場合、圧縮ページ416は、12bitで表現可能な4096byte未満でなければならない。圧縮後のサイズが4096byte以上のものは、圧縮前のページを非圧縮データ406に格納する。
次に、圧縮データ403及び非圧縮データ406へ格納するページについて示す。圧縮データ403のサイズは、上限となるサイズを予めユーザ(又はユーザアプリケーション)が指定してもよい。また、作業領域には、圧縮データ403だけでなく非圧縮データアドレス402及び、圧縮データ伸張時のスタックも格納する。そのため、圧縮データ403のサイズは、作業領域サイズからこれらのサイズを除いた値より小さくなければならない。圧縮データ403のサイズが上限に達しこれ以上ページを格納することができない場合、未格納のページを非圧縮データ406へ格納する。
圧縮データ403は、非圧縮データ406同様に、カーネル管理外領域に復帰させる圧縮データ404及び、カーネル管理領域に復帰させる圧縮データ405の2種類から構成される。このように分割する理由も、非圧縮データ406を分割する理由と同様である。そして、カーネル初期化が完了するまでは、圧縮データ405のみを伸張対象とする。
以上の処理により生成されるハイバネーションイメージは、不揮発性記憶装置を有効にした後、指定の領域へ、ファイルシステムに依存しない型式で、物理的に連続した状態で格納する。
次に、本実施形態におけるハイバネーション起動の流れを示す。情報処理装置がONになると、BIOS及び、必要に応じブートローダが処理を行い、カーネル初期化を開始する。
図5は、本実施形態における、カーネル初期化の開始からハイバネーションイメージを復帰するまでのフローチャートと、システム復帰処理の詳細を示したフローチャートである。まずは前者について示す。ステップS500では、DMAC102が不揮発性記憶装置の所定領域の情報を読み込み、CPU101が読み込まれた情報に不揮発性記憶装置の所定の領域に有効なハイバネーションイメージが存在することを確認する。ステップS501では、CPU101がメモリ管理機構の初期化を行う。ステップS502では、CPU101が割り込み機構の初期化を行う。ステップS503では、CPU101がスレーブコアの初期化を行う。ステップS504では、CPU101がハイバネーションイメージの並行読み込み及び、圧縮データの伸張を開始する。ステップS505では、CPU101がその他機能の初期化を行い、並行してDMAC102が非圧縮データアドレス402及び圧縮データ403、非圧縮データ407を順に読み込む。ステップS506では、CPU101とDMAC102がメモリ復帰処理及びその準備を行う。
ステップS500では、CPU101がDMAC102及びI/Oコントローラ104を初期化し、DMAC102が不揮発性記憶装置の所定の領域に保存されたハイバネーションイメージのヘッダ400をメモリへ読み込む。ヘッダ400に含まれる識別子が有効であることをもって、ハイバネーションイメージが不揮発性記憶装置に格納されていることをCPU101によって判定する。図5は、不揮発性記憶装置にハイバネーションイメージが存在する場合を示すフローチャートである。なお、不揮発性記憶装置にハイバネーションイメージが格納されていないと判断した場合、システムを通常起動する。
ステップS501では、CPU101がカーネルの管理するメモリの範囲を指定の大きさに制限し、メモリ管理機構の初期化を行う。具体的には、メモリマップを変更することで、カーネル管理領域の範囲を制限する。カーネル初期化処理に要求される必要最低限のメモリの大きさから決定され、制限サイズは少なくともカーネル初期化に必要なサイズ以上を確保する。この処理により、カーネル管理領域とカーネル管理外領域の2種類の領域をメモリに確保する。この制限は、メモリ復帰処理を完了することで解除される。
さらにステップS501では、CPU101がカーネル管理領域へアクセスするためのページ変換テーブルを生成する。このページ変換テーブルのページグローバルディレクトリをカーネルPGD(Page Global Directory)と称す。また、作業領域データ401のページ変換テーブルをメモリに読み込む。このページ変換テーブルのページグローバルディレクトリをハイバネーションPGDと称す。そして、ハイバネーションPGDの作業領域に関する情報を、カーネルPGDのカーネル初期化では利用されない領域に上書きすることで、作業領域を使用可能に確保する。
ただし、メモリに読み込まれた作業領域データ401のページ変換テーブルは、カーネル初期化用のデータ及び圧縮データ、非圧縮データ、伸張後のデータによって上書きされてはならない。そこで、作業領域データ401におけるページグローバルディレクトリは常に1つであるため、ハイバネーション処理用領域に読み込む。これにより、上書きを防ぐことができる。しかし、作業領域データ401におけるページテーブルは、その数が固定ではないため保持するための領域をカーネル管理領域に予約しておくことが難しい。そこで、カーネル管理領域に各ページテーブルを読み込み、次に、カーネル管理外領域を一時的にカーネルから使用可能にし、カーネル管理外領域の予め決めてある領域に各ページテーブルを移動する。
ステップS504では、ハイバネーションイメージの並行読み込み及び、圧縮データの伸張を開始する。まず、並行読み込みを行うための手段として、DMAC102ステップS502で初期化した割り込み機構を用いる。DMACでは、仮想アドレスではなく物理アドレスを指定する必要がある。そのため、ページ変換テーブルを用いて、作業領域の読み込み先となる仮想アドレスを物理アドレスに変換し、DMAC102に指定する。次に、伸張を行う手段として、S503で初期化したスレーブコアを用いる。DMAC102によって読み込まれたハイバネーションイメージの圧縮データ404を伸張する。
図6は、カーネル初期化時のハイバネーションイメージの流れについて示した図である。600はメモリであり、カーネル管理領域601とカーネル管理外領域602を有する。603はブートコアであり、ブートコア603はカーネル管理領域601にのみアクセスする。このため、カーネル管理外領域602はブートコア603からアクセスされることはなく、独立した領域として利用することができる。604はDMAC、605は不揮発性記憶装置であり、DMAC604はブートコア603によるカーネルの初期化と並行して、非圧縮データアドレス402及び圧縮データ403を、カーネル管理外領域602の作業領域の先頭から順に読み込む。上記データを全て読み込んだ場合、次に非圧縮データ407を、非圧縮データアドレス402に従って読み込む。非圧縮データ407のページは、前述の通り、作業領域を除く領域及びカーネル管理外領域602へ復帰するため、作業領域及びカーネル管理領域を上書きすることはない。606はスレーブコアであり、さらにブートコア603によるカーネルの初期化と並行して、DMAC604によって読み込まれた圧縮データ404の伸張を行う。並行読み込み同様、この伸張処理によって作業領域及びカーネル管理領域を上書きすることはない。ただし、圧縮データ405の伸張先はカーネル管理領域601であり、カーネル初期化時に伸張を行うとカーネル管理領域601を上書きしてしまうため、まだ圧縮データ405の伸張を行うことはできない。スレーブコアが複数利用可能な場合は、伸張処理を多重に行ってもよい。
一般的にDMACは、データ転送に用いるパラメータ(転送元アドレス、転送先アドレス、データサイズ)をCPUにより指定すると、不揮発性記憶装置からメモリへCPUとは非同期に転送を行う。また、DMACは一度に転送可能なサイズが決められているため、特定サイズの転送ごとに、CPUにより再び新たなパラメータを指定する必要がある。そこで本実施形態では、DMAC102による転送完了を通知する割り込み通知を利用し、次に読むべきデータを指定して新たな読み込みを実行する。また、タイマを利用して一定時間ごとに割り込みを発生させ、CPU101がDMAC102の読み込み状況を確認し、読み込みが完了していれば次に読むべきデータを指定して新たな読み込みを実行するようにしてもよい。他にも、スレーブコアを利用して、DMAC102の読み込み状況を逐次確認し続けてもよい。
圧縮ページ416の伸張は、圧縮ページサイズ414及び圧縮ページアドレス415に応じて行う。圧縮ページアドレス415は、作業領域以外を指し示すため、未伸張の圧縮データを上書きすることはない。
DMAC102によるカーネル初期化時の並行読み込みは、非圧縮データアドレス402及び圧縮データ403、非圧縮データ407を読み込み終えるか、カーネル管理領域のメモリ復帰の準備が完了するまで継続して行う。スレーブコアによる並行伸張も、圧縮データ404の伸張が完了するか、カーネル管理領域のメモリ復帰の準備が完了するまで継続して行う。
図7は、システム復帰処理の詳細を示したフローチャートである。ステップS707でCPU101がプロセススケジューラを停止し、ステップS708でCPU101が各デバイスを停止し割り込みを制限する。さらに、ステップS709でCPU101が仮想メモリをカーネルPGDからハイバネーションPGDへ切り替え、ステップS710でCPU101がスタックを切り替え、ステップS711でCPU101がDMAC102による並行読み込みを停止させ、ステップS712でCPU101とDMAC102がメモリの復帰を行う。
ステップS709では、CPU101がページ変換テーブルの切り替えを行う。x86環境では、CPUレジスタCR3の値をカーネルPGDのアドレスからハイバネーションPGDのアドレスに書き換えることで、切り替えが完了する。この処理を行う理由は2点ある。1点目は、カーネルPGDはメモリ制限が反映されたマッピングであり、伸張先へアクセスするには不十分なためである。ハイバネーションPGDはメモリ制限前のマッピングであるため、このページ変換テーブルに切り替えることで全ての伸張先へアクセスすることができるようになる。2点目は、メモリ復帰処理時にカーネルPGDが書き変わるためである。前述の通り、ハイバネーションPGDはハイバネーション処理用領域に確保するため、メモリ復帰処理時に書き変わることはない。
図8は、本実施形態をx86環境に適用した場合の、ハイバネーション起動時の仮想メモリの一例を示した図である。800はCPUレジスタCR3であり、801はカーネルPGD、804はハイバネーションPGDである。802はメモリ制限されたカーネル管理領域のマッピング情報であり、805はメモリ制限されていないカーネル管理領域のマッピング情報、803及び806は作業領域マッピング情報である。作業領域マッピング情報803と作業領域マッピング情報806の情報は、それぞれ同一である。ステップS708以前におけるCPUレジスタCR3である800はカーネルPGD801を示し、ステップS709によりCPUレジスタCR3である800はハイバネーションPGD804を示すようになる。
ステップS710では、CPU101がスタックの使用先を切り替える。これは、メモリ復帰処理時に従来のスタックの内容が書き換えられてしまうためである。また、切り替え先のスタックも上書きを防ぐ必要があるため、作業領域の末尾を指定する。なお、スタックの復帰はS1006で行う。
ステップS711では、CPU101はDMAC102が停止するまで待機を行う。ただし、既にDMAC102による並行読み込み処理が完了している場合は、CPU101は待機しない。
ステップS712では、圧縮データの伸張と並行して、DMAC102がハイバネーションイメージを読み込む。伸張処理は、ブートコア及びスレーブコアによって、ページごとに行う。並行読み込みは、割り込みではなく、ブートコアのポーリングによって実現する。ブートコアが、各ページを伸張するループ処理の中でDMAC102の完了を逐次チェックし、DMAC102に新たなデータ転送パラメータを指定する。この処理は、ブートコアではなくスレーブコアで行ってもよい。ステップS712では、カーネル処理は行われない為、カーネル管理領域及びカーネル管理外領域の両方のデータを書き換えることができる。以上の処理を、全ての圧縮データの伸張と全ての非圧縮データの読み込みの両方が完了するまで繰り返す。
以上の処理により、メモリは、ハイバネーション処理用領域を除き、ステップS301直後と同様の状態へ復帰される。また、メモリを復帰した後は、CPU101の処理によって一般的なハイバネーション起動のようにCPUレジスタ値の復帰及び、各デバイス情報の復帰、割り込みの再開、プロセススケジューラの再開を行い、ハイバネーション起動を完了させる。
以上のように本実施形態では、ハイバネーションイメージを利用してシステムを再び起動する際に、カーネル初期化と並行してハイバネーションイメージの読み込み、さらにカーネル初期化と並行して圧縮されたハイバネーションイメージを伸張し、カーネル初期化後の伸張と並行して非圧縮データを読み込むことにより、従来の方法と比べて高速にシステムを復元することができる。
なお、初期化時データ読み込み部(第1読み込み部)209と初期化後データ読み込み部(第2読み込み部)211とは一体的な構成であってもよい、その場合はDMACとして一体的に構成することが好ましい。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が、コンピュータが読み取り可能なプログラムを読み出して実行する処理である。

Claims (14)

  1. 揮発性メモリと、
    前記揮発性メモリに保持されている少なくとも一部のデータを圧縮データに圧縮する圧縮手段と、
    前記圧縮手段で圧縮を行わなかった非圧縮データと前記圧縮データとをハイバネーションイメージとして保持する不揮発性メモリと、
    前記揮発性メモリの一部を利用して行われるカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域へ読み込む初期化時データ読み込み手段と、
    前記カーネルの初期化と並行して、前記揮発性メモリに読み込んだ圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域に伸張する初期化時データ伸張手段と、
    前記初期化時データ伸張手段により伸張したデータを利用してシステムを起動させる起動手段とを有することを特徴とする情報処理装置。
  2. 前記カーネルの初期化の後に前記揮発性メモリに読み込んだ圧縮データを伸張する初期化後データ伸張手段と、前記初期化後データ伸張手段と並行して、前記不揮発性メモリに保持されている前記非圧縮データを前記揮発性メモリに読み込む初期化後データ読み込み手段と、をさらに有し、前記起動手段は前記初期化後データ伸張手段により伸張したデータと前記初期化後データ読み込み手段によって前記揮発性メモリに読み込んだ非圧縮データとに基づいてシステムを起動させることを特徴とする請求項1に記載の情報処理装置。
  3. 前記揮発性メモリに、前記カーネルの初期化に利用するカーネル管理領域と前記カーネルの初期化に利用しないカーネル管理外領域とを割り当てるメモリ管理手段をさらに有することを特徴とする請求項1に記載の情報処理装置。
  4. 前記起動手段は、前記不揮発性メモリに前記ハイバネーションイメージが退避されていない場合は前記ハイバネーションイメージを使わない通常起動を行うことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記不揮発性メモリに前記ハイバネーションイメージを退避させる退避手段をさらに有することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記退避手段は、ファイルシステムに依存しない型式のファイルのハイバネーションイメージを前記不揮発性メモリに退避することを特徴とする請求項5に記載の情報処理装置。
  7. 前記圧縮手段は、前記揮発性メモリに保持されているデータを所定のサイズごとに圧縮し、圧縮率に応じて圧縮データとして保持するかどうかを判断することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記メモリ管理手段は、前記カーネル管理領域のサイズを、前記カーネルの初期化に必要なサイズ以上とすることを特徴とする請求項3に記載の情報処理装置。
  9. 前記初期化時データ読み込み手段は、DMACを用いて前記不揮発性メモリに保持されている前記圧縮データを前記カーネル管理外領域へ読み込み、
    前記不揮発性メモリに保持されている全ての前記圧縮データの読み込みが完了した場合は、前記非圧縮データを前記カーネル管理外領域へ読み込む
    ことを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記初期化時データ伸張手段は、前記カーネルの初期化で用いられていないスレーブコアを用い、前記揮発性メモリに読み込まれた前記圧縮データを前記カーネルの管理外の領域へ伸張することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
  11. 前記初期化時データ伸張手段と前記初期化後データ伸張手段とは、伸張後のデータが未伸張の前記圧縮データを上書きしないよう前記揮発性メモリに伸張することを特徴とする請求項2に記載の情報処理装置。
  12. 前記初期化後データ読み込み手段は、DMACを用い、前記不揮発性メモリに保持されている前記非圧縮データを前記揮発性メモリへ読み込むことを特徴とする請求項2に記載の情報処理装置。
  13. 揮発性メモリと、圧縮データと非圧縮データとを含むハイバネーションイメージを保持する不揮発性メモリと、を備える情報処理装置の起動方法であって、
    前記揮発性メモリに展開するカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを前記カーネルの初期化に利用しない領域へ読み込み、読み込んだ圧縮データを前記カーネルの初期化に利用しない領域へ伸張する1次伸張工程と、
    前記カーネルの初期化の後に、前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込みつつ、前記1次伸張工程で未伸張の圧縮データを前記揮発性メモリに伸張する2次伸張工程と、
    前記1次伸張工程と前記2次伸張工程で伸張したデータを利用してシステムを起動させる起動工程を有することを特徴とする起動方法。
  14. 揮発性メモリと、圧縮データと非圧縮データとを含むハイバネーションイメージを保持する不揮発性メモリと、を備えるコンピュータに、
    前記揮発性メモリに展開するカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを前記カーネルの初期化に利用しない領域へ読み込み、読み込んだ圧縮データを前記カーネルの初期化に利用しない領域へ伸張する1次伸張工程と、
    前記カーネルの初期化の後に、前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込みつつ、前記1次伸張工程で未伸張の圧縮データを前記揮発性メモリに伸張する2次伸張工程と、
    前記1次伸張工程と前記2次伸張工程で伸張したデータを利用してシステムを起動させる起動工程とを実行させることを特徴とするプログラム。
JP2012235481A 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム Active JP6080490B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012235481A JP6080490B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム
US14/061,218 US9904559B2 (en) 2012-10-25 2013-10-23 Information processing apparatus and activation method therefor for processing data of a hibernation image

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012235481A JP6080490B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014085907A true JP2014085907A (ja) 2014-05-12
JP6080490B2 JP6080490B2 (ja) 2017-02-15

Family

ID=50788899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012235481A Active JP6080490B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6080490B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138669A1 (en) * 2001-03-21 2002-09-26 Kadatch Andrew V. Hibernation of computer systems
JP2005258642A (ja) * 2004-03-10 2005-09-22 Yamaha Corp 組込型情報処理装置
US20110107020A1 (en) * 2009-10-30 2011-05-05 Duan Binghua Hibernation solution for embedded devices and systems
JP2012068797A (ja) * 2010-09-22 2012-04-05 Canon Inc 起動高速化方法、情報処理装置及びプログラム
JP2012252576A (ja) * 2011-06-03 2012-12-20 Canon Inc 情報処理装置、起動方法およびプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138669A1 (en) * 2001-03-21 2002-09-26 Kadatch Andrew V. Hibernation of computer systems
JP2005258642A (ja) * 2004-03-10 2005-09-22 Yamaha Corp 組込型情報処理装置
US20110107020A1 (en) * 2009-10-30 2011-05-05 Duan Binghua Hibernation solution for embedded devices and systems
JP2012068797A (ja) * 2010-09-22 2012-04-05 Canon Inc 起動高速化方法、情報処理装置及びプログラム
JP2012252576A (ja) * 2011-06-03 2012-12-20 Canon Inc 情報処理装置、起動方法およびプログラム

Also Published As

Publication number Publication date
JP6080490B2 (ja) 2017-02-15

Similar Documents

Publication Publication Date Title
JP6399916B2 (ja) 情報処理装置およびその制御方法
JP5783809B2 (ja) 情報処理装置、起動方法およびプログラム
KR101636870B1 (ko) 최소 부트 이미지의 생성 방법 및 장치
TWI407300B (zh) 電源管理控制器與方法
JP5860543B2 (ja) ブートデータのロード
CN110704161B (zh) 虚拟机创建方法、装置及计算机设备
JP2011175632A (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP5683186B2 (ja) 起動高速化方法、情報処理装置及びプログラム
WO2014100954A1 (zh) 数据控制方法及系统
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
KR20180044095A (ko) 전자 시스템 및 그것의 동작 방법
JP6080492B2 (ja) 情報処理装置、起動方法およびプログラム
US9904559B2 (en) Information processing apparatus and activation method therefor for processing data of a hibernation image
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
JP6080490B2 (ja) 情報処理装置、起動方法およびプログラム
JP2009258925A (ja) 計算機システムおよび計算機システムのメモリ管理方法
JP5334048B2 (ja) メモリ装置および計算機
JP6080491B2 (ja) 情報処理装置、起動方法およびプログラム
JP2011175666A (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP2004078604A (ja) 情報処理方法とその方法を実現するプログラム及び記録媒体
KR101888781B1 (ko) 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법
JP2013246646A (ja) 情報処理装置及びデータ読出方法
KR20140018134A (ko) 오프 상태로부터의 운영 체제의 고속 부팅이 가능한 임베디드 시스템 및 임베디드 시스템에서의 부팅 방법
JP2010277495A (ja) 圧縮記録装置および圧縮記録方法
JP2011203843A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161007

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: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170117

R151 Written notification of patent or utility model registration

Ref document number: 6080490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151