TWI552073B - 世代執行緒排程器 - Google Patents
世代執行緒排程器 Download PDFInfo
- Publication number
- TWI552073B TWI552073B TW101147516A TW101147516A TWI552073B TW I552073 B TWI552073 B TW I552073B TW 101147516 A TW101147516 A TW 101147516A TW 101147516 A TW101147516 A TW 101147516A TW I552073 B TWI552073 B TW I552073B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- threads
- shared resource
- request
- executable instructions
- Prior art date
Links
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本文揭示大致上係有關於微處理器領域。更明確言之,本文揭示係有關於在一多執行緒處理器中在指令執行緒間有效地且公平地排程分享資源。
於多重處理中,處理器可採用多執行緒邏輯以執行多個可執行指令之執行緒。此等可執行指令之執行緒也可分享處理器執行資源,諸如舉例言之,一頁面失誤處理器、或一硬體頁走器、或一快取填充緩衝器、或若干其它執行資源。
一執行緒揀選器可選擇數個執行緒中之一者,從其中簽發指令用於執行。該執行緒揀選器可使用正常循環演算法,使得全部執行緒具有均等存取執行硬體。於某些情況下,若由一執行緒需要的資源乃暫時無法取得,則執行緒揀選器可偏離循環算法。執行緒揀選器藉由針對競爭性執行緒動態地運算資源臨界值,且過濾出已經超出其資源臨界值的該等執行緒而可試圖維持資源分配的公平性。如此可能要求執行緒揀選器針對分享的資源及執行緒,儲
存與維持額外狀態資訊,例如臨界值,而與其實際分享資源的使用上獨立無關。
有些處理器執行資源可要求多個時鐘以服務一項請求。舉例言之,硬體頁走器可能要求數十個時鐘週期以走該等頁表。如此可能產生問題,一旦執行緒已經成功地發送一請求給該分享資源,且該資源變成忙碌,則隨後請求存取該項資源的其它執行緒將被拒絕直到該資源變成可用為止。若未做規範以確保公平,則該項資源可能一再地由同一個執行緒所請求,或另外,由全部執行緒中的某個子集所請求。結果,如此可能允許一種狀況,少數執行緒長時間週期過度搜刮一項資源。最終地,一實時栓鎖檢測器可能升高優先順序層級以防止一執行緒經驗完全地匱乏,但此等技術無法充分地防止處理器執行資源的分配不公反複地發生。
至今為止,尚未完整地探勘在多執行緒處理器中在競爭性指令執行緒間用以公平地排程分享資源的有效邏輯與結構。
依據本發明之一實施例,係特定地提出一種在一多處理系統中分享一資源之方法,其包含從在一處理器中的一第一多數請求實體,接收對一分享資源的請求;批准該等第一多數請求實體中之一第一實體存取該分享資源;分配對該分享資源之一保留給該等第一多數請求實體中之其它實體;及封鎖該第一實體不許可再度請求該分享資源
至少直到該等第一多數請求實體中之各個實體已經被批准存取該分享資源。
101、201、301‧‧‧設備
102、104、202、204、302、304、604‧‧‧處理器核心、核心
103、203、303、403‧‧‧世代執行緒排程器(GTS)
105、205、305‧‧‧處理器、多執行緒處理器
106、108、206、208、306、308、606、608‧‧‧圖形處理裝
置(GFX)、圖形控制器
107、207、607‧‧‧視訊裝置
109、209、609‧‧‧裝置
110、210、310‧‧‧頁面失誤處理器(PMH)
112、162、172、182、192、212、312、322、342、362、372、382、392、522、542、562、572、582、592‧‧‧轉譯後
備緩衝器(TLB)
115、215、251、311、315、318、351‧‧‧匯流排/互連體
116、216、316‧‧‧硬體頁走器(HPW)
120、140‧‧‧B/I-U
121、141‧‧‧I-TLB
122、142‧‧‧D-TLB
123、143‧‧‧I-快取
124、144‧‧‧D-快取
125、145‧‧‧MEM-U
126、146、214、314‧‧‧第二層級快取記憶體(L2)
131、151‧‧‧解碼
133、153‧‧‧每執行緒佇列
135a、155a‧‧‧FP/SIMD REGS
135b、155b‧‧‧GEN REGS
137a、157a‧‧‧FP/SIMD EXU
137b、157b‧‧‧INT EXU
164、174、184、194‧‧‧快取記憶體
227‧‧‧視訊顯示邏輯
237‧‧‧I/O擴延裝置
248‧‧‧音訊/視訊I/O
249‧‧‧音訊解碼邏輯
252、352‧‧‧記憶體控制
257‧‧‧NAND控制
258‧‧‧傳輸處理器
259‧‧‧安全處理器
291‧‧‧SIMD共處理器
300‧‧‧系統
313‧‧‧快閃記憶體
316‧‧‧HPW、安全數位
317‧‧‧MMC、多媒體卡
319‧‧‧固態驅動裝置(SSD)
320‧‧‧無線連接裝置
321‧‧‧相機介面
323‧‧‧快速IrDA埠
324‧‧‧HD多媒體介面
325‧‧‧通用串列匯流排(USB)
327‧‧‧顯示器控制
329‧‧‧主介面
330‧‧‧橋接器
331‧‧‧通用異步接收器/發射器(UART)
332‧‧‧相機控制
333‧‧‧藍牙UART
334‧‧‧數字小鍵盤
335‧‧‧電池控制
337‧‧‧I/O擴延
339‧‧‧觸控螢幕控制
355‧‧‧主記憶體、外部記憶體
400‧‧‧處理器管線
409‧‧‧指令儲存裝置
410‧‧‧SMT指令提取邏輯
411、412‧‧‧執行緒佇列
413‧‧‧執行緒選擇邏輯、執行緒揀選器
414‧‧‧分配階段
416‧‧‧RF0
417‧‧‧RF1
418‧‧‧RFn
419‧‧‧執行階段
420‧‧‧報廢階段
421‧‧‧重新排序緩衝器
422、423‧‧‧請求執行緒
431‧‧‧Ti
432‧‧‧Tj
433‧‧‧執行緒排程邏輯
434‧‧‧世代追蹤狀態
435‧‧‧表
500‧‧‧狀態機
501、502、510、513、520、521、530‧‧‧狀態變遷
540-543‧‧‧狀態
601、701‧‧‧方法
610-655、710-790‧‧‧處理方塊
本發明係於附圖中各幅圖舉例說明但非限制性。
圖1例示說明使用一機構用以在多重指令執行緒間有效地且公平地排程分享資源之一多執行緒處理器的一個實施例。
圖2例示說明使用一機構用以在多重指令執行緒間有效地且公平地排程分享資源之一多執行緒處理器的另一個實施例。
圖3例示說明使用一機構用以在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之一多執行緒處理系統的一個實施例。
圖4例示說明用以在多重指令執行緒間有效地且公平地排程分享資源之一機構的一個實施例。
圖5例示說明針對在多重指令執行緒間有效地且公平地排程分享資源之一機構的一狀態機的一個實施例。
圖6例示說明一種在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之方法的一個實施例之流程圖。
圖7例示說明一種在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之方法的替代實施例之流程圖。
此處揭示針對一世代執行緒排程器之方法及裝置。一個實施例可使用處理器多執行緒邏輯以執行可執行指令之執行緒,及在競爭存取一分享資源的多個可執行指令之執行緒間公平地分配一分享資源。世代執行緒排程邏輯藉由批准一第一請求執行緒存取該分享資源,及針對該分享資源分配一保留給該等執行中的執行緒的各個請求執行緒而有效地且公平地分配分享資源。然後,世代執行緒排程邏輯封鎖執行緒防止再度請求該分享資源,直到每個其它執行緒皆已經被分配一次保留,且也已被批准存取該分享資源為止。當被分配一保留的該世代的各個請求執行緒已經存取該分享資源時,世代追蹤狀態可經清除。
如此,一世代執行緒排程器可在各個請求世代上,在競爭存取該分享資源的可執行指令之請求執行緒間公平地分配一分享處理器執行資源。須瞭解此種機構可以防止在競爭存取該等分享資源的週期期間,由於存取該分享資源的分配不公而導致有些執行緒的效能不平衡地降級。須瞭解雖然後文詳細說明部分典型地指稱一分享資源係由可執行指令之執行緒所請求,但本發明之範圍並非受如此所限。此處描述的技術可單獨地或組合地施加至請求硬體裝置、或軟體處理、或韌體、或任何其它型別的請求實體。
依據後文教示可實現此等及其它本發明之實施例,未悖離本發明的廣義精髓及範圍,可在後文教示中做
出各項修改及變化。據此,說明書及圖式須視為說明性而非限制性意義,本發明係僅就申請專利範圍各項及其相當範圍界定。
圖1例示說明使用一機構用以在多重指令執行緒間有效地且公平地排程分享資源之一多執行緒處理器105的一個實施例。多執行緒處理器105之一個實施例包括一設備101,其使用一分享頁面失誤處理器PMH 110及硬體頁走器、用於多數多執行緒處理核心102-104之HPW 116及/或其它裝置以分享一多核心系統中的虛擬記憶體。設備101包括轉譯後備緩衝器TLB 112以儲存第二層級快取記憶體(L2)虛擬位址轉譯分錄。頁面失誤處理器PMH 110係耦接至TLB 112,以協助使用HPW 116在頁面失誤上的頁走,及駐居TLB 112的虛擬位址轉譯分錄。針對若干實施例,頁面失誤處理器PMH 110與HPW 116乃無法區別,但針對某些第一層級快取記憶體(L1)頁面失誤,可能不要求一頁表走。為了例示說明原故,TLB 112、HPW 116及PMH 110係顯示為含括於設備101內,但須瞭解部分或全部可體現為分開的或分散的硬體及/或軟體資料結構,且可駐在設備101外部,例如含括於主記憶體內。
設備101也包含世代執行緒排程器(GTS)103,其係顯示為含括於設備101內,但可體現為分開的硬體或軟體,且可駐在設備101外部。
設備101係操作式耦接匯流排/互連體115,用以與一多核心處理器或多核心處理系統通訊,具有多個多執
行緒處理器核心或其它處理裝置用以分享在該多核心系統中的虛擬記憶體。系統可包括多個多執行緒處理器核心,其中之二者係顯示為核心102及核心104,以及其它處理裝置諸如圖形裝置,其中之二者係顯示為GFX 106及GFX 108,及選擇性地其它處理裝置,諸如視訊裝置107及裝置109。
多執行緒處理器核心102及104可為多執行緒核心,處理多個方法執行緒用以分別地透過解碼131及解碼151、每執行緒佇列133及153、浮點/單一指令多重資料暫存器FP/SIMD REGS 135a及FP/SIMD REGS 155a、一般暫存器GEN REGS 135b及GEN REGS 155b、浮點/單一指令多重資料執行單元FP/SIMD EXU 137a及FP/SIMD EXU 157a、及整數執行單元INT EXU 137b及INT EXU 157b而予執行。核心102及核心104也可經由匯流排/互連體單元B/I-U 120及B/I-U 140,透過一匯流排/互連體115及記憶體單元MEM-U 125及MEM-U 145而耦接外部記憶體(圖中未顯示)。核心102及核心104也可透過外部記憶體及匯流排/互連體115,及選擇性地透過一最末層級快取記憶體(圖中未顯示)而耦接圖形處理裝置GFX 106及GFX 108,及選擇性地耦接其它異質處理裝置諸如視訊裝置107及裝置109。
此等複數處理核心或其它處理裝置也可透過外部實體記憶體及選擇性地透過一最末層級快取記憶體(圖中未顯示)而分享虛擬記憶體位址。典型地,處理器核心102及104可具有快取階層,例如分別地為I-快取123、D-快取
124、L2 126及I-快取143、D-快取144、L2 146;及TLB例如分別地為I-TLB 121、D-TLB 122及I-TLB 141、D-TLB 142以從在一分頁虛擬記憶體系統中的系統頁表而快取虛擬至實體位址轉譯。
圖形處理器GFX 106及GFX 108、及選擇性地其它處理裝置諸如視訊裝置107及裝置109也可具有機構諸如TLB,例如分別為TLB 162、TLB 182、TLB 172及TLB 192用以執行虛擬至實體位址轉譯。TLB 162、TLB 182、TLB 172及TLB 192之各個實施例分別地可具有或可不具有相同能力,或可媲美同質處理器核心102及104的能力。圖形處理裝置GFX 106及GFX 108、及選擇性地其它處理裝置諸如視訊裝置107及裝置109也可具有快取記憶體,例如快取記憶體164、快取記憶體184、快取記憶體174及快取記憶體194。
若核心102及核心104、圖形處理裝置GFX 106、GFX 108、及選擇性地視訊裝置107及裝置109中之一或多個執行緒當透過一TLB詢查而存取其TLB時產生一頁面失誤,則可發送一頁面失誤請求給設備101的分享PMH 110。設備101可在該多核心系統中,在多個裝置處理器核心102及104、圖形處理裝置GFX 106、GFX 108、及選擇性地視訊裝置107及裝置109中的裝置上,從一或多個個別請求執行緒而接收一或多個頁面失誤請求,例如在一頁面失誤請求佇列中。
當處理來自請求裝置中之一者的一頁面失誤請
求時,設備101可含括世代執行緒排程器103以仲裁與識別欲處理該等一或多個請求執行緒中的哪個頁面失誤請求。於若干實施例中,世代執行緒排程器103可用於處理器核心102及104多執行緒邏輯及每執行緒佇列133及153以揀選用於執行的執行緒,及在競爭存取該分享資源的執行緒間公平地分配一分享資源,諸如設備101的分享PMH 110及HPW 116。世代執行緒排程器103可藉批准一第一請求執行緒存取該分享資源且針對該分享資源分配一保留給各個請求執行緒而有效地且公平地分配分享資源。然後世代執行緒排程器103封鎖該等執行緒不允許再度請求該分享資源,直到已經被分配一保留的每個其它執行緒皆已經被許可存取該分享資源為止。當已經被分配一保留的該世代的各個請求執行緒皆已經存取該分享資源時,世代追蹤狀態可藉世代執行緒排程器103清除。
於若干實施例中,與存取分享HPW 116分開地,世代執行緒排程器103可分配存取分享PMH 110。設備101可執行第二本地TLB 112詢查以滿足該頁面失誤請求,及然後,當於TLB 112中的一頁面失誤時,世代執行緒排程器103可分配存取或一保留給分享HPW 116,應答該第一頁面失誤請求以執行一頁表走而產生一實體位址。使用或不使用分享HPW 116,當藉分享PMH 110完成時,該實體位址可藉設備101的通訊邏輯發送給相對應於請求執行緒的該裝置;或應答該第一頁面失誤請求,藉設備101事發訊一錯誤給一作業系統用於該相對應於請求執行緒。
須瞭解每當複製頁面失誤請求係由設備101接收時,若任何複製請求已經由或正在由PMH 110處理,則其它複製請求可針對PMH 110分配一保留及連同該第一請求等待被滿足。如此,當虛擬記憶體空間係由多個裝置所分享時,針對設備101的分享PMH 110及分享HPW 116,藉世代執行緒排程器103可執行處理來自不同執行緒的請求複製。同理,若因一頁面不存在於實體記憶體結果導致該第一請求產生一頁面錯誤,則可消除由於相同理由而複製頁面錯誤信號給作業系統,但違反存取權利的頁面錯誤可被保留,但沒有使用分享HPW 116複製該頁走。
圖2例示說明使用一機構用以在多重指令執行緒間有效地且公平地排程分享資源之一多執行緒處理器205的另一個實施例。處理器205的一個實施例針對在多個處理核心或其它裝置上執行的執行緒,利用一分享頁面失誤處理器及/或一分享硬體頁走器以分享在一多核心系中的虛擬記憶體。處理器205的設備201包含TLB 212以儲存虛擬位址轉譯分錄。頁面失誤處理器PMH 210係耦接TLB 212,使用在頁面失誤上的分享硬體頁走器HPW 216而協助頁走,及移駐TLB 212的虛擬位址轉譯分錄。為了例示說明之目的,TLB 212、HPW 216、及PMH 210係顯示為含括於設備201,但須瞭解一個的一部分或全部可體現為分開的或分散式硬體及/或軟體資料結構,且係駐在設備201外部,例如含括於主記憶體。
設備201也包括世代執行緒排程器GTS 203及選
擇性地,包含第二層級快取記憶體L2 214,其係顯示為含括於設備201中,但可體現為分開的硬體及/或軟體資料結構,且係駐在設備201外部。
設備201係操作式耦接匯流排/互連體215及251,用以與一多核心處理器205或多核心處理系統通訊,具有多個多執行緒處理器核心或其它處理裝置用以透過記憶體控制252經由在該多核心系統中的外部記憶體(圖中未顯示)而分享虛擬記憶體。系統可包括多個多執行緒處理器核心,其中之二者係顯示為核心202及核心204,以及其它處理裝置諸如圖形裝置,其中之二者係顯示為GFX 206及GFX 208,及選擇性地其它處理裝置,諸如視訊裝置207及裝置209。
多執行緒處理器核心202及204可為多執行緒核心,例如參考圖1所述執行多個處理執行緒。核心202及核心204可透過匯流排/互連體215耦接各個裝置,例如I/O擴延裝置237、NAND控制257、傳輸處理器258、安全處理器259、視訊顯示邏輯227、音訊/視訊I/O 248、音訊解碼邏輯249、及選擇性地單一指令多重資料(SIMD)共處理器291。核心202及核心204也可透過外部記憶體及匯流排/互連體215及251,及選擇性地透過一最末層級快取記憶體(圖中未顯示)而耦接圖形處理裝置GFX 206及GFX 208,及選擇性地耦接其它異質處理裝置諸如視訊裝置207及裝置209。
此等複數處理核心或其它處理裝置也可透過外部主記憶體及選擇性地透過一最末層級快取記憶體(圖中
未顯示)而分享虛擬記憶體位址。典型地,處理器核心可具有快取階層及TLB,例如分別為TLB 222及TLB 242,以從在一分頁虛擬記憶體系統中的系統頁表快取虛擬至實體位址轉譯。
圖形處理裝置GFX 206及GFX 208及選擇性地其它處理裝置,諸如視訊裝置207及裝置209也可具有機構,諸如TLB,例如TLB 262、TLB 282、TLB 272及TLB 292用以執行虛擬至實體位址轉譯。TLB 262、TLB 282、TLB 272及TLB 292分別地可具有或可不具有相同能力,或可媲美核心202及核心204的能力。
若核心202及核心204、圖形處理裝置GFX 206、GFX 208、及選擇性地視訊裝置207及裝置209中之一或多個執行緒當透過一TLB詢查而存取其TLB時產生一頁面失誤,則可發送一頁面失誤請求給設備201的分享PMH 220。設備201可在該多核心系統中藉任何適當手段例如請求佇列,從多個裝置處理器核心202及204、圖形處理裝置GFX 206、GFX 208、及選擇性地視訊裝置207及裝置209中的裝置的一或多個個別請求執行緒而接收一或多個頁面失誤請求。
當處理來自請求裝置中之一者的一頁面失誤請求時,設備201可含括世代執行緒排程器GTS 203以仲裁與識別欲處理該等一或多個請求執行緒中的哪個頁面失誤請求。於若干實施例中,世代執行緒排程器GTS 203可用於處理器核心202及204多執行緒揀選邏輯以揀選用於執行的執
行緒,及在競爭存取該分享資源的執行緒間公平地分配一分享資源,諸如設備201的分享PMH 220及/或HPW 216。世代執行緒排程器GTS 203可藉批准一第一請求執行緒存取該分享資源且針對該分享資源分配一保留給各個請求執行緒而有效地且公平地分配分享資源。然後世代執行緒排程器GTS 203封鎖該等執行緒不允許再度請求該分享資源,直到已經被分配一保留的每個其它執行緒皆已經被許可存取該分享資源為止。當已經被分配一保留的該世代的各個請求執行緒皆已經存取該分享資源時,世代追蹤狀態可藉GTS 203清除。
於若干實施例中,部分PMH 210可經分布及/或含括於處理器核心202及204,或與存取一分享HPW 216分開地,執行緒排程器203可分配存取至一分享PMH 210。設備201可執行第二本地TLB 212詢查以滿足頁面失誤請求,及然後當於TLB 212中一頁面失誤時,GTS 203可分配存取或一保留給分享HPW 216以應答該第一頁面失誤請求,而執行一頁表走及產生一實體位址。當藉分享PMH 210或藉分享HPW 216完成時,該實體位址可藉設備201的通訊邏輯而發送給相對應請求執行緒之裝置,或應答該第一頁面失誤請求,可由設備201發訊一錯誤給相對應請求執行緒之一作業系統。
須瞭解每當設備201接收到複製頁面失誤請求,若任何複製請求已經由或正在由PMH 210處理,則其它複製請求可被分配針對PMH 210的一保留,連同該第一請求
等待被滿足。如此,當虛擬記憶體空間係由多個裝置所共享時,可由GTS 203針對設備201的分享PMH 210及HPW 216從事來自不同執行緒的請求的複製。同理,若由於一頁面不存在於實體記憶體而第一請求產生一頁面錯誤,可免除因相同理由而複製頁面錯誤信號給作業系統,同時可保留針對存取權利違反的頁面錯誤,但沒有使用HPW 216的頁走複製。
圖3例示說明使用一機構用以在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之一多執行緒處理系統的一個實施例。
系統300包括處理器305的設備301,包含TLB 312以儲存虛擬位址轉譯分錄。頁面失誤處理器PMH 310係耦接TLB 312以協助在頁面失誤上的頁走,及移駐TLB 312的虛擬位址轉譯分錄。為了例示說明目的,TLB 312、HPW 316及PMH 310係顯示為含括於設備301內,但須瞭解一個或全部的一部分可體現為分開的或分散式硬體及/或軟體結構,且駐在設備301外部,例如含括於主記憶體355。
設備301也包含GTS 303,及選擇性地包含第二層級快取記憶體L2 314,其係顯示為含括於設備301內,但可體現為分開的硬體或軟體且可駐在設備301外部。
設備301係操作式耦合匯流排/互連體315及351用以與多核心處理器305或具有多個處理器核心或其它處理裝置的多核心處理系統通訊,用以經由多核心系統中的外部記憶體355,透過記憶體控制352分享虛擬記憶體。
系統300之實施例可使用標準或不標準或專屬技術、介面、匯流排或互連體315及351體現,諸如周邊組件互連體(PCI)或PCI快速或串列高級技術附件(SATA)用以與多核心處理器或多核心處理系統通訊。
系統300之其它實施例可使用標準或不標準或專屬技術、介面、匯流排或互連體315及351體現-例如串列周邊介面(SPI)匯流排;指令集架構(ISA)匯流排、PC/104、PC/104+及擴延ISA;通用串列匯流排(USB)音訊視訊類別(AVC);進階微控制器匯流排架構(AMBA)高級周邊匯流排(APB);火線(Fire Wire)(IEEE Std 1394a-2000高效能串列匯流排-修訂1,ISBN 0-7381-1958-X;IEEE Std 1394b-2002高效能串列匯流排-修訂2,ISBN 0-7381-3253-5;IEEE Std 1394c-2006,2007-0608,ISBN 0-7381-5237-4);高畫質多媒體介面(HDMI);視訊電子標準協會(VESA)的顯示埠及迷你顯示埠;行動工業處理器介面(MIPI®)聯盟的串列低功率晶片間媒體匯流排(SLIMBus)、低延遲介面(LLI)、相機串列介面(CSI)顯示器串列介面(DSI)等。
系統300可包括多個處理器核心,其中之二者顯示為核心302及核心304,以及其它處理裝置諸如圖形裝置,其中之二者顯示為GFX 306及GFX 308,及選擇性地其它處理裝置,諸如視訊裝置307及裝置309。
多處理器核心302及304可為多執行緒核心處理用於執行的多個處理執行緒。處理器核心302及核心304可透過匯流排/互連體315而耦接各個裝置,諸如橋接器330、
無線連接裝置320、數據機裝置326、及視訊I/O裝置328。若干系統300之實施例可體現為單晶片系統,例如用在平板電腦或智慧型手機。於此等實施例中,無線連接裝置320可提供無線區域網路(LAN)鏈路;數據機裝置326可提供第四代(4G)或其它電話鏈路;及視訊I/O裝置328可提供人音訊介面裝置集合,例如頭戴式耳機、揚聲器、頭戴式耳機麥克風、音訊輸出入頻道、及放大器。
處理器核心302及304係耦接匯流排/互連體315用以與各個其它系統裝置通訊,可包括但非僅限於無線連接裝置320、數據機裝置326、及視訊I/O裝置328、相機介面321、快速IrDA(紅外線資料聯盟)埠323、HD(高畫質)多媒體介面324、USB 325、顯示器控制327、及其它主介面329。處理器核心302及304也耦接匯流排/互連體315、橋接器330及匯流排/互連體311用以與各個其它系統裝置通訊,可包括但非僅限於快閃記憶體313、SD(安全數位)記憶體316、MMC(多媒體卡)317及固態驅動裝置(SSD)319。處理器核心302及304耦接匯流排/互連體315、橋接器330及匯流排/互連體318用以與各個其它系統裝置通訊,可包括但非僅限於通用異步接收器/發射器(UART)331、相機控制332、藍牙UART 333選擇性地包括Wi-Fi 802.11 a/b/g收發器及/或全球定位系統(GPS)收發器、數字小鍵盤334、電池控制335、I/O擴延337、及觸控螢幕控制339。
處理器核心302及304也係透過匯流排/互連體315及351及記憶體控制352而耦接記憶體355。處理器核心
302及304也可透過記憶體355及匯流排/互連體315及351,及選擇性地透過最末層級快取記憶體(圖中未顯示)而耦接圖形處理裝置GFX 306及GFX 308,及選擇性地其它處理裝置諸如視訊裝置307及裝置309。記憶體355及系統300的其它具體有形儲存媒體可記錄功能描述材料,包括可執行指令以體現一處理方法而使用對多個處理核心的分享頁面失誤處理器PMH 310或分享HPW 316或其它裝置以分享在一多核心系統中的虛擬記憶體。
系統300的若干實施例遵照工業標準,許可多個作業系統同時在單一電腦內部跑以本機地分享裝置,例如單根I/O虛擬化(SRIOV)其提供在PCI快速拓樸學的本機I/O虛擬化,或多根I/O虛擬化(MRIOV)其提供在多個根複體分享一PCI快速階層拓樸學的本機I/O虛擬化。系統300之若干實施例可包括標準或不標準或專屬技術、介面、匯流排或互連體,諸如SPI匯流排、USB、AMBA APB;火線、HDMI、迷你顯示埠、MIPI SLIMbus、MIPI LLI、MIPI CSI、MIPI DSI等。
此等多重處理核心或其它處理裝置可透過記憶體355及選擇性地透過最末層級快取記憶體(圖中未顯示)分享虛擬記憶體位址空間。典型地,處理器核心可具有快取階層及TLB,例如TLB 322及TLB 342以從在一分頁虛擬記憶體系統中的主或賓作業系統頁表快取虛擬至實體位址轉譯。
圖形處理裝置GFX 306及GFX 308,及選擇性地
其它處理裝置諸如視訊裝置307及裝置309也可具有機構,諸如TLB,例如分別為TLB 362、TLB 382、TLB 372及TLB 392以執行虛擬至實體位址轉譯。TLB 362、TLB 382、TLB 372及TLB 392分別之各個實施例可具有或可不具有相同能力或可媲美處理器核心302及304的能力。
若處理器核心302及304、圖形處理裝置GFX 306及GFX 308、及選擇性地視訊裝置307及裝置309中之一或多者在透過TLB詢查而存取其TLB之同時產生一頁面失誤,則可發送一頁面失誤請求給設備301的分享PMH 310。設備301可從多核心系統中的多數裝置,處理器核心302及304、圖形處理裝置GFX 306及GFX 308、及選擇性地視訊裝置307及裝置309中之一或多個個別請求裝置接收一或多個頁面失誤請求。
當處理得自請求裝置中之一者的一頁面失誤請求時,設備301可包括世代執行緒排程器GTS 303以仲裁與識別欲處理該等一或多個請求執行緒中的哪個頁面失誤請求。於若干實施例中,GTS 303可用於處理器核心302及304多執行緒揀選邏輯以揀選用於執行的執行緒,及在競爭存取該分享資源的執行緒間公平地分配一分享資源,諸如設備301的分享PMH 330及HPW 316。世代執行緒排程器GTS 303可藉批准一第一請求執行緒存取該分享資源且針對該分享資源分配一保留給各個請求執行緒而有效地且公平地分配分享資源。然後世代執行緒排程器GTS 303封鎖該等執行緒不允許再度請求該分享資源,直到已經被分配一保留
的每個其它執行緒皆已經被許可存取該分享資源為止。當已經被分配一保留的該世代的各個請求執行緒皆已經存取該分享資源時,世代追蹤狀態可藉世代執行緒排程器GTS 303清除。
於若干實施例中,部分PMH 310可為分散式且係含括於處理器核心302及核心304,或GTS 303可與存取一分享HPW 316分開地分配存取一分享PMH 310。設備301可執行一第二本地TLB 312詢查以滿足該頁面失誤請求,及然後當於TLB 312中的一頁面失誤時,世代執行緒排程器303可分配存取或一保留給分享HPW 316,以執行一頁表走且應答該第一頁面失誤請求而產生一實體位址。當藉分享PMH 310或藉分享HPW 316完成時,該實體位址可藉設備301的通訊邏輯發送至相對應請求執行緒的該裝置,或應答該第一頁面失誤請求,可由設備301發訊一錯誤給針對相對應請求執行緒的一作業系統。
須瞭解每當複製頁面失誤請求係由設備301接收時,若任何複製請求已經由或正在由PMH 310處理,則其它複製請求可被分配PMH 310的一保留且等待連同該第一請求而被滿足。如此,當虛擬記憶體空間係由多個裝置所分享時,可刪除頁走的複製。同理,若第一請求產生一頁面錯誤,則也可刪除複製頁面錯誤傳訊給該作業系統。
圖4例示說明在多重指令執行緒間有效地且公平地排程分享資源的一機構403。
於處理器管線400之一個實施例中,用於同時多
執行緒(SMT)在多重執行執行緒T0至Tn間出現一選擇過程。指令儲存裝置409保有執行緒T0至Tn的指令,其係由SMT指令提取邏輯410提取用於執行,且佇列等候入作用或休眠執行緒422的執行緒佇列411至412。
執行緒選擇邏輯413可從事適用於執行緒T0至Tn的資源要求的選擇過程以免執行緒間匱乏,及藉使用一世代執行緒排程器403而改良資源分配的效率及公平性,容後詳述。執行緒選擇邏輯413也可將任何剩餘執行緒排優先順序以選擇欲前傳給分配階段414的新指令。
於分配階段414中,某些資源可分配給指令。舉例言之,於若干實施例中,依據針對各個執行緒的暫存器混疊表分錄,暫存器可被重新命名且從暫存器檔案的實體暫存器分配。
於簽發窗415中,執行緒T0至Tn的指令占有分錄及等待簽發給其個別的暫存器檔案及執行單元。於若干實施例中,例如,整數指令例如可從GEN REGS 135b或155b簽發給接收運算元,用以在整數算術/邏輯單元(ALU)例如137b或157b執行;浮點指令例如可從FP/SIMD REGS 135a或155a經簽發給接收運算元,用以在FP/SIMD EXU 137a或157a的浮點加法器或浮點乘法器中執行;及單一指令多重資料(SIMD)指令例如可從FP/SIMD REGS 135a或155a經簽發給接收運算元,用以在FP/SIMD EXU 137a或157a的SIMD ALU、SIMD移位器等中執行。
在指令已經簽發後,當變成可資利用時,從其個
別的暫存器檔案例如135a、155a、135b或155b接收其運算元暫存器,然後前進至執行階段419,於該處該等指令被有序地或失序地執行以產生其個別結果。以記憶體運算元為例,或許在執行階段419之前,可執行記憶體讀取或或許在執行階段419之後,可執行記憶體寫入。若執行緒T0至Tn中之一或多個指令當透過TLB詢查而存取其TLB時產生一頁面失誤,則可發送一頁面失誤請求給一分享頁面失誤處理器,例如設備101的PMH 110。設備101可從多核心系統的例如處理器核心102及/或104的一或多個個別請求執行緒T0至Tn接收一或多個頁面失誤請求。
當處理來自請求裝置中之一者的一頁面失誤請求時,設備101可含括世代執行緒排程器GTS 403以仲裁且識別欲處理該等一或多個請求執行緒423、Ti 431至Tj 432中之哪個頁面失誤請求。於若干實施例中,GTS 403可用於處理器核心執行緒選擇邏輯413以揀選用以執行的執行緒,且在競爭存取該分享資源的該等執行緒間,分配一分享資源(諸如設備101的分享PMH 110及/或HPW 116)。
世代執行緒排程器GTS 403藉由批准一第一請求執行緒存取該分享資源及分配針對該分享資源的一保留給各個請求執行緒而可有效地且公平地分配該分享資源。世代執行緒排程器GTS 403然後封鎖不允許再度請求該分享資源直到已經分配一保留的每個其它執行緒都也已經批准存取該分享資源為止。當被分配一保留的該世代之各個請求執行緒都也已經存取該分享資源時,世代追蹤狀態434可
藉執行緒排程邏輯433而被清除。
於脫離循序次序選擇性地執行指令之實施例中,報廢階段420可採用一重新排序緩衝器421以以其個別的原先循序次序報廢執行緒T0至Tn指令。
於若干實施例中,世代追蹤狀態434(例如執行緒423的)及執行緒揀選器413狀態(例如執行緒422的)之一集合可針對世代追蹤狀態434,依據下表435記錄及/或解譯:IDLE用於保留狀態R=0,及批准狀態G=0;RESERVE用於保留狀態R=1,及批准狀態G=0;SERVICE用於保留狀態R=1,及批准狀態G=1;BLOCK用於保留狀態R=0,及批准狀態G=1。針對執行緒揀選器413狀態,一執行緒可具有SLEEP狀態:在做一請求且被分配一保留(且不被批准存取該分享資源)後,在已被批准存取後而當其請求正在被服務期間,及在已經被封鎖不允許做一新請求後。一執行緒可具有ACTIVE狀態:每當任何請求被完成時(該執行緒本身的請求或任何其它執行緒的請求)。於ACTIVE狀態中,該執行緒可產生一新請求,或若該請求先前未經批准則可重複相同的請求。
圖5例示說明針對在多重指令執行緒間有效地且公平地排程分享資源之一機構的一狀態機500的一個實施例。於一個實施例中,狀態機500可在一請求產生期間,針對一分享資源的各個懸而未決的及已完成的請求,例如藉世代執行緒排程器GTS 403的執行緒排程邏輯433而動態地建立、儲存與維持。於另個實施例中,狀態機500的分開集
合可在一請求產生期間,針對一分享資源的各個情況而動態地建立、儲存與維持。至於另一個實施例,一個集合狀態機500可在一請求產生期間,針對一特定型別資源的全部情況而動態地建立、儲存與維持。
始於狀態540,一請求執行緒不使用該分享資源。於一個實施例中,於狀態機500的狀態540中,保留狀態R=0,而批准狀態G=0。當由該執行緒作出請求存取該分享資源時,藉由批准該請求執行緒存取該分享資源,一世代執行緒排程器可有效地且公平地分配該分享資源,其中依據狀態變遷501,請求執行緒獲得該資源且移動至狀態541;或藉由分配對該分享資源的一保留給該請求執行緒,其中依據狀態變遷502,請求執行緒移動至狀態542。至於一個實施例,於狀態542,保留狀態R可被設定為一(1),而批准狀態G可維持為零(0)。於狀態542,請求執行緒具有一保留以使用該分享資源;或為該執行緒最終將由該世代執行緒排程器被批准存取該分享資源,其中依據狀態變遷521,請求執行緒獲得該資源且移動至狀態541;或為該執行緒的請求可藉另一個執行緒的複製請求獲得滿足,其中依據狀態變遷520,請求執行緒返回狀態540。至於一個實施例,於狀態541中,保留狀態R及批准狀態G皆可被設定為一(1),而與哪個狀態變遷501或521導致請求執行緒獲得該資源獨立無關。
當藉該分享資源完成來自該執行緒的請求時,一世代執行緒排程器可決定被分配一保留的每個其它執行緒
皆也已經被批准存取該分享資源(亦即當無其它執行緒具有懸而未決的保留時),其中依據狀態變遷510,請求執行緒移動至狀態540;或當一或多個其它執行緒具有對該分享資源的一保留時,則依據狀態變遷513,執行緒移動至狀態543,且被封鎖不允許再度請求該分享資源。至於一個實施例,於狀態543,保留狀態R可被復置為零(0),而批准狀態G可維持為一(1)。
至於狀態機500之一個實施例,一世代執行緒排程器藉由檢查任何保留狀態R是否仍然設定為一(1),可決定何時被分配一保留的每個執行緒皆也已經被批准存取該分享資源,於該種情況下,於狀態543的全部執行緒皆被封鎖不允許再度請求該分享資源。當來自任何其它執行緒的請求完成時,其保留狀態R可被復置為零(0)。因此,當無剩餘保留狀態R被設定為一(1)時,目前世代的請求已經完成,其中依據狀態變遷530,執行緒從狀態543移動至狀態540。
圖6例示說明一種在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之方法601的一個實施例之流程圖。方法601及此處揭示的其它方法係藉處理方塊執行,該等處理方塊可包含可藉通用機器或藉特用機器或藉二者的組合執行的專用硬體或軟體或韌體操作碼。
於處理方塊610,一保留狀態R係經初始化以儲存一零(0)值。於處理方塊615,一批准狀態G係儲存一零(0)值。於處理方塊620,決定是否請求存取該分享資源。若否,
則處理返回處理方塊615。否則處理前進至處理方塊625,於該處保留狀態R係設定為一(1)以表示相對應的請求執行緒具有對該分享資源的一保留。於處理方塊630,檢查資源瞭解其是否為忙碌。若是,則於處理方塊630請求執行緒等待直到該分享資源為可資利用為止。當於處理方塊630決定該分享資源係不忙碌時,處理前進至處理方塊635,於該處藉世代執行緒排程器決定是否應批准本請求。若否,則處理返回處理方塊630。否則,批准該請求執行緒存取該分享資源,及處理前進至處理方塊640,於該處批准狀態G係經設定以儲存一(1)之值。於處理方塊645,檢查一資源以得知其是否已經完成本請求。若否,則該請求執行緒在處理方塊645等待直到該請求已經藉該分享資源完成為止。當藉該分享資源完成來自該目前執行緒的請求時,處理前進至處理方塊650,於該處一批准狀態G係經復置而儲存一零(0)值。然後於處理方塊650,一世代執行緒排程器藉由檢查任何保留狀態R是否仍然設定為一(1)而決定何時已經被分配一保留的每個執行緒也已經被批准存取該分享資源,於該種情況下,本執行緒被封鎖不允許再度請求該分享資源,及於處理方塊655等待。於處理方塊655,當決定並無任何保留狀態R仍然設定為一(1)時,處理前進至處理方塊615,於該處該批准狀態G係經復置而儲存一零(0)值。如此,當被分配一保留的該世代的各個請求執行緒都已經存取該分享資源時,世代追蹤狀態係藉世代執行緒排程器清除。
須瞭解方法601之實施例可以與所例示說明的順
序之不同順序,或當可能時,與其它處理方塊並行地執行其處理方塊的處理。針對一個實施例,在一請求世代期間,針對各個懸而未決的及已完成的對一分享資源的請求,例如藉世代執行緒排程器(GTS)403的執行緒排程邏輯433可動態地維持方法601。至於另一個實施例,在一請求世代期間,針對一分享資源的各個情況可動態地維持方法601之分開的集合。
圖7例示說明一種在一多執行緒處理器中的指令執行緒間有效地且公平地排程分享資源之方法701的替代實施例之流程圖。於處理方塊710,對一分享資源的新執行緒請求係由一世代執行緒排程器接收。於處理方塊720,保留分配給對該分享資源的新請求的執行緒。於處理方塊730,監視資源瞭解其是否忙碌。若否,則於處理方塊740一請求執行緒被批准存取該分享資源,及處理前進至處理方塊750。否則處理直接前進至處理方塊750,於該處監視資源以得知目前批准的請求是否完成。若否,則處理於處理方塊710繼續。否則於處理方塊750,當一請求完成時,處理前進至處理方塊760,於該處被批准的執行緒之保留被清除。然後處理前進至處理方塊770,於該處世代執行緒排程器藉由檢查是否任何保留仍然懸而未決,而決定已經被分配一保留的任何執行緒是否尚未經批准存取該分享資源,於該種情況下,於處理方塊780,執行緒被封鎖不允許再度請求該分享資源,直到已經被分配一保留的每個執行緒皆已經被批准存取該分享資源。否則於處理方塊790,針
對分享資源的全部請求皆被解除封鎖。然後於處理方塊710繼續處理。
須瞭解方法700之實施例可以與所例示說明的順序之不同順序,或當可能時,與其它處理方塊並行地執行其處理方塊的處理。
如此,一世代執行緒排程器可在競爭存取該分享資源的可執行指令之執行緒間,在各個請求世代上公平地分配一分享處理器執行資源。此種機構可避免在競爭存取該等資源的週期期間,由於分享處理器執行資源的不公平分配所導致的有些執行緒的效能不平衡地降級。
前文詳細說明部分係意圖用以例示說明本發明之較佳實施例。從前文討論將也顯然易知尤其在此一技術領域,於該處成長快速且不容易預知進一步進展,熟諳技藝人士可不悖離落入於隨附之申請專利範圍各項及其相當範圍內的本發明之原理而就排列及細節上修正本發明。
101‧‧‧設備
102、104‧‧‧核心
103‧‧‧世代執行緒排程器
105‧‧‧處理器
106、108‧‧‧圖形控制器(GFX)
107‧‧‧視訊裝置
109‧‧‧裝置
110‧‧‧PMH
112、162、172、182、192‧‧‧TLB
115‧‧‧匯流排/互連體
116‧‧‧HPW
120、140‧‧‧B/I-U
121、141‧‧‧I-TLB
122、142‧‧‧D-TLB
123、143‧‧‧I-快取
124、144‧‧‧D-快取
125、145‧‧‧MEM-U
126、146‧‧‧L2
131、151‧‧‧解碼
133、153‧‧‧每執行緒佇列
135a、155a‧‧‧FP/SIMD REGS
135b、155b‧‧‧GEN REGS
137a、157a‧‧‧FP/SIMD EXU
137b、157b‧‧‧INT EXU
164、174、184、194‧‧‧快取記憶體
Claims (20)
- 一種在一多處理系統中分享一資源之方法,該方法係包含下列步驟:從在一處理器中的一第一多數請求執行緒,接收對一分享資源的請求;批准該等第一多數請求執行緒中之一第一執行緒存取該分享資源;分配對該分享資源之一保留給該等第一多數請求執行緒中之其它執行緒;及封鎖該第一執行緒不許可再度請求該分享資源至少直到該等第一多數請求執行緒中之各個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第1項之方法,其係進一步包含下列步驟:批准該等第一多數請求執行緒中之一第二執行緒存取該分享資源;及封鎖該第二執行緒不許可再度請求該分享資源至少直到該等第一多數請求執行緒中之各個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第2項之方法,其係進一步包含下列步驟:分配對該分享資源之一保留給該等第二多數請求執行緒中之各個執行緒;及封鎖該第一及第二執行緒不許可再度請求該分享資源 至少直到該等第二多數請求執行緒中之各個執行緒已經被批准存取該分享資源。
- 一種製造物品,其係包含:包括資料及指令的一機器可存取媒體用以在多數執行緒間分配一分享資源,使得當由一機器存取時導致該機器進行下列動作:批准該等多數請求執行緒中之一第一請求執行緒存取該分享資源;分配對該分享資源之一保留給該等第一多數執行緒中之各個請求執行緒;及封鎖該第一執行緒不許可再度請求該分享資源至少直到該等多數執行緒中並無任何執行緒已經被分配一保留但尚未被批准存取該分享資源。
- 如申請專利範圍第4項之製造物品,其中該機器可存取媒體包括資料及指令而當由一機器存取時導致該機器進行下列動作:批准該等多數請求執行緒中之一第二請求執行緒存取該分享資源;及封鎖該第一及第二執行緒不許可再度請求該分享資源至少直到該等多數執行緒中並無任一者在被分配一保留後接著尚未被批准存取該分享資源。
- 如申請專利範圍第5項之製造物品,其中該機器可存取媒體包括資料及指令而當由一機器存取時導致該機器進行下列動作: 分配對該分享資源之一保留給該等多數執行緒中之尚未被批准存取該分享資源的各個請求執行緒;及當該等多數執行緒中之被分配一保留的各個執行緒已經滿足其請求時,清除一第一狀態變數。
- 一種處理器,其係包含:多執行緒邏輯用以執行多數可執行指令之執行緒;在競爭存取該分享資源的該等多數可執行指令之執行緒中之執行緒間公平地分配一分享資源;一執行緒排程邏輯用以藉下列手段在該等多數可執行指令之執行緒間分配該分享資源:批准該等多數可執行指令之執行緒中之一第一請求執行緒存取該分享資源;分配對該分享資源之一保留給該等多數可執行指令之執行緒中之請求執行緒;及封鎖該第一執行緒不許可再度請求該分享資源至少直到該等多數可執行指令之執行緒中之已經被分配一保留的每個執行緒已經滿足其請求。
- 如申請專利範圍第7項之處理器,其中該執行緒排程邏輯係藉下列手段在該等多數可執行指令之執行緒間進一步分配該分享資源:批准該等多數可執行指令之執行緒中之一第二請求執行緒存取該分享資源;及封鎖該第一及第二執行緒不許可再度請求該分享資源至少直到該等多數可執行指令之執行緒中之已經被分配一 保留的每個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第7項之處理器,其中該執行緒排程邏輯係藉下列手段在該等多數可執行指令之執行緒間進一步分配該分享資源:封鎖全部執行緒不許可再度請求該分享資源直到該等多數可執行指令之執行緒中之已經被分配一保留的每個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第7項之處理器,其中該執行緒排程邏輯係藉下列手段在該等多數可執行指令之執行緒間進一步分配該分享資源:分配對該分享資源之一保留給該等多數可執行指令之執行緒中之尚未被批准存取該分享資源的各個請求執行緒;及針對已經被分配一保留的該等多數可執行指令之執行緒中之各個執行緒,若已經被批准存取該分享資源,則清除一第一狀態變數。
- 如申請專利範圍第10項之處理器,其中該執行緒排程邏輯係藉下列手段在該等多數可執行指令之執行緒間進一步分配該分享資源:針對具有一懸而未決的或已完成的請求之該等多數可執行指令之執行緒中之各個執行緒,維持該第一狀態變數直到已經被分配一保留的每個執行緒已經被批准存取該分享資源。
- 一種處理器,其係包含: 同時多執行緒邏輯用以執行多數可執行指令之執行緒;一或多個快取記憶體用以儲存來自一可定址記憶體的資料及/或可執行指令的一或多個部分之一拷貝(copy),其中至少部分係透過一分享資源的使用;一有限狀態機用於在該等多數可執行指令之執行緒間分配該分享資源,該有限狀態機係用以進行下列動作:批准該等多數可執行指令之執行緒中之一第一請求執行緒存取該分享資源;分配對該分享資源之一保留給該等多數可執行指令之執行緒中之請求執行緒;及封鎖該第一執行緒不許可再度請求該分享資源至少直到該等多數可執行指令之執行緒中並無任何執行緒已經被分配一保留但尚未被批准存取該分享資源。
- 如申請專利範圍第12項之處理器,其中該有限狀態機係用以進行下列動作:封鎖全部執行緒不許可再度請求該分享資源直到該等多數可執行指令之執行緒中之已經被分配一保留的每個執行緒也已經被批准存取該分享資源。
- 如申請專利範圍第12項之處理器,其中該有限狀態機係用以進行下列動作:分配對該分享資源之一保留給尚未被批准存取該分享資源的各個請求執行緒;及針對已經被分配一保留的各個執行緒,若已經被批准 存取該分享資源,則清除一第一狀態變數。
- 如申請專利範圍第14項之處理器,其中該有限狀態機係用以進行下列動作:針對具有一懸而未決的或已完成的請求之各個執行緒,維持該第一狀態變數直到已經被分配一保留的每個執行緒已經被批准存取該分享資源。
- 一種計算系統,其係包含:一可定址記憶體用以儲存資料並且也用以儲存可執行指令;一或多個快取記憶體用以儲存儲存在該可定址記憶體中的該等資料及/或該等可執行指令的一或多個部分之一拷貝,至少部分係透過一分享資源的使用;一多處理器包括執行多數可執行指令之執行緒的同時多執行緒邏輯,該多處理器係操作式與該可定址記憶體耦接,及包括一有限狀態機用於在該等多數可執行指令之執行緒間分配該分享資源,該有限狀態機係用以進行下列動作:批准該等多數可執行指令之執行緒中之一第一請求執行緒存取該分享資源;分配對該分享資源之一保留給該等多數可執行指令之執行緒中之請求執行緒;及封鎖該第一執行緒不許可再度請求該分享資源至少直到該等多數可執行指令之執行緒中並無任何執行緒已經被分配一保留但尚未被批准存取該分享資源。
- 如申請專利範圍第16項之計算系統,其中該有限狀態機係用以進行下列動作:分配對該分享資源之一保留給尚未被批准存取該分享資源的各個請求執行緒;及針對已經被分配一保留的各個執行緒,若已經被批准存取該分享資源,則清除一第一狀態變數。
- 如申請專利範圍第17項之計算系統,其中該有限狀態機係用以進行下列動作:針對具有一懸而未決的或已完成的請求之各個執行緒,維持該第一狀態變數直到已經被分配一保留的每個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第16項之計算系統,其中該有限狀態機係用以進行下列動作:批准該等多數可執行指令之執行緒中之一第二請求執行緒存取該分享資源;及封鎖該第一及第二執行緒不許可再度請求該分享資源至少直到該等多數可執行指令之執行緒中之已經被分配一保留的每個執行緒已經被批准存取該分享資源。
- 如申請專利範圍第19項之計算系統,其中該有限狀態機係用以進行下列動作:封鎖全部執行緒不許可再度請求該分享資源直到該等多數可執行指令之執行緒中之已經被分配一保留的每個執行緒也已經被批准存取該分享資源。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/328,365 US9465670B2 (en) | 2011-12-16 | 2011-12-16 | Generational thread scheduler using reservations for fair scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201331837A TW201331837A (zh) | 2013-08-01 |
TWI552073B true TWI552073B (zh) | 2016-10-01 |
Family
ID=48611632
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105121000A TWI610237B (zh) | 2011-12-16 | 2012-12-14 | 世代執行緒排程器 |
TW101147516A TWI552073B (zh) | 2011-12-16 | 2012-12-14 | 世代執行緒排程器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105121000A TWI610237B (zh) | 2011-12-16 | 2012-12-14 | 世代執行緒排程器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9465670B2 (zh) |
TW (2) | TWI610237B (zh) |
WO (1) | WO2013090538A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5725162B2 (ja) * | 2011-03-31 | 2015-05-27 | 富士通株式会社 | 排他制御方法、および排他制御プログラム |
US20130332910A1 (en) * | 2012-05-22 | 2013-12-12 | Nec Laboratories America, Inc. | Dynamic livelock analysis of multi-threaded programs |
US9910689B2 (en) * | 2013-11-26 | 2018-03-06 | Dynavisor, Inc. | Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host |
US9575804B2 (en) * | 2015-03-27 | 2017-02-21 | Commvault Systems, Inc. | Job management and resource allocation |
US10489294B2 (en) | 2017-04-05 | 2019-11-26 | International Business Machines Corporation | Hot cache line fairness arbitration in distributed modular SMP system |
US20190073243A1 (en) * | 2017-09-07 | 2019-03-07 | Alibaba Group Holding Limited | User-space spinlock efficiency using c-state and turbo boost |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
TWI823126B (zh) * | 2021-07-30 | 2023-11-21 | 國立雲林科技大學 | 多流量類型共用無線通道的5g適性競爭存取系統及其方法 |
CN118132233A (zh) * | 2024-03-20 | 2024-06-04 | 海光信息技术股份有限公司 | 线程调度方法及装置、处理器和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182112B1 (en) * | 1998-06-12 | 2001-01-30 | Unisys Corporation | Method of and apparatus for bandwidth control of transfers via a bi-directional interface |
US20110055524A1 (en) * | 2007-04-09 | 2011-03-03 | Morris Marden | Providing thread fairness in a hyper-threaded microprocessor |
US20110276783A1 (en) * | 2010-05-04 | 2011-11-10 | Golla Robert T | Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485173A (en) | 1991-04-01 | 1996-01-16 | In Focus Systems, Inc. | LCD addressing system and method |
GB2273591A (en) | 1992-12-18 | 1994-06-22 | Network Systems Corp | Microcomputer control systems for interprogram communication and scheduling methods |
EP0680634B1 (en) | 1993-01-21 | 1997-05-14 | Apple Computer, Inc. | Apparatus and method for backing up data from networked computer storage devices |
US5737747A (en) | 1995-10-27 | 1998-04-07 | Emc Corporation | Prefetching to service multiple video streams from an integrated cached disk array |
IT1288076B1 (it) | 1996-05-30 | 1998-09-10 | Antonio Esposito | Multicalcolatore elettronico numerico parallelo multiprocessore a ridondanza di processori accoppiati |
US5872941A (en) | 1996-06-05 | 1999-02-16 | Compaq Computer Corp. | Providing data from a bridge to a requesting device while the bridge is receiving the data |
US6298386B1 (en) | 1996-08-14 | 2001-10-02 | Emc Corporation | Network file server having a message collector queue for connection and connectionless oriented protocols |
US6349297B1 (en) | 1997-01-10 | 2002-02-19 | Venson M. Shaw | Information processing system for directing information request from a particular user/application, and searching/forwarding/retrieving information from unknown and large number of information resources |
US6064987A (en) | 1997-03-21 | 2000-05-16 | Walker Digital, Llc | Method and apparatus for providing and processing installment plans at a terminal |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6330584B1 (en) | 1998-04-03 | 2001-12-11 | Mmc Networks, Inc. | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
US6243778B1 (en) | 1998-10-13 | 2001-06-05 | Stmicroelectronics, Inc. | Transaction interface for a data communication system |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US6542921B1 (en) | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6594667B2 (en) | 1999-08-23 | 2003-07-15 | International Business Machines Corporation | Method, system and program products for modifying coupling facility structures |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US20020095400A1 (en) | 2000-03-03 | 2002-07-18 | Johnson Scott C | Systems and methods for managing differentiated service in information management environments |
US20020065864A1 (en) | 2000-03-03 | 2002-05-30 | Hartsell Neal D. | Systems and method for resource tracking in information management environments |
US20020120741A1 (en) | 2000-03-03 | 2002-08-29 | Webb Theodore S. | Systems and methods for using distributed interconnects in information management enviroments |
WO2001097020A1 (en) | 2000-06-12 | 2001-12-20 | Clearwater Networks, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7222268B2 (en) | 2000-09-18 | 2007-05-22 | Enterasys Networks, Inc. | System resource availability manager |
US6910212B2 (en) | 2000-12-04 | 2005-06-21 | International Business Machines Corporation | System and method for improved complex storage locks |
US20020194244A1 (en) | 2001-06-01 | 2002-12-19 | Joan Raventos | System and method for enabling transaction-based service utilizing non-transactional resources |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US20030074390A1 (en) | 2001-10-12 | 2003-04-17 | Hudson Richard L. | Hardware to support non-blocking synchronization |
US6981110B1 (en) | 2001-10-23 | 2005-12-27 | Stephen Waller Melvin | Hardware enforced virtual sequentiality |
US6926133B2 (en) * | 2003-03-27 | 2005-08-09 | Flexible Steel Lacing Company | Scraper blade for conveyor belts |
US7594234B1 (en) | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US7761649B2 (en) * | 2005-06-02 | 2010-07-20 | Seagate Technology Llc | Storage system with synchronized processing elements |
EP2037634A1 (en) * | 2007-09-11 | 2009-03-18 | Deutsche Thomson OHG | Method for managing network resources and network management device |
US8769546B2 (en) * | 2010-01-07 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Busy-wait time for threads |
-
2011
- 2011-12-16 US US13/328,365 patent/US9465670B2/en active Active
-
2012
- 2012-12-13 WO PCT/US2012/069448 patent/WO2013090538A1/en active Application Filing
- 2012-12-14 TW TW105121000A patent/TWI610237B/zh not_active IP Right Cessation
- 2012-12-14 TW TW101147516A patent/TWI552073B/zh not_active IP Right Cessation
-
2016
- 2016-10-11 US US15/290,375 patent/US20170031729A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182112B1 (en) * | 1998-06-12 | 2001-01-30 | Unisys Corporation | Method of and apparatus for bandwidth control of transfers via a bi-directional interface |
US20110055524A1 (en) * | 2007-04-09 | 2011-03-03 | Morris Marden | Providing thread fairness in a hyper-threaded microprocessor |
US20110276783A1 (en) * | 2010-05-04 | 2011-11-10 | Golla Robert T | Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations |
Also Published As
Publication number | Publication date |
---|---|
US9465670B2 (en) | 2016-10-11 |
US20130160020A1 (en) | 2013-06-20 |
TW201716996A (zh) | 2017-05-16 |
TW201331837A (zh) | 2013-08-01 |
US20170031729A1 (en) | 2017-02-02 |
WO2013090538A1 (en) | 2013-06-20 |
TWI610237B (zh) | 2018-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552073B (zh) | 世代執行緒排程器 | |
US11567780B2 (en) | Apparatus, systems, and methods for providing computational imaging pipeline | |
US10210092B1 (en) | Managing cache access and streaming data | |
EP2115584B1 (en) | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system | |
TWI610223B (zh) | 多核心共享頁遺失處置器 | |
TWI603198B (zh) | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 | |
TW201314462A (zh) | 以複數個引擎支援指令序列的執行之互連結構 | |
Marrero Martin | Multicore last-level cache contention beyond the data array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |