JP2017521796A - System and method for parallel processing using a dynamically configurable preemptive coprocessing cell - Google Patents

System and method for parallel processing using a dynamically configurable preemptive coprocessing cell Download PDF


Publication number
JP2017521796A JP2017503021A JP2017503021A JP2017521796A JP 2017521796 A JP2017521796 A JP 2017521796A JP 2017503021 A JP2017503021 A JP 2017503021A JP 2017503021 A JP2017503021 A JP 2017503021A JP 2017521796 A JP2017521796 A JP 2017521796A
Prior art keywords
task pool
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.)
Application number
Other languages
Japanese (ja)
Other versions
JP2017521796A5 (en
アリフォンソ イニゲス,
アリフォンソ イニゲス,
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
Priority to US14/340,332 priority Critical patent/US9852004B2/en
Priority to US14/340,332 priority
Application filed by アリフォンソ イニゲス,, アリフォンソ イニゲス, filed Critical アリフォンソ イニゲス,
Priority to PCT/US2015/039993 priority patent/WO2016014263A2/en
Publication of JP2017521796A publication Critical patent/JP2017521796A/en
Publication of JP2017521796A5 publication Critical patent/JP2017521796A5/ja
Application status is Pending legal-status Critical




並列処理アーキテクチャが、CPUと、CPUによって投入されるタスクプールと、それぞれ、タスクプールに先回りして問い合わせ、特定のコプロセッサに対して適切なタスクを読み出すように構成されるエージェントを有する、複数の自律的共処理セルとを含む。 Parallel processing architecture, CPU and the tasks pools submitted by CPU, respectively, query proactively to task pool, with an agent configured to read out the appropriate tasks for a particular coprocessor, a plurality of and a autonomous co-processed cells. 各コプロセッサは、全てのシステムリソース間のデータ転送およびアービトレーションのための接続を促進する、スイッチングファブリックを通してタスクプールと通信する。 Each coprocessor facilitates a connection for data transfer and arbitration between all system resources, to communicate with the task pool through the switching fabric. 各コプロセッサは、タスクまたはタスクスレッドが完了すると、これをタスクプールに通知し、その後、タスクプールは、CPUに通知する。 Each coprocessor, when a task or task thread is completed, notifies the task pool, then the task pool, and notifies the CPU.


(優先権データ) (Priority data)
本願は、2013年1月25日に出願された米国出願第13/750,696号の継続出願であり、該米国出願は、参照により本明細書中に援用される。 This application is a continuation filed on Jan. 25, 2013 U.S. Patent Application No. 13 / 750,696, it said US application is incorporated herein by reference.

本発明は、概して、並列プロセスコンピューティングに関し、特に、中央処理ユニットによって投入されるタスクプールからタスクを先回りして読み出すように構成される、自律的コプロセッサを伴う処理アーキテクチャに関する。 The present invention relates generally to parallel process computing, in particular, configured to read out proactively task from the task pool that is turned by the central processing unit, to processing architecture with autonomous coprocessor.

モノのインターネット(モノのクラウドとも称される)は、既存のインターネットインフラストラクチャ内の一意に認識可能な埋め込まれたコンピューティングデバイスのアドホックネットワークを指す。 (Also called mono cloud) Internet of Things refers to the ad hoc network of uniquely recognizable embedded computing devices within the existing Internet infrastructure. モノのインターネット(IoT)は、マシンツーマシン通信(M2M)に優る、デバイス、システム、およびサービスの高度な接続性を予示する。 Mono Internet (IoT) is superior to machine to machine communication (M2M), devices, predictive of advanced connectivity of the system, and service. IoTによって想定されるモノの範囲は、無制限であり、例えば、心臓監視インプラント、バイオチップトランスポンダ、自動車センサ、航空宇宙および防衛分野オペレーションデバイス、ならびに探索および救助活動において消防士を補助する公衆安全用途等のデバイスを含み得る。 Range of mono envisioned by IoT, an unlimited, for example, cardiac monitoring implant, biochip transponder, automotive sensors, public safety applications such as to assist the firefighters in the aerospace and defense operations devices, as well as search and rescue It may include the device. 現在の市場の実施例は、遠隔監視のためにWi−Fiを利用するスマートサーモスタット、電球、および洗濯機/乾燥機を伴う家庭ベースのネットワークを含む。 Example of current market include smart thermostat utilizing a Wi-Fi for remote monitoring, bulbs, and washers / dryers home-based network with. IoTにおいて接続される物体の遍在性に起因して、2020年までに300億個を上回るデバイスが、モノのインターネットに無線接続されるであろうことが推定されている。 Due to the ubiquity of the object to be connected in IoT, devices above 300 billion by 2020, it would be wirelessly connected to the Internet of Things are estimated. これらのデバイスと関連付けられるコントローラおよびプロセッサの処理容量を利用することが、本発明の目的のうちの1つである。 It is one of the purposes of the present invention utilizing the process capacity of the controller and processor associated with these devices.

コンピュータプロセッサは、伝統的に、マシンコード化命令を直列的に実行する。 Computer processor, traditionally, to perform machine coded instructions serially. 複数のアプリケーションを並行して起動するために、単一のプロセッサが、種々のプログラムからの命令をインターリーブし、それらを直列的に実行するが、ユーザの視点からは、アプリケーションは、並列に処理されているように見える。 To start multiple applications concurrently, a single processor, interleaves instructions from various programs, but they execute serially, from the user's perspective, the application is processed in parallel It seems to be. 一方、真の並列またはマルチコア処理は、大規模な算出タスクを個々の算出ブロックに細分化し、それらを2つまたはそれを上回るプロセッサ間で分散する算出アプローチである。 On the other hand, the true parallel or multi-core processing, subdivide large calculation tasks to individual calculation block, a calculation approach for distributed among processors them two or exceed it. タスク並列性(並列処理)を使用するコンピューティングアーキテクチャは、大規模な算出要件を実行可能なコードの離散モジュールに分割する。 Computing architecture using task parallelism (the parallelism) divides a large calculation requirements discrete module of executable code. モジュールは、次いで、それらのそれぞれの優先順位に基づいて、並行して、または連続的に実行される。 Module, then, based on their respective priority are executed in parallel, or sequentially.

典型的なマルチプロセッサシステムは、中央処理ユニット(「CPU」)と、1つまたはそれを上回るコプロセッサとを含む。 Typical multiprocessor system includes a central processing unit ( "CPU"), and one or coprocessor over it. CPUは、算出要件をタスクにパーティション化し、そのタスクをコプロセッサに分散する。 The CPU partitions the calculation requirements the task to distribute the tasks to the coprocessor. 完了したスレッドは、CPUに報告され、これは、必要に応じて付加的なスレッドをコプロセッサに分散し続ける。 Complete thread is reported to CPU, which continues to distribute the additional threads as needed to the coprocessor. 現在公知の多重処理アプローチは、タスク分散によって有意な量のCPU帯域幅が消費される点において不利であり、新しいタスクを分散する前にタスクが完了するまで待機し(多くの場合、以前のタスクに依存する)、タスクが完了すると、コプロセッサからの割込みに応答し、コプロセッサからの他のメッセージに応答する。 Currently known multiprocessing approach is disadvantageous in that CPU bandwidth significant amounts by task distribution is consumed, a new case tasks before dispersing to wait until the task is completed (in most previous task depends on), the task is completed, in response to an interrupt from the coprocessor to respond to other messages from the coprocessor. 加えて、コプロセッサは、多くの場合、CPUからの新しいタスクを待ちながら、アイドルしたままである。 In addition, coprocessor, often while waiting for new tasks from the CPU, remains idle.

したがって、CPU管理オーバーヘッドを低減させ、また、利用可能な共処理リソースをより効果的に利用および活用するマルチプロセッサアーキテクチャが、必要とされる。 Therefore, to reduce the CPU management overhead, also multiprocessor architectures to more effectively utilize and take advantage of the available co-processing resources are needed.

並列処理コンピューティングアーキテクチャの種々の実施形態は、タスクプールに投入するように構成される、CPUと、タスクプールからスレッド(タスク)を先回りして読み出すように構成される、1つまたはそれを上回るコプロセッサとを含む。 Various embodiments of the parallel processing computing architecture is configured to put in the task pool, a CPU, configured to read out proactively threads (tasks) from the task pool, over one or it and a co-processor. 各コプロセッサは、タスクの完了に応じてタスクプールに通知し、別のタスクが処理のために利用可能になるまでタスクプールをping確認する。 Each coprocessor notifies the task pool Upon completion of the task, another task is the task pool to become available to ping confirmed for processing. このように、CPUは、タスクプールと直接通信し、タスクプールを通してコプロセッサと間接的に通信する。 Thus, CPU communicates directly with the task pool, to communicate coprocessor indirectly through task pool.

コプロセッサはまた、自律的に作用することも可能であり得、つまり、それらは、CPUから独立してタスクプールと相互作用してもよい。 Coprocessor also autonomously is also possible to act obtained, that is, they may interact with the task pool independently from the CPU. 好ましい実施形態では、各コプロセッサは、実施するタスクを探求するためにタスクプールに問い合わせるエージェントを含む。 In a preferred embodiment, each coprocessor includes an agent querying the task pool to explore the task to be performed. その結果、コプロセッサは、相互に、およびタスクプールと「連帯して」協働し、相互に関連する、またはしない場合もある個々のタスクを自律的に読み出し、完了することによって、集約算出要件を完了する。 As a result, the coprocessor each other and the task pool and "jointly and severally" cooperate to correlate, or not if autonomously reads the individual tasks, which is also, by completing the aggregate calculation requirements to complete. 非限定的実施例として、タスクBは、経時的な平均温度を算出するステップを伴うと仮定する。 As a non-limiting example, the task B is assumed to involve a step of calculating a temporal average temperature. 経時的な温度読取値を捕捉するステップを含むようにタスクAを定義することによって、さらに、捕捉された読取値を取得するステップを含むようにタスクBを定義することによって、CPUおよび種々のコプロセッサは、それによって、タスクプールを介して相互に推測的に通信してもよい。 By defining the task A so as to include the step of capturing the temporal temperature reading, further by defining the task B to include the step of acquiring the captured readings, CPU and various co processor, thereby may be speculatively communicate with each other via the task pool.

種々の実施形態では、コプロセッサは、自律的かつ先見的な連帯セルと称される。 In various embodiments, the co-processor is referred to as autonomous and proactive solidarity cell. この文脈において、自律的という用語は、コプロセッサが、CPUによってまたはタスクプールによってそうするように命令されることなく、タスクプールと相互作用し得ることを含意する。 In this context, the term autonomously, coprocessor, without being instructed to do so by or by the task pool CPU, and implies that it is possible to interact with the task pool. 先見的という用語は、各コプロセッサが、周期的にエージェントを送信し、そのコプロセッサに適切な利用可能なタスクに関してタスクプールを監視するように構成(例えば、プログラム)され得ることを示唆する。 The term forward-looking suggests that the coprocessor, it periodically transmits agent, configured to monitor a task pool respect appropriate tasks available to the coprocessor (e.g., a program) may be. 連帯という用語は、共処理セルが、タスクプール内の全ての利用可能なタスクを監視および実行する際に共通の目的を共有することを含意する。 The term solidarity, co-treatment cell, implies that share a common purpose in monitoring and perform all available tasks in the task pool.

連帯セル(コプロセッサ)は、汎用または専用プロセッサであってもよく、したがって、本システム内のCPUおよび他の連帯セルと比較して、同一または異なる命令セット、アーキテクチャ、およびマイクロアーキテクチャを有してもよい。 Solidarity cell (coprocessor) may be a general-purpose or special-purpose processor, therefore, as compared with the CPU and other joint cell in the system, have the same or a different instruction set architecture, and microarchitecture it may be. さらに、実行されるべきソフトウェアプログラムおよび処理されるべきデータは、1つまたはそれを上回るメモリユニット内に含有されてもよい。 Further, data to be software programs and processing to be executed may be contained in the memory unit over one or the same. 典型的なコンピュータシステムでは、例えば、ソフトウェアプログラムは、プログラムによって使用されるべきデータを要求し得る、一連の命令から成る。 In a typical computer system, for example, a software program may require data to be used by the program consists of a series of instructions. 例えば、プログラムがメディアプレーヤに対応する場合、メモリ内に含有されるデータは、コプロセッサによって読み取られ、最終的にスピーカで再生される圧縮オーディオデータであってもよい。 For example, if the program corresponding to the media player, the data contained in the memory is read by the coprocessor, and finally it may be compressed audio data reproduced by the speaker.

本システム内の各連帯セルは、ファブリックとしても公知である、クロスバースイッチを通してタスクプールとオーム的に、または無線で通信するように構成されてもよい。 Each joint cell in the system, also known as fabric, the task pool and ohmic through crossbar switch, or may be configured to communicate wirelessly. 純粋に無線のメッシュ形態では、無線信号自体が、ファブリックを構成してもよい。 In purely wireless mesh shape, a radio signal itself may constitute the fabric. 種々の実施形態では、コプロセッサはまた、CPUと直接通信してもよい。 In various embodiments, the co-processor may also communicate directly with the CPU. スイッチングファブリックは、システムリソース間の通信を促進する。 Switching fabric facilitates communication between system resources. 各連帯セルは、連帯セルが実施する処理を全く有していないとき、または代替として、連帯セルがその通常動作を妨げることなく処理サイクルに寄与することが可能であるとき、そのエージェントをタスクプールに送信することによって、実施するタスクを取得するという点において先見的である。 Each joint cell, when the solidarity cell does not have any processes to be performed, or alternatively, when solidarity cell is able to contribute to the processing cycle without interfering with its normal operation, the task pool that agent by sending to a priori in that acquires a task to be performed. 非限定的実施例として、モノのインターネット(以下により詳細に議論される)の文脈では、電球等のデバイスと関連付けられるコプロセッサは、その通常動作として、マスターデバイス(スマートフォン等)から「オン」および「オフ」コマンドを待つようにプログラムされてもよいが、その処理リソースもまた、タスクプールを通して利用されてもよい。 As a non-limiting example, in the context of Internet of Things (discussed in more detail below), a coprocessor associated with devices bulb such as its normal operation, and "ON" from the master device (smartphone) " may be programmed to wait for off "command, the processing resources may also be available through the task pool.

本明細書に説明される種々の実施形態の文脈では、エージェントという用語は、タスクプールと相互作用し、それによって、そのコプロセッサセルに対して適切である利用可能なタスクを取得するコプロセッサと関連付けられる、ネットワークパケットに類似するソフトウェアモジュールを指す。 In the context of the various embodiments described herein, the term agent, the task pool and interact, whereby the coprocessor to obtain the appropriate tasks available for that coprocessor cell associated refers to the software module similar to the network packet. 連帯セルは、タスクが以前のタスクの実行を条件とするとき、連続的に、または実行のために1つを上回る連帯セルが利用可能であり、1つを上回る整合タスクが利用可能であるとき、並列にタスクを実行してもよい。 When solidarity cell, when a task is subject to execution of a previous task, continuously or solidarity cell over one for execution are available, matching task than one are available You may perform the tasks in parallel. タスクは、(該当する場合)CPUによって提供されるタスクスレッド制限に応じて、独立して、または共同で実行されてもよい。 Task, depending on the task thread limit provided by (if applicable) CPU, independently, or may be performed jointly. タスクプール内の相互依存したタスクは、論理的に組み合わせられてもよい。 Interdependent tasks in the task pool, may be combined logically. タスクプールは、タスクスレッドが完了すると、これをCPUに通知する。 Task pool, the task thread completes, and notifies the CPU. タスクスレッドが単一のタスクから成る場合、タスクプールは、そのようなタスクの完了時にCPUに通知してもよい。 If the task thread consists of a single task, the task pool may notify the CPU at the completion of such a task. タスクスレッドが複数のタスクから成る場合、タスクプールは、そのような一連のタスクの完了時にCPUに通知してもよい。 If the task thread comprising a plurality of tasks, the task pool may notify the CPU at the completion of such a series of tasks. タスクスレッドは論理的に組み合わせられ得るため、論理的に組み合わせられたタスクスレッドの完了後に、タスクプールがCPUに通知する場合があることも想定される。 Since the task thread can be combined logically after completion of the task threads which are logically combined it is also envisaged that in some cases the task pool to notify the CPU.

当業者は、CPUおよびコプロセッサ間の相互運用性が、種々のコプロセッサと関連付けられる、命令セットアーキテクチャから独立した抽象レベルでタスクを構成および/または構築するようにCPUを構成し、それによって、命令レベルでではなく、タスクレベルで構成要素が通信することを可能にすることによって促進され得ることを理解するであろう。 Those skilled in the art, interoperability between the CPU and coprocessor are associated with various co-processor to configure the CPU to configure and / or build a task in a separate level of abstraction from the instruction set architecture, thereby, rather than at the instruction level, it will appreciate that may be facilitated by allowing the communicating components at the task level. したがって、デバイスおよびそれらの関連付けられるコプロセッサは、「プラグアンドプレイ」ベースでネットワークに追加されてもよい。 Thus, the coprocessor associated devices and the they may be added to the network in the "plug and play" basis. 本発明の別の側面は、異なる命令セットアーキテクチャを伴うCPUの異種アレイ内の相互運用性を提供する。 Another aspect of the present invention provide interoperability in the heterogeneous array of CPU with different instruction set architectures.

本発明の種々の特徴は、とりわけ、モノのインターネットデバイスおよびセンサのネットワーク、異種コンピューティング環境、高性能コンピューティング2次元および3次元モノリシック集積回路、ならびにモーション制御およびロボットに適用可能である。 Various features of the present invention is particularly applicable Internet devices and sensor networks mono-, heterogeneous computing environments, high-performance computing 2D and 3D monolithic integrated circuit, as well as motion control and robot.

本発明は、以降では、添付される図面と併せて説明され、同様の番号は、同様の要素を表す。 The present invention, in the following, is described in conjunction with the drawings that are attached, like numerals represent like elements.

図1は、ある実施形態による、CPUと、メモリと、タスクプールと、ファブリックを通して通信するように構成される複数のコプロセッサとを含む、並列処理アーキテクチャの概略ブロック図である。 1, according to an embodiment, a CPU, including a memory, a task pool, and a plurality of co-processors configured to communicate through the fabric, is a schematic block diagram of a parallel processing architecture.

図2は、ある実施形態による、例示的タスクプールの詳細を例証する、概略ブロック図である。 2, according to one embodiment illustrates the details of an exemplary task pool is a schematic block diagram.

図3は、ある実施形態による、タスクプールと相互作用する、共処理セルおよびそれらの対応するエージェントを含むネットワークの概略ブロック図である。 3, according to one embodiment, interacts with the task pool is a schematic block diagram of a network including a co-processing cells and corresponding agent thereof.

図4は、ある実施形態による、利用可能なプラグアンドプレイデバイスを含む、モノのインターネットネットワークの概略配置である。 4, according to one embodiment, comprises a plug-and-play devices available, a schematic arrangement of a mono Internet network.

図5は、ある実施形態による、近傍デバイスの動的利用を例証する、例示的モノのインターネットの使用事例の概略配置図である。 5, according to one embodiment, illustrates the dynamic utilization of neighboring devices, a schematic arrangement diagram of a use case example mono Internet.

図6は、ある実施形態による、例示的並列コンピューティング環境の動作を例証する、フローチャートである。 6, according to an embodiment, illustrating the operation of the exemplary parallel computing environment, a flow chart.

種々の実施形態は、例えば、モノのインターネットの文脈における、限定ではないが、データ暗号化;グラフィック、ビデオ、およびオーディオ処理;ダイレクトメモリアクセス;数学的算出;データマイニング;ゲームアルゴリズム;ネットワーク外のデータの構築、受信、および伝送を含む、イーサネット(登録商標)パケットおよび他のネットワークプロトコル処理;金融サービスおよびビジネス方法;検索エンジン;インターネットデータストリーミングおよび他のウェブベースアプリケーション;内部または外部ソフトウェアプログラムの実行;電化製品、電球、消費者用電子機器、および同等物のオンおよびオフ切替ならびに/または別様にそれらの制御もしくは操作を含む、単純な切替および制御機能から複雑なプログラムお Various embodiments are, for example, in the context of the internet of things, but not limited to, data encryption; graphics, video, and audio processing; direct memory access; mathematical calculation; data mining; Game algorithm; network outside the data construction, reception, and transmission, Ethernet packets and other network protocol processing; financial services and business methods; search engine; execution of internal or external software programs; Internet data streaming and other web-based applications; All appliances, light bulbs, consumer electronics, and on and off switching and / or differently equivalents including those of the control or operation, complex programs from simple switching and control functions びアルゴリズムまでの並列処理コンピューティングシステムおよび環境に関する。 About parallel processing computing systems and environments to fine algorithm.

種々の特徴が、任意の現在公知の、または後に開発されるコンピュータアーキテクチャ中に組み込まれてもよい。 Various features may be incorporated in a computer architecture developed any current known or later. 例えば、同期、データセキュリティ、順不同実行、およびメインプロセッサ割込みに関する並列処理の問題は、本明細書に説明される発明的概念を使用して対処され得る。 For example, synchronous, data security, order execution, and problems of parallel processing regarding the main processor interrupt may be addressed using the inventive concepts described herein.

ここで図1を参照すると、分散処理システム10が、単一またはマルチコアCPU11と、クロスバースイッチングファブリック14を通してタスクプール13と通信するように構成される、1つまたはそれを上回る連帯もしくは共処理セル12A−12とを含む。 Referring now to FIG. 1, the distributed processing system 10, a single or a multi-core CPU 11, configured to communicate with the task pool 13 through the crossbar switching fabric 14, one or jointly or co-treated cells than it and a 12A-12. 連帯セル12はまた、スイッチングファブリック14を通して、または別個のセルバス(図示せず)を通して、相互に通信してもよい。 Solidarity cell 12 also, through the switching fabric 14 or through a separate cell bus (not shown), may communicate with each other. CPU11は、直接、またはスイッチングファブリック14を通して、タスクプール13と通信してもよい。 CPU11 directly or through a switching fabric 14 may communicate with the task pool 13. 1つまたはそれを上回るメモリユニット15が、それぞれ、データおよび/または命令を含有する。 One or memory unit 15 over it, respectively, containing data and / or instructions. 本文脈では、「命令」という用語は、CPU11による実行のためにコンパイルされ得るソフトウェアプログラムを含む。 In the present context, the term "instructions" includes software programs that can be compiled for execution by CPU 11. メモリユニット15、セル12、およびタスクプール13は、スイッチングファブリック14を介して、CPUと、および/または相互に通信するようにオーム的に、または無線で相互接続されてもよい。 A memory unit 15, the cell 12 and the task pool 13, through the switching fabric 14, CPU and, and / or ohmically to communicate with each other, or may be interconnected wirelessly. いくつかの実施形態では、CPU11は、タスクプールを通して間接的にのみセル12と通信する。 In some embodiments, CPU 11 communicates with the cell 12 only indirectly through the task pool. 他の実施形態では、CPU11はまた、中間物としてタスクプールを使用することなく、セル12と直接通信してもよい。 In other embodiments, CPU 11 is also without the use of a task pool as an intermediary, may communicate directly with the cell 12.

いくつかの実施形態では、システム10は、1つを上回るCPU11と、1つを上回るタスクプール13とを含んでもよく、その場合では、特定のCPU11が、特定のタスクプール13と排他的に相互作用してもよい、または複数のCPU11が、1つまたはそれを上回るタスクプール13を共有してもよい。 In some embodiments, the system 10 includes a CPU 11 over one may include a task pool 13 above the one, in this case, exclusively mutual particular CPU 11, a particular task pool 13 it may act, or CPU11 may share the task pool 13 above one or it. さらに、各連帯セルは、1つを上回るタスクプール13と相互作用するように構成されてもよい。 Further, each joint cell may be configured to interact with the task pool 13 above one. 代替として、特定のセルが、例えば、高性能または高セキュリティの文脈において、単一の指定されたタスクプールと相互作用するように構成されてもよい。 Alternatively, certain cells, for example, in the context of high performance or high security, may be configured to interact with a single specified task pool.

種々の実施形態では、セルは、以下の3つの条件が満たされると、タスクプールとオーム的に(プラグアンドプレイ)、または無線で(オンザフライ)動的にペアリングされてもよい。 In various embodiments, the cell, when the following three conditions are met, the task pool and ohmically (Plug and Play), or wirelessly (on the fly) may be dynamically paired.
1)セルが、タスクプールとオーム的に、または無線で通信することが可能である。 1) cell is capable of communicating tasks pools and ohmically or wireless. タスクプールへの接続は、タスクプール自体におけるポートを通して、またはタスクプールに接続されるスイッチングファブリックを通してであり得る。 Connection to the task pool, may be through a switching fabric that is connected through the port in the task pool itself, or the task pool.
2)タスクプールが、例えば、パスワードの有無にかかわらず、伝統的なWi−Fi、Bluetooth(登録商標)、もしくは類似するペアリングを通した、スマートフォンもしくはタブレッド上で起動するグラフィカルソフトウェアプログラムを通した手動の、または任意の他のセキュアもしくは非セキュアな方法による、ユーザからの入力を使用して、セルによって送信されたエージェントを信頼できるものとして認識する。 2) the task pool, for example, regardless of the presence or absence of the password, traditional Wi-Fi, Bluetooth (registered trademark), or through a similar pairing, through a graphical software program that starts on the smartphone or Tabureddo manually, or by any other secure or non-secure way, using input from the user is recognized as trustworthy agents transmitted by the cell.
3)タスクプール内の利用可能なタスクのうちの少なくとも1つが、連帯セルの能力と互換性がある。 3) at least one of the available tasks in the task pool, but the ability compatible with the solidarity cell.

