(57)【要約】  携帯型コンピューティングデバイスは、第1の処理リソースから代替処理リソースへと同期的にタスクの負荷を軽減する。負荷軽減要求は集中化され、発信制御装置に通信される。要求は、プライマリ処理リソースから識別された代替処理リソースへと転送または発信されることが望まれるスレッドに関連する共通または共有のメモリにおいて、代替処理リソースおよびアイテムの位置を定義する。発信制御装置は、要求に応じて、プライマリ処理リソースにおいて以前は実行されていたスレッドのコンテキストを切り替えるのに必要な情報を代替処理リソースに提供するタスク発信パケットを作成する。共通または共有のメモリ空間は、望まれるパフォーマンスを提供するために活用される。代替処理リソースによって生成された結果は、プライマリ処理リソースへの返却時に共有のメモリ空間において利用可能である。
2017506777.tif 000002
【特許請求の範囲】
【請求項１】
プライマリ処理リソースと、
デバイス実行環境において発信制御装置と通信するように配置されたセカンダリ処理リソースであって、前記発信制御装置は、前記プライマリ処理リソースからの関数呼び出しを同期的に管理するように配置されているセカンダリ処理リソースと、
前記プライマリ処理リソースおよび前記セカンダリ処理リソースに結合され、それらの処理リソースからアクセス可能な共有のメモリ空間であって、前記プライマリ処理リソースおよび前記セカンダリ処理リソースは、信号/待機インターフェースを生成し応答するように配置される共有のメモリ空間と
を含むコンピューティングデバイス。
【請求項２】
前記プライマリ処理リソースは、タスク負荷軽減状態に応じて前記セカンダリ処理リソースを定義する要求を生成する請求項1に記載のコンピューティングデバイス。
【請求項３】
前記プライマリ処理リソースは、前記要求を生成する前にスレッドの実行を保留する請求項2に記載のコンピューティングデバイス。
【請求項４】
前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項3に記載のコンピューティングデバイス。
【請求項５】
前記要求は、前記セカンダリ処理リソースが前記スレッドを実行することを可能にする情報を提供するように前記発信制御装置に指示する請求項4に記載のコンピューティングデバイス。
【請求項６】
前記発信制御装置からのタスク完了信号は、オペレーティングシステムに通信される請求項4に記載のコンピューティングデバイス。
【請求項７】
前記プライマリ処理リソースに結合され、要求を受信し、タスク負荷軽減状態に応じて前記セカンダリ処理リソースを定義する発信コマンドを非同期的に生成するように配置されたグローバルコーディネータ
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項８】
前記グローバルコーディネータは、前記要求に応答して発信コマンドを開始することができるマイクロスケジューラを実行する請求項7に記載のコンピューティングデバイス。
【請求項９】
前記プライマリ処理リソースに結合され、タスク負荷軽減状態に応じて要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項１０】
前記グラフィック処理ユニット固有の制御装置は、前記要求に応答して発信コマンドを開始することができるスケジューラを実行する請求項9に記載のコンピューティングデバイス。
【請求項１１】
タスク負荷軽減状態に応じて要求を非同期に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサ
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項１２】
前記発信制御装置は、ハードウェア要素である請求項1に記載のコンピューティングデバイス。
【請求項１３】
前記発信制御装置は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
【請求項１４】
前記発信制御装置の1つまたは複数の関数の第1の組は、ハードウェア要素において有効化され、前記発信制御装置の残りの関数は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
【請求項１５】
携帯型コンピューティングデバイスにおける同期タスク発信のための方法であって、
プライマリ処理リソース、セカンダリ処理リソース、ならびにプライマリ処理リソースおよびセカンダリ処理リソースからアクセス可能な共有のメモリ空間を用いる前記携帯型コンピューティングデバイスを配置するステップと、
タスク負荷軽減状態を検出するステップと、
前記プライマリ処理リソースで実行されているスレッドの実行を保留するステップと、
前記タスク負荷軽減状態に応じて前記携帯型コンピューティングデバイスからの要求を生成するステップと、
発信制御装置に前記要求を伝達するステップであって、前記要求は、前記スレッドの実行のための前記セカンダリ処理リソースを識別するステップと
を含む方法。
【請求項１６】
前記プライマリ処理リソースおよび前記セカンダリ処理リソースは、信号/待機インターフェースを生成し応答するために配置される請求項15に記載の方法。
【請求項１７】
前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項15に記載の方法。
【請求項１８】
前記プライマリ処理リソースは、前記スレッドが完了したことをオペレーティングシステムに信号送信する前に、前記発信制御装置からのタスク完了信号を待つ請求項15に記載の方法。
【請求項１９】
前記発信制御装置に要求を通信するステップは、前記スレッドに関連付けられた情報が現在記憶されている、前記プライマリ処理リソースおよび前記セカンダリ処理リソースからアクセス可能な共有のメモリ空間において少なくとも1つの場所を通信するステップを含む請求項15に記載の方法。
【請求項２０】
前記発信制御装置に要求を伝達するステップは、前記プライマリ処理リソースに結合され、タスク負荷軽減状態に応じて要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置を使用するステップを含む請求項15に記載の方法。
【請求項２１】
前記グラフィック処理ユニット固有の制御装置は、前記セカンダリ処理リソースに向けられた発信コマンドを開始することができるスケジューラを実行する請求項20に記載の方法。
【請求項２２】
前記発信制御装置に前記要求を伝達するステップは、前記タスク負荷軽減状態に応じて、前記プライマリ処理リソースから前記要求を非同期的に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサを使用するステップを含む請求項15に記載の方法。
【請求項２３】
スレッドを処理するための第1の手段であって、タスク負荷軽減状態を検出するための機構を含む第1の手段と、
前記タスク負荷軽減状態に応答して前記スレッドを同期的に発信するための手段と、
前記スレッドを同期的に発信するための手段に応答して前記スレッドを処理するための第2の手段と
を含むコンピューティングデバイス。
【請求項２４】
前記スレッドを処理するための第1の手段は、前記スレッドを同期的に発信するための手段へと、前記スレッドを処理するための第2の手段を識別する請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記スレッドを処理するための第1の手段は、前記スレッドを同期的に発信するための手段に要求を通信する前に、前記スレッドの実行を保留する請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記スレッドを処理するための第1の手段は、前記スレッドの実行を再開する前に、前記スレッドを同期的に発信するための手段からのタスク完了信号を待つ請求項24に記載のコンピューティングデバイス。
【請求項２７】
前記スレッドを処理するための第1の手段は、前記タスク完了信号がオペレーティングシステムに受信されたという指示を転送する請求項26に記載のコンピューティングデバイス。
【請求項２８】
実行されたときに、プロセッサが関数を実行するように指示するプロセッサ命令をそこに記憶した非一時的プロセッサ読み取り可能な媒体であって、
タスク負荷軽減状態を検出するステップと、
プライマリ処理リソースにおいて実行されているスレッドの実行を保留するステップと、
前記タスク負荷軽減状態に応じて要求を生成するステップと、
発信制御装置に前記要求を伝達するステップであって、前記要求は、前記スレッドの実行のために前記プライマリ処理リソースとは異なるセカンダリ処理リソースを識別するステップと
を含む非一時的プロセッサ読み取り可能な媒体。
【請求項２９】
前記発信制御装置に前記要求を通信するステップは、前記セカンダリ処理リソースに、共有のメモリ空間においてスレッドに関連するアイテムをどこに配置するべきかを指示するアプリケーションバイナリインターフェースを定義するステップを含む請求項28に記載の非一時的プロセッサ読み取り可能な媒体。
【請求項３０】
前記アプリケーションバイナリインターフェースは、Nは整数である、N個のレジスタの組を含む請求項29に記載の非一時的プロセッサ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
携帯型デバイスにおける同期タスク発信のためのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピューティングデバイスがユビキタス化している。スマートフォン、タブレット、およびラップトップコンピュータなど、一部のコンピューティングデバイスは、携帯型である。これらのデバイスの主要な機能に加えて、多くは、周辺の機能をサポートする要素を含んでいる。たとえば、携帯電話は、携帯電話による通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(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  レジスタ
【図１】
2017506777.tif 000003
【図２】
2017506777.tif 000004
【図３】
2017506777.tif 000005
【図４】
2017506777.tif 000006
【図５】
2017506777.tif 000007
【図６】
2017506777.tif 000008
【図７】
2017506777.tif 000009
【図８】
2017506777.tif 000010
【図９】
2017506777.tif 000011
【手続補正書】
【提出日】平成28年7月22日(2016.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムオンチップに配置されたプライマリ処理リソースと、
前記システムオンチップに配置されたセカンダリ処理リソースであって、前記セカンダリ処理リソースは、前記システムオンチップに配置された発信制御装置を介して、前記プライマリ処理リソースと間接的に通信するように配置され、前記発信制御装置は、前記プライマリ処理リソースからの関数呼び出しを同期的に管理するように配置されているセカンダリ処理リソースと、
前記プライマリ処理リソースおよび前記セカンダリ処理リソースに電気的に結合され、それらの処理リソースからアクセス可能であるシステムオンチップに配置された共有のメモリ空間であって、前記プライマリ処理リソースおよび前記セカンダリ処理リソースは、信号/待機インターフェースを生成し応答するように配置される共有のメモリ空間と
を含むコンピューティングデバイス。
【請求項２】
前記プライマリ処理リソースは、タスク負荷軽減状態に応じて前記セカンダリ処理リソースを定義する要求を生成する請求項1に記載のコンピューティングデバイス。
【請求項３】
前記プライマリ処理リソースは、前記要求を生成する前にスレッドの実行を保留する請求項2に記載のコンピューティングデバイス。
【請求項４】
前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項3に記載のコンピューティングデバイス。
【請求項５】
前記要求は、前記セカンダリ処理リソースが前記スレッドを実行することを可能にする情報を提供するように前記発信制御装置に指示する請求項4に記載のコンピューティングデバイス。
【請求項６】
前記発信制御装置からのタスク完了信号は、オペレーティングシステムに通信される請求項4に記載のコンピューティングデバイス。
【請求項７】
前記プライマリ処理リソースに結合され、要求を受信し、タスク負荷軽減状態に応じて前記セカンダリ処理リソースの特定の実行ユニットを定義する発信コマンドを非同期的に生成するように配置されたグローバルコーディネータ
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項８】
前記グローバルコーディネータは、前記要求に応答して発信コマンドを開始することができるマイクロスケジューラを実行する請求項7に記載のコンピューティングデバイス。
【請求項９】
前記プライマリ処理リソースに結合され、タスク負荷軽減状態に応じて要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項１０】
前記グラフィック処理ユニット固有の制御装置は、前記要求に応答して発信コマンドを開始することができるスケジューラを実行する請求項9に記載のコンピューティングデバイス。
【請求項１１】
タスク負荷軽減状態に応じて要求を非同期に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサ
をさらに含む請求項1に記載のコンピューティングデバイス。
【請求項１２】
前記発信制御装置は、ハードウェア要素である請求項1に記載のコンピューティングデバイス。
【請求項１３】
前記発信制御装置は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
【請求項１４】
前記発信制御装置の1つまたは複数の関数の第1の組は、ハードウェア要素において有効化され、前記発信制御装置の残りの関数は、ソフトウェアにおいて有効化されている請求項1に記載のコンピューティングデバイス。
【請求項１５】
携帯型コンピューティングデバイスにおける同期タスク発信のための方法であって、
プライマリ処理リソース、セカンダリ処理リソース、ならびにバスによって前記プライマリ処理リソースおよび前記セカンダリ処理リソースからアクセス可能な共有のメモリ空間を含むシステムオンチップを用いる前記携帯型コンピューティングデバイスを配置するステップであって、前記プライマリ処理リソースおよび前記セカンダリ処理リソースは、システムオンチップに配置され、信号/待機インターフェースを通じて管理されるステップと、
タスク負荷軽減状態を検出するステップと、
前記プライマリ処理リソースで実行されているスレッドの実行を保留するステップと、
前記タスク負荷軽減状態に応じて前記プライマリ処理リソースからの要求を生成するステップと、
前記システムオンチップの発信制御装置に前記要求を伝達するステップであって、前記要求は、前記スレッドの実行のための前記セカンダリ処理リソースを識別するステップと
を含む方法。
【請求項１６】
前記信号/待機インターフェースは、命令を含む請求項15に記載の方法。
【請求項１７】
前記プライマリ処理リソースは、前記発信制御装置からのタスク完了信号を待ち、前記タスク完了信号の受信時に、前記プライマリ処理リソースは、前記スレッドの実行を再開する請求項15に記載の方法。
【請求項１８】
前記プライマリ処理リソースは、前記スレッドが完了したことをオペレーティングシステムに信号送信する前に、前記発信制御装置からのタスク完了信号を待つ請求項15に記載の方法。
【請求項１９】
前記発信制御装置に要求を通信するステップは、前記スレッドに関連付けられた情報が現在記憶されている、前記プライマリ処理リソースおよび前記セカンダリ処理リソースからアクセス可能な共有のメモリ空間において少なくとも1つの場所を通信するステップを含む請求項15に記載の方法。
【請求項２０】
前記発信制御装置に要求を伝達するステップは、前記プライマリ処理リソースに結合され、タスク負荷軽減状態に応じて要求を非同期的に受信するように配置されたグラフィック処理ユニット固有の制御装置を使用するステップを含む請求項15に記載の方法。
【請求項２１】
前記グラフィック処理ユニット固有の制御装置は、前記セカンダリ処理リソースに向けられた発信コマンドを開始することができるスケジューラを実行する請求項20に記載の方法。
【請求項２２】
前記発信制御装置に前記要求を伝達するステップは、前記タスク負荷軽減状態に応じて、前記プライマリ処理リソースから前記要求を非同期的に受信するために、リアルタイムオペレーティングシステムを用いて配置されたデジタル信号プロセッサを使用するステップを含む請求項15に記載の方法。
【請求項２３】
スレッドを処理するためにシステムオンチップに配置された第1の手段であって、タスク負荷軽減状態を検出するための機構を含む第1の手段と、
前記タスク負荷軽減状態に応答して前記スレッドを同期的に発信するために前記システムオンチップに配置された手段と、
前記スレッドを同期的に発信するための手段に応答して前記スレッドを処理するためにシステムオンチップに配置された第2の手段と、
バスを通じて前記第1の手段および前記第2の手段からアクセス可能なシステムオンチップに配置された共有のメモリ空間であって、前記第1の手段および前記第2の手段は、システムオンチップにおいて有効化され、信号/待機インターフェースに応答する共有のメモリ空間と
を含むコンピューティングデバイス。
【請求項２４】
前記スレッドを処理するための第1の手段は、前記スレッドを同期的に発信するための手段へと、前記スレッドを処理するための第2の手段を識別する請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記スレッドを処理するための第1の手段は、前記スレッドを同期的に発信するための手段に要求を通信する前に、前記スレッドの実行を保留する請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記スレッドを処理するための第1の手段は、前記スレッドの実行を再開する前に、前記スレッドを同期的に発信するための手段からのタスク完了信号を待つ請求項24に記載のコンピューティングデバイス。
【請求項２７】
前記スレッドを処理するための第1の手段は、前記タスク完了信号がオペレーティングシステムに受信されたという指示を転送する請求項26に記載のコンピューティングデバイス。
【請求項２８】
実行されたときに、プロセッサが関数を実行するように指示するプロセッサ命令をそこに記憶した非一時的プロセッサ読み取り可能な媒体であって、
タスク負荷軽減状態を検出するステップと、
プライマリ処理リソースにおいて実行されているスレッドの実行を保留するステップと、
前記タスク負荷軽減状態に応じて要求を生成するステップと、
発信制御装置に前記要求を伝達するステップであって、前記要求は、前記スレッドの実行のために前記プライマリ処理リソースとは異なるセカンダリ処理リソースを識別し、前記プライマリ処理リソースおよび前記セカンダリ処理リソースは、システムオンチップに配置され、信号/待機インターフェースに応答するステップと、
前記スレッドのコンテキストを転送するためにバスを通じて、前記プライマリ処理リソースおよび前記セカンダリ処理リソースからアクセス可能なシステムオンチップに配置された共有のメモリ空間を使用するステップと
を含む非一時的プロセッサ読み取り可能な媒体。
【請求項２９】
前記発信制御装置に前記要求を通信するステップは、前記セカンダリ処理リソースに、共有のメモリ空間においてスレッドに関連するアイテムをどこに配置するべきかを指示するアプリケーションバイナリインターフェースを定義するステップを含む請求項28に記載の非一時的プロセッサ読み取り可能な媒体。
【請求項３０】
前記アプリケーションバイナリインターフェースは、Nは整数である、N個のレジスタの組を含む請求項29に記載の非一時的プロセッサ読み取り可能な媒体。
【国際調査報告】
2017506777.tif 000012
2017506777.tif 000013