使用動態可配置主動協同處理單元的並行處理的系統和方法與流程
2023-07-03 23:29:41 1

技術領域
本發明總體上涉及並行處理計算,具體涉及一種處理架構,其涉及被配置為從經由中央處理器填入的任務池主動檢索任務的主動協同處理器。
背景技術:
物聯網(也被稱作物聯雲)是指在現有網際網路基礎設施內的唯一可識別的嵌入式計算設備的特設網絡。物聯網(IoT)意味著超越機器對機器通信(M2M)的設備、系統和服務的高級連接。IoT設想的事物的範圍是無限的,可包括諸如心臟監測植入物、生物晶片應答器、汽車傳感器、航空航天和防禦現場操作設備、以及例如在搜索和救援操作中協助消防員的公共安全應用的設備。當前市場示例包括基於家庭的網絡,其涉及智能恆溫器、燈泡和利用wifi進行遠程監控的洗衣機/乾衣機。由於物聯網中相連接的對象無所不在的性質,估計到2020年,超過300億個設備將無線連接到物聯網。本發明的目的之一在於利用與這些設備相關的控制器和處理器的處理能力。
計算機處理器通常串行地執行機器編碼指令。為了同時運行多個應用,單個處理器將來自各種程序的指令交錯處理並且串行執行它們,儘管從用戶的角度看,應用似乎被並行處理。另一方面,真正的並行處理或多核處理是一種將大的計算任務分為單獨的計算塊並將它們分配到兩個或兩個以上的計算器之中的計算方法。使用任務並行性(並行處理)的計算架構將大的計算需求劃分為可執行代碼的離散模塊。然後基於它們各自的優先級同時或順序地執行這些模塊。
典型的多處理器系統包括中央處理器(CPU)以及一個或多個協同處理器。CPU將計算需求劃分為任務,並將這些任務分發到協同處理器。已完成的線程被報告給CPU,CPU根據需要繼續向協同處理器分發附加線程。目前已知的多處理方法的缺點在於:任務分發會消耗大量的CPU帶寬;在分發新任務之前等待任務完成(通常具有對先前任務的依賴性);當任務完成時響應來自協同處理器的中斷;響應來自協同處理器的其它消息。此外,協同處理器在等待來自CPU的新任務時通常保持空閒。
因此,需要一種多處理器架構,所述架構減少CPU管理開銷,並且還更有效地處理和利用可用的協同處理資源。
技術實現要素:
並行處理計算架構的各種實施例包括:CPU,被配置為填入任務池;一個或多個協同處理器,被配置為從任務池主動檢索線程(任務)。每個協同處理器在完成任務時通知任務池,並直到另一任務變得可用以進行處理之前發送回(ping)任務池。以這種方式,CPU直接與任務池進行通信,並通過任務池間接與協同處理器進行通信。
協同處理器還可以能夠自主地操作;也就是說,它們可以獨立於CPU與任務池交互。在優選實施例中,每個協同處理器包括詢問任務池以搜索任務以執行的代理。因此,協同處理器「等同地」彼此地並與任務池一起地工作在一起,通過自動檢索並完成可能是或可能不是相互關聯的獨立任務來完成集群計算需求。作為非限制示例,假設任務B涉及計算隨時間的平均溫度。通過限定任務A以包括捕捉隨時間的溫度度數,進一步通過限定任務B以包括獲取捕捉的讀數,CPU和各種協同處理器可由此經由任務池彼此通信。
在各種實施例中,協同處理器被稱作自動、主動等同單元。在本上下文中,術語「自主」意味著協同處理器可以與任務池交互,而不被CPU或任務池指示這樣做。術語「主動」提議每個協同處理器可被配置(例如,編程)為周期性地發送代理以監視任務池中適合於該協同處理器的可用任務。術語「等同」意味著協同處理單元在監視和執行任務池中的所有可用任務時共享共同的目標。
等同單元(協同處理器)可以是通用處理器或專用處理器,因此可相較於CPU或在系統中的其它等同單元具有相同或不同指令集、結構和微架構。此外,將被執行的軟體程序和將被處理的數據可被包括在一個或多個存儲單元中。在常規的計算機系統中,例如,軟體程序包括可需要將由程序使用的數據的指令串。例如,如果該程序與媒體播放器對應,則包含在存儲器中的數據可以是壓縮的音頻數據,所述音頻數據可由協同處理器讀取並最終在揚聲器上播放。
在系統中的每個等同單元可被配置為通過縱橫開關(也被稱作結構)與任務池進行電阻或無線通信。在純正的無線網狀拓撲中,無線電信號自己可構成結構。在各種實施例中,協同處理器也可直接與CPU進行通信。切換結構有利於系統資源之間的通信。每個等同單元是主動的,因為當等同單元沒有要執行的處理時,或者當等同單元能夠有助於處理循環而不阻礙其正常操作時,它通過將其代理髮送到任務池來獲得要執行的任務。作為非限制性示例,在物聯網(下面更詳細地討論)的上下文中,與諸如燈泡的設備相關聯的協同處理器可以被編程為監聽來自於主設備(例如智慧型手機)的「開」和「關」命令作為其正常操作,但是其處理資源也可以通過任務池來利用。
在本文中描述的各種實施例的上下文中,術語「代理」是指與協同處理器相關聯的軟體模塊,類似於網絡包,其中,所述協同處理器與任務池進行交互從而獲得對協同處理器單元適合的可用任務。當任務可能在先前任務的運行中時,等同單元可順序地執行任務,或者當一個以上的等同單元是可用的並且一個以上的匹配任務可用於運行時,並行地執行任務。根據由CPU提供的任務線程限制(如果任何),可獨立地或協作地執行任務。在任務池中相互依賴的任務可被邏輯上組合。當任務線程已完成時,任務池通知CPU。如果任務線程包括單個任務,則任務池可在該任務完成時通知CPU。如果任務線程包括多個任務,則任務池在完成這種任務鏈時通知CPU。由於任務線程可以被邏輯上組合,所以可以想到具有以下情況:任務池在邏輯上組合的任務線程完成之後通知CPU。
本領域技術人員將理解,可以通過將CPU配置為以獨立於與各種協同處理器相關聯的指令集架構的抽象級別來組合和/或結構任務來促進CPU與協同處理器之間的互操作性,從而允許組件在任務級別而不是在指令級別進行通信。因此,可以在「即插即用」的基礎上將設備及其相關聯的協同處理器添加到網絡。本發明的另一方面提供具有不同指令集架構的CPU的異構陣列內的互操作性。
本發明的各種特徵尤其適用於物聯網設備和傳感器的網絡;異構計算環境;高性能計算、二維和三維單片集成電路;運動控制和機器人。
附圖說明
本發明將在下文中結合附圖進行描述,其中,相同的數字表示相似的元件,在附圖中:
圖1是根據實施例的包括CPU、存儲器、任務池和被配置為經由結構(fabric)進行通信的多個協同處理器的並行處理架構的示意框圖;
圖2是示出根據實施例的示例性任務池的細節的示意框圖;
圖3是根據實施例的包括協同處理單元以及與任務池進行交互的它們對應的代理的網絡的示意框圖;
圖4是根據實施例的包括可用插頭和播放設備的物聯網的示意布局;
圖5是示出根據實施例的附近設備的動態處理的示例性物聯網使用案例的示意布局;
圖6是示出根據實施例的示例性並行計算環境的操作的流程圖。
具體實施方式
各種實施例涉及並行處理計算系統和環境,從簡單的切換和控制功能到複雜的程序和算法,包括但不限於:數據加密;圖形、視頻和音頻處理;直接內存訪問;數學計算;數據挖掘;遊戲算法;乙太網包和其它網絡協議處理,包括外部網絡的數據建設、接收和傳輸;金融服務和商業方法;搜尋引擎;網際網路數據流和其它基於網絡的應用;執行內部或外部軟體程序;例如在物聯網的環境中接通和斷開和/或以其它方式控制或操縱器具、燈泡、消費電子產品等。
各種特徵可併入任何當前已知或以後開發的計算機架構中。例如,涉及同步、數據安全、無序執行和主處理器中斷的並行處理問題可以使用本文描述的發明構思來解決。
現在參照圖1,分布式處理系統10包括單核或多核CPU 11以及被配置為經由橫杆切換結構14與任務池13進行通信的一個或多個等同或協同處理單元12A至12。等同單元12還可經由切換結構14或經由單獨的單元總線(未示出)彼此通信。CPU 11可直接或經由切換結構14與任務池13進行通信。一個或多個存儲單元15中的每一個包含數據和/或指令。在本上下文中,術語「指令」包括可經由CPU 11執行編譯的軟體程序。存儲單元15、單元12和任務池13可電阻或無線互聯以經由切換結構14與CPU和/或彼此相互通信。在某些實施例中,CPU 11僅通過任務池間接與單元12通信。在其它實施例中,CPU 11也可在不使用任務池作為中間物直接與單元12進行通信。
在某些實施例中,系統10可包括一個以上的CPU 11和一個以上的任務池13,在這種情況下,一個特定的CPU 11可與一個特定的任務池13進行交互,或者多個CPU 11可共享一個或一個以上的任務池13。此外,每個等同單元可被配置為與一個以上任務池13進行交互。可選地,一個特定的單元可被配置為與單個指定任務池進行交互,例如,在高性能或高安全性環境下。
在各種實施例中,當滿足以下三個條件時,單元可與任務池動態配對、電阻(插入並播放)或無線(空中)地:
1)單元能夠與任務池進行電阻通信或無線通信。到任務池的連接可以通過任務池本身中的埠,或通過連接到任務池的切換結構;
2)任務池識別由單元發送的代理是可信的,例如,使用具有或不具有密碼的來自用戶的輸入,通過傳統Wi-Fi、Blootooth或類似配對,手動地通過在智慧型手機或平板電腦上運行的圖形軟體程序或通過任何其他安全或不安全的方法;
3)任務池中的至少一個可用任務與等同單元的能力兼容。
在具有多任務池的多處理器環境的情況下,除了給定單元可以被鎖定或被限制為僅與任一個任務池一起工作之外,前述動態配對條件適用;否則,單元可以使用第一查找基礎、循環基礎或任何其它選擇方案,與一個或多個任務池連接。還可以向任務池中的任務分配優先級,由此單元給予高優先級任務優先級,並且當沒有以其它方式被更高優先級任務佔用時,服務較低優先級任務。
CPU 11可以是用於執行軟體程序的單核處理器或多核處理器、應用處理器或微控制器。系統10可在個人計算機、智慧型電話、平板電腦、網際網路設備上被實現,在這種情況下,CPU 11可以是任何個人計算機、中央處理器或處理器集群,諸如,或者立即計算環境的本地或遠程多核處理器。可選地,系統10可在超級計算機上實現,並且CPU 11可以是精簡指令集計算機(「RISC」)處理器、應用處理器、微處理器等。
在其它實施例中,系統10可在本地連接的一系列個人計算機(諸如,貝奧武夫(Beowulf)集群)上實現,在這種情況下,CPU 11可包括所有的中央處理器、子集或聯網計算機中的一個。可選地,系統10可在遠程連接的計算機上的網絡上實現,在這種情況下,CPU 11可以是現在已知的或稍後將開發的用於伺服器或大型機的中央處理器。CPU 11在當前描述的系統10內執行對象並行處理方法的具體方式可以受到CPU的作業系統的影響。例如,如下所述,CPU 11可以被配置為通過對其進行編程以識別並與任務池13通信並將計算需求劃分為線程而在系統10內使用。
還可以預期,系統10可以在具有作業系統的任何計算機或計算機網絡上反作用實現,該作業系統可以被修改或以其它方式配置為實現本文所描述的功能。如本領域中已知的,要處理的數據包含在存儲器單元15內,例如在隨機存取的可尋址區域或分區或只讀存儲器的情景下,用於CPU 11的高速緩存存儲器,或其它形式數據存儲器如快閃記憶體和磁存儲器。存儲器單元15包含要處理的數據以及放置處理的數據的結果的位置。不是每個任務都需要訪問存儲器單元15,例如在智能儀表和汽車儀表的情況下,其可以將數據返回到系統10,或者在機器人和馬達控制器的情況下,其可使機器制動。
每個單元12在概念上或邏輯上是能夠運行一個或多個任務/線程的獨立的計算單元。單元12可以是微控制器、微處理器、應用處理器、「啞巴」開關或獨立計算機,如貝奧武夫集群中的機器。
單元12可以是被配置為補充、執行全部或執行有限範圍的CPU的功能的通用或專用協同處理器,或者例如對CPU 11是外部的功能,諸如環境監視和機器人致動器。專用處理器可以是被設計、編程或以其它方式配置為執行專門任務的專用硬體模塊,或者其可以是被配置為執行諸如圖形處理、浮點算術或數據加密的專用任務的通用處理器。
在實施例中,作為專用處理器的任何單元12還可被配置為訪問並寫入存儲器並執行如下所述的描述符以及其它軟體程序。
此外,任何數量的單元12可以包括異構計算環境;即,使用一種類型以上的處理器(諸如基於AMD和/或基於Intel的處理器)或32位和64位處理器的混合的系統。
如在以下序列事件中所示,每個單元12被配置為執行一個或多個專用任務。在輪詢階段期間,每個單元周期性地向任務池發送代理,直到找到匹配任務。為了便於這種匹配,單元和任務池可以配備有收發器。在任務池的情況下,收發器可位於任務池本身或者位於與任務池連接的切換結構中。當在任務池內找到任務匹配時,任務池將確認發送到單元。接下來的步驟是「通信信道」階段。在通信信道階段,單元接收任務並開始執行任務。在一個實施方案中,一旦第一任務被完成,則維持通信信號,使得等同單元可在不需要重複「輪詢」和「確認」階段就可抓取其它任務。
系統10可包括多個單元,其中,這些單元中的某些單元能夠執行與其它單元相同任務類型,從而在系統10中創造冗餘。由給定單元12執行的任務類型集合可以是由另一單元執行的任務類型的集合的子集。例如,在圖1中,系統10可將聚集的計算問題劃分為任務組,利用第一類型、第二類型和第三類型的任務來填充任務池13。第一單元12A可能夠僅執行第一類型的任務;第二單元12B可能夠執行第二類型的任務;第三單元12C可能夠執行第三類型的任務;第四單元12D可能夠執行第二或第三類型的任務;第五單元12N可能夠執行所有三種任務類型。系統10可被配置具有這種冗餘,使得如果給定單元從系統10(或當前忙或其它方式不可用)移除,則系統10可繼續無縫運行。此外,如果單元被動態地添加到系統10,則系統10可在具有更高性能的好處下繼續無縫運行。
現在參照圖1和圖2,任務池13可佔據可由CPU 11訪問的物理存儲器的區域。可選地,任務池13可被MAC地址或IP位址訪問。對於任務池13預想了多個實施例;它可與CPU在物理上位於相同的2D或3D單片IC中,或者它可以被實現為獨立IC並且物理地互連到計算機板、智慧型電話、平板電腦、路由器或物聯網設備。在另一可選實施例中,任務池可以是可以在多個CPU 11系統之間共享或專用於給定CPU 11的獨立多埠,有線和/或無線連接的設備。任務池13還可以由單元12尋址。任務池13可以設置在專用硬體塊中,以通過CPU 11和單元12提供最大訪問速度。可選地,任務池13可以是基於軟體的,其中,類似於基於硬體的實施例,任務池13的內容存儲在存儲器中,但由數據結構表示。
在被CPU 11填充時,任務池13包含一個或多個任務線程21。每個任務線程21表示計算任務,該計算任務可以是施加在CPU 11上的較大聚合計算需求的組件或子集。在一個實施例中,CPU 11可初始化並隨後用同時可執行的線程21填充任務池13。每個線程21可以包括一個或多個離散任務22。任務22可具有任務類型和描述符。任務類型指示哪些單元12能夠執行任務22。任務池13還可以使用任務類型來對具有相同類型的任務22進行優先級排序。在一個實施例中,任務池13可維護記錄存在於系統10中的等同單元12的優先級表(未示出)、每個單元能夠執行的任務22的類型以及每個單元當前是否正在處理。如下所述,任務池13可以使用優先級表來確定將哪些合格任務22分配給請求單元。
在某些實施例中,CPU 11可從任務池檢索並執行任務或線程。此外,CPU 11可中斷被確定為過時、損壞、卡住或錯誤的任何任務。在這種情況下,CPU 11可更新任務,使其可用於後續處理。沒有任何東西阻止CPU 11實現自適應任務管理,例如,如人工智慧可能需要的,由此CPU 11可以添加、移除或改變未完成的現有線程21內的任務。
描述符可包含將被執行的具體指令,執行模式、將被處理的數據的位置(例如,地址)和任務結果的放置位置(如果有的話)中的一個或更多個。結果的放置位置是可選的,諸如,在動畫和多媒體任務的情況下,其通常將結果呈現給顯示器而不是將它們存儲在存儲器中。此外,任務描述符可以連結在一起,如在鍊表中,使得與如果描述符不被連結在一起相比,可以用更少的存儲器調用來訪問要處理的數據。在一個實施例中,描述符是包含頭部和到存儲器位置的多個引用指針的數據結構,任務22包括數據結構的存儲器地址。頭部定義了要執行的函數或指令。第一指針引用要處理的數據的位置。第二個可選指針引用處理數據的放置位置。如果描述符連結到要被順序執行的另一描述符,則描述符可以包括引用下一描述符的第三指針。在描述符是數據結構的替代實施例中,任務22可以包括完整數據結構。
線程21還可包括描述可以執行任務22的順序和影響性能順序的任何條件的「配方」。根據配方,可以根據布爾運算順序地、同時地、無序地、相互依賴地或有條件地執行任務22。例如,如圖2所示,線程21A包括四個任務:22A、22B、22C和22D。在所示實施例中,第一任務22A必須在第二任務22B或第三任務22C可以開始之前完成。根據配方,一旦第二任務22B或第三任務22C完成,則第四任務22D可以開始。
線程21也可以是相互依賴的。例如,如圖2所示,由於線程21B中的布爾運算,完成的任務22C可以允許線程21B中的任務的處理繼續。任務池13可以鎖定任務22,同時任務22正等待其所依賴的另一任務22的完成。當任務22被鎖定時,其不能被單元獲取。當線程21的任務22完成時,任務池13可以通知CPU 11完成。然後,CPU可使處理超過完成的線程21。
這些單元有利地保持彼此和與CPU 11的等同,從而幫助系統10通過自主地和主動地從任務池13檢索任務來執行複雜的計算。單元12自主地操作,因為它們可以獨立於CPU 11或任何其它協同處理器。可選地,可以直接由CPU作用或指示單元。每個單元主動地行動,因為一旦單元變得可用於進一步處理,它就從任務池13尋找任務22。
更具體地,在一個實施例中,單元12通過發送代理30以詢問(搜索)任務池並檢索可用任務22從任務池獲取任務,可用任務22需要完成、未被鎖定並且具有單元可執行的任務類型。通常來說,系統10與等同協同處理單元具有相同數量的代理。在這種情況下,代理通常類似於網絡意義上的數據幀,因為代理可以配備有源地址、目的地址和負載。在實施例中,當代理30正在尋找任務22時,目的地址是任務池13的地址,當代理30返回到其具有任務22的單元時,目的地址是相應的單元12的地址。相應地,當代理30正在尋找任務22時,源地址是單元12的地址,並且當代理30返回到其具有任務22的單元時,源地址是任務池13的地址。
此外,源地址和目的地址可有利於幀同步。也就是說,系統10可被配置為明確區分地址與負載數據,使得當讀取代理30的內容時,目的地址指示幀的開始,並且源地址指示幀的結束,或反之亦然。這允許負載在放置在地址之間時在大小上變化。在大小可變的負載的另一實施例中,代理30可包括指示負載大小的頭部。可將頭部信息與負載進行比較以驗證數據完整性。在又一個實施例中,負載可以是固定長度。當代理30通過其協同處理器單元被分派到任務池13時,負載包括單元12可以執行的任務類型的標識信息。當代理30從任務池13返回時,負載包括以存儲位置的形式或全部描述符數據結構的形式的任務22的描述符。
在另一實施例中,代理30中的某些或全部代理是其各自對應的單元12的自主代表。也就是說,每個代理30可以由其相應的單元12分派,以在該單元空閒或能夠執行附加處理時檢索任務22。以這種方式,可以更充分地利用等同單元12的處理能力,因為單元不需要空閒地等待來自CPU 11的指令。此方法具有通過減輕CPU向單元發送請求以從任務池檢索任務的需求來減少CPU開銷的額外優點。這些優點使得系統10比傳統計算機架構更有效,其中輔助模塊和協同處理器依賴於來自主CPU的指令。
此外,等同單元12A至12n對於線程本身的具體組成是矛盾的。相反,代理僅關注找到其相應單元的能力與要在任務池13中完成的可用任務22之間的匹配。也就是說,只要任務池13中存在可用任務22,並且可用任務22匹配單元的能力,則系統可有效地利用單元的處理能力。
等同單元12A至12n中的某些或全部可彼此獨立地工作,或可通過切換結構14、通過任務池13或根據來自CPU的命令或請求彼此通信以喚醒另一等同單元來幫助處理、移動或發送數據。在一個實施例中,代理30A可以搜索就緒任務22的任務類型以及單元12A能夠執行的任務的類型之間的匹配。該架構可涉及CPU 11被配置為創建的任務的類型的硬編碼。因此,如果任務池13包含三種類型的任務22,並且大的計算需求包括第四類型的任務,則該第四類型的任務可以不被放置在任務池13中,即使能夠執行第四類型的任務包括在系統10中或添加到系統10中。因此,CPU 11可被配置為「學習」或被教導如何創建第四類型的任務,以便更充分地利用可用的處理資源。
在另一實施例中,代理30在任務22描述符中搜索與單元12A能夠執行的指令之一匹配的可執行指令。當找到匹配任務22時,代理30A將匹配任務22的描述符分發到單元12A,因此,單元12A開始處理任務22。具體來說,代理30A可將描述符的存儲地址分發到單元12A,單元12A從存儲器檢索數據結構。可選地,描述符的完整數據結構被包括在任務22中,代理30A可將完整數據結構分發到單元12A以進行處理。描述符通知單元12A執行哪個指令,可找到在存儲單元15中數據將被處理的位置以及在存儲器15中結構將被放置的位置。在完成任務22時,單元12A通知任務池13將選擇的任務22的狀態從「將被完成」改變為「已完成」。此外,一旦單元12A完成任務22,則單元可將它的代理30A分派到任務池13以搜索另一任務22。
代理30A至30n中的某些代理或全部代理可根據系統10的具體架構和/或實施方案,通過有線或無線(例如,使用Wi-Fi網絡、無線乙太網、無線USB、無線橋、無線中繼器、無線路由器、或藍牙配對)穿過系統10。在實施例中,代理30可通過在任務池13包括接收器特徵並進一步通過包括具有單元12的發送器特徵被無線引導至任務池13。相似地,任務池可通過為任務池配備發送器並且為等同單元配備接收器而對單元進行無線應答。以這種方式,單元可以在使用或不使用切換結構的情況下與任務池無線地通信。
在優選實施例中,然而,利用切換結構14的某一形式。切換結構14有利用數據傳輸的連接以及系統資源之間的仲裁。切換結構14可以是在各種單元與任務池之間提供連接的路由器或縱橫開關。切換結構14還可提供在每個等同單元12A至12n與系統資源(諸如,CPU 11、存儲單元15和傳統系統組件,包括但不限於,直接存儲器訪問單元、發送器、硬碟及其控制器、顯示器和其它輸入/輸出設備以及其它協同處理器)之間的連接。單元12A至12n可被物理地連接到切換結構14,或者單元可被無線連接。
單元無線連接至系統10有利於在系統10中使用的單元的動態增加和/或移除。例如,CPU 11可以從其他單元系統招募單元,允許動態擴展和提高性能。以這種方式,兩個或更多個單元系統(例如,網絡)可以共享等同單元。在一個實施例中,變得空閒的單元可以尋找和/或由需要附加處理資源的另一系統招募,即,其具有需要完成的可用處理任務。相似地,系統10可通過併入用於具體任務的額外單元的群集來擴展性能。例如,系統10可通過併入能夠執行這些任務的附近單元來增強加密功能/解密功能的性能,或對音頻數據和/或視頻數據的處理。
為了防止不期望的連接,CPU 11可以向任務池13提供用於標識可信和/或不可信單元以及認證要求或協議的列表或者備選地,用於標識可信和/或不可信單元的標準。此外,任務池本身可基於低性能、不可靠連接、差的數據吞吐量或惡意或不正當行為來排除具體單元。在各種實施例中,單元12可由用戶通過智慧型手機、平板電腦或其它設備或應用的使用,而被添加到任務池13或者從任務池13排除。在一個實施例中,圖形應用接口可向用戶提供有用的靜態和/或圖標信息,諸如,可用單元和其它設備的位置、性能增益或性能代償,作為增加具體單元或從網絡移除具體單元的結果。
在可選實施例中,協同處理單元中的某些單元或全部單元可諸如通過不需要用於通信的切換結構14的有線配置直接連接到任務池13。單元的有線連接還可促進類似於上述無線配置的系統10的動態擴展和收縮,儘管有線連接可以是物理(例如,手動)集成和外圍設備的提取。在任一情況下,與常規並行處理方案相比,系統的可擴展性大大增強,因為可以添加和移除協同處理器而不對CPU 11進行重新編程以考慮對系統10的改變。
現在參照圖3,網絡300包括CPU 302、第一存儲器304、第二存儲器306、任務池308、切換結構310、被配置為執行(運行)類型A任務的第一協同處理單元312、被配置為執行類型B任務的第二單元314、被配置為執行類型C任務的第三單元316,以及被配置為執行類型A任務和類型B任務兩者的第四單元318。如上所述,任務池308被任務類型A的任務(或任務線程)330和332;任務類型B的任務334和336以及任務類型C的任務340和342而填入(例如,由CPU 302)。在實施例中,每個單元優選地具有唯一專用的代理。具體來說,單元312包括代理320;單元314包括代理322;單元316包括代理324;單元318包括代理326。每個代理優選地包括信息欄位或識別任務的類型的頭部,該任務為與其相關聯的單元被配置執行的任務,例如,單個任務或任務A、B、C的組合。
在操作期間,當單元是空閒的或者以其它方式具有可用處理能力時,它的代理主動詢問任務池以確定任何任務是否在任務隊列中適合於該具體單元。例如,單元312可分派其代理320以檢索與任務類型A對應的任務330和332中的一個或兩個。相似地,單元314可分派其代理322以檢索與任務類型B對應的任務334或336(根據它們對應的優先級)等。針對能夠執行超過一個任務類型的單元,諸如單元318被配置為執行任務類型A和B、代理326可檢索任務330、332、334和/或336中的任意一個。
在從任務池檢索到任務時,單元可隨後處理該任務,通常通過從第一存儲器304中的具體位置檢索數據、處理該數據並將處理後的數據存儲在第二存儲器306內的具體位置上。當任務被完成時,單元通知任務池,任務池將該任務標記為已完成,任務池通知CPU該任務已完成。可選地,任務池當任務線程已完成可通知CPU,因為任務線程可包括單個任務、任務串或任務的布爾組合。重要的是,在沒有CPU和各個單元之間的直接通信的情況下,可能發生單元對任務的檢索和對數據的處理。
現在參照圖4,物聯網網絡400包括控制器(CPU)402、任務池408和各種設備410至422,其中,所述設備中的某些或全部包括相關聯或嵌入的微控制器,諸如,集成電路(IC)晶片或實現處理能力的其它組件。作為非限制示例,該設備可包括燈泡410、恆溫器412、電插座414、電源開關416、器具(例如,烤麵包機)418、車輛420、鍵盤422以及能夠與網絡交互的實際上任何其它即插即用設備或應用。
在示出的實施例中,控制器402可以是智慧型電話、平板電腦、膝上型筆記本、或可包括顯示器404和用戶接口(例如,鍵盤)406以方便用戶與網絡中的各種設備進行用戶交互的其它設備。在控制器402的處理能力(例如,帶寬)可能不足以充分支持網絡的程度上,控制器可以經由任務池有效地從外圍設備獲取或招募處理資源,例如如下面結合圖5進行解釋。
現在參照圖5,物聯網網絡500使用案例示出附近(或其它方式可用)設備的動態利用。網絡500包括主控制單元502(例如,膝上型筆記本、平板電腦或遊戲設備)、任務池504、第一協同處理器設備506和第二協同處理器設備508。現在將描述在網絡500的背景下的示例性使用案例。
假設用戶在她的膝上型計算機502上正播放視頻遊戲。視頻遊戲需要詳細的計算機生成圖像,並且可能膝上型計算機502中的處理能力足以呈現單個真實外觀角色,但是當第二角色被引入到屏幕上時,圖像質量劣化,並且角色的移動不再連續。本發明提出一種利用位於用戶附近或用戶可用的未充分利用的計算機資源的處理能力的方法。
為了解決附加處理能力的需求,膝上型計算機502連接到任務池504。在這一方面,膝上型計算機本身可配備有任務池,或者任務池可以以外部設備或應用位於從膝上型計算機502無線到達的範圍內。在外部任務池的情況下,任務池本身可以執行具有埠的切換結構的職責,以允許連接到多個協同處理單元。膝上型計算機502利用計算密集型任務來填充任務池504。附近未充分利用的設備(諸如,智慧型電話508)隨後連接至任務池504,並發送其代理以提取匹配的任務類型。因此,智慧型電話508變成無縫協助膝上型計算機502的協同處理器,從而增強視頻遊戲體驗。在存在其它未充分利用的處理資源並且需要的情況下,可重複相同的方法。實際上,即使可用燈泡506的處理能力也可以成為膝上型計算機的協同處理器。
圖6是示出示例性並行計算環境的操作的流程圖。具體來說,方法600包括:使用任務填入任務池(步驟602);將一個或多個代理從一個或多個相應單元主動分派到任務池(步驟604);檢索並處理任務(步驟606);通知任務池和CPU任務線程已被執行(步驟608)。所述方法還包括根據需要將附加設備動態地併入網絡(步驟610)。
因此,提供了一種處理系統,所述處理系統包括任務池;控制器,被配置為利用第一任務填充任務池;以及第一協同處理器,被配置為從任務池主動檢索第一任務。
在實施例中,第一協同處理器包括第一代理,被配置為在不需要與控制器進行通信的情況下從任務池檢索第一任務。
在實施例中,第一任務包括第一任務類型的標記,第一協同處理器被配置為執行第一類型的任務,第一代理被配置為在任務池中搜索第一類型的任務。
在實施例中,第一協同處理器還被配置為處理第一任務並在完成第一任務時通知任務池,任務池被配置為在完成第一任務時通知控制器。
在實施例中,控制器和第一協同處理器被配置為僅通過任務池彼此之間進行通信。
在實施例中,控制器和第一協同處理器被配置為直接地和通過任務池彼此進行通信。
在實施例中,第一協同處理器被配置為確定其具有可用的處理能力並響應於所述確定將代理分配到任務池。
在實施例中,控制器還被配置為利用第二任務填入任務池,其中,所述系統還包括第二協同處理器,該第二協同處理器具有被配置為從任務池主動檢索第二任務的第二代理。
在實施例中,第二任務包括第二任務類型的標記,第二協同處理器被配置為執行第二類型的任務,第二代理被配置為在任務池中搜索第二類型的任務。
在實施例中,控制器和任務池常駐在單片集成電路(IC)上,第一協同處理器未常駐在IC上。
在另一實施例中,控制器、任務池以及第一協同處理器和第二協同處理器常駐在單片集成電路(IC)上。
此外,提供一種動態控制在包括中央處理單元(CPU)的類型的網絡中的處理資源的方法,該CPU被配置為利用具有第一任務類型的第一任務填入任務池。所述方法包括以下步驟:對第一單元進行編程以執行第一任務類型;將編程後的第一單元添加到網絡;將第一代理主動從第一單元發送到任務池;第一代理在任務池中搜索第一類型的任務;第一代理從任務池檢索第一任務;第一代理將第一任務傳輸到第一單元;第一單元處理第一任務;將第一任務任務已完成的通知從第一單元發送到任務池。
在實施例中,所述方法還包括:任務池將第一任務標記為已完成;將第一任務已完成的通知從任務池發送到CPU。
在實施例中,所述方法還包括:配置第一單元以確定第一單元具有可用處理能力作為依據(predicate)以將第一代理主動發送到任務池。
在實施例中,所述方法還包括:在將編程後的第一單元添加到網絡之前將第一單元集成到第一設備。
在實施例中,第一設備包括傳感器、燈泡、電源開關、器具、生物識別設備、醫療設備、診斷設備、膝上型筆記本、平板電腦、智慧型電話、電機控制器和安全設備中的一個。
在實施例中,將編程的第一單元添加到網絡包括在第一單元與任務池之間建立通信連結。
在實施例中,CPU還被配置為利用具有第二任務類型的第二任務填入任務池,所述方法還包括以下步驟:對第二單元進行編程以執行第二任務類型;在第二單元與任務池之間建立通信連結;將第二代理從第二單元主動發送到所述任務池;第二代理在任務池中搜索第二類型的任務;第二代理從任務池檢索第二任務;第二代理將第二任務發送到第二單元;第二單元處理第二任務;將第二任務已完成的通知從第二單元發送到任務池;任務池將第二任務標記為已完成;以及將第二任務已完成的通知從任務池發送到CPU。
還提供了一種用於控制物聯網(IoT)計算環境下的分布式處理資源的系統,所述系統包括:CPU,被配置為將集群計算需求劃分為多個任務並將任務放置在池中;以及多個設備,每個設備具有唯一專用代理,被配置為在不需要與CPU直接通信的情況下從所述池主動檢索任務。
儘管已經示出了對包括發明人已知的最佳模式的各種實施例的使能描述,但是本領域技術人員將理解,在不脫離本發明的範圍的情況下,可以進行各種改變和修改,並且等同物可以替代各種元件。因此,意圖是,這裡公開的本發明不限於所公開的具體實施例,而是本發明將包括落入權利要求的文字和等同範圍內的所有實施例。