複数のタスクプールを伴うマルチプロセッサ環境の場合では、前述の動的なペアリング条件が適用され、但し、所与のセルが、タスクプールのうちの1つのみと協働するようにロックまたは制限され得、そうでなければ、セルは、第1発見ベース、ラウンドロビンベース、または任意の他の選択スキームを使用して、1つまたはそれを上回るタスクプールと接続し得る。 In the case of a multiprocessor environment with multiple tasks pools, apply dynamic pairing conditions described above, however, a given cell is locked to 1 Tsunomito cooperation of the tasks pool or limit is obtained, otherwise, the cell is first found based using a round-robin basis, or any other selection schemes, may be connected to one or task pool above it. また、タスクプール内のタスクに優先順位を割り当てることも可能であり、それによって、セルは、優先順位の高いタスクを優先し、より優先順位の高いタスクに別様に従事しないとき、より優先順位の低いタスクを扱う。 It is also possible to assign a priority to a task in the task pool, whereby the cell is preferentially higher priority task, when not otherwise engaged in a higher priority task, more priority dealing with low task.

CPU11は、ソフトウェアプログラムを実行するために使用される、任意の単一もしくはマルチコアプロセッサ、アプリケーションプロセッサ、またはマイクロコントローラであってもよい。 CPU11 is used to execute software programs, any single or multi-core processor may be an application processor or microcontroller. システム10は、パーソナルコンピュータ、スマートフォン、タブレット、またはモノのインターネットデバイス上に実装されてもよく、その場合では、CPU11は、Intel(登録商標)Pentium(登録商標)または直近のコンピューティング環境にローカルである、もしくはそれからリモートであるマルチコアプロセッサ等の任意のパーソナルコンピュータ、中央プロセッサ、またはプロセッサクラスタであってもよい。 System 10 may be a personal computer, a smart phone, a tablet or may be implemented on a mono Internet device, in this case, the CPU 11 is local to the Intel (R) Pentium (R) or most recent computing environment some, or any personal computer such as a multi-core processor is that remotely may be a central processor or processor cluster. 代替として、システム10は、スーパーコンピュータ上に実装されてもよく、CPU11は、縮小命令セットコンピュータ(「RISC」)プロセッサ、アプリケーションプロセッサ、マイクロコントローラ、または同等物であってもよい。 Alternatively, the system 10 may be implemented on a supercomputer, CPU 11 is a reduced instruction set computer ( "RISC") processor, an application processor may be a microcontroller or equivalent.

