TWI827916B - 用於處理螢幕空間的方塊的方法 - Google Patents
用於處理螢幕空間的方塊的方法 Download PDFInfo
- Publication number
- TWI827916B TWI827916B TW110108647A TW110108647A TWI827916B TW I827916 B TWI827916 B TW I827916B TW 110108647 A TW110108647 A TW 110108647A TW 110108647 A TW110108647 A TW 110108647A TW I827916 B TWI827916 B TW I827916B
- Authority
- TW
- Taiwan
- Prior art keywords
- batch
- primitives
- blocks
- block processing
- block
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000008569 process Effects 0.000 title claims abstract description 28
- 230000002123 temporal effect Effects 0.000 claims description 9
- 238000003860 storage Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000009877 rendering Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1407—General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Image Generation (AREA)
Abstract
本發明提供一種用於處理螢幕空間的方塊的方法,方法
包含基於第二批基元的方塊處理順序來判定第一批基元的方塊的方塊處理順序,其中第二批基元在第一批基元之前處理。第一批基元的方塊基於針對第一批基元的方塊所判定的方塊處理順序來處理。方塊處理順序在第一批基元的方塊推送至圖形處理單元的後端處理部分時更新。在一個實施例中,判定第一批基元的方塊的方塊處理順序包含基於第二批基元的最近處理方塊至最久處理方塊順序來配置與第二批基元的方塊具有相同的螢幕空間的第一批基元的方塊。
Description
本文中揭露的主題是關於圖形處理單元(graphic processing unit;GPU)。更特定言之,本文中揭露的主題是關於一種用於改變分級處理順序以減少DRAM流量的圖形處理單元(GPU)的方法。
本申請案主張2020年5月21日申請的美國臨時申請案第63/028,553號的優先權權益,其揭露內容以全文引用的方式併入本文中。
來自不同繪製調用的基元在典型圖形硬體管線中依次處理。在圖形硬體管線的分級架構中,分級處理每一基元且標記基元佔據的螢幕空間方塊。亦即,分級維持螢幕空間方塊桶列表,所述列表含有佔據螢幕空間方塊的基元列表。可對跨繪圖的整個基元集合、在子訊框內或對整個基元集合的批次執行分級製程。舉例而言,分級架構可使用基於批次的分級製程,其中分級使基元跨批次分佈,且將每一批的基元分別分級,而非將整個基元集合一次性分
級。每一批的大小可在運行時間基於各種資源約束及/或應用程式設計介面(Application Programming Interface;API)約束來判定。
實例實施例提供用於處理螢幕空間的方塊的方法,其中方法可包含:基於第二批基元的方塊處理順序來判定第一批基元的方塊的方塊處理順序,其中第二批基元可在第一批基元之前處理;基於針對第一批基元的方塊所判定的方塊處理順序來處理第一批基元的方塊;以及在第一批基元的方塊處理時,更新方塊處理順序。在一個實施例中,方法可更包含基於在第一批基元的方塊處理時所更新的方塊處理順序來處理第三批基元的方塊,其中第三批基元在第一批基元之後;以及在第三批基元的方塊處理時,更新方塊處理順序。在另一實施例中,第一批基元的方塊處理方向與第二批基元的方塊處理方向相反。在再一實施例中,第一批基元的多個方塊可包含n個方塊,且第二批基元的多個方塊包括n個方塊,第二批基元的方塊處理順序可包含第二批基元的n個方塊的最久處理方塊至最近使用方塊的順序,且其中判定第一批基元的方塊的方塊處理順序可包含對與第二批基元的m個方塊具有相同的螢幕空間的第一批基元的m個方塊進行排序,以對應於第二批基元的m個方塊的方塊處理順序,其中m小於或等於n。
實例實施例提供用於處理螢幕空間的方塊的方法,其中方法可包含:基於觀測到的方塊處理順序來判定第一批基元的方塊的方塊處理順序,其中第一批基元可包含n個方塊,觀測到的方塊處理順序可基於第二批基元的最久處理方塊至最近使用方塊
的順序,第二批基元可包含n個方塊,且第二批基元可在第一批基元之前處理;以及基於針對第一批基元的方塊所判定的方塊處理順序來處理第一批基元的方塊。在一個實施例中,方法可更包含在第一批基元的方塊處理時更新觀測到的方塊處理順序。在另一實施例中,判定第一批基元的方塊的方塊處理順序可包含對與第二批基元的m個方塊具有相同的螢幕空間的第一批基元的m個方塊進行排序,以對應於第二批基元的m個方塊的方塊處理順序,其中m小於或等於n。
實例實施例提供用於處理螢幕空間的方塊的方法,其中方法可包含:基於第二批基元的方塊處理順序來判定第一批基元的方塊的方塊處理順序,第二批基元可在第一批基元之前處理,第一批基元的方塊的方塊處理順序可包含第一批基元的方塊的排序,所述排序可基於第一批基元的方塊與第二批基元的最近處理方塊至最久處理方塊順序的時間接近度;基於針對第一批基元的方塊所判定的方塊處理順序來處理第一批基元的方塊;以及在第一批基元的方塊處理時,更新方塊處理順序。在一個實施例中,方法可更包含基於在第一批基元的方塊處理時所更新的方塊處理順序來處理第三批基元的方塊,其中第三批基元可在第一批基元之後;以及在第三批基元的方塊處理時,更新方塊處理順序。在另一實施例中,第三批基元的方塊處理方向可與第一批基元的方塊處理方向相反。
100:實例螢幕空間
101:基元
400:製程
401、402、403、404、405、406:步驟
700:系統
701:GPU
702:中央處理單元
703:記憶體
704:命令處理機
705:幾何形狀引擎
706:基元組譯器
707:分級
708:光柵處理器
709:著色器
710:深度區塊
711:色彩區塊
800:電子裝置
810:控制器
820:輸入/輸出裝置
830:記憶體
840:介面
850:GPU
860:影像處理單元
870:匯流排
B0、B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15:方塊
在以下部分中,將參考圖式中所示出的例示性實施例描
述本文中所揭露的主題的態樣,在所述圖式中:圖1描繪包含多個基元的實例螢幕空間。
圖2描繪兩個連續批次的傳統方塊處理順序。
圖3描繪根據本文中所揭露的主題的方塊處理順序。
圖4為根據本文中所揭露的主題的用於利用LLC中的資料局部性來減少DRAM流量的製程的流程圖。
圖5描繪根據本文中所揭露的主題的方塊處理順序的實例。
圖6描繪根據本文中所揭露的主題的方塊處理順序的另一實例。
圖7為根據本文中所揭露的主題的包含GPU的系統的方塊圖,所述GPU改變分級處理順序以減少DRAM流量。
圖8描繪根據本文中所揭露的主題的包含GPU的電子裝置,所述GPU改變分級處理順序以減少DRAM流量。
在以下詳細描述中,闡述眾多特定細節以便提供對本揭露的透徹理解。然而,所屬領域中具有通常知識者將理解,可在無此等特定細節的情況下實踐所揭露的態樣。在其他情況下,為了不混淆本文中所揭露的主題,未詳細描述熟知方法、程序、部件以及電路。
貫穿本說明書對「一個實施例」或「一實施例」的參考意謂結合實施例所描述的特定特徵、結構或特性可包含於本文中所揭露的至少一個實施例中。因此,貫穿本說明書在各個位置出現的片語「在一個實施例中」或「在一實施例中」或「根據一個實施例」
(或具有相似意思的其他片語)可能未必全部指同一實施例。另外,特定特徵、結構或特性可在一或多個實施例中以任何適合的方式組合。在此方面,如本文中所使用,詞語「例示性」意謂「充當實例、例子或說明」。本文中描述為「例示性」的任何實施例未必被解釋為較佳或優於其他實施例。此外,特定特徵、結構或特性可在一或多個實施例中以任何適合的方式組合。此外,取決於本文中的論述的上下文,單數術語可包含對應複數形式,且複數術語可包含對應單數形式。類似地,帶連字符的術語(例如,「二維(two-dimensional)」、「預定(pre-determined)」、「像素特定(pixel-specific)」等)可與對應非連字符版本(例如,「二維(two dimensional)」、「預定(predetermined)」、「像素特定(pixel specific)」等)間或互換使用,且大寫項(例如,「計數器時鐘(Counter Clock)」、「行選擇(Row Select)」、「PIXOUT」等)可與對應非大寫版本(例如,「計數器時鐘(counter clock)」、「行選擇(row select)」、「pixout」等)互換使用。此類間或可互換使用不應視為彼此不一致。
此外,取決於本文中的論述的上下文,單數術語可包含對應複數形式,且複數術語可包含對應單數形式。應進一步注意,本文中所繪示並論述的各種圖式(包含部件圖)僅出於說明性目的,且未按比例繪製。類似地,僅出於說明性目的而繪示各種波形及時序圖。舉例而言,為清楚起見,可相對於其他元件放大一些元件的尺寸。另外,若認為合適,則在諸圖當中重複附圖標記以指示對應及/或類似元件。
本文中所使用的術語僅出於描述一些實例實施例的目
的,且不意欲為對所主張的主題的限制。如本文中所使用,除非上下文另外明確地指示,否則單數形式「一(a/an)」及「所述」意欲亦包含複數形式。應進一步理解,術語「包括(comprise/comprising)」當在本說明書中使用時指定所陳述特徵、整數、步驟、操作、元件及/或部件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、部件及/或其群組的存在或添加。如本文中所使用的術語「第一」、「第二」等被用作所述術語之前的名詞的標籤,且不暗示任何類型的排序(例如,空間、時間、邏輯等),除非明確如此定義。此外,相同附圖標記可用於跨越兩個或多於兩個圖式以指代具有相同或相似功能性的部分、部件、區塊、電路、單元或模組。然而,此用法僅為簡化說明且易於論述起見;其不暗示此類部件或單元的構造或架構細節跨越所有實施例相同,或此類通常參考的部分/模組為實施本文中所揭露的實例實施例中的一些的唯一方式。
應理解,當元件或層稱為「在」另一元件或層「上」、「連接至」或「耦接至」另一元件或層時,所述元件或層可直接在另一元件或層上、直接連接至或耦接至另一元件或層,或可能存在介入元件或層。相反,當元件稱為「直接在」另一元件或層「上」、「直接連接至」或「直接耦接至」另一元件或層時,當前不存在介入元件或層。相同數字貫穿全文是指相同元件。如本文中所使用,術語「及/或」包含相關聯列舉項中的一或多者的任何組合及所有組合。
如本文中所使用的術語「第一」、「第二」等被用作所述術語之前的名詞的標籤,且不暗示任何類型的排序(例如,空間、時間、邏輯等),除非明確如此定義。此外,相同附圖標記可用於跨
越兩個或多於兩個圖式以指代具有相同或相似功能性的部分、部件、區塊、電路、單元或模組。然而,此用法僅為簡化說明且易於論述起見;其不暗示此類部件或單元的構造或架構細節跨越所有實施例相同,或此類通常參考的部分/模組為實施本文中所揭露的實例實施例中的一些的唯一方式。
除非另外定義,否則本文中所使用的所有術語(包含技術及科學術語)具有與由本主題所屬的領域中具有通常知識者通常理解的含義相同的含義。進一步應理解,諸如常用詞典中所定義的術語的術語應解釋為在相關技術的上下文中具有與其含義一致的含義,且不應在理想化或過度正式意義上進行解釋,除非本文中明確地如此定義。
如本文中所使用,術語「模組」是指經組態以提供本文中結合模組所描述的功能性的軟體、韌體及/或硬體的任何組合。舉例而言,軟體可體現為軟體套件、程式碼及/或指令集或指令,且如本文中所描述的任何實施中所使用的術語「硬體」可單獨地或以任何組合包含例如組件、固線式電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統所執行的指令的韌體。模組可共同地或個別地體現為形成較大系統的部分的電路系統,所述較大系統例如但不限於積體電路(integrated circuit;IC)、系統晶片(system on-chip;SoC)、組件等等。
藉由基元分級執行的分級製程可在前端處理結束時(例如,在處理的頂點/幾何處理階段時)發生。通常,每一批基元觸控形成螢幕空間的方塊的子集。可藉由後端圖形硬體管線以特定順序(線性順序、莫頓(Morton)順序、階式莫頓順序等)及在單
調方向上(例如,所有批次從左上方塊開始且前進到右下方塊)呈現方塊。因為佔用相同螢幕空間的基元通常可拆分成多個批次,所以連續批次經常存取及處理相同螢幕空間。因此,對應於螢幕空間的晶片上及/或晶片外動態隨機存取記憶體(dynamic random access memory;DRAM)可由跨批次的基元重新參考,從而導致DRAM(資料)流量增加,增加的DRAM(資料)流量使得GPU效能降低且功率消耗增加。若後端管線同時或時間上非常接近地處理跨批次的相同螢幕空間方塊,則可避免或減少DRAM流量的增加。藉由同時或時間上非常接近地處理相同螢幕空間方塊,處理一批次的基元所必需的資料將駐留在晶片上或晶片外快取。儘管如此,呈現圖案的此方塊在一些圖形處理器架構中可能不可行。
本文中所揭露的主題改變順序或序列,其中一批次處理螢幕空間,籍此減少DRAM流量。在一個實施例中,本文中所揭露的主題使用時間資料局部性資訊,所述時間資料局部性資訊可結合分級操作而可用,以改變針對連續批次處理螢幕方塊空間的順序。舉例而言,每一新批次可首先處理由前一批次最近處理的螢幕空間方塊以利用任何晶片上及/或晶片外快取,可能已調諧晶片上及/或晶片外快取以有效服務於具有良好時序局部性的流量型樣。處理螢幕空間的順序亦可經使用者選擇以藉由更有效地存取紋理資料來進一步減少紋理流量。
如本文中所使用的術語「時間資料局部性」是關於當前批次的螢幕空間方塊與前一批次的相同螢幕空間方塊的時間接近度。舉例而言,若判定當前批次的螢幕空間方塊為前一批次或在前一批次結束時處理的相同螢幕空間方塊,則當前批次的螢幕空間
方塊與前一批次具有相同的螢幕空間方塊的時間資料局部性,且當前批次的螢幕空間方塊的方塊處理順序移動至當前批次的方塊處理順序的開始。為了說明此情況,考慮螢幕空間包含16個方塊且前一批次的所有16個方塊在螢幕空間的左上至右下進行處理的情形,如同通常所完成的一樣。若當前批次亦包含涵蓋所有16個方塊的基元,則根據本文中所揭露的主題,當前批次的方塊處理順序將為前一批次的方塊處理順序的鏡像。亦即,當前批次的方塊處理順序將為自螢幕空間的右下至左上。
在一個實施例中,本文中所揭露的主題可使跨連續批次的方塊處理順序反向,以使得首先處理存在於快取中的螢幕空間方塊,且不招致額外DRAM流量。本文中所揭露的主題亦可登記螢幕空間方塊已由先前批次處理的順序。每一新批次更新順序,且每一新批次基於過去的順序對其螢幕處理重新排序,此往往會減少DRAM流量。
通常,藉由特定批次處理的螢幕空間方塊的數目太大而不能在快取中完全擬合。在已經處理整個批次之後,資料快取的分配策略確保僅在批次的最末端處經處理的螢幕方塊駐留在快取中。本文中所揭露的主題利用分配策略且對下一批次進行配置以在資料存在於快取中時存取所述資料。因此,本文中所揭露的主題可顯著地減少由例如行動GPU招致的總體DRAM流量。DRAM流量減少亦在時間間隔期間提高GPU的效能,否則所述時間間隔將由於記憶體頻寬而成為瓶頸,此提高GPU的總體效能。DRAM流量減少亦有助於藉由例如體現GPU的SOC降低功率消耗,進而提供GPU的改進的功率預算。
本文中所揭露的主題提供重新參考感知方塊處理順序,所述重新參考感知方塊處理順序可跨批次修改方塊處理順序及/或方塊處理方向,以使得可在GPU架構的極少改變的情況下儘可能同時或時間上接近地處理相同螢幕空間方塊(跨批次)。同步批次的前幾個方塊及最後幾個方塊可經歷局部性,且呈其最簡單形式,本文中所揭露的主題可跨同步批次改變方塊處理方向,且可捕獲顏色及深度快取局部性以用於時間上局部的方塊。
圖1描繪包含多個基元101的實例螢幕空間100,其中僅指示一個基元101。基於批次的基元呈現管線可以逐批次方式執行基元至方塊的映射(分級)。批次可包含不同基元集合。螢幕空間中的基元的方塊覆蓋範圍亦可為相異的,且方塊(B0、B1、...、B15)通常跨批次重現。
通常,螢幕空間的方塊的子集可由一批基元觸控。所觸控的方塊以呈現順序由圖形後端管線處理,所述呈現順序通常是從螢幕空間的左上至右下,如由藉由圖2中的箭頭所繪示的路徑所指示。亦即,自方塊B0至方塊B4、隨後至方塊B5至方塊B7等路徑來處理方塊。
通常跨多批基元處理相同螢幕空間方塊。可預期相對較小批次展現與其他批次的更多基元重疊,且重新參考可能主要與繪製調用觸控的螢幕空間相關。舉例而言,圖2中的實例批次n及批次n+1分別包含來自圖1中所描繪的基元的實例螢幕空間的不同基元。經由跨批次n及批次n+1的方式來處理螢幕空間的方塊(分級)B4及B9。
參考圖2中的批次n及批次n+1,可針對批次n產生的
典型的DRAM流量型樣可對應於自方塊(分級)B0至方塊B6、隨後方塊B9的方塊處理順序。批次n的方塊處理順序的此實例可使用速記表示法表示為[B0-B6,B9]。使用此速記表示法,批次n+1可能出現的典型的DRAM流量型樣可對應於方塊處理順序[B4,B8,B9,B10,B12,B13,B14]。如所描述,批次n及批次n+1的單調遍歷順序可產生次佳DRAM流量。
針對相對較大批次,來自第一批次的大部分方塊可在需要藉由緊接的後續批次重新獲取之前自快取遷移。在此類情況下,最後一級快取(Last Level Cache;LLC)可能被衝擊(thrash),從而招致額外DRAM流量。針對圖3中所描繪的實例較大批次n及批次n+1,典型的DRAM流量型樣可能會對應於實例批次n的方塊處理順序[B1-B15]及批次n+1的方塊處理順序[B2,B5,B6,B9,B10,B11,B12,B13,B14]。根據本文中所揭露的主題的重新排序的方塊處理順序可為:批次n的[B1-B15]及批次n+1的[B14,B13,B12,B11,B10,B9,B6,B5,B2]。因此,與典型的DRAM流量型樣相比,由本文中所揭露的主題提供的方塊處理順序不僅改變批次n+1的方塊處理順序,亦改變批次n+1的方塊處理方向,如由針對批次n+1所繪示的箭頭的路徑所指示。此重新排序流量型樣及方向可在一些GPU架構中非常頻繁地出現。
圖4為根據本文中所揭露的主題的用於利用LLC中的資料局部性來減少DRAM流量的製程400的流程圖。製程400在步驟401處開始。在步驟402處,維持已經以推送方塊的順序(前一順序)將所有方塊推送至後端處理的列表。若一組批次中的第一批次正在處理,則前一順序尚待確立,在此情況下以傳統方式處理
第一批次。在步驟403處,在新批次的處理開始時積聚新批次的所有方塊。在步驟404處,自最近(Most Recently;MR)推送至最久(Least Recently;LR)推送方塊迭代前一順序的方塊。在步驟405處,以新批次的方塊的處理順序向前推送亦在自MR至LR的前一順序中找到的所有新積聚的方塊。(如所提及,若一組批次中的第一批次正在處理,則不存在前一順序來迭代,因此步驟404及步驟405以傳統方塊處理順序處理批次的方塊。)在步驟406處,在將新批次的方塊推送至後端處理以表示新的MR至LR順序時,更新前一順序。接著,針對下一新批次製程返回至步驟403。製程400繼續進行,直至螢幕空間的呈現完成為止。
製程400可實施為模組,所述模組可體現為經組態以提供製程400的功能性的軟體、韌體及/或硬體的任何組合。舉例而言,此軟體可體現為軟體套件、程式碼及/或指令集或指令,且此硬體可單獨地或以任何組合包含例如組件、固線式電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統所執行的指令的韌體。
下文顯示對應於製程400的實例偽程式碼。
圖5繪示三個實例批次n至批次n+2,以示出使用圖4的實例方法400以利用來自先前批次的資料局部性且改變方塊處理順序以減少DRAM流量的實例。對於批次n,實例前一順序(未繪示)可能是:[B0,B4、B5,B2,B1,B3,B6,B7,B9,B10、B14]。批次n+1的傳統單調方塊處理順序可能是:[B1,B2,B3,B4,B5,B6,B9,B10,B13,B14]。使用方法400,批次n+1的方塊的方塊處理重新排序(或按處理順序向前推送)將是:[B14,B10,B9,B6,B3,B1,B2,B5,B4,B13],以使得批次n及批次n+1的完整方塊處理順序(由前一順序表示)變成:[B0,B7,B14,B10,B9,B6,B3,B1,B2,B5,B4,B13]。當與批次n的方塊處理方向相比時,不僅方塊處理順序已經改變,而且方塊處理方向亦已改變,如由針對批次n+1所繪示的箭頭的路徑所指示。亦應注意,前一順序以最久處理至最近處理的順序維持螢幕空間方塊列表。
針對圖5中的批次n+2,前一順序為:[B0,B7,B14,B10,B9,B6,B3,B1,B2,B5,B4,B13]針對批次n+2的傳統
單調方塊處理順序可能是:[B6,B9,B10,B11,B13,B14]。使用方法400,針對批次n+2的方塊的方塊處理重新排序將是:[B13,B6,B9,B10,B14,B11],以使得經更新的前一順序變成:[B0,B7,B3,B1,B2,B5,B4,B13,B6,B9,B10,B14,B11]。
圖6描繪使用方法400以利用LLC中的資料局部性且減少DRAM流量的額外實例。針對批次0,在批次0為第一批次時,尚未產生前一順序。傳統方塊處理順序將是:[B1-B7,B9,B10]。使用製程400,重新排序的方塊處理順序將是:[B1-B7,B9,B10],因為不存在前一順序來迭代,因此批次1的「新的」前一順序將是:[B1,B2,B2,B3,B4,B5,B6,B7,B9,B10]。
針對批次1,前一順序為:[B1,B2,B2,B3,B4,B5,B6,B7,B9,B10]。傳統單調方塊處理順序將是:[B4,B5,B6,B9,B13]。使用製程400,重新排序的方塊處理順序將是:基於前一順序的[B9,B6,B5,B4,B13]。新的前一順序將是:[B1,B2,B2,B3,B7,B10,B9,B6,B5,B4,B13]。
針對批次2,前一順序為:[B1,B2,B2,B3,B7,B10,B9,B6,B5,B4,B13]。傳統單調方塊處理順序將是:[B5,B7,B9,B10,B11,B13,B14,B15]。使用製程400,重新排序的方塊處理順序將是:[B13,B5,B9,B7,B11,B14,B15]。新的前一順序將是:[B1,B2,B2,B3,B10,B6,B4,B13,B5,B9,B7,B11,B14,B15]。
圖7為根據本文中所揭露的主題的包含GPU 701的系統700的方塊圖,所述GPU 701改變分級處理順序以減少DRAM流量。系統700可包含GPU 701、中央處理單元(central processing
unit;CPU)702以及記憶體703。GPU 701可包含命令處理機704、幾何形狀引擎705、基元組譯器706、分級707、光柵處理器708以及一或多個著色器709。光柵處理器708可包含深度區塊710及色彩區塊711。圖7中指示形成系統700的各種部件相互連接,如圖7中所繪示。在一個實施例中,分級707將基元分級至螢幕方塊空間中。在將一批次的基元分級至適當方塊中之後,分級707將每一螢幕空間方塊(及在螢幕空間方塊中分級的基元)傳播至光柵處理器。分級707根據本文中所揭露的主題改變分級處理順序以減少DRAM流量。
圖8描繪根據本文中所揭露的主題的包含GPU的電子裝置800,所述GPU改變分級處理順序以減少DRAM流量。電子裝置800可用於(但不限於)計算裝置、個人數位助理(personal digital assistant;PDA)、膝上型電腦、行動電腦、網頁平板電腦(web tablet)、無線電話、蜂巢式電話、智慧型手機、數位音樂播放器或有線或無線電子裝置中。電子裝置800可包含經由匯流排870彼此耦接的控制器810、輸入/輸出裝置820(諸如但不限於小鍵盤、鍵盤、顯示器、觸控式螢幕顯示器、攝影機及/或影像感測器)、記憶體830、介面840、GPU 850以及影像處理單元860。GPU 850可根據本文中所揭露的主題改變分級處理順序以減少DRAM流量。控制器810可包含例如至少一個微處理器、至少一個數位信號處理器、至少一個微控制器或其類似者。記憶體830可經組態以儲存待由控制器810使用的命令碼或使用者資料。
電子裝置800及電子裝置800的各種系統部件可包含影像處理單元860。介面840可經組態以包含經組態以使用RF信號
將資料傳輸至無線通信網路或自無線通信網路接收資料的無線介面。無線介面840可包含(例如)天線。電子裝置800亦可用於通信系統的通信介面協定中,諸如但不限於碼分多重存取(Code Division Multiple Access;CDMA)、全球行動通信系統(Global System for Mobile Communications;GSM)、北美數位通信(North American Digital Communications;NADC)、延伸時分多重存取(Extended Time Division Multiple Access;E-TDMA)、寬頻CDMA(Wideband CDMA;WCDMA)、CDMA2000、Wi-Fi、城市Wi-Fi(Municipal Wi-Fi;Muni Wi-Fi)、藍牙、數位增強無線電信(Digital Enhanced Cordless Telecommunications;DECT)、無線通用串列匯流排(Wireless Universal Serial Bus;無線USB)、具有無縫交遞正交分頻多工的快速低延遲存取(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing;Flash-OFDM)、IEEE 802.20、通用封包無線電服務(General Packet Radio Service;GPRS)、iBurst、無線寬頻帶(Wireless Broadband;WiBro)、WiMAX、高級WiMAX、通用行動電信服務分時雙工(Universal Mobile Telecommunication Service-Time Division Duplex;UMTS-TDD)、高速封包存取(High Speed Packet Access;HSPA)、演進資料最佳化(Evolution Data Optimized;EVDO)、高級長期演進(Long Term Evolution-Advanced;LTE-Advanced)、多通道多點分佈服務(Multichannel Multipoint Distribution Service;MMDS)、第五代無線(Fifth-Generation Wireless;5G)等等。
本說明書中所描述的主題及操作的實施例可以數位電子電路系統或以電腦軟體、韌體或硬體(包含本說明書中所揭露的結
構及其結構等效物)或以其中的一或多者的組合實施。本說明書中所描述的主題的實施例可實施為一或多個電腦程式,亦即經編碼於電腦儲存媒體上以供資料處理設備執行或控制資料處理設備的操作的電腦程式指令的一或多個模組。替代地或另外,程式指令可經編碼於人工產生的傳播信號(例如機器產生的電氣、光學或電磁信號)上,產生所述信號以對資訊進行編碼以用於傳輸至適合的接收器設備以用於由資料處理設備執行。電腦儲存媒體可為電腦可讀儲存裝置、電腦可讀儲存基底、隨機或串行存取記憶體陣列或裝置或其組合或包含於腦可讀儲存裝置、電腦可讀儲存基底、隨機或串行存取記憶體陣列或裝置或其組合中。此外,在電腦儲存媒體並非傳播信號時,電腦儲存媒體可為編碼於人工產生的傳播信號中的電腦程式指令的來源或目的地。電腦儲存媒體亦可為一或多個單獨實體部件或媒體(例如,多個CD、磁碟或其他儲存裝置)或包含於一或多個單獨實體部件或媒體中。此外,本說明書中所描述的操作可實施為由資料處理設備對儲存於一或多個電腦可讀儲存裝置上或自其他來源接收到的資料執行的操作。
雖然本說明書可含有許多特定實施細節,但實施細節不應視為對任何所主張的主題的範疇的限制,而應視為對特定實施例特定的特徵的描述。在本說明書中在單獨實施例的上下文中描述的某些特徵亦可在單個實施例中組合實施。相反地,在單個實施例的上下文中描述的各種特徵亦可單獨地或以任何適合子組合在多個實施例中實施。此外,儘管上文可將特徵描述為以某些組合起作用且最初甚至如此主張,但來自所主張的組合的一或多個特徵在一些情況下可自該組合刪除,且所主張的組合可針對子組合或
子組合的變體。
類似地,雖然在圖式中以特定順序來描繪操作,但不應將此理解為需要以所繪示的特定順序或以依序順序執行此類操作,或執行所有所示出的操作以達成期望的結果。在某些情形下,多任務及並行處理可為有利的。此外,上述實施例中的各種系統部件的分離不應理解為在所有實施例中需要此分離,且應理解,所描述程式部件及系統通常可一起整合於單個軟體產品中或封裝至多個軟體產品中。
因此,本文中已描述主題的特定實施例。其他實施例在以下申請專利範圍的範疇內。在一些情況下,申請專利範圍中所闡述的動作可按不同順序執行且仍達成期望的結果。此外,附圖中所描繪的製程不一定需要所繪示的特定順序或依序順序來達成期望的結果。在某些實施中,多任務及並行處理可為有利的。
如所屬領域中具有通常知識者將認識到,可跨廣泛範圍的應用修改及變化本文中所描述的新穎概念。因此,所主張的主題的範疇不應限於上文所論述的特定例示性教示中的任一者,而實際上由以下申請專利範圍限定。
100:實例螢幕空間
101:基元
B0、B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15:方塊
Claims (20)
- 一種用於處理螢幕空間的方塊的方法,所述方法由處理器來執行以下步驟,包括:基於第二批基元的方塊處理順序來判定第一批基元的方塊的方塊處理順序,所述第二批基元在所述第一批基元之前處理;基於針對所述第一批基元的所述方塊所判定的所述方塊處理順序來處理所述第一批基元的所述方塊;以及在所述第一批基元的所述方塊被處理時,更新所述方塊處理順序。
- 如請求項1所述的方法,更包括:基於在所述第一批基元的所述方塊處理時所更新的所述方塊處理順序來處理第三批基元的方塊,所述第三批基元在所述第一批基元之後;以及在所述第三批基元的所述方塊處理時,更新所述方塊處理順序。
- 如請求項2所述的方法,其中所述第三批基元的方塊處理方向與所述第一批基元的方塊處理方向相反。
- 如請求項1所述的方法,其中所述第一批基元的方塊處理方向與所述第二批基元的方塊處理方向相反。
- 如請求項1所述的方法,其中在所述第一批基元的所述方塊處理時更新所述方塊處理順序包括在所述第一批基元的方塊推送至圖形處理單元的後端處理部分時更新所述方塊處理順序。
- 如請求項1所述的方法,其中判定所述第一批基元 的所述方塊的所述方塊處理順序包括基於所述第二批基元的最近處理方塊至最久處理方塊順序來配置與所述第二批基元的方塊具有相同的螢幕空間的所述第一批基元的所述方塊。
- 如請求項1所述的方法,其中所述第一批基元包括n個方塊,且所述第二批基元包括n個方塊,n為整數,其中所述第二批基元的所述方塊處理順序包括所述第二批基元的所述n個方塊的最久處理方塊至最近使用方塊的順序,且其中判定所述第一批基元的所述方塊的所述方塊處理順序包括對與所述第二批基元的m個方塊具有相同的螢幕空間的所述第一批基元的m個方塊進行排序,以對應於所述第二批基元的所述m個方塊的所述方塊處理順序,m為小於或等於n的整數。
- 如請求項7所述的方法,其中所述第一批基元的方塊處理方向與所述第二批基元的方塊處理方向相反。
- 一種用於處理螢幕空間的方塊的方法,所述方法由處理器來執行以下步驟,包括:基於觀測到的方塊處理順序來判定第一批基元的方塊的方塊處理順序,所述第一批基元包括n個方塊,所述觀測到的方塊處理順序是基於第二批基元的最久處理方塊至最近使用方塊的順序,所述第二批基元包括n個方塊,且所述第二批基元在所述第一批基元之前處理,n為整數;以及基於針對所述第一批基元的所述方塊所判定的所述方塊處理順序來處理所述第一批基元的所述方塊。
- 如請求項9所述的方法,更包括在所述第一批基元的所述方塊處理時更新所述觀測到的方塊處理順序。
- 如請求項10所述的方法,其中判定所述第一批基元的所述方塊的所述方塊處理順序包括對與所述第二批基元的m個方塊具有相同的螢幕空間的所述第一批基元的m個方塊進行排序,以對應於所述第二批基元的所述m個方塊的所述方塊處理順序,其中m小於或等於n。
- 如請求項10所述的方法,更包括:基於在所述第一批基元的所述方塊處理時所更新的所述觀測到的方塊處理順序來處理第三批基元的方塊,所述第三批基元在所述第一批基元之後;以及在所述第三批基元的所述方塊處理時,更新所述觀測到的方塊處理順序。
- 如請求項12所述的方法,其中所述第三批基元的方塊處理方向與所述第一批基元的方塊處理方向相反。
- 如請求項10所述的方法,其中在所述第一批基元的所述方塊處理時更新所述方塊處理順序包括在所述第一批基元的方塊推送至圖形處理單元的後端處理部分時更新所述方塊處理順序。
- 如請求項9所述的方法,其中所述第一批基元的方塊處理方向與所述第二批基元的方塊處理方向相反。
- 一種用於處理螢幕空間的方塊的方法,所述方法由處理器來執行以下步驟,包括:基於第二批基元的方塊處理順序來判定第一批基元的方塊的方塊處理順序,所述第二批基元在所述第一批基元之前處理,所述第一批基元的所述方塊的所述方塊處理順序包括所述第一批基元 的所述方塊的排序,所述排序是基於所述第一批基元的所述方塊與所述第二批基元的最近處理方塊至最久處理方塊順序的時間接近度;基於針對所述第一批基元的所述方塊所判定的所述方塊處理順序來處理所述第一批基元的所述方塊;以及在所述第一批基元的所述方塊被處理時,更新所述方塊處理順序。
- 如請求項16所述的方法,更包括:基於在所述第一批基元的所述方塊處理時所更新的所述方塊處理順序來處理第三批基元的方塊,所述第三批基元在所述第一批基元之後;以及在所述第三批基元的所述方塊處理時,更新所述方塊處理順序。
- 如請求項17所述的方法,其中所述第三批基元的方塊處理方向與所述第一批基元的方塊處理方向相反。
- 如請求項16所述的方法,其中所述第一批基元包括n個方塊,且所述第二批基元包括n個方塊,n為整數,且其中判定所述第一批基元的所述方塊的所述方塊處理順序更包括對與所述第二批基元的m個方塊具有時間接近度的所述第一批基元的m個方塊進行排序,m為小於或等於n的整數。
- 如請求項19所述的方法,其中所述第一批基元的方塊處理方向與所述第二批基元的方塊處理方向相反。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063028553P | 2020-05-21 | 2020-05-21 | |
US63/028,553 | 2020-05-21 | ||
US17/099,767 US11538221B2 (en) | 2020-05-21 | 2020-11-16 | Re-reference aware tile walk order for primitive binner |
US17/099,767 | 2020-11-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202213266A TW202213266A (zh) | 2022-04-01 |
TWI827916B true TWI827916B (zh) | 2024-01-01 |
Family
ID=78607951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110108647A TWI827916B (zh) | 2020-05-21 | 2021-03-11 | 用於處理螢幕空間的方塊的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11538221B2 (zh) |
KR (1) | KR20210144565A (zh) |
CN (1) | CN113703701A (zh) |
TW (1) | TWI827916B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130076761A1 (en) * | 2011-09-22 | 2013-03-28 | Arm Limited | Graphics processing systems |
US20140118362A1 (en) * | 2012-10-26 | 2014-05-01 | Nvidia Corporation | Barrier commands in a cache tiling architecture |
US20160371873A1 (en) * | 2013-03-29 | 2016-12-22 | Advanced Micro Devices, Inc. | Hybrid render with preferred primitive batch binning and sorting |
TW201737207A (zh) * | 2014-04-05 | 2017-10-16 | 新力電腦娛樂美國有限責任公司 | 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6784894B2 (en) | 2000-08-24 | 2004-08-31 | Sun Microsystems, Inc. | Mapping time-sorted to direction-sorted triangle vertices |
US8928676B2 (en) * | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
BR112014001026B1 (pt) * | 2011-07-15 | 2022-05-03 | Ge Video Compression, Llc | Codificação de matriz de amostra de baixo atrasdo |
US10169906B2 (en) | 2013-03-29 | 2019-01-01 | Advanced Micro Devices, Inc. | Hybrid render with deferred primitive batch binning |
US9779533B2 (en) * | 2014-01-27 | 2017-10-03 | Nvidia Corporation | Hierarchical tiled caching |
US9799088B2 (en) | 2014-08-21 | 2017-10-24 | Qualcomm Incorporated | Render target command reordering in graphics processing |
US9619937B2 (en) | 2015-03-05 | 2017-04-11 | Arm Limited | Methods and apparatus for processing computer graphics primitives in tile-based graphics rendering system |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
KR102618560B1 (ko) * | 2016-06-15 | 2023-12-27 | 삼성전자주식회사 | 경로 렌더링을 수행하는 방법 및 장치 |
US20190220411A1 (en) | 2018-01-17 | 2019-07-18 | Qualcomm Incorporated | Efficient partitioning for binning layouts |
US10409359B2 (en) | 2018-01-17 | 2019-09-10 | Qualcomm Incorporated | Dynamic bin ordering for load synchronization |
US11195326B2 (en) | 2018-09-21 | 2021-12-07 | Advanced Micro Devices, Inc. | Method and system for depth pre-processing and geometry sorting using binning hardware |
GB2578320B (en) | 2018-10-23 | 2023-07-05 | Advanced Risc Mach Ltd | Graphics processing |
-
2020
- 2020-11-16 US US17/099,767 patent/US11538221B2/en active Active
-
2021
- 2021-03-11 TW TW110108647A patent/TWI827916B/zh active
- 2021-03-31 KR KR1020210041880A patent/KR20210144565A/ko unknown
- 2021-05-11 CN CN202110509480.4A patent/CN113703701A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130076761A1 (en) * | 2011-09-22 | 2013-03-28 | Arm Limited | Graphics processing systems |
US20140118362A1 (en) * | 2012-10-26 | 2014-05-01 | Nvidia Corporation | Barrier commands in a cache tiling architecture |
US20160371873A1 (en) * | 2013-03-29 | 2016-12-22 | Advanced Micro Devices, Inc. | Hybrid render with preferred primitive batch binning and sorting |
TW201737207A (zh) * | 2014-04-05 | 2017-10-16 | 新力電腦娛樂美國有限責任公司 | 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體 |
Also Published As
Publication number | Publication date |
---|---|
CN113703701A (zh) | 2021-11-26 |
KR20210144565A (ko) | 2021-11-30 |
TW202213266A (zh) | 2022-04-01 |
US11538221B2 (en) | 2022-12-27 |
US20210366188A1 (en) | 2021-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12073302B2 (en) | Neural processor | |
US9373308B2 (en) | Multi-viewport display of multi-resolution hierarchical image | |
JP5006390B2 (ja) | 算術および初等関数ユニットを有する図形プロセッサ | |
KR102048885B1 (ko) | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 | |
EP4235421A2 (en) | Controlling operation of a gpu | |
US11847492B2 (en) | Controlling scheduling of a GPU | |
CN104850393B (zh) | 并行平铺引擎管线中的图元块的处理 | |
EP2945126A2 (en) | Graphics processing method and graphics processing apparatus | |
TWI827916B (zh) | 用於處理螢幕空間的方塊的方法 | |
US11080924B2 (en) | Optimized computation of perspective interpolants | |
KR20210090088A (ko) | 근사 삼중선형 필터링 | |
US11030976B2 (en) | Image combination device and display system comprising the same | |
CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
CN117785759B (zh) | 数据存储方法、数据读取方法、电子设备和存储介质 | |
US11776599B2 (en) | Encoded enable clock gaters | |
US11971949B2 (en) | Flexible-access instructions for efficient access of ML data | |
US20220156551A1 (en) | Method of transmitting and merging data | |
KR102718597B1 (ko) | 캐시 상태 테이블을 사용하는 캐시 관리를 위한 시스템 및 방법 | |
KR20220012172A (ko) | 기회적 바이패싱 및 다이나믹 큐 리사이징을 사용하는 향상된 얼리 커버리지 디스카드 | |
TW202211153A (zh) | 圖形處理單元及排除非活性中間呈現標靶物的資料的方法 | |
KR20210128335A (ko) | 효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘 | |
KR20090063556A (ko) | 영역 선택을 이용한 브라우징 방법 및 이를 이용하는이동통신 단말기 |