(57)【特許請求の範囲】
【請求項１】
大規模なコンピューティング要件の並列処理のための装置であって、前記装置は、
中央処理ユニット（「ＣＰＵ」）と、
前記ＣＰＵと電子通信するタスクプールと、
前記タスクプールと電子通信する第１の連帯セルであって、前記第１の連帯セルは、前記連帯セルが処理する整合タスクを、前記ＣＰＵからの命令を必要とすることなく、前記タスクプールから先回りして読み出すように構成される第１のエージェントを備える、第１の連帯セルと
を備え、
前記ＣＰＵは、前記要件を１つまたは複数のスレッドに分割して前記スレッドを前記タスクプール内に置くことによって、前記タスクプールに投入し、各スレッドは、１つまたは複数のタスクを備え、前記整合タスクは、前記タスクのうちの１つであり、
各タスクは、記述子を備え、前記記述子は、
実行されるべき機能と、
前記機能が実行されるべきであるデータのメモリ場所と
を少なくとも含み、
前記第１のエージェントは、ソースアドレスと宛先アドレスとペイロードとを備えるデータフレームであり、
前記第１のエージェントは、
前記第１の連帯セルによって前記第１のエージェントが前記タスクプールにディスパッチされることであって、その間中、前記ソースアドレスは、前記第１の連帯セルのアドレスであり、前記宛先アドレスは、前記タスクプールのアドレスであり、前記ペイロードは、前記第１の連帯セルが実施するように構成される機能のリストを含む、ことと、
処理されることが可能な状態にあるタスクであって前記第１の連帯セルが実施することが可能である機能を有するタスクに関して、前記第１のエージェントが前記タスクプールを検索することと、
前記第１の連帯セルに前記第１のエージェントが戻ることであって、その間中、前記ソースアドレスは、前記タスクプールのアドレスであり、前記宛先アドレスは、前記第１の連帯セルのアドレスであり、前記ペイロードは、前記整合タスクの前記記述子を備える、ことと
によって、前記整合タスクを読み出す、装置。
【請求項２】
前記タスクプールは、前記スレッドのタスクが完了すると、これを前記ＣＰＵに通知する、請求項１に記載の装置。
【請求項３】
前記タスクは、それぞれ、一組のタスクタイプから選択されたタスクタイプを含み、前記第１の連帯セルは、前記タスクタイプのうちの１つまたは複数のタスクを実施するように構成される、請求項１に記載の装置。
【請求項４】
前記整合タスクは、処理されることが可能な状態にあるタスクであって前記第１の連帯セルが実施することが可能であるタスクタイプを有するタスクである、請求項３に記載の装置。
【請求項５】
タスクプールと、
複数の第１のタスクおよび複数の第２のタスクを前記タスクプールに投入するように構成されるコントローラと、
第１のコプロセッサであって、前記第１のコプロセッサは、連続的に、全て前記第１のコプロセッサと前記コントローラとの間で通信することなく、前記タスクプールから第１のタスクを読み出し、前記第１のタスクを処理し、第１の結果データを生成し、前記第１のタスクの完了を反映するように前記タスクプールを更新するように構成される、第１のコプロセッサと、
第２のコプロセッサであって、前記第２のコプロセッサは、連続的に、全て前記第２のコプロセッサと前記コントローラとの間で通信することなく、前記タスクプールから第２のタスクを読み出し、前記第２のタスクを処理し、第２の結果データを生成し、前記第２のタスクの完了を反映するように前記タスクプールを更新するように構成される、第２のコプロセッサと
を備える処理システムであって、
前記処理システムは、前記コントローラとの間で通信することなく、プラグアンドプレイベースで、前記第１のコプロセッサ、前記第２のコプロセッサ、および追加のコプロセッサを前記処理システムに動的に受け入れるように構成される、処理システム。
【請求項６】
前記第１のタスクは、第１のタスクタイプの印を含み、前記第１のコプロセッサは、前記第１のタイプのタスクを実施するように構成され、第１のエージェントは、前記第１のタイプのタスクに関して前記タスクプールを検索するように構成され、
前記第２のタスクは、第２のタスクタイプの印を含み、前記第２のコプロセッサは、前記第２のタイプのタスクを実施するように構成され、第２のエージェントは、前記第２のタイプのタスクに関して前記タスクプールを検索するように構成される、請求項５に記載の処理システム。
【請求項７】
前記第１のコプロセッサは、それが利用可能な処理容量を有しているときを判定し、前記判定に応答して前記第１のエージェントを前記タスクプールにディスパッチするように構成される、請求項６に記載の処理システム。
【請求項８】
前記コントローラおよび前記タスクプールは、モノリシック集積回路（ＩＣ）上に常駐し、前記第１のコプロセッサおよび前記第２のコプロセッサは、前記ＩＣ上に常駐しない、請求項６に記載の処理システム。
【請求項９】
前記コントローラ、前記タスクプール、ならびに、前記第１のコプロセッサおよび前記第２のコプロセッサは、モノリシック集積回路（ＩＣ）上に常駐する、請求項６に記載の処理システム。
【請求項１０】
前記第１のコプロセッサに関連付けられた第１のデバイスと、
前記第２のコプロセッサに関連付けられた第２のデバイスと
をさらに備え、
前記第１のデバイスおよび前記第２のデバイスは、それぞれ、センサ、電球、電力スイッチ、電化製品、バイオメトリックデバイス、医療デバイス、診断デバイス、ラップトップ、タブレット、スマートフォン、モータコントローラ、およびセキュリティデバイスのうちの１つを含む、請求項６に記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権データ）
本願は、２０１３年１月２５日に出願された米国出願第１３／７５０，６９６号の継続出願であり、該米国出願は、参照により本明細書中に援用される。
【０００２】
本発明は、概して、並列プロセスコンピューティングに関し、特に、中央処理ユニットによって投入されるタスクプールからタスクを先回りして読み出すように構成される、自律的コプロセッサを伴う処理アーキテクチャに関する。
【背景技術】
【０００３】
モノのインターネット（モノのクラウドとも称される）は、既存のインターネットインフラストラクチャ内の一意に認識可能な埋め込まれたコンピューティングデバイスのアドホックネットワークを指す。モノのインターネット（ＩｏＴ）は、マシンツーマシン通信（Ｍ２Ｍ）に優る、デバイス、システム、およびサービスの高度な接続性を予示する。ＩｏＴによって想定されるモノの範囲は、無制限であり、例えば、心臓監視インプラント、バイオチップトランスポンダ、自動車センサ、航空宇宙および防衛分野オペレーションデバイス、ならびに探索および救助活動において消防士を補助する公衆安全用途等のデバイスを含み得る。現在の市場の実施例は、遠隔監視のためにＷｉ−Ｆｉを利用するスマートサーモスタット、電球、および洗濯機／乾燥機を伴う家庭ベースのネットワークを含む。ＩｏＴにおいて接続される物体の遍在性に起因して、２０２０年までに３００億個を上回るデバイスが、モノのインターネットに無線接続されるであろうことが推定されている。これらのデバイスと関連付けられるコントローラおよびプロセッサの処理容量を利用することが、本発明の目的のうちの１つである。
【０００４】
コンピュータプロセッサは、伝統的に、マシンコード化命令を直列的に実行する。複数のアプリケーションを並行して起動するために、単一のプロセッサが、種々のプログラムからの命令をインターリーブし、それらを直列的に実行するが、ユーザの視点からは、アプリケーションは、並列に処理されているように見える。一方、真の並列またはマルチコア処理は、大規模な算出タスクを個々の算出ブロックに細分化し、それらを２つまたはそれを上回るプロセッサ間で分散する算出アプローチである。タスク並列性（並列処理）を使用するコンピューティングアーキテクチャは、大規模な算出要件を実行可能なコードの離散モジュールに分割する。モジュールは、次いで、それらのそれぞれの優先順位に基づいて、並行して、または連続的に実行される。
【０００５】
典型的なマルチプロセッサシステムは、中央処理ユニット（「ＣＰＵ」）と、１つまたはそれを上回るコプロセッサとを含む。ＣＰＵは、算出要件をタスクにパーティション化し、そのタスクをコプロセッサに分散する。完了したスレッドは、ＣＰＵに報告され、これは、必要に応じて付加的なスレッドをコプロセッサに分散し続ける。現在公知の多重処理アプローチは、タスク分散によって有意な量のＣＰＵ帯域幅が消費される点において不利であり、新しいタスクを分散する前にタスクが完了するまで待機し（多くの場合、以前のタスクに依存する）、タスクが完了すると、コプロセッサからの割込みに応答し、コプロセッサからの他のメッセージに応答する。加えて、コプロセッサは、多くの場合、ＣＰＵからの新しいタスクを待ちながら、アイドルしたままである。
【０００６】
したがって、ＣＰＵ管理オーバーヘッドを低減させ、また、利用可能な共処理リソースをより効果的に利用および活用するマルチプロセッサアーキテクチャが、必要とされる。
【発明の概要】
【課題を解決するための手段】
【０００７】
並列処理コンピューティングアーキテクチャの種々の実施形態は、タスクプールに投入するように構成される、ＣＰＵと、タスクプールからスレッド（タスク）を先回りして読み出すように構成される、１つまたはそれを上回るコプロセッサとを含む。各コプロセッサは、タスクの完了に応じてタスクプールに通知し、別のタスクが処理のために利用可能になるまでタスクプールをｐｉｎｇ確認する。このように、ＣＰＵは、タスクプールと直接通信し、タスクプールを通してコプロセッサと間接的に通信する。
【０００８】
コプロセッサはまた、自律的に作用することも可能であり得、つまり、それらは、ＣＰＵから独立してタスクプールと相互作用してもよい。好ましい実施形態では、各コプロセッサは、実施するタスクを探求するためにタスクプールに問い合わせるエージェントを含む。その結果、コプロセッサは、相互に、およびタスクプールと「連帯して」協働し、相互に関連する、またはしない場合もある個々のタスクを自律的に読み出し、完了することによって、集約算出要件を完了する。非限定的実施例として、タスクＢは、経時的な平均温度を算出するステップを伴うと仮定する。経時的な温度読取値を捕捉するステップを含むようにタスクＡを定義することによって、さらに、捕捉された読取値を取得するステップを含むようにタスクＢを定義することによって、ＣＰＵおよび種々のコプロセッサは、それによって、タスクプールを介して相互に推測的に通信してもよい。
【０００９】
種々の実施形態では、コプロセッサは、自律的かつ先見的な連帯セルと称される。この文脈において、自律的という用語は、コプロセッサが、ＣＰＵによってまたはタスクプールによってそうするように命令されることなく、タスクプールと相互作用し得ることを含意する。先見的という用語は、各コプロセッサが、周期的にエージェントを送信し、そのコプロセッサに適切な利用可能なタスクに関してタスクプールを監視するように構成（例えば、プログラム）され得ることを示唆する。連帯という用語は、共処理セルが、タスクプール内の全ての利用可能なタスクを監視および実行する際に共通の目的を共有することを含意する。
【００１０】
連帯セル（コプロセッサ）は、汎用または専用プロセッサであってもよく、したがって、本システム内のＣＰＵおよび他の連帯セルと比較して、同一または異なる命令セット、アーキテクチャ、およびマイクロアーキテクチャを有してもよい。さらに、実行されるべきソフトウェアプログラムおよび処理されるべきデータは、１つまたはそれを上回るメモリユニット内に含有されてもよい。典型的なコンピュータシステムでは、例えば、ソフトウェアプログラムは、プログラムによって使用されるべきデータを要求し得る、一連の命令から成る。例えば、プログラムがメディアプレーヤに対応する場合、メモリ内に含有されるデータは、コプロセッサによって読み取られ、最終的にスピーカで再生される圧縮オーディオデータであってもよい。
【００１１】
本システム内の各連帯セルは、ファブリックとしても公知である、クロスバースイッチを通してタスクプールとオーム的に、または無線で通信するように構成されてもよい。純粋に無線のメッシュ形態では、無線信号自体が、ファブリックを構成してもよい。種々の実施形態では、コプロセッサはまた、ＣＰＵと直接通信してもよい。スイッチングファブリックは、システムリソース間の通信を促進する。各連帯セルは、連帯セルが実施する処理を全く有していないとき、または代替として、連帯セルがその通常動作を妨げることなく処理サイクルに寄与することが可能であるとき、そのエージェントをタスクプールに送信することによって、実施するタスクを取得するという点において先見的である。非限定的実施例として、モノのインターネット（以下により詳細に議論される）の文脈では、電球等のデバイスと関連付けられるコプロセッサは、その通常動作として、マスターデバイス（スマートフォン等）から「オン」および「オフ」コマンドを待つようにプログラムされてもよいが、その処理リソースもまた、タスクプールを通して利用されてもよい。
【００１２】
本明細書に説明される種々の実施形態の文脈では、エージェントという用語は、タスクプールと相互作用し、それによって、そのコプロセッサセルに対して適切である利用可能なタスクを取得するコプロセッサと関連付けられる、ネットワークパケットに類似するソフトウェアモジュールを指す。連帯セルは、タスクが以前のタスクの実行を条件とするとき、連続的に、または実行のために１つを上回る連帯セルが利用可能であり、１つを上回る整合タスクが利用可能であるとき、並列にタスクを実行してもよい。タスクは、（該当する場合）ＣＰＵによって提供されるタスクスレッド制限に応じて、独立して、または共同で実行されてもよい。タスクプール内の相互依存したタスクは、論理的に組み合わせられてもよい。タスクプールは、タスクスレッドが完了すると、これをＣＰＵに通知する。タスクスレッドが単一のタスクから成る場合、タスクプールは、そのようなタスクの完了時にＣＰＵに通知してもよい。タスクスレッドが複数のタスクから成る場合、タスクプールは、そのような一連のタスクの完了時にＣＰＵに通知してもよい。タスクスレッドは論理的に組み合わせられ得るため、論理的に組み合わせられたタスクスレッドの完了後に、タスクプールがＣＰＵに通知する場合があることも想定される。
【００１３】
当業者は、ＣＰＵおよびコプロセッサ間の相互運用性が、種々のコプロセッサと関連付けられる、命令セットアーキテクチャから独立した抽象レベルでタスクを構成および／または構築するようにＣＰＵを構成し、それによって、命令レベルでではなく、タスクレベルで構成要素が通信することを可能にすることによって促進され得ることを理解するであろう。したがって、デバイスおよびそれらの関連付けられるコプロセッサは、「プラグアンドプレイ」ベースでネットワークに追加されてもよい。本発明の別の側面は、異なる命令セットアーキテクチャを伴うＣＰＵの異種アレイ内の相互運用性を提供する。
【００１４】
本発明の種々の特徴は、とりわけ、モノのインターネットデバイスおよびセンサのネットワーク、異種コンピューティング環境、高性能コンピューティング２次元および３次元モノリシック集積回路、ならびにモーション制御およびロボットに適用可能である。
本発明は、例えば、以下を提供する。
（項目１）
処理システムであって、
タスクプールと、
第１のタスクを前記タスクプールに投入するように構成される、コントローラと、
前記タスクプールから前記第１のタスクを先回りして読み出すように構成される、第１のコプロセッサと、
を備える、処理システム。
（項目２）
前記第１のコプロセッサは、前記コントローラと通信することなく、前記タスクプールから前記第１のタスクを読み出すように構成される、第１のエージェントを備える、項目１に記載の処理システム。
（項目３）
前記第１のタスクは、第１のタスクタイプの印を含み、前記第１のコプロセッサは、前記第１のタイプのタスクを実施するように構成され、前記第１のエージェントは、前記第１のタイプのタスクに関して前記タスクプールを検索するように構成される、項目２に記載の処理システム。
（項目４）
前記第１のコプロセッサはさらに、前記第１のものを処理し、前記第１のタスクの完了に応じて、前記タスクプールに通知するように構成される、項目１に記載の処理システム。
（項目５）
前記タスクプールは、前記第１のタスクの完了に応じて、前記コントローラに通知するように構成される、項目１に記載の処理システム。
（項目６）
前記コントローラおよび前記第１のコプロセッサは、相互に前記タスクプールを通してのみ通信するように構成される、項目１に記載の処理システム。
（項目７）
前記コントローラおよび前記第１のコプロセッサは、相互に直接、前記タスクプールを通して通信するように構成される、項目１に記載の処理システム。
（項目８）
前記第１のコプロセッサは、これが利用可能な処理容量を有していることを判定し、前記判定に応答して前記エージェントを前記タスクプールにディスパッチするように構成される、項目２に記載の処理システム。
（項目９）
前記コントローラはさらに、第２のタスクを前記タスクプールに投入するように構成され、前記システムはさらに、前記タスクプールから前記第２のタスクを先回りして読み出すように構成される第２のエージェントを有する、第２のコプロセッサを備える、項目３に記載の処理システム。
（項目１０）
前記第２のタスクは、第２のタスクタイプの印を含み、前記第２のコプロセッサは、前記第２のタイプのタスクを実施するように構成され、前記第２のエージェントは、前記第２のタイプのタスクに関して前記タスクプールを検索するように構成される、項目９に記載の処理システム。
（項目１１）
前記コントローラおよび前記タスクプールは、モノリシック集積回路（ＩＣ）上に常駐し、前記第１のコプロセッサは、前記ＩＣ上に常駐しない、項目１に記載の処理システム。
（項目１２）
前記コントローラ、前記タスクプール、ならびに前記第１および第２のコプロセッサは、モノリシック集積回路（ＩＣ）上に常駐する、項目９に記載の処理システム。
（項目１３）
第１のタスクタイプを有する第１のタスクをタスクプールに投入するように構成される、中央処理ユニット（ＣＰＵ）を含むタイプのネットワーク内の処理リソースを動的に制御する方法であって、
前記第１のタスクタイプを実施するように第１のセルをプログラムするステップと、
前記プログラムされた第１のセルを前記ネットワークに追加するステップと、
前記第１のセルから前記タスクプールに、第１のエージェントを先回りして送信するステップと、
前記第１のエージェントによって、前記第１のタイプのタスクに関して前記タスクプールを検索するステップと、
前記第１のエージェントによって、前記タスクプールから前記第１のタスクを読み出すステップと、
前記第１のエージェントによって、前記第１のセルに前記第１のタスクをトランスポートするステップと、
前記第１のセルによって、前記第１のタスクを処理するステップと、
前記第１のセルから前記タスクプールに、前記第１のタスクが完了した通知を送信するステップと、
を含む、方法。
（項目１４）
前記タスクプールによって、前記第１のタスクを完了しているものとしてマーキングするステップと、
前記タスクプールから前記ＣＰＵに、前記第１のタスクが完了した通知を送信するステップと、
をさらに含む、項目１３に記載の方法。
（項目１５）
前記第１のエージェントを前記タスクプールに先回りして送信するための述語として、前記第１のセルが利用可能な処理容量を有すると判定するように前記第１のセルを構成するステップをさらに含む、項目１３に記載の方法。
（項目１６）
前記プログラムされた第１のセルを前記ネットワークに追加することに先立って、前記第１のセルを第１のデバイスに統合するステップをさらに含む、項目１３に記載の方法。
（項目１７）
前記第１のデバイスは、センサ、電球、電力スイッチ、電化製品、バイオメトリックデバイス、医療デバイス、診断デバイス、ラップトップ、タブレット、スマートフォン、モータコントローラ、およびセキュリティデバイスのうちの１つを含む、項目１６に記載の方法。
（項目１８）
前記プログラムされた第１のセルをネットワークに追加するステップは、前記第１のセルと前記タスクプールとの間に通信リンクを確立するステップを含む、項目１３に記載の方法。
（項目１９）
前記（ＣＰＵ）はさらに、第２のタスクタイプを有する第２のタスクをタスクプールに投入するように構成され、
前記第２のタスクタイプを実施するように前記第２のセルをプログラムするステップと、
前記第２のセルと前記タスクプールとの間に通信リンクを確立するステップと、
前記第２のセルから前記タスクプールに、第２のエージェントを先回りして送信するステップと、
前記第２のエージェントによって、前記第２のタイプのタスクに関して前記タスクプールを検索するステップと、
前記第２のエージェントによって、前記タスクプールから前記第２のタスクを読み出すステップと、
前記第２のエージェントによって、前記第２のセルに前記第２のタスクをトランスポートするステップと、
前記第２のセルによって、前記第２のタスクを処理するステップと、
前記第２のセルから前記タスクプールに、前記第２のタスクが完了した通知を送信するステップと、
前記タスクプールによって、前記第２のタスクを完了しているものとしてマーキングするステップと、
前記タスクプールから前記ＣＰＵに、前記第２のタスクが完了した通知を送信するステップと、
をさらに含む、項目１３に記載の方法。
（項目２０）
モノのインターネット（ＩｏＴ）コンピューティング環境内の分散処理リソースを制御するためのシステムであって、
集約コンピューティング要件を複数のタスクにパーティション化し、前記タスクをプール内に置くように構成される、ＣＰＵと、
それぞれ、前記ＣＰＵとの直接通信を伴わずに、前記プールからタスクを先回りして読み出すように構成される、一意の専用エージェントを有する、複数のデバイスと、
を備える、システム。
【図面の簡単な説明】
【００１５】
本発明は、以降では、添付される図面と併せて説明され、同様の番号は、同様の要素を表す。
【００１６】
【図１】図１は、ある実施形態による、ＣＰＵと、メモリと、タスクプールと、ファブリックを通して通信するように構成される複数のコプロセッサとを含む、並列処理アーキテクチャの概略ブロック図である。
【００１７】
【図２】図２は、ある実施形態による、例示的タスクプールの詳細を例証する、概略ブロック図である。
【００１８】
【図３】図３は、ある実施形態による、タスクプールと相互作用する、共処理セルおよびそれらの対応するエージェントを含むネットワークの概略ブロック図である。
【００１９】
【図４】図４は、ある実施形態による、利用可能なプラグアンドプレイデバイスを含む、モノのインターネットネットワークの概略配置である。
【００２０】
【図５】図５は、ある実施形態による、近傍デバイスの動的利用を例証する、例示的モノのインターネットの使用事例の概略配置図である。
【００２１】
【図６】図６は、ある実施形態による、例示的並列コンピューティング環境の動作を例証する、フローチャートである。
【発明を実施するための形態】
【００２２】
種々の実施形態は、例えば、モノのインターネットの文脈における、限定ではないが、データ暗号化；グラフィック、ビデオ、およびオーディオ処理；ダイレクトメモリアクセス；数学的算出；データマイニング；ゲームアルゴリズム；ネットワーク外のデータの構築、受信、および伝送を含む、イーサネット（登録商標）パケットおよび他のネットワークプロトコル処理；金融サービスおよびビジネス方法；検索エンジン；インターネットデータストリーミングおよび他のウェブベースアプリケーション；内部または外部ソフトウェアプログラムの実行；電化製品、電球、消費者用電子機器、および同等物のオンおよびオフ切替ならびに／または別様にそれらの制御もしくは操作を含む、単純な切替および制御機能から複雑なプログラムおよびアルゴリズムまでの並列処理コンピューティングシステムおよび環境に関する。
【００２３】
種々の特徴が、任意の現在公知の、または後に開発されるコンピュータアーキテクチャ中に組み込まれてもよい。例えば、同期、データセキュリティ、順不同実行、およびメインプロセッサ割込みに関する並列処理の問題は、本明細書に説明される発明的概念を使用して対処され得る。
【００２４】
ここで図１を参照すると、分散処理システム１０が、単一またはマルチコアＣＰＵ１１と、クロスバースイッチングファブリック１４を通してタスクプール１３と通信するように構成される、１つまたはそれを上回る連帯もしくは共処理セル１２Ａ−１２とを含む。連帯セル１２はまた、スイッチングファブリック１４を通して、または別個のセルバス（図示せず）を通して、相互に通信してもよい。ＣＰＵ１１は、直接、またはスイッチングファブリック１４を通して、タスクプール１３と通信してもよい。１つまたはそれを上回るメモリユニット１５が、それぞれ、データおよび／または命令を含有する。本文脈では、「命令」という用語は、ＣＰＵ１１による実行のためにコンパイルされ得るソフトウェアプログラムを含む。メモリユニット１５、セル１２、およびタスクプール１３は、スイッチングファブリック１４を介して、ＣＰＵと、および／または相互に通信するようにオーム的に、または無線で相互接続されてもよい。いくつかの実施形態では、ＣＰＵ１１は、タスクプールを通して間接的にのみセル１２と通信する。他の実施形態では、ＣＰＵ１１はまた、中間物としてタスクプールを使用することなく、セル１２と直接通信してもよい。
【００２５】
いくつかの実施形態では、システム１０は、１つを上回るＣＰＵ１１と、１つを上回るタスクプール１３とを含んでもよく、その場合では、特定のＣＰＵ１１が、特定のタスクプール１３と排他的に相互作用してもよい、または複数のＣＰＵ１１が、１つまたはそれを上回るタスクプール１３を共有してもよい。さらに、各連帯セルは、１つを上回るタスクプール１３と相互作用するように構成されてもよい。代替として、特定のセルが、例えば、高性能または高セキュリティの文脈において、単一の指定されたタスクプールと相互作用するように構成されてもよい。
【００２６】
種々の実施形態では、セルは、以下の３つの条件が満たされると、タスクプールとオーム的に（プラグアンドプレイ）、または無線で（オンザフライ）動的にペアリングされてもよい。
１）セルが、タスクプールとオーム的に、または無線で通信することが可能である。タスクプールへの接続は、タスクプール自体におけるポートを通して、またはタスクプールに接続されるスイッチングファブリックを通してであり得る。
２）タスクプールが、例えば、パスワードの有無にかかわらず、伝統的なＷｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、もしくは類似するペアリングを通した、スマートフォンもしくはタブレッド上で起動するグラフィカルソフトウェアプログラムを通した手動の、または任意の他のセキュアもしくは非セキュアな方法による、ユーザからの入力を使用して、セルによって送信されたエージェントを信頼できるものとして認識する。
３）タスクプール内の利用可能なタスクのうちの少なくとも１つが、連帯セルの能力と互換性がある。
【００２７】
複数のタスクプールを伴うマルチプロセッサ環境の場合では、前述の動的なペアリング条件が適用され、但し、所与のセルが、タスクプールのうちの１つのみと協働するようにロックまたは制限され得、そうでなければ、セルは、第１発見ベース、ラウンドロビンベース、または任意の他の選択スキームを使用して、１つまたはそれを上回るタスクプールと接続し得る。また、タスクプール内のタスクに優先順位を割り当てることも可能であり、それによって、セルは、優先順位の高いタスクを優先し、より優先順位の高いタスクに別様に従事しないとき、より優先順位の低いタスクを扱う。
【００２８】
ＣＰＵ１１は、ソフトウェアプログラムを実行するために使用される、任意の単一もしくはマルチコアプロセッサ、アプリケーションプロセッサ、またはマイクロコントローラであってもよい。システム１０は、パーソナルコンピュータ、スマートフォン、タブレット、またはモノのインターネットデバイス上に実装されてもよく、その場合では、ＣＰＵ１１は、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）または直近のコンピューティング環境にローカルである、もしくはそれからリモートであるマルチコアプロセッサ等の任意のパーソナルコンピュータ、中央プロセッサ、またはプロセッサクラスタであってもよい。代替として、システム１０は、スーパーコンピュータ上に実装されてもよく、ＣＰＵ１１は、縮小命令セットコンピュータ（「ＲＩＳＣ」）プロセッサ、アプリケーションプロセッサ、マイクロコントローラ、または同等物であってもよい。
【００２９】
他の実施形態では、システム１０は、Ｂｅｏｗｕｌｆクラスタ等のローカル接続された一連のパーソナルコンピュータ上に実装されてもよく、その場合では、ＣＰＵ１１は、ネットワーク化コンピュータの全て、そのサブセット、またはそのうちの１つの中央プロセッサを含んでもよい。代替として、システム１０は、リモート接続されたコンピュータのネットワーク上に実装されてもよく、その場合では、ＣＰＵ１１は、サーバまたはメインフレームのための現在公知の、または後に開発される中央プロセッサであってもよい。ＣＰＵ１１が、ここで説明されるシステム１０内で対象並列処理方法を実施する特定の様式は、ＣＰＵのオペレーティングシステムによって影響を受け得る。例えば、ＣＰＵ１１は、以下に説明されるように、タスクプール１３を認識し、これと通信し、コンピューティング要件をスレッドに分割するようにこれをプログラムすることによって、システム１０内で使用するために構成されてもよい。
【００３０】
システム１０は、本明細書に説明される機能性を実装するように修正または別様に構成され得るオペレーティングシステムを有する、任意のコンピュータまたはコンピュータネットワーク上に遡及的に実装され得ることがさらに想定される。当分野で公知であるように、処理されるべきデータは、例えば、ランダムアクセスもしくは読取専用メモリ、ＣＰＵ１１のためのキャッシュメモリ、またはフラッシュメモリおよび磁気記憶装置等の他の形態のデータ記憶装置のアドレス指定可能領域または区画の文脈において、メモリユニット１５内に含有される。メモリユニット１５は、処理されるべきデータだけではなく、処理されたデータの結果を置く場所も含有する。例えば、システム１０にデータを戻し得るスマートメータおよび自動車計器の場合のように、またはある機構を作動し得るロボットおよびモータコントローラの場合のように、全てのタスクが、メモリユニット１５にアクセスすることを要求されるわけではない。
【００３１】
各セル１２は、１つまたはそれを上回るタスク／スレッドを実行することが可能である、概念的または論理的に独立した算出ユニットである。セル１２は、マイクロコントローラ、マイクロプロセッサ、アプリケーションプロセッサ、「ダム」スイッチ、またはＢｅｏｗｕｌｆクラスタ内のマシン等の独立型コンピュータであってもよい。
【００３２】
セル１２は、ＣＰＵの機能、または、例えば、周囲監視およびロボットアクチュエータ等のＣＰＵ１１とは無関係の機能を補完する、それらの全てを実施する、またはそれらの限定された範囲を実施するように構成される、汎用または専用コプロセッサであってもよい。専用プロセッサは、特殊化タスクを実施するように設計、プログラム、または別様に構成される、専用ハードウェアモジュールであってもよい、またはこれは、グラフィック処理、浮動小数点演算、もしくはデータ暗号化等の特殊化タスクを実施するように構成される、汎用プロセッサであってもよい。
【００３３】
ある実施形態では、専用プロセッサである任意のセル１２はまた、メモリにアクセスし、それに書き込み、以下に説明されるように、記述子を実行し、ならびに他のソフトウェアプログラムを実行するように構成されてもよい。
【００３４】
さらに、任意の数のセル１２が、異種コンピューティング環境、つまり、ＡＭＤベースおよび／またはＩｎｔｅｌベースのプロセッサ、または３２ビットおよび６４ビットプロセッサの混合物等の１種類を上回るプロセッサを使用するシステムを含み得る。
【００３５】
各セル１２は、以下のイベントのシーケンスに例証されるように、１つまたは複数の特殊化タスクを実施するように構成される。ポーリングフェーズ中、各セルは、整合タスクが見出されるまで、タスクプールにエージェントを周期的に送信する。この整合を促進するために、セルおよびタスクプールは両方とも、送受信機を具備してもよい。タスクプールの場合では、送受信機は、タスクプール自体に、またはタスクプールが接続されるスイッチングファブリックに位置してもよい。タスクプール内にタスク整合が見出されると、タスクプールは、セルに肯定応答を伝送する。次のステップは、「通信チャネル」フェーズである。通信チャネルフェーズ中、セルは、タスクを受信し、そのタスクを実行し始める。一実装では、いったん第１のタスクが完了すると、通信チャネルは、連帯セルが「ポーリング」および「肯定応答」フェーズを繰り返す必要なく別のタスクをフェッチし得るように維持される。
【００３６】
システム１０は、複数のセルを含んでもよく、セルのいくつかは、他のセルと同一のタスクタイプを実施することが可能であり、それによって、システム１０内に冗長性をもたらす。所与のセル１２によって実施されるタスクタイプのセットは、別のセルによって実施されるタスクタイプのセットのサブセットであってもよい。例えば、図１では、システム１０は、集約算出問題をタスクの群に分割し、第１のタイプ、第２のタイプ、および第３のタイプのタスクをタスクプール１３に投入してもよい。第１のセル１２Ａは、第１のタイプのタスクのみを実施することが可能であり得、第２のセル１２Ｂは、第２のタイプのタスクを実施することが可能であり得、第３のセル１２Ｃは、第３のタイプのタスクを実施することが可能であり得、第４のセル１２Ｄは、第２または第３のタイプのタスクを実施することが可能であり得、第５のセル１２Ｎは、全ての３つのタスクタイプを実施することが可能であり得る。システム１０は、所与のセルがシステム１０から除去される（または現在ビジーである、または別様に利用不可能である）場合、システム１０がシームレスに機能し続け得るように、この冗長性とともに構成されてもよい。さらに、セルがシステム１０に動的に追加される場合、システム１０は、性能向上の利益を用いて、シームレスに機能し続け得る。
【００３７】
ここで図１および２を参照すると、タスクプール１３は、ＣＰＵ１１によってアクセス可能である物理メモリの領域を占有し得る。代替として、タスクプール１３は、ＭＡＣアドレスまたはＩＰアドレスによってアクセス可能であってもよい。複数の実施形態が、タスクプール１３に関して想定され、これは、同一の２Ｄもしくは３ＤモノリシックＩＣ内でＣＰＵとともに物理的に位置してもよい、またはこれは、独立型ＩＣとして実装され、コンピュータボード、スマートフォン、タブレット、ルータ、もしくはモノのインターネットデバイスに物理的に相互接続されてもよい。さらなる代替実施形態では、タスクプールは、複数のＣＰＵ１１システム間で共有される、または所与のＣＰＵ１１の専用であり得る、独立型マルチポート、有線、および／または無線接続されたデバイスであってもよい。タスクプール１３はまた、セル１２によってアドレス指定可能であってもよい。タスクプール１３は、ＣＰＵ１１およびセル１２によって最大アクセス速度を提供するために、専用ハードウェアブロック内に配置されてもよい。代替として、タスクプール１３は、ソフトウェアベースであってもよく、タスクプール１３のコンテンツは、ハードウェアベースの実施形態に類似して、メモリ内に記憶されるが、データ構造によって表される。
【００３８】
ＣＰＵ１１によって投入されると、タスクプール１３は、１つまたはそれを上回るタスクスレッド２１を含有する。各タスクスレッド２１は、ＣＰＵ１１に付与されたより大規模な集約算出要件の構成要素またはサブセットであり得る、算出タスクを表す。一実施形態では、ＣＰＵ１１は、並行して実行可能なスレッド２１を伴うタスクプール１３を初期化し、次いで、それに投入してもよい。各スレッド２１は、１つまたはそれを上回る離散タスク２２を含んでもよい。タスク２２が、タスクタイプと、記述子とを有してもよい。タスクタイプは、どのセル１２がタスク２２を実施することが可能であるかを示す。タスクプール１３はまた、同一タイプを有するタスク２２に優先順位を付けるために、タスクタイプを使用してもよい。一実施形態では、タスクプール１３は、システム１０内に存在する連帯セル１２、各セルが実施することが可能なタスク２２のタイプ、および各セルが現在タスク２２を処理しているかどうかを記録する、優先順位テーブル（図示せず）を維持してもよい。タスクプール１３は、以下に説明されるように、適格なタスク２２のどれを要求セルに割り当てるかを判定するために、優先順位テーブルを使用してもよい。
【００３９】
いくつかの実施形態では、ＣＰＵ１１は、タスクプールからタスクまたはスレッドを読み出し、それを実行してもよい。さらに、ＣＰＵ１１は、古くなった、壊れた、膠着した、または誤ったと判定される任意のタスクを中断してもよい。そのような場合では、ＣＰＵ１１は、タスクをリフレッシュし、後続処理のために利用可能にしてもよい。例えば、人工知能によって要求され得るように、ＣＰＵ１１が適応タスク管理を実装することを妨げるものはなく、その後、ＣＰＵ１１は、未完成の既存のスレッド２１内のタスクを追加、除去、または変更してもよい。
【００４０】
記述子は、存在する場合、実行されるべき具体的命令、実行のモード、処理されるべきデータの場所（例えば、アドレス）、およびタスク結果を置くための場所のうちの１つまたはそれを上回るものを含有してもよい。結果を置くための場所は、多くの場合、結果をメモリ内に記憶するのではなく、それらをディスプレイに提示する、アニメーションおよびマルチメディアタスクの場合等では、随意である。さらに、タスク記述子は、リンクされたリストのように、ともに連鎖されてもよく、したがって、処理されるべきデータは、記述子がともに連鎖されない場合よりも少ないメモリ呼び出しでアクセスされ得る。ある実施形態では、記述子は、ヘッダおよびメモリ場所の複数の参照ポインタを含有するデータ構造であり、タスク２２は、データ構造のメモリアドレスを含む。ヘッダは、実行されるべき機能または命令を定義する。第１のポインタが、処理されるべきデータの場所を参照する。第２の随意のポインタが、処理されたデータを置くための場所を参照する。記述子が、連続的に実行されるべき別の記述子にリンクされている場合、記述子は、次の記述子を参照する第３のポインタを含んでもよい。記述子がデータ構造である代替実施形態では、タスク２２は、完全なデータ構造を含んでもよい。
【００４１】
スレッド２１はさらに、タスク２２が実施され得る順序および性能の順序に影響を及ぼす任意の条件を記述する、「レシピ」を備えてもよい。レシピによると、タスク２２は、ブール演算に従って、連続的に、並行して、順不同に、相互依存的に、または条件的に実行されてもよい。例えば、図２では、スレッド２１Ａは、４つのタスク、すなわち、２２Ａ、２２Ｂ、２２Ｃ、および２２Ｄを備える。例証される実施形態では、第１のタスク２２Ａは、第２のタスク２２Ｂまたは第３のタスク２２Ｃのいずれかが始まり得る前に完了しなければならない。レシピによると、いったん第２のタスク２２Ｂまたは第３のタスク２２Ｃのいずれかが完了すると、第４のタスク２２Ｄが、始まり得る。
【００４２】
スレッド２１はまた、相互依存的であってもよい。例えば、図２に示されるように、スレッド２１Ｂ内のブール演算に起因して、完了したタスク２２Ｃは、スレッド２１Ｂ内のタスクの処理が継続することを可能にしてもよい。タスクプール１３は、タスク２２が、これが依存する別のタスク２２の完了を待機している間、タスク２２をロックしてもよい。タスク２２がロックされると、これは、セルによって取得されることはできない。スレッド２１のタスク２２が完了すると、タスクプール１３は、ＣＰＵ１１に完了を通知してもよい。ＣＰＵは、次いで、完了したスレッド２１を越えて処理を進めてもよい。
【００４３】
セルは、有利なこととして、相互に、およびＣＰＵ１１と連帯を維持し、それによって、システム１０が、タスクプール１３からタスクを自律的かつ先回りして読み出すことによって、複雑な算出を実施することに役立つ。セル１２は、それらがＣＰＵ１１または任意の他のコプロセッサから独立して作用し得るという点において、自律的に作用する。代替として、セルは、ＣＰＵに応じて作用する、またはそれによって直接命令されてもよい。各セルは、さらなる処理のためにセルが利用可能になるとすぐに、タスクプール１３からタスク２２を探求するという点において、先回りして作用する。
【００４４】
より具体的には、ある実施形態では、セル１２は、エージェント３０を送信し、タスクプールに問い合わせ（検索し）、完了を要求する、ロックされていない、セルによって実施され得るタスクタイプを有する利用可能なタスク２２を読み出すことによって、タスクプールからタスクを取得する。典型的には、システム１０は、連帯共処理セルと同数のエージェントを有する。本文脈では、エージェントは、概して、エージェントがソースアドレス、宛先アドレス、およびペイロードを具備し得るという点で、ネットワークの意味におけるデータフレームと類似する。ある実施形態では、宛先アドレスは、エージェント３０がタスク２２を探求しているとき、タスクプール１３のアドレスであり、宛先アドレスは、エージェント３０がタスク２２を伴うそのセルに戻っているとき、対応するセル１２のアドレスである。対応して、ソースアドレスは、エージェント３０がタスク２２を探求しているとき、セル１２のアドレスであり、ソースアドレスは、エージェント３０がタスク２２を伴うそのセルに戻っているとき、タスクプール１３のアドレスである。
【００４５】
加えて、ソースおよび宛先アドレスは、フレーム同期を促進し得る。つまり、システム１０は、ペイロードデータから明確にアドレスを区別するように構成されてもよく、したがって、エージェント３０のコンテンツが読み取られると、宛先アドレスは、フレームの開始を示し、ソースアドレスは、フレームの終了を示し、逆もまた同様である。これは、ペイロードが、アドレス間に置かれるとき、サイズを変動することを可能にする。可変サイズのペイロードの別の実施形態では、エージェント３０は、ペイロードサイズを示すヘッダを含んでもよい。ヘッダ情報は、データ完全性を検証するために、ペイロードと比較されてもよい。さらに別の実施形態では、ペイロードは、固定長であってもよい。エージェント３０がそのコプロセッサセルによってタスクプール１３にディスパッチされると、ペイロードは、セル１２が実施し得るタスクのタイプの識別情報を含有する。エージェント３０がタスクプール１３から戻ると、ペイロードは、メモリ場所または完全な記述子データ構造のいずれかの形態において、タスク２２の記述子を含有する。
【００４６】
他の実施形態では、エージェント３０のいくつかまたは全ては、それらのそれぞれの対応するセル１２の自律的な代表である。つまり、各エージェント３０は、その対応するセル１２によってディスパッチされ、セルがアイドルしている、または付加的な処理を実施することが可能であるときはいつでも、タスク２２を読み出してもよい。このように、連帯セル１２の処理容量は、セルがＣＰＵ１１からの命令をアイドルして待機する必要がない限り、より完全に活用され得る。本アプローチは、タスクプールからタスクを読み出すために、セルに要求を送信する必要性からＣＰＵを解放することによって、ＣＰＵオーバーヘッドを低減させる付加的な利益も有する。これらの利点は、補助モジュールおよびコプロセッサがメインＣＰＵからの命令に依存する伝統的なコンピュータアーキテクチャよりも、システム１０を効率的にする。
【００４７】
さらに、連帯セル１２Ａ−１２ｎは、スレッド自体の特定の組成に関して曖昧である。むしろ、エージェントは、その対応するセルの能力と、タスクプール１３内の完了するべき利用可能なタスク２２との間の整合を見出すことにのみ関与する。つまり、タスクプール１３内に利用可能なタスク２２が存在し、利用可能なタスク２２がセルの能力と整合する限り、本システムは、セルの処理容量を効果的に利用し得る。
【００４８】
連帯セル１２Ａ−１２ｎのいくつかまたは全ては、相互に独立して機能してもよい、または直接、スイッチングファブリック１４を通して、タスクプール１３を通して、もしくはＣＰＵからのコマンドもしくは要求に従って相互に通信し、別の連帯セルを呼び出し、データを処理、移動、もしくは伝送する際に補助してもよい。一実施形態では、エージェント３０Ａは、レディタスク２２のタスクタイプと、セル１２Ａが実施することが可能であるタスクのタイプとの間の整合を検索してもよい。本アーキテクチャは、ＣＰＵ１１が生成するように構成されるタスクのタイプのハードコーディングを伴ってもよい。したがって、タスクプール１３が３つのタイプのタスク２２を含有し、大規模な算出要件が第４のタイプのタスクを含む場合、この第４のタイプのタスクは、第４のタイプのタスクを実施することが可能なセルがシステム１０に含まれる、または追加される場合であっても、タスクプール１３内に置かれない場合がある。その結果、ＣＰＵ１１は、利用可能な処理リソースをより完全に活用するために、第４のタイプのタスクを生成する方法を「学習する」または教示されるように構成され得る。
【００４９】
別の実施形態では、エージェント３０Ａは、セル１２Ａが実施することが可能である命令のうちの１つと整合する実行可能な命令のためのタスク２２記述子を検索する。整合タスク２２が見出されると、エージェント３０Ａは、整合タスク２２の記述子をセル１２Ａに送達し、その後、セル１２Ａは、タスク２２を処理し始める。特に、エージェント３０Ａは、記述子のメモリアドレスをセル１２Ａに送達してもよく、セル１２Ａは、メモリからデータ構造を読み出す。代替として、記述子の全データ構造がタスク２２内に含有される場合、エージェント３０Ａは、処理のためにセル１２Ａに完全なデータ構造を送達してもよい。記述子は、セル１２Ａに、どの命令を実行するか、処理されるべきデータが見出され得るメモリユニット１５内の場所、および結果が置かれるべきメモリ１５内の場所を知らせる。タスク２２の完了に応じて、セル１２Ａは、選択されたタスク２２のステータスを「完了するべき」から「完了した」に変更するようにタスクプール１３に通知する。さらに、いったんセル１２Ａがタスク２２を終了すると、セルは、そのエージェント３０Ａをタスクプール１３にディスパッチし、別のタスク２２を探求してもよい。
【００５０】
エージェント３０Ａ−３０ｎのいくつかまたは全ては、システム１０の特定のアーキテクチャおよび／または実装による、例えば、Ｗｉ−Ｆｉネットワーク、無線イーサネット（登録商標）、無線ＵＳＢ、無線ブリッジ、無線中継装置、無線ルータ、Ｚｉｇｂｅｅ（登録商標）、ＡＮＴ＋（登録商標）、またはＢｌｕｅｔｏｏｔｈ（登録商標）ペアリングを使用して、有線または無線でシステム１０を通して進行してもよい。ある実施形態では、エージェント３０は、タスクプール１３にレセプタ特徴を含めることによって、さらに、セル１２に送信機特徴を含めることによって、無線でタスクプール１３に誘導されてもよい。同様に、タスクプールは、タスクプールに送信機を、連帯セルに受信機を具備することによって、セルに無線で応答してもよい。本様式では、セルは、スイッチングファブリックの使用の有無にかかわらず、タスクプールと無線で通信し得る。
【００５１】
しかしながら、好ましい実施形態では、ある形態のスイッチングファブリック１４が、使用される。スイッチングファブリック１４は、システムリソース間のデータ転送およびアービトレーションのための接続を促進する。スイッチングファブリック１４は、種々のセルとタスクプールとの間に接続性を提供する、ルータまたはクロスバースイッチであってもよい。スイッチングファブリック１４はさらに、各連帯セル１２Ａ−１２ｎと、ＣＰＵ１１、メモリユニット１５、および限定ではないが、ダイレクトメモリアクセスユニット、送信機、ハードディスクおよびそれらのコントローラ、ディスプレイおよび他の入力／出力デバイス、ならびに他のコプロセッサを含む、伝統的なシステム構成要素等のシステムリソースとの間に接続性を提供してもよい。セル１２Ａ−１２ｎは、スイッチングファブリック１４に物理的に接続されてもよい、またはセルは、無線で接続されてもよい。
【００５２】
システム１０へのセルの無線接続は、システム１０内で使用するためのセルの動的な追加および／または除去を促進する。例えば、ＣＰＵ１１は、他のセルシステムからセルを補充し、動的拡張および性能向上を可能にしてもよい。本様式では、２つまたはそれを上回るセルシステム（例えば、ネットワーク）が、連帯セルを共有し得る。一実施形態では、アイドル状態になるセルは、付加的な処理リソースの必要性を有する、すなわち、完了する必要がある利用可能な処理タスクを有する、別のシステムを探す、および／またはそれによって補充されてもよい。同様に、システム１０は、特定のタスクのための付加的なセルのクラスタを組み込むことによって、性能を拡張させてもよい。例えば、システム１０は、これらのタスクを実施することが可能な近傍セルを組み込むことによって、暗号化／復号化機能、またはオーディオおよび／もしくはビデオデータの処理の性能を増進させてもよい。
【００５３】
望ましくない接続を防止するために、ＣＰＵ１１は、タスクプール１３に、信頼できるおよび／または信頼できないセル、ならびに認証要件もしくはプロトコルのリスト、または代替として、それらを識別するための基準を提供してもよい。さらに、タスクプール自体は、低性能、信頼性のない接続、データ処理量の不良、または悪意のある、もしくは別様に不適切な活動の疑いに基づいて、特定のセルを除外してもよい。種々の実施形態では、セル１２は、ユーザによって、スマートフォン、タブレット、または他のデバイスもしくはアプリケーションの使用を通して、タスクプール１３に追加される、またはタスクプール１３から除外されてもよい。一実施形態では、グラフィカルアプリケーションインターフェースは、ネットワークから特定のセルを追加または除去した結果、利用可能なセルおよび他のデバイスの場所、性能向上、または性能ペナルティ等の有用な統計および／またはアイコン情報をユーザに提供してもよい。
【００５４】
代替実施形態では、共処理セルのいくつかまたは全ては、通信のためのスイッチングファブリック１４を要求しない有線構成等によって、タスクプール１３に直接接続してもよい。セルの有線接続はさらに、有線接続が周辺機器デバイスの物理的（例えば、手動）統合および抽出であり得るが、上記に議論される無線構成に類似するシステム１０の動的拡張および縮小を促進してもよい。いずれの場合も、システム１０の変更を考慮して、コプロセッサがＣＰＵ１１を再プログラムすることなく追加および除去され得るため、本システムのスケーラビリティは、従来の並列処理スキームを上回って大幅に増進される。
【００５５】
ここで図３を参照すると、ネットワーク３００が、ＣＰＵ３０２と、第１のメモリ３０４と、第２のメモリ３０６と、タスクプール３０８と、スイッチングファブリック３１０と、タイプＡタスクを実施（実行）するように構成される第１の共処理セル３１２と、タイプＢタスクを実施するように構成される第２のセル３１４と、タイプＣタスクを実施するように構成される第３のセル３１６と、タイプＡおよびタイプＢタスクの両方を実施するように構成される第４のセル３１８とを含む。示されるように、タスクプール３０８は、（例えば、ＣＰＵ３０２によって）タスクタイプＡのタスク（またはタスクスレッド）３３０および３３２、タスクタイプＢのタスク３３４および３３６、ならびにタスクタイプＣのタスク３４０および３４２を投入される。ある実施形態では、各セルは、好ましくは、一意の専用エージェントを有する。特に、セル３１２は、エージェント３２０を含み、セル３１４は、エージェント３２２を含み、セル３１６は、エージェント３２４を含み、セル３１８は、エージェント３２６を含む。各エージェントは、好ましくは、その関連付けられるセルが実施するように構成されるタスクのタイプ、例えば、単一タスクまたはタスクＡ、Ｂ、Ｃの組み合わせを識別する、情報フィールドまたはヘッダを含む。
【００５６】
動作中、セルがアイドル状態であるか、または別様に利用可能な処理容量を有するかのいずれかのとき、そのエージェントは、タスクプールに先回りして問い合わせ、その特定のセルに適切である任意のタスクがタスクキュー内にあるかどうかを判定する。例えば、セル３１２は、そのエージェント３２０をディスパッチし、タスクタイプＡに対応するタスク３３０および３３２の一方または両方を読み出してもよい。同様に、セル３１４は、そのエージェント３２２をディスパッチし、タスクタイプＢに対応するタスク３３４または３３６のいずれかを（それらの相対的優先順位に応じて）読み出してもよく、以下同様である。タスクタイプＡおよびＢを実施するように構成されるセル３１８等、１つを上回るタスクタイプを実施することが可能であるセルに関して、エージェント３２６は、タスク３３０、３３２、３３４、および／または３３６のうちのいずれか１つを読み出してもよい。
【００５７】
タスクプールからタスクを読み出すと、セルは、次いで、典型的には、第１のメモリ３０４内の特定の場所からデータを読み出し、そのデータを処理し、処理されたデータを第２のメモリ３０６内の特定の場所に記憶することによって、そのタスクを処理し得る。タスクが完了すると、セルは、タスクプールに通知し、タスクプールは、完了したものとしてタスクをマーキングし、タスクプールは、タスクが完了したことをＣＰＵに通知する。代替として、タスクプールは、タスクスレッドが単一タスク、一連のタスク、またはブール組み合わせのタスクを含み得る限り、タスクスレッドが完了すると、これをＣＰＵに通知してもよい。有意なこととして、セルによるタスクの読み出しおよびデータの処理は、ＣＰＵと種々のセルとの間の直接通信を伴わずに生じ得る。
【００５８】
ここで図４を参照すると、モノのインターネットネットワーク４００が、コントローラ（ＣＰＵ）４０２と、タスクプール４０８と、種々のデバイス４１０−４２２とを含み、そのいくつかまたは全てが、処理容量を具現化する、集積回路（ＩＣ）チップまたは他の構成要素等の関連付けられる、または埋め込まれたマイクロコントローラを含む。非限定的実施例として、本デバイスは、電球４１０、サーモスタット４１２、電気レセプタクル４１４、電力スイッチ４１６、電化製品（例えば、トースター）４１８、車両４２０、キーボード４２２、およびネットワークとインターフェースをとることが可能な事実上任意の他のプラグアンドプレイデバイスまたはアプリケーションを含んでもよい。
【００５９】
例証される実施形態では、コントローラ４０２は、スマートフォン、タブレット、ラップトップ、またはネットワーク上の種々のデバイスとのユーザ相互作用を促進するためのディスプレイ４０４およびユーザインターフェース（例えば、キーパッド）４０６を含み得る他のデバイスであってもよい。コントローラ４０２の処理容量（例えば、帯域幅）がネットワークを適正にサポートするために不十分であり得る限りにおいて、コントローラは、例えば、図５と併せて以下に説明されるように、周辺機器デバイスからタスクプールを介して、処理リソースを効果的に採取または補充してもよい。
【００６０】
ここで図５を参照すると、モノのインターネットネットワーク５００の使用事例が、近傍（または別様に利用可能な）デバイスの動的な利用を例証する。ネットワーク５００は、主要制御ユニット５０２（例えば、ラップトップ、タブレット、またはゲームデバイス）と、タスクプール５０４と、第１のコプロセッサデバイス５０６と、第２のコプロセッサデバイス５０８とを含む。ネットワーク５００の文脈における例示的使用事例が、ここで説明される。
【００６１】
ユーザが、自身のラップトップコンピュータ５０２でビデオゲームをプレイしていると仮定する。ビデオゲームは、詳細なコンピュータ生成イメージを要求し、おそらく、ラップトップ５０２における処理能力は、単一の写実的に見えるキャラクタをレンダリングするために十分であるが、第２のキャラクタが画面上に導入されると、画像品質は、劣化し、キャラクタの移動はもはや、連続的ではない。本発明は、ユーザの近傍内に位置する、または別様にユーザに利用可能な十分に利用されていないコンピュータリソースの処理能力を利用する方法を提案する。
【００６２】
付加的な処理能力の必要性に対処するために、ラップトップ５０２は、タスクプール５０４に接続する。この点で、ラップトップ自体は、タスクプールを具備してもよい、またはタスクプールは、ラップトップ５０２から無線到達範囲内に位置する外部デバイスまたはアプリケーションの形態であってもよい。外部タスクプールの場合では、タスクプール自体は、ポートを伴うスイッチングファブリックの役割を果たし、複数の共処理セルへの接続を可能にし得る。ラップトップ５０２は、算出集約的タスクをタスクプール５０４に投入する。スマートフォン５０８等の近傍の十分に利用されていないデバイスは、続けてタスクプール５０４に接続し、整合タスクタイプをフェッチするためにそのエージェントを送信する。その結果、スマートフォン５０８は、ラップトップ５０２をシームレスに補助するコプロセッサになり、それによって、ビデオゲーム体験を向上させる。同一の方法は、他の十分に利用されていない処理リソースが存在し、必要とされる場合に繰り返されてもよい。実際、利用可能な電球５０６の処理能力であっても、ラップトップへのコプロセッサになり得る。
【００６３】
図６は、例示的並列コンピューティング環境の動作を例証する、フローチャートである。特に、方法６００が、タスクをタスクプールに投入するステップ（ステップ６０２）と、１つまたはそれを上回るエージェントを、１つまたはそれを上回る対応するセルからタスクプールに先回りしてディスパッチするステップ（ステップ６０４）と、タスクを読み出し、処理するステップ（ステップ６０６）と、タスクスレッドが実施されたことをタスクプールおよびＣＰＵに通知するステップ（ステップ６０８）とを含む。方法６００はさらに、必要に応じて、付加的なデバイスをネットワークに動的に組み込むステップ（ステップ６１０）を含む。
【００６４】
したがって、タスクプールと、第１のタスクをタスクプールに投入するように構成される、コントローラと、タスクプールから第１のタスクを先回りして読み出すように構成される、第１のコプロセッサとを含む処理システムが、提供される。
【００６５】
ある実施形態では、第１のコプロセッサは、コントローラと通信することなく、タスクプールから第１のタスクを読み出すように構成される、第１のエージェントを備える。
【００６６】
ある実施形態では、第１のタスクは、第１のタスクタイプの印を含み、第１のコプロセッサは、第１のタイプのタスクを実施するように構成され、第１のエージェントは、第１のタイプのタスクに関してタスクプールを検索するように構成される。
【００６７】
ある実施形態では、第１のコプロセッサはさらに、第１のものを処理し、第１のタスクの完了に応じて、タスクプールに通知するように構成され、タスクプールは、第１のタスクの完了に応じて、コントローラに通知するように構成される。
【００６８】
ある実施形態では、コントローラおよび第１のコプロセッサは、相互にタスクプールを通してのみ通信するように構成される。
【００６９】
ある実施形態では、コントローラおよび第１のコプロセッサは、相互に直接、タスクプールを通して通信するように構成される。
【００７０】
ある実施形態では、第１のコプロセッサは、これが利用可能な処理容量を有していることを判定し、判定に応答してエージェントをタスクプールにディスパッチするように構成される。
【００７１】
ある実施形態では、コントローラはさらに、第２のタスクをタスクプールに投入するように構成され、本システムはさらに、タスクプールから第２のタスクを先回りして読み出すように構成される第２のエージェントを有する、第２のコプロセッサを備える。
【００７２】
ある実施形態では、第２のタスクは、第２のタスクタイプの印を含み、第２のコプロセッサは、第２のタイプのタスクを実施するように構成され、第２のエージェントは、第２のタイプのタスクに関してタスクプールを検索するように構成される。
【００７３】
ある実施形態では、コントローラおよびタスクプールは、モノリシック集積回路（ＩＣ）上に常駐し、第１のコプロセッサは、ＩＣ上に常駐しない。
【００７４】
別の実施形態では、コントローラ、タスクプール、ならびに第１および第２のコプロセッサは、モノリシック集積回路（ＩＣ）上に常駐する。
【００７５】
第１のタスクタイプを有する第１のタスクをタスクプールに投入するように構成される、中央処理ユニット（ＣＰＵ）を含むタイプのネットワーク内の処理リソースを動的に制御する方法もまた、提供される。本方法は、第１のタスクタイプを実施するように第１のセルをプログラムするステップと、プログラムされた第１のセルをネットワークに追加するステップと、第１のセルからタスクプールに、第１のエージェントを先回りして送信するステップと、第１のエージェントによって、第１のタイプのタスクに関してタスクプールを検索するステップと、第１のエージェントによって、タスクプールから第１のタスクを読み出すステップと、第１のエージェントによって、第１のセルに第１のタスクをトランスポートするステップと、第１のセルによって、第１のタスクを処理するステップと、第１のセルからタスクプールに、第１のタスクが完了した通知を送信するステップとを含む。
【００７６】
ある実施形態では、本方法はまた、タスクプールによって、第１のタスクを完了しているものとしてマーキングするステップと、タスクプールからＣＰＵに、第１のタスクが完了した通知を送信するステップとを含む。
【００７７】
ある実施形態では、本方法はまた、第１のエージェントをタスクプールに先回りして送信するための述語として、第１のセルが利用可能な処理容量を有すると判定するように第１のセルを構成するステップを含む。
【００７８】
ある実施形態では、本方法はまた、プログラムされた第１のセルをネットワークに追加することに先立って、第１のセルを第１のデバイスに統合するステップを含む。
【００７９】
ある実施形態では、第１のデバイスは、センサ、電球、電力スイッチ、電化製品、バイオメトリックデバイス、医療デバイス、診断デバイス、ラップトップ、タブレット、スマートフォン、モータコントローラ、およびセキュリティデバイスのうちの１つを含む。
【００８０】
ある実施形態では、プログラムされた第１のセルをネットワークに追加するステップは、第１のセルとタスクプールとの間に通信リンクを確立するステップを含む。
【００８１】
ある実施形態では、（ＣＰＵ）はさらに、第２のタスクタイプを有する、第２のタスクをタスクプールに投入するように構成され、本方法はさらに、第２のタスクタイプを実施するように第２のセルをプログラムするステップと、第２のセルとタスクプールとの間に通信リンクを確立するステップと、第２のセルからタスクプールに、第２のエージェントを先回りして送信するステップと、第２のエージェントによって、第２のタイプのタスクに関してタスクプールを検索するステップと、第２のエージェントによって、タスクプールから第２のタスクを読み出すステップと、第２のエージェントによって、第２のセルに第２のタスクをトランスポートするステップと、第２のセルによって、第２のタスクを処理するステップと、第２のセルからタスクプールに、第２のタスクが完了した通知を送信するステップと、タスクプールによって、第２のタスクを完了しているものとしてマーキングするステップと、タスクプールからＣＰＵに、第２のタスクが完了した通知を送信するステップとを含む。
【００８２】
モノのインターネット（ＩｏＴ）コンピューティング環境内の分散処理リソースを制御するためのシステムもまた、提供され、集約コンピューティング要件を複数のタスクにパーティション化し、タスクをプール内に置くように構成される、ＣＰＵと、それぞれ、ＣＰＵとの直接通信を伴わずに、プールからタスクを先回りして読み出すように構成される、一意の専用エージェントを有する、複数のデバイスとを含む。
【００８３】
本発明者に把握される最良の形態を含む、種々の実施形態を可能にする説明が例証されたが、本発明の範囲から逸脱することなく、種々の変更および修正が成され得、均等物が種々の要素に対して代用され得ることが、当業者によって理解されるであろう。したがって、本明細書に開示される本発明は、開示される特定の実施形態に限定されず、本発明は、添付される請求項の文字通りかつ同等の範囲内に該当する全ての実施形態を含むであろうことが意図される。
【図１】
0006740210.tif 000002
【図２】
0006740210.tif 000003
【図３】
0006740210.tif 000004
【図４】
0006740210.tif 000005
【図５】
0006740210.tif 000006
【図６】
0006740210.tif 000007