他の実施形態では、システム10は、Beowulfクラスタ等のローカル接続された一連のパーソナルコンピュータ上に実装されてもよく、その場合では、CPU11は、ネットワーク化コンピュータの全て、そのサブセット、またはそのうちの1つの中央プロセッサを含んでもよい。 In other embodiments, the system 10 may be implemented on a Beowulf cluster like locally connected series of personal computers, and in that case, CPU 11, all networked computers, a subset or one of them, One of the central processor may include. 代替として、システム10は、リモート接続されたコンピュータのネットワーク上に実装されてもよく、その場合では、CPU11は、サーバまたはメインフレームのための現在公知の、または後に開発される中央プロセッサであってもよい。 Alternatively, the system 10 may be implemented on a remote computer connected to the network, in this case, the CPU 11 provides a current central processor known or later developed, for the server or mainframe it may be. CPU11が、ここで説明されるシステム10内で対象並列処理方法を実施する特定の様式は、CPUのオペレーティングシステムによって影響を受け得る。 CPU11 is specific modes of carrying out the target parallel processing method in the system 10 described herein can be affected by the operating system of the CPU. 例えば、CPU11は、以下に説明されるように、タスクプール13を認識し、これと通信し、コンピューティング要件をスレッドに分割するようにこれをプログラムすることによって、システム10内で使用するために構成されてもよい。 For example, CPU 11, as described below, and recognizes the task pool 13 communicates with this, by programming them to split the computing requirements in thread, for use in system 10 configuration may be.

システム10は、本明細書に説明される機能性を実装するように修正または別様に構成され得るオペレーティングシステムを有する、任意のコンピュータまたはコンピュータネットワーク上に遡及的に実装され得ることがさらに想定される。 System 10, it is further assumed to have an operating system that may be configured to modify or otherwise to implement the functionality described herein may be retrospectively implemented on any computer or computer network that. 当分野で公知であるように、処理されるべきデータは、例えば、ランダムアクセスもしくは読取専用メモリ、CPU11のためのキャッシュメモリ、またはフラッシュメモリおよび磁気記憶装置等の他の形態のデータ記憶装置のアドレス指定可能領域または区画の文脈において、メモリユニット15内に含有される。 As is known in the art, the data to be processed, for example, random access or read only memory, cache memory, or address of the data storage device of another form such as a flash memory and a magnetic storage device, for CPU11 in the context of the designated area or compartment, it is contained in the memory unit 15. メモリユニット15は、処理されるべきデータだけではなく、処理されたデータの結果を置く場所も含有する。 Memory unit 15 is not only the data to be processed, also contains where to place the result of the processed data. 例えば、システム10にデータを戻し得るスマートメータおよび自動車計器の場合のように、またはある機構を作動し得るロボットおよびモータコントローラの場合のように、全てのタスクが、メモリユニット15にアクセスすることを要求されるわけではない。 For example, as in the case of the smart meters and automotive instrument may return the data to the system 10 as in the case of or the robot and the motor controller may operate some mechanism, that all tasks, accesses the memory unit 15 but it is not required.

各セル12は、1つまたはそれを上回るタスク/スレッドを実行することが可能である、概念的または論理的に独立した算出ユニットである。 Each cell 12 is capable of performing one or task / thread above it, a conceptual or logically separate calculation unit. セル12は、マイクロコントローラ、マイクロプロセッサ、アプリケーションプロセッサ、「ダム」スイッチ、またはBeowulfクラスタ内のマシン等の独立型コンピュータであってもよい。 Cell 12 includes a microcontroller, microprocessor, application processor may be a "dumb" switch or Beowulf standalone computer machine such as in the cluster.

セル12は、CPUの機能、または、例えば、周囲監視およびロボットアクチュエータ等のCPU11とは無関係の機能を補完する、それらの全てを実施する、またはそれらの限定された範囲を実施するように構成される、汎用または専用コプロセッサであってもよい。 Cell 12, the function of the CPU, or, for example, to complement the functions unrelated to the CPU11 such as surrounding monitoring and robotic actuators to implement all of them, or be configured to perform a limited range thereof that may be a general-purpose or special-purpose co-processors. 専用プロセッサは、特殊化タスクを実施するように設計、プログラム、または別様に構成される、専用ハードウェアモジュールであってもよい、またはこれは、グラフィック処理、浮動小数点演算、もしくはデータ暗号化等の特殊化タスクを実施するように構成される、汎用プロセッサであってもよい。 Dedicated processor, designed to implement specialized tasks, programs or configured otherwise, may be a dedicated hardware module, or it graphics processing, floating point operations, or data encryption, etc. configured to perform specialized tasks, it may be a general purpose processor.

ある実施形態では、専用プロセッサである任意のセル12はまた、メモリにアクセスし、それに書き込み、以下に説明されるように、記述子を実行し、ならびに他のソフトウェアプログラムを実行するように構成されてもよい。 In certain embodiments, any cell 12 which is a dedicated processor also accesses the memory, it writes, is configured to, as described below, it performs a descriptor, and executes other software programs it may be.

さらに、任意の数のセル12が、異種コンピューティング環境、つまり、AMDベースおよび/またはIntelベースのプロセッサ、または32ビットおよび64ビットプロセッサの混合物等の1種類を上回るプロセッサを使用するシステムを含み得る。 Further, the cell 12 Any number of different computing environments, that is, may include a system that uses a processor in excess of one type of mixture of AMD-based and / or Intel-based processor or 32-bit and 64-bit processors, .

各セル12は、以下のイベントのシーケンスに例証されるように、1つまたは複数の特殊化タスクを実施するように構成される。 Each cell 12, as illustrated in the following sequence of events, configured to implement one or more specialized tasks. ポーリングフェーズ中、各セルは、整合タスクが見出されるまで、タスクプールにエージェントを周期的に送信する。 Polling phase, each cell, until the found matching task, transmits the agent periodically to the task pool. この整合を促進するために、セルおよびタスクプールは両方とも、送受信機を具備してもよい。 To facilitate this alignment, both cells and task pool may comprise a transceiver. タスクプールの場合では、送受信機は、タスクプール自体に、またはタスクプールが接続されるスイッチングファブリックに位置してもよい。 In the case of the task pool, transceiver, the task pool itself, or the task pool may be located at switching fabric that is connected. タスクプール内にタスク整合が見出されると、タスクプールは、セルに肯定応答を伝送する。 When the task match is found in the task pool, the task pool, transmits an acknowledgment to the cell. 次のステップは、「通信チャネル」フェーズである。 The next step is a "communication channel" phase. 通信チャネルフェーズ中、セルは、タスクを受信し、そのタスクを実行し始める。 Communicating channel phase, the cell receives a task, begins to perform its tasks. 一実装では、いったん第1のタスクが完了すると、通信チャネルは、連帯セルが「ポーリング」および「肯定応答」フェーズを繰り返す必要なく別のタスクをフェッチし得るように維持される。 In one implementation, once the first task is completed, the communication channel is maintained as jointly cells can fetch another task without the need to repeat the "polling" and "acknowledge" phase.

システム10は、複数のセルを含んでもよく、セルのいくつかは、他のセルと同一のタスクタイプを実施することが可能であり、それによって、システム10内に冗長性をもたらす。 System 10 may include a plurality of cells, some cells, it is possible to carry out another cell identical task type and, thereby, resulting in redundancy to the system 10. 所与のセル12によって実施されるタスクタイプのセットは、別のセルによって実施されるタスクタイプのセットのサブセットであってもよい。 Set of task types that are implemented by a given cell 12 may be a subset of a set of task types performed by another cell. 例えば、図1では、システム10は、集約算出問題をタスクの群に分割し、第1のタイプ、第2のタイプ、および第3のタイプのタスクをタスクプール13に投入してもよい。 For example, in FIG. 1, the system 10 divides the aggregate calculation problem to the group of tasks, the first type, second type and third type, the task may be charged to the task pool 13. 第1のセル12Aは、第1のタイプのタスクのみを実施することが可能であり得、第2のセル12Bは、第2のタイプのタスクを実施することが可能であり得、第3のセル12Cは、第3のタイプのタスクを実施することが可能であり得、第4のセル12Dは、第2または第3のタイプのタスクを実施することが可能であり得、第5のセル12Nは、全ての3つのタスクタイプを実施することが可能であり得る。 The first cell 12A is capable of carrying out only the first type of task obtained, the second cell 12B is capable of performing a second type of task to obtain a third cell 12C is obtained it is possible to implement the third type tasks, the fourth cell 12D is capable of carrying out the second or third type of task obtained, the fifth cell 12N may be able to perform all three tasks types. システム10は、所与のセルがシステム10から除去される(または現在ビジーである、または別様に利用不可能である)場合、システム10がシームレスに機能し続け得るように、この冗長性とともに構成されてもよい。 System 10 is removed given cell from the system 10 (a or currently busy or unavailable is in otherwise), the so system 10 can continue to function seamlessly, with this redundancy configuration may be. さらに、セルがシステム10に動的に追加される場合、システム10は、性能向上の利益を用いて、シームレスに機能し続け得る。 Moreover, if the cells are dynamically added to the system 10, the system 10 uses the benefits of improved performance, may continue to function seamlessly.

ここで図1および2を参照すると、タスクプール13は、CPU11によってアクセス可能である物理メモリの領域を占有し得る。 Referring now to FIGS. 1 and 2, the task pool 13 may occupy an area of ​​physical memory that is accessible by CPU 11. 代替として、タスクプール13は、MACアドレスまたはIPアドレスによってアクセス可能であってもよい。 Alternatively, the task pool 13, may be accessible by the MAC address or IP address. 複数の実施形態が、タスクプール13に関して想定され、これは、同一の2Dもしくは3DモノリシックIC内でCPUとともに物理的に位置してもよい、またはこれは、独立型ICとして実装され、コンピュータボード、スマートフォン、タブレット、ルータ、もしくはモノのインターネットデバイスに物理的に相互接続されてもよい。 Multiple embodiments are envisioned for the task pool 13, which, together with the CPU in the same 2D or in 3D monolithic IC may be physically located, or which may be implemented as a stand-alone IC, computer board, phone, tablet, router, or may be physically interconnected to mono Internet devices. さらなる代替実施形態では、タスクプールは、複数のCPU11システム間で共有される、または所与のCPU11の専用であり得る、独立型マルチポート、有線、および/または無線接続されたデバイスであってもよい。 In a further alternative embodiment, the task pool is shared between multiple CPU 11 systems, or may be a given dedicated CPU 11, independent multi-port, wired, and / or be a wireless connection devices good. タスクプール13はまた、セル12によってアドレス指定可能であってもよい。 Task Pool 13 may also be addressable by a cell 12. タスクプール13は、CPU11およびセル12によって最大アクセス速度を提供するために、専用ハードウェアブロック内に配置されてもよい。 Task pool 13 in order to provide a maximum access speed by CPU11 and cell 12, may be arranged in a dedicated hardware block. 代替として、タスクプール13は、ソフトウェアベースであってもよく、タスクプール13のコンテンツは、ハードウェアベースの実施形態に類似して、メモリ内に記憶されるが、データ構造によって表される。 Alternatively, the task pool 13 may be a software-based, the content of the task pool 13, similar to the hardware-based embodiment, but are stored in memory, it is represented by a data structure.

CPU11によって投入されると、タスクプール13は、1つまたはそれを上回るタスクスレッド21を含有する。 When CPU11 by being turned, the task pool 13 contains one or task threads 21 above it. 各タスクスレッド21は、CPU11に付与されたより大規模な集約算出要件の構成要素またはサブセットであり得る、算出タスクを表す。 Each task thread 21 may be a component or a subset of the large aggregate calculation requirements than given to CPU 11, representing the calculated task. 一実施形態では、CPU11は、並行して実行可能なスレッド21を伴うタスクプール13を初期化し、次いで、それに投入してもよい。 In one embodiment, CPU 11 is a task pool 13 with executable threads 21 in parallel with the initialization, then, may be charged thereto. 各スレッド21は、1つまたはそれを上回る離散タスク22を含んでもよい。 Each thread 21 may comprise a discrete task 22 over one or it. タスク22が、タスクタイプと、記述子とを有してもよい。 Task 22 may have a task type, and a descriptor. タスクタイプは、どのセル12がタスク22を実施することが可能であるかを示す。 Task type, which cell 12 indicating whether it is possible to carry out the task 22. タスクプール13はまた、同一タイプを有するタスク22に優先順位を付けるために、タスクタイプを使用してもよい。 Task Pool 13 also, in order to prioritize the task 22 having the same type, may be used task type. 一実施形態では、タスクプール13は、システム10内に存在する連帯セル12、各セルが実施することが可能なタスク22のタイプ、および各セルが現在タスク22を処理しているかどうかを記録する、優先順位テーブル(図示せず)を維持してもよい。 In one embodiment, the task pool 13, solidarity cell 12 in the system 10, the type of task 22 that can each cell implemented, and each cell is recorded whether the currently processing task 22 may maintain a priority table (not shown). タスクプール13は、以下に説明されるように、適格なタスク22のどれを要求セルに割り当てるかを判定するために、優先順位テーブルを使用してもよい。 Task pool 13, as described below, to determine whether allocating which of eligible tasks 22 to request cell may be used priority table.

いくつかの実施形態では、CPU11は、タスクプールからタスクまたはスレッドを読み出し、それを実行してもよい。 In some embodiments, CPU 11 reads out a task or thread from the task pool, may execute it. さらに、CPU11は、古くなった、壊れた、膠着した、または誤ったと判定される任意のタスクを中断してもよい。 Further, CPU 11 is stale, broken, may be interrupted any task that is determined sticking was, or erroneous and. そのような場合では、CPU11は、タスクをリフレッシュし、後続処理のために利用可能にしてもよい。 In such a case, CPU 11 refreshes the task, may be made available for further processing. 例えば、人工知能によって要求され得るように、CPU11が適応タスク管理を実装することを妨げるものはなく、その後、CPU11は、未完成の既存のスレッド21内のタスクを追加、除去、または変更してもよい。 For example, as may be required by the artificial intelligence, not preclude the CPU 11 implements adaptive task management, then, CPU 11 may add unfinished task in an existing thread 21, removed, or changed it may be.

記述子は、存在する場合、実行されるべき具体的命令、実行のモード、処理されるべきデータの場所(例えば、アドレス)、およびタスク結果を置くための場所のうちの1つまたはそれを上回るものを含有してもよい。 Descriptor, if present, over specific instruction to be executed, execution mode, the location of the data to be processed (e.g., addresses), and one of the place to put the task results or it things may contain. 結果を置くための場所は、多くの場合、結果をメモリ内に記憶するのではなく、それらをディスプレイに提示する、アニメーションおよびマルチメディアタスクの場合等では、随意である。 Result place to put the often rather than storing the results in memory, they are presented in the display, in such case the animation and multimedia task, is optional. さらに、タスク記述子は、リンクされたリストのように、ともに連鎖されてもよく、したがって、処理されるべきデータは、記述子がともに連鎖されない場合よりも少ないメモリ呼び出しでアクセスされ得る。 Furthermore, the task descriptors, as linked lists, may be chained together, therefore, the data to be processed, the descriptor can be accessed by both less memory calls than without being chained. ある実施形態では、記述子は、ヘッダおよびメモリ場所の複数の参照ポインタを含有するデータ構造であり、タスク22は、データ構造のメモリアドレスを含む。 In some embodiments, the descriptor is a data structure containing a plurality of reference pointer of the header and the memory location, task 22 includes a memory address of the data structure. ヘッダは、実行されるべき機能または命令を定義する。 Header defines the function or instruction to be executed. 第1のポインタが、処理されるべきデータの場所を参照する。 First pointer refers to the location of the data to be processed. 第2の随意のポインタが、処理されたデータを置くための場所を参照する。 Pointer second optional of which references a place to put the processed data. 記述子が、連続的に実行されるべき別の記述子にリンクされている場合、記述子は、次の記述子を参照する第3のポインタを含んでもよい。 Descriptor, if it is linked to another descriptor to be performed continuously, the descriptor may include a third pointer to the next descriptor. 記述子がデータ構造である代替実施形態では、タスク22は、完全なデータ構造を含んでもよい。 In an alternative embodiment descriptor is a data structure, task 22 may contain a complete data structure.

スレッド21はさらに、タスク22が実施され得る順序および性能の順序に影響を及ぼす任意の条件を記述する、「レシピ」を備えてもよい。 Threads 21 further describes an optional condition affecting the order of the sequence and performance tasks 22 may be implemented may comprise a "recipe". レシピによると、タスク22は、ブール演算に従って、連続的に、並行して、順不同に、相互依存的に、または条件的に実行されてもよい。 According to the recipe, the task 22 in accordance with the Boolean operation, continuously, in parallel, in random order, may be performed interdependently, or conditionally. 例えば、図2では、スレッド21Aは、4つのタスク、すなわち、22A、22B、22C、および22Dを備える。 For example, in FIG. 2, the thread 21A comprises four tasks, i.e., 22A, 22B, 22C, and 22D. 例証される実施形態では、第1のタスク22Aは、第2のタスク22Bまたは第3のタスク22Cのいずれかが始まり得る前に完了しなければならない。 In the illustrated embodiment, the first task 22A is either the second task 22B or third task 22C must be completed before it can begin. レシピによると、いったん第2のタスク22Bまたは第3のタスク22Cのいずれかが完了すると、第4のタスク22Dが、始まり得る。 According to the recipe, once any one of the second task 22B or third task 22C is completed, a fourth task 22D, can begin.

スレッド21はまた、相互依存的であってもよい。 Thread 21 may also be interdependent. 例えば、図2に示されるように、スレッド21B内のブール演算に起因して、完了したタスク22Cは、スレッド21B内のタスクの処理が継続することを可能にしてもよい。 For example, as shown in FIG. 2, due to the Boolean operation in the thread 21B, task 22C was completed, may enable the processing of tasks in a thread 21B continues. タスクプール13は、タスク22が、これが依存する別のタスク22の完了を待機している間、タスク22をロックしてもよい。 Task pool 13, a task 22, which is while waiting for the completion of another task 22 which depends, may lock the task 22. タスク22がロックされると、これは、セルによって取得されることはできない。 When task 22 is locked, this can not be acquired by the cell. スレッド21のタスク22が完了すると、タスクプール13は、CPU11に完了を通知してもよい。 When task 22 threads 21 is completed, the task pool 13 may notify the completion of CPU 11. CPUは、次いで、完了したスレッド21を越えて処理を進めてもよい。 CPU may then proceeds beyond the thread 21 has been completed.

セルは、有利なこととして、相互に、およびCPU11と連帯を維持し、それによって、システム10が、タスクプール13からタスクを自律的かつ先回りして読み出すことによって、複雑な算出を実施することに役立つ。 Cells, as advantageously each other, and CPU11 and maintaining solidarity, whereby the system 10, by reading autonomously and proactively task from the task pool 13, to performing complex calculation help. セル12は、それらがCPU11または任意の他のコプロセッサから独立して作用し得るという点において、自律的に作用する。 Cell 12, they in that can act independently of the CPU11 or any other coprocessor, autonomously acts. 代替として、セルは、CPUに応じて作用する、またはそれによって直接命令されてもよい。 Alternatively, the cell acts in accordance with the CPU, or the may be commanded directly. 各セルは、さらなる処理のためにセルが利用可能になるとすぐに、タスクプール13からタスク22を探求するという点において、先回りして作用する。 Each cell, as soon as the cell for further processing is available, in that it seeks task 22 from the task pool 13, act proactively.

より具体的には、ある実施形態では、セル12は、エージェント30を送信し、タスクプールに問い合わせ(検索し)、完了を要求する、ロックされていない、セルによって実施され得るタスクタイプを有する利用可能なタスク22を読み出すことによって、タスクプールからタスクを取得する。 More specifically, in some embodiments, cell 12 transmits the agent 30, contact the task pool (search) to request a complete, not locked, use having a task type that may be implemented by the cell by reading the possible tasks 22, obtains a task from the task pool. 典型的には、システム10は、連帯共処理セルと同数のエージェントを有する。 Typically, system 10 includes the same number of agents and solidarity co processing cell. 本文脈では、エージェントは、概して、エージェントがソースアドレス、宛先アドレス、およびペイロードを具備し得るという点で、ネットワークの意味におけるデータフレームと類似する。 In the present context, an agent is generally an agent in that they may comprise a source address, destination address, and a payload, similar to the data frame in the sense of the network. ある実施形態では、宛先アドレスは、エージェント30がタスク22を探求しているとき、タスクプール13のアドレスであり、宛先アドレスは、エージェント30がタスク22を伴うそのセルに戻っているとき、対応するセル12のアドレスである。 In some embodiments, the destination address, when the agent 30 has explored the task 22, the address of the task pool 13, the destination address, when the agent 30 is returned to the cell with the task 22, the corresponding it is the address of the cell 12. 対応して、ソースアドレスは、エージェント30がタスク22を探求しているとき、セル12のアドレスであり、ソースアドレスは、エージェント30がタスク22を伴うそのセルに戻っているとき、タスクプール13のアドレスである。 Correspondingly, the source address, when the agent 30 has explored the task 22, the address of the cell 12, the source address, the agent 30 when returning to the cell with the task 22, a task pool 13 it is an address.

