TWI564807B - 排程方法及應用其的處理裝置 - Google Patents
排程方法及應用其的處理裝置 Download PDFInfo
- Publication number
- TWI564807B TWI564807B TW104137764A TW104137764A TWI564807B TW I564807 B TWI564807 B TW I564807B TW 104137764 A TW104137764 A TW 104137764A TW 104137764 A TW104137764 A TW 104137764A TW I564807 B TWI564807 B TW I564807B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread group
- instruction
- unit
- data access
- group
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 51
- 238000000034 method Methods 0.000 title claims description 45
- 238000002360 preparation method Methods 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 15
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000302 molecular modelling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Description
本發明是有關於一種對多執行緒群組的排程方法以及應用此方法的處理裝置。
在一般的電腦系統中,配有中央處理器(Central Processing Unit,CPU),用以執行通用的運算任務。然而,為解決各種特定問題,特別是針對高度平行計算且計算密集的需求,不斷有其他的計算單元被加入電腦系統中,其中最常見的就是繪圖處理器(Graphics Processing Unit,GPU)。
隨著繪圖處理器效能的快速成長,利用繪圖處理器來處理大量平行運算的通用繪圖處理器(General Purpose GPU,GPGPU)應用已成為下個世代高效能運算的趨勢。繪圖處理器透過將多個執行緒群組(Thread Group)排程,分派執行緒群組到多個處理元件(Processing Element)同時執行,來達到平行處理的運算模式,以提升運算效能。因此,如何設計有效率的排程方法,乃目前業界所致力的課題之一。
本發明是有關於一種對多執行緒群組的排程方法以及應用此方法的處理裝置。
根據本發明之第一方面,提出一種排程方法,用以排程多個執行緒群組,方法包括:記錄各執行緒群組的待執行指令以及準備狀態於記錄表中;判斷是否有準備狀態為肯定的已準備執行緒群組;判斷資料存取單元是否閒置,資料存取單元係用以存取資料記憶單元;當資料存取單元閒置時,判斷已準備執行緒群組是否包括資料存取指令執行緒群組,資料存取指令執行緒群組的待執行指令相關於存取資料記憶單元;當資料存取指令執行緒群組存在時,優先從資料存取指令執行緒群組選擇目標執行緒群組;以及將目標執行緒群組分派至資料存取單元執行。
根據本發明之第二方面,提出一種處理裝置,用以排程多個執行緒群組。處理裝置包括狀態儲存單元、指令擷取單元、功能單元、記憶體存取優先單元、仲裁單元以及分派單元。狀態儲存單元用以儲存一記錄表,記錄表記錄各執行緒群組的待執行指令以及各執行緒群組的準備狀態。指令擷取單元用以從指令記憶單元擷取各執行緒群組的待執行指令並更新至記錄表。功能單元包括運算單元以及資料存取單元,資料存取單元用以存取資料記憶單元。記憶體存取優先單元用以監測資料存取單元是否閒置,並且當資料存取單元閒置時,判斷是否存在資料存取指令執行緒群組,其中資料存取指令執行緒群組的準備狀態是肯定,且資料存取指令執行緒群組的待執行指令相關於存取資料記憶
單元。仲裁單元根據記錄表以及資料存取指令執行緒群組,從執行緒群組中選擇一目標執行緒群組。分派單元將目標執行緒群組分派至運算單元或資料存取單元執行。當資料存取單元閒置且資料存取指令執行緒群組存在時,仲裁單元優先從資料存取指令執行緒群組選擇目標執行緒群組。
根據本發明之第三方面,提出一種電腦可讀取媒體,電腦可讀取媒體儲存一組指令,可被一電腦處理器載入以執行一方法,該方法用以排程多個執行緒群組,該方法包括:記錄各執行緒群組的待執行指令以及準備狀態於記錄表中;判斷是否有準備狀態為肯定的已準備執行緒群組;判斷資料存取單元是否閒置,資料存取單元係用以存取資料記憶單元;當資料存取單元閒置時,判斷已準備執行緒群組是否包括資料存取指令執行緒群組,資料存取指令執行緒群組的待執行指令相關於存取資料記憶單元;當資料存取指令執行緒群組存在時,優先從資料存取指令執行緒群組選擇目標執行緒群組;以及將目標執行緒群組分派至資料存取單元執行。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉依據本發明的可實施範例,並配合所附圖式,作詳細說明如下:
10‧‧‧中央處理器
20‧‧‧繪圖處理器
210‧‧‧串流多處理器
220‧‧‧處理元件
31‧‧‧處理裝置
310‧‧‧狀態儲存單元
320‧‧‧指令擷取單元
330‧‧‧分派單元
340‧‧‧仲裁單元
350‧‧‧功能單元
360‧‧‧資料存取單元
370‧‧‧運算單元
380‧‧‧記憶體存取優先單元
40‧‧‧資料記憶單元
42‧‧‧指令記憶單元
S500‧‧‧記錄各執行緒群組的待執行指令以及準備狀態於記錄表中
S502‧‧‧判斷是否有準備狀態為肯定的已準備執行緒群組
S504‧‧‧判斷資料存取單元是否閒置
S506‧‧‧判斷運算單元是否閒置以及已準備執行緒群組是否包括運算指令執行緒群組
S508‧‧‧判斷已準備執行緒群組是否包括資料存取指令執行緒群組
S510‧‧‧從運算指令執行緒群組選擇具有最高優先權重的一者作為運算目標執行緒群組
S512‧‧‧從資料存取指令執行緒群組優先選擇一目標執行緒群組
S514‧‧‧將目標執行緒群組分派至資料存取單元執行
S516‧‧‧將運算目標執行緒群組分派至運算單元執行
Warp 0~Warp 7‧‧‧執行緒群組
第1圖繪示一種異質系統架構的示意圖。
第2圖繪示工作群組以及執行緒群組的示意圖。
第3圖繪示依據本發明一實施例之處理裝置的示意圖。
第4圖繪示依據本發明一實施例之排程方法流程圖。
第5圖繪示儲存執行緒群組之一範例記錄表的示意圖。
第6A~6C圖繪示對多執行緒群組排程範例的示意圖。
第1圖繪示一種異質系統架構(Heterogeneous System Architecture,HSA)的示意圖。如第1圖所示,在此HSA架構中,中央處理器(CPU)10可與多個繪圖處理器(GPU)20協同運作,其中繪圖處理器20可作為通用繪圖處理器應用(GPGPU)。舉例而言,GPU 20不僅可處理圖形計算,亦可被用來處理通用類型的資料計算,尤其是單一指令多資料流(Single Instruction Multiple Data,SIMD)的應用,例如氣象模擬、分子模型、物理或化學研究上的計算。
如第1圖所示,此HSA架構中可包括多個GPU 20,此為第一階層的平行運算。GPU 20內部可包括多個串流多處理器(Streaming Multiprocessor,SM)210,此為第二階層的平行運算。每個SM 210可包括多個處理元件(Processing Element,PE)220,此為第三階層的平行運算。如上所述,透過GPU 20內部結構高度平行化的特性,可對SIMD應用達成高效率的運算結果,而GPU 20所對應執行的程式架構可參考第2圖。
第2圖繪示工作群組以及執行緒群組的示意圖。開
放計算語言(Open Computing Language,OpenCL)是一個為異質系統架構平台編寫程式的框架,以OpenCL運算架構為例,一個交由GPU 20處理的程式可視為一個N維索引空間(NDRange,Grid),第2圖所繪示的例子為三維索引空間。索引空間可分為多個工作群組(Work-Group),每一個工作群組係交由一個SM 210處理,索引空間可根據GPU 20的硬體規格被分割成適當維度大小的工作群組。每一個工作群組包括多個工作項目(Work-Item),每一個工作項目可對應於一個執行緒(Thread),係交由一個PE 220處理。由於一個SM 210包括多個PE 220,因此可根據PE 220的數量,將多個工作項目設為一個群組並成為一個執行緒群組(Thread Group),或可稱為執行緒束(Warp),此二名詞將於以下說明中交替使用。
從SM 210的角度來看,SM 210接收一個工作群組,此工作群組可被分割為多個執行緒群組,執行緒群組的大小相關於SM 210的硬體規格,例如相關於SM 210內部的PE 220數量,PE 220的數量較多時,可同時執行的執行緒較多,因此可以有較大的執行緒群組。SM 210安排各個執行緒群組執行的時間及先後順序,即對多個執行緒群組進行排程。例如在SM 210的一個時脈週期中,將一個執行緒群組交由多個PE 220執行,各個PE 220分別對應到一個執行緒,各個PE 220可同時執行此執行緒中相同的指令(Instruction),達成平行運算的效果。舉例而言,1個SM 210包括有16個PE 220,這16個PE 220可以同時執行
加法運算指令,但各個PE 220分別對應到不同的資料。以下說明依據本發明的實施例所提出的排程方法及應用其的處理裝置。
第3圖繪示依據本發明一實施例之處理裝置31的示意圖。處理裝置31例如可以是上述的串流多處理器210、或是在繪圖處理器中對多執行緒群組執行排程的單元、或是中央處理器中的排程單元,並不加以限制,處理裝置31可用以排程多個執行緒群組W0,W1,W2,...,WM。處理裝置31包括狀態儲存單元310、指令擷取單元320、分派單元(Dispatch Unit)330、仲裁單元340、記憶體存取優先(Memory Access First,MAF)單元380、及功能單元(Functional Unit)350,其中功能單元350包括資料存取單元360以及運算單元370。狀態儲存單元310用以儲存一記錄表T,記錄表T記錄各執行緒群組Wi的待執行指令INSi以及各執行緒群組Wi的準備狀態RDi。指令擷取單元320用以從指令記憶單元42擷取各執行緒群組Wi的待執行指令INSi並更新至記錄表T。資料存取單元360用以存取資料記憶單元40。記憶體存取優先單元380用以監測資料存取單元360是否閒置,並且當資料存取單元360閒置時,判斷是否存在至少一資料存取指令執行緒群組WDA,資料存取指令執行緒群組WDA的準備狀態RDi是肯定,且資料存取指令執行緒群組WDA的待執行指令INSi相關於存取資料記憶單元40。仲裁單元340根據記錄表T以及資料存取指令執行緒群組WDA,從多個執行緒群組W0~WM中選擇一目標執行緒群組WT。分派單元330將目標執行緒群組WT分派至運算單元
370或資料存取單元360執行。當資料存取單元360閒置且資料存取指令執行緒群組WDA存在時,仲裁單元340優先從資料存取指令執行緒群組WDA選擇目標執行緒群組WT。以下分別詳細說明各個單元。
以第1圖以及第2圖為例,處理裝置31可以是SM 210,處理裝置31可被分配到一個工作群組,而工作群組可分為多個執行緒群組W0,W1,W2,...,WM,每一個執行緒群組Wi內有多個執行緒,例如SM 210內部有16個PE 220,則一個執行緒群組內可以有16個執行緒,各執行緒可以分別獨立執行。每一個執行緒可包括多個指令,這些指令可被PE 220所執行,指令例如包括運算指令ADD(加)、SUB(減)、MUL(乘)、DIV(除)以及記憶體存取指令LD(載入資料)、ST(儲存資料)等。
狀態儲存單元310用以儲存記錄表T,記錄表T記錄各執行緒群組Wi的待執行指令INSi以及各執行緒群組Wi的準備狀態RDi。如前所述,一個執行緒群組有多個平行執行的執行緒,而一個執行緒有多個依序執行的指令,因此可記錄每個執行緒群組目前執行到哪一個指令,下一個待執行指令是什麼,此資訊可來自於指令擷取單元320。舉例而言,執行緒群組Wi當中的執行緒有依序執行的指令{LD-ADD-SUB-ST},此指令順序可儲存於指令記憶單元42(例如記憶體)特定的位址處,當執行完(或即將執行完)ADD指令之後,可由程式計數器(Program Counter)得知下一個記憶體位址,指令擷取單元320便會到指令記憶單元42對
應的位址處擷取下一個要執行的指令。
擷取指令後需經過解碼才能被執行,為圖示便於呈現起見,第3圖繪示的指令擷取單元320可同時包括指令解碼功能,於實作中,指令擷取(Fetch)以及指令解碼(Decode)可以分別是指令管線化(Pipeline)的一個管線階段。指令擷取單元320自指令記憶單元42擷取下一個指令,可更新至記錄表T當中執行緒群組Wi的待執行指令INSi。記錄表T當中的準備狀態RDi則是相關於待執行指令INSi是否已解碼完成,以及待執行指令INSi對應的運算元(Operand)是否已可使用。舉例而言,若待執行指令ADD是將兩個暫存器R1與R2的值相加,則當指令ADD已解碼完成,並且暫存器R1與R2的值皆已可使用時,則代表此待執行指令ADD已準備好,即將對應的準備狀態(ready state)設為肯定。儲存有記錄表T的狀態儲存單元310可由電路實現,例如可以是隨機存取記憶體(Random Access Memory,RAM),或是閂鎖器(Latch)及正反器(Flip-Flop)等等具有儲存狀態能力的電路。
功能單元350可包括多個運算單元370以及多個資料存取單元360,使得處理裝置31能夠達到平行執行的效果。運算單元370可執行相關於運算的指令,運算單元370例如包括有整數以及浮點數算術邏輯單元(Arithmetic Logic Unit,ALU),於一實施例中,運算單元370亦可以包括特殊功能運算單元,例如是針對乘法、除法、指數函數或三角函數運算而設計的電路。
資料存取單元360可執行相關於存取資料記憶單元
40的指令,例如包括LD以及ST,資料存取單元360負責自資料記憶單元40載入資料至暫存器,或是將暫存器資料儲存至資料記憶單元40。資料記憶單元40例如是記憶體,資料記憶單元40可包括多個階層的記憶體結構,例如可以有與處理裝置31設置於同一晶片的內建記憶體(on-chip memory),亦可以有與處理裝置31設置於不同晶片的外部記憶體(off-chip memory),並可使用快取(cache)以加快存取速度。
以載入指令LD為例,當多個資料存取單元360同時執行LD指令時,每一個資料存取單元360皆需同時從資料記憶單元40讀取資料,所需的記憶體頻寬大,對於處理裝置31而言,當記憶體頻寬負荷大時,多個資料存取單元360所同時執行的LD指令可能無法在一個時脈完成,因而會造成額外的等待時間。由此可見,若無法對執行緒群組進行適當的排程,可能會大幅增加程式的執行時間。
因此,依據本發明實施例所提出的處理裝置31,包括有記憶體存取優先(Memory Access First,MAF)單元380,可監測資料存取單元360的使用狀態,能夠得知資料存取單元360是否閒置可用。舉例而言,資料存取單元360可在對資料記憶單元40的存取動作完成之後,發出一控制信號通知記憶體存取優先單元380自己目前已處於閒置狀態,記憶體存取優先單元380可透過持續監測的方式,根據這樣的控制信號掌握資料存取單元360的使用狀態。
記憶體存取優先單元380除了可監測資料存取單元360是否閒置之外,更可在資料存取單元360閒置時,根據記錄表T判斷是否存在至少一資料存取指令執行緒群組WDA。資料存取指令執行緒群組WDA可能包括一個或多個執行緒群組Wi,只要在記錄表T符合準備狀態RDi是肯定,且待執行指令INSi是相關於存取資料記憶單元40(例如LD指令或ST指令),則執行緒群組Wi即是屬於資料存取指令執行緒群組WDA。若記錄表T當中沒有同時符合上述兩個條件(準備狀態RDi是肯定、且待執行指令INSi是相關於存取資料記憶單元40)的執行緒群組,則不存在資料存取指令執行緒群組WDA。
仲裁單元340可根據記錄表T決定多個執行緒群組W0~WM的排程順序。為了達到良好的資源利用率,並且克服記憶體頻寬容易形成的執行效能瓶頸,當記憶體存取優先單元380發現資料存取單元360閒置時,記憶體存取優先單元380可以送出存取指令執行緒群組WDA至仲裁單元,使得仲裁單元340更可以根據資料存取指令執行緒群組WDA決定目標執行緒群組WT。具體而言,當資料存取單元360閒置且資料存取指令執行緒群組WDA存在時,仲裁單元340可以優先從資料存取指令執行緒群組WDA當中選擇一目標執行緒群組WT進入排程,以使得閒置中的資料存取單元360立刻被分派到工作執行。
分派單元330可受控於仲裁單元340,將目標執行緒群組WT分派至功能單元350當中的運算單元370或資料存取
單元360執行。上述實施例處理裝置31的狀態儲存單元310、指令擷取單元320、分派單元330、仲裁單元340、記憶體存取優先單元380、資料存取單元360以及運算單元370,皆可以電路實作,且可以積體電路實作於一晶片上。
上述實施例處理裝置31使用的排程方法可參考第4圖,其繪示依據本發明一實施例之排程方法流程圖,排程方法包括下列多個步驟。步驟S500,記錄各執行緒群組Wi的待執行指令INSi以及各執行緒群組的準備狀態RDi於記錄表T中,此記錄表T可儲存於一記憶體電路中。步驟S500除了於初始狀態收到各執行緒群組Wi時可記錄,同時也包括之後持續執行的記錄表T內容更新,例如當指令擷取及解碼完成後,可以將擷取到的指令寫入記錄表T的待執行指令INSi欄位,並且更新準備狀態RDi。對應於第3圖中的處理裝置31,記錄表T例如儲存於狀態儲存單元310,而步驟S500對於記錄表T的更新,例如可以是由指令擷取單元320以及仲裁單元340共同維護記錄表T的內容。
步驟S502:判斷是否有準備狀態RDi為肯定的已準備執行緒群組。步驟S502可根據記錄表T內容判斷,若是沒有已準備好的執行緒群組,代表目前這個時脈並沒有適合進入排程的執行緒群組,則回到步驟S500,於下一個時脈重新進行一次流程。而若步驟S502的判斷結果為是,則需進一步決定應將哪一個執行緒群組優先排程。
步驟S504:判斷資料存取單元是否閒置,資料存取
單元係用以存取資料記憶單元。可對照第3圖所示的處理裝置31,步驟S504判斷資料存取單元360是否閒置,步驟S504例如可由記憶體存取優先單元380執行。若步驟S504判斷的結果為是,代表資料存取單元360閒置中,此時若有適合資料存取單元360執行的指令,則可以優先排程。
步驟S508:判斷已準備執行緒群組當中是否存在至少一資料存取指令執行緒群組WDA,資料存取指令執行緒群組WDA的待執行指令相關於存取資料記憶單元40,資料存取指令執行緒群組WDA可能包括一個或多個執行緒群組。若是步驟S508的判斷結果為是,即代表記錄表T當中有執行緒群組Wi同時符合準備狀態RDi是肯定,且待執行指令INSi是相關於存取資料記憶單元40,應將此執行緒群組Wi優先排程。步驟S508例如可由記憶體存取優先單元380執行。
步驟S512:優先從資料存取指令執行緒群組WDA選擇一目標執行緒群組WT,步驟S512例如可由仲裁單元340執行。步驟S514:將目標執行緒群組WT分派至資料存取單元360執行,步驟S514例如可由分派單元330執行。
如上述實施例所述的排程方式以及應用其的處理裝置,由於考慮了資料存取單元的使用狀態,特別是根據資料存取單元是否閒置以及記錄表中各執行緒群組的狀態與指令類型,對執行緒群組進行排程。經由如此排程的結果,能夠提高資料存取單元的使用率,降低資料存取單元的閒置時間。在平行處理的程
式架構中,由於要處理的資料量大,記憶體的頻寬限制往往容易形成程式執行時間的瓶頸,藉由依據本發明的排程方法以及應用其的處理裝置實施例,能夠使得存取記憶體的資料存取單元得到較高的使用率,因此能夠降低記憶體頻寬對執行效能所造成的影響,達到減少程式執行時間的效果。
在一實施例中,排程方法更可以包括計算各執行緒群組Wi的優先權重Pi,優先權重Pi相關於各執行緒群組Wi的預設排程順序。優先權重Pi例如可相關於接收到各執行緒群組Wi的時間順序、各執行緒群組Wi目前的等待時間長度、各執行緒群組Wi剩餘的指令數量等等。以第3圖的處理裝置31為例,仲裁單元340可以依據各執行緒群組Wi的狀態,使用適當演算法動態地計算各執行緒群組Wi的優先權重Pi,使得仲裁單元340可以依據優先權重Pi選擇目標執行緒群組WT。
如前所述,資料存取指令執行緒群組WDA可能包括多個執行緒群組,因此步驟S512更可以包括:選擇資料存取指令執行緒群組WDA中優先權重Pi最高的一者作為目標執行緒群組WT。根據優先權重Pi從資料存取指令執行緒群組WDA中選擇一者的步驟,例如可由仲裁單元340執行。
以下說明第4圖所示的排程方法流程圖的其他步驟。當步驟S504的判斷結果為否,則表示資料存取單元360忙碌中,目前無法優先處理相關於存取資料記憶單元40的指令,應排程關於運算的指令。此時進入步驟S506:判斷運算單元370
是否閒置,以及判斷已準備執行緒群組當中是否存在至少一運算指令執行緒群組WAR,其中運算指令執行緒群組WAR的待執行指令相關於利用運算單元370進行運算。步驟S506例如可由仲裁單元340執行。
需說明的是,依據本發明實施例當中所界定的兩種類型的執行緒群組:運算指令執行緒群組WAR以及資料存取指令執行緒群組WDA,是根據執行緒群組在目前這個時間點的待執行指令而界定。亦即,同一個執行緒群組在不同的時間點,由於有不同的待執行指令,有可能被歸類為不同的類型。同理,對於一個資料存取指令執行緒群組WDA,其目前的待執行指令是相關於存取資料記憶單元40,然而資料存取指令執行緒群組WDA所包括的其他指令可以是相關於利用運算單元370進行運算。
若步驟S506的判斷結果為否,則表示目前時脈沒有適合排程的執行緒群組,回到步驟S500。而若步驟S506的判斷結果為是(運算單元370閒置且運算指令執行緒群組WAR存在),則進行步驟S510,選擇運算指令執行緒群組WAR中優先權重Pi最高的一者作為運算目標執行緒群組WTA,步驟S510例如可由仲裁單元340執行。接著執行步驟S516,將運算目標執行緒群組WTA分派至運算單元370執行,步驟S516例如可由分派單元330執行。步驟S510以及步驟S516是排程有關於運算指令的執行緒群組,因此可以不使用到記憶體存取優先單元380,能夠根據優先權重Pi決定運算目標執行緒群組WTA。
為清楚說明記錄表T的相關內容,第5圖繪示儲存執行緒群組之一範例記錄表的示意圖。此範例記錄表T的欄位包括有ID、Valid、PC、INS、Ready、Flags。ID欄位即代表在此記錄表T內的索引編號,一個索引編號對應一個執行緒群組Wi。Valid欄位代表此記錄表T的此列內容是否有效,例如當起始狀態或是無工作狀態,記錄表T是空的時候,Valid欄位可設為N表示目前的內容無效;當一個執行緒群組正常排程執行中時,內容有效因此Valid欄位為Y;當一個執行緒群組已完全執行完畢時,記錄表T不需再儲存此執行緒群組,故可將Valid欄位設為N,以表示目前此列的內容無效,可再放入新的執行緒群組內容。PC欄位代表這個執行緒群組目前執行到的程式計數器數值。INS欄位為這個執行緒群組的待執行指令,即此執行緒群組下一個要被執行的指令是什麼,可以是運算指令或是記憶體存取指令。舉例而言,指令擷取單元320可以根據PC欄位的值去指令記憶單元42擷取對應的指令,解碼後儲存於INS欄位中。Ready欄位即如前所述的準備狀態,Y為肯定,即代表這個待執行指令已準備好,反之則以N表示。Flags欄位可包括此執行緒群組的相關控制旗標,例如相關於分支(branch)指令、記憶體屏障(barrier)指令的控制旗標。
此記錄表T可儲存於狀態儲存單元310中,可由指令擷取單元320以及仲裁單元340共同維護,例如當指令擷取單元320擷取到指令時,可更新記錄表T內容,當仲裁單元340決
定目標執行緒群組WT後,可更新記錄表T內目標執行緒群組WT的待執行指令INST以及準備狀態RDT。可於處理裝置31的每個時脈週期持續更新記錄表T,例如根據現在這個時脈執行了哪一個執行緒群組的哪一個指令,持續更新記錄表T的內容。
依據實際的電路實作方法,狀態儲存單元310可以選擇性地耦接至處理裝置31當中的其他單元,在一實施例中,記錄表T可由指令擷取單元320、仲裁單元340、分派單元330以及功能單元350共同維護。除了前述的指令擷取單元320以及仲裁單元340,分派單元330亦可在將目標執行緒群組WT分派至功能單元350時,更新記錄表T中目標執行緒群組WT對應的準備狀態RDT。而功能單元350可以根據目前運算單元370或資料存取單元360執行指令的狀態,例如指令是否已經執行完畢,而調整記錄表T的內容。
以第4圖所示的流程圖配合此範例記錄表T說明。當執行步驟S502時,檢查是否有已準備好的執行緒群組,即記錄表中Ready欄位是Y的,根據第5圖所示的例子,可對應到ID是0、1、3、5的執行緒群組。假設在此時脈週期,資料存取單元360是閒置的,即步驟S504的判斷結果為是,步驟S508所找出的資料存取指令執行緒群組WDA所對應的ID會包括0及5(執行緒群組M的INS雖為ST指令,但Ready欄位為N,屬於狀態未準備好的執行緒群組)。步驟S512便會從這兩個執行緒群組(ID為0及5)選出優先權重最高的一者作為目標執行緒群組WT,如
此的排程結果能夠利用到閒置中的資料存取單元360。
如第4圖所示的排程方法除了可應用於例如第3圖的硬體電路之外,亦可以透過軟體方式實現,例如可將第4圖排程方法對應的程式,儲存於非暫態電腦可讀取媒體中,以一電腦處理器載入程式之後,執行第4圖中的步驟,並且以電腦處理器維護記錄表T的內容。
依據本發明的實施例所提出的排程方法以及應用其的處理裝置,僅增加一個額外的模組(記憶體存取優先單元),因此能夠以附加的方式,直接相容於任何排程方法,無須更動原本的硬體或軟體配置。例如已有一個處理裝置使用特定演算法決定了各個執行緒群組的優先權重,則可以直接將依據本發明實施例的排程方法應用於這個處理裝置,增加一個記憶體存取優先單元以獲得資料存取單元的使用狀態,如第4圖流程圖所示,便能夠在不同條件中,在不影響原本計算優先權重演算法的情況下,根據原本的優先權重值,選擇適當的目標執行緒群組,而達到提高程式執行效能的結果。由於此高度的相容性,使得依據本發明實施例提出的排程方法及處理裝置於實際應用中易於整合且應用面廣。以下更以例子說明是否有考慮資料存取單元使用狀態的排程結果差異。
第6A~6C圖繪示對多執行緒群組排程範例的示意圖。此例中係使用類似輪詢式(Round Robin)的排程方法,第6A圖中所示的虛線框代表已被分派至資料存取單元或運算單元執
行的指令或是已執行完畢的指令,粗線框代表待執行指令,因此目前Warp 6、7的待執行指令為LD,Warp 0~5的待執行指令為SUB,並假設各個Warp皆為已準備好的狀態。根據輪詢方式,假設目前輪到Warp 6,此時要執行的是LD指令,而此時的資料存取單元360忙碌中,因此無法執行LD,需先跳過Warp 6。接著輪到Warp 7,資料存取單元360同樣在忙碌中,LD指令依然無法執行,因此輸詢回到Warp 0,由於此時運算單元370可以使用,因此將Warp 0的SUB指令排程下去由運算單元370執行。在Warp 0的SUB指令執行結束之後,假設此時資料存取單元360已為閒置狀態,例如是資料存取單元360先前的工作已處理完畢,以下以第6B圖及第6C圖分別說明是否使用記憶體存取優先單元380的兩種情況。
第6B圖所示為沒有優先考慮資料存取單元360使用狀態的例子。根據原本的輪詢方式,接著輪到Warp 1的SUB指令,由於目前依然有適當的運算單元370可使用,因此將Warp 1作為目標執行緒群組,排程Warp 1的SUB指令由運算單元370執行。
相較之下,第6C圖所示為有優先考慮資料存取單元360使用狀態的例子。如上所述,當輪詢到Warp 1時,此時由於記憶體存取優先單元380發現資料存取單元360目前閒置了,依據步驟S504以及步驟S508所示,記憶體存取優先單元380會找出資料存取指令執行緒群組WDA,在此例中包含有Warp 0、6、
7(如圖中斜線處所示,對應的待執行指令皆為LD)。接著步驟S512,仲裁單元340可從資料存取指令執行緒群組WDA當中選擇具有最高優先權重的一者,例如P6>P7>P0(此處Pi代表Warp i的優先權重),則選擇Warp 6作為目標執行緒群組,而並非如第6B圖所示的例子優先排程Warp 1。
由於記憶體存取優先單元380的持續監測,當發現資料存取單元360閒置時且有適當的指令可執行時,可立刻安排讓資料存取單元360執行對應的指令,如此能讓資料存取單元360有較短的閒置時間。如第6B圖所示的例子,在排程Warp 1之後,接下來會陸續排程Warp 2~5的SUB指令,再來才會輪到Warp 6的LD指令,如此一來,在執行Warp 1~5這段時間中,閒置的資料存取單元360沒有被善加利用,過長的閒置時間便可能造成整體的程式執行時間被拉長。
依據本發明的實施例於排程方法及應用其的處理裝置加入一個記憶體存取優先單元,透過監測資料存取單元的使用狀態與記錄表中各執行緒群組的狀態,在資料存取單元閒置的時候調整排程次序。如前所述,此排程方法不但容易整合進入既有的排程方法中,可得到既有排程方法原本的好處,更能在既有的排程方法當中降低資料存取單元的閒置比率,提升繪圖處理器的運算效能。
綜上所述,雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識
者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
S500‧‧‧記錄各執行緒群組的待執行指令以及準備狀態於記錄表中
S502‧‧‧判斷是否有準備狀態為肯定的已準備執行緒群組
S504‧‧‧判斷資料存取單元是否閒置
S506‧‧‧判斷運算單元是否閒置以及已準備執行緒群組當中是否存在運算指令執行緒群組
S508‧‧‧判斷已準備執行緒群組是否包括資料存取指令執行緒群組
S510‧‧‧選擇運算指令執行緒群組中優先權重最高的一者作為運算目標執行緒群組
S512‧‧‧優先從資料存取指令執行緒群組選擇一目標執行緒群組
S514‧‧‧將目標執行緒群組分派至資料存取單元執行
S516‧‧‧將運算目標執行緒群組分派至運算單元執行
Claims (20)
- 一種排程方法,用以排程多個執行緒群組,該排程方法包括:記錄各執行緒群組的一待執行指令以及各執行緒群組的一準備狀態於一記錄表中;判斷是否有該準備狀態為肯定的至少一已準備執行緒群組;判斷一資料存取單元是否閒置,該資料存取單元係用以存取一資料記憶單元;當該資料存取單元閒置時,判斷該至少一已準備執行緒群組當中是否存在至少一資料存取指令執行緒群組,該至少一資料存取指令執行緒群組的該待執行指令相關於存取該資料記憶單元;當該至少一資料存取指令執行緒群組存在時,優先從該至少一資料存取指令執行緒群組選擇一目標執行緒群組;以及將該目標執行緒群組分派至該資料存取單元執行。
- 如申請專利範圍第1項所述之排程方法,更包括:計算各執行緒群組的一優先權重,該優先權重相關於各執行緒群組的一預設排程順序。
- 如申請專利範圍第2項所述之排程方法,其中優先從該至少一資料存取指令執行緒群組選擇該目標執行緒群組的步驟更包括:選擇該至少一資料存取指令執行緒群組中該優先權重最高的一者作為該目標執行緒群組。
- 如申請專利範圍第2項所述之排程方法,更包括:當該資料存取單元不是閒置時,判斷一運算單元是否閒置,以及判斷該至少一已準備執行緒群組當中是否存在至少一運算指令執行緒群組,其中該至少一運算指令執行緒群組的該待執行指令相關於利用該運算單元進行運算。
- 如申請專利範圍第4項所述之排程方法,更包括:當該運算單元閒置且該至少一運算指令執行緒群組存在時,選擇該至少一運算指令執行緒群組中該優先權重最高的一者作為一運算目標執行緒群組;以及將該運算目標執行緒群組分派至該運算單元執行。
- 如申請專利範圍第1項所述之排程方法,其中該準備狀態相關於該待執行指令是否已解碼完成以及該待執行指令對應的運算元是否已可使用。
- 一種處理裝置,用以排程多個執行緒群組,該處理裝置包括:一狀態儲存單元,用以儲存一記錄表,該記錄表記錄各執行緒群組的一待執行指令以及各執行緒群組的一準備狀態;一指令擷取單元,用以從一指令記憶單元擷取各執行緒群組的該待執行指令並更新至該記錄表;一功能單元,包括:一運算單元;以及一資料存取單元,用以存取一資料記憶單元; 一記憶體存取優先單元,用以監測該資料存取單元是否閒置,並且當該資料存取單元閒置時,判斷是否存在至少一資料存取指令執行緒群組,其中該至少一資料存取指令執行緒群組的該準備狀態是肯定,且該至少一資料存取指令執行緒群組的該待執行指令相關於存取該資料記憶單元;一仲裁單元,根據該記錄表以及該至少一資料存取指令執行緒群組,從該些執行緒群組中選擇一目標執行緒群組;以及一分派單元,將該目標執行緒群組分派至該運算單元或該資料存取單元執行;其中當該資料存取單元閒置且該資料存取指令執行緒群組存在時,該仲裁單元優先從該至少一資料存取指令執行緒群組選擇該目標執行緒群組。
- 如申請專利範圍第7項所述之處理裝置,其中該仲裁單元更計算各執行緒群組的一優先權重,該優先權重相關於各執行緒群組的一預設排程順序。
- 如申請專利範圍第8項所述之處理裝置,其中當該資料存取單元閒置且該資料存取指令執行緒群組存在時,該仲裁單元選擇該至少一資料存取指令執行緒群組中該優先權重最高的一者作為該目標執行緒群組。
- 如申請專利範圍第8項所述之處理裝置,其中當該資料存取單元不是閒置或該資料存取指令執行緒群組不存在時,該仲裁單元選擇至少一運算指令執行緒群組中該優先權重最高的一 者作為該目標執行緒群組,其中該至少一運算指令執行緒群組的該準備狀態為肯定,且該至少一運算指令執行緒群組的該待執行指令相關於利用該運算單元進行運算。
- 如申請專利範圍第7項所述之處理裝置,其中該準備狀態相關於該待執行指令是否已解碼完成以及該待執行指令對應的運算元是否已可使用。
- 如申請專利範圍第7項所述之處理裝置,其中該仲裁單元決定該目標執行緒群組後,該仲裁單元更新該記錄表中該目標執行緒群組的該待執行指令以及該準備狀態。
- 如申請專利範圍第7項所述之處理裝置,其中該記錄表係由該指令擷取單元、該仲裁單元、該分派單元、以及該功能單元共同維護。
- 一種電腦可讀取媒體,該電腦可讀取媒體儲存一組指令,可被一電腦處理器載入以執行一方法,該方法用以排程多個執行緒群組,該方法包括:記錄各執行緒群組的一待執行指令以及各執行緒群組的一準備狀態於一記錄表中;判斷是否有該準備狀態為肯定的至少一已準備執行緒群組;判斷一資料存取單元是否閒置,該資料存取單元係用以存取一資料記憶單元;當該資料存取單元閒置時,判斷該至少一已準備執行緒群組當中是否存在至少一資料存取指令執行緒群組,該至少一資料存 取指令執行緒群組的該待執行指令相關於存取該資料記憶單元;當該至少一資料存取指令執行緒群組存在時,優先從該至少一資料存取指令執行緒群組選擇一目標執行緒群組;以及將該目標執行緒群組分派至該資料存取單元執行。
- 如申請專利範圍第14項所述之電腦可讀取媒體,更包括:計算各執行緒群組的一優先權重,該優先權重相關於各執行緒群組的一預設排程順序。
- 如申請專利範圍第15項所述之電腦可讀取媒體,其中優先從該至少一資料存取指令執行緒群組選擇該目標執行緒群組的步驟更包括:選擇該至少一資料存取指令執行緒群組中該優先權重最高的一者作為該目標執行緒群組。
- 如申請專利範圍第15項所述之電腦可讀取媒體,更包括:當該資料存取單元不是閒置時,判斷一運算單元是否閒置,以及判斷該至少一已準備執行緒群組是否包括至少一運算指令執行緒群組,其中該至少一運算指令執行緒群組的該待執行指令相關於利用該運算單元進行運算。
- 如申請專利範圍第17項所述之電腦可讀取媒體,更包括:當該運算單元閒置且該至少一已準備執行緒群組包括該至 少一運算指令執行緒群組時,選擇該至少一運算指令執行緒群組中優先權重最高的一者作為一運算目標執行緒群組;以及將該運算目標執行緒群組分派至該運算單元執行。
- 如申請專利範圍第14項所述之電腦可讀取媒體,其中該準備狀態相關於該待執行指令是否已解碼完成以及該待執行指令對應的運算元是否已可使用。
- 如申請專利範圍第14項所述之電腦可讀取媒體,其中該記錄表係由該電腦處理器維護。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104137764A TWI564807B (zh) | 2015-11-16 | 2015-11-16 | 排程方法及應用其的處理裝置 |
US14/983,086 US10268519B2 (en) | 2015-11-16 | 2015-12-29 | Scheduling method and processing device for thread groups execution in a computing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104137764A TWI564807B (zh) | 2015-11-16 | 2015-11-16 | 排程方法及應用其的處理裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI564807B true TWI564807B (zh) | 2017-01-01 |
TW201719398A TW201719398A (zh) | 2017-06-01 |
Family
ID=58408048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104137764A TWI564807B (zh) | 2015-11-16 | 2015-11-16 | 排程方法及應用其的處理裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10268519B2 (zh) |
TW (1) | TWI564807B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325996B (zh) * | 2015-06-19 | 2019-11-19 | 华为技术有限公司 | 一种gpu资源的分配方法及*** |
US10620993B2 (en) * | 2017-02-27 | 2020-04-14 | International Business Machines Corporation | Automated generation of scheduling algorithms based on task relevance assessment |
US10452397B2 (en) * | 2017-04-01 | 2019-10-22 | Intel Corporation | Efficient multi-context thread distribution |
US11360808B2 (en) * | 2017-04-09 | 2022-06-14 | Intel Corporation | Efficient thread group scheduling |
CN109992413B (zh) * | 2019-03-01 | 2021-09-24 | 中国科学院计算技术研究所 | 一种面向宽度优先搜索算法的加速装置、方法及存储介质 |
US11487671B2 (en) * | 2019-06-19 | 2022-11-01 | Advanced Micro Devices, Inc. | GPU cache management based on locality type detection |
CN115129369A (zh) * | 2021-03-26 | 2022-09-30 | 上海阵量智能科技有限公司 | 命令分发方法、命令分发器、芯片以及电子设备 |
CN114968361B (zh) * | 2022-06-02 | 2024-04-30 | 上海壁仞科技股份有限公司 | 存储有程序的机器可读介质、计算机***和一种操作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200529071A (en) * | 2003-12-18 | 2005-09-01 | Nvidia Corp | Across-thread out of order instruction dispatch in a multithreaded microprocessor |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
US8135941B2 (en) * | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
TW201333819A (zh) * | 2011-12-22 | 2013-08-16 | Nvidia Corp | 無指令解碼而排程指令的方法和裝置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8490101B1 (en) | 2004-11-29 | 2013-07-16 | Oracle America, Inc. | Thread scheduling in chip multithreading processors |
DE102004059972B4 (de) | 2004-12-13 | 2010-07-01 | Infineon Technologies Ag | Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung |
US7818747B1 (en) | 2005-11-03 | 2010-10-19 | Oracle America, Inc. | Cache-aware scheduling for a chip multithreading processor |
US8291431B2 (en) | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
US7958333B2 (en) | 2007-05-30 | 2011-06-07 | XMOS Ltd. | Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected |
TWI462011B (zh) | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
US8819686B2 (en) | 2009-07-23 | 2014-08-26 | Empire Technology Development Llc | Scheduling threads on different processor cores based on memory temperature |
US9189242B2 (en) | 2009-09-24 | 2015-11-17 | Nvidia Corporation | Credit-based streaming multiprocessor warp scheduling |
US8522244B2 (en) | 2010-05-07 | 2013-08-27 | Advanced Micro Devices, Inc. | Method and apparatus for scheduling for multiple memory controllers |
US20110276784A1 (en) * | 2010-05-10 | 2011-11-10 | Telefonaktiebolaget L M Ericsson (Publ) | Hierarchical multithreaded processing |
US8423750B2 (en) | 2010-05-12 | 2013-04-16 | International Business Machines Corporation | Hardware assist thread for increasing code parallelism |
US8850131B2 (en) | 2010-08-24 | 2014-09-30 | Advanced Micro Devices, Inc. | Memory request scheduling based on thread criticality |
US8732711B2 (en) | 2010-09-24 | 2014-05-20 | Nvidia Corporation | Two-level scheduler for multi-threaded processing |
US8732713B2 (en) * | 2010-09-29 | 2014-05-20 | Nvidia Corporation | Thread group scheduler for computing on a parallel thread processor |
US9547530B2 (en) * | 2013-11-01 | 2017-01-17 | Arm Limited | Data processing apparatus and method for processing a plurality of threads |
-
2015
- 2015-11-16 TW TW104137764A patent/TWI564807B/zh active
- 2015-12-29 US US14/983,086 patent/US10268519B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200529071A (en) * | 2003-12-18 | 2005-09-01 | Nvidia Corp | Across-thread out of order instruction dispatch in a multithreaded microprocessor |
US8135941B2 (en) * | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
TW201333819A (zh) * | 2011-12-22 | 2013-08-16 | Nvidia Corp | 無指令解碼而排程指令的方法和裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW201719398A (zh) | 2017-06-01 |
US10268519B2 (en) | 2019-04-23 |
US20170139751A1 (en) | 2017-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI564807B (zh) | 排程方法及應用其的處理裝置 | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
KR102185287B1 (ko) | 벡터 연산 장치 | |
US8407454B2 (en) | Processing long-latency instructions in a pipelined processor | |
US8332854B2 (en) | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups | |
US8291431B2 (en) | Dependent instruction thread scheduling | |
US8782645B2 (en) | Automatic load balancing for heterogeneous cores | |
US9529596B2 (en) | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits | |
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
Ramirez et al. | The SARC architecture | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
US9990186B2 (en) | Determination of branch convergence in a sequence of program instruction | |
US20150301831A1 (en) | Select logic for the instruction scheduler of a multi strand out-of-order processor based on delayed reconstructed program order | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
WO2017185392A1 (zh) | 一种用于执行向量四则运算的装置和方法 | |
Meenderinck et al. | A case for hardware task management support for the StarSs programming model | |
Li et al. | Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time | |
CN116149732B (zh) | 一种数据流任务的硬件自动化执行方法、***及产品 | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
Wittenburg et al. | A multithreaded architecture approach to parallel DSPs for high performance image processing applications | |
TWI428833B (zh) | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 | |
Huangfu | Improving the Performance and Time-Predictability of GPUs | |
KR100924383B1 (ko) | 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 | |
CN117421052A (zh) | 数据流任务的硬件自动化执行方法、***、设备及介质 |