TW202324147A - 用以將操作的運算及資料儲存交疊之交錯式資料負載系統 - Google Patents

用以將操作的運算及資料儲存交疊之交錯式資料負載系統 Download PDF

Info

Publication number
TW202324147A
TW202324147A TW111139908A TW111139908A TW202324147A TW 202324147 A TW202324147 A TW 202324147A TW 111139908 A TW111139908 A TW 111139908A TW 111139908 A TW111139908 A TW 111139908A TW 202324147 A TW202324147 A TW 202324147A
Authority
TW
Taiwan
Prior art keywords
values
value
accelerator
subset
data processing
Prior art date
Application number
TW111139908A
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 TW202324147A publication Critical patent/TW202324147A/zh

Links

Images

Classifications

    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Advance Control (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Complex Calculations (AREA)

Abstract

系統、設備及方法包括識別一運算將基於複數個值來執行之技術。該技術確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。

Description

用以將操作的運算及資料儲存交疊之交錯式資料負載系統
實施例大致係有關於基於運算之操作來確定之資料載入順序。詳言之,資料可基於與資料相關聯之操作順序來載入。
諸如累加之操作可需要將資料在階層記憶體系統中從低階記憶體載入至高階記憶體。舉例而言,可將此類資料從全域記憶體載入至一加速器中之一共享記憶體,然後可在執行操作期間再利用該資料。在一些狀況中,可插入一記憶體屏障(例如:一等待)以確保記憶體負載可見,並且係在操作繼續之前載入。在記憶體屏障期間,運算資源處於閒置狀態,導致運算資源使用無效率且潛伏過程更長。
依據本發明之一實施例,係特地提出一種用於交錯式資料處理之運算系統,其包含:一加速器,其用以執行一運算;一處理器;以及一記憶體,其係耦接至該處理器及該加速器,該記憶體包括一可執行程式指令集合,該可執行程式指令集合在由該處理器或該加速器中之一或多者執行時,致使該運算系統進行下列動作:識別該運算是要基於複數個值來執行,確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。
如本文中所述之實施例基於一運算(例如:通用矩陣乘法(GEMM))期間之使用狀況以一有效率之型態載入資料,而不是僅基於一列基/行基順序載入資料。憑藉如本文中之實施例中所述之資料載入作法,一些實例可實質減少運算資源之等待以在載入資料之後幾乎立即開始運算。再者,也可向一高階可規劃記憶體發出資料儲存。在一些實施例中,運算及資料儲存可交疊以避免不必要之停頓並增強效率。因此,實施例係針對用於各種多步驟運算(例如:GEMM)之一新資料載入作法,以使得可平行執行資料調處及運算,並且為運算減少從高階記憶體(例如:共享記憶體)進行資料載入操作之數量。舉例而言,一些實施例識別一運算是要基於複數個值來執行,確定與該運算相關聯之一操作順序,以及  按基於該操作順序確定之一順序載入該等複數個值,以便減少來自記憶體載入及儲存之潛時。
現請參照圖1,繪示載入與電腦碼106之執行相關聯之資料用之一過程100。電腦碼106包括三個連序之「for迴圈」:1)包括「i」作為一控制變數之一第一「for迴圈」,2)包括「j」作為一控制變數之一第二「for迴圈」以及3)包括「k」作為一控制變數之一第三「for迴圈」。第三「for迴圈」係基於來自該等第一及第二for迴圈之值的一累加。該累加可以是一GEMM運算,其中
Figure 02_image001
, j]。
在圖1中,電腦碼106之累加可採用兩種不同方式來執行:1)一增強型載入及運算操作108,其執行矩陣114中之操作(例如,根據本申請案之實施例來執行),以及2)一對照、習知的載入及運算操作110,其執行矩陣112中之操作。
在對照、習知的載入及運算操作110中,一組習知的執行緒CT(0, 0)、CT(0, 1)及CT(0, 2)將同時從低階儲存器(例如:一全域儲存器)移動資料至一高階記憶體(例如:一共享記憶體)。之後,每個執行緒(例如:CT(0, 0)、CT (0, 1)及CT (0, 2))等待來自所有其他後接執行緒(圖未示)之所有資料轉移從相同之執行緒群組完成。之後,運算開始,並且來自高階記憶體(例如:共享記憶體)之資料將重新載入及再利用。下面表I之步驟1至7更詳細地展示習知的載入及運算操作110:
1. 載入:一工作群組中之執行緒從全域記憶體載入資料  
2. 儲存:將資料寫入至共享記憶體
3. 等待:用以等待所有資料都儲存在共享記憶體中之屏障
4. 載入:各執行緒載入對應資料
5. 運算:運算
6. 等待:用以等待所有資料都受到取用之屏障
7. 移至下一個區塊之步驟1
I
在步驟1及2中,資料係首先從全域記憶體(例如:低階記憶體)載入,並且儲存至快取(例如:共享記憶體或一高階記憶體)。資料可由執行緒共享,所以利用一共享記憶體。在步驟3中,執行緒等到所有資料都儲存為止,以使得不存取不正確資料。因此,步驟3可引起效能懲罰並增加潛時。在步驟4中,各執行緒會將資料從共享記憶體載入。在步驟5中,執行緒將執行一運算。在步驟6中,執行緒將等到資料受到取用為止。步驟7中之執行緒將接著重複步驟1至6,直到完成所有區塊為止。載入(步驟1)、儲存(步驟2)、等待(步驟3)及載入(步驟4)之序列係在運算(步驟5)之前執行。也就是說,運算不可在過程中提早開始,因為各執行緒沒有為該執行緒保持要執行一計算之期望資料。因此,所有執行緒都必須等待。
詳言之,為習知的載入及運算操作110考量習知的執行緒CT(0, 0)、CT(0, 1)及CT(0, 2)。習知的執行緒CT(0, 0)、CT(0, 1)及CT(0, 2)基於列順序載入資料。因此,習知的執行緒CT(0, 0)、CT(0, 1)及CT(0, 2)從矩陣A 104之第0列及矩陣B 102之第0列載入資料。習知的執行緒CT(0, 0)、CT (0, 1)及CT (0, 2)各載入不同資料。舉例而言,習知的執行緒CT(0, 0)載入a 0,0及b 0,0。習知的執行緒CT(0, 1)載入a 0,1及b 0,1。習知的執行緒CT(0, 2)載入b 0,2及a 0,2
因此,資料係不按順序載入。也就是說,操作順序指出乘法運算是要在加法運算之前執行(例如,對從左到右按括號、指數、乘法及除法之順序,從左到右評估加法及減法之一數學表達式進行評估用之一正確步驟序列)。因此,不可能執行習知的執行緒CT(0,1)之所有操作,因為習知的執行緒CT(0,1)負載缺少對應因子(例如:乘數或被乘數)以完成操作之數個值。舉例而言,載入之資料、來自矩陣A 104之a 0,1及來自矩陣B 102之b 0,1係不按順序,因為其未相乘在一起。反而,b 0,1與a 0,0相乘,而a 0,1則與b 1,1相乘。類似的是,習知的執行緒CT(0,2)不按順序載入資料a 0,2及b 0,2。也就是說,a 0,0與b 0,2相乘且a 0,2與b 2,2相乘。因此,習知的執行緒CT(0,1)及習知的執行緒CT(0,2)不按順序載入資料。習知的執行緒CT(0,0)、CT(0,1)、CT(0,2)各不可存取藉由執行緒CT(0,0)、CT(0,1)、CT(0,2)之其他執行緒載入之資料,或者可這樣做,但由於障礙及/或等待而增加潛時。
所以,對於導致潛時及閒置之數個操作,運算無法開始。舉例而言,僅a 0,0與b 0,0相乘在一起,並且係藉由相同之執行緒載入,其係習知的執行緒CT(0,0)。因此,所有習知的執行緒CT(0,0)、CT(0,1)、CT(0,2)都停頓而不執行運算。舉例而言,由於可能不完全清楚哪些習知的執行緒CT(0,0)、CT(0,1)、CT(0,2)具有一運算所需之所有資料,因此所有執行緒都為運算置入一等待模式,以確保習知的執行緒CT(0,0)、CT(0,1)、CT(0,2)不在運算期間存取不適當之資料。從一效能及效率觀點,等待導致無效率。換句話說,運算必須等到載入乘法運算用之資料(例如,習知的執行緒CT(0,1)用之a 0,0及b 1,1、以及習知的執行緒CT(0,2)用之a 0,0及b 2,2)為止。資料可由習知的執行緒CT(0,1)及CT(0,2)在一以後之載入輪次期間載入。值得注意的是,a 0,0-a 2,2及b 0,0-b 2,2各可以是不同值。
增強型載入及運算操作108基於操作順序取回資料以有效地減少潛時、增加資源利用率並增強效率。也就是說,增強型載入及運算操作108取回將一起操作(例如,相乘在一起)之資料以執行矩陣114中之操作。這樣做可使更多操作能夠並行執行。舉例而言,根據操作順序,乘法之優先順序高於加法。因此,增強型載入及運算操作108分析矩陣114以基於哪些值將相乘在一起來取回資料。
舉例而言,增強型載入及運算操作108確定a 0,1與b 1,1相乘。因此,並非載入b 0,1,而是增強型執行緒ET(0,1)載入b 1,1,因為b 1,1與a 0,1相乘。再者,a 0,2與b 2,2相乘。因此,並非載入b 0,2,而是增強型執行緒ET(0,2)載入b 2,2,因為b 2,2與a 0,2相乘。也就是說,在增強型載入及運算操作108中,資料係基於其使用時將按照之順序來載入。如此,可執行三個操作(例如:a 0,0* b 0,0、a 0,1* b 1,1、a 0,2* b 2,2),因為這三個操作之所有資料已取回。
值得注意的是,增強型載入及運算操作108可從一低階(例如:全域記憶體)取回資料a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2。在共享記憶體中儲存資料a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2之前,增強型載入及運算操作108可執行運算a 0,0* b 0,0、a 0,1* b 1,1、a 0,2* b 2,2,然後將資料a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2儲存至共享記憶體,以供以後在其他操作中再利用(例如,一GEMM操作之第二輪次)。資料a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2可儲存在本機暫存器(例如:累加器)中以執行運算a 0,0* b 0,0、 a 0,1* b 1,1、a 0,2* b 2,2。值得注意的是,可不用等待並且在將資料a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2儲存至共享記憶體之前執行該等運算,以減少潛時並利用可按其他方式維持閒置之硬體資源。
因此,相較於習知的載入及運算操作110,增強型載入及運算操作108以一更大效率操作(例如,3個運算在載入之後直接執行),用以基於一運算分析取回資料,並且在載入資料之後不久執行操作而不用等待。值得注意的是,可取回資料(例如:a 0,0、b 0,0、a 0,1、b 1,1、a 0,2、b 2,2),可執行操作以將資料相乘在一起,並且可予以同時儲存在一共享記憶體中。值得注意的是,資料最初不需要儲存在共享記憶體中,而是可儲存在暫存器中,用以在取回後便直接執行乘法運算。
因此,增強型載入及運算操作108在第一及第二「for迴圈」之M及N方向上執行平行性,以及各執行緒將連同用於C輸出之K方向計算並累加結果。因此,一些實施例包括一新資料載入順序。舉例而言,在一個輪次之載入中載入之所有資料可彼此操作。下面等式1對應於一個輪次之資料載入:
Figure 02_image003
等式 1在等式1中,L係矩陣
Figure 02_image005
之一個區塊之行,並且
Figure 02_image007
代表執行緒群組之執行緒索引。根據等式1,對於第一迭代,各執行緒載入矩陣A 104及矩陣B 102中之
Figure 02_image009
Figure 02_image011
。因為
Figure 02_image007
之範疇係為0至L,增強型載入及運算操作108將基於操作順序載入矩陣A 104及矩陣B 102中之所有元素。在等式1中,K係電腦碼106的A之行及B之列,並且(i, j)代表矩陣C中之一個輸出點以及執行緒索引。根據等式1,對於第一迭代,各執行緒載入矩陣A 104及矩陣B 102中之A[i, (i+j)%K]、B[(i+j)%K, j] (其中k=0)。因為(i, j)之範疇係為0至K,增強型載入及運算操作108將基於操作順序載入矩陣A 104及矩陣B 102中之所有元素。在一些實例中,(i, j)代表一個執行緒需要運算之C (輸出矩陣)中之矩陣之索引。增強型載入及運算操作108可同時執行運算並將載入之資料儲存至共享記憶體。在下一個迭代中,如等式1所示,各執行緒可從一共享記憶體獲得來自矩陣A 104之A值及來自矩陣B 102之B值,並且執行一本機運算。
下表II相對於對照、習知的載入及運算操作110之步驟,例示增強型載入及運算操作108之步驟。
對照、習知的載入及運算操作110 增強型載入及運算操作108
1)載入:按自然順序載入資料 1)載入:基於操作順序載入資料
2)儲存:將資料寫入至共享記憶體 2A)運算:將載入之資料用於一步驟運算 2B)儲存:將資料寫入至一共享記憶體
3)等待:保證所有資料都儲存在共享記憶體中 3)等待:保證所有資料都儲存在共享記憶體中
4)載入:各執行緒讀取對應資料(假設將載入k個元素) 4)載入:各執行緒讀取對應資料(k-1次載入)
5)運算:運算(k次) 5)運算:運算(k-1次)
6)等待:用以等到所有資料都受到取用為止之屏障 6)等待:用以等到所有資料都受到取用為止之屏障
7)為次k區塊移至步驟1 7)為次k區塊移至步驟1
表II
在以上表1中,步驟2A及2B對應於上述增強型載入及運算操作108之所示部分。憑藉增強型載入及運算操作108,一些實施例有更多機會用於GEMM中之平行性以減少運算時間。也就是說,步驟2A及2B係平行地或幾乎平行地執行,使得運算係在旁通共享記憶體中之中間資料(例如:值)之儲存的同時隨著載入執行。相比之下,對照、習知的載入及運算操作110在5處執行一第一運算,而步驟2純粹專屬於載入,導致等待增加且效率降低。
圖2展示一方法300,用來載入資料以執行一多步驟運算。方法300可輕易地與本文中所述之任何實施例組合。舉例而言,方法300可搭配已論述之增強型載入及運算操作108 (圖1)之一或多項態樣實施及/或操作。在一實施例中,於一或多個模組中將方法300實施成一組邏輯指令,該組邏輯指令係儲存在諸如隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可規劃ROM (PROM)、韌體、快閃記憶體等之一機器或電腦可讀儲存媒體中、舉例如可規劃邏輯陣列(PLA)、可現場規劃閘陣列(FPGA)、複雜可規劃邏輯裝置(CPLD)之可組配邏輯中、使用舉例如特定應用積體電路(ASIC)、互補式金屬氧化物半導體(CMOS)或電晶體-電晶體邏輯(TTL)技術等電路技術之固定功能邏輯硬體中、或以上的任何組合。
舉例而言,用以實行方法300中所示操作之電腦程式碼可採用一或多種程式設計語言之任何組合來編寫,包括諸如JAVA、SMALLTALK、C++等之物件導向程式設計語言或類似者、以及諸如「C」程式設計語言之習知程序性程式設計語言或類似之程式設計語言。另外,邏輯指令可能包括組譯器指令、指令集架構(ISA)指令、機器指令、機器相依指令、微碼、狀態設定資料、用於積體電路系統之組態資料、個人化電子電路系統之狀態資訊及/或硬體(例如:主機處理器、中央處理單元/CPU、微控制器等)原生之其他結構化組件。
所示處理塊302識別一運算將基於複數個值來執行。所示處理塊304確定與該運算相關聯之一操作順序。所示處理塊306按基於該操作順序確定之一順序載入該等複數個值。在一些實例中,方法300包括基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。在一些實例中,方法300包括基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器裡,憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及將該第一值儲存到該加速器之一共享記憶體裡。
在一些實例中,方法300包括識別來自該等複數個值之一第一值與來自該等複數個值之一第二值將相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。在一些實例中,方法300包括該運算係藉由一加速器來執行,以及該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。在一些實施例中,該運算係一矩陣乘法運算。
圖3為一區塊載入過程350繪示一實施例(例如,對應於表1之步驟1),以使得更多運算一經取回便可交疊,後接儲存至一記憶體儲存區。這樣做可實現一更高效能比。區塊載入過程350可搭配已論述之增強型載入及運算操作108 (圖1)及/或方法300 (圖2)之一或多項態樣實施及/或操作。
A 0,0(其包括矩陣a 0,0、a 0,1、a 1,0及a 1,1)、A 0,1(其包括矩陣a 0,2、a 1,2、a 0,3及a 1,3)、A 1,1(其包括矩陣a 2,2、a 2,3、a 3,2及a 3,3)以及A 1,0(其包括矩陣a 2,0、a 2,1、a 3,0及a 3,1) 可從矩陣A 354載入並儲存在暫存器中以執行矩陣C 356之操作。來自矩陣B 352之B 0,0(其包括矩陣b 0,0、b 0,1、b 1,0及b 1,1)、B 1,1(其包括矩陣b 2,2、b 2,3、b 3,2及b 3,3)、B 1,0(其包括矩陣b 2,0、b 2,1、b 3,0及b 3,1)以及B 0,1(其包括b 0,2、b 1,2、b 0,3及b 1,3)可從矩陣B 354載入並儲存在暫存器中以執行操作矩陣C 356。在這項實例中,使用一2x2除法,但該除法可以是基於不同硬體及實作態樣之任何值(例如:3x3或4x4)。來自矩陣A 354及矩陣B 352之值之一具體表示型態係例示於矩陣C 358之詳細表示型態中。一區塊中元素之數量基於硬體架構及演算法實作態樣可具有動態性。表III例示區塊載入過程350之操作。
1)    載入:根據操作順序載入一資料量kk。各步驟中之各執行緒可載入多於1個元素(例如:2x2方陣,以使得kk係定義為4),所以,多個元素每次係單獨從矩陣A 354及矩陣B 352載入。
2)    A)儲存:將所有資料寫入至共享記憶體。在這項實例中,「所有」意味著一個輪次之運算用的所有載入之資料,而不是矩陣A 354及矩陣B 352中之所有資料;以及 B)運算:將載入之資料用於kk步驟運算
3)    等待:保證所有資料都儲存在共享記憶體中
4)    載入:各執行緒讀取對應資料(例如,k-kk次載入)。舉例而言,總計可有k個元素將在各步驟中載入及運算,但在一個步驟中,已經在步驟2A中儲存資料。因此,僅剩餘k-1次載入用於從共享記憶體載入及再次運算。在這項實例中,因為實施例將一個元素載入及運算延伸至kk(=4),所以剩餘數量係k – kk。
5)    運算:運算k-kk次
6)    等待:用以等待所有資料都受到取用之屏障
7)    為次k區塊移至步驟1
表III
圖4展示壓縮資料之一方法400。方法400可輕易地與本文中所述之任何實施例組合。舉例而言,方法400可搭配已論述之增強型載入及運算操作108 (圖1)、方法300 (圖2)及/或區塊載入過程350 (圖3)之一或多項態樣實施及/或操作。更特別的是,可在一或多個模組中將方法400實施成一組邏輯指令,該組邏輯指令係儲存在諸如RAM、ROM、PROM、韌體、快閃記憶體等之一機器或電腦可讀儲存媒體中、舉例如PLA、FPGA、CPLD之可組配邏輯中、使用舉例如ASIC、CMOS、TTL技術等電路技術之固定功能硬體邏輯中、或以上的任何組合。
所示處理塊402基於一特定型態(例如:一操作順序)載入資料。所示處理塊404基於載入之資料運算一值並將載入之資料寫入至共享記憶體。所示處理塊406等到所有資料都儲存在記憶體中為止。所示處理塊408包括讀取對應資料之執行緒。所示處理塊410基於執行緒對值進行運算。所示處理塊412等到所有資料都受到取用為止。
圖5展示基於資料載入並且執行運算之一方法450。方法450可輕易地與本文中所述之任何實施例組合。舉例而言,方法450可搭配已論述之增強型載入及運算操作108 (圖1)、方法300 (圖2)、區塊載入過程350 (圖3)及/或方法400 (圖4)之一或多項態樣實施及/或操作。更特別的是,可在一或多個模組中將方法450實施成一組邏輯指令,該組邏輯指令係儲存在諸如RAM、ROM、PROM、韌體、快閃記憶體等之一機器或電腦可讀儲存媒體中、舉例如PLA、FPGA、CPLD之可組配邏輯中、使用舉例如ASIC、CMOS、TTL技術等電路技術之固定功能硬體邏輯中、或以上的任何組合。
所示處理塊452基於運算順序來確定一載入順序。所示處理塊454基於載入順序來載入值之一子集。所示處理塊456基於值之子集來執行運算。所示處理塊458判斷是否要載入更多值。如果是,則所示處理塊460基於載入順序選擇次值,並且將該等次值設定為值之子集。否則,所示處理塊462計算最終值。
各相應執行緒載入資料之一部分,其恰好是對於相應執行緒之一輸出滿足數個運算步驟之資料。因此,可同時執行計算及資料。
現請參照圖6,所示係一效能增強型運算系統158。運算系統158大致可以是具有運算功能(例如:個人數位助理器/PDA、筆記型電腦、平板電腦、可轉換平板、伺服器)、通訊功能(例如:智慧型手機)、成像功能(例如:相機、攝錄影機)、媒體播放功能(例如:智慧電視/TV)、穿戴式功能(例如:手錶、眼鏡、頭飾、鞋類、珠寶)、車輛功能(例如:汽車、卡車、機車)、機器人功能(例如:自主機器人)等、或以上的任何組合之一電子裝置/平台之部分。在所示實例中,運算系統158包括具有一整合式記憶體控制器(IMC) 154之一主機處理器134 (例如:CPU),IMC 154係耦接至一系統記憶體144。
所示運算系統158亦包括連同主機處理器134、一圖形處理器132 (例如:GPU)、ROM 136、及AI加速器148在作為一系統晶片(SoC)之一半導體晶粒146上實施之一輸入輸出(IO)模組142。所示IO模組142與例如一顯示器172 (例如:觸控螢幕、液晶顯示器/LCD、發光二極體/LED顯示器)、一網路控制器174 (例如:有線及/或無線)、FPGA 178及大量儲存器176 (例如:硬碟機/HDD、光碟、固態驅動機/SSD、快閃記憶體)通訊。再者,SoC 146可更包括專屬於人工智慧(AI)及/或神經網路(NN)處理之處理器(圖未示)及/或AI加速器148。舉例而言,系統SoC 146可包括一視覺處理單元(VPU) 138及/或其他AI/NN特定處理器,諸如AI加速器148等。
圖形處理器132及/或主機處理器134可執行從系統記憶體144 (例如:一動態隨機存取記憶體)及/或大量儲存器176取出之指令156,以實施如本文中所述之態樣。在一些實例中,圖形處理器132、VPU 138及/或AI加速器148含有用於資料儲存之一可調大小「全域記憶體」,所以,在運算執行之前,輸入資料將從系統記憶體144轉移至圖形處理器132、VPU 138及/或AI加速器148之全域記憶體。資料接著係從「全域記憶體」轉移至圖形處理器132、VPU 138及/或AI加速器148之一共享記憶體及/或(諸)暫存器。在一些實例中,圖形處理器132、VPU 138及/或AI加速器148不具有全域記憶體,但含有一共享記憶體及/或諸暫存器。舉例而言,AI加速器148 (例如:一現場可規劃閘陣列(FPGA)、特定應用積體電路(ASIC)、張量處理單元(TPU)等)可執行一運算。運算系統158可識別該運算是要基於複數個值來執行、確定與該運算相關聯之一操作順序、以及按基於該操作順序確定之一順序將該等複數個值載入至AI加速器148。舉例而言,運算系統158可基於該操作順序在該等複數個值之一第二子集之前將該等複數個值之一第一子集載入至AI加速器148,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。AI加速器148基於順序將複數個值之第一子集載入到AI加速器148之暫存器148a裡,憑藉AI加速器148,基於儲存在暫存器148a中之複數個值之第一子集來運算第一值。AI加速器148將第一值儲存到AI加速器148之一共享記憶體148b裡。AI加速器148識別來自該等複數個值之一第一值與來自該等複數個值之一第二值將相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。如所論,該運算係藉由AI加速器148來執行。在一些實施例中,圖形處理器132及/或VPU 138可輕易地替代AI加速器148。運算系統158可實施已經論述之增強型載入及運算操作108 (圖1)、方法300 (圖2)、區塊載入過程350 (圖3)、方法400 (圖4)、及/或方法450 (圖5)之一或多項態樣。因此,所示運算系統158係視為至少經效能增強至其使運算系統158能夠智慧地載入資料並以減少之潛時執行運算的程度。
圖7展示一半導體設備186 (例如:晶片、晶粒、封裝體)。所示設備186包括一或多個基材184 (例如:矽、藍寶石、砷化鎵)及耦接至(諸)基材184之邏輯182 (例如:電晶體陣列及其他積體電路/IC組件)。在一實施例中,設備186係在一應用開發階段操作,並且邏輯182進行本文中所述之實施例之一或多項態樣,例如,已經論述之增強型載入及運算操作108 (圖1)、方法300 (圖2)、區塊載入過程350 (圖3)、方法400 (圖4)、及/或方法450 (圖5)之一或多項態樣。邏輯182可至少部分地以可組配邏輯或固定功能硬體邏輯來實施。在一項實例中,邏輯182包括位於(例如,嵌入於)基材184內之電晶體通道區域。因此,邏輯182與(諸)基材184之間的介面可非為一陡接面。邏輯182亦可視為包括在(諸)基材184之一初始晶圓上生長之一磊晶層。
圖8根據一項實施例,繪示一處理器核心200。處理器核心200可以是任何類型之處理器用之核心,諸如一微處理器、一嵌入式處理器、一數位信號處理器(DSP)、一網路處理器、或用以執行軟體碼之其他裝置。雖然在圖8中僅繪示一個處理器核心200,一處理元件仍可替代地包括多於一個圖8中所示之處理器核心200。處理器核心200可以是一單執行緒核心,或者,對於至少一項實施例,處理器核心200可採用多執行緒,原因在於其每個核心可包括多於一個硬體執行緒脈絡(或「邏輯處理器」)。
圖8亦繪示耦接至處理器核心200之一記憶體270。記憶體270可以是所屬技術領域中具有通常知識者已知或按其他方式可得之多種記憶體(包括記憶體層次結構之各種層)中之任何一者。記憶體270可包括要由處理器核心200執行之一或多個軟體碼213指令,其中軟體碼213可實施實施例之一或多項態樣,舉例如已經論述之載入及運算操作108 (圖1)、方法300 (圖2)、區塊載入過程350 (圖3)、方法400 (圖4)、及/或方法450 (圖5)。處理器核心200遵循由軟體碼213所指之指令之一程式序列。各指令可進入一前端部分210並由一或多個解碼器220處理。解碼器220可採用一預定義格式產生諸如一固定寬度微操作之一微操作當作其輸出,或可產生反映原始軟體碼指令之其他指令、微指令或控制信號。所示前端部分210亦包括暫存器重新命名邏輯225及排程邏輯230,其大致分配資源並將對應於轉換指令之操作排進佇列以供執行。
所示處理器核心200包括具有一組執行單元255-1至255-N之執行邏輯250。一些實施例可包括專屬於特定功能或功能集之若干執行單元。其他實施例可僅包括一個執行單元或可進行一特定功能之一個執行單元。所示執行邏輯250進行由軟體碼指令所指定之操作。
在完成由軟體碼指令所指定之操作之執行之後,後端邏輯260引退軟體碼213之指令。在一項實施例中,處理器核心200允許不按順序執行,但要求按順序引退指令。引退邏輯265可採用所屬技術領域中具有通常知識者已知之各種形式(例如:重排序緩衝器或類似者)。依照這種方式,處理器核心200至少依據由解碼器產生之輸出、由暫存器重新命名邏輯225利用之硬體暫存器及表格、以及由執行邏輯250修改之任何暫存器(圖未示),予以在軟體碼213之執行期間變換。
雖然圖8中未繪示,一處理元件仍可在帶有處理器核心200之晶片上包括其他元件。舉例而言,一處理元件可連同處理器核心200包括記憶體控制邏輯。處理元件可包括I/O控制邏輯,及/或可包括與記憶體控制邏輯整合之I/O控制邏輯。處理元件亦可包括一或多個快取。
現請參照圖9,根據一實施例,所示係一運算系統1000實施例的一方塊圖。圖9中所示係一多處理器系統1000,其包括一第一處理元件1070及一第二處理元件1080。儘管所示係兩個處理元件1070及1080,要瞭解的是,系統1000之一實施例仍可僅包括一個此類處理元件。
系統1000係示為一點對點互連系統,其中第一處理元件1070與第二處理元件1080係經由一點對點互連1050耦接。應瞭解的是,圖9中所示之任何或所有互連都可實施成一多分支匯流排,而不是點對點互連。
如圖9所示,處理元件1070及1080各可以是多核心處理器,其包括第一及第二處理器核心(即處理器核心1074a及1074b以及處理器核心1084a及1084b)。此類核心1074a、1074b、1084a、1084b可被組配用以採用類似於以上搭配圖8所論之一方式來執行指令碼。
各處理元件1070、1080可包括至少一個共享快取1896a、1896b。共享快取1896a、1896b可儲存由處理器之一或多個組件,諸如核心1074a、1074b及1084a、1084b,分別利用之資料(例如:指令)。舉例而言,共享快取1896a、1896b可本機快取儲存在一記憶體1032、1034中之資料,以供處理器之組件更快存取。在一或多項實施例中,共享快取1896a、1896b可包括一或多個中階快取,例如第2階(L2)、第3階(L3)、第4階(L4)、或其他階快取、最後一階快取(LLC)、及/或以上的組合。
儘管所示僅兩個處理元件1070、1080,要瞭解的是,實施例之範疇並不如此受限。在其他實施例中,一給定處理器中可存在一或多個附加處理元件。替代地,處理元件1070、1080中之一或多者可以是有別於一處理器之一元件,諸如一加速器或一可現場規劃閘陣列。舉例而言,(諸)附加處理元件可包括與一第一處理器1070相同之(諸)附加處理器、與一處理器1070呈異質性或不對稱性之(諸)附加處理器、加速器(舉例如圖形加速器或數位信號處理(DSP)單元)、可現場規劃閘陣列、或任何其他處理元件。依據包括架構、微架構、熱、功率消耗特性及類似者之一連串優點計量,處理元件1070、1080間可有各種差異。這些差異可就處理元件1070、1080間的不對稱性與異質性有效地自我彰顯。就至少一項實施例,各種處理元件1070、1080可駐留於相同的晶粒封裝體中。
第一處理元件1070可更包括記憶體控制器邏輯(MC) 1072及點對點(P-P)介面1076及1078。類似的是,第二處理元件1080可包括一MC 1082及P-P介面1086及1088。如圖9所示,MC 1072與1082可將處理器耦接至各別記憶體,即一記憶體1032與一記憶體1034,其可以是主記憶體局部附接至該等各別處理器之部分。儘管MC 1072及1082係繪示為整合到處理元件1070、1080裡,對於替代實施例,MC邏輯仍可以是處理元件1070、1080外面之分立邏輯,而不是整合於其中。
第一處理元件1070及第二處理元件1080可分別經由P-P互連1076及1086耦接至I/O子系統1090。如圖9所示,I/O子系統1090包括P-P介面1094及1098。再者,I/O子系統1090包括一介面1092,用以將I/O子系統1090與一高效能圖形引擎1038耦接。在一項實施例中,匯流排1049可用於將圖形引擎1038耦接至I/O子系統1090。替代地,一點對點互連可將這些組件耦接。
進而,I/O子系統1090可經由一介面1096耦接至一第一匯流排1016。在一項實施例中,第一匯流排1016可以是一週邊組件互連(PCI)匯流排、或諸如一PCI快速匯流排或另一第三代I/O互連匯流排之一匯流排,但實施例之範疇並不如此受限。
如圖9所示,連同可將第一匯流排1016耦接至一第二匯流排1020之一匯流排橋接器1018,可將各種I/O裝置1014 (例如:生物特徵掃描器、揚聲器、相機、感測器)耦接至第一匯流排1016。在一項實施例中,第二匯流排1020可以是一低接腳數(LPC)匯流排。在一項實施例中,各種裝置可耦接至第二匯流排1020,舉例而言,包括一鍵盤/滑鼠1012、(諸)通訊裝置1026、以及一資料儲存單元1019,諸如一磁碟機或其他大量儲存裝置,其可包括軟體碼1030。所示軟體碼1030可實施已經論述之增強型載入及運算操作108 (圖1)、方法300 (圖2)、區塊載入過程350 (圖3)、方法400 (圖4)、及/或方法450 (圖5)之一或多項態樣。再者,一音訊I/O 1024可耦接至第二匯流排1020,並且一電池1010可向運算系統1000供電。
請注意,得以思忖其他實施例。舉例而言,一系統可實施一多分支匯流排或另一此類通訊拓樸結構,而不是圖9之點對點架構。圖9之元件亦可替代地使用比圖9所示更多或更少之整合式晶片來劃分。
附加註記及實例:
實例1包括一種運算系統,其包含用以執行一運算之一加速器、一處理器、以及耦接至該處理器及該加速器之一記憶體,該記憶體包括一可執行程式指令集合,該可執行程式指令集合在由該處理器或該加速器中之一或多者執行時,致使該運算系統識別該運算是要基於複數個值來執行,確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。
實例2包括實例1之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
實例3包括實例2之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統基於該順序將該等複數個值之該第一子集載入到該加速器之暫存器裡,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及將該第一值儲存到該加速器之一共享記憶體裡。
實例4包括實例1至3中任何一者之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
實例5包括實例1至4中任何一者之運算系統,其中該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
實例6包括實例1至5中任何一者之運算系統,其中該運算係一矩陣乘法運算。
實例7包括一種半導體設備,其包含一或多個基材、以及耦接至該一或多個基材之邏輯,其中該邏輯係實施在可組配或固定功能硬體中之一或多者中,該邏輯用以識別一運算是要基於複數個值來執行,確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。
實例8包括實例7之設備,其中耦接至該一或多個基材之該邏輯係用來基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
實例9包括實例8之設備,其中耦接至該一或多個基材之該邏輯係用來基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器裡,憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及將該第一值儲存到該加速器之一共享記憶體裡。
實例10包括實例7至9中任何一者之設備,其中耦接至該一或多個基材之該邏輯係用來識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
實例11包括實例7至10中任何一者之設備,其中該運算是要藉由一加速器來執行,以及該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
實例12包括實例7至11中任何一者之設備,其中該運算係一矩陣乘法運算。
實例13包括實例7至12中任何一者之設備,耦接至該一或多個基材之該邏輯包括被安置於該一或多個基材內之電晶體通道區域。
實例14包括包含一可執行程式指令集合之至少一種電腦可讀儲存媒體,該可執行程式指令集合在由一運算系統執行時,致使該運算系統識別一運算是要基於複數個值來執行,確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。
實例15包括實例14之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
實例16包括實例15之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器裡,憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及將該第一值儲存到該加速器之一共享記憶體裡。
實例17包括實例14至16中任何一者之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
實例18包括實例14至17中任何一者之至少一個電腦可讀儲存媒體,其中該運算是要藉由一加速器來執行,以及該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
實例19包括實例14至18中任何一者之至少一個電腦可讀儲存媒體,其中該運算係一矩陣乘法運算。
實例20包括一種方法,其包含識別一運算將基於複數個值來執行,確定與該運算相關聯之一操作順序,以及按基於該操作順序確定之一順序載入該等複數個值。
實例21包括實例20之方法,其更包含基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
實例22包括實例21之方法,其更包含基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器裡,憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及將該第一值儲存到該加速器之一共享記憶體裡。
實例23包括實例20至22中任何一者之方法,其更包含識別來自該等複數個值之一第一值與來自該等複數個值之一第二值將相乘在一起,以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
實例24包括實例20至23中任何一者之方法,其中該運算係藉由一加速器來執行,以及該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
實例25包括實例20至24中任何一者之方法,其中該運算係一矩陣乘法運算。
實例26包括一種半導體設備,其包含識別一運算將基於複數個值來執行用的構件、確定與該運算相關聯之一操作順序用的構件、以及按基於該操作順序確定之一順序載入該等複數個值用的構件。
實例27包括實例26之設備,其更包含基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集用的構件、以及在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值用的構件。
實例28包括實例27之設備,其更包含基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器裡用的構件、憑藉該加速器基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值用的構件、以及將該第一值儲存到該加速器之一共享記憶體裡用的構件。
實例29包括實例26至28中任何一者之設備,其更包含識別來自該等複數個值之一第一值與來自該等複數個值之一第二值將相乘在一起用的構件、以及基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值用的構件。
實例30包括實例26至29中任何一者之設備,其中該運算係藉由一加速器來執行,以及該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
實例31包括實例26至30中任何一者之設備,其中該運算係一矩陣乘法運算。
因此,本文中所述之技術可提供基於運算順序載入資料之一增強型系統。這樣做可減少潛時及等待。
實施例適用於與所有類型之半導體積體電路(「IC」)晶片配合使用。這些IC晶片之實例包括但不限於處理器、控制器、晶片組組件、可規劃邏輯陣列(PLA)、記憶體晶片、網路晶片、系統晶片(SoC)、SSD/NAND控制器ASIC、及類似者。另外,在一些圖式中,信號導線係以線條代表。有些可不同,用以指出更多構成信號路徑,具有一數字標籤,用以指出若干構成信號路徑,及/或在一端或多端具有箭頭,用以指出主要資訊流動方向。然而,這不應該以一限制性方式詮釋。反而,此類新增細節可與一或多項例示性實施例搭配用於促進更容易理解一電路。任何表示之信號線,無論是否具有附加資訊,實際上都可包含一或多個信號,該等信號依複數個方向行進,並且可用任何適當類型之信號方案來實施,例如以差動對實施之數位或類比線路、光纖線路、及/或單端線路。
可能已經給定例示性尺寸/模型/值/範圍,但實施例並不受限於該等尺寸/模型/值/範圍。因為製造技巧(例如:光微影)隨著時間而成熟,預期可製造尺寸更小之裝置。另外,為了便於說明及論述,且為了不混淆實施例之某些態樣,圖式內可以或可不展示連至IC晶片及其他組件之眾所周知的電力/接地連接。再者,可採用方塊圖形式來展示布置結構,為的是要避免混淆實施例,另外還鑑於與此類方塊圖布置結構之實作態樣有關之特定內容高度地取決於實施例要在裡面實施之平台的事實,亦即此類特定內容應妥適地在所屬技術領域中具有通常知識者之見識範圍內。倘若為了說明例示性實施例而提出特定細節(例如電路),對所屬技術領域中具有通常知識者應該顯而易見的是,不用這些特定細節、或利用這些特定細節之變例也可實踐實施例。本說明因此乃視為具有說明性,而不是限制性。
「耦接」一詞可在本文中意指為所論組件之間的任何類型之直接或間接關係,並且可應用於電氣、機械、流體、光學、電磁、機電或其他連接。另外,「第一」、「第二」等詞在本文中可僅用於促進論述,並且不具有特定之時間性或時序意義,除非另有所指。
由「中之一或多者」一詞所結合之一項目清單於本申請書中、及申請專利範圍中使用時,可意味著所列用語之任何組合。舉例而言,「A、B或C中之一或多者」一詞可意味著A、B、C;A及B;A及C;B及C;或A、B及C。
所屬技術領域中具有通常知識者將從前述說明了解實施例之廣泛技能可採用各種形式來實施。因此,儘管實施例已搭配其特定實例作說明,實施例之真實範疇仍不應該如此受限,因為其他修改對於所屬技術領域中具有通常知識者在研究圖式、說明書及以下申請專利範圍時將變得顯而易見。
100:過程 102,106:電腦碼 104,354:矩陣A 108:增強型載入及運算操作 110:對照、習知的載入及運算操作 112,114:矩陣 132:圖形處理器 134:主機處理器 136:ROM 138:VPU 142:IO模組 144:系統記憶體 146:半導體晶粒 148:AI加速器 148a:暫存器 148b:共享記憶體 154:整合式記憶體控制器(IMC) 156:指令 158,1000:運算系統 172:顯示器 174:網路控制器 176:大量儲存器 178:FPGA 182:邏輯 184:基材 186:半導體設備 200:處理器核心 210:前端部分 213,1030:軟體碼 220:解碼器 225:暫存器重新命名邏輯 230:排程邏輯 250:執行邏輯 255-1,255-2,255-N:執行單元 260:後端邏輯 265:引退邏輯 270,1032,1034:記憶體 300,400:方法 302,304,306,402,404,406,408,410,412,450,452,454,456,458,460,462:處理塊 350:區塊載入過程 352:矩陣B 356:操作矩陣C 358:矩陣C 1010:電池 1012:鍵盤/滑鼠 1014:I/O裝置 1016:第一匯流排 1018:匯流排橋接器 1019:資料儲存單元 1020:第二匯流排 1024:音訊I/O 1026:通訊裝置 1038:高效能圖形引擎 1049:匯流排 1070,1080:處理元件 1072,1082:MC 1074a,1074b,1084a,1084b:核心 1076,1078:點對點(P-P)介面 1086,1088:P-P互連 1090:I/O子系統 1092,1096:介面 1094,1098:P-P介面
對所屬技術領域中具有通常知識者,實施例之各種優點藉由閱讀以下說明書及隨附申請專利範圍、以及藉由參考以下圖式將變得顯而易見,其中:
圖1根據一實施例,係載入與電腦碼之執行相關聯之資料用之一過程之一實例的一簡圖;
圖2根據一實施例,係一方法之一實例的一流程圖,用來載入資料以執行一多步驟運算;
圖3根據一實施例,係一區塊載入過程之一實例的一簡圖;
圖4根據一實施例,係壓縮資料之一方法之一實例的一流程圖;
圖5根據一實施例,係基於資料載入並執行運算之一方法之一實例的一流程圖;
圖6根據一實施例,係效能增強型運算系統之一實例的一方塊圖;
圖7根據一實施例,係一半導體設備之一實例的一例示;
圖8根據一實施例,係一處理器之一實例的一方塊圖;以及
圖9根據一實施例,係一多處理器為基之運算系統之一實例的一方塊圖。
300:方法
302,304,306:處理塊

Claims (25)

  1. 一種用於交錯式資料處理之運算系統,其包含: 一加速器,其用以執行一運算; 一處理器;以及 一記憶體,其係耦接至該處理器及該加速器,該記憶體包括一可執行程式指令集合,該可執行程式指令集合在由該處理器或該加速器中之一或多者執行時,致使該運算系統進行下列動作: 識別該運算是要基於複數個值來執行, 確定與該運算相關聯之一操作順序,以及 按基於該操作順序所確定之一順序載入該等複數個值。
  2. 如請求項1之用於交錯式資料處理之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統進行下列動作: 基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集,以及 在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
  3. 如請求項2之用於交錯式資料處理之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統進行下列動作: 基於該順序將該等複數個值之該第一子集載入到該加速器之暫存器中, 基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值,以及 將該第一值儲存到該加速器之一共享記憶體中。
  4. 如請求項1之用於交錯式資料處理之運算系統,其中該等可執行程式指令在受執行時,致使該運算系統進行下列動作: 識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起,以及 基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
  5. 如請求項1之用於交錯式資料處理之運算系統,其中該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
  6. 如請求項1至5中任一項之用於交錯式資料處理之運算系統,其中該運算係一矩陣乘法運算。
  7. 一種用於交錯式資料處理之半導體設備,其包含: 一或多個基材;以及 邏輯,其係耦接至該一或多個基材,其中該邏輯係實施在可組配或固定功能硬體中之一或多者中,該邏輯用以進行下列動作: 識別一運算是要基於複數個值來執行; 確定與該運算相關聯之一操作順序;以及 按基於該操作順序所確定之一順序載入該等複數個值。
  8. 如請求項7之用於交錯式資料處理之設備,其中耦接至該一或多個基材之該邏輯係用來進行下列動作: 基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集;以及 在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
  9. 如請求項8之用於交錯式資料處理之設備,其中耦接至該一或多個基材之該邏輯係用來進行下列動作: 基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器中; 憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值;以及 將該第一值儲存到該加速器之一共享記憶體中。
  10. 如請求項7之用於交錯式資料處理之設備,其中耦接至該一或多個基材之該邏輯係用來進行下列動作: 識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起;以及 基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
  11. 如請求項7之用於交錯式資料處理之設備,其中: 該運算是要藉由一加速器來執行;以及 該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
  12. 如請求項7至11中任一項之用於交錯式資料處理之設備,其中該運算係一矩陣乘法運算。
  13. 如請求項7至11中任一項之用於交錯式資料處理之設備,其中耦接至該一或多個基材之該邏輯包括被安置於該一或多個基材內之電晶體通道區域。
  14. 一種用於交錯式資料處理之至少一個電腦可讀儲存媒體,其包含一可執行程式指令集合,該可執行程式指令集合在由一運算系統執行時,致使該運算系統進行下列動作: 識別一運算是要基於複數個值來執行; 確定與該運算相關聯之一操作順序;以及 按基於該操作順序所確定之一順序載入該等複數個值。
  15. 如請求項14之用於交錯式資料處理之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統進行下列動作: 基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集;以及 在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
  16. 如請求項15之用於交錯式資料處理之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統進行下列動作: 基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器中; 憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值;以及 將該第一值儲存到該加速器之一共享記憶體中。
  17. 如請求項14之用於交錯式資料處理之至少一個電腦可讀儲存媒體,其中該等指令在受執行時,進一步致使該運算系統進行下列動作: 識別要將來自該等複數個值之一第一值與來自該等複數個值之一第二值相乘在一起;以及 基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
  18. 如請求項14之用於交錯式資料處理之至少一個電腦可讀儲存媒體,其中: 該運算是要藉由一加速器來執行;以及 該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
  19. 如請求項14至18中任一項之用於交錯式資料處理之至少一個電腦可讀儲存媒體,其中該運算係一矩陣乘法運算。
  20. 一種用於交錯式資料處理之方法,其包含: 識別一運算將基於複數個值來執行; 確定與該運算相關聯之一操作順序;以及 按基於該操作順序所確定之一順序載入該等複數個值。
  21. 如請求項20之用於交錯式資料處理之方法,其更包含: 基於該操作順序在該等複數個值之一第二子集之前載入該等複數個值之一第一子集;以及 在載入該等複數個值之該第二子集之前,基於該等複數個值之該第一子集來計算一第一值。
  22. 如請求項21之用於交錯式資料處理之方法,其更包含: 基於該順序將該等複數個值之該第一子集載入到一加速器之暫存器中; 憑藉該加速器,基於儲存在該等暫存器中之該等複數個值之該第一子集來運算該第一值;以及 將該第一值儲存到該加速器之一共享記憶體中。
  23. 如請求項20之用於交錯式資料處理之方法,其更包含: 識別來自該等複數個值之一第一值與來自該等複數個值之一第二值將相乘在一起;以及 基於相乘在一起之該第一值與該第二值,在同一載入操作期間載入該第一值及該第二值。
  24. 如請求項20之用於交錯式資料處理之方法,其中: 該運算係藉由一加速器來執行;以及 該加速器係一圖形處理單元、一視覺處理單元或一人工智慧加速器。
  25. 如請求項20至24中任一項之用於交錯式資料處理之方法,其中該運算係一矩陣乘法運算。
