TWI423162B - 在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 - Google Patents
在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 Download PDFInfo
- Publication number
- TWI423162B TWI423162B TW099110703A TW99110703A TWI423162B TW I423162 B TWI423162 B TW I423162B TW 099110703 A TW099110703 A TW 099110703A TW 99110703 A TW99110703 A TW 99110703A TW I423162 B TWI423162 B TW I423162B
- Authority
- TW
- Taiwan
- Prior art keywords
- texture
- unit
- thread
- request
- pipeline
- 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
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Advance Control (AREA)
Description
本發明具體實施例一般有關繪圖處理單元(GPU)上的指令處理。
隨著電腦系統的進展,繪圖處理單元(GPU)也越來越進步。例如,GPU包括多個執行單元,且為了確保GPU整體高效能,使執行單元維持忙碌成為越來越重要的工作。
GPU通常包括紋理單元,以實行紋理化操作。紋理單元需要存取記憶體中儲存的紋理資料,以實行紋理操作。相對於GPU執行單元的速度,記憶體存取通常花費相對較長時間。對應地,在給定時間內核發若干紋理請求。在一些習用的GPU中,每個紋理請求指定一暫存器以獲得參數,因而相同的暫存器通常也用於紋理操作結果。
可惜的是,對於紋理管線可在運行中的所有紋理操作,暫存器檔案(register file)儲存器相當於大量的記憶體儲存器。儲存上的限制因而對可以核發的請求的數量造成限制,且因此對一次可處理的像素造成限制。一個解決方案是將紋理操作結果寫回含有紋理請求的儲存位置。然而,此解決方案仍然留有分配給紋理請求的儲存結果空間,也就是說,在任何給定時間內可在管線中處理的像素的數量受到限制,而無法使執行單元保持忙碌,因而影響GPU整體效能。
另一個解決方案是讓每個執行緒具有多個未完成的紋理請求,因為這表示需要較少執行緒以涵蓋紋理等待時間。可惜的是,每個執行緒也需要更多暫存器,才能應付同時儲存中間結果。這增加了所需要的暫存器檔案大小。有利的是每個執行緒能夠核發多個紋理指令,同時不需要對應地較大暫存器檔案。以此方式,可使用所省下的可用暫存器檔案大小(如,未分配給紋理操作),核發更多執行緒。
因此,所需要的是一種能夠針對繪圖執行緒處理,減少儲存器需求及防止死結的系統。本發明具體實施例提供執行單元管線結果的儲存器(如,紋理管線結果緩衝器)。具體實施例另外提供藉由限制每個執行緒的請求的數量,及確保除非有資源可用於完成一組請求中的所有請求,否則不核發或開始該組請求,而防止死結。本發明具體實施例因此提供無死結的增加效能。
更明確地說,本發明具體實施例允許增加使用每個具有多個未完成紋理請求的執行緒,而不需要較大的暫存器檔案儲存器,因為紋理操作結果係儲存在管線緩衝器中。紋理指令分成兩個部分,一個是對紋理單元的核發紋理請求,另一個是從紋理單元讀回結果的操作。此結果被放進管線緩衝器單元,而非暫存器檔案。為避免死結,除非緩衝器可容納所有請求,否則執行緒可不核發其請求。這可避免因為請求資料不在緩衝器中,而無法滿足請求的情況。為了避免因為所有結果槽被佔用而拖延管線,必須讀取緩衝結果。藉由需要較少暫存器檔案儲存器,可同時處理更多執行緒,藉此增加GPU的平行處理,因而增加GPU的效能。
在一項具體實施例中,本發明為一種電腦實施方法,用於防止繪圖處理單元(GPU)的死結。該方法包括決定屬於管線部分(如,紋理管線的一部分或紋理單元的緩衝器)的可用管線緩衝器資源數量,及基於第一執行緒的一或多個紋理請求,決定所請求的資源數量。如果請求的資源的數量少於緩衝器中可用資源的數量,則將對應於一或多個請求的資源分配於緩衝器中,否則不分配。該方法另外包括調整(如,遞減)可用資源的數量及核發一或多個請求。在由其他操作讀出緩衝器的內容後,接著調整(如,遞增)資源的數量。
在另一具體實施例中,本發明係實施為一種用於繪圖處理的系統,其中紋理操作被分成紋理請求操作與紋理讀回操作,且另外其中將紋理操作的結果儲存於與紋理管線相關聯的緩衝器而非暫存器檔案中。該系統包括選擇要執行之執行緒的排程模組,以及決定執行緒之多個紋理請求的請求追蹤模組。每個紋理請求可對應於執行管線的資源(如,紋理管線槽或紋理單元的緩衝器槽)。該系統另外包括決定執行管線之可用緩衝器資源數量的資源監控模組,以及基於可用資源(如,紋理單元中的槽)的數量,決定是否執行請求的執行模組,以防止死結及分配執行管線的資源。
以此方式,本發明具體實施例一般促進增加利用,因而也促進增加繪圖處理單元(GPU)的效能。具體實施例提供紋理管線儲存結果的儲存器(如,緩衝器),藉此釋放暫存器檔案中的儲存空間。暫存器檔案中增加的可用空間有利地允許執行單元同時間處理更多執行緒。本發明具體實施例另外藉由控制基於可用緩衝器資源可核發的紋理請求的數量,致使永遠達到執行緒中讀取結果的點,以防止死結。本發明具體實施例因此提供無死結的效能提昇。
在另一具體實施例中,本發明係實施為一種防止系統中計算死結的方法,該系統儲存紋理結果於管線緩衝器而非暫存器檔案中,且該系統將紋理指令分成兩個操作,包括紋理請求與紋理讀回操作。該方法包括存取執行單元設定檔(如,紋理單元的執行單元設定檔)。執行單元設定檔可包括每個時脈週期所處理的單元數量以及管線資源數量。管線資源數量可包括管線深度與緩衝器大小。該方法另外包括決定每執行緒與若干執行緒可無死結而執行的請求數量,且在就那麼多的執行緒上同時間操作。
接著將詳細參考本發明的較佳具體實施例,其範例以附圖解說。儘管本發明將結合較佳具體實施例加以說明,但應明白,這些具體實施例並非用來限制本發明於其中。相反地,本發明旨在涵蓋替代方案、修改、及等效物,這些均包括在如隨附申請專利範圍所界定的本發明精神及範疇中。再者,在以下本發明具體實施例的詳細說明中,提出許多特定細節以徹底瞭解本發明。然而,一般技術者應明白,在沒有這些特定細節的情況下,亦可實施本發明。在其他實例中,為避免不必要地模糊本發明具體實施例的各方面,未詳細描述已知的方法、過程、組件、及電路。
以下「實施方式」的某些部分就電腦記憶體內資料位元操作的過程、步驟、邏輯區塊、處理、及其他符號表示法提出討論。這些說明及表示法係熟習資料處理技術者所使用的方法,以最有效的方式將其運作本質傳達給其他熟習本技術者。過程、電腦執行步驟、邏輯區塊、程序等在此且大致上被設想為造成所要結果之步驟或指令的自相一致序列。此等步驟是需要物理量之物理操控的步驟。這些物理量通常(但並非一定)採取的形式是可在電腦系統中加以儲存、傳送、結合、比較、及以其他方式操控的電信號或磁信號。已證實有時很方便的是(主要為了一般的使用)將這些信號稱為位元、值、元件、符號、字元、條件項、數字、或其類似物。
然而,應明白,所有這些用語及相似用語係為了和相應物理量相關聯,且只是應用於這些物理量的便利標記。除非另外明確說明為明顯不同於以下論述,應明白,在本發明所有方面,利用諸如「處理」或「存取」或「執行」或「儲存」或「呈現」等用語的論述,是指積體電路(如,圖1的計算系統100)或類似電子計算裝置的動作與程序,積體電路或類似電子計算裝置操控電腦系統暫存器與記憶體中表示為物理(電子)量的資料,及將其轉換為電腦系統記憶體或暫存器或其他此類資訊儲存器、傳送或顯示裝置中同樣表示為物理量的其他資料。
圖1顯示根據本發明之一項具體實施例的電腦系統100。電腦系統100描繪根據本發明具體實施例之基本電腦系統的組件,該電腦系統提供特定基於硬體與基於軟體之功能性的執行平台。一般而言,電腦系統100包含至少一個CPU 101、系統記憶體115、及至少一個繪圖處理器單元(GPU) 110。CPU 101可經由橋接組件/記憶體控制器(未顯示)耦合至系統記憶體115,或可經由CPU 101內部的記憶體控制器(未顯示)直接耦合至系統記憶體115。GPU 110耦合至顯示器112。一或多個附加GPU可視情況耦合至系統100,以進一步提高其計算能力。GPU 110耦合至CPU 101與系統記憶體115。GPU 110可實施為離散組件、設計經由連接器(如,AGP插槽、PCI-Express插槽等)耦合至電腦系統100的離散繪圖卡、離散積體電路晶粒(如,直接安裝在主機板上),或可實施為包括於電腦系統晶片組組件(未顯示)之積體電路晶粒內的整合GPU。另外,可包括用於GPU 110的本機繪圖記憶體114,以進行高頻寬繪圖資料儲存。
CPU 101與GPU 110亦可整合成單一積體電路晶粒,且CPU與GPU可共用各種資源,諸如指令邏輯、緩衝器、功能單元等,或可針對繪圖與通用操作提供個別資源。GPU可另外整合至核心邏輯組件中。因此,此處說明為與GPU 110相關聯的任何或所有電路及/或功能性亦可實施於適當裝配的CPU 101中,並可由CPU 101實行。另外,儘管此處具體實施例涉及GPU,但注意,所說明的電路及/或功能性亦可實施為其他類型的處理器(如,通用或其他專用共處理器)或實施於CPU內。
系統100可實施為例如桌上型電腦系統或伺服器電腦系統,具有耦合至專用繪圖呈現GPU 110的強大通用CPU 101。在此一具體實施例中,可包括添加週邊匯流排、專業音訊/視訊組件、IO裝置等的組件。同樣地,系統100可實施為手持裝置(如,行動電話等)、直接廣播衛星(DBS)/地面機上盒,或機上視訊遊戲機裝置,諸如:Xbox,可購自華盛頓州Redmond的微軟公司,或PlayStation3,可購自日本東京的索尼電腦娛樂股份有限公司。系統100亦可實施為「系統晶片」,其中計算裝置的電子零件(如,組件101、115、110、114等)全部含在單一積體電路晶粒內。範例包括具有顯示器的手持器具、汽車導航系統、手提娛樂系統等。
本發明具體實施例一般促進GPU之增加的繪圖處理利用,因而也促進繪圖處理單元(GPU)之增加的效能。具體實施例提供儲存紋理結果的紋理管線緩衝器,藉此釋放往常使用之暫存器檔案的儲存空間。暫存器檔案中增加的可用空間允許執行單元同時間處理更多執行緒。本發明具體實施例另外藉由控制可核發給管線之多個紋理請求的數量,致使永遠達到且執行每個執行緒中讀回結果的點,以防止管線死結。本發明具體實施例因此提供無死結之增加的處理器效能。
圖2顯示根據本發明一項具體實施例之GPU之示範性執行單元的方塊圖。執行單元200包括紋理單元202、數學單元220、排程器230、及暫存器檔案240。應明白,GPU(如,GPU 110)可具有多個實質類似於執行單元200的執行單元,以平行執行多個執行緒。例如,GPU可具有8個處理器群組,每個群組有2個執行單元。具體實施例因此支援單一指令多重資料(SIMD)執行(如,一個指令平行用於16個像素)。在一項具體實施例中,此處說明的執行緒為影像或視訊訊框的個別像素,如熟此技藝者所知。
紋理單元202包括紋理管線204與管線緩衝器210。紋理管線204具有N個槽或管線位置206-208。紋理管線204將結果寫入管線緩衝器210。紋理操作通常需要移至記憶體,而這將花費相對較長的時間(如,300個時脈週期)。紋理管線204因此可為300個槽或元件的長度,以因應此延遲。例如,紋理管線204的每個槽可操作以每時脈週期接收四個像素,以藉由分析相鄰像素,及決定紋理中的每個像素相距多遠,而計算精細度(Level of details、LOD)計算。為了使紋理管線204以足夠的工作負載保持忙碌,300個槽的深度(slots of depth)且每槽4個像素的紋理單元需要1200個像素或工作執行緒。其他執行緒工作可繼續進行,同時由紋理管線204實行紋理操作。對於背對背(back to back)核發多個紋理操作的執行緒,需要較少執行緒使管線保持全滿。例如,對於背對背(back to back)核發兩個紋理操作的執行緒,僅需要一半數量的執行緒使管線保持全滿。
數學單元220包括數學管線222,具有槽224-226。在執行緒等待紋理請求完成的同時,數學請求可核發至數學單元220。在一項具體實施例中,數學單元220從暫存器檔案240獲得來源資料,並將結果目的地資料傳回暫存器檔案240。例如,如果數學單元220每時脈可處理16個像素並花費5個時脈傳回結果,則只要指令彼此獨立且每個執行緒一次具有一個未完成指令,80個執行緒將使數學單元保持忙碌。如另一範例,其中每個執行緒能夠核發一個數學指令,每個週期將需要16個執行緒使管線保持忙碌。參考以上範例,1280個執行緒將使紋理單元202與數學單元220保持忙碌。如果1280個執行緒不可獲得,將使執行單元沒有任何工作,導致無處理活動的氣泡(bubble)或時期。應明白,除非管線已經負載,否則不希望執行單元出現氣泡。
所希望的是透過管線處理更多執行緒,以提高效能。因此,使用具有多個紋理操作的執行緒,將允許同時處理多個增加的紋理執行緒。本發明具體實施例提供管線緩衝器210作為提供紋理儲存的有利構件,而不需要對應地較大暫存器檔案,習用技術中通常需要較大暫存器檔案,以容納同時處理之增加數量的執行緒。
暫存器檔案240儲存執行緒資訊。每個工作單元具有與工作單元相關聯的狀態資訊,以處理執行緒。例如,對於像素而言,狀態資訊可包括X、Y、及紋理座標。暫存器檔案240的大小可基於紋理單元與數學單元的寬度(如,每時脈的像素)與深度(如,時脈週期)。也就是說,暫存器的數量控制了未完成狀態中,可駐存於執行單元200的像素的數量或執行緒。在一項具體實施例中,使用紋理管線204與管線緩衝器210作為紋理資料的儲存器,可減少暫存器檔案240處理相同數量執行緒的必要資源,或者,相同大小的暫存器檔案可同時處理增加數量的執行緒,藉此提高效能而勝於習用的單元。
在一項具體實施例中,排程器230將紋理操作的座標寫入紋理單元202。在暫存器檔案240中,不需要儲存位置對應於寫入紋理單元202的座標。在一項具體實施例中,紋理單元202可具有緩衝器(未顯示),以在進入紋理管線204前儲存紋理操作請求。在進入紋理管線204前儲存紋理操作的緩衝器因此允許在紋理管線204前,在緩衝器中產生紋理座標,藉此釋放原本用來緩衝紋理座標的暫存器。
管線緩衝器210可用以儲存從紋理管線204輸出的結果。在管線因每個槽被未讀取結果佔用而拖延之前,執行緒自紋理管線讀取紋理操作結果。管線緩衝器210包括N個槽或儲存位置212-214。在必須從管線緩衝器210讀取結果前,管線緩衝器210允許特定的時間量,以避免拖延管線。應明白,在核發請求至紋理管線204時,且在由紋理管線204處理紋理請求的同時,管線緩衝器210允許核發紋理請求至紋理管線204,而不需要在暫存器檔案240中分配空間給結果。因此,只要在管線緩衝器210中的結果成為可用,即可動態分配從管線緩衝器210讀取結果的儲存器。因為紋理操作不使用暫存器檔案,根據本發明具體實施例,每個紋理操作又分成兩個操作:對紋理單元的請求(紋理請求)與從紋理單元讀回結果的操作。
在一項具體實施例中,將紋理請求核發至紋理管線204的槽後,指派管線緩衝器210的槽儲存紋理請求的結果。管線緩衝器210可以屬於各種儲存器類型,包括但不限於:先進先出(FIFO)緩衝器。應明白,可以不按順序的方式,從管線緩衝器210讀取結果。例如,對於具有16個槽的緩衝器而言,每第16個核發的請求將被指派相同槽。另外,對於具有16個槽的緩衝器而言,來自紋理管線的每個結果要在16時脈週期內讀取,以免因所有緩衝器槽不可用(如,具有未讀取結果)而拖延管線。緩衝器槽可基於指令進入紋理管線的週期。
一些紋理化操作可能需要比其他紋理化操作實質上更多的儲存器。例如,紋理化操作可能需要取樣16個樣本的紋理並平均結果。在習用的紋理管線下,每個位置需要16個樣本才能平均。習用紋理管線之暫存器檔案中增加的儲存器因而限制了給定時間內能夠處理的執行緒數量。本發明具體實施例可核發16個請求至紋理管線,然後一次讀出一個結果,再將結果添加至結果中,因此大大減少或消除在暫存器檔案240中需要16個樣本的空間。另應明白,在紋理管線緩衝器210中接收結果後,決定何時需要將資料儲存於暫存器檔案或計算資料時,將需要編譯器。
使用管線緩衝器210允許使用較小暫存器檔案,因為可在儲存位置需用於結果之前核發請求。例如,可核發16個請求,然後將對應於暫存器檔案中座標的空間再分配給額外的執行緒。參考其中平均紋理結果的以上範例,其結果不需要分配空間,因為這些結果可在單一暫存器中組合。管線緩衝器210因此促進在給定時間內處理更多執行緒,藉此使執行單元保持忙碌。更明確地說,管線緩衝器210允許有效使用紋理管線204作為儲存器,因為暫存器檔案240儲存寫入紋理管線204之座標或其他資料的部分現在可用於儲存其他執行緒的資料。應明白,管線緩衝器210另外藉由允許在給定時間內處理更多執行緒而防止氣泡。
使用管線緩衝器210允許模擬來源與目的地指令。在一項具體實施例中,排程器230的狀態機將紋理請求寫入紋理單元202,並從管線緩衝器210讀取結果,而不使用暫存器檔案240作為結果的儲存器。例如,在暫存器R0-R3的資料寫入紋理管線204,並從管線緩衝器210讀取結果且將其儲存於暫存器R0-R3時,可執行儲存於暫存器R0-R3之座標之紋理操作的指令(如,“text R0-R3”)。應明白,來源與目的地指令可以變成兩個指令:1)將紋理指令寫入紋理管線,及2)從紋理單元讀取結果至緩衝器。
圖3顯示根據本發明一項具體實施例之允許多個紋理操作之示範性執行緒的圖式。示範性執行緒300包括請求A 304、請求B 306、請求C 308、請求D 310、MADD 312、讀取結果A 314、讀取結果B 316、讀取結果C 318、及讀取結果D 320。應明白,MADD指令(如,MADD 312)不相依於紋理結果,因而不必等待紋理結果。在一項具體實施例中,執行緒300係由GPU執行單元(如,執行單元200)執行。應明白,執行緒300可包括更多請求、MADD、及讀取結果。請求304-310、MADD 312、及讀取結果314-320可已由編譯器配置過。
程式計數器302於請求A 304開始執行緒300的執行。在一項具體實施例中,決定請求的數量,在此例中,有四個紋理請求304-310。檢查可用資源(如,包括管線槽與緩衝器儲存位置的紋理單元槽)的數量,查看是否有四個紋理單元資源可用。如果有四個紋理資源可用,則將資源分配計數器遞增四,四對應於核發至管線204的請求304-310。分配四個紋理資源給執行緒300確保在完成紋理操作時,保證結果314-320為可讀取(如,從管線緩衝器210讀取),以防止死結。在一項具體實施例中,檢查資源及分配資源屬於原子性操作。
如果沒有四個紋理資源可用,可使執行緒300進入睡眠,直到有四個紋理資源可用為止。如果有足夠的資源可以執行另一執行緒,則執行該執行緒。隨著紋理操作在紋理管線中向下移動,及從管線緩衝器讀取紋理處理結果,紋理資源變成可用。根據各具體實施例,僅允許執行緒將所有紋理請求放到管線上或什麼都不放。如此可防止死結,因為執行緒不能再核發任何其紋理提取,直到其到達執行緒可從管線緩衝器讀取紋理處理結果的點為止。當結果緩衝器已滿時,管線將停止,直到某內容被讀取為止。如果預期讀取紋理結果的執行緒正等著核發其他紋理請求,即發生死結。此外,如果這些執行緒採取通過著色器(shader)程式的路徑,無法讀取紋理結果,即發生死結。
在一項具體實施例中,隨著程式計數器302移至請求306-308上,資源分配計數器可不針對請求306-308的核發進行變更。在核發每個讀取請求314-320後,資源分配計數器可遞減一,一對應於管線緩衝器(如,管線緩衝器210)隨著實行每個讀取請求314-320變成清空的槽。
應明白,可以各種方式實行資源追蹤。例如,將資源分配計數器初始化為紋理單元中閒置或可用資源的數量,及每次核發一組請求時,以請求的數量減少計數器。隨著從紋理單元讀取每個結果,遞增計數器(如,隨著讀取每個結果314-320,遞增計數器)。這代表了動態分配結構。
應明白,亦可使用靜態分配以防止死結。在此具體實施例中,已知系統能掌握(hold)多少處(spot)。例如,如果在紋理管線中有400個資源可用,且每個執行緒需要四個紋理操作,則排程器230在任何時間允許僅100個並行的執行緒,以防止死結。在此例中,不需要使用計數器。
另外,應明白,可由編譯器配置或排序執行緒指令,使執行最佳化。例如,當紋理請求不相依於數學請求時,可將紋理請求移至數學請求(如,MADD 312)之前,致使在處理紋理請求的同時,完成數學請求。此重新配置指令允許執行緒佔用較少空間,因指令係同時間執行,且紋理請求資訊儲存於紋理單元(如,紋理單元202)中。編譯器可另外配置指令以維持預期的工作負載比例(如,四個數學請求對於每個紋理請求)。應明白,工作負載比例可以是設計硬體單元的因數,並按著該比例使工作平衡可確保使工作負載中的氣泡降到最低。
圖4解說本發明各種具體實施例使用的範例組件。雖然在系統400中揭露特定組件,但應明白,此類組件只是範例。也就是說,本發明具體實施例也很適於具有各種其他組件或系統400中所提組件的變化。應明白,系統400中的組件可用所提組件以外的其他組件操作,且並非需要使用系統400的所有組件才能達成系統400的目標。
圖4顯示根據本發明之一項具體實施例之示範性系統的方塊圖。可以硬體或軟體實施系統400。在一項具體實施例中,系統400促進處理繪圖指令,以在顯示器上呈現影像或視訊。系統400連通及/或控制為GPU之一部分的執行單元410。系統400包括排程模組402、請求追蹤模組404、資源監控模組406、及執行模組408。
排程模組402選擇要執行的執行緒。排程模組402可選擇要執行的執行緒及排程執行緒之一部分的執行(如,一或多個紋理請求與一或多個數學請求)。排程模組402可選擇要執行的下一個執行緒或其一部分。
請求追蹤模組404決定紋理請求的數量。在一項具體實施例中,請求可核發至紋理單元412或數學單元414的執行管線。更明確地說,請求的數量可以是在讀取紋理結果之前,對紋理管線之紋理請求的數量。在一項具體實施例中,紋理單元412的紋理管線包括緩衝器,用於儲存紋理單元412之紋理管線的結果。如此處說明的,請求可已由編譯器配置過。
資源監控模組406決定執行管線(如,紋理管線與管線緩衝器)的可用資源的數量。在一項具體實施例中,資源監控模組406決定紋理單元412之執行管線的可用資源的數量。在另一具體實施例中,資源監控模組406基於對應於可用(如,未分配)資源數量的計數器,決定可用資源的數量,如,動態架構。在又另一具體實施例中,資源監控模組406藉由檢查對應於可在給定時間內進展之執行緒最大數量的數量,決定可用資源的數量,如,靜態架構。
執行模組408基於可用資源的數量,決定是否執行請求,及分配執行管線的資源。如果適當資源不可用於儲存請求的資料,則不核發請求或請求群組。在一項具體實施例中,執行模組408決定是否執行請求及分配管線資源如原子性操作,藉此避免在指派相同資源給二或多個執行緒時的平行執行緒執行問題。
執行模組408決定是否執行請求及分配資源,可防止死結。執行模組408確保執行緒部分(具有請求)永遠可進行至讀出結果的部分。換言之,管線內容僅在讀出後才清空。如果執行緒因為管線已滿而永遠無法到達讀出其內容的點,即發生死結。本發明具體實施例允許在核發一組請求之前,完全分配資源,或不核發任何請求。此舉防止死結,因為在檢查程式是否能夠進行至從紋理單元讀取結果的部分之前,不核發所有紋理請求。一般而言,對於具有X個紋理請求的執行緒,在核發X個紋理請求之前,保留或分配紋理單元中的X個槽。
例如,在紋理管線具有300個槽且緩衝器具有16個槽或儲存位置時,可進行316個紋理請求而沒有任何管線暫停。對每個請求保留群組中的槽,直到讀取結果為止。例如,如果執行緒包括四個紋理請求,則可連同對應於這些請求之所分配紋理單元的四個槽,核發這四個紋理請求(只要有四個槽可用)。因此,只要有足夠的資源確保執行緒將到達從紋理單元412讀取結果的點,每個執行緒均可核發請求。
應明白,一旦針對該執行緒分配紋理單元資源,即可利用排程模組402核發紋理請求,因為分配資源給該執行緒可確保請求被執行。由於紋理請求完成所花費的時間,可利用排程模組402使執行緒進入睡眠,直到可從紋理單元讀取結果為止,或直到完成其他非紋理操作為止。例如,等待紋理結果的執行緒亦可以有核發至數學單元(如,數學單元414)的數學請求。
參考圖5-6,流程圖500與600解說本發明各種具體實施例所使用的範例功能。雖然在流程圖500與600中揭露特定功能區塊(「區塊」),但此類步驟只是範例。也就是說,各具體實施例也適於實行各種其他區塊或流程圖500與600中所提區塊的變化。應明白,可按不同於所提的順序實行流程圖500與600中的區塊,及流程圖500與600中所有區塊並非都要實行。
圖5顯示示範性電腦控制程序防止繪圖處理單元(GPU)之功能管線死結的流程圖,GPU使用管線緩衝器儲存各種執行緒的執行結果。流程圖500的方法因不需要使用暫存器檔案儲存器處理執行緒的紋理操作,進一步促進有效使用GPU的處理資源。應明白,流程圖500的程序可以是防止死結的動態程序。
在區塊502,決定管線緩衝器及/或管線的可用資源的數量。如此處說明的,可用資源可包含功能管線(如,紋理管線)之管線緩衝器的一部分、或紋理管線的緩衝器部分。如此處說明的,可基於追蹤可用資源的數量的計數器,決定可用資源的數量。
在區塊504,基於第一執行緒的一或多個紋理請求,決定請求的資源的數量。對於以群組形成的紋理請求,所請求的數量是群組中的所有請求。
在區塊506,因應請求的資源的數量少於可用資源的數量,將對應於一或多個請求的資源分配給管線。如此處說明的,決定可用資源的數量及分配對應於請求的資源的數量的資源可以是原子性操作。
在區塊508,調整可用資源的數量以應付核發的請求。如此處說明的,此調整可包括遞增追蹤可用資源的數量。應明白,可基於追蹤資源的數量與執行單元之資源相比的方式,使資源的數量遞增或遞減。
在區塊510,核發一或多個請求。如此處說明的,請求可以是紋理請求。以此方式,核發此組紋理請求致使在執行對應讀取相同執行緒時,保證資料在緩衝器中。
在區塊512,調整可用資源的數量。如此處說明的,此調整可包括遞減可用資源的數量。如果還有具有請求的額外執行緒,可實行區塊516,及存取第二執行緒。在實行區塊516後,可針對第二執行緒實行區塊502。如果一或多個請求結果可用,則可實行區塊514。
在區塊514,因應一或多個請求,讀取一或多個結果。如此處說明的,從紋理單元的管線緩衝器讀取結果。接著可實行區塊516,及選擇第二執行緒。
圖6根據本發明之一項具體實施例,顯示示範性電腦控制程序防止系統中死結的流程圖,其中將功能管線的結果資料寫入管線緩衝器而非暫存器檔案。在一項具體實施例中,可由編譯器實行流程圖600的方法。應明白,流程圖600的程序可以是防止死結的靜態程序。
在區塊602,存取GPU的執行單元設定檔。執行單元可包括紋理單元與數學單元。在一項具體實施例中,執行單元設定檔包括每時脈週期處理之單元(如,像素)的數量與管線資源數量。管線資源數量可包括管線深度與緩衝器大小。在一項具體實施例中,緩衝器大小對應於紋理管線結果緩衝器的大小。
在區塊604,決定每執行緒與若干執行緒可無死結而執行之紋理請求的數量。如此處說明的,每執行緒與若干執行緒的請求的數量可基於需要在讀取紋理請求結果前核發之紋理請求的數量。例如,如果紋理管線與管線緩衝器具有400個槽,且在需要讀取前每執行緒有四個紋理請求,在此系統中,可限制並行執行緒的數量為100個,以防止死結。在一項具體實施例中,執行緒數量係基於影像塊,致使空間塊的所有執行緒在處理下一塊之前完成。例如,一個塊的若干執行緒可一起排程,以利用駐存於處理器中的多塊。應明白,這可利用任何快取記憶體局部性。塊因此被處理以完成紋理請求與紋理傳回序列,不會因為缺少資源而發生紋理管線拖延的情形。
在區塊606,基於每執行緒可執行而無死結的請求的數量,重新配置執行緒指令。如此處說明的,編譯器重新配置指令以確保在執行緒讀取結果之前,核發限定數量的請求。
已為了解說及說明而提出本發明具體實施例的以上描述。以上描述的目的不在詳盡窮舉或限制本發明於所揭示的精確形式,並可按照以上教示進行許多修改及變化。具體實施例的選擇與說明係為了對本發明的原理及實際應用提出最好的解說,藉此讓熟習本技術者以適於所想特定用途的各種修改,充分利用本發明及各種具體實施例。預期本發明範疇係由本文隨附申請專利範圍及其等效物所定義。
100...電腦系統
101...CPU
110...GPU
112...顯示器
114...本機繪圖記憶體
115...系統記憶體
200、410...執行單元
202、412...紋理單元
204...紋理管線
206-208、212-214、224-226...槽
210...管線緩衝器
220、414...數學單元
222...數學管線
230...排程器
240...暫存器檔案
300...執行緒
302...程式計數器
304-310...請求
312...MADD
314-320...讀取結果
400...系統
402...排程模組
404...請求追蹤模組
406...資源監控模組
408...執行模組
本發明藉由舉例而非限制,以附圖的各個圖式進行解說,圖中相似參考數字代表相似元件。
圖1顯示根據本發明之一項具體實施例的示範性電腦系統。
圖2顯示根據本發明之一項具體實施例之示範性執行單元的方塊圖。
圖3顯示根據本發明之一項具體實施例之示範性執行緒的圖式。
圖4顯示根據本發明之一項具體實施例之示範性系統的方塊圖。
圖5顯示防止繪圖處理單元(GPU)之死結之示範性電腦控制程序的流程圖。
圖6顯示根據本發明之一項具體實施例防止死結之示範性電腦控制程序的流程圖。
Claims (19)
- 一種在一繪圖處理單元中處理資料的方法,該方法包含:維持一管線緩衝器之空的記憶體資源的一計數,該管線緩衝器耦合以從該繪圖處理單元的一執行單元接收結果;決定一執行緒之該執行單元的多個請求(a number of requests),其中該多個請求包含多個請求操作,在一讀回操作出現在該執行緒中之前,該多個請求操作出現在該執行緒中;假如該管線緩衝器有足夠空的記憶體資源以容納該多個請求的全部,則核發該多個請求至該執行單元,否則不核發該多個請求之任一者至該執行單元;及該執行單元在其執行後,將所核發請求的結果寫入該管線緩衝器。
- 如申請專利範圍第1項所述之方法,其中該維持該管線緩衝器之空的記憶體資源之該計數包含:因應該核發該多個請求至該執行單元,減少該管線緩衝器之該等空的記憶體資源之該計數。
- 如申請專利範圍第2項所述之方法,另外包含:該執行緒從對應於核發請求的該管線緩衝器執行讀回操作至該執行單元,及其中該維持該管線緩衝器之空的記憶體資源之該計數另外包含:因應該執行緒執行該讀回操作,增加該管線緩衝器之該等空的記憶體資源之該計數。
- 如申請專利範圍第1項所述之方法,其中該執行單元係該繪圖處理單元內之一紋理單元,及其中該紋理單元的每個紋理操作包含:該紋理單元之一紋理請求操作及從該管線緩衝器之一紋理 讀回操作。
- 如申請專利範圍第4項所述之方法,其中該核發及該不核發防止該紋理單元的死結,其係藉由核發僅在該管線緩衝器中已分配結果空間的這些分組的紋理請求操作,其中分組的紋理請求操作係一執行緒內所有未核發的連續紋理請求操作,而該執行緒內該所有未核發的連續紋理請求操作係在該執行緒之一第一未核發紋理讀回操作之前。
- 如申請專利範圍第1項所述之方法,進一步包含:該執行緒核發一數學運算至該繪圖處理器的一數學功能單元;及該數學功能單元從一暫存器檔案的來源暫存器獲得該數學運算的來源運算元,及將該數學運算執行的結果傳回該暫存器檔案的目的地暫存器。
- 如申請專利範圍第6項所述之方法,其中該執行單元係一紋理單元,及其中該暫存器檔案不接收執行該紋理單元的結果。
- 一種在一繪圖處理單元中處理資料的方法,該方法包含:決定一管線緩衝器之一大小,該管線緩衝器耦合以從該繪圖處理單元的一執行單元接收結果;基於每個執行緒內多個請求操作(a number of request operations),及基於該管線緩衝器之該大小,決定可允許與該執行單元同時間操作的多個執行緒(a number of thread);允許不超過與該執行單元同時間操作的該多個執行緒,以防 止其死結;該多個執行緒核發請求操作至該執行單元;及該執行單元在其執行後,將該等請求操作的結果寫入該管線緩衝器。
- 如申請專利範圍第8項所述之方法,其中該決定多個執行緒包含:將該管線緩衝器之該大小除以每個執行緒中的該多個請求操作的數量。
- 如申請專利範圍第8項所述之方法,另外包含:該多個執行緒從對應於核發之該等請求操作的該管線緩衝器執行讀回操作至該執行單元。
- 如申請專利範圍第8項所述之方法,其中該執行單元係該繪圖處理單元內之一紋理單元,及其中該紋理單元的每個紋理操作包含一紋理請求操作及從該管線緩衝器之一紋理讀回操作。
- 如申請專利範圍第11項所述之方法,其中藉由保證該多個執行緒中所有紋理讀回操作將具有一執行機會,該允許不超過與該執行單元同時間操作的該多個執行緒,以防止死結。
- 如申請專利範圍第8項所述之方法,進一步包含:該多個執行緒核發數學運算至該繪圖處理器的一數學功能單元;及該數學功能單元從一暫存器檔案的來源暫存器獲得該等數學運算的來源運算元,及將該等數學運算執行的結果傳回該暫存器 檔案的目的地暫存器。
- 如申請專利範圍第13項所述之方法,其中該功能單元係一紋理單元,及其中該暫存器檔案不接收執行該紋理單元的結果。
- 一種一繪圖處理單元的處理器群組,該處理器群組包含複數個處理器,其中至少一處理器包含:一暫存器檔案,儲存有關在該處理器群組內可同時間操作之複數個執行緒的資料;一紋理單元,處理該複數個執行緒的紋理操作,其中每個紋理操作包含一請求紋理操作與一對應的紋理讀回操作;一管線緩衝器,耦合至該紋理單元,以從該紋理單元接收及儲存結果;一用於該紋理單元內防止死結的電路,該用於防止死結的電路更包含:一用於決定一執行緒之該紋理單元的多個紋理請求操作(a number of texture request operations)的電路,其中該多個紋理請求操作包含在一紋理讀回操作出現在該執行緒之前,出現在該執行緒內之多個紋理請求操作;及一用於如果該管線緩衝器與該紋理單元有足夠的空記憶體資源以容納該多個紋理請求之全部,則核發該多個請求至該紋理單元,否則不核發該多個紋理請求之任一者至該紋理單元的電路。
- 如申請專利範圍第15項所述之處理器群組,該處理器另外包含一數學功能單元,處理該複數個執行緒的數學運算,其中該數 學功能單元耦合以從該暫存器檔案接收來源運算元,且亦耦合以儲存結果至該暫存器檔案。
- 如申請專利範圍第15項所述之處理器群組,該處理器另外包含一計數器,維持該管線緩衝器與該紋理單元之空的記憶體資源之一計數。
- 如申請專利範圍第15項所述之處理器群組,其中該用於該紋理單元內防止死結的電路,其係藉由允許不超過與該紋理單元同時間操作之多個預定執行緒,其中該多個預定執行緒的數量係基於每個執行緒中的一紋理請求操作數量,及基於該管線緩衝器與該紋理單元之一大小。
- 如申請專利範圍第18項所述之處理器群組,其中藉由將該管線緩衝器之該大小與該紋理單元之該大小除以每個執行緒中該多個紋理請求操作之數量,計算該預定執行緒的數量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/420,751 US8698823B2 (en) | 2009-04-08 | 2009-04-08 | System and method for deadlock-free pipelining |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201044311A TW201044311A (en) | 2010-12-16 |
TWI423162B true TWI423162B (zh) | 2014-01-11 |
Family
ID=42934008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099110703A TWI423162B (zh) | 2009-04-08 | 2010-04-07 | 在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8698823B2 (zh) |
JP (1) | JP5240588B2 (zh) |
KR (1) | KR101226817B1 (zh) |
CN (1) | CN101859257B (zh) |
TW (1) | TWI423162B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9849372B2 (en) * | 2012-09-28 | 2017-12-26 | Sony Interactive Entertainment Inc. | Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title |
US9626191B2 (en) | 2011-12-22 | 2017-04-18 | Nvidia Corporation | Shaped register file reads |
US20130191572A1 (en) * | 2012-01-23 | 2013-07-25 | Qualcomm Incorporated | Transaction ordering to avoid bus deadlocks |
US9694276B2 (en) | 2012-06-29 | 2017-07-04 | Sony Interactive Entertainment Inc. | Pre-loading translated code in cloud based emulated applications |
US9717989B2 (en) | 2012-06-29 | 2017-08-01 | Sony Interactive Entertainment Inc. | Adding triggers to cloud-based emulated games |
US9656163B2 (en) | 2012-06-29 | 2017-05-23 | Sony Interactive Entertainment Inc. | Haptic enhancements for emulated video game not originally designed with haptic capabilities |
US9925468B2 (en) | 2012-06-29 | 2018-03-27 | Sony Interactive Entertainment Inc. | Suspending state of cloud-based legacy applications |
US9707476B2 (en) | 2012-09-28 | 2017-07-18 | Sony Interactive Entertainment Inc. | Method for creating a mini-game |
US11013993B2 (en) | 2012-09-28 | 2021-05-25 | Sony Interactive Entertainment Inc. | Pre-loading translated code in cloud based emulated applications |
US20140092087A1 (en) | 2012-09-28 | 2014-04-03 | Takayuki Kazama | Adaptive load balancing in software emulation of gpu hardware |
US9697006B2 (en) * | 2012-12-19 | 2017-07-04 | Nvidia Corporation | Technique for performing memory access operations via texture hardware |
US9405605B1 (en) | 2013-01-21 | 2016-08-02 | Amazon Technologies, Inc. | Correction of dependency issues in network-based service remedial workflows |
US9183092B1 (en) * | 2013-01-21 | 2015-11-10 | Amazon Technologies, Inc. | Avoidance of dependency issues in network-based service startup workflows |
US9165396B2 (en) * | 2013-02-26 | 2015-10-20 | Nvidia Corporation | Graphics processing unit with a texture return buffer and a texture queue |
US9171525B2 (en) * | 2013-02-26 | 2015-10-27 | Nvidia Corporation | Graphics processing unit with a texture return buffer and a texture queue |
US9258012B2 (en) | 2013-03-15 | 2016-02-09 | Sony Computer Entertainment Inc. | Compression of state information for data transfer over cloud-based networks |
JP5466786B1 (ja) * | 2013-08-28 | 2014-04-09 | 株式会社 ディー・エヌ・エー | 画像処理装置及び画像処理プログラム |
KR102161742B1 (ko) | 2013-10-11 | 2020-10-05 | 삼성전자주식회사 | 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법 |
US9760967B2 (en) * | 2013-11-13 | 2017-09-12 | Qualcomm Incorporated | System and method of dynamically throttling CPU frequency for gaming workloads |
CN103713884B (zh) * | 2013-12-18 | 2016-06-29 | 珠海金山网络游戏科技有限公司 | 多线程通过数组处理数据的方法、系统及多线程处理器 |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
CN103955407B (zh) * | 2014-04-24 | 2018-09-25 | 深圳中微电科技有限公司 | 在处理器中减小纹理延迟的方法及装置 |
US9633153B1 (en) * | 2014-12-31 | 2017-04-25 | Cadence Design Systems, Inc. | Method, system, and computer program product for verifying an electronic design using stall prevention requirements of electronic circuit design models of the electronic design |
US9747226B2 (en) * | 2015-03-30 | 2017-08-29 | Cavium, Inc. | Packet processing system, method and device to optimize packet buffer space |
US10616144B2 (en) | 2015-03-30 | 2020-04-07 | Cavium, Llc | Packet processing system, method and device having reduced static power consumption |
US10242494B2 (en) * | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
CN107770090B (zh) * | 2017-10-20 | 2020-05-01 | 深圳市楠菲微电子有限公司 | 用于控制流水线中寄存器的方法和装置 |
CN108509241B (zh) * | 2018-03-15 | 2021-06-04 | Oppo广东移动通信有限公司 | 一种图像的全屏显示方法、全屏显示装置及移动终端 |
US10990443B2 (en) | 2018-12-04 | 2021-04-27 | International Business Machines Corporation | Utilization profiling and scheduling operations using thread specific execution units usage of a multi-core multi-threaded processor |
US10657699B1 (en) * | 2018-12-08 | 2020-05-19 | Arm Limited | Performing texturing operations for sets of plural execution threads in graphics processing systems |
KR102687597B1 (ko) * | 2018-12-28 | 2024-07-22 | 엘지디스플레이 주식회사 | 발광 표시장치 |
KR102531567B1 (ko) * | 2020-04-03 | 2023-05-15 | 서울대학교산학협력단 | 데드락 회피 방법 및 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030187911A1 (en) * | 2002-04-01 | 2003-10-02 | Michael Abd-El-Malek | Method and apparatus to facilitate recovering a thread from a checkpoint |
US20060031389A1 (en) * | 2004-05-06 | 2006-02-09 | Norio Shimozono | Storage system, computer system, and method of configuring storage system |
US20070165042A1 (en) * | 2005-12-26 | 2007-07-19 | Seitaro Yagi | Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method |
Family Cites Families (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6414648A (en) | 1987-07-08 | 1989-01-18 | Mitsubishi Electric Corp | Arithmetic processor |
US5455913A (en) | 1990-05-14 | 1995-10-03 | At&T Global Information Solutions Company | System and method for transferring data between independent busses |
US5301295A (en) | 1991-05-22 | 1994-04-05 | Analog Devices, Inc. | Data processor apparatus and method with selective caching of instructions |
US5444853A (en) | 1992-03-31 | 1995-08-22 | Seiko Epson Corporation | System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's |
US5768548A (en) | 1992-04-15 | 1998-06-16 | Intel Corporation | Bus bridge for responding to received first write command by storing data and for responding to received second write command by transferring the stored data |
US5546548A (en) | 1993-03-31 | 1996-08-13 | Intel Corporation | Arbiter and arbitration process for a dynamic and flexible prioritization |
US5555424A (en) | 1994-10-06 | 1996-09-10 | The Dow Chemical Company | Extended Harvard architecture computer memory system with programmable variable address increment |
US5706466A (en) | 1995-01-13 | 1998-01-06 | Vlsi Technology, Inc. | Von Neumann system with harvard processor and instruction buffer |
US5923859A (en) | 1995-04-13 | 1999-07-13 | Compaq Computer Corporation | Dual arbiters for arbitrating access to a first and second bus in a computer system having bus masters on each bus |
US5877741A (en) * | 1995-06-07 | 1999-03-02 | Seiko Epson Corporation | System and method for implementing an overlay pathway |
US6175634B1 (en) | 1995-08-28 | 2001-01-16 | Intel Corporation | Adaptive noise reduction technique for multi-point communication system |
US6226695B1 (en) | 1995-09-29 | 2001-05-01 | International Business Machines Corporation | Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors |
US5717954A (en) | 1995-10-13 | 1998-02-10 | Compaq Computer Corporation | Locked exchange FIFO |
US5968143A (en) | 1995-12-13 | 1999-10-19 | International Business Machines Corporation | Information handling system for transfer of command blocks to a local processing side without local processor intervention |
US5940866A (en) | 1995-12-13 | 1999-08-17 | International Business Machines Corporation | Information handling system having a local address queue for local storage of command blocks transferred from a host processing side |
US5761468A (en) | 1996-05-15 | 1998-06-02 | Sun Microsystems Inc | Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions |
US5822568A (en) | 1996-05-20 | 1998-10-13 | Advanced Micro Devices, Inc. | System for improving the real-time functionality of a personal computer which employs an interrupt servicing DMA controller |
US5745772A (en) | 1996-08-02 | 1998-04-28 | Micron Electronics, Inc. | Advanced programmable interrupt controller |
US5790817A (en) | 1996-09-25 | 1998-08-04 | Advanced Micro Devices, Inc. | Configurable digital wireless and wired communications system architecture for implementing baseband functionality |
US6185634B1 (en) | 1996-09-27 | 2001-02-06 | Emc Corporation | Address triggered DMA controller with an indicative signal including circuitry for calculating a new trigger address value based on the sum of the current trigger address and the descriptor register data with a trigger address register |
US6018803A (en) | 1996-12-17 | 2000-01-25 | Intel Corporation | Method and apparatus for detecting bus utilization in a computer system based on a number of bus events per sample period |
US6029228A (en) | 1996-12-31 | 2000-02-22 | Texas Instruments Incorporated | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions |
US5864876A (en) | 1997-01-06 | 1999-01-26 | Creative Technology Ltd. | DMA device with local page table |
US5881248A (en) | 1997-03-06 | 1999-03-09 | Advanced Micro Devices, Inc. | System and method for optimizing system bus bandwidth in an embedded communication system |
US6526518B1 (en) | 1997-05-22 | 2003-02-25 | Creative Technology, Ltd. | Programmable bus |
US6085276A (en) | 1997-10-24 | 2000-07-04 | Compaq Computers Corporation | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies |
US6266742B1 (en) | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
US6016528A (en) | 1997-10-29 | 2000-01-18 | Vlsi Technology, Inc. | Priority arbitration system providing low latency and guaranteed access for devices |
US6098114A (en) | 1997-11-14 | 2000-08-01 | 3Ware | Disk array system for processing and tracking the completion of I/O requests |
US6418496B2 (en) | 1997-12-10 | 2002-07-09 | Intel Corporation | System and apparatus including lowest priority logic to select a processor to receive an interrupt message |
US6233656B1 (en) | 1997-12-22 | 2001-05-15 | Lsi Logic Corporation | Bandwidth optimization cache |
US6298407B1 (en) | 1998-03-04 | 2001-10-02 | Intel Corporation | Trigger points for performance optimization in bus-to-bus bridges |
US6157980A (en) | 1998-03-23 | 2000-12-05 | International Business Machines Corporation | Cache directory addressing scheme for variable cache sizes |
US6085278A (en) | 1998-06-02 | 2000-07-04 | Adaptec, Inc. | Communications interface adapter for a computer system including posting of system interrupt status |
US6182112B1 (en) | 1998-06-12 | 2001-01-30 | Unisys Corporation | Method of and apparatus for bandwidth control of transfers via a bi-directional interface |
US6490654B2 (en) | 1998-07-31 | 2002-12-03 | Hewlett-Packard Company | Method and apparatus for replacing cache lines in a cache memory |
US6101568A (en) | 1998-08-25 | 2000-08-08 | Stmicroelectronics, Inc. | Bus interface unit having dual purpose transaction buffer |
US6065088A (en) | 1998-08-31 | 2000-05-16 | International Business Machines Corporation | System and method for interrupt command queuing and ordering |
US6205524B1 (en) | 1998-09-16 | 2001-03-20 | Neomagic Corp. | Multimedia arbiter and method using fixed round-robin slots for real-time agents and a timed priority slot for non-real-time agents |
US20020056027A1 (en) | 1998-10-29 | 2002-05-09 | Hiroki Kanai | Information processing system |
US6233645B1 (en) | 1998-11-02 | 2001-05-15 | Compaq Computer Corporation | Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high |
US6314472B1 (en) | 1998-12-01 | 2001-11-06 | Intel Corporation | Abort of DRAM read ahead when PCI read multiple has ended |
US6397296B1 (en) | 1999-02-19 | 2002-05-28 | Hitachi Ltd. | Two-level instruction cache for embedded processors |
US6345341B1 (en) | 1999-06-24 | 2002-02-05 | International Business Machines Corporation | Method of cache management for dynamically disabling O state memory-consistent data |
US6681285B1 (en) | 1999-07-22 | 2004-01-20 | Index Systems, Inc. | Memory controller and interface |
US7389466B1 (en) | 1999-08-12 | 2008-06-17 | Texas Instruments Incorporated | ECC in computer system with associated mass storage device, and method for operating same |
AU762703B2 (en) | 1999-10-29 | 2003-07-03 | Kabushiki Kaisha Toshiba | Data write control system and method therefor |
US6574712B1 (en) | 1999-11-08 | 2003-06-03 | International Business Machines Corporation | Software prefetch system and method for predetermining amount of streamed data |
US6631434B1 (en) | 1999-11-15 | 2003-10-07 | Hewlett-Packard Development Company, L.P. | Dynamic early indication system for a computer |
US6560657B1 (en) | 1999-12-23 | 2003-05-06 | Intel Corporation | System and method for controlling peripheral devices |
US6499090B1 (en) | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
JP3450248B2 (ja) | 2000-01-19 | 2003-09-22 | エヌイーシー東芝スペースシステム株式会社 | 人工衛星搭載用データバス制御方法、そのシステム |
US6578102B1 (en) | 2000-04-18 | 2003-06-10 | International Business Machines Corporation | Tracking and control of prefetch data in a PCI bus system |
JP3796390B2 (ja) | 2000-04-27 | 2006-07-12 | シャープ株式会社 | データ駆動型情報処理装置 |
JP4489245B2 (ja) * | 2000-05-02 | 2010-06-23 | オリンパス株式会社 | 画像処理装置とその制御方法 |
DE10121792C2 (de) | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
US6754755B1 (en) | 2000-08-10 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Service request system using an activity indicator to reduce processing overhead |
US6745258B1 (en) | 2000-08-22 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Raid system having multiple reply queues for use with multiprocessor host |
US6957290B1 (en) | 2000-10-06 | 2005-10-18 | Broadcom Corporation | Fast arbitration scheme for a bus |
US6696954B2 (en) | 2000-10-16 | 2004-02-24 | Amerasia International Technology, Inc. | Antenna array for smart RFID tags |
US6681281B1 (en) | 2000-11-17 | 2004-01-20 | Advanced Micro Devices, Inc. | System and method for implementing a multi-level interrupt scheme in a computer system |
GB0031763D0 (en) | 2000-12-29 | 2001-02-07 | Mitel Semiconductor Ltd | Arbiter for a queue management system |
US6480939B2 (en) | 2000-12-29 | 2002-11-12 | Intel Corporation | Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware |
US6901467B2 (en) | 2001-02-23 | 2005-05-31 | Hewlett-Packard Development Company, L.P. | Enhancing a PCI-X split completion transaction by aligning cachelines with an allowable disconnect boundary's ending address |
US6571318B1 (en) | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
US20020144054A1 (en) | 2001-03-30 | 2002-10-03 | Fanning Blaise B. | Prefetch canceling based on most recent accesses |
US6728856B2 (en) | 2001-06-01 | 2004-04-27 | Microchip Technology Incorporated | Modified Harvard architecture processor having program memory space mapped to data memory space |
US6842803B2 (en) | 2001-07-09 | 2005-01-11 | Advanced Micro Devices, Inc. | Computer system with privileged-mode modem driver |
US6907480B2 (en) | 2001-07-11 | 2005-06-14 | Seiko Epson Corporation | Data processing apparatus and data input/output apparatus and data input/output method |
US6696854B2 (en) | 2001-09-17 | 2004-02-24 | Broadcom Corporation | Methods and circuitry for implementing first-in first-out structure |
US7376846B2 (en) | 2001-10-14 | 2008-05-20 | Palm, Inc. | Charging and communication cable system for a mobile computer apparatus |
US6915363B2 (en) | 2001-12-13 | 2005-07-05 | Seagate Technology Llc | System for selectively controlling spin-up control for data storage devices in an array using predetermined out of band (OOB) signals |
US6925534B2 (en) | 2001-12-31 | 2005-08-02 | Intel Corporation | Distributed memory module cache prefetch |
US6877048B2 (en) | 2002-03-12 | 2005-04-05 | International Business Machines Corporation | Dynamic memory allocation between inbound and outbound buffers in a protocol handler |
TWI258081B (en) | 2002-04-04 | 2006-07-11 | Via Tech Inc | Arbitrating method and arbiter for bus grant |
US6904473B1 (en) | 2002-05-24 | 2005-06-07 | Xyratex Technology Limited | Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory |
US20030229743A1 (en) | 2002-06-05 | 2003-12-11 | Brown Andrew C. | Methods and structure for improved fairness bus arbitration |
US6898674B2 (en) | 2002-06-11 | 2005-05-24 | Intel Corporation | Apparatus, method, and system for synchronizing information prefetch between processors and memory controllers |
US6801963B2 (en) | 2002-07-24 | 2004-10-05 | Intel Corporation | Method, system, and program for configuring components on a bus for input/output operations |
DE10234933A1 (de) | 2002-07-31 | 2004-03-18 | Advanced Micro Devices, Inc., Sunnyvale | Pufferung von Non-Posted-Lesebefehlen und Antworten |
DE10234934A1 (de) | 2002-07-31 | 2004-03-18 | Advanced Micro Devices, Inc., Sunnyvale | Antwortreihenwiederherstellungsmechanismus |
US7167954B2 (en) | 2002-09-09 | 2007-01-23 | Broadcom Corporation | System and method for caching |
US6895475B2 (en) | 2002-09-30 | 2005-05-17 | Analog Devices, Inc. | Prefetch buffer method and apparatus |
US7032046B2 (en) | 2002-09-30 | 2006-04-18 | Matsushita Electric Industrial Co., Ltd. | Resource management device for managing access from bus masters to shared resources |
TW569236B (en) | 2002-10-03 | 2004-01-01 | Via Tech Inc | Multiple-grant controller with parallel arbitration mechanism and related method |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US6901483B2 (en) | 2002-10-24 | 2005-05-31 | International Business Machines Corporation | Prioritizing and locking removed and subsequently reloaded cache lines |
US6976106B2 (en) | 2002-11-01 | 2005-12-13 | Sonics, Inc. | Method and apparatus for speculative response arbitration to improve system latency |
US20040199786A1 (en) | 2002-12-02 | 2004-10-07 | Walmsley Simon Robert | Randomisation of the location of secret information on each of a series of integrated circuits |
US20040117606A1 (en) | 2002-12-17 | 2004-06-17 | Hong Wang | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information |
US6983356B2 (en) | 2002-12-19 | 2006-01-03 | Intel Corporation | High performance memory device-state aware chipset prefetcher |
US7143219B1 (en) | 2002-12-31 | 2006-11-28 | Intel Corporation | Multilevel fair priority round robin arbiter |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US6950892B2 (en) | 2003-04-10 | 2005-09-27 | International Business Machines Corporation | Method and system for managing distributed arbitration for multicycle data transfer requests |
JP3632695B2 (ja) | 2003-05-06 | 2005-03-23 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
JP4313607B2 (ja) | 2003-05-08 | 2009-08-12 | 富士通株式会社 | バス接続回路及びバス接続システム |
US7177985B1 (en) | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7139878B2 (en) | 2003-06-20 | 2006-11-21 | Freescale Semiconductor, Inc. | Method and apparatus for dynamic prefetch buffer configuration and replacement |
US7600058B1 (en) | 2003-06-26 | 2009-10-06 | Nvidia Corporation | Bypass method for efficient DMA disk I/O |
US7225318B2 (en) | 2003-10-08 | 2007-05-29 | Intel Corporation | Dynamic prefetch in continuous burst read operation |
US6996647B2 (en) | 2003-12-17 | 2006-02-07 | International Business Machines Corporation | Token swapping for hot spot management |
US7027062B2 (en) | 2004-02-27 | 2006-04-11 | Nvidia Corporation | Register based queuing for texture requests |
US7281148B2 (en) | 2004-03-26 | 2007-10-09 | Intel Corporation | Power managed busses and arbitration |
US7315912B2 (en) * | 2004-04-01 | 2008-01-01 | Nvidia Corporation | Deadlock avoidance in a bus fabric |
WO2005114646A2 (en) * | 2004-05-14 | 2005-12-01 | Nvidia Corporation | Low power programmable processor |
US7461211B2 (en) | 2004-08-17 | 2008-12-02 | Nvidia Corporation | System, apparatus and method for generating nonsequential predictions to access a memory |
US7206902B2 (en) | 2004-08-17 | 2007-04-17 | Nvidia Corporation | System, apparatus and method for predicting accesses to a memory |
US7260686B2 (en) | 2004-08-17 | 2007-08-21 | Nvidia Corporation | System, apparatus and method for performing look-ahead lookup on predictive information in a cache memory |
US7441087B2 (en) | 2004-08-17 | 2008-10-21 | Nvidia Corporation | System, apparatus and method for issuing predictions from an inventory to access a memory |
US7218291B2 (en) | 2004-09-13 | 2007-05-15 | Nvidia Corporation | Increased scalability in the fragment shading pipeline |
US7525986B2 (en) | 2004-10-28 | 2009-04-28 | Intel Corporation | Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools |
US7263566B2 (en) | 2004-12-30 | 2007-08-28 | Qualcomm Incorporated | Method and apparatus of reducing transfer latency in an SOC interconnect |
US20060206902A1 (en) * | 2005-03-14 | 2006-09-14 | Sujat Jamil | Variable interleaved multithreaded processor method and system |
JP4621604B2 (ja) | 2006-02-20 | 2011-01-26 | 株式会社東芝 | バス装置、バスシステムおよび情報転送方法 |
JP4892253B2 (ja) | 2006-02-28 | 2012-03-07 | ルネサスエレクトロニクス株式会社 | 電子装置 |
US8766996B2 (en) * | 2006-06-21 | 2014-07-01 | Qualcomm Incorporated | Unified virtual addressed register file |
US8345053B2 (en) * | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
US7631126B2 (en) | 2007-05-24 | 2009-12-08 | Research In Motion Limited | System and method for interfacing an electronic device with a host system |
US7734856B2 (en) | 2007-08-22 | 2010-06-08 | Lantiq Deutschland Gmbh | Method for operating a plurality of arbiters and arbiter system |
US7876329B2 (en) * | 2007-09-10 | 2011-01-25 | Via Technologies, Inc. | Systems and methods for managing texture data in a computer |
US8099539B2 (en) | 2008-03-10 | 2012-01-17 | Lsi Corporation | Method and system of a shared bus architecture |
US8370552B2 (en) | 2008-10-14 | 2013-02-05 | Nvidia Corporation | Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions |
US7895385B2 (en) | 2008-12-09 | 2011-02-22 | Nvidia Corporation | Establishing communication over serial buses in a slave device |
-
2009
- 2009-04-08 US US12/420,751 patent/US8698823B2/en active Active
-
2010
- 2010-03-23 JP JP2010066407A patent/JP5240588B2/ja active Active
- 2010-04-07 TW TW099110703A patent/TWI423162B/zh active
- 2010-04-08 CN CN2010101420064A patent/CN101859257B/zh active Active
- 2010-04-08 KR KR1020100032219A patent/KR101226817B1/ko active IP Right Grant
-
2013
- 2013-11-27 US US14/092,816 patent/US9928639B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030187911A1 (en) * | 2002-04-01 | 2003-10-02 | Michael Abd-El-Malek | Method and apparatus to facilitate recovering a thread from a checkpoint |
US20060031389A1 (en) * | 2004-05-06 | 2006-02-09 | Norio Shimozono | Storage system, computer system, and method of configuring storage system |
US20070165042A1 (en) * | 2005-12-26 | 2007-07-19 | Seitaro Yagi | Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method |
Also Published As
Publication number | Publication date |
---|---|
CN101859257B (zh) | 2013-09-18 |
KR20100112099A (ko) | 2010-10-18 |
US20100259536A1 (en) | 2010-10-14 |
CN101859257A (zh) | 2010-10-13 |
TW201044311A (en) | 2010-12-16 |
JP2010244529A (ja) | 2010-10-28 |
KR101226817B1 (ko) | 2013-01-28 |
US20140092114A1 (en) | 2014-04-03 |
JP5240588B2 (ja) | 2013-07-17 |
US9928639B2 (en) | 2018-03-27 |
US8698823B2 (en) | 2014-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI423162B (zh) | 在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 | |
US7339592B2 (en) | Simulating multiported memories using lower port count memories | |
US7533237B1 (en) | Off-chip memory allocation for a unified shader | |
US10217183B2 (en) | System, method, and computer program product for simultaneous execution of compute and graphics workloads | |
TWI493451B (zh) | 使用預解碼資料進行指令排程的方法和裝置 | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
US8533435B2 (en) | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict | |
US7533236B1 (en) | Off-chip out of order memory allocation for a unified shader | |
US7634621B1 (en) | Register file allocation | |
US20170371654A1 (en) | System and method for using virtual vector register files | |
US20120110586A1 (en) | Thread group scheduler for computing on a parallel thread processor | |
TWI501150B (zh) | 無指令解碼而排程指令的方法和裝置 | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
JP2013025823A (ja) | 仮想gpu | |
RU2009135022A (ru) | Мультимедиа-процессор, многопоточный по требованию | |
US9304775B1 (en) | Dispatching of instructions for execution by heterogeneous processing engines | |
US7876329B2 (en) | Systems and methods for managing texture data in a computer | |
US9171525B2 (en) | Graphics processing unit with a texture return buffer and a texture queue | |
US8321618B1 (en) | Managing conflicts on shared L2 bus | |
US9165396B2 (en) | Graphics processing unit with a texture return buffer and a texture queue | |
TW201337767A (zh) | 多頻時間切面組 | |
US20130138815A1 (en) | Memory bandwidth reallocation for isochronous traffic | |
US20140337569A1 (en) | System, method, and computer program product for low latency scheduling and launch of memory defined tasks |