JP6240336B2 - 携帯型デバイスにおける同期タスク発信のためのシステムおよび方法 - Google Patents

携帯型デバイスにおける同期タスク発信のためのシステムおよび方法 Download PDF

Info

Publication number
JP6240336B2
JP6240336B2 JP2016546489A JP2016546489A JP6240336B2 JP 6240336 B2 JP6240336 B2 JP 6240336B2 JP 2016546489 A JP2016546489 A JP 2016546489A JP 2016546489 A JP2016546489 A JP 2016546489A JP 6240336 B2 JP6240336 B2 JP 6240336B2
Authority
JP
Japan
Prior art keywords
processing resource
thread
request
primary processing
control device
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
JP2016546489A
Other languages
English (en)
Other versions
JP2017506777A5 (ja
JP2017506777A (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 JP2017506777A publication Critical patent/JP2017506777A/ja
Publication of JP2017506777A5 publication Critical patent/JP2017506777A5/ja
Application granted granted Critical
Publication of JP6240336B2 publication Critical patent/JP6240336B2/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

携帯型デバイスにおける同期タスク発信のためのシステムおよび方法に関する。
コンピューティングデバイスがユビキタス化している。スマートフォン、タブレット、およびラップトップコンピュータなど、一部のコンピューティングデバイスは、携帯型である。これらのデバイスの主要な機能に加えて、多くは、周辺の機能をサポートする要素を含んでいる。たとえば、携帯電話は、携帯電話による通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能とを含む場合がある。そのような携帯型コンピューティングデバイスの機能が増加するにつれて、必要とされる計算または処理の能力、および一般的にそのような機能をサポートするためのデータ記憶容量も増加する。
手に持って操作できる携帯型コンピューティングデバイスのための一部の従来の設計は、特定のコンピューティングデバイスに望まれる様々な主要なおよび周辺の機能をサポートするために、複数のプロセッサおよび/または複数のコアを備えたプロセッサを含む。そのような設計は、多くの場合、単一の基板において、アナログ、デジタル、および無線周波数の回路または機能を統合しており、一般に、システムオンチップ(SoC)と呼ばれる。消費者は、ラップトップ、タブレット、およびスマートフォンに、改善されたバッテリ寿命、サイズ、および重量を望んでいる。SoC内のコンポーネントへと処理ワークを移す能力は、電力管理とユーザエクスペリエンスの両方に対する考慮である。ユーザ要件が、SoCで利用可能な処理リソースを全範囲で必要としていない場合、一部のリソースから電力を取り除く能力は、かなりの省電力をもたらすことができる。要求されたタスクの処理がより効率的な処理リソースへと一部のタスクを移す能力は、電力を節約し、パフォーマンスを向上することができる。
しかし、転送の管理に関連付けられた遅延を埋め合わせるのに十分なワークがない場合があるため、ある処理リソースから別のリソースへとタスクの転送を管理するコストは、タスクの負荷を本質的に軽減するのを妨げる可能性がある。加えて、転送を管理し、タスクを完了し、リクエスタに結果を返すことを時間が許す場合のみ、そのような転送は実行され得る。すなわち、従来のコンピューティングモデルにおけるそのような転送は、非同期的に管理される。ユーザモードのキューイングが、ある処理リソースから別のリソースへのタスク転送を管理することに関連付けられた遅延を大幅に減らすために潜在的な解決策を提供する一方、提案されたモデルは、すべてのそのような転送が非同期であるという前提に依存している。
したがって、非同期的な解決策以外を必要とする状況に適用され得る処理リソース間でタスク転送を管理するための改善された機構に対するニーズがある。
第1の処理リソースから代替処理リソースへと同期的に処理タスクの負荷を軽減するために、携帯型コンピューティングデバイスを構成するシステムおよび方法の例示的な実施形態が開示される。タスク負荷軽減要求が、例示的な配置ではSoCの中央処理装置である、ホストまたはプライマリ処理リソースから集中化される。開示されたシステムおよび方法は、グラフィック処理ユニットまたはデジタル信号プロセッサなどのデバイスが、自律性を維持することを可能にする。したがって、これらの要素がSoCの中央処理装置から分離された状態を維持することを可能にしている。
ホストまたはプライマリ処理リソースは、タスク負荷軽減要求、または発信制御装置に通信される要求を生成する。要求は、プライマリ処理リソースから転送または発信されることが望まれるスレッドに関連する共通または共有のメモリにおいて、代替処理リソースおよびアイテムの位置を定義する。共有のメモリに記憶されたアイテムまたはスレッドに関連するアイテムは、コード、データ、またはコードとデータの両方を含むことができる。発信制御装置は、要求に応じて、プライマリ処理リソースにおいて以前は実行されていたスレッドのコンテキストを切り替えるのに必要な情報を代替処理リソースに提供するタスク発信パケットを作成する。共通または共有のメモリ空間は、望まれるパフォーマンスを提供するために活用される。ホストまたはプライマリ処理リソースは、スレッドの実行を再開する前に、タスクが完了しているという発信制御装置からの指示を待つ。スレッドが代替処理リソースで実行される間に生成された結果は、プライマリ処理リソースに返すときに共通または共有のメモリ空間において容易に利用可能である。あるいは、それ以上の命令が処理されない場合、プライマリ処理リソースは、スレッドが完了したという通知をオペレーティングシステムに通信する。
コンピューティングデバイスの例示的な実施形態は、プライマリ処理リソース、デバイス実行環境において発信制御装置と通信するように配置されたセカンダリまたは代替処理リソースを含む。発信制御装置は、プライマリ処理リソースから受信された関数呼び出しを同期的に管理する。共通または共有のメモリ空間は、プライマリ処理リソースとセカンダリ処理リソースの両方からアクセス可能である。主要およびセカンダリ処理リソースは、信号/待機インターフェースに従って、それぞれの信号を生成し応答するように配置される。
携帯型コンピューティングデバイスにおける同期タスク発信のための方法の例示的な実施形態は、プライマリ処理リソース、セカンダリ処理リソース、ならびにプライマリ処理リソースおよびセカンダリ処理リソースからアクセス可能な共有のメモリ空間を用いる携帯型コンピューティングデバイスを配置するステップと、タスク負荷軽減状態を検出するステップと、プライマリ処理リソースで実行されているスレッドの実行を保留するステップと、タスク負荷軽減状態に応じて要求を生成するステップと、発信制御装置に要求を伝達するステップであって、要求は、スレッドの実行のためにセカンダリ処理リソースを識別するステップとを含む。
コンピューティングデバイスの別の例示的な実施形態は、スレッドを処理するための複数の処理リソースまたは手段を含み、スレッドを処理するための第1の手段は、携帯型コンピューティングデバイスにおいてタスク負荷軽減状態を検出するための機構を含む。スレッドを同期的に発信するための機構または手段は、タスク負荷軽減状態に応答する。スレッドを実行するための第2または代替の処理手段は、スレッドを同期的に発信するための手段に応答する。
別の例示的な実施形態は、タスク負荷軽減状態を検出するステップと、プライマリ処理リソースにおいて実行されているスレッドの実行を保留するステップと、タスク負荷軽減状態に応じて要求を生成し、発信制御装置に要求を通信するステップであって、要求は、スレッドの実行のためにプライマリ処理リソースとは異なるセカンダリ処理リソースを識別するステップとを含む様々な機能を実行するようにプロセッサに指図するプロセッサ命令およびデータをそこに記憶した非一時的プロセッサ読み取り可能な媒体である。
図面では、特に明記しない限り、様々な図を通じて、同様の参照番号は、同様の部分を参照している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
SoCとして配置されたコンピューティングデバイスの例示的な実施形態を示す概略図である。 図1のSoCにおいてプライマリ処理リソースからセカンダリ処理リソースへのタスクの発信を同期的に管理するためのサブシステムの例示的な実施形態を示す概略図である。 図1のSoCにおけるタスクの発信を管理するコンピューティング環境の例示的な実施形態を示す概略図である。 図1のSoCにおけるタスクの発信を管理するコンピューティング環境の別の例示的な実施形態を示す概略図である。 図1のSoCにおけるタスクの発信を管理するコンピューティング環境の第3の例示的な実施形態を示す概略図である。 図3で導入されたコンピューティング環境を用いてユーザモードでスケジューリングされたタスクの例示的な実施形態を示す概略図である。 図4で導入されたコンピューティング環境を用いるコーディネータによって管理されたタスクを示す概略図である。 発信パケットを定義するためのレジスタの組の使用を示す概略図である。 SoCにおける同期タスク発信のための方法の例示的な実施形態を示す流れ図である。
本明細書で使用する「例示的(exemplary)」という言葉は、「例、実例、または図として機能する」ことを意味する。「例示的」と本明細書に記述された態様は、他の態様より好ましい、または有利であるものとして必ずしも解釈されない。
この記述では、「アプリケーション」という用語は、また、オブジェクトコード、スクリプト、バイトコード、マーク付け言語ファイル、およびパッチなど、実行可能なコンテンツを持つファイルを含むことができる。さらに、本明細書において参照される「アプリケーション」はまた、オープンされることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含む場合がある。
「コンテンツ」という用語は、また、オブジェクトコード、スクリプト、バイトコード、マーク付け言語ファイル、およびパッチなど、実行可能なコンテンツを持つファイルを含むことができる。加えて、本明細書において言及された「コンテンツ」は、また、開かれる必要がある場合がある文書またはアクセスされる必要のある他のデータファイルもしくはデータ値など、本来実行可能でないファイルを含むことができる。
この記述で使用される場合、「コンポーネント」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを指すことを意図するものである。たとえば、コンポーネントは、限定しないが、プロセッサで実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータの場合がある。実例として、コンピューティングデバイスにおいて実行されているアプリケーションと、コンピューティングデバイスの両方は、コンポーネントの場合がある。1つまたは複数のコンポーネントは、プロセスおよび/または実行スレッド内に存在してもよく、コンポーネントは、1つのコンピュータに局在していてもよく、および/または、2つ以上のコンピュータに分散されていてもよい。さらに、これらの構成要素は、そこに記憶される種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。コンポーネントは、1つまたは複数のデータパケットを持つ信号に従ってなど、ローカルおよび/またはリモートのプロセスを経由して通信することができる(信号を経由して他のシステムと、たとえばローカルシステム、分散型システム、および/またはインターネットなどのネットワークを介して、別のコンポーネントと対話する1つのコンポーネントからのデータ)。
この記述では、「携帯型コンピューティングデバイス」(「PCD」)という用語は、バッテリおよび/またはキャパシタなど、制限された容量の再充電可能な電源において動作するデバイスを記述するために使用される。充電式電源を備えるPCDは、数十年にわたって使用されてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式バッテリにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、携帯電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータとすることができる。
PCD内の動作を特に言及して記述したが、記述されたシステムおよび方法は、ある処理システムから代替の処理システムへと自律的かつ同期的にタスクの負荷を軽減することに役立ち得る、複数の処理リソースを用いる任意のコンピューティングシステムに適用可能であり得る。別の言い方をすれば、本明細書に開示されたコンピューティングシステムおよび方法は、デスクトップコンピュータ、サーバコンピュータ、または複数の処理リソースを用いる任意の電子デバイスに適用可能である。
ここで、図示した例を参照する。SoCによってサポートされた携帯型コンピューティングデバイス(PCD)の限定を目的としない態様の例示的な実施形態が示されており、全体的に100と示されている。PCD100は、マルチコアCPU210を含むオンチップシステム120を含む。マルチコアCPU210は、ゼロ番目のコア215、1番目または第1のコア216、およびN番目のコア217を含む。N個のコアの各々は相互に独立しており、追加、データの移動、分岐などの命令を処理するように配置されている。マルチコアCPU210は、スケジューラ214によって示されるようにスケジュールを管理するソフトウェアを実行する。あるいは、マルチコアCPU210またはSoC120の別の部分は、ハードウェア(すなわち回路)要素、またはタスクスケジューラを可能にするように構成されたハードウェア要素の組を用いて配置される。
図1に示されるように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130がマルチコアCPU210に結合される。次に、オンチップシステム120の外部にあるディスプレイ/タッチスクリーン132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。ビデオエンコーダ134、たとえば、位相反転線(PAL:phase alternating line)エンコーダ、セカム方式(SECAM)エンコーダ、または全米テレビジョン放送方式標準化委員会(NTSC:national television system(s) committee)エンコーダなどは、マルチコアCPU210に結合される。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。また、ビデオポート138が、ビデオ増幅器136に結合される。図1に示されるように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU210に結合される。USB記憶デバイス142は、USBコントローラ140に結合される。システムメモリ230および加入者識別モジュール(SIM)カードインターフェース146は、また、オンチップシステム120のこれらの要素間でデータを転送するために、2つ以上の物理チャネルまたは経路からなるマルチコアCPU210とシステムメモリ230との間の接続219を用いて、マルチコアCPU210に結合され得る。さらに、図1に示されるように、デジタルカメラ148がマルチコアCPU210に結合されてよい。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
図1に示すように、ステレオオーディオCODEC150は、マルチコアCPU210に結合され得る。さらに、音声増幅器152は、ステレオオーディオCODEC150に結合され得る。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、音声増幅器152に結合される。図1は、マイクロフォン増幅器158が、また、ステレオオーディオCODEC150に結合され得ることを示している。加えて、マイクロフォン116が、マイクロフォン増幅器158に結合されてよい。特定の態様では、周波数変調(FM)ラジオチューナ162が、ステレオオーディオCODEC150に結合されてよい。同様に、FMアンテナ164が、FMラジオチューナ162に結合される。さらに、ステレオポート166が、ステレオオーディオCODEC150に結合される場合がある。
図1は、高周波(RF)トランシーバ168がマルチコアCPU210に結合されることも示す。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合される場合がある。図1に示されるように、キーパッド174がマルチコアCPU210に結合される。また、マイクロフォンを備えたモノヘッドセット176が、マルチコアCPU210に結合される場合がある。さらに、バイブレータデバイス178がマルチコアCPU210に結合される場合がある。図1は、電源180がUSBコントローラ140を介してオンチップシステム120に結合される場合があることをさらに示す。特定の態様では、電源180は、電力を必要とするPCD100の種々の構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源180は、交流(AC)からAC電源(図示せず)に接続されているDC変圧器まで導き出される、再充電可能なDCバッテリまたはDC電源である。
図1は、PCD100は、また、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークなど、データネットワークにアクセスするために使用され得るネットワークカード188を含むことができることをさらに示している。ネットワークカード188は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード188は集積回路に組み込まれる場合がある。すなわち、ネットワークカード188は、チップ内のフルソリューションとすることができ、個別のネットワークカード188でなくてもよい。
SoC120は、ランダムアクセスメモリ(RAM)216、発信制御装置(DC)212、デジタル信号プロセッサ(DSP)220、およびグラフィック処理ユニット(GPU)225を用いて配置される。図示した実施形態では、これらの要素の各々は、単一のハードウェア要素またはユニットとして表されている。しかし、マルチコアCPU210を用いるように、各RAM216、DC212、DSP220、およびGPU225は、望まれる場合があるように、特定のタスクのために設計された算術論理演算ユニットまたは他のコンピューティング要素など(たとえばピクセルシェーディング、ジオメトリシェーディング、ベクトル処理などのための回路)回路コンポーネントの複数のインスタンスまたはコピーを含むことができることを理解されたい。加えて、DC212を含む、これらの要素のいずれかに関連付けられた1つまたは複数の機能の第1の組は、ハードウェアまたはハードウェアとファームウェアとの組合せで実装され得る一方、それぞれの要素に関連付けられた1つまたは複数の機能の第2または残りの組は、ソフトウェアに記憶された命令を実行するために適切なプロセッサによって実行されるソフトウェアにおいて実装することができることを理解されたい。
図1に示されるように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン116、FMアンテナ164、ステレオポート166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源180は、オンチップシステム120の外部にある。
1つまたは複数のモデムを含むことができるRFトランシーバ168は、グローバルシステムフォーモバイルコミュニケーションズ(「GSM(登録商標)」)、符号分割多元接続(「CDMA」)、広帯域符号分割多元接続(「W-CDMA」)、時分割同期符号分割多元接続(「TDSCDMA」:time division synchronous code division multiple access)、ロングタームエボリューション(「LTE」)、ならびに限定しないがFDB/LTEおよびPDD/LTEワイヤレスプロトコルなど、LTEの変種の1つまたは複数をサポートする。
図示される実施形態では、マルチコアCPU210の単一の事例が示される。しかしながら、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、任意の数の同様に構成されるマルチコアCPUを含むことができることは理解されたい。あるいは、各々が単一の算術論理演算ユニットまたはコアを持つ単一のプロセッサまたは複数のプロセッサは、望まれ得るようにPCD100に関連付けられた様々な周辺デバイスおよび機能をサポートするために、PCD100または他のコンピューティングデバイスにおいて展開され得る。
例示される実施形態は、完全集積オンチップシステム120内に構成されるシステムメモリ230を示す。しかしながら、Mバイトの対応するデータ記憶容量を有する、2つ以上のベンダーから提供されるメモリモジュールを、オンチップシステム120の外部に配置できることは理解されたい。オンチップシステム120の外部に配置されるとき、システムメモリ230をサポートする種々のメモリモジュールは、データおよび電力をメモリモジュールに転送するのに適した電気的接続を含む、修正複数チャネルメモリバス(図示せず)によってCPU210に結合される。
特定の態様では、本明細書に記述された方法のステップの1つまたは複数は、マルチコアCPU210または他のハードウェア要素の1つまたは複数のコアによって望まれるように取得され、RAM216、内部キャッシュ(図示せず)、またはマルチコアCPU210内の様々なレジスタ(図示せず)にバッファされるシステムメモリ230に記憶されたデータおよびプロセッサ命令によってサポートされるようにハードウェア要素(たとえばマルチコアCPU210、DSP220、GPU225)の組合せを介して有効化され得る。CPU、DSP、およびGPUを設計する当業者は、PCD100において実行される様々なアプリケーションをサポートするためにデータを管理および操作し命令を処理するためのいくつかの様々な手法に精通している。
図2は、プライマリ処理リソースから図1で導入されたSoC120におけるセカンダリ処理リソースへのタスクの発信を同期的に管理するためのサブシステムの例示的な実施形態を示す概略図である。図示したように、サブシステム200は、バス228によってプライマリ処理リソース202およびセカンダリ処理リソースに結合された、RAM216およびシステムメモリ230など揮発性および不揮発性メモリの要素を含む。プライマリ処理リソースまたはホスト202は、図1で導入されたマルチコアCPU210を含み、O/S211などオペレーティングシステムを実行する。知られているように、O/S211は、アプリケーションまたはプログラムとPCD100のハードウェアとの間の仲介として機能する。アプリケーションコードは、CPU210などハードウェアによって実行されるが、アプリケーションコードは、O/S211と頻繁に対話するか、またはO/S211がPCDリソースを管理し、PCD100の他のアプリケーションまたはプログラムに共通サービスを提供するため、O/S211によって中断される。
動作のデフォルトモードでは、プライマリ処理リソース202は、PCD100においてアプリケーションまたはプログラムを実行するために使用される。代替の動作モードでは、プライマリ処理リソース202は、プライマリ処理リソース202と利用可能なセカンダリ処理リソース204の1つまたは複数との間のタスクまたはスレッドの形で、ワークを分割するために最適な解決策を動的に決定するランタイムインターフェースを実行する。あるいは、各プログラムまたはアプリケーションは、セカンダリ処理リソース204に特定のスレッドまたはタスクをいつ転送するべきかをプライマリ処理リソース202に指示するような方法でコンパイルされ得る。しかし、配置されると、プライマリ処理リソースまたはホスト202は、セカンダリ処理リソース204へとタスクの負荷を軽減するための要求を生成および転送することによって、負荷軽減状態の検出に応答し、図示する例では、これは、DSP220またはGPU225の1つまたは複数のインスタンスまたはコピーの場合がある。他の配置(図示せず)では、一部のスレッドの部分を処理するために、フィールドプログラマブルゲートアレイ(FPGA)、算術論理演算ユニット(ALU)、または他のデバイスが使用され得る。図2に示すように、負荷軽減要求は、セカンダリ処理リソース204へと間接的に通信される。第1の経路または分岐は、スケジューラ214を使用する一方、第2の分岐または経路は、セカンダリ処理リソース204と通信するために発信制御装置212を使用する。
非同期発信要求は、プライマリ処理リソース202によって生成され、スケジューラ214に通信される。スケジューラ214は、発信制御装置212に要求をいつ転送するべきかを決定するために優先度および1つまたは複数の追加の入力を管理するためにコーディネータ要素250を含む。同時の発信要求は、発信制御装置212に通信される。スケジューラ214から間接的かつ非同期的に要求が受信されるか、またはプライマリ処理リソース202から直接的かつ同期的に要求が受信されるかに関係なく、発信制御装置212は、発信パケットを生成し、これは、負荷が軽減されたスレッドを実行するために発信パケット情報で定義されたセカンダリ処理リソース204に必要なすべての情報を提供する。RAM216内の共有された仮想メモリ空間240は、セカンダリ処理リソース204にスレッドのコンテキストを提供するために活用され、スレッド完了時に、プライマリ処理リソース202によって継続的な処理に利用可能である。
プライマリ処理リソース202によって受信された1つまたは複数の入力信号および/またはオペレーティングシステム内で生成されたものなど1つまたは複数の内部で識別された状態またはプライマリ処理リソース202内で実行されている1つまたは複数のアプリケーションプログラムに応じて、タスク負荷軽減状態が生成される。プライマリ処理リソース202によって識別された場合、タスク負荷軽減状態は、プライマリ処理リソース202に、セカンダリ処理リソース204に移されることが望まれる実行しているスレッドを保留するように指示し、低遅延(たとえば、約1nS以下)の信号/待機インジケータを生成する。例示的な信号送信構成体は、データを含んでいる必要がなく、sigresourcealloc_signal()、signal(sigresource)、およびwait(sigresource)など命令の組を含むことができる。例示的な信号送信構成体は、PCD100において処理リソースをサポートするために使用される処理リソースおよび他の要素に露出および/または拡張される。
プライマリ処理リソース202は、セカンダリ処理リソース204へとスレッドの負荷を軽減するための要求を生成し通信する前に、好ましくは実行スレッドを保留する。この保留は、タスク完了信号がプライマリ処理リソース202に返されるまで、プライマリ処理リソース202が再開しないようにスレッドを阻止する。プライマリ処理リソース202によって発行された要求は、関数呼び出しに類似しており、スレッドの負荷が軽減された部分を実行するために使用されるセカンダリ処理リソース204の特定のインスタンスおよびタイプを識別する情報を含む。
負荷が軽減されたスレッドの発信は、プライマリ処理リソース202は、発信制御装置212を介してセカンダリ処理リソース204に結合されるという点で間接的である。単一の要素として示しているが、発信制御装置インスタンスは、プライマリ処理リソース202からセカンダリ処理リソース204へと負荷が軽減されたか、または転送された各スレッドに使用されることを理解されたい。たとえば、マルチコアCPU210が4つの処理コアを含み、処理コアの2つが別々に識別されたタスク負荷軽減状態を持っている場合、DSP220およびGPU225など別々に識別されたセカンダリ処理リソースへのそれぞれの発信パケットを生成および転送するために、発信制御装置212の少なくとも2つのインスタンスが使用される。発信制御装置212は、ハードウェア要素として、またはプライマリ処理リソース202もしくはホストにおいて実行するソフトウェアに実装され得る。さらに、発信制御装置212は、レジスタまたは他の記憶要素に結合されたリソースを処理することによって、ソフトウェアにおいて実装された他のデバイスおよび他の機能の中で、加算器およびレジスタなど、ハードウェア要素において実装された一部の機能を用いて実装され得る。
発信パケットは、依存関係制御を提供しない。すなわち、発信制御装置212に提出され転送されたすべてのものは、実行する準備ができている。発信制御装置212は、セカンダリ処理リソース204を単に識別するのではなく、一次元、二次元、または三次元の場合がある、ワークアイテム(たとえばNDRange)の単一のスペースを用いて、識別された代替処理リソースを提供する発信パケットを生成する。たとえば、960x640の画像の各ピクセルにフィルタを適用することが望まれる場合、スレッドは、画像のピクセルに各々フィルタを適用する960x640のワークアイテムを識別するであろう。すなわち、ワークアイテム(x,y)は、ピクセル(x,y)にフィルタを適用する。完了すると、セカンダリ処理リソース204は、タスク/スレッド完了信号を、発信パケットを発行した発信制御装置212に提供する。次に、発信制御装置212は、プライマリ処理リソース202にその指示を転送する。プライマリ処理リソース202は、マルチコアCPU210の残りのコアの1つまたは複数において実行されているO/S211に、それを通信することができる。配置されるように、発信制御装置212は、発信要求が、スレッドの実行に利用可能なセカンダリ処理リソース204に発行されサービスが提供されることを保証する。さらに、発信制御装置212は、PCD100における特定のスレッドと処理リソースとの間の1対1の関係をさらに定義する、要求の組と発信パケットとの間の関係を維持する。
図2にさらに示すように、グローバルコーディネータまたはスケジューラ214は、負荷軽減要求を受信し、発信制御装置212への発信コマンドを非同期に生成するために提供される。グローバルコーディネータまたはスケジューラ214は、プライマリ処理リソース202によって負荷が減らされたタスクをスケジューリングするための手段または機構を提供する。グローバルコーディネータまたはスケジューラは、PCD100において実行されたアプリケーションに関連付けられたタスクの完了を指示するのに適している。グローバルコーディネータ214またはスケジューラは、プライマリ処理リソース202から受信された1つまたは複数の要求に応じて、発信コマンドを生成し発行するコーディネータ250の1つまたは複数のインスタンスまたはコピーを用いて配置される。各コーディネータ250は、発信制御装置212への発信コマンドを開始するように構成されたマイクロスケジューラを実行するか、または含むことができる。
オプションまたは代替の配置では、DSP220は、タスク負荷軽減状態に応じて発信パケットを処理するために、リアルタイムオペレーティングシステム(RTOS)221を用いて配置される。RTOS221は、最小限のバッファリング遅延で受信されるようなリアルタイム要求を供給する。スケジューラ222は、PCD100内の組み込みシステムに予測可能な実行パターンを提供する。スケジューラ222は、プライマリ処理リソース202によって負荷が軽減されたタスクをスケジューリングするために代替の手段または機構をさらに提供する。RTOS221は、厳密に定義された時間または最終期限内に応答する。この代替配置では、DSP220は、発信制御装置212のインスタンスまたはコピー経由で、GPU225など他の処理リソースへとタスクの負荷を軽減する要求を発行する。
記述したように、スレッドを処理するための第1の手段または機構は、プライマリ処理リソースまたはホスト202を含む。スレッドを処理するためのセカンダリまたは代替手段または機構は、DSP220、GPU225、ALU(図示せず)もしくは他の回路、またはプロセッサの1つまたは複数を含む。プライマリ処理リソースまたはホスト202内で以前に実行されていたスレッドを同期的に発信するための手段または機構は、発信制御装置212を含む。スレッドを処理するための第1の手段は、発信制御装置212に直接的に、またはスケジューラ214を通じて間接的に、負荷軽減要求を通信するために配置され得る。この点で、スケジューラ214、およびスケジューラ214の指示のもとに機能する1つまたは複数のコーディネータ250は、スレッドを処理するために第1の手段から非同期的に要求を受信するための手段を提供する。スケジューラ214は、また、グローバルコーディネータまたはコンピューティング環境においてタスクの実行をスケジューリングするための手段もしくは機構と考えられ得る。さらに記述したように、GPU225は、グラフィックコマンドを処理するために手段または機構を提供する。
図3は、図1のSoC120においてプライマリ処理リソースからセカンダリ処理リソースへのタスクまたはスレッドの発信を管理するコンピューティング環境300の例示的な実施形態を示す概略図である。コンピューティング環境300は、プライマリ処理リソースまたはホスト202、代替処理環境324、および共有された仮想メモリ240を含む。プライマリ処理リソース202は、複数のCPU、コンピューティング要素、またはコアを含む。図示する実施形態では、プライマリ処理リソース202は、CPU(0)320、CPU(1)321、CPU(2)322、およびCPU(3)323を含む。しかし、より少数のコンピューティング要素、より多くのコンピューティング要素、または様々な異なるコンピューティング要素の混合が、PCD100内のホストまたはプライマリ処理リソース202に含まれ得ることを理解されたい。
処理環境324は、プライマリ処理リソース(すなわちCPU(0)320、CPU(1)321、CPU(2)322、およびCPU(3)323)と1対1の関係にある発信制御装置(すなわちDC(0)330、DC(1)331、DC(2)332、およびDC(3)333)の組を含む。ワークグループスケジューラ325は、それぞれの発信制御装置から1つまたは複数の発信パケットを受信し、セカンダリ処理リソース204の識別された実行ユニットにそこに提供される情報を転送する。図示する実施形態では、セカンダリ処理リソース204は、Nが整数である実行ユニット(N)348を通じて、実行ユニット(0)340を用いて配置される。実行ユニット340〜348は同様に配置され、単一のDSPまたはGPUに関連付けられ得るか、または実行ユニットは、DSP、複数のDSP、GPUもしくは複数のGPU、および/またはこれらの組合せの一方または両方に特有の異なるタイプの実行の場合があることに注意すること。整数Nは、二次的または代替の処理リソース204に任意の望まれる数の実行ユニットが含まれ得ることを示している。
図示する実施形態では、セカンダリ処理リソース204の実行ユニット340〜348は、DSP220およびGPU225の副要素である。しかし、セカンダリ処理リソース204は、そのように限定されない。実行ユニットは、SoC120を横断して分散された特定用途向け集積回路(ASIC)、またはスタンドアロンの算術論理演算ユニットなど他のデバイスの副要素の場合がある。
図3にさらに示したように、コンピューティング環境300を通じた一般的なプロセスフローは、円に囲まれた順序識別子とともに矢印によって示されている。たとえば、検出された負荷軽減状態に応じてCPU(2)322は、矢印1によって描写された要求を生成し、これは発信制御装置DC(2)332に通信される。応答して、DC(2)332は、矢印2によって描写された発信パケットを生成し、これはワークグループスケジューラ325に転送される。次に、ワークグループスケジューラ325は、矢印3によって示すように、発信パケットにおいて識別された実行ユニットに、発信パケットに含まれている情報を転送する。また、発信パケットにおいて識別されるように、実行ユニット(0)340は、共有された仮想メモリ240の定義された範囲245に記憶された情報を使用するように向けられる。仮想メモリ240の定義された範囲245は、負荷が軽減されるか、または発信されたスレッドのコンテキストを含む。(発信パケットにも定義されているように)定義されたワークの完了時に、実行ユニット(0)340は、プライマリ処理リソース202による追加の処理のために共有された仮想メモリ240の定義された範囲245に情報の修正版を残す。加えて、矢印4によって示すように、実行ユニット(0)340は、スレッドまたはタスクが完了しているという指示をワークグループスケジューラ325に送る。ワークグループスケジューラ325は、タスク/スレッドの完了を記録し、矢印5によって示すように発信制御装置DC(2)322にその指示を送る。次に、矢印6によって示すように、DC(2)322は、タスク/スレッドが完了しているという指示をCPU(2)322に転送する。主要またはホストの処理リソース202は、発信制御装置からのタスク完了信号を待ち、タスク完了信号の受信時に、保留されたスレッドの実行を再開する。
図6は、図3で導入されたコンピューティング環境300を用いるユーザモードでスケジューリングされたタスクの例示的な実施形態を示す概略図である。図6のコンピューティング環境300'に示すように、(CPU(2)322からDC(2)332へと通信されたスレッドの負荷を軽減するための)要求375は、定義されたアプリケーションバイナリインターフェース(ABI)および定義された発信制御装置(すなわちDC(2)332)に渡される引き数を含む、関数呼び出しとして現われる。図示したユーザモードのスケジューリングされたタスクでは、矢印1を用いて図3に描写されている要求375は、矢印1および矢印2によって置き換えられる。処理シーケンスは、その後、ワークグループスケジューラ325と対話するDC(2)332を用いる処理環境324を通じて、図3に示したものと同じであり、ワークグループスケジューラ325は、実行ユニット(0)340にさらに指示する。同様に、タスク完了は、図3と同じ方法で信号送信され、DC(2)332からのタスクまたはスレッドの完了指示は、DC(2)332からのタスク完了信号は、要求375に表された関数呼び出し「Whileロジック部分」を終了することをともに示す矢印7および矢印8で描写されているという例外があり、この終了は、負荷が軽減されたタスク/スレッドが完了したことをCPU(2)322に通知する。簡潔に述べたように、CPU(2)322は、実行ユニット(0)340によって修正されるような共有された仮想メモリ240の定義された範囲245における情報を使用して、スレッドを実行し続けることができる。
図4は、図1のSoC120におけるタスクまたはスレッドの発信を管理するコンピューティング環境400の別の例示的な実施形態を示す概略図である。コンピューティング環境400は、プライマリ処理リソースまたはホスト202、代替処理環境420、および共有された仮想メモリ240を含む。プライマリ処理リソース202は、複数のCPU、コンピューティング要素、またはコアを含む。図示する実施形態では、プライマリ処理リソース202は、CPU(0)320、CPU(1)321、CPU(2)322、およびCPU(3)323を含む。しかし、より少数のコンピューティング要素、より多くのコンピューティング要素または様々な異なるコンピューティング要素の混合が、PCD100内のホストまたはプライマリ処理リソース202に含まれ得ることを理解されたい。
処理環境420は、発信制御装置の組(すなわちDC(0)430、DC(1)431、DC(2)432、DC(3)433、およびDC(4)434)を含む。したがって、プライマリ処理リソース202のCPUは、もはや発信制御装置(すなわちDC(0)430、DC(1)431、DC(2)432、およびDC(4)433)と1対1の関係にない。ワークグループスケジューラ325は、それぞれの発信制御装置から1つまたは複数の発信パケットを受信し、セカンダリ処理リソース204の識別された実行ユニットにそこに提供される情報を転送する。図示する実施形態では、セカンダリ処理リソース204は、Nが整数である実行ユニット(N)348を通じて、実行ユニット(0)340を用いて配置される。実行ユニット340〜348は同様に配置され、単一のDSPまたはGPUに関連付けられ得るか、または実行ユニットは、DSP、複数のDSP、GPUもしくは複数のGPU、および/またはこれらの組合せの一方または両方に特有の異なるタイプの実行の場合があることに注意すること。整数Nは、セカンダリまたは代替処理リソース204に任意の望まれる数の実行ユニットが含まれ得ることを示している。
図4に示したコンピューティング環境400では、スケジューラ410は、プライマリ処理リソース202から負荷軽減要求を非同期的に受信する。スケジューラ410は、コーディネータ(0)412およびコーディネータ(M)418などコーディネータの複数のインスタンスまたはコピーを含む。ハードウェアおよび/またはソフトウェアに実装され得る、コーディネータ412〜418は、発信制御装置(すなわち、DC(0)430、DC(1)431、DC(2)432およびDC(4)433)の1つまたは複数のインスタンスまたはコピーにスレッド要求を同期的に負荷軽減する。結果的に、この配置では、発信制御装置は、コーディネータと1対1の関係にある。
図4にさらに示すように、コンピューティング環境300を通じた一般的なプロセスフローは、円で囲まれた順序識別子を用いて矢印によって示されている。たとえば、CPU(1)321は、検出された負荷軽減状態に応じて、矢印1によって描写された要求を生成し、これはスケジューラ410に通信される。スケジューラ410は、PCD100および1つまたは複数の実行しているアルゴリズムの現在の状態に応じて、コーディネータ(M)418に負荷軽減要求を転送し、次に矢印2によって示すように、発信制御装置DC(4)434に負荷軽減要求を通信する。応答して、DC(4)434は、矢印3によって描写されている発信パケットを生成し、これはワークグループスケジューラ325に転送される。次に、ワークグループスケジューラ325は、矢印4によって示すように、発信パケットにおいて識別された実行ユニットに、発信パケットに含まれている情報を転送する。発信パケットにおいて識別されるように、実行ユニット(N)348は、共有された仮想メモリ240の定義された範囲445に記憶されている情報を使用するために向けられる。仮想メモリ240の定義された範囲445は、負荷が軽減されたか、または発信されたスレッドのコンテキストを含む。定義されたワークの完了時に(また発信パケットに定義されているように)、実行ユニット(M)348は、プライマリ処理リソース202によって追加の処理のために共有された仮想メモリ240の定義された範囲445に情報の修正版を残す。加えて、矢印5によって示すように、実行ユニット(M)348は、スレッドまたはタスクが完了しているという指示をワークグループスケジューラ325に送る。ワークグループスケジューラ325はタスク/スレッド完了を記録し、矢印6によって示すように発信制御装置DC(4)434にその指示を送る。次に、矢印7によって示すように、DC(4)434は、タスク/スレッド完了の指示をCPU(1)321に転送する。
コーディネータ412〜418は処理環境に対してグローバルであり、プライマリ処理リソースから第2または代替の処理リソースへとタスクまたはスレッドの負荷を軽減することが望まれ得るように、発信制御装置430〜434と通信することができる。コーディネータ412〜418は、スケジューラ410などマイクロスケジューラによって直接的に実行され得て、1つまたは複数のドメイン固有の言語を介して開発者およびプログラマにさらされ得る。コーディネータ412〜418は、記述されたCPU320〜323とともに展開された場合、PCD100内に2レベルまたはレイヤのスケジューリングを構成および管理する能力を提供する。
図7は、図4で導入されたコンピューティング環境400を用いるユーザモードでスケジューリングされたコーディネータ対応のタスクの例示的な実施形態を示す概略図である。図4に示した要素に加えて、コンピューティング環境400'、およびより具体的には、代替処理環境720は、接続405を介してスケジューラ410と通信するRTOS349を含む。接続405は、RTOS349およびスケジューラ410が、負荷が軽減されたタスクまたはスレッドを制御可能に実行することを可能にする双方向の通信経路である。図7のコンピューティング環境400'に示すように、(CPU(1)321からDC(4)434へと通信されたスレッドの負荷を軽減するための)コーディネータ要求475が、関数呼び出しとして現われ、これは、定義されたアプリケーションバイナリインターフェース(ABI)、および定義された発信制御装置(すなわちDC(4)434)に渡される引き数を含む。図示するユーザモードでスケジューリングされたコーディネータ対応のタスクでは、矢印2を用いて図3に描写されているコーディネータ要求475は、矢印2および矢印3によって置き換えられる。処理シーケンスは、その後、図4に示したものと同じであり、DC(4)434は、ワークグループスケジューラ325と対話し、ワークグループスケジューラ325は、実行ユニット(N)348にさらに指示する。同様に、タスクまたはスレッドの完了は、図4と同じ方法で信号送信され、DC(4)434からのタスクまたはスレッドの完了指示は、DC(4)434からのタスク完了信号は、コーディネータ要求475に表された関数呼び出しの「Whileロジック部分」を終了することをともに示す矢印9および矢印10で描写されているという例外があり、この終了は、負荷が軽減されたタスク/スレッドが完了したことをCPU(1)321に通知する。その後、CPU(1)321は、実行ユニット(M)348によって修正されたように、共有された仮想メモリ240の定義された範囲445における情報を使用して、スレッドを実行し続けるか、またはスレッドが完了したことをO/Sに信号送信することができる。
図5は、図1のSoC120におけるタスクまたはスレッドの発信を管理するコンピューティング環境500の第3の例示的な実施形態を示す概略図である。この配置では、処理環境520は、DC(X)のインスタンスの代わりに、グラフィック処理ユニット固有の制御装置534を用いて配置される。そのような配置は、ワークグループスケジューラ325が非グラフィックタイプのスレッドを用いて、グラフィックコマンドを独立的かつ同時に処理することを可能にする。加えて、そのような配置は、ワークグループスケジューラ325が、他のものより1つのタイプのスレッド(たとえばグラフィックスレッド)に優先順位を付けることを可能にする。1つのグラフィック処理ユニット固有の制御装置534が示されているが、処理環境520は、そのように限定されず、望まれる数のグラフィック処理ユニット固有の制御装置を含むことができることに注意すること。
他の図示する実施形態では、グラフィック処理ユニット固有の制御装置534の各インスタンスまたはコピーは、タスクまたはスレッドの負荷を軽減するためにプライマリ処理リソース202から要求を受信するのに利用可能である。要求は、1つまたは複数の信号または状態に応じて、プライマリ処理リソース202によって発行または信号送信される。グラフィック処理ユニット固有の制御装置534は、要求に応答して発信コマンドを開始することができるスケジューラ(図示せず)を実行する。
図5にさらに示したように、コンピューティング環境500を通じた一般的なプロセスフローは、円で囲まれた順序識別子を用いて矢印によって示されている。たとえば、CPU(3)323は、検出された負荷軽減状態に応じて、矢印1によって描写された要求を生成し、これはグラフィック処理ユニット固有の制御装置534に通信される。応答して、グラフィック処理ユニット固有の制御装置534は、矢印2によって描写された発信パケットを生成し、これはワークグループスケジューラ325に転送される。次に、ワークグループスケジューラ325は、矢印3によって示すように、発信パケットにおいて識別された実行ユニットに、発信パケットに含まれる情報を転送する。また発信パケットにおいて識別されるように、実行ユニット(0)540は、共有された仮想メモリ240の定義された範囲545に記憶された情報を使用するために向けられる。仮想メモリ240の定義された範囲545は、負荷が軽減されたか、または発信されたスレッドのコンテキストを含む。定義されたワークの完了時に(また発信パケットにおいて定義されているように)、実行ユニット(0)540は、プライマリ処理リソース202によって追加の処理のために共有された仮想メモリ240の定義された範囲545に情報の修正版を残す。加えて、矢印4によって示すように、実行ユニット(0)540は、スレッドまたはタスクが完了しているという指示をワークグループスケジューラ325に送る。ワークグループスケジューラ325は、タスク/スレッド完了を記録し、矢印5によって示すようにグラフィック処理ユニット固有の制御装置534にその指示を送る。次に、矢印6によって示すように、グラフィック処理ユニット固有の制御装置534は、タスク/スレッドが完了しているという指示をCPU(3)323に転送する。記述したように、グラフィック処理ユニット固有の制御装置は、GPU225によってグラフィックコマンドの処理をスケジューリングするための手段または機構を提供する。
図8は、発信パケットを定義するためにレジスタの組の使用を示す概略図である。発信パケットは、セカンダリ処理リソースと通信するためにアプリケーションバイナリインターフェース(ABI)800を定義する。図8に示すように、ABI800は、特定の方法で配置されたレジスタの組である。たとえば、ABIは、望まれる数のレジスタを用いる組を含むことができる。すなわち、ABIは、セカンダリ処理リソースによって使用される情報を記憶するために整数のレジスタによって定義され得る。たとえば、レジスタ801はカーネルアドレスを含む。レジスタ802は、ワーク領域の次元数を識別するための2ビット、いくつかの予約されたビット、およびワーク領域のx次元のサイズを含む。レジスタ803は、ワークスペースのy次元およびz次元のサイズを識別するビットを含む。レジスタ804は、xおよびy次元のワークグループサイズを識別する。レジスタ805は、z次元に対するワークグループサイズおよびワークグループセグメントサイズを識別する。レジスタ806は、完了値アドレスを含む一方、レジスタ807およびレジスタ808は、セカンダリ処理リソースへと通信され得るそれぞれの引き数を定義する。引き数の転送を最適化するために代替レジスタが使用され得て、発信制御装置212への呼び出しをブロックするために様々な符号化手法および/または処理ルールが実装され得ることが可能である。
図9は、SoC120における同期タスク発信のための方法900の例示的な実施形態の流れ図である。図示するように、方法900はブロック902で開始し、ここで、携帯型コンピューティングデバイス100は、メモリ容量240を共有する主要およびセカンダリ処理リソースを用いて配置される。ブロック904で、プライマリ処理リソース202またはPCD100に配置された他の検知器もしくはセンサは、負荷軽減状態を検出する。負荷軽減状態に応じて、ブロック906に示すように、プライマリ処理リソース202で実行されているスレッドが保留される。プライマリ処理リソース202は、ブロック908に示すように、負荷軽減状態および/または実行されているスレッドの保留の確認に応じて要求を生成する。ブロック910にさらに示すように、要求は、発信制御装置212に通信される。発信制御装置に要求を伝達するステップは、スレッドに関連付けられた情報が現在記憶されている、プライマリ処理リソース202およびセカンダリ処理リソース204からアクセス可能な共有のメモリ空間(すなわちSVM240)において少なくとも1つの場所を通信するステップを含む。記述したように、要求は、以前に保留されたスレッドの継続している実行に適したセカンダリ処理リソースを識別する。また記述したように、共有のメモリ空間が活用されるため、保留されたスレッドに関連付けられた文脈の情報は、セカンダリまたは代替処理リソースによって容易に使用され得て、完了時に、そのリソースによるさらなる処理が必要または望まれる場合、プライマリ処理リソースに単に転送され得る。
負荷が軽減されたスレッドまたはタスクがまだ処理中である場合、「No」ラベルが付けられた矢印に示されているように、既存の判定ブロック912、ブロック914、クエリは、待機コマンドの完了時に繰り返される。そうでない場合、ブロック916に示すように、発信制御装置212は、タスクまたはスレッドが完了していることをプライマリ処理リソースに指示するために使用される。その後、ブロック918に示すように、プライマリ処理リソース202はスレッドを再開し、望まれるように、ブロック904〜918の関数が繰り返される。
図示および記述したように、プライマリ処理リソースまたはホスト202は、スレッドを処理するための機構を提供する。スレッドは、O/Sまたは制御装置によって独立的に管理され得る命令の最も小さい連続である。さらに記述したように、1つもしくは複数の発信制御装置212または1つもしくは複数のグラフィック処理固有の制御装置334は、プライマリ処理リソース202から発行または通信された要求において指示されるように、識別されたスレッドを同期的に負荷軽減または発信するための機構を提供する。また図示および記述したように、DSP、GPU、FPGA、ALUなどセカンダリまたは代替処理リソースは、発信パケットによって向けられるように負荷が軽減されたスレッドを実行するための機構を提供する。
1つまたは複数の非一時的プロセッサまたはコンピュータ可読媒体または媒体は、実行されたときに、タスク負荷軽減状態を検出する望まれる関数を実行するようにプロセッサに指図するプロセッサ命令をそこに記憶している場合があり、プライマリ処理リソースにおいて実行されているスレッドの実行を保留し、タスク負荷軽減状態に応じて要求を生成し、発信制御装置に要求を伝達し、要求は、スレッドの実行のためにプライマリ処理リソースとは異なるセカンダリ処理リソースを識別する。発信制御装置に要求を伝達する関数は、セカンダリ処理リソースに、共有のメモリ空間に現在記憶されているスレッドに関連するアイテムをどこで見つけるべきかを指示する、アプリケーションバイナリインターフェースを定義するステップを含むことができる。
この明細書に記述したプロセスまたはプロセスフローにおける特定のステップは、当然、記述したように発明が機能するために他より重要である。しかし、本システムおよび方法は、そのような順序または連続が上記したシステムおよび方法の機能を変更しない場合、記述されたステップの順序に限定されるものではない。すなわち、一部のステップは、他のステップの前、後、または並行して(実質的に同時に)実行され得ることが認識される。一部の場合には、特定のステップは、上記したシステムおよび方法から逸脱することなく、省略されるかまたは実行されない場合がある。さらに、「その後(thereafter)」、「次いで(then)」「次に(next)」、「続いて(subsequently)」などの言葉は、ステップの順序を制限することを意図するものではない。これらの言葉は、例示的な方法の記述を通じて読者を案内するために単に使用されるものである。
加えて、プログラミングに熟練した人であれば、本明細書のフローチャートおよび関連する例に基づいて、困難なく、開示された要素および関数を実装するために、コンピュータコードを記述するか、または適切なハードウェアおよび/または回路を識別することができる。したがって、プログラムコード命令または詳細なハードウェアデバイスの特定の組の開示は、システムおよび方法を構成し使用する方法について適切に理解するために必要であるとは考えられない。請求されるプロセッサ対応のプロセスの機能は、上記のより詳細な記述において、様々なプロセスフローを示すことができる図面に関連してより詳細に説明されている。
先に示されたような1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアにおいて実施される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶することができる。コンピュータ可読媒体は、データ記憶媒体を含む。
記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の利用可能な媒体とすることができる。例として、制限しないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュ、CD-ROMもしくは他の光学ディスク記憶装置、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形で望まれるプログラムコードを運ぶか記憶するために使用され得て、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。ディスク(disk)およびディスク(disc)は、本明細書で使用する場合、コンパクトディスク(「CD」)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(「DVD」)、フロッピーディスク、およびブルーレイディスクを含み、ディスク(disk)は通常、磁気的にデータを再生する一方、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体の範囲内に含まれているべきである。
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本システムおよび方法の概念から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
100 携帯型コンピューティングデバイス、PCD
116 マイクロフォン
120 オンチップシステム、SoC
120 完全集積オンチップシステム
128 ディスプレイコントローラ
130 タッチスクリーンコントローラ
132 ディスプレイ/タッチスクリーン
134 ビデオエンコーダ
136 ビデオ増幅器
138 ビデオポート
140 ユニバーサルシリアルバス(USB)コントローラ
142 USBポート
142 USB記憶デバイス
146 加入者識別モジュール(SIM)カードインターフェース
148 デジタルカメラ
150 ステレオオーディオCODEC
152 音声増幅器
154 第1のステレオスピーカ
156 第2のステレオスピーカ
158 マイクロフォン増幅器
162 周波数変調(FM)ラジオチューナ
164 FMアンテナ
166 ステレオポート
168 高周波(RF)トランシーバ
170 RFスイッチ
172 RFアンテナ
174 キーパッド
176 モノヘッドセット
178 バイブレータデバイス、バイブレータ
180 電源
188 ネットワークカード
200 サブシステム
202 プライマリ処理リソースまたはホスト
204 セカンダリ処理リソース
210 マルチコアCPU
211 O/S
212 発信制御装置(DC)
214 グローバルコーディネータまたはスケジューラ
215 ゼロ番目のコア
216 ランダムアクセスメモリ(RAM)、第1のコア
217 N番目のコア
219 接続
220 デジタル信号プロセッサ(DSP)
221 RTOS
222 スケジューラ
225 GPU
225 グラフィック処理ユニット(GPU)
228 バス
230 システムメモリ
240 SVM
240 仮共有された想メモリ空間
245 定義された範囲
250 コーディネータ要素、コーディネータ
300 コンピューティング環境
320〜323 CPU
320 CPU(0)
321 CPU(1)
322 CPU(2)
322 発信制御装置DC(2)
323 CPU(3)
324 処理環境
324 代替処理環境
325 ワークグループスケジューラ
330 DC(0)
331 DC(1)
332 発信制御装置DC(2)
333 DC(3)
334 グラフィック処理固有の制御装置
340〜348 実行ユニット
340 実行ユニット(0)
348 実行ユニット(M)
348 実行ユニット(N)
349 RTOS
375 要求
400 コンピューティング環境
405 接続
410 スケジューラ
412〜418 コーディネータ
412 コーディネータ(0)
418 コーディネータ(M)
420 代替処理環境
430〜434 発信制御装置
430 DC(0)
431 DC(1)
432 DC(2)
433 DC(3)
433 DC(4)
434 発信制御装置DC(4)
445 定義された範囲
475 コーディネータ要求
500 コンピューティング環境
520 処理環境
534 グラフィック処理ユニット固有の制御装置
540 実行ユニット(0)
545 定義された範囲
720 代替処理環境
800 ABI
800 アプリケーションバイナリインターフェース(ABI)
801 レジスタ
802 レジスタ
803 レジスタ
804 レジスタ
805 レジスタ
806 レジスタ
807 レジスタ
808 レジスタ

Claims (27)

  1. システムオンチップに配置されたプライマリ処理リソースと、
    システムオンチップに配置された発信制御装置であって、前記プライマリ処理リソースと通信する、発信制御装置と、
    前記発信制御装置と通信する前記システムオンチップに配置された複数のセカンダリ処理リソースであって、前記複数のセカンダリ処理リソースは、前記発信制御装置を介して、前記プライマリ処理リソースと間接的に通信するように配置され、前記複数のセカンダリ処理リソースのうちの第1のセカンダリ処理リソースがスレッドを実行するための前記プライマリ処理リソースからの要求が、前記発信制御装置に伝達され、前記発信制御装置は、前記プライマリ処理リソースからの前記要求を同期的に管理し、前記プライマリ処理リソースからの要求は、前記第1のセカンダリ処理リソースを識別する、複数のセカンダリ処理リソースと、
    前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースに電気的に結合され、前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースにとってアクセス可能である共有のメモリ空間であって、前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースは、信号/待機インターフェースへの信号を生成するとともに信号/待機インターフェースからの信号に応答するように配置される共有のメモリ空間と、
    前記プライマリ処理リソースに結合されるとともに、前記要求を受信して、タスク負荷軽減のための指示に応じて前記第1のセカンダリ処理リソースの特定の実行ユニットを定義する前記発信制御装置に対する発信コマンドを非同期的に生成するように配置されたグローバルコーディネータと
    を含むコンピューティングデバイス。
  2. 前記プライマリ処理リソースからの前記要求は、前記スレッドを実行するために使用される前記セカンダリ処理リソースのタイプに関する情報を含む請求項1に記載のコンピューティングデバイス。
  3. 前記プライマリ処理リソースは、前記要求を生成する前に前記プライマリ処理リソース上でのスレッドの実行を保留する請求項2に記載のコンピューティングデバイス。
  4. 前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項3に記載のコンピューティングデバイス。
  5. 前記要求は、前記第1のセカンダリ処理リソースが前記スレッドを実行することを可能にする情報を提供するように前記発信制御装置に指示する請求項4に記載のコンピューティングデバイス。
  6. 前記発信制御装置からのタスク完了信号は、オペレーティングシステムに伝達される請求項4に記載のコンピューティングデバイス。
  7. 前記グローバルコーディネータは、前記要求に応答して発信コマンドを開始することができるマイクロスケジューラを実行する請求項1に記載のコンピューティングデバイス。
  8. 前記プライマリ処理リソースに結合され、タスク負荷軽減のための指示に応じて前記要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置
    をさらに含む請求項1に記載のコンピューティングデバイス。
  9. 前記グラフィック処理ユニット固有の制御装置は、前記要求に応答して発信コマンドを開始することができるスケジューラを実行する請求項8に記載のコンピューティングデバイス。
  10. タスク負荷軽減のための指示に応じて前記要求を非同期に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサ
    をさらに含む請求項1に記載のコンピューティングデバイス。
  11. 前記発信制御装置は、ハードウェア要素である請求項1に記載のコンピューティングデバイス。
  12. 前記発信制御装置は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
  13. 前記発信制御装置の1つまたは複数の関数の第1の組は、ハードウェア要素において有効化され、前記発信制御装置の残りの関数は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
  14. 携帯型コンピューティングデバイスにおける同期タスク発信のための方法であって、
    プライマリ処理リソース、前記プライマリ処理リソースと通信する発信制御装置、前記発信制御装置と通信する複数のセカンダリ処理リソース、ならびにバスによって前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースにとってアクセス可能な共有のメモリ空間を有する前記携帯型コンピューティングデバイスを提供するステップであって、前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースは、システムオンチップに配置され、信号/待機インターフェースへの信号を生成するとともに信号/待機インターフェースからの信号に応答するように配置される、ステップと、
    タスク負荷軽減のための指示を検出するステップと、
    前記プライマリ処理リソースで実行されているスレッドの実行を保留するステップと、
    前記タスク負荷軽減のための指示に応じて前記プライマリ処理リソースからの要求を生成するステップであって、前記要求は、前記スレッドの実行のための前記複数のセカンダリ処理リソースのうちの第1のセカンダリ処理リソースを識別する、ステップと、
    前記発信制御装置に前記要求を伝達するステップであって、前記発信制御装置は、前記プライマリ処理リソースからの前記第1のセカンダリ処理リソースのための前記要求を同期的に管理するように配置される、ステップとを含み、
    前記発信制御装置に前記要求を伝達するステップは、前記スレッドに関連付けられた情報が現在記憶されている、前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースにとってアクセス可能な前記共有のメモリ空間における少なくとも1つの場所を伝達するステップを含む、方法。
  15. 前記信号/待機インターフェースは、命令を含む請求項14に記載の方法。
  16. 前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項14に記載の方法。
  17. 前記プライマリ処理リソースは、前記スレッドが完了したことをオペレーティングシステムに信号送信する前に、前記発信制御装置からのタスク完了信号を待つ請求項14に記載の方法。
  18. 前記発信制御装置に要求を伝達するステップは、前記プライマリ処理リソースに結合され、タスク負荷軽減のための指示に応じて要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置を使用するステップを含む請求項14に記載の方法。
  19. 前記グラフィック処理ユニット固有の制御装置は、前記セカンダリ処理リソースに向けられた発信コマンドを開始することができるスケジューラを実行する請求項18に記載の方法。
  20. 前記発信制御装置に前記要求を伝達するステップは、前記タスク負荷軽減のための指示に応じて、前記プライマリ処理リソースから前記要求を非同期的に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサを使用するステップを含む請求項14に記載の方法。
  21. スレッドを処理するための第1の手段であって、タスク負荷軽減のための指示を検出するための機構および前記スレッドの負荷軽減処理に対する要求を生成するための機構を含む、第1の手段と、
    前記タスク負荷軽減のための指示および前記負荷軽減処理に対する要求に応答して前記スレッドを同期的に発信するための手段と、
    前記スレッドを同期的に発信するための手段と通信し前記スレッドを同期的に発信するための手段に応答して前記スレッドを処理するための複数の第2の手段であって、前記スレッドを処理するための第1の手段からの前記負荷軽減処理に対する要求は、前記複数の第2の手段のうちの第1の第2の手段を識別する、複数の第2の手段と、
    バスを通じて前記第1の手段および前記第1の第2の手段にとってアクセス可能な共有のメモリ空間であって、前記第1の手段および前記複数の第2の手段は、システムオンチップにおいて有効化され、信号/待機インターフェースへの信号を生成するとともに信号/待機インターフェースからの信号に応答することができ、前記要求を生成するための機構は、前記スレッドに関連付けられた情報が現在記憶されている、前記処理するための第1の手段および前記処理するための第1の第2の手段にとってアクセス可能な前記共有のメモリ空間における少なくとも1つの場所を伝達することを含む、共有のメモリ空間と
    を含むコンピューティングデバイス。
  22. 前記スレッドを処理するための前記第1の手段からの前記負荷軽減処理に対する要求は、前記スレッドを実行するために使用される前記第2の手段のタイプに関する情報を含む請求項21に記載のコンピューティングデバイス。
  23. 前記スレッドを処理するための第1の手段は、前記スレッドを同期的に発信するための手段に前記要求を伝達する前に、前記スレッドの実行を保留する請求項22に記載のコンピューティングデバイス。
  24. 前記スレッドを処理するための第1の手段は、前記スレッドの実行を再開する前に、前記スレッドを同期的に発信するための手段からのタスク完了信号を待つ請求項22に記載のコンピューティングデバイス。
  25. 前記スレッドを処理するための第1の手段は、前記タスク完了信号がオペレーティングシステムに受信されたという指示を転送する請求項24に記載のコンピューティングデバイス。
  26. 実行されたときに、プロセッサが関数を実行するように指示するプロセッサ命令をそこに記憶したプロセッサ読み取り可能な記憶媒体であって、
    タスク負荷軽減のための指示を検出するステップと、
    プライマリ処理リソースにおいて実行されているスレッドの実行を保留するステップと、
    前記タスク負荷軽減のための指示に応じて要求を生成するステップであって、前記要求は、前記スレッドを実行する複数のセカンダリ処理リソースのうちの第1のセカンダリ処理リソースを識別する、ステップと、
    前記複数のセカンダリ処理リソースと通信する発信制御装置に前記要求を伝達するステップであって、前記発信制御装置は、前記プライマリ処理リソースからの前記複数のセカンダリ処理リソースのための要求を同期的に管理するように配置され、前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースは、システムオンチップに配置され、信号/待機インターフェースへの信号を生成するとともに信号/待機インターフェースからの信号に応答するように配置される、ステップと、
    前記スレッドのコンテキストを転送するためにバスを通じて前記プライマリ処理リソースおよび前記複数のセカンダリ処理リソースにとってアクセス可能な共有のメモリ空間を使用するステップと
    を含み、
    前記発信制御装置に前記要求を伝達するステップは、前記第1のセカンダリ処理リソースに、共有のメモリ空間においてスレッドに関連するアイテムをどこに配置するべきかを指示するアプリケーションバイナリインターフェースを定義するステップを含む、プロセッサ読み取り可能な記憶媒体。
  27. 前記アプリケーションバイナリインターフェースは、Nは整数である、N個のレジスタの組を含む請求項26に記載のプロセッサ読み取り可能な記憶媒体。
JP2016546489A 2014-01-21 2015-01-21 携帯型デバイスにおける同期タスク発信のためのシステムおよび方法 Expired - Fee Related JP6240336B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/160,385 2014-01-21
US14/160,385 US9588804B2 (en) 2014-01-21 2014-01-21 System and method for synchronous task dispatch in a portable device
PCT/US2015/012283 WO2015112625A1 (en) 2014-01-21 2015-01-21 System and method for synchronous task dispatch in a portable device

Publications (3)

Publication Number Publication Date
JP2017506777A JP2017506777A (ja) 2017-03-09
JP2017506777A5 JP2017506777A5 (ja) 2017-06-15
JP6240336B2 true JP6240336B2 (ja) 2017-11-29

Family

ID=52469310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016546489A Expired - Fee Related JP6240336B2 (ja) 2014-01-21 2015-01-21 携帯型デバイスにおける同期タスク発信のためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9588804B2 (ja)
EP (1) EP3097488A1 (ja)
JP (1) JP6240336B2 (ja)
KR (1) KR101798369B1 (ja)
CN (1) CN105917311B (ja)
WO (1) WO2015112625A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
DE212014000045U1 (de) 2013-02-07 2015-09-24 Apple Inc. Sprach-Trigger für einen digitalen Assistenten
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9830676B2 (en) * 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
GB2545435B (en) * 2015-12-15 2019-10-30 Advanced Risc Mach Ltd Data processing systems
US10838721B1 (en) * 2016-03-31 2020-11-17 EMC IP Holding Company LLC Adaptive thread processing of IO requests
US10055255B2 (en) * 2016-04-14 2018-08-21 International Business Machines Corporation Performance optimization of hardware accelerators
US10368283B2 (en) 2016-04-29 2019-07-30 International Business Machines Corporation Convergence of cloud and mobile environments
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10255105B2 (en) * 2017-04-11 2019-04-09 Imagination Technologies Limited Parallel computing architecture for use with a non-greedy scheduling algorithm
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
AU2018256560A1 (en) * 2017-05-12 2018-11-29 Apple Inc. Synchronization and task delegation of a digital assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
CN111052084B (zh) * 2017-08-30 2023-10-17 富士胶片株式会社 图像处理装置、图像处理方法以及图像处理程序
GB2566514B (en) * 2017-09-15 2020-01-08 Imagination Tech Ltd Resource allocation
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US11157437B2 (en) * 2018-09-26 2021-10-26 Micron Technology, Inc. Memory pooling between selected memory resources via a base station
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
CN111026516B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 异常处理方法、任务分派装置、任务处理系统及存储介质
CN111026520B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 任务处理方法、处理器的控制装置及处理器
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11438452B1 (en) 2019-08-09 2022-09-06 Apple Inc. Propagating context information in a privacy preserving manner
US11875168B2 (en) * 2020-03-19 2024-01-16 Oracle International Corporation Optimizing execution of foreign method handles on a virtual machine
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN113190349B (zh) * 2021-04-29 2023-09-01 汕头大学 主机任务异步执行的方法、系统及计算机存储介质
CN113179327B (zh) * 2021-05-14 2023-06-02 中兴通讯股份有限公司 基于大容量内存的高并发协议栈卸载方法、设备、介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110203A1 (en) * 2000-02-17 2003-06-12 Brenner Larry Bert Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system
US20020178313A1 (en) * 2001-03-30 2002-11-28 Gary Scott Paul Using software interrupts to manage communication between data processors
US6868437B1 (en) 2001-05-18 2005-03-15 Agilent Technologies, Inc. System and method for interprocess communication of remote procedure call messages utilizing shared memory
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US9015501B2 (en) * 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
US8127113B1 (en) * 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
KR101400286B1 (ko) * 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
JP5191980B2 (ja) * 2009-11-19 2013-05-08 公益財団法人鉄道総合技術研究所 鉄道車両運転衝撃事故時の乗客被害低減用袖仕切り装置
US20120110303A1 (en) 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
US20120198458A1 (en) * 2010-12-16 2012-08-02 Advanced Micro Devices, Inc. Methods and Systems for Synchronous Operation of a Processing Device
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US8533720B2 (en) * 2011-02-25 2013-09-10 International Business Machines Corporation Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit
US20120331278A1 (en) 2011-06-23 2012-12-27 Mauricio Breternitz Branch removal by data shuffling
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
US10255104B2 (en) * 2012-03-29 2019-04-09 Advanced Micro Devices, Inc. System call queue between visible and invisible computing devices
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
US9286116B2 (en) * 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
US9104464B2 (en) * 2012-11-06 2015-08-11 International Business Machines Corporation Main processor support of tasks performed in memory
US9588808B2 (en) * 2013-05-31 2017-03-07 Nxp Usa, Inc. Multi-core system performing packet processing with context switching

Also Published As

Publication number Publication date
KR101798369B1 (ko) 2017-11-16
US9588804B2 (en) 2017-03-07
KR20160110406A (ko) 2016-09-21
EP3097488A1 (en) 2016-11-30
CN105917311A (zh) 2016-08-31
CN105917311B (zh) 2019-03-12
US20150205632A1 (en) 2015-07-23
WO2015112625A1 (en) 2015-07-30
JP2017506777A (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
JP6240336B2 (ja) 携帯型デバイスにおける同期タスク発信のためのシステムおよび方法
EP3223151B1 (en) Hot-switching method and device for operating systems, and mobile terminal
US9531775B2 (en) Mobile application migration to cloud computing platform
TWI540473B (zh) 用於觸控資料之分佈預處理與顯示區域控制的方法、設備與系統
EP3245587B1 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
JP6961686B2 (ja) トリガ動作を用いたgpuリモート通信
US20130151747A1 (en) Co-processing acceleration method, apparatus, and system
JP2017506777A5 (ja)
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
US10459773B2 (en) PLD management method and PLD management system
US20150261686A1 (en) Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
US8725800B1 (en) Mobile photo application migration to cloud computing platform
TWI668574B (zh) 服務品質序數修正之計算裝置、系統單晶片及方法
EP3633507B1 (en) Technologies for secure and efficient native code invocation for firmware services
JP2013152541A (ja) コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
KR20140096587A (ko) 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
WO2017166207A1 (en) Cooperative scheduling of virtual machines
KR20160061726A (ko) 인터럽트 핸들링 방법
CN108139932B (zh) 关闭关键执行路径的任务信令
JP6515771B2 (ja) 並列処理装置及び並列処理方法
WO2014107546A1 (en) Dma channels
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
CN117311812A (zh) 用于重排序缓冲的方法及其相关产品
CN118092628A (zh) 控制方法、控制装置、芯片及计算机可读存储介质
CN114443255A (zh) 一种线程调用方法和装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170502

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170502

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170502

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170728

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: 20171006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171102

R150 Certificate of patent or registration of utility model

Ref document number: 6240336

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees