TWI768649B - 執行緒束排程方法及使用該方法的串流多處理器 - Google Patents
執行緒束排程方法及使用該方法的串流多處理器 Download PDFInfo
- Publication number
- TWI768649B TWI768649B TW110100892A TW110100892A TWI768649B TW I768649 B TWI768649 B TW I768649B TW 110100892 A TW110100892 A TW 110100892A TW 110100892 A TW110100892 A TW 110100892A TW I768649 B TWI768649 B TW I768649B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- capacity
- schedulable
- bundles
- thread bundle
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000005070 sampling Methods 0.000 claims abstract description 10
- 238000012423 maintenance Methods 0.000 claims description 17
- 210000000352 storage cell Anatomy 0.000 claims description 9
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 description 95
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 210000004027 cell Anatomy 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
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/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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- D—TEXTILES; PAPER
- D03—WEAVING
- D03C—SHEDDING MECHANISMS; PATTERN CARDS OR CHAINS; PUNCHING OF CARDS; DESIGNING PATTERNS
- D03C19/00—Methods or devices concerned with designing or making patterns, not provided for in other groups of this subclass
- D03C19/005—Electronic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
- Chemical Or Physical Treatment Of Fibers (AREA)
- Treatment Of Fiber Materials (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Textile Engineering (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種執行緒束排程方法,包含:將指派給串流多處理器的複數個第一執行緒束儲存在指令緩衝模組中;藉由可排程執行緒束指示視窗標記該等第一執行緒束中可進行排程的複數個第二執行緒束,該等第二執行緒束的數量係可排程執行緒束指示視窗的容量;在每一時間間隔對讀取/儲存單元延滯週期進行取樣以得到讀取/儲存單元延滯週期比例;比較讀取/儲存單元延滯週期比例與延滯週期門檻值,並根據比較結果調整可排程執行緒束指示視窗的容量的大小及決定該等第二執行緒束;從指令緩衝模組指派該等第二執行緒束給多個處理模組中的相應者執行。
Description
本發明係關於執行緒束排程方法的技術領域,特別是關於一種對指派給在圖形處理器裡的串流多處理器的多個執行緒束進行排程的方法。
隨著涉及處理大量並行數據的應用程序變得越來越流行,具有大量計算資源的圖形處理器(Graph Processing Unit)被廣泛採用以受益於此類並行的工作負載。現代的圖形處理器使用了高數量的多執行緒(multi-thread)。 利用單指令多執行緒(Single Instruction Multiple Thread,SIMT)架構,圖形處理器將執行緒分組為多個執行緒束(warp),並且在每個執行緒束內,每個執行緒採用一條指令,但對不同的數據執行操作。
近來,記憶體競爭(memory contention)問題是在圖形處理器上實現峰值性能的最關鍵問題之一。記憶體競爭問題的原因之一是缺乏足夠的記憶體資源(例如,快取記憶體空間和未命中狀態維持暫存器(Miss Status Holding register,MSHR)的數量)來支持如此多的並行執行緒。另一個原因是晶片外部(off-chip)的記憶體存取延遲,其平均需要400到600個核心週期(core cycle),這是一個相當長的時間,且不能輕易重疊。為了提高延遲隱藏能力,現代的圖形處理器對大量並行的執行緒進行排程。例如,Fermi架構在串流多處理器中支持1536個並行的執行緒。然而,近來一些研究顯示出高的執行緒級並行性(Thread Level Parallelism,TLP)有時會使記憶體競爭問題更加嚴重。當提供更高的執行緒級並行性時,圖形處理器將具有更好的重疊操作等待時間的能力,但是記憶體系統因過多的資料請求而過載的可能性也更高。因此,如何在記憶體工作負載和記憶體資源之間取得平衡至關重要。
本發明之一目的在於提供一種執行緒束的排程方法以及使用所述排程方法的圖形處理器裡的串流多處理器,以解決記憶體競爭所造成的高延遲情況。
為達上述的目的,本發明提供一種執行緒束排程方法,包含:將指派給串流多處理器的複數個第一執行緒束儲存在一指令緩衝模組中;藉由一可排程執行緒束指示視窗標記該等第一執行緒束中可進行排程的複數個第二執行緒束,其中該標記的該等第二執行緒束的數量係該可排程執行緒束指示視窗的一容量;在每一時間間隔對讀取/儲存單元延滯週期進行取樣以得到一讀取/儲存單元延滯週期比例;對該讀取/儲存單元延滯週期比例與一延滯週期門檻值進行比較,並根據比較結果調整該可排程執行緒束指示視窗的該容量的大小以及決定該等第二執行緒束;以及從該指令緩衝模組依序指派該等第二執行緒束給該等處理模組中的一相應者執行。
在本發明的一些實施例中,根據比較結果調整該可排程執行緒束指示視窗的該容量的大小的步驟包含:當該讀取/儲存單元延滯週期比例大於等於該延滯週期門檻值時,減小該可排程執行緒束指示視窗的該容量;以及當該讀取/儲存單元延滯週期比例小於該延滯週期門檻值時,加大該可排程執行緒束指示視窗的該容量。
在本發明的一些實施例中,該容量係以2的冪次加大或是減小。
在本發明的一些實施例中,所述排程方法還包含:在尚未達到下一個對讀取/儲存單元延滯週期進行取樣取樣的時間區隔時,判斷該可排程執行緒束指示視窗的該容量是否大於等於一容量門檻值;若該容量大於等於該容量門檻值,在一未命中狀態維持暫存器所儲存的複數個資料請求的數量尚未達到上限且該等第二執行緒束皆處於相依性延滯的狀態的情況下,加大該可排程執行緒束指示視窗的該容量。
在本發明的一些實施例中,該等第二執行緒束包含相應於發出該未命中狀態維持暫存器內的至少一資料請求的至少一執行緒束。
在本發明的一些實施例中,該等第二執行緒束包含依序的執行緒束 Wi~W(i+n-1),其中n為經調整的該容量,i為該等第二執行緒束的第一個執行緒束的基數,其中i係根據下式決定,
i = j & (~(n-1)),
其中i ≤ j ≤ (i+n-1),且j為最後一個發出資料請求的執行緒束的序數。
本發明還提供適用於一圖形處理器的一種串流多處理器,該串流多處理器經組態以執行一應用程式中的複數個第一執行緒束並包含複數個處理模組、指令緩衝模組、可排程執行緒束指示視窗、視窗調整模組、以及執行緒束排程模組。指令緩衝模組經組態以儲存該等第一執行緒束。可排程執行緒束指示視窗,連接該指令緩衝模組,並經組態以標記該指令緩衝模組內的該等第一執行緒束中可進行排程的複數個第二執行緒束,其中該標記的該等第二執行緒束的數量係該可排程執行緒束指示視窗的一容量。視窗調整模組,連接該可排程執行緒束指示視窗,經組態以在每一時間間隔對讀取/儲存單元延滯週期進行取樣以得到的一讀取/儲存單元延滯週期比例,對該讀取/儲存單元延滯週期比例與一延滯週期門檻值進行比較,並根據比較結果調整該可排程執行緒束指示視窗的該容量的大小以及決定該等第二執行緒束。執行緒束排程模組,連接該可排程執行緒束指示視窗與該指令緩衝模組,並經組態以從該指令緩衝模組依序指派該等二執行緒束給該等處理模組中的一相應者執行。
在本發明的一些實施例中,當該讀取/儲存單元延滯週期比例大於等於該延滯週期門檻值時,該視窗調整模組減小該可排程執行緒束指示視窗的該容量,當該讀取/儲存單元延滯週期比例小於該延滯週期門檻值時,該視窗調整模組加大該可排程執行緒束指示視窗的該容量。
在本發明的一些實施例中,串流多處理器還包含一未命中狀態維持暫存器,該未命中狀態維持暫存器儲存了當執行緒束所要執行的資料不在位於該串流多處理器內部的一第一快取時向位於該串流多處理器外部與該第一快取連接的一第二快取索要資料的資料請求,其中該等第二執行緒束包含相應於發出該未命中狀態維持暫存器內的至少一資料請求的至少一執行緒束。
在本發明的一些實施例中,在該可排程執行緒束指示視窗的該容量大於等於一容量門檻值的情況下,當該未命中狀態維持暫存器所儲存的複數個資料請求的數量尚未達到上限且該等第二執行緒束皆處於相依性延滯的狀態時,該視窗調整模組在尚未達到下一個進行取樣的時間區隔時便加大該可排程執行緒束指示視窗的該容量。
在本發明的一些實施例中,該等第二執行緒束包含依序的執行緒束 Wi~W(i+n-1),其中n為經調整的該容量,i為該等第二執行緒束的第一個執行緒束的基數,其中該視窗調整模組係根據下式決定i,
i = j & (~(n-1)),
其中i ≤ j ≤ (i+n-1),且j為最後一個發出資料請求的執行緒束的序數。
在本發明的一些實施例中,串流多處理器還包含連接該指令緩衝模組與該視窗調整模組的一計分模組,其經組態以對該等第二執行緒束進行相依性的確認以確定該等第二執行緒束係可經由執行緒束排程模組進行指派。
透過上述的執行緒束排程方法及串流多處理器,利用取樣讀取/儲存單元延滯週期並將讀取/儲存單元延滯週期比例與門檻值進行比較來判斷記憶體競爭的嚴重程度,並根據不同的嚴重程度利用減小/加大視窗調整模組的容量來適應性調整可進行排程的執行緒束的數量。在記憶體競爭情況嚴重時減小視窗調整模組的容量,來避免增加從記憶體存取資料的負擔,在記憶體競爭情況不嚴重時加大視窗調整模組的容量,增加執行執行緒束的數量來提升串流多處理器的並行處理能力,以提升整個圖形處理器的運算效能。
為了讓本發明之上述及其他目的、特徵、優點能更明顯易懂,下文將特舉本發明較佳實施例,並配合所附圖式,作詳細說明如下。
請參照第1圖,第1圖係根據本發明一較佳實施例繪示的通用圖形處理器100的架構方塊示意圖。通用圖形處理器100是單指令多執行緒 (Single Instruction Multiple Thread,SIMT)的架構,其包含互連網路模組110、多個串流多處理器(Stream Multiprocessor,SM)120、工作排程模組130、以及記憶體140。互連網路模組110電性連接於各個串流多處理器120、工作排程模組130、以及記憶體140,且經組態以在這些元件之間進行資料的傳輸。串流多處理器120經組態以進行運算與執行指令。工作排程模組130經組態以跟外部的中央處理器(圖未繪示)進行通訊,並接收來自中央處理器指派的工作以及將工作排程給各個串流多處理器120執行。記憶體140設置於串流多處理器120的外部,由通用圖形處理器100內的所有串流多處理器120共享,其可包含快取記憶體L2和主記憶體141。串流多處理器120當下所要處理的資料可先暫存在快取記憶體L2,若快取記憶體L2並未存放串流處理器120要處理的資料,則會進一步請求從主記憶體141存取資料再存放至快取記憶體L2中以供串流處理器120存取並處理。
當中央處理器發送新的工作時,工作排程模組130會以執行緒網格(grid)為單位接收所要執行之程式,並對其進行切割與排程後,接著以執行緒塊(block)為單位派發至每個串流多處理器120去執行,執行緒塊(block)包含了多個執行緒束(執行緒束)。串流多處理器120在收到執行緒塊後,由串流多處理器120內部的執行緒束排程模組121對執行緒塊裡的多個執行緒束進行排程,並且以單指令流多資料(Single Instruction Multiple Data,SIMD)的寬度依序將執行緒束指派給處理模組122的相應者執行。每一個執行緒束包含了數量相同的多個執行緒(thread)。處理模組122可包含多個串流處理器(Stream Processor,SP)1221、特殊函式單元(Special Function Unit,SFU)1222及讀取/儲存單元(Load Store Unit,LSU)1223。串流處理器1221是最基本的運算單元,用以對執行緒束裡的執行緒進行基本的運算。同一個執行緒束裡的多個執行緒是經由串流多處理器120裡的多個串流處理器1221同時運算的。例如,若串流多處理器120包含32個串流處理器122,則每個執行緒束會有32個執行緒並且由這些32個串流處理器122同時平行執行。特殊函式單元1222用以執行超越函式指令,例如正弦、餘弦、平方根等函式。讀取/儲存單元1223用以對串流多處理器120內部的快取記憶體L1以及共享記憶體124進行資料的存取。
具體來說,共享記憶體124内的資料僅供具有該共享記憶體124的串流多處理器120使用,其他串流多處理器120並無法使用非本身的共享記憶體124。共享記憶體124通常儲存公用的計數器或者指派給具有該共享記憶體124的串流多處理器120的該執行緒塊的公用結果。主記憶體141則是存放了所有執行緒束所要存取的資料。快取記憶體L1用以快取具有該快取記憶體L1的串流多處理器120從主記憶體141存取的資料,其通常是執行緒束最近常用到的資料,而快取記憶體L2用以快取所有串流多處理器120從主記憶體141存取的資料。簡言之,對於存取速度而言,快取記憶體L1 > 快取記憶體L2 > 主記憶體141;對於容量而言,快取記憶體L1 < 快取記憶體L2 < 主記憶體141。當某筆資料要進行運算時,讀取/儲存單元1223會先向快取記憶體L1請求該筆資料。若快取記憶體L1有該筆資料則表示命中(hit),並從快取記憶體L1回傳該筆資料。若快取記憶體L1沒有該筆資料則表示未命中(miss),則必須發送資料請求給快取記憶體L2以確認快取記憶體L2是否具有該筆資料,沒有的話則繼續向主記憶體141請求存取該資料。
另外,串流多處理器120還包含了運算元集合模組(operand collector)123。運算元集合模組123包含了仲裁邏輯、存取邏輯(圖未繪示)等邏輯運算元以及暫存器堆(register bank)125,用以確保對暫存器堆125的存取沒有衝突(bank conflict)的情況發生。暫存器堆125包含了多個暫存器以分別供各個串流處理器122進行資料的暫存,例如暫存運算的結果。暫存器堆125還包含了未命中狀態維持暫存器(Miss Status Holding Register,MSHR)(圖未繪示),其為一先進先出(First In First Out,FIFO)的佇列(queue),用以儲存向快取記憶體L2存取資料的請求。如先前所述,當執行緒束所要執行的資料並未存放在快取記憶體L1中時(亦即,未命中),則會發出資料請求給快取記憶體L2以確認快取記憶體L2是否具有該筆資料,同時這個資料請求會暫存在未命中狀態維持暫存器中並且排隊等待,直到存取到該筆資料並存放在快取記憶體L1中,才從未命中狀態維持暫存器中移除這筆請求。未命中狀態維持暫存器具有一定的儲存容量限制,當未命中狀態維持暫存器已經存滿了資料請求,此時還有新增的資料請求時,則無法再儲存資料請求並發出特殊的事件(event)。
在一些實施例中,若快取記憶體L1中未命中時,未命中處理邏輯(miss handling logic)會先確認未命中狀態維持暫存器裡的是否有相同的資料的資料請求。若有便將此請求與儲存未命中狀態維持暫存器的請求合併為同一個請求,若沒有則新增這筆資料請求。
如先前所述,從快取記憶體L1存取資料的速度大於從快取記憶體L2/主記憶體121存取資料的速度。若未命中的情況增加,則會導致處理模組122一直在等待資料而無法執行執行緒束,使得整個串流多處理器120的執行效能降低。據此,本發明提出的串流多處理器120還包含了可排程執行緒束指示視窗128和視窗調整模組129,並提出了一種使用可排程執行緒束指示視窗128和視窗調整模組129以進行執行緒束的排程方法,將於下文詳細敘述。
請一併參照第2圖,第2圖係根據本發明一較佳實施例所繪示的執行緒束排程方法的流程圖。須了解的是,執行緒束排程方法係指的是將派給某一串流多處理器120執行的執行緒塊裡的多個執行緒束指派給該串流多處理器裡的處理模組122的排程方法,而非工作排程模組130將程式以執行緒塊為單位派發至每個串流多處理器120的排程方法。為了方便理解,以下將一併以第1圖的架構說明。
在步驟S210中,將指派給串流多處理器210的執行緒塊裡的多個執行緒束儲存在指令緩衝模組126中。具體來說,當工作排程模組130將一執行緒塊指派給串流多處理器210執行時,串流多處理器210透過擷取(fetch)模組(圖未繪示)抓取所要執行的執行緒束並經由解碼模組(圖未繪示)進行解碼後儲存在指令緩衝模組126。在本實施例中,圖形處理器100採用類費米架構(Fermi-like architecture),因此每一個串流處理器120能處理的執行緒塊裡的執行緒束數量為48個。換言之,指令緩衝模組126可儲存48個執行緒束W0~W47。
接著,在步驟S250中,透過視窗調整模組129調整可排程執行緒束指示視窗128的容量(size)的大小以及決定可進行排程的執行緒束。可排程執行緒束指示視窗128連接指令緩衝模組126,並經組態以標記指令緩衝模組126內的經計分模組127所註記的可指派的執行緒束(例如,W0~W47)中可進行排程的執行緒束(例如,W16~W23)。可排程執行緒束指示視窗128包含相應執行緒塊裡的執行緒束的數量的單位數,每一個單位對應一個執行緒束。例如,在本例中,可排程執行緒束指示視窗128可包含48個單位,分別用以指示(標記)指令緩衝模組126內的48個執行緒束中的哪些執行緒束可進行排程給後端的處理模組執行。具體來說,可排程執行緒束指示視窗128類似遮罩(mask)的作用,其遮罩了可進行指派的執行緒束W0~W47,只有可排程執行緒束指示視窗128標記可進行排程的執行緒束W16~W23才能指派給執行緒束排程模組121來分配給相應的處理模組122執行。
視窗調整模組129可透過調整可排程執行緒束指示視窗128中用來指示可排程的執行緒束的單位裡的位元值來調整調整可排程執行緒束指示視窗128的容量的大小(亦即,可排程的執行緒束的數量)以及決定可進行排程的執行緒束。例如,只有在可排程執行緒束指示視窗128中標記為高邏輯準位(例如,1)的執行緒束才可進行排程,而在可排程執行緒束指示視窗128中標記為低邏輯準位(例如,0)的執行緒束則是暫時停止進行排程。所有標記為高邏輯準位的執行緒束的數量即為可排程執行緒束指示視窗128的容量大小。至於窗調整模組129如何決定哪些執行緒束可進行排程則將於之後再詳細敘述。
接著,在步驟270中,透過執行緒束排程模組121從指令緩衝模組126中根據可排程執行緒束指示視窗128標記的可排程的執行緒束(例如,W16~W23)依序指派給處理模組122中的相應者執行。如先前所述,處理模組122包含了串流處理器1221、特殊函式單元1222、及讀取/儲存單元1223。若執行緒束要處理的是一般的運算,執行緒束排程模組121將其派給串流處理器1221處理。若執行緒束要處理的是特殊函式的運算,執行緒束排程模組121將其派給特殊函式單元1222處理。若執行緒束要處理的是對於資料的存取,執行緒束排程模組121將其派給讀取/儲存單元1223以對快取記憶體L1進行存取的操作。
在一些實施例中,在透過執行緒束排程模組121根據可排程執行緒束指示視窗128標記的可排程的執行緒束(例如,W16~W23)指派給處理模組122之前,會進一步透過計分模組127對儲存在指令緩衝模組126裡相應於可排程執行緒束指示視窗128標記的可排程的執行緒束(例如,W16~W23)進行相依性的確認,以確定這些執行緒束W16~W23是可以進行排程的。具體來說,計分模組127排除了具有先寫後讀(Read-after-write,RAW)衝突(hazard)或是先寫後寫(Write-after-write,WAW)衝突的指令的執行緒束,因具有這些指令的執行緒束在執行時會導致相依性停滯(dependency stall)。若是可排程執行緒束指示視窗128標記的可排程的執行緒束(例如,W16~W23)中具有上述衝突的執行緒束,則具有所述衝突的執行緒束便無法經由執行緒束排程模組121指派。
在一些實施例中,類似地,計分模組127包含相應執行緒塊裡的執行緒束的數量的位元個數,每一位元對應一個執行緒束。當經由相依性確認挑出的可進行指派的執行緒束其相應的位元以高邏輯準位(例如,1)註記,而無法進行指派的執行緒束其相應的位元則以低邏輯準位(例如,0)註記。
本發明的執行緒束排程方法,透過調整可排程執行緒束指示視窗128的容量的大小來決定在某一時段可進行排程的執行緒束數量,可有效地解決讀取/儲存單元停滯(LSU stall)的問題。簡單來說,在記憶體競爭的情況嚴重時,減少可排程的執行緒束數量以增加資料在快取L1的局部性(data locality),避免太多執行緒束都在等待資料,並且盡量讓已經得到資料的執行緒束完成所有運算之後再輪到下一個獲得資料的執行緒來完成所有運算,避免一直在進行資料請求而減少等待資料的時間,藉此可增加串流多處理器的執行效能,其細節如下。
請參照第3圖,第3圖係根據本發明一較佳實施例所繪示的第2圖的執行緒束排程方法中的步驟S250的流程圖。步驟S250還包含步驟S251~S259。在步驟S251中,透過視窗調整模組129判斷串流處理器120運行是否已經達到一個時間區隔。若是的話,則進行步驟S252,透過視窗調整模組129取樣讀取/儲存單元延滯週期以取得讀取/儲存單元延滯週期比例,並進行步驟S253,將讀取/儲存單元延滯週期比例與一延滯週期門檻值進行比較。在本實施例中,視窗調整模組129於每個週期會查看讀取/儲存單元(LSU)的狀態機的狀態是否處於延滯(stall),若處於延滯則會將計數器的數值往上加,並且在每經過一個時間間隔,便會擷取計數器的數值以取樣讀取/儲存單元延滯週期,並將取樣的讀取/儲存單元延滯週期除以時間間隔以得到讀取/儲存單元延滯週期比例,讀取/儲存單元延滯週期比例用來跟延滯週期門檻值比較,藉以判斷在這個時間間隔期間記憶體競爭的情況是否嚴重,並根據比較結果來調整可排程執行緒束指示視窗128的容量的大小。在一較佳實施例中,在類費米架構中,時間間隔可設定在1,000至10,000個週期之間,以避免取太小的時間間隔(例如,100 個週期)會導致讀取/儲存單元延滯週期比例變化太激烈,且取太大的時間間隔(例如,100,000 個週期)會導致取樣的讀取/儲存單元延滯週期無法反映實際的記憶體競爭情況。
在步驟S253中,若讀取/儲存單元延滯週期比例大於等於延滯週期門檻值,表示此時記憶體競爭情況嚴重,則進行步驟S254,透過視窗調整模組129減小可排程執行緒束指示視窗128的容量。例如,在串流多處理器開始運行時的第一個時間間隔(例如,經過5,000個週期後)中,若取得的讀取/儲存單元延滯週期比例大於等於門檻值,則可將視窗調整模組129的容量從48個單位減小為16個單位,換言之,將可進行排程的執行緒的數量從48個減小至16個,以降低記憶體競爭的情況。若於下一個時間間隔來到時(例如,經過10,000個週期後),此時取得的讀取/儲存單元延滯週期比例仍大於延滯週期門檻值,則繼續減小可排程執行緒束指示視窗128的容量(例如,從16個單位減小至8個單位),直到可排程執行緒束指示視窗128的容量到下限值(例如,1個單位)後則不再繼續減小,如第4圖所示,第4圖係根據本發明一些實施例所繪示的調整可排程執行緒束指示視窗的容量的大小的示意圖。
由於讀取/儲存單元延滯週期比例大於延滯週期門檻值的情況代表記憶體競爭情況嚴重,因此減少可排程的執行緒束的數量可降低過多的執行緒束在等待從非快取記憶體L1的其他記憶體存取資料的時間,並且盡量讓處理相同資料(例如,D1)的執行緒束完成所有運算後再輪到處理其他資料(例如,D2)的執行緒束進行運算,可避免原本存在快取記憶體L1的資料D1僅完成某一運算後被資料D2取代,使得後續要對資料D1進行運算的其他執行緒束要進行運算時又得重新對快取記憶體L2/主記憶體發出資料請求的情況發生。
然而,減小可排程的執行緒束的數量卻也降低了串流多處理器122對執行緒束並行處理運算的效率。因此,在步驟S253中,若讀取/儲存單元延滯週期比例小於延滯週期門檻值,表示此時記憶體競爭情況不算嚴重,則進行步驟S255,透過視窗調整模組129加大可排程執行緒束指示視窗128的容量。例如,將視窗調整模組129的容量從8個單位加大為16個單位。類似地,當加大可排程執行緒束指示視窗128的容量達到上限值(例如,48個單位)後不再繼續增大。在一些實施例中,排程執行緒束指示視窗128的容量係以2的冪次加大或是減小,如此一來可透過移位運算子(shift operator)簡單地實現調整可排程執行緒束指示視窗128的容量的大小。例如,透過右移運算1個位元可以將可排程執行緒束指示視窗128的容量減至一半,而透過左移運算1個位元可以將排程執行緒束指示視窗128的容量增加一倍。
在經由步驟S254減小可排程執行緒束指示視窗128的容量或是經由步驟S255加大可排程執行緒束指示視窗128的容量之後,接著進行步驟S256,透過視窗調整模組129根據調整後的可排程執行緒束指示視窗128的容量決定哪些執行緒束可進行排程。在一些實施例中,可進行排程的執行緒束中包含至少一個已經發出資料請求的執行緒束。在一較佳實施例中,可進行排程的執行緒束中包含最後一個發出資料請求的執行緒束,也就是發出儲存在未命中狀態維持暫存器佇列最後一個的資料請求的執行緒束。對於每一個已經發出資料請求的執行緒束而言,最後系統一定會將所請求的資料回傳到快取記憶體L1,若此時將需要這資料的執行緒束從可排程的選項中移除,則其他執行緒不需要處理這筆資料就浪費了這段存取資料的時間。因此,視窗調整模組129在決定可進行排程的執行緒束時會根據未命中狀態維持暫存器裡儲存的資料請求來得知現階段有哪些執行緒束已經發出請求,並從這些執行緒束中的一者來決定依序要進行排程的執行緒束。
在一些實施例中,視窗調整模組129係根據底下的邏輯運算式來決定可進行排程的執行緒束的基數,並根據可排程執行緒束指示視窗128的容量的大小依序選定要進行排程的執行緒束。
i = j & (~(n-1)),
其中i ≤ j ≤ (i+n-1),i、j、n皆以2進位表示,i為可進行排程的執行緒束中的第一個執行緒束的基數,j為上一個發出資料請求的執行緒束的序數,n為經調整的容量。
請一併參照第5A圖及第5B圖,第5A圖係根據本發明一些實施例所繪示的在減小容量的情況下決定可進行排程的執行緒束的示意圖,第5B圖係根據本發明一些實施例所繪示的在加大容量的情況下決定可進行排程的執行緒束的示意圖。須注意的是,為了方便理解,數字本身以十進位表示,而數字後的括弧內的數字是對應的二進位表示。如第5A圖所示,假設可排程執行緒束指示視窗128的容量從8個單位減小至4個單位,且視窗調整模組129從未命中狀態維持暫存器中得知到最後一個發出資料請求的執行緒束是指令緩衝模組126中的48個執行緒束W0~W47中的第22個執行緒束W21,其序數為21(010101)。首先,視窗調整模組129可對可排程執行緒束指示視窗128的容量進行右移運算1個位元以將原本的8(000100)個單位減小至4(000010)個單位。接著,將經調整的容量n=4減去1得到3(000011),然後對其進行反相(NOT)運算得到(111100)。最後,再將得到的(111100)與最後一個發出資料請求的執行緒束的序數21(010101)進行及(AND)運算可得到進行排程的執行緒的基數為(010100)=20,也就是第21個執行緒束W20。得到基數之後,根據調整後的容量依序的執行緒束為W20、W21、W22、及W23,這四個執行緒束便是執行緒束排程模組121可進行排程的執行緒束,其包含了最後一個發出資料請求的執行緒束W21。
請參照第5B圖,其為可排程執行緒束指示視窗128的容量被加大時的情況。假設可排程執行緒束指示視窗128的容量從8個單位加大至16個單位,而最後一個發出資料請求的執行緒束還是執行緒束W21。類似地,視窗調整模組129可對可排程執行緒束指示視窗128的容量先進行左移運算1個位元以將原本的8(000100)個單位加大至16(001000)個單位。接著,將經調整的容量n=16減去1得到15(001111),然後對其進行反相運算得到(110000)。最後,再將得到的(110000)與最後一個發出資料請求的執行緒束的序數21(010101)進行及運算可得到進行排程的執行緒的基數為(010000)=16,也就是第17個執行緒束W16。得到基數之後,根據調整後的容量依序的執行緒束為W16、W17、…、W21、…、W30、及W31,這十六個執行緒束便是執行緒束排程模組121可進行排程的執行緒束,其同樣地包含了最後一個發出資料請求的執行緒束W21。
透過上述邏輯運算式,經調整後的可進行排程的執行緒束必定包含至少一個已經發出資料請求的執行緒束。此外,這樣的做法僅用了移位運算、減法運算、反相運算和及運算,這些都是基本的邏輯運算,可以只用幾個邏輯閘完成,因此降低了實現視窗調整模組129的硬體成本。
回到第3圖的步驟S251,當視窗調整模組129判斷串流處理器120運行尚未達到一個時間區隔時,進行步驟S257,透過視窗調整模組129判斷可排程執行緒束指示視窗128的容量是否大於等於一容量門檻值。若可排程執行緒束指示視窗128的容量小於容量門檻值,則回到步驟S251。若容量大於等於容量門檻值,則進行步驟S258,透過視窗調整模組129判斷可排程執行緒束指示視窗128標記的所有可進行排程的執行緒束是否皆處於相依性延滯(dependence stall)的狀態。若否,則回到步驟S251。若是的話,則進行步驟S259,透過視窗調整模組129判斷未命中狀態維持暫存器是否已經滿了。若是的話,則回到步驟S251。若未命中狀態維持暫存器未滿,表示未命中狀態維持暫存器還可接收其他的資料請求,則直接進行步驟S255。換言之,視窗調整模組129可在運行時間尚未達到下一個時間間隔時(亦即,在時間間隔的期間時段)直接加大可排程執行緒束指示視窗128的容量。
在本發明中,可排程執行緒束指示視窗128的容量的大小可表示記憶體競爭情況的嚴重程度。在本實施例的類費米架構中,容量門檻值設定為8個單位。若可排程執行緒束指示視窗128的容量大於等於8個單位(亦即,8、16、或48個單位)代表為大容量,而小於8個單位(亦即,1、2、或4個單元)代表小容量。對於大容量的情況,其代表著記憶體競爭的情況不算嚴重。因此,若此時可排程執行緒束指示視窗128標記的所有可進行排程的執行緒束皆處於相依性延滯的狀態且未命中狀態維持暫存器還可接收其他執行緒束的資料請求(亦即,未命中狀態維持暫存器未滿),則視窗調整模組129可在運行時間尚未達到下一個時間間隔時直接加大可排程執行緒束指示視窗128的容量,以增加可進行排程的執行緒束的數量,藉此來增加串流多處理器的效能。
對於小容量的情況,其代表著記憶體競爭的情況嚴重,即使只有8個執行緒束記憶體仍無法負擔它們的資料請求。這通常發生在一個對主記憶體進行讀取的指令卻需要讀取多個記憶體的資料的情況,例如矩陣操作、影像處理、或是機器學習。在這樣的情況下,即便未命中狀態維持暫存器還可儲存其他執行緒束的資料請求,視窗調整模組129仍然不會在未達到下一個時間間隔時就加大可排程執行緒束指示視窗128的容量,以避免增加記憶體的負擔。
請參照第6圖,第6圖係根據本發明一些實施例繪示的在具有不同大小的快取記憶體的系統上執行相同執行緒束的示意圖。系統A具有無上限的快取記憶體空間並使用一般的執行緒束排程方法。系統B具有1單位的快取記憶體空間並使用一般的執行緒束排程方法。系統C具有1單位的快取記憶體空間並使用本發明的執行緒束排程方法。這三個系統皆執行相同的執行緒束W0~W2,其中“X”代表著讀取指令,“O”代表著算術邏輯(ALU)指令。在本示例中,若快取未命中則需要2個週期的等待資料時間。
如第6圖所示,由於系統A具有無上限的快取記憶體空間,因此快取記憶體皆存放著W0~W2要處理的資料。如此一來,在執行執行緒束W0~W2中的各個讀取指令和算術邏輯指令時,快取皆能命中,因此無須等待資料回傳的時間,整個程式(12個指令)完成的時間是12個週期。
系統B具有1單位的快取記憶體空間,假設此時先存放著執行緒束W0所要處理的資料。在t=1時,執行執行緒束W0的第一個讀取指令,快取命中,因此可以在1個週期完成這個指令的操作。在t=2時,執行執行緒束W1的第一個讀取指令,由於快取存放的是執行緒束W0要處理的資料,因此快取未命中,此時便需要發出資料請求到外部的快取(例如,快取記憶體L2)或是主記憶體去索要資料,這樣需要2個週期。由於系統B具有1單位的快取記憶體空間,因此回傳的執行緒束W1要處理的資料會取代原先存在快取記憶體裡的執行緒束W0所要處理的資料。因此執行完執行緒束W1的第一個讀取指令需要3個週期,且此時快取記憶體存放的是執行緒W1要處理的資料。接著在t=5時執行執行緒束W2的第一個讀取指令。但由於此時快取存放的是執行緒W1要處理的資料,因此快取仍然未命中,導致跟執行執行緒束W1時一樣的情況。而在t=8時,又回到執行執行緒W0的第二個讀取指令,但是執行緒束W0要處理的資料已不在快取記憶體裡(在本例中,此時放著的是執行緒束W2要處理的資料),因此快取未命中,繼續重複上面的資料請求流程。因此在12個週期裡,系統B只完成了7個指令,且有6個週期浪費了。相較於系統A則是在12個週期裡完成了12個指令。
系統C同樣具有1單位的快取記憶體空間,但是使用了本發明的執行緒束排程方法。假設取樣讀取/儲存單元延滯週期的時間間隔為3個週期。在t=1時,執行執行緒W0的第一個讀取指令,快取命中,同時視窗調整模組129對讀取/儲存單元延滯週期取樣並判斷不減最小可排程的執行緒束視窗的容量。在t=2時,執行執行緒束W1的第一個讀取指令,快取未命中,執行緒W1發出資料請求。在t=4時,因達到下一個時間間隔,視窗調整模組129再次對讀取/儲存單元延滯週期取樣並判斷要減小最小可排程的執行緒束視窗的容量(因為快取未命中導致等待資料回傳,其判斷的細節如先前所述)。在本例中最小可排程的執行緒束視窗的容量減小為1個單位,且只保留了發出資料請求的執行緒束W1。在到下一個時間間隔(亦即,t=8)前,只有執行緒束W1可進行排程。t=4時,執行緒束W1所要處理的資料已經回傳並存放在快取記憶體,在t=5時,由於只有執行緒束W1可進行排程,因此執行執行緒束W1的第二個讀取指令,快取命中,因此只需要1個週期完成這個指令。在t=6時,仍然只有執行緒束W1可進行排程,因此執行執行緒束W1的第一個運算邏輯指令,此時由於快取命中並已經將資料放在暫存器中,不需要再對快取記憶體進行存取,因此只需要1個週期完成這個指令。在t=7時,視窗調整模組129再次對讀取/儲存單元延滯週期取樣並判斷要加大最小可排程的執行緒束視窗的容量(因為沒有快取未命中,執行執行緒束W1時都是1個週期完成而沒有延滯的情況),此時最小可排程的執行緒束視窗的容量加大為3個單位。此時依序執行執行緒束W2的第一個讀取指令,快取未命中,因此執行緒束W2發出資料請求,在等待資料回傳期間,由於執行緒束W1的第四個指令是邏輯運算指令,其資料已經從快取讀出並存在暫存器中無須再進行讀取,因此在t=8時完成這個指令。在t=10時,視窗調整模組129再次對讀取/儲存單元延滯週期取樣並判斷要減小最小可排程的執行緒束視窗的容量(因為快取未命中),並只保留了上一個發出資料請求的執行緒束W2為可排程的,t=11之後的操作如前述的操作,不再贅述。
從上例中可看出,雖然系統C跟系統B一樣只有1個單位的快取記憶體,但是在12的週期時間中,系統C完成了9個指令,且只浪費了3個週期。因此在資源有限的情況下,可有效地降低記憶體競爭的影響,進而增加了串流多處理器的執行效能。
綜上所述,本發明所提供的執行緒束排程方法,利用取樣讀取/儲存單元延滯週期並將讀取/儲存單元延滯週期比例與門檻值進行比較來判斷記憶體競爭的嚴重程度,並根據不同的嚴重程度利用減小/加大視窗調整模組的容量來適應性調整可進行排程的執行緒束的數量。在記憶體競爭情況嚴重時減小視窗調整模組的容量,來避免增加從記憶體存取資料的負擔,在記憶體競爭情況不嚴重時加大視窗調整模組的容量,增加執行緒束的數量來提升串流多處理器的並行處理能力,以提升整個圖形處理器的運算效能。
雖然本發明已以較佳實施例揭露,然其並非用以限制本發明,任何熟習此項技藝之人士,在不脫離本發明之精神和範圍內,當可作各種更動與修飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者爲準。
100:通用圖形處理器
110:互連網路模組
120:串流多處理器
121:執行緒束排程模組
122:處理模組
1221:串流處理器
1222:特殊函式單元
1223:讀取/儲存單元
123:運算元集合模組
124:共享記憶體
125:暫存器堆
126:指令緩衝模組
127:計分模組
128:可排程執行緒束指示視窗
129:視窗調整模組
140:記憶體
S210、S250、S270:步驟
S251~S259:步驟
第1圖係根據本發明一較佳實施例繪示的通用圖形處理器的架構方塊示意圖。
第2圖係根據本發明一較佳實施例所繪示的執行緒束排程方法的流程圖。
第3圖係根據本發明一較佳實施例所繪示的第2圖的執行緒束排程方法中的步驟S250的流程圖。
第4圖係根據本發明一些實施例所繪示的調整可排程執行緒束指示視窗的容量的大小的示意圖。
第5A圖係根據本發明一些實施例所繪示的在減小容量的情況下決定可進行排程的執行緒束的示意圖。
第5B圖係根據本發明一些實施例所繪示的在加大容量的情況下決定可進行排程的執行緒束的示意圖
第6圖係根據本發明一些實施例繪示的在具有不同大小的快取記憶體的系統上執行相同執行緒束的示意圖。
S210、S250、S270:步驟
Claims (12)
- 一種執行緒束排程方法,適用於一圖形處理器中的一串流多處理器,該串流多處理器包含複數個處理模組,該方法包含: 將指派給該串流多處理器的複數個第一執行緒束儲存在一指令緩衝模組中; 藉由一可排程執行緒束指示視窗標記該等第一執行緒束中可進行排程的複數個第二執行緒束,其中該標記的該等第二執行緒束的數量係該可排程執行緒束指示視窗的一容量; 在每一時間間隔對一讀取/儲存單元延滯週期進行取樣以得到一讀取/儲存單元延滯週期比例; 對該讀取/儲存單元延滯週期比例與一延滯週期門檻值進行比較,並根據比較結果調整該可排程執行緒束指示視窗的該容量的大小以及決定該等第二執行緒束;以及 從該指令緩衝模組依序指派該等第二執行緒束給該等處理模組中的一相應者執行。
- 如請求項1所述的執行緒束排程方法,其中根據比較結果調整該可排程執行緒束指示視窗的該容量的大小包含; 當該讀取/儲存單元延滯週期比例大於等於該延滯週期門檻值時,減小該可排程執行緒束指示視窗的該容量;以及 當該讀取/儲存單元延滯週期比例小於該延滯週期門檻值時,加大該可排程執行緒束指示視窗的該容量。
- 如請求項2所述的執行緒束排程方法,該容量係以2的冪次加大或是減小。
- 如請求項1所述的執行緒束排程方法,還包含: 在尚未達到下一個對讀取/儲存單元延滯週期進行取樣的時間區隔時,判斷該可排程執行緒束指示視窗的該容量是否大於等於一容量門檻值; 若該容量大於等於該容量門檻值,在一未命中狀態維持暫存器所儲存的複數個資料請求的數量尚未達到上限且該等第二執行緒束皆處於相依性延滯的狀態的情況下,加大該可排程執行緒束指示視窗的該容量。
- 如請求項4所述的執行緒束排程方法,其中該等第二執行緒束包含相應於發出該未命中狀態維持暫存器內的至少一資料請求的至少一執行緒束。
- 如請求項1所述的執行緒束排程方法,其中該等第二執行緒束包含依序的執行緒束 Wi~W(i+n-1),其中n為經調整的該容量,i為該等第二執行緒束的第一個執行緒束的基數,其中i係根據下式決定, i = j & (~(n-1)), 其中i ≤ j ≤ (i+n-1),且j為最後一個發出資料請求的執行緒束的序數。
- 一種串流多處理器,適用於一圖形處理器,其中該串流多處理器經組態以執行一應用程式中的複數個第一執行緒束,並包含: 複數個處理模組; 一指令緩衝模組,經組態以儲存該等第一執行緒束; 一可排程執行緒束指示視窗,連接該指令緩衝模組,並經組態以標記該指令緩衝模組內的該等第一執行緒束中可進行排程的複數個第二執行緒束,其中該標記的該等第二執行緒束的數量係該可排程執行緒束指示視窗的一容量; 一視窗調整模組,連接該可排程執行緒束指示視窗,經組態以在每一時間間隔對一讀取/儲存單元延滯週期進行取樣以得到的一讀取/儲存單元延滯週期比例,對該讀取/儲存單元延滯週期比例與一延滯週期門檻值進行比較,並根據比較結果調整該可排程執行緒束指示視窗的該容量的大小以及決定該等第二執行緒束;以及 一執行緒束排程模組,連接該可排程執行緒束指示視窗與該指令緩衝模組,並經組態以從該指令緩衝模組依序指派該等二執行緒束給該等處理模組中的一相應者執行。
- 如請求項7所述的串流多處理器,其中當該讀取/儲存單元延滯週期比例大於等於該延滯週期門檻值時,該視窗調整模組減小該可排程執行緒束指示視窗的該容量,當該讀取/儲存單元延滯週期比例小於該延滯週期門檻值時,該視窗調整模組加大該可排程執行緒束指示視窗的該容量。
- 如請求項7所述的串流多處理器,還包含一未命中狀態維持暫存器,該未命中狀態維持暫存器儲存了當執行緒束所要執行的資料不在位於該串流多處理器內部的一第一快取時向位於該串流多處理器外部與該第一快取連接的一第二快取索要資料的資料請求,其中該等第二執行緒束包含相應於發出該未命中狀態維持暫存器內的至少一資料請求的至少一執行緒束。
- 如請求項9所述的串流多處理器,其中在該可排程執行緒束指示視窗的該容量大於等於一容量門檻值的情況下,當該未命中狀態維持暫存器所儲存的複數個資料請求的數量尚未達到上限且該等第二執行緒束皆處於相依性延滯的狀態時,該視窗調整模組在尚未達到下一個進行取樣的時間區隔時便加大該可排程執行緒束指示視窗的該容量。
- 如請求項7所述的串流多處理器,其中該等第二執行緒束包含依序的執行緒束 Wi~W(i+n-1),其中n為經調整的該容量,i為該等第二執行緒束的第一個執行緒束的基數,其中該視窗調整模組係根據下式決定i, i = j & (~(n-1)), 其中i ≤ j ≤ (i+n-1),且j為最後一個發出資料請求的執行緒束的序數。
- 如請求項7所述的串流多處理器,還包含一計分模組,連接該指令緩衝模組與該視窗調整模組,並經組態以對該等第二執行緒束進行相依性的確認以確定該等第二執行緒束係可經由該執行緒束排程模組進行指派。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110100892A TWI768649B (zh) | 2021-01-08 | 2021-01-08 | 執行緒束排程方法及使用該方法的串流多處理器 |
US17/227,422 US20220220644A1 (en) | 2021-01-08 | 2021-04-12 | Warp scheduling method and stream multiprocessor using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110100892A TWI768649B (zh) | 2021-01-08 | 2021-01-08 | 執行緒束排程方法及使用該方法的串流多處理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI768649B true TWI768649B (zh) | 2022-06-21 |
TW202227964A TW202227964A (zh) | 2022-07-16 |
Family
ID=82322626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110100892A TWI768649B (zh) | 2021-01-08 | 2021-01-08 | 執行緒束排程方法及使用該方法的串流多處理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220220644A1 (zh) |
TW (1) | TWI768649B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230315479A1 (en) * | 2020-09-10 | 2023-10-05 | NEC Laboratories Europe GmbH | Method and system for supporting throughput-oriented computing |
CN116483536B (zh) * | 2023-04-24 | 2024-05-10 | 上海芷锐电子科技有限公司 | 数据调度方法、计算芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201015440A (en) * | 2008-07-09 | 2010-04-16 | Ibm | Lock windows for reducing contention |
TW201918876A (zh) * | 2017-11-06 | 2019-05-16 | 晨星半導體股份有限公司 | 多處理器系統及其處理器管理方法 |
US20200379804A1 (en) * | 2019-06-01 | 2020-12-03 | Apple Inc. | Multi-level scheduling |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119665B2 (en) * | 2018-12-06 | 2021-09-14 | Advanced Micro Devices, Inc. | Dynamic voltage and frequency scaling based on memory channel slack |
-
2021
- 2021-01-08 TW TW110100892A patent/TWI768649B/zh active
- 2021-04-12 US US17/227,422 patent/US20220220644A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201015440A (en) * | 2008-07-09 | 2010-04-16 | Ibm | Lock windows for reducing contention |
TW201918876A (zh) * | 2017-11-06 | 2019-05-16 | 晨星半導體股份有限公司 | 多處理器系統及其處理器管理方法 |
US20200379804A1 (en) * | 2019-06-01 | 2020-12-03 | Apple Inc. | Multi-level scheduling |
Also Published As
Publication number | Publication date |
---|---|
TW202227964A (zh) | 2022-07-16 |
US20220220644A1 (en) | 2022-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ausavarungnirun et al. | Exploiting inter-warp heterogeneity to improve GPGPU performance | |
US7209996B2 (en) | Multi-core multi-thread processor | |
US8656401B2 (en) | Method and apparatus for prioritizing processor scheduler queue operations | |
US7734897B2 (en) | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads | |
US9652243B2 (en) | Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor | |
US8635621B2 (en) | Method and apparatus to implement software to hardware thread priority | |
TWI768649B (zh) | 執行緒束排程方法及使用該方法的串流多處理器 | |
US11106494B2 (en) | Memory system architecture for multi-threaded processors | |
JP6260303B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20130166882A1 (en) | Methods and apparatus for scheduling instructions without instruction decode | |
US11360809B2 (en) | Multithreaded processor core with hardware-assisted task scheduling | |
EP3716065A1 (en) | Apparatus, method, and system for ensuring quality of service for multi-threading processor cores | |
US20210303305A1 (en) | Processor having latency shifter and controlling method using the same | |
EP3047380B1 (en) | Pattern detector for detecting hangs | |
US9952871B2 (en) | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry | |
US20130297910A1 (en) | Mitigation of thread hogs on a threaded processor using a general load/store timeout counter | |
US10521368B2 (en) | Arbitration of requests requiring a variable number of resources | |
CN111045800A (zh) | 一种基于短作业优先的优化gpu性能的方法及系统 | |
WO2016092347A1 (en) | Distributed hang recovery logic | |
EP3066559B1 (en) | Logic analyzer for detecting hangs | |
US10592517B2 (en) | Ranking items | |
US20220058025A1 (en) | Throttling while managing upstream resources | |
JP2020091751A (ja) | 演算処理装置および演算処理装置の制御方法 | |
CN118051265A (zh) | 用于前端聚集/分散存储器合并的方法和装置 | |
Iliakis et al. | LOOG: Improving GPU Efficiency With Light-Weight Out-Of-Order Execution |