TW111139908A 2021-12-07 2022-10-20 用以將操作的運算及資料儲存交疊之交錯式資料負載系統 TW202324147A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/CN2021/136030 2021-12-07
PCT/CN2021/136030 WO2023102722A1 (en) 2021-12-07 2021-12-07 Interleaved data loading system to overlap computation and data storing for operations

Publications (1)

Publication Number Publication Date
TW202324147A true TW202324147A (zh) 2023-06-16

Family

ID=86729461

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111139908A TW202324147A (zh) 2021-12-07 2022-10-20 用以將操作的運算及資料儲存交疊之交錯式資料負載系統

Country Status (3)

Country Link
CN (1) CN117980898A (zh)
TW (1) TW202324147A (zh)
WO (1) WO2023102722A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10867239B2 (en) * 2017-12-29 2020-12-15 Spero Devices, Inc. Digital architecture supporting analog co-processor
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质
US20210048991A1 (en) * 2019-08-13 2021-02-18 Nvidia Corporation Performing matrix operations in neural networks
US11372644B2 (en) * 2019-12-09 2022-06-28 Meta Platforms, Inc. Matrix processing instruction with optional up/down sampling of matrix
CN112487750B (zh) * 2020-11-30 2023-06-16 西安微电子技术研究所 一种基于存内计算的卷积加速计算系统及方法

