(57)【特許請求の範囲】
【請求項１】
カーネルと、
ハードウェアコンポーネントへの電力を制御する電力マネージャと、
前記カーネルを監視し、電子装置の機能の実行を認識するニューラルネットワークと
を有し、
前記ニューラルネットワークは、前記カーネルの監視中に生成された情報に基づいて、前記ハードウェアコンポーネントへの電力を低減又は切断する信号を前記電力マネージャに送信し、
前記ニューラルネットワークは、前記カーネルから生成された複数のシンボルに基づいて前記電子装置の機能の実行を認識し、
前記複数のシンボルは、前記機能の実行中に前記カーネルにより実行される命令の中でプローブセットに基づいて前記カーネルから生成され、
前記ニューラルネットワークは、前記シンボルとマッピングテーブルとを比較することにより、前記電子装置の機能の実行を認識し、
前記マッピングテーブルは、複数の所定の機能のそれぞれについて前記電子装置のハードウェアコンポーネントのシンボルのパターンを識別するものである電子装置。
【請求項２】
前記電子装置の機能は、前記ハードウェアコンポーネントと異なるコンポーネントにより実行される、請求項１に記載の電子装置。
【請求項３】
前記電力マネージャは、前記電子装置のメインプロセッサを使用せずに、前記ハードウェアコンポーネントへの電力を低減又は切断する、請求項１に記載の電子装置。
【請求項４】
前記電力マネージャは、メインプロセッサが低電力状態にある時間中に、前記ハードウェアコンポーネントへの電力を低減又は切断する、請求項１に記載の電子装置。
【請求項５】
前記カーネルは、オープンソースのカーネルである、請求項１に記載の電子装置。
【請求項６】
前記電子装置は、電池式通信装置である、請求項１に記載の電子装置。
【請求項７】
カーネルから生成されたシンボルパターンを認識するステップであり、前記認識は、シンボルパターンを前記電子装置の複数の機能のそれぞれにマッピングするマッピングテーブルを生成し、前記カーネルから生成された前記シンボルパターンと前記マッピングテーブルの前記シンボルパターンとを比較することを有するステップと、
前記カーネルから生成されたシンボルパターンと前記マッピングテーブルの前記シンボルパターンとの比較から生成された一致に基づいて電子装置の機能を識別するステップと、
前記識別された機能に基づいて前記電子装置のハードウェアコンポーネントへの電力を低減又は切断するするステップと
を有し、
前記シンボルパターンは、前記カーネルにより実行される一式の命令に含まれるプローブに基づいて生成される方法。
【請求項８】
前記ハードウェアコンポーネントへの電力は、前記電子装置のメインプロセッサを使用せずに、低減又は切断される、請求項７に記載の方法。
【請求項９】
前記ハードウェアコンポーネントへの電力は、前記電子装置のメインプロセッサが低電力状態にあるときに、低減又は切断される、請求項７に記載の方法。
【請求項１０】
前記認識は、ニューラルネットワークにより実行され、前記ニューラルネットワークは、前記マッピングテーブルに基づいてトレーニングされる、請求項７に記載の方法。
【請求項１１】
前記ニューラルネットワークは、前記比較により生成された一致に基づいて前記ハードウェアコンポーネントへの電力を低減又は切断する制御信号を生成し、
電力管理システムの動作を制御する前記制御信号は、前記電子装置のメインプロセッサから分離して提供される、請求項１０に記載の方法。
【請求項１２】
前記カーネルは、オープンソースのカーネルである、請求項７に記載の方法。
【請求項１３】
コンピュータに対して、
カーネルから生成されたシンボルパターンを認識する第１の手順であり、シンボルパターンを前記電子装置の複数の機能のそれぞれにマッピングするマッピングテーブルを生成し、前記カーネルから生成された前記シンボルパターンと前記マッピングテーブルの前記シンボルパターンとを比較することにより、前記シンボルパターンを認識する第１の手順と、
前記シンボルパターンに基づいて電子装置の機能を識別する第２の手順であり、前記電子装置の機能は、前記カーネルから生成された前記シンボルパターンと前記マッピングテーブルの前記シンボルパターンとの比較から生成された一致に基づいて識別される第２の手順と、
前記識別された機能に基づいて前記電子装置のハードウェアコンポーネントの電力を低減又は切断する第３の手順と
を実行させるためのコンピュータプログラムであり、
前記シンボルパターンは、前記カーネルにより実行される一式の命令に含まれるプローブに基づいて生成されるコンピュータプログラムを格納したコンピュータ可読記憶媒体。
【請求項１４】
前記第３の手順は、前記電子装置のメインプロセッサを使用せずに、前記ハードウェアコンポーネントへの電力を低減又は切断する、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記第３の手順は、前記電子装置のメインプロセッサが低電力状態にあるときに、前記ハードウェアコンポーネントへの電力を低減又は切断する、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記第１の手順は、前記マッピングテーブルに基づいてトレーニングされるニューラルネットワークにより実装される、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記コンピュータプログラムは、コンピュータに対して、
前記比較により生成された一致に基づいて前記ハードウェアコンポーネントへの電力を低減又は切断する制御信号を生成する第４の手順を更に実行させ、
電力管理システムの動作を制御する前記制御信号は、前記電子装置のメインプロセッサから分離して提供される、請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記シンボルパターンは、前記カーネルにより実行される一式の命令に含まれるプローブに基づいて生成される、請求項１３に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに記載の１つ以上の実施例は、電力管理に関する。
【背景技術】
【０００２】
電力管理は、電子システムの設計者の目標であり続けている。１つの手法は、使用されていないシステムコンポーネントの電源を切断するために中央処理装置（CPU：central  processing  unit）を使用することを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、上記の目的でのCPUの使用は、消費する大量の電力のため、最適ではない。
【０００４】
本発明は、自動負荷検出に基づく電力管理を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の電子装置は、
カーネルと、
ハードウェアコンポーネントへの電力を制御する電力マネージャと、
前記カーネルを監視し、電子装置の機能の実行を認識するニューラルネットワークと
を有し、
前記ニューラルネットワークは、前記カーネルの監視中に生成された情報に基づいて、前記ハードウェアコンポーネントへの電力を低減又は切断する信号を前記電力マネージャに送信する電子装置である。
【発明の効果】
【０００６】
本発明の実施例によれば、自動負荷検出に基づく電力管理を提供することが可能になる。
【図面の簡単な説明】
【０００７】
【図１】電子装置の電力を管理するシステムの一実施例を示す図
【図２】電子装置の電力を管理する方法の一実施例について実行される事前動作を示す図
【図３】図２の事前動作に基づいて実行され得る電力管理方法の一実施例に含まれる動作を示す図
【図４】ここに記載の１つ以上の実施例に従って電力を管理するために使用され得る一種のニューラルネットワークの例を示す図
【図５】電子装置の電力を管理するためにニューラルネットワークをトレーニングする方法の実施例に含まれる動作を示す図
【図６】電子装置の実行時間中に電力を管理する方法の他の実施例に含まれる動作を示す図
【図７】１つ以上の実施例を実装するために使用され得るニューラルネットワークの基礎を形成し得るパーセプトロン（perceptron）の例を示す図
【図８】１つ以上の実施例に従ってトレーニング及び実装され得るニューラルネットワークに関してプロットされた値を示すグラフ
【図９】マルチレイヤパーセプトロン（multilayered  perception）の例を示すグラフ
【図１０】XORネットワークの出力を示すグラフ
【図１１】シグモイド（Sigmoid）関数に関連する値を示すグラフ
【発明を実施するための形態】
【０００８】
本発明の１つ以上の実施例に従って、電子装置のメインプロセッサを使用せずに、及び／又はメインプロセッサがアイドル状態である時間中に、電力管理が実行される。電子装置は、複数の電池式装置（非限定的に、移動電話、パーソナルデジタルアシスタント、メディアプレイヤ、又はラップトップ若しくはノートブックコンピュータ等）のうち１つでもよい。或いは、電子装置は、通常では固定の位置で使用されるAC電源式装置（数例を挙げると、デスクトップコンピュータ、テレビ、DVD又は他の種類のメディアプレイヤ、サラウンドサウンド又は他のメディア受信機等）でもよい。
【０００９】
図１は、電力管理の対象となる電子装置の内部アーキテクチャの例を示している。このアーキテクチャは、コア及びサブシステムのハードウェアコンポーネント2を制御する命令（コード）を実行するオペレーティングシステムカーネル1を含む。
【００１０】
より具体的には、カーネルは、オペレーティングシステムの中心コアとしての役目をするプログラムであり、装置の電源が投入されたときにブートされる。カーネルは、場合によってはメインプロセッサを使用せずに、直接ハードウェアコンポーネントを制御する。カーネル自体は、ユーザとは直接的に相互作用しないが、シェル及び他のプログラムや、メインプロセッサ（例えば、中央処理装置）、メモリ、ドライバ等を含むハードウェアコンポーネントと相互作用する。
【００１１】
例えば、カーネルは、メモリ管理、プロセス管理、ファイル管理及びI/O（入出力）管理（すなわち、周辺装置へのアクセス）を含むオペレーティングシステムの様々な部分の基本サービスを制御してもよい。これらのサービスは、システムコールと呼ばれるプログラムインタフェースの指定のセットを通じてアプリケーションプログラム又はオペレーティングシステムの他の部分により要求される。
【００１２】
その重要な性質のため、通常では、カーネルコード22は、オペレーティングシステムの他のあまり頻繁に使用されない部分又はアプリケーションプログラムにより上書きされることを妨げるメモリの保護領域にロードされる。カーネルは、ユーザ制御のプロセス又はユーザ空間で実行されるアプリケーションプログラムの実行とは対照的に、カーネル空間でのプロセスの実行及び割り込みの処理のようなタスクを実行する。この分離は、ユーザデータ及びカーネルデータが相互に干渉することにより、性能を低減すること又はシステムを不安定にさせること（場合によってはクラッシュさせること）を妨げるために行われる。
【００１３】
カーネルの構造及びコードは、実装されるオペレーティングシステム及び／又は電子装置に従って変わってもよい。一例として、カーネルは、スケジューラ、スーパーバイザ、割り込みハンドラ及びメモリマネージャを含んでもよい。スケジューラは、どのような順序でどのように様々なプロセスがカーネルの処理時間を共有するかを決定してもよい。スーパーバイザは、スケジュールされたときに各プロセスに対するメインプロセッサの使用を制御してもよい。割り込みハンドラは、カーネルのサービスを競合する様々なハードウェアサブシステムから要求を処理してもよい。また、メモリマネージャは、様々な用途のためにメモリ内のアドレス空間を割り当ててもよい。
【００１４】
一実施例によれば、カーネルは、Linuxカーネルでもよい。しかし、ここに記載の実施例に従って他のカーネル（Windows（登録商標）表形式のカーネル又はUnix（登録商標）型カーネルを含むが、これらに限定されない）が使用されてもよい。
【００１５】
カーネルの制御の対象となるコアのコンポーネントは、メインプロセッサ3と、メモリ4と、チップセット5と、BOIS（basic  input/output  system）6と、電力管理システム7とを含んでもよく、後者は、電池8及びAC電源回路9に結合されてもよい。サブシステムは、例えば、SD（secure  digital）メモリカード10と、カメラ11と、ディスプレイ12と、USB（universal  serial  bus）回路13と、Wi-Fi及び／又はBluetooth回路14と、マイクロフォン及びスピーカ回路15と、送信機16と、メディアプレイヤ17と、キーボード18とを含んでもよい。当然に、例えば電子装置の種類に応じて、サブシステムのコンポーネントの異なる構成又は組み合わせが含まれてもよい。
【００１６】
＜事前動作＞
図２は、電力管理方法の一実施例で実行され得る事前動作を示しており、電力管理方法は、図１に示す電子装置に実装されてもよい。例示目的で、電子装置は、移動電話のような電池式装置であると想定される。
【００１７】
この方法の第１の動作は、電力制御を必要とするハードウェアコンポーネントのリストを生成することを含む（ブロック210）。これらの装置は、或るモバイルプラットフォームでは電力の島（power  island）と呼ばれることがある。ハードウェアコンポーネントは、前述のものを含むが、これらに限定されないコア及び／又はサブシステムのコンポーネントの如何なる構成を含んでもよい。
【００１８】
第２の動作は、電子装置内で又は電子装置により実行され得る機能のリストを生成することを含む（ブロック220）。これらの機能（例えば、“ユースケース”とも呼ばれることがある）は、電子装置のハードウェアサブシステムのコンポーネントの種類に基づいてもよい。
【００１９】
第３の動作は、各機能をハードウェアコンポーネントにマッピングすることを含む（ブロック230）。例えば、電子装置がメディアプレイヤを有する移動電話である場合、電話のオーディオ再生機能は、電話のオーディオハードウェア（例えば、スピーカ）及びSD入出力（SDIO）回路にマッピングされてもよい。装置が移動電話である場合に生成され得る機能の一例のリストが、以下の表１に提供される。
【００２０】
【表１】
0005524117.tif 000002
表１では、シンボルGfxは、ディスプレイ上にビジュアルグラフィックを生成するために使用されるハードウェアサブシステムを示す。また、シンボル“1”は、ハードウェアサブシステムが機能の対応するものを実行するために使用される必要があることを示し、シンボル“0”は、対応するハードウェアサブシステムがその機能に使用される必要がないことを示す。
【００２１】
第４の動作は、電子装置のコアの装置ドライバを識別し、これらのドライバに対応するシンボルを抽出することを含む（ブロック240）。複数のソフトウェアツールのうちいずれか１つがこの動作を実行するために使用されてもよい。例えば、Linuxカーネルでは、装置ドライバ及びシンボルが識別され、“objdump”コマンド（すなわち、オブジェクトファイルから情報を読み取り、オブジェクトファイルについての情報を表示するために使用されるプログラム又はプログラム命令）を使用して抽出されてもよい。他の実施例では、異なるツール又はユーティリティが使用されてもよい。
【００２２】
第５の動作は、第３の動作で生成されたそれぞれマッピングされた機能に対応する（“ヒットする”）カーネルシンボルを収集することを含む（ブロック250）。
【００２３】
前述の動作の全ての情報は、電力を管理する際にカーネルにより使用するために、電子装置の内部メモリに格納されてもよい。更に、この情報は、システムのメインプロセッサ（例えば、CPU）に関与せずに電力管理を実行する基礎として使用されてもよい。メインプロセッサは、最も電力を消費するハードウェアコンポーネントの１つである。また、メインプロセッサの使用が必要ないため、例えば、メインプロセッサがアイドル又はスタンバイモードにある場合、及びメインプロセッサがコールを処理するため又は特定のサブシステムの動作に関係ない機能を実行するために積極的に使用されている場合のような他の場合に、電力が管理され得る。この後者のため、メインプロセッサの負荷は、電力管理動作により増加しない。
【００２４】
前述の動作から導かれた全ての情報が取得及び格納されると、この方法の電力管理段階が機能毎に実行されてもよい。すなわち、それぞれマッピングされた機能毎に、使用されていないハードウェアサブシステムのリストが決定されてもよい。例えば、表１では、SDカードからのオーディオ再生機能は、WiFi及びグラフィック（Gfx）ハードウェアサブシステムを含まない。また、SDカードからの写真の表示機能は、WiFi及びオーディオハードウェアサブシステムを含まない。従って、各機能が実行されるときに、メインプロセッサに関与せずに、未使用のサブシステムへの電力を低減又は切断するために、１つ以上の電力管理動作が実行されてもよい。
【００２５】
一実施例によれば、電力管理動作は、カーネルの動作に基づいて実行されてもよい。より具体的には、電子装置の機能を実行するためにカーネルが実行する命令（コード）に基づいて実行されてもよい。これは、未使用のハードウェアサブシステムへの電力を管理（例えば、低減又は切断）することでメインプロセッサをバイパスするように、図１に示す電力管理サブシステム7を制御することにより実現されてもよい。メインプロセッサが使用されないため、実質的な省電力が実現されてもよい。
【００２６】
＜電力管理＞
図３は、電力管理システムがハードウェアサブシステムの電力を管理するために制御され得る１つの方法を示している。この方法によれば、電力管理システムは、少なくとも機能的観点からオペレーティングシステムカーネルと電力管理システムとの間に結合されたニューラルネットワーク80により制御されてもよい。
【００２７】
最初のブロック310において、ニューラルネットワークは、カーネルにより実行される動作を認識するようにトレーニング（訓練又は学習）される。トレーニングは、図２の方法の事前動作により取得された情報に基づいて実行されてもよい。この情報は、前述の参照テーブル又はマッピングテーブルの形式で格納されてもよく、状態図で格納されてもよく、ニューラルネットワークによりアクセス可能な他の形式で格納されてもよい。
【００２８】
この実施例によれば、ニューラルネットワークは、マッピングされた機能毎に収集されたカーネルシンボルに基づいて、カーネルにより実行される動作を認識するようにトレーニングされる。カーネルシンボルは、カーネルがマッピングされた機能を実行するために実行しなければならない命令に基づいて収集される。カーネルシンボルは、ニューラルネットワークが実行される機能を識別することを可能にする実行コードの認識可能なパターンに対応する。
【００２９】
より具体的には、カーネルにより実行される各機能は、特定の命令のセットの実行を必要とする。例えば、ファイルがUSBメモリから電子装置の内部メモリにコピーされる必要がある場合、特定の命令のセットがカーネルにより実行されなければならない。これらの命令により生成された実行命令及び／又は結果（例えば、ヒットしたシンボル）は、対応する機能を識別するためにニューラルネットワークにより認識され得るパターンを規定する。
【００３０】
ニューラルネットワークがトレーニングされた後に、ニューラルネットワークは、実行時にカーネルの動作を監視するために使用される（ブロック320）。監視中に、カーネルから導かれたシンボルパターンは、前述のように認識される（ブロック330）。一実施例によれば、シンボルパターンは、プローブ（probe）の使用に基づいてリアルタイムで認識される。Linuxカーネルでは、電子装置の機能を実装するために実行されるカーネル動作を監視する際に使用されるシンボルを規定するために、カーネルプローブ（kprobe）が使用されてもよい。
【００３１】
kprobeは、装置内で実行される機能を監視するためにも使用され得るLinuxカーネルのデバッグ機構である。より具体的には、kprobeは、特定の命令アドレスに配置された一式のハンドラを示し、プレハンドラ（pre-handler）及びポストハンドラ（post-handler）により規定される。kprobeが特定の命令でインストールされ、その命令がカーネルにより実行されると、プレハンドラは、kprobe命令の実行直前に実行される。同様に、ポストハンドラは、kprobe命令の実行直後に実行される。このプロセスを通じて、ニューラルネットワークは、カーネルの特定の動作に対応するパターンを認識することができ、次に、電子装置により実行される特定の機能に対応するパターンを認識することができる。
【００３２】
より具体的には、その監視機能を実行する際に、ニューラルネットワークは、電子装置で実行される対応する機能について生成されたカーネルシンボルのパターンを収集する。これらのパターンは、例えば所定の間隔で収集され、メモリに格納されたマッピングテーブルと比較されてもよい（ブロック340）。この比較を実行する際に、カーネルから出力されたヒットしたシンボルは、テーブルのシンボルパターンと比較される。
【００３３】
テーブルにシンボルパターンの一致が存在する場合、ニューラルネットワークは、電子装置により実行されている対応する機能を識別することができる（ブロック350）。
【００３４】
機能が識別されると、ニューラルネットワークは、どのハードウェアサブシステムがその機能を実行するために使用される必要がないかを、テーブルから決定することができる（ブロック360）。メインプロセッサの使用に関与せずに、及び／又はメインプロセッサがアイドル、スタンバイ、スリープ又は他の低電力状態である時間中に、ニューラルネットワークは、少なくとも機能の持続時間の間に、１つ以上の未使用のハードウェアサブシステムへの電力を低減又は切断するために、制御信号を電力管理システムに送信してもよい（ブロック370）。
【００３５】
一例として、オーディオ再生機能がSDカードに格納された歌のファイルについて実行される場合を検討する。この方法によれば、ニューラルネットワークは、カーネルにより実行される命令（ヒットしたシンボル）パターンに基づいてこの機能の実行を認識してもよい。次に、ニューラルネットワークは、電力管理システムに対してWiFi及びGfx（グラフィック）サブシステムへの電力を低減又は切断させるコマンドを生成してもよい。この理由は、これらのサブシステムは、その機能に使用される必要がないからである。
【００３６】
この方法はまた、複数の更なる動作を含んでもよい。例えば、ニューラルネットワークのトレーニングは、複数の機能の同時の実行を考慮してもよい。例えば、ビデオが表示用にインターネットからストリーミングされているのと同時に、ユーザがSDカードから写真を見せるために装置を操作した場合を検討する。この場合、ニューラルネットワークは、関連するカーネルパターンから、同時に実行される機能を認識し、オーディオ、SDIO、WiFi又はGfxサブシステムへの電力を切断しない。しかし、ニューラルネットワークは、これらの機能をサポートするために使用されていないハードウェアサブシステムへの電力を低減又は切断するために、電力管理システムにコマンドを送信してもよい。
【００３７】
また、ニューラルネットワークは、各機能（又はユースケース）の重みを生成及び／又は格納し、ハードウェアサブシステムへの電力を制御する目的でこれらの重みを適用することにより、トレーニングされてもよい。
【００３８】
図４は、ここに記載の１つ以上の実施例を実装するために使用され得るニューラルネットワークの例を示している。図示のように、このニューラルネットワークは、例えば推移関数としてシグモイド（sigmoid）を使用した逆伝搬アルゴリズム（back  propagation  algorithm）を使用してトレーニングされ得るマルチレイヤパーセプトロン（multi-layer  perceptron）である。
【００３９】
kprobeは、ニューラルネットワークがLinuxカーネルからヒットしたシンボルを認識することを可能にする際に使用されることについて記載したが、特にWindows（登録商標）又は他のカーネルが使用される場合には、ニューラルネットワークにヒットしたシンボルを通知するために、他の種類のプローブ又は通知機構が使用されてもよい。
【００４０】
図５は、電子装置の電力を管理するためにニューラルネットワークをトレーニングする方法の他の実施例に含まれる動作を示している。この方法の第１の動作は、電力管理可能な装置の装置ドライバからカーネルシンボルを収集することを含む（ブロック510）。各装置ドライバは、複数のハードウェアのコア又はサブシステムコンポーネントのそれぞれに対応してもよい。収集されると、シンボルは、後に使用するために内部メモリに格納される（ブロック520）。
【００４１】
次の動作は、独立した機能（例えば、ユースケース）と、各機能を実行するために必要なハードウェアコンポーネントとを識別することを含む（ブロック530）。識別された機能毎に、カーネルプロファイラ（kernel  profiler）は、各機能を実行するために必要なハードウェアコンポーネントに対応するシンボル（例えば、ヒットしたシンボル）を収集するために実行される（ブロック540）。この動作は、ブロック520でメモリに格納されたシンボルに基づいて実行される。マッピングテーブルは、シンボル及び機能に基づいて生成される（ブロック550）。
【００４２】
次の動作は、マッピングテーブルに記載された各機能で使用されないハードウェアコンポーネントのシンボル（すなわち、ヒットしないシンボル）を識別することを含む。識別された未使用のシンボルは、マッピングテーブルから除去され（ブロック560）、最終的なシンボルのセットとこれらに関連する機能とが生成される（ブロック570）。別の言い方をすれば、マッピングテーブルは、各機能がそのヒットしたシンボルにのみ関連するように編集される。その結果、最適化されたシンボルのセットであると考えられ得るものが生成される。
【００４３】
ニューラルネットワークは、カーネルからのシンボルパターンとマッピングテーブルのヒットしたシンボルとの比較に基づいて、カーネルの動作を認識するようにトレーニングされる（ブロック580）。ニューラルネットワークは、前述の逆伝搬アルゴリズムを含むが、これに限定されない複数の既知の技術を使用してトレーニングされてもよい。トレーニング処理の出力（ニューラルネットワークのニュートロン毎の重みを含んでもよい）は、ブロック590で行われる。（どのように重みが生成されて割り当てられるかの例は、以下に詳細に説明する。）これらの重みを使用して、前述のように電力管理が実行されてもよい。
【００４４】
図６は、電子装置の実行中に電力を管理する方法の他の実施例に含まれる動作を示す図である。この方法は、例えば、図５で生成されたマッピングテーブル及びここに記載する他の実施例に基づいて実行されてもよい。
【００４５】
初期動作は、電子装置の実行を開始することを含む（ブロック610）。処理フローは、２つの経路に沿って進んでもよい。第１のパスは、電力管理制御を実行するために使用される一時停止の経路である。一時停止の経路の中で、プロファイルに必要なシンボルのリストは、Linuxカーネルのkprobe_profileインタフェースを通じて提供される（ブロック620）。この動作は、電子装置の機能（ユースケース）毎に生成されたマッピング（プロファイルシンボル）テーブルを使用して実行される（ブロック630）。
【００４６】
カーネルが装置の機能をサポートするために様々な動作を実行するときに、ヒットしたシンボルは、定期的な間隔で収集される（ブロック640）。この動作は、例えば、カーネルに追加されたkprobe_hitインタフェースを使用して実行されてもよい。
【００４７】
ヒットしたシンボルが収集されると、ニューラルネットワークは、シンボルパターンを電子装置の対応する機能（又は動作状態）に変換するように実行される（ブロック650）。この動作は、ブロック660から導かれた前述の重みに基づいて実行されてもよい。これらの重みは、内部メモリに格納され、製造者及び／又はユーザプレファレンスに従って設定されてもよい。
【００４８】
装置の機能又は動作状態が決定されると、１つ以上のハードウェアコンポーネントへの電力が低減又は切断されるか否かについて決定が行われる（ブロック660）。この決定は、例えば、対応するヒットしたシンボルを有さないハードウェアコンポーネントに基づいて、ニューラルネットワークにより行われてもよい。
【００４９】
ブロック660での決定がYESである場合、ニューラルネットワークは、これらの機能又は状態の動作に必要のない１つ以上のハードウェアコンポーネント（例えば、この時点でヒットしたシンボルを有さないハードウェアコンポーネント）への電力を低減又は切断するため、制御信号を電力管理システムに出力する（ブロック670）。これは、kprobe_notifyインタフェースを介して、通知がシンボルのヒット時に送信可能であるシンボルのリストを提供することを含んでもよい。制御信号は、装置／プラットフォーム状態の電力推移（すなわち、低電力状態又は電力切断状態への推移）のためのカーネルへのコマンドの形式でもよい（ブロック680）。
【００５０】
ブロック660での決定がNOである場合、ヒットしたシンボルに対応するハードウェアコンポーネントへの電力を制御（例えば、電源の投入）するために、処理フローはブロック680に進んでもよい。処理フローは、実行ループのブロック690に進み、実行の開始に戻ってもよい。
【００５１】
再開の経路は、ハードウェアコンポーネントへの電力が切断されている場合又は低電力状態に設定されている場合に実行される異なる動作のセットを含む。このハードウェアコンポーネントへの電力が再開される場合、ハードウェアコンポーネントに関してヒットしたシンボルが存在することを示す通知がカーネルから取得される。この通知は、カーネルがハードウェアコンポーネントを使用して実行されなければならない装置機能に対応する命令を現在実行しているため、ハードウェアコンポーネントへの電力が例えば所定のレベルまで投入されるという指示をニューラルネットワークに提供する（ブロック700）。ニューラルネットワークは、電力管理システムに対してそのコンポーネントに電力を供給する信号を生成する（ブロック710）。そうでない場合、制御は実行ループに戻る。
【００５２】
＜ニューラルネットワーク＞
前述のように、マルチレイヤパーセプトロン（multilayer  perceptron）の形式のニューラルネットワークは、ここに記載の１つ以上の実施例を実装するために使用されてもよい。パーセプトロンは、データのセットを区別することができるという点で、より重要には、前に見たことのないデータの例を複数の学習したセットの１つに分類することができるという点で、分類器として考えられるニューラルネットワークの種類である。単一のパーセプトロンの構造は、複数の入力（xn）と、重み（wn）と、バイアス（b）と、出力とを含んでもよい。
【００５３】
図７は、パーセプトロンの例を示している。図示のように、パーセプトロンの入力（バイアスを含む）毎に、対応する重み（例えば、w0,w1,...wn）が存在する。パーセプトロンの出力を計算するために、各入力は、その対応する重みで乗算される。加重和は、パーセプトロンの最終的な出力を決定する制限（limiter）関数を通じて提供される。例えば、簡単なパーセプトロンの制限関数は、段階的な制限器でもよい。
【００５４】
すなわち、パーセプトロンは、重み及びバイアスで乗算された全ての入力を合計することにより計算され、加重和は制限器を通過する。数学的な言い方では、これらは以下のように規定されてもよい。
【００５５】
【数１】
0005524117.tif 000003
制限器の出力は、パーセプトロンの出力に対応する。例えば、加重和が-2である場合、パーセプトロンは0に戻ってもよい。或いは、和が3である場合、パーセプトロンは1に戻ってもよい。パーセプトロンが1に戻った場合、パーセプトロンは“点弧（fired）”であると考えられてもよい。
【００５６】
この種類のパーセプトロンは、それに提示されたデータセットを分類するように学習されてもよい。パーセプトロンは、１つ以上の重みを変更することにより、データセットを分類するようにトレーニングされてもよい。このため、いわゆるデルタルール（Delta  Rule）が使用されてもよい。このルールによれば、重みは、意図した出力と実際の出力との間の差に基づいて調整される。数学的な言い方では、以下のように表現される。
【００５７】
【数２】
0005524117.tif 000004
このトレーニング中にパーセプトロン収束定理（Perceptron  Convergence  Theorem）が使用されてもよい。この定理によれば、解がパーセプトロンに実装可能な場合、学習ルールは、有限数の動作で解を見つける。
【００５８】
パーセプトロンは、２つのクラスが直線（より一般的には、２つより多くの入力が存在する場合には超平面）により分割される場合にのみ、データを分類することができる。これは、線形分離と呼ばれる。更に線形分離の概念を説明するために、以下の関数を検討する。
【００５９】
【表２】
0005524117.tif 000005
このデータがパーセプトロンを通過すると、重みは、0のバイアス及び2,-2の入力で重みが収束し得る。加重和（又は正味の値）が計算された場合、以下の結果が得られてもよい。
【００６０】
【数３】
0005524117.tif 000006
x0がy軸にプロットされ、xがx軸にプロットされると、この式は、図８に示すようにx0=x1に帰着する。このプロットでは、パーセプトロンが２つの点のグループを分割する線を正確に引いていることがわかる。線形分離可能ではないデータでパーセプトロンをトレーニングする試みが行われた場合、パーセプトロンの重みは解に収束しない。従って、非線形分離可能な（線形分離可能ではない）データが考慮される場合、他の解法が必要になる。
【００６１】
非線形分離可能なデータの解を戻すことができる一種のパーセプトロンの例は、マルチレイヤパーセプトロンである。非線形分離可能なデータの例は、非排他的論理和（XOR）論理演算子である。XORはORと同じであるが、双方の入力が真である場合に偽になる（従って排他的である）。前述のデータがプロットされる場合、データが単純な線を使用して分離できないことが明らかである。
【００６２】
XOR問題は、３つの配置されたパーセプトロンを使用して解くことができる。この手法によれば、XOR問題は、ブール数値演算を使用して３つの異なる部分に分離される。この手法によれば、‘^’がANDであり、‘v’がORであり、NOTが‘-’である。XORは以下のように規定されてもよい。
y  =  (x1  AND  NOT(x2))  OR  (NOT(x1)  AND  x2)
又は
y  =  (x1  OR  x2)  AND  NOT(x1  AND  x2)
これは、以下の３つのサブコンポーネントに分離されてもよい。
y1  =  x1  OR  x2
y2  =  NOT(x1  AND  x2)
y  =  y1  AND  y2
この問題は、３つの異なる線形分離可能な問題に分解され、最初の２つの式からの結果が第３の式で使用可能になる。最後の３つの式から、パーセプトロンは、図９に示すように接続されることがわかる。
【００６３】
これが動作することを証明するために、パーセプトロンが収束する重み（従って、線）を検討する。第１のパーセプトロンは{1,1,0}で均衡し（この場合、最後の要素がバイアスである）、第２は{-1,-1,2}で均衡し、最後は{1,1,-1}で均衡する。３つの式は以下のようになる。
【００６４】
【数４】
0005524117.tif 000007
最後の式は、その入力として最初の２つの出力を受け取る第３のパーセプトロンをカバーする式であると考えられてもよい。これは図１０のグラフにプロット可能であり、図１０はXORネットワークの出力を示している。
【００６５】
図１０では、レイヤ1は、グラフを３つの部分に分ける。２つの線の間の中心領域は、パーセプトロンが‘1’として一般化される場所である。２つの他の線の上／下の他の領域は、‘0’である。レイヤ2に示すように、第３のパーセプトロンは、最終結果を生成する。レイヤ1の２つの線が原点で交わらないため、第３のパーセプトロンは扱われる必要がない。
【００６６】
＜重みの設定＞
前述の例は、重みが知られている限りにおいて、どのようにマルチレイヤアーキテクチャが動作し、どのようにパーセプトロンが様々な他の機能を学習するように拡張され得るかを示している。或いは、問題は、デルタ学習ルールが適用され得る小さい線形分離可能なコンポーネントに分離されてもよい。しかし、前述のことが適用不可能である場合に、どのようにネットワークがトレーニングされるかが問題である。ニューラルネットワークを学習させる複数の異なる方法が存在する。前述のように、１つの方法は、逆伝搬アルゴリズムとして知られている。
【００６７】
単一レイヤのネットワークでは、各ニューロンは、どの出力が予想されるかと、与えた出力とに従って、その重みを調整する。パーセプトロンデルタルール（Perceptron  Delta  Rule）により、これは数学的に以下のように表現されてもよい。
【００６８】
【数５】
0005524117.tif 000008
前述の式では、wは重みの配列であり、xは入力の配列である。ネットワークが非線形分離可能な問題になるように複数のレイヤに拡張された場合、パーセプトロン学習ルールは役に立たなくなる。これは、ネットワークで重みを調整するときに、この調整がネットワークの全体的な効果にどのような影響を与えるかが決定されなければならないからである。このため、その重みに関して誤差関数の微分（derivative）が検討されなければならない。
【００６９】
従って、逆伝搬を実行する際に、シグモイド（ロジスティック）関数が使用されてもよい。この関数を実行する式は以下に示され、図１１は、この式に対応するグラフを示している。
【００７０】
【数６】
0005524117.tif 000009
理解できるように、関数はy軸の0及び1で横ばい状態になり、0.5でy軸を横切り、関数を適切（neat）にする。更に、f’(‘x)=x(1-x)に適切に微分する。これを全て考慮して、少し変更したパーセプトロン学習ルールを再検討する。
【００７１】
【数７】
0005524117.tif 000010
この式では、w、xは前述のものであり、nは学習レートとして規定される。項yi及びdiは、それぞれ実際の出力及び意図した出力である。従って、シグモイド活性化関数を使用して、出力レイヤのデルタを計算する式は以下のように書き換えられてもよい。
【００７２】
【数８】
0005524117.tif 000011
前述のことを鑑みて、ネットワークの各ニューロンの正味和及び出力レイヤのデルタが計算されてもよい。デルタの隠蔽されたレイヤは以下のように計算されてもよい。
【００７３】
このデルタを計算するために、重みが変化した場合にニューロンの出力への影響が知られていなければならない。従って、その重みに関する誤差の微分が決定されなければならない。隠蔽されたレイヤpのニューロンqについて、デルタは以下のように計算されることがわかる。
【００７４】
【数９】
0005524117.tif 000012
従って、前述のニューラルネットワークは、ここに記載の１つ以上の実施例に従って適用されてもよい。
【００７５】
本発明の他の実施例は、ここに記載の方法のいずれかを実行するコンピュータプログラムを格納したコンピュータ可読媒体に対応する。コンピュータ可読媒体は、読み取り専用メモリ、ランダムアクセスメモリ、フラッシュメモリ、又は移動端末若しくはカーネルにより制御される他の電子装置内にある若しくはこれらによりアクセス可能な他の記憶装置でもよい。コンピュータプログラムは、ファームウェア、ミドルウェア、又は電子装置に実装可能な他の種類のコンピュータソフトウェアとして含まれてもよい。
【００７６】
更に、プログラムは、電子装置の内部プロセッサ、集積回路、コントローラ又は中央処理装置（ノートブック若しくはデスクトップコンピュータ、パーソナルデジタルアシスタント、スマートフォン、又は移動電話若しくは端末、及びカーネルにより制御される他の電子装置の動作を制御するために使用される種類のチップ回路を含むが、これらに限定されない）により実行されてもよい。
【００７７】
一例として、１つのこのようなコンピュータ可読媒体は、カーネルから生成されたシンボルパターンを認識する第１のコード部分と、シンボルパターンに基づいて電子装置の機能を識別する第２のコード部分と、識別された機能に基づいて電子装置のハードウェアコンポーネントの電力を低減又は切断する第３のコード部分とを有するコンピュータプログラムを格納する。少なくとも１つの実施例によれば、ハードウェアコンポーネントは、識別された機能を実行する際に使用される必要はない。
【００７８】
第１のコード部分は、シンボルパターンを電子装置の複数の機能のそれぞれにマッピングするマッピングテーブルを生成し、カーネルから生成されたシンボルパターンとマッピングテーブルのシンボルパターンとを比較することにより、シンボルパターンを認識してもよく、電子装置の機能は、比較から生成された一致に基づいて識別される。シンボルパターンは、カーネルにより実行される一式の命令に含まれるプローブに基づいて生成されてもよい。１つのアプリケーションによれば、第１のコード部分は、マッピングテーブルに基づいてトレーニングされたニューラルネットワークにより実装される。
【００７９】
第３のコード部分は、電子装置のメインプロセッサを使用せずに、装置に対して、ハードウェアコンポーネントへの電力を低減又は切断させてもよい。更に、第３のコード部分は、電子装置のメインプロセッサが低電力状態にあるときに、ハードウェアコンポーネントへの電力を低減又は切断してもよい。
【００８０】
更に、コンピュータプログラムは、比較により生成された一致に基づいてハードウェアコンポーネントへの電力を低減又は切断する制御信号を生成する第４のコード部分を含んでもよく、電力管理システムの動作を制御する制御信号は、電子装置のメインプロセッサから分離して提供される。
【００８１】
この明細書において、“実施例”への言及は、この実施例に関して記載した特定の機能、構造又は特徴が本発明の少なくとも１つの実施例に含まれることを意味する。このような用語が明細書の様々な場所に現れることは、必ずしも同じ実施例を示しているとは限らない。更に、特定の機能、構造又は特徴がいずれかの実施例に関して記載されている場合、このような機能、構造又は特徴を他の実施例に関して実施することは、当業者の認識範囲内であることがわかる。
【００８２】
更に、理解を容易にするために、特定の機能ブロックは、分離されたブロックとして示されている。しかし、これらの別々に示されたブロックは、必ずしもここで説明又は提示した順序になると解釈されるべきではない。例えば、いくつかのブロックは、例えば、代わりの順序で又は同時に実行可能でもよい。
【００８３】
本発明の実施例について複数の例示的な実施例を参照して説明したが、本発明のこの実施例の原理の要旨及び範囲内にある複数の他の変更例及び実施例が当業者により考えられ得ることがわかる。
【００８４】
より具体的には、本発明の実施例の範囲を逸脱することなく、前述の開示、図面及び特許請求の範囲の範囲内にある対象の組み合わせの構成のコンポーネント部分及び／又は構成において、合理的な変更及び変形が可能である。コンポーネント部分及び構成における変更及び変形に加えて、代替の用途も当業者に明らかになる。
【符号の説明】
【００８５】
1  オペレーティングシステムカーネル
2  ハードウェアコンポーネント
【図１】
0005524117.tif 000013
【図２】
0005524117.tif 000014
【図３】
0005524117.tif 000015
【図４】
0005524117.tif 000016
【図５】
0005524117.tif 000017
【図６】
0005524117.tif 000018
【図７】
0005524117.tif 000019
【図８】
0005524117.tif 000020
【図９】
0005524117.tif 000021
【図１０】
0005524117.tif 000022
【図１１】
0005524117.tif 000023