(57)【要約】【課題】高性能プロセッサと低電力プロセッサが含まれるマルチプロセッサシステムにおいて、複数のアプリケーションに共通に使用されるタスクが含まれる場合であっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付ける。【解決手段】アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成される。タスクスケジューラ機構は、割り込みなどの入力または同期元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構と、前記駆動先タスクを、継承したプライオリティに基づいて、高性能プロセッサと低電力プロセッサのいづれに割り付けるかを決定するタスク割り付け機構とを備える。【選択図】図２
2015138323.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションを実行可能な、高性能プロセッサと低電力プロセッサが含まれるマルチプロセッサシステムで実行される、タスクスケジューラ機構であって、前記アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成され、
前記入力または同期元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構と、前記駆動先タスクを、継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定するタスク割り付け機構とを備える、タスクスケジューラ機構。
【請求項２】
請求項１において、前記同期機構は、各タスクに対応するプライオリティを記憶し、前記同期元タスクと前記駆動先タスクとを関連付けて記憶する、第１管理テーブルを有し、前記第１管理テーブルにおいて、前記駆動先タスクのプライオリティを、前記同期元タスクのプライオリティに書き換えることにより、同期元のタスクに応じたプライオリティを駆動先タスクに継承する、タスクスケジューラ機構。
【請求項３】
請求項２において、前記アプリケーションは、それぞれ複数のタスクを含んで構成されるサブプロセスグループを含み、前記同期機構は、前記第１管理テーブルにおいて、１個のタスクのプライオリティを変更するときには、当該タスクと同一のサブプロセスグループに属する他のタスクのプライオリティを、同じプライオリティに変更する、タスクスケジューラ機構。
【請求項４】
請求項２において、前記第１管理テーブルは、前記同期元タスクと前記駆動先タスクとの関連付けに加えて、前記駆動先タスクが複数のコンテキストで同時に並行して動作することができるか否かを示すフラグ情報を記憶可能に構成され、
前記タスク割り付け機構は、駆動先タスクにプロセッサを割り付ける際に、前記フラグ情報を参照することにより、当該駆動先タスクが単一のコンテキストで構成されるタスクである場合には、当該タスクの稼働状況を取得し、当該タスクが稼動中の場合には、当該タスクを稼動中のプロセッサから他のプロセッサに移動させる制御を可能に構成される、タスクスケジューラ機構。
【請求項５】
請求項１において、前記タスク割り付け機構は、継承した前記プライオリティに加えてさらに前記マルチプロセッサシステムの電力状況及び／又は負荷状況に基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれかに割り付ける、タスクスケジューラ機構。
【請求項６】
請求項１において、前記タスク割り付け機構は、駆動先タスクのプライオリティと割り付け先のプロセッサとを対応付けて記憶する、第２管理テーブルを有し、前記第２管理テーブルを参照することにより、前記駆動先タスクが継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定する、タスクスケジューラ機構。
【請求項７】
請求項６において、前記第２管理テーブルは、駆動先タスクの前記プライオリティと前記マルチプロセッサシステムの電力状況及び／又は負荷状況との組合せに対応付けて、前記割り付け先のプロセッサを記憶し、前記タスク割り付け機構は、前記第２管理テーブルを参照することにより、継承した前記プライオリティに加えてさらに前記マルチプロセッサシステムの電力状況及び／又は負荷状況に基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれかに割り付ける、タスクスケジューラ機構。
【請求項８】
請求項７において、前記タスクスケジューラ機構は、負荷状態監視・報告機構とシステム電源状態監視・報告機構とをさらに備え、前記負荷状態監視・報告機構は前記マルチプロセッサシステムの負荷状況を監視し、その結果である負荷状況を前記タスク割り付け機構に供給し、前記システム電源状態監視・報告機構は、前記マルチプロセッサシステムに供給される電源の状態を監視し、その結果である電力状況を前記タスク割り付け機構に供給する、タスクスケジューラ機構。
【請求項９】
請求項８において、前記タスクスケジューラ機構は、省電力制御機構をさらに備え、前記省電力制御機構は、前記負荷状態監視・報告機構から前記負荷状況が供給され、前記システム電源状態監視・報告機構から前記電力状況が供給され、前記負荷状況と前記電力状況に基づいて、前記高性能プロセッサ及び／又は前記低電力プロセッサの消費電力に関する動作状態を制御する、タスクスケジューラ機構。
【請求項１０】
請求項１に記載される、タスクスケジューラ機構を備える、オペレーティングシステム。
【請求項１１】
請求項１に記載される、タスクスケジューラ機構を備える、マルチプロセッサシステム。
【請求項１２】
高性能プロセッサと低電力プロセッサと不揮発性メモリを備え、複数のアプリケーションとタスクスケジューラ機構とを実行可能な、マルチプロセッサシステムであって、
前記アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成され、
前記タスクスケジューラ機構は、前記入力または同期元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構と、前記駆動先タスクを、継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定するタスク割り付け機構とを備え、
前記不揮発性メモリは、前記高性能プロセッサまたは前記低電力プロセッサによって読み出され実行される、前記アプリケーションと前記タスクスケジューラ機構のプログラムコードを保持する、
マルチプロセッサシステム。
【請求項１３】
請求項１２において、割り込みコントローラをさらに備え、前記割り込みコントローラは、割り込み要因に対応して前記入力を前記タスクスケジューラ機構に供給する、マルチプロセッサシステム。
【請求項１４】
請求項１２において、主記憶装置をさらに備え、前記アプリケーションと前記タスクスケジューラ機構の前記プログラムコードは、前記不揮発性メモリから前記主記憶装置に一旦読み出された後に、前記高性能プロセッサと前記低電力プロセッサと一方または両方で協調して実行可能に構成される、マルチプロセッサシステム。
【請求項１５】
請求項１２において、少なくとも前記高性能プロセッサと前記低電力プロセッサとが同一半導体基板上に形成された、マルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクスケジューラ機構、それを組み込んだオペレーティングシステム、及びそれらが動作可能なマルチプロセッサシステムに関し、特に、マルチプロセッサシステムに含まれる高性能プロセッサと低電力プロセッサを、動的に使い分けるタスク割り付けに好適に利用できるものである。
【背景技術】
【０００２】
マルチプロセッサシステムには、ＳＭＰ（Symmetrical Multi-Processor）向けＯＳ（Operating System）が組み込まれて、タスクの管理が行われる。マルチプロセッサシステムに高性能プロセッサと低電力プロセッサが含まれている場合に、性能と消費電力のバランスを考慮しながら、タスクをどちらのプロセッサで実行させるかを適切に割り付けることが求められる。
【０００３】
特許文献１には、主システムと補助システムを含むパーソナルコピュータにおいて、処理電力消費要件に基づくサービスのロードバランシングを行う技術が示されている。アプリケーションが実行される時に、プロセッサマネージャが、現在の主システムの負荷を判定し、動作しているコンポーネントの列挙されたリスト（たとえば、光ドライブ、ディスクドライブ、エンコーダ／デコーダなど）を参照する。プロセッサマネージャは、アプリケーションが単純な低集中型タスクである場合には、これを補助システムに切り替え、アプリケーションが集中型のタスクである場合にはこれを主システムに切り替える。
【０００４】
特許文献２には、タスクの優先度をテーブルにおいて管理し、タスクの処理完了までの時間的な余裕を示す余裕度や使用者の要求等を勘案して、タスクの優先度を動的に操作しながらスケジューリングを行う技術が示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３３２３８６号公報
【特許文献２】特開平０６−１３１２０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１及び２について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００７】
高性能プロセッサと低電力プロセッサが含まれるマルチプロセッサシステムにおいて複数のアプリケーションが実行され、その複数のアプリケーションによって共通に利用されるタスクがある場合に、その共通のタスクをどちらのプロセッサに割り付けるべきかについて、考慮されていないことがわかった。
【０００８】
特許文献１では、個々のアプリケーションが、高性能の処理が要求される集中型であるか非集中型であるかによって、それぞれのアプリケーションによって起動されるタスクが、主システムと補助システムのどちらで実行されるべきかを、プロセッサマネージャが判断して制御している。このため、集中型のアプリケーションに含まれるタスクが、非集中型のアプリケーションにも含まれており、補助システムで実行されるように制御されると、集中型のアプリケーションが求められる性能を満足することができない恐れがある。これを回避するために、そのタスクを含む全てのアプリケーションを集中型として主システムで実行するように制御すれば、必要以上に電力を消費することとなる。
【０００９】
特許文献２に記載される技術によれば、タスクの優先度を動的に操作しながらスケジューリングを行うことができるが、タスク自体に処理完了までの時間的な要求などが規定されていることが前提とされている。そのため、アプリケーション毎に処理完了までの時間的な要求など所定の性能が規定され、それら複数のアプリケーションに共通に含まれるタスクがある場合には、そのタスクについての時間的な余裕度を一意に規定することができない。したがって、そのようなタスクをどちらのプロセッサに割り付けるべきかについて適切に制御することができない。
【００１０】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態によれば、下記の通りである。
【００１２】
すなわち、複数のアプリケーションを実行可能な、高性能プロセッサと低電力プロセッサが含まれるマルチプロセッサシステムで実行される、タスクスケジューラ機構であって、以下のように構成される。アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成される。入力または駆動元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構と、前記駆動先タスクを、継承したプライオリティに基づいて、高性能プロセッサと低電力プロセッサのいづれかに割り付けるタスク割り付け機構とを備える。
【発明の効果】
【００１３】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施形態１に係るデータ処理装置の構成例を表すブロック図である。
【図２】図２は、実施形態１に係るソフトウェアの構成を表す説明図である。
【図３】図３は、同期機構内管理テーブル２１０の構成例と、同期機構２２０の動作を表す説明図である。
【図４】図４は、タスク割り付け機構内管理テーブル２２１の構成例を示す説明図である。
【図５】図５は、同期機構２１０による同期処理Ｓ１００の一例を示すフローチャートである。
【図６】図６は、タスク割り付け機構２２０によるタスク割り付け処理Ｓ２００の一例を示すフローチャートである。
【図７】図７は、駆動要求元継承機構２３０による駆動要求元継承処理Ｓ３００の一例を示すフローチャートである。
【図８】図８は、タスク間の同期状況を模式的に示す説明図である。
【図９】図９は、タスク間の同期状況における、稼動中のタスクに対する割り付け変更の動作を模式的に示す説明図である。
【図１０】図１０は、実施形態４に係るタスク割り付け機構２２０によるタスク割り付け処理Ｓ４００の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕＜駆動先タスクへのプライオリティの継承＞
本願において開示される代表的な実施の形態に係るタスクスケジューラ機構は、複数のアプリケーションを実行可能な、高性能プロセッサ（２）と低電力プロセッサ（３）が含まれるマルチプロセッサシステム（１０）で実行される、タスクスケジューラ機構（２００）であって、以下のように構成される。
【００１８】
前記アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成される。
【００１９】
前記入力または同期元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構（２１０）と、前記駆動先タスクを、継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定するタスク割り付け機構（２２０）とを備える。
【００２０】
これにより、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる。
【００２１】
〔２〕＜同期機構内管理テーブル＞
項１において、前記同期機構は、各タスクに対応するプライオリティを記憶し、前記同期元タスクと前記駆動先タスクとを関連付けて記憶する、第１管理テーブル（２１１）を有する。前記第１管理テーブルにおいて、前記駆動先タスクのプライオリティを、前記同期元タスクのプライオリティに書き換えることにより、同期元のタスクに応じたプライオリティを駆動先タスクに継承する。
【００２２】
これにより、同期機構の実装が簡略化される。
【００２３】
〔３〕＜サブプロセスグループ＞
項２において、前記アプリケーションは、それぞれ複数のタスクを含んで構成されるサブプロセスグループを含み、前記同期機構は、前記第１管理テーブルにおいて、１個のタスクのプライオリティを変更するときには、当該タスクと同一のサブプロセスグループに属する他のタスクのプライオリティを、同じプライオリティに変更する。
【００２４】
これにより、タスクの割り付けを行うタイミングの自由度を高めることができる。
【００２５】
〔４〕＜単一のコンテキストで構成されるタスク＞
項２において、前記第１管理テーブルは、前記同期元タスクと前記駆動先タスクとの関連付けに加えて、前記駆動先タスクが複数のコンテキストで同時に並行して動作することができるか否かを示すフラグ情報を記憶可能に構成される（２１２＿１〜２１２＿ｎ）。
【００２６】
前記タスク割り付け機構は、駆動先タスクにプロセッサを割り付ける際に、前記フラグ情報を参照する。前記タスク割り付け機構は、参照したフラグ情報により、当該駆動先タスクが単一のコンテキストで構成されるタスクである場合には、当該タスクの稼働状況を取得し、当該タスクが稼動中の場合には、当該タスクを稼動中のプロセッサから他のプロセッサに移動させる制御を可能に構成される（Ｓ４１５ＨＬ，Ｓ４１５ＬＨ，Ｓ４２０Ｈ，Ｓ４２０Ｌ）。
【００２７】
これにより、単一のコンテキストで構成されるタスクが、既に一方のプロセッサで稼働中のときに、必要に応じて他のプロセッサに移動させることができ、タスク処理の効率を向上することができる。
【００２８】
〔５〕＜システムの電力状況・負荷状況に応じたタスク割り付け＞
項１から項４のうちのいずれか１項において、前記タスク割り付け機構は、継承した前記プライオリティに加えてさらに前記マルチプロセッサシステムの電力状況及び／又は負荷状況に基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれかに割り付ける（Ｓ２０１、Ｓ２０３；Ｓ４０１，Ｓ４０３）。
【００２９】
これにより、マルチプロセッサシステムの消費電力と性能のバランスを適切に管理することができる。
【００３０】
〔６〕＜タスク割り付け機構内管理テーブル＞
項１において、前記タスク割り付け機構は、駆動先タスクのプライオリティと割り付け先のプロセッサとを対応付けて記憶する、第２管理テーブル（２２１）を有し、前記第２管理テーブルを参照することにより、前記駆動先タスクが継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定する（Ｓ２０３；Ｓ４０３）。
【００３１】
これにより、タスク割り付け機構の実装が簡略化される。
【００３２】
〔７〕＜タスク割り付け機構内管理テーブル＝項６＋システムの電力状況・負荷状況＞
項６において、前記第２管理テーブルは、駆動先タスクの前記プライオリティと前記マルチプロセッサシステムの電力状況及び／又は負荷状況との組合せに対応付けて、前記割り付け先のプロセッサを記憶する（図４、２２１）。前記タスク割り付け機構は、前記第２管理テーブルを参照することにより、継承した前記プライオリティに加えてさらに前記マルチプロセッサシステムの電力状況及び／又は負荷状況に基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれかに割り付ける（Ｓ２０１、Ｓ２０３；Ｓ４０１，Ｓ４０３）。
【００３３】
これにより、マルチプロセッサシステムの消費電力と性能のバランスを適切に管理することができる。
【００３４】
〔８〕＜負荷状態監視・報告機構とシステム電源状態監視・報告機構＞
項７において、前記タスクスケジューラ機構は、負荷状態監視・報告機構（１０６）とシステム電源状態監視・報告機構（１０６）とをさらに備える。前記負荷状態監視・報告機構は前記マルチプロセッサシステムの負荷状況を監視し、その結果である負荷状況を前記タスク割り付け機構に供給し、前記システム電源状態監視・報告機構は、前記マルチプロセッサシステムに供給される電源の状態を監視し、その結果である電力状況を前記タスク割り付け機構に供給する。
【００３５】
これにより、マルチプロセッサシステムの消費電力と性能のバランスを適切に管理することができる。
【００３６】
〔９〕＜省電力制御機構＞
項８において、前記タスクスケジューラ機構は、省電力制御機構（７００）をさらに備え、前記省電力制御機構は、前記負荷状態監視・報告機構から前記負荷状況が供給され、前記システム電源状態監視・報告機構から前記電力状況が供給され、前記負荷状況と前記電力状況に基づいて、前記高性能プロセッサ及び／又は前記低電力プロセッサの消費電力に関する動作状態を制御する。
【００３７】
これにより、マルチプロセッサシステムの消費電力と性能のバランスを、積極的に制御することができる。
【００３８】
〔１０〕＜マルチプロセッサ向けオペレーティングシステム＞
項１から項９のうちのいずれか１項に記載される、タスクスケジューラ機構を備える、オペレーティングシステム（１００）。
【００３９】
これにより、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる、マルチプロセッサ向けオペレーティングシステムを提供することができる。
【００４０】
〔１１〕＜マルチプロセッサシステム＞
項１から項９のうちのいずれか１項に記載される、タスクスケジューラ機構を備える、マルチプロセッサシステム（１０）。
【００４１】
これにより、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる、マルチプロセッサシステムを提供することができる。
【００４２】
〔１２〕＜駆動先タスクへのプライオリティの継承するタスクスケジューラ機構を備えたマルチプロセッサシステム＞
高性能プロセッサ（２）と低電力プロセッサ（３）と不揮発性メモリを備え、複数のアプリケーション（１０２、１０３）とタスクスケジューラ機構（２００）とを実行可能な、マルチプロセッサシステム（１０）であって、以下のように構成される。
【００４３】
前記アプリケーションは、入力によって駆動され又は他のタスクによって順次駆動される、複数のタスクを含んで構成される。
【００４４】
前記タスクスケジューラ機構は、前記入力または同期元のタスクに応じたプライオリティを駆動先タスクに継承する同期機構（２１０）と、前記駆動先タスクを、継承したプライオリティに基づいて、前記高性能プロセッサと前記低電力プロセッサのいづれに割り付けるかを決定するタスク割り付け機構（２２０）とを備える。
【００４５】
前記不揮発性メモリは、前記高性能プロセッサまたは前記低電力プロセッサによって読み出され実行される、前記アプリケーションと前記タスクスケジューラ機構のプログラムコードを保持する。
【００４６】
これにより、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる、マルチプロセッサシステムを提供することができる。前述の項１〜項９に記載される、従属的特徴は、本項１２と以下の各項にも同様に従属的に組み合わせることができ、それぞれ同様の効果を奏する。
【００４７】
〔１３〕＜割り込みコントローラ＞
項１２において、割り込みコントローラ（５）をさらに備え、前記割り込みコントローラは、割り込み要因に対応して前記入力を前記タスクスケジューラ機構に供給する。
【００４８】
これにより、一連のタスクを割り込み要因と関連付けることができ、割り込み要因ごとのプライオリティ管理を容易にすることができる。
【００４９】
〔１４〕＜主記憶装置＞
項１２において、主記憶装置（１）をさらに備え、前記アプリケーションと前記タスクスケジューラ機構の前記プログラムコードは、前記不揮発性メモリから前記主記憶装置に一旦読み出された後に、前記高性能プロセッサと前記低電力プロセッサと一方または両方で協調して実行可能に構成される。
【００５０】
これにより、プログラムの読み出しが高速化される。
【００５１】
〔１５〕＜１チップ＞
項１２から項１４のうちのいずれか１項において、少なくとも前記高性能プロセッサと前記低電力プロセッサとが同一半導体基板上に形成された、マルチプロセッサシステム。
【００５２】
これにより、集積化されたマルチプロセッサシステムが提供される。項１３に従属する場合には割り込みコントローラが、項１４に従属する場合には主記憶装置が、さらに同一半導体基板上に形成されてもよく、さらに、不揮発性メモリも含めて同一半導体基板上に形成されてもよい。
【００５３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５４】
〔実施形態１〕
図１は、実施形態１に係るデータ処理装置の構成例を表すブロック図である。
【００５５】
データ処理装置１０は、高性能プロセッサ２と低電力プロセッサ３とを含むマルチプロセッサシステムである。高性能プロセッサ２と低電力プロセッサ３は、バスを介して共通の主記憶装置１に接続される。データ処理装置１０は、さらに割り込みコントローラ５を備える。割り込みコントローラ５は、接続される液晶表示装置（ＬＣＤ）７や、タッチパネル８、タイマ９などからの割り込み要求を受け付け、高性能プロセッサ２または低電力プロセッサ３に割り込み要求を通知する。割り込みコントローラ５は、例えば割り込み通知先テーブル５１を内部に備えて、割り込みの要因に応じて、割り込み要求を通知するプロセッサを決定する。データ処理装置１０は、ＬＣＤ７を制御しまた表示すべきデータ（ＬＣＤ出力）を出力するＬＣＤコントローラ６と、タッチパネル８を制御しタッチパネル８から入力されるタッチ位置などの情報を受信するタッチコントローラ（不図示）と、タイマ９などを、周辺回路モジュールとして備える。また、データ処理装置１０は、高性能プロセッサ２と低電力プロセッサ３への電源供給を制御する電力供給コントローラ４を備える。電力供給コントローラ４は、高性能プロセッサ２と低電力プロセッサ３を休止させるときに電源供給を停止し、スタンバイ状態に遷移するときに電源電圧を低下させるなどの制御を行うことができる。また、データ処理装置１０にシステム電源状態の監視も合せて行う。システム電源状態とは、例えば、電源に余裕がある状態、あるいは電力が不足している状態である。電源に余裕がある状態とは、例えば、バッテリ駆動のシステムにおいて満充電状態の動作、もしくは商用電源に接続された状態の動作を行っている状態である。また、電力が不足している状態とは、バッテリ駆動のシステムにおいてバッテリ残量が不足しつつある場合の動作を行っている状態である。主記憶装置１、高性能プロセッサ２、低電力プロセッサ３、電力供給コントローラ４、割り込みコントローラ５、ＬＣＤコントローラ６及びタイマ９などは、例えば公知の半導体製造技術によって単一チップの集積回路として構成される。
【００５６】
図２は、実施形態１に係るソフトウェア１０１の構成を表す説明図である。データ処理装置１０で実行されるソフトウェア（実行プログラム）１０１は、主記憶装置１に展開され、高性能プロセッサ２と低電力プロセッサ３のいずれか一方で、または両方で協調して実行される。実行プログラム１０１には、マルチプロセッサ向けオペレーティングシステム（ＯＳ）１００と各種のアプリケーションプログラムが含まれる。各種のアプリケーションプログラムは例えば、ＧＵＩ処理アプリケーション１０２と汎用アプリケーション１０３であり、汎用アプリケーション１０３にはＧＵＩ処理タスク１０４とタイマ同期処理タスク１０５が含まれる。この他、実行プログラム１０１には、負荷状況監視・報告機構１０６とシステム電源状態監視・報告機構１０７が含まれてもよい。これらは図２ではアプリケーションプログラムの一種としてＯＳ１００に含まれないものとして記載されるが、ＯＳ１００に含まれてもよい。
【００５７】
マルチプロセッサ向けオペレーティングシステム（ＯＳ）１００には、プライオリティ承継型同期・スケジューラ機構２００と、高性能プロセッサ用スケジューラ３００と、低電力プロセッサ用スケジューラ４００と、割り込み処理５００と、ＬＣＤ出力処理タスク６００と、省電力制御機構７００とが含まれる。
【００５８】
プライオリティ承継型同期・スケジューラ機構２００には、管理テーブル２１１を備える同期機構２１０と、管理テーブル２２１を備えるタスク割り付け機構２２０と、駆動要求元継承機構２３０とを含んで構成される。動作については後述するが、「プライオリティ承継型」に構成されることにより、タスクを動的に適切に割り付けることができる。高性能プロセッサ用スケジューラ３００と低電力プロセッサ用スケジューラ４００は、それぞれタスクキューを備えて実装され、プライオリティ承継型同期・スケジューラ機構２００によって割り付けられたタスクを、それぞれのタスクキューに積み、順次高性能プロセッサ２と低電力プロセッサ３によって実行されるように、スケジューリングする。
【００５９】
省電力制御機構７００は、負荷状況監視・報告機構１０６とシステム電源状態監視・報告機構１０７から供給されるシステムの負荷状況と電源状態に基づいて、マルチプロセッサシステムであるデータ処理装置１０全体の省電力制御を行う。これと合せて、上述のタスク割り付け機構２２０によるタスク割り付け動作の判断材料とされる情報を供給する。この動作については後述する。
【００６０】
割り込み処理５００には、高性能要求型割り込みであるユーザ入力割り込み処理５０１と、それと比べて低い性能を要求するに留まる、タイマ割り込み処理５０２が含まれる。ユーザ入力割り込み処理５０１は、例えば、図１に示される、ＬＣＤ同期割り込み要求やタッチパネル割り込み要求に対する割り込み処理であり、できる限り速い応答が求められるため、高性能要求型割り込みに分類される。タイマ割り込み処理５０２は、例えば、図１に示される、タイマ割り込み要求に対する割り込み処理であり、所定の周期で実行されるべき処理が駆動されるので、上述の高性能要求型割り込みと比べて低い性能が要求される。
【００６１】
ＬＣＤ出力処理タスク６００は、図１に示されるＬＣＤコントローラ６を介してＬＣＤ７を制御し、表示データであるＬＣＤ出力を、ＬＣＤ７に出力するタスクであり、オペレーティングシステム（ＯＳ）１００におけるデバイスドライバの１つとして実装される。図示は省略されるが、ＯＳ１００には、タッチパネル８を制御するタスクなど、他のデバイスドライバが適宜実装されている。
【００６２】
プライオリティ承継型同期・スケジューラ機構２００の構成例と動作について説明する。
【００６３】
図３は、同期機構内管理テーブル２１１の構成例と、同期機構２１０の動作を表す説明図である。同期機構内管理テーブル２１１は、複数の同期構造体２１２＿１〜２１２＿ｎ（ｎは任意の自然数）とタスクプライオリティ管理テーブル２１３とを含んで構成される。複数の同期構造体２１２＿１〜２１２＿ｎには、同期元のあるタスクの処理が完了した時に、次に駆動されるべき駆動先タスクが、互いに関連付けられて規定されている。それぞれの駆動先タスクが、単一コンテキストか否か、即ち複数同時に動作させることを許容しているか否かの上方も合わせて規定される。タスクプライオリティ管理テーブル２１３には、複数のタスクのそれぞれに対応するプライオリティ２１４＿１〜２１４＿ｍ（ｍは任意の自然数）が規定されている。１つの同期元タスクがその処理を完了した時には、その同期元タスクに対応する同期構造体が参照され、タスクプライオリティ管理テーブル２１３に規定される同期元タスクのプライオリティが、タスクプライオリティ管理テーブル２１３内の駆動先タスクに対応するプライオリティにコピーされることにより、継承される。図３では、同期元のタスクＸが完了したときに、第１の同期構造体２１２＿１が参照されることによって、駆動先タスクがタスクＹであることがわかる。タスクプライオリティ管理テーブル２１３において、タスクＹのプライオリティがタスクＸのプライオリティと同一になるように変更されることにより、プライオリティが同期元タスクタスクＸから駆動先タスクタスクＹに継承される。
【００６４】
図４は、タスク割り付け機構内管理テーブル２２１の構成例を示す説明図である。タスク割り付け機構内管理テーブル２２１には、駆動先タスクのプライオリティに基づいて、割り付け先のプロセッサが規定されている。駆動先タスクのプライオリティが高いときには高性能プロセッサ２に割り付けられ、低いときには低電力プロセッサ３に割り付けられる。図４には、さらにこの割り付けの基準がシステムの電力状況と負荷状況によって調整可能に構成される例が示される。システムの電力状況と負荷状況を表す値が最大（Ｍａｘ）の場合には、できるだけ多くのタスクが高性能プロセッサ２に割り付けられ、最小（ｍｉｎ）の場合には、できるだけ多くのタスクが低電力プロセッサ３に割り付けられるように規定されている。ここで、システムの電力状況と負荷状況を表す値が最大（Ｍａｘ）の場合とは、例えば、電池がフル充電状態あるいは充電中であって電力供給に余裕があり、プロセッサに高い負荷を与えることができる状態を指す。また、システムの電力状況と負荷状況を表す値が最小（ｍｉｎ）の場合とは、例えば、電池がエンプティに近い充電状態であって電力供給に余裕がなく、プロセッサに高い負荷を与えることができない状態を指す。システムの電力状況と負荷状況は、適宜数値化することによって、駆動先タスクのプライオリティに応じてどのプロセッサに割り付けるかを段階的に調整することができ、きめの細かい消費電力管理を実現することができる。
【００６５】
この例ではアプリケーションＡにおいて同期元タスクＸが駆動先タスクＹを駆動するものとする。タスクＹが別のアプリケーションＢにおいて、上記と異なる同期元タスクタスクＺによって駆動される駆動先タスクでもあるとする。このとき、アプリケーションＡは、処理時間に対する余裕が小さく、高性能処理が必要なアプリケーションであり、一方、アプリケーションＢは、処理時間に対する余裕が大きく、比較的低い性能の処理で良いアプリケーションであるとする。アプリケーションＡを構成するタスクは高いプライオリティで実行され、アプリケーションＢを構成するタスクは低いプライオリティで実行されることが期待される。アプリケーションＡが開始されると、最初のタスクに高いプライオリティが付与され、上述の構成によりその高いプライオリティが、アプリケーションＡを構成し順次駆動される複数のタスクの間で、順次継承されていく。そのため、アプリケーションＡにおいては同期元タスクＸから駆動先タスクであるタスクＹに高いプライオリティが継承され、それに基づいて割り付けられるプロセッサが決まる。一方アプリケーションＢを構成するタスクは、低いプライオリティを順次継承するので、同じタスクＹに対しても、同期元タスクであるタスクＺから低いプライオリティが継承される。
【００６６】
これにより、駆動先タスクが複数のアプリケーションに共通に使用されるタスクであっても、高性能プロセッサと低電力プロセッサのいづれかに適切に割り付けることができる。
【００６７】
図１に示したデータ処理装置１０において、周辺装置として、ＬＣＤ７、タッチパネル８、タイマ９などを備えたのは、一例であって、適宜変更することができる。また、バス構成も階層構造に変更するなど、任意に変更することができる。マルチプロセッサとして高性能と低電力の２個のプロセッサを備える例を示したが、同じ回路構成のプロセッサに対して供給する電源の電圧やクロックの周波数を適宜調整して、性能と消費電力を調整する構成としてもよく、その場合には、両方のプロセッサがともに高性能または低電力で動作する動作モードが含まれても構わない。さらに、マルチプロセッサを構成するプロセッサの数は、２個に限定されるものではなく、３個以上の多数個であってもよい。マルチプロセッサを構成する複数のプロセッサの命令セットは同一であり、同じ命令コードがどのプロセッサでも任意に実行可能であることが望ましい。ＯＳ１００は、複数のプロセッサで協調して実行されても良く、また、いずれか１個のプロセッサで実行されてもよい。
【００６８】
上述の説明において、「アプリケーション」と「タスク」は、ソフトウェアの階層を示す用語として使用するものであって、「アプリケーション」に複数の「タスク」が含まれるという階層関係を意味するに過ぎない。一般用語としてのアプリケーションには、複数のプライオリティを持つタスクが発生し、それぞれが「プロセス」や「スレッド」を順次発生させながら動作する場合がある、この場合にはタスクが本願でいう「アプリケーション」に、プロセスやスレッドが本願でいうタスクに相当する。
【００６９】
〔実施形態２〕
図１に示したようにデータ処理装置１０が、周辺装置として、ＬＣＤ７、タッチパネル８、タイマ９などを備える場合の動作例について、さらに詳しく説明する。
【００７０】
上述のように、割り込みコントローラ５は、接続されるＬＣＤ７や、タッチパネル８、タイマ９などからの割り込み要求を受け付け、割り込み通知先テーブル５１に基づいて、割り込みの要因に応じて、高性能プロセッサ２または低電力プロセッサ３に割り込み要求を通知する。
【００７１】
割り込みコントローラ５がタッチパネル８から割り込み要求を受けると、割り込み通知先テーブル５１に基づき、高性能プロセッサ２にその要求を通知する。図２に示される実行プログラム１０１では、割り込み要求が通知されると、マルチプロセッサ向けオペレーティングシステム（ＯＳ）１００内の割り込み処理５００において割り込みが受理される。割り込み処理５００において割り込み要因がタッチパネル割り込み要求であることが判断された場合に、ユーザ入力割り込み処理５０１が駆動される。ユーザ入力割り込み処理５０１では、タッチパネル８から入力されるデータを処理する。例えばタッチ座標などのデータである。
【００７２】
ユーザ入力割り込み処理５０１が完了すると、処理完了が同期機構２１０を経由してＧＵＩ処理アプリケーション１０２に通知され、ユーザ入力割り込み処理５０１で入力処理されたデータが別途もしくは同時にＧＵＩ処理アプリケーション１０２に引き渡される。ＧＵＩ処理アプリケーション１０２は同期機構２１０を通じ、汎用アプリケーション１０３を構成するＧＵＩ処理タスク１０４を駆動する。ＧＵＩ処理タスク１０４において出力すべき画面イメージを作成したのち、同期機構２１０を通じ、ＬＣＤ出力処理タスク６００が駆動される。ＬＣＤ出力処理タスク６００はＬＣＤコントローラ６を操作し、ＬＣＤ出力を更新する。
【００７３】
上記タッチパネル割り込み処理例においては、タッチパネルへの入力に対して迅速にＬＣＤ出力を更新するために、上記の処理の流れすべてが高性能プロセッサ２において実行されることが望ましいものとする。
【００７４】
次に、タイマ割り込みを受けた場合の例を示す。
【００７５】
図１に示されるタイマ９からタイマ割り込み要求を受けると、割り込みコントローラ５が割り込み通知先テーブル５１に基づき、低電力プロセッサ３に要求を通達する。図２に示される実行プログラム１０１では、割り込み要求が通知されると、マルチプロセッサ向けオペレーティングシステム（ＯＳ）１００内の割り込み処理５００において割り込みが受理される。割り込み処理５００において割り込み要因がタイマ割り込み要求であることが判断された場合に、タイマ割り込み処理５０２が駆動される。タイマ割り込み処理５０２では、例えば電池の監視など定時的な処理が実行される。
【００７６】
タイマ割り込み処理５０２が完了すると、処理完了が同期機構２１０を経由して汎用アプリケーション１０４を構成するタイマ同期処理タスク１０５が駆動される。
【００７７】
上記タイマ割り込み処理の例においては、処理要求速度が低い前提とし、上記の流れすべてが低電力プロセッサ３において実行されることが望ましいものとする。
【００７８】
以下に、本実施形態において望ましい動作を得るにあたり、必要な構成を述べる。
【００７９】
マルチプロセッサ向けオペレーティングシステム１００の初期化において、以下の設定を事前に行う構成とする。システム動作中に動的に設定する構成としても良い。
【００８０】
割り込み通知先テーブル５１に、割り込み要求の要因ごとに、通知されるプロセッサを定義する。本例では、タッチパネル割り込み要求が高性能プロセッサ２に送られ、タイマ割り込み要求が低電力プロセッサ３に送られることを定義する。
【００８１】
割り込み処理５００において、タッチパネル割り込み要求であることが判断された場合に、ユーザ入力割り込み処理５０１が駆動されるように定義し、タイマ割り込み要求であることが判断された場合に、タイマ割り込み処理５０２が駆動されるように定義する。
【００８２】
なお、割り込み処理５００における駆動先の定義は、割り込み要求が割り込み通知先テーブル５１の設定内容が、後に動的に変更された場合に備え、各割り込み処理がいずれかのプロセッサで必ず実行されるような構成とすることがより好適である。即ち、低電力プロセッサ３にタッチパネル割り込み要求が入力された場合でも、また、高性能プロセッサ２にタイマ割り込み要求が入力された場合でも、正常に割り込み処理を実施し、且つ、割り込み要求を受けたプロセッサ上において、各割り込み処理を行う構成とすることがより好適である。
【００８３】
マルチプロセッサ向けオペレーティングシステム１００、もしくは、ＧＵＩ処理アプリケーション１０２の初期化、あるいは、任意のタスクにおいて、以下の設定を、事前に、もしくは動的に行う構成とする。
【００８４】
先行する割り込み処理もしくはタスクが完了した場合に、駆動されるべき次のタスクを、同期機構２１０内に存在する同期機構内管理テーブル２１１の同期構造体２１２＿１〜２１２＿ｎに、先行するタスクを「同期元タスク」として登録し、駆動されるべき次のタスクを「駆動先タスク」として登録する。本例では第ｉ（ｉは自然数ｎ以下の任意の自然数）の同期構造体２１２＿ｉが用いられるものとする。一例では、同期元タスクは上記例におけるユーザ入力割り込み５０１であり、駆動先タスクは、ＧＵＩ処理アプリケーション１０２であり、前記組み合わせが、第１の同期構造体２１２＿１に登録される。また、第２の同期構造体２１２＿２には、同期元タスクとして、ＧＵＩ処理アプリケーション１０２、駆動先タスクにＧＵＩ処理タスク１０４が登録される。このように、同期構造体２１２＿１〜２１２＿ｎにより、順次駆動されるタスクの相互の関係が参照可能とされる。
【００８５】
各タスクの優先順位は、第ｊ（ｊは自然数ｍ以下の任意の自然数）のタスクプライオリティ２１４＿ｊに登録される。各タスクのタスクプライオリティは動的に変更されるものとする。例えば、ユーザ入力割り込み５０１のタスクプライオリティを２１４_１にて管理し、ＧＵＩ処理アプリケーション１０２のタスクプライオリティを２１４_ｍにて管理する構成とする。各タスクプライオリティの初期値については、本実施形態では内容を問わないが、定常的な動作状態に至る段階で設定・変更されるものとする。
【００８６】
初期化を終え、データ処理システム１０全体が定常的な動作状態に入っている状態の構成を以下に示す。
【００８７】
負荷状態監視・報告機構１０６は、システム全体の負荷状態や発熱による熱設計上の余裕などのシステム状態を、省電力制御機構７００に通知する。また、システム電源状態監視・報告機構１０７は、電源に余裕がある状態（バッテリ駆動のシステムにおいて満充電状態の動作、もしくは商用電源に接続された場合の動作）、あるいは電力が不足している状態（バッテリ駆動のシステムにおいてバッテリ残量が不足しつつある場合の動作）などのシステム状態を、省電力制御機構７００に通知する。
【００８８】
省電力制御機構７００は、後述するタスク割り付け機構２２０に、システムの状態を通知する。また、電力が不足している場合などのシステム状態に応じ、高性能プロセッサ用スケジューラ３００において、処理すべきタスクが存在しないことが検出された場合に、電力供給コントローラ４を制御するなどの方法により高性能プロセッサ２を停止させる、もしくは処理が再び要求されるまで間欠動作の状態に設定する。
【００８９】
省電力制御機構７００は、より好適には、システムの状態に応じて、割り込み通知先テーブル５１を操作し各入力の通知先を変更する機能を有する構成とする。例えば、システム全体が重負荷であったり電力利用に制限が無く各入力を迅速に処理する必要がある場合、あるいは電力が不足していたり軽負荷な状態で特定の入力のみ迅速な処理が要求される場合において、割り込み通知先テーブル５１を操作し各入力の通知先を変更する。
【００９０】
定常的な状態から、タッチパネル割り込み要求が入力された場合の処理に必要な構成を以下に示す。
【００９１】
図５と図６と図７は、同期機構２１０による同期処理Ｓ１００の一例、タスク割り付け機構２２０によるタスク割り付け処理Ｓ２００の一例、駆動要求元継承機構２３０による駆動要求元継承処理Ｓ３００の一例を、それぞれ示すフローチャートである。
【００９２】
上記例においては、同期元タスクの処理（ユーザ入力割り込み５０１）の処理が進んだ場合に、次の処理を行うタスク（ＧＵＩ処理アプリケーション１０２）を起動するイベントがプライオリティ継承型同期・スケジューラ機構２００に送付される。プライオリティ継承型同期・スケジューラ機構２００内の同期機構２１０は、同期処理Ｓ１００を開始する。本例においてはユーザ入力割り込み処理５０１は割り込み通知先テーブル５１の定義に従い、高性能プロセッサ２側で実行されている。また、タッチパネル割り込み要求については迅速な処理を実施するために、同期機構内管理テーブル２１１内のユーザ入力割り込み要求のタスクプライオリティ２１４＿ｘ（不図示）は、高優先順位と設定されている。本例では、上記状態で同期機構２１０の処理Ｓ１００が実行される。
【００９３】
同期機構２１０において、同期構造体２１２（同期構造体２１２＿１〜２１２＿ｎ全体を指す時は２１２と略記する）の中から、要求元タスクｘから第ｘの同期構造体２１２＿ｘが参照され（Ｓ１０１）、駆動先タスクｙとして、ＧＵＩ処理アプリケーション１０２が取得される（Ｓ１０２）。次に駆動要求元継承機構２３０による駆動要求元継承処理Ｓ３００が呼び出される（Ｓ１０３）。
【００９４】
駆動要求元継承機構２３０によって（Ｓ３００）、ＧＵＩ処理アプリケーション１０２のタスクプライオリティ２１４＿ｙには、同期元タスクのタスクプライオリティ２１４＿ｘの内容が継承され（Ｓ３０１〜Ｓ３０３）、その結果、ＧＵＩ処理アプリケーション１０２のタスクプライオリティ２１４＿ｙは、高優先順位に設定される。
【００９５】
駆動要求元継承処理Ｓ３００について、図７を引用してさらに詳しく説明する。駆動要求元継承要求を受理すると、同期構造体２１２の中から要求元タスクｘに対応する第ｘのタスクプライオリティ２１４＿ｘを参照し（Ｓ３０１）、同期構造体２１２の中から駆動先タスクｙに対応する第ｙのタスクプライオリティ２１４＿ｙを参照する（Ｓ３０２）。次に、タスクプライオリティを２１４＿ｘから２１４＿ｙに継承する（Ｓ３０３）。以上で駆動要求元継承処理Ｓ３００を完了し、同期処理Ｓ１００に戻る。同期処理Ｓ１００では、タスク割り付け機構２２０に対して、駆動先タスクｙの割り付け要求を発行し（Ｓ２０４）、同期機構処理（Ｓ１００）を完了する。
【００９６】
この一連の処理により、駆動先タスクｙとしてＧＵＩ処理アプリケーション１０２が選択され、タスクプライオリティとして高優先順位に設定された状態で、引き続きタスク割り付け機構２２０によるタスク割り付け処理Ｓ２００に処理が移る構成が実現される。
【００９７】
タスク割り付け処理Ｓ２００について、図６を引用して詳しく説明する。タスク割り付け要求を受理すると、タスク割り付け処理Ｓ２００では、まず、省電力制御機構７００が管理するシステム状態を参照する（Ｓ２０１）。次に、同期構造体２１２の中から駆動先タスクｙに対応する第ｙのタスクプライオリティ２１４＿ｙを参照する（Ｓ２０２）。次に、タスク割り付け機構内管理テーブル２２１を、Ｓ２０１で取得したシステム状態とＳ２０２で取得した第ｙのタスクプライオリティ２１４＿ｙの内容から牽き、割り付け先のプロセッサを決定する（Ｓ２０３）。駆動先タスクｙの割り付け先が高性能か低電力化を判断し（Ｓ２１０）、その結果が、高性能プロセッサ２への割り付けであるときは、高性能プロセッサ用タスクスケジューラ３００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ２００を完了する（Ｓ２２０Ｈ）。Ｓ２１０の判断の結果が、低電力プロセッサ３への割り付けであるときは、低電力プロセッサ用タスクスケジューラ４００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ２００を完了する（Ｓ２２０Ｌ）。
【００９８】
以上のように、タスク割り付け機構２２０において、駆動先タスクの優先順位（本例では高優先順位）と、省電力制御機構７００から入力されるシステム状態を元に、タスク割り付け機構内管理テーブル２２１を参照して、駆動先タスクｙの割り付け先のプロセッサを決定する（Ｓ２０１〜Ｓ２０３，Ｓ２１０）。本例では、図４に示されるように、高優先度プライオリティを持つＧＵＩ処理アプリケーション１０２は、電源＋負荷状況値がＭＩＮ値の場合以外には、高性能プロセッサ２が選択される（Ｓ２２０Ｈ）。タスク割り付け機構２２０が、駆動先タスク（本例ではＧＵＩ処理アプリケーション１０２）を高性能プロセッサに割り付けることを決定した後（Ｓ２１０）、該当するプロセッサ用スケジューラ（本例では高性能プロセッサ用スケジューラ３００）に駆動先タスクが登録される（Ｓ２２０Ｈ）。高性能プロセッサ用スケジューラ３００は、タスクの処理状況に応じて、実際にＧＵＩ処理アプリケーション１０２を、高性能プロセッサ２により処理する。
【００９９】
上記の例では、タッチパネル割り込み要求を用いて高性能プロセッサ２によりユーザ入力割り込み処理５０１が実行される例を用いたが、タイマ割り込み要求から低電力プロセッサ３においてタイマ割り込み処理５０２が実行される場合においても同様である。タイマ割り込み処理５０２では、初めの同期元タスクのプライオリティが低優先順位に設定されることから、駆動要求元継承機構２３０によって、後続に駆動されるタスクｙに低優先順位のプライオリティが継承され（Ｓ３０３）、タスク割り付け機構２２０から低電力プロセッサ用スケジューラ４００に、駆動先タスクｙとしてタイマ同期処理タスク１０５が登録される（Ｓ２２０Ｌ）。
【０１００】
なお、本実施形態では、駆動要求元継承機構２３０により、要求元タスクのタスクプライオリティが、駆動先タスクのタスクプライオリティに、処理を移す段階で動的に継承される。そのため、例えば、本実施形態におけるＧＵＩ処理アプリケーション１０２が、高性能プロセッサ２でユーザ入力割り込み処理５０１から駆動された場合には、高優先順位として高性能プロセッサ２で駆動されるように制御される。一方、同一のＧＵＩ処理アプリケーション１０２が、低電力プロセッサ３においてタイマ割り込み処理５０２から駆動された場合には、低優先順位が継承され、結果として低電力電力プロセッサ３により駆動されるように制御される。このように、各タスクが駆動される際に割り付け先となるプロセッサが、当該の処理の入力である割り込み処理などの同期元タスクに応じて動的に、プライオリティ継承型同期・スケジューラ機構２００により決定される。
【０１０１】
すでに述べたように、接続される割り込みの種別毎の高性能プロセッサ２または低電力プロセッサ３への割り付けは動的に割り込み通知先テーブル５１によって制御され得る。本実施形態におけるタスク起動の発端を入力デバイスからの割り込みによらず、任意のタスクによるプライオリティ継承型同期・スケジューラ機構２００へのソフトウェア生成のイベント送付を発端とする処理としても、同様の処理が実施される。
【０１０２】
以上説明したように、特定の高性能要求型の入力（割り込み）に対して、高性能プロセッサでの一貫処理を行う一方で、通常の入力（割り込み）に対しては低電力プロセッサで処理を行い、かつ高性能プロセッサを休止・停止させる。それにより、高性能要求型の入力に対する十分な処理性能を実現しつつ、システム全体の消費電力を低下させることが可能である。
【０１０３】
入力に対する処理を行う各アプリケーション、およびＯＳ・アプリケーション内の個別の各タスクの割り付けは、プライオリティ継承型同期・スケジューラ機構により動的に行われ、各タスクを事前に静的に高性能プロセッサ向き及び低電力プロセッサ向きに多重に準備することなく、同一のタスクを、高性能要求型の入力に対する処理と、それ以外の入力に対する処理の双方で利用可能である。
【０１０４】
〔実施形態３〕
単一もしくは複数のタスクからなるプロセスグループを設け、各プロセスグループ内に更に単一もしくは互いの処理が同期処理により連携する複数のタスクからなるサブプロセスグループを設ける。プロセスグループ内の各サブプロセスグループは固定的にタスクが割り付けられてもよいが、割り付けを固定しないタイプのプロセスグループを構成する各サブプロセスグループについては、各サブプロセスグループを構成するタスクの同期機構における他タスクとの連携状況、入出力先の使用中・不使用状態の変化などにより、プロセスグループを跨り置き換えられる。
【０１０５】
本実施形態においては、実施形態１における第ｎのプライオリティ（２１４＿ｎ）を、サブプロセスグループを構成する各タスクで共有する。さらに、サブプロセスグループ内のタスクを起動する要因（入力）の種別、もしくは計算時間の多寡を支配する入力容量・種別、オペレーティングシステム（ＯＳ）１００が管理する各タスク単位のプライオリティにより、動的に各サブプロセスグループにプライオリティを付与する、サブプロセスグループ管理ガバナー８００（不図示）をＯＳ１００内に追加する。
【０１０６】
前記サブプロセスグループ管理ガバナー８００によって、サブプロセスグループ単位で動的に付与されたプライオリティは、サブプロセスグループ内の各タスク毎のプライオリティ２１４として、タスク割り付け機構２２０および、駆動要求元継承機構２３０から参照される。そのため、要求元タスクが所属するサブプロセスグループのプライオリティが、駆動先タスクが所属するサブプロセスグループに継承される（Ｓ３０３）。その後、タスク割り付け機構２２０内での処理におけるタスク割り付け（Ｓ２０３）により、高性能プロセッサ用スケジューラ３００または低電力プロセッサ用スケジューラ４００に、駆動先タスクが登録される（Ｓ２２０ＨまたはＳ２２０Ｌ）。
【０１０７】
以上のように、本実施形態３に係るＯＳ１００は、各タスクの高性能プロセッサ、低電力プロセッサへの割り振りを、サブプロセスグループ単位で決定している。入力が行われるタイミングで割り付けを確定させる実施形態１と２に比べ、割り付けを決定するタイミングの自由度が高く、入力時もしくは同期機構起動時以外に、定期的なプライオリティ見直しにより間欠的に割り付け先を確定させても良い。
【０１０８】
本実施形態においては、サブプロセスグループ内の一部のタスクに対するプライオリティが設定・変更された段階で、サブプロセスグループ内のすべてのタスクが連動して変更される。このため、直接的にプライオリティ継承型同期・スケジューラ機能２００を経由した、タスク間の同期処理を行わないタスク間においても、高性能プロセッサ２への割り付けまたは低電力プロセッサ３への割り付けを同期させることが可能となる。
【０１０９】
例えば、実施形態２におけるユーザ入力割り込み処理５０１によるタスク駆動例において、ＬＣＤ出力処理タスク６００と直接同期しない、ＬＣＤ画面明度管理タスク（不図示）が同一サブプロセスグループに存在した場合、実施形態２においては、ＬＣＤ出力処理タスク６００とＬＣＤ画面明度管理タスク（不図示）が異なるプライオリティとなる可能性がある。このため、ＬＣＤ７の出力変化と画面明度変化が同期しなくなる恐れがある。しかし、本実施形態３においては、同一のプライオリティとなり、ともに高性能プロセッサ２に割り付けられ、同期した操作が可能となる。
【０１１０】
〔実施形態４〕
マルチプロセッサ向けオペレーティングシステム１００の機能として、１つのタスクが複数のコンテキストで動作することを可能とすることができる。例えば以上説明した実施形態１〜３では、プライオリティ継承型同期・スケジューラ機構２３０において、後続の駆動先タスクを駆動する際、後続の駆動先タスクが同期の単位毎に複数のコンテキストで動作することが可能である。また、後続のタスクを駆動する時点におけるプライオリティ・電力状況・負荷状況に応じて高性能プロセッサ側もしくは低電力プロセッサ側に、独立したコンテキストとして割り付けることができる。即ち、各個別のタスク、例えばＧＵＩ処理アプリケーション１０２は、高性能プロセッサ２と低電力プロセッサ３のそれぞれで、独立したタスクとして複数のコンテキストで動作することが可能である。
【０１１１】
しかし、全てのマルチプロセッサ向けオペレーティングシステム１００が、そのような機能を備えているとは限らない。本実施形態４は、全てあるいは一部のタスクが、単一もしくは同期の単位以下の少数のコンテキストでのみ動作する場合における、実施の形態である。以下、単純化のため、あるタスクが単一のコンテキストで稼働し、一時点においては全プロセッサ中で一つのプロセッサ上にのみ存在が許される場合について説明する。このとき、低電力プロセッサ側で動作中のタスクと同じタスクが、高プライオリティの入力に由来する条件で駆動される場合が発生し得る。
【０１１２】
図８は、タスク間の同期状況を模式的に示す説明図である。タッチパネル８から入力されるタッチパネル割り込み要求に由来して、タスクＡ、タスクＢ、タスクＣ、タスクＤが順次駆動される。これと並行して、タイマ９から入力されるタイマ割り込み要求に由来して、タスクＡ’、タスクｅ、タスクＤ’ が順次駆動される。タスクＡとタスクＡ’は複数コンテキストで同時に動作することができるものとし、タスクＤとタスクＤ’は単一コンテキスト動作の事例である。
【０１１３】
図９は、タスク間の同期状況における、稼動中のタスクに対する割り付け変更の動作を模式的に示す説明図である。タッチパネル割り込み要求に由来する一連のタスクは、高性能プロセッサ２に割り付けられ、タイマ割り込み要求に由来する一連のタスクは低電力プロセッサ３に割り付けられるものとする。図９は横軸方向に時間をとり、縦軸方向に各プロセッサの処理能力を示す。高性能プロセッサ２は低電力プロセッサよりも処理能力が高い。タスクＡはタッチパネル割り込み要求に由来するときは、高性能プロセッサ２に割り付けられる。同じタスクＡがタイマ割り込み要求に由来するときは、別のコンテキストであるタスクＡ’として、低電力プロセッサ３に割り付けられる。同じタスクＡとＡ’であっても、高性能プロセッサ２に割り付けられタスクＡとして処理されるときは、別のコンテキストのタスクＡ’として低電力プロセッサ３で処理されるときよりも短時間でタスク（コンテキスト）処理が完了する。その後、低電力プロセッサ３では、タスクｅとタスクＤ’が順次駆動される。一方、これと並行して高性能プロセッサ２ではタスクＢとタスクＣが順次駆動され、タスクＣの完了後にタスクＤが駆動されようとする。しかしそのとき既に、タスクＤの１つのコンテキストであるタスクＤ’が低電力プロセッサ３によって実行されている。このとき、高性能プロセッサ２が、低電力プロセッサ３によりタスクＤ’の処理が完了するのを待たされると、高性能プロセッサ２の処理時間に無駄な空白が生じてしまい、リソースの利用効率が低下するばかりか、タッチパネル割り込み要求に由来する時間的な要求性能を満たせなくなる恐れがある。そこで、本実施形態４では、低電力プロセッサ３により稼動中のタスクＤ’の割り付け変更を実施する。即ち、タスクＤ’を高性能プロセッサ２に割り付けて、残りの処理を完了させ、その後、タスクＣによって駆動される、本来のタスクＤを実行する。
【０１１４】
例えば、ＧＵＩ処理タスク１０４が、タイマ割り込み処理５０２から駆動され、低電力プロセッサ３において処理されている状態で、ユーザ入力割り込み処理５０１に起因する同期イベントにより、後からＧＵＩ処理タスク１０４を高性能プロセッサ２により処理をすべき状態になった場合である。ＧＵＩ処理タスク１０４を高性能プロセッサ２により処理をすべき状態になったにも関わらず、ＧＵＩ処理タスク１０４の実装上の要因により、高性能プロセッサ２と低電力プロセッサ３で同時に並行して複数動作させることが出来ないために、ユーザ入力割り込み処理５０１に関連する処理が、タイマ割り込み処理５０２に由来する処理の完了を、待たねばならない。
【０１１５】
本実施形態４では、図３に示されるように、プライオリティ継承型同期・スケジューラ機構２００内の同期処理２１０において参照される同期構造体２１２＿１〜２１２＿ｎのそれぞれに、次に駆動されるべきタスクが、単一のコンテキストで構成されるか否かのフラグを設ける。
【０１１６】
図１０は、実施形態４に係るタスク割り付け機構２２０によるタスク割り付け処理Ｓ４００の一例を示すフローチャートである。タスク割り付け機構２２０は、タスク割り付け要求を受理すると、省電力制御機構７００が管理するシステム状態を参照する（Ｓ４０１）。次に、同期構造体２１２の中から駆動先タスクｙに対応する第ｙのタスクプライオリティ２１４＿ｙを参照する（Ｓ４０２）。次に、タスク割り付け機構内管理テーブル２２１を、Ｓ４０１で取得したシステム状態とＳ４０２で取得した第ｙのタスクプライオリテ２１４＿ｙの内容から牽き、割り付け先のプロセッサを決定する（Ｓ４０３）。次に、駆動先タスクｙが複数同時動作可能か、単一のコンテキストで構成されるタスクかを、同期構造体２１２＿１〜２１２＿ｎに設けた上記フラグに基づいて判定する（Ｓ４０４）。駆動先タスクｙが単一のコンテキストで構成されるタスクである場合には、駆動先タスクｙの割り付け先は高性能プロセッサか低電力プロセッサか、また稼働中で割付変更が必要かを判断する（Ｓ４０５）。
【０１１７】
Ｓ４０４の判断の結果、駆動先タスクｙが複数動作可能であるか、単一のコンテキストで構成されるタスクであっても、Ｓ４０５の判断の結果、駆動先タスクｙが他のプロセッサで稼働していない場合は、駆動先タスクｙの割り付け先が高性能プロセッサ２か低電力プロセッサ３かを判断する（Ｓ４１０）。その結果が、高性能プロセッサ２への割り付けであるときは、高性能プロセッサ用タスクスケジューラ３００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ４００を完了する（Ｓ４２０Ｈ）。Ｓ４１０の判断の結果が、低電力プロセッサ３への割り付けであるときは、低電力プロセッサ用タスクスケジューラ４００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ４００を完了する（Ｓ４２０Ｌ）。
【０１１８】
Ｓ４０５の判断の結果、タスクｙが既に低電力プロセッサで稼働中で、さらに高性能プロセッサに割り付けられた場合は、低電力プロセッサ用スケジューラ４００に駆動先タスクｙの一時停止を指示し、停止するまで待機する（Ｓ４１５ＬＨ）。低電力プロセッサ３でタスクｙが停止した後、高性能プロセッサ用タスクスケジューラ３００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ４００を完了する（Ｓ４２０Ｈ）。
【０１１９】
Ｓ４０５の判断の結果、タスクｙが既に高性能プロセッサ２で稼働中で、さらに低電力プロセッサ３に割り付けられた場合は、高性能プロセッサ用スケジューラ３００に駆動先タスクｙの一時停止を指示し、停止するまで待機する（Ｓ４１５ＨＬ）。高性能プロセッサ２でタスクｙが停止した後、低電力プロセッサ用タスクスケジューラ４００に駆動先タスクｙの登録を行って、タスク割り付け処理Ｓ４００を完了する（Ｓ４２０Ｌ）。
【０１２０】
このように、駆動先タスクが単一のコンテキストで構成されるタスクであり、且つ、既に駆動先タスクが稼働中であった場合には、駆動先タスクのプライオリティ・電力状況・負荷状況に応じて高性能プロセッサ側もしくは低電力プロセッサ側から、他の側にタスクを移動させる（Ｓ４１５ＬＨあるいはＳ４１５ＨＬ）。
【０１２１】
これにより、単一コンテキストのタスクのプライオリティ変更が生じた場合でも適切な割り付けが可能となる。低電力プロセッサで処理していたタスクを、高プライオリティの要求元タスクからの同期要求により、高性能プロセッサに移すこと、あるいは、高性能プロセッサで処理していたタスクを、システム状態の変化などにより低電力プロセッサに移すことで、より適切なタスク割り付けを行うことが出来る。
【０１２２】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１２３】
１  主記憶装置
２  高性能プロセッサ
３  低電力プロセッサ
４  電力供給コントローラ
５  割り込みコントローラ
５１  割り込み通知先テーブル
６  ＬＣＤコントローラ
７  ＬＣＤ
８  タッチパネル
９  タイマ
１０  データ処理装置
１００  マルチプロセッサ向けオペレーティングシステム（ＯＳ）
１０１  実行プログラム（ソフトウェア）
１０２  ＧＵＩ処理アプリケーション
１０３  汎用アプリケーション
１０４  ＧＵＩ処理タスク
１０５  タイマ同期処理タスク
１０６  負荷状況監視・報告機構
１０７  システム電源状態監視・報告機構
２００  プライオリティ承継型同期・スケジューラ機構
２１０  同期機構
２１１  同期機構内管理テーブル
２１２＿１〜２１２＿ｎ  同期構造体
２１３  タスクプライオリティ管理テーブル
２１４＿１〜２１４＿ｍ  タスクプライオリティ
２２０  タスク割り付け機構
２２１  タスク割り付け機構内管理テーブル
２３０  駆動要求元承継機構
３００  高性能プロセッサ用スケジューラ
４００  低電力プロセッサ用スケジューラ
５００  割り込み処理
５０１  ユーザ入力割り込み処理
５０２  タイマ割り込み処理
６００  ＬＣＤ出力処理タスク
７００  省電力制御機構
８００  サブプロセスグループ管理ガバナー
Ｓ１００  同期機構２１０による同期処理
Ｓ１０１〜Ｓ１０４  同期処理Ｓ１００内の各ステップ
Ｓ２００  タスク割り付け機構２２０によるタスク割り付け処理
Ｓ２０１〜Ｓ２０３，Ｓ２１０，Ｓ２２０Ｈ，Ｓ２２０Ｌ  タスク割り付け処理Ｓ２００内の各ステップ
Ｓ３００  駆動要求元継承機構２３０による駆動要求元継承処理
Ｓ３０１〜Ｓ３０３  駆動要求元継承処理Ｓ３００内の各ステップ
Ｓ４００  実施形態４に係るタスク割り付け機構２２０によるタスク割り付け処理
Ｓ４０１〜Ｓ４０５，Ｓ４１０，Ｓ４１５ＨＬ，Ｓ４１５ＬＨ，Ｓ４２０Ｈ，Ｓ４２０Ｌ  タスク割り付け処理Ｓ４００内の各ステップ
【図１】
2015138323.tif 000003
【図２】
2015138323.tif 000004
【図３】
2015138323.tif 000005
【図４】
2015138323.tif 000006
【図５】
2015138323.tif 000007
【図６】
2015138323.tif 000008
【図７】
2015138323.tif 000009
【図８】
2015138323.tif 000010
【図９】
2015138323.tif 000011
【図１０】
2015138323.tif 000012