TW202109285A - 用以致能工作負載之靜態映射的亂序管線化執行之方法及設備 - Google Patents

用以致能工作負載之靜態映射的亂序管線化執行之方法及設備 Download PDF

Info

Publication number
TW202109285A
TW202109285A TW109120637A TW109120637A TW202109285A TW 202109285 A TW202109285 A TW 202109285A TW 109120637 A TW109120637 A TW 109120637A TW 109120637 A TW109120637 A TW 109120637A TW 202109285 A TW202109285 A TW 202109285A
Authority
TW
Taiwan
Prior art keywords
quota
buffer
workload
critical
amount
Prior art date
Application number
TW109120637A
Other languages
English (en)
Other versions
TWI802800B (zh
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 TW202109285A publication Critical patent/TW202109285A/zh
Application granted granted Critical
Publication of TWI802800B publication Critical patent/TWI802800B/zh

Links

Images

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/505Allocation 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 the load
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

本文揭露之方法、設備、系統及製品致能一工作負載至一加速器的一或多個運算構件之靜態映射的亂序管線化執行。一實例設備包括一介面用以把額度的一第一數量載入到記憶體中;一比較器用以把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及一分配器,用以當額度的該第一數量達到額度的該臨界數量時,選擇該工作負載的一工作負載節點以在該等一或多個運算構件的一第一個處被執行。

Description

用以致能工作負載之靜態映射的亂序管線化執行之方法及設備
發明領域
本發明總體上係涉及用以致能工作負載之靜態映射的亂序管線化執行之處理,並更具體地係涉及用以致能工作負載之靜態映射的亂序管線化執行處理之方法及設備。
發明背景
電腦硬體製造商開發了在一電腦平台之各種組件中所使用的硬體組件。例如,電腦硬體製造商開發母板、用於母板的晶片組、中央處理單元(CPU)、硬碟驅動器(HDD)、固態硬碟驅動器(SSD)、以及其他的電腦組件。另外,電腦硬體製造商開發了稱為加速器的處理元件,以加速一工作負載的處理。例如,一加速器可以是一CPU、一圖形處理單元(GPU)、一視覺處理單元(VPU)、及/或一現場可規劃閘陣列(FPGA)。
依據本發明之一實施例,係特地提出一種用以致能一工作負載之靜態映射的亂序管線化執行之設備,該設備包含有:一介面,其用以把額度(credit)的一第一數量載入到記憶體中;一比較器,其用以把額度的該第一數量和與在一緩衝器中的記憶體可用性相關聯之額度的一臨界數量進行比較;以及一分配器,其用以當額度的該第一數量達到額度的該臨界數量時,選擇要在該等一或多個運算構件的一第一者處被執行之該工作負載的一工作負載節點。
較佳實施例之詳細說明
許多的電腦硬體製造商都開發稱為加速器的處理元件,以加速工作負載的處理。例如,一加速器可以是中央處理單元(CPU)、一圖形處理單元(GPU)、一視覺處理單元(VPU)、及/或一現場可規劃閘陣列(FPGA)。此外,加速器雖然能夠處理任何類型的工作負載,但它們被設計來最佳化特定類型的工作負載。例如,雖然可以把CPU及FPGA設計來處理更為一般的處理,但是可以把GPU設計來改善視訊、遊戲、及/或其他物理及基於數學的運算的處理,並且可把VPU設計來改善機器視覺任務的處理。
另外,一些加速器係專門為了改善人工智慧(AI)應用程式的處理而設計的。雖然一VPU係AI加速器的一種特定類型,但可以使用許多不同的AI加速器。實際上,許多AI加速器可以藉由特定應用積體電路(ASIC)來實現。可以把此類基於ASIC的AI加速器設計來改善與特定類型AI任務有關的處理,諸如機器學習(ML)、深度學習(DL)、及/或其他人工機器驅動的邏輯,包括有支援向量機器(SVM)、神經網路(NN)、遞歸神經網路(RNN)、卷積神經網路(CNN)、長短期記憶體(LSTM)、閘控循環單元(GRU)、等等。
電腦硬體製造商也開發異構系統,其包括多於一種類型的處理元件。例如,電腦硬體製造商可以把諸如CPU之類的通用處理元件與諸如FPGA之類的通用加速器及/或諸如GPU、VPU、及/或其他AI加速器之類更客製化的加速器相結合。此類異構系統可被實現為系統單晶片(SoC)。
當一開發人員希望在一異構系統上運行一功能、演算法、程式、應用程式、及/或其他代碼時,該開發人員及/或軟體在編譯時產生用於該功能、演算法、程式、應用程式、及/或其他代碼的一排程。一旦產生一排程,該排程會與該功能、演算法、程式、應用程式、及/或其他代碼規格組合以產生一可執行檔(不是「提前」就是「即時」的範式)。此外,一功能、演算法、程式、應用程式、及/或其他代碼可被表示為一包括有節點的圖,其中該圖表示一工作負載而每一個節點表示該工作負載的一特定任務。此外,在該圖中不同節點之間的該等連接表示為了要執行一特定節點所需要的該資料輸入及/或輸出,而該圖的該等頂點表示在該圖的節點之間的資料相依性。
該可執行檔包括多個不同的可執行區段,其中每一個可執行區段可由一特定的處理元件(例如,一CPU、一GPU、一VPU、及/或一FPGA)來執行。該可執行檔的每一個可執行區段更可包括可執行子區段,其中每一個可執行子區段可以藉由該特定處理元件的運算構件(CBB)來執行。另外地或可替代地,在本文揭露的一些實例中,一開發人員及/或軟體開發軟體可以定義判定該可執行檔之成功執行的準則(例如,成功準則)。例如,這樣的成功準則可以對應於執行該可執行檔以達到及/或以其他方式滿足該異構系統及/或特定處理元件利用率的一臨界值。在其他的實例中,成功準則可以對應於在時間的一臨界量內執行該可執行檔。然而,當判定如何在一異構系統及/或特定處理元件上執行該可執行檔時,可以利用任何合適的成功功能。以這種方式,該成功準則有益於一開發人員、軟體、及/或人工智慧系統來產生包括有一被最佳化來達到該成功準則之排程的一可執行檔。
圖1係圖100,其表示在一異構系統之一加速器上執行之一工作負載的一圖形說明。該圖100包括一第一工作負載節點102(WN[0])、一第二工作負載節點104(WN[1])、一第三工作負載節點106(WN[2])、一第四工作負載節點108(WN[3])、以及一第五工作負載節點110(WN[4])。在圖1中,該加速器正經由一靜態軟體排程來運行由該圖100所表示​​的該工作負載。靜態軟體排程包括決定一種預定的方式以在一加速器的運算構件(CBB)上執行該圖100之不同工作負載節點。例如,該靜態軟體排程把該第一​​工作負載節點102(WN[0])分配給一第一CBB 112、把該第二工作負載節點104(WN[1])分配給一第二CBB 114、把該第三工作負載節點106(WN[2])分配給一第三CBB 116、把該第四工作負載節點108(WN[3])分配給一第四CBB 118、以及把該第五工作負載節點110(WN[4])分配給該第二CBB 114。
在圖1中,該靜態軟體排程概述了該第一工作負載節點102(WN[0])將在該第一CBB 112上執行,其與在該第四CBB 118上執行的該第四工作負載節點108(WN[3])並行。在圖1中,與該第一CBB 112執行該第一工作負載節點102(WN[0])相比,該第四CBB 118執行該第四工作負載節點108(WN[3])的速度更快。因為該靜態軟體排程概述該第二CBB 114執行該第二工作負載節點104(WN[1])係在該第二CBB 114執行該第五工作負載節點110(WN[4])之前,該第二CBB 114在直到該第一CBB 112完成該第一工作負載節點102(WN[0])的執行之前係閒置的。此外,等待工作負載節點完成執行之後再執行後續的工作負載節點會需要大量的記憶體開銷,因為由執行一第一工作負載節點(例如,該第一工作負載節點102(WN[0]))的一CBB所產生的該資料需要被儲存在該加速器上,之後一CBB才可以執行一第二工作負載節點(例如,該第二工作負載節點104(WN[1]))。
圖2係圖200,其圖形表示在實現有管線及緩衝器之一異構系統加速器上執行的一工作負載。該圖200包括一第一工作負載節點102(WN[0])、一第二工作負載節點104(WN[1])、一第三工作負載節點106(WN[2])、一第四工作負載節點108(WN[3])、以及一第五工作負載節點110(WN[4])。在圖2中,該加速器正經由一靜態軟體排程來運行由該圖200所表示​​的該工作負載。圖2的該靜態軟體排程概述了在實現有管線並包括有一第一緩衝器202、一第二緩衝器204、及一第三緩衝器206之一加速器的CBB上用於該圖200不同工作負載節點的該執行排程。另外,該靜態軟體排程把該第一​​工作負載節點102(WN[0])分配給該第一CBB 112、把該第二工作負載節點104(WN[1])分配給該第二CBB 114、把該第三工作負載節點106(WN[2])分配給該第三CBB 116、把該第四工作負載節點108(WN[3])分配給該第四CBB 118、以及把該第五工作負載節點110(WN[4])分配給該第二CBB 114。該第一緩衝器202被耦合到該第一CBB 112及該第二CBB 114、該第二緩衝器204被耦合到該第二CBB 114及該第三CBB 116、以及該第三緩衝器206被耦合到該第四CBB 118及第二CBB 114。
該等緩衝器202、204、及206允許一靜態軟體排程概述每一個CBB將在一時間間隔中處理一工作負載節點的一部分(例如,一資料塊),而不是在該時間間隔中執行該整個工作負載節點。類似地,該靜態軟體排程可概述處理其他CBB產生資料的CBB(例如,一消費者)可以執行一工作負載節點的部分(例如,一資料塊),當該工作負載的如此部分可用時。然而,由於執行工作負載節點的CBB處理可用的資料並把新資料寫入到記憶體,以在一CBB上執行一給定的工作負載節點,所以在執行時必須提供資料的一臨界量,並且必須要在記憶體中有空間的一臨界量以在執行時寫入該等結果。雖然緩衝器藉由基本的靜態軟體排程來減少該記憶體開銷,但是越來越難以勾勒出具有緩衝器的一靜態軟體排程,因為它高度仰賴於該資料可用性及/或在執行時的相依性。此外,由於整個加速器的該負載會影響在該加速器上之每一個CBB的該處理速度,因此難以開發可有效利用一給定加速器之該等CBB的一靜態軟體排程。
本文所揭露的實例包括用以致能一工作負載之靜態映射亂序管線化執行的方法及設備。與靜態軟體排程相反,本文所揭露的該等實例不依賴於一預定的靜態軟體排程。反而,本文所揭露的該等實例基於在一加速器及/或其他處理元件上可用資料及可用記憶體來判定已被分配給一給定CBB的那些工作負載節點可以運行。此外,每一個CBB追踪在一第一緩衝器中可用之與一給定工作負載相關聯的一資料量,以額度的一第一數量來表示;以及在一第二緩衝器中可用的空間量,以額度的一第二數量來表示。這允許對在一給定CBB上的工作負載節點進行一種動態執行時排程。
對於每一個工作負載節點,當額度的一第一數量達到一第一臨界值並且額度的一第二數量達到一第二臨界值時,該CBB可以執行該工作負載節點。這允許亂序管線化的執行,獨立於整體工作負載的一給定圖。本文所揭露的實例提供一種設備用以致能一工作負載靜態映射到一加速器之一或多個運算構件的亂序管線化執行。一實例設備包括一介面用以把額度的一第一數量載入到記憶體中;一比較器用以把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及一分配器,用以當額度的該第一數量達到該額度的臨界數量時,選擇該工作負載的一工作負載節點以在該等一或多個運算構件中一第一個處被執行。
圖3係一方塊圖,其圖示出根據本發明之教導所建構出的一實例運算系統300。在圖3的該實例中,該運算系統300包括一實例系統記憶體302及一實例異構系統304。該實例異構系統304包括一實例主機處理器306、一實例第一通信匯流排308、一實例第一加速器310a、一實例第二加速器310b、以及一實例第三加速器310c。該實例第一加速器310a、該實例第二加速器310b、以及該實例第三加速器310c的每一個包括各式各樣的CBB,其中一些通用於一加速器的操作,而其中一些特定於該個別加速器的操作。
在圖3的該實例中,該系統記憶體302被耦合到該異構系統304。該系統記憶體302係一記憶體。在圖3中,該系統記憶體302係該主機處理器306、該第一加速器310a、該第二加速器310b及該第三加速器310c中至少一個之間的一共享儲存器。在圖3的該實例中,該系統記憶體302係本地於該運算系統300的一實體儲存器;然而,在其他實例中,該系統記憶體302相對於該運算系統300可以外部於其及/或以其他方式遠離於其。在另外的實例中,該系統記憶體302可以是一虛擬儲存器。在3圖的該實例中,該系統記憶體302係一永久性的儲存器(例如,唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除式PROM(EPROM)、電氣可抹除式PROM(EEPROM)、等等)。在其他的實例中,該系統記憶體302可以是一持久性的基本輸入/輸出系統(BIOS)或一快閃儲存器。在另外的實例中,該系統記憶體302可以是一依電性記憶體。
在圖3中,該異構系統304被耦合到該系統記憶體302。在圖3的該實例中,該異構系統304藉由在該主機處理器306及/或該第一加速器310a、該第二加速器310b、或該第三加速器310c中一或多個上執行該工作負載來處理一工作負載。在圖3中,該異構系統304係一SoC。可替代地,該異構系統304可以是任何其他類型的運算或硬體系統。
在圖3的該實例中,該主機處理器306係執行指令(例如,機器可讀取指令)的處理元件用以執行、進行、及/或促使與一電腦或運算設備(例如,運算系統300)相關聯操作的完成。在圖3的該實例中,該主機處理器306係用於該異構系統304的一主要處理元件,並且包括至少一個核心。可替代地,該主機處理器306可以是一協同主要處理元件(例如,在使用多於一個CPU的一實例中),而在其他的實例中,主機處理器306可以是一次要的處理元件。
在圖3該所示的實例中,該第一加速器310a、該第二加速器310b、及/或該第三加速器310c中的一或多個係處理元件,其可由在該異構系統304上執行的一程式利用來用於運算任務,諸如硬體加速。例如,該第一加速器310a係一處理元件,其包括被設計及/或以其他方式被組配或建構來改善處理AI機器視覺任務之該處理速度及整體性能的處理資源(例如,一VPU)。
在本文揭露的實例中,該主機處理器306、該第一加速器310a、該第二加速器310b、及該第三加速器310c中的每一個與該運算系統300及/或該系統記憶體302的其他元件進行通信。例如,該主機處理器306、該第一加速器310a、該第二加速器310b、及該第三加速器310c、及/或該系統記憶體302經由第一通信匯流排308進行通信。在本文揭露的一些實例中,該主機處理器306、該第一加速器310a、該第二加速器310b、該第三加速器310c、及/或該系統記憶體302可以經由任何適當的有線及/或無線通信系統進行通信。另外,在本文揭露的一些實例中,該主機處理器306、該第一加速器310a、該第二加速器310b、或該第三加速器310c、及/或該系統記憶體302中的每一個可以經由任何適當的有線及/或無線通信系統與任何外部於該運算系統300的組件進行通信。
在圖3的該實例中,該第一加速器310a包括一實例卷積引擎312、一實例RNN引擎314、一實例記憶體316、一實例記憶體管理單元(MMU)318、一實例DSP 320、一實例控制器322、以及一實例直接記憶體存取(DMA)單元324。另外,該實例卷積引擎312、該實例RNN引擎314、該實例DMA單元324、該實例DSP 320、以及該實例控制器322的每一個分別包括一實例第一排程器326、一實例第二排程器328、一實例第三排程器330、一實例第四排程器332、以及一實例第五排程器334。該實例DSP 320及該實例控制器322中的每一個還另外包括一實例第一內核程式庫336及一實例第二內核程式庫338。
在圖3所示的該實例中,該卷積引擎312係被組配來改善與卷積相關聯任務之處理的一裝置。此外,該卷積引擎312改善了與視覺影像分析相關聯之任務及/或與CNN相關聯之其他任務的該處理。在圖3中,該RNN引擎314係被組配來改善與RNN相關聯任務之處理的一裝置。另外,該RNN引擎314改善了與RNN相關聯之未區段化、連接手寫識別、語音識別、及/或其他任務之分析相關聯任務的處理。
在圖3的該實例中,該記憶體316係該卷積引擎312、該RNN引擎314、該MMU 318、該DSP 320、該控制器322及該DMA單元324中至少一個之間的一共享儲存器。在圖3的該實例中,該記憶體316係本地於該第一加速器310a的一實體儲存器;然而,在其他實例中,該記憶體316相對於該第一加速器310a可以外部於其及/或以其他方式遠離於其。在另外的實例中,該記憶體316可以是一虛擬儲存器。在3圖的該實例中,該記憶體316係一永久性的儲存器(例如,ROM、PROM、EPROM、EEPROM、等等)。在其他的實例中,該記憶體316可以是一持久性的BIOS或一快閃儲存器。在另外的實例中,該記憶體316可以是一依電性記憶體。
在圖3該所示的實例中,該實例MMU 318係一種裝置,其包括對該記憶體316及/或該系統記憶體302之該等位址的參考。該MMU 318另外地把該卷積引擎312、該RNN引擎314、該DSP 320及/或該控制器322中一或多個所使用的虛擬記憶體位址解譯成在該記憶體316及/或該系統記憶體302中的實體位址。
在圖3的該實例中,該DSP 320係改善數位信號之該處理的一裝置。例如,該DSP 320有利於該處理以測量、濾波、及/或壓縮連續的現實世界信號,諸如來自相機、及/或與電腦視覺有關之其他感測器的資料。在圖3中,該控制器322被實現為該第一加速器310a的一控制單元。例如,該控制器322指引該第一加速器310a的該操作。在一些實例中,該控制器322實現一額度管理器。此外,該控制器322可以指示該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、及/或該DSP 320中的一或多個要如何回應接收自該主機處理器306的機器可讀取指令。
在圖3該所示的實例中,該DMA單元324係允許該卷積引擎312、該RNN引擎314、該DSP 320、以及該控制器322中的至少一個存取該系統記憶體302的一裝置,獨立於該主機處理器306。例如,該DMA單元324可由一或多個類比或數位電路、邏輯電路、一或多個可規劃處理器、一或多個可規劃控制器、一或多個圖形處理單元(GPU)、一或多個數位信號處理器 (DSP)、一或多個特定應用積體電路(ASIC)、一或多個可規劃邏輯裝置(PLD)及/或一或多個現場可規劃邏輯裝置(FPLD)來實現。
在圖3的該實例中,該第一排程器326、該第二排程器328、該第三排程器330、該第四排程器332、及該第五排程器334中的每一個分別判定何時該卷積引擎312、該RNN引擎314、該DMA單元324、該DSP 320、及該控制器322要執行已經被卸載及/或以其他方式被發送到該第一加速器310a之一工作負載的一部分。另外,該第一內核程式庫336及該第二內核程式庫338中的每一個係包括一或多個內核的一資料結構。該第一內核程式庫336及該第二內核程式庫338的該等內核係,例如,分別為了在該DSP 320及該控制器322上的高吞吐量而編譯的子程式。例如,該等內核對應到要在該運算系統300上運行之一可執行檔的可執行子分段。
在本文揭露的實例中,該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、及該DMA單元324中的每一個與該第一加速器310a的其他元件進行通信。例如,該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、及該DMA單元324係經由一實例第二通信匯流排340進行通信。在一些實例中,該第二通信匯流排340可以由一配置及控制(CnC)結構及一資料結構來實現。在本文所揭露的一些實例中,該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、及該DMA單元324可以經由任何合適的有線及/或無線通信系統進行通信。另外,在本文所揭露的一些實例中,該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、及該DMA單元324中的每一個可以經由任何合適的有線及/或無線通信系統與位於該第一加速器310a外部的任何組件進行通信。
如先前所述,該實例第一加速器310a、該實例第二加速器310b、及該實例第三加速器310c中的每一個都包括各式各樣的CBB,其中一些通用於一加速器的操作,而其中一些特定於該等個別加速器的操作。例如,該第一加速器310a、該第二加速器310b、及該第三加速器310c中的每一個均包括通用CBB諸如記憶體、一MMU、一控制器、以及用於該等CBB之每一個的各自的排程器。
同時,在圖3的該實例中,該第一加速器310a實現一VPU並且包括該卷積引擎312、該RNN引擎314、及該DSP 320(例如,特定於該第一加速器310a該操作之該操作的CBB),該第二加速器310b及該第三加速器310c可以包括特定於該第二加速器310b及/或該第三加速器310c之該操作的附加或替代的CBB。例如,如果該第二加速器310b實現一GPU,則特定於該第二加速器310b之該操作的該等CBB可以包括一執行緒調度器、一圖形技術介面、及/或期望來提高處理電腦圖形及/或影像處理之該處理速度及整體性能之任何其他的CBB。此外,如果該第三加速器310c實作一FPGA,則特定於該第三加速器310c該操作的該等CBB可以包括一或多個算術邏輯單元(ALU)及/或期望可提高處理一般運算之該處理速度及整體效能之的任何其他的CBB。
雖然圖3的該異構系統304包括該主機處理器306、該第一加速器310a、該第二加速器310b、及該第三加速器310c,但在一些實例中,該異構系統304可以包括任何數量的處理元件(例如,主機處理器及/或加速器),包括有特定應用指令集處理器(ASIP)、實體處理單元(PPU)、指定的DSP、影像處理器、協同處理器、浮點單元、網路處理器、多核心處理器、以及前端處理器。
此外,雖然在圖3的該實例中該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、該DMA單元324、該第一排程器326、該第二排程器328、該第三排程器330、該第四排程器332、該第五排程器334、該第一內核程式庫336、以及該第二內核程式庫338被實現在該第一加速器310a上,但是該卷積引擎312、該RNN引擎314、該記憶體316、該MMU 318、該DSP 320、該控制器322、該DMA單元324、該第一排程器326、該第二排程器328、該第三排程器330、該第四排程器332、該第五排程器334、該第一內核程式庫336、以及該第二內核程式庫338中之一或多個可被實現在該主機處理器306、該第二加速器310b、及/或該第三加速器310c上。
圖4係一方塊圖,其圖示出包括實例一或多個排程器的一實例運算系統400。在一些實例中,該運算系統400可以對應於圖3的該運算系統300。在圖4的該實例中,該運算系統400包括一實例輸入402、一實例編譯器404、及一實例加速器406。在一些實例中,該加速器406可以對應於圖3的該第一加速器310a。在圖4中,該輸入402被耦合到該編譯器404。該輸入402係將要由該加速器406執行的一工作負載。在一些實例中,該編譯器404可以對應於圖3的該主機處理器306及/或一外部裝置。
在圖4的該實例中,該輸入402係例如將要由該加速器406來執行的一函式、演算法、程式、應用程式及/或其他代碼。在一些實例中,該輸入402係一函式、演算法、程式、應用程式及/或其他代碼的一圖形描述。在附加或替代的實例中,該輸入402係與AI處理有關的一工作負載,諸如深度學習及/或電腦視覺。
在圖4該所示的實例中,該編譯器404被耦合到該輸入402及該加速器406。該編譯器404接收該輸入402及把該輸入402編譯成為將由該加速器406來執行之一或多個可執行檔。例如,該編譯器404係一圖形編譯器,其接收該輸入402並把該工作負載(例如,該輸入402)的各種工作負載節點分配給該加速器406的各種CBB。另外,該編譯器404為在該加速器406之該記憶體中的一或多個緩衝器分配記憶體。
在圖4的該實例中,該加速器406被耦合到該編譯器404並包括一實例額度管理器408、一實例CNC結構410、一實例資料結構411、一實例卷積引擎412、一實例DMA單元414,一實例RNN引擎416,一實例DSP 418,一實例記憶體420、及一實例MMU 422。此外,該實例卷積引擎412、該實例DMA單元414、該實例RNN引擎416、該實例DSP 418的每一個分別包括一實例第一排程器424、一實例第二排程器426、一實例第三排程428、及、一實例第四排程器430。此外,該實例DSP 418包括一實例內核程式庫432。在一些實例中,該第一排程器424可以對應於圖3的該第一排程器326。在附加或替代的實例中,該第二排程器426可以對應於圖3的該第三排程器330。在另外的實例中,該第三排程器428可以對應於圖3的該第二排程器328。在一些實例中,該第四排程器430可以對應於圖4的該第四排程器332。
在圖4該所示的實例中,該額度管理器408被耦合到該編譯器404以及該CnC結構410。該額度管理器408係管理與該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個相關聯之額度的一裝置。在一些實例中,該額度管理器408可由一控制器實現為一額度管理器控制器。額度代表與工作負載節點相關聯之在該記憶體420中可用的資料及/或在該記憶體420中用於該工作負載節點輸出的該可用空間量。例如,該額度管理器408可基於從該編譯器404所接收之一或多個可執行檔把該記憶體420分割為與一給定工作負載之每一個工作負載節點相關聯的一或多個緩衝器。如果一工作負載節點被組配成把資料寫入到一緩衝器,該工作負載節點係一生產者;如果該工作負載節點被組配成從一緩衝器讀取資料,則該工作負載節點係一消費者。
在圖4的該實例中,該額度管理器408另外地被組配成把額度發送給該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個,或從該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個接收額度。在一些實例中,該額度管理器408被實現為該加速器406的一控制單元。例如,該額度管理器408可以指導該加速器406的該操作。此外,該額度管理器408可以指導該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個如何回應於從該編譯器404所接收到的可執行檔及/或其他機器可讀取指令。
在圖4的該實例中,該CnC結構410被耦合到該額度管理器408、該卷積引擎412、該DMA單元414、該RNN引擎416、以及該DSP 418。該CnC結構410係一電子互連及至少一個邏輯電路的網路,該至少一個邏輯電路允許該額度管理器408、該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個可對該額度管理器408、該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個發送額度及/或從其接收額度。在一些實例中,該CnC結構410可以對應於圖3的該第二通信匯流排340。
在圖4的該實例中,該資料結構411被耦合到該卷積引擎412、該DMA單元414、該RNN引擎416、該DSP 418、該記憶體420、及該MMU 422。該資料結構411係一電子互連及至少一個邏輯電路的網路,該至少一個邏輯電路允許該額度管理器408、該卷積引擎412、該RNN引擎416、該DSP 418、該記憶體420、及/或該MMU 422中一或多個可對該額度管理器408、該卷積引擎412、該RNN引擎416、該DSP 418、該記憶體420、及/或該MMU 422中一或多個發送額度及/或從其接收額度。在一些實例中,該資料結構411可以對應於圖3的該第二通信匯流排340。
在圖4該所示的實例中,該卷積引擎412被耦合到該CnC結構410及該資料結構411。該卷積引擎412係被組配來改善與卷積相關聯任務之該處理一種裝置。此外,該卷積引擎412改善了與視覺影像分析相關聯的任務及/或與CNN相關聯之其他任務的該處理。在一些實例中,該卷積引擎412可以對應於圖3的該卷積引擎312。
在圖4該所示的實例中,該DMA單元414被耦合到該CnC結構410及該資料結構411。該DMA單元414係一種裝置,其允許該卷積引擎412、該RNN引擎416、或該DSP 418中之至少一個可以存取遠離於該加速器406的一記憶體(例如,該系統記憶體302),獨立於一個別的處理器(例如,該主機處理器306)。在一些實例中,該DMA單元414可以對應於圖3的該DMA單元324。例如,該DMA單元414可以由一或多個類比或數位電路、邏輯電路、一或多個可規劃處理器、一或多個可規劃控制器、一或多個GPU、一或多個DSP、一或多個ASIC、一或多個 PLD及/或一或多個FPLD來實現。
在圖4中,該RNN引擎416被耦合到該CnC結構410及該資料結構411。該RNN引擎416係一種被組配來改善與RNN相關聯任務之該處理的裝置。另外,該RNN引擎416改善了與RNN相關聯之未區段化、連接手寫識別、語音識別、及/或其他任務的該分析相關聯任務的該處理。在一些實例中,該RNN引擎416可以對應於圖3的該RNN引擎314。
在圖4的該實例中,該DSP 418被耦合到該CnC結構410及該資料結構411。該DSP 418係一種改善數位信號之該處理的裝置。例如,該DSP 418便於該處理以測量、濾波、及/或壓縮連續的現實世界信號,諸如來自相機及/或與電腦視覺有關之其他感測器的資料。在一些實例中,該DSP 418可以對應於圖3的該DSP 320。
在圖4的該實例中,該記憶體420被耦合到該資料結構411。該記憶體420係在該卷積引擎412、該DMA單元414、該RNN引擎416、及該DSP 418中至少一個之間的一共享儲存器。在一些實例中,該記憶體420可對應於圖3的該記憶體316。該記憶體420可以被分割成與該額度管理器408所接收到可執行檔相關聯之一工作負載的一或多個工作負載節點相關聯的一或多個緩衝器。在圖4的該實例中,該記憶體420係該加速器406之一本地的實體記憶體。但是,在其他的實例中,該記憶體420可以外部於該加速器406及/或以其他方式遠離於該加速器406。在其他實例中,該記憶體420可以是一虛擬儲存器。在圖4的該實例中,該記憶體420是一永久性的記憶體(例如,ROM、PROM、EPROM、EEPROM、等等)。在其他實例中,該記憶體420可以是一永久性的BIOS或一快閃儲存器。在其他的實例中,該記憶體420可以是一依電性記憶體。
在圖4該所示的實例中,該實例MMU 422被耦合到該資料結構411。該MMU 422係一種裝置,其包括有對該記憶體420及/或對遠離於該加速器406之一記憶體之該等位址的參考。該MMU 422另加地把該卷積引擎412、該DMA單元414、該RNN引擎416、及/或該DSP 418中一或多個所使用的虛擬記憶體位址轉譯成在該記憶體420及/或遠離於該加速器406之該記憶體中的實體位址。在一些實例中,該MMU 422可以對應於圖3的該MMU 318。
在圖4的該實例中,該第一排程器424、該第二排程器426、該第三排程428、及該第四排程430的每一個係一種裝置,其分別判定何時該卷積引擎412、該DMA單元414、該RNN引擎416、以及該DSP 418要執行一工作負載的一部分(例如,一工作負載節點),該工作負載的該部分該已由該加速器406之該額度管理器408及/或一附加的CBB分配給該卷積引擎412、該DMA單元414、該RNN引擎416、以及該DSP 418。取決於一給定工作負載節點之該等任務及/或其他的操作,該工作負載節點可以是一生產者或消費者。一生產者工作負載節點產生由另一工作負載節點所使用的資料,而一消費者工作負載節點消耗及/或以其他方式處理由另一工作負載節點所產生的資料。
在圖4該所示的實例中,該內核程式庫432係包括一或多個內核的一種資料結構。在一些實例中,該內核程式庫432可以對應於圖3的該第一內核程式庫336。該內核程式庫432的該等內核係,例如,為了在該DSP 418上的高吞吐量而編譯的子程式。該等內核對應於,例如,將要在該加速器406上運行之一可執行檔的可執行子分段。雖然在圖4的該實例中,該加速器406實現一VPU並且包括該額度管理器408、該CnC結構410、該資料結構411、該卷積引擎412、該DMA單元414、該RNN引擎416、該DSP 418,該記憶體420、以及該MMU 422,但該加速器406可以包括在圖4中所示那些CBB之另外的或替代的CBB。
在圖4的該實例中,在操作中,該第一排程器424針對分配給該卷積引擎412之工作負載節點載入對應於一工作負載節點之該等輸入緩衝器及一工作負載節點之輸出緩衝器的該等額度。例如,一輸入緩衝器係一工作負載節點被組配要從中讀取資料的一緩衝器,而一輸出緩衝器係一工作負載節點被組配來寫入資料的一緩衝器。在一些實例中,一第一工作負載節點的該輸入緩衝器可以是一第二工作負載節點的該輸出緩衝器。而且,該第一排程器424從該額度管理器408接收及/或以其他方式獲得額度。
在圖4的該實例中,在操作中,該第一排程器424選取分配給該卷積引擎412的一工作負載節點並判定該第一排程器424是否已經接收到額度的一臨界量,以便對儲存在該選取工作負載節點之該輸入緩衝器中的該資料上進行操作。例如,該第一排程器424把該輸入緩衝器接收自一生產者工作負載節點的一額度數量與該輸入緩衝器額度的一臨界數量進行比較。如果該第一排程器424尚未接收到額度的該臨界量,則該第一排程器424在分配給該卷積引擎412的另一個工作負載節點上重複該過程。
在圖4該所示的實例中,在操作中,如果該第一排程器424已經接收到額度的該臨界量以便對儲存在該選取工作負載節點之該輸入緩衝器中的該資料上進行操作,則該第一排程器424判定該第一排程器424是否已經接收到為了要把資料寫入到該選取工作負載節點之該輸出緩衝器的額度的一臨界量。例如,該第一排程器424把用於該輸出緩衝器接收自一消費者工作負載節點之額度的一數量與該選取工作負載節點之該輸出緩衝器之額度的一臨界數量進行比較。如果該第一排程器424尚未接收到額度的該臨界量,則該第一排程器424在分配給該卷積引擎412之另一個工作負載節點上重複該過程。如果該第一排程器424已經接收到額度的該臨界量以便把資料寫入到該輸出緩衝器,則該第一排程器424指出該選取的工作負載節點已準備好執行。隨後,該第一排程器424對分配給該卷積引擎412的其他工作負載節點重複這個過程。
在圖4的該實例中,在操作中,在分配給該卷積引擎412之該工作負載節點已經被分析了之後,該第一排程器424排程準備好可以執行的該等工作負載節點。該第一排程器424隨後根據該排程來分配一工作負載節點。在該分配的工作負載節點由該卷積引擎412執行之後,該第一排程器424把對應於該輸入緩衝器及/或該輸出緩衝器的該等額度發送至該額度管理器408。該第一排程器424判定在該排程中是否存在有待被執行之另外的工作負載節點。如果在該排程中存在有另外的工作負載節點,則該第一排程器424致使在該排程中的下一個工作負載節點將會在該卷積引擎412上被執行。
圖5係一實例排程器500的方塊圖,該實例排程器500可以實現圖3及4之該等排程器的一或多個。例如,該排程器500係圖3之該第一排程器326、該第二排程器328、該第三排程器330、該第四排程器332、及/或該第五排程器334;及/或圖4之該第一排程器424、該第二排程器426、該第三排程器428及/或該第四排程器430;及/或圖6之該排程器600;及/或圖7之該第一排程器722、該第二排程器724、該第三排程器726、及/或該第四排程器728的一種實例實現方式。
在圖5的該實例中,該排程器500包括一實例工作負載介面502、一實例緩衝器額度儲存器504、一實例額度比較器506、一實例工作負載節點分配器508、及一實例通信匯流排510。該排程器500係一種裝置,其判定何時與該排程器500相關聯的一CBB要執行已被分配給與該排程器500相關聯該CBB之一工作負載的一部分(例如,一工作負載節點)。
在圖5該所示的實例中,工作負載介面502係一裝置,其被組配來與外部於該排程器500、該緩衝器額度儲存器504、該額度比較器506、及/或該工作負載節點分配器508的其他裝置進行通信。例如,該工作負載介面502可以接收及/或以其他方式獲得將由與該排程器500相關聯之該CBB所執行的工作負載節點。附加地或替代地,該工作負載介面502可以從其他的排程器、其他的CBB、及/或其他裝置發送及/或接收額度。此外,該工作負載介面502可以載入對應於一工作負載節點的該等輸入緩衝器及/或一工作負載節點的該等輸出緩衝器及/或來自該緩衝器額度儲存器504的該等額度。
在一些實例中,該實例工作負載介面502實現用於介接的實例構件。該介接構件由可執行指令來實現,諸如至少由圖8之方塊802、818、及822來實現。例如,圖8的方塊802、818、及822的該等可執行指令可被執行在至少一個處理器上,諸如在圖9該實例中所展示的該實例處理器910及/或該實例加速器912。在其他的實例中,該介接構件係由硬體邏輯、硬體實現的狀態機、邏輯電路、及/或硬體、軟體、及/或韌體之任何其他組合來實現。
在圖5該所示的實例中,該緩衝器額度儲存器504係在該工作負載介面502、該額度比較器506、及/或該工作負載節點分配器508中至少一個之間的一共享儲存器。該緩衝器額度儲存器504係本地於該排程器500的一實體儲存器;然而,在其他實例中,該緩衝器額度儲存器504相對於該排程器500可以外部於其及/或以其他方式遠離於其。在另外的實例中,該緩衝器額度儲存器504可以是一虛擬儲存器。在5圖的該實例中,該緩衝器額度儲存器504係一永久性的儲存器(例如,ROM、PROM、EPROM、EEPROM、等等)。在其他的實例中,該緩衝器額度儲存器504可以是一持久性的BIOS或一快閃儲存器。在另外的實例中,該緩衝器額度儲存器504可以是一依電性記憶體。
在圖5的該實例中,該緩衝器額度儲存器504係與儲存額度相關聯的記憶體,該額度對應於工作負載節點的輸入緩衝器及/或與分配給與該排程器500相關聯該CBB之工作負載節點相關聯的工作負載節點之輸出緩衝器。例如,該緩衝器額度儲存器504可以被實現為一資料結構,該資料結構包括有用於分配給與該排程器500相關聯該CBB之每一個工作負載節點的欄位以及用於工作負載節點的每一個輸入緩衝器及/或與分配給與該排程器500相關聯該CBB之工作負載節點相關聯的工作負載節點之每一個輸出緩衝器的欄位。
在圖5該所示的實例中,該緩衝器額度儲存器504可以附加地或可替代地儲存已被分配給與該排程器500相關聯之該CBB的工作負載節點及/或對應於工作負載節點的輸入緩衝器及/或該等工作負載節點之輸出緩衝器的額度的一臨界量。而且,該緩衝器額度儲存器504包括與進出於每一個工作負載節點之輸入緩衝器及/或輸出緩衝器之額度的一臨界數量相關聯的一欄位。
在圖5的該實例中,當該工作負載節點係一生產者(例如,該工作負載節點產生要由另一工作負載節點所使用的資料)時,額度的該臨界數量對應於在一輸出緩衝器(例如,在該記憶體420中的一分割空間)中的空間的一臨界量,其在與該排程器500相關聯該CBB可以執行該生產者工作負載節點之前將要被達到。另外,當該工作負載節點係一消費者時(例如,該工作負載節點處理由另一工作負載節點所產生的資料),額度的該臨界數量對應於在一輸入緩衝器(例如,在該記憶體420中的一分割空間)中資料的一臨界量,其在與該排程器500相關聯該CBB可以執行該消費者工作負載節點之前將要被達到。
在一些實例中,該實例緩衝器額度儲存器504實現用於儲存的實例構件。該儲存構件可由諸如在圖8中所實現之可執行指令來實現。例如,該等可執行指令可以被執行在至少一個處理器上,諸如在圖9該實例中所展示的該實例處理器910及/或該實例加速器912。在其他的實例中,該儲存構件係由硬體邏輯、硬體實現的狀態機、邏輯電路、及/或硬體、軟體、及/或韌體之任何其他組合來實現。
在圖5該所示的實例中,該額度比較器506係一種裝置,其被組配來判定是否已經接收到額度的該臨界數量,額度的該臨界數量對應於工作負載節點的輸入緩衝器及/或分配給與該排程器500相關聯該CBB之工作負載節點的輸出緩衝器。該額度比較器506被組配成選擇分配給與該排程器500相關聯之該CBB的一工作負載節點。
在圖5的該實例中,該額度比較器506還另外地被組配來判定該排程器500是否已經接收到額度的一臨界量以便對儲存在該選取工作負載節點之該輸入緩衝器中的該資料上進行操作。例如,該額度比較器506把在該緩衝器額度儲存器504中與接收自一外部裝置(例如,該額度管理器408、該控制器322、等等)之額度數量相關聯的一欄位與在該緩衝器額度儲存器504中與該選取工作負載節點之輸入緩衝器之額度臨界數量相關聯的一欄位進行比較。如果該排程器500尚未接收到額度的該臨界量,則該額度比較器506在分配給與該排程器500相關聯之該CBB的另一工作負載節點上重複該過程。
在圖5該所示的實例中,如果該排程器500已經接收到額度的該臨界量以便對儲存在該輸入緩衝器中的資料上進行操作,則該額度比較器506判定該排程器500是否已經接收到額度的一臨界量以便可把資料寫入到用於該選取工作負載節點的該輸出緩衝器。例如,該額度比較器506把在該緩衝器額度儲存器504中與該選取工作負載的該輸出緩衝器接收自一外部裝置(例如,該額度管理器408、該控制器322、等等)之額度數量相關聯的一欄位與在該緩衝器額度儲存器504中與用於該輸出緩衝器之額度臨界數量相關聯的一欄位進行比較。
在圖5的該實例中,如果該排程器500尚未接收到額度的該臨界量,則該額度比較器506在分配給與該排程器500相關聯之該CBB的另一工作負載節點上重複該過程。如果該排程器500已經接收到額度的該臨界量以把資料寫入到該輸出緩衝器,則該額度比較器506指出該選取的工作負載節點已準備好執行。隨後,該額度比較器506對分配給與該排程器500相關聯之該CBB的額外工作負載節點重複這個過程。
在一些實例中,該實例額度比較器506實現用於比較的實例構件。該比較構件係由可執行指令來實現,諸如至少由圖8之方塊804、806、808、810、及812來實現。例如,圖8之方塊804、806、808、810、及812的該等可執行指令可被執行在至少一個處理器上,諸如在圖9該實例中所展示的該實例處理器910及/或該實例加速器912。在其他的實例中,該比較構件係由硬體邏輯、硬體實現的狀態機、邏輯電路、及/或硬體、軟體、及/或韌體之任何其他組合來實現。
在圖5的該實例中,該工作負載節點分配器508係一種裝置,該裝置排程分配給與該排程器500相關聯之該CBB的一或多個工作負載節點,以在與該排程器500相關聯的該CBB上來執行。例如,在已經分析了分配給與該排程器500相關聯之該CBB的該等工作負載節點之後,該工作負載節點分配器508排程該等已準備好要執行的工作負載節點。例如,該工作負載節點分配器508基於諸如一循環排程的一排程演算法來排程已準備好要執行的該等工作負載節點。該工作負載節點分配器508隨後根據該排程來分配一工作負載節點。在其他的實例中,該工作負載節點分配器508可以利用任何其他合適的仲裁演算法來排程該等已準備好要執行的工作負載節點。
在圖5該所示的實例中,由於該被排程的工作負載節點由與該排程器500相關聯的該CBB來執行,因此該工作負載介面502把與輸入緩衝器相關聯的該等額度發送到該工作負載介面502會從其接收該等額度的該外部裝置(例如,該額度管理器408,該控制器322、等等)。該工作負載節點分配器508還另外地判定在該排程中是否還有要被執行之另外的工作負載節點。如果在該排程中存在有另外的工作負載節點,則該工作負載節點分配器508會分配在該排程中下一個工作負載節點。
在一些實例中,該實例工作負載節點分配器508實現用於分配的實例構件。該分配構件係由可執行指令來實現,諸如至少由圖8之方塊814、816、及820來實現。例如,圖8之方塊814、816、及820的該等可執行指令可被執行在至少一個處理器上,諸如在圖9該實例中所展示的該實例處理器910及/或該實例加速器912。在其他的實例中,該分配構件係由硬體邏輯、硬體實現的狀態機、邏輯電路、及/或硬體、軟體、及/或韌體之任何其他組合來實現。
在本文揭露的實例中,該工作負載介面502、該緩衝器額度儲存器504、該額度比較器506、及該工作負載節點分配器508中的每一個與該排程器500的其他元件進行通信。例如,該工作負載介面502、該緩衝器額度儲存器504、該額度比較器506、及該工作負載節點分配器508經由一實例通信匯流排510進行通信。在本文揭露的一些實例中,該工作負載介面502、該緩衝器額度儲存器504、該額度比較器506、及該工作負載節點分配器508可經由任何合適的有線及/或無線通信系統進行通信。另外,在本文揭露的一些實例中,該工作負載介面502、該緩衝器額度儲存器504、該額度比較器506、及該工作負載節點分配器508中的每一個可經由任何合適的有線及/或或無線通信系統與外部於該排程器500之任何組件進行通信。
圖6係一實例排程器600的方塊圖,其展示出圖5該緩衝器額度儲存器504之更多的細節。該排程器600係圖3之該第一排程326、該第二排程器328、該第三排程器330、該第四排程332、及/或該第五排程334;及/或圖4之該第一排程器424、該第二排程器426、該第三排程器428及/或該第四排程器430;及/或圖5的該排程器500;及/或圖7之該第一排程器722、該第二排程器724、該第三排程器726、及/或該第四排程器728的一種實例實現方式。
在圖6的該實例中,該排程器600包括該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例該額度比較器506、及該實例工作負載排程節點508。該排程器600係一種裝置,其判定何時與該排程器600相關聯的一CBB要執行已被分配給與該排程器600相關聯該CBB之一工作負載的一部分(例如,一工作負載節點)。
在圖6該所示的實例中,工作負載介面502被耦合到外部於該排程器600、該緩衝器額度儲存器504及該工作負載節點分配器508的一或多個裝置。該工作負載介面502係一裝置,其被組配來與外部於該排程器600、該緩衝器額度儲存器504、及/或該工作負載節點分配器508的其他裝置進行通信。例如,該工作負載介面502可以接收及/或以其他方式獲得將由與該排程器600相關聯之該CBB所執行的工作負載節點。附加地或替代地,該工作負載介面502可把額度發送到外部於該排程器600的一或多個裝置及/或從外部於該排程器600的一或多個裝置接收額度。此外,該工作負載介面502可載入對應於一工作負載節點的該等輸入緩衝器及/或一工作負載節點的該等輸出緩衝器及/或來自該緩衝器額度儲存器504的額度。
在圖6該所示的實例中,該緩衝器額度儲存器504係在該工作負載介面502、該額度比較器506、及/或該工作負載節點分配器508中至少一個之間的一共享儲存器。該緩衝器額度儲存器504係本地於該排程器500的一實體儲存器。然而,在其他實例中,該緩衝器額度儲存器504相對於該排程器500可以外部於其及/或以其他方式遠離於其。在另外的實例中,該緩衝器額度儲存器504可以是一虛擬儲存器。在5圖的該實例中,該緩衝器額度儲存器504係一永久性的儲存器(例如,ROM、PROM、EPROM、EEPROM、等等)。在其他的實例中,該緩衝器額度儲存器504可以是一持久性的BIOS或一快閃儲存器。在另外的實例中,該緩衝器額度儲存器504可以是一依電性記憶體。
在圖6的該實例中,該緩衝器額度儲存器504係一種資料結構,其包括有對應於一第一工作負載節點WN[0]、一第二工作負載節點WN[1]、以及一第n 工作負載節點WN[N]的列。該緩衝器額度儲存器504還包括對應用於一第一消費者(例如,消費者[0])之一輸入緩衝器、用於第l 消費者(例如,消費者[l ])之一輸入緩衝器、用於一第一生產者(例如,生產者[0])的一輸出緩衝器、以及用於一第m 個生產者(例如,生產者[m])的一輸出緩衝器的行。該緩衝器額度儲存器504更包括一行,該行對應於用於每一個工作負載節點之輸入緩衝器及/或每個工作負載節點之輸出緩衝器之額度的一臨界數量。
在圖6該所示的實例中,該第一工作負載節點WN[0]、該第二工作負載節點WN[1]、及該第n 工作負載節點WN[n]中的每一個被分配給與該排程器600相關聯的該CBB。在緩衝器額度儲存器504中,與該第一工作負載節點WN[0]、該第二工作負載節點WN[1]、及該第n 工作負載節點WN[n]相對應的該等列以及與用於該第一消費者(例如,消費者[0])的該輸入緩衝器、用於該第l 個消費者(例如,消費者[l])的該輸入緩衝器、用於該第一生產者(例如,生產者[0])的該輸出緩衝器、及用於該第m 生產者(例如,生產者[m])的該輸出緩衝器相對應的該等行之間的該交點代表對應於從用於該緩衝器之一或多個外部裝置所接收到該額度數量的欄位。此外,對應於每一個工作負載節點的輸入緩衝器及/或每一個工作負載節點的輸出緩衝器之額度該臨界數量的該行表示在與該排程器600相關聯之該CBB可以操作在該個別工作負載節點上之前針對一緩衝器將要被達到之額度的一臨界數量。
在圖6的該實例中,在該緩衝器額度儲存器504中對應於該第一工作負載節點WN[0]、該第二工作負載節點WN[1]、及該第n 工作負載節點WN[n]之該等列以及對應用於該第一消費者(例如,消費者[0])的該輸入緩衝器、用於該第l 消費者(例如,消費者[l])的該輸入緩衝器之該等行之間該交點處的該等欄位由一外部裝置(例如,該額度管理器408、該控制器322、等等)被初始化為零值。另外,在該緩衝器額度儲存器504中對應於該第一工作負載節點WN[0]、該第二工作負載節點WN[1]、及該第n 工作負載節點WN[n]之該等列以及對應用於該第一生產者(例如,生產者[0])的該輸出緩衝器、及用於該第m 生產者(例如,生產者[m])的該輸出緩衝器相之該等行之間該交點處的該等欄位由一外部裝置(例如,該額度管理器408、該控制器322、等等)被初始化為對應於在該相關聯緩衝器中所分割之一記憶體量值。此外,對應於輸入緩衝器及/或輸出緩衝器之額度該臨界數量的該行係由一外部裝置(例如,該額度管理器408、該控制器322、執行在該主機處理器306上的軟體、等等)來初始化。
在圖6該所示的實例中,該額度比較器506被耦合到該緩衝器額度器504及該工作負載節點分配器508。該額度比較器506係一種裝置,其被組配來判定是否已經接收到對應於工作負載節點的輸入緩衝器及/或分配給與排該程程器600相關聯該CBB之工作負載節點的輸出緩衝器之額度的該臨界數量。在圖6的該實例中,該工作負載節點分配器508被耦合到該工作負載介面502、該緩衝器額度儲存器504、該額度比較器506、以及在該排程器600外部的一或多個裝置。該工作負載節點分配器508例如係一種裝置,其排程分配給與該排程器600相關聯之該CBB的一或多個工作負載節點,以在與該排程器600相關聯之該CBB上來執行。
在圖6的該實例中,在操作中,當該工作負載介面502從一外部裝置(例如,該額度管理器408、該控制器322、等等)接收及/或以其他方式獲得工作負載節點時,該工作負載介面502把該等工作負載節點載入到在該緩衝器額度儲存器504中與該等工作負載節點相對應的各個欄位中。此外,該額度比較器506選擇分配給與該排程器600相關聯之該CBB的一工作負載節點。
在圖6該所示的實例中,該額度比較器506判定該排程器600是否已經接收到額度的一臨界量,以便對儲存在該選擇工作負載節點之該輸入緩衝器中的該資料上進行操作。例如,該額度比較器506把在該緩衝器額度儲存器504中與接收自一外部裝置(例如,該額度管理器408、該控制器322、等等)之一額度數量相關聯的該欄位和在該緩衝器額度儲存器504中與該選擇工作負載節點之該輸入緩衝器的額度臨界數量相關聯的該欄位進行比較。額度的該臨界數量對應於在一輸入緩衝器(例如,在該記憶體420中的一分割空間)中的一資料臨界量,在與該排程器600相關聯之該CBB可以執行該消費者工作負載節點之前,該臨界量要被達到。如果該排程器600尚未接收到額度該臨界量,則該額度比較器506會在分配給與該排程器600相關聯之該CBB的另一工作負載節點上重複該過程。
在圖6該所示的實例中,如果該排程器600已經接收到額度的該臨界量以便對儲存在該輸入緩衝器中的該資料上進行操作,則該額度比較器506判定該排程器600是否已經接收到額度的一臨界量用以把資料寫入到用於該選取工作負載節點的該輸出緩衝區。例如,該額度比較器506把在該緩衝器額度儲存器504中與接收自用於該選取工作負載之該輸出緩衝器的一外部裝置(例如,該額度管理器408、該控制器322、等等)之額度數量相關聯的該欄位和在該緩衝器額度儲存器504中與用於該輸出緩衝器之額度臨界數量相關聯的一欄位進行比較。該額度臨界數量對應於在一輸出緩衝器(例如,在記憶體中的一分割空間)中空間的一臨界量,在與該排程器600相關聯之該CBB可以執行該生產者工作負載節點之前,該臨界量要被達到。
在圖6的該實例中,如果該排程器600尚未接收到額度的該臨界量,則該額度比較器506會在分配給與該排程器600相關聯之該CBB的另一工作負載節點上重複該過程。如果該排程器600已經接收到額度的該臨界量以便把資料寫入該輸出緩衝器,則該額度比較器506指出該選取工作負載節點已準備好執行。隨後,該額度比較器506對分配給與該排程器600相關聯該CBB之另外的工作負載節點重複這個過程。
在圖6的該實例中,該工作負載節點分配器508係一種裝置,該裝置排程分配給與該排程器600相關聯之該CBB的一或多個工作負載節點,以在與該排程器600相關聯之該CBB上執行。例如,在分配給與該排程器600相關聯之該CBB的該等工作負載節點已被分析了之後,該工作負載節點分配器508排程該等已準備好執行的工作負載節點。例如,該工作負載節點分配器508基於諸如一循環排程的一種排程演算法來排程該等已準備好執行的工作負載節點。該工作負載節點分配器508隨後根據該排程來分配一工作負載節點。在其他的實例中,該工作負載節點分配器508可以利用任何其他合適的仲裁演算法來排程該等已準備好執行的工作負載節點。
在圖6該所示的實例中,由於該被排程的工作負載節點係由與該排程器600相關聯的該CBB來執行,因此該工作負載介面502把與輸入緩衝器相關聯的該等額度發送到該工作負載介面502會從其接收該等額度的該外部裝置(例如,該額度管理器408,該控制器322、等等)。該工作負載節點分配器508還另外地判定在該排程中是否還有要被執行之另外的工作負載節點。如果在該排程中存在有另外的工作負載節點,則該工作負載節點分配器508會分配在該排程中下一個工作負載節點。
圖7係一實例圖700的一圖形說明,該圖700代表在一實現有管線及緩衝器之異構系統的一加速器上執行的一工作負載。例如,該加速器係該第一加速器310a,而該異構系統係圖3的該異構系統304。該實例圖700包括一實例第一工作負載節點702 (WN[0])、一實例第二工作負載節點704 (WN[1])、一實例第三工作負載節點706 (WN[2])、一實例第四工作負載節點708 (WN[3])、及一實例第五工作負載節點710 (WN[4])。在圖7的該實例中,該加速器被組配成基於來自指派工作負載節點給各種CBB之一實例額度管理器712的一排程來執行由該圖700所表示的該工作負載。例如,該額度管理器712及/或另一控制器指派該第一工作負載節點702 (WN[0])給一實例第一CBB 714、該第二工作負載節點704 (WN[1])給一實例第二CBB 716、該第三工作負載節點706 (WN[2])給一實例第三CBB 718、該第四工作負載節點708 (WN[3])給一實例第四CBB 720、及該第五工作負載節點710 (WN[4])給一實例第二CBB 716。
在圖7的該實例中,該實例第一CBB 714、該實例第二CBB 716、該實例第三CBB 718、及該實例第四CBB 720中的每一個包括一實例第一排程器722、一實例第二排程器724、一實例第三排程器726、及一實例第四排程器728。該第一排程器722、該第二排程器724、該第三排程器726、及該第四排程器728中的每一個都可以由圖5的該排程器500及/或圖6的該排程器600來實現。
在圖7該所示的實例中,該第一工作負載節點702 (WN[0])及該第二工作負載節點704 (WN[1])與該實例第一緩衝器730相關聯。該第一緩衝器730係該第一工作負載節點702 (WN[0])的一輸出緩衝器及該第二工作負載節點704 (WN[1])的一輸入緩衝器。該第二工作負載節點704 (WN[1])及該第三工作負載節點706 (WN[2])與該實例第二緩衝器732相關聯。該第二緩衝器732係該第二工作負載節點704 (WN[1])的一輸出緩衝器及該第三工作負載節點706 (WN[2])的一輸入緩衝器。該第四工作負載節點708 (WN[3])及該第五工作負載節點710 (WN[4])與該實例第三緩衝器734相關聯。該第三緩衝器734係該第四工作負載節點708 (WN[3])的一輸出緩衝器及該第五工作負載節點710 (WN[4])的一輸入緩衝器。該第一緩衝器730、該第二緩衝器732、及該第三緩衝器734中的每一個都可以由一種循環緩衝器來實現。在圖7的該實例中,該第一緩衝器730、該第二緩衝器732、及該第三緩衝器734中的每一個包括該加速器之記憶體的五個分割,每一個分割可以儲存一資料塊。
在圖7該所示的實例中,由於該第一工作負載節點702 (WN[0])係一生產者工作負載節點,所以額度管理器712以用於該第一緩衝器730的五個額度來初始化該第一排程器722。類似地,因為該第二工作負載節點704 (WN[1])係一生產者工作負載節點,所以該額度管理器712以用於該第二緩衝器732的五個額度來初始化該第二排程器724。另外,由於該第四工作負載節點708 (WN[3])係一生產者工作負載節點,所以該額度管理器712以用於該第三緩衝器734的五個額度來初始化該第四排程器728。
提供給該第一排程器722、該第二排程器724、及該第四排程器728中的每一個的該等五個額度代表該第一緩衝器730、該第二緩衝器732、及該第三緩衝器734的該大小。另外,由於該第二工作負載節點704 (WN[1])也是一消費者工作負載節點,所以該額度管理器712以用於該第一緩衝器730的零額度來初始化該第二排程器724。此外,因為該第三工作負載節點706 (WN[2])係一消費者工作負載節點,所以該額度管理器712以用於該第二緩衝器732的零額度來初始化該第三排程器726。再者,由於該第五工作負載節點710 (WN[4])係一消費者工作負載節點,所以該額度管理器712以用於該第三緩衝器734的零額度來初始化該第二排程器724。
在圖7的該實例中,因為該第一排程器722已經接收到用於進出第一工作負載節點702 (WN[0])之該等輸入緩衝器及該等輸出緩衝器之額度該臨界數量,該第一排程器722分配該第一工作負載節點702 (WN[0])在該第一CBB 714上執行。另外,由於該第四排程器728已經接收到進出第四工作負載節點708 (WN[3])之該等輸入緩衝器及該等輸出緩衝器之額度的該臨界數量,該第四排程器728分配該第四工作負載節點708 (WN[3])在該第四CBB 720上執行。因為該第一工作負載節點702 (WN[0])在該第一CBB 714 上執行,該第一CBB 714把資料發送到該第一緩衝器730。類似地,因為該第四工作負載節點708 (WN[3])在該第四CBB 720上執行,該第四CBB 720把資料發送到該第三緩衝器734。
在圖7該所示的實例中,因為該第一CBB 714及該第四CBB 720每一個分別發送與該第一工作負載節點702 (WN[0])及該第四工作負載節點708 (WN[3])相關聯的資料塊,該第一排程器722及該第四排程器728分別針對從該第一CBB 714及該第四CBB 720發送給該第一緩衝器730及該第三緩衝器734的每一個資料塊把額度發送給該額度管理器712。該額度管理器712把接收自該第一排程器722的該等額度發送給該第二排程器724,並且把接收自該第四排程器728的該等額度發送給該第二排程器724。因為該第四CBB 720執行該第四工作負載節點708 (WN[3]),該第四CBB 720產生兩個資料塊以儲存在該第三緩衝器734中。類似地,因為該第一CBB 714執行該第一工作負載節點702 (WN[0]),該第一CBB 714產生五個資料塊以儲存在該第一緩衝器730中。
在圖7的該實例中,該第四CBB 720執行該第四工作負載節點708 (WN[3])的速度比該第一CBB 714執行該第一工作負載節點702 (WN[0])要快。雖然在該第二緩衝器732中有記憶體可用,但因為該第五負載節點710 (WN[4])所依賴的該資料在該第二工作負載節點704 (WN[1])所依賴的該資料就緒之前就前準備好了,故該第二排程器724選擇該第五工作負載節點710 (WN[4])在該第二CBB 716上執行,而不是選擇該第二工作負載節點704(WN[1])。
在圖7該所示的實例中,因為該第五工作負載節點710 (WN[4])在該第二CBB 716上執行並且該第二CBB 716消費儲存在該第三緩衝器734中的資料塊,對於由該第二CBB 716消費來自該第三緩衝器734的每一個資料塊,該第二排程器724把與該第三緩衝器734相關聯的該等額度發送回給該額度管理器712。隨後,在達到了用於該第一緩衝器730及該第二緩衝器732之額度的該等臨界量之後,該第二排程器724分配該第二工作負載節點704 (WN[1])以在該第二CBB 716上執行。隨著該第二CBB 716產生與該第二工作負載節點704 (WN[1])相關聯的資料塊,並把該資料輸出至該第二緩衝器732時,對於從該第二CBB 716向該第二緩衝器732發送的每一個資料塊,該第二排程器724把與該第二緩衝器732相關聯的該等額度發送給該額度管理器712。
在圖7的該實例中,該額度管理器712已經從該第二排程器724接收到與該第二緩衝器732相關聯的額度,會把與該第二緩衝器732相關聯的該等額度發送給該第三排程器726。當該第三排程器726接收到與該第二緩衝器732相關聯之額度的一臨界量時,該第三排程器726會分配該第三工作負載節點706(WN[2])在該第三CBB 718上執行。當該第三CBB 718執行該第三工作負載節點706 (WN[2])並且該第三CBB 718消耗儲存在該第二緩衝器732中的資料塊時,對於由該第三CBB 718所消耗之來自該第二緩衝器732的每一個資料塊,該第三排程器726把與該第二緩衝器732相關聯的額度發送回給該額度管理器712。
在附加或替代的實例中,該第一CBB 714可以對應於圖4的該卷積引擎412而該第一排程器722可以對應於圖4的該第一排程器424。在一些實例中,該第二CBB 716可以對應於圖4的該RNN引擎416而該第二排程器724可以對應於圖4的該第三排程器428。在另外的實例中,該第三CBB 718可以對應於圖4的該DMA單元414而該第三排程器726可以對應於圖4的該第二排程器426。在一些實例中,該第四CBB 720可以對應於圖4的該DSP 418而該第四排程器728可以對應於圖4的該第四排程器430。
雖然實現圖3的該第一排程器326、該第二排程器328、該第三排程器330、該第四排程器332、及/或該第五排程334;及/或圖4的該第一排程器424、該第二排程器426、該第三排程器428、及/或該第四排程器430;及/或圖7的該第一排程器722、該第二排程器724、該第三排程器726、及/或該第四排程器728的一種實例方式被圖示在圖5及/或圖6中,但在圖5及/或圖6中所圖示出之該等元件、過程及/或裝置中的一或多個可被組合、分割、重新排列、省略、消除及/或以任何其他的方式來實現。此外,該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例額度比較器506、該實例工作負載節點分配器508、該實例通信匯流排510、及/或更為一般地,圖5的該實例排程器500及/或圖6的該實例排程器600可以通過硬體、軟體、韌體及/或硬體、軟體及/或韌體之任何組合來實現。因此,例如,該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例額度比較器506、該實例工作負載節點分配器508、該實例通信匯流排510、及/或更為一般地,圖5的該實例排程器500及/或圖6的該實例排程器600之任一的實現可以藉由一或多類比或數位電路、邏輯電路、一或多個可規劃處理器、一或多個可規劃控制器、一或多個圖形處理單元(GPU)、一或多個數位信號處理器 (DSP)、一或多個特定應用積體電路(ASIC)、一或多個可規劃邏輯裝置(PLD)及/或一或多個現場可規劃邏輯裝置(FPLD)來達成。當閱讀本專利之該裝置或系統請求項之任一以涵蓋一純軟體及/或韌體實現方式時,該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例額度比較器506、該實例工作負載節點分配器508、該實例通信匯流排510、及/或更為一般地,圖5的該實例排程器500及/或圖6的該實例排程器600之至少一個在此被明確地限定為包括一非暫時性讀電腦可讀取儲存裝置或儲存碟,諸如一記憶體、一數位多功能光碟(DVD)、一光碟(CD)、一藍光碟、等等,在其上包括有該軟體及/或韌體。更進一步的是,圖5的該實例排程器500及/或圖6的該實例排程器600可以包括除了在圖5及/或圖6中所示的那些元件、過程及/或裝置之外的一或多個元件、過程及/或裝置,或替代在圖5及/或圖6中所示的那些,及/或可以包括該等所示出之元件、過程及裝置中之任一或全部的一個以上。如在本文中所使用的,短語「進行通信」包括有各種變型,涵蓋透過一或多個中間組件的直接通信及/或間接通信,並且不需要直接的實體(例如,有線)通信及/或恆定的通信,而是還包括在定期間隔、經排程的間隔、非週期性的間隔及/或一次性事件的選擇性通信。
一種表示用於實現圖5該排程器500及/或圖6該排程器600之實例硬體邏輯、機器可讀取指令、硬體實現的狀態機、及/或其之任何組合的流程圖被展示在圖8中。該等機器可讀取指令可以是一或多個可執行程式或一可執行程式的一或多個部分,可由一電腦處理器來執行,諸如在下面連接圖9所討論之該實例處理器平台900中所示的該處理器910及/或該加速器912。該程式可被體現實現在儲存於一非暫時性電腦可讀取儲存媒體上的軟體中,該儲存媒體諸如一CD-ROM、一軟碟、一硬碟、一DVD、一藍光碟、或與該處理器910及/或該加速器912相關聯的一記憶體,但是該整個程式及/或其部分可以由該處理器910及/或該加速器912以外的一裝置來執行及/或被具體實現在韌體或專用硬體中。此外,儘管係參考在圖8中所示的該流程圖來描述了該實例程式,但是實現圖5該實例排程器500及/或圖6該排程器600之許多其他的方法可被替代地使用。例如,可以改變該等方塊的該執行順序、及/或該等描述方塊的一些可被改變、消除、或組合。另外地或替代地,該等描述方塊的任一或全部可以藉由一或多個無需執行軟體或韌體即可執行該相應操作之硬體電路(例如,分立的及/或整合式的類比及/或數位電路、一FPGA、一ASIC、一比較器、一運算放大器(op-amp)、一邏輯電路、等等)來實現。
本文所描述的該等機器可讀取指令可以以一壓縮格式、一加密格式、一分段格式、一經編譯的格式、一可執行格式、一套件化的格式、等等中的一或多種來儲存。本文所描述的該等機器可讀取指令可被儲存為資料(例如,指令的一部分、代碼、代碼的表示、等等),其可被利用來創建、製造、及/或產生機器可執行指令。例如,該等機器可讀取指令可被分段並且被儲存在一或多個儲存裝置及/或運算裝置(例如,伺服器)上。該等機器可讀取指令可能需要安裝、修正、改編、更新、合併、補充、組配、解密、解壓縮、解封裝、分發、重新分配、編譯、等等中的一或多項,以便使它們可直接讀取、可直譯、及/或可由運算裝置及/或其他機器來執行。例如,該等機器可讀取指令可被儲存在多個部分中,這些部分被分別地壓縮、加密、並被儲存在分開的運算裝置上,其中這些部分當其被解密、解壓縮、及組合後,會形成一組可執行指令,這些可執行指令實現了一程式,諸如在本文中所描述者。
在另一個實例中,該等機器可讀取指令可以以它們可被一電腦所讀取的一狀態來被儲存,但是需要添加一程式庫(例如,一動態鏈接程式庫(DLL))、一軟體開發套件(SDK)、一應用程式規劃介面(API)、等等,以便在一特定的運算裝置或其他的裝置上執行該等指令。在另一個實例中,在該等機器可讀取指令及/或該(等)相應的程式可被整體或部分執行之前,該等機器可讀取指令可能需要被組配(例如,儲存設置、資料輸入、記錄網路位址、等等)。因此,該等揭露的機器可讀取指令及/或相應的程式旨在涵蓋這樣的機器可讀取指令及/或程式,而與該等機器可讀取指令及/或程式當被儲存或以其他方式閒置或在運輸中之該特定的格式或狀態無關。
本文所描述的該等機器可讀取指令可由任何過去、現在、或未來的指令語言、腳本語言、編程語言、等等來表示。例如,可以使用以下任何一種語言來表示該等機器可讀取指令:C、C++、Java、C#、Perl、Python、JavaScript、超文字標記語言(HTML)、結構化查詢語言(SQL)、Swift、等等。
如以上所述,圖8的該等實例程序可以使用可執行指令(例如,電腦及/或機器可讀取指令)來實現,而該等可執行指令係被儲存在一非暫時性的電腦及/或機器可讀取媒體上諸如一硬碟、一快閃記憶體、一唯讀記憶體、一光碟、一數位多功能碟、一快取記憶體、一隨機存取記憶體及/或任何其他的儲存裝置或儲存碟上,其中資訊被儲存成任何種的持續時間(例如,延長的時間段、永久地、短暫地、暫時性的緩衝、及/或用於該資訊的快取)。如在本文中所使用的,非暫時性的電腦可讀取媒體該術語被明確地限定為包括任何類型的電腦可讀取儲存裝置及/或儲存碟,並且排除傳播信號並排除傳輸媒體。
「包括有」及「包含有」(及其所有的形式及時態)在本文中被使用作為開放式的術語。因此,每當一請求項採用任何形式的「包括」或「包含」(例如,包含、包括、包含有、包括有、具有、等等)作為一前言或在一任何種類的請求項敘述中時,應被理解的是在不超出該相應請求項或敘述之範圍的情況下,可以存在其他的元素、項目、等等。如在本文中所使用的,當短語「至少」被使用,例如在一請求項前言中作為一過渡用語時,其以與該用語「包含有」及「包括有」係開放式之相同的方式亦係開放式的。當該用語「及/或」被使用時,例如,以諸如A、B、及/或C的一形式,其係指A、B、C的任何組合或子集合,諸如(1)單獨A、(2)單獨B、(3)單獨C、(4)A與B、(5) A與C、(6)B與C、(7)A與B且與C。如本文在描述結構、組件、項目、物件及/或事物的上下文中所使用的,短語「A及B中的至少一個」旨在指包括有(1)至少一個A、(2)至少一個B、及(3)至少一個A及至少一個B中任何一個的實現方式。類似地,如本文在描述結構、組件、項目、物件及/或事物的上下文中所使用的,短語「A或B中的至少一個」旨在指包括有(1)至少一個A、(2)至少一個B、及(3)至少一個A及至少一個B中任何一個的實現方式。如本文在描述程序、指令、動作、活動及/或步驟的該效能或執行之上下文中所使用的,短語「A及B中的至少一個」旨在指包括有(1)至少一個A、(2)至少一個B、及(3)至少一個A及至少一個B中任何一個的實現方式。類似地,如本文在描述程序、指令、動作、活動及/或步驟的該效能或執行之上下文中所使用的,短語「A或B中的至少一個」旨在指包括有(1)至少一個A、(2)至少一個B、及(3)至少一個A及至少一個B中任何一個的實現方式。
如在本文中所使用的,單數引用(例如,「一」、「一個」、「第一」、「第二」、等等)不排除有多個存在。如在本文中所使用的,術語「一」或「一個」實體是指該實體的一或多個。術語「一」(或「一個」)、「一或多個」、及「至少一個」在本文中可被互換地使用。此外,儘管被單獨地列出,但是複數個構件、元件或方法動作可由例如一單一單元或處理器來實現。另外,儘管各別特徵可被包括在不同的實例或請求項中,但是這些特徵可以被組合,並且被包括在不同的實例或請求項中並不意味著特徵之一種組合係不可行及/或不利的。
圖8係一程序800的一種流程圖表示,該程序800可由機器可讀取指令來實現,該機器可讀取指令可以被執行以實現圖5的該排程器500及/或圖6的該排程器600。該程序800始於方塊802,其中該工作負載介面502把對應於進出分配給與該排程器500及/或該排程器600相關聯該CBB之工作負載節點的該等輸入緩衝器及/或輸出緩衝器之額度載入到該緩衝器額度儲存器504中。
在圖8該所示的實例中,該程序800繼續在方塊804,其中該額度比較器506選擇分配給與該排程器500及/或該排程器600相關聯之該CBB的一工作負載節點。在方塊806,該額度比較器506判定該排程器500及/或該排程器600是否已經接收到額度的一臨界量,以便對儲存在該選取工作負載節點之該輸入緩衝器中的該資料上進行操作。例如,該額度比較器506把與接收自一外部裝置(例如,該額度管理器408、該控制器322、等等)之額度的一數量相關聯的該陣列或其他資料結構中的該欄位和與該選取工作負載節點之該輸入緩衝器之額度的一臨界數量相關聯的該陣列或其他資料結構中的該欄位進行比較。如果該額度比較器506判定該排程器500及/或該排程器600尚未接收到額度的該臨界量以對儲存在該選取工作負載節點之該輸入緩衝器中的該資料上進行操作(方塊806:否),則該程序800繼續進行到方塊812。
在圖8的該實例中,如果該額度比較器506判定該排程器500及/或該排程器600已經接收到額度的該臨界量用以對儲存在輸入緩衝器中的資料上進行操作(方塊806:是),則該程序800進行到方塊808。在方塊808,該額度比較器506判定該排程器500及/或該排程器600是否已經接收到額度的一臨界量用以把資料寫入到用於該選取工作負載節點的該輸出緩衝器。例如,該額度比較器506把與從該選取工作負載節點之該輸出緩衝器的一外部裝置(例如,該額度管理器408、該控制器322、等等)所接收到之額度數量相關聯的該陣列或其他資料結構中的一欄位和與該輸出緩衝器之額度的一臨界數量相關聯的該陣列或其他資料結構中的一欄位進行比較。如果該額度比較器506判定該排程器500及/或該排程器600尚未接收到額度的該臨界量(方塊808:否),則該程序800前進到方塊812。如果該額度比較器506判定該排程器500及/或該排程器600已經接收到額度的該臨界量用以把資料寫入到該輸出緩衝器(方塊808:是),則在方塊810該額度比較器506指出該選取工作負載節點已準備好執行。
在圖8的該實例中,在方塊812,該額度比較器506判定是否還有要被處理之一另外的工作負載節點。如果該額度比較器506判定存在有要處理之一另外的工作負載節點(方塊812:是),則該額度比較器506選擇一另外的工作負載節點,並且該程序800進行到方塊806。如果該額度比較器506判定沒有另外要處理的工作負載節點(方塊812:否),則該程序800進行到方塊814。
在圖8該所示的實例中,在方塊814,該工作負載節點分配器508排程該等已準備好執行的工作負載節點。在方塊816,該工作負載節點分配器508根據該排程分配一工作負載節點。在方塊818,當該被分配的工作負載節點係由與該排程器500及/或該排程器600相關聯的該CBB來執行時,該工作負載介面502把與該輸入緩衝器相關聯的額度發送給該工作負載介面502從其接收該等額度的該外部裝置(例如,該額度管理器408、該控制器322、等等)。
在圖8該所示的實例中,在方塊820,該工作負載節點分配器508判定在該排程中是否存在有待被執行之另外的工作負載節點。如果該工作負載節點分配器508判定在該排程中存在有另外的工作負載節點(方塊820:是),則該程序800前進至方塊816。如果該工作負載節點分配器508判定在該排程中沒有另外的工作負載節點(方塊820:否),則該程序800進行到方塊822。
在圖8的該實例中,在方塊822,該工作負載介面502判定是否要繼續操作。例如,將導致該工作負載介面502判定要繼續操作的一狀況為包括接收到另外的工作負載節點。如果該工作負載界面502判定要繼續操作(方塊822:是),則該程序800進行到方塊802。如果該工作負載界面502判定不繼續操作(方塊822:否),則該程序800終止。
圖9係一實例處理器平台900的一方塊圖,該處理器平台900被建構來執行圖8的該等指令以實現圖5該排程器500及/或圖6該排程器600的一或多個實例。該處理器平台900可以是,例如,一伺服器、一個人電腦、一工作站、一自我學習機器(例如,一神經網路)、一行動裝置(例如,一蜂巢式電話、一智慧型手機、一平板電腦諸如一iPadTM )、一個人數位助理(PDA)、一網際網路家電、一DVD播放器、一CD播放器、一數位錄影機、一藍光播放器、一遊戲控制台、一個人視訊錄影機、一機上盒、一耳機或其他可穿戴裝置、或任何其他類型的運算裝置。
該圖示實例的該處理器平台900括一處理器910及一加速器912。該圖示實例的該處理器910係硬體。例如,該處理器910可以由來自任何所欲族系或製造商之一或多個積體電路、邏輯電路、微處理器、GPU、DSP、或控制器來實現。該硬體處理器可以是一基於半導體(例如,基於矽)的裝置。另外,該加速器912可由例如來自任何所欲族系或製造商之一或多個積體電路、邏輯電路、微處理器、GPU、DSP、FPGA、VPU、控制器、及/或其他CBB來實現。該圖示實例的加速器912係硬體。該硬體加速器可以是基於半導體(例如,基於矽)的裝置。在該實例中,該加速器912實現該實例卷積引擎312、該實例RNN引擎314、該實例記憶體316、該實例MMU 318、該實例DSP 320、該實例控制器322、及該實例DMA單元324。此外,該實例卷積引擎312、該實例RNN引擎314、該實例DMA單元324、該實例DSP 320、及該實例控制器322的每一個分別包括該實例第一排程器326、該實例第二排程器328、該實例第三排程器330、該實例第四排程器332、及該實例第五排程器334。在9圖的該實例中,該實例第一排程器326、該實例第二排程器328、該實例第三排程器330、該實例第四排程器332、及該實例第五排程器334中的每一個包括該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例額度比較器506、該實例工作負載節點分配器508,及/或更一般地,該排程器500。
在附加或替代的實例中,該處理器910實現該實例卷積引擎312、該實例RNN引擎314、該實例記憶體316、該實例MMU 318、該實例DSP 320、該實例控制器322、及該實例DMA單元324。此外,在這樣的附加或替代的實例中,該實例卷積引擎312、該實例RNN引擎314、該實例DMA單元324、該該實例DSP 320、及該實例控制器322的每一個分別包括該實例第一排程器326、該實例第二排程器328、該實例第三排程器330、該實例第四排程器332、及該實例第五排程器334。在這樣附加或替代的實例中,該實例第一排程器326、該實例第二排程器328、該實例第三排程器330、該實例第四排程器332、及該實例第五排程器334的每一個包括該實例工作負載介面502、該實例緩衝器額度儲存器504、該實例額度比較器506、該實例工作負載節點分配器508、及/或更一般地,該排程器500。
該所示實例的該處理器910包括一本地記憶體911(例如,一快取記憶體)。該所示實例的該處理器910經由一匯流排918與包括有一依電性記憶體914及一非依電性記憶體916的一主記憶體進行通信。此外,該所示實例的加速器912包括一本地記憶體913(例如,一快取記憶體)。該所示實例的該加速器912經由該匯流排918與包括有該依電性記憶體914及該非依電性記憶體916的一主記憶體進行通信。該依電性記憶體914可由同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)及/或任何其他類型的隨機存取記憶體裝置來實現。該非依電性記憶體916可由快閃記憶體及/或任何其他所欲類型的儲存裝置來實現。對該主記憶體914、916的存取係由一記憶體控制器來控制的。
該所示實例的該處理器平台900還包括一介面電路920。該介面電路920可由任何類型的介面標準來實現,諸如一以太網路介面、一通用串列匯流排(USB)、一藍牙介面、一近場通信(NFC)介面、及/或一PCIe介面。
在該所示的實例中,一或多個輸入裝置922被連接到該介面電路920。該(等)輸入裝置922允許一使用者輸入資料及/或命令進入到該處理器910及/或加速器912中。該(等)輸入裝置可由例如一音訊感測器、一麥克風、一相機(靜態或視訊)、一鍵盤、一按鈕、一滑鼠、一觸控螢幕、一觸控板、一軌跡球、isopoint及/或一語音識別系統來實現。
一或多個輸出裝置924也被連接到該所示實例的該介面電路920。該等輸出裝置924可例如由顯示裝置(例如,一發光二極體(LED)、一有機發光二極體(OLED)、一液晶顯示器(LCD)、一陰極射線管顯示器(CRT)、一橫向電場效應(IPS)顯示器、一觸控螢幕、等等)、一觸覺輸出裝置、一印表機及/或揚聲器來實現。因此,該所示實例的該介面電路920通常包括一圖形驅動卡、一圖形驅動晶片及/或一圖形驅動處理器。
該所示實例之該介面電路920還包括一通信裝置諸如一發射器、一接收器、一收發器、一調變解調器、一住宅式閘道、一無線接取點、及/或一網路介面以便於經由一網路926與外部機器(例如,任何種類的運算裝置)進行資料交換。該通信可經由,例如,一以太網路連接、一數位用戶迴路(DSL)連接、一電話線連接、一同軸電纜系統、一衛星系統、一直視性無線系統、一蜂巢式電話系統、等等。
該所示實例的該處理器平台900還包括用於儲存軟體及/或資料的一或多個大容量儲存裝置928。這種大容量儲存裝置928的實例包括軟碟、硬碟、光碟、藍光碟、獨立磁碟冗餘陣列(RAID)系統、以及數位多功能碟(DVD)。
圖8的該等機器可執行指令932可被儲存在該大容量儲存裝置928中、在該依電性記憶體914中、在該非依電性記憶體916中、及/或在一可移除式非暫時性的電腦可讀取儲存媒體諸如CD或DVD中。
根據上述內容,將被理解的是致能一工作負載之靜態映射的亂序管線化執行的實例方法、設備及製品已經被揭露。此外,該等已被揭露之實例方法、設備及製品當一工作負載節點所依賴之資料可用並且具有足夠可用的記憶體來儲存藉由執行該工作負載節點所產生的該輸出時,允許一運算構件可執行該工作負載節點。另外,本文所揭露的該等實例允許工作負載節點可由該等運算構件來執行,其中該等工作負載節點係以獨立於一排程及/或其他排序的方式被分配給該等運算構件。該等揭露之方法、設備及製品藉由增加一處理裝置的該利用率來提高使用一運算裝置的該效率。此外,本文揭露的該等實例方法、設備及製品減少了一處理裝置為了處理及/或以其他方式執行一工作負載所需要使用的該運算週期數量。因此,該等揭露的實例方法、設備及製品被導向到在一電腦功能性中一或多項的改進。
用以致能一工作負載之靜態映射的亂序管線化執行的實例方法、設備及製品在本文中被揭露。進一步的實例及其組合包括以下的內容:實例1包括一種設備,其包含有:一介面用以把額度的一第一數量載入到記憶體中;一比較器用以把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及一分配器,用以在額度的該第一數量達到額度的該臨界數量時,選擇該工作負載的一工作負載節點以在該等一或多個運算構件的一第一個處被執行。
實例2包括如實例1之設備,其中當該介面從一額度管理器接收到額度的該第一數量時,該介面將把額度的該第一數量載入到該記憶體中,並且當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一個被傳送到該緩衝器時,對於每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
實例3包括如實例1之設備,其中該緩衝器係與該工作負載節點關聯的一輸出緩衝器,該額度的該第一數量對應於該輸出緩衝器,並且額度的該臨界數量對應於在該輸出緩衝器中記憶體的一臨界量。
實例4包括如實例1之設備,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例5包括如實例1之設備,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,該比較器將把額度的一第二數量和與在一第二緩衝器中記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及該排程器將,當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇該工作負載節點以在該等一或多個運算構件的該第一個處被執行。
實例6包括如實例5之設備,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該輸入緩衝器,並且額度的該第二臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例7包括如實例1之設備,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,以及當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,該排程器將排程該第一工作負載節點及一第二工作負載節點以在該等一或多個運算構件的該第一個處被執行。
實例8包括一種非暫時性的電腦可讀取儲存媒體,其包含有指令,當該指令被執行時,致使至少一個處理器至少把額度的一第一數量載入到記憶體中;把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及當額度的該第一數量達到額度的該臨界數量時,選擇該工作負載的一工作負載節點以在一運算構件處被執行。
實例9包括如實例8之非暫時性的電腦可讀取儲存媒體,其中當該等指令被執行時,致使該至少一個處理器當額度的該第一數量從一額度管理器被接收到時,把額度的該第一數量載入到該記憶體中,並且當一或多個與該工作負載節點相關聯之資料塊從該運算構件被傳送到該緩衝器時,對於每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
實例10包括如實例8之非暫時性的電腦可讀取儲存媒體,其中該緩衝器係與該工作負載節點關聯的一輸出緩衝器,該額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中記憶體的一臨界量。
實例11包括如實例8之非暫時性的電腦可讀取儲存媒體,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例12包括如實例8之非暫時性的電腦可讀取儲存媒體,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,並且其中當該等指令被執行時,致使該至少一個處理器把額度的一第二數量和與在一第二緩衝器中記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇該工作負載節點以在該運算構件處被執行。
實例13包括如實例12之非暫時性的電腦可讀取儲存媒體,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該輸入緩衝器,並且額度的該第二臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例14包括如實例8之非暫時性的電腦可讀取儲存媒體,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,並且其中當該等指令被執行時,致使該至少一個處理器當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,排程該第一工作負載節點及一第二工作負載節點以在該運算構件處被執行。
實例15包括一種設備,其包含有:用於介接的構件,該用於介接的構件把額度的一第一數量載入到記憶體中;用於比較的構件,該用於比較的構件把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及用於分配的構件,該用於分配的構件在當額度的該第一數量達到額度的該臨界數量時,選擇該工作負載的一工作負載節點以在該等一或多個運算構件之一第一個處被執行。
實例16包括如實例15之設備,其中該用於介接的構件當從一額度管理器接收到額度的該第一數量時,該用於介接的構件將把額度的該第一數量載入到該記憶體中,並且當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一個被傳送到該緩衝器時,對於每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
實例17包括如實例15之設備,其中該緩衝器係與該工作負載節點關聯的一輸出緩衝器,該額度的該第一數量對應於該輸出緩衝器,並且額度的該臨界數量對應於在該輸出緩衝器中記憶體的一臨界量。
實例18包括如實例15之設備,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例19包括如實例15之設備,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,該用於比較的構件將把額度的一第二數量和與在一第二緩衝器中記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及該用於分配的構件將,當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇該工作負載節點以在該等一或多個運算構件的該第一個處被執行。
實例20包括如實例19之設備,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該輸入緩衝器,並且額度的該第二臨界數量對應於在該輸入緩衝器中資料的一臨界量。
實例21包括如實例15之設備,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,以及當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,該排程器將排程該第一工作負載節點及一第二工作負載節點以在該等一或多個運算構件的該第一個處被執行。
實例22包括一種方法,其包含有:把額度的一第一數量載入到記憶體中;把額度的該第一數量和與在一緩衝器中記憶體可用性相關聯之額度的一臨界數量進行比較;以及當額度的該第一數量達到額度的該臨界數量時,選擇該工作負載的一工作負載節點以在該等一或多個運算構件的一第一個處被執行。
實例23包括如實例22之方法,其更包括有當從一額度管理器接收到額度的該第一數量時,把額度的該第一數量載入到記憶體中,並且當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一個被傳送到該緩衝器時,對於每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
實例24包括如實例22之方法,其中該緩衝器係與該工作負載節點關聯的一輸出緩衝器,該額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中記憶體的一臨界量。
實例25包括如實例22之方法,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中資料的一臨界量。
儘管本文已經揭露了某些實例方法、設備及製品,但是本專利的涵蓋範圍並不侷限於此。相反的是,本專利涵蓋了完全落入本專利請求項範圍內之所有的方法、設備及製品。
以下的請求項因此通過引用被併入到本較佳實施例之詳細說明中,其中每一個請求項獨立地作為本發明的一獨立實施例。
100、200、700:圖 102、702:第一工作負載節點 104、704:第二工作負載節點 106、706:第三工作負載節點 108、708:第四工作負載節點 110、710:第五工作負載節點 112、714:第一CBB 114、716:第二CBB 116、718:第三CBB 118、720:第四CBB 202、730:第一緩衝器 204、732:第二緩衝器 206、734:第三緩衝器 300、400:運算系統 302:系統記憶體 304:異構系統 306:主機處理器 308:第一通信匯流排 310a:第一加速器 310b:第二加速器 310c:第三加速器 312、412:卷積引擎 314、416:RNN引擎 316、420:記憶體 318、422:MMU 320、418:DSP 322:控制器 324、414:DMA單元 326、424、722:第一排程器 328、426、724:第二排程器 330、428、726:第三排程器 332、430、728:第四排程器 334:第五排程器 336:第一內核程式庫 338:第二內核程式庫 402:輸入 404:編譯器 406、912:加速器 408、712:額度管理器 410:CNC結構 411:資料結構 432:內核程式庫 500、600:排程器 502:工作負載介面 504:緩衝器額度儲存器 506:額度比較器 508:工作負載節點分配器 510:通信匯流排 800:程序 802〜822:方塊 900:處理器平台 910:處理器 911、913:本地記憶體 914:依電性記憶體 916:非依電性記憶體 918:匯流排 920:介面 922:輸入裝置 924:輸出裝置 926:網路 928:大型儲存器 932:經編碼的指令
圖1圖示出在一異構系統的一加速器上執行之一工作負載的圖形表示。
圖2圖示出在一實現有管線及緩衝器之異構系統的加速器上執行之一工作負載的圖形表示。
圖3圖示出根據本發明的教導所建構出之一實例運算系統的方塊圖。
圖4係一方塊圖,其圖示出包括有一或多個實例排程器的一實例運算系統。
圖5係一實例排程器的方塊圖,其可實現圖3及4之該等排程器的一或多個。
圖6係一實例排程器的方塊圖,其展示出圖5該緩衝器額度儲存器之進一步的細節。
圖7係一實例圖的一圖形說明,其呈現在實現有管線及緩衝器之一異構系統的一加速器上執行的一工作負載。
圖8係一程序的流程圖表示,該程序可由機器可讀取指令來實現,而該等機器可讀取指令可被執行以實現圖5的該排程器及/或圖6的該排程器。
圖9係一實例處理器平台的方塊圖,該理器平台被建構來執行圖8的該等指令以實現圖5的該排程器及/或圖6之該排程器之該等實例的一或多個。
該等附圖未按比例繪製。一般來說,在所有的附圖及隨附的書面描述中將使用相同的參考號碼來指出相同或相似的部分。除非另有說明,否則連接參考(例如,附接、耦合、連接、及接合)將被廣義地解釋,並且可包括在一組元件之間的中間構件以及在元件之間的相對移動。因此,連接參考不一定會推斷出兩個元件被直接地連接並且彼此形成固定的關係。
當指出可被分別提及之多個元件或組件時,在本文中使用「第一」、「第二」、「第三」、等等的描述語言。除非另有規定,或基於其使用上下文中的理解,這樣的描述用語並不旨在補述任何優先的意義、在一列表中的實體順序或排列、或在時間中的順序,都僅是用來作為標記用來參考多個元件或分開的組件以易於理解該等揭露的實例。在一些實例中,該描述用語「第一」可被使用來在下面詳細描述中指出一元件,而在一請求項中可使用諸如「第二」或「第三」之類不同的描述用語來引用該相同的元件。在這樣的情況下,應被理解的是,僅係為了易於引用多個元件或組件而使用如此的描述用語。
700:圖
702:第一工作負載節點
704:第二工作負載節點
706:第三工作負載節點
708:第四工作負載節點
710:第五工作負載節點
712:額度管理器
714:第一CBB
716:第二CBB
718:第三CBB
720:第四CBB
722:第一排程器
724:第二排程器
726:第三排程器
728:第四排程器
730:第一緩衝器
732:第二緩衝器
734:第三緩衝器