Also Published As

Publication number Publication date
CN117980898A (zh) 2024-05-03
WO2023102722A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
JP2020537785A (ja) ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理
EP3979072B1 (en) Firmware boot task distribution to enable low latency boot performance
US20220350863A1 (en) Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding
EP4020474A1 (en) Multi-buffered register files with shared access circuits
TW202324147A (zh) 用以將操作的運算及資料儲存交疊之交錯式資料負載系統
EP3992865A1 (en) Accelerated loading of unstructured sparse data in machine learning architectures
US11249910B2 (en) Initialization and management of class of service attributes in runtime to optimize deep learning training in distributed environments
WO2021232396A1 (en) Accelerating system boot times via host-managed device memory
US11907118B2 (en) Interleaved data conversion to change data formats
US20230041115A1 (en) Implementing external memory training at runtime
US20230115542A1 (en) Programmable matrix multiplication engine
US11385873B2 (en) Control speculation in dataflow graphs
US20240045723A1 (en) Hierarchical compute and storage architecture for artificial intelligence application
US11663056B2 (en) Unified programming interface for regrained tile execution
US20240201949A1 (en) Sparsity-aware performance boost in compute-in-memory cores for deep neural network acceleration
CN114064198A (zh) 经由os接口表的单numa域内的多虚拟numa域
TW202129492A (zh) 用於分割異質系統的電腦應用的自動學習科技