TWI509519B - 維持公平和秩序的資源管理子系統 - Google Patents

維持公平和秩序的資源管理子系統 Download PDF

Info

Publication number
TWI509519B
TWI509519B TW102117869A TW102117869A TWI509519B TW I509519 B TWI509519 B TW I509519B TW 102117869 A TW102117869 A TW 102117869A TW 102117869 A TW102117869 A TW 102117869A TW I509519 B TWI509519 B TW I509519B
Authority
TW
Taiwan
Prior art keywords
toq
shared resource
request
item
requirement
Prior art date
Application number
TW102117869A
Other languages
English (en)
Other versions
TW201401173A (zh
Inventor
Michael Fetterman
Shirish Gadre
John H Edmondson
Omkar Paranjape
Anjana Rajendran
Eric Lyell Hill
Rajeshwaran Selvanesan
Charles Mccarver
Kevin Mitchell
Steven James Heinrich
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW201401173A publication Critical patent/TW201401173A/zh
Application granted granted Critical
Publication of TWI509519B publication Critical patent/TWI509519B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Description

維持公平和秩序的資源管理子系統
本發明一般係關於電腦架構,尤其係關於維持公平與秩序的資源管理子系統。
並行處理系統內的共用實踐為設計一種同時執行一些執行緒的處理器。每一執行緒都可在處理器內的一分離執行管線內執行。執行處理並行時,不同的執行緒可要求存取一共用資源,例如一共享的記憶體,如此可導致該等執行緒遭遇資源衝突。例如:多個執行緒可執行一共用資源存取操作,例如一記憶體載入指令,其中該等多個執行緒無法同時存取該資源。在這種情況下,允許至少一個執行緒存取該共用資源,並且完成該共用資源存取操作。該管線傳輸該共用資源的副本,例如某些執行緒所存取的該等快取線之一者,並且這些執行緒可完成該共用資源存取操作。不過,並不允許存取該相同共用資源的其他執行緒完成該共用資源存取操作並且維持無作用。如此某些執行緒可完成該共用資源存取操作,而其他執行緒則否。在缺乏裝置來處理多執行緒存取一共用資源之下,操作無法成功完成。
服務多執行緒存取一共用資源的一種方式為,將該資源分配給一或更多執行緒,直到該共用資源不再有額外可用存取埠為止。存取相 同資源的剩餘執行緒都處於待命狀態,等待該共用資源可用。當該共用資源具有一或更多可用的存取埠時,則將該共用資源分配給一或更多服務的待命要求,直到所有存取埠都已再次分配為止。該處理持續到對於該共用資源的所有要求都已經服務為止。
此方式的一項缺點為新要求會持續來到,並且消耗該共用資源的存取埠,而還在等待相同共用資源的待命中的要求尚未被服務。當新要求在待命要求之前得以存取一共用資源時,這種現象稱為「優先權反轉」。此方式的另一項缺點為當一共用資源變成可用時,可選擇服務待命中的要求。不過由於管線延遲,在該待命中要求完成該共用資源存取操作之前,另一個較新的要求可能已經消耗該共用資源。仍舊是此方式的另一項缺點為一要求可能需要存取兩個共用資源A和B,其中A可用但是B不可用。該要求會處於待命狀態,直到B變成可用。當B變成可用時,則排定完成該待命中的要求。不過由於管線延遲,在該待命中要求可完成該共用資源存取操作之前,另一個較新的要求可能已經消耗該A。當較新存取要求在較舊現有存取要求之前繼續分配資源,則該等較舊存取要求的進度可能無法往前,如此無法完成執行。
針對前面所例示,業界內需要一種更有效的方式來服務執行緒存取一共用資源。
本發明的一個具體實施例揭示一種用於排定共用資源存取要求的電腦實施方法。該方法包含:接收對於一共用資源的一第一要求;決定該共用資源無法分配給要求;以及在回應上延遲服務該第一要求。該 方法另包含:在延遲服務之後,接收該共用資源的一第二要求;以及在接收該第二要求之後,決定該共用資源變成可分配給要求。該方法另包含在讓該共用資源可用於該第二要求之前,讓該共用資源可用於該第一要求。
本發明的其他具體實施例包含但不受限於一子系統,其包括一串流多重處理器(SM,streaming multiprocessor),設置成實施該等揭示方法的一或更多態樣,以及包括一計算裝置,設置成實施該等揭示方法的一或更多態樣。
所揭示技術的一項優點為:較新的存取要求不會重複阻擋較舊的共用資源存取要求之前進進度。利用將該共用資源分配至一現有較舊存取要求優先於該新存取要求,可避免優先權反轉。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧並行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧並行處理單元
204‧‧‧本機並行處理記憶體
205‧‧‧輸入/輸出單元
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體橫桿單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧分割單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧本機暫存檔
305‧‧‧管線管理員
306‧‧‧共享記憶體
310‧‧‧串流多重處理器
312‧‧‧經線排程器與指令單元
315‧‧‧紋理單元
320‧‧‧第一層快取
321‧‧‧排程器表
322‧‧‧任務中繼資料
325‧‧‧預先光柵運算
328‧‧‧記憶體管理單元
330‧‧‧工作分配橫桿
335‧‧‧第一點五層快取
340‧‧‧工作分配單元
345‧‧‧任務表
352‧‧‧統一位址映射單元
370‧‧‧指令第一層快取
380‧‧‧記憶體與快取互連
400‧‧‧子系統
410‧‧‧串流多重處理器分割區
412‧‧‧排程器
414‧‧‧派遣單元
416‧‧‧重播指令緩衝區
420‧‧‧位址產生單元
430‧‧‧全順序佇列
432‧‧‧全順序佇列項目緩衝區
440‧‧‧位址多工器
450‧‧‧寫入資料多工器
455‧‧‧仲裁單元
460‧‧‧第一層快取記憶體
465‧‧‧讀取資料解多工器
470‧‧‧信號路徑
472‧‧‧信號路徑
474‧‧‧信號路徑
476‧‧‧信號路徑
478‧‧‧信號路徑
480‧‧‧信號路徑
482‧‧‧信號路徑
484‧‧‧信號路徑
486‧‧‧信號路徑
500‧‧‧全順序佇列項目老化單元
510‧‧‧要求狀態分配單元
520‧‧‧資源狀態分配單元
530‧‧‧全順序佇列多工器
540‧‧‧全順序佇列項目單元
550‧‧‧保留項目計數器
560‧‧‧優先權選擇器
580‧‧‧信號路徑
582‧‧‧信號路徑
584‧‧‧信號路徑
586‧‧‧信號路徑
588‧‧‧信號路徑
590‧‧‧信號路徑
所以,可以詳細瞭解本發明上述特徵之方式中,本發明的一更為特定的說明簡述如上,其可藉由參照到具體實施例來進行,其中一些例示於所附圖式中。但應注意所附圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,本發明自可包含其它同等有效的具體實施例。
第一圖為例示設置來實施本發明一或多個態樣的電腦系統方塊圖;第二圖為根據本發明的一個具體實施例,用於第一圖中該電腦系統的一並行處理子系統之方塊圖;第三A圖為根據本發明的一個具體實施例,第二圖中前端的方塊圖; 第三B圖為根據本發明的一個具體實施例,第二圖中並行處理單元之一者內一般處理叢集的方塊圖;第三C圖為根據本發明的一個具體實施例,第三B圖中該串流多重處理器一部分的方塊圖;第四圖根據本發明的一個具體實施例,例示第三C圖中該SM內設置來服務等待中共用資源存取操作的一子系統;第五圖根據本發明的一個具體實施例,例示第四圖中該TOQ內的一TOQ項目老化單元;第六A圖和第六B圖根據本發明的一個具體實施例,揭示用於新增共用資源存取要求至一全順序佇列的方法步驟流程圖;第七圖為根據本發明的一個具體實施例,用於更新一共用資源狀態的方法步驟流程圖;第八圖為根據本發明的一個具體實施例,用於將一共用資源分配給與一共用資源存取要求相關聯的一TOQ項目之方法步驟流程圖;第九圖為根據本發明的一個具體實施例,用於在一全順序佇列(TOQ)內選擇一共用資源存取要求來服務之方法步驟流程圖;第十圖為根據本發明的一個具體實施例,用於將一TOQ項目緩衝區內TOQ項目老化的方法步驟流程圖;以及第十一圖為根據本發明的一個具體實施例,用於將與一共用資源存取要求相關聯的一TOQ項目從一睡眠狀態轉換成一啟用狀態之方法步驟流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應該了解,在無一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示設置來實施本發明一或多個態樣的電腦系統100之方塊圖。電腦系統100包含一中央處理單元(CPU,central processing unit)102,以及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包含一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸(HyperTransport)連結),連接至一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的I/O橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至CPU 102。一並行處理子系統112透過匯流排或第二通訊路徑113(例如周邊組件互連(PCI,Peripheral Component Interconnect)Express、加速圖形連接埠(Accelerated Graphics Port)或超傳輸連結)耦合至記憶體橋接器105;在一個具體實施例內,並行處理子系統112為傳遞畫素給顯示裝置110(例如傳統陰極射線管或液晶監視器)的圖形子系統。系統磁碟114也連接至I/O橋接器107。一開關116提供I/O橋接器107與其他組件,像是網路配接器118以及許多外接卡120和121之間的連接。其他組件(未明確顯示),包含萬用序列匯流排(USB,universal serial bus)或其他連接埠連接、CD(compact disc)光碟機、數位影音光碟(DVD,digital video disc)機、影片記錄裝置等等,也可連接至I/O橋接器107。第一圖內顯示的許多通訊路徑,包含特地指名的通訊路徑106和113, 都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠,Accelerated Graphics Port)、超傳輸或任何其他匯流排或點對點通訊協定,以及不同裝置之間的連接都可使用業界內已知的不同協定。
在一個具體實施例內,並行處理子系統112併入將圖形與視訊處理最佳化的電路,包含例如視訊輸出電路,並且構成一圖形處理單元(GPU,graphics processing unit)。在另一具體實施例內,並行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本文內有更詳細描述。尚且在另一具體實施例內,並行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、CPU 102和I/O橋接器107來形成一晶片上系統(SoC,system on chip)。
吾人將了解,本文中顯示的該系統為例示,所以可進行改變與修改。包含橋接器的數量與配置、CPU 102的數量以及並行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例內,系統記憶體104直接連接至CPU 102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105以及CPU 102與系統記憶體104通訊。在其他替代拓撲中,並行處理子系統112連接至I/O橋接器107或直接連接至CPU 102,而不是連接至記憶體橋接器105。仍舊在其他具體實施例內,I/O橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型組件可包含二或多個CPU 102以及二或多個並行處理子系統112。本文中顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或周邊裝置。在某些具體實施例內,省略開關116,並且網路配接器118和外接卡120、121都直接連接至I/O橋接器107。
第二圖例示根據本發明一個具體實施例的並行處理子系統112。如所示,並行處理子系統112包含一或多個並行處理單元(PPU,parallel processing unit)202,每一個都耦合至本機並行處理(PP,parallel processing)記憶體204。一般來說,並行處理子系統包含數量為U的PPU,其中U1。(本文中多個類似物體的實例都用參考號碼標示出該物體,並且括號標示所需的實例。)PPU 202以及並行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(ASIC,application specific integrated circuit)或記憶體裝置,或以任何其他技術可行方式。
請再次參閱第一圖及第二圖,在一些具體實施例內,並行處理子系統112內的某些或全部PPU 202為具有彩現管線的圖形處理器,其可設置成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從CPU 102及/或系統記憶體104供應的圖形資料產生畫素資料、與本機並行處理記憶體204(可用來當成圖形記憶體,包含例如傳統畫框緩衝區)互動來儲存與更新畫素資料、傳遞畫素資料給顯示裝置110等等。在某些具體實施例內,並行處理子系統112可包含操作當成圖形處理器的一或多個PPU 202,以及用於一般用途計算的一或多個其他PPU 202。該等PPU可一致或不同,並且每一PPU都可擁有一專屬的並行處理記憶體裝置或無專屬的並行處理記憶體裝置。並行處理子系統112內的一或多個PPU 202可輸出資料至顯示裝置110,或並行處理子系統112內的每一PPU 202都可輸出資料至一或多個顯示裝置110。
在操作上,CPU 102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,CPU 102發出指令控制PPU 202的操 作。在某些具體實施例內,CPU 102將每一PPU 202的指令串流寫入至一資料結構(第一圖或第二圖內未明確顯示),其可位於系統記憶體104內、並行處理記憶體204內或可存取CPU 102和PPU 202的其他儲存位置內。每一資料結構的指標已經寫入一推送緩衝區,開始在該資料結構內處理該指令串流。PPU 202讀取來自一或多個推送緩衝區的指令串流,然後關於CPU 102的操作非同步執行指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
此時請回頭參閱第二圖以及第一圖,每一PPU 202都包含一I/O(輸入/輸出)單元205,其透過連接至記憶體橋接器105(或在一個替代具體實施例內,直接至CPU 102)的通訊路徑113,與電腦系統100的剩餘組件通訊。PPU 202與電腦系統100剩餘組件的連接也可改變。在某些具體實施例內,並行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例內,PPU 202可與例如記憶體橋接器105或I/O橋接器107這類匯流排橋接器整合在單一晶片上。仍舊在其他具體實施例內,PPU 202的某些或全部元件可與CPU 102整合在單一晶片上。
在一個具體實施例內,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一PPU 202,如業界內所熟知。在此也可使用其他通訊路徑。一I/O單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至PPU 202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入並行處理記憶體204)可導引至記憶體橫桿單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內 儲存的該指令串流輸出至一前端212。
每一PPU 202都有利地實施一高並行處理架構。如細節內所示,PPU 202(0)包含一處理叢集陣列230,其包含數量為C的一般處理叢集(GPC,general processing cluster)208,其中C1。每一GPC 208都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在許多應用當中,不同的GPC 208可分配用於處理不同種類的程式,或用於執行不同種類的計算。GPC 208的分配根據針對每一種程式或計算所賦予的工作負擔而改變。
GPC 208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編碼為任務中繼資料(TMD,task metadata)並儲存在記憶體內。至TMD的該指標包含在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為TMD的處理任務包含要處理的資料索引,以及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,並且確定在每一TMD指定的處理開始之前已經將GPC 208設置成有效狀態。一優先順序可指定給每一TMD,用來排定該處理任務的執行時間。處理任務也可從處理叢集陣列230接收。選擇性,該TMD可包含一參數,其控制該TMD加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉此提供優先順序之上的另一控制等級。
記憶體介面214包含數量為D 的分割單元215,這些單元每一個都直接耦合至一部分並行處理記憶體204,其中D 1。如所示,分割單元215的數量一般等於動態隨機存取記憶體(DRAM,dynamic random access memory)220的數量。在其他具體實施例內,分割單元215的數量可不等於記憶體裝置的數量。精通技術人士將了解,DRAM 220可用其他合適的儲存裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是畫框緩衝區或紋理地圖這類彩現目標可通過DRAM 220儲存,允許分割單元215並行寫入每一彩現目標的部分,以有效使用並行處理記憶體204的可用頻寬。
任一GPC 208都可處理寫入並行處理記憶體204內任一DRAM 220的資料。橫桿單元210設置成將每一GPC 208的輸出繞送至任意分割單元215的輸入或至用於進一步處理的其他GPC 208。GPC 208透過橫桿單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一個具體實施例內,橫桿單元210具有一連接至記憶體介面214來與I/O單元205通訊,以及一連接至本機並行處理記憶體204,藉此讓不同GPC 208內的處理核心與系統記憶體104或不在PPU 202本機上的其他記憶體通訊。在第二圖所示的具體實施例中,橫桿單元210直接連接I/O單元205。橫桿單元210可使用虛擬通道,以分隔GPC 208與分割單元215之間的流量串流。
GPC 208同樣可程式編輯來執行有關廣泛應用的處理任務,包含但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度以及其他物體屬性)、影像彩現運算(例如曲線細分著色、影點著色、幾何著色及/或畫素著色程式)等等。PPU 202可從系統記憶體104及/或本機並行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/ 或本機並行處理記憶體204,其中這種資料可由其他系統組件存取,包含CPU 102或另一並行處理子系統112。
一PPU 202可提供任何數量的本機並行處理記憶體204,包含非本機記憶體,並且可在任何情況下使用本機記憶體和系統記憶體。例如:PPU 202可為統一記憶體架構(UMA,unified memory architecture)具體實施例內的圖形處理器。在這種具體實施例內,提供一些或無專屬圖形(並行處理)記憶體,並且PPU 202完全或幾乎完全使用系統記憶體。在UMA具體實施例內,PPU 202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將PPU 202連接至系統記憶體。
如上述,任何數量的PPU 202都可包含在一並行處理子系統112內。例如:單一外接卡上可提供多個PPU 202,或多張外接卡可連接至通訊路徑113,或一或多個PPU 202可整合到一橋接器晶片上。多PPU系統內的PPU 202可彼此一致或不同。例如:不同的PPU 202可具有不同數量的處理核心、不同數量的本機並行處理記憶體等等。當存在多個PPU 202時,這些PPU可並行操作,以比單一PPU 202還要高產量的方式來處理資料。合併一或多個PPU 202的系統可在許多設置與外型因素之下實施,包含桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
多重並行任務排程
多重處理任務可在GPC 208上同時執行,並且一處理任務可在執行期間產生一或多個「子代」處理任務。任務/工作單元207接收該 等任務,並且動態排定要由GPC 208執行的處理任務以及子代處理任務。
第三A圖為根據本發明的一個具體實施例,第二圖中任務/工作單元207的方塊圖。任務/工作單元207包含一任務管理單元300以及工作分配單元340。任務管理單元300根據執行優先順序等級來組織要排程的任務。針對每一優先順序等級,任務管理單元300儲存指標清單到對應至排程器表321內任務的TMD 322,其中該清單可用連結清單來實施。TMD 322可儲存在PP記憶體204或系統記憶體104內。任務管理單元300接受任務並且將該等任務儲存在排程器表321內的速率與任務管理單元300排定任務來執行的速率無關,因此任務管理單元300可在排定該等任務之前集中許多任務。然後根據優先順序資訊或使用其他技術,例如輪轉排程,來排定集中的任務。
工作分配單元340包含一任務表345,其中有插槽讓TMD 322針對執行的任務所佔用。任務管理單元300可排定任務在任務表345內有空插槽時執行。當無空插槽時,未佔用插槽的較高優先順序任務會驅逐佔用插槽的較低優先順序任務。當一任務遭到驅逐時,該任務會停止,並且若該任務尚未執行完畢,則該任務的指標會加入要排定的任務指標清單中,如此稍後會恢復執行該任務。當在一任務執行期間產生子代處理任務時,將該子代任務的指標加入要排定的任務指標清單內。由在處理叢集陣列230內執行的TMD 322可產生一子代任務。
與從前端212的任務/工作單元207所接收的任務不同,子代任務從處理叢集陣列230接收。子代任務並未插入推送緩衝區或傳輸至該前端。當子代任務已經產生或該子代任務的資料已經儲存在記憶體內 時,並不會通知CPU 102。透過推送緩衝區提供的該等任務與子代任務間之另一差異在於,透過推送緩衝區提供的該等任務由該應用程式定義,而該等子代任務則在該等任務執行期間動態產生。
任務處理概觀
第三B圖為根據本發明的一個具體實施例,第二圖中PPU 202之一者內GPC 208的方塊圖。每一GPC 208都可設置成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例內,單一指令、多重資料(SIMD,single-instruction,multiple-data)指令發行技術用於支援大量執行緒的並行執行,而不用提供多個獨立指令單元。在其他具體實施例內,單一指令、多重執行緒(SIMT,single-instruction,multiple-thread)技術用於支援大量一般同步執行緒的並行執行,使用共用指令單元,其設置成發出指令至每一GPC 208內的處理引擎集。不同於一SIMD執行區域,其中所有處理引擎一般都執行一致的指令,SIMT執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。業界內精通技術人士將了解,SIMD處理區域代表一SIMT處理區域的功能子集。
透過將處理任務分配至串流多重處理器(SM,streaming multiprocessor)310的管線管理員305可有利地控制GPC 208的操作。管線管理員305也可設置成利用指定SM 310所輸出已處理資料的目的地,控制一工作分配橫桿330。
在一個具體實施例內,每一GPC 208都包含數量為M 的SM 310,其中M1,每一SM 310都設置成處理一或多個執行緒群組。另外, 每一SM 310有利地包含可管路化的一致功能執行單元集(例如執行單元與載入儲存單元,在第三C圖內顯示為執行單元302以及LSU 303),允許完成先前指令之前發出新指令,如先前技術所知。可提供功能執行單元的任何組合。在一個具體實施例內,該等功能單元支援許多種運算,包含整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數、指數以及對數函數等等);並且該相同功能單元硬體可用來執行不同運算。
這一系列指令傳輸至構成一執行緒的特定GPC 208,如本文先前所定義,並且通過SM 310內並行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「經線」或「執行緒群組」。如本文所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一個執行緒指派給SM 310內不同的處理引擎。一執行緒群組可包含數量比SM 310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包含數量比SM 310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一SM 310都可同時支援最多G 個執行緒群組,所以在任何已知時間上GPC 208內都可執行最多G *M 個執行緒群組。
此外,在SM 310內可同時啟用複數個相關執行緒群組(在不同執行階段內)。此執行緒群組的集合稱為「合作執行緒陣列」(CTA,cooperative thread array)或「執行緒陣列」。特定CTA的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為SM 310內並行處理引擎數量的整數倍數,並且m為SM 310內同時啟用的執行緒群組數量。CTA 的大小一般由程式設計師以及該CTA可用的硬體資源數量,例如記憶體或暫存器,來決定。
每一SM 310都包含第一層(L1)快取(如第三C圖所示),或使用SM 310之外對應L1快取內的空間,其用於執行負載與儲存操作。每一SM 310也要存取所有GPC 208之間共享的第二層(L2)快取,並且可用於在執行緒之間傳輸資料。最後,SM 310也要存取至晶片外「全域」記憶體,其可包含例如並行處理記憶體204及/或系統記憶體104。吾人了解,PPU 202之外的任何記憶體都可用來當成全域記憶體。此外,第一點五層(L1.5)快取335可包含在GPC 208內,設置成接收並固定由SM 310要求透過記憶體介面214從記憶體擷取的資料,包含指令、統一資料以及常數資料,並且將該要求的資料提供給SM 310。具有GPC 208內多個SM 310的具體實施例得利於共享共用指令和在L1.5快取335內快取的資料。
每一GPC 208都可包含一記憶體管理單元(MMU,memory management unit)328,其設置成將虛擬位址映射至實體位址。在其他具體實施例內,MMU 328可位於記憶體介面214之內。MMU 328包含一組頁面表記錄(PTE,page table entry),用於將一拼貼以及選擇性一快取線索引的虛擬位址映射至實體位址。MMU 328可包含能夠位於多處理器SM 310或L1快取或GPC 208內的位址轉譯後備緩衝區(TLB,translation lookaside buffer)或快取。該實體位址經過處理來分配本機存取的表面資料,以便讓有效要求交錯於分割單元215之間。該快取線索引可用於決定一快取線的要求是否命中或未命中。
在圖形與計算應用當中,GPC 208可經過設置,如此每一 SM 310都耦合至一紋理單元315,用於執行紋理映射操作,例如決定紋理樣本位置、讀取紋理資料以及篩選該紋理資料。紋理資料從內部紋理L1快取(未顯示)讀取,或在某些具體實施例內從SM 310內的該L1快取讀取,並且依照需求從所有GPC 208之間共享的L2快取、並行處理記憶體204或系統記憶體104擷取。每一SM 310都輸出處理過的任務至工作分配橫桿330,以便將該處理過的任務提供至另一GPC 208供進一步處理,或透過橫桿單元210將該處理過的任務儲存在L2快取、並行處理記憶體204或系統記憶體104內。preROP(預先光柵運算)325設置成從SM 310接收資料、將資料引導至分割單元215內的ROP單元,並且執行顏色混合、組織畫素顏色資料以及執行位址轉譯的最佳化。
吾人將了解,本文中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如SM 310或紋理單元315、preROP 325都可包含在GPC 208內。進一步如第二圖內所示,PPU 202可包含任意數量功能彼此類似的GPC 208,如此執行行為並不取決於接收特定處理任務的GPC 208。進一步,每一GPC 208都得利於與其他GPC 208無關的操作,運用分離並分散的處理單元、L1快取,來執行一或多個應用程式的任務。
精通此技術人士將了解,第一圖、第二圖、第三A圖和第三B圖內描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不背離本發明範疇之下包含但不受限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊用途處理單元等等。
在本發明的具體實施例內,吾人想要使用一計算系統的PPU 202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派一個獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸出資料部分要產生或寫入。
每個執行緒指令的序列可包含至少一個指令,其定義該代表性執行緒與該執行緒陣列的一或多個其他執行緒之間的合作行為。例如:每一執行緒指令的順序可包含將在該順序內特定點上該代表執行緒運算執行中斷,直到一或多個其他執行緒到達該特定點上為止之指令、讓該代表執行緒將一或多個其他執行緒可存取的資料儲存至一共享記憶體內之指令、讓該代表執行緒根據其執行緒ID基本上讀取與更新儲存在一共享記憶體內一或多個該等其他執行緒已經存取過的資料之指令等等。該CTA程式也可包含一指令,計算該共享記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一個執行緒寫入共享記憶體內的一已知位置,並且以可預測方式用相同CTA的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共享的任何所要資料圖案,並且一CTA內的任何執行緒都可與相同CTA內任何其他執行緒共享資料。在CTA執行緒之間共享的資料內容(若有的話)由該CTA程式決定;如此吾人了解在使用CTA的特定應用當中,根據該CTA程式,CTA的執行緒彼此之間會或不會確實共享資料,並且在本文中可同 時使用「CTA」與「執行緒陣列」等詞。
第三C圖為根據本發明的一個具體實施例,第三B圖中SM 310的方塊圖。SM 310包含一指令L1快取370,其設置成透過L1.5快取335接收指令與常數。經線排程器與指令單元312接收來自指令L1快取370的指令與常數,並且根據該等指令與常數控制本機暫存檔304以及SM 310功能單元。SM 310功能單元包含N個執行(執行或處理)單元302以及P個載入儲存單元(LSU,load-store unit)303。
SM 310提供具備不同存取階層的晶片上(內部)資料儲存。特殊暫存器(未顯示)可由LSU 303讀取但是無法寫入,並且可用於儲存定義每一執行緒「位置」的參數。在一個具體實施例內,特殊暫存器包含每一執行緒(或SM 310內每一執行單元302)一個暫存器,其儲存一執行緒ID;每一執行緒ID暫存器都只能由個別一個執行單元302存取。特殊暫存器也可包含額外暫存器,可由執行TMD 322(或由所有LSU 303)所呈現相同處理任務的所有執行緒讀取,其儲存一CTA識別碼、該CTA維度、該CTA所屬網格的維度(或若TMD 322編碼一佇列任務而非一網格任務時的佇列位置)以及指派CTA的TMD 322之識別碼。
若TMD 322為一網格TMD,則執行TMD 322會導致啟動並執行固定數量的CTA,來處理佇列525內所儲存的固定數量資料。CTA的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在TMD 322內,或TMD 322可儲存將由CTA處理的資料之指標。TMD 322也儲存該CTA所執行程式的開始位址。
若TMD 322為佇列TMD,然後使用TMD 322的佇列功能, 表示要處理的資料量並不需要固定。佇列記錄儲存指派給TMD 322由CTA處理的資料。該等佇列記錄也呈現執行緒執行期間由另一TMD 322產生的子代任務,藉此提供巢狀並行。一般來說,執行緒的執行或包含該執行緒的CTA會中止,直到子代任務執行完成為止。該佇列可儲存在TMD 322內,或與TMD 322分開,在此案例中TMD 322儲存至該佇列的佇列指標。有利的是,由該子代任務產生的資料可寫入該佇列,同時TMD 322代表已經執行的該子代任務。該佇列可實施為一圓形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的CTA具有暗示的網格寬度、高度和深度參數,指示該網格內個別CTA的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收的命令,並且在一處理任務執行期間不會改變。前端212排程執行的每一處理任務。每一CTA都關聯於一特定TMD 322,以便同時執行一或多個任務。此外,單一GPC 208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同CTA(或任何LSU 303)內的任何執行緒讀取但無法寫入的執行時間參數(常數)。在一個具體實施例內,裝置驅動程式103在導引SM 310開始執行使用這些參數的任務之前,提供參數給該參數記憶體。任何CTA內的任何執行緒(或SM 310內的任何執行單元302)都可透過記憶體介面214存取全域記憶體。全域記憶體的一部分可儲存在L1快取320內。
每一執行緒都使用本機暫存檔304當成伸展空間;每一暫存器都分配給一個執行緒專用,並且任何本機暫存檔304內的資料都只能由 分配給該暫存器的該執行緒存取。本機暫存檔304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此每一記錄都可儲存例如32位元字)。一個通路指派給該N個執行單元302以及P個載入儲存單元LSU 303的每一個,並且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,來幫助SIMD執行。通路的不同部分可分配給該G個同時執行緒群組中不同的執行緒,如此本機暫存檔304內的一已知記錄只能由特定執行緒存取。在一個具體實施例內,本機暫存檔304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一統一L1快取375儲存N個執行單元302以及P個載入儲存單元LSU 303的每一通路之統一或常數值。
共享記憶體306可由單一CTA內的執行緒存取;換言之,共享記憶體306內任何位置都可由相同CTA內的任何執行緒(或SM 310內任何處理引擎)來存取。共享記憶體306可實施為具有互連的一共享暫存檔或共享晶片上快取記憶體,允許任何處理引擎從該共享記憶體內任何位置讀取或寫入。在其他具體實施例內,共享的狀態空間可映射至晶片外記憶體的每一CTA區域,並且快取在L1快取320內。該參數記憶體可實施為該相同共享暫存檔或實施共享記憶體306的共享快取記憶體內的一指定區段,或實施為LSU 303具有唯讀存取的一個別共享暫存檔或晶片上快取記憶體。在一個具體實施例內,實施該參數記憶體的區域也用於儲存該CTA ID和任務ID,以及CTA和網格尺寸或佇列位置,實施該特殊暫存器的部分。SM 310內每一LSU 303都耦合至統一位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換至每一分散記憶體空間 內的一位址。因此,利用指定該統一記憶體空間內的一位址,可使用一指令來存取任何該本機、共享或全域記憶體空間。
每一SM 310內的L1快取320都可用於快取私用每一執行緒本機資料,並且也快取每一應用程式全域資料。在某些具體實施例內,該每一CTA共享資料可快取在L1快取320內。LSU 303可透過一記憶體與快取互連380耦合至共享記憶體306以及L1快取320。
維持公平與秩序的全順序佇列
第四圖根據本發明的一個具體實施例,例示第三C圖中該SM 310內設置來服務等待中共用資源存取操作的一子系統400。如所示,子系統400包含SM分割區410、位址產生單元(AGU,address generation unit)420、一位址多工器440、一寫入資料多工器450、一仲裁單元455、一L1快取記憶體460、一讀取資料解多工器465以及一全順序佇列(TOQ,total order queue)430。
該等SM分割區位於SM 310的該經線排程器與指令單元312之內。該等SM分割區排定並且派遣共用資源存取要求至LSU 303。如所示,SM分割區410包含一排程器412、一派遣單元414以及一重播指令緩衝區(RIB,replay instruction buffer)416。排程器412接收來自指令L1快取370的新指令,並且排定該等指令由SM 310執行。排程器412提交排定的指令給派遣單元414。
派遣單元414接收來自排程器412的排程指令,並且將該等指令轉送至SM 310內的該適當的功能單元來執行。在一指令包含一共用資源存取要求之處,例如載入或儲存資料至記憶體內的一要求,該派遣單元 將該等指令轉送至一LSU 303。在派遣這一指令至LSU 303之前,該派遣單元決定RIB 416內是否有可用的項目來分配給該指令。一RIB項目已建立用於任何共用資源存取要求,其在該要求執行期間可能需要至少一個重播操作。若有一可用的RIB項目,則該派遣單元儲存與RIB 416內該指令有關的資訊,並且將該指令派遣至LSU 303。若無可用的RIB項目,則在一RIB項目變成可用之前,派遣單元414停止指向LSU 303的待命指令串流。在這種情況下,仍舊允許完成執行已派遣指令的重播操作。一旦一指令已經執行完成,則撤回該對應RIB項目,並且該撤回的RIB項目可讓派遣單元414分配一新指令。如底下進一步描述,派遣單元414接收重播操作要求,並且要求從TOQ 430撤回RIB項目。此外,派遣單元414將寫入資料傳送至寫入資料多工器450,並且從讀取資料解多工器465接收讀取資料。
RIB 416儲存有關內含一共用資源存取要求的指令之資訊,這種要求可需要一或更多重播操作,以便完成執行。在LSU 303的一個執行循環內可完成一共用資源存取要求。不過在某些條件下,該存取要求無法完成執行,並且建立一或更多額外執行循環,稱為重播操作,以便完成該存取要求。這些條件包含但不受限於:存取要求跨越比LSU 303同時存取還要多的快取線、存取一結構內比該結構同時服務還要多的位置、存取目前由先前要求消耗的一結構或存取優先順序低於其他待命要求順序的要求。有關每一這種存取要求的資訊都儲存在一相關聯的RIB項目內。在後續重播操作期間已經取得該RIB項目並傳遞至LSU 303,幫助該重播操作的執行。該RIB項目可包含但不受限於該指令、該操作所需的常數值 以及該操作所需的暫存區範圍。吾人了解,可用RIB項目的最佳數量係以因素數為準,包含但不受限於需要一重播操作的條件發生頻率、針對一存取要求建立的重播操作之平均數量以及派遣單元414內的潛時。RIB 416將命令與位址傳送至AGU 420。
AGU 420位於LSU 303之內,每一AGU 420都與一對應SM分割區410相關聯。例如:AGU 420(0)與SM分割區410(0)相關聯,並且AGU 420(N)與SM分割區410(N)相關聯。AGU 420接收沿著信號路徑470來自RIB 416的命令與位址。在回應上,AGU 420沿著信號路徑472將AGU要求狀態傳送至TOQ 430。接著TOQ 430讀取該AGU要求狀態,以便決定該當前存取要求是否需要額外重播操作,或是否要撤回對應至該當前存取要求的該RIB項目。此外,AGU 420沿著信號路徑474將位址資訊傳送至位址多工器440。
位址多工器440從對應至該當前存取要求的AGU 420選擇一位址,並且將該選取的位址傳送至該L1快取320。每一AGU 420都產生一位址給該當前存取要求,如上述。位址多工器440沿著信號路徑474接收來自每一AGU 420的位址。位址多工器440也接收一控制信號(未顯示),識別選擇哪一個AGU 420用於該當前存取要求。若該控制信號識別AGU 420(0),則位址多工器440將AGU 420(0)產生的該位址傳送至L1快取320。若該控制信號識別AGU 420(N),則位址多工器440將AGU 420(N)產生的該位址傳送至L1快取320。
當該共用資源存取要求為將資料儲存至該共用資源的一要求時,寫入資料多工器450選擇來自派遣單元414並對應至該當前存取要 求的寫入資料,並且將該選取的寫入資料傳送至L1快取320。當該當前存取要求為一儲存操作時,SM分割區410內的每一派遣單元都產生寫入資料給該當前存取要求。寫入資料多工器450沿著信號路徑476接收來自每一派遣單元414的寫入資料。寫入資料多工器450也接收一控制信號(未顯示),識別選擇哪一個SM分割區410用於該當前儲存存取要求。若該控制信號識別SM分割區410(0),則寫入資料多工器450將SM分割區410(0)產生的該寫入資料傳送至L1快取320。若該控制信號識別SM分割區410(N),則寫入資料多工器450將SM分割區410(N)產生的該寫入資料傳送至L1快取320。
仲裁單元455接收來自SM分割區410以及其他用戶端的共用資源存取要求,並且將一選取的存取要求傳送給該共用資源進行服務,例如L1快取記憶體460。該仲裁接收位址多工器440選擇的該位址,以及來自其他用戶端要求存取至該共用資源的位址。仲裁單元455將與該選取存取要求相關聯的該位址繞送至L1快取記憶體460。類似地,針對將資料儲存在記憶體內的存取要求,仲裁單元455將與該選取存取要求相關聯的該寫入資料繞送至L1快取記憶體460。此外,仲裁單元455沿著信號路徑478將仲裁狀態資訊傳送至TOQ 430。
位於L1快取320內的L1快取記憶體460為可存取至SM分割區410和其他外部用戶端的一共用資源範例。L1快取記憶體460包含可存取至共用資源存取要求的記憶體位置,以便儲存或載入資料。L1快取記憶體460接收來自仲裁單元455的位址與控制信號。L1快取記憶體460接收與來自仲裁單元455的儲存存取要求相關聯之寫入資料,並且將與載 入存取要求相關聯的讀取資料傳送至讀取資料解多工器465。如底下進一步描述,L1快取記憶體460沿著信號路徑482將與L1快取要求相關聯的狀態,以及沿著路徑484將資源狀態傳送至TOQ 430。L1快取記憶體460沿著信號路徑486接收來自TOQ 430的保留計數。
當該共用資源存取要求為從該共用資源載入資料的一要求,讀取資料多工器465將來自L1快取記憶體460的讀取資料傳送至要求該載入存取要求的用戶端。該要求單元可為SM分割區410或另一個L1快取用戶端。讀取資料多工器465接收一控制信號(未顯示),識別選擇哪一個SM分割區410用於該當前載入存取要求。若該控制信號識別SM分割區410(0),則讀取資料多工器465將L1快取記憶體460產生的該讀取資料傳送至SM分割區410(0)。若該控制信號識別SM分割區410(N),則讀取資料多工器465將L1快取記憶體460產生的該讀取資料沿著信號路徑480傳送至SM分割區410(N)。
如結合第九圖內的進一步描述,TOQ 430設置成根據並未受阻等待一共用資源的該最舊存取要求,以公平並且避免優先權反轉的方式,選擇一重播操作來執行。如所示,TOQ 430包含一TOQ項目緩衝區432,設置成將對應至每一RIB項目的TOQ項目儲存在SM分割區410內。如結合第六A圖至第六B圖內進一步描述,當接收到一新存取要求並撤回該TOQ項目來完成該存取要求時,TOQ 430在TOQ項目緩衝區432內建立一TOQ項目。TOQ項目緩衝區432的大小係根據SM分割區410的數量以及每一RIB 416內RIB項目的數量。例如:在一SM 310包含「P」個SM分割區410,並且每一SM分割區410都包含一內含「B」個RIB項目的一 RIB 416之處,TOQ項目緩衝區432應包含PXB個RIB項目。如此,每一TOQ項目都與RIB 416內一對應項目配對。
TOQ項目緩衝區432內的每一TOQ項目都包含多個欄位,包含但不受限於該相關聯存取要求的年齡、起始該存取要求的SM分割區410或其他用戶端之識別、包含該重播操作資訊的該RIB之識別、與該存取要求相關聯的該共用資源以及該等資源的狀態、與該存取要求相關聯的喚醒條件。使用已知的技術可明確記錄一存取要求的年齡,例如透過一優先權法則、最近使用過或最近分配過方式。如結合第十圖的進一步描述,利用到達時間以及該共用資源存取要求在一儲存佇列,例如TOQ項目緩衝區432內的位置來暗示年齡,如結合第四圖至第五圖的描述。另外,利用到達時間以及與該共用資源存取要求相關聯的一重播操作在一儲存佇列,例如TOQ項目緩衝區432內的位置來暗示年齡。
在此可關於與該TOQ項目相關聯的該存取要求來描述一共用資源的狀態。如結合第八圖的進一步描述,利用更新一共用資源記錄在該對應TOQ項目內的狀態,該共用資源可分配給一存取要求。例如:一共用資源的狀態可指示該存取要求不需要該共用資源。在另一個範例中,該存取要求需要該共用資源,但是已經分配給該存取要求。在另一個範例中,該存取要求需要該共用資源,但是尚未分配給該存取要求。在另一個範例中,該共用資源可分成幾個部分,例如目前使用的快取線,成一集合時,代表一或更多快取線的群組,或一通道時,代表一已知集合內一特定快取線。仍舊在另一個範例中,該資源可受阻並且該集合或通道使用中。如結合第七圖的進一步描述,隨著該共用資源的狀態情況改變,可定期更新該 TOQ項目的該共用資源狀態欄位。
在所需資源尚未分配、已鎖定或使用中之處,TOQ 430決定該資源短缺是短期或過度狀態亦或是長期狀態。具備短期或過度資源衝突的存取要求則負責立即執行或在有限延遲之後執行。具備長期或不確定資源短缺的存取要求可進入睡眠狀態。如結合第十一圖的進一步描述,TOQ 430可在發生特定喚醒條件時喚醒睡眠中的存取要求。對應至睡眠狀態中一存取要求的該TOQ項目可指定一或更多這些喚醒條件,例如:該資源可用於分配、該資源已經解除鎖定或快取型資源的所需集合或通道不再使用。
正在睡眠的TOQ項目正在等待一或多個喚醒條件。符合喚醒條件時,TOQ 430可選擇喚醒單一睡眠中TOQ項目,或廣播一喚醒操作給多個睡眠項目。例如:在該資源為設置成一次傳第一個資料值的一先進先出(FIFO,first-in first-out)記憶體之處,TOQ 430應該喚醒等待該FIFO可用的單一TOQ項目。在另一個範例中,TOQ 430應該廣播一喚醒操作給等待相同快取線填入資料的多個TOQ項目。在這種情況下,該快取線為比能夠滿足進入睡眠而等待該快取線可用的所有TOQ項目還要多的一資源。在某些情況下,一TOQ項目可存在而不需要喚醒條件。這種TOQ項目有資格選擇用於立即重播操作,並且適合造成該共用資源衝突為過度或短期性質之情況。
在一個具體實施例內,於每一執行循環期間,TOQ 430選擇一或多個重播操作的最舊合適的存取要求。一合適的存取要求為已經分配所有必須資源並且已經滿足所有喚醒條件之要求。該睡眠狀態內的存取要求並不適合選取。TOQ 430根據針對該項目所發現的該全重播操作衝 擊、要求事先排定重播操作的次數以及要求隨選重播操作的次數。一衝擊包括與一特定共用資源存取要求相關聯的一或多個重播操作。
當一共用資源存取要求原本就派遣用於執行時,並且假設該要求並未由SM 310或仲裁單元455預先清空,該重播操作計數器(未顯示)設定為零,並且根據接收自AGU 420和L1快取記憶體460的該要求狀態,將該全衝擊發現計數器(未顯示)初始化。然後,若該存取要求因為該預先排程重播操作而未完成,則TOQ 430累積與隨選重播操作相關聯的衝擊。
吾人應該了解,TOQ 430容易受到僵持或活鎖情況的影響。一僵持發生,例如若兩個存取要求中的每一個都需要兩個共用資源,每一存取要求都分配給兩個資源之一者,並且每一存取要求都在等待其他資源變成可用的睡眠情況下。在這種情況下,沒有一個存取要求可獲得該額外資源,並且該等存取要求會永久留在睡眠狀態下。在另一個範例中,當一需求的資源變成可用時,一睡眠存取要求應該進入清醒狀慨,並且該資源應該指派給一第二存取要求。不過,該第二存取要求應該等待另一個資源,因此應該回到睡眠狀態。等待該共用資源的其他存取要求應該同樣進入清醒狀態,分配給與該共用資源相關聯的一埠,並且回到睡眠狀態。此程序會繼續到該共用資源的所有埠都由睡眠要求消耗,並且該共用資源無法用於任何現有存取要求。
當在一或多個存取要求需要該相同共用資源,並且至該共用資源的所有存取埠都已經分配給其他要求時,則可特別宣布僵持情況。這種共用資源可稱為稀缺資源。在一個具體實施例內,當供應稀少時,TOQ 430可具有一機制來管理資源。在一共用資源似乎是稀缺資源時,存取該稀缺 資源的優先權可給予現有較舊的TOQ項目以及任何相關聯預排程重播操作,而非與最近派遣存取要求相關聯的較年輕TOQ項目。在至少一個具體實施例內,若至少一個存取要求目前在等待該資源變成可用的睡眠狀態下,則可考慮一共用資源為稀缺資源。可變成稀缺的資源範例包含但不受限於一先進先出(FIFO)記憶體、一快取型記憶體內的特定集合與通道或快取型記憶體的特定集合內任何通道。一旦決定一共用資源為稀缺資源,則TOQ 430不會傳送廣播喚醒操作。當考慮一資源為稀缺時,TOQ 430可使用單一喚醒操作,而非一廣播喚醒操作,將該資源指派給一單獨存取要求。TOQ 430可使用該TOQ項目的年齡,在此該年齡可為TOQ項目緩衝區432內的該TOQ項目的位置,將該稀缺資源分配給一睡眠TOQ項目。一旦該指派的存取要求完成執行,則該稀缺資源變成可用,並且可指派給另一個存取要求。一旦一共用資源不再認定為稀缺,也就是無睡眠存取要求在等待該資源,則TOQ 430可恢復傳送與該資源相關聯的廣播喚醒操作。
在特定情況下,利用允許較舊TOQ項目所需但是目前已經分配給一較年輕TOQ項目的一共用資源,從該較年輕TOQ項目當中「偷」回,可解決僵持情況。若兩TOQ項目都需要多個資源,則兩項目都無法分配到所有需要的資源。在一個範例中,當許多情況隨著該存取要求的執行循環而演變,一存取要求所需的共用資源集合會隨時間推移。較舊的TOQ項目應需要兩個資源,識別為A和B,其中只有B已經分配給該存取要求。較舊的TOQ項目應該進入等待資源A的睡眠狀態。雖然較舊的TOQ項目在該睡眠狀態下,較年輕的TOQ項目應需要共用資源B和C,但是只分配到資源C。該較年輕資源可進入等待資源B的睡眠狀態。一旦清醒,該較 舊TOQ項目應發現該TOQ項目此時需要當前已經分配給該較年輕TOQ項目的資源C。該較舊TOQ項目與該較年輕TOQ項目都在等待已經分配給該其他TOQ項目的一共用資源之分配。一種解決這種僵持情況的方式為:允許該較舊TOQ項目從一較年輕TOQ項目「偷」該需要的共用資源。
在一個具體實施例內,TOQ 430可運用虛擬偷竊,在此即使並非所有需要資源都已經分配,該較舊TOQ項目可選取用於一或更多重播操作。在該重播操作執行期間,該相關聯存取要求可消耗保留給較年輕項目的資源。該資源保留可不綁定至該較年輕TOQ項目,如此該較舊項目可收集所有需要的資源讓進度往前。一旦該較舊TOQ項目進度往前,則該相關聯的存取要求可釋放所需資源,讓該共用資源可分配給較年輕TOQ項目。
在另一個具體實施例內,TOQ 430可運用實際偷竊,在此可從一特定TOQ項目偷取一特定資源,並分配給需要該資源的較舊TOQ項目。在這種情況下,該較年輕TOQ項目所需的資源之狀態可從已分配狀態改成未分配狀態,並且該等資源的狀態可轉換成一已分配狀態給該較舊TOQ項目。一旦該較舊TOQ項目的進度足夠,則該相關聯的要求釋放該已分配資源,讓該較年輕TOQ項目獲得所需資源。
在許多具體實施例內,發現一資源衝突時可立即觸發資源偷竊,或資源偷竊可在發現衝突之後延遲一固定或可變時間週期。資源偷竊可限制在最舊的TOQ項目,在此該最舊的TOQ項目偷竊所有需要、未分配的資源。在這種情況下,潛在消耗該最舊TOQ項目所需資源的所有其他存取要求都擱置到至少該最舊TOQ項目進度些微前進。
共用資源的許多設置都可考慮在本發明的範圍內。在一個具體實施例內,TOQ 430管理的某些存取要求可具有多個處理階段,在此每一階段可能需要的該等資源可變。在一個範例中,一存取要求包含應屬於不同位址空間的執行緒,在此一非一般記憶體階層的一快取等級部分滿足一個位址空間,並且由該一般記憶體階層內未含的一自洽式本機記憶體滿足另一個位址空間。在另一個具體實施例內,一存取要求可選擇相鄰記憶體位置內的一順序運算元,在此每一執行緒都可存取不同順序的運算元。
第五圖根據本發明的一個具體實施例,例示第四圖中該TOQ 430內的一TOQ項目老化單元500。如所示,TOQ項目老化單元500包含一要求狀態分配單元510、一資源狀態分配單元520、一TOQ項目緩衝區432、一保留項目計數器550以及一優先權選擇器560。
要求狀態分配單元510將有關共用資源存取要求的狀態分配給TOQ項目緩衝區432。要求狀態分配單元510接收沿著信號路徑472來自AGU 420的位址產生單元要求狀態、沿著信號路徑478來自仲裁單元455的仲裁狀態以及沿著信號路徑482來自L1快取記憶體460的L1快取要求狀態。然後要求狀態分配單元510將來自這三個單元的該要求狀態資訊傳送至TOQ項目緩衝區432內的每一TOQ項目單元540。接著該狀態資訊儲存在每一TOQ項目單元540之內的一適當位置內。
資源狀態分配單元520將有關共用資源的狀態分配給TOQ項目緩衝區432。資源狀態分配單元520接收沿著信號路徑484來自L1快取記憶體460的L1快取資源狀態。然後資源狀態分配單元520將該資源狀態資訊傳送至TOQ項目緩衝區432內的每一TOQ項目單元540。接著該狀 態資訊儲存在每一TOQ項目單元540之內的一適當位置內。
TOQ項目緩衝區432包含一TOQ項目單元540,用於每一SM分割區410之內的RIB 416中的每一項目。TOQ項目緩衝區432建立與接收自圖式左側上SM分割區410的新存取要求相關聯之TOQ項目。TOQ項目緩衝區432將TOQ項目單元540位移到右邊,當成該TOQ項目年齡。如所示,TOQ項目緩衝區432包含TOQ項目單元540以及TOQ多工器530。
TOQ多工器530選擇TOQ項目單元540是否循環TOQ項目緩衝區432的該當前狀態,或將TOQ項目單元540位移至右邊當成接收自SM分割區410的新存取要求。要循環TOQ項目單元540,TOQ多工器530沿著標示為580、584、588的信號路徑選擇該循環路徑。要位移TOQ項目單元540,TOQ多工器530沿著標示為582、586、590的信號路徑選擇該位移路徑。
TOQ項目單元540設置成儲存與接收自SM分割區的共用資源存取要求有關之資訊。TOQ項目單元540隨著分別來自要求狀態分配單元510與資源狀態分配單元520的要求狀態以及資源狀態改變而更新。一開始TOQ項目單元540和相關聯的TOQ多工器530都設置成循環。TOQ項目單元[0]的該當前狀態沿著信號路徑580循環、TOQ項目單元[1]的該當前狀態沿著信號路徑584循環並且TOQ項目單元[2]的該當前狀態沿著信號路徑588循環。當從該SM分割區接收一新存取要求時,TOQ項目單元[0]設置成接收並儲存沿著信號路徑582與該新存取要求相關聯的一TOQ項目。若TOQ項目單元[0]的該當前狀態指示一無效的TOQ項目,則循環剩餘的TOQ項目單元540。不過,若TOQ項目單元[0]標示成一有效的TOQ 項目,則該TOQ項目位移至下一個TOQ項目單元540。在這種情況下,TOQ項目單元[1]接收沿著信號路徑586儲存在TOQ項目單元[0]內的該TOQ項目。若TOQ項目單元[1]的該當前狀態指示一無效的TOQ項目,則循環剩餘的TOQ項目單元540。不過,若TOQ項目單元[1]標示成一有效的TOQ項目,則該TOQ項目位移至下一個TOQ項目單元540。在這種情況下,TOQ項目單元[2]接收沿著信號路徑590儲存在TOQ項目單元[1]內的該TOQ項目。該處理持續到發現一無效的(空白)TOQ項目單元540為止。
保留項目計數器550分析標記為有效的TOQ項目單元540,並且決定至少一個有效TOQ項目所需每一共用資源之保留計數。一已知資源的保留計數等於需要該資源並標記為有效的TOQ項目單元540之數量。保留項目計數器550將該等保留計數傳送給每一該等對應共用資源,例如L1快取記憶體460。
優先權選擇器560選擇要服務的一TOQ項目,其關聯於一已知SM分割區410內的一RIB 416。一般來說,優先權選擇器560選擇最右邊TOQ項目單元540內標記為有效,並且已經保留所有需要資源來完成執行的該TOQ項目。請注意,該選取的TOQ項目並不需要儲存在最右邊並且標記為有效的TOQ項目單元540內。如此,在有效TOQ項目單元540的群組中間內可能出現空TOQ項目單元540或孔洞。這些孔洞可填入接收自SM分割區410的新存取要求。優先權選擇器560傳送RIB讀取要求,並且要求將RIB項目撤退至SM分割區410。
請注意,可運用替代技術移動TOQ項目的區塊,而非使用上述的位移暫存器方式。此外,關聯於TOQ項目的靜態資訊,例如未直接 關於睡眠與喚醒條件的欄位,可儲存在TOQ項目單元540內,或例如靜態記憶體這類個別記憶體結構內。
第六A圖和第六B圖根據本發明的一個具體實施例,揭示用於新增共用資源存取要求至一全順序佇列430的方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法600從步驟602開始,在此TOQ 430接收與一共用資源相關聯的一存取要求。在步驟604上,TOQ 430決定該存取要求是否為一重播操作要求。若該存取要求並非一重播操作要求,則該存取要求為一新要求,並且方法600前往步驟606,在此TOQ 430遞增該存取要求所需的每一共用資源的保留計數。在步驟608上,TOQ 430決定該存取要求所需的該共用資源是否可分配給多個要求。若該共用資源可分配,則方法600前往步驟610,在此TOQ 430遞減該存取要求所需的每一共用資源的該保留計數。
在步驟612上,TOQ 430決定該存取要求是否準備完成。若無剩餘工作要完成該要求,並且L1快取320已經接受該要求,則該存取要求準備完成。若該存取要求準備完成,則方法600前往步驟614,在此TOQ 430完成該要求。然後存取對應至該TOQ項目的該RIB項目,以完成該要求。該RIB項目包含與該存取要求相關聯,用於完成一或多個重播操作的執行資訊。在步驟616上,TOQ 430撤回與該存取要求相關聯的TOQ和RIB項目,若有的話。然後方法600終止。
此時回到步驟604,若該存取要求為一重播操作要求,則方 法600前往步驟622,在此TOQ 430決定與該存取要求相關聯的該TOQ項目是否指出每一所需共用資源都可用或先前已經保留。若每一所需共用資源都可用或已經保留,則方法600返回步驟610,如上述。在步驟622上,若至少一個所需共用資源不可用或未保留,則方法600前往步驟624,在此TOQ 430決定是否可從另一個存取要求偷取不可用或先前未保留的該共用資源。若可偷取該共用資源,則方法600返回步驟610,如上述。若無法偷取該共用資源,則方法600前往步驟626,在此TOQ 430保留該存取要求所需的共用資源並維持可用。TOQ 430用此資訊更新該TOQ項目。在步驟628上,TOQ 430讓該TOQ項目進入睡眠。然後方法600終止。
此時回到步驟608,若該等存取要求所需的一或多個共用資源無法分配,則方法600前往步驟630,在此TOQ 430將一TOQ項目分配給此存取要求。在這種情況下,會延遲服務該存取要求。在步驟632上,TOQ 430決定該存取要求是否錯失任何長期資源。若該存取要求錯失任何長期資源,則方法600返回步驟626,如上述。若該存取要求並未錯失任何長期資源,則方法600前往步驟634,在此TOQ 430將與該存取要求相關聯的該TOQ項目標記為可重播。然後方法600終止。
此時回到步驟612,若該存取要求無法完成,則方法600前往步驟618,在此TOQ 430完成該存取要求的一個衝擊。一衝擊包含與一特定共用資源存取要求相關聯的一或多個重播操作。然後存取對應至該TOQ項目的該RIB項目,以完成該要求。該RIB項目包含與該存取要求相關聯,用於完成該衝擊內含的一或多個重播操作之執行資訊。在步驟620上,TOQ 430維持與該存取要求相關聯的TOQ和RIB項目,若有的話。然 後方法600終止。
一旦已經建立一TOQ項目給一相關聯共用資源存取要求,則TOQ 430可更新該TOQ項目當成該TOQ項目變更所需共用資源的狀態。
第七圖為根據本發明的一個具體實施例,用於更新一共用資源狀態的方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法700從步驟702開始,在此TOQ 430接收一或多個TOQ項目所需之一共用資源的已更新狀態。在步驟704上,TOQ 430決定該狀態更新是否表示該共用資源可用。若該共用資源不可用,則終止方法700。
不過,若該共用資源可用,則方法700前往步驟706,在此TOQ 430計算最高編號TOQ項目的該TOQ索引,在此一較高編號TOQ項目代表比一較低編號TOQ項目還要舊的存取要求。在步驟708上,TOQ 430決定該索引所參照的該TOQ項目是否為一有效TOQ項目。若該相關聯存取要求已經完成並且接著已經撤回該TOQ項目,則該TOQ項目無效。若該TOQ項目無效,則方法700前往步驟710,在此TOQ 430遞減該索引。在步驟712上,TOQ 430決定該索引是否大於或等於零。若該索引並未大於或等於零,則表示已經掃描整個TOQ,並且方法700終止。
在步驟712上,若該索引大於或等於零,則方法700返回步驟708,如上述。在步驟708上,若該TOQ項目有效,則方法700前往步驟714,在此TOQ 430決定該索引參照的該TOQ項目是否需要狀態已經改 變的共用資源。若該TOQ項目不需要該資源,則方法700返回步驟710,如上述。不過若該TOQ項目需要該資源,則方法700前往步驟716,在此TOQ 430將該資源標記為分配給與該索引相關聯的該TOQ項目。在步驟718上,TOQ 430決定該共用資源是否仍舊可用。若該共用資源仍舊可用,則方法700返回步驟710,如上述。在這種情況下,在該先前分配之後該共用資源仍舊可用,並且仍舊可分配給其他TOQ項目。若該共用資源不再可用,則終止方法700。
如上面關聯於第六A圖至第六B圖所述,TOQ項目可進入一或多個所需共用資源的睡眠等待可用性。一旦該所需共用資源變成可用,則TOQ 430喚醒該TOQ項目,讓該TOQ項目進入啟用狀態,如此該相關聯的存取要求可繼續執行。
第八圖為根據本發明的一個具體實施例,用於將一共用資源分配給與一共用資源存取要求相關聯的一TOQ項目之方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法800開始於步驟802,在此TOQ 430決定與一特定索引相關聯的該TOQ項目是否為一有效TOQ項目。若該相關聯存取要求已經完成並且接著已經撤回該TOQ項目,則該TOQ項目無效。若該TOQ項目無效,則終止方法800。
若該TOQ項目有效,則方法800前往步驟804,在此TOQ 430接收該TOQ項目所需共用資源的一更新狀態。在步驟806上,TOQ 430 決定該共用資源的狀態是否等於「不需要」,在此「不需要」表示該TOQ項目不需要該共用資源。在這種情況下,不需要變更該TOQ項目。方法800前往步驟816,在此TOQ 430決定該TOQ項目是否等待額外資源。若該TOQ項目不等待其他資源,則終止方法800。若該TOQ項目等待其他資源,則方法800返回步驟804,如上述。
此時回到步驟806,若該共用資源的狀態不等於「不需要」,則方法800前往步驟808,在此TOQ 430決定該共用資源的狀態是否等於「需要並已分配」。「需要並已分配」狀態表示該TOQ項目需要該共用資源,並且已經分配給該TOQ項目。在這種情況下,不需要變更該TOQ項目。方法800前往步驟816,如上述。
此時回到步驟808,若該共用資源的狀態不等於「需要並已分配」,則方法800前往步驟810,在此TOQ 430決定該共用資源的狀態是否等於「集合/通道使用中並已鎖定」。「集合/通道使用中並已鎖定」狀態表示該TOQ項目已經進入睡眠,因為該TOQ項目需要該共用資源,但是該共用資源的該所需集合或通道已經使用,並且該資源已經鎖定。在這種情況下,方法800前往步驟818,在此TOQ 430決定該資源目前是否未鎖定。若該資源鎖定,則方法800前往步驟816,如上述。若該資源未鎖定,則方法800前往步驟820,在此TOQ 430決定該共用資源的該集合與通道此時是否可用。若該集合與通道不可用,則方法800前往步驟816,如上述。若該集合與通道可用,則方法800前往步驟822,在此TOQ 430決定該資源是否可用。若該資源不可用,則方法800前往步驟816,如上述。若該資源可用,則方法800前往步驟824,在此TOQ 430將該資源的狀態設定為「需 要並已分配」,表示此時該共用資源已經分配給該索引所參照的該TOQ項目。然後方法800前往步驟816,如上述。
此時回到步驟810,若該共用資源的狀態不等於「集合/通道使用中並已鎖定」,則方法800前往步驟812,在此TOQ 430決定該共用資源的狀態是否等於「集合/通道使用中」。「集合/通道使用中」狀態表示該TOQ項目已經進入睡眠,因為該TOQ項目需要該共用資源,但是該共用資源的該所需集合或通道已經使用。在這種情況下,方法800前往步驟820,如上述,決定該資源以及該集合和通道目前是否可用。
此時回到步驟812,若該共用資源的狀態不等於「集合/通道使用中」,則方法800前往步驟814,在此TOQ 430決定該共用資源的狀態是否等於「需要但不可用」。「需要但不可用」狀態表示該TOQ項目已經進入睡眠,因為該TOQ需要該共用資源,但是該資源不可用。在這種情況下,方法800前往步驟822,如上述,決定該資源目前是否可用。
此時回到步驟814,若該共用資源的狀態不等於「需要但不可用」,則方法800前往步驟816,如上述。
一旦一TOQ清醒並且啟用,則TOQ 430可選擇該TOQ用於一或多個重播操作,以便該相關聯的存取要求可恢復執行。
第九圖為根據本發明的一個具體實施例,用於在一全順序佇列(TOQ)430內選擇一共用資源存取要求來服務之方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法900從步驟902開始,在此TOQ 430起始一 索引,指向SM 310內的一第一分割區。在步驟904上,TOQ 430計算該最高編號TOQ項目的該TOQ索引。在步驟906上,TOQ 430決定該TOQ索引所參照的該TOQ項目是否為一有效TOQ項目,並且決定該分割區索引所參照的該分割區是否為一有效分割區。若該相關聯存取要求已經完成並且接著已經撤回該TOQ項目,則該TOQ項目無效。若已經識別一分割區來執行與該TOQ項目相關聯的該存取要求,則該分割區有效。若該TOQ項目或該分割區無效,則方法900前往步驟908,在此TOQ 430遞減該索引。在步驟910上,TOQ 430決定該索引是否大於或等於零。若該索引大於或等於零,則方法900返回步驟908,如上述。
若該索引並未大於或等於零,則表示已經掃描整個TOQ,並且方法900前往步驟916,在此TOQ 430遞增該分割區索引。在步驟918上,TOQ 430決定該分割區索引是否小於分割區的編號P。若該分割區索引小於P,則方法900返回步驟904,如上述。若該分割區索引不小於P,則表示已經掃描整組SM分割區,並且方法900前往步驟920,在此TOQ 430將任何發現的重播操作要求傳送至個別SM分割區。然後方法900終止。
此時回到步驟906,若該TOQ項目與分割區都有效,則方法900前往步驟912,在此TOQ 430決定該TOQ項目是否都不需要每一共用資源,或需要該共用資源並且已經分配給該TOQ項目。若並非所有需要的資源都已經分配給該TOQ項目,則方法900返回步驟908,如上述。若所有所需資源都已經分配給該TOQ項目,則方法900前往步驟914,在此TOQ 430選擇該已識別分割區之內的一重播指令緩衝區來執行該存取要求。然後方法900前往步驟916,如上述。
第十圖為根據本發明的一個具體實施例,用於將一TOQ項目緩衝區432內的TOQ項目老化的方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1000從步驟1002開始,在此TOQ 430接收一新共用資源存取要求。在步驟1004上,TOQ 430建立並儲存對應至TOQ項目緩衝區432內的該存取要求的一TOQ項目,在此該TOQ緩衝區內的項目都以暫時順序儲存。暫時順序可有任何技術上有用的方式來決定,包含但不受限於透過一優先權法則、最近使用過或最近分配方式、該TOQ項目緩衝區432內該共用資源存取要求的到達時間與位置,或由與該TOQ項目緩衝區432內該共用資源存取要求相關聯的一重播操作之到達時間與位置。對應至該新存取要求的該TOQ項目可佔用TOQ項目緩衝區432內對應至該緩衝區內最新位置的該位置。在TOQ項目緩衝區432內每一TOQ項目都位移一個位置,直到在TOQ項目緩衝區432內發現一個空位。該空位填入一現有TOQ項目。該空位可為TOQ項目緩衝區432內該最舊的有效TOQ項目。另外,該空位可為「泡泡」,在此較新的有效TOQ項目存在於該空位一側上,並且較舊的有效TOQ項目存在於該空位的另一側上。在此情況下,填滿該空位就是填滿TOQ項目緩衝區432之內的該「泡泡」。
在步驟1006上,TOQ 430決定該存取要求所需的一第一共用資源是否可分配。若該第一共用資源不可用,則該TOQ等待到該資源變成可用。在步驟1006上,若該第一共用資源可用,則方法1000前往步驟1008,在此TOQ 430搜尋TOQ項目緩衝區432,找出對應至等待該第一共 用資源的存取要求之TOQ項目子集。在步驟1010上,TOQ 430識別TOQ項目子集內的該TOQ項目,在此所有所需共用資源,包含該第一共用資源,都可用。
在步驟1012上,TOQ 430讀取TOQ項目子集內該TOQ項目緩衝區的最舊項目,在此所有所需共用資源,包含該第一共用資源,都可用。此TOQ項目可或可不為TOQ項目緩衝區432內該最舊的有效TOQ項目。在步驟1014上,TOQ 430導致一RIB項目,對應至步驟1012內的該TOQ項目,讀入該處理管線內,以便執行該存取要求的一或多個循環。在步驟1016上,TOQ 430決定是否需要額外循環,以便完成該存取要求。若不需要額外循環,則方法1000前往步驟1018,在此TOQ 430撤回對應至該存取要求的該TOQ項目。TOQ 430也可導致撤回該對應RIB項目。若已撤回的該TOQ項目並非TOQ項目緩衝區432內之該最新有效要求,則可在TOQ項目緩衝區432內建立一「孔洞」或「泡泡」,如此有效的TOQ項目存在於該泡泡的兩側。然後方法1000終止。
在步驟1016上若需要額外循環,則方法1000前往步驟1020,在此TOQ 430維持對應至該存取要求的該TOQ項目。TOQ 430也可導致維持該對應RIB項目。然後方法1000終止。
第十一圖為根據本發明的一個具體實施例,用於將與一共用資源存取要求相關聯的一TOQ項目從一睡眠狀態轉換成一啟用狀態之方法步驟流程圖。雖然已經結合第一圖至第五圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1100從步驟1102開始,在此TOQ 430決定一共用資源現在可分配給存取要求。在步驟1104上,TOQ 430決定TOQ項目緩衝區432內的一TOQ項目是否在睡眠狀態內,在此當該共用資源可用時,滿足該TOQ項目的喚醒條件。若無TOQ項目正在等待該共用資源,則終止方法1100。
在步驟1104上若一或多個TOQ項目正在等待該共用資源,則該方法前往步驟1106,在此TOQ 430發出一喚醒操作。該喚醒操作可當成單一喚醒操作,發出至一特定TOQ項目。另外,該喚醒操作可廣播至多個等待該共用資源的TOQ項目。在步驟1108上,TOQ 430決定在步驟1106內接收該喚醒的該TOQ項目是否正在等待仍舊不可用的其他共用資源。若該TOQ項目並未等待其他不可用的資源,則方法1100前往步驟1110,在此TOQ 430允許執行該存取要求的一或多個循環。然後方法1100終止。
在步驟1108上若該TOQ項目正在等待其他不可用的資源,則方法1100前往步驟1112,在此TOQ 430決定該不可用的資源在短期或瞬間之內是否不可用。若該資源短期上不可用,則方法1100前往步驟1110,如上述。若該資源長期不可用,則方法1100前往步驟1114,在此TOQ 430決定是否從另一個TOQ項目偷取該不可用的資源。若無法偷取該不可用的資源,則方法前往步驟1116,在此TOQ 430讓該TOQ項目回到睡眠狀態。然後方法1100終止。
在步驟1114上若該不可用的資源已經遭竊,則方法1100前往步驟1118,在此TOQ 430從其他TOQ項目偷取該不可用的資源。TOQ 430可透過實際偷取或虛擬偷取來偷該資源,如上面結合第四圖所描述。在一 個範例中,只有在預定時間經過之後才能偷取該不可用的資源。在另一個範例中,只有該最舊的有效TOQ項目適合從其他TOQ項目偷取資源。然後方法1100前往步驟1110,如上述。
吾人將了解,本文中顯示的該架構僅為例示,所以可進行改變與修改。例如本說明書內描述的架構呈現在串流多重處理器310的載入儲存單元303之範疇內,但是也可運用在存取共用資源的任何處理單元內,包含但不限制於中央處理單元(CPU,central processing unit)、通用處理單元(GPU,general processing unit)或任何其他技術可行的計算環境內。仍舊在另一個範例中,每一RIB 416並不需要具有一致的項目數量,如此在TOQ 430上設置成追蹤每一RIB 416內的該等項目。在另一個範例中,該等技術描述於多重SM分割區410以及競爭一共用執行單元的其他用戶端之範圍內。不過,在本發明技術範圍內可支援其他組態,包含但不受限於單一用戶端存取多重執行單元,或多重用戶端存取多重執行單元。任何技術可行的方式都可服務該等許多用戶端,包含但不受限於旋轉時間片段順序、優先權型方式或動態載入。仍舊在另一個範例中,該揭示的TOQ 430描述於中央控制單元服務多重SM分割區410以及用於一共用執行單元的其他要求來源之範圍內。另外,可運用非中央控制,在此每一SM分割區410和用戶端可管理一個別子TOQ,其中每一要求的年齡都相對於每一子TOQ。在這種情況下,可利用一全體老化機制來選擇喚醒操作。
本文內描述的該技術係以共用資源存取操作來說明,例如載入與儲存存取要求通過多重執行緒,其中該等執行緒透過分散的快取線存取記憶體位置。該等技術具有充分彈性,可運用於存在共用資源存取要求 的其他應用當中。在一個範例中,本文內描述的該等技術並不受限於執行緒的執行,而是可運用於透過存取共用資源的多功能處理單元來進行之任何操作。在另一範例中,一指令可分散通過一快取內快取線以外的一共用資源。這種資源可包含但不受限於快取標籤、快取資料、暫存列以及共享的記憶體。執行該共用資源存取要求的該等執行緒可存取該共用資源的不同態樣或部分,例如一快取記憶體內不同的集合或一快取集合內不同的通道。仍舊在另一範例中,LSU 303可在任何已知操作期間擷取多個共用資源,例如多條快取線。仍舊在另一個範例中,一已知的共用資源同時可具有一個以上的存取埠,當所有可用的存取埠都由其他要求者消耗時則拒絕存取。
精通技術人士將了解,本說明書中描述的該共用資源組態僅為例示,可進行改變與修改。例如:雖然本說明書內描述某些共用資源具有一集合與一通道,通常在一集合關聯快取內,不過在所描述技術的範圍內可運用其他共用資源組態,包含但不受限於任何組合之下的直接映射快取(通常每集合具有一個通道)、全關聯快取(通常具有一個集合)以及分段快取。在分段快取內,由一集合與一通道表示的一快取線應該進一步分成段落。在這種組態中,除了依照集合和通道追蹤以外,TOQ 430應依照段落追蹤共用資源用量。在另一個範例中,可運用許多快取線置換政策,包含但不受限於最近已用(LRU,least recently used)以及最近已分配(LRA,least recently allocated)方式。
總結來說,所揭示技術提供一種最佳方式,在關於重播操作的共用資源存取要求排程方面維持公平與秩序。尤其是,一串流多重處理 器(SM)310包含一全順序佇列(TOQ)430,設置成針對在單一執行循環內未完成的存取要求,排定一或多個重播操作之上的該存取要求。若所有共用資源都已經分配給該存取要求或者可用,則允許該存取要求執行一或多個重播操作。若該存取要求等待至少一個長期資源,則TOQ 430將該存取要求放入睡眠狀態,等待該資源變成可用。當一需要的資源變成可用,則與該存取要求相關聯的該TOQ項目會進入清醒狀態。根據該存取要求的年齡以及共用資源的狀態,賦予存取要求優先權。當二或多個存取要求僵持在等待相同資源時,則該TOQ允許較舊的存取要求從該較年輕的資源要求偷取資源,如此每一存取要求都可完成執行。
這樣的優點為較新的存取要求不會重複阻擋較舊的共用資源存取要求之前進進度。利用將該共用資源分配至一現有較舊存取要求優先於該新存取要求,可避免優先權反轉。因為該睡眠狀態內的存取要求不會主動完成共用資源,因此可更有效運用SM 310的資源。此外,允許較舊TOQ項目偷取分配給一較年輕項目的資源,如此與該較舊項目相關聯的該存取要求可以完成執行,接著與該較年輕項目相關聯的該存取要求可完成,如此避免僵持與活鎖。進一步,即使所需共用資源的集合在執行期間變更,一樣可維持排程存取要求內的公平與秩序。
雖然上述指向本發明的具體實施例,不過可想出不背離本發明基本領域以及底下申請專利範圍領域的其他與進一步具體實施例。
410‧‧‧串流多重處理器分割區
420‧‧‧位址產生單元
432‧‧‧全順序佇列項目緩衝區
455‧‧‧仲裁單元
460‧‧‧第一層快取記憶體
500‧‧‧全順序佇列項目老化單元
510‧‧‧要求狀態分配單元
520‧‧‧資源狀態分配單元
530‧‧‧全順序佇列多工器
540‧‧‧全順序佇列項目單元
550‧‧‧保留項目計數器
560‧‧‧優先權選擇器
588‧‧‧信號路徑
590‧‧‧信號路徑
580‧‧‧信號路徑
582‧‧‧信號路徑
584‧‧‧信號路徑
586‧‧‧信號路徑

