TW202334814A - 分佈式加速器 - Google Patents

分佈式加速器 Download PDF

Info

Publication number
TW202334814A
TW202334814A TW111149375A TW111149375A TW202334814A TW 202334814 A TW202334814 A TW 202334814A TW 111149375 A TW111149375 A TW 111149375A TW 111149375 A TW111149375 A TW 111149375A TW 202334814 A TW202334814 A TW 202334814A
Authority
TW
Taiwan
Prior art keywords
slice
accelerator
coordinator
subtask
command
Prior art date
Application number
TW111149375A
Other languages
English (en)
Inventor
嘉甘 古普塔
安德魯喬瑟夫 茹絲
艾瑞克法蘭西斯 羅賓森
Original Assignee
美商微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商微軟技術授權有限責任公司 filed Critical 美商微軟技術授權有限責任公司
Publication of TW202334814A publication Critical patent/TW202334814A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

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

Abstract

描述了協調分佈式加速器的系統、方法和裝置。接收到包括用於執行任務的指令的命令。決定任務的一個或多個子任務來產生一組子任務。對於該組子任務中的每個子任務,分配分佈式加速器的複數個加速器切片中的加速器切片,及決定用於執行該子任務的子任務指令。將子任務指令發送到針對每個子任務的經分配的加速器切片。每個經分配的加速器切片經配置為產生相應的回應,該相應的回應指示經分配的加速器切片已完成相應的子任務。在進一步的示例性的態樣中,從每個經分配的加速器切片接收相應的回應並產生經協調的回應,該經協調的回應指示該相應的回應。

Description