加えて、ソースおよび宛先アドレスは、フレーム同期を促進し得る。 In addition, the source and destination addresses may facilitate frame synchronization. つまり、システム10は、ペイロードデータから明確にアドレスを区別するように構成されてもよく、したがって、エージェント30のコンテンツが読み取られると、宛先アドレスは、フレームの開始を示し、ソースアドレスは、フレームの終了を示し、逆もまた同様である。 That is, the system 10 may be configured to clearly distinguish the address from the payload data, thus, the content of the agent 30 is read, the destination address indicates the start of a frame, the source address, the frame It marks the end, and vice versa. これは、ペイロードが、アドレス間に置かれるとき、サイズを変動することを可能にする。 This payload, when placed between the address makes it possible to vary the size. 可変サイズのペイロードの別の実施形態では、エージェント30は、ペイロードサイズを示すヘッダを含んでもよい。 In another embodiment of a payload of variable size, the agent 30 may comprise a header indicating the payload size. ヘッダ情報は、データ完全性を検証するために、ペイロードと比較されてもよい。 Header information, to verify the data integrity may be compared to the payload. さらに別の実施形態では、ペイロードは、固定長であってもよい。 In yet another embodiment, the payload may be a fixed length. エージェント30がそのコプロセッサセルによってタスクプール13にディスパッチされると、ペイロードは、セル12が実施し得るタスクのタイプの識別情報を含有する。 When an agent 30 is dispatched to the task pool 13 by the coprocessor cell payload contains the type of the identification information of the task that the cell 12 may be practiced. エージェント30がタスクプール13から戻ると、ペイロードは、メモリ場所または完全な記述子データ構造のいずれかの形態において、タスク22の記述子を含有する。 When agent 30 is returned from the task pool 13, the payload in the form of either a memory location or complete descriptor data structure, contains a descriptor of the task 22.

他の実施形態では、エージェント30のいくつかまたは全ては、それらのそれぞれの対応するセル12の自律的な代表である。 In other embodiments, some or all of the agent 30, an autonomous representatives of their respective corresponding cell 12. つまり、各エージェント30は、その対応するセル12によってディスパッチされ、セルがアイドルしている、または付加的な処理を実施することが可能であるときはいつでも、タスク22を読み出してもよい。 That is, each agent 30, the dispatched by the corresponding cell 12, the cell is idle, or whenever additional processing can be implemented, may read task 22. このように、連帯セル12の処理容量は、セルがCPU11からの命令をアイドルして待機する必要がない限り、より完全に活用され得る。 Thus, the processing capacity of the joint cell 12, unless necessary cell waits to idle a command from CPU 11, may be more fully utilized. 本アプローチは、タスクプールからタスクを読み出すために、セルに要求を送信する必要性からCPUを解放することによって、CPUオーバーヘッドを低減させる付加的な利益も有する。 This approach, in order to read the task from the task pool, by releasing the CPU from having to send a request to the cell also has additional benefit of reducing the CPU overhead. これらの利点は、補助モジュールおよびコプロセッサがメインCPUからの命令に依存する伝統的なコンピュータアーキテクチャよりも、システム10を効率的にする。 These advantages, auxiliary module and coprocessor than traditional computer architecture that depends on the instruction from the main CPU, and the system 10 efficiently.

さらに、連帯セル12A−12nは、スレッド自体の特定の組成に関して曖昧である。 Furthermore, solidarity cell 12A-12n is ambiguous with respect to a particular composition of the thread itself. むしろ、エージェントは、その対応するセルの能力と、タスクプール13内の完了するべき利用可能なタスク22との間の整合を見出すことにのみ関与する。 Rather, the agent, its the ability of the corresponding cell, only involved in finding a match between the tasks 22 available to complete the task pool 13. つまり、タスクプール13内に利用可能なタスク22が存在し、利用可能なタスク22がセルの能力と整合する限り、本システムは、セルの処理容量を効果的に利用し得る。 In other words, there task 22 is available to the task pool 13, as long as the available tasks 22 is aligned with the ability of the cell, the system may utilize the processing capacity of the cell effectively.

連帯セル12A−12nのいくつかまたは全ては、相互に独立して機能してもよい、または直接、スイッチングファブリック14を通して、タスクプール13を通して、もしくはCPUからのコマンドもしくは要求に従って相互に通信し、別の連帯セルを呼び出し、データを処理、移動、もしくは伝送する際に補助してもよい。 All some or solidarity cell 12A-12n may function independently of one another or directly through the switching fabric 14, through the task pool 13, or communicate with each other according to the command or request from CPU, another call the solidarity cells, processes the data, move, or may assist in transmitting. 一実施形態では、エージェント30Aは、レディタスク22のタスクタイプと、セル12Aが実施することが可能であるタスクのタイプとの間の整合を検索してもよい。 In one embodiment, the agent 30A includes a task type of ready tasks 22, the cell 12A may be searching for matching between the types of tasks can be implemented. 本アーキテクチャは、CPU11が生成するように構成されるタスクのタイプのハードコーディングを伴ってもよい。 This architecture may involve hard-coded type configured task to generate the CPU 11. したがって、タスクプール13が3つのタイプのタスク22を含有し、大規模な算出要件が第4のタイプのタスクを含む場合、この第4のタイプのタスクは、第4のタイプのタスクを実施することが可能なセルがシステム10に含まれる、または追加される場合であっても、タスクプール13内に置かれない場合がある。 Accordingly, contains the task pool 13 are three types of task 22, when a large-scale computing requirements including a fourth type of task, the fourth type of task to implement the fourth type of task even if it is possible cell included in the system 10, or added, may not be placed in the task pool 13. その結果、CPU11は、利用可能な処理リソースをより完全に活用するために、第4のタイプのタスクを生成する方法を「学習する」または教示されるように構成され得る。 As a result, CPU 11, in order to more fully utilize the available processing resources may be configured a method for generating a fourth type of task to be "learned" or teaching.

別の実施形態では、エージェント30Aは、セル12Aが実施することが可能である命令のうちの1つと整合する実行可能な命令のためのタスク22記述子を検索する。 In another embodiment, the agent 30A retrieves a task 22 descriptors for executing instructions to match one of the instruction cells. 12A can be implemented. 整合タスク22が見出されると、エージェント30Aは、整合タスク22の記述子をセル12Aに送達し、その後、セル12Aは、タスク22を処理し始める。 When matching task 22 is found, the agent 30A is a descriptor matching task 22 delivered to the cell 12A, then cell 12A begins to process the task 22. 特に、エージェント30Aは、記述子のメモリアドレスをセル12Aに送達してもよく、セル12Aは、メモリからデータ構造を読み出す。 In particular, the agent 30A may be delivered to the memory addresses of the descriptor to the cell 12A, cell 12A reads the data structure from memory. 代替として、記述子の全データ構造がタスク22内に含有される場合、エージェント30Aは、処理のためにセル12Aに完全なデータ構造を送達してもよい。 Alternatively, if the entire data structure descriptor is contained in the task 22, the agent 30A may deliver complete data structure in the cell 12A for processing. 記述子は、セル12Aに、どの命令を実行するか、処理されるべきデータが見出され得るメモリユニット15内の場所、および結果が置かれるべきメモリ15内の場所を知らせる。 Descriptor informs the cell 12A, or performs which instructions, the location in memory unit 15 in which data to be processed can be found, and the result is the location in the memory 15 to be placed. タスク22の完了に応じて、セル12Aは、選択されたタスク22のステータスを「完了するべき」から「完了した」に変更するようにタスクプール13に通知する。 Upon completion of the task 22, the cell 12A notifies the task pool 13 so as to change the status of the task 22, which is selected from the "to be completed" to "completed." さらに、いったんセル12Aがタスク22を終了すると、セルは、そのエージェント30Aをタスクプール13にディスパッチし、別のタスク22を探求してもよい。 Furthermore, once the cell 12A finishes the task 22, the cell, dispatches the agent 30A to the task pool 13, it may be to explore the different tasks 22.

エージェント30A−30nのいくつかまたは全ては、システム10の特定のアーキテクチャおよび/または実装による、例えば、Wi−Fiネットワーク、無線イーサネット(登録商標)、無線USB、無線ブリッジ、無線中継装置、無線ルータ、Zigbee(登録商標)、ANT+(登録商標)、またはBluetooth(登録商標)ペアリングを使用して、有線または無線でシステム10を通して進行してもよい。 Some or all of the agents 30A-30n, by a specific architecture and / or implementation of the system 10, for example, Wi-Fi network, wireless Ethernet, wireless USB, wireless bridge, a wireless relay device, a wireless router, Zigbee (registered trademark), ANT + using (R), or Bluetooth (registered trademark) pairing, may proceed through the system 10 by wire or wirelessly. ある実施形態では、エージェント30は、タスクプール13にレセプタ特徴を含めることによって、さらに、セル12に送信機特徴を含めることによって、無線でタスクプール13に誘導されてもよい。 In certain embodiments, the agent 30, by including a receptor, wherein the task pool 13, further by including a transmitter characterized in cell 12, may be derived wirelessly to the task pool 13. 同様に、タスクプールは、タスクプールに送信機を、連帯セルに受信機を具備することによって、セルに無線で応答してもよい。 Similarly, the task pool, a transmitter task pool, by having a receiver solidarity cell may respond to a cell radio. 本様式では、セルは、スイッチングファブリックの使用の有無にかかわらず、タスクプールと無線で通信し得る。 In this manner, cells, or without the use of switching fabric, may communicate with the task pool wirelessly.

しかしながら、好ましい実施形態では、ある形態のスイッチングファブリック14が、使用される。 However, in a preferred embodiment, the switching fabric 14 of some form is used. スイッチングファブリック14は、システムリソース間のデータ転送およびアービトレーションのための接続を促進する。 Switching fabric 14 facilitates a connection for data transfer and arbitration between system resources. スイッチングファブリック14は、種々のセルとタスクプールとの間に接続性を提供する、ルータまたはクロスバースイッチであってもよい。 Switching fabric 14 provides connectivity between the various cells and the task pool, may be a router or a crossbar switch. スイッチングファブリック14はさらに、各連帯セル12A−12nと、CPU11、メモリユニット15、および限定ではないが、ダイレクトメモリアクセスユニット、送信機、ハードディスクおよびそれらのコントローラ、ディスプレイおよび他の入力/出力デバイス、ならびに他のコプロセッサを含む、伝統的なシステム構成要素等のシステムリソースとの間に接続性を提供してもよい。 Switching fabric 14 further includes a respective joint cell 12A-12n, CPU 11, memory unit 15, and without limitation, direct memory access unit, transmitter, hard disks and their controllers, display and other input / output devices, and including other coprocessors may provide connectivity between the system resources, such as traditional system components. セル12A−12nは、スイッチングファブリック14に物理的に接続されてもよい、またはセルは、無線で接続されてもよい。 Cell 12A-12n may be physically connected to the switching fabric 14, or the cell may be connected wirelessly.

システム10へのセルの無線接続は、システム10内で使用するためのセルの動的な追加および/または除去を促進する。 Cell of the radio connection to the system 10 facilitates the dynamic addition and / or removal of cells for use in system 10. 例えば、CPU11は、他のセルシステムからセルを補充し、動的拡張および性能向上を可能にしてもよい。 For example, CPU 11 is to recruit cells from the other cells systems may allow dynamic expansion and improved performance. 本様式では、2つまたはそれを上回るセルシステム(例えば、ネットワーク)が、連帯セルを共有し得る。 In this manner, two or cell system above it (e.g., network) can share a solidarity cell. 一実施形態では、アイドル状態になるセルは、付加的な処理リソースの必要性を有する、すなわち、完了する必要がある利用可能な処理タスクを有する、別のシステムを探す、および/またはそれによって補充されてもよい。 In one embodiment, the cell in the idle state has a need for additional processing resources, i.e., having available processing tasks that need to be completed, look for another system, and / or by replenishment it may be. 同様に、システム10は、特定のタスクのための付加的なセルのクラスタを組み込むことによって、性能を拡張させてもよい。 Similarly, system 10, by incorporating a cluster of additional cells for a specific task, may be extended performance. 例えば、システム10は、これらのタスクを実施することが可能な近傍セルを組み込むことによって、暗号化/復号化機能、またはオーディオおよび/もしくはビデオデータの処理の性能を増進させてもよい。 For example, the system 10, by incorporating a neighboring cell that can perform these tasks, may be enhanced encryption / decryption function or audio and / or performance of the processing of video data.