Claims (25)

  1. 一種用以致能一工作負載之靜態映射的亂序管線化執行之設備,該設備包含有: 一介面,其用以把額度(credit)的一第一數量載入到記憶體中; 一比較器,其用以把額度的該第一數量和與在一緩衝器中的記憶體可用性相關聯之額度的一臨界數量進行比較;以及 一分配器,其用以當額度的該第一數量達到額度的該臨界數量時,選擇要在該等一或多個運算構件的一第一者處被執行之該工作負載的一工作負載節點。
  2. 如請求項1之設備,其中該介面係用以: 當該介面從一額度管理器接收到額度的該第一數量時,把額度的該第一數量載入到記憶體中;以及 當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一者被傳送到該緩衝器時,針對每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
  3. 如請求項1之設備,其中該緩衝器係與該工作負載節點相關聯的一輸出緩衝器,額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中之記憶體的一臨界量。
  4. 如請求項1之設備,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  5. 如請求項1之設備,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,該比較器係用以把額度的一第二數量和與在一第二緩衝器中的記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及該排程器係用以:當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇要在該等一或多個運算構件的該第一者處被執行之該工作負載節點。
  6. 如請求項1至5中任一項之設備,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該輸入緩衝器,以及額度的該第二臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  7. 如請求項1之設備,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,以及當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,該分配器係用以排程要在該等一或多個運算構件的該第一者處被執行之該第一工作負載節點及一第二工作負載節點。
  8. 一種電腦可讀取儲存媒體,其包含有指令,當該等指令被執行時,致使至少一個處理器至少用以: 把額度的一第一數量載入到記憶體中; 把額度的該第一數量和與在一緩衝器中的記憶體可用性相關聯之額度的一臨界數量進行比較;以及 當額度的該第一數量達到額度的該臨界數量時,選擇要在一運算構件處被執行之一工作負載的一工作負載節點。
  9. 如請求項8之電腦可讀取儲存媒體,其中當該等指令被執行時,致使該至少一個處理器用以: 當從一額度管理器接收到額度的該第一數量時,把額度的該第一數量載入到記憶體中;以及 當一或多個與該工作負載節點相關聯之資料塊從該運算構件被傳送到該緩衝器時,針對每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
  10. 如請求項8之電腦可讀取儲存媒體,其中該緩衝器係與該工作負載節點相關聯的一輸出緩衝器,額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中之記憶體的一臨界量。
  11. 如請求項8之電腦可讀取儲存媒體,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  12. 如請求項8之電腦可讀取儲存媒體,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,並且其中當該等指令被執行時,致使該至少一個處理器用以: 把額度的一第二數量和與在一第二緩衝器中的記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及 當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇要在該運算構件處被執行之該工作負載節點。
  13. 如請求項8至12中任一項之電腦可讀取儲存媒體,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該第二緩衝器,以及額度的該第二臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  14. 如請求項8之電腦可讀取儲存媒體,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,並且其中當該等指令被執行時,致使該至少一個處理器用以:當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,排程要在該運算構件處被執行之該第一工作負載節點及一第二工作負載節點。
  15. 一種用以致能一工作負載之靜態映射的亂序管線化執行之設備,該設備包含有: 用於介接的構件,該用於介接的構件把額度的一第一數量載入到記憶體中; 用於比較的構件,該用於比較的構件把額度的該第一數量和與在一緩衝器中的記憶體可用性相關聯之額度的一臨界數量進行比較;以及 用於分配的構件,當額度的該第一數量達到額度的該臨界數量時,該用於分配的構件選擇要在該等一或多個運算構件之一第一者處被執行之該工作負載的一工作負載節點。
  16. 如請求項15之設備,其中該用於介接的構件係用以: 當該用於介接的構件從一額度管理器接收到額度的該第一數量時,把額度的該第一數量載入到記憶體中;以及 當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一者被傳送到該緩衝器時,針對每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
  17. 如請求項15之設備,其中該緩衝器係與該工作負載節點相關聯的一輸出緩衝器,額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中之記憶體的一臨界量。
  18. 如請求項15之設備,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  19. 一種用以致能一工作負載之靜態映射的亂序管線化執行之方法,該方法包含有: 把額度的一第一數量載入到記憶體中; 把額度的該第一數量和與在一緩衝器中的記憶體可用性相關聯之額度的一臨界數量進行比較;以及 當額度的該第一數量達到額度的該臨界數量時,選擇要在該等一或多個運算構件的一第一者處被執行之該工作負載的一工作負載節點。
  20. 如請求項19之方法,其更包括有: 當從一額度管理器接收到額度的該第一數量時,把額度的該第一數量載入到記憶體中;以及 當一或多個與該工作負載節點相關聯之資料塊從該等一或多個運算構件中的該第一者被傳送到該緩衝器時,針對每一個被傳送到該緩衝器的資料塊向該額度管理器傳送一額度。
  21. 如請求項19之方法,其中該緩衝器係與該工作負載節點相關聯的一輸出緩衝器,額度的該第一數量對應於該輸出緩衝器,以及額度的該臨界數量對應於在該輸出緩衝器中之記憶體的一臨界量。
  22. 如請求項19之方法,其中該緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第一數量對應於該輸入緩衝器,以及額度的該臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  23. 如請求項19之方法,其中該緩衝器係一第一緩衝器,額度的該臨界數量係額度的一第一臨界數量,並且該方法更包括: 把額度的一第二數量和與在一第二緩衝器中的記憶體可用性相關聯之額度的一第二臨界數量進行比較;以及 當(1)額度的該第一數量達到額度的該第一臨界數量並且(2)額度的該第二數量達到額度的該第二臨界數量時,選擇要在該運算構件處被執行之該工作負載節點。
  24. 如請求項19至23中任一項之方法,其中該第二緩衝器係與該工作負載節點相關聯的一輸入緩衝器,額度的該第二數量對應於該第二緩衝器,以及額度的該第二臨界數量對應於在該輸入緩衝器中之資料的一臨界量。
  25. 如請求項19之方法,其中額度的該臨界數量係額度的一第一臨界數量,該工作負載節點係一第一工作負載節點,並且該方法更包括:當(1)額度的該第一數量達到額度的該第一臨界數量而且(2)額度的一第二數量達到額度的一第二臨界數量時,排程要在該運算構件處被執行之該第一工作負載節點及一第二工作負載節點。
