(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5923583
(24)【登録日】2016年4月22日
(45)【発行日】2016年5月24日
(54)【発明の名称】ハイバネーションから復帰するための電子機器及び方法
(51)【国際特許分類】
G06F 12/16 20060101AFI20160510BHJP
G06F 9/445 20060101ALI20160510BHJP
G06F 1/32 20060101ALI20160510BHJP
【FI】
G06F12/16 340Q
G06F9/06 610J
G06F1/32 Z
【請求項の数】12
【外国語出願】
【全頁数】22
(21)【出願番号】特願2014-212316(P2014-212316)
(22)【出願日】2014年10月17日
(65)【公開番号】特開2015-127945(P2015-127945A)
(43)【公開日】2015年7月9日
【審査請求日】2014年12月17日
(31)【優先権主張番号】102148783
(32)【優先日】2013年12月27日
(33)【優先権主張国】TW
(73)【特許権者】
【識別番号】390023582
【氏名又は名称】財團法人工業技術研究院
【氏名又は名称原語表記】INDUSTRIAL TECHNOLOGY RESEARCH INSTITUTE
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】ツー−チエ シェン
(72)【発明者】
【氏名】クオ−フン リン
【審査官】
後藤 彰
(56)【参考文献】
【文献】
特開2010−191789(JP,A)
【文献】
特開2012−252576(JP,A)
【文献】
特開2009−146061(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G06F 1/32
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
ハイバネーションから復帰するための方法であって、
ハイバネーションプロセスにおいて、メインメモリから外部記憶部に複数のページを書き込んで、ハイバネーションイメージファイルを生成するステップと、
復帰プロセスにおいて、前記ハイバネーションイメージファイルに基づいて、前記外部記憶部から前記メインメモリの連続ページ領域に前記ページを順次書き戻すステップと、を含み、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記ハイバネーションイメージファイルを生成する前記ステップは、
前記ハイバネーションイメージファイルのサイズを事前計算するステップと、
前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域内にあるページをマーキングしてマークページとするステップであって、前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であるステップと、
前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップするステップと、
前記マークページを1つずつ前記外部記憶部に書き込むステップと、をさらに含む、
方法。
【請求項2】
外部記憶部と、
メインメモリと、
ハイバネーションプロセスにおいて、前記メインメモリから前記外部記憶部に複数のページを書き込んで、ハイバネーションイメージファイルを生成するイメージ生成回路と、
復帰プロセスにおいて、前記ハイバネーションイメージファイルに基づいて、前記外部記憶部から前記メインメモリの連続ページ領域に前記ページを順次書き戻すページ移動回路と、を含み、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記イメージ生成回路は、
前記ハイバネーションイメージファイルのサイズを事前計算することと、
前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域内にあるページをマーキングしてマークページとすることであって、前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であることと、
前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップすることと、
前記マークページを1つずつ前記外部記憶部に書き込むことと、を行うようにさらに構成される、
電子機器。
【請求項3】
ハイバネーションから復帰するための方法であって、
ハイバネーションプロセスにおいて、第1の処理部又は第2の処理部によって、メインメモリから外部記憶部に複数のページを書き込んで、ハイバネーションイメージファイルを生成するステップと、
復帰プロセスにおいて、前記第1の処理部によってコアローディング及び初期化プロセスを実行し、並列的に、前記第2の処理部によって前記ハイバネーションイメージファイルの前記ページを前記メインメモリに移動するステップと、を含み、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記ハイバネーションイメージファイルを生成する前記ステップは、
前記ハイバネーションイメージファイルのサイズを事前計算するステップと、
前記ハイバネーションイメージファイルに属し、かつ、連続ページ領域内にあるページをマーキングしてマークページとするステップであって、前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であるステップと、
前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップするステップと、
前記マークページを前記外部記憶部に書き込むステップと、をさらに含む、
方法。
【請求項4】
一時記憶ページが、前記復帰プロセスにおいて発生するページコンフリクトを解決するために割り当てられ、
前記マークページを前記外部記憶部に書き込む前記ステップは、
前記マークページを1つずつ前記外部記憶部に書き込むステップを含む、
請求項3に記載の方法。
【請求項5】
前記ハイバネーションイメージファイルを生成する前記ステップが、
前記メインメモリのキャッシュ領域の最初のページから前記マークページまでのページ数であるページカウントを記録するステップをさらに含み、
前記マークページを前記外部記憶部に書き込む前記ステップが、
前記マークページの前記ページカウントに到達した場合に、前記マークページを前記外部記憶部に書き込むステップを含む、
請求項3に記載の方法。
【請求項6】
前記ハイバネーションイメージファイルを生成する前記ステップが、
前記ハイバネーションイメージファイルを圧縮して、圧縮されたハイバネーションイメージファイルを生成するステップと、
前記ハイバネーションイメージファイルの前記サイズを前記圧縮されたハイバネーションイメージファイルに記録するステップと、をさらに含む、
請求項3に記載の方法。
【請求項7】
外部記憶部と、
メインメモリと、
第1の処理部と、
第2の処理部と、と含み、
ハイバネーションプロセスにおいて、前記第1の処理部又は前記第2の処理部は、前記メインメモリから前記外部記憶部に複数のページを書き込んで、ハイバネーションイメージファイルを生成し、復帰プロセスにおいて、前記第1の処理部はコアローディング及び初期化プロセスを実行し、並列的に、前記第2の処理部は前記ハイバネーションイメージファイルの前記ページを前記メインメモリへと移動し、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記第1の処理部は、前記ハイバネーションイメージファイルのサイズを事前計算し、前記ハイバネーションイメージファイルに属し、かつ、連続ページ領域内にあるページをマーキングしてマークページとし、
前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であり、
前記第1の処理部は、前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップし、その後、前記マークページを前記外部記憶部に書き込む、
電子機器。
【請求項8】
前記第1の処理部は、前記復帰プロセスにおいて発生するページコンフリクトを解決するために一時記憶ページを割り当て、
前記第1の処理部は、前記マークページを1つずつ前記外部記憶部に書き込む、
請求項7に記載の電子機器。
【請求項9】
前記第1の処理部は、前記メインメモリのキャッシュ領域の最初のページから前記マークページまでのページ数であるページカウントを記録し、
前記マークページの前記ページカウントが前記キャッシュ領域の前記最初のページに到達した場合に、前記マークページは前記外部記憶部に書き込まれる、
請求項7に記載の電子機器。
【請求項10】
前記第1の処理部は、前記ハイバネーションイメージファイルを圧縮して、圧縮されたハイバネーションイメージファイルを生成し、前記ハイバネーションイメージファイルの前記サイズを前記圧縮されたハイバネーションイメージファイルに記録する、
請求項7に記載の電子機器。
【請求項11】
外部記憶部と、
メインメモリと、
ハイバネーションプロセスにおいて、複数のページを前記外部記憶部に書き込んで、ハイバネーションイメージファイルを生成し、復帰プロセスにおいて、前記ハイバネーションイメージファイルに基づいて、前記ページを前記外部記憶部から前記メインメモリの連続ページ領域に順次書き戻す中央処理装置(CPU)と、を含み、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記CPUは、
前記ハイバネーションイメージファイルのサイズを事前計算することと、
前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域内にあるページをマーキングしてマークページとすることであって、前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であることと、
前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップすることと、
前記マークページを1つずつ前記外部記憶部に書き込むことと、を行うようにさらに構成される、
電子機器。
【請求項12】
外部記憶部と、
メインメモリと、
ハイバネーションプロセスにおいて、前記メインメモリから前記外部記憶部に複数のページを書き込んで、ハイバネーションイメージファイルを生成し、前記ページに関連する第1のページテーブルを第2のページテーブルに更新し、復帰プロセスにおいて、前記ハイバネーションイメージファイルの先頭又は前記ページのページ情報の先頭に基づいて、前記ページを、前記外部記憶部から、前記第2のページテーブルに記録された前記メインメモリ内の前記ページの位置に書き戻す中央処理装置(CPU)と、を含み、
前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行され、
前記CPUは、
前記ハイバネーションイメージファイルのサイズを事前計算することと、
前記ハイバネーションイメージファイルに属し、かつ、連続ページ領域内にあるページをマーキングしてマークページとすることであって、前記ハイバネーションイメージファイルに属し、かつ、前記連続ページ領域外にあるページは非マークページであり、前記連続ページ領域は前記メインメモリのキャッシュ領域の最初のページから始まって前記ハイバネーションイメージファイルの前記サイズの分の領域であることと、
前記非マークページを1つずつ前記外部記憶部に書き込み、前記マークページをスキップすることと、
前記マークページを1つずつ前記外部記憶部に書き込むことと、を行うようにさらに構成される、
電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はハイバネーション(hibernation)から復帰(resume)するための電子機器及び方法に関する。
【背景技術】
【0002】
生活のペースの速まりとともに、電子機器の高速ブート(fast boot)がより重要になっている。ほとんどの高性能機器はスタンバイモード(standby mode)として設定されるシャットダウン(shutdown)ボタンを有しているが、このスタンバイモードは真のシャットダウンモードではない。スタンバイモードは待機時間を効果的に短縮させることができるが、電子システム全体は依然として継続的に電力を消費し、このような技術は「電力を必要とする高速ブート(power-hungry fast boot)」に属する。スタンバイモードで消費される電力は全世界の二酸化炭素排出を1%増加させている。欧州連合は、高性能の家庭用電化製品のシャットダウン時の電力消費は0.1ワット未満でなければならないと決定した。
【0003】
「ブートレコードリカバリ(Boot record recovery)」と題する特許文献1は、ブートレコードリカバリを実行するための方法、コンピューターシステム、及び機器を開示している。ブートレコードがフリー(free)であるとわかっている場合、ブートレコードのスナップショットコピー(snapshot copy)が不揮発性メモリ(non-volatile memory)に記憶される。ブートアップ(boot-up)時には、カレントブートレコードと対応するスナップショットとが比較される。それら2つの間で関連のある差異(relevant differences)が存在する場合(ブートレコードが改変されたということを意味する)には、メッセージがユーザに伝えられる。ユーザは改変されたブートレコードからブートする(任意にスナップショットを更新する)ことを選んでもよいし、記憶されたスナップショットからブートする(任意にブートレコードを復元(restore)させる)ことを選んでもよい。
【0004】
以上より、ハイバネーション、パワーオフ、又はシャットダウンモードにおける高速ブート法を開発し、電力を消費するスタンバイ/ウェイク(standby/wake)モードに取って代えさせることが必要である。ハイバネーション/ウェイクアップ(hibernation/wake-up)モードは実行可能な解決方法である。しかしながら、ハイバネーションから復帰するための従来の方法は、ブート時にページ(page)をページバッファ(page buffer)に1つずつ書き込み、パージバッファからメインメモリ(main memory)のターゲットページ(target page)にページを1つずつコピーしており、このプロセスには非常に時間がかかるため、現在の産業界は新たな高速ウェイクアップ/ブート法を必要としている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第6,792,556号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示はハイバネーションから復帰するための電子機器及び方法に関する。
【課題を解決するための手段】
【0007】
一実施形態によれば、ハイバネーションから復帰するための方法が提供される。ハイバネーションから復帰するための方法は、ハイバネーションプロセス(hibernation process)において、メインメモリから外部記憶部(external storage)に複数のページを書き込んでハイバネーションイメージファイル(hibernation image file)を生成するステップと、復帰プロセス(resume process)において、前記ハイバネーションイメージファイルに基づいて、前記外部記憶部から前記メインメモリの連続ページ領域(continuous page range)に前記ページを順次書き戻すステップと、を含む。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0008】
他の一実施形態によれば、電子機器が提供される。電子機器は外部記憶部と、メインメモリと、イメージ生成回路(image generating circuit)と、ページ移動回路(page moving circuit)と、を含む。前記イメージ生成回路は、ハイバネーションプロセスにおいて、前記メインメモリから前記外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを生成する。前記ページ移動回路は、復帰プロセスにおいて、前記ハイバネーションイメージファイルに基づいて、前記外部記憶部から前記メインメモリの連続ページ領域に前記ページを順次書き戻す。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0009】
別の一実施形態によれば、ハイバネーションから復帰するための方法が提供される。ハイバネーションから復帰するための方法は、ハイバネーションプロセスにおいて、メインメモリから外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを生成し、前記ページに関連する第1のページテーブル(page table)を第2のページテーブルに更新するステップと、復帰プロセスにおいて、前記ハイバネーションイメージファイルの先頭(head of the hibernation image file)又は前記ページのページ情報の先頭(page information heads for the pages)に基づいて、前記外部記憶部から、前記第2のページテーブルとマッチする前記メインメモリ内の前記ページの位置に前記ページを書き戻すステップと、を含む。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0010】
別の一の実施形態によれば、電子機器が提供される。電子機器は外部記憶部と、メインメモリと、イメージ生成回路と、ページ移動回路と、を含む。前記イメージ生成回路は、ハイバネーションプロセスにおいて、前記メインメモリから前記外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを生成し、前記ページに関連する第1のページテーブルを第2のページテーブルに更新する。前記ページ移動回路は、復帰プロセスにおいて、前記ハイバネーションイメージファイルの先頭又は前記ページのページ情報の先頭に基づいて、前記外部記憶部から、第2のページテーブルに記録された前記メインメモリ内の前記ページの位置に前記ページを書き戻す。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0011】
別の一実施形態によると、ハイバネーションから復帰するための方法が提供される。ハイバネーションから復帰するための方法は、ハイバネーションプロセスにおいて、第1の処理部(processing unit)又は第2の処理部によって、メインメモリから外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを生成するステップと、復帰プロセスにおいて、第1の処理部によってコアローディング及び初期化プロセス(core loading and initializing process)を実行し、並列的に、第2の処理部によって前記ハイバネーションイメージファイルの前記ページを前記メインメモリに移動するステップと、を含む。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0012】
別の一実施形態によると、電子機器が提供される。電子機器は外部記憶部と、メインメモリと、第1の処理部と、第2の処理部と、と含む。ハイバネーションプロセスにおいて、前記第1の処理部又は前記第2の処理部は、前記メインメモリから前記外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを生成する。復帰プロセスにおいて、前記第1の処理部はコアローディング及び初期化プロセスを実行し、並列して、前記第2の処理部は前記ハイバネーションイメージファイルの前記ページを前記メインメモリに移動する。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0013】
別の一実施形態によると、電子機器が提供される。電子機器は外部記憶部と、メインメモリと、中央処理部(CPU)と、を備える。前記CPUは、ハイバネーションプロセスにおいて、複数のページを前記外部記憶部に書き込んでハイバネーションイメージファイルを生成し、復帰プロセスにおいて、前記ハイバネーションイメージファイルに基づいて、前記外部記憶部から前記メインメモリの連続ページ領域に前記ページを順次書き戻す。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【0014】
別の一実施形態によれば、電子機器が提供される。電子機器は外部記憶部と、メインメモリと、中央処理部(CPU)と、を備える。前記CPUは、ハイバネーションプロセスにおいて、前記メインメモリから前記外部記憶部に複数のページを書き込んでハイバネーションイメージファイルを形成し、前記ページに関連する第1のページテーブルを第2のページテーブルに更新し、復帰プロセスにおいて、前記ハイバネーションイメージファイルの先頭又は前記ページのページ情報の先頭に基づいて、前記外部記憶部から、前記第2のページテーブルに記録された前記メインメモリ内の前記ページの位置に前記ページを書き戻す。前記復帰プロセスは前記ハイバネーションプロセスよりも後に実行される。
【図面の簡単な説明】
【0015】
【
図1】第1の実施形態に係る電子機器のブロック図である。
【
図2】第1の実施形態に係るハイバネーションプロセスにおけるメインメモリ及び外部記憶部を図示した概略図である。
【
図3】第1の実施形態に係るシャットダウンのフローチャートである。
【
図4】復帰プロセスにおけるメインメモリ及び外部記憶部を図示した模式図である。
【
図5】第1の実施形態に係るブートのフローチャートである。
【
図6】第2の実施形態に係るメインメモリ及び外部記憶部を図示した模式図である。
【
図7】第2の実施形態に係るシャットダウンのフローチャートである。
【
図8】第2の実施形態に係るブートのフローチャートである。
【
図9】第3の実施形態に係る電子機器のブロック図である。
【
図10A】第3の実施形態に係るブートのフローチャートである。
【
図10B】第3の実施形態に係るブートのフローチャートである。
【
図11】第4の実施形態に係るハイバネーションプロセスにおけるメインメモリ及び外部記憶部を図示した模式図である。
【
図12】第4の実施形態に係る復帰プロセスにおけるメインメモリ及び外部記憶部を図示した模式図である。
【
図13】第4の実施形態に係るシャットダウンのフローチャートである。
【
図14】第5の実施形態に係るハイバネーションプロセスにおけるメインメモリ及び外部記憶部を図示した模式図である。
【
図15】第5の実施形態に係る復帰プロセスにおけるメインメモリ及び外部記憶部を図示した模式図である。
【
図16】第5の実施形態に係るシャットダウンのフローチャートである。
【
図17】第6の実施形態に係るブートのフローチャートである。
【
図18】第7の実施形態に係るブートのフローチャートである。
【
図19】ステップ603の詳細なフローチャートである。
【発明を実施するための形態】
【0016】
以下の詳細な説明においては、開示された実施形態の完全な理解のために、説明を目的として特定の細目が多く記されている。しかしながら、これらの特定の細目がなくても、1以上の実施形態を実施することができることは明白であろう。他の例では、公知の構成や機器が図面を簡略化するために模式的に図示されている。
【0017】
[第1の実施形態]
図1は、第1の実施形態に係る電子機器1のブロック図である。
図1を参照すると、電子機器1は外部記憶部11、メインメモリ12、イメージ生成回路13、及びページ移動回路16を含む。電子機器1は、例えば携帯電話(mobile phone)、タブレット型コンピュータ(tablet computer)、ノート型コンピュータ(notebook computer)、スマートテレビ(smart television)、車載型コンピュータ(vehicle computer)、又は他の携帯機器(handheld apparatus)であり、外部記憶部11は、例えばハードディスクドライブ(hard disk drive)、フラッシュメモリ(flash memory)、又は他の不揮発性メモリ(non-volatile memory)である。イメージ生成回路13は、例えば中央処理装置(CPU)によって実装され、ページ移動回路16は、例えばCPU、デジタル信号プロセッサ(DSP)、又はダイレクトメモリアクセス(DMA)コントローラによって実装される。一実施形態においては、イメージ生成回路13とページ移動回路16は同一の回路(the same circuitry)、例えば同一のCPUなどである。
【0018】
ハイバネーションプロセスにおいて、イメージ生成回路13はメインメモリ12から外部記憶部11にページを書き込んでハイバネーションイメージファイルSIを生成する。ハイバネーションプロセスにおいて、イメージ生成回路13はメインメモリ12の連続ページ領域RAにおけるハイバネーションイメージファイルのページの相対位置に基づいて、第1のページテーブルを第2のページテーブルに更新する。第1のページテーブルは元々のページテーブル(original page table)であり、第2のページテーブルは新しいページテーブルである。ハイバネーションプロセスにおいて、イメージ生成回路13は復元情報(recovery information)をハイバネーションファイルの先頭(hibernation file head)に記憶する。第1のテーブルはページアドレスに関連する。一実施形態においては、第1のページテーブルは、ページが連続ページ領域RAに移動される前のページの位置を記録するために使われ、第2のページテーブルはページが連続ページ領域RAに移動される前のページの位置を記録するために使われる。ハイバネーションプロセスにおいて、イメージ生成回路13はページを外部記憶部11に書き込んでハイバネーションイメージファイルSIを生成する。復帰プロセスにおいて、ページ移動回路16は、ハイバネーションイメージファイルSIに基づいて、ページを外部記憶部11からメインメモリ12の連続ページ領域RAへと順次書き戻す。復帰プロセスはハイバネーションプロセスよりも後で実行される。さらに、復帰プロセスにおいて、ページ移動回路16はハイバネーションイメージファイルSIの先頭(head of the hibernation image file SI)、又はページのページ情報の先頭(page information heads for the pages)に基づいて、ページを外部記憶部11からメインメモリ12の連続ページ領域RAへと順次書き戻す。連続ページ領域RAに対応するページアドレスは第2のページテーブルによって記録される。
【0019】
ページが外部記憶部11からメインメモリ12に書き戻される場所であるターゲットアドレス(target address)は、ハイバネーションイメージファイルSIの先頭に記録される。ページ移動回路16はハイバネーションイメージファイルSIを一回のシーケンシャル伝送(one-time sequential transmission)によって伝送する。ハイバネーションイメージファイルSIのページは、ページ間に他のデータが含まれないように、連続的に外部記憶部11に配置される。ハイバネーションイメージファイルSIのページがメインメモリ12に書き戻された後、メインメモリにおける各ページの位置は、第2のページテーブルに記録された位置と一致する。メインメモリ12の連続ページ領域RAは、例えばメインメモリ12のキャッシュ領域(cache region)12aのページ領域である。一実施形態においては、ページ移動回路16はハイバネーションイメージファイルSIを非シーケンシャル伝送(non-sequential transmission)によって伝送する。ページ移動回路16は、ハイバネーションイメージファイルSIの先頭又はページのページ情報の先頭に基づいて、ページを外部記憶部11からメインメモリ12に1つずつ書き戻す。メインメモリ12における各ページの位置は第2のページテーブルに記録された位置に一致する。ウェイクアップ方法は電子機器1に適用可能であり、下記のブートプロセス及びシャットダウンプロセスを含む。
【0020】
図2は、第1の実施形態に係るハイバネーションプロセスにおけるメインメモリと外部記憶部を示す模式図である。
図3は、第1の実施形態に係るシャットダウンのフローチャートである。
図1から
図3を参照してほしい。まず、ステップ31に示すように、CPU(イメージ生成回路13を実現するCPUであってもよいし、ページ移動回路16を実現するCPUであってもよいし、機器1内の他のCPUであってもよい)は高速ブートモードを実行するか否かを判断する。高速ブートモードが実行されるべき場合にはステップ32が実行される。ステップ32に示すように、電子機器1はハイバネーションプロセスに入る。次に、ステップ33に示すように、ハイバネーションプロセスにおいて、イメージ生成回路13はページPA−PKを連続ページ領域RAに集めてシーケンシャルページアレイ(sequential page array)SPAを形成する。例えば、ページPA−PKはユーザ空間ページ(user space pages)である。次に、ステップ34に示すように、ハイバネーションプロセスにおいて、イメージ生成回路13は、シーケンシャルページアレイSPAに基づいて、第1のページテーブルを第2のページテーブルに更新する。なお、ページをページPA−PKに集めるため、ページの物理的位置は変えられ、それに応じて第1のページテーブルは第2のページテーブルに更新される。
【0021】
次に、ステップ35に示すように、イメージ生成回路13はシーケンシャルページアレイSPAに基づいてハイバネーションイメージファイルSIを生成する。即ち、イメージ生成回路13は、シーケンシャルI/O(sequential I/O)によってメインメモリ12のページPA−PKを外部記憶部11に順次書き込んで、ハイバネーションイメージファイルSIを生成する。ページPA−PKは、先頭/上端への集中(concentration at head/top)、末端/終端への集中(concentration at tail/end)、又は特定領域への集中(specific-region concentration)など、異なる集中方法を用いて集められてもよい。例えば、連続ページ領域RAは、固定されていないメモリアドレス空間(non-fixed memory address space)であり、先のハイバネーションプロセスにおいてページ移動(page migration)が実行されることによって形成される。即ち、連続ページ領域RAは、先のハイバネーションプロセスにおいて先のハイバネーションイメージファイルが記憶されるメインメモリ12のメモリ位置(memory position)であってもよい。一方、高速ブートモードが実行されるべきでない場合にはステップ36が実行される。ステップ36に示すように、CPUは一般的なシャットダウンプロセスを実行する。
【0022】
図4は、復帰プロセスにおけるメインメモリ及び外部記憶部を示す模式図である。
図5は、第1の実施形態に係るブートのフローチャートである。
図1、
図4及び
図5を参照してほしい。まず、ステップ51に示すように、CPUは高速ブートモードを実行するか否かを判断する。高速ブートモードが実行されるべき場合にはステップ52が実行される。ステップ52に示すように、電子機器1は復帰プロセスに入る。次に、ステップ53に示すように、復帰プロセスにおいて、ページ移動回路16は、ハイバネーションイメージファイルSIに基づいて、ページPA−PKを外部記憶部11からメインメモリ12の連続ページ領域RAに順次書き戻す。一方、高速ブートモードが実行されるべきでない場合にはステップ54が実行される。ステップ54に示すように、CPUは一般的なブートプロセスを実行する。ユーザが高速ブートモードの実行を選択した場合には、ページバッファ(page buffer)を用いることなく、直接、ページPA−PKがメインメモリ12の連続ページ領域RAに順次書き戻されてもよい。その結果として、ブート時間を短縮することができ、ブート速度を上げることができる。
【0023】
[第2の実施形態]
図6は、第2の実施形態に係るメインメモリ及び外部記憶部を示す模式図である。
図7は、第2の実施形態に係るシャットダウンのフローチャートである。
図1、
図6、及び
図7を参照してほしい。第2の実施形態と第1の実施形態の違いは、主に、第2の実施形態は連続ページ領域を確保(reserve)する点にある。まず、ステップ71に示すように、CPU(イメージ生成回路13を実現するCPUであってもよいし、ページ移動回路16を実現するCPUであってもよいし、機器1の他のCPUであってもよい)は高速ブートモードを実行するか否かを判断する。高速ブートモードが実行されるべき場合にはステップ72が実行される。ステップ72に示すように、電子機器1はハイバネーションプロセスに入る。次に、ステップ73に示すように、ハイバネーションプロセスにおいて、イメージ生成回路13は、第1のページテーブルを第2のページテーブルに更新するために、ハイバネーションイメージファイルSIにおけるページPA−PKの順序に基づいて、連続ページ領域RAにおけるページPA−PKの位置を決定する。次に、ステップ74に示すように、イメージ生成回路13は、シーケンシャルI/Oによってメインメモリ12のページPA−PKを外部記憶部11に順次書き込んで、ハイバネーションイメージファイルSIを生成する。一方で、高速ブートモードが実行されるべきでない場合にはステップ75が実行される。ステップ75に示すように、CPUは一般的なシャットダウンプロセスを実行する。
【0024】
図8は、第2の実施形態に係るブートのフローチャートである。
図1、
図6、及び
図8を参照してほしい。まず、ステップ81に示すように、コア初期化プロセス(core initialization process)において、CPUは連続ページ領域RAを確保する。連続ページ領域RAは、例えばハイバネーションプロセスにおいて第2のページテーブルによって記録された位置であり、固定されたメモリアドレス空間(fixed memory address space)である。次に、ステップ82に示すように、CPUは高速ブートモードを実行するか否かを判断する。高速ブートモードが実行されるべき場合にはステップ83が実行される。ステップ83に示すように、電子機器1は復帰プロセスに入る。次に、ステップ84に示すように、復帰プロセスにおいて、ページ移動回路16は、ハイバネーションイメージファイルSIに基づいて、ページPA−PKを外部記憶部11からメインメモリ12の連続ページ領域RAに順次書き戻す。さらにページ移動回路16は、ハイバネーションイメージファイルSIの先頭又はページPA−PKのページ情報の先頭に基づいて、ページPA−PKを、外部記憶部11から、第2のページテーブルに記録された、メインメモリ12の連続ページ領域RAにおけるページPA−PKの位置へと順次書き戻す。
【0025】
一方、高速ブートモードが実行されるべきでない場合にはステップ85が実行される。ステップ85に示すように、CPUは一般的なブートプロセスを実行する。次に、ステップ86に示すように、CPUは連続ページ領域RAを開放(release)する。連続ページ領域RAは非高速ブートモード(non-fast boot mode)では使用する必要がないため、連続ページ領域RAは解放され、他のプロセスで使用されてもよい。ユーザが高速ブートモードの実行を選択した場合には、ページバッファを用いることなく、直接、ページPA−PKがメインメモリ12の連続ページ領域RAに順次書き戻されてもよい。その結果として、ブート時間を短縮することができ、ブート速度を上げることができる。
【0026】
[第3の実施形態]表1、
図1、
図9、
図10A、及び
図10Bを参照してほしい。表1はデッドロックアレイ(dead-lock array)の例示形態である。
図9は、第3の実施形態に係る電子機器のブロック図である。
図10A及び
図10Bは、第3の実施形態に係るブートのフローチャートである。電子機器8は、外部記憶部11、メインメモリ12、処理部14、及び処理部15を含む。ハイバネーションプロセスにおいて、処理部14又は処理部15によって、ページがメインメモリ12から外部記憶部11に書き込まれてハイバネーションイメージファイルSIが生成される。復帰プロセスにおいて、処理部14はコアローディング及び初期化プロセス(core loading and initializing process)を実行し、並列的に、処理部15はハイバネーションイメージファイルSIのページをメインメモリ12へと移動する。処理部14及び処理部15は、例えばマルチコアプロセッサ(multi-core processor)内の異なるコアである。または、例えば、処理部14及び処理部15はそれぞれ中央処理装置(CPU)及びダイレクトメモリアクセス(DMA)コントローラである。あるいは、例えば、処理部14及び処理部15はそれぞれCPU及びデジタル信号プロセッサ(DSP)であってもよい。なお、処理部14及び処理部15はイメージ生成回路13及びページ移動回路16であってもよい。
【0027】
復帰プロセスにおいて、ブートプロセスは以下のステップを含む。処理部15が外部記憶部11内のハイバネーションイメージファイルSIのページをメインメモリ12のキャッシュ領域12aへとシーケンシャル伝送によって書き戻すことを完了した後、ステップ201に示すように、処理部15がマルチコアプロセッサの異なるコア又はDSPであれば、処理部15は一回にキャッシュ領域12a中の1ページだけをターゲットページに移動することができる。この場合、キャッシュ領域12a中のページはターゲットページに1つずつ戻される。DMAコントローラは一回にキャッシュ領域12a中の1ページだけをターゲットページに戻すのではない。処理部15がDMAコントローラであれば、処理部14がキャッシュ領域12a中のページをターゲットページに1つずつ戻す。本開示では、以降の記載において、1つずつのページの移動(one-by-one moving operation on the pages)の実行について記述する場合、処理部15はマルチコアプロセッサの異なるコア又はDSPである。本実施形態では、以降の記載において、1つずつのページの移動の実行について記述する場合であって、かつ、処理部15がDMAコントローラである場合、処理部14がキャッシュ領域12aの中のページをターゲットページに1つずつ戻す。
【0028】
ターゲットページの位置は、シャットダウン状態の前のメインメモリ12におけるページの位置である。ターゲットページの位置にコンフリクト(conflict)があれば、キャッシュ領域12内の次のページが、ハイバネーションイメージファイルSIの最後のページに至るまで、ターゲットページに移動される。次に、ステップ202に示すように、処理部15は、移動ページカウント(moving-out page count)が0であるか否かを確認する。移動ページカウントは、キャッシュ領域12aから外に移動されたページ数を表す。移動ページカウントが0であれば、ステップ207が実行される。一方で、移動ページカウントが0でなければ、ステップ203が実行される。
【0029】
ステップ203に示すように、処理部15は移動ページカウントをリセットする。ステップ204に示すように、処理部15は、キャッシュ領域12a内の復元されなかったページを、キャッシュ領域12aの復元されなかった最初のページから1つずつターゲットページに戻す。ターゲットページの位置にコンフリクトがあれば、キャッシュ領域12内の次のページが、ターゲットページに戻されていない最後のページに至るまで、ターゲットページに移動される。なお、ターゲットページの位置が他の復元されていないページの位置と同一であれば、ターゲットページの位置にコンフリクトがあるということを意味している。ステップ205に示すように、処理部15は、復元されていないページがキャッシュ領域にあるか否かを判断する。復元されていないページがキャッシュ領域にない場合にはステップ213が実行される。ステップ213に示すように、ハイバネーションイメージファイルSIの全てのページの復元が完了する。一方、復元されていないページがキャッシュ領域に1ページ以上ある場合にはステップ206が実行される。ステップ206に示すように、処理部15は移動ページカウントが0であるか否かを判断する。移動ページカウントが0でない場合にはステップ203が実行される。一方、移動ページカウントが0である場合にはステップ207が実行される。
【0030】
ステップ207に示すように、処理部15はソースページフレーム番号(source page frame number)を、復元されていない最初のページのページフレーム番号(PFN)に設定し、ターゲットページフレーム番号(target page frame number)を、復元されていない最初のページに対応するターゲットページのページフレーム番号に設定する。そして処理部15はソースページフレーム番号とターゲットページフレーム番号を1つのページフレーム番号の組合せとしてデッドロックアレイに記録する。ステップ208に示すように、処理部15は、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号を、次のページフレーム番号の組合せにおけるソースページフレーム番号として取得し、復元されていないページのターゲットページのページフレーム番号を、デッドロックアレイに記録される次のページフレーム番号の組合せにおけるターゲットページフレーム番号として取得する。例えば処理部15は、デッドロックアレイ内の末尾のターゲットページフレーム番号の組合せZ2をソースページフレーム番号として取得し、復元されていないページのターゲットページフレーム番号A2を取得し、ターゲットページフレーム番号A2をデッドロックアレイに記録する。ステップ209に示すように、処理部15は、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号に等しいか否かを判断する。デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号と等しくない場合にはステップ208が実行される。
【0031】
デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号と等しい場合にはステップ210が実行される。ステップ210に示すように、処理部15は一時記憶ページ(temporarily stored page)を割り当て、末尾のソースページフレームを一時記憶ページにコピーする。末尾のソースページフレームは、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるソースページフレーム番号に対応している。ステップ211に示すように、処理部15は、デッドロックアレイにおける末尾から二番目のページフレーム番号の組合せから前に向かって、1つずつページ復元を実行する。ステップ212に示すように、処理部15は、一時記憶ページを先頭のソースページフレームに復元する。先頭のソースページフレームは、デッドロックアレイ内の先頭のページフレームの組合せにおけるソースページフレーム番号に対応している。次に、ステップ203が実行される。上記のフローによれば、ページコンフリクトを引き起こしているデッドロックを発見することができ、デッドロックの解消後にページコンフリクトを伴うページをターゲットページに復元することができる。
【0033】
[第4の実施形態]
図11は、第4の実施形態に係るハイバネーションプロセスにおけるメインメモリ及び外部記憶部の模式図である。
図12は、第4の実施形態に係る復帰プロセスにおけるメインメモリ及び外部記憶部の模式図である。
図13は第4の実施形態に係るシャットダウンのフローチャートである。
図9、
図11、
図12、及び
図13を参照してほしい。ステップ301に示すように、処理部15はハイバネーションイメージファイルSIのサイズSZ1を事前計算する。ステップ302に示すように、処理部15は、ハイバネーションイメージファイルSIに属し、かつ、連続ページ領域RA内にあるページをマーキングしてマークページ(marked page)とする。ハイバネーションイメージファイルSIに属し、かつ、連続ページ領域RA外にあるページは非マークページ(unmarked page)となる。連続ページ領域RAは、メインメモリ12のキャッシュ領域12aにおける第1ページから始まり、ハイバネーションイメージファイルS1のサイズSZ1分ある。第4の実施形態では、マークページはページRPA−RPDを含み、一方、非マークページはページPA−PGを含む。
【0034】
ステップ303に示すように、処理部15は、最後の非マークページに至るまで、非マークページを外部記憶部11に1つずつ書き込み、マークページをスキップ(skip)する。即ち、処理部15はページPA−PGを外部記憶部に1つずつ書き込み、ページRPA、RPB、RPC、及びRPDをスキップする。ステップ304に示すように、処理部15はマークページを外部記憶部11に1つずつ書き込む。即ち、処理部15はページRPA−RPDを外部記憶部11に1つずつ書き込む。
【0035】
復帰プロセスにおいて、処理部15はキャッシュ領域12a内のページをメインメモリ12のターゲットページに1つずつ戻す。即ち、処理部15はキャッシュ領域12a内のページPA,PB,PC,PD,PE,PF,PG,RPA,RPB,RPC,及びRPDをメインメモリ12のターゲットページに1つずつ戻す。復帰プロセスでは、シャットダウン状態の前のメモリアロケーションに復元する必要があるため、
図11のメインメモリ12内のページPA,PB,PC,PD,PE,PF,PG,RPA,RPB,RPC,及びRPDはターゲットページとみなされる。なお、ページPA−PGのターゲットページはキャッシュ領域12a内にないため、ページコンフリクトは発生しない。ページRPA−RPDのターゲットページはキャッシュ領域12a内にあるが、ページPA−PGは復元されているため、元々ページPA−PGによって占められていたページも解放され、他のページ復元に用いられる。そのため、ページRPA−RPDについてページコンフリクトは発生しない。
【0036】
[第5の実施形態]
図14は、第5の実施形態に係るハイバネーションプロセスにおけるメインメモリ及び外部記憶部を示す模式図である。
図15は、第5の実施形態に係る復帰プロセスにおけるメインメモリ及び外部記憶部を示す模式図である。
図16は、第5の実施形態に係るシャットダウンのフローチャートを示す。
図9、
図14、
図15、及び
図16を参照してほしい。シャットダウンプロセスは以下のステップを含む。ステップ401に示すように、処理部15はハイバネーションイメージファイルSIのサイズSZ1の事前計算を行う。ステップ402に示すように、処理部15は、ハイバネーションイメージファイルSIに属し、かつ、連続ページ領域RA内にあるページをマーキングしてマークページとし、メインメモリ12のキャッシュ領域12aの開始ページ(starting page)からマークページまでのページ数であるページカウントPdを記録する。ページカウントPdは、キャッシュ領域12aの開始ページから数えてPd番目のページとみなしてもよい。ハイバネーションイメージファイルSIに属し、かつ、連続ページ領域RAの外にあるページは非マークページである。連続ページ領域RAは、メインメモリ12のキャッシュ領域12aの開始ページから始まり、ハイバネーションイメージファイルSIのサイズSZ1分ある。第5の実施形態では、マークページはページRPA−RPDを含み、非マークページはページPA−PGを含む。
【0037】
ステップ403に示すように、処理部15は非マークページを外部記憶部11に1つずつ書き込み、Pd番目のページに到達する前においては、マークページをスキップする。ステップ404に示すように、処理部15は、キャッシュ領域12aの開始ページからマークページまでのページ数であるページカウントPdに到達すると、マークページを外部記憶部11に書き込む。即ち、処理部15は、最後のページに至るまで、Pd番目のページを外部記憶部11に書き込む。言い換えると、処理部15はページRPA,PA,RPB,PB,PC,PD,RPC,PE,PF,RPD,及びPGを外部記憶部に1つずつ書き込む。
【0038】
復帰プロセスにおいて、ページPA−PGのターゲットページはキャッシュ領域12a内にないため、ページコンフリクトは発生しない。ページRPA−RPDのターゲットページはキャッシュ領域12a内にあるが、ページRPA−RPDのターゲットページは先のハイバネーションの前におけるページの位置であるため、復元は必要でない。
【0039】
[第6の実施形態]
図17は、第6の実施形態に係るブートのフローチャートを示す。
図9及び
図17を参照してほしい。ハイバネーションプロセスにおいて、処理部15は圧縮されていないハイバネーションイメージファイルSIのサイズSZ1を計算し、その後、圧縮法を用いて圧縮されたハイバネーションイメージファイルを生成し、ハイバネーションイメージファイルSIのサイズSZ1を圧縮されたハイバネーションイメージファイルに記録する。復帰プロセスにおけるブートプロセスは以下のステップを含む。ステップ501に示すように、ブートローダープロセス(boot loader process)においてハイバネーションイメージファイルSIのサイズSZ1が読み出される。ステップ502に示すように、コア初期化プロセスにおけるメモリ初期化期間において、サイズSZ1を有する連続ページ領域RAが確保される。ステップ503に示すように、処理部15は、圧縮されたハイバネーションイメージファイルを連続ページ領域RAの末尾(bottom)にロードする。ステップ504に示すように、圧縮されたハイバネーションイメージファイルが解凍(圧縮解除)される。処理部15は、圧縮されたハイバネーションイメージファイルのページを1つずつ解凍し、圧縮されたハイバネーションイメージファイルの全てのページが解凍されるまで、解凍されたページの内容をキャッシュ領域12aの最初のページから順次書き込んでいく。ページ解凍後のターゲットページへの復元方法は、第3、第4、及び第5の実施形態のページ復元方法と併せて実行されてもよい。
【0040】
[第7の実施形態]
図18は、第7の実施形態に係るブートのフローチャートを示す。
図19は、ステップ603の詳細なフローチャートを示す。
図9、
図18、及び
図19を参照してほしい。ブートプロセスにおける復帰プロセスは以下のステップを含む。ステップ601に示すように、圧縮されたハイバネーションイメージファイルが解凍される。ステップ601では、単一中央処理装置が、圧縮されたハイバネーションイメージファイルのページのヘッダを1つずつ読み出すために最初に使用されてもよい。電子機器8がマルチコアプロセッサを使用していれば、全てのページ解凍ジョブ(page decompressing job)の割り当てが完了するまで、ページ解凍ジョブは他の中央処理装置に割り当てられる。中央処理装置は、割り当てられたページのヘッダ内のターゲットページフレーム番号を最初に読み出し、その後、ターゲットページフレーム番号に基づいてターゲットページを復元することが可能であるか否かを判断する。ターゲットページを復元することが可能な場合、解凍されたページ内容はページ復元方法に従ってターゲットページに直接書き込まれる。一方、ターゲットページを復元することができない場合、解凍されたページ内容は一時記憶ページリスト(temporarily stored page list)内のページに直接書き込まれる。
【0041】
ステップ602に示すように、処理部15は一時記憶ページリストのページ復元を実行する。処理部15は、一時記憶ページリスト内のページとそれに対応するターゲットページとを1つずつ復元することができるか否かを確認する。ターゲットページを復元できる場合、処理部15はページ復元方法に従って一時記憶ページリストのページ内容をターゲットページに書き込んでいく。電子機器8がマルチコアプロセッサを用いている場合には、全てのページ復元ジョブの割り当てが完了するまで、1つの中央処理装置が1つのページ復元ジョブを担当する。一時記憶ページリスト内の残りページがデッドロックを有していれば、後続のステップ603が実行される。
【0042】
ステップ603に示すように、一時記憶ページリストにおけるデッドロックが解決される。ステップ603はステップ6031−6037をさらに含む。ステップ6031に示すように、デッドロックが割り当てられる。電子機器8がマルチコアプロセッサを用いている場合、全てのデッドロックの割り当てが完了するまで、1つの中央処理装置が1つのデッドロックを担当する。ステップ6032に示すように、ソースページフレーム番号は、復元されていない第1ページのページフレーム番号に設定され、ターゲットページフレーム番号は、復元されていない第1ページに対応するターゲットページのページフレーム番号に設定され、ソースページフレーム番号とターゲットページフレーム番号はページフレーム番号の1つの組合せとしてデッドロックアレイに記録される。ステップ6033に示すように、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号は、次のページフレーム番号の組合せにおけるソースページフレーム番号となり、復元されていないページのターゲットページのページフレーム番号が取り出され、デッドロックアレイに記録される次のページフレーム番号の組合せにおけるターゲットページフレーム番号となる。ステップ6034に示すように、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号に等しいか否かが判断される。デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号に等しくない場合には、ステップ6033が実行される。デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるターゲットページフレーム番号が、先頭のページフレーム番号の組合せにおけるソースページフレーム番号に等しい場合には、ステップ6035が実行される。ステップ6035に示すように、一時記憶ページが割り当てられ、デッドロックアレイ内の末尾のページフレーム番号の組合せにおけるソースページフレーム番号が一時記憶ページにコピーされる。ステップ6036に示すように、ページ復元プロセスは、デッドロックアレイ内の末尾から2番目のページフレーム番号の組合せから前に向かって1つずつ実行される。ステップ6037に示すように、一時的に記憶されるページは、先頭のページフレーム番号の組合せにおけるソースページフレーム番号に復元される。
【0043】
ステップ604に示すように、復元されていないページが一時記憶ページリストにないか否かが判断される。復元されていないページが一時記憶ページリストにある場合にはステップ601が実行される。一方、復元されていないページが一時記憶ページリストにない場合にはステップ605が実行される。ステップ605に示すように、ハイバネーションイメージファイルの全てのページの復元が完了する。
【0044】
開示された実施形態に対しては様々な変形や変更が可能であることは当業者にとって明らかである。明細書及び例は単なる例示とみなされ、本開示の真の範囲は後述の請求項とその均等物によって示されることが意図されている。