分佈式加速器
本申請案涉及分佈式加速器。
電腦架構師藉由引入專門用於執行特定應用程式任務的硬體來實現加速器以提高性能。程式向加速器提交要加速的任務。加速器計算並回傳結果供程式使用。取決於特定的實施方式,程式、加速器和關聯系統之間的通訊可能會產生開銷。例如,任務卸載、完成通知、計算延遲和佇列延遲可能會降低已實現的性能提升。在某些情況下,加速器的性能會因通訊開銷而降低。例如,若任務具有小的計算粒度,則由於卸載任務所用的時間及/或佇列延遲,使用加速器的好處可能會被抵消。多個小計算粒度任務可在處理器核心中產生大量訊務,這可能會污染快取並產生一致性訊務。
提供[發明內容]以用簡化形式介紹一系列概念;將在下文的[實施方式]中進一步描述這些概念。本[發明內容]不旨在識別要求保護的標的之關鍵特徵或必要特徵,也不旨在用於限制要求保護的標的之範圍。
本文描述用於分佈式加速器的系統、方法和設備。分佈式加速器包括複數個加速器切片,該複數個加速器切片包括協調器切片和一個或多個從屬切片。接收到命令,該命令包括用於執行任務的指令。決定任務的多個子任務來產生一組子任務。對於該組子任務中的每個子任務,分配分佈式加速器的複數個加速器切片中的加速器切片,及決定用於執行該子任務的子任務指令。將子任務指令發送到針對每個子任務的經分配的加速器切片。每個經分配的加速器切片經配置為產生相應的回應,該相應的回應指示經分配的加速器切片已完成相應的子任務。
在進一步的示例性的態樣中,從每個經分配的加速器切片接收回應並產生經協調的回應,該經協調的回應指示該等回應。
下文參照附加圖式來詳細描述實施例的進一步特徵和優勢,以及各種實施例的結構和操作。應注意,要求保護的標的不限於本文所描述的具體示例。此類實施例僅出於說明目的而在本文中呈現。基於本文所包含的教示,附加的實施例對於(多個)相關技術領域中的通常知識者將是顯而易見的。
一、簡介
下文的[實施方式]揭露許多示例性的實施例。本專利申請案的範疇不限於所揭露的實施例,還包括所揭露的實施例的組合,及對所揭露的實施例的修改。
說明書中對「一個實施例」、「一實施例」、「示例性的實施例」等等的引用指示所描述的實施例可包括特定的特徵、結構或特性,但每個實施例可能不一定包括特定的特徵、結構或特性。此外,這樣的短語不一定指代相同的實施例。此外,當結合實施例來描述特定特徵、結構或特性時,據認為結合其他實施例影響此類特徵、結構或特性在所屬技術領域中具有通常知識者的知識範圍內,無論有明確描述或沒有明確描述。
在討論中,除非另有說明,如「基本上」和「大約」的形容詞(其修飾本申請案的實施例的一個或多個特徵的條件或關係特性)被理解為意指條件或特性被定義在針對預期應用的實施例的操作可接受的公差範圍內。
若操作的性能在本文中被描述為「基於」一個或多個因素,則應當理解,操作的性能可僅基於這樣的(多個)因素或可基於這樣的(多個)因素連同一個或多個附加因素。因此,如本文所使用地,術語「基於」應理解為等同於術語「至少基於」。
本文所描述的示例性的實施例是為了說明目的而提供,而非限制性的。本文所描述的示例可經調適成用於任何類型的用於安全帳戶登錄和認證的方法或系統。根據本文的教示,包括修改/變更的進一步的結構和操作實施例對於所屬技術領域中具有通常知識者來說將變得顯而易見。
現在描述許多示例性的實施例。本文提供的任何章節/小節標題並非旨在限制。貫穿本文件描述了實施例,且任何類型的實施例可包括在任何章節/小節下。此外,任何章節/小節中所揭露的實施例可用任何方式與在相同章節/小節及/或不同章節/小節中描述的任何其他實施例組合。 二、示例性的分佈式加速器實施例
硬體加速器(「加速器」)是與處理器(例如,中央處理單元(CPU))分開的硬體單元,其經配置為在程式請求時執行由處理器執行的電腦程式的功能,並可選地與處理器中執行的程式的操作平行。電腦架構師藉由引入此類專門用於執行特定應用程式任務的硬體來實現加速器以提高性能。處理器所執行的程式向加速器提交需要加速的任務。加速器計算並回傳結果供程式使用。加速器包括功能特定的硬體,可在提高能源效率的同時實現更快的計算速度。
程式可同步或非同步地與加速器接合。在同步操作中,程式在前進之前等待加速器回傳結果。在非同步操作中,程式可在將功能提交給加速器之後執行其他任務。 在這種情況下,為了通知完成,加速器可中斷程式或程式可輪詢加速器。在一些實施例中,可使用非同步操作和同步操作兩者。
取決於特定的實施方式,程式、加速器和關聯系統之間的通訊可能會產生開銷。例如,任務卸載、完成通知、計算延遲和佇列延遲可能會降低或抵消已實現的性能提升。在某些情況下,加速器的經提升的性能會因通訊開銷而降低。例如,若任務具有小的計算粒度,則由於卸載任務所用的時間及/或佇列延遲,使用加速器的好處可能會被抵消。然而,多個小計算粒度任務可在處理器核心中產生大量訊務,這可能會污染快取並產生一致性訊務。
本申請案的實施例提出一種分佈式加速器。分佈式加速器可實現更高的平行度和增加的資料存取頻寬。分佈式加速器包括計算系統中的複數個單獨的加速器切片,每個加速器切片可對電腦程式的一部分任務執行硬體加速。根據實施例,每個加速器切片具有獨立的介面。不同的加速器切片可實施相似或不同的功能。
加速器切片可用各種方式分佈在計算系統中。例如,取決於特定的實施方式,加速器可作為指令集架構(ISA)中的專用指令及/或諸如此類而經整合為網路連接裝置、片外輸入/輸出 (IO)裝置或片上IO裝置、片上處理元件。在一些實施例中,可用不同方式整合分佈式加速器的加速器切片。例如,根據實施例,分佈式加速器包括經整合在對應的片上IO裝置和片上處理元件中的加速器切片。可基於計算與通訊的比率、共享使用者的數量、成本、程式內的使用頻率、複雜性、計算的特性及/或受益於本申請案的(多個)相關技術領域中具有通常知識者理解的其他因素來決定特定配置。例如,作為ISA擴展所實施的加速器切片可利用如可用的記憶體頻寬的CPU資源。在另一個示例中,可在更多使用者之間共享經實現為片外裝置的加速器切片。根據實施例,分佈式加速器可基於經分配的任務和加速器整合類型來動態地選擇加速器切片。
分佈式加速器可經配置為在各種大小的記憶體區域中操作。例如,根據實施方式的分佈式加速器可在大記憶體區域中運行。在這種情況下,記憶體區域被分成多個分頁大小的區塊,其與分頁邊界對齊。取決於特定的實施方式,分佈式加速器或處理器核心可決定分頁大小及/或邊界。
分佈式加速器的實施例經配置為加速電腦處理系統的功能。例如,分佈式加速器可經配置為處理資料指令(例如,資料移動指令、加密指令、同步指令和CRC指令等)並加速電腦處理系統的功能。例如,示例性的實施方式中的資料移動功能可通過分佈式加速器以兩倍於電腦處理系統的處理器核心的頻寬(或甚至更大的頻寬,這取決於特定的實施方式)來加速。分佈式加速器將資料移動功能分佈在整個電腦處理系統中。例如,經耦合到電腦處理系統互連、在電腦處理系統的組件內(例如,快取控制器)及/或經耦合到電腦處理系統的IO裝置的加速器切片可用於跨系統資源來分佈訊務,這提高了資料移動速度。
分佈式加速器可用於各種應用。例如,在包括活動虛擬機器的系統中,跨越多個使用者共享根據實施例的分佈式加速器。每個虛擬機器皆包含多個活動容器。在這種情況下,數十、數百、數千甚至更多數量的使用者可調用分佈式加速器。分佈式加速器經配置為實現使用者之間的共享。
可用各種方式配置分佈式加速器。例如,圖1是根據示例實施例的包括分佈式加速器的處理系統100的方框圖。如圖1所示,處理系統包括處理器核心102和分佈式加速器104。處理器核心102和分佈式加速器104可藉由通訊鏈路106相互通訊耦合或鏈接。通訊鏈路106可包括一個或多個物理(例如,電線、電纜、導電跡線和系統匯流排等等)及/或無線(例如射頻和紅外線等等)通訊連接,或上述通訊連接的任何組合。例如,在電腦系統實施例中,通訊鏈路106可以是將處理器核心102和分佈式加速器104通訊耦合的物理互連。
處理器核心102經配置為執行程式、向分佈式加速器104發送命令、從分佈式加速器104接收回應,及執行與處理系統100相關聯的其他任務。例如,處理器核心102通過通訊鏈路106向分佈式加速器104發送命令114。命令114包括用於執行任務的指令。分佈式加速器104根據指令執行任務並產生經發送到處理器核心102的回應118。處理器核心102通過通訊鏈路106從分佈式加速器104接收回應118。
命令114可以是包括一個或多個要完成的處理、源位址、目的地位址及/或與任務相關聯的其他資訊的訊息。根據實施例,處理器核心102將命令存儲在處理系統100的記憶體(例如,記憶體裝置、暫存器及/或諸如此類)中,並通知分佈式加速器104命令的位置。根據實施例,處理器核心102回應於執行指令而產生命令114。命令114可以是包括多個子任務的複雜命令。命令114可使用命令識別符(CID)與程式一起被識別。CID可包括與處理器核心102相關聯的編號、程式識別符(例如,位址空間識別符(ASID))及/或與命令114相關聯的其他識別資訊。
分佈式加速器104經配置為從處理器核心102接收命令、執行任務並產生回應。取決於特定的實施方式,可通過作業系統(OS)發現和配置分佈式加速器104,且分佈式加速器104可在使用者模式下運行。分佈式加速器104包括複數個加速器切片108。加速器切片108中的每個加速器切片包括用於存取資料的獨立介面。取決於特定的實施方式,加速器切片108可實現相似或不同的功能。如圖1所示,加速器切片108包括協調器切片110和複數個從屬切片112A-112N。
協調器切片110經配置為從處理器核心102接收命令、將任務劃分為子任務,並將子任務分配給加速器切片108的加速器切片。例如,協調器切片110從處理器核心102接收命令114、協調器切片110經配置為將命令114解碼成用於執行任務的指令,且協調器切片110決定任務是否要由協調器切片110、從屬切片112A-112N中的一者或多者、或協調器切片110和一個或多個從屬切片112A-112N的組合來完成。例如,根據實施例,協調器切片110將與命令114相關聯的任務劃分為一組子任務,並將加速器切片108中的一個加速器切片分配給每個子任務。如受益於本申請案的(多個)相關領域的通常知識者所理解地,子任務可基於子任務的類型、子任務操作的位址範圍或其他標準分佈在加速器切片108上。根據實施例,每個經分配的加速器切片可將關於其相應子任務的執行的結果直接發送到處理器核心102(例如,作為回應118)。根據另一個實施例,協調器切片110從每個經分配的加速器切片接收回應,並產生經協調的回應。在此情況中,協調器切片110將經產生的經協調的回應作為回應118發送到處理器102。
加速器切片108可經配置為以各種方式相互通訊。例如,加速器切片108可通過分佈式加速器暫存器、系統記憶體、系統互連及/或本文描述的或受益於本申請案的(多個)相關領域的通常知識者以其他方式理解的其他通訊方法進行通訊。加速器切片108可以是快取一致的,這減少了一致性訊務。
如圖1所示的分佈式加速器104包括單個協調器切片;然而,本文設想分佈式加速器可包括多個協調器切片。此外,本文設想協調器切片(如協調器切片110)可作為另一協調器切片的從屬切片來操作,這取決於特定的實施方式。例如,將根據實施例的加速器切片指定為用於資料移動功能的協調器切片;然而,可將加速器切片指定為用於加密和資料移動功能的從屬切片。此外,取決於其他因素,可將加速器切片指定為協調器切片;其他因素如與接收到的命令相關聯的記憶體位址、加速器切片的可用性、頻寬可用性及/或諸如此類。
處理器核心102可與分佈式加速器104同步或非同步操作。在同步操作中,處理器核心102等待分佈式加速器104提供回應118,指示任務完成。在非同步操作中,處理器核心102可在發送命令114之後,在分佈式加速器104執行命令114的同時來執行其他任務。
在非同步操作中,取決於具體的實施方式,處理器核心102可用多種方式接收回應118。在第一示例性的實施例中,處理器核心102將輪詢信號116發送到分佈式加速器104,以檢查分佈式加速器104是否已完成任務。若分佈式加速器104已完成任務,則分佈式加速器104回應於輪詢信號116來將回應118發送到處理器核心102。在這種情況下,處理器核心102可作為處理系統100的另一操作的一部分來週期性地發送輪詢信號116,或處理器核心102可在與處理系統100相關聯的使用者的指示下來週期性地發送輪詢信號116。在第二示例性的實施例中,分佈式加速器104將中斷信號120發送到處理器核心102,以中斷處理器核心102的當前操作。在處理器核心102確認中斷之後,分佈式加速器104發送回應118。
可用各種方式配置包括分佈式加速器的處理系統。例如,圖2是根據示例性的實施例的包括分佈式加速器210的處理系統200的方框圖。處理系統200是圖1的處理系統100的進一步實施例。處理系統200包括處理器核心202A-202N、快取控制器204A-204N、記憶體控制器206A-206N、IO控制器208A-208N和分佈式加速器210。處理器核心202A-202N、快取控制器204A-204N、記憶體控制器206A-206N、IO控制器208A-208N和分佈式加速器210可藉由互連224相互通訊耦合(例如,鏈接)。互連224是電腦系統匯流排或其他形式的經配置為通訊耦合處理系統200的組件的互連。互連224可以是圖1的通訊鏈路106的進一步實施例。
處理器核心202A-202N是圖1的處理器核心102的進一步實施例。此外,為了說明圖2的目的,每一個處理器核心皆可經配置為與上文的處理器核心102相同或基本相同。即,處理器核心202A-202N各自經配置為通過互連224向分佈式加速器210發送命令並從分佈式加速器210接收回應。
快取控制器204A-204N經配置為存儲和存取頻繁存取的資料的副本。快取控制器204A-204N包括各自的一致性引擎220A-220N和各自的快取222A-222N。快取222A-222N存儲由各自的快取控制器204A-204N所管理的資料。一致性引擎220A-220N經配置為維護各個快取222A-222N的資料一致性。
記憶體控制器206A-206N經配置為管理經存儲在處理系統200的記憶體裝置中的資料(為了簡潔和清楚說明,圖1中未示出)。記憶體控制器206A-206N可以是整合記憶體控制器、片上記憶體控制器或經整合在耦合到處理系統200的另一個晶片上的外部記憶體控制器(例如,經整合在外部記憶體裝置中的記憶體控制器)。
IO控制器208A-208N經配置為管理處理器核心202A-202N與周邊裝置(例如,USB (通用串行匯流排)裝置、SATA (串行ATA)設備、乙太網路裝置、音頻裝置、HDMI (高畫質媒體界面)裝置、磁碟驅動器等)之間的通訊。
分佈式加速器210是圖1的分佈式加速器104的進一步實施例。此外,為了說明圖2的目的,分佈式加速器210經配置為與上文的分佈式加速器104相同或基本相同。也就是說,分佈式加速器210經配置為接收命令、執行任務,並產生回應。例如,分佈式加速器可經由互連224從處理器核心202A-202N中的一者或多者接收命令。如圖2所示,分佈式加速器210包括協調器切片212、從屬切片214A-214N、從屬切片216A-216N和從屬切片218A-218N。
協調器切片212是圖1的協調器切片110的進一步實施例。協調器切片212經配置為從處理器核心202A-202N接收命令並在其自身、從屬切片214A-214N、從屬切片216A-216N和從屬切片218A-218N之間分配子任務。如圖2所示,協調器切片212經耦合到互連224;然而,本文設想協調器切片212可經耦合到IO控制器208A-208N中之一者(例如,作為片外加速器切片)或經整合在處理系統200的組件內(例如,快取控制器204A-204N、記憶體控制器206A-206N或處理系統200的另一組件中之一者)。
從屬切片214A-214N、從屬切片216A-216N和從屬切片218A-218N是圖1的從屬切片112A-112N的進一步實施例。從屬切片214A-214N是經配置成作為處理系統200的組件的從屬加速器切片。從屬切片214A-214N、協調器切片212和處理器核心202A-202N之間的通訊開銷利用對互連224的頻寬的直接存取。在此情況中,「直接存取」係指示在沒有IO(輸入-輸出)控制器(例如,IO控制器208A-208N)的情況下,從屬切片經耦合到互連224。在此情況中,從屬切片214A-214N包括經耦合到互連224的介面。取決於實施方式,互連224的頻寬可大於IO擴展裝置或處理器核心202A-202N。
從屬切片216A-216N是從屬加速器切片,其經配置為經耦合到IO控制器208A的片外加速器切片。從屬切片216A-216N可以是可擴展的加速器切片。例如,片外加速器切片可經由如圖2中的IO控制器208A的IO控制器耦合到互連224。雖然圖2示出耦合到IO控制器208A的從屬切片216A-216N,但取決於具體的實施方式,從屬切片可耦合到任何數量的IO控制器。
從屬切片218A-218N是經配置為相應的快取控制器204A-204N的組件的從屬加速器切片。在此情況中,從屬切片218A-218N中的每一者可利用各自的一致性引擎220A-220N和各自的快取222A-222N。例如,如下文關於圖12和圖13進一步描述地,從屬切片218A-218N可使用一致性引擎220A-220N來實現資料移動功能。雖然如圖2所示地從屬切片218A-218N經整合在快取控制器204A-204N中,但本文設想分佈式加速器210的從屬切片可經整合在處理系統200的其他組件中,如記憶體控制器206A-206N。例如,經整合在記憶體控制器206A中的從屬切片可直接存取與記憶體控制器206A相關聯的記憶體。此外,協調器切片212可取決從處理器核心202A接收到的命令,來協調經整合在不同控制器內的從屬切片。
分佈式加速器210利用協調器切片212、從屬切片214A-214N、從屬切片216A-216N和從屬切片218A-218N來執行與從處理器核心202A-202N接收到的命令相關聯的任務。跨越多個加速器切片分配任務利用多個附加點的空間平行性來減少熱點。
分佈式加速器104經描繪為具有單個協調器切片212;然而,本文預期可使用多個協調器切片。例如,取決於具體的實施方式,從屬切片214A-214N、從屬切片216A-216N及/或從屬切片218A-218N中的任何一者可被替換為協調器切片或經配置為協調器切片。根據實施例,處理系統可具有與處理系統中的快取控制器和記憶體控制器的數量相等的加速器切片的數量。
分佈式加速器210可用各種方式向處理器核心202A-202N提供回應。例如,由協調器切片212分配的每個加速器切片可向發出命令的處理器核心發送回應。在另一個示例性的實施例中,協調器切片212從經分配的加速器切片接收每個回應,並產生經協調的回應來作為接收到的回應的集合。在此情況中,協調器切片212將經協調的回應發送到發出命令的處理器核心。在另一個示例性的實施例中,分佈式加速器210可將回應存儲在快取(例如,快取222A-222N中的一者或多者)或記憶體(例如,與記憶體控制器206A-206N中的一者或多者相關聯的記憶體)中。在此情況下,分佈式加速器210或相關聯的控制器可(例如,通過中斷)警告發出命令的處理器核心,或處理器可輪詢快取控制器或記憶體控制器以獲得回應。
根據實施例,處理系統200可包括額外的組件(為了簡潔和清楚說明而未在圖2中示出);額外的組件包括但不限於本文的其他裝置及/或系統的組件和子組件,及關於圖3A-圖3B、圖5、圖7、圖9、圖11至圖12、圖14至圖15及/或圖17所描述的組件和子組件,其包括如作業系統(OS)的軟體。
可用各種方式配置分佈式加速器。例如,圖3A是根據示例性的實施例的包括處理器核心102和分佈式加速器300的處理系統380的方框圖。分佈式加速器300是圖1的分佈式加速器304的進一步實施例。分佈式加速器300包括協調器切片304和從屬切片306A-306N。
協調器切片304是圖1的協調器切片110的進一步實施例。協調器切片包括介面308、切片控制器310、命令管理器312、切片協調器314、回應及通訊暫存器316、執行引擎318和資料緩衝器320。介面308可包括任何類型或數量的有線及/或無線通訊或網路適配器和調製解調器等等,其經配置為使協調器切片304能夠通過通訊網路(如圖2的互連224)與其組件以及處理器102和從屬切片306A-306N進行系統內通訊。例如,介面308從處理器核心102接收包括用於執行任務的指令的命令360,並向處理器核心102提供回應366。介面308可包括用於接收和發送控制和狀態信號的暫存器。
回應及通訊暫存器316可以是本文描述的及/或受益於本申請案的(多個)相關領域的通常知識者將理解的任何類型的暫存器。回應及通訊暫存器316可包括用於與處理器核心102及/或從屬切片306A-306N通訊的一個或多個暫存器。例如,回應及通訊暫存器316可用於將訊息發送到從屬切片306A-306N和從下屬切片306A-306N發送消息。可通過回應及通訊暫存器316將協調器切片104完成任務的結果發送到處理器102。回應及通訊暫存器316通過回應匯流排342而通訊耦合到介面308。
資料緩衝器320可以是本文描述的及/或受益於本申請案的(多個)相關領域的通常知識者將理解的任何類型的資料緩衝器。資料緩衝器320可用於存儲要由協調器切片304處理或已由協調器切片304處理的資料。資料緩衝器320經由資料匯流排356從介面308接收要處理的資料。介面308通過資料匯流排356從資料緩衝器308接收由協調器切片304處理的資料。
切片控制器310經配置為管理協調器切片304及其組件。例如,切片控制器310從處理器核心102接收控制信號,並通過控制和狀態匯流排338向處理器核心102提供狀態更新。切片控制器310經進一步配置為通過配置和狀態匯流排346來配置協調器切片304的組件。切片控制器310包括狀態管理器322、中止任務管理器324和經協調的回應產生器326。狀態管理器322經配置為通過配置和狀態匯流排346監視協調器切片304和從屬切片306A-306N的操作狀態。狀態管理器322可(例如,經由切片協調器314)針對子任務或任務狀態來輪詢經分配的加速器切片、可(例如,經由配置和狀態匯流排346)來檢測加速器切片操作中的錯誤或例外,及/或以其他方式監視協調器切片304和從屬切片306A-306N的操作狀態,如本文別處所述。
中止任務管理器324經配置為中止由協調器切片304所管理的任務或子任務。例如,中止任務管理器324可經配置為回應於來自處理器102的中止命令而中止任務或子任務、由於錯誤或例外而中止任務或子任務,及/或以其他方式中止由協調器切片304所管理的任務或子任務,如本文別處所述。
經協調的回應產生器326經配置為產生經協調的回應以發送到處理器核心102。例如,協調器切片304從每個經分配的加速器切片接收相應的回應;相應的回應指示經分配的加速器切片已完成相應的子任務。經協調的回應產生器326產生指示相應的回應的經協調的回應366。根據實施例,通過配置和狀態匯流排346將經協調的回應366發送到執行引擎318,配置和狀態匯流排346通過回應匯流排354將經協調的回應366存儲在回應及通訊暫存器316中。協調器切片304將經協調的回應366發送到處理器核心102。可用各種方式將經協調的回應366發送到處理器核心102或由處理器核心102接收,如本文別處所述。
命令管理器312經配置為管理由協調器切片304接收的命令。例如,協調器切片304從處理器核心102接收命令360。命令管理器312經由命令匯流排340接收命令360。命令管理器312經配置為決定分佈式加速器300是否能夠執行與命令360相關聯的任務並管理由協調器切片304協調的命令。命令管理器312包括完成時間估計器328和命令佇列330。完成時間估計器經配置為估計與命令360相關聯的任務的完成時間。命令管理器312可決定分佈式加速器300是否能夠基於估計的完成時間來執行任務。例如,若完成時間大於閾值,命令管理器312可拒絕命令360。若完成時間低於閾值,命令管理器312將命令360添加到命令佇列330。命令佇列330經配置為存儲等待由協調器切片304處理的命令。排隊的命令可包括如緩衝區大小、命令延遲及/或與排隊的命令相關聯的其他資訊的資訊。命令管理器312經配置為產生指令以執行命令佇列330中的命令。
切片協調器314經配置為協調分佈式加速器300的加速器切片以執行命令佇列330中的命令。例如,切片協調器314經由指令匯流排348接收指令以執行來自命令管理器312的命令,並協調加速器切片以執行命令。切片協調器314包括子任務產生器332、切片分配器334和子指令產生器336。子任務產生器332經配置為從命令管理器312接收命令並決定任務的一個或多個子任務以產生一組子任務。可用各種方式決定子任務。例如,可基於完成任務所需的頻寬、要移動或操縱的資料的大小、要執行的步驟的類型或如本文別處所描述地來劃分任務。
切片分配器334經配置為分配分佈式加速器300的加速器切片以執行子任務。例如,切片分配器334可分配協調器切片304、從屬切片306A-306N中的一者或多者,或協調器切片304與從屬切片306A-306N中的一者或多者的組合。在實施例中,加速器切片可經分配以執行單個子任務或多個子任務。切片分配器334可基於加速器切片的類型、子任務的類型、子任務的延遲、加速器切片的負載或本文別處描述的其他因素來分配加速器切片。
子指令產生器336經配置為針對每個子任務決定用於執行一組子任務中的子任務的子任務指令。將經產生的子指令發送到它們各自的經分配切片。例如,通過引擎指令匯流排350將經分配給協調器切片304的子任務指令發送到執行引擎318,及通過從屬指令匯流排352將經分配給從屬切片306A-306N的子任務指令362A-N發送到回應及通訊暫存器316。
執行引擎318經配置為執行由切片分配器334分配給協調器切片304的子任務。例如,執行引擎318通過引擎指令匯流排350接收經分配的子任務。執行引擎318通過回應匯流排354從其他經分配的切片存取相應的回應364A-N,並通過執行資料匯流排358存取經存儲在資料緩衝器320中的資料。執行引擎318產生指示完成任務的回應。取決於特定的實施方式,可通過配置和狀態匯流排346將產生的回應發送到經協調的回應產生器326,或可通過回應匯流排將產生的回應發送到回應及通訊暫存器316。例如,若協調器切片304正在產生單獨的回應,則執行引擎318可將回應發送到回應及通訊暫存器316以用於存儲和與處理器核心102進行通訊。
從屬切片306A-306N是圖1的從屬切片112A-112N的進一步實施例。此外,為了說明圖3A的目的,從屬切片306A-306N經配置為與上文的從屬切片112A-112N相同或基本相同。從屬切片306A-306N從協調器切片304接收相應的子任務指令362A-362N並提供相應的回應364A-364N,每個回應指示相應的從屬切片已完成相應的子任務。
可用各種方式配置從屬切片。例如,圖3B是圖3A的示例性的處理系統380中所示的從屬切片306A的方框圖。從屬切片306A包括介面368、切片控制器370、命令佇列372、回應及通訊暫存器374、執行引擎376和資料緩衝器378。介面368、切片控制器370、命令佇列372、回應及通訊暫存器374、執行引擎376和資料緩衝器378可經配置成執行相應的功能,該等相應的功能與上文關於圖3A所描述的介面308、切片控制器310、命令佇列330、回應及通訊暫存器316、執行引擎318和協調器切片304的資料緩衝器320的功能相似。
例如,如圖3B中所示,從屬切片306A的介面368從協調器切片304接收子任務指令362A。命令佇列372通過命令匯流排382接收子任務指令362A。當子任務指令362A是命令佇列中的下一個命令時執行引擎376通過指令匯流排388從命令佇列372接收子任務指令362A。執行引擎376可通過回應匯流排390存取來自其他經分配的加速器切片的回應和通訊,並通過執行資料匯流排394存取經存儲在資料緩衝器378中的資料。執行引擎376產生回應364A;回應364A經發送給圖3B的協調器切片304或圖1的處理器核心102,這取決於特定的實施方式。
雖然在圖3B中說明從屬切片306A具有用於執行子任務的組件,但本文設想從屬切片可包括附加的組件;為了簡潔和說明清楚起見,該等附加的組件未在圖3B中示出。例如,從屬切片可包括命令管理器和切片協調器,如圖3B的命令管理器312和切片協調器314。在此情況下,從屬切片可經配置為執行類似於協調器切片304的功能。
注意到在實施例中,如圖3A所示的協調器切片304可用各種方式運作。例如,圖4是根據示例性的實施例的用於在複數個加速器切片之間協調子任務的處理的流程圖400。在實施例中,協調器切片304可經配置為執行流程圖400的一個步驟或所有步驟。下文關於圖1的處理系統100和圖3A的分佈式加速器300來描述流程圖400。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意到並非流程圖400的所有步驟皆需要在所有實施例中執行。
流程圖400開始於步驟402。在步驟402中,接收命令,該命令包括用於執行任務的指令。例如,圖3A的協調器切片304從圖1的處理器核心102接收命令360。命令360包括用於執行任務的指令。協調器切片304可將命令360放置在命令佇列中。例如,協調器切片304的命令管理器312經配置為將命令360放置在命令佇列330中。可基於優先級、完成時間、協調器切片304接收到的時間或本文所描述的其他標準來將命令放置在命令佇列330中。
在步驟404中,決定任務的一個或多個子任務以產生一組子任務。例如,圖3A的子任務產生器332經配置為決定在步驟402中所接收的任務的一個或多個子任務。可用各種方式決定子任務。例如,可基於完成任務所需的頻寬、要移動或操縱的資料的大小、要執行的步驟的類型或如本文別處所描述地來劃分任務。
在步驟406中,對於子任務集合中的每個子任務,分配分佈式加速器的複數個加速器切片中的一個加速器切片來執行子任務。例如,圖3A的切片分配器334經配置為分配分佈式加速器300的加速器切片以執行在步驟404中產生的一組子任務。切片分配器334經配置為分配協調器切片304及/或從屬切片306A-306N中的一者或多者。可基於要執行的子任務的類型、加速器切片的類型、子任務的延遲、加速器切片的負載或本文別處所描述的其他因素來分配加速器切片。在實施例中,切片分配器334可將單個子任務或多個子任務分配給每個經分配的加速器切片。
在步驟408中,對於一組子任務中的每個子任務,決定用於執行子任務的子任務指令。例如,圖3A的子指令產生器336經配置成為子任務產生器332在步驟404中所產生的一組子任務集合中的每個子任務產生子任務指令。
在步驟410中,對於一組子任務中的每個子任務,將子任務指令發送到經分配的切片。例如,圖3A的切片協調器314經配置成將在步驟408中由子指令產生器336所產生的子任務指令發送到在步驟406中由切片分配器334所分配的加速器切片。例如,切片協調器314通過引擎指令匯流排350發送用於經分配給協調器切片304的子任務的子任務指令到執行引擎318,並通過從屬指令匯流排352將經分配給從屬切片306A-306N的子任務的子任務指令發送到回應及通訊暫存器316。對於經由介面308 分配給從屬切片306A-306N的子任務,協調器切片304經配置為發送子任務指令。
在步驟412中,從每個經分配的加速器切片接收相應的回應。每個相應的回應指示經分配的加速器切片已完成相應的子任務。例如,圖3A的協調器切片304的經協調的回應產生器326經由配置和狀態匯流排346從每個經分配的加速器切片接收相應的回應。例如,若在步驟406中協調器切片304經分配給子任務,則來自協調器切片304的相應的回應由執行引擎318產生,且此相應的回應通過配置和狀態匯流排346被發送到經協調的回應產生器 326。若在步驟406中,將一個或多個從屬切片306A-306N分配給子任務,則相應的回應 364A-N由介面308 接收並經存儲在回應及通訊暫存器316中。執行引擎318通過回應匯流排354接收經存儲的相應的回應364A-N,並通過配置和狀態匯流排346將相應的回應364A-N發送到經協調的回應產生器326。
在步驟414中,產生指示相應的回應的經協調的回應。例如,經協調的回應產生器326經配置為產生經協調的回應366;經協調的回應366指示在步驟412中接收到的相應的回應。可將經協調的回應366存儲在回應及通訊暫存器316中。在實施例中,可用如本文別處所述的各種方式將經協調的回應366發送到處理器核心102。
在實施例中,圖3A的分佈式加速器300可用各種方式運作。例如,分佈式加速器300可產生經協調的狀態更新。例如,圖5是根據示例性的實施例的處理系統550的方框圖;處理系統550包括處理器核心102和經配置為產生經協調的狀態更新的分佈式加速器500。分佈式加速器500是分佈式加速器300的進一步實施例。分佈式加速器500包括協調器切片504和從屬切片506A-506N。協調器切片504是協調器切片304的進一步實施例;此外,如圖5所示,協調器切片504包括介面508、命令管理器510、切片協調器512、狀態管理器514、回應及通訊暫存器516以及經協調的回應產生器518。介面508是介面308的示例、命令管理器510是命令管理器312的示例、切片協調器512是切片協調器314的示例、狀態管理器514是狀態管理器 322的示例、回應及通訊暫存器516是回應及通訊暫存器 316的示例,及經協調的回應產生器518是經協調的回應產生器326的示例。為了說明的目的,參照圖6來描述分佈式加速器500。圖6是根據示例性的實施例的用於產生經協調的狀態更新的處理的流程圖600。在實施例中,協調器切片504可經配置為執行流程圖600的一個步驟或所有步驟。如下描述分佈式加速器500和流程圖600。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意到在一些實施例中,可用不同於圖6所示的順序來執行流程圖600的步驟。此外,並非流程圖600的所有步驟皆需要在所有實施例中執行。
流程圖600開始於步驟602。在步驟602中,接收狀態更新命令,該狀態更新命令包括用於任務進展的請求。例如,協調器切片504的介面508從處理器核心102接收狀態更新命令520。介面508可將狀態更新命令520存儲在暫存器中、將狀態更新命令520轉換成另一種格式,及/或以其他方式處理狀態更新命令520,這取決於特定的實施方式。命令管理器510從介面508接收狀態更新命令520。命令管理器510可用各種方式處理狀態更新命令520。例如,命令管理器510可將狀態更新命令520放置在命令佇列(例如,圖3A的命令佇列330)中、繞過命令佇列,或通知協調器切片504的切片控制器(例如,圖3A的切片控制器310)。
在步驟604中,將狀態更新指令發送到經分配的加速器切片。例如,切片協調器512經配置為基於狀態更新命令520將狀態更新指令發送到經分配的加速器切片。例如,切片協調器512從命令管理器510接收狀態更新命令520。切片協調器512決定與狀態更新命令520相關聯的子任務和經分配給經決定的子任務的加速器切片。若協調器切片504是經分配的加速器切片,則切片協調器512將狀態更新指令524發送到狀態管理器514。若一個或多個從屬切片506A-506N為經分配的加速器切片,則切片協調器512將一個或多個狀態更新指令526A-N存儲在回應及通訊暫存器516中。介面508從回應及通訊暫存器516接收一個或多個狀態更新指令526A-N,並將指令發送到對應的從屬切片506A-506N。
在步驟606中,從每個經分配的加速器切片接收對應的狀態更新回應。每個對應的狀態更新指示經分配的加速器切片執行相應的子任務的進展。例如,經協調的回應產生器518經配置成從每個經分配的加速器切片接收對應的狀態更新。例如,若協調器切片504為經分配的加速器切片,則狀態管理器514接收狀態更新指令524、決定協調器504執行相應子任務的進展,及產生相對應的狀態更新528。若一個或多個從屬切片506A-506N為經分配的加速器切片,則經分配的加速器切片接收相應的狀態更新指令526A-N、決定相應子任務的進展,並產生相對應的狀態更新530A-N。協調器切片504的介面508接收相對應的狀態更新530A-N,並將更新存儲在回應及通訊暫存器516。狀態管理器514從回應及通訊暫存器516接收相對應的狀態更新530A-N。根據實施例,狀態管理器514經配置為評估或以其他方式處理相對應的狀態更新530A-N。例如,狀態管理器514可確認相對應的狀態更新530A-N中的錯誤。經協調的回應產生器518經配置為從狀態管理器514接收相對應的狀態更新528和相對應的狀態更新530A-N。
在步驟608中,產生經協調的狀態更新,該經協調的狀態更新指示一個或多個經接收的狀態更新回應。例如,經協調的回應產生器518經配置成產生經協調的狀態更新532;經協調的狀態更新532指示相對應的狀態更新528和530A-N。根據實施例,經協調的回應產生器518將經協調的狀態更新532存儲在介面508的暫存器(例如,狀態暫存器)中。處理器核心102可從協調器切片504如本文任何地方所描述地非同步地或同步地接收經協調的回應產生器518。
因此,參照圖5和圖6已描述了用於產生經協調的狀態更新的處理。儘管圖5和圖6係圖示回應於狀態更新命令而產生經協調的狀態更新的處理,但本文設想分佈式加速器500可經配置為回應於協調器切片504及/或從屬切片506A-506N的操作條件的變化及/或諸如此類,自動地、週期地產生經協調的狀態更新。經協調的狀態更新可包含未完成子任務的狀態,此允許程式在軟體恢復操作或發出重構命令至分佈式加速器。儘管圖5係圖示協調器切片504協調經分配的加速器切片的狀態更新,但本文設想每個加速器切片可獨立地發送狀態更新至處理器核心102。
在實施例中,圖3A的分佈式加速器300可經配置為中止一個或多個子任務。例如,圖7是根據示例性的實施例的處理系統750的方框圖;處理系統750包括處理器核心102和經配置為中止一個或多個子任務的分佈式加速器700。分佈式加速器700是分佈式加速器300的進一步實施例。分佈式加速器700包括協調器切片704和從屬切片706A—706N。協調器切片704是協調器切片304的進一步實施例;此外,如圖7所示,協調器切片704包括介面708、命令管理器710、中止任務管理器712、切片協調器714、回應及通訊暫存器716、執行引擎718和狀態管理器720。介面708是介面308的示例、命令管理器710是命令管理器312的示例、中止任務管理器712是中止任務管理器324的示例、切片協調器714是切片協調器314的示例、回應及通訊暫存器716是回應及通訊暫存器316的示例、執行引擎718是執行引擎318的示例,及狀態管理器720是狀態管理器322的示例。中止任務管理器712包括中止條件識別符722和中止任務決定器724。為了說明的目的,參照圖8來描述分佈式加速器700。圖8是根據示例性的實施例的用於中止一個或多個子任務的處理的流程圖800。在實施例中,協調器切片704可經配置為執行流程圖800的一個步驟或所有步驟。如下描述分佈式加速器700和流程圖800。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意,在一些實施例中,可用不同於圖8所示的順序來執行流程圖800的步驟。此外,並非流程圖800的所有步驟皆需要在所有實施例中執行。
流程圖800開始於步驟802。在步驟802中,識別中止條件。例如,中止條件識別器722經配置為識別中止條件。中止條件可以是中止命令、分佈式加速器700的操作中的錯誤或用於中止由分佈式加速器700所執行的一個或多個子任務的另一條件。例如,根據實施例,協調器切片704的介面708從圖1的處理器核心102接收中止命令726。介面708可將中止命令726存儲在暫存器中、將中止命令726轉換為另一種格式,及/或以其他方式處理中止命令726,這取決於特定的實施方式。命令管理器710從介面708接收中止命令726。命令管理器710可用各種方式處理中止命令726。例如,命令管理器710可將中止命令726放置在命令佇列(例如,圖3A的命令佇列330)中、繞過命令佇列,或通知協調器切片704的切片控制器(例如,圖3A的切片控制器310)。中止任務管理器712從命令管理器710接收中止命令726。中止條件識別符722經配置為確認中止命令726是中止條件。
根據實施例,中止條件識別器722經配置為藉由識別分佈式加速器700的操作中的錯誤來識別中止條件。可在協調器切片704或一個或多個從屬切片706A—706N中檢測到錯誤。例如,狀態管理器720經配置為通過引擎狀態信號734監視執行引擎718的操作狀態,並通過從屬狀態信號740A—740N監視從屬切片706A—706N。狀態管理器720可產生狀態指示信號738;狀態指示信號738指示執行引擎718及/或從屬切片706A—706N的操作狀態。中止條件識別器722經配置成決定狀態指示信號738是否指示中止條件。例如,中止條件識別符722可決定狀態指示信號738指示執行引擎718、協調器切片704的另一組件、從屬切片706A—706N中的一者或多者、協調器切片704與從屬切片706A—706N之間的通訊的操作失敗及/或諸如此類。
根據實施例,中止條件識別符722可決定例外已發生。例外是加速器切片無法解決的錯誤。例如,例外可能由於加速器切片中的故障、與子任務相關聯的資料中的錯誤、通訊錯誤或執行子任務中的其他錯誤條件而發生。協調器切片704可將導致例外的子任務重新分配給分佈式加速器700的另一個加速器切片,或將例外報告給處理器核心102以供處理。例如,可將分頁錯誤導致的例外報告給處理器核心102以作為常規分頁錯誤來處理。
在步驟804中,一組子任務中的一個或多個子任務被決定為中止。例如,中止任務決定器724經配置為基於在步驟806中所識別的中止條件來決定要中止的一個或多個子任務。中止任務決定器經進一步配置為產生中止設置信號728;中止設置信號728指示一個或多個要中止的子任務。可由CID、經分配的加速器切片、子任務的類型及/或本文所描述的其他標準來識別子任務。例如,中止命令726可包括要中止的命令的CID。在此情況中,中止任務決定器724決定中止與CID相關聯的每個子任務。
在步驟806中,將中止指令發送到與所決定的要中止的一個或多個子任務相關聯的每個經分配的加速器切片。例如,切片協調器714將中止指令發送到與在步驟804中決定的要中止的一個或多個子任務相關聯的每個經分配的加速器切片。例如,切片協調器714從中止任務決定器724接收中止設置信號728。切片協調器714決定哪些加速器切片被分配給要中止的一個或多個子任務。若協調器切片704被分配給要中止的子任務,則切片協調器714將中止指令730發送至執行引擎718。若從屬切片706A—706N中的一者或多者被分配給要中止的子任務,則切片 協調器714將中止指令732A—N存儲在回應及通訊暫存器716中。介面708從回應及通訊暫存器716接收中止指令732A—N,並將中止指令732A—N發送到相應的從屬切片706A—706N。
根據實施例,分佈式加速器700經配置為在已中止一個或多個子任務之後更新處理器核心102。例如,狀態管理器720經配置為通過引擎狀態信號734監視執行引擎718的操作狀態,並通過從屬狀態信號740A—740N監視從屬切片706A—706N。狀態管理器720產生中止完成信號736;中止完成信號736指示在步驟804中所決定的每個子任務已被中止。中止完成信號736可包括如哪些加速器切片被中止、中止子任務的進展、與中止子任務相關聯的資料、在步驟802中所識別的中止條件及/或諸如此類的資料。例如,根據實施例,中止完成信號736包括中止任務及/或子任務的狀態。在此示例中,處理器核心102接收中止完成信號736,並利用中止任務及/或子任務的狀態來除錯及/或恢復中止任務。
在實施例中,圖3A的完成時間估計器328可經配置為以各種方式運作。例如,圖9是對應於圖3A的示例性的分佈式加速器300中所示的完成時間估計器328的完成時間估計器900的方框圖。完成時間估計器900包括命令分析器902、負載分析器904、估計完成時間決定器906、閾值分析器908、延遲日誌更新器910和命令延遲日誌 912。為了說明的目的,參照圖10來描述完成時間估計器 900。圖10是根據示例性的實施例的用於評估命令的估計完成時間的處理的流程圖。在實施例中,完成時間估計器900可經配置為執行流程圖1000的一個步驟或所有步驟。如下描述完成時間估計器900和流程圖1000。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意到,在一些實施例中,可用不同於圖10所示的順序來執行流程圖1000的步驟。此外,並非流程圖1000的所有步驟皆需要在所有實施例中執行。
流程圖1000開始於步驟1002。在步驟1002中,基於分佈式加速器的命令負載來決定命令的估計的完成時間。例如,完成時間估計器900從如圖1的處理器102的處理器接收命令914。命令分析器902經配置為分析命令914。例如,命令分析器902可決定完成與命令914相關聯的任務所需的資源、圖3A的分佈式加速器300完成任務將花費的時間及/或諸如此類。根據一個實施例,命令分析器902從命令延遲日誌912接收命令延遲資訊916。命令延遲資訊916包括估計命令914的延遲的資料。例如,命令分析器902可決定命令914包括循環冗餘校驗(CRC)任務並檢索命令延遲資訊916;命令延遲資訊916指示執行CRC任務的估計延遲。命令分析器902基於對命令914的分析產生命令分析信號918。
負載分析器904經配置為分析分佈式加速器300的當前工作負載。例如,負載分析器904經配置為從狀態管理器322(圖3A中未示出)接收狀態信號936,及從命令佇列330接收佇列資訊920。狀態信號936指示由分佈式加速器300的經分配的加速器切片所執行的子任務的當前狀態。佇列資訊920包括命令佇列330中的命令列表,且可包括與每個命令相關聯的資料,如命令延遲、命令優先級、所需資源、緩衝區大小及/或諸如此類。根據實施例,負載分析器904從命令延遲日誌912接收排隊命令延遲資訊 922。排隊命令延遲資訊922包括估計命令佇列330中命令延遲的資料。負載分析器基於狀態信號936和佇列資訊 920的分析來產生負載分析信號924。
估計完成時間決定器906經配置為接收來自命令分析器902的命令分析信號918和來自負載分析器904的負載分析信號924。估計完成時間決定器906基於命令分析信號918和負載分析信號924來決定與命令914相關聯的任務的估計完成時間。例如,估計完成時間決定器906可分析可用於執行與命令914相關聯的任務的資源、在命令佇列330中排隊的命令、排隊命令的估計完成時間、命令延遲和用於產生估計完成時間926的其他資料。
在步驟1004中,將估計的完成時間與等待閾值進行比較。例如,閾值分析器908接收估計完成時間926,並將估計完成時間926與等待閾值進行比較。根據實施例,等待閾值包含在命令914中。例如,處理器102可包括等待閾值;等待閾值指示完成與命令914相關聯的任務的最後期限。根據另一個實施例,等待閾值是預定的閾值。例如,等待閾值可以是完成時間估計器900接收到命令914之後的最大時鐘週期數。若估計完成時間926低於等待閾值,則流程圖1000前進到步驟1006。否則,流程圖1000前進到步驟1008。本文設想,若估計完成時間926處於等待閾值,則流程圖1000可進行到步驟1006或步驟1008,這取決於具體的實施方式。
在步驟1006中,將接收到的命令放置在命令佇列中。例如,閾值分析器908經配置成若估計完成時間926低於等待閾值,則產生定位信號928。定位信號928包括命令914。根據具體的實施方式,定位信號928可包括附加資訊,如命令延遲、估計完成時間926、緩衝器大小及與命令914相關的其他資訊。命令佇列330接收定位信號928及(因而)定位命令914。根據實施例,定位信號928包括將命令914定位在命令佇列330的特定位置的指令。例如,定位信號928可包括將命令914定位在命令佇列330的開頭、命令佇列330的末尾、命令佇列330中的特定命令之前或之後及/或諸如此類的指令。
在步驟1008中,產生拒絕回應。例如,閾值分析器908經配置為若估計完成時間等於或高於等待閾值,則產生拒絕回應930。可將拒絕回應930存儲在暫存器(如圖3A的回應及通訊暫存器316)中。根據實施例,將拒絕回應930作為中斷發送到發出命令914的處理器(例如,圖1的處理器102)。
如上所述,完成時間估計器900包括延遲日誌更新器910和命令延遲日誌912。延遲日誌更新器910和命令延遲日誌912可實現動態命令延遲估計。例如,根據實施例,圖3A的分佈式加速器300的狀態管理器322記錄由分佈式加速器300所處理的命令的開始時間。在此示例中,狀態管理器322經配置為當命令由圖3A的分佈式加速器300完成時產生完成命令延遲信號932。完成的命令延遲信號932可包括如完成命令的總時間、完成命令的資源數量、完成子任務的總時間、用於完成子任務的資源及/或與完成的命令相關聯的其他資訊的資訊。延遲日誌更新器 910從狀態管理器322接收完成的命令延遲信號932並產生延遲日誌更新信號934,以更新命令延遲日誌912。線性回歸模型或機器學習模型可與佇列模型相結合以估計特定命令的完成時間。 三、示例性的協調器切片實施例
在實施例中,可用各種方式配置協調器切片。例如,協調器切片可包括專用於執行特定任務的硬體及/或韌體。專門用於執行不同任務的協調器切片可包含在相同的分佈式加速器中。例如,圖11是根據示例性的實施例的包括各種類型的協調器切片的處理系統1100的方框圖。處理系統1100是圖2的處理系統200的進一步實施例。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。參照處理系統200,如下所述地描述處理系統1100。
處理系統1100包括處理器核心1102A—1102N和分佈式加速器1104。處理器核心1102A—1102N和分佈式加速器1104通過互連1106通訊耦合。處理器核心1102A—1102N和互連1106分別是圖2的處理器核心202A—202N和互連224的進一步實施例;此外,為了說明圖11的目的,處理器核心1102A—1102N和互連1106經配置為與上述的處理器核心202A—202N和互連224配置相同或基本相同。即,處理器核心1102A—1102N經配置為通過互連1106向分佈式加速器1104發送命令並從分佈式加速器1104接收回應。
分佈式加速器1104是圖2的分佈式加速器210的進一步實施例。分佈式加速器1104包括協調器切片1108、資料移動器協調器切片1110、同步協調器切片1112、加密協調器切片1112、循環冗餘校驗(CRC)協調器切片1116、複雜計算協調器切片1118,及從屬切片 1120A—1120N。協調器切片1108和從屬切片1120A—1120N分別是協調器切片212和從屬切片214A—214N、從屬切片216A—216N和從屬切片218A—218N的進一步實施例;此外,為了說明圖11的目的,協調器切片1108和從屬切片1120A—1120N經配置為與上文的協調器切片212和從屬切片214A—214N、從屬切片216A—216N和從屬切片218A—218N相同或基本相同。也就是說,協調器切片212經配置為執行子任務,並在分佈式加速器1104的加速器切片之間協調子任務。從屬切片218A—218N經配置為執行經分配的子任務並產生回應。資料移動器協調器切片1110、同步協調器切片1112、加密協調器切片1114、CRC協調器切片1116和複雜計算協調器切片1118中的每一者皆可類似於協調器切片1108進行配置,且經配置為協調分佈式加速器切片 1104的加速器切片之間的子任務並執行專門的任務。
例如,資料移動器協調器切片1110經配置為執行資料移動子任務,如將資料緩衝器複製到另一個記憶體位置、用資料模式初始化記憶體、比較兩個記憶體區域以產生第三資料緩衝區中的差異、計算校驗和並將校驗和附加到資料緩衝區、將先前計算的差異應用到緩衝區、將緩衝區中的資料移動到不同的快取級別(例如,L2、L3或 L4),及/或如受益於本申請案的(多個)相關領域的通常知識者將理解的其他資料移動功能。例如,根據實施例,資料移動器協調器切片1110經配置為協調需要大頻寬的資料移動任務。資料移動器協調器切片1110可分配分佈式加速器1104的加速器切片,以移動與資料移動任務相關聯的資料的多個部分。以此方式,資料移動訊務分佈在整個處理系統1100上,這減少通訊訊務(例如,互連訊務、IO介面流量、控制器介面流量)中的熱點。根據實施例,資料移動器協調器切片1110可包括一致性引擎,以在處理系統1100的記憶體內執行資料發送。
同步協調器切片1112經配置為加速原子操作,以對少量資料(例如,幾個資料字元)進行操作。同步協調器切片1112可執行變量的原子更新、基於第三變量的值的兩個變量的原子交換及/或執行如受益於本申請案的(多個)相關領域的通常知識者將理解的其他同步功能。同步協調器切片1112經配置為回傳除了任務狀態之外的資料值。根據實施例,同步協調器切片1112可將最終結果存儲在處理器核心(例如,一個或多個處理器核心1102A—1102N)的本地快取中。
加密協調器切片1114經配置為執行加密子任務,如實現加密功能和解密功能。加密功能和解密功能可基於各種標準。加密協調器切片1114可經配置為加密及/或解密由分佈式加速器1104的其他加速器切片所使用的資料。CRC協調器切片1116經配置為執行CRC子任務。例如,CRC協調器切片1116可檢測處理系統1100的組件之間的資料或通訊中的錯誤。
複雜計算協調器切片1118經配置為執行複雜計算。複雜計算協調器切片1118可經配置為單獨地或與分佈式加速器1104的其他加速器切片協調來執行複雜計算。例如,複雜計算協調器切片1118可包括專門用於執行加密和資料移動任務的硬體及/或韌體。在此情況中,複雜計算協調器切片1118可執行包括加密和資料移動子任務的任務。 在另一個實施例中,複雜計算協調器切片1118包括用於管理資料一致性的硬體及/或韌體,且複雜計算協調器切片1118接收資料移動命令。在此示例中,複雜計算協調器切片1118分配自身以用於管理資料移動的一致性,並分配資料移動器協調器切片1110以用於移動資料。
處理系統1100可包括圖2中為了簡潔和清楚說明而未示出的附加組件。例如,處理系統1100可包括如快取控制器204A—204N的快取控制器、如記憶體控制器206A—206N的記憶體控制器,及如圖2的IO控制器208A—208N的IO控制器。分佈式加速器1104的一個或多個加速器切片可被包括在這些附加組件中的一者或多者,或可通訊地耦合到這些附加組件中的一者或多者。例如,可在記憶體控制器206A中實施資料移動器協調器切片1110。在此情況中,資料移動器協調器切片1110經配置為執行與存儲在由記憶體控制器206A所管理的記憶體中的記憶體相關的子任務。可在如快取控制器204A的快取控制器中實施同步協調器切片1112,以執行與經存儲在快取222A中的資料相關的任務。本文設想可在處理系統1100的任何組件中將分佈式加速器1104的任何加速器切片實施成處理系統1100的片上組件、耦合到處理系統1100的片外組件(例如,通過IO控制器)、或以其他方式被配置以如本文別處所述地加速處理系統1100的任務。此外,本文設想協調器切片1108、資料移動器協調器切片1110、同步協調器切片1112、加密協調器切片1114、CRC協調器切片1116及/或複雜協調器切片1116中的任何一者可作為從屬切片被分配到另一個協調器切片,這取決於特定的實施方式。此外,本文設想分佈式加速器1104可包括如本文別處所述及/或如受益於本申請案的(多個)相關領域的通常知識者將理解的用於執行其他資料處理功能的其他類型的加速器切片。
在實施例中,可用各種方式操作資料移動器協調器切片1110以移動資料。例如,圖12是根據示例性的實施例的用於執行資料移動處理的處理系統1200的方框圖。處理系統1200是圖1的處理系統1100的進一步實施例。處理系統1200包括處理器核心1202、資料移動器協調器切片1204、資料移動器從屬切片1206和資料移動器從屬切片1208。處理器核心1202是處理器核心1102A—1102N的示例、資料移動器協調器切片1204是資料移動器協調器切片1110的示例,及資料移動器從屬切片1206和1208是從屬切片1120A—1120N的示例。為了說明的目的,參照圖13來描述處理系統1200。圖13是根據示例性的實施例的用於移動資料的處理的流程圖1300。在實施例中,資料移動器協調器切片1204可經配置為執行流程圖1300的一個步驟或所有步驟。如下描述處理系統1200和流程圖1300。 基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意到在一些實施例中,可用不同於圖13所示的順序來執行流程圖1300的步驟。此外,並非流程圖1300的所有步驟皆需要在所有實施例中執行。
流程圖1300開始於步驟1302。在步驟1302中,決定資料的一組部分。例如,處理器核心1202產生資料移動命令1210;資料移動命令1210包括將資料從第一位置移動到第二位置的指令。資料移動器協調器切片1204接收資料移動命令1210並決定資料的一組部分。資料移動器協調器切片1204可基於要移動的資料的大小、可用加速器切片的頻寬、可被分配以移動資料的加速器切片的數量、加速器切片的位置、要移動的資料的位置及/或本文別處所描述的其他標準來將資料分成多個部分。例如,在非限制性的示例中,資料移動命令1210包括移動30MB資料的指令。資料移動器協調器切片1204將30MB的資料分成三個10MB的資料部分。
在步驟1304中,對於資料的一組部分的每個部分,決定用於移動該部分的子任務。例如,資料移動器協調器切片1204為在步驟1302中所決定的資料的一組部分中的每個部分決定用於移動該部分的子任務。如上文關於圖4的流程圖400的步驟406—410所描述,可將經決定的子任務可發送到經分配的加速器切片。繼續上文關於步驟1302所描述的非限制性示例,資料移動器協調器切片1204決定三個子任務,每個子任務用於移動相應的10MB資料部分。
如圖12所示,資料移動器協調器切片1204經配置為進一步執行與資料移動命令1210相關的功能。例如,在繼續關於流程圖1300描述的非限制性示例中,資料移動器協調器切片1204分配其自身以用於移動前10MB部分、分配資料移動器從屬切片1206以用於移動第二10MB部分,及分配資料移動器從屬切片1208以用於移動第三10MB部分。資料移動器協調器切片1204產生用於移動第一10MB部分(圖12中未示出)的子任務指令、用於移動第二10MB部分的子任務指令1212,及用於移動第三10MB部分的子任務指令1214。每組子任務指令可包括讀取操作、寫入操作、一致性子任務及/或受益於本申請案的(多個)相關技術領域中具有通常知識者將理解的與移動資料相關的其他指令。讀取操作和寫入操作可包括指示資料源的源位址、指示寫入目的地的目的地位址、資料大小的指示及/或與資料移動相關的其他資訊。資料移動器協調器切片1204的執行引擎執行用於移動第一10MB部分的子任務。將子任務指令1212發送到資料移動器從屬切片 1206;資料移動器從屬切片1206執行用於移動第二 10MB部分的子任務並產生結果1216。將子任務指令 1214發送到資料移動器從屬切片1208;資料移動器從屬切片1208執行用於移動第三10MB部分的子任務並產生結果1218。資料移動器協調器切片1204聚合執行移動第一10MB部分的子任務的結果、結果1216和結果1218,以產生經協調的回應1220;經協調的回應1220指示資料移動完成。
資料移動器協調器(如圖12的資料移動器協調器切片1204)的實施例實現跨複數個加速器切片的資料移動過程的協調。這將資料移動分佈在多個裝置上,減少了處理系統互連中的熱點。例如,可分配加速器切片以用平衡系統互連(如圖11的互連1106)中的負載的方式來移動部分的資料。圖12包括單個處理器核心1202;然而,本文預期可使用多個處理器核心。在此情況下,每個處理器核心可與不同的資料移動器協調器切片通訊,或多個處理器核心可使用相同的資料移動器協調器切片。此外,同一個處理器核心可使用多個資料移動器協調器切片。
如上所述,協調器切片可包括類似於圖3A的協調器切片304的組件的組件;然而,本文預期協調器切片的類型可具有額外組件、可具有經修改的組件或可不具有類似於協調器切片304的組件的某些組件。例如,圖14是根據示例性的實施例的循環冗餘校驗(CRC)協調器切片1400的方框圖。CRC協調器切片是CRC協調器切片1116的進一步實施例。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。 參照圖3A的協調器切片304,如下描述CRC協調器切片1400。
如圖14所示,CRC協調器切片1400包括介面1402、切片控制器1404、命令管理器1406、切片協調器1408、回應及通訊暫存器1410及執行引擎1412。介面1402、切片控制器1404、命令管理器1406、切片協調器1408、回應及通訊暫存器1410及執行引擎1412經配置為分別與介面308、切片控制器310、命令管理器312、切片協調器314、回應及通訊暫存器316及執行引擎318相同或基本相同,其中具有如下文所進一步敘述的下述差異。
在圖14中,CRC協調器切片1400不包括本地資料緩衝器。CRC協調器切片1400改為經配置為一次獲取一個字(word)的資料,並計算回應暫存器中的CRC。CRC協調器切片1400可將計算出的CRC發送到處理器核心或另一個加速器切片(例如,從屬切片)以供進一步處理。儘管在圖14中所示出的CRC協調器切片1400沒有資料緩衝器,但本文預期具有緩衝器的協調器切片也可執行CRC任務,這取決於具體的實施方式。
在實施例中,分佈式加速器可經配置為以各種方式執行複雜計算。例如,圖15是根據示例性的實施例的用於執行複雜計算的處理系統1500的方框圖。處理系統1500是圖11的處理系統1100的進一步實施例。處理系統1500包括處理器核心1502、複雜計算協調器切片1504和CRC從屬切片1506。處理器核心1502是處理器核心1102A—1102N的示例、複雜計算協調器切片1504是複雜計算協調器切片1518的示例,及CRC從屬切片1506是CRC協調器切片1116中之一者的示例,或從屬切片1120A—1120N是從屬切片1120A—1120N的示例。複雜計算協調器切片1504包括介面1508、命令管理器 1510、切片協調器1512、加密引擎1514及回應及通訊暫存器1516。複雜計算協調器切片1504可包括附加組件,如類似於圖3A的協調器切片304的組件。為了說明的目的,參照圖16來描述處理系統1500。圖16是根據示例性的實施例的用於執行複雜計算的處理的流程圖1600。在實施例中,複雜計算協調器切片1504可經配置為執行流程圖1600的一個步驟或所有步驟。如下描述處理系統1500和流程圖1600。基於以下描述,進一步的結構和操作實施例對於(多個)相關領域的通常知識者將是顯而易見的。注意到在一些實施例中,可用不同於圖16所示的順序執行流程圖1600的步驟。此外,並非在所有實施例中皆需要執行流程圖1600的所有步驟。
流程圖1600開始於步驟1602。在步驟1602中,接收包括資料的加密和CRC命令。例如,複雜計算協調器切片1504的介面1508接收加密和CRC命令1518。介面1508可將加密和CRC命令1518存儲在暫存器中。根據實施例,所包括的資料經存儲在圖15中未示出的資料緩衝器中。命令管理器1510接收加密和CRC命令1518,且命令管理器1510可經配置為執行類似於圖3A的命令管理器312的功能。
在步驟1604中,決定加密子任務和CRC子任務。 例如,切片協調器1512接收加密和CRC命令1518,並決定加密子任務和CRC子任務。切片協調器1512可使用子任務產生器(如圖3A的子任務產生器332)來決定加密和CRC子任務。
在步驟1606中,複數計算協調器切片1504經分配以執行加密子任務,且CRC從屬切片1506經分配以執行CRC子任務。例如,切片協調器1512經配置為分配複雜計算協調器切片1504來執行加密子任務和CRC從屬切片1506來執行CRC子任務。切片協調器1512可使用如圖3A的切片分配器334的切片分配器來分配加速器切片。本文預期切片協調器1512可分配其他加速器切片以執行加密子任務及/或CRC子任務。例如,切片協調器1512可分配加密從屬切片來執行加密子任務。
在步驟1608中,決定加密子任務指令和CRC子任務指令。例如,切片協調器1512經配置為決定加密子任務指令1520和CRC子任務指令1522。切片協調器1512可使用如圖3A的子指令產生器336的子指令產生器來決定子任務指令。切片協調器1512將加密子任務指令1520發送到加密引擎1514。
在步驟1610中,藉由對包括的資料進行加密來執行加密子任務指令。例如,加密引擎1514經配置為藉由加密包括在加密和CRC命令1518中的資料來執行加密子任務指令1520,以產生加密資料1524。加密引擎1514可從複雜計算協調器切片1504的暫存器或資料緩衝器存取包括的資料。如圖15所示,加密引擎1514將加密資料1524存儲在回應及通訊暫存器1516中;然而,本文設想加密引擎1514可將加密資料1524存儲在另一個暫存器或複雜計算協調器切片1504的資料緩衝器中。
在步驟1612中,將CRC子任務指令和加密資料發送到CRC從屬切片。例如,回應及通訊暫存器1516接收來自切片協調器1512的CRC子任務指令1522和來自加密引擎1514的加密資料1524。回應及通訊暫存器1516發送CRC子命令1526到介面1508(CRC子命令1526包括CRC子任務指令1522和加密資料1524),介面1508將CRC子命令1526發送到CRC從屬切片1506。
CRC從屬切片1506經配置為處理加密資料1524並將CRC值附加到加密資料1524。如圖15所示,CRC從屬切片1506產生回應1528,並將回應1528發送到處理器核心1502。取決於實施方式,回應1528可包括資料,如附加有CRC值的加密資料1524、狀態資訊或與執行加密和CRC命令1518相關的其他資訊。根據實施例,CRC從屬切片1506可將回應1528發送到複雜通訊協調器切片 1504;複雜通訊協調器切片1504產生經協調的回應以發送到處理器核心1502。
因此,已參照圖15和圖16來描述複雜計算協調器切片的示例性的實施例和用於執行複雜計算的處理的流程圖。雖然上述的複雜計算係說明加密和CRC複雜計算,但本文設想複雜計算協調器切片的其他實施方式可執行其他複雜計算。例如,複雜計算可包括資料移動命令、同步命令、加密命令、CRC命令及/或如本文別處所述及/或如受益於本申請案的(多個)相關技術領域中具有通常知識者將理解的將由分佈式加速器執行的另一命令中的任何一者或多者。 四、進一步的示例性的實施例和優勢
如上所述,可用執行任務的方式來配置包括分佈式加速器、協調器切片和從屬切片的系統和裝置。在實施例中,已將加速器切片描述為網路附接裝置、片外裝置、片上裝置、片上處理元件或作為ISA中的專用指令。本文已描述了各種類型的協調器切片;然而,本文設想從屬切片可包括如受益於本申請案的(多個)相關技術領域中具有通常知識者將理解的用於執行特定任務的專用硬體。例如,從屬切片可包括專用於資料移動、同步、CRC、加密、複雜計算及/或諸如此類的硬體。此外,本申請案的實施例可經配置為支持一致的快取、增加的頻寬、服務品質的監控、計量(例如,用於計費),這取決於特定的實施方式。
分佈式加速器的實施例可支持虛擬記憶體。根據實施例的分佈式加速器將與命令一起接收的虛擬位址(例如,邏輯區塊位址)轉換成記憶體裝置的物理位址。物理位址可用於寫入操作、讀取操作或與物理記憶體相關聯的其他操作(例如,處理分頁錯誤)。在示例性的實施例中,分佈式加速器將轉換後的位址存儲在快取中,以最小化轉換開銷。
本公開的實施例可經配置為加速任務性能例如,在非限制性的示例中,根據實施例的分佈式加速器經配置為在沒有本地位址轉換的情況下處理命令。在此情況下,處理器核心將虛擬位址轉換為物理位址,並使用物理位址將命令發送到分佈式加速器。這樣的實施方式可降低加速器的複雜性及/或尺寸。
此外,根據所描述的實施例和技術,可基於其他操作、功能及/或諸如此類(其包括功能、動作及/或諸如此類的初始化、完成及/或執行)來啟動處理系統、分佈式加速器、協調器切片及/或從屬切片的任何組件及其功能,以用於任何組件及其功能的操作/執行。
在一些示例性的實施例中,可不執行本文所描述的流程圖的操作中的一者或多者。此外,可執行補充或代替本文所描述的流程圖的操作的操作。此外,在一些示例性的實施例中,可無序地、以交替的順序、或者部分地(或完全地)彼此或與其他操作同時地執行本文描述的流程圖的操作中的一者或多者。
本章節中所描述的進一步的示例性的實施例和優勢可應用於本章節或本申請案的任何其他章節中所揭露的任何實施例。
可用硬體(例如,硬體邏輯/電路)或硬體與軟體(經配置為在一個或多個處理器或處理裝置中執行的電腦程式代碼)及/或韌體的任何組合來實施本文所描述的實施例及/或本文所揭露的任何進一步的系統、子系統、裝置及/或組件。 五、示例性的電腦系統的實施方式
可在硬體或硬體與軟體及/或韌體的任何組合中來實施處理器核心102、分佈式加速器104、加速器切片108、協調器切片110、從屬切片112A—112N、處理器核心202A—202N、快取控制器204A—204N、記憶體控制器206A—206N、IO控制器208A—208N、分佈式加速器210、協調器切片212、從屬切片214A—214N、從屬切片216A—216N、從屬切片218A—218N、一致性引擎220A—220N、快取222A—222N、互連224、協調器切片304、從屬切片306A—306N、介面308、切片控制器310、命令管理器312、切片協調器314、回應及通訊暫存器316、執行引擎318、資料緩衝器320、狀態管理器322、中止任務管理器324、經協調的回應產生器326、完成時間估計器328、命令佇列330、子任務產生器332、切片分配器334、子指令產生器336、介面368、切片控制器370、命令佇列372、回應及通訊暫存器374、執行引擎376、資料緩衝器378、流程圖400、協調器切片504、從屬切片506A—506N、介面508、命令管理器510、切片協調器512、狀態管理器514、回應及通訊暫存器516、經協調的回應產生器518、流程圖600、協調器切片704、從屬切片706A—706B、介面708、命令管理器710、中止任務管理器712、切片協調器714、回應及通訊暫存器 716、執行引擎718、狀態管理器720、中止條件識別符 722、中止任務決定器724、流程圖800、完成時間估計器900、命令分析器902、負載分析器904、估計完成時間決定器906、閾值分析器908、延遲日誌更新器910、命令延遲日誌912、流程圖1000、處理器核心1102A—1102N、分佈式加速器1104、互連1106、協調器切片1108、資料移動器協調器切片1110、同步協調器切片 1112、加密協調器切片1114、CRC協調器切片1116、複數計算協調器切片1118、從屬切片1120A—1120N、處理器核心1202、資料移動器協調器切片1204、資料移動器從屬切片1206、資料移動器從屬切片1208、流程圖1300、CRC協調器切片1400、介面1402、切片控制器1404、命令管理器1406、切片協調器1408、回應及通訊暫存器1410、執行引擎1412、處理器核心1502、複雜計算協調器切片1504、CRC從屬切片1506、介面1508、命令管理器1510、切片協調器1512、加密引擎1514、回應及通訊暫存器1516及/或流程圖1600;硬體或硬體與軟體及/或韌體的任何組合包括經實施為配置成在一個或多個處理器中執行並存儲在電腦可讀取存儲媒體中的電腦程式代碼或經實施為硬體邏輯/電路系統,如在系統單晶片(SoC)中實施。SoC可包括積體電路晶片;積體電路晶片包括一個或多個處理器(例如,微控制器、微處理器、數位信號處理器(DSP)等等)、記憶體、一個或多個通訊介面及/或另外的電路及/或嵌入式韌體來執行其功能。
圖17描繪可在其中實現實施例的電腦系統1700(本文中的「系統1700」)的示例性的實施方式。例如,系統1700可用於實施如上文參照圖1所述的處理器核心102及/或分佈式加速器104。系統1700亦可用於實施如上文參照圖2所述的處理器核心202A—202N、快取控制器204A—204N、記憶體控制器206A—206N、IO控制器208A—208N及/或分佈式加速器210。系統1700亦可用於實施如上文參照圖3A所述的分佈式加速器300。系統1700亦可用於實施如上文參照圖3B所述的從屬切片306A。系統1700亦可用於實施如上文參照圖5所述的分佈式加速器500。系統1700亦可用於實施如上文參照圖7所述的分佈式加速器700。系統1700亦可用於實施如上文參照圖9所述的完成時間估計器900。系統1700亦可用於實施如參照圖11所描述的處理器核心1102A—1102N及/或分佈式加速器1104。系統1700亦可用於實施如上文參照圖12所述的處理器核心1202、資料移動器協調器切片1204、資料移動器從屬切片1206及/或資料移動器從屬切片1208。系統1700亦可用於實施如上文參照圖14所述的CRC協調器切片1400。系統1700亦可用於實施如上文參照圖15所述的處理器核心1502、複雜計算協調器切片1504及/或CRC從屬切片1506。系統1700亦可用於實施如上所述的圖4、圖6、圖8、圖10、圖13及/或圖16的流程圖中的任何一者的任何步驟。此處所提供的系統1700的描述是為了說明目的而提供的;並不旨在限制。可在如將由(多個)相關領域的通常知識者已知的其他類型的電腦系統中來實施實施例。
如圖17所示,系統1700包括一個或多個處理器(稱為處理器單元1702)、系統記憶體1704和匯流排1706;匯流排1706將包括系統記憶體1704的各種系統組件耦合到處理器單元1702。處理器單元1702是在一個或多個物理硬體電路設備元件及/或積體電路元件(半導體材料晶片或晶粒)中實施的電及/或光的電路,如中央處理器 (CPU)、微控制器、微處理器及/或其他物理硬體處理器電路。處理器單元1702可執行經存儲在電腦可讀取媒體中的程式代碼,如作業系統1730的程式代碼、應用程式1732和其他程式1734等等。匯流排1706表示任何幾種類型的匯流排結構中的一者或多者;任何幾種類型的匯流排結構包括記憶體匯流排或記憶體控制器、周邊裝置匯流排、加速圖形埠及使用各種匯流排架構中的任何一者的處理器或本地匯流排。系統記憶體1704包括唯讀記憶體(ROM)1708和隨機存取記憶體(RAM)1710。基本輸入/輸出系統1712(BIOS)經存儲在ROM 1708中。
系統1700亦具有以下驅動器中的一者或多者,該等以下驅動器為:用於從硬碟讀取和寫入到硬碟的硬碟驅動器1714、用於從可移動式磁碟1718讀取或寫入到可移動式磁碟1718的磁碟驅動器1716,及用於從可移動式光碟1722讀取或寫入到可移動式光碟1722的光碟驅動器1720(如CD ROM和DVD ROM)或其他光學媒體。硬碟驅動器1714、磁碟驅動器1716和光碟驅動器1720分別藉由硬碟驅動器介面1724、磁碟驅動器介面1726和光碟驅動器介面1728連接到匯流排1706。驅動器和其相關聯的電腦可讀取媒體為電腦提供電腦可讀取指令、資料結構、程式模組和其他資料的非揮發性存儲。儘管描述了硬碟、可移動磁碟和可移動光碟,但其他類型的基於硬體的電腦唯讀存儲媒體亦可用於存儲資料,如快閃記憶卡和驅動器(例如,固態硬碟(SSD)、數位多功能光碟、RAM、ROM和其他硬體存儲媒體。
可將多個程式模組或組件存儲在硬碟、磁碟、光碟、ROM或RAM上。這些程式模組包括作業系統1730、一個或多個應用程式1732、其他程式模組1734和程式資料1736。根據各種實施例,程式模組可包括電腦程式邏輯,其可由處理單元1702執行以執行一致性引擎220A—220N、切片控制器310、命令管理器312、切片協調器314、回應及通訊暫存器316、狀態管理器322、中止任務管理器324、經協調的回應產生器326、完成時間估計器328、子任務產生器332、切片分配器334、子指令產生器336、切片控制器370、命令管理器510、切片協調器512、狀態管理器514、經協調的回應產生器518、命令管理器710、中止任務管理器712、切片協調器714、回應及通訊暫存器716、執行引擎718、狀態管理器720、中止條件識別符722、中止任務決定器724、延遲時間估計器900、命令分析器902、負載分析器904、估計完成時間決定器906、閾值分析器908、延遲日誌更新器910、命令延遲日誌912、切片控制器1404、命令管理器1406、切片協調器1408、回應及通訊暫存器1410、執行引擎1412、命令管理器1510、切片協調器1512及/或加密引擎1514(包括流程圖400、600、800、1000、1300及/或1600的任何合適步驟)的任何或所有的功能和特徵。
使用者可通過如鍵盤1738和指標裝置1740的輸入裝置將命令和資訊輸入到系統1700中。其他輸入裝置(未示出)可包括麥克風、操縱桿、遊戲手把、衛星天線、掃描器、觸控螢幕及/或觸控板、接收語音輸入的語音識別系統和接收手勢輸入的手勢識別系統或諸如此類。這些和其他輸入裝置通常通過經耦合到匯流排1706的串行埠介面1742連接到處理器單元1702,但也可藉由如平行埠、遊戲埠或通用串行埠(USB)的其他介面連接。
顯示螢幕1744亦經由如影片適配器1746的介面經連接到匯流排1706。顯示螢幕1744可在系統1700的外部或併入系統1700中。顯示螢幕1744可顯示資訊,也可作為用於(例如,藉由觸摸、手指手勢和虛擬鍵盤等等來)接收使用者命令及/或其他資訊的使用者介面。除了顯示螢幕1744之外,系統1700還可包括其他周邊輸出裝置(未示出),如揚聲器和印表機。
系統1700通過適配器或網路介面1750、調製解調器1752或用於在網路上建立通訊的其他手段來連接到網路1748(例如,網際網路)。可以是內部或外部的調製解調器1752可如圖17所示地經由串行埠介面1742連接到匯流排1706,或可使用包括平行介面的另一種介面類型連接到匯流排1706。
如本文所用,術語「電腦程式媒體」、「電腦可讀取媒體」和「電腦可讀取存儲媒體」用於指物理硬體媒體,如與硬碟驅動器1714相關聯的硬碟、可移動式磁碟 1718、可移動式光碟1722、如RAM、ROM、快閃記憶卡、數位多功能光碟、zip磁碟、MEM和基於奈米技術的存儲裝置的其他物理硬體媒體,及其他類型的物理/有形硬體存儲媒體。這樣的電腦可讀取存儲媒體與通訊媒體區別開來且不重疊(不包括通訊媒體)。通訊媒體體現電腦可讀取指令、資料結構、程式模組或調製資料信號(如載波)中的其他資料。術語「調製資料信號」是指具有以編碼信號中的資訊的方式設置或改變的其一個或多個特性的信號。作為示例而非限制,通訊媒體包括如聲學、RF和紅外線的無線媒體和其他無線媒體,及有線媒體。實施例亦針對與針對電腦可讀取存儲媒體的實施例分離且不重疊的此類通訊媒體。
如上所述,電腦程式和模組(包括應用程式1732和其他程式1734)可經存儲在硬碟、磁碟、光碟、ROM、RAM或其他硬體存儲媒體上。也可經由網路介面1750、串行埠介面1742或任何其他介面類型來接收這樣的電腦程式。在由應用程式執行或加載此些電腦程式時,此些電腦程式使系統1700能夠實施本文所述的實施例的特徵。因此,此些電腦程式表示系統1700的控制器。
實施例亦針對包括經存儲在任何電腦可讀取媒體上的電腦代碼或指令的電腦程式產品。此類電腦程式產品包括硬碟驅動器、光碟驅動器、記憶體裝置封裝、可攜式記憶棒、記憶卡和其他類型的物理存儲硬體。根據各種實施例,程式模組可包括可由處理單元1702執行的電腦程式邏輯,以執行如上文參照圖1所述的處理器核心102及/或分佈式加速器104、如上文參照圖2所述的處理器核心202A—202N、快取控制器204A—204N、記憶體控制器206A—206N、IO控制器208A—208N及/或分佈式加速器210、如上文參照圖3A所述的分佈式加速器300、如上文參照圖3B所述的從屬切片306A、如上文參照圖5所述的分佈式加速器500、如上文參照圖7所述的分佈式加速器700、如上文參照圖9所述的完成時間估計器900、如上文參照圖11所述的處理器核心1102A—1102N及/或分佈式加速器1104、如上文參照圖12所述的處理器核心1202、資料移動器協調器切片1204、資料移動器從屬切片1206及/或資料移動器從屬切片1208、如上文參照圖14所述的CRC協調器切片1400和如上文參照圖15所述的處理器核心1502、複雜計算協調器切片1504及/或CRC從屬切片1506的任何或所有功能和特徵。程式模組進一步可包括程式邏輯;當由處理單元1302執行此程式邏輯時使處理單元1302執行如上所述的圖4、圖6、圖8、圖10、圖13,及/或圖16的任何流程圖的任何步驟。 六、額外的示例性的實施例
在實施例中,處理系統包括分佈式加速器;分佈式加速器包括複數個加速器切片。複數個加速器切片包括一個或多個從屬切片和協調器切片。協調器切片經配置為接收命令;命令包括用於執行任務的指令。協調器切片經配置為決定任務的一個或多個子任務,以產生一組子任務。對於一組子任務中的每個子任務,協調器切片經配置為分配複數個加速器切片中的一個加速器切片來執行子任務、決定用於執行子任務的子任務指令,並發送子任務指令給經分配的加速器切片。每個經分配的加速器切片經配置為產生相應的回應;相應的回應指示經分配的加速器切片已完成相應的子任務。
在實施例中,協調器切片經進一步配置為從每個經分配的加速器切片接收相應的回應;相應的回應指示經分配的加速器切片已完成相應的子任務。協調器切片經配置為產生經協調的回應;經協調的回應指示相應的回應。
在實施例中,從處理器核心接收命令。每個經分配的加速器切片將相應的回應發送到處理器核心;相應的回應指示經分配的加速器切片已完成相應的子任務。
在實施例中,複數個加速器切片包括複數個協調器切片。
在實施例中,處理系統包括互連網路;互連網路經配置為在協調器切片和一個或多個從屬切片之間傳送信號。複數個加速器切片中的至少一個加速器切片直接耦合到互連網路。
在實施例中,協調器切片是以下切片中之一者,該等以下切片為:資料移動器協調器切片、同步協調器切片、加密協調器切片、循環冗餘校驗(CRC)協調器切片或複雜計算協調器切片。
在實施例中,處理系統包括快取控制器。快取控制器包括協調器切片。任務包括將資料從第一位置移動到第二位置的指令。協調器切片是資料移動器協調器切片;資料移動器協調器切片經配置為藉由決定資料的一組部分及藉由為資料的一組部分的每個部分決定子任務,來決定任務的一個或多個子任務。
在實施例中,協調器切片是複雜計算協調器切片;複雜計算協調器切片經配置為接收包括資料的加密和循環冗餘校驗(CRC)命令。複雜計算協調器切片經配置為決定加密子任務和CRC子任務、分配協調器切片以執行加密子任務及分配一個或多個從屬切片中的CRC從屬切片以執行CRC子任務,及決定加密子任務指令和CRC子任務指令。複雜計算協調器切片經配置成藉由對包括的資料進行加密來執行加密子任務指令,並將CRC子任務指令和加密後的資料發送至CRC從屬切片。
在實施例中,協調器切片進一步經配置為接收狀態更新命令 (其包括針對任務的進展的請求)、將狀態更新指令發送到經分配的加速器切片,並從每個經分配的加速器切片接收相應的狀態更新回應。相應的狀態更新回應指示經分配的加速器切片執行相應子任務的進展。協調器切片經配置為產生經協調的狀態更新;經協調的狀態更新指示一個或多個接收到的狀態更新回應。
在實施例中,協調器切片包括資料緩衝器,且接收到的命令指定資料緩衝器的物理位址。
在實施例中,協調器切片進一步經配置為基於分佈式加速器的命令負載來決定命令的估計完成時間。若估計完成時間低於等待閾值,則協調器切片經配置為將接收到的命令定位在命令佇列中。若估計完成時間高於等待閾值,則協調器切片經配置為產生拒絕回應。
在實施例中,協調器切片進一步經配置為識別中止條件、決定一組子任務中的一個或多個要被中止的子任務,並將中止指令發送到與經決定的一個或多個要被中止的子任務相關聯的每個經分配的加速器切片。
在實施例中,執行由分佈式加速器執行任務的方法。方法包括以下步驟:接收命令;命令包括用於執行任務的指令。決定任務的一個或多個子任務以產生一組子任務。對於一組子任務中的每個子任務,分配分佈式加速器的複數個加速器切片中的一個加速器切片來執行子任務。對於一組子任務中的每個子任務,決定用於執行子任務的子任務指令。對於一組子任務中的每個子任務,將子任務指令發送到經分配的加速器切片。從每個經分配的加速器切片接收相應的回應。每個相應的回應指示經分配的加速器切片已完成相應的子任務。產生指示相應的回應的經協調的回應。
在實施例中,任務包括將資料從第一位置移動到第二位置的指令。決定任務的一個或多個子任務的步驟包括以下步驟:決定資料的一組部分,並為資料的一組部分的每個部分決定用於移動此部分的子任務。
在實施例中,接收包括對任務進展的請求的狀態更新命令。將狀態更新指令發送到經分配的加速器切片。從每個經分配的加速器切片接收相應的狀態更新回應。每個相應的狀態更新回應指示經分配的加速器切片執行相應子任務的進展。產生經協調的狀態更新;經協調的狀態更新指示一個或多個接收到的狀態更新回應。
在實施例中,基於分佈式加速器的命令負載來決定命令的估計完成時間。若估計完成時間低於等待閾值,則將接收到的命令定位在命令佇列中。若估計完成時間高於等待閾值,則產生拒絕回應。
在實施例中,識別中止條件。一組子任務中的一個或多個子任務經決定為中止。將中止指令發送到與經決定的一個或多個要被中止的子任務相關聯的每個經分配的加速器切片。
在實施例中,協調器切片經配置為分配分佈式加速器的複數個加速器切片中的加速器切片以執行任務。複數個加速器切片包括協調器切片。協調器切片經進一步配置為接收包括用於執行任務的指令的命令,並決定任務的一個或多個子任務以產生一組子任務。對於一組子任務中的每個子任務,協調器切片經配置為分配分佈式加速器的複數個加速器切片中的一個加速器切片來執行子任務、決定用於執行子任務的子任務指令,並將子任務指令發送給經分配的加速器切片。協調器切片經配置為從每個經分配的加速器切片接收相應的回應;相應的回應指示經分配的加速器切片已完成相應的子任務。協調器切片經配置為產生經協調的回應;經協調的回應指示相應的回應。
在實施例中,任務包括將資料從第一位置移動到第二位置的指令。協調器切片經配置為藉由決定資料的一組部分及藉由針對資料的一組部分的每個部分決定用於移動此部分的子任務,來決定任務的一個或多個子任務以產生一組子任務。
在實施例中,協調器切片經進一步配置為接收狀態更新命令(狀態更新命令包括對任務的進展的請求),並將狀態更新指令發送到經分配的加速器切片。協調器切片經進一步配置為從每個經分配的加速器切片接收指示經分配的加速器切片執行相應子任務的進展的相應狀態更新回應,並產生指示一個或多個接收到的狀態更新的經協調的狀態更新回應。 七、結論
雖然上文已描述了各種實施例,但應當理解的是,此些各種實施例僅以示例並非限制的方式呈現。對於相關領域的通常知識者來說顯而易見的是,在不脫離實施例的精神和範疇的情況下,可對其中的形式和細節進行各種改變。因此,實施例的廣度和範圍不應受任何上述示例性的實施例的限制,而應僅根據所附申請專利範圍及其等同物來限定。
100:處理系統 102:處理器核心 104:分佈式加速器 106:通訊鏈路 108:加速器切片 110:協調器切片 112A~112N:從屬協調器切片 114:命令 116:輪詢信號 118:回應 120:中斷信號 200:處理系統 202A~202N:處理器核心 204A~204N:快取控制器 206A~206N:記憶體控制器 208A~208N:IO控制器 210:分佈式加速器 212:協調器切片 214A~214N:從屬協調器切片 216A~216N:從屬協調器切片 218A~218N:從屬協調器切片 220A~220N:一致性引擎 222A~222N:快取 224:互連 300:分佈式加速器 304:協調器切片 306A~306N:從屬協調器切片 308:介面 310:切片控制器 312:命令管理器 314:切片協調器 316:回應及通訊暫存器 318:執行引擎 320:資料緩衝器 322:狀態管理器 324:中止任務管理器 326:協調回應產生器 328:完成時間估計器 330:命令佇列 332:子任務產生器 334:切片分配器 336:子指令產生器 338:控制和狀態匯流排 340:命令匯流排 342:回應匯流排 346:配置和狀態匯流排 348:指令匯流排 350:引擎指令匯流排 352:從屬指令匯流排 354:回應匯流排 356:資料匯流排 358:資料匯流排 360:命令 362A~362N:子任務指令 364A~364N:相應的回應 366:回應 368:介面 370:切片控制器 372:命令佇列 374:回應及通訊暫存器 376:執行引擎 378:資料緩衝器 380:處理系統 382:命令匯流排 388:指令匯流排 390:回應匯流排 394:執行資料匯流排 400:流程圖 402~414:步驟 500:分佈式加速器 504:協調器切片 506A~506N:從屬協調器切片 508:介面 510:命令管理器 512:切片協調器 514:狀態管理器 516:回應及通訊暫存器 518:經協調的回應產生器 520:狀態更新命令 524:狀態更新指令 526A~526N:狀態更新指令 528:相對應的狀態更新 530A~530N:相對應的狀態更新 532:經協調的狀態更新 600:流程圖 602~608:步驟 700:分佈式加速器 704:協調器切片 706A~706N:從屬協調器切片 708:介面 710:命令管理器 712:中止任務管理器 714:切片協調器 716:回應及通訊暫存器 718:執行引擎 720:狀態管理器 722:中止條件識別器 724:中止任務決定器 726:中止命令 728:中止設置信號 730:中止指令 732A~732N:中止指令 734:引擎狀態信號 736:中止完成信號 738:狀態指示信號 740A~740N:從屬狀態信號 800:流程圖 802~806:步驟 900:完成時間估計器 902:命令分析器 904:負載分析器 906:估計完成時間決定器 908:閾值分析器 910:延遲日誌更新 912:命令延遲日誌 914:命令 916:命令延遲資訊 918:命令分析信號 920:佇列資訊 922:排隊命令延遲資訊 924:負載分析信號 926:估計完成時間 928:定位信號 930:拒絕回應 932:命令延遲信號 934:延遲日誌更新信號 936:狀態信號 1000:流程圖 1002~1008:步驟 1100:處理系統 1102A~1102N:處理器核心 1104:分佈式加速器 1106:互連 1108:協調器切片 1110:資料移動器切片 1112:同步協調器切片 1114:加密協調器切片 1116:CRC協調器切片 1118:複雜計算協調器切片 1120A~1120N:從屬協調器切片 1200:處理系統 1202:處理器核心 1204:資料移動器協調器切片 1206:資料移動器從屬協調器切片 1208:資料移動器從屬協調器切片 1210:資料移動命令 1212:子任務指令 1214:子任務指令 1216:結果 1218:結果 1220:經協調的回應 1300:流程圖 1302~1304:步驟 1400:CRC協調器切片 1402:介面 1404:切片控制器 1406:命令管理器 1408:切片協調器 1410:回應及通訊暫存器 1412:執行引擎 1500:處理系統 1502:處理器核心 1504:複雜計算協調器切片 1506:CRC從屬協調器切片 1508:介面 1510:命令管理器 1512:切片協調器 1514:加密引擎 1516:回應及通訊暫存器 1518:加密和CRC命令 1520:加密子任務指令 1522:CRC子任務指令 1524:加密資料 1526:CRC子命令 1528:回應 1600:流程圖 1602~1612:步驟 1700:電腦系統/系統 1702:處理單元 1704:系統記憶體 1706:匯流排 1708:唯讀記憶體(ROM) 1710:隨機存取記憶體(RAM) 1712:基本輸入/輸出系 (BIOS) 1714:硬碟驅動器 1716:磁碟驅動器 1718:可移動式磁碟 1720:光碟驅動器 1722:可移動式光碟 1724:硬碟驅動器介面 1726:磁碟驅動器介面 1728:光碟驅動器介面 1730:作業系統 1732:應用程式 1734:其他程式 1736:程式資料 1738:鍵盤 1740:指標裝置 1742:串行埠介面 1744:顯示螢幕 1746:影片適配器 1748:網路 1750:網路介面 1752:調製解調器
併入本文並形成說明書的一部分的附加圖式示出實施例,並與本文的描述一起進一步用於解釋實施例的原理且使相關領域的通常知識者能夠做出和使用實施例。
圖1是根據示例性的實施例的包括分佈式加速器的處理系統的方框圖。
圖2是根據實施例的包括圖1的分佈式加速器的示例性的實施方式的處理系統的方框圖。。
圖3A是根據示例性的實施例的包括經配置為執行處理器核心的任務的分佈式加速器的處理系統的方框圖。
圖3B是對應於圖3A的示例性的處理系統中所示的從屬切片的從屬切片的方框圖。
圖4是根據示例性的實施例的用於在複數個加速器切片之間協調子任務的處理的流程圖。
圖5是根據示例性的實施例的處理系統的方框圖,該處理系統包括處理器核心和經配置為產生經協調的狀態更新的分佈式加速器。
圖6是根據示例性的實施例的用於產生經協調的狀態更新的處理的流程圖。
圖7是根據示例性的實施例的處理系統的方框圖,該處理系統包括處理器核心和經配置為中止一個或多個子任務的分佈式加速器。
圖8是根據示例性的實施例的用於中止一個或多個子任務的處理的流程圖。
圖9是根據實施例的完成時間估計器的方框圖,該完成時間估計器為圖3A的示例性的分佈式加速器中所示的完成時間估計器的實施方式。
圖10是根據示例性的實施例的用於評估命令的估計完成時間的處理的流程圖。
圖11是根據示例性的實施例的包括各種類型的協調器切片的處理系統的方框圖。
圖12是根據示例性的實施例的用於執行資料移動處理的處理系統的方框圖。
圖13是根據示例性的實施例的用於移動資料的處理的流程圖。
圖14是根據示例性的實施例的循環冗餘校驗(CRC)協調器切片的方框圖。
圖15是根據示例性的實施例的用於執行複雜計算的處理系統的方框圖。
圖16是根據示例性的實施例的用於執行複雜計算的處理的流程圖。
圖17是可用於實施實施例的示例性的電腦系統的方框圖。
現在將參照附加圖式來描述實施例。在圖式中,相似的元件符號表示相同或功能相似的元件。此外,元件符號(多個)最左邊的數字指示元件符號首次出現的圖示。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
100:處理系統
102:處理器核心
104:分佈式加速器
106:通訊鏈路
108:加速器切片
110:協調器切片
112A~112N:從屬協調器切片
114:命令
116:輪詢信號
118:回應
120:中斷信號

Claims (20)

  1. 一種處理系統,包括: 一分佈式加速器,該分佈式加速器包括複數個加速器切片,該複數個加速器切片包括: 一個或多個從屬切片;及 一協調器切片,其經配置為: 接收一命令,該命令包括用於執行一任務的指令; 決定該任務的一個或多個子任務,以產生一組子任務; 對於該組子任務中的每個子任務: 分配該複數個加速器切片中的一加速器切片來執行該子任務; 決定用於執行該子任務的子任務指令;及 將該等子任務指令發送給該經分配的加速器切片; 其中,每個經分配的加速器切片經配置為產生一相應的回應,該相應的回應指示該經分配的加速器切片已完成一相應的子任務。
  2. 如請求項1所述的處理系統,其中該協調器切片經進一步配置為: 從每個經分配的加速器切片接收該相應的回應,該相應的回應指示該經分配的加速器切片已完成一相應的子任務;及 產生一經協調的回應,該經協調的回應指示該等相應的回應。
  3. 如請求項1所述的處理系統,其中從一處理器核心接收該命令,且其中每個經分配的加速器切片將指示該經分配的加速器切片已完成該相應的子任務的該相應的回應發送到處理器核心。
  4. 如請求項1所述的處理系統,其中該複數個加速器切片包括複數個協調器切片。
  5. 如請求項1所述的處理系統,進一步包括: 一互連網路,該互連網路經配置為在該協調器切片和該一個或多個從屬切片之間發送信號,其中該複數個加速器切片中的至少一個加速器切片直接耦合到該互連網路。
  6. 如請求項1所述的處理系統,其中該協調器切片是以下之一者: 一資料移動器協調器切片; 一同步協調器切片; 一加密協調器切片; 一循環冗餘校驗(CRC)協調器切片;或 一複雜計算協調器切片。
  7. 如請求項1所述的處理系統,該處理系統進一步包括一快取控制器,該快取控制器包括該協調器切片,其中: 該任務包括將資料從一第一位置移動到一第二位置的指令;及 該協調器切片為一資料移動器協調器切片,其經配置為藉由以下步驟來決定該任務的該一個或多個子任務,該等以下步驟為: 決定該資料的一組部分;及 為該資料的該組部分的每個部分決定用於移動該部分的一子任務。
  8. 如請求項1所述的處理系統,其中該協調器切片是一複雜計算協調器切片,其經配置為: 接收包括資料的一加密和循環冗餘校驗(CRC)命令; 決定一加密子任務和一CRC子任務; 分配該協調器切片以執行該加密子任務及分配該一個或多個從屬切片中的一CRC從屬切片以執行該CRC子任務; 決定加密子任務指令和CRC子任務指令; 藉由加密該經包含的資料來執行該等加密的子任務指令;及 將該CRC子任務指令和該經加密的資料發送給該CRC從屬切片。
  9. 如請求項1所述的處理系統,其中該協調器切片經進一步配置為: 接收一狀態更新命令,該狀態更新命令包括用於該任務的進展的一請求; 向該等經分配的加速器切片發送一狀態更新指令; 從每個經分配的加速器切片接收一相應的狀態更新回應,該相應的狀態更新回應指示該經分配的加速器切片執行該相應的子任務的該進展;及 產生一經協調的狀態更新,該經協調的狀態更新指示該一個或多個接收到的狀態更新回應。
  10. 如請求項1所述的處理系統,其中該協調器切片包括一資料緩衝器,且該所接收的命令指定該資料緩衝器的一物理位址。
  11. 如請求項1所述的處理系統,其中該協調器切片進一步經配置為: 基於該分佈式加速器的一命令負載,決定該命令的一估計完成時間; 若該估計完成時間低於一等待閾值,則將該接收到的命令放置在一命令佇列中;及 若該估計完成時間高於該等待閾值;產生一拒絕回應。
  12. 如請求項1所述的處理系統,其中該協調器切片經進一步配置為: 識別一中止條件; 決定該組子任務中要中止的一個或多個子任務;及 將一中止指令發送到與該經決定的要中止的一個或多個子任務相關聯的每個經分配的加速器切片。
  13. 一種藉由一分佈式加速器執行一任務的方法,該方法包括以下步驟: 接收一命令,該命令包括用於執行一任務的指令; 決定該任務的一個或多個子任務以產生一組子任務; 對於該組子任務中的每個子任務: 分配該分佈式加速器的複數個加速器切片中的一個加速器切片以執行該子任務; 決定用於執行該子任務的子任務指令;及 將該等子任務指令發送給該經分配的加速器切片; 從每個經分配的加速器切片接收一相應的回應,該相應的回應指示該經分配的加速器切片已完成一相應的子任務;及 產生一經協調的回應,該經協調的回應指示該等相應的回應。
  14. 如請求項13所述的方法,其中該任務包括將資料從一第一位置移動到一第二位置的指令,且該決定該任務的該一個或多個子任務之步驟包括以下步驟: 決定該資料的一組部分;及 為該資料的該組部分的每個部分決定用於移動該部分的一子任務。
  15. 如請求項13所述的方法,進一步包括以下步驟: 接收一狀態更新命令,該狀態更新命令包括用於該任務的進展的一請求; 向該等經分配的加速器切片發送一狀態更新指令; 從每個經分配的加速器切片接收一相應的狀態更新回應,該相應的狀態更新回應指示該經分配的加速器切片執行該相應的子任務的該進展;及 產生一經協調的狀態更新,該經協調的狀態更新指示該一個或多個接收到的狀態更新回應。
  16. 如請求項13所述的方法,進一步包括以下步驟: 基於該分佈式加速器的一命令負載,決定該命令的一估計完成時間; 若該估計完成時間低於一等待閾值,則將該接收到的命令放置在一命令佇列中;及 若該估計完成時間高於該等待閾值;產生一拒絕回應。
  17. 如請求項13所述的方法,進一步包括以下步驟: 識別一中止條件; 決定該組子任務中要中止的一個或多個子任務;及 將一中止指令發送到與該經決定的要中止的一個或多個子任務相關聯的每個經分配的加速器切片。
  18. 一種協調器切片,其經配置成分配一分佈式加速器的複數個加速器切片中的加速器切片以執行一任務,該複數個加速器切片包括該協調器切片,該協調器切片進一步配置為: 接收一命令,該命令包括用於執行該任務的指令; 決定該任務的一個或多個子任務以產生一組子任務; 對於該組子任務中的每個子任務: 分配該分佈式加速器的複數個加速器切片中的一個加速器切片以執行該子任務; 決定用於執行該子任務的子任務指令;及 將該等子任務指令發送給該經分配的加速器切片; 從每個經分配的加速器切片接收一相應的回應,該相應的回應指示該經分配的加速器切片已完成一相應的子任務;及 產生一經協調的回應,該經協調的回應指示該等相應的回應。
  19. 如請求項18所述的協調器切片,其中該任務包括將資料從一第一位置移動到一第二位置的指令,且該協調器切片經配置以藉由以下操作決定該任務的該一個或多個子任務以產生該組子任務,該等以下操作為: 決定該資料的一組部分;及 為該資料的該組部分的每個部分決定用於移動該部分的一子任務。
  20. 如請求項18所述的協調器切片,其中該協調器切片經進一步配置為: 接收一狀態更新命令,該狀態更新命令包括用於該任務的進展的一請求; 向該等經分配的加速器切片發送一狀態更新指令; 從每個經分配的加速器切片接收一相應的狀態更新回應,該相應的狀態更新回應指示該經分配的加速器切片執行該相應的子任務的該進展;及 產生一經協調的狀態更新,該經協調的狀態更新指示該一個或多個接收到的狀態更新回應。
TW111149375A 2022-01-27 2022-12-22 分佈式加速器 TW202334814A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/585,842 US20230236889A1 (en) 2022-01-27 2022-01-27 Distributed accelerator
US17/585,842 2022-01-27

Publications (1)

Publication Number Publication Date
TW202334814A true TW202334814A (zh) 2023-09-01

Family

ID=84421472

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111149375A TW202334814A (zh) 2022-01-27 2022-12-22 分佈式加速器

Country Status (3)

Country Link
US (1) US20230236889A1 (zh)
TW (1) TW202334814A (zh)
WO (1) WO2023146604A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6588008B1 (en) * 2000-04-11 2003-07-01 International Business Machines Corporation Assembler tool for processor-coprocessor computer systems
JP4456490B2 (ja) * 2005-01-14 2010-04-28 富士通株式会社 Dma装置
US9501488B1 (en) * 2013-12-30 2016-11-22 EMC IP Holding Company LLC Data migration using parallel log-structured file system middleware to overcome archive file system limitations
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US20190050263A1 (en) * 2018-03-05 2019-02-14 Intel Corporation Technologies for scheduling acceleration of functions in a pool of accelerator devices
CN110795228B (zh) * 2018-08-03 2023-08-25 伊姆西Ip控股有限责任公司 用于训练深度学习模型的方法和制品、以及计算系统
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments

Also Published As

Publication number Publication date
WO2023146604A1 (en) 2023-08-03
US20230236889A1 (en) 2023-07-27

Similar Documents

Publication Publication Date Title
US11861203B2 (en) Method, apparatus and electronic device for cloud service migration
US10394604B2 (en) Method for using local BMC to allocate shared GPU resources inside NVMe over fabrics system
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
TW201617918A (zh) 用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法
TWI791891B (zh) 用於錯誤修正代碼的加速的裝置及系統
US10802753B2 (en) Distributed compute array in a storage system
US11169846B2 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
US10467052B2 (en) Cluster topology aware container scheduling for efficient data transfer
US20120144146A1 (en) Memory management using both full hardware compression and hardware-assisted software compression
US10873630B2 (en) Server architecture having dedicated compute resources for processing infrastructure-related workloads
WO2024082985A1 (zh) 一种安装有加速器的卸载卡
US9699093B2 (en) Migration of virtual machine based on proximity to peripheral device in NUMA environment
CN114900699A (zh) 视频编解码卡虚拟化方法、装置、存储介质及终端
US10289306B1 (en) Data storage system with core-affined thread processing of data movement requests
US11093175B1 (en) Raid data storage device direct communication system
TW202334814A (zh) 分佈式加速器
US11005896B2 (en) Service chaining for multiple uplink bridges in a virtualization environment
CN114253656A (zh) 用于微服务工作负载的覆盖式容器存储驱动器
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
EP4109255A1 (en) Scheduling in a container orchestration system utilizing hardware topology hints
US10613890B2 (en) Efficient I/O request handling
WO2024027395A1 (zh) 一种数据处理方法及装置
KR102535532B1 (ko) 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム
JP2018147257A (ja) 仮想基盤にもとづくシステムにおけるリソース割当方法、接続管理サーバおよび接続管理プログラム