Claims (9)

  1. 一種用於管理要求共用資源之子系統,包括:一處理管線;以及一全順序佇列(TOQ)係耦接於該處理管線,其設置成執行以下步驟:接收對於一第一共用資源的一第一要求;接收對於一第二共用資源的一第二要求;決定該第一共用資源與該第二共用資源無法分配;作為回應,延遲服務該第一要求與該第二要求;導致在一重播緩衝區內建立一第一項目,其中該重播緩衝區內的該第一項目包含與該第一要求相關聯的執行資訊,用於與該第一要求相關聯的重播操作;在延遲服務該第一要求之後,接收該第一共用資源的一第三要求;在延遲服務該第二要求之後,接收該第二共用資源的一第四要求;在接收該第三要求之後,決定該第一共用資源變成可分配;在接收該第四要求之後,決定該第二共用資源變成可分配;讓該第一共用資源可用於該第三要求之前,讓該第一共用資源可用於該第一要求;以及讓該第二共用資源可用於該第四要求之前,讓該第二共用資源可用於該第二要求。
  2. 如申請專利範圍第1項之子系統,其中該第一項目包括一欄位來追蹤該第一要求的年齡,其中該第一項目指出該第一要求關聯於至少該第一 共用資源。
  3. 如申請專利範圍第2項之子系統,其中該TOQ另設置成執行以下步驟,在接收該第二要求時,搜尋該重播緩衝區是否有對應至與該第一共用資源相關聯的一要求之任何項目。
  4. 如申請專利範圍第3項之子系統,其中該TOQ另設置成執行以下步驟,透過該第一項目識別該第一要求關聯於該第一共用資源,並且在回應上,決定應該在該第二要求之前服務該第一要求。
  5. 如申請專利範圍第2項之子系統,其中該TOQ另設置成執行在該重播緩衝區內建立一第二項目給該第二要求,來追蹤該第二要求的年齡的一步驟,其中該第二項目指出該第二要求關聯於至少該第一共用資源。
  6. 如申請專利範圍第5項之子系統,其中該TOQ另設置成執行以下步驟,在決定該第一共用資源可用時,搜尋該重播緩衝區是否有對應至與該第一共用資源相關聯的一要求之任何項目。
  7. 如申請專利範圍第6項之子系統,其中該TOQ另設置成執行以下步驟,透過該第一項目和該第二項目識別該第一要求和該第二要求關聯於該第一共用資源,並且該第一要求比該第二要求老舊,並且在回應上,決定應該在該第二要求之前服務該第一要求。
  8. 如申請專利範圍第2項之子系統,其中該第一項目另包含指出該第一共用資源狀態的資訊,並且該第一共用資源狀態為,該第一要求需要該第一共用資源,但是並未分配給該第一要求,或該第一共用資源已鎖定並且無法用於該第一要求。
  9. 一種計算裝置,其包括:一處理器;以及一全順序佇列(TOQ)係耦接於該處理器,其設置利用執行以下步驟,管理關聯於該處理器的一處理管線內共用資源的要求:接收對於一第一共用資源的一第一要求;接收對於一第二共用資源的一第二要求;決定該第一共用資源與該第二共用資源無法分配;作為回應,延遲服務該第一要求與該第二要求;導致在一重播緩衝區內建立一第一項目,其中該重播緩衝區內的該第一項目包含與該第一要求相關聯的執行資訊,用於與該第一要求相關聯的重播操作;在延遲服務該第一要求之後,接收該第一共用資源的一第三要求;在延遲服務該第二要求之後,接收該第二共用資源的一第四要求;在接收該第三要求之後,決定該第一共用資源變成可分配;在接收該第四要求之後,決定該第二共用資源變成可分配;讓該第一共用資源可用於該第三要求之前,讓該第一共用資源可用於該第一要求;以及讓該第二共用資源可用於該第四要求之前,讓該第二共用資源可用於該第二要求。
TW102117869A 2012-05-21 2013-05-21 維持公平和秩序的資源管理子系統 TWI509519B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/476,791 US9836325B2 (en) 2012-05-21 2012-05-21 Resource management subsystem that maintains fairness and order

Publications (2)

Publication Number Publication Date
TW201401173A TW201401173A (zh) 2014-01-01
TWI509519B true TWI509519B (zh) 2015-11-21

Family

ID=49511181

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102117869A TWI509519B (zh) 2012-05-21 2013-05-21 維持公平和秩序的資源管理子系統

Country Status (4)

Country Link
US (1) US9836325B2 (zh)
CN (1) CN103559088A (zh)
DE (1) DE102013209350B4 (zh)
TW (1) TWI509519B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097433A1 (en) * 2011-10-18 2013-04-18 Stec, Inc. Systems and methods for dynamic resource management in solid state drive system
US10152329B2 (en) * 2012-02-09 2018-12-11 Nvidia Corporation Pre-scheduled replays of divergent operations
US9575804B2 (en) * 2015-03-27 2017-02-21 Commvault Systems, Inc. Job management and resource allocation
CN104809078B (zh) * 2015-04-14 2019-05-14 苏州中晟宏芯信息科技有限公司 基于退出退让机制的共享高速缓存硬件资源访问方法
CN106326187B (zh) * 2015-06-18 2019-11-22 大唐半导体设计有限公司 一种共用资源仲裁方法和装置
US10394713B2 (en) 2016-05-26 2019-08-27 International Business Machines Corporation Selecting resources to make available in local queues for processors to use
CN113687941A (zh) * 2016-06-13 2021-11-23 阿里巴巴集团控股有限公司 一种基于优先级的资源分配方法、装置和设备
US10504270B2 (en) * 2016-12-22 2019-12-10 Apple Inc. Resource synchronization for graphics processing
US10324844B2 (en) 2016-12-22 2019-06-18 Apple Inc. Memory consistency in graphics memory hierarchy with relaxed ordering
US10445852B2 (en) 2016-12-22 2019-10-15 Apple Inc. Local image blocks for graphics processing
US10783011B2 (en) 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
US10929139B2 (en) * 2018-09-27 2021-02-23 Qualcomm Incorporated Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices
US10970132B2 (en) * 2019-03-19 2021-04-06 International Business Machines Corporation Deadlock resolution between distributed processes
US10831563B2 (en) * 2019-03-19 2020-11-10 International Business Machines Corporation Deadlock resolution between distributed processes using process and aggregated information
WO2020220225A1 (zh) * 2019-04-29 2020-11-05 华为技术有限公司 资源获取方法、相关装置及计算机存储介质
CN113810479B (zh) * 2021-08-31 2023-11-07 山石网科通信技术股份有限公司 服务协调系统以及服务协调方法
US11853212B2 (en) 2022-04-05 2023-12-26 International Business Machines Corporation Preemptive tracking of remote requests for decentralized hot cache line fairness tracking
US11907125B2 (en) * 2022-04-05 2024-02-20 International Business Machines Corporation Hot line fairness mechanism favoring software forward progress

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974523A (en) * 1994-08-19 1999-10-26 Intel Corporation Mechanism for efficiently overlapping multiple operand types in a microprocessor
US20040153763A1 (en) * 1997-12-19 2004-08-05 Grochowski Edward T. Replay mechanism for correcting soft errors
US20040216112A1 (en) * 2003-04-23 2004-10-28 International Business Machines Corporation System and method for thread prioritization during lock processing
US20050091656A1 (en) * 1997-03-14 2005-04-28 International Business Machines Corporation Stationary queue for scarce resource management

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2650965B2 (ja) * 1988-05-27 1997-09-10 株式会社日立製作所 計算機システムおよびそのタスクスケジュール方法
US5790851A (en) * 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
US7398518B2 (en) * 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
US7689998B1 (en) 2004-07-13 2010-03-30 Microsoft Corporation Systems and methods that manage processing resources
GB0504987D0 (en) 2005-03-10 2005-04-20 Level 5 Networks Ltd Memory access
CN100544245C (zh) * 2006-02-10 2009-09-23 中兴通讯股份有限公司 一种基于重传次数的harq协议的重传调度方法
US20070255897A1 (en) * 2006-04-26 2007-11-01 Mcnutt Bruce Apparatus, system, and method for facilitating physical disk request scheduling
US8365015B1 (en) * 2010-08-09 2013-01-29 Nvidia Corporation Memory-based error recovery

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974523A (en) * 1994-08-19 1999-10-26 Intel Corporation Mechanism for efficiently overlapping multiple operand types in a microprocessor
US20050091656A1 (en) * 1997-03-14 2005-04-28 International Business Machines Corporation Stationary queue for scarce resource management
US20040153763A1 (en) * 1997-12-19 2004-08-05 Grochowski Edward T. Replay mechanism for correcting soft errors
US20040216112A1 (en) * 2003-04-23 2004-10-28 International Business Machines Corporation System and method for thread prioritization during lock processing