TW109120637A 2019-08-15 2020-06-18 用以致能工作負載之靜態映射的亂序管線化執行之方法及設備 TWI802800B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/542,012 2019-08-15
US16/542,012 US11231963B2 (en) 2019-08-15 2019-08-15 Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload

Publications (2)

Publication Number Publication Date
TW202109285A true TW202109285A (zh) 2021-03-01
TWI802800B TWI802800B (zh) 2023-05-21

Family

ID=68693863

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109120637A TWI802800B (zh) 2019-08-15 2020-06-18 用以致能工作負載之靜態映射的亂序管線化執行之方法及設備

Country Status (6)

Country Link
US (2) US11231963B2 (zh)
JP (1) JP7400169B2 (zh)
KR (1) KR20210021263A (zh)
CN (2) CN114895965A (zh)
DE (1) DE102020119519A1 (zh)
TW (1) TWI802800B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901657B2 (en) * 2018-11-29 2021-01-26 International Business Machines Corporation Dynamic write credit buffer management of non-volatile dual inline memory module
US11231963B2 (en) 2019-08-15 2022-01-25 Intel Corporation Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload
US11875247B1 (en) * 2020-06-18 2024-01-16 Amazon Technologies, Inc. Input batching with serial dynamic memory access
US11704058B2 (en) * 2020-07-28 2023-07-18 Samsung Electronics Co., Ltd. Systems and methods for resource-based scheduling of commands
US11620159B2 (en) 2021-04-23 2023-04-04 Samsung Electronics Co., Ltd. Systems and methods for I/O command scheduling based on multiple resource parameters

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418953A (en) * 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
JP5349515B2 (ja) * 2011-03-14 2013-11-20 株式会社東芝 バッファ管理装置、バッファ管理方法及び記憶装置
EP3175320B1 (en) * 2014-07-30 2019-03-06 Linear Algebra Technologies Limited Low power computational imaging
US10002099B2 (en) * 2014-11-13 2018-06-19 Cavium, Inc. Arbitrated access to resources among multiple devices
GB2569271B (en) * 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
US10649813B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Arbitration across shared memory pools of disaggregated memory devices
US11231963B2 (en) 2019-08-15 2022-01-25 Intel Corporation Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload

Also Published As

Publication number Publication date
JP7400169B2 (ja) 2023-12-19
KR20210021263A (ko) 2021-02-25
US11231963B2 (en) 2022-01-25
US20190370073A1 (en) 2019-12-05
JP2021034020A (ja) 2021-03-01
DE102020119519A1 (de) 2021-02-18
TWI802800B (zh) 2023-05-21
US11847497B2 (en) 2023-12-19
US20220197703A1 (en) 2022-06-23
CN112395010A (zh) 2021-02-23
CN114895965A (zh) 2022-08-12

Similar Documents

Publication Publication Date Title
TWI802800B (zh) 用以致能工作負載之靜態映射的亂序管線化執行之方法及設備
US10942716B1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
JP5859639B2 (ja) 異種コア用の自動負荷バランシング
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
US8219722B2 (en) DMA and graphics interface emulation
WO2015150342A1 (en) Program execution on heterogeneous platform
US11036477B2 (en) Methods and apparatus to improve utilization of a heterogeneous system executing software
US20230333913A1 (en) Methods and apparatus to configure heterogenous components in an accelerator
US11880715B2 (en) Method and system for opportunistic load balancing in neural networks using metadata
EP3779778A1 (en) Methods and apparatus to enable dynamic processing of a predefined workload
KR101755154B1 (ko) 이종 연산 처리 장치에 대한 동적 작업 할당 방법 및 장치
US11847507B1 (en) DMA synchronization using alternating semaphores
KR20210021262A (ko) 다수의 비동기 소비자들을 위한 방법들 및 장치들
US20230136365A1 (en) Methods and apparatus to allocate accelerator usage
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs