(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記方法は、
第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサ上で第1のコードを実行するステップであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされる、ステップと、
前記オペレーティングシステムによって、前記第1のコードを実行する間に、オペレーティングシステムイベントを実行するステップであって、前記オペレーティングシステムは、前記第1のプロセッサおよび第2のプロセッサの上で同時に実行可能であり、前記第2のプロセッサは、第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される、ステップと、
前記オペレーティングシステムによって、前記オペレーティングシステムイベントを実行するときに、前記第1のコードの実行を停止するとともに、前記第2のプロセッサ上で前記オペレーティングシステムイベントを取り扱うための第2のコードの実行を始動するステップであって、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、ステップと、
前記オペレーティングシステムによって、前記オペレーティングシステムイベントを取り扱う前記第2のコードの実行が完了するときに、前記第2のコードを停止するとともに前記第1のプロセッサ上で前記第1のコードの実行を再開するステップであって、前記第1のテーブルエントリと前記第2のテーブルエントリは前記共有データ構造内の第1の位置特定識別子と第2の位置特定識別子のそれぞれに対応する、ステップと
を含み、
前記第1の位置特定識別子と前記第2の位置特定識別子とは異なる、方法。
【請求項２】
前記第1のプロセッサと前記第2のプロセッサの各々は、前記共有データ構造を備える同じコヒーレントメモリにアクセスするように構成され、前記第1のプロセッサおよび前記第2のプロセッサはモバイルコンピューティングデバイスに一体化される、請求項1に記載の方法。
【請求項３】
前記共有データ構造の共通の仮想アドレス空間は、
前記第1のプロセッサ上で実行するようにコンパイルされた機能の第1のバージョンに対応する第1の機能テーブルであって、前記機能の前記第1のバージョンは前記第1のコードを用いて表される、第1の機能テーブルと、
前記第2のプロセッサ上で実行するようにコンパイルされた前記機能の第2のバージョンに対応する第2の機能テーブルであって、前記機能の前記第2のバージョンは前記第2のコードを用いて表される、第2の機能テーブルと
を備える、請求項1または2に記載の方法。
【請求項４】
前記第1のプロセッサおよび前記第2のプロセッサは、プロセッサ間メッセージ伝達、共有メモリ、アプリケーションプログラミングインターフェース(API)、またはこれらの任意の組合せを介して互いに通信するように構成される、請求項1〜3のいずれか一項に記載の方法。
【請求項５】
前記第1のプロセッサは複数のハードウェアスレッドを有するデジタル信号プロセッサ(DSP)を備え、前記第2のプロセッサはマルチコア中央処理ユニット(CPU)を備える、請求項1〜4のいずれか一項に記載の方法。
【請求項６】
前記オペレーティングシステムイベントは、ページフォールト、トラップ、システムフォールト、システムリクエスト、ハードウェアエラー、アドレスエラー、許可違反、またはこれらの任意の組合せを備える、請求項1〜5のいずれか一項に記載の方法。
【請求項７】
前記オペレーティングシステムイベントは、実行の流れをオペレーティングシステムのユーザモードから前記オペレーティングシステムのカーネルモードに遷移させる、請求項1〜6のいずれか一項に記載の方法。
【請求項８】
複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記方法は、
第1の命令セットアーキテクチャを有する第1のプロセッサおよび第2の異なる命令セットアーキテクチャを有する第2のプロセッサ上で同時に実行可能なオペレーティングシステムのスケジューラによって、前記第1のプロセッサまたは前記第2のプロセッサ上での実行のためにタスクをスケジュール設定させる要求を受け取るステップであって、前記第1のプロセッサは仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成され、前記第1のテーブルエントリは前記仮想アドレスにマッピングされ、前記第2のプロセッサは前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成され、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、受け取るステップと、
前記要求および、前記タスクが前記第1のプロセッサ上の前記第1の命令セットアーキテクチャを用いた実行のために利用可能でありかつ前記第2のプロセッサ上の前記第2の命令セットアーキテクチャを用いた実行のために利用可能であると前記スケジューラが判定したことに応答して、前記スケジューラによって、少なくとも1つの選択基準に基づいて前記第1のプロセッサを選択して前記第1のプロセッサ上で前記タスクをスケジュール設定するステップと、
前記スケジューラによって、前記タスクの実行の間に、前記第1のプロセッサを使用する他のタスクのために、前記タスクの実行を前記第1のプロセッサから前記第2のプロセッサに切り替えるステップと
を含む、方法。
【請求項９】
前記少なくとも1つの選択基準は、前記タスクと関連付けられた最低パワー使用を備える、請求項8に記載の方法。
【請求項１０】
前記少なくとも1つの選択基準は、最小負荷のプロセッサ、前記タスクのタイプ、前記タスクと関連付けられた最低パワー使用、またはこれらの任意の組合せを備え、前記タスクの実行を切り替えるステップは、
前記第1のプロセッサからのシステムコールを始動するステップと、
前記タスクを前記第1のプロセッサのスケジュールから除去するステップと、
前記タスクを前記第2のプロセッサのスケジュールに追加するステップと、
前記第2のプロセッサ上の前記システムコールから復帰するステップと
を含む、請求項8または9に記載の方法。
【請求項１１】
複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行するための装置であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記装置は、
第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサと、
第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される第2のプロセッサと、
前記第1のプロセッサおよび前記第2のプロセッサの上で同時に実行可能な前記オペレーティングシステムの少なくとも一部分を記憶するメモリであって、前記オペレーティングシステムは、
前記第1のプロセッサ上で第1のコードを実行することであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされる、実行することと、
前記第1のコードを実行する間に、オペレーティングシステムイベントを実行することと、
前記オペレーティングシステムイベントを実行するときに、前記第1のコードの実行を停止するとともに、前記第2のプロセッサ上で前記オペレーティングシステムイベントを取り扱うための第2のコードの実行を始動することであって、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、始動することと、
前記オペレーティングシステムイベントを取り扱う前記第2のコードの実行が完了するときに、前記第2のコードを停止するとともに前記第1のプロセッサ上で前記第1のコードの実行を再開することであって、前記第1のテーブルエントリと前記第2のテーブルエントリは前記共有データ構造内の第1の位置特定識別子と第2の位置特定識別子のそれぞれに対応する、停止かつ再開することと
を行う、メモリと
を備え、
前記第1の位置特定識別子と前記第2の位置特定識別子とは異なる、装置。
【請求項１２】
前記第1のテーブルエントリと前記第2のテーブルエントリは異なり、
前記第1のプロセッサおよび前記第2のプロセッサはモバイルコンピューティングデバイスに一体化される、請求項11に記載の装置。
【請求項１３】
複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行するための装置であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記装置は、
第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサと、
第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される第2のプロセッサと、
前記第1のプロセッサおよび前記第2のプロセッサの上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するメモリであって、前記オペレーティングシステムは、
前記オペレーティングシステムのスケジューラにおいて、前記第1のプロセッサまたは前記第2のプロセッサ上での実行のためにタスクをスケジュール設定させる要求を受け取ることであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされ、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、受け取ることと、
前記要求および、前記タスクが前記第1のプロセッサ上の前記第1の命令セットアーキテクチャを用いた実行のために利用可能でありかつ前記第2のプロセッサ上の前記第2の命令セットアーキテクチャを用いた実行のために利用可能であると前記スケジューラが判定したことに応答して、少なくとも1つの選択基準に基づいて前記第1のプロセッサを選択して前記第1のプロセッサ上で前記タスクをスケジュール設定することと、
前記タスクの実行の間に、前記第1のプロセッサを使用する他のタスクのために、前記タスクの実行を前記第1のプロセッサから前記第2のプロセッサに切り替えることと
を備える、メモリと
を備える、装置。
【請求項１４】
オペレーティングシステムの単一のインスタンスを備える非一時的コンピュータ可読記録媒体であって、
前記オペレーティングシステムの前記単一のインスタンスは、第1のプロセッサおよび第2のプロセッサを備える電子デバイスで実行されるときに、前記プロセッサに請求項1〜10のいずれか一項に記載の方法を実施させる、非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2013年2月26日に出願された参照によりその内容の全体を本明細書に明示的に組み込むものとする本願の所有者が所有する米国非仮特許出願第13/777,314号からの優先権を主張するものである。
【０００２】
本開示は一般的には、マルチプロセッサデバイスでのオペレーティングシステムの実行に関する。
【背景技術】
【０００３】
技術の進歩によって、コンピューティングデバイスはより小型でかつより強力になっている。たとえば、小型で、軽量でかつ、ユーザにより持ち運びが容易なポータブルワイヤレス電話機、携帯情報端末(PDA)、タブレットコンピュータ、ポケットベルデバイスなどのワイヤレスコンピューティングデバイスを含む多種多様なポータブルパーソナルコンピューティングデバイスが目下存在している。このような多くのコンピューティングデバイスは、この中に一体化させた他のデバイスを含む。たとえばワイヤレス電話機はまた、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダおよびオーディオファイルプレーヤを含むことが可能である。さらにこのようなコンピューティングデバイスは、インターネットへのアクセスに使用可能なウェブブラウザアプリケーションやスチルカメラやビデオカメラを利用するとともにマルチメディア再生の機能性を提供するマルチメディアアプリケーションなどのソフトウェアアプリケーションを含む実行可能命令を処理することが可能である。このためこれらのデバイスは、デスクトップコンピュータなどのより大型のデバイスによって実行されるのが典型的であるような機能を実行することが可能である。
【０００４】
いくつかの電子デバイスは、複数のプロセッサを含むことがある。たとえばモバイルフォンは、中央処理ユニット(CPU)(時に、アプリケーションプロセッサとも呼ばれる)と、デジタル信号プロセッサ(DSP)と、を含むことがある。各プロセッサは、ある種の計算タスクを実行するために他のプロセッサと比べてより適していることがある。たとえば、主プロセッサの役割をし得るとともにモバイルフォンオペレーティングシステムを実行し得るCPUは、ウェブブラウザや表計算コードなどの「制御コード」の実行についてより高効率であることがある。他方DSPは、信号処理や他の数学集約的な機能を実行する際にCPUと比べてより高効率であることがある。
【０００５】
異なるプロセッサは、異なる作業負荷向けに最適化されることがあり、また異なるアーキテクチャ(たとえば、命令セット)を有することがある。たとえば電話機は、第1のアーキテクチャに従って実装されたCPUと、第2のアーキテクチャに従って実装されたDSPと、を含むことがある。異なるプロセッサが異なるアーキテクチャを有するため、各プロセッサはそれ自体のオペレーティングシステムを実行することがある。これらのプロセッサ上で同じオペレーティングシステムが実行される場合であっても、各プロセッサはそれ自体のオペレーティングシステムインスタンスを実行する別々のマシンの役割をする。アーキテクチャの違いのために、この2つのオペレーティングシステムインスタンスはデータを共有して処理タスクを互いに担い合うことが不可能なことがある。さらにメモリは各環境から割り当てられており、共有のプールから割り当てられていない。
【０００６】
モバイルアプリケーションがより複雑になるに従って、ある種のアプリケーションまたはそのスレッドは、CPU実行またはDSP実行についてより適切であることがある。しかし、CPUとDSPは異なるオペレーティングシステムを実行するため、電話機がアプリケーション(および、その各スレッド)をCPU上でだけまたはDSP上でだけ実行することを強いられることがある。その結果モバイルアプリケーションは、従来ではCPU向けに開発されており、DSPなどの利用可能な他のプロセッサの処理能力の活用に取り組んでいない。
【０００７】
パーソナルコンピューティング分野では、いくつかのソフトウェアベンダーが「ユニバーサル」バイナリ(「ファット(fat)」バイナリとも呼ばれる)を提供することによって異なるコンピュータでの異なるアーキテクチャの使用に対処するように取り組んでいる。一般にユニバーサルバイナリは、同じソフトウェアについての複数のアーキテクチャの各々ごとの異なるバージョンを含む。ある特定のコンピュータにおけるユニバーサルバイナリのインストールまたは実行の間に、当該コンピュータのアーキテクチャに基づいて適切なバージョンのソフトウェアが特定されて、インストールまたは実行される。しかし、各コンピュータ上に存在するアーキテクチャは1つだけであるため、ユニバーサルバイナリは異なるアーキテクチャを有するプロセッサを用いて同じソフトウェアインスタンスを同時に実行するための方法を提供していない。さらに、プロセッサ間で共有されるデータ構造を実装しかつ処理することは困難なことがある。
【発明の概要】
【課題を解決するための手段】
【０００８】
異なるアーキテクチャを有する複数のプロセッサ上でソフトウェア(たとえば、オペレーティングシステム)の同じインスタンスを同時に実行するシステムおよび方法を開示する。たとえば本開示に基づけば、CPUとDSPが異なる命令セットアーキテクチャを有する場合であっても、ゲームに関するグラフィックおよびユーザインターフェース(UI)スレッドがモバイルフォンのCPU上で実行される一方、ゲームに関するマルチメディア処理スレッドがモバイルフォンのDSP上で実行されることがある。記載した技法によればCPUコードとDSPコードとが、対称型マルチプロセッシング(SMP)マシン上にあるかのようにして存在するように見せ得る。したがって、データ構造および通信プリミティブが共有されることがあり、また異種のアーキテクチャにわたるマルチスレッドが利用されることがある。
【０００９】
第1の実装形態によれば、複数のバージョンのオペレーティングシステム機能(たとえば、カーネルコード)が、複数のプロセッサへのアクセスを有する単一のオペレーティングシステムインスタンス内に設けられることがある。たとえばオペレーティングシステムは1つまたは複数の機能の各々について、CPUの命令セットを使用して実装される第1のバージョンとDSPの命令セットを使用して実装される第2のバージョンとへのアクセスを有することがある。両バージョンの機能がランタイム時に利用可能となるため、アプリケーション開発者には利用可能なアーキテクチャの1つまたは複数を実行するようなアプリケーション(および、その個々のスレッドまたは一部)を設計するための機会が与えられ得ることが理解されよう。
【００１０】
さらに、オペレーティングシステムのスケジューラは、特定のコードがCPUによって実行されるように意図されたものかまたはDSPによって実行されるように意図されたものか(または、実行されるべきかどうか)を判定するように構成されることがある。メモリ(たとえば、仮想および/または物理的アドレス空間)とカーネルデータ構造とは、プロセッサおよびその上で実行されるコードによって共有されることがある。一実装形態では、オペレーティングシステムに対するDSP要求がCPUに伝えられた後に処理結果がDSPに戻すように送られること、あるいはこの逆となることがある。さらに、同じタスクの異なる部分(すなわち、ソフトウェアスレッド)は異なるプロセッサによって実行されることがある。
【００１１】
第2の実装形態によれば、DSPコードは「リモートの」オペレーティングシステム環境を稼働させることがある。DSPにおいて発生するオペレーティングシステムイベント(たとえば、ページフォールト、例外、システムリクエスト、トラップ、その他)がCPUによって取り扱われることがある。したがって、タスクがDSP環境で稼働するように見えている場合であっても、実際にはオペレーティングシステムリクエストがCPU環境によって取り扱われていることがある。
【００１２】
ある特定の実施形態では、方法は第1のプロセッサ(たとえば、DSP)上で第1のコードを実行するステップを含む。本方法はさらに、第1のコードを実行する間にオペレーティングシステムイベントを実行するステップを含む。本方法はさらに、オペレーティングシステムイベントを実行するにあたり、第1のコードの実行を停止するとともに第2のプロセッサ(たとえば、CPU)上でオペレーティングシステムイベントを取り扱うための第2のコードの実行を始動するステップを含む。本方法は、オペレーティングシステムイベントを取り扱う第2のコードの実行の完了にあたり、第2のコードを停止するとともに、第1のプロセッサ(たとえば、DSP)上で第1のコードの実行を再開するステップを含む。
【００１３】
別の特定の実施形態では、装置は第1の命令セットを有する第1のプロセッサを含む。本装置はさらに、第1の命令セットと異なる第2の命令セットを有する第2のプロセッサを含む。本装置はさらに、第1のプロセッサおよび第2のプロセッサの上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶しているメモリを含む。
【００１４】
別の特定の実施形態では、方法は、オペレーティングシステムのスケジューラにおいて、実行のためにタスクをスケジュール設定させる要求を受け取るステップを含む。このオペレーティングシステムは、第1のアーキテクチャを有する第1のプロセッサおよび第2のアーキテクチャを有する第2のプロセッサ上で同時に実行可能である。本方法はさらに、そのタスクが第1のプロセッサ上の第1のアーキテクチャを用いたかつ第2のプロセッサ上の第2のアーキテクチャを用いた実行のために利用可能であるとの判定に応答して、少なくとも1つの選択基準に基づいて第1のプロセッサ上のタスクをスケジュール設定するステップを含む。本方法はさらに、タスクの実行の間に、タスクの実行を第1のプロセッサから第2のプロセッサに切り替えるステップを含む。
【００１５】
別の特定の実施形態では、装置は第1の命令セットと関連付けされた命令を処理するための第1の手段を含む。本装置はさらに、第2の命令セットと関連付けされた命令を処理するための第2の手段を含む。本装置はさらに、処理するための第1の手段および処理するための第2の手段上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するための手段を含む。
【００１６】
別の特定の実施形態では、非一時的コンピュータ可読記録媒体はオペレーティングシステムの単一のインスタンスを含む。オペレーティングシステムのこの単一のインスタンスは、第1のプロセッサおよび第2のプロセッサを含んだ電子デバイスで実行されたときに、この第1のプロセッサおよび第2のプロセッサ上でのオペレーティングシステムの同時実行をさせる命令を含む。第1のプロセッサは第1の命令セットアーキテクチャと関連付けされており、また第2のプロセッサは第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けされている。
【００１７】
別の特定の実施形態では、装置は第1の命令セットアーキテクチャと関連付けされた第1のプロセッサに対してかつ第2の命令セットアーキテクチャと関連付けされた第2のプロセッサに対してアクセス可能なメモリを含む。このメモリは、少なくとも1つのデータ構造を記憶している。このデータ構造は、第1の命令セットアーキテクチャ上で実行するようにコンパイルされた第1の機能(function)に関する第1の位置特定識別子を含む。このデータ構造はさらに、第2の命令セットアーキテクチャ上で実行するようにコンパイルされた第2の機能に関する第2の位置特定識別子を含む。
【００１８】
開示した実施形態のうちの少なくとも1つによって提供される特定の利点の1つは、オペレーティングシステムの単一のインスタンスとそのオペレーティングシステムと関連付けされたアプリケーション/スレッドとを、異種のアーキテクチャを有する複数のプロセッサ上で同時に実行する能力である。たとえばオペレーティングシステムコードおよび/またはアプリケーションコードは、選択基準(たとえば、当該タイプのコードを実行するのにどのプロセッサが最も負荷が小さいか、どのプロセッサが最も適しているか、その他)に基づいて、複数の利用可能プロセッサのうちのある特定のプロセッサ上で実行するようにスケジュール設定されることがある。開示した実施形態のうちの少なくとも1つによって提供される別の利点は、サードパーティアプリケーションについては従来では使用されてないプロセッサのコンピューティング能力(たとえば、DSP)の活用が可能なアプリケーションをアプリケーション開発者が開発できる能力である。本開示の他の態様、利点および特徴は、以下の図面の簡単な説明、発明を実施するための形態および特許請求の範囲の部分を含む本出願全体を吟味することによって明らかとなろう。
【図面の簡単な説明】
【００１９】
【図１】異なるアーキテクチャを有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの実行をサポートするように動作可能なシステムのある特定の実施形態を例証するための図である。
【図２】図1のオペレーティングシステムデータ構造のある特定の実施形態を例証するための図である。
【図３】オペレーティングシステムの単一のインスタンスを異なるアーキテクチャを有する複数のプロセッサ上で実行する方法のある特定の実施形態を例証するための流れ図である。
【図４】オペレーティングシステムの単一のインスタンスを異なるアーキテクチャを有する複数のプロセッサ上で実行する方法の別の特定の実施形態を例証するための流れ図である。
【図５】異なるアーキテクチャを有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの実行をサポートするように動作可能な構成要素を含むワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００２０】
図1は、異なるアーキテクチャ(または、「命令セットアーキテクチャ(ISA)」または「命令セット」と呼ばれる)を有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの同時実行をサポートするように動作可能なシステム100の例証の一実施形態の図である。たとえば図1のシステム100では、オペレーティングシステム(O/S)104およびこれに関連付けされたコンポーネント/アプリケーションが第1のISAを有する第1のプロセッサ110および第2のISAを有する第2のプロセッサ112上で同時に実行されることがある。図1には2つのプロセッサを示しているが、これは単に例証のためであることに留意すべきである。本明細書に記載した技法は、3つ以上のプロセッサを含むシステムで使用されることがある。
【００２１】
ある特定の実施形態では、プロセッサ110、112のうちの少なくとも1つを、CPU命令セットと関連付けされた命令を実行するように構成されたCPUなどの中央処理ユニット(CPU)とすることがある。たとえばCPUは、複数の実行コア(たとえば、デュアルコアCPU、クァッドコアCPU、その他)を有することがある。マルチプロセッサ電子デバイス(たとえば、モバイルフォンなどのモバイルコンピューティングデバイス)ではそのCPUは、入力/出力(I/O)コード、ユーザインターフェース(U/I)コード、ブラウザコード、表計算コード、その他などの制御コードを実行する役割をすることおよび/または制御コードを実行するのにより適することがある。たとえば、モバイルフォンがU/Iタスク(または、スレッド)とマルチメディア処理タスク(または、スレッド)の両方を含んだゲームを実行するときにそのCPUは、U/Iタスクを実行するときの方がマルチメディア処理タスクを実行するときと比べてより効率的に実行することがある。
【００２２】
ある特定の実施形態では、プロセッサ110、112のうちの少なくとも1つを、DSP命令セットと関連付けされた命令を実行するように構成されたプロセッサなどのデジタル信号プロセッサ(DSP)とすることがある。たとえばDSPは、複数のハードウェアスレッドを有することがあり、またマルチスレッドとリアルタイム処理のダイナミック交互配置をサポートすることがある。マルチプロセッサ電子デバイス(たとえば、モバイルフォン)ではDSPは、ワイヤレス信号処理機能および数学集約的なコードを実行する役割をすることおよび/または実行するのにより適することがある。たとえばモバイルフォンがU/Iタスク(または、スレッド)とマルチメディア処理タスク(または、スレッド)の両方を含んだゲームを実行するときにそのDSPは、マルチメディア処理タスクを実行するときの方がU/Iタスクを実行するときと比べてより効率的に実行することがある。
【００２３】
記載した技法と連携して様々なプロセッサの組合せを使用し得ることに留意すべきである。一例としてシステム100は、同じタイプであるが異なる命令セットを有する複数のプロセッサを含むことがある。例証のために、プロセッサ110、112の両方をCPUとするが、CPUのISAは異なることがある。別法として、プロセッサ110、112の両方をDSPとするが、DSPのISAは異なることがある。別の例では、プロセッサ110、112のうちの一方をCPUとすることがあり、かつプロセッサ110、112のうちのもう一方をDSPとすることがある。CPUやDSP以外のプロセッサをシステム100に存在させることもある。他のタイプのプロセッサには、ネットワーク処理ユニット(NPU)、グラフィック処理ユニット(GPU)、その他(ただし、これらに限らない)を含むことがある。さらに、本明細書の説明ではCPUタイプのアーキテクチャおよびDSPタイプのアーキテクチャに言及しているが、これは単に例示のためであることにも留意されたい。記載した技法と連携して様々なアーキテクチャ/命令セットが使用されることがある。異なるアーキテクチャが異なる機能、異なるオペコード、共通の機能に関する異なるタイプおよび異なる数のアーギュメント、その他をサポートすることがある。
【００２４】
システム100は、データ記憶能力を含むことがある。データ記憶は、揮発性メモリ(たとえば、ランダムアクセスメモリ(RAM)、レジスタベースのメモリまたはキャッシュベースのメモリ)および/または不揮発性メモリ(たとえば、ハードディスク)を含むことがある。図1の実施形態では、システム100はメモリ116を含む。本明細書でさらに記載するようにメモリ116は、プロセッサ110、112にわたるオペレーティングシステム104の同時実行をサポートするために少なくとも1つのオペレーティングシステムデータ構造118を記憶する「コヒーレント」メモリとすることがある。たとえばオペレーティングシステムデータ構造118は、図2を参照しながらさらに説明するようなロック(lock)、スケジュール設定キューおよび機能ポインタのテーブルを含むことがある。
【００２５】
オペレーティングシステム104は一般に、システム100においてシステムレベル(たとえば、カーネルレベル)機能を実行するように動作可能とし得る。たとえばオペレーティングシステム104は、ブロッキング/アンブロッキングを実行することがあり、またハードウェアリソース(たとえば、プロセッサ110、112やメモリ116)に関するアブストラクションおよびハードウェアリソースへの多重化アクセスを提供することがある。システムレベルの機能性の提供に加えてオペレーティングシステム104は、1つまたは複数のアプリケーション(たとえば、ユーザモードアプリケーション)の実行をサポートすることがある。たとえばアプリケーション102は、ユーザや管理者によってシステム100にインストールされたサードパーティアプリケーションとすることがある。
【００２６】
オペレーティングシステム104は、オペレーティングシステム機能を実行するために1つまたは複数のモジュールまたは論理ブロックを含むことがある。たとえばオペレーティングシステム104は、スケジューラ106とイベントハンドラ107とを含むことがある。スケジューラ106はプロセッサ110、112におけるタスクの実行をスケジュール設定するように構成されることがあり、またイベントハンドラ107はオペレーティングシステムイベントを取り扱う(たとえば、これに応答する)ように構成されることがある。ある特定の実施形態ではオペレーティングシステム104は、プロセッサ110、112のいずれかがプロセッサ110、112のもう一方が使用中または依拠している可能性があるオペレーティングシステム状態(たとえば、メモリ116のデータ)を変更することを防止する安全機構または制御を含むことがある。
【００２７】
ある特定のタスク114を実行する要求の(たとえば、オペレーティングシステム104やアプリケーション102からの)受け取りに応答してスケジューラ106は、この特定のタスク114が第1のプロセッサ110の第1の命令セットをサポートするか、第2のプロセッサ112の第2の命令セットをサポートするか、あるいはこの両方をサポートするか(たとえば、これを用いた実行のために利用可能であるかどうか)を判定することがある。ある特定の実施形態では、タスクがある特定の命令セットをサポートするかどうかの判定は、システム100がこの特定の命令セットの命令を使用して表現されたタスク(および、関連する任意のサブルーチン、オペレーティングシステムコール、その他)に対応するコードへのアクセスを有するかどうかの判定を含む。要求されたタスク114が命令セットのうちの一方だけをサポートするとスケジューラ106が判定した場合、スケジューラ106は、対応するサポートされるプロセッサ110または112上での実行について要求されたタスク114をスケジュール設定することがある。
【００２８】
スケジューラ106によって要求されたタスク114が複数の命令セット/複数のプロセッサをサポートすると判定された場合、スケジューラ106は実行のためにタスク114をスケジュール設定する対象となるある特定のプロセッサを選択することがある。その上でのタスク114をスケジュール設定するある特定のプロセッサ110、112が選択されると、スケジューラ106は対応する命令セットを用いてタスクを開始するためにシステムコールを提供することがある。
【００２９】
ある特定の実施形態では、スケジューラ106は、この特定のプロセッサの選択にあたり選択基準108を使用することがある。選択基準108は、最小負荷のプロセッサの識別を含むことがある。たとえばスケジューラ106は、タスク114がその上でスケジュール設定されるプロセッサ110、112から最小負荷のものを選択し、負荷バランスを実現することがある。別法としてまたは追加として選択基準108には、タスクのタイプを含むことがある。たとえばスケジューラ106は、CPU上でU/Iタスクをスケジュール設定することがあり、またDSP上で数学集約的なタスクをスケジュール設定することがある。別法としてまたは追加として選択基準108には、タスク114と関連付けされた最低パワー使用の識別を含むことがある。たとえばスケジューラ106は、タスク114の実行中にパワーの消費が最小量となるプロセッサ110または112上でタスク114をスケジュール設定し、これによりシステム100でのパワー消費全体を低減することがある。スケジューラ106によって他の選択基準が使用されることもある。
【００３０】
ある特定の実施形態では、タスク114が第1のプロセッサ110の第1の命令セットと第2のプロセッサ112の第2の命令セットの両方をサポートするとき、スケジューラ106はプロセッサ110、112のうちの一方からもう一方にタスクの実行を切り替えるように構成されることがある。さらに、このような動的な切替えは、タスク114の実行の間でかつシステムのより高次のコンポーネント(たとえば、アプリケーション102)に対してトランスペアレントで実行されることがある。たとえばタスク114は、(たとえば、システムコールを用いて)120で示したように第1のプロセッサ110から第2のプロセッサ112に、またはこの逆に「移行する(migrated)」ことがある。このような移行は、少なくとも部分的に同じコヒーレントメモリ116およびこの上に記憶されたオペレーティングシステムデータ構造118へのアクセスを有する第1のプロセッサ110および第2のプロセッサ112によって可能とされることがある。複数の命令セットをサポートするタスクを動的に移行させる能力によって1つの命令セットだけをサポートするタスクのための処理リソースが開放され得ることが理解されよう。
【００３１】
上ではタスクに関するスケジュール設定および移行について説明しているが、サブタスクに関するスケジュール設定および移行についても図1のシステム100で実行され得ることに留意すべきである。たとえば、ゲームに関するI/Oタスク/スレッド、マルチメディア処理タスク/スレッドおよびグラフィックタスク/スレッドが、CPU、DSPおよびGPUのそれぞれで同時にスケジュール設定されかつ実行されることがある。適切なプロセッサ上へのタスクのスケジュール設定によって、図1のシステム100における効率が上昇しかつパワー消費が低下することがある。したがって、システム100がモバイルフォンなどの電池駆動式デバイスに組み込まれたとき、システム100において性能および電池寿命の上昇が得られることがある。たとえばユーザは、ゲームをCPU上で単独に走らせている場合と比べてモバイルフォンの充電を要することなく自身のモバイルフォン上でより長くゲームをプレイ可能となることがある。
【００３２】
動作中において、オペレーティングシステム104、そのタスク(たとえば、タスク114)および/またはこれに関連付けされたアプリケーション(たとえば、アプリケーション102)は、プロセッサ110、112が異なるアーキテクチャを有する場合であってもプロセッサ110、112のうちの一方または両方の上で実行されることがある。たとえば、図1のシステム100での動作の第1の実施形態に従って、プロセッサ110、112のうちの一方が「主」プロセッサとなることがあり、またもう一方のプロセッサが「副」プロセッサとなることがある。このような実施形態では、副プロセッサからオペレーティングシステムへの要求が主プロセッサにわたることがあり、また処理結果が副プロセッサに送り返されることがある。
【００３３】
例証のために、主プロセッサをCPUとすることがあり、かつ副プロセッサをDSPとすることがある。DSPは、「リモートの」オペレーティングシステム環境を実行することがある。第1のコード(たとえば、DSP特有のコード)の実行の間にDSPは、オペレーティングシステムイベントを検出および/または実行することがある。オペレーティングシステムイベントは、実行の流れをオペレーティングシステムのユーザモードからオペレーティングシステムのカーネルモードへ切り替えさせるイベントとすることがある。オペレーティングシステムイベントの例には、ページフォールト、トラップ、システムフォールト、システムリクエスト(たとえば、ミューテックスやセマフォなどの同期オブジェクトと関連付けされる)、ハードウェアエラー(たとえば、バスエラー)、アドレスエラー、許可違反、その他(ただし、これらに限らない)が含まれる。DSPは、オペレーティングシステムイベントを取り扱うのにCPUに依拠することがある。たとえばオペレーティングシステムイベントを実行するにあたりDSPは、第1のコードの実行を停止することがあり、かつCPU上でオペレーティングシステムイベントを取り扱うように構成された第2のコードの実行を始動することがある。ある特定の実施形態では、CPUにおけるイベント取扱いコードの始動は、プロセッサ間メッセージ伝達を用いて、スケジューラ106によって、コヒーレントメモリ116を用いて、アプリケーションプログラミングインターフェース(API)を用いて、またはこれらの任意の組合せによって実行される。したがってプロセッサ110、112の各々は、コードの実行中および/または停止中にプロセッサ110、112のうちのもう一方と通信するように構成されることがある。CPUにおけるイベント取扱いコードは、オペレーティングシステムイベントを取り扱うことがあり、また任意の実行結果をDSPに提供することがある。イベント取扱いの完了にあたりイベントハンドラがCPUで停止されることがあり、またDSPコードがDSPで再開されることがある。
【００３４】
図1のシステム100での動作の第2の実施形態に従って、オペレーティングシステム104は複数のバージョンのオペレーティングシステムルーチン、モジュールおよび機能を含むことがある。たとえば、第1のプロセッサ110がCPUでありかつ第2のプロセッサ112がDSPであるとき、オペレーティングシステム104の単一のインスタンスは、1つまたは複数のルーチン、モジュールおよび機能について少なくとも2つのバージョン(CPUのISAにおける命令で表された第1のバージョンとDSPのISAにおける命令で表された第2のバージョン)を含むことがある。このような実施形態ではスケジューラ106は、プロセッサ110または112のいずれかの上でアプリケーション102(または、そのコンポーネント)を自由にスケジュール設定することがある、というのはオペレーティングシステム104がいずれのプロセッサを用いたアプリケーション102により出されるオペレーティングシステムコールにも応答する能力を有するためである。
【００３５】
図1のシステム100はしたがって、オペレーティングシステム104、そのコンポーネント、およびこれに関連付けされたアプリケーションの異なるアーキテクチャを有する複数のプロセッサ上での同時実行を可能にすることがある。これによって、図1のシステム100における効率が上昇しかつパワー消費が低下することがある。図1のシステム100はまた、従来ではサードパーティアプリケーション(たとえば、DSP)で使用されていないプロセッサの能力を活用するアプリケーションのアプリケーション開発者による開発を可能にすることがある。これによってアプリケーション開発者にとって図1のシステム100は、異なるアーキテクチャを有するプロセッサの間での動的なアプリケーションスケジュール設定やデータ共有をサポートしないシステムと比べてより魅力的となることがある。
【００３６】
図2は、図1のオペレーティングシステムデータ構造118に記憶され得るとともに全体を200で示した機能テーブルの特定の実施形態を例証するための図である。図1のオペレーティングシステムデータ構造118を参照しながら説明したように、図2のテーブルは複数の命令セットで利用可能な「正しい」バージョンの機能(すなわち、機能の実行を試みるプロセッサに対する命令セットとマッチングしたバージョンの機能)を識別するために使用されることがある。
【００３７】
共有データ構造によって共通のオペレーティングシステムを稼働させる際の困難の1つは、機能のアドレスを包含したデータ構造の処理であることがある。たとえば、第1の命令セットを有する第1のプロセッサと第2の命令セットを有する第2のプロセッサとが共通のオペレーティングシステムを有するとき、第1の命令セットと第2の命令セットの両方に実装された機能を利用可能とすることが必要となることがある。しかしこの機能は異なるアドレスに現れることがある。したがって、機能のアドレスを記憶するデータ構造(たとえば、「機能ポインタ」)は、そのアドレスがプロセッサの命令セットに応じて様々となり得るある特定のプロセッサ/命令セットについて「正しい」機能を指示できる必要がある。
【００３８】
記載した技法によれば、このようなデータ構造の処理に関する困難はインダイレクションのレベルを用いることによって軽減させ得る。たとえばメモリは、異なる命令セットアーキテクチャを有する複数のプロセッサにアクセス可能な共有データ構造を記憶することがある。データ構造は、第1の命令セットアーキテクチャ上で実行するようにコンパイルされた第1の機能に関する第1の位置特定識別子と、第2の命令セットアーキテクチャ上で実行するようにコンパイルされた第2の機能に関する第2の位置特定識別子と、を含むことがある。これらの位置特定識別子は、本明細書でさらに説明するような命令、オフセット、仮想アドレス、その他とすることがある。さらに第1の機能と第2の機能とを、同じオペレーティングシステム機能の異なるバージョンとすることがある。インダイレクションのレベルを導入することによって記載した技法は、同じハイレベル(たとえば、アプリケーションレベル)コードの複数のアーキテクチャ上での実行を可能とさせ得るので有利である。たとえばそのコードは、オペレーティングシステム機能「X」に対するコールを含むことがある。第1のアーキテクチャと関連付けされた第1のプロセッサ上で実行されたときに、「X」へのコールは第1のアーキテクチャに特有でありかつメモリ内の第1の物理的アドレスに位置する「X」の第1の実装形態に対してマッピングされることがある。第2のアーキテクチャと関連付けされた第2のプロセッサ上で実行されたときに、「X」への同じコールが第2のアーキテクチャに特有でありかつメモリ内の第2の物理的アドレスに位置する「X」の第2の実装形態に対してマッピングされることがある。
【００３９】
こうした「アーキテクチャ独立の」コード実行を実装する3つの実施形態について本明細書に記載している。図2では、3つのオペレーティングシステム機能(すなわち、「OSスケジュール」機能と、「OS読取り」機能と、「OS書込み」機能と)について示している。機能の各々の第1のバージョン(「proc1」)と機能の各々の第2のバージョン(「proc2」)とはメモリ202内の異なる位置で利用可能である。
【００４０】
第1の実施形態(図2では、「オプション1」と名付ける)では、テーブル210、212は「正しい」機能に実行をリダイレクトさせる短い(たとえば、一定長の)命令シーケンスを含むことがある。第1のテーブル210は第1のプロセッサ上のある特定の仮想アドレスにマッピングされることがあり、また第2のテーブル212は第2のプロセッサ上の同じ仮想アドレスにマッピングされることがある。しかしテーブル210、212は、プロセッサアーキテクチャに応じて異なる物理的アドレスに至る(たとえば、分岐するまたはジャンプする)ことがある。各プロセッサの仮想アドレスから物理的アドレスへの変換によって同じ仮想アドレスにおける「正しい」テーブルのマッピングが可能となり得る。機能に対する間接的な参照は、実際の機能ではなくテーブルエントリに向けられている。
【００４１】
たとえば図2に示したように、プロセッサ1が「分岐」命令をサポートすることがあり、またプロセッサ2が「ジャンプ」命令をサポートすることがある。プロセッサ1に関するテーブル210は、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第1のバージョンについての分岐命令シーケンスを含むことがある。プロセッサ2に関するテーブル212は、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第2のバージョンについてのジャンプ命令シーケンスを含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。ハイレベルコードから見ると、どのプロセッサがハイレベルコードを実行しているかによらず機能マッピングテーブルについて同じ仮想アドレスが使用される。ハイレベルコードがプロセッサ1上で実行される場合、テーブル210がアクセスを受けることがあり、また「OSスケジュール」機能の「proc1」バージョンへの分岐が実行されることがある。すなわち、ハイレベルコードがプロセッサ1上で実行される場合、プロセッサ1についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ1に特有の仮想対物理的アドレスのマッピングテーブルを介して)テーブル210の物理的アドレスにマッピングされるため、テーブル212ではなくテーブル210が「選択される」ことがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル212がアクセスを受けることがあり、また「OSスケジュール」機能の「proc2」バージョンへのジャンプが実行されることがある。すなわち、ハイレベルコードがプロセッサ2上で実行される場合、プロセッサ2についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ2に特有の仮想対物理的アドレスマッピングテーブルを介して)テーブル212の物理的アドレスにマッピングされるため、テーブル210ではなくテーブル212が「選択される」ことがある。したがって第1の実施形態は、位置独立性のコードに関する「プロシージャリンクテーブル」と同様となることがある。
【００４２】
第2の実施形態(図2では、「オプション2」と名付ける)では、テーブル220、222は、各機能のアドレスを含むことがある。ある機能へのアドレスを直接記憶するのではなく、(たとえば、ハイレベルコードによって使用される)データ構造は、テーブル220、222内にアドレスまたは索引(index)を包含することがある。テーブル220、222は、第1および第2のプロセッサアーキテクチャのそれぞれに関する機能のアドレスを包含することがある。各プロセッサの仮想アドレス対物理的アドレスの変換によって、同じ仮想アドレスにおける「正しい」テーブル220、222のマッピングが可能となり得る。
【００４３】
たとえば図2に示したように、プロセッサ1に関する機能テーブルは、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第1のバージョンに関するアドレス(たとえば、仮想アドレス)を含むことがある。プロセッサ2に関する機能テーブルは、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第2のバージョンに関するアドレス(たとえば、仮想アドレス)を含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。第1の実施形態を参照しながら上で説明したように、ハイレベルコードから見ると、どのプロセッサがハイレベルコードを実行しているかによらず機能マッピングテーブルについて同じ仮想アドレスが使用される。ハイレベルコードがプロセッサ1上で実行される場合、テーブル220がアクセスを受けることがあり、またテーブル220の第1のエントリから得られた「OSスケジュール」の「proc1」バージョンのアドレスが使用されることがある。すなわち、ハイレベルコードがプロセッサ1上で実行される場合、プロセッサ1についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ1に特有の仮想対物理的アドレスのマッピングテーブルを介して)テーブル220の物理的アドレスにマッピングされるため、テーブル222ではなくテーブル220が「選択される」ことがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル222がアクセスを受けることがあり、またテーブル220の第1のエントリから得られた「OSスケジュール」機能の「proc2」バージョンのアドレスが使用されることがある。すなわち、ハイレベルコードがプロセッサ2上で実行される場合、プロセッサ2についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ2に特有の仮想対物理的アドレスマッピングテーブルを介して)テーブル222の物理的アドレスにマッピングされるため、テーブル220ではなくテーブル222が「選択される」ことがある。したがって第2の実施形態は、位置独立性のコードに関する「グローバルオフセットテーブル」と同様となることがある。
【００４４】
第3の実施形態(図2では、「オプション3」と名付ける)では、単一のテーブル230は、第1と第2のプロセッサ命令セットの両方に実装される機能のアドレスを含むことがある。ある機能へのアドレスを直接記憶するのではなく、(たとえば、ハイレベルコードによって使用される)データ構造は、テーブル230内にアドレスまたは索引を包含することがある。2種類のテーブルではなく単一のテーブル230が使用されるため、テーブル230はプロセッサ命令セットアーキテクチャによってさらに索引付けされることがある。したがって、テーブル230内の検索によって機能/テーブル索引/オフセット、さらにはアーキテクチャ(たとえば、「proc1」または「proc2」)の両方が指定されることがある。テーブル230は図示したように、第1と第2のプロセッサアーキテクチャの両方に関する機能のアドレスを包含することがある。上に記載した第1および第2の実施形態と異なり単一のテーブル230が使用されるため、第3の実施形態では仮想アドレス対物理的アドレスのマッピングがプロセッサ間で同じに維持されることがあることが理解されよう。
【００４５】
たとえば、図2に示したように機能テーブルは、プロセッサ1のアーキテクチャとプロセッサ2のアーキテクチャの両方に、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」のバージョンに関するアドレスを含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。ハイレベルコードがプロセッサ1上で実行される場合、テーブル230に対する検索が、検索によって「OSスケジュール」機能と「proc1」アーキテクチャに関するオフセットが指定されるようにして実行されることがあり、また「OSスケジュール」の「proc1」バージョンについて得られたアドレスが使用されることがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル230に対する検索が、検索によって「OSスケジュール」機能と「proc2」アーキテクチャに関するオフセットが指定されるようにして実行されることがあり、また「OSスケジュール」機能の「proc2」バージョンについて得られたアドレスが使用されることがある。
【００４６】
第2および第3の実施形態では、機能へのポインタはまったく記憶されていないが、代わりにテーブルエントリ指示が記憶されているとともに、その機能に関するアドレスがコールサイトにおいて常時検索されることに留意すべきである。
【００４７】
動作中において、データ構造内の機能へのポインタは代わりに対応するテーブルエントリを指示することがある。オプション1では、テーブル内のエントリが命令/命令シーケンスであり、このため図2のテーブルで導入されたインダイレクションのレベルを伴わずに実施されるような同じ方式でポインタをコールすることが可能である。オプション2およびオプション3については、テーブルが読み取られることがあり、次いで指定のプロセッサに関する「正しい」機能アドレスが(たとえば、後続の分岐またはジャンプで使用するために)利用可能となることがある。
【００４８】
図2を参照しながら説明したようなオプションは組み合わせられ得ることに留意すべきである。たとえば図2に示した複数の実施形態があるシステム(たとえば、図1のシステム100)に同時に実装されることがある。例証のために、テーブル210および212を参照しながら説明したような「プロシージャリンクテーブル」の実施形態が、テーブル220および222を参照しながら説明したような「グローバルオフセットテーブル」の実施形態と連携して使用されることがある。プロセッサ1上で第1の時間にわたって機能がハイレベルコードでコールされると、このコールはテーブル210内のコードのセグメントを解決し、ここでこのコードのセグメントが適切なバージョンの機能に分岐するとともに、さらにテーブル220に対して分岐の到達先を追加する。機能への後続のハイレベルコールによって、テーブル220内のアドレスを到達先として使用するテーブル210の分岐命令が得られる。さらに、データ構造内の機能指示を、所与の命令セットに関する正しい機能のアドレスに変換する目的を果たす他の構造やプロシージャも使用され得ることに留意すべきである。
【００４９】
図3は、異なるアーキテクチャを有する複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法300のある特定の実施形態の例証のための流れ図である。図示した実施形態では方法300は、図1のシステム100によって実行されることがあり、また図2の機能およびテーブルの参照により説明され得る。
【００５０】
方法300は、302において第1のプロセッサ上で第1のコードを実行するステップを含むことがある。ある特定の実施形態ではその第1のプロセッサはマルチスレッド式DSPとすることがある。たとえば図1の第1のプロセッサ110は、図2の「OSスケジュール」、「OS読取り」または「OS書込み」機能などの第1のタスクに対応する第1のコードを実行することがある。
【００５１】
方法300はまた、304において第1のコードを実行する間に、実行の流れをユーザモードからカーネルモードに遷移させるオペレーティングシステムイベントを実行するステップを含むことがある。このオペレーティングシステムイベントは、ページフォールト、トラップ、システムフォールト、システムリクエスト、ハードウェアエラー、アドレスエラー、許可違反、その他とすることがある。たとえば第1のコードを実行する間に図1の第1のプロセッサ110はあるオペレーティングシステムイベントを実行することがある。
【００５２】
方法300はさらに、306においてオペレーティングシステムイベントを実行するにあたり、第1のコードの実行を停止するとともに第2のプロセッサ上で第2のコードの実行を始動するステップを含むことがある。第2のコードは、オペレーティングシステムイベントを取り扱うように構成されることがある。第2のプロセッサは、マルチコアCPUとすることがある。たとえばオペレーティングシステムイベントを実行するにあたり図1の第1のプロセッサ110は、第1のコードの実行を停止することがあり、かつ図1の第2のプロセッサ112上で第2のコードを実行させることがある。
【００５３】
方法300は、308においてオペレーティングシステムイベントを取り扱う第2のコードが完了するにあたり、第2のコードを停止するとともに第1のプロセッサ上で第1のコードの実行を再開するステップを含むことがある。たとえば第2のコードの実行が図1の第2のプロセッサ112によって停止されることがあり、かつ第1のコードの実行が図1の第1のプロセッサ110で再開されることがある。
【００５４】
図3の方法300はしたがって、「副」プロセッサによる「リモートの」オペレーティングシステム環境の実行を可能にするとともに、オペレーティングシステムイベントの取扱いは「主」プロセッサに依拠することがある。たとえば、コードがある特定のオペレーティングシステムを実行するCPU向けに記述されかつコンパイルされている場合であっても、そのコードはCPUと連携してこの特定のオペレーティングシステムを稼働しているDSP上で実行されることがあり、かつこのDSPはイベントの取扱いおよび他のオペレーティングシステムタスクについてはCPUに依拠することがある。DSP上で稼働するプロセスから見れば、CPU上で稼働していたとすれば利用可能であったはずのファシリティ/サービスを依然として利用可能とさせ得る。
【００５５】
ある特定の実施形態では、図3の方法300は、DSP、CPU、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組合せによって実装させ得る。一例として図3の方法300は図5に関連して説明するような命令を実行するプロセッサによって実行されることが可能である。
【００５６】
図4は、異なるアーキテクチャを有する複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法400の別の特定の実施形態を例証するための流れ図である。図示した実施形態では方法400は、図1のシステム100によって実行されることがあり、また図2の機能およびテーブルの参照により説明され得る。
【００５７】
方法400は、402でオペレーティングシステムのスケジューラにおいて、実行のためにタスクをスケジュール設定させる要求を受け取るステップを含むことがある。このオペレーティングシステムは、第1のアーキテクチャを有する第1のプロセッサおよび第2のアーキテクチャを有する第2のプロセッサ上で同時に実行可能である。たとえば図1においてスケジューラ106は、実行のためにタスク114をスケジュール設定する要求を受け取ることがある。
【００５８】
方法400はさらに、404においてそのタスクが複数の命令セットをサポートするかどうかを判定するステップを含むことがある。たとえば図1においてスケジューラ106は、タスク114が第1のプロセッサ110の第1の命令セットと第2のプロセッサ112の第2の命令セットの両方をサポートするかどうかを判定することがある。タスクが単一の命令セットをサポートするときに方法400は、406においてサポートされた命令セットを有するプロセッサ上でタスクをスケジュール設定しかつ開始させるステップを含むことがある。
【００５９】
タスクが複数の命令セットをサポートするときに方法400は、408においてサポートされたプロセッサのうちの1つの上でタスクをスケジュール設定するステップと、410においてスケジュール設定されたプロセッサの命令セットを用いてタスクを開始させるステップと、を含むことがある。スケジュール設定されたプロセッサは、選択基準(たとえば、最小負荷のプロセッサ、タスクのタイプ、タスクと関連付けされた最低パワー使用、その他)に基づいて選択されることがある。たとえば図1においてスケジューラ106は、選択基準108に基づいて第1のプロセッサ110上で実行するためにタスク114をスケジュール設定することがあり、また第1の命令セットを用いたタスク114を開始するためのシステムコールを発生させることがある。
【００６０】
方法400はさらに、412においてタスクの実行の間にタスクの実行を他のプロセッサにまた他の命令セットに切り替えるステップを含むことがある。たとえば図1において、第1のプロセッサ110上におけるタスク114の実行の間に、120に示したようにタスク114の実行が第2のプロセッサ112に切り替えられることがある。
【００６１】
図示した実施形態では、タスクの実行を切り替えるステップは、414において第1のプロセッサ上でタスクの実行を他の命令セットに切り替えるためのシステムコールを出すステップを含むことがある。416に進むと、第1のプロセッサ(すなわち、410で使用されたスケジュール設定されたプロセッサ)のスケジュールからタスクが除去されることがある。418に進むと、第2のプロセッサ(すなわち、他の命令セットと関連付けされた他のプロセッサ)のスケジュールにタスクが追加されることがある。420に続いて方法400は、第2の命令セットを有する第2のプロセッサ上のシステムコールから復帰するステップを含むことがある。
【００６２】
図4の方法400はしたがって、マルチISAシステムにおいて、このようなシステムの実行性能、リソース使用および/またはパワー消費を改善させ得る選択基準に従ったタスクの動的なスケジュール設定を可能とさせ得る。
【００６３】
ある特定の実施形態では、図4の方法400は、DSP、CPU、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組合せによって実装させ得る。一例として図4の方法400は、図5に関連して説明するような命令を実行するプロセッサによって実行させることが可能である。
【００６４】
図5を参照すると、電子デバイス500のブロック図を示している。ある特定の実施形態では電子デバイス500またはその構成要素は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、コンピューティングデバイス、またはこれらの任意の組合せの中に含まれることがある。
【００６５】
電子デバイス500は、メモリ532に結合されたCPU510およびDSP574を含む。CPU510は複数のコア(たとえば、第1のコア570および第2のコア572)を含むことがあり、またDSP574は複数のハードウェアスレッド(たとえば、第1のハードウェアスレッド576および第2のハードウェアスレッド578)を含むことがある。図5には2つのコアと2つのハードウェアスレッドを示しているが、コアおよび/またはハードウェアスレッドを異なる数だけ有する他の構成も使用し得ることに留意すべきである。
【００６６】
図5は、CPU510に対してかつディスプレイ528に対して結合されたディスプレイコントローラ526を含む。CPU510に対してかつDSP574に対して符号器/復号器(CODEC)534を結合させることがある。CODEC534にはスピーカ536およびマイクロフォン538を結合させることが可能である。図5はまた、DSP574に対してかつ(たとえば、無線周波数(RF)インターフェースを介して)アンテナ542に対してワイヤレスコントローラ540を結合させることが可能であることを示している。したがって図5の実施形態では、CPU510が表示機能を実行するために使用されることがあり、DSP574がワイヤレス信号処理機能を実行するために使用されることがあり、かつCPU510とDSP574の両方にオーディオI/O機能の実行を可能とさせることがある。
【００６７】
メモリ532は、実行可能命令556を含んだ有形で非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体とすることがある。たとえばメモリ532は、図1のスケジューラ106、図1のイベントハンドラ107および図1の選択基準108など、図1のオペレーティングシステム104および/またはそのコンポーネントの少なくとも一部分を記憶することがある。メモリ532(たとえば、RAM)がオペレーティングシステムの一部分を記憶しているとき、オペレーティングシステムの残りの部分は別のメモリまたは記憶デバイス(たとえば、ハードディスク)に記憶されることがある。メモリ532はまた、オペレーティングシステムデータ構造558(たとえば、図1のオペレーティングシステムデータ構造118および/または図2のテーブル)を記憶することがある。命令556は、図3の方法300および図4の方法400を含む様々な機能および方法を実行するようにCPU510やDSP574などのプロセッサによって実行されることがある。
【００６８】
ある特定の実施形態では、CPU510、DSP574、ディスプレイコントローラ526、メモリ532、CODEC534およびワイヤレスコントローラ540が、システムインパッケージまたはシステムオンチップデバイス522内に含まれている。ある特定の実施形態では、システムオンチップデバイス522に対して入力デバイス530および電源544が結合されている。さらにある特定の実施形態では図5に示したように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542および電源544がシステムオンチップデバイス522に対して外部にある。しかしディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542および電源544の各々はインターフェースやコントローラなどシステムオンチップデバイス522の構成要素に結合させることが可能である。
【００６９】
記載した実施形態に関連して、装置は第1の命令セットと関連付けされた命令を処理するための第1の手段を含む。たとえばこの処理をするための第1の手段は、図1の第1のプロセッサ110、図1の第2のプロセッサ112、図5のCPU510、図5のDSP574、別のプロセッサ(たとえば、NPUまたはGPU)、命令を処理するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
【００７０】
本装置はまた、第2の命令セットと関連付けされた命令を処理するための第2の手段を含むことがある。たとえばこの処理をするための第2の手段は、図1の第1のプロセッサ110、図1の第2のプロセッサ112、図5のCPU510、図5のDSP574、別のプロセッサ(たとえば、NPUまたはGPU)、命令を処理するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
【００７１】
本装置はさらに、処理するための第1の手段および処理するための第2の手段上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するための手段を含むことがある。たとえば、オペレーティングシステムの少なくとも一部分を記憶するための手段は、図1のコヒーレントメモリ116、図5のメモリ532、データを記憶するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
【００７２】
本装置はまた、オペレーティングシステムと関連付けされた少なくとも1つの共有データ構造を記憶するための手段を含むことがある。たとえばこの少なくとも1つの共有データ構造を記憶するための手段は、図1のメモリ116、図5のメモリ532、データを記憶するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
【００７３】
本装置は、処理するための第1の手段または処理するための第2の手段のいずれかの上で第1の命令セットと第2の命令セットの両方をサポートするタスクの実行をスケジュール設定するための手段を含むことがある。たとえばこのスケジュール設定するための手段は、図1のスケジューラ106、実行のためにタスクをスケジュール設定するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
【００７４】
当業者であればさらに、本明細書に開示した実施形態と関連して記載した論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはこの両者の組合せとして実装し得ることを理解されよう。様々な例示の構成要素、ブロック、構成、モジュール、回路およびステップについて一般にその機能性に関して上で説明してきた。このような機能性がハードウェアとして実装されるのかプロセッサ実行可能な命令として実装されるのかは、その特定の用途およびシステム全体に課せられる設計制約に依存する。当業者は記載した機能性を各特定の用途について多様な方法で実装することがあり得るが、このような実装決定が本開示の趣旨から逸脱したものと解釈すべきではない。
【００７５】
本明細書に開示した実施形態と関連して記載した方法またはアルゴリズムのステップはハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで直接的に具現化させ得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラム可能読取り専用メモリ(PROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、取外し可能ディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、または当技術分野で周知の他の任意の形式の非一時的記憶媒体の中に存在することがある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態として、記憶媒体をプロセッサと一体化させることがある。このプロセッサと記憶媒体は特定用途向け集積回路(ASIC)内に存在することがある。このASICは、コンピューティングデバイスまたはユーザ端末に存在することがある。代替形態として、プロセッサと記憶媒体がコンピューティングデバイスまたはユーザ端末内に個別構成要素として存在することがある。
【００７６】
たとえば記載した実施形態によれば、非一時的コンピュータ読取り可能記憶媒体(たとえば、CD、DVD、メモリデバイス、その他)はオペレーティングシステムの単一のインスタンスを記憶することがある。オペレーティングシステムは、第1のプロセッサおよび第2のプロセッサを含んだ電子デバイスで実行されたときに、第1のプロセッサおよび第2のプロセッサ上でのオペレーティングシステムの同時実行をさせる命令を含むことがある。第1のプロセッサは第1の命令セットアーキテクチャと関連付けされており、かつ第2のプロセッサは第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けされている。
【００７７】
開示した実施形態に関する上の説明は当業者による開示した実施形態の製作または使用を可能にするように提供したものである。これらの実施形態に対する様々な修正は当業者には容易に明らかであろう、また本明細書で規定した原理は本開示の趣旨を逸脱することなく他の実施形態に適用し得る。したがって本開示を本明細書に示した実施形態に限定するように意図していないが、添付の特許請求の範囲による規定に従った原理および新規の特徴と矛盾しない可能な最も広い範囲と一致させるべきである。
【符号の説明】
【００７８】
100  システム
102  アプリケーション
104  オペレーティングシステム(O/S)
106  スケジューラ
107  イベントハンドラ
108  選択基準
110  第1のプロセッサ
112  第2のプロセッサ
114  タスク
116  コヒーレントメモリ
118  オペレーティングシステムデータ構造
202  メモリ
210  第1のテーブル
212  第2のテーブル
220  テーブル
222  テーブル
230  テーブル
500  電子デバイス
510  CPU
522  システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
532  メモリ
534  CODEC
536  スピーカ
538  マイクロフォン
540  ワイヤレスコントローラ
542  アンテナ
544  電源
556  実行可能命令
558  オペレーティングシステムデータ構造
570  第1のコア
572  第2のコア
574  DSP
576  第1のハードウェアスレッド
578  第2のハードウェアスレッド
【図１】
0006430970.tif 000002
【図２】
0006430970.tif 000003
【図３】
0006430970.tif 000004
【図４】
0006430970.tif 000005
【図５】
0006430970.tif 000006