望ましくない接続を防止するために、CPU11は、タスクプール13に、信頼できるおよび/または信頼できないセル、ならびに認証要件もしくはプロトコルのリスト、または代替として、それらを識別するための基準を提供してもよい。 In order to prevent undesired connections, CPU 11 is in the task pool 13, a list of trusted and / or untrusted cell and authentication requirements or protocol, or alternatively, be provided criteria to identify them good. さらに、タスクプール自体は、低性能、信頼性のない接続、データ処理量の不良、または悪意のある、もしくは別様に不適切な活動の疑いに基づいて、特定のセルを除外してもよい。 Furthermore, the task pool itself, low-performance, non-reliable connection, poor data throughput, or malicious, or based on the suspicion of otherwise inappropriate activities, may exclude specific cell . 種々の実施形態では、セル12は、ユーザによって、スマートフォン、タブレット、または他のデバイスもしくはアプリケーションの使用を通して、タスクプール13に追加される、またはタスクプール13から除外されてもよい。 In various embodiments, cell 12, by the user, the smartphone, tablet or through use of other devices or applications, is added to the task pool 13, or may be excluded from the task pool 13,. 一実施形態では、グラフィカルアプリケーションインターフェースは、ネットワークから特定のセルを追加または除去した結果、利用可能なセルおよび他のデバイスの場所、性能向上、または性能ペナルティ等の有用な統計および/またはアイコン情報をユーザに提供してもよい。 In one embodiment, the graphical application interface, a result of adding or removing a particular cell from the network, the available cells and location of other devices, performance improvement, or useful statistics and / or icon information performance penalty such as it may be provided to the user.

代替実施形態では、共処理セルのいくつかまたは全ては、通信のためのスイッチングファブリック14を要求しない有線構成等によって、タスクプール13に直接接続してもよい。 In an alternative embodiment, some or all of the co-processing cell, by a wired configuration and the like that do not require switching fabric 14 for communication, may be directly connected to the task pool 13. セルの有線接続はさらに、有線接続が周辺機器デバイスの物理的(例えば、手動)統合および抽出であり得るが、上記に議論される無線構成に類似するシステム10の動的拡張および縮小を促進してもよい。 Wired connection cell further physical wired connection peripheral devices (e.g., manually), but may be integrated and extraction, to promote dynamic expansion and contraction of the system 10 that is similar to the radio configuration discussed above it may be. いずれの場合も、システム10の変更を考慮して、コプロセッサがCPU11を再プログラムすることなく追加および除去され得るため、本システムのスケーラビリティは、従来の並列処理スキームを上回って大幅に増進される。 In any case, considering the changes in the system 10, since that can be added and removed without coprocessor reprogram CPU 11, scalability of the system is greatly enhanced above a conventional parallel processing scheme .

ここで図3を参照すると、ネットワーク300が、CPU302と、第1のメモリ304と、第2のメモリ306と、タスクプール308と、スイッチングファブリック310と、タイプAタスクを実施(実行)するように構成される第1の共処理セル312と、タイプBタスクを実施するように構成される第2のセル314と、タイプCタスクを実施するように構成される第3のセル316と、タイプAおよびタイプBタスクの両方を実施するように構成される第4のセル318とを含む。 Referring now to FIG. 3, the network 300, a CPU 302, a first memory 304, a second memory 306, the task pool 308, the switching fabric 310, so as to implement the type A task (execution) a first co-processing cell 312 configured, the second cell 314 configured to implement a type B task, the third cell 316 configured to implement a type C tasks, type a and both types B tasks and a fourth cell 318 configured to perform. 示されるように、タスクプール308は、(例えば、CPU302によって)タスクタイプAのタスク(またはタスクスレッド)330および332、タスクタイプBのタスク334および336、ならびにタスクタイプCのタスク340および342を投入される。 As shown, the task pool 308 (e.g., CPU 302 by) Task Type A task (or task threads) 330 and 332, tasks 334 and 336 of the task type B, and a task 340 and 342 of the task type C turned It is. ある実施形態では、各セルは、好ましくは、一意の専用エージェントを有する。 In some embodiments, each cell preferably has a dedicated agent unique. 特に、セル312は、エージェント320を含み、セル314は、エージェント322を含み、セル316は、エージェント324を含み、セル318は、エージェント326を含む。 In particular, the cell 312 includes an agent 320, the cell 314 includes an agent 322, the cell 316 includes an agent 324, the cell 318 includes an agent 326. 各エージェントは、好ましくは、その関連付けられるセルが実施するように構成されるタスクのタイプ、例えば、単一タスクまたはタスクA、B、Cの組み合わせを識別する、情報フィールドまたはヘッダを含む。 Each agent preferably includes that type configured task to cell associated to practice, for example, a single task or tasks A, B, identifies a combination of C, and an information field or header.

動作中、セルがアイドル状態であるか、または別様に利用可能な処理容量を有するかのいずれかのとき、そのエージェントは、タスクプールに先回りして問い合わせ、その特定のセルに適切である任意のタスクがタスクキュー内にあるかどうかを判定する。 In operation, when the cell is of either having a processing capacity available is either or otherwise idle, the agent inquires proactively to task pool is appropriate for the particular cell optionally the task is to determine whether there is in the task queue. 例えば、セル312は、そのエージェント320をディスパッチし、タスクタイプAに対応するタスク330および332の一方または両方を読み出してもよい。 For example, cell 312, dispatches the agent 320 may read one or both of the tasks 330 and 332 corresponding to the task type A. 同様に、セル314は、そのエージェント322をディスパッチし、タスクタイプBに対応するタスク334または336のいずれかを(それらの相対的優先順位に応じて)読み出してもよく、以下同様である。 Similarly, cell 314, dispatches the agent 322, task type B to either the corresponding task 334 or 336 (depending on their relative priority) reading may be the same or less. タスクタイプAおよびBを実施するように構成されるセル318等、1つを上回るタスクタイプを実施することが可能であるセルに関して、エージェント326は、タスク330、332、334、および/または336のうちのいずれか1つを読み出してもよい。 Task type A and cell 318 etc. configured to perform B, with respect to the cell it is possible to carry out the task type than the one, the agent 326, task 330, 332, 334, and / or 336 You may read one of the house.

タスクプールからタスクを読み出すと、セルは、次いで、典型的には、第1のメモリ304内の特定の場所からデータを読み出し、そのデータを処理し、処理されたデータを第2のメモリ306内の特定の場所に記憶することによって、そのタスクを処理し得る。 Reading the task from the task pool, cells are then typically reads data from a particular location in the first memory 304, it processes the data, the processed data in the second memory 306 by storing a particular location of the can process the task. タスクが完了すると、セルは、タスクプールに通知し、タスクプールは、完了したものとしてタスクをマーキングし、タスクプールは、タスクが完了したことをCPUに通知する。 When the task is completed, cell notifies the task pool, the task pool, and marks the task as completed, the task pool notifies that the task is completed to the CPU. 代替として、タスクプールは、タスクスレッドが単一タスク、一連のタスク、またはブール組み合わせのタスクを含み得る限り、タスクスレッドが完了すると、これをCPUに通知してもよい。 Alternatively, the task pool, as long as the task thread may comprise a single task, a series of tasks or Boolean combinations task, the task thread completes, which may inform the CPU. 有意なこととして、セルによるタスクの読み出しおよびデータの処理は、CPUと種々のセルとの間の直接通信を伴わずに生じ得る。 As Significantly, the process of reading and data tasks using cell may occur without direct communication between the CPU and the various cells.

ここで図4を参照すると、モノのインターネットネットワーク400が、コントローラ(CPU)402と、タスクプール408と、種々のデバイス410−422とを含み、そのいくつかまたは全てが、処理容量を具現化する、集積回路(IC)チップまたは他の構成要素等の関連付けられる、または埋め込まれたマイクロコントローラを含む。 Referring now to FIG. 4, the Internet network 400 of things, a controller (CPU) 402, a task pool 408, and a variety of devices 410-422, all or some of which embodies the process capacity includes an integrated circuit (IC) associated with such chips or other components or embedded microcontroller. 非限定的実施例として、本デバイスは、電球410、サーモスタット412、電気レセプタクル414、電力スイッチ416、電化製品(例えば、トースター)418、車両420、キーボード422、およびネットワークとインターフェースをとることが可能な事実上任意の他のプラグアンドプレイデバイスまたはアプリケーションを含んでもよい。 As a non-limiting example, the device, the light bulb 410, the thermostat 412, the electrical receptacle 414, the power switch 416, electrical appliances (eg, toasters) 418, a vehicle 420, which can take a keyboard 422 and a network interface with it may include virtually any other plug-and-play device or application.

例証される実施形態では、コントローラ402は、スマートフォン、タブレット、ラップトップ、またはネットワーク上の種々のデバイスとのユーザ相互作用を促進するためのディスプレイ404およびユーザインターフェース(例えば、キーパッド)406を含み得る他のデバイスであってもよい。 In the illustrated embodiment, the controller 402 may include a smart phone, a tablet, a laptop or a display 404 and a user interface to facilitate user interaction with the various devices on the network, (e.g., keypad) 406 it may be other devices. コントローラ402の処理容量(例えば、帯域幅)がネットワークを適正にサポートするために不十分であり得る限りにおいて、コントローラは、例えば、図5と併せて以下に説明されるように、周辺機器デバイスからタスクプールを介して、処理リソースを効果的に採取または補充してもよい。 Processing capacity of the controller 402 (e.g., bandwidth) to the extent that it may be insufficient to properly support a network controller, for example, as described below in conjunction with FIG. 5, the peripheral devices via the task pool, processing resources may be effectively collected or supplement.

ここで図5を参照すると、モノのインターネットネットワーク500の使用事例が、近傍(または別様に利用可能な)デバイスの動的な利用を例証する。 Referring now to FIG. 5, use case Internet network 500 things, (available or otherwise) near illustrate dynamic use of the device. ネットワーク500は、主要制御ユニット502(例えば、ラップトップ、タブレット、またはゲームデバイス)と、タスクプール504と、第1のコプロセッサデバイス506と、第2のコプロセッサデバイス508とを含む。 Network 500 includes the main control unit 502 (e.g., a laptop, a tablet or a game device,), a task pool 504, the first co-processor device 506, and a second co-processor device 508. ネットワーク500の文脈における例示的使用事例が、ここで説明される。 Exemplary use cases in the context of the network 500 will now be described.

ユーザが、自身のラップトップコンピュータ502でビデオゲームをプレイしていると仮定する。 The user is assumed to be playing a video game on his laptop computer 502. ビデオゲームは、詳細なコンピュータ生成イメージを要求し、おそらく、ラップトップ502における処理能力は、単一の写実的に見えるキャラクタをレンダリングするために十分であるが、第2のキャラクタが画面上に導入されると、画像品質は、劣化し、キャラクタの移動はもはや、連続的ではない。 Video games, require detailed computer-generated image, perhaps, the processing capability of the laptop 502 is sufficient to render a single graphic looks character, the second character is introduced onto the screen Once the image quality is degraded, movement of the character is no longer continuous but. 本発明は、ユーザの近傍内に位置する、または別様にユーザに利用可能な十分に利用されていないコンピュータリソースの処理能力を利用する方法を提案する。 The present invention proposes a method of utilizing the processing power of the computer resources located in the vicinity, or not fully utilized available to the user otherwise the user.

付加的な処理能力の必要性に対処するために、ラップトップ502は、タスクプール504に接続する。 To address the need for additional processing power, laptop 502 is connected to the task pool 504. この点で、ラップトップ自体は、タスクプールを具備してもよい、またはタスクプールは、ラップトップ502から無線到達範囲内に位置する外部デバイスまたはアプリケーションの形態であってもよい。 In this regard, the laptop itself, may comprise the task pool or task pool, may be in the form of an external device or application that is located from the laptop 502 within radio coverage. 外部タスクプールの場合では、タスクプール自体は、ポートを伴うスイッチングファブリックの役割を果たし、複数の共処理セルへの接続を可能にし得る。 In the case of an external task pool, the task pool itself plays the role of a switching fabric with a port may allow connections to multiple co-processed cells. ラップトップ502は、算出集約的タスクをタスクプール504に投入する。 Laptop 502 is turned calculation intensive tasks in the task pool 504. スマートフォン508等の近傍の十分に利用されていないデバイスは、続けてタスクプール504に接続し、整合タスクタイプをフェッチするためにそのエージェントを送信する。 Devices that are not fully utilized in the vicinity, such as a smart phone 508, followed by connecting to the task pool 504, and transmits the agent to fetch the matching task type. その結果、スマートフォン508は、ラップトップ502をシームレスに補助するコプロセッサになり、それによって、ビデオゲーム体験を向上させる。 As a result, a smart phone 508, will co-processor which assists the laptop 502 seamlessly, thereby improving the video gaming experience. 同一の方法は、他の十分に利用されていない処理リソースが存在し、必要とされる場合に繰り返されてもよい。 Same way, there are processing resources not utilized other sufficiently, may be repeated if required. 実際、利用可能な電球506の処理能力であっても、ラップトップへのコプロセッサになり得る。 In fact, even in the processing capacity of the available light bulb 506, it can be a co-processor to the laptop.

図6は、例示的並列コンピューティング環境の動作を例証する、フローチャートである。 Figure 6 illustrates the operation of the exemplary parallel computing environment, a flow chart. 特に、方法600が、タスクをタスクプールに投入するステップ(ステップ602)と、1つまたはそれを上回るエージェントを、1つまたはそれを上回る対応するセルからタスクプールに先回りしてディスパッチするステップ(ステップ604)と、タスクを読み出し、処理するステップ(ステップ606)と、タスクスレッドが実施されたことをタスクプールおよびCPUに通知するステップ(ステップ608)とを含む。 In particular, method 600, the step (step 602) to put a task in the task pool, one or agents over it, one or the corresponding proactively from the cell to the task pool steps of dispatching (step exceeds that and 604), reads the task, including a processing step (step 606), and a step (step 608) to notify the task pool and CPU that the task thread is performed. 方法600はさらに、必要に応じて、付加的なデバイスをネットワークに動的に組み込むステップ(ステップ610)を含む。 The method 600 further optionally includes additional dynamically incorporating step the device to the network (step 610).

したがって、タスクプールと、第1のタスクをタスクプールに投入するように構成される、コントローラと、タスクプールから第1のタスクを先回りして読み出すように構成される、第1のコプロセッサとを含む処理システムが、提供される。 Therefore, the task pool, and the first task to put the task pool, and a controller configured to read out proactively first task from the task pool, and a first co-processor processing system comprising is provided.

ある実施形態では、第1のコプロセッサは、コントローラと通信することなく、タスクプールから第1のタスクを読み出すように構成される、第1のエージェントを備える。 In some embodiments, the first co-processor, without communication with the controller, configured to read the first task from the task pool, comprises a first agent.

ある実施形態では、第1のタスクは、第1のタスクタイプの印を含み、第1のコプロセッサは、第1のタイプのタスクを実施するように構成され、第1のエージェントは、第1のタイプのタスクに関してタスクプールを検索するように構成される。 In some embodiments, the first task may include indicia of the first task type, the first co-processor is configured to perform a first type of task, the first agent, the first configured to retrieve a task pool with respect to the type of task.

ある実施形態では、第1のコプロセッサはさらに、第1のものを処理し、第1のタスクの完了に応じて、タスクプールに通知するように構成され、タスクプールは、第1のタスクの完了に応じて、コントローラに通知するように構成される。 In some embodiments, the first co-processor further processes the first one, in response to completion of the first task is configured to notify the task pool, the task pool, the first task Upon completion, it configured to notify the controller.

ある実施形態では、コントローラおよび第1のコプロセッサは、相互にタスクプールを通してのみ通信するように構成される。 In some embodiments, the controller and the first co-processor is configured to communicate only through another task pool.

ある実施形態では、コントローラおよび第1のコプロセッサは、相互に直接、タスクプールを通して通信するように構成される。 In some embodiments, the controller and the first coprocessor directly to each other, configured to communicate through the task pool.

ある実施形態では、第1のコプロセッサは、これが利用可能な処理容量を有していることを判定し、判定に応答してエージェントをタスクプールにディスパッチするように構成される。 In some embodiments, the first coprocessor, which determines that it has a processing capacity available, and the agent in response to dispatching the task pool determined.

ある実施形態では、コントローラはさらに、第2のタスクをタスクプールに投入するように構成され、本システムはさらに、タスクプールから第2のタスクを先回りして読み出すように構成される第2のエージェントを有する、第2のコプロセッサを備える。 In some embodiments, the controller is further configured to put the second task in the task pool, the system further second agent configured to read out proactively second task from a task pool having, it comprises a second co-processor.

ある実施形態では、第2のタスクは、第2のタスクタイプの印を含み、第2のコプロセッサは、第2のタイプのタスクを実施するように構成され、第2のエージェントは、第2のタイプのタスクに関してタスクプールを検索するように構成される。 In some embodiments, the second task comprises indicia of a second type of task, the second co-processor is configured to perform the second type task, the second agent, the second configured to retrieve a task pool with respect to the type of task.

ある実施形態では、コントローラおよびタスクプールは、モノリシック集積回路(IC)上に常駐し、第1のコプロセッサは、IC上に常駐しない。 In some embodiments, the controller and task pool, resident on a monolithic integrated circuit (IC), the first co-processor is not resident on IC.

別の実施形態では、コントローラ、タスクプール、ならびに第1および第2のコプロセッサは、モノリシック集積回路(IC)上に常駐する。 In another embodiment, the controller, the task pool, and first and second co-processor, is resident on the monolithic an integrated circuit (IC).

第1のタスクタイプを有する第1のタスクをタスクプールに投入するように構成される、中央処理ユニット(CPU)を含むタイプのネットワーク内の処理リソースを動的に制御する方法もまた、提供される。 It constituted a first task having a first task type to put to the task pool, a method for dynamically controlling the process resources within the type of network, including a central processing unit (CPU) is also provided that. 本方法は、第1のタスクタイプを実施するように第1のセルをプログラムするステップと、プログラムされた第1のセルをネットワークに追加するステップと、第1のセルからタスクプールに、第1のエージェントを先回りして送信するステップと、第1のエージェントによって、第1のタイプのタスクに関してタスクプールを検索するステップと、第1のエージェントによって、タスクプールから第1のタスクを読み出すステップと、第1のエージェントによって、第1のセルに第1のタスクをトランスポートするステップと、第1のセルによって、第1のタスクを処理するステップと、第1のセルからタスクプールに、第1のタスクが完了した通知を送信するステップとを含む。 The method includes programming a first cell to perform the first task type, and the step of adding the first cells programmed to the network, the task pool from the first cell, the first transmitting by proactively agent, the first agent, retrieving the task pool with respect to the first type of task, by the first agent, a step of reading a first task from the task pool, the first agent, and the step of transporting the first task in the first cell, the first cell, and processing the first task, the first cell in the task pool, first and transmitting a notification task is completed.

ある実施形態では、本方法はまた、タスクプールによって、第1のタスクを完了しているものとしてマーキングするステップと、タスクプールからCPUに、第1のタスクが完了した通知を送信するステップとを含む。 In some embodiments, the method also includes the task pool, and the step of marking as being completed first task, the CPU from the task pool, and sending a notification to the first task is completed including.

ある実施形態では、本方法はまた、第1のエージェントをタスクプールに先回りして送信するための述語として、第1のセルが利用可能な処理容量を有すると判定するように第1のセルを構成するステップを含む。 In some embodiments, the method also includes, as a predicate for transmitting proactively the first agent to the task pool, the first cell as the first cell is determined to have processing capacity available including the step of configuring.

ある実施形態では、本方法はまた、プログラムされた第1のセルをネットワークに追加することに先立って、第1のセルを第1のデバイスに統合するステップを含む。 In some embodiments, the method also includes, prior to adding the first cells programmed to a network, comprising the step of integrating the first cell to the first device.

ある実施形態では、第1のデバイスは、センサ、電球、電力スイッチ、電化製品、バイオメトリックデバイス、医療デバイス、診断デバイス、ラップトップ、タブレット、スマートフォン、モータコントローラ、およびセキュリティデバイスのうちの1つを含む。 In some embodiments, the first device, the sensor bulb, power switches, appliances, biometric devices, medical devices, diagnostic devices, laptops, tablets, smart phones, motor controllers, and one of the security device including.

ある実施形態では、プログラムされた第1のセルをネットワークに追加するステップは、第1のセルとタスクプールとの間に通信リンクを確立するステップを含む。 In some embodiments, the step of adding the first cells programmed to a network, comprising the steps of establishing a communications link between the first cell and the task pool.

ある実施形態では、(CPU)はさらに、第2のタスクタイプを有する、第2のタスクをタスクプールに投入するように構成され、本方法はさらに、第2のタスクタイプを実施するように第2のセルをプログラムするステップと、第2のセルとタスクプールとの間に通信リンクを確立するステップと、第2のセルからタスクプールに、第2のエージェントを先回りして送信するステップと、第2のエージェントによって、第2のタイプのタスクに関してタスクプールを検索するステップと、第2のエージェントによって、タスクプールから第2のタスクを読み出すステップと、第2のエージェントによって、第2のセルに第2のタスクをトランスポートするステップと、第2のセルによって、第2のタスクを処理するステップと、第2のセル In certain embodiments, (CPU) further comprises a second task type, is constituted of the second task to put the task pool, the method further to perform a second task type first a step of programming the second cell, and establishing a communication link between the second cell and the task pool, the task pool from the second cell, and transmitting proactively second agent, the second agent, retrieving the task pool for the second type of task, the second agent, a step of reading a second task from a task pool, the second agent, to the second cell a step of the second task to transport, by the second cell, processing the second task, the second cell らタスクプールに、第2のタスクが完了した通知を送信するステップと、タスクプールによって、第2のタスクを完了しているものとしてマーキングするステップと、タスクプールからCPUに、第2のタスクが完了した通知を送信するステップとを含む。 Luo task pool, and sending a notification to the second task is completed, the task pool, and the step of marking as being completed second task, the CPU from the task pool, and a second task and transmitting the completion notification.

モノのインターネット(IoT)コンピューティング環境内の分散処理リソースを制御するためのシステムもまた、提供され、集約コンピューティング要件を複数のタスクにパーティション化し、タスクをプール内に置くように構成される、CPUと、それぞれ、CPUとの直接通信を伴わずに、プールからタスクを先回りして読み出すように構成される、一意の専用エージェントを有する、複数のデバイスとを含む。 System for controlling the distributed processing resources Internet (IoT) computing environment mono- also provided, the aggregate computing requirements and partitioned into a plurality of tasks configured to place the tasks in the pool, a CPU, respectively, including without direct communication with the CPU, configured to read out proactively task from the pool, with a dedicated agent unique, and a plurality of devices.

本発明者に把握される最良の形態を含む、種々の実施形態を可能にする説明が例証されたが、本発明の範囲から逸脱することなく、種々の変更および修正が成され得、均等物が種々の要素に対して代用され得ることが、当業者によって理解されるであろう。 Including the best mode grasped the present inventors has described that allows various embodiments have been illustrated, without departing from the scope of the present invention, obtained is made that various changes and modifications, equivalents it There which may be substituted for the various elements, it will be understood by those skilled in the art. したがって、本明細書に開示される本発明は、開示される特定の実施形態に限定されず、本発明は、添付される請求項の文字通りかつ同等の範囲内に該当する全ての実施形態を含むであろうことが意図される。 Accordingly, the invention disclosed herein is not limited to the particular embodiments disclosed, the present invention includes all embodiments falling within the literal and equivalent scope of the appended claims it is contemplated would.

Claims (20)

  1. 処理システムであって、 A processing system,
    タスクプールと、 And the task pool,
    第1のタスクを前記タスクプールに投入するように構成される、コントローラと、 It constituted a first task to put into the task pool, and a controller,
    前記タスクプールから前記第1のタスクを先回りして読み出すように構成される、第1のコプロセッサと、 Configured to read proactively said first task from the task pool, and a first co-processor,
    を備える、処理システム。 Comprising a processing system.
  2. 前記第1のコプロセッサは、前記コントローラと通信することなく、前記タスクプールから前記第1のタスクを読み出すように構成される、第1のエージェントを備える、請求項1に記載の処理システム。 It said first coprocessor, without communicating with the controller, configured to read the first task from the task pool, comprises a first agent, processing system according to claim 1.
  3. 前記第1のタスクは、第1のタスクタイプの印を含み、前記第1のコプロセッサは、前記第1のタイプのタスクを実施するように構成され、前記第1のエージェントは、前記第1のタイプのタスクに関して前記タスクプールを検索するように構成される、請求項2に記載の処理システム。 The first task includes indicia of the first task type, the first co-processor is configured to perform the first type of task, the first agent, the first processing system of the type configured to retrieve the task pool respect task, according to claim 2.
  4. 前記第1のコプロセッサはさらに、前記第1のものを処理し、前記第1のタスクの完了に応じて、前記タスクプールに通知するように構成される、請求項1に記載の処理システム。 It said first co-processor is further the first handle things, in response to said completion of the first task, the configured to notify the task pool, processing system according to claim 1.
  5. 前記タスクプールは、前記第1のタスクの完了に応じて、前記コントローラに通知するように構成される、請求項1に記載の処理システム。 The task pool, in response to said completion of the first task, the processing system according constituted, in Claim 1 to notify the controller.
  6. 前記コントローラおよび前記第1のコプロセッサは、相互に前記タスクプールを通してのみ通信するように構成される、請求項1に記載の処理システム。 It said controller and said first co-processor is configured to communicate only through mutually the task pool, processing system according to claim 1.
  7. 前記コントローラおよび前記第1のコプロセッサは、相互に直接、前記タスクプールを通して通信するように構成される、請求項1に記載の処理システム。 It said controller and said first coprocessor directly to each other, configured to communicate through the task pool, processing system according to claim 1.
  8. 前記第1のコプロセッサは、これが利用可能な処理容量を有していることを判定し、前記判定に応答して前記エージェントを前記タスクプールにディスパッチするように構成される、請求項2に記載の処理システム。 Said first coprocessor, which determines that it has a processing capacity available, configured to dispatch the agent to the task pool in response to the determination, according to claim 2 of the processing system.
  9. 前記コントローラはさらに、第2のタスクを前記タスクプールに投入するように構成され、前記システムはさらに、前記タスクプールから前記第2のタスクを先回りして読み出すように構成される第2のエージェントを有する、第2のコプロセッサを備える、請求項3に記載の処理システム。 Wherein the controller is further configured to second task to put into the task pool, said system further second agent configured to read proactively said second task from said task pool having, a second coprocessor processing system of claim 3.
  10. 前記第2のタスクは、第2のタスクタイプの印を含み、前記第2のコプロセッサは、前記第2のタイプのタスクを実施するように構成され、前記第2のエージェントは、前記第2のタイプのタスクに関して前記タスクプールを検索するように構成される、請求項9に記載の処理システム。 The second task comprises indicia of a second type of task, the second co-processor is configured to perform the second type of task, the second agent, the second processing system of the type configured to retrieve the task pool respect task, according to claim 9.
  11. 前記コントローラおよび前記タスクプールは、モノリシック集積回路(IC)上に常駐し、前記第1のコプロセッサは、前記IC上に常駐しない、請求項1に記載の処理システム。 The controller and the task pool, resident on a monolithic integrated circuit (IC), the first co-processor is not resident on the IC, processing system according to claim 1.
  12. 前記コントローラ、前記タスクプール、ならびに前記第1および第2のコプロセッサは、モノリシック集積回路(IC)上に常駐する、請求項9に記載の処理システム。 The controller, the task pool and the first and second coprocessor resides on the monolithic integrated circuit (IC), the processing system of claim 9,.
  13. 第1のタスクタイプを有する第1のタスクをタスクプールに投入するように構成される、中央処理ユニット(CPU)を含むタイプのネットワーク内の処理リソースを動的に制御する方法であって、 It constituted a first task having a first task type to put to the task pool, a method for dynamically controlling the process resources within the type of network, including a central processing unit (CPU),
    前記第1のタスクタイプを実施するように第1のセルをプログラムするステップと、 A step of programming a first cell to perform the first task type,
    前記プログラムされた第1のセルを前記ネットワークに追加するステップと、 A step of adding a first cell which is the program to the network,
    前記第1のセルから前記タスクプールに、第1のエージェントを先回りして送信するステップと、 Transmitting said in the task pool from the first cell, and proactively first agent,
    前記第1のエージェントによって、前記第1のタイプのタスクに関して前記タスクプールを検索するステップと、 By the first agent, retrieving the task pool with respect to said first type of task,
    前記第1のエージェントによって、前記タスクプールから前記第1のタスクを読み出すステップと、 By the first agent, a step of reading the first task from the task pool,
    前記第1のエージェントによって、前記第1のセルに前記第1のタスクをトランスポートするステップと、 By the first agent, and the step of transporting said first task to said first cell,
    前記第1のセルによって、前記第1のタスクを処理するステップと、 By said first cell, and processing the first task,
    前記第1のセルから前記タスクプールに、前記第1のタスクが完了した通知を送信するステップと、 In the task pool from the first cell, and sending a notification to the first task is completed,
    を含む、方法。 Including, method.
  14. 前記タスクプールによって、前記第1のタスクを完了しているものとしてマーキングするステップと、 A step of marking as the by the task pool, have completed the first task,
    前記タスクプールから前記CPUに、前記第1のタスクが完了した通知を送信するステップと、 The CPU from the task pool, and sending a notification to the first task is completed,
    をさらに含む、請求項13に記載の方法。 Further comprising the method of claim 13.
  15. 前記第1のエージェントを前記タスクプールに先回りして送信するための述語として、前記第1のセルが利用可能な処理容量を有すると判定するように前記第1のセルを構成するステップをさらに含む、請求項13に記載の方法。 As a predicate for transmitting proactively the first agent to the task pool, further comprising first cell constituting the first cell to determine that has processing capacity available the method of claim 13.
  16. 前記プログラムされた第1のセルを前記ネットワークに追加することに先立って、前記第1のセルを第1のデバイスに統合するステップをさらに含む、請求項13に記載の方法。 Prior to adding the first cell that is the program to the network, further comprising the method of claim 13 the step of integrating the first cell to the first device.
  17. 前記第1のデバイスは、センサ、電球、電力スイッチ、電化製品、バイオメトリックデバイス、医療デバイス、診断デバイス、ラップトップ、タブレット、スマートフォン、モータコントローラ、およびセキュリティデバイスのうちの1つを含む、請求項16に記載の方法。 The first device includes sensors, light bulbs, power switches, appliances, biometric devices, medical devices, diagnostic devices, laptops, tablets, smart phones, motor controllers, and one of the security device, according to claim the method according to 16.
  18. 前記プログラムされた第1のセルをネットワークに追加するステップは、前記第1のセルと前記タスクプールとの間に通信リンクを確立するステップを含む、請求項13に記載の方法。 Step includes the step of establishing a communications link between the first cell and the task pool, Method according to claim 13 for adding the first cell is the programmed network.
  19. 前記(CPU)はさらに、第2のタスクタイプを有する第2のタスクをタスクプールに投入するように構成され、 Wherein (CPU) is further configured to a second task having a second task type to put to the task pool,
    前記第2のタスクタイプを実施するように前記第2のセルをプログラムするステップと、 A step of programming said second cell to perform the second task type,
    前記第2のセルと前記タスクプールとの間に通信リンクを確立するステップと、 Establishing a communications link between the task pool and the second cell,
    前記第2のセルから前記タスクプールに、第2のエージェントを先回りして送信するステップと、 Transmitting said in the task pool from the second cell, and proactively second agent,
    前記第2のエージェントによって、前記第2のタイプのタスクに関して前記タスクプールを検索するステップと、 By the second agent, retrieving the task pool with respect to said second type of task,
    前記第2のエージェントによって、前記タスクプールから前記第2のタスクを読み出すステップと、 By the second agent, a step of reading the second task from said task pool,
    前記第2のエージェントによって、前記第2のセルに前記第2のタスクをトランスポートするステップと、 By the second agent, comprising the steps of transporting said second task to said second cell,
    前記第2のセルによって、前記第2のタスクを処理するステップと、 By the second cell, processing the second task,
    前記第2のセルから前記タスクプールに、前記第2のタスクが完了した通知を送信するステップと、 In the task pool from the second cell, and sending a notification to which the second task is completed,
    前記タスクプールによって、前記第2のタスクを完了しているものとしてマーキングするステップと、 A step of marking as the by the task pool, have completed the second task,
    前記タスクプールから前記CPUに、前記第2のタスクが完了した通知を送信するステップと、 The CPU from the task pool, and sending a notification to the second task is completed,
    をさらに含む、請求項13に記載の方法。 Further comprising the method of claim 13.
  20. モノのインターネット(IoT)コンピューティング環境内の分散処理リソースを制御するためのシステムであって、 A system for controlling the distributed processing resources Internet (IoT) computing environment mono-,
    集約コンピューティング要件を複数のタスクにパーティション化し、前記タスクをプール内に置くように構成される、CPUと、 Aggregate computing requirements and partitioned into a plurality of tasks configured to place the tasks in the pool, a CPU,
    それぞれ、前記CPUとの直接通信を伴わずに、前記プールからタスクを先回りして読み出すように構成される、一意の専用エージェントを有する、複数のデバイスと、 Respectively, without direct communication with the CPU, configured to read out proactively tasks from the pool, with a dedicated agent unique, and a plurality of devices,
    を備える、システム。 Provided with the system.
JP2017503021A 2013-01-25 2015-07-10 System and method for parallel processing using a dynamically configurable preemptive coprocessing cell Pending JP2017521796A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/340,332 US9852004B2 (en) 2013-01-25 2014-07-24 System and method for parallel processing using dynamically configurable proactive co-processing cells
US14/340,332 2014-07-24
PCT/US2015/039993 WO2016014263A2 (en) 2014-07-24 2015-07-10 System and method for parallel processing using dynamically configurable proactive co-processing cells

Publications (2)

Publication Number Publication Date
JP2017521796A true JP2017521796A (en) 2017-08-03
JP2017521796A5 JP2017521796A5 (en) 2018-08-16



Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017503021A Pending JP2017521796A (en) 2013-01-25 2015-07-10 System and method for parallel processing using a dynamically configurable preemptive coprocessing cell

Country Status (1)

Country Link
JP (1) JP2017521796A (en)

Similar Documents

Publication Publication Date Title
US7921151B2 (en) Managing a plurality of processors as devices
KR100890134B1 (en) Memory protection system and method for computer architecture for broadband networks
US20020138707A1 (en) System and method for data synchronization for a computer architecture for broadband networks
JP4472339B2 (en) Multi-core multi-thread processor
Chowdhury et al. Managing data transfers in computer clusters with orchestra
US8091078B2 (en) Dynamically partitioning processing across a plurality of heterogeneous processors
Wood et al. Toward a software-based network: integrating software defined networking and network function virtualization
US20080155203A1 (en) Grouping processors and assigning shared memory space to a group in a heterogeneous computer environment
US20040250046A1 (en) Systems and methods for software extensible multi-processing
US20050060705A1 (en) Optimizing critical section microblocks by controlling thread execution
CN101069161B (en) Scheduling method, scheduling device, and multiprocessor system
US6804815B1 (en) Sequence control mechanism for enabling out of order context processing
CN101452406B (en) Cluster load balance method transparent for operating system
US20050081203A1 (en) System and method for asymmetric heterogeneous multi-threaded operating system
US8732416B2 (en) Requester based transaction status reporting in a system with multi-level memory
CN100392602C (en) System and method for dymanic ordering in a network processor
US8018951B2 (en) Pacing a data transfer operation between compute nodes on a parallel computer
Fusco et al. High speed network traffic analysis with commodity multi-core systems
US9009723B2 (en) Distributed acceleration devices management for streams processing
US20090007141A1 (en) Message passing with a limited number of dma byte counters
US9158362B2 (en) System and method for power reduction by sequestering at least one device or partition in a platform from operating system access
KR20030085038A (en) Resource dedication system and method for a computer architecture for broadband networks
EP1730628A1 (en) Resource management in a multicore architecture
JP2014505916A (en) Method and apparatus for moving data from Simd register file to a general purpose register file
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management

Legal Events

Date Code Title Description
A521 Written amendment


Effective date: 20180704

A621 Written request for application examination


Effective date: 20180704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190328

A131 Notification of reasons for refusal


Effective date: 20190423