JP5982581B2 - 補助プロセッサへのホストオペレーティングシステムサービスの公開 - Google Patents

補助プロセッサへのホストオペレーティングシステムサービスの公開 Download PDF

Info

Publication number
JP5982581B2
JP5982581B2 JP2015540679A JP2015540679A JP5982581B2 JP 5982581 B2 JP5982581 B2 JP 5982581B2 JP 2015540679 A JP2015540679 A JP 2015540679A JP 2015540679 A JP2015540679 A JP 2015540679A JP 5982581 B2 JP5982581 B2 JP 5982581B2
Authority
JP
Japan
Prior art keywords
processor
service
context
auxiliary
invoking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015540679A
Other languages
English (en)
Other versions
JP2015537301A (ja
Inventor
アナトリー・イー・ヤコヴェンコ
ラメシュ・チャンドラセカル
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2015537301A publication Critical patent/JP2015537301A/ja
Application granted granted Critical
Publication of JP5982581B2 publication Critical patent/JP5982581B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Telephonic Communication Services (AREA)

Description

関連出願
本出願は、その内容全体が参照により本明細書に組み込まれる、2012年11月9日に出願された「Exposing Host Operating System Services to an Auxiliary Processor」と題する米国仮出願第61/724,378号の優先権の利益を主張する。
モバイル技術およびワイヤレス技術は、過去数年の間に爆発的な発展をとげてきた。この発展は、より優れた通信、ハードウェア、およびより信頼できるプロトコルによって促進されている。ワイヤレスサービスプロバイダは現在、向上し続ける多数の機能およびサービスを自分の顧客に提供し、かつ情報、リソースおよび通信に対するかつてないレベルのアクセスをユーザに提供することができる。これらの強化と歩調を合わせるために、モバイル電子デバイス(たとえば、携帯電話、時計、ヘッドフォン、遠隔制御装置など)は、今までよりも複雑になり、今や一般的に、多重プロセッサ、システムオンチップ(SoC)、およびモバイルデバイスユーザが彼らのモバイルデバイス上で複雑で電力負荷の大きいソフトウェアアプリケーション(たとえば、ビデオストリーミング、ビデオ処理など)を実行することを可能にする他のリソースを含む。複雑さおよび電力消費量のこの増加に伴い、モバイルデバイスのリソースおよび能力をより良く利用する新しい改善された処理ソリューションが消費者に有益であろう。
様々な態様は、補助プロセッサ上で汎用アプリケーション動作を実行する方法であって、コンピューティングデバイスのアプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、第2のプロセスによって、補助プロセッサの第1のサービスを呼び出すステップであって、第1のサービスによって、第2のプロセスをブロック状態に入らせる、呼び出すステップと、第1のプロセスによって、補助プロセッサの第2のサービスを呼び出すステップであって、第2のサービスが第2のコンテキストを有する、呼び出すステップと、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックするステップと、アンブロックされた第2のプロセスによって、アプリケーションプロセッサ中で第1のコンテキスト内のコンテキストベース動作を実行するステップと、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップであって、補助プロセッサが、第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行する、送るステップと、第1のプロセスによって、第2のサービスを達成したときに補助プロセッサ中で生成された情報を受信するステップとを含む、方法を含む。
一態様では、補助プロセッサの第1のサービスを呼び出すステップは、デジタル信号プロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、モデムプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、コンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、リモートコンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップは、アンブロックされた第2のプロセスによって、補助プロセッサ中で追加の動作を実行するために第2のサービスが必要とするコンテキストベース情報を生成するためにアプリケーションプロセッサ中でコンテキストベース動作を実行するステップを含み得る。さらなる態様では、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップは、アプリケーションプロセッサが通信バス上に、生成されたコンテキストベース情報をプッシュするステップを含み得る。
さらなる態様は、コンピューティングデバイスであって、第1のプロセスと第2のプロセスとを作成するステップであって、第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、第2のプロセスによって、補助プロセッサの第1のサービスを呼び出すステップであって、第1のサービスによって、第2のプロセスをブロック状態に入らせる、呼び出すステップと、第1のプロセスによって、補助プロセッサの第2のサービスを呼び出すステップであって、第2のサービスが第2のコンテキストを有する、呼び出すステップと、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックするステップと、アンブロックされた第2のプロセスによって、第1のコンテキスト内のコンテキストベース動作を実行するステップと、補助プロセッサに、第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行させるために、補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップと、第1のプロセスによって、第2のサービスを達成したときに補助プロセッサ中で生成された情報を受信するステップとを含む動作を実行するためのプロセッサ実行可能命令で構成されたアプリケーションプロセッサを含み得るコンピューティングデバイスを含む。
一態様では、補助プロセッサはデジタル信号プロセッサであり得、アプリケーションプロセッサは、補助プロセッサの第1のサービスを呼び出すステップがデジタル信号プロセッサのサービスを呼び出すステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、補助プロセッサはモデムプロセッサであり得、アプリケーションプロセッサは、補助プロセッサの第1のサービスを呼び出すステップがモデムプロセッサのサービスを呼び出すステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、コンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、リモートコンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、アプリケーションプロセッサは、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップが、アンブロックされた第2のプロセスによって、補助プロセッサ中で追加の動作を実行するために第2のサービスが必要とするコンテキストベース情報を生成するために、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、コンピューティングデバイスは、通信バスを含み得、アプリケーションプロセッサは、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、アプリケーションプロセッサが通信バス上に、生成されたコンテキストベース情報をプッシュするステップを含み得るようなプロセッサ実行可能命令で構成され得る。
さらなる態様は、コンピューティングデバイスであって、アプリケーションプロセッサと、第1のプロセスと第2のプロセスとが第1のコンテキストを有するようにアプリケーションプロセッサ中で第1および第2のプロセスを作成するための手段と、第2のプロセスに、補助プロセッサの第1のサービスを呼び出させるための手段であって、第1のサービスによって、第2のプロセスをブロック状態に入らせる、呼び出させるための手段と、第1のプロセスに、補助プロセッサの第2のサービスを呼び出させるための手段であって、第2のサービスが第2のコンテキストを有する、呼び出させるための手段と、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックするための手段と、アンブロックされた第2のプロセスに、アプリケーションプロセッサ中で第1のコンテキスト内のコンテキストベース動作を実行させるための手段と、補助プロセッサに、第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行させるために、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るための手段と、アプリケーションプロセッサ中で、第2のサービスを達成したときに補助プロセッサ中で生成された情報を受信するための手段とを有するコンピューティングデバイスを含む。
一態様では、補助プロセッサの第1のサービスを呼び出すための手段は、デジタル信号プロセッサ中で第1のサービスを呼び出すための手段を含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すための手段は、モデムプロセッサ中で第1のサービスを呼び出すための手段を含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すための手段は、コンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すための手段を含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すための手段は、リモートコンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すための手段を含み得る。さらなる態様では、アプリケーションプロセッサ中でコンテキストベース動作を実行するための手段は、アンブロックされた第2のプロセスによって、補助プロセッサ中で追加の動作を実行するために第2のサービスが必要とするコンテキストベース情報を生成するために、アプリケーションプロセッサ中でコンテキストベース動作を実行するための手段を含み得る。さらなる態様では、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るための手段は、通信バス上に、生成されたコンテキストベース情報をプッシュするための手段を含み得る。
さらなる態様は、補助プロセッサに汎用アプリケーション動作をオフロードするための動作をプロセッサに実行させるように構成されたアプリケーションプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、動作が、アプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、第2のプロセスによって、補助プロセッサの第1のサービスを呼び出すステップであって、第1のサービスによって、第2のプロセスをブロック状態に入らせる、呼び出すステップと、第1のプロセスによって、補助プロセッサの第2のサービスを呼び出すステップであって、第2のサービスが第2のコンテキストを有する、呼び出すステップと、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックするステップと、アンブロックされた第2のプロセスによって、アプリケーションプロセッサ中で第1のコンテキスト内のコンテキストベース動作を実行するステップと、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップであって、補助プロセッサが、第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行する、送るステップと、第1のプロセスによって、第2のサービスを達成したときに補助プロセッサ中で生成された情報を受信するステップとを含む、非一時的コンピュータ可読記憶媒体を含む。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、補助プロセッサの第1のサービスを呼び出すステップが、デジタル信号プロセッサ中で第1のサービスを呼び出すステップを含み得るような動作をプロセッサに実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、補助プロセッサの第1のサービスを呼び出すステップが、モデムプロセッサ中で第1のサービスを呼び出すステップを含み得るような動作をプロセッサに実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、補助プロセッサの第1のサービスを呼び出すステップが、コンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得るような動作をプロセッサに実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、補助プロセッサの第1のサービスを呼び出すステップが、リモートコンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得るような動作をプロセッサに実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップが、アンブロックされた第2のプロセスによって、補助プロセッサ中で追加の動作を実行するために第2のサービスが必要とするコンテキストベース情報を生成するために、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップを含み得るような動作をプロセッサに実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、アプリケーションプロセッサが通信バス上に、生成されたコンテキストベース情報をプッシュするステップを含み得るような動作をプロセッサに実行させるように構成され得る。
さらなる態様は、補助プロセッサと、補助プロセッサに結合されたアプリケーションプロセッサとを有するシステムを含む。アプリケーションプロセッサは、第1のプロセスと第2のプロセスとを作成するステップであって、第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、第2のプロセスによって、第2のプロセスをブロック状態に入らせるために補助プロセッサの第1のサービスを呼び出すステップと、第1のプロセスによって、補助プロセッサの第2のサービスを呼び出すステップと、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックするステップと、アンブロックされた第2のプロセスによって、第1のコンテキスト内のコンテキストベース動作を実行するステップと、補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップと、第1のプロセスによって、第2のサービスを達成したときに補助プロセッサ中で生成された情報を受信するステップとを含む動作を実行するためのアプリケーションプロセッサ実行可能命令で構成され得、補助プロセッサは、アプリケーションプロセッサの第2のプロセスをブロック状態に入らせるために第1のサービスを実行するステップと、第1のプロセスからプロシージャ呼出しを受信したことに応答して第2のサービスを実行するステップと、第1のコンテキストへのアクセスを必要とする動作に遭遇すると第2のサービスの実行を中断するステップと、第1のサービスから、アプリケーションプロセッサ中で第2のプロセスをアンブロックするために通信を送るステップと、第1のコンテキスト中のアプリケーションプロセッサ上で実行されたコンテキストベース動作を実行するステップの結果を受信するステップと、第2のサービスの実行を再開し、コンテキストベース動作を実行するステップの受信された結果に基づいて追加の動作を実行するステップとを含む動作を実行するための補助プロセッサ実行可能命令で構成され得る。
一態様では、補助プロセッサはデジタル信号プロセッサであり得、アプリケーションプロセッサは、補助プロセッサの第1のサービスを呼び出すステップがデジタル信号プロセッサのサービスを呼び出すステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、補助プロセッサはモデムプロセッサであり得、アプリケーションプロセッサは、補助プロセッサの第1のサービスを呼び出すステップがモデムプロセッサのサービスを呼び出すステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、コンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、補助プロセッサの第1のサービスを呼び出すステップは、リモートコンピューティングデバイスのプロセッサ中で第1のサービスを呼び出すステップを含み得る。さらなる態様では、アプリケーションプロセッサは、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップが、アンブロックされた第2のプロセスによって、補助プロセッサ中で追加の動作を実行するために第2のサービスが必要とするコンテキストベース情報を生成するために、アプリケーションプロセッサ中でコンテキストベース動作を実行するステップを含み得るようなプロセッサ実行可能命令で構成され得る。さらなる態様では、コンピューティングデバイスは、通信バスを含み得、アプリケーションプロセッサは、アプリケーションプロセッサから補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、アプリケーションプロセッサが通信バス上に、生成されたコンテキストベース情報をプッシュするステップを含み得るようなプロセッサ実行可能命令で構成され得る。
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的実施形態を示し、上記の全般的な説明および下記の詳細な説明とともに、本発明の特徴を説明する働きをする。
様々な態様を実装するのに好適な、例示的なシステムオンチップのアーキテクチャ図である。 様々な態様による、プロシージャ呼出しを実行するように構成されたコンピューティングシステム中の例示的な論理および機能構成要素を示す階層ブロック図である。 補助プロセッサ上で汎用アプリケーション動作を実行するためにプロシージャ呼出しを実行する態様方法のプロセスフロー図である。 一態様による、プロシージャ呼出しを実行する態様アプリケーションプロセッサ方法のプロセスフロー図である。 様々な実施形態とともに使用するのに好適な例示的なスマートフォンの図である。 様々な実施形態とともに使用するのに好適な例示的なラップトップコンピュータの図である。 様々な実施形態とともに使用するのに好適な例示的なサーバコンピュータの図である。
様々な実施形態について添付の図面を参照しながら詳細に説明する。可能な場合には必ず、同じ参照番号は、図面全体にわたって同じまたは同様の部分を指すために使用される。特定の例および実装形態に行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
「コンピューティングデバイス」という用語は、総称的に、サーバ、パーソナルコンピュータ、モバイルデバイス、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ウルトラブック、パームトップコンピュータ、携帯情報端末(PDA)、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、グローバルポジショニングシステム(GPS)受信機、ワイヤレスゲームコントローラ、ならびに、プログラマブルプロセッサを含む同様のパーソナル電子デバイスのいずれか1つまたはすべてを指すように、本明細書で使用される。様々な態様は、処理電力とバッテリー寿命とが限られたスマートフォンなどのモバイルデバイスに特に有用であるが、これらの態様は、概して、プログラマブルプロセッサを含む任意のコンピューティングデバイスにおいて有用である。
概して、様々な態様は、コンピューティングデバイスの補助プロセッサ上で汎用アプリケーションを実行することを可能にする方法ならびに本方法を実行するように構成されたコンピューティングデバイスおよびプロセッサを含む。本方法は、アプリケーションプロセッサ中で、その両方が第1のコンテキストを有する第1のプロセスと第2のプロセスとを作成するステップを含み得る。実行されたとき、第2のプロセスは、第2のプロセスをブロック状態に入らせる補助プロセッサの第1のサービスを呼び出し得る。次いで、第1のプロセスは、実行されると、補助プロセッサの第2のサービスを呼び出し、補助プロセッサの第1のサービスからの通信を受信したことに応答して第2のプロセスをアンブロックする。アプリケーションプロセッサ上での第2のプロセス動作の実行は、補助プロセッサに第1のコンテキストを送り、これにより、補助プロセッサは、受信したコンテキストを使用して、第1のプロセスによって呼び出されるサービスを達成することが可能になる。補助プロセッサは、次いで、アプリケーションプロセッサ上で実行される第1のプロセスに第2のサービスの結果を送り得る。
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行するためのコンピュータプログラムコードすなわち「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、Java(登録商標)Script、Visual Basic、Structured Query Language (たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で記述され得る。本明細書で使用するコンピュータ可読記憶媒体に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能であるマシン語コード(オブジェクトコードなど)を指す。
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが動作する場合)ユーザ空間内に編成され、(特権コードが動作する場合)カーネル空間内に編成される。この分離は、カーネル空間の一部であるコードがGPL許諾される必要がある一方で、ユーザ空間内で動作するコードがGPL許諾されなくてもよい、Android(登録商標)および他の一般公有使用許諾(GPL)環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、明示的に別段の記述がない場合、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
「システムオンチップ」(SOC)という用語は、単一の基板に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すように本明細書で使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路を含み得る。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含み得る。SOCは、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアも含み得る。
「マルチコアプロセッサ」という用語は、プログラム命令を読み取り、実行するように構成された2つ以上の独立した処理コア(たとえば、CPUコア)を含む単一の集積回路(IC)チップまたはチップパッケージを指すように本明細書で使用される。SOCは、複数のマルチコアプロセッサを含み得、SOCにおける各プロセッサは、コアと呼ばれ得る。「マルチプロセッサ」という用語は、本明細書では、プログラム命令を読み出して実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すように使用される。
本出願で使用されるように、「コンポーネント」、「モジュール」、「システム」、「サービス」、「エンジン」、「リスナー」、「マネージャ」などの用語は、限定はしないが、特定の動作または機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むものとする。たとえば、コンポーネントは、限定はされないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例を挙げると、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が、コンポーネントと呼ばれ得る。1つまたは複数のコンポーネントは、プロセスおよび/または実行スレッドの中に存在してよく、1つのコンポーネントは、1つのプロセッサまたはコアに局在してよく、かつ/または2つ以上のプロセッサまたはコアの間に分散してよい。加えて、これらのコンポーネントは、様々な命令および/またはデータ構造を記憶している様々な非一時的コンピュータ可読媒体から実行することができる。コンポーネントは、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているコンピュータ、プロセッサ、および/またはプロセスに関する通信方法によって通信できる。
「コンテキスト情報」という用語は、本明細書では、ホストオペレーティングシステム(たとえば、Android、Windows(登録商標) 8、LINUX(登録商標)など)の中で実行されるプロセスに対して利用可能な任意の情報を指すように使用され、オペレーティングシステムサービス、ライブラリ、ファイルシステム、およびプロセスまたはアプリケーションプログラムがアクセス可能な他のリソースを識別する、動作状態データならびに許可および/またはアクセス制限を含み得る。
一般に、複数のプロセスが単一のプロセッサで同時に実行されているように見えるように、プロセスがプロセッサ上で短いタイムスライスの間に実行される。プロセスがタイムスライスの終わりにおいてプロセッサから除かれると、プロセスの現在の動作状態に関する情報がメモリに記憶されるので、プロセスは、プロセッサ上での実行に戻るときに、シームレスに動作を再開することができる。この動作状態データは、プロセスのアドレス空間、スタック空間、仮想アドレス空間、レジスタセットイメージ(たとえば、プログラムカウンタ、スタックポインタ、命令レジスタ、プログラムステータス語など)、アカウンティング情報、許可、アクセス制限、および状態情報を含み得る。
プロセスの状態情報は、プロセスが実行状態、準備状態、ブロック状態などにあるのかどうかを示す情報を含み得る。プロセスは、そのプロシージャがプロセッサによって実行されているとき、実行状態にある。プロセスは、すべてのプロセスの実行のための必須条件を満たしており(たとえば、メモリおよびリソースが利用可能であるなど)、プロセスにプロセッサが割り当てられるのを待っているとき、準備状態にある。プロセスは、イベント(たとえば、入出力完了イベントなど)の発生を待っているとき、ブロック状態にある。
プロセスは他のプロセスをスポーンすることがあり、スポーンされたプロセス(すなわち、子プロセス)は、スポーンしたプロセス(すなわち、親プロセス)の許可およびアクセス制限(すなわち、コンテキスト)の一部を受け継ぐことがある。プロセスは、複数の軽量のプロセスまたはスレッドを含む重量のプロセスであってよく、軽量のプロセスは、そのコンテキスト(たとえば、アドレス空間、スタック、許可、および/またはアクセス制限など)のすべてまたは部分を他のプロセス/スレッドと共有するプロセスである。したがって、単一のプロセスは、単一のコンテキスト(すなわち、プロセッサのコンテキスト)を共有する、それへのアクセス権を有する、かつ/またはその中で動作する、複数のスレッドを含み得る。
概して、同じコンテキストを共有する、同じコンテキストへのアクセス権を有する、かつ/または同じコンテキスト内で動作するプロセスは、高速メモリ読取り/書込み動作を介して通信し得る。一方、コンテキストを共有しない独立プロセス間の通信は、しばしば、比較的遅い関数呼出し、メソッド呼出し、プロシージャ呼出し、メッセージ交換、ドメインソケット(たとえば、Unix(登録商標)ドメインソケット)、および他の形態のプロセス間通信(IPC)を介して達成される。
リモートプロシージャ呼出し(RPC)およびリモートメソッド呼出し(RMI)は、呼出しプロセスがサブルーチン、プロシージャ、プロセス、またはサービス(本明細書では総称して「サービス」)を、通常は別のプロセッサ、チップまたはコンピューティングデバイス上の別のアドレス空間内で実行させることを可能にするプロセス間通信(IPC)である。
マルチプロセッサおよび分散コンピューティングシステムでは、異なるプロセッサにとって利用可能なメモリおよびリソースは、しばしば、個別のドメイン(たとえば、保護ドメイン、物理ドメインなど)の中にある。加えて、複数のプロセッサの各々は、異なるオペレーティングシステムで構成され得る、かつ/または異なるハードウェア記述言語(HDL)もしくは命令セットアーキテクチャ(ISA)を実装し得る。そのようなシステムでは、RPC/RMI機構は、第1のプロセッサ上の呼出しプロセスがサービスを第2のプロセッサ中で実行させることを可能にし、第2のプロセッサがサービスの実行の結果を第1のプロセッサに送り返すことを可能にする明確なインターフェースを提供し得る。
いくつかの状況では、呼び出されたサービス(called/invoked service)は、呼出しプロセスと同じコンテキストを共有しないプロセスにとってすぐに利用可能でない情報へのアクセスを必要とし得る。そのような状況では、既存のRPCソリューションは、呼出しプロセスが、プロシージャ呼出し/メソッド呼出し中に、呼び出されたサービスによって使用されるべきであるすべてのコンテキスト情報(すなわち、状態情報、許可など)を含むことを必要とする。
プロシージャ呼出しまたはメソッド呼出し中にコンテキスト情報を含むと、モバイルデバイスリソースの使用効率が悪い。さらに、呼出しプロセスのプロセッサおよび呼び出されたサービスのプロセッサは、異なるオペレーティングシステムを有し、かつ/または異なるハードウェア記述言語(HDL)を実装し得る。そのような場合、呼び出されたサービスは、呼び出されたサービスの環境が呼出しプロセスのオペレーティングシステムに一致するように呼出しプロセスのコンテキストを再作成するために複雑で電力負荷の大きい動作を実行する必要があり得る。さらに、コンテキストを再作成するには、呼出しプロセスを実行するアプリケーションプロセッサのカーネルまたはホストオペレーティングシステムへの変更が必要となり得る。これらおよび他の理由で、既存のソリューションは、モバイルデバイスの性能および電力消費特性を劣化または低減させ、ユーザエクスペリエンスを劣化させ得る。
様々な態様は、デジタル信号プロセッサ、モデムプロセッサ、コプロセッサなどの補助プロセッサ上でサービスを呼び出すためのソリューションを改善する。
様々な態様は、コンピューティングデバイス中で、またはネットワークを介して2方向プロシージャ呼出しおよび/または逆方向プロシージャ呼出しを実行するための機構を含み得る。そのような2方向プロシージャ呼出しおよび/または逆方向プロシージャ呼出しにより、補助プロセッサは、呼出しプロセスが(たとえば、プロシージャ呼出し/メソッド呼出しの一部などとして)補助プロセッサにコンテキスト情報に送ることを必要とせずに、アプリケーションプロセッサのまたは呼出しプロセスのコンテキスト情報へのアクセスを必要とするサブルーチンを含む動作を実行することが可能になる。
様々な態様は、汎用プロセッサ上のローカルのコンテキスト情報へのアクセスを必要とする動作を実行しながら、汎用プロセッサから補助プロセッサに処理動作の大部分をオフロードするために、2方向プロシージャ呼出しおよび/または逆方向プロシージャ呼出しを実行し得る。様々な態様は、カーネルへのいかなる変更もせずに、オペレーティングシステムのユーザ空間中に2方向プロシージャ呼出しおよび/または逆方向プロシージャ呼出しを実装し得る。
様々な態様は、汎用プロセッサ(たとえば、アプリケーションプロセッサ、CPUなど)と補助プロセッサとの間でコンテキスト情報を通信することに関連するオーバーヘッドを低減することによって、コンピューティングデバイスの性能および/または電力消費特性を改善する。様々な態様はまた、第2の/補助プロセッサ上で呼出しプロセスまたはアプリケーションプロセッサのコンテキストを再作成することに関連するオーバーヘッドを低減することによって、コンピューティングデバイスの性能および/または電力消費特性を改善する。
様々な態様は、同じコンテキスト内で、かつ/または1次プロセスおよび2次プロセスが同じコンテキスト情報へのアクセス権を有するように、アプリケーションプロセッサ上で1次プロセス(またはスレッド)および複数の2次プロセス(またはスレッド)を生成するように構成されたシステム、方法、およびデバイスを含み得る。1次プロセスは、汎用ソフトウェアアプリケーションの1つまたは複数の動作を達成するためのプロシージャを含み得、2次プロセスの各々は、コンテキスト情報へのアクセスを必要とする1次プロセスのサブルーチンを達成するためのプロシージャを含み得る。
2次プロセスは、2次プロセスをブロック状態に入らせる補助プロセッサ上でサービスを呼び出すように構成され得る。2次プロセスがブロック状態のままである間、1次プロセスは、補助プロセッサ上でサービスを呼び出し得る。サービスは、1次プロセスの1つまたは複数の動作またはタスクを達成するために補助プロセッサ上でサブルーチンを実行し始め得る。
サービスが、コンテキスト情報へのアクセスを必要とするサブルーチンに遭遇すると、サービスは、遭遇したサブルーチンを達成する、かつ/または必要なコンテキスト情報を取り出すのに好適な2次プロセスをアンブロックし得る。アンブロックされた2次プロセスは、サービスによって必要とされるコンテキスト情報を取り出す、かつ/またはコンテキスト情報へのアクセスを必要とする動作を達成するために、1次プロセスのコンテキスト内でアプリケーションプロセッサ上で実行され得る。一態様では、アンブロックされた2次プロセスがアプリケーションプロセッサ上で実行される間、サービスは、待機またはブロック状態に入り得る。別の態様では、アンブロックされた2次プロセスがアプリケーションプロセッサ上で実行される間、サービスはタスクを処理し続け得る。したがって、一態様では、サービスと2次プロセスとは同時にまたは並行して実行され得る。
アンブロックされた2次プロセスは、補助プロセッサに、取り出されたコンテキスト情報および/またはその処理の結果を送り、ブロック状態に戻り得る。サービスは、補助プロセッサ上で追加の動作を実行するために2次プロセスから受信した情報を使用し、1次プロセスに通知および/またはその動作の結果を送り得る。1次プロセスは、汎用ソフトウェアアプリケーションの動作を完了するために、かつ/または受信した通知に基づいてそのステータスを更新するために、受信した結果を使用し得る。このようにして、1次プロセスは、(たとえば、プロシージャ呼出し/メソッド呼出しなどの一部として)補助プロセッサの煩雑なコンテキスト情報を送らずに補助プロセッサに汎用処理動作をオフロードし得る。
様々な態様は、システムオンチップ(SOC)を含む、いくつかのマルチプロセッサコンピュータシステム上に実装され得る。図1に、様々な態様を実装するコンピューティングデバイス中で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示す。SOC100は、デジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィクスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含み得る。SOC100はまた、異種プロセッサ102、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサなど)を含み得る。各プロセッサ102、104、106、108、110は、1つまたは複数のコアを含み得、各プロセッサ/コアは、他のプロセッサ/コアとは無関係に動作を実行し得る。たとえば、SOC100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX(登録商標)、OS Xなど)を実行するプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows(登録商標) 8)を実行するプロセッサとを含み得る。
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、かつウェブブラウザにおいてレンダリングするための符号化されたオーディオ信号およびビデオ信号を処理するなど、他の特殊な動作を実行するためのアナログ回路およびカスタム回路114を含み得る。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびにプロセッサ、およびコンピューティングデバイス上で実行されるソフトウェアクライアント(たとえば、ウェブブラウザなど)をサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含み得る。
システム構成要素/リソース116およびカスタム回路114はまた、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスに接続するための回路を含み得る。プロセッサ102、104、106、108は、相互接続され、一連の再構成可能な論理ゲートを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システム構成要素およびリソース116ならびにカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)など、高度相互接続によって提供され得る。
SOC100は、クロック118および電圧調整器120など、SOCの外部のリソースと通信するための入出力モジュール(図示せず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP102、モデムプロセッサ104、グラフィクスプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
プロセッサ102、104、106、108、110は、互いに(たとえば、単一の基板、ダイ、集積チップなどの上で)極めて近接している独立した処理コアであり得る。プロセッサ102、104、106、108、110が近接していることで、メモリ112は、信号がチップ外で移動しなければならない場合に可能な周波数/クロック速度よりもはるかに高い周波数/クロック速度で動作することが可能になる。その上、プロセッサ102、104、106、108、110が近接していることで、オンチップメモリおよびリソース(たとえば、電圧レール)の共有、ならびにコア間のより協調した連携が可能になる。
図1を参照しながら上記で説明したようなマルチプロセッサハードウェア設計は、同じパッケージの内側の、しばしば同じシリコン片上に、異なる機能の複数の処理コアを含み得る。対称な多重処理ハードウェアは、単一のオペレーティングシステムによって制御される単一の共有されたメインメモリに接続された2つ以上の同一のプロセッサを含む。非対称のまたは「疎結合」の多重処理ハードウェアは、それぞれ、独立したオペレーティングシステムおよびハードウェア記述言語または命令セットアーキテクチャによって制御され、1つまたは複数の共有されたメモリ/リソースに接続され得る、2つ以上の異種プロセッサ/コアを含み得る。
図2に、一態様における、2方向リモートプロシージャ呼出しおよび/または逆方向リモートプロシージャ呼出しを実行するように構成されたコンピューティングシステム200中の例示的な論理および機能構成要素を示す。図示されたコンピュータシステム200は、ハードウェア構成要素とソフトウェア構成要素の両方を含む。ハードウェア構成要素は、アプリケーションプロセッサ108と、デジタル信号プロセッサ(DSP)102と、相互接続モジュール124と、メモリ112モジュールとを含み得る。
ソフトウェア構成要素は、ホストオペレーティングシステム202と、ホストオペレーティングシステムユーザプロセス204と、ホストリスナースレッド206と、DSPオペレーティングシステム208と、DSPサービス210と、DSPリスナー212とを含み得る。一態様では、ホストオペレーティングシステム202は、ホストオペレーティングシステムユーザプロセス204から高水準言語(HLL)ライブラリ呼出しを受信し、ホストオペレーティングシステム202上で(たとえば、オペレーティングシステム呼出しを介して)オペレーティングシステムサービスを呼び出すように構成されたライブラリモジュール(図示せず)を含み得る。一態様では、ホストオペレーティングシステムユーザプロセス204は、ソフトウェアアプリケーションプログラムのプロセスであり得る。
ホストオペレーティングシステムユーザプロセス204は、コンテキスト情報を含むかまたは参照し得、コンテキスト情報は、ホストオペレーティングシステムユーザプロセス204がアクセスし得るホストオペレーティングシステムユーザプロセス204のサービス、ライブラリ、ファイルシステム、および他のリソースを識別する動作状態データおよび許可および/またはアクセス制限情報を含み得る。ホストリスナースレッド206は、ホストオペレーティングシステムユーザプロセス204のコンテキスト情報へのアクセス権を有するホストオペレーティングシステムユーザプロセス204のスレッドであり得る。
DSPサービス210は、1つまたは複数の動作をデジタル信号プロセッサ102に実行させるように構成されたサブルーチン、プロシージャ、プロセス、またはサービスであり得る。DSPサービス210はまた、ホストオペレーティングシステムユーザプロセス204についてのスレッドコンテキストを提供し得る。DSPリスナー212は、DSPサービス210のスレッドであり得る。DSPリスナー212は、ホストリスナースレッド206についてのスレッドコンテキストを提供し得る。
図3に、補助プロセッサに汎用プロセスの作業負荷の大部分をオフロードするためにリモートプロシージャ呼出しを実行するための態様方法300を示す。ブロック302において、ホストオペレーティングシステムリスナースレッド206は、ホストオペレーティングシステムリスナースレッド206がDSPリスナー212からの命令を待つ間、それをブロック状態に無期限に入らせる補助プロセッサのサービスを呼び出し得る。
ブロック304において、ホストオペレーティングシステムユーザプロセス204はDSPユーザサービス210を呼び出し得、これは、補助プロセッサ上で汎用アプリケーションプログラム動作を実行し始め得る。DSPユーザサービス210は、ホストオペレーティングシステム202のサービスへのアクセスを必要とする、かつ/またはホストオペレーティングシステムユーザプロセス204のコンテキスト情報へのアクセスを必要とする動作またはサブルーチンに遭遇するまで、汎用アプリケーションプログラム動作を実行し続け得る。図3に示す例では、DSPユーザサービス210は、「オープン(「ファイル1」)」動作に遭遇するまで、汎用アプリケーションプログラム動作を実行し続ける。
ブロック306において、DSPユーザサービス210は、遭遇した「オープン(「ファイル1」)」動作を実行するために、DSPリスナー212スレッドにコマンドを発行し得る。ブロック308において、DSPユーザサービス210は、DSPリスナー212からの命令を待つ間、ブロック状態に無期限に入り得る。一態様では、ブロック306およびブロック308の動作は、単一の動作で達成され得る。
ブロック310において、DSPリスナー212は、ホストオペレーティングシステムリスナースレッド206をアンブロックし得る。ブロック312において、DSPリスナー212は、ホストオペレーティングシステムリスナースレッド206に「オープン(「ファイル1」)」動作を実行するように命令し得る。一態様では、ブロック310およびブロック312の動作は、単一の動作で達成され得る。
ブロック314において、ホストオペレーティングシステムリスナースレッド206は、ホストオペレーティングシステム202上で「オープン(「ファイル1」)」動作を実行し得る。ブロック316において、ホストオペレーティングシステムリスナースレッド206は、DSPリスナー212スレッドに「オープン(「ファイル1」)」動作の結果を送り得る。ブロック316において、ホストオペレーティングシステムリスナースレッド206は、DSPリスナー212からさらなる命令を待つ間、ブロック状態に再び入り得る。一態様では、ブロック316およびブロック318の動作は、単一の動作で達成され得る。
ブロック320において、DSPリスナー212は、DSPユーザサービス210をアンブロックし得る。ブロック322において、DSPリスナー212は、DSPユーザサービス210に「オープン(「ファイル1」)」動作の結果を送り得る。一態様では、ブロック320およびブロック322の動作は、単一の動作で達成され得る。
ブロック324において、DSPユーザサービス210は、DSPリスナー212から受信した「オープン(「ファイル1」)」動作の結果を用いて残りの汎用アプリケーションプログラム動作を実行し、ホストオペレーティングシステムユーザプロセス204にそれらの動作の結果を戻し得る。このようにして、DSPユーザサービス210は、ホストオペレーティングシステム202のコンテキストを再作成せずにホストオペレーティングシステム202上のサービスを呼び出し得る。さらに、ホストオペレーティングシステムユーザプロセス204は、DSPユーザサービス210にそのコンテキスト情報を送る必要はなく、これは、汎用プロセッサと補助プロセッサとの間で通信される情報の量を低減する。
図4に、補助プロセッサにオペレーティングシステムサービスへのアクセスを必要とする動作をオフロードするための態様アプリケーションプロセッサ方法400を示す。ブロック402において、アプリケーションプロセッサは、補助プロセッサにオフロードされ得る動作を含む第1のプロセスを作成し得る。ブロック404において、アプリケーションプロセッサは、第1のプロセスと同じコンテキスト中に第2のプロセスを作成し得る。一態様では、第2のプロセスは、第1のプロセスのスレッドであり得る。一態様では、第1のプロセスは、ホストオペレーティングシステムユーザプロセス204であり得、第2のプロセスは、ホストオペレーティングシステムリスナースレッド206であり得る。
ブロック406において、第2のプロセスは、第2のプロセスをブロック状態に無期限に入らせる補助プロセッサのサービスを呼び出し得る。ブロック408において、第2のプロセスは、ブロック状態に入り、補助プロセッサからの命令を待ち得る。
ブロック410において、第1のプロセスは、補助プロセッサのサービスを呼び出すことによって補助プロセッサにその動作をオフロードし得る。ブロック412において、第2のプロセスは、ブロック状態を出て、アプリケーションプロセッサ上で1つまたは複数の動作を実行するために、補助プロセッサから命令を受信し得る。ブロック414において、第2のプロセスは、アプリケーションプロセッサ上で1つまたは複数の動作を実行し得る。ブロック416において、第2のプロセスは、補助プロセッサにアプリケーションプロセッサ上で実行された動作の結果を送り得る。ブロック418において、第2のプロセスは、ブロック状態に入り得る。ブロック420において、第1のプロセスは、補助プロセッサからサービス実行の結果を受信し得る。
様々な態様が、様々なコンピューティングデバイス上に実装され得、それらの例を図5〜図7に示す。図5に、内部メモリ502に結合されたマルチコアプロセッサ501と、ディスプレイ504(たとえば、タッチスクリーンディスプレイ)と、スピーカー506とを含むスマートフォン500を示す。加えて、スマートフォン500は、マルチコアプロセッサ501に結合されたワイヤレスデータリンクおよび/あるいはモデムまたは携帯電話トランシーバ510に接続され得る、電磁放射を送信および受信するためのアンテナ508を含み得る。スマートフォン500は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ512も含む。
マルチコアプロセッサ501は、上記で説明し、図1〜図2に示したものと同様の回路および構造を含み得る。モデム510はまた、複数の処理コアを含み得、無線周波数信号を受信および送信するためのアンテナ508に結合され得る。
一般的なスマートフォン500はまた、マイクロフォンから受信した音をワイヤレス送信に適したデータパケットにデジタル化し、受信した音のデータパケットを復号し、スピーカーに供給して音を発生させるアナログ信号を生成する、音の符号化/復号(CODEC)回路514を含む。さらに、マルチコアプロセッサ501、ワイヤレストランシーバ510およびCODEC514のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。
典型的なモバイルコンピューティングデバイスは、共通して、例示的なパーソナルラップトップコンピュータ600を示す図6に示した構成要素を有することになる。そのようなパーソナルコンピュータ600は、一般に、揮発性メモリ602、およびディスクドライブ604などの大容量不揮発性メモリに結合されたマルチコアプロセッサ601を含む。コンピュータ600はまた、プロセッサ601に結合されたコンパクトディスク(CD)および/またはDVDドライブ608を含み得る。コンピュータデバイス600はまた、プロセッサ601をネットワークに結合するためのネットワーク接続回路などの、データ接続を確立するか、または外部メモリデバイスを受け入れるための、プロセッサ601に結合されたいくつかのコネクタポートを含み得る。コンピューティングデバイス600は、プロセッサ601に結合されたワイヤレスデータリンクに接続された電磁放射を送信および受信するための無線/アンテナ610を有し得る。コンピュータ600は、コンピュータ技術分野においてよく知られているようにキーボード618と、ポインティングパッド620と、ディスプレイ622とをさらに含み得る。
様々な態様はまた、図7に示されるサーバ700などの様々な市販のサーバデバイスのうちのいずれにも実装され得る。そのようなサーバ700は、通常、複数のプロセッサシステムを含み、プロセッサシステムのうちの1つまたは複数は、マルチコアプロセッサ701であるか、マルチコアプロセッサ701を含み得る。プロセッサ701は、揮発性メモリ702、およびディスクドライブ703などの大容量不揮発性メモリに結合され得る。サーバ700はまた、プロセッサ701に結合された、フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ704を含み得る。サーバ700はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークなど、ネットワーク707とデータ接続を確立するための、プロセッサ701に結合されたネットワークアクセスポート706を含み得る。
プロセッサ501、601、701は、本明細書で説明する様々な態様の機能および動作を含む、様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマルチコアマルチプロセッサ、マイクロコンピュータまたは複数のプロセッサチップであり得る。1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、複数のプロセッサが設けられ得る。典型的には、ソフトウェアアプリケーションは、アクセスされてプロセッサ501、601、701にロードされる前に、内部メモリ502、602、702に記憶され得る。いくつかのモバイルコンピューティングデバイスでは、追加のメモリチップ(たとえば、Secure Data(SD)カード)が、モバイルデバイスに差し込まれ、プロセッサ501、601、701に結合され得る。内部メモリ502、602、702は、揮発性メモリ、もしくはフラッシュメモリなどの不揮発性メモリ、または両方の混合物であり得る。本明細書では、メモリに対する一般的な言及は、内部メモリ502、602、702、モバイルデバイスに差し込まれたリムーバブルメモリ、およびプロセッサ501、601、701自体の中のメモリを含む、プロセッサ501、601、701によってアクセス可能なすべてのメモリを指す。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様のブロックが、提示された順序で実施されなければならないことを要求または暗示するものではない。当業者が諒解するように、上記の態様におけるブロックの順序は、どのような順序で実行されてもよい。「その後」、「次いで」、「次に」などの単語は、ブロックの順序を限定するものではなく、これらの単語は、方法の説明を通して読者を案内するために使用されるにすぎない。さらに、たとえば、冠詞「a」、「an」または「the」の使用による単数形での請求要素へのいかなる言及も、その要素を単数に限定するものとして解釈されるべきではない。
本明細書で開示された態様に関して説明された、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムブロックは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能性に関して説明した。そのような機能性をハードウェアとして実装するか、またはソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲から逸脱するものと解釈されるべきではない。
本明細書で開示された態様に関して記載された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別のハードウェア構成要素、または、本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、そのプロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。代替として、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。機能は、ソフトウェアで実装される場合、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶され得る。本明細書で開示された方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュール内で具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも、非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
開示された態様の上記の説明は、任意の当業者が本発明を製作または使用できるように提供されたものである。これらの態様への様々な修正が当業者には容易に明らかとなり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書で示された態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示された原理および新規の特徴に合致する、最も広い範囲を与えられるべきである。
100 システムオンチップ(SOC)
102 デジタルシグナルプロセッサ(DSP)
104 モデムプロセッサ
106 グラフィクスプロセッサ
108 アプリケーションプロセッサ
110 コプロセッサ
112 メモリ要素、メモリ
114 アナログ回路およびカスタム回路
116 システム構成要素およびリソース
118 クロック
120 電圧調整器
124 相互接続/バスモジュール
200 コンピューティングシステム
202 ホストオペレーティングシステム
204 ホストオペレーティングシステムユーザプロセス
206 ホストリスナースレッド
208 DSPオペレーティングシステム
210 DSPサービス
212 DSPリスナー
500 スマートフォン
501 マルチコアプロセッサ
502 内部メモリ
504 ディスプレイ
506 スピーカー
508 アンテナ
510 モデムまたはセルラー電話トランシーバ、ワイヤレストランシーバ
512 メニュー選択ボタンまたはロッカースイッチ
514 符号化/復号(CODEC)回路
600 パーソナルラップトップコンピュータ
601 マルチコアプロセッサ
602 揮発性メモリ、内部メモリ
604 ディスクドライブ
608 コンパクトディスク(CD)および/またはDVDドライブ
610 無線/アンテナ
618 キーボード
620 ポインティングパッド
622 ディスプレイ
700 サーバ
701 マルチコアプロセッサ
702 揮発性メモリ、内部メモリ
703 ディスクドライブ
704 フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
706 ネットワークアクセスポート
707 ネットワーク

Claims (30)

  1. 補助プロセッサ上で汎用アプリケーション動作を実行する方法であって、
    コンピューティングデバイスのアプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、前記第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、
    前記アプリケーションプロセッサの前記第2のプロセス、前記補助プロセッサの第1のサービスを呼び出し、前記第1のサービスからの通信を待つブロック状態に入るステップと、
    前記第1のプロセスによって、前記補助プロセッサの第2のサービスを呼び出すステップであって、前記第2のサービスが第2のコンテキストを有する、呼び出すステップと、
    前記補助プロセッサの前記第1のサービスからの前記通信を前記第2のプロセスが受信したことに応答して、前記補助プロセッサの前記第1のサービスによって前記第2のプロセスをアンブロックするステップと、
    前記アンブロックされた第2のプロセスによって、前記アプリケーションプロセッサ中で前記第1のコンテキスト内のコンテキストベース動作を実行するステップと、
    前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップであって、前記補助プロセッサが、前記第2のサービスを達成するためにコンテキストベース動作を実行するステップの前記結果に基づいて追加の動作を実行する、送るステップと、
    前記第1のプロセスによって、前記第2のサービスを達成したときに前記補助プロセッサ中で生成された情報を受信するステップと
    を含む、方法。
  2. 前記補助プロセッサの第1のサービスを呼び出すステップが、デジタル信号プロセッサ中で前記第1のサービスを呼び出すステップを含む、請求項1に記載の方法。
  3. 前記補助プロセッサの第1のサービスを呼び出すステップが、モデムプロセッサ中で前記第1のサービスを呼び出すステップを含む、請求項1に記載の方法。
  4. 前記補助プロセッサの第1のサービスを呼び出すステップが、前記コンピューティングデバイスのプロセッサ中で前記第1のサービスを呼び出すステップを含む、請求項1に記載の方法。
  5. 前記補助プロセッサの第1のサービスを呼び出すステップが、リモートコンピューティングデバイスのプロセッサ中で前記第1のサービスを呼び出すステップを含む、請求項1に記載の方法。
  6. 前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップは、前記アプリケーションプロセッサが通信バス上に、前記生成されたコンテキストベース情報をプッシュするステップを含む、請求項1に記載の方法。
  7. プロセッサと、
    動作を実行するためのプロセッサ実行可能命令で構成された、前記プロセッサ上で実行されるアプリケーションプロセッサと
    を含み、前記動作は、
    前記アプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、前記第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、
    前記アプリケーションプロセッサの前記第2のプロセス、補助プロセッサの第1のサービスを呼び出し、前記第1のサービスからの通信を待つブロック状態に入るステップと、
    前記第1のプロセスによって、前記補助プロセッサの第2のサービスを呼び出すステップであって、前記第2のサービスが第2のコンテキストを有する、呼び出すステップと、
    前記補助プロセッサの前記第1のサービスからの前記通信を受信したことに応答して前記第2のプロセスをアンブロックするステップと、
    前記アンブロックされた第2のプロセスによって、前記第1のコンテキスト内のコンテキストベース動作を実行するステップと、
    前記補助プロセッサに、前記第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行させるために、前記補助プロセッサにコンテキストベース動作を実行するステップの前記結果を送るステップと、
    前記第1のプロセスによって、前記第2のサービスを達成したときに前記補助プロセッサ中で生成された情報を受信するステップと
    を含む、コンピューティングデバイス。
  8. 前記補助プロセッサがデジタル信号プロセッサであり、前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記デジタル信号プロセッサのサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項7に記載のコンピューティングデバイス。
  9. 前記補助プロセッサがモデムプロセッサであり、前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記モデムプロセッサのサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項7に記載のコンピューティングデバイス。
  10. 前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記コンピューティングデバイスのプロセッサ中の前記第1のサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項7に記載のコンピューティングデバイス。
  11. 前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップがリモートコンピューティングデバイスのプロセッサ中の前記第1のサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項7に記載のコンピューティングデバイス。
  12. 通信バスをさらに含み、前記アプリケーションプロセッサは、前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、前記アプリケーションプロセッサが前記通信バス上に、前記生成されたコンテキストベース情報をプッシュするステップを含むようにプロセッサ実行可能命令で構成された、請求項7に記載のコンピューティングデバイス。
  13. アプリケーションプロセッサと、
    第1のプロセスと第2のプロセスとが第1のコンテキストを有するように前記アプリケーションプロセッサ中で前記第1および第2のプロセスを作成するための手段と、
    前記アプリケーションプロセッサの前記第2のプロセスに、補助プロセッサの第1のサービスを呼び出させ、前記第1のサービスからの通信を待つブロック状態に入らせるための手段と、
    前記第1のプロセスに、前記補助プロセッサの第2のサービスを呼び出させるための手段であって、前記第2のサービスが第2のコンテキストを有する、呼び出させるための手段と、
    前記補助プロセッサの前記第1のサービスからの前記通信を受信したことに応答して前記第2のプロセスをアンブロックするための手段と、
    前記アンブロックされた第2のプロセスに、前記アプリケーションプロセッサ中で前記第1のコンテキスト内のコンテキストベース動作を実行させるための手段と、
    前記補助プロセッサに、前記第2のサービスを達成するためにコンテキストベース動作を実行するステップの結果に基づいて追加の動作を実行させるために、前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの前記結果を送るための手段と、
    前記アプリケーションプロセッサ中で、前記第2のサービスを達成したときに前記補助プロセッサ中で生成された情報を受信するための手段と
    を含む、コンピューティングデバイス。
  14. 前記補助プロセッサの第1のサービスを呼び出すための手段が、デジタル信号プロセッサ中で前記第1のサービスを呼び出すための手段を含む、請求項13に記載のコンピューティングデバイス。
  15. 前記補助プロセッサの第1のサービスを呼び出すための手段が、モデムプロセッサ中で前記第1のサービスを呼び出すための手段を含む、請求項13に記載のコンピューティングデバイス。
  16. 前記補助プロセッサの第1のサービスを呼び出すための手段が、前記コンピューティングデバイスのプロセッサ中で前記第1のサービスを呼び出すための手段を含む、請求項13に記載のコンピューティングデバイス。
  17. 前記補助プロセッサの第1のサービスを呼び出すための手段が、リモートコンピューティングデバイスのプロセッサ中で前記第1のサービスを呼び出すための手段を含む、請求項13に記載のコンピューティングデバイス。
  18. 前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るための手段は、通信バス上に、前記生成されたコンテキストベース情報をプッシュするための手段を含む、請求項13に記載のコンピューティングデバイス。
  19. 補助プロセッサに汎用アプリケーション動作をオフロードするための動作をアプリケーションプロセッサに実行させるように構成されたアプリケーションプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
    前記アプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、前記第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、
    前記アプリケーションプロセッサの前記第2のプロセスが、前記補助プロセッサの第1のサービスを呼び出し、前記第1のサービスからの通信を待つブロック状態に入るステップと、
    前記第1のプロセスによって、前記補助プロセッサの第2のサービスを呼び出すステップであって、前記第2のサービスが第2のコンテキストを有する、呼び出すステップと、
    前記補助プロセッサの前記第1のサービスからの前記通信を受信したことに応答して前記第2のプロセスをアンブロックするステップと、
    前記アンブロックされた第2のプロセスによって、前記アプリケーションプロセッサ中で前記第1のコンテキスト内のコンテキストベース動作を実行するステップと、
    前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップであって、前記補助プロセッサが、前記第2のサービスを達成するためにコンテキストベース動作を実行するステップの前記結果に基づいて追加の動作を実行する、送るステップと、
    前記第1のプロセスによって、前記第2のサービスを達成したときに前記補助プロセッサ中で生成された情報を受信するステップと
    を含む、非一時的コンピュータ可読記憶媒体。
  20. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記補助プロセッサの第1のサービスを呼び出すステップが、デジタル信号プロセッサ中で前記第1のサービスを呼び出すステップを含むように動作をプロセッサに実行させるように構成された、請求項19に記載の非一時的コンピュータ可読記憶媒体。
  21. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記補助プロセッサの第1のサービスを呼び出すステップが、モデムプロセッサ中で前記第1のサービスを呼び出すステップを含むように動作をプロセッサに実行させるように構成された、請求項19に記載の非一時的コンピュータ可読記憶媒体。
  22. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記補助プロセッサの第1のサービスを呼び出すステップが、前記補助プロセッサを含むコンピューティングデバイス中で前記第1のサービスを呼び出すステップを含むように動作をプロセッサに実行させるように構成された、請求項19に記載の非一時的コンピュータ可読記憶媒体。
  23. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記補助プロセッサの第1のサービスを呼び出すステップが、リモートコンピューティングデバイス中で前記第1のサービスを呼び出すステップを含むように動作をプロセッサに実行させるように構成された、請求項19に記載の非一時的コンピュータ可読記憶媒体。
  24. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、前記アプリケーションプロセッサが通信バス上に、前記生成されたコンテキストベース情報をプッシュするステップを含むように動作をプロセッサに実行させるように構成された、請求項19に記載の非一時的コンピュータ可読記憶媒体。
  25. プロセッサと、
    補助プロセッサと、
    前記補助プロセッサに結合された前記プロセッサ上で実行されるアプリケーションプロセッサと
    を含み、
    前記アプリケーションプロセッサが、
    前記アプリケーションプロセッサ中で第1のプロセスと第2のプロセスとを作成するステップであって、前記第1および第2のプロセスが第1のコンテキストを有する、作成するステップと、
    前記アプリケーションプロセッサの前記第2のプロセスが前記補助プロセッサの第1のサービスを呼び出し、第1のサービスからの通信を待つブロック状態に入るステップと、
    前記第1のプロセスによって、前記補助プロセッサの第2のサービスを呼び出すステップと、
    前記補助プロセッサの前記第1のサービスからの前記通信を受信したことに応答して前記第2のプロセスをアンブロックするステップと、
    前記アンブロックされた第2のプロセスによって、前記第1のコンテキスト内のコンテキストベース動作を実行するステップと、
    前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップと、
    前記第1のプロセスによって、前記第2のサービスを達成したときに前記補助プロセッサ中で生成された情報を受信するステップと
    を含む動作を実行するためのアプリケーションプロセッサ実行可能命令で構成され、
    前記補助プロセッサが、
    前記アプリケーションプロセッサの前記第2のプロセスを前記ブロック状態に入らせるために前記第1のサービスを実行するステップと、
    前記第1のプロセスからプロシージャ呼出しを受信したことに応答して前記第2のサービスを実行するステップと、
    前記第1のコンテキストへのアクセスを必要とする動作に遭遇すると前記第2のサービスの実行を中断するステップと、
    前記第1のサービスから、前記アプリケーションプロセッサ中で前記第2のプロセスをアンブロックするために前記通信を送るステップと、
    前記第1のコンテキスト中の前記アプリケーションプロセッサ上で実行されたコンテキストベース動作を実行するステップの前記結果を受信するステップと、
    前記第2のサービスの実行を再開し、コンテキストベース動作を実行するステップの前記受信された結果に基づいて追加の動作を実行するステップと
    を含む動作を実行するための補助プロセッサ実行可能命令で構成された、システム。
  26. 前記補助プロセッサがデジタル信号プロセッサであり、前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記デジタル信号プロセッサのサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項25に記載のシステム。
  27. 前記補助プロセッサがモデムプロセッサであり、前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記モデムプロセッサのサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項25に記載のシステム。
  28. 前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップが前記システムのプロセッサ中の前記第1のサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項25に記載のシステム。
  29. 前記アプリケーションプロセッサは、前記補助プロセッサの第1のサービスを呼び出すステップがリモートコンピューティングデバイスのプロセッサ中の前記第1のサービスを呼び出すステップを含むようにプロセッサ実行可能命令で構成された、請求項25に記載のシステム。
  30. 通信バスをさらに含み、前記アプリケーションプロセッサは、前記アプリケーションプロセッサから前記補助プロセッサにコンテキストベース動作を実行するステップの結果を送るステップが、前記アプリケーションプロセッサが前記通信バス上に、前記生成されたコンテキストベース情報をプッシュするステップを含むようにプロセッサ実行可能命令で構成された、請求項25に記載のシステム。
JP2015540679A 2012-11-09 2013-10-08 補助プロセッサへのホストオペレーティングシステムサービスの公開 Expired - Fee Related JP5982581B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261724378P 2012-11-09 2012-11-09
US61/724,378 2012-11-09
US13/721,999 US8869176B2 (en) 2012-11-09 2012-12-20 Exposing host operating system services to an auxillary processor
US13/721,999 2012-12-20
PCT/US2013/063891 WO2014074256A1 (en) 2012-11-09 2013-10-08 Exposing host operating system services to an auxillary processor

Publications (2)

Publication Number Publication Date
JP2015537301A JP2015537301A (ja) 2015-12-24
JP5982581B2 true JP5982581B2 (ja) 2016-08-31

Family

ID=50682884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015540679A Expired - Fee Related JP5982581B2 (ja) 2012-11-09 2013-10-08 補助プロセッサへのホストオペレーティングシステムサービスの公開

Country Status (5)

Country Link
US (1) US8869176B2 (ja)
EP (1) EP2917835A1 (ja)
JP (1) JP5982581B2 (ja)
CN (1) CN104769552B (ja)
WO (1) WO2014074256A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170031724A1 (en) * 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
CN106453213B (zh) * 2015-08-11 2019-09-17 阿里巴巴集团控股有限公司 一种系统间调用方法及装置
CN106484498A (zh) * 2015-08-31 2017-03-08 阿里巴巴集团控股有限公司 基于Node的事件处理方法及相关服务端设备
CN109426571B (zh) * 2017-08-28 2022-05-13 阿里巴巴集团控股有限公司 函数调用和数据访问的方法、系统、存储介质、处理器和装置
CN111209125B (zh) * 2019-12-31 2023-09-26 瑞斯康达科技发展股份有限公司 一种多进程的命令行实现方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4530051A (en) 1982-09-10 1985-07-16 At&T Bell Laboratories Program process execution in a distributed multiprocessor system
JPH03270431A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd プロセッサ間通信方式
CA2061117C (en) 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
US6038604A (en) * 1997-08-26 2000-03-14 International Business Machines Corporation Method and apparatus for efficient communications using active messages
US7076551B2 (en) 2000-04-03 2006-07-11 Texas Instruments Incorporated Using remote procedure calls to manage co-processor resources
US20030055965A1 (en) * 2001-09-20 2003-03-20 International Business Machines Corporation User-defined units of context in a distributed computer environment
US7873964B2 (en) 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
US8091086B1 (en) * 2007-07-20 2012-01-03 Parallels Holdings, Ltd. System and method for virtualization using an open bus hypervisor
US9304831B2 (en) 2008-09-29 2016-04-05 Microsoft Technology Licensing, Llc Scheduling execution contexts with critical regions
US8937622B2 (en) 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform

Also Published As

Publication number Publication date
WO2014074256A1 (en) 2014-05-15
US8869176B2 (en) 2014-10-21
CN104769552A (zh) 2015-07-08
EP2917835A1 (en) 2015-09-16
JP2015537301A (ja) 2015-12-24
CN104769552B (zh) 2016-07-13
US20140136817A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
JP6110038B2 (ja) 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション
US8806502B2 (en) Batching resource requests in a portable computing device
KR102140061B1 (ko) 상이한 명령 세트 아키텍쳐들을 갖는 프로세서들 상에서의 운영 시스템의 실행
US9529643B2 (en) Method and system for accelerating task control flow
US8631414B2 (en) Distributed resource management in a portable computing device
US20160019168A1 (en) On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
US9152523B2 (en) Batching and forking resource requests in a portable computing device
JP5982581B2 (ja) 補助プロセッサへのホストオペレーティングシステムサービスの公開
US9678790B2 (en) Devices and methods implementing operations for selective enforcement of task dependencies
US20160055029A1 (en) Programmatic Decoupling of Task Execution from Task Finish in Parallel Programs
US8943504B2 (en) Tracking and releasing resources placed on a deferred unlock list at the end of a transaction
US9710315B2 (en) Notification of blocking tasks
EP3853725A1 (en) Connected application experience
Wang et al. Models of Embedded Systems
KR101635295B1 (ko) 휴대용 컴퓨팅 디바이스에서의 자원 요청들의 트랜잭션으로의 배칭 및 이러한 트랜잭션의 포킹
Jackson et al. Android Services and Threads: Background Processing

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160609

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160801

R150 Certificate of patent or registration of utility model

Ref document number: 5982581

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees