(57)【要約】  マルチプロセッサシステムにおいてアプリケーションサポートを提供するための方法および手段であって、アプリケーションを実行するための要求を受け取ること、アプリケーションに関連づけられたプロパティで、複数のプロセッサの中からアプリケーションの実行に利用するプロセッサを指定するプロパティを識別すること、識別されたプロパティに基づいて指定されたプロセッサによるアプリケーションの実行をスケジューリングすること、アプリケーションのスケジューリングに応答してアプリケーションをローディングすること、および、指定されたプロセッサを利用してアプリケーションを実行することを含む。【選択図】    図３
2009527828.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいてアプリケーションを実行する方法であって、
前記方法は、
前記アプリケーションを実行する要求を受け取ることと、
前記アプリケーションを実行するために複数のプロセッサからどのプロセッサを利用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別することと、
識別された前記プロパティに基づいて、指定された前記プロセッサで実行される前記アプリケーションをスケジューリングすることと、
指定された前記プロセッサを利用して前記アプリケーションを実行することと、
を備える。
【請求項２】
前記複数のプロセッサは高い処理能力のプロセッサと低い処理能力のプロセッサとを含む、請求項1に記載の方法。
【請求項３】
アプリケーションに関連づけられたプロパティを前記アプリケーションの処理能力要求に基づいて割り当てることをさらに備えた、請求項2に記載の方法。
【請求項４】
マルチプロセッサシステムにおいてアプリケーションを処理する方法であって、
前記方法は、
前記アプリケーションを処理する要求を受け取ることと、
前記アプリケーションを処理するために複数のプロセッサからどのプロセッサを利用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別することと、
指定された前記プロセッサを利用して前記アプリケーションを処理することと、
を備える。
【請求項５】
前記複数のプロセッサは高い処理能力のプロセッサと低い処理能力のプロセッサとを含む、請求項4に記載の方法。
【請求項６】
前記アプリケーションはコンテンツデータである、請求項4に記載の方法。
【請求項７】
通信バスと、
第１のプロセッサと、
第２のプロセッサと、
前記第１及び第２のプロセッサと通信する少なくとも1つの記憶デバイスと、
前記第１及び第２のプロセッサによって読み取り可能な少なくとも1つのコンピュータ可読メモリデバイスであって、前記第１及び第２のプロセッサが、
アプリケーションを実行するためにオペレーティングシステムで要求を受け取り、
複数のプロセッサから前記アプリケーションを実行するプロセッサを指定する、前記アプリケーションに関連づけられたプロパティを識別し、
識別された前記プロパティに基づいて、指定された前記プロセッサで実行するために前記アプリケーションをスケジューリングし、
指定された前記プロセッサで前記アプリケーションを実行する
ように構成されたコンピュータ実行可能な一連のステップを含むコンピュータ可読メモリデバイスと、
を備えたモバイルデバイス。
【請求項８】
通信バスと、
第１のプロセッサと、
第２のプロセッサと、
前記第１及び第２のプロセッサと通信する少なくとも1つの記憶デバイスと、
前記第１及び第２のプロセッサによって読み取り可能な少なくとも1つのコンピュータ可読メモリデバイスであって、前記第１及び第２のプロセッサが、
アプリケーションを処理するためにオペレーティングシステムで要求を受け取り、
複数のプロセッサから前記アプリケーションを処理するプロセッサを指定する、前記アプリケーションに関連づけられたプロパティを識別し、
指定された前記プロセッサで前記アプリケーションを処理する
ように構成されたコンピュータ実行可能な一連のステップを含むコンピュータ可読メモリデバイスと、
を備えたモバイルデバイス。
【請求項９】
前記第１のプロセッサは前記第２のプロセッサとは異なる処理能力を持っている、請求項８に記載のモバイルデバイス。
【請求項１０】
前記アプリケーションはコンテンツデータである、請求項８に記載のモバイルデバイス。
【請求項１１】
マルチプロセッサシステムにおいてアプリケーションを実行するためのコンピュータプログラムを格納するコンピュータ可読媒体であって、
前記媒体は、
前記アプリケーションを実行する要求を受け取るためのコンピュータ可読コードと、
前記アプリケーションを実行するために複数のプロセッサからどのプロセッサを使用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別するためのコンピュータ可読コードと、
識別された前記プロパティに基づいて、指定された前記プロセッサで実行する前記アプリケーションをスケジューリングするためのコンピュータ可読コードと、
前記アプリケーションのスケジューリングに応じて前記アプリケーションをローディングするためのコンピュータ可読コードと、
前記アプリケーションのローディングに応じて、指定された前記プロセッサを利用して前記アプリケーションを実行するためのコンピュータ可読コードと、
を備える。
【請求項１２】
マルチプロセッサシステムにおいてアプリケーションを処理するためのコンピュータプログラムを格納するコンピュータ可読媒体であって、
前記媒体は、
前記アプリケーションを処理する要求を受け取るためのコンピュータ可読コードと、
前記アプリケーションを実行するために複数のプロセッサからどのプロセッサを使用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別するためのコンピュータ可読コードと、
識別された前記プロパティに基づいて、指定された前記プロセッサで処理する前記アプリケーションをスケジューリングするためのコンピュータ可読コードと、
を備える。
【請求項１３】
前記アプリケーションはコンテンツデータである、請求項12に記載のコンピュータ可読媒体。
【請求項１４】
マルチプロセッサシステムにおいてアプリケーションを実行するためのデバイスであって、
前記デバイスは、
前記アプリケーションを実行する要求を受け取るための手段と、
前記アプリケーションを処理するために複数のプロセッサからどのプロセッサを利用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別するための手段と、
識別された前記プロパティに基づいて、指定された前記プロセッサで実行する前記アプリケーションをスケジューリングするための手段と、
指定された前記プロセッサによって前記アプリケーションを実行するための手段と、
を備える。
【請求項１５】
マルチプロセッサシステムにおいてアプリケーションを処理するためのデバイスであって、
前記デバイスは、
前記アプリケーションを処理する要求を受け取るための手段と、
前記アプリケーションを処理するために複数のプロセッサからどのプロセッサを利用するかを指定する、前記アプリケーションに関連づけられたプロパティを識別するための手段と、
指定された前記プロセッサによって前記アプリケーションを処理するための手段と、
を備える。
【請求項１６】
前記アプリケーションはコンテンツデータである、請求項15に記載のデバイス。
【発明の詳細な説明】
【関連出願への相互参照】
【０００１】
この出願は、2006年2月17日に出願された仮出願80/774,93B5号の優先権を主張する。
【技術分野】
【０００２】
この発明は計算デバイスの電力管理の分野に関し、特にマルチプロセッサ・モバイルデバイスの電力管理に関する。
【背景技術】
【０００３】
今日、消費者は非常に多様なことを実行するために、携帯電話のようなモバイルデバイスを利用している。従来のモバイルデバイスは様々なタイプのソフトウェアアプリケーションを実行することができ、しばしば、新しいソフトウェアプロダクトを追加もしくはインストールする能力を持っている。これらのソフトウェアプロダクトの各々は、それをプロセッサで実行するために、一部は計算要求の量に基づいて、それぞれ異なるレベルのシステム電力を要求する。例えば、在来のユーザーインタフェース(「UI」)アプリケーションは、しばしば、マルチメディアアプリケーションあるいは高速のゲームを行うよりも非常に少ない計算上の負担を要求する。
【０００４】
いくつかのモバイルデバイスは、低電力のプロセッサ(low-power processor）と高電力のプロセッサ（high-power processor）を含む２プロセッサ設計を使用することによってこの問題を扱うことを試みている。この設計を使用してモバイルデバイスの機能が分離され、ある機能は常に低電力のプロセッサ(例えば、モデムを操作するためのコード化）が使用され、他の機能は常に高電力のプロセッサ(例えば任意のインストールされたアプリケーション)が使用される。この設計はユーザーに対して高いレベルの性能を保証している一方、必要とされる計算上の負担のレベルにかかわらずアプリケーションを処理するために高電力のプロセッサがオンしているため、より短いバッテリ寿命をもたらす。
【０００５】
モバイルデバイスにおけるマルチプロセッサ・プラットフォームをサポートするための適切なシステムが、当業者においてこれまで考えられていなかった。
【発明の開示】
【概要】
【０００６】
本発明は、マルチプロセッサシステムにおいてアプリケーションを実行するためのシステム及び方法に向けられる。簡潔に述べると、少なくとも低電力のプロセッサと高電力のプロセッサとを含むマルチプロセッサ(例えばデュアルプロセッサ)特定用途向けIC(「ASIC」)が提供される。ASICは、アプリケーションの実行をサポートするように構成されたオペレーティングシステムによってコントロールされる。アプリケーションがロードされると、オペレーティングシステムはアプリケーションに関連したプロパティを評価して、どのマルチプロセッサがそのアプリケーションを実行するかを決定する。そのアプリケーションは、次に、適切なプロセッサ上で実行するためにスケジューリングされる。
【０００７】
1つの態様では、マルチプロセッサシステムにおいてアプリケーションを実行する方法は、アプリケーションを実行する要求を受け取ることと、そのアプリケーションに関連づけられたプロパティを識別することを含む。プロパティは、複数のプロセッサからアプリケーションを実行するために利用するプロセッサを指定する。方法はさらに、識別されたプロパティに基づいて、指定されたプロセッサ上で実行するためにアプリケーションをスケジューリングすることを含む。方法はさらに、指定されたプロセッサ上でアプリケーションを実行することを含む。
【０００８】
他の態様では、モバイルデバイスは、第１のプロセッサと、第２のプロセッサと、これらのプロセッサと通信する少なくとも1つの記憶デバイスと、これらのプロセッサで読み取り可能な少なくとも1つのコンピュータ可読メモリデバイスとを含む。コンピュータ可読メモリは、プロセッサに、アプリケーションを実行するためにオペレーティングシステムで要求を受け取らせ、アプリケーションに関連づけられたプロパティ(プロパティは、複数のプロセッサからどのプロセッサを利用してアプリケーションを実行するかを指定する）を識別させ、識別されたプロパティに基づいて、指定されたプロセッサで実行するアプリケーションをスケジューリングさせ、そして、指定されたプロセッサを利用してアプリケーションを実行させるように構成された一連のコンピュータ実行可能なステップを含む。
【０００９】
さらに他の態様では、マルチプロセッサシステムにおけるアプリケーション実行のためのコンピュータプログラムを格納するコンピュータ可読媒体は、アプリケーションを実行する要求を受け取るためのコンピュータ可読コードと、アプリケーションに関連づけられたプロパティ(プロパティは、複数のプロセッサからどのプロセッサを利用してアプリケーションを実行するかを指定する）を識別するためのコンピュータ可読コードと、識別されたプロパティに基づいて、指定されたプロセッサで実行するアプリケーションをスケジューリングするためのコンピュータ可読コードと、そして、指定されたプロセッサを利用してアプリケーションを実行するためのコンピュータ可読コードを含む。
【００１０】
さらに他の態様では、マルチプロセッサシステムにおけるアプリケーション実行のためのシステムは、アプリケーションを実行する要求を受け取るための手段と、アプリケーションに関連づけられたプロパティ(プロパティは、複数のプロセッサからのどのプロセッサを利用してアプリケーションを実行するかを指定する)を識別するための手段と、識別されたプロパティに基づいて、指定されたプロセッサで実行するアプリケーションをスケジューリングするための手段と、指定されたプロセッサを利用してアプリケーションを実行するための手段を含む。
【００１１】
他の態様では、マルチプロセッサ環境でアプリケーションを処理する方法は、アプリケーションを処理する要求を受け取ることと、アプリケーションに関連づけられたプロパティを識別する（プロパティは、複数のプロセッサからどのプロセッサを利用してアプリケーションを処理するかを指定する）ことと、そして、アプリケーションを処理することを含む。1つの態様では、アプリケーションはコンテンツデータ(content data）である。
【００１２】
他の態様では、モバイルデバイスは、第１のプロセッサと、第２のプロセッサと、これらのプロセッサと通信する少なくとも1つの記憶デバイスと、これらのプロセッサで読み取り可能な少なくとも1つのコンピュータ可読メモリデバイスとを含む。コンピュータ可読メモリは、プロセッサに、アプリケーションを実行するためにオペレーティングシステムで要求を受け取らせ、 アプリケーションに関連づけられたプロパティ(プロパティは、複数のプロセッサからどのプロセッサを利用してアプリケーションを実行するかを指定する）を識別させ、 そして、指定されたプロセッサを利用してアプリケーションを実行させるように構成された一連のコンピュータ実行可能なステップを含む。1つの実施例では、アプリケーションはコンテンツデータである。
【詳細な説明】
【００１３】
以下に、モバイルデバイスにおける電力管理のための様々な技術および構成を詳細に記述する。極めて一般的に述べると、この発明は、アプリケーションのプロパティに基づいて、複数のプロセッサのうちのどのプロセッサでアプリケーションを実行するかを決定することに向けられる。この記述の全体にわたって、用語「アプリケーション」は便宜的に使用されたものであって、制限するようには意図されないことに注意されたい。例えば、ここで使用されるような「アプリケーション」が任意の機能、タスク、コンテンツあるいは処理のためにプロセッサへ送られた他のデータを含むことは当業者によって認識されよう。
【００１４】
図1は、本発明の実施が特に適用可能なサンプルのモバイルデバイス101を一般的に示す機能ブロック図である。モバイルデバイス101は、携帯電話、携帯情報端末、携帯音楽プレーヤー、グローバルポジショニング衛星(GPS)デバイスなどのような任意の携帯型の計算デバイスである。ここでは携帯型の計算デバイスのコンテキストで記述されたが、ラップトップ、デスクトップあるいは恐らくサーバーコンピューティングデバイスなどのような他の分野においても、本発明の実施が等しい適用可能性を持っていることが認識されるべきである。
【００１５】
この例において、モバイルデバイス101はマルチプロセッサデバイス102、メモリ108、記憶媒体113、また、すべてがシステムバス107で連結された通信モジュール121を含む。マルチプロセッサデバイス102は、単一ユニット中にカプセル化された第１のプロセッサユニット104と第２のプロセッサユニット106を含む特定用途向けIC(ASIC)である。他の実施例(図示せず）では、各プロセッサはディスクリートなユニットとして実装される。
【００１６】
本発明の1つの実施例に従って、1つのプロセッサユニット(例えば、プロセッサユニット1 104)は他のプロセッサユニット(例えばプロセッサユニット2 106)より強力(more powerful)である。より強力なプロセッサは、プロセッサ集約的なアプリケーションによりふさわしいであろう、より多くの処理能力が望まれる場合に選択される。しかしながら、強力でないプロセッサはより少ない電力を消費し、したがって、より寛大なバッテリ寿命をもたらし、より少ないプロセス集約的なアプリケーション(タスクを含む)にはより好ましい。各プロセッサユニット(プロセッサユニット104および106)はマイクロプロセッサあるいはデジタル信号プロセッサ(DSP)のような専用プロセッサであるが、代替として従来の任意の形式のプロセッサ、コントローラ、マイクロコントローラあるいは状態マシンであってもよい。一例では、第１のプロセッサユニット104は高電力のマイクロプロセッサとしてインプリメントされ、また、第２のプロセッサユニット106は低電力のDSPとしてインプリメントされる。モバイルデバイス101は、当業者に知られている追加のコンポーネントをさらに含んでもよい。
【００１７】
マルチプロセッサデバイス102はメモリ108に結合され、メモリ108はプロセッサユニット104および106によって実行されるソフトウェア命令を保持するRAMとしてインプリメントされる。この実施例では、メモリ108に格納されるソフトウェア命令は、1つ以上のアプリケーション112およびオペレーティングシステム110を含む。メモリ108はスタンドアロンのRAMとしてインプリメントすることができ、あるいは、より良い効率を達成するために、プロセッサユニット104、106と共にマルチプロセッサデバイス102中に統合することができる。メモリ108はスマートメディアカードのようなファームウェアあるいはフラッシュメモリからなってもよい。他の実施例では、オペレーティングシステム110は、アプリケーション112からの1つ以上のアプリケーションの実行にどのプロセッサユニットを使用するかをオペレーティングシステム110が決定することを可能にするソフトウェア命令を含む。
【００１８】
記憶媒体113は、いくつか例示すると、ROMメモリ、フラッシュメモリあるいは磁気ディスク装置のような任意の不揮発性メモリとしてインプリメントすることができる。記憶媒体113は、さらに、キャッシュ(RAM)メモリなどを備えた磁気ディスク装置のようなもの、あるいは他の技術の任意の組合せとしてインプリメントされてもよい。特にこの実施例では、記憶媒体113は、モバイルデバイス101の電力がオフされて無電力の期間にデータを格納するために使用される。
【００１９】
通信モジュール121は、モバイルデバイス101と1つ以上の他の計算デバイスとの間の双方向の通信を可能にする。通信モジュール121は携帯電話ネットワーク、Bluetooth（登録商標）接続、無線ローカルエリアネットワークあるいは恐らく無線広域ネットワークのようなRFあるいは他の無線通信を可能にするためのコンポーネントを含むことができる。代替として、通信モジュール121はイーサネット（登録商標）接続、ユニバーサルシリアルバス接続、IEEE 1394(Firewire)接続などのような、陸線あるいはハード有線ネットワークコミュニケーションを可能にするためのコンポーネントを含んでもよい。これらは例示的なリストとして意図したものであって、その他の多くの代替が可能である。
【００２０】
図2は、本発明のインプリメンテーションが特に適用可能なシステムメモリ108を少し詳しく例示した機能ブロック図である。上述されたように、システムメモリ108はオペレーティングシステム210と、第1のアプリケーション240および第２のアプリケーション250のような１つ以上のアプリケーションを含んでいる。それらのコンポーネントの各々は、本発明のコンテキストにおいてここで記述される。
【００２１】
本発明の本質を示すために、第１のアプリケーション240は、マルチメディアアプリケーションあるいは高速のゲームなどを満足に実行するために、より大きな処理パワーを要求する。第２のアプリケーション250は、在来のユーザーインタフェースモジュールあるいはその種のものを満足に実行するために、より少ない処理パワーを要求する。アプリケーションの各々は、また、モジュール情報ファイル(「MIF」ファイル)のような関連するメタ情報を有しており、それは、そのアイコン、タイトル、およびそれが作動するために必要とする権限の一覧表のような、アプリケーションに関する顕著な詳細を含んでいる。このように、第１のアプリケーション240は関連するMIFファイル241を、第２のアプリケーション250は関連するMIFファイル251を有する。
【００２２】
各MIFファイルはそれぞれ、複数のプロセッサのうちのどれがアプリケーションを実行するべきかを直接識別するか、もしくは、どのプロセッサがアプリケーションを実行するかを決定するために使用することができる識別情報を含む識別子あるいはプロパティ(「procプロパティ」)をさらに含んでいる。例えば、第１のアプリケーション240は、第１のアプリケーション240がより大きな処理パワーを要求することを示すprocプロパティ242を含むMIFファイル241を有する。同様に、第２のアプリケーション250は、第2のアプリケーションがより少ない処理パワーを要求し、低電力ロセッサー上で十分に機能できることを示すprocプロパティ252を含むMIFファイル251を有する。プロパティ中の実際のデータ形式は、種々多くの形式をとることができる。例えば、一般にプロセッサをその計算性能、消費電力、あるいはその両方によって分類するというプロセッサのクラス分けが考えられる。このように、procプロパティは、アプリケーションを実行する特定のプロセッサを直接識別するのではなく、最低限要求されるプロセッサを単に識別することもできる。
【００２３】
オペレーティングシステム(O/S)210はモバイルデバイスのハードウェアおよびソフトウェアを体系化しコントロールするために構成され、この実施例中では、オペレーティングシステム210はスケジューラ232およびローダ235を含む。スケジューラ232はモバイルデバイス上で実行している処理を管理し、また、各処理あるいはスレッドのためのプロセッサ時間をスケジューリングする。さらに、スケジューラ232は、アプリケーションのprocプロパティを参照して、特定のアプリケーションをどのプロセッサが実行するべきかを決定するように構成される。その目的のために、スケジューラ232は、そのアプリケーションに関連づけられたMIFファイルから直接あるいは間接的にメタ情報に読むように構成され、そのアプリケーションをどのプロセッサが実行するべきかを決定する。ローダ235は、アプリケーションをプロセスにローディングし、スケジューラ232の管理の下で、特定のプロセッサ上でそのアプリケーションの実行を開始するように構成される。1つの実施例では、スケジューラ232およびローダ235は実行のカーネルモードもしくはプロテクトモード中で動作する。
【００２４】
オペレーションでは、オペレーティングシステム210は、例えばシェルからのシステムコールを介して、第１のアプリケーション240を実行する命令を受け取る。この命令は、ユーザーインタフェース中のアイコンを選択して活性化するなど、ユーザーによって開始されていてもよい。この特定のインプリメンテーションでは、オペレーティングシステム210は、その後、アプリケーション240の位置を決定するためにローカル格納デバイスに問い合わせる。オペレーティングシステム210は、関連するアプリケーションを実行する場合にどのプロセッサがマルチプロセッサ環境中で使用されるべきかのようなアプリケーション240用の実行環境を識別するために、アプリケーション240に関するMIFファイル241を読む。オペレーティングシステム210は、アプリケーション240を実行する命令に加えて、MIFファイル241からprocプロパティ242を抽出し、それをスケジューラ232へ渡す。
【００２５】
その後、スケジューラは、システムメモリ180にローディングされ、アプリケーションのprocプロパティに従って特定のプロセッサ上で実行されるべきアプリケーションをスケジューリングする。その後、ローダはアプリケーションを識別されたメモリロケーションにローディングする。プロセッサとアプリケーションとをマッチさせるスケジューラ232およびオペレーティングシステム210の能力は、全体のシステム電力使用効率を増加させる。
【００２６】
他の実施例では、スケジューラ232がアプリケーション(例えば第1のアプリケーション240と第２のアプリケーション250のそれぞれ)からプロパティ(例えば、プロパティ242と252)を読む場合、スケジューラ232は、アプリケーションをプロセッサとマッチしなくてもよい。例えば、シングルプロセッサ構成では、スケジューラ232は単にprocプロパティを無視し、従来の方法でアプリケーションの実行をスケジューリングできるであろう。同様に、マルチプロセッサ構成において、プロパティによって識別されたプロセッサが利用不可能な場合は、スケジューラ232は、システムプロセッサの中での最も効率的な使用のような他の基準に基づいてアプリケーションをスケジューリングする。さらに他の例では、マルチプロセッサ構成においてアプリケーションが好ましいプロセッサを識別しない場合は、スケジューラ232は、システムプロセッサ中での最も効率的な使用のような従来の方法でアプリケーションをスケジューリングすることができるであろう。
【００２７】
図3は、本発明に従って、アプリケーションのプロパティに基づいて、2台のプロセッサのそれぞれで４つのアプリケーションのそれぞれの実行をスケジューリングするオペレーティングシステム310を図解したものである。図3に示される典型的なアプリケーションローディングシステム300は、上述のモバイルデバイス101上でインプリメントされる。アプリケーションローディングシステム300は、アプリケーションローディングシステム300が作動する計算システムの全体的な効率を増加させるために使用される。それは、指定されたプロセッサでアプリケーションを実行するようオペレーティングシステム310に命じるアプリケーションに関連したプロパティ(上の図2で記述された)を識別し、読むことによって実行される。
【００２８】
図3において、アプリケーションローディングシステム300は、第１のプロセッサ304、第２のプロセッサ306、オペレーティングシステム310、第１のアプリケーション320、第２のアプリケーション330、第３のアプリケーション340および第４のアプリケーション350を含む。ASICのプロセッサコアであり得る第１のプロセッサ304は比較的高性能で、パワー演算処理ユニットである。これとは対照的に、第１のプロセッサ304と同じASICの他のプロセッサであり得る第２のプロセッサ306は、第１のプロセッサ304より少ないパワーを消費する比較的低性能の処理ユニットである。
【００２９】
この例において、第1のアプリケーション320は在来のユーザーインタフェース(U/I)アプリケーションであり、第２のアプリケーション330は、.mpegファイルを見たり、.wavファイルを演奏するためのようなマルチメディアアプリケーションであり、第３のアプリケーション340は在来のセルラー送信および／または受信のアプリケーションであり、また、第４のアプリケーション350はゲームのような高速娯楽アプリケーションである。従って、第１のアプリケーション320および第３のアプリケーション340は、低電力プロセッサを使用して受け入れ可能なレベルの性能を達成するであろうことが前もって決定されている。また対照的に、第２のアプリケーション330および第４のアプリケーション350は、受け入れ可能な性能レベルを達成するために高電力プロセッサを要求することが決められている。したがって、第１のアプリケーション320および第３のアプリケーション340は、共に、第２のプロセッサ306をそれらのアプリケーションを実行するに好ましいプロセッサであると識別するプロパティを含む。同様に、第２のアプリケーション330および第４のアプリケーション350は、共に、これらのアプリケーションを実行するには第１のプロセッサ304が好ましいと識別するプロパティを含む。
【００３０】
さらに、もしアプリケーション内のプロパティによって指定されたプロセッサが利用不可能な場合は、オペレーティングシステム310は他の基準に基づいてアプリケーションの実行をスケジューリングする。例えば、低電力プロセッサが多分に利用されている期間に適切な性能を達成するために、オペレーティングシステム310は、他に低電力のアプリケーションをより高いパワーのプロセッサで実行するようスケジューリングすることができる。さらに、プロセッサがアプリケーション内のプロパティによって指定されない場合、オペレーティングシステム310は、従来の負荷バランシングや電力考慮のような他の基準に基づいてアプリケーションをスケジューリングすることができる。
【００３１】
図4は、アプリケーションのサポートを提供し、アプリケーションの実行をマルチプロセッサシステム中のプロセッサに指令するための方法400を一般的に示した運用上のフローダイアグラムである。1つの実施例では、方法400は図1-3の典型的な動作環境のコンポーネントで実現される。好ましくは、方法400の1つ以上のステップは、計算デバイス上でコンピュータが読み取り可能なコードが実行されると一連のステップが実行されるように、コンピュータが読取り可能なコードを有するコンピュータ可読媒体中に具体化される。いくつかのインプリメンテーションでは、方法400のあるステップは、方法400の目的に反することなく、組み合わされ、同時にあるいは異なる順序で実行される。
【００３２】
ステップ410で、マルチプロセッサシステム内でアプリケーションの実行要求がオペレーティングシステムで受け取られる。1つの実施例では、オペレーティングシステムは、シェルからのシステムコールなどを介してアプリケーションの実行命令を受け取る。
【００３３】
上の図1を参照した一例において、オペレーティングシステム110は、アプリケーション112内のアプリケーションを実行するための命令を受け取り、その命令は、メディア制御コンポーネントを介したシェルからのシステムコールのようなものである。
【００３４】
ステップ420で、アプリケーションに関連づけられたプロパティが識別される。プロパティは、マルチプロセッサシステム内でどのプロセッサがアプリケーションを実行するかを決定するために使用される情報を提供する。1つの実施例では、アプリケーションに関連づけられたプロパティがオペレーティングシステムのコンポーネントによって識別される。上の図2を参照した一例では、オペレーティングシステム210は第1のアプリケーション240に関連づけられた第1のprocプロパティ242を識別し、識別されたプロパティのコンテンツをスケジューラ232へ渡す。
【００３５】
ステップ430で、アプリケーションは識別されたプロパティに基づいて、指定されたプロセッサ上での実行のためにスケジューリングされる。1つの実施例では、スケジューラは、識別されたプロセッサがアプリケーションの実行をサポートするために受け入れ可能な利用状態で現在作動しているかどうかを決定する。上の図1および図2を参照した一例で、スケジューラ232(オペレーティングシステム210および110内の)はアプリケーション240を実行するプロセスを作成し、次に、第１のプロセッサ104で実行するためにそのプロセスをスケジューリングする。
【００３６】
ステップ440で、アプリケーションはアプリケーションのスケジューリングに応じてローディングされる。1つの実施例では、ローダは、ローディングされるべきアプリケーションをスケジューリングするスケジューラに応じて、アプリケーションをメモリにローディングする。上の図1および図2を参照した一例において、ローダ235は、ローディングされる予定のアプリケーション240をスケジューリングするスケジューラ232に応じて、アプリケーション240をメモリ108にローディングする。
【００３７】
ステップ440で、アプリケーションは指定されたプロセッサを使用して実行される。1つの実施例では、スケジューラは、以前に識別されたプロセッサのスタックポインターを、アプリケーションの部分を含んでいる記憶場所にセットする。
【００３８】
好都合なことに、上述されたシステムと技術は単一のASIC上に2つのプロセッサコアを有するモバイルデバイスを可能にし、1つのプロセッサコアが他のプロセッサコアより低い電力消費を要求するところで、また、両方のプロセッサコアがRAMやオペレーティングシステムのコンポーネントのような資源を共有するところで有効である。さらに、モバイルデバイスにインストールされたアプリケーションは、どのアプリケーションはどのプロセッサで走らせるといった固定的な統治によらず、電力と性能の適切なバランスをもたらすプロセッサによる実行をスケジューリングされる。これらのシステムと技術は、アプリケーションの有用性を必ずしも犠牲にすることなく、改善されたバッテリ寿命をもたらす。
【００３９】
本発明は特定の実施例およびインプリメンテーションに関して記述されたが、これらは単なる例示であって、発明の範囲はこれらの実施例に制限されるものではない。上述された実施例への多くの変形、変更、追加および改良が可能である。これらの変形、変更、追加および改良は、請求範囲で詳記されたように本発明の範囲内である。
【図面の簡単な説明】
【００４０】
【図１】図1は、本発明の実施が特に適用可能なモバイルデバイスを一般的に示す機能ブロック図である。
【図２】図2は、本発明の実施例に従ってマルチプロセッサアプリケーションサポートを提供するためのシステムを一般的に示す機能ブロック図である。
【図３】図3は、本発明の実施例に従ってマルチプロセッサアプリケーションサポートを提供するオペレーティングシステムの概念を例示する図である。
【図４】図4は、マルチプロセッサアプリケーションサポートを提供するプロセスを一般的に示す運用上のフローダイアグラムである。
【図１】
2009527828.tif 000003
【図２】
2009527828.tif 000004
【図３】
2009527828.tif 000005
【図４】
2009527828.tif 000006
【国際調査報告】
2009527828.tif 000007
2009527828.tif 000008
2009527828.tif 000009
2009527828.tif 000010
2009527828.tif 000011