Also Published As

Publication number Publication date
US20130311999A1 (en) 2013-11-21
DE102013209350B4 (de) 2023-11-30
US9836325B2 (en) 2017-12-05
DE102013209350A1 (de) 2013-11-21
CN103559088A (zh) 2014-02-05
TW201401173A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
TWI509519B (zh) 維持公平和秩序的資源管理子系統
US9755994B2 (en) Mechanism for tracking age of common resource requests within a resource management subsystem
US10095548B2 (en) Mechanism for waking common resource requests within a resource management subsystem
TWI475386B (zh) 有記憶體分配限制的協同處理器的虛擬記憶體結構
TWI512630B (zh) 索引屏障的硬體排程之系統及方法
TWI531974B (zh) 管理巢狀執行串流的方法和系統
US9639466B2 (en) Control mechanism for fine-tuned cache to backing-store synchronization
US9542227B2 (en) Parallel dynamic memory allocation using a lock-free FIFO
TWI490779B (zh) 無鎖的先進先出裝置
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
TWI588653B (zh) 針對記憶體存取的動態記憶列模式定址
US8984183B2 (en) Signaling, ordering, and execution of dynamically generated tasks in a processing system
US20130198760A1 (en) Automatic dependent task launch
US9069609B2 (en) Scheduling and execution of compute tasks
US9507638B2 (en) Compute work distribution reference counters
US8930636B2 (en) Relaxed coherency between different caches
TW201435734A (zh) 條件阻擋以及急性阻擋的硬體排程之系統及方法
US9417881B2 (en) Parallel dynamic memory allocation using a lock-free pop-only FIFO
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
TW201351276A (zh) 計算工作的排程和執行
TW201337767A (zh) 多頻時間切面組
US9262348B2 (en) Memory bandwidth reallocation for isochronous traffic
TW201342229A (zh) 分散操作的批次重播