(58)【調査した分野】(Int.Cl.,DB名)
前記優先情報は、前記複数の揮発性メモリを利用して動作するアプリケーションと、当該アプリケーションが利用するメモリ領域を前記第一メモリに優先的に割り当てるべき度合いである第一優先度との対応付けを含み、
前記メモリ管理部は、アプリケーションからメモリ領域の割り当ての要求を受けた場合に、前記アプリケーションに前記優先情報により対応付けられている前記第一優先度が高いほど、より優先的に、前記第一メモリにメモリ領域を割り当てる
請求項1に記載の電子機器。
前記優先情報は、前記複数の揮発性メモリに配置されるファイルと、当該ファイルが配置されるメモリ領域を前記第一メモリに優先的に割り当てるべき度合いである第二優先度との対応付けを含み、
前記メモリ管理部は、ファイルが配置されるべきメモリ領域の割り当ての要求を受けた場合に、前記ファイルに前記優先情報により対応付けられている前記第二優先度が高いほど、より優先的に、前記第一メモリにメモリ領域を割り当てる
請求項1〜3のいずれか1項に記載の電子機器。
【発明を実施するための形態】
【0012】
本発明の一態様に係る電子機器は、
オン状態とオフ状態とに遷移する電子機器であって、第一メモ
リを含む複数の揮発性メモリと、
前記複数の揮発性メモリへの電流の供給
の遮断
を個別に制
御する電流制御部と、
前記オン状態において、前記第一メモリに優先的に割り当てられるべきメモリ領域を示す優先情報に基づいて、
前記複数の揮発性メモリのうちの少なくとも1つの揮発性メモリにメモリ領域を割り当てるメモリ管理部とを備える。
【0013】
上記態様によれば、電子機器は、電流の供給が遮断されない第一メモリに割り当てられるべきメモリ領域を、優先情報に基づいて優先的に第一メモリに割り当てることができ、第一メモリに割り当てられるべきメモリ領域が第二メモリに割り当てられることが抑制される。第二メモリへの電流の供給を遮断する際には、第二メモリに記憶されているデータを第一メモリにコピーする処理などのために時間を要する。そのため、第二メモリへの電流の供給を遮断してサスペンド状態に遷移するときに、第一メモリに割り当てられるべきメモリ領域が第二メモリに割り当てられる場合に比べて、オン状態からサスペンド状態への遷移に要する時間を削減できる。このように、電子機器は、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0014】
例えば、前記優先情報は、前記複数の揮発性メモリを利用して動作するアプリケーションと、当該アプリケーションが利用するメモリ領域を前記第一メモリに優先的に割り当てるべき度合いである第一優先度との対応付けを含み、前記メモリ管理部は、アプリケーションからメモリ領域の割り当ての要求を受けた場合に、前記アプリケーションに前記優先情報により対応付けられている前記第一優先度が高いほど、より優先的に、前記第一メモリにメモリ領域を割り当ててもよい。
【0015】
上記態様によれば、電子機器は、アプリケーションごとに定められている優先度を用いて優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てる。このように、電子機器は、アプリケーションごとにメモリ領域の割り当てを制御することで、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0016】
例えば、前記メモリ管理部は、さらに、前記アプリケーションが起動される頻度を取得し、取得した前記頻度が高いほど、前記第一優先度を高くする調整をしてもよい。
【0017】
上記態様によれば、電子機器は、アプリケーションが起動される頻度に応じて調整された優先度を用いて、優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てることができる。
【0018】
例えば、前記優先情報は、前記複数の揮発性メモリに配置されるファイルと、当該ファイルが配置されるメモリ領域を前記第一メモリに優先的に割り当てるべき度合いである第二優先度との対応付けを含み、前記メモリ管理部は、ファイルが配置されるべきメモリ領域の割り当ての要求を受けた場合に、前記ファイルに前記優先情報により対応付けられている前記第二優先度が高いほど、より優先的に、前記第一メモリにメモリ領域を割り当ててもよい。
【0019】
上記態様によれば、電子機器は、ファイルごとに定められている優先度を用いて、優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てる。このように、電子機器は、ファイルごとにメモリ領域の割り当てを制御することで、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0020】
例えば、前記メモリ管理部は、前記電流制御部が
前記複数の揮発性メモリのうち前記第一メモリを除く揮発性メモリへの電流の供給を遮断する前に、
前記複数の揮発性メモリのうち前記第一メモリを除く揮発性メモリに記憶されているデータを前記第一メモリにコピーしてもよい。
【0021】
上記態様によれば、電子機器は、第二メモリへの電力の供給を遮断してオン状態からサスペンド状態に遷移するときに、第二メモリに記憶されているデータを第一メモリにコピーするので、第二メモリに記憶されたデータもサスペンド状態の後に維持される。また、サスペンド状態の後に維持されることが望まれるデータが、優先情報に基づいて第一メモリに既に割り当てられていれば、上記コピーに要する時間が削減される効果もある。このように、電子機器は、サスペンド状態の後に、より多くのデータを維持するとともに、オン状態からサスペンド状態への遷移に要する時間をより一層削減することができる。
【0022】
例えば、前記メモリ管理部は、前記複数の揮発性メモリのうちの、前記第二メモリを含む二以上
の揮発性メモリに亘ってメモリ領域を割り当てた場合には、前記電流制御部が前記第二メモリへの電流の供給を遮断する前に、割り当てた前記メモリ領域のうち前記第二メモリに含まれている部分領域に記憶されているデータを前記第一メモリにコピーしてもよい。
【0023】
上記態様によれば、電子機器は、第二メモリを含む二以上の不揮発性メモリに亘って割り当てられたメモリ領域を、サスペンド状態の後に維持することができる。このように、電子機器は、二以上の不揮発性メモリに亘って割り当てられたメモリ領域をサスペンド状態の後に維持するとともに、オン状態からサスペンド状態への遷移に要する時間を削減することができる。また、このデータのコピーは、DMA(Direct Memory Access)によってなされてもよく、これによりCPUの処理負荷を軽減することで、起動処理に要する時間を削減することができる。
【0024】
例えば、前記電流制御部は、さらに、前記電子機器が備える1以上のハードウェアのうちの予め定められた被制御ハードウェアへの電流の供給を遮断する制御をし、前記メモリ管理部は、さらに、前記電流制御部が前記被制御ハードウェアへの電流の供給を遮断する前に、前記被制御ハードウェアを制御するドライバの状態を示す状態情報を前記第一メモリに記憶させ、前記電流制御部が前記被制御ハードウェアへの電流の供給を復旧した後に、前記状態情報を前記ドライバにコピーしてもよい。
【0025】
上記態様によれば、電子機器は、ハードウェアへの電流の供給を遮断し、その後にハードウェアへの電流の供給を復旧するときに、その遮断前の状態を維持することができる。このように、電子機器は、ハードウェアの状態をサスペンド状態の後に維持できるとともに、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0026】
例えば、前記メモリ管理部は、さらに、前記電流制御部が前記被制御ハードウェアへの電流の供給を遮断する前に、前記記憶が完了したことを示す完了情報を前記第一メモリに記憶させ、前記電流制御部が前記被制御ハードウェアへの電流の供給を復旧した後に、前記第一メモリに前記完了情報が記憶されていると判定した場合に前記状態情報を前記ドライバにコピーしてもよい。
【0027】
上記態様によれば、電子機器は、サスペンド状態に遷移する処理が正常に完了したか否かを判定し、正常に完了した場合には第一メモリに記憶された情報を用いて短時間で起動し、正常に完了しなかった場合には、通常の起動処理を用いて起動する。よって、電子機器は、オン状態からサスペンド状態への遷移に係る処理が正常に完了できなかった場合でもその後に正常に起動できるようにしながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0028】
例えば、前記メモリ管理部は、さらに、前記電流制御部が前記被制御ハードウェアへの電流の供給を遮断する前に、複数の前記ドライバのうちの1以上のドライバの状態を示す状態情報を前記第一メモリに記憶させるたびに、前記記憶が完了したことを示す部分完了情報を前記第一メモリに記憶させ、前記電流制御部が前記被制御ハードウェアへの電流の供給を復旧した後に、前記第一メモリに記憶されている前記部分完了情報を参照し、(a)複数の前記ドライバのうち、前記状態情報が前記第一メモリに記憶されているドライバに前記状態情報を戻し、(b)複数の前記ドライバのうち、前記状態情報が前記第一メモリに記憶されていないドライバを初期状態にしてもよい。
【0029】
上記態様によれば、電子機器は、サスペンド状態に遷移する処理のうちの複数の時点で処理が正常に完了したか否かを判定し、正常に完了した処理については第一メモリに記憶された情報を用いて短時間でハードウェアの状態を復帰し、正常に完了しなかった処理については、通常の起動処理を用いて起動する。よって、電子機器は、オン状態からサスペンド状態への遷移に係る処理が正常に完了できなかった処理があってもその処理だけを通常起動により起動させながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0030】
例えば、前記電子機器は、さらに、ユーザによる、前記電子機器をオフ状態からオン状態に遷移させる操作を受ける操作部を備え、前記メモリ管理部は、さらに、現時点より後に前記電子機器がオフ状態からオン状態に遷移する時点である推定オン時点を推定し、前記電流制御部は、さらに、現時点から前記推定オン時点までの時間長が所定より大きい場合に、
前記複数の揮発性メモリへの電流の供給を遮断する制御をし、現時点から前記推定オン時点までの時間長が所定より小さくなった場合に、
前記第一メモリへの電流の供給を復旧する制御をしてもよい。
【0031】
上記態様によれば、電子機器は、電子機器の起動が比較的長い時間サスペンド状態を維持すると推定される場合に、一旦電源オフ状態をとることで消費電力を削減する。また、一旦電源オフ状態をとることで、仮にアプリケーションにメモリリークなどの不具合がある場合でも、その影響を抑制し、その後の動作を正常に行うことができる。よって、電子機器は、より一層消費電力を削減し、メモリリークなどの影響を回避しながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0032】
また、本発明の一態様に係る電子機器の制御方法は、
オン状態とオフ状態とに遷移する電子機器であって、第一メモ
リを含む複数の揮発性メモリを備える電子機器の制御方法であって、
前記複数の揮発性メモリへの電流の供給
の遮断
を個別に制
御する電流制御ステップと、
前記オン状態において、前記第一メモリに優先的に割り当てられるべきメモリ領域を示す優先情報に基づいて、
前記複数の揮発性メモリのうちの少なくとも1つの揮発性メモリにメモリ領域を割り当てるメモリ管理ステップとを含む。
【0033】
これにより、上記電子機器と同様の効果を奏する。
【0034】
また、本発明の一態様に係るプログラムは、上記の制御方法をコンピュータに実行させるためのプログラムである。
【0035】
これにより、上記電子機器と同様の効果を奏する。
【0036】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
【0037】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0038】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【0039】
(実施の形態1)
本実施の形態において、オン状態からサスペンド状態への遷移に要する時間を削減する電子機器について説明する。
【0040】
図1は、本実施の形態に係る電子機器1の動作モードの説明図である。電子機器1は、例えば、車両のナビゲーション装置を含むインフォテインメントシステムであるが、これに限定されず、RAMを備えるコンピュータ、具体的には、パーソナルコンピュータ、スマートフォンなどでもよい。
【0041】
図1に示されるように、電子機器1は、CPU(Central Processing Unit)11と、表示装置13と、揮発性メモリであるメモリM1およびM2とを備える。各構成要素は、供給される電流により駆動する。各構成要素の機能は、後で詳しく説明する。
【0042】
電子機器1は、ユーザによる操作に基づいてオン状態とオフ状態とに相互に遷移する。オン状態とは、電子機器1が稼働している状態であり、オフ状態とは、電子機器1が稼働していない状態である。例えば、電子機器1のオン状態及びオフ状態は、車両の状態と連動する。車両の状態が「LOCK」、「ACC(アクセサリ)」、「ON」、及び、「START」で表現される場合、車両が「LOCK」状態のときに、電子機器1がオフ状態であり、車両の「ACC(アクセサリ)」、「ON」、及び、「START」の各状態のときに、電子機器1がオン状態であるように連動する。
【0043】
オン状態では、CPU11、表示装置13、並びに、メモリM1およびM2に電流が供給される。
【0044】
オフ状態では、電子機器1の構成要素の一部又は全部への電流の供給が遮断される。オフ状態は、さらに3つの状態、スリープ状態、サスペンド状態および電源オフ状態に細分化される。
【0045】
スリープ状態では、表示装置13への電流の供給が遮断され、CPU11およびメモリM1およびM2への電流の供給が維持される。
【0046】
サスペンド状態では、表示装置13、CPU11およびメモリM2への電流の供給が遮断され、メモリM1への電流の供給が維持される。
【0047】
電源オフ状態では、表示装置13、CPU11およびメモリM1及びM2への電流の供給が遮断される。
【0048】
オフ状態に含まれる3つの状態の中では、電子機器1の消費電力は、スリープ状態において最も大きく、電源オフ状態において最も小さい。一方、オン状態に遷移するのに要する時間は、スリープ状態において最も小さく、電源オフ状態において最も大きい。
【0049】
そこで、電子機器1は、車両が「LOCK」状態であり、ユーザにより利用されないときには、サスペンド状態をとる。これにより、電子機器1は、消費電力を低減しながら、オン状態に短時間で遷移できる状態を維持することができる。
【0050】
しかしながら、メモリM1及びM2に配置されるメモリ領域いかんによっては、オン状態からサスペンド状態への遷移に多くの時間を要する場合がある。そこで、電子機器1は、メモリM1に配置するメモリ領域を工夫することによって、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0051】
このような電子機器1の構成について、以降で詳しく説明する。
【0052】
図2は、本実施の形態に係る電子機器1の構成を示すブロック図である。
【0053】
図2に示されるように、電子機器1は、CPU11と、メモリ12と、表示装置13と、入力装置14と、操作部15と、電流制御部16と、電圧監視IC(Integrated Circuit)17とを備える。
【0054】
CPU11は、所定のプログラムをメモリ12を用いて実行するプロセッサである。CPU11は、所定のプログラムを実行することでメモリ管理部20の機能を実現する。また、CPU11は、所定のプログラムを実行することでアプリケーションを動作させる。ここで、アプリケーションとは、例えば、車両のナビゲーション、音楽の再生、ラジオの受信及び再生、音声認識、ハンズフリー通話などである。
【0055】
メモリ12は、CPU11がプログラムを実行するときにワークエリアとして使用される揮発性メモリである。メモリ12は、複数の揮発性メモリを有する。ここでは、メモリ12が2つの揮発性メモリであるメモリM1及びM2を有する場合を説明するが、これに限定されない。
【0056】
2つの揮発性メモリの一部は、サスペンド状態において、供給される電流が電流制御部16による制御によって遮断又は復旧される。これに対し、2つの揮発性メモリの残部は、電流制御部16による上記制御がなされない。電流制御部16による制御がなされるメモリをメモリM2とし、上記制御がなされないメモリをM1とする。
【0057】
表示装置13は、画像を表示する表示装置である。表示装置13は、例えば、液晶ディスプレイ又は有機EL(Electro−Luminescence)ディスプレイである。
【0058】
入力装置14は、ユーザからの操作の入力を受ける入力インタフェース装置である。入力装置14は、例えば、タッチパッド、キーボード又はマウスなどである。また、入力装置14と表示装置13とがタッチパネルとして実現されてもよい。
【0059】
操作部15は、オン状態とオフ状態との遷移のユーザによる操作を受ける。操作部15は、例えば、車両の状態を変更するための車両のキーによる操作、又は、ボタンの押下による操作を上記操作として受ける。
【0060】
電流制御部16は、メモリM2の駆動電流を制御する制御部である。電流制御部16は、メモリM2の駆動に必要な電流を供給の遮断及び復旧を制御する。また、電流制御部16は、表示装置13及び入力装置14、並びにその他のハードウェア(不図示)への電流の供給の遮断及び復旧を制御する。その他のハードウェアとは、例えばUART(Universal Asynchronous Receiver/Transmitter)などが含まれる。電流制御部16によって電流の供給の遮断及び復旧が制御されるハードウェアを、被制御ハードウェアともいう。
【0061】
電圧監視IC17は、メモリM1の受電端子の電圧を監視するICである。具体的には、電圧監視IC17は、サスペンド状態においてメモリM1の受電端子の電圧を監視しており、サスペンド状態の当初から現時点まで受電端子の電圧が適正範囲に維持されていたか、又は、そうでなかったかを、電圧値として出力する。適正範囲は、メモリM1が正常にデータを保持するのに適した電圧値の範囲であり、例えば1.05V〜1.15Vである。
【0062】
メモリ管理部20は、CPU11が所定のプログラムを実行することで実現される機能である。メモリ管理部20は、メモリM1に優先的に割り当てられるべきメモリ領域を示す優先情報に基づいて、メモリM1及びメモリM2のいずれかにメモリ領域を割り当てる。具体的には、メモリ管理部20は、電子機器1において動作するアプリケーションによりメモリの割り当ての要求を受け、その要求に応じて、要求元のアプリケーションが使用するメモリ領域を割り当てることで、メモリの割り当てを行う。このとき、メモリ管理部20は、優先情報に基づいてメモリM1又はM2のいずれかのメモリ領域を割り当てる。優先情報の具体例については後で説明する。なお、上記のアプリケーションは、ハードウェアを制御するソフトウェアであるドライバ、又は、OS(Operating System)の一機能として動作するソフトウェアも含む。
【0063】
また、メモリ管理部20は、オン状態とサスペンド状態との遷移の際に、メモリM1及びM2の記憶データのコピー等の処理を行う。メモリ管理部20は、操作部15が「ACC」状態から「LOCK」状態への遷移の操作を受けた場合に、電子機器1をオン状態からサスペンド状態に遷移させる処理を行う。また、メモリ管理部20は、操作部15が「LOCK」状態から「ACC」状態への遷移の操作を受けた場合に、電子機器1をサスペンド状態からオン状態に遷移させる処理を行う。メモリ管理部20は、電流制御部16がメモリM2への電流の供給を遮断する前に、メモリM2に記憶されているデータをメモリM1にコピーする。これらの処理については後で詳しく説明する。
【0064】
また、メモリ管理部20は、電流制御部16がハードウェアへの電流の供給を遮断する前に、ハードウェアを制御するドライバの状態を示す状態情報をメモリM1に記憶させる。その場合、メモリ管理部20は、電流制御部16がハードウェアへの電流の供給を復旧した後に、メモリM1に記憶させた状態情報をドライバにコピーする。
【0065】
図3は、本実施の形態に係る電子機器1のメモリ領域の説明図である。
図3には、メモリ管理部20がアプリケーションなどに割り当てたメモリ領域を示している。
【0066】
図3に示される例では、アプリケーションA1の領域101、アプリケーションA3の領域103、ドライバD1の領域121、サスペンド完了フラグ131、及び、OS(Operating System)領域141がメモリM1に割り当てられている。また、アプリケーションA2の領域102、アプリケーションA4の領域104、アプリケーションA5の領域105、及び、ドライバD2領域122がメモリM2に割り当てられている。
【0067】
優先情報を用いたメモリ領域の割り当て方法について、アプリケーションごとの優先度を用いる例と、ファイルごとの優先度を用いる例とを説明する。
【0068】
(1)アプリケーションごとの優先度を用いる例
この例では、優先情報は、メモリ12を利用して動作するアプリケーションと、当該アプリケーションが利用するメモリ領域をメモリM1に優先的に割り当てるべき度合いである第一優先度との対応付けを含む。その場合、メモリ管理部20は、アプリケーションからメモリ領域の割り当ての要求を受けた場合に、アプリケーションに優先情報により対応付けられている第一優先度が高いほど、より優先的に、メモリM1にメモリ領域を割り当てる。より具体的には、優先度が所定の閾値以上であるアプリケーションのメモリ領域をメモリM1に割り当て、優先度が所定の閾値未満であるアプリケーションのメモリ領域をメモリM2に割り当てる。
【0069】
図4は、本実施の形態に係るアプリケーションごとのメモリ領域の優先度と閾値とを示す説明図である。この優先度は、第一優先度に相当する。
【0070】
図4の(a)は、電子機器1で動作し得るアプリケーションそれぞれについての優先度を示している。ここで、優先度は、一例として、0〜100の範囲の整数値で表現され、100が最も高い優先度を示し、0が最も低い優先度を示すとする。
【0071】
例えば、アプリケーションA1の優先度が100であり、アプリケーションA2の優先度が40である。なお、ハードウェアを制御するソフトウェアであるドライバもアプリケーションと同様に扱われ得る。例えば、ドライバD1の優先度が90であり、ドライバD2の優先度が0(ゼロ)である。
【0072】
また、
図4の(b)は、優先度の閾値が60であることを示している。
【0073】
このような優先度と閾値とが設定されている場合に、メモリ管理部20は、
図3に示されるメモリ領域の割り当てをする。
【0074】
なお、アプリケーションごとの優先度は、当該アプリケーションごとの起動回数によって調整されてもよい。言い換えれば、メモリ管理部20は、アプリケーションそれぞれが起動される頻度を取得し、取得した頻度が高いほど、第一優先度を高くする調整をしてもよい。ここで、頻度は、例えば所定時間内の起動回数により表現され得る。所定時間は、例えば1週間〜4週間程度を採用し得る。
【0075】
なお、アプリケーションごとの優先度は、当該アプリケーションごとの使用時間によって調整されてもよい。メモリ管理部20は、アプリケーションそれぞれが起動されてから終了されるまでの時間を累積した累積時間を取得し、取得した累積時間が長いほど、第一優先度を高くする調整をしてもよい。車両を使用する頻度が比較的低いユーザが想定される場合には、アプリケーションごとの起動回数よりも、アプリケーションごとの使用時間によって調整されるほうが優先度が決定されるほうが適切となり得る。
【0076】
図5は、本実施の形態に係る優先度の調整方法を示す説明図である。
図4に示されるアプリケーションごとの優先度は、当該アプリケーションの起動の頻度によって調整され得る。この調整では、頻度が高いほど第一優先度を高くする、言い換えれば、頻度が低いほど第一優先度を低くする調整をする。
【0077】
図5の(a)及び(b)には、それぞれ、予め定められたアプリケーションごとの頻度、及び、予め定められた閾値が示されている。これらの頻度及び閾値を、調整前の頻度及び閾値ともいう。
【0078】
また、
図5の(a)には、メモリ管理部20が、アプリケーション及びドライバのメモリ領域を割り当てるメモリが、メモリM1及びM2のいずれであるかが示されている。例えば、メモリ管理部20が、アプリケーションA1のメモリ領域をメモリM1に割り当て、アプリケーションA2のメモリ領域をメモリM2に割り当てることが示されている。
【0079】
図5の(c)及び(d)には、それぞれ、メモリ管理部20によるアプリケーションごとの頻度を示す所定時間内の起動回数、調整後の優先度、及び、調整後の閾値が示されている。
【0080】
調整後の優先度Bは、一例として、調整前の優先度Aと、起動回数Nとを用いて以下のように算出される。
【0082】
また、調整後の閾値Uは、一例として、調整前の閾値Tと、アプリケーション及びドライバの起動回数の合計値M、管理対象の領域の個数Lを用いて以下のように算出される。
【0084】
そして、メモリ管理部20は、上記のように調整した後のアプリケーションごとの優先度と閾値とを用いて、アプリケーションA1のメモリ領域をメモリM1に割り当て、アプリケーションA2のメモリ領域をメモリM2に割り当てる。
【0085】
このようにすることで、アプリケーションの頻度に基づいて、起動の頻度が高いアプリケーションが使用するメモリ領域が、より優先的にメモリM1に割り当てられる。
【0086】
なお、メモリ管理部20は、100の優先度が対応付けられたアプリケーションのメモリ領域を常にメモリM1に割り当て、又は、0の優先度が対応付けられたアプリケーションのメモリ領域を常にメモリM2に割り当ててもよい。
【0087】
(2)ファイルごとの優先度を用いる例
この例では、優先情報は、メモリ12に配置されるファイルと、当該ファイルが配置されるメモリ領域をメモリM1に優先的に割り当てるべき度合いである第二優先度との対応付けを含む。その場合、メモリ管理部20は、ファイルが配置されるべきメモリ領域の割り当ての要求を受けた場合に、ファイルに優先情報により対応付けられている第二優先度が高いほど、より優先的に、メモリM1にメモリ領域を割り当てる。より具体的には、優先度が所定の閾値以上であるファイルが配置されるメモリ領域をメモリM1に割り当て、優先度が所定の閾値未満であるファイルが配置されるメモリ領域をメモリM2に割り当てる。
【0088】
図6は、本実施の形態に係るアプリケーションと、アプリケーションが使用するファイルとの対応を示す対応表である。
図7は、本実施の形態に係るファイルと、ファイルの優先度との対応を示す対応表である。この優先度は、第二優先度に相当する。
【0089】
図6は、電子機器1で動作し得るアプリケーションそれぞれが使用するファイルを示している。例えば、アプリケーションA1は、4つのファイル「/bin/appl1」、「/lib/libc.so」、「/lib/libpthread.so」及び「/data/meter.dat」を使用する。
【0090】
図7の(a)は、電子機器1で動作し得るアプリケーションが使用するファイルそれぞれについての優先度を示している。例えば、ファイル「/bin/appl1」の優先度が80であり、ファイル「/lib/libc.so」の優先度が100であり、ファイル「/lib/libpthread.so」の優先度が90であり、ファイル「/data/meter.dat」の優先度が70である。また、
図7の(b)は、優先度の閾値が60であることを示している。
【0091】
このようなファイルごとの優先度と閾値とが設定されている場合、メモリ管理部20は、優先度が閾値60以上であるファイルを配置するためのメモリ領域をメモリM1に割り当てる。一方、メモリ管理部20は、優先度が閾値60未満であるファイルを配置するためのメモリ領域をメモリM2に割り当てる。
【0092】
なお、上記では、優先情報として、アプリケーションごとの優先度を用いる例と、ファイルごとの優先度を用いる例とを説明したが、これらの両方の特徴を有する優先情報を用いることもできる。
【0093】
以上のように構成された電子機器1の処理の流れについて説明する。
【0094】
図8は、本実施の形態に係る電子機器1のメモリ割り当て処理を示すフロー図である。
図8に示されるメモリ割り当て処理は、例えば、電子機器1において新たなアプリケーションが起動するときに実行される。
【0095】
図8に示されるように、ステップS101において、メモリ管理部20は、アプリケーションからメモリ領域の割り当ての要求を受ける。メモリ割り当ての要求には、要求するメモリのサイズ(容量)が含まれている。
【0096】
ステップS102において、メモリ管理部20は、アプリケーションごとのメモリ領域の優先度と閾値(
図4参照)に基づいて、ステップS101で受けた要求の要求元のアプリケーションの優先度と、閾値とを取得する。
【0097】
ステップS103において、メモリ管理部20は、ステップS102で取得した優先度と閾値とを用いて、優先度が閾値以上であるか否かを判定する。優先度が閾値以上である場合(ステップS103でYes)には、ステップS104に進み、そうでない場合(ステップS103でNo)には、ステップS111に進む。
【0098】
ステップS104において、メモリ管理部20は、ステップS101で受けた要求に含まれるメモリのサイズを確保するのに十分な空き領域がメモリM1にあるか否かを判定する。十分な空き領域がある場合(ステップS104でYes)には、ステップS105に進み、そうでない場合(ステップS104でNo)には、ステップS311に進む。
【0099】
ステップS105において、メモリ管理部20は、ステップS101で受けた要求に応じて、メモリM1にメモリ領域を割り当てる。
【0100】
ステップS106において、メモリ管理部20は、ステップS101で受けた要求に応じて、メモリM1に割り当てた領域の先頭アドレスとサイズとを要求元のアプリケーションに通知する。
【0101】
ステップS111において、メモリ管理部20は、ステップS101で受けた要求に含まれるメモリのサイズを確保するのに十分な空き領域がメモリM2にあるか否かを判定する。十分な空き領域がある場合(ステップS111でYes)には、ステップS112に進み、そうでない場合(ステップS111でNo)には、ステップS121に進む。
【0102】
ステップS112において、メモリ管理部20は、ステップS101で受けた要求に応じて、メモリM2にメモリ領域を割り当てる。
【0103】
ステップS113において、メモリ管理部20は、ステップS101で受けた要求に応じて、メモリM2に割り当てた領域の先頭アドレスとサイズとを要求元のアプリケーションに通知する。
【0104】
ステップS121において、メモリ管理部20は、ステップS101で受けた要求に応じて、メモリ割り当てをすることができないことを通知する。
【0105】
図8に示される一連の流れにより、メモリ管理部20は、新たに起動するアプリケーションに優先度に応じてメモリ領域を割り当てる。
【0106】
図9は、本実施の形態に係る電子機器1の電流遮断処理を示すフロー図である。
図9に示される電流遮断処理は、オン状態からサスペンド状態に遷移するときに実行される。
【0107】
図9に示されるように、ステップS201において、メモリ管理部20は、サスペンド完了フラグを初期化する。サスペンド完了フラグは、オン状態からサスペンド状態への遷移が完了したことを示すためのフラグであり、完了情報に相当する。
【0108】
ステップS202において、メモリ管理部20は、電子機器1において動作している所定のアプリケーションを終了させる。これにより、メモリ管理部20は、終了させたアプリケーションに割り当てられていたメモリ領域を解放する。なお、ステップS202で終了される所定のアプリケーションは、例えば比較的短い時間で起動処理が完了するアプリケーションである。この所定のアプリケーションは、後でサスペンド状態からオン状態に遷移するときに再び起動される(後述する
図10のステップS306)。
【0109】
ステップS203において、メモリ管理部20は、メモリM2に割り当てられているメモリ領域に記憶されているデータを、メモリM1へコピーする。
【0110】
ステップS204において、メモリ管理部20は、メモリM2を無効化する。メモリM2が無効化されることで、メモリM2がOSの管理対象外になる。
【0111】
ステップS205において、メモリ管理部20は、ドライバの状態情報をドライバ領域121にコピーする。
【0112】
ステップS206において、電流制御部16は、メモリM2への電流の供給を遮断する。
【0113】
ステップS207において、メモリ管理部20は、サスペンド完了フラグをセットする。
【0114】
以上の一連の処理によって、電子機器1は、メモリM2への電流の供給を遮断して、オン状態からサスペンド状態に遷移する。
【0115】
仮に
図9に示される一連の処理の途中で、電源電圧の降下などにより処理が中断した場合、サスペンド完了フラグがセットされないでサスペンド状態となることがある。上記一連の処理では、サスペンド完了フラグをステップS201で初期化し、ステップS207でセットするので、一連の処理が完了したか、又は、一連の処理の途中で処理が中断したかをサスペンド完了フラグによって判別できる。
【0116】
図10は、本実施の形態に係る電子機器1の電流復旧処理を示すフロー図である。
図10に示される電流復旧処理は、
図9の処理によって電子機器1がサスペンド状態に遷移した後、サスペンド状態からオン状態に遷移するときに実行する処理である。
【0117】
図10に示されるように、ステップS301において、メモリ管理部20は、電圧監視IC17を参照してメモリM1がデータを保持しているか否かを判定する。具体的には、メモリ管理部20は、サスペンド状態に遷移(
図9のステップS207)してから現時点までの間、メモリM1の受電端子の電圧が適正範囲に維持されていたか否かを判定し、適正範囲に維持されていた場合に、メモリM1がデータを保持していると判定する。メモリM1がデータを保持していると判定した場合(ステップS301でYes)にはステップS302に進み、そうでない場合(ステップS301でNo)には、ステップS311に進む。
【0118】
ステップS302において、メモリ管理部20は、サスペンド完了フラグがセットされているか否かを判定する。サスペンド完了フラグがセットされていると判定した場合(S302でYes)にはステップS303に進み、そうでない場合にはステップS311に進む。
【0119】
ステップS303において、電流制御部16は、メモリM2への電流の供給を復旧する。
【0120】
ステップS304において、メモリ管理部20は、メモリM1のドライバ領域121からドライバの状態情報を読み出し、ドライバにコピーする。
【0121】
ステップS305において、メモリ管理部20は、メモリM2を有効化する。メモリM2が有効化されることで、メモリM2がOSの管理対象となる。
【0122】
ステップS306において、メモリ管理部20は、所定のアプリケーションを起動する。起動される所定のアプリケーションは、
図9のステップS202で終了させたアプリケーションである。
【0123】
なお、ステップS303からS306までの処理は、サスペンド状態から、メモリM1に記憶されているデータを使用して短時間でオン状態に遷移する処理、いわゆるホットスタート処理である。
【0124】
ステップS311において、電子機器1は、電源オフ状態からオン状態に遷移する処理、いわゆるコールドスタート処理を実行する。コールドスタート処理では、メモリM1及びM2のすべてのメモリ領域の初期化、及び、アプリケーションの起動処理などが実行される。
【0125】
上記ステップS311が実行されるのは、サスペンド状態に遷移した後にメモリM1への電流の供給が適正になされなかった場合、又は、サスペンド完了フラグがセットされていない、つまり、
図9に示されるオン状態からサスペンド状態への遷移の一連の処理が途中で中断した場合であり、メモリM1に記憶されているデータを使用した起動処理ができない場合である。このような場合には、電子機器1は、電源オフ状態からオン状態に遷移する処理によって、オン状態に遷移する。
【0126】
以上の一連の処理によって、電子機器1は、メモリM2への電流の供給を復旧して、サスペンド状態からオン状態に遷移する。
【0127】
なお、以上の説明では、電流制御部16がメモリM2への電流の供給の遮断及び復旧を制御する技術を説明したが、電流制御部16は、電流の供給の遮断及び復旧の制御をメモリM2内のバンク単位で行ってもよい。この場合、メモリ管理部20がバンク単位でメモリ領域の割り当てを行うようにすれば、バンク単位での電流の供給の遮断及び復旧の制御に基づいて、電子機器によるオン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0128】
以上のように、本実施の形態の電子機器は、電流の供給が遮断されない第一メモリに割り当てられるべきメモリ領域を、優先情報に基づいて優先的に第一メモリに割り当てることができ、第一メモリに割り当てられるべきメモリ領域が第二メモリに割り当てられることが抑制される。第二メモリへの電流の供給を遮断する際には、第二メモリに記憶されているデータを第一メモリにコピーする処理などのために時間を要する。そのため、第二メモリへの電流の供給を遮断してサスペンド状態に遷移するときに、第一メモリに割り当てられるべきメモリ領域が第二メモリに割り当てられる場合に比べて、オン状態からサスペンド状態への遷移に要する時間を削減できる。このように、電子機器は、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0129】
また、電子機器は、アプリケーションごとに定められている優先度を用いて優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てる。このように、電子機器は、アプリケーションごとにメモリ領域の割り当てを制御することで、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0130】
また、電子機器は、アプリケーションが起動される頻度に応じて調整された優先度を用いて、優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てることができる。
【0131】
また、電子機器は、ファイルごとに定められている優先度を用いて、優先的に第一メモリに割り当てられるべきメモリ領域を第一メモリに割り当てる。このように、電子機器は、ファイルごとにメモリ領域の割り当てを制御することで、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0132】
また、電子機器は、第二メモリへの電力の供給を遮断してオン状態からサスペンド状態に遷移するときに、第二メモリに記憶されているデータを第一メモリにコピーするので、第二メモリに記憶されたデータもサスペンド状態の後に維持される。また、サスペンド状態の後に維持されることが望まれるデータが、優先情報に基づいて第一メモリに既に割り当てられていれば、上記コピーに要する時間が削減される効果もある。このように、電子機器は、サスペンド状態の後に、より多くのデータを維持するとともに、オン状態からサスペンド状態への遷移に要する時間をより一層削減することができる。
【0133】
また、電子機器は、ハードウェアへの電流の供給を遮断し、その後にハードウェアへの電流の供給を復旧するときに、その遮断前の状態を維持することができる。このように、電子機器は、ハードウェアの状態をサスペンド状態の後に維持できるとともに、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0134】
また、電子機器は、サスペンド状態に遷移する処理が正常に完了したか否かを判定し、正常に完了した場合には第一メモリに記憶された情報を用いて短時間で起動し、正常に完了しなかった場合には、通常の起動処理を用いて起動する。よって、電子機器は、オン状態からサスペンド状態への遷移に係る処理が正常に完了できなかった場合でもその後に正常に起動できるようにしながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0135】
(実施の形態2)
本実施の形態において、オン状態からサスペンド状態への遷移に要する時間を削減する電子機器において、電流遮断処理の途中の状態をより詳細に管理し、起動時の処理を改善する技術を説明する。具体的には、実施の形態1のサスペンド完了フラグに代えて、多段階の完了状態を表現し得るサスペンド完了コードを用いる。また、複数のドライバを、1以上のドライバを含むグループに区分し、グループ単位でドライバの状態をメモリM1に記憶させたか否かを管理する。サスペンド完了コードは、完了情報に相当する。
【0136】
本実施の形態では、メモリ管理部20は、電流制御部16が被制御ハードウェアへの電流の供給を遮断する前に、1以上のドライバの状態を示す状態情報をメモリM1に記憶させるたびに、記憶が完了したことを示す部分完了情報をメモリM1に記憶させる。そして、電流制御部16が被制御ハードウェアへの電流の供給を復旧した後に、メモリM1に記憶されている部分完了情報を参照し、(a)複数のドライバのうち、状態情報がメモリM1に記憶されているドライバに状態情報を戻し、(b)複数のドライバのうち、状態情報がメモリM1に記憶されていないドライバを初期状態にする。
【0137】
以降において、詳しく説明する。ここでは、複数のドライバが3つのグループG1、G2及びG3に属している場合を例として説明するが、これに限定されない。
【0138】
図11は、本実施の形態に係る電子機器1の電流遮断処理を示すフロー図である。
図11に示される電流遮断処理は、スリープ状態からサスペンド状態に遷移するときに電子機器1が実行する処理である。
【0139】
図11に示されるように、ステップS401において、メモリ管理部20は、サスペンド完了コードを0にすることで初期化する。
【0140】
ステップS402において、メモリ管理部20は、電子機器1において動作している所定のアプリケーションを終了させる。この処理は、
図9のステップS202と同様である。
【0141】
ステップS403において、メモリ管理部20は、メモリM2に割り当てられているメモリ領域に記憶されているデータを、メモリM1へコピーする。
【0142】
ステップS404において、メモリ管理部20は、メモリM2を無効化する。
【0143】
ステップS405において、メモリ管理部20は、サスペンド完了コードを1にする。
【0144】
ステップS406において、メモリ管理部20は、グループG1に属するドライバの状態情報をメモリM1のドライバ領域にコピーする。
【0145】
ステップS407において、メモリ管理部20は、サスペンド完了コードを2にする。
【0146】
ステップS408において、メモリ管理部20は、グループG2に属するドライバの状態情報をメモリM1のドライバ領域にコピーする。
【0147】
ステップS409において、メモリ管理部20は、サスペンド完了コードを3にする。
【0148】
ステップS410において、メモリ管理部20は、グループG3に属するドライバの状態情報をメモリM1のドライバ領域にコピーする。
【0149】
ステップS411において、メモリ管理部20は、サスペンド完了コードを4にする。
【0150】
ステップS412において、メモリ管理部20は、電流制御部16は、メモリM2への電流の供給を遮断する。
【0151】
ステップS413において、メモリ管理部20は、サスペンド完了コードを5にする。
【0152】
仮に
図11に示される一連の処理の途中で、電源電圧の降下などにより処理が中断した場合、中断した時点に応じて異なるサスペンド完了コードが設定された状態となる。よって、あとで行われる復帰処理においてどの時点で処理が中断したかを判別することができ、復帰に必要な処理を行う一方、不要な処理を行うことを抑制することができる利点がある。
【0153】
図12は、本実施の形態に係る電子機器1の電流復旧処理を示すフロー図である。
図12に示される電流復旧処理は、
図11の処理によって電子機器1がサスペンド状態に遷移した後、サスペンド状態からオン状態に遷移するときに実行する処理である。
【0154】
図12に示されるように、ステップS501において、メモリ管理部20は、電圧監視IC17を参照してメモリM1がデータを保持しているか否かを判定する。この処理は、ステップS301と同様である。
【0155】
ステップS502において、メモリ管理部20は、サスペンド完了コードの値によって処理を分岐する。サスペンド完了コードが4又は5である場合(ステップS502で「=4or5」)にはステップS503に進み、サスペンド完了コードが3である場合(ステップS502で「=3」)にはステップS511に進み、サスペンド完了コードが2である場合(ステップS502で「=2」)にはステップS521に進み、サスペンド完了コードが1である場合(ステップS502で「=1)にはステップS531に進み、サスペンド完了コードが0である場合(ステップS502で「=0」)にはステップS541に進む。
【0156】
ステップS503において、電流制御部16は、メモリM2への電流の供給を復旧する。
【0157】
ステップS504において、メモリ管理部20は、メモリM1のドライバ領域121からグループG3に属するドライバの状態情報を読み出し、ドライバにコピーする。
【0158】
ステップS505において、メモリ管理部20は、メモリM1のドライバ領域121からグループG2に属するドライバの状態情報を読み出し、ドライバにコピーする。
【0159】
ステップS506において、メモリ管理部20は、メモリM1のドライバ領域121からグループG1に属するドライバの状態情報を読み出し、ドライバにコピーする。
【0160】
ステップS507において、メモリ管理部20は、メモリM2を有効化する。
【0161】
ステップS508において、メモリ管理部20は、所定のアプリケーションを起動する。
【0162】
ステップS511において、電流制御部16は、メモリM2への電流の供給を復旧する。
【0163】
ステップS512において、メモリ管理部20は、グループG3に属するドライバを初期化する。ステップS512の後、ステップS505に進む。
【0164】
ステップS521において、電流制御部16は、メモリM2への電流の供給を復旧する。
【0165】
ステップS522において、メモリ管理部20は、グループG3に属するドライバを初期化する。
【0166】
ステップS523において、メモリ管理部20は、グループG2に属するドライバを初期化する。ステップS523の後、ステップS506に進む。
【0167】
ステップS531において、電流制御部16は、メモリM2への電流の供給を復旧する。
【0168】
ステップS532において、メモリ管理部20は、グループG3に属するドライバを初期化する。
【0169】
ステップS533において、メモリ管理部20は、グループG2に属するドライバを初期化する。
【0170】
ステップS534において、メモリ管理部20は、グループG1に属するドライバを初期化する。ステップS534の後、ステップS507に進む。
【0171】
ステップS541において、電子機器1は、電源オフ状態からオン状態に遷移する処理、いわゆるコールドスタート処理を実行する。ステップS541が実行されるのは、サスペンド状態に遷移した後にメモリM1への電流の供給が適正になされなかった場合、又は、サスペンド完了コードが0である、つまり、
図11に示されるステップS401より後で、かつ、ステップS405より前である場合である。この場合、メモリM1に記憶されているデータを使用した起動処理ができない。このような場合には、電子機器1は、電源オフ状態からオン状態に遷移する処理によって、オン状態に遷移する。
【0172】
なお、上記ハードウェアがSoC(System on Chip)の一部として実現されている場合、電流制御部16が当該SoCのレジスタの部分の電流の供給を維持する場合には、本実施の形態の制御は不要である。
【0173】
以上のように、本実施の形態の電子機器は、サスペンド状態に遷移する処理のうちの複数の時点で処理が正常に完了したか否かを判定し、正常に完了した処理については第一メモリに記憶された情報を用いて短時間でハードウェアの状態を復帰し、正常に完了しなかった処理については、通常の起動処理を用いて起動する。よって、電子機器は、オン状態からサスペンド状態への遷移に係る処理が正常に完了できなかった処理があってもその処理だけを通常起動により起動させながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0174】
(実施の形態3)
本実施の形態において、オン状態からサスペンド状態への遷移に要する時間を削減する電子機器において、アプリケーションが複数のメモリに亘ってメモリ領域を割り当てる場合に、オン状態からサスペンド状態への遷移に要する時間を削減する技術を説明する。
【0175】
図13は、実施の形態3に係る電子機器1のメモリ領域の説明図である。
図13では、実施の形態1における
図3と同様に、アプリケーションA1領域101などがメモリM1に割り当てられており、アプリケーションA2領域102などがメモリM2に割り当てられている。そして、ビデオメモリ用領域がメモリM1及びM2に亘って割り当てられている。具体的には、メモリM1にビデオメモリ用領域151が割り当てられており、メモリM2にビデオメモリ用領域152が割り当てられている。
【0176】
このような場合に、メモリM2への電流の供給を遮断するときの処理について説明する。具体的には、メモリ管理部20は、メモリM2への電流の供給を遮断する前に、ビデオメモリ用領域152に記憶されているデータを、メモリM1にあるビデオメモリ退避領域155にコピーすることで退避する。そして、メモリM2への電流の供給を復旧した後に、ビデオメモリ退避領域155に記憶されているデータをビデオメモリ用領域152にコピーする。
【0177】
図14は、本実施の形態に係る電子機器1の電流遮断処理を示すフロー図である。なお、
図14におけるフロー図において、
図9のフロー図と同じ処理には同じ符号を付して詳細な説明を省略する。
【0178】
メモリ管理部20は、サスペンド完了フラグの初期化、及び、所定のアプリケーションの終了(ステップS201及びS202)の後に、メモリM2内のビデオメモリ用領域152に記憶されているデータのビデオメモリ退避領域155へのコピーを開始する(ステップS202A)。ここで、ビデオメモリ用領域152に記憶されているデータのコピーは、DMA(Direct Memory Access)によるコピーであってもよい。この場合、メモリ管理部20は、DMAコントローラ(不図示)にコピーの開始を指示する。DMAコントローラは、この指示を受けてコピーを行う(ステップS202B)。DMAによるコピーを用いれば、コピーの最中にCPU11が他の情報処理を行うことができる利点がある。なお、上記のコピーを、CPU11によるコピーを用いてもよい。
【0179】
そして、メモリ管理部20は、メモリM2に割り当てられているメモリ領域に記憶されているデータのメモリM1へのコピー、メモリM2の無効化、ドライバの状態情報のコピーを行う(ステップS203、S204及びS205)。
【0180】
次に、メモリ管理部20は、ビデオメモリ用領域152に記憶されているデータのコピーが完了したか否かを判定し、コピーが完了するまでステップS205Aで待機する。
【0181】
その後、電流制御部16がメモリM2への電流の供給を遮断し、メモリ管理部20がサスペンド完了フラグをセットする(ステップS206及びS207)。
【0182】
図15は、本実施の形態に係る電子機器1の電流復旧処理を示すフロー図である。なお、
図15におけるフロー図において、
図10のフロー図と同じ処理には同じ符号を付して詳細な説明を省略する。
【0183】
メモリ管理部20は、メモリM1がデータを保持しているか否かの判定、サスペンド完了フラグがセットされているか否かの判定、及び、メモリM2への電流の供給の復旧をする(ステップS301、S302及びS303)。
【0184】
メモリ管理部20は、メモリM1内のビデオメモリ退避領域155に記憶されているデータのビデオメモリ用領域152へのコピーを開始する(ステップS303A)。ここで、ビデオメモリ退避領域155に記憶されているデータのコピーは、DMAによるコピーであってもよい。この場合、メモリ管理部20は、DMAコントローラにコピーの開始を指示する。DMAコントローラは、この指示を受けてコピーを行う(ステップS303B)。
【0185】
次に、メモリ管理部20は、ビデオメモリ退避領域155に記憶されているデータのコピーが完了したか否かを判定し、コピーが完了するまでステップS303Cで待機する。
【0186】
なお、S303Bの処理がDMAによってなされる場合、ステップS303Bの処理は、ステップS304の処理と並行してなされ得る。つまり、ステップS304は、ステップS303Cより前に実行されてもよい。これにより、上記一連の処理に要する時間を削減できる。
【0187】
以上のように、本実施の形態の電子機器は、第二メモリを含む二以上の不揮発性メモリに亘って割り当てられたメモリ領域を、サスペンド状態の後に維持することができる。このように、電子機器は、二以上の不揮発性メモリに亘って割り当てられたメモリ領域をサスペンド状態の後に維持するとともに、オン状態からサスペンド状態への遷移に要する時間を削減することができる。また、このデータのコピーは、DMA(Direct Memory Access)によってなされてもよく、これによりCPUの処理負荷を軽減することで、起動処理に要する時間を削減することができる。
【0188】
(実施の形態4)
本実施の形態において、オン状態からサスペンド状態への遷移に要する時間を削減する電子機器において、サスペンド状態から電源オフ状態に遷移することでさらに電力消費を削減する技術を説明する。
【0189】
本実施の形態に係る電子機器1は、電子機器1の動作時間の履歴を利用して、次に電子機器1の動作が開始される時点を推定し、その時点までの時間が比較的長い場合に電源オフ状態に遷移することで、電力消費をより一層削減する。
【0190】
具体的には、メモリ管理部20は、現時点より後に電子機器1がオフ状態からオン状態に遷移する時点である推定オン時点を推定する。電流制御部16は、現時点から推定オン時点までの時間長が所定より大きい場合に、メモリM2への電流の供給を遮断する制御をし、現時点から推定オン時点までの時間長が所定より小さくなった場合に、メモリM2への電流の供給を復旧する制御をする。
【0191】
図16は、本実施の形態に係る電子機器1の動作時間の履歴を示す説明図である。
【0192】
メモリ管理部20は、電子機器1の動作時間を取得し、履歴として保持する。動作時間の履歴の一例が
図16に示されている。
【0193】
図16には、例えば、日付「2018月2月1日」の時刻「6時4分」に電子機器1の動作が開始され、同じ日の時刻「20時4分」に動作が終了したことが示されている。
【0194】
図17は、本実施の形態に係る電子機器1の状態遷移に関する処理を示す説明図である。
【0195】
図17に示されるように、ステップS601において、メモリ管理部20は、電子機器1の動作時間の履歴を取得する。
【0196】
ステップS602において、メモリ管理部20は、ステップS601で取得した動作時間の履歴に基づいて、次に電子機器1の動作が開始される時点を推定する。この時間を推定オン時点ともいう。
【0197】
ステップS603において、メモリ管理部20は、現時点から推定オン時点までの時間が、予め定められた時間T1より長いか否かを判定する。現時点から推定オン時点までの時間が時間T1より長い場合(ステップS603でYes)、ステップS604に進み、そうでない場合(ステップS603でNo)、
図17に示される一連の処理を終了する。
【0198】
ステップS604において、メモリ管理部20は、電源オフ状態に遷移する。
【0199】
ステップS605において、メモリ管理部20は、現時点から推定オン時点までの時間が、予め定められた時間T2より短くなったか否かを判定する。現時点から推定オン時点までの時間が時間T2より短くなった場合(ステップS605でYes)、ステップS606に進み、そうでない場合(ステップS605でNo)、ステップS605を再び実行する。つまり、メモリ管理部20は、現時点から推定オン時点までの時間が時間T2より短くなるまでステップS605で待機する。
【0200】
ステップS606において、メモリ管理部20は、サスペンド状態に遷移する。
【0201】
このように、サスペンド状態から電源オフ状態にすることで、メモリリークの問題を回避できる利点もある。
【0202】
以上のように、本実施の形態の電子機器は、電子機器の起動が比較的長い時間サスペンド状態を維持すると推定される場合に、一旦電源オフ状態をとることで消費電力を削減する。また、一旦電源オフ状態をとることで、仮にアプリケーションにメモリリークなどの不具合がある場合でも、その影響を抑制し、その後の動作を正常に行うことができる。よって、電子機器は、より一層消費電力を削減し、メモリリークなどの影響を回避しながら、オン状態からサスペンド状態への遷移に要する時間を削減することができる。
【0203】
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の電子機器などを実現するソフトウェアは、次のようなプログラムである。
【0204】
すなわち、このプログラムは、コンピュータに、第一メモリ及び第二メモリを含む複数の揮発性メモリを備える電子機器の制御方法であって、前記第二メモリへの電流の供給を遮断する制御をする電流制御ステップと、前記第一メモリに優先的に割り当てられるべきメモリ領域を示す優先情報に基づいて、前記第一メモリ及び前記第二メモリのいずれかにメモリ領域を割り当てるメモリ管理ステップとを含む制御方法を実行させる。
【0205】
以上、一つまたは複数の態様に係る電子機器などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。