TWI533672B - 使用取樣子集的多取樣表面處理 - Google Patents

使用取樣子集的多取樣表面處理 Download PDF

Info

Publication number
TWI533672B
TWI533672B TW102142874A TW102142874A TWI533672B TW I533672 B TWI533672 B TW I533672B TW 102142874 A TW102142874 A TW 102142874A TW 102142874 A TW102142874 A TW 102142874A TW I533672 B TWI533672 B TW I533672B
Authority
TW
Taiwan
Prior art keywords
sampled
data
sample
pixel
unit
Prior art date
Application number
TW102142874A
Other languages
English (en)
Other versions
TW201440495A (zh
Inventor
亞歷山大 列夫 敏金
亨利 派克德 莫爾頓
尤里 烏拉爾斯基
艾瑞克 布萊恩 林
戴爾L 柯克藍
史蒂芬 詹姆斯 海因里希
瑞 曼紐爾 巴斯托斯
埃米特M 基加瑞夫
傑佛瑞 艾倫 博爾茲
泰森 伯格藍德
派翠克R 布朗恩
Original Assignee
輝達公司
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 輝達公司 filed Critical 輝達公司
Publication of TW201440495A publication Critical patent/TW201440495A/zh
Application granted granted Critical
Publication of TWI533672B publication Critical patent/TWI533672B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Description

使用取樣子集的多取樣表面處理
本發明有關圖形處理,且更具體地,有關多取樣處理。
當使用多取樣技術來產生抗鋸齒影像時,每一像素的處理數量可能會隨著每一像素的取樣數量增加而增加。除了增加處理之外,也會增加一圖形處理器中不同處理單元之間傳輸資料所消耗的頻寬數量。增加處理需求及增加頻寬消耗可能導致降低圖形處理效能及/或提高系統成本。
因此,必須解決增加的處理與增加的頻寬消耗的問題、及/或有關先前技術的其他問題。
本發明提供一種用於多取樣處理之系統、方法、及電腦程式產品。多取樣像素資料會被接收及分析,以找出一多取樣像素中具有相同資料的取樣子集,使得一子集中之一取樣的資料代表該子集中所有取樣的多取樣像素資料。一編碼狀態會被產生,其表示該多取樣像素中哪些取樣被併入該等子集的每一者之中。
210‧‧‧像素
211‧‧‧像素
212‧‧‧像素
213‧‧‧像素
250‧‧‧處理單元
255‧‧‧接合單元
256‧‧‧接合單元
258‧‧‧接合緩衝器
259‧‧‧接合緩衝器
260‧‧‧縱橫交叉網路
265‧‧‧第二層快取
270‧‧‧訊框緩衝記憶體
275‧‧‧覆蓋率追蹤單元
276‧‧‧覆蓋率追蹤單元
280‧‧‧快取
281‧‧‧快取
285‧‧‧載入請求單元
286‧‧‧載入請求單元
290‧‧‧載入/儲存單元
500‧‧‧分析單元
550‧‧‧處理單元
555‧‧‧接合單元
556‧‧‧接合單元
558‧‧‧接合緩衝器
559‧‧‧接合緩衝器
565‧‧‧第二層快取
575‧‧‧覆蓋率追蹤單元
576‧‧‧覆蓋率追蹤單元
580‧‧‧快取
581‧‧‧快取
585‧‧‧載入請求單元
586‧‧‧載入請求單元
700‧‧‧平行處理單元
702‧‧‧系統匯流排
704‧‧‧記憶體
705‧‧‧輸入/輸出單元
710‧‧‧主介面單元
715‧‧‧網格管理單元
720‧‧‧工作分配單元
750‧‧‧串流多處理器
780‧‧‧記憶體介面
805‧‧‧指令快取
810‧‧‧排程單元
815‧‧‧指令派遣單元
820‧‧‧暫存器檔
850‧‧‧處理核
851‧‧‧雙精確度單元
852‧‧‧特殊功能單元
853‧‧‧載入/儲存單元
840‧‧‧共用記憶體/L1快取
880‧‧‧互連網路
900‧‧‧系統
902‧‧‧中央處理器
902‧‧‧通訊匯流排
904‧‧‧主記憶體
906‧‧‧圖形處理器
908‧‧‧顯示器
910‧‧‧輔助儲存體
912‧‧‧輸入裝置
第一圖為根據一實施例之用於處理多取樣資料之方法的流程圖;第二A圖為根據一實施例之像素的取樣位置的概念圖;第二B圖例示根據一實施例之多取樣處理期間所使用的各種處理單元與互連的圖式;第二C圖例示根據一實施例之顯示在第二B圖的一處理單元的圖式;第二D圖例示根據一實施例之顯示在第二B圖的載入/儲存 單元的另一圖式;第三圖例示根據一實施例之用於處理多取樣資料之方法的另一流程圖;第四A圖例示根據一實施例之用於接合處理多取樣資料之方法的流程圖;第四B圖例示根據一實施例之用於執行顯示在第三圖的一方法步驟之方法的流程圖;第五A圖例示根據一實施例之顯示在第二B圖的處理單元的另一圖式;第五B圖例示根據一實施例之顯示在第二B圖的載入/儲存單元的另一圖式;第五C圖例示根據一實施例之於第二B圖所示之多取樣處理期間所使用的各種處理單元與互連的另一圖式;第六A圖例示根據一實施例之用於處理多取樣資料之方法的另一流程圖;第六B圖例示根據一實施例之用於接合處理多取樣資料之方法的另一流程圖;第七圖例示根據一實施例之一平行處理單元(PPU);第八圖例示根據一實施例之第五圖的串流多處理器;及第九圖例示可實施各種前面實施例之各種架構及/或功能的示範性系統。
當習知的圖形處理器構成用以產生多取樣表面時,被分派用以儲存該多取樣像素資料的記憶體數量會根據每一像素所包括的取樣數量而增加。當每一像素的取樣數量增加時,用於讀取、寫入、及傳送該多取樣像素資料所消耗的頻寬也會增加。
當一像素之每一取樣的資料相同時,可以儲存單一取樣以代表一多取樣像素的所有取樣或一多取樣像素之一部分的所有取樣,其中,該多取樣像素部分包括兩或多個取樣。一編碼狀態可以與該多取樣像素相 關聯,指示該單一取樣代表所有取樣,即是,1SPP(每一像素部分有一取樣)。在一實施例中,像素會聚集成色塊,且當該色塊中的所有多取樣像素可各自使用一個別單一取樣來表示時,1SPP的編碼狀態則可以與整個色塊相關聯。當編碼狀態為1SPP時,用於儲存該多取樣像素資料的記憶體佔用區會縮減且用於讀取、寫入、及傳送該多取樣像素資料所消耗的頻寬也會縮減。再者,在某些情況中,一處理單元可以構成處理該單一取樣,用以產生該單一取樣的經處理像素資料,以代表兩或多個取樣甚至一像素之所有取樣的經處理多取樣像素資料。因此,當編碼狀態為1SPP時,也可以降低用以處理一多取樣像素所需要的處理能力。
第一圖例示根據一實施例之用於多取樣處理之方法100的流程圖。在步驟105,多取樣像素資料會被接收。在步驟110,可以決定有關該多取樣像素資料的編碼狀態。在一實施例中,該多取樣像素資料會被分析,用以決定該編碼狀態。在另一實施例中,該編碼狀態會伴隨該多取樣像素資料接收。在步驟115,一多取樣像素之一取樣的資料與該編碼狀態提供給一處理單元。在步驟120,該像素之該一取樣會被該處理單元處理,用以產生該一取樣之經處理資料。該一取樣之經處理資料代表該多取樣像素之所有取樣或至少一部分(即是,整個多取樣像素的所有取樣或該多取樣像素之一部分的所有取樣)的經處理多取樣像素資料。
現將提出關於各種選擇性架構與特點的更多解釋性資訊,端視使用者的需求,可以藉其或無需藉其來實施前述基礎架構。應該強烈注意,下面資訊之提出僅為解釋之目的,而不應視為限制。任何下面特點皆可視情況併入、排除或不排除已述的其他特點。
第二A圖例示根據一實施例之像素210、211、212、213的取樣位置的概念圖200。當從多取樣表面讀取資料,而該多取樣表面具有一編碼狀態不是1SPP之每一像素有4個取樣時,對應位置A、B、C、及D的四個分離數值會儲存在每一像素的多取樣表面中。該多取樣表面可為一多取樣z值緩衝器或一多取樣顏色緩衝器。相反地,當一多取樣表面的編碼狀態為1SPP時,則僅儲存一數值,代表所有取樣(例如,取樣A、B、C、及D)的數值。
除了像素位準之外,1SPP編碼狀態亦可套用於像素的色塊,或甚至整個表面。一像素色塊可以包括在螢幕空間或記憶體中相鄰的一或多個像素。在儲存單元中可以指定色塊的大小,例如,256個位元組,而非像素的數量。所以,一色塊的像素數量可以根據多取樣模式而改變(即是,每一像素有更多取樣導致較小的色塊大小)。相同色塊的像素在螢幕空間中不必然要相鄰。在一實施例中,一像素色塊可大小化成對應可在一多執行緒圖形核內平行處理的像素數量。
如第二A圖所示,該等取樣位置可以散落(即是,分散)在每一像素內,以改善影像品質。在一實施例中,一取樣位置可以定位在每一像素的中央。其他多取樣像素模式可以包括每一像素有四個以上取樣或未及四個取樣。每一取樣的多取樣資料可以包括z值(深度)、顏色、圖紋座標、或有關圖形基元的其他屬性。
第二B圖例示根據一實施例之多取樣處理期間所使用的各種處理單元與互連的圖式220。一第二層快取265構成用以快取對應一多取樣表面之一部分的資料,用以在必要時讀取與寫入一訊框緩衝記憶體270,以滿足存取該多取樣表面的載入與儲存請求。第二層快取265可以直接耦合至訊框緩衝記憶體270;或者,第二層快取265可以透過一或多個中間單元(例如,記憶體控制器(未顯示))間接耦合至訊框緩衝記憶體270。
在一實施例中,第二層快取265儲存或取得有關該多取樣表面的編碼狀態。在一實施例中,該編碼狀態可儲存在訊框緩衝記憶體270之記憶體的每一頁的記憶體控制器內。第二層快取265透過一縱橫交叉網路260耦合至一載入/儲存單元290。在一實施例中,訊框緩衝記憶體270透過多記憶體介面介接該第二層快取265,而縱橫交叉網路260則構成用以在必要時於載入/儲存單元290與耦合至不同記憶體介面的多重第二層快取265之間傳送資料,以抵達訊框緩衝記憶體270中的對應記憶體位置。第五圖顯示關於該等記憶體介面的更多細節。多重載入/儲存單元290可以耦合在縱橫交叉網路260與構成用以處理像素資料的多重處理單元250之間。
第二層快取265可以構成透過縱橫交叉網路260提供僅具有一取樣的多取樣像素資料及1SPP的編碼狀態給載入/儲存單元290,而不是 構成在編碼狀態為1SPP時,複製一多取樣像素中所有取樣的取樣資料來提供多取樣像素資料給載入/儲存單元290。在縱橫交叉網路260上傳送每像素較少資料會消耗較少頻寬。因為較少資料在縱橫交叉網路260上傳輸,消耗的功率也較少。所以,令人滿意的方式係利用1SPP的編碼狀態來傳送多取樣像素資料。在一實施例中,第二層快取265可以構成以色塊大小增量(1SPP格式或非1SPP格式)透過縱橫交叉網路260傳送該多取樣像素資料給載入/儲存單元290。因此,載入/儲存單元290可以構成採用色塊大小增量來儲存多取樣像素資料。在其他實施例中,第二層快取265構成基於接收自載入/儲存單元290的請求以傳送一多取樣像素中的該等取樣之一子集。
載入/儲存單元290構成當從處理單元250收到一載入請求時,提供多取樣像素資料給處理單元250。載入/儲存單元290亦構成用以從處理單元250接收經處理多取樣像素資料並且儲存該多取樣像素資料。載入/儲存單元290可以包括一緩衝器,用以在透過縱橫交叉網路260與第二層快取265輸出該經處理多取樣資料給訊框緩衝記憶體270之前,暫時儲存該經處理多取樣資料。在一實施例中,載入/儲存單元290的功能(至少部分)如同一快取,其構成用以將接收自第二層快取265的多取樣像素資料與接收自處理單元250的經處理多取樣像素資料緩衝儲存在單一緩衝器中。當緩衝器中的一登錄項無法在緩衝器用來儲存多取樣像素資料或經處理多取樣像素資料時,一或多個登錄項會透過縱橫交叉網路260與第二層快取265回寫至訊框緩衝記憶體270(即是,釋出)。當一登錄項未被接收自處理單元250的經處理多取樣像素資料寫入時,該登錄項可被置換且不釋出至第二層快取265。載入/儲存單元290的細節將配合第二C圖說明。
載入/儲存單元290接收該多取樣像素資料並且決定有關該多取樣像素資料的編碼狀態。當編碼狀態為1SPP時,一多取樣像素之一取樣的資料與該編碼狀態會提供給處理單元250。當編碼狀態並非1SPP時,載入/儲存單元290可構成將該多取樣像素的所有取樣或至少一部分的資料連同該編碼狀態一起提供給處理單元250。
在一實施例中,處理單元250可構成用以載入一多取樣像素 的單一取樣,而不是一多取樣像素的所有取樣,且倘若回傳該單一取樣而該單一取樣的編碼狀態為1SPP,處理單元250便處理該單一取樣。倘若回傳該單一取樣而該單一取樣的編碼狀態並非1SPP,處理單元250則接著載入該多取樣像素的其餘取樣並且處理該多取樣像素的所有取樣。藉由延遲載入其餘取樣,當該編碼狀態為1SPP且未載入其餘取樣時,便降低傳輸該多取樣像素資料所消耗的頻寬。在另一實施例中,倘若回傳該單一取樣而該單一取樣的編碼狀態並非1SPP,處理單元250發出一或多個額外取樣的一載入請求。
一包括對應該多取樣像素之取樣的遮罩之多取樣載入指令可用來載入一多取樣像素的單一取樣或用以載入該多取樣像素的一或多個額外取樣。在一實施例中,該多取樣載入指令指定一對應於一取樣的索引,以請求該取樣或一連串的取樣。當執行時,該多取樣載入指令可構成用以回傳對應該取樣的多取樣像素資料及一遮罩,該遮罩用以表示具有相同多取樣像素資料及/或該多取樣像素之編碼狀態的該多取樣像素中的其他取樣。
當編碼狀態為1SPP時,該多取樣像素的該一取樣會被處理單元250處理,用以產生該一取樣的經處理資料,其代表該多取樣像素中所有取樣或至少一部分的經處理多取樣像素資料。當編碼狀態並非1SPP時,該多取樣像素部分中的所有取樣會被處理,用以產生所有該等取樣之經處理資料。所以,當每像素的取樣數量為8時,則相較於編碼狀態為1SPP時,倘若編碼狀態並非1SPP,每像素的處理數量會是8x。當編碼狀態為1SPP時,可以成比例減少每像素的其他取樣數量之處理量。減少多取樣像素處理可改善效能且還可減少功率消耗。如有關第五A、五B、五C、六A、及六B圖所述,在其他實施例中,處理單元250可構成用以處理該等取樣的一子集,且處理單元250提供資訊(例如,每像素取樣遮罩或每像素部分取樣遮罩),用以表示哪些取樣是由輸出給載入/儲存單元290的經處理多取樣資料來表示。
當處理單元250構成用以執行一混合操作或一片段著色操作時,該多取樣像素會視為一目標像素,其結合來源像素資料用以產生該 多取樣像素之經處理資料。來源像素資料具有一多取樣像素中所有取樣的相同數值並非是不尋常的,使得該混合或著色器運算產生代表該經處理多取樣像素之所有取樣的單一取樣的經處理資料。在此情況中,處理單元250會在一儲存請求中提供該單一取樣之經處理資料連同1SPP編碼狀態給載入/儲存單元290。否則,當產生所有取樣的經處理資料時,處理單元250則在一儲存請求中提供所有取樣之經處理資料連同非1SPP編碼狀態給載入/儲存單元290。一包括對應該多取樣像素之取樣的遮罩之多取樣儲存指令可用來儲存一數值至一多取樣像素的一或多個取樣。
藉由提供編碼狀態及該等多取樣像素的資料可有效地實現傳送每一多取樣像素的較少資料及處理資料。針對載入運算及/或儲存運算,可以減少於縱橫交叉網路260中傳送資料所消耗的頻寬數量。相較於分派多重執行緒以產生編碼狀態為非1SPP之多取樣像素的資料,處理單元250可以分派單一處理執行緒以產生1SPP編碼狀態之多取樣像素的資料。在一實施例中,載入/儲存單元290可構成在縱橫交叉網路260上傳送資料至第二層快取265之前,將接收自處理單元250的該等多取樣像素的資料接合成一色塊。當資料的整個色塊傳送至第二層快取265時,載入/儲存單元290可以提供整個色塊的編碼狀態,而非個別多取樣像素的編碼狀態。
第二C圖例示根據一實施例之顯示在第二B圖的載入/儲存單元290的圖式。如第二C圖所示,在一實施例中,載入/儲存單元290包括一快取280、一載入請求單元285、一接合單元255、與一覆蓋率追蹤單元275。快取280接收一或多個多取樣像素的資料並且將資料儲存在快取登錄項中。該資料可以對應於一包括兩或多個多取樣像素的色塊。快取280可還儲存有關該資料的編碼狀態(針對每一色塊或每一多取樣像素)。在一實施例中,快取280可還儲存有關該資料的其他資訊,例如,每一像素的取樣數量(多取樣模式)及/或每像素取樣遮罩。載入請求單元285構成用以決定回傳給處理單元250的資料編碼狀態,以響應一載入請求。
在一實施例中,該編碼狀態連同該資料從第二層快取265接收,而且載入請求單元285將該編碼狀態連同與該資料一起提供給處理單元250。在另一實施例中,載入請求單元285不會從第二層快取265接收 編碼狀態,而且載入請求單元285構成用以比較一多取樣像素或該多取樣像素之一部分中不同取樣的資料的數值,並且在一多取樣像素的所有取樣具有相同數值時判定該編碼狀態是否為1SPP。否則,載入請求單元285便判定該編碼狀態為非1SPP。在一實施例中,第二層快取265構成用以比較一多取樣像素或該多取樣像素之一部分中不同取樣的資料的數值,並且判定每一像素或一像素色塊的編碼狀態,以提供該編碼狀態給載入/儲存單元290。如配合第五A、五B、五C、六A、及六B圖所述,在其他實施例中,第二層快取265及/或載入/儲存單元290可構成用以比較一多取樣像素或該多取樣像素之一部分中不同取樣的資料的數值,並且提供資訊(例如,一每像素取樣遮罩或每像素部分取樣遮罩),以表示哪些取樣是由分別輸出給載入/儲存單元290或處理單元250的經處理多取樣資料來表示。
載入請求單元285可構成用以產生一局部多取樣像素(即是,一多取樣像素的一部分)的編碼狀態,此端視多取樣模式而定(即是,用於一多取樣像素的取樣數量)。例如,當快取280的一快取線為32個位元組且一多取樣表面儲存每一多取樣像素的16個4位元組取樣時,該載入請求單元285可構成用以比較該多取樣像素的8個不同取樣並且判定該等8個取樣的編碼狀態。因此,每一16取樣多取樣像素可有兩編碼狀態,取樣的每一部分有一編碼狀態。換句話說,當一多取樣表面儲存每一多取樣像素的4個4位元組取樣時,該載入請求單元285可構成用以比較兩不同多取樣像素的4個不同取樣,並且判定該兩不同多取樣像素的編碼狀態。因此,編碼狀態的細微度可以根據載入請求單元285所進行的比較次數及/或快取線的大小而改變。
接合單元255從處理單元250接收多取樣像素之經處理資料及對應於該等多取樣像素的編碼狀態。接合單元255可以包括一接合緩衝器258,其中儲存該經處理資料。接合緩衝器258可構成用以儲存一或多個色塊的經處理資料;或者,當接合緩衝器258中所需要的儲存數量不足以儲存整個色塊的經處理資料時,則儲存一局部色塊的經處理資料。當接合緩衝器258儲存一個以上的色塊時,覆蓋率追蹤單元275構成用以追蹤每一色塊的覆蓋率。再者,當每一色塊的多取樣模式可以不同時,接合單元 255儲存表示每一色塊的多取樣模式的資訊。當寫入該接合緩衝器258中的登錄項時,一對應快取線或快取280中的一快取線之一部分則可能失效。
在一實施例中,接合緩衝器258被省略且該經處理資料儲存在快取280。換言之,接合緩衝器258具體實施為快取280內的登錄項,用於儲存該等經處理像素的資料。當接收自處理單元250的編碼狀態為1SPP時,該多取樣像素或該多取樣像素之一部分的所有取樣具有相同的數值。當取樣數量很高時,該1SPP編碼狀態可用於一多取樣像素的一部分。例如,當用以儲存一多取樣像素中所有取樣的資料所需要的位元組數量大於256個位元組或一快取線的大小時。
在一實施例中,覆蓋率追蹤單元275儲存每一多取樣像素的單一位元,當載入/儲存單元290收到該多取樣像素的一儲存請求時,便可以設定該位元。當設定一色塊的多取樣像素的所有位元時,該色塊中所有多取樣像素的儲存請求便被收到且該色塊為「滿載(full)」。在另一實施例中,覆蓋率追蹤單元275使用一計數器來追蹤一色塊的儲存運算的次數,用以判定是否已收到該色塊中所有多取樣像素的儲存請求。當一色塊為「滿載」時,該色塊的資料可從接合緩衝器258或快取280釋出至第二層快取265。當釋出該色塊時,用以儲存該色塊之資料的快取280中的登錄項可被標記為空白,且可清除對應該色塊的覆蓋率追蹤單元275中的位元。
當接合緩衝器258構成用以儲存一局部色塊時,當覆蓋率追蹤單元275表示已經收到針對該局部色塊中所有多取樣像素的儲存運算時,該局部色塊的經處理資料便可釋出。當釋出該局部色塊時,用以儲存該局部色塊之資料的快取280中的登錄項可標記為空白,而且可清除對應於該局部色塊的覆蓋率追蹤單元275中的位元。儲存多取樣像素群組的經處理資料的優點係,整群(例如,色塊)的單一編碼狀態可以輸出至第二層快取265,而不是輸出每一多取樣像素的一編碼狀態。
在特定情況下,一色塊可在該色塊中所有多取樣像素的經處理資料從處理單元250收到之前或當色塊並未「滿載」時由接合單元255釋出。第一種情況係,收到一「新」色塊的經處理資料而接合緩衝器258中的儲存體無法用以接合一新色塊。第二種情況係,該經處理資料係用於 所要接合的色塊已先收到的多取樣像素(即是,與該多取樣像素相關聯的位元被設定在覆蓋率追蹤單元275中)。接合單元255可釋出先前儲存用於該色塊的經處理資料,用以再次開始使用該新的經處理資料接合該色塊。或者,接合單元255可以比較該新的經處理資料與已儲存在接合緩衝器258中的經處理資料,且倘若該新的經處理資料等於該儲存的經處理資料的話,接合單元255可以丟棄該新的經處理資料(或者使用該新的經處理資料覆寫該儲存的經處理資料)並且避免釋出該色塊。當該新的經處理資料不符合該儲存的經處理資料時,接合單元255釋出該色塊,用以再次開始使用該新的經處理資料接合該色塊。或者,接合單元255可以釋出該儲存的經處理資料所佔用的接合緩衝器258之一或多個登錄項,並且將該新的經處理資料儲存在該等一或多個登錄項中。
當一不完全色塊(即是,並未「滿載」的色塊)釋出時,載入/儲存單元290輸出已接收自處理單元250的多取樣像素的經處理資料。接合單元255可以使用追蹤單元275中所保留的色塊覆蓋率資訊來決定哪些多取樣像素會釋出。當該經處理資料儲存在快取280時(即是,接合緩衝器258被省略),該經處理的像素資料可在發生快取遺失時釋出。在一實施例中,處理單元250構成用以平行處理一色塊內的多個取樣的資料,以讓載入/儲存單元290將取樣接合成可如同「滿載」色塊般釋出至第二層快取265的色塊。
被釋出的多取樣像素的經處理資料可全部具有相同的編碼狀態,或者,每一多取樣像素的一編碼狀態可以儲存在接合緩衝器258。不完全色塊的經處理資料可以連同單一編碼狀態、或連同每一多取樣像素的編碼狀態(每像素編碼狀態)或一多取樣像素之一部分的編碼狀態一起輸出。當所有多取樣像素有相同編碼狀態時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素中哪些像素要併入該釋出中。當保留每一多取樣像素的一編碼狀態時,接合單元255可以構成用以檢查該色塊的每像素編碼狀態。當所有每像素編碼狀態皆相同時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素中哪些像素要併入在該釋出中。
當至少一多取樣像素的每像素編碼狀態不同時,有關1sPP編碼狀態的經處理資料可以針對該個別多取樣像素之每一取樣被複製,而且所有經處理資料可以連同一色塊遮罩與一非1SPP的編碼狀態一起輸出。或者,該經處理資料可以採用兩子釋出方式輸出。第一子釋出可以包括有關1SPP編碼狀態的經處理資料及一對應的第一色塊遮罩。第二子釋出可以包括有關非1SPP編碼狀態的經處理資料及一對應的第二色塊遮罩。最後,該經處理資料可以連同每像素編碼狀態與一色塊遮罩一起輸出。
第二D圖例示根據一實施例顯示在第二B圖的載入/儲存單元290的另一圖式。如第二D圖所示,在一實施例中,載入/儲存單元290包括一快取281、一載入請求單元286、一接合單元256、與一覆蓋率追蹤單元276。快取281實質執行與前述快取280相同的功能。然而,快取281構成用以從處理單元250接收經處理的多取樣像素資料。在一實施例中,當接收自處理單元250的該經處理的多取樣像素資料具有1SPP的編碼狀態時,該經處理的多取樣像素資料會針對該多取樣像素或該多取樣像素之一部分中的所有取樣被複製,並且儲存在快取281中。當構成依此方式操作時,編碼狀態便不需要儲存在快取281中。
在一實施例中,接合單元256構成用以監督收自處理單元250而對快取281寫入,並且更新覆蓋率追蹤單元276所保留的色塊覆蓋遮罩。當一色塊為「滿載」時,接合單元256從快取281讀取色塊資料。用以儲存該色塊之資料的快取281中的登錄項可標記為空白,而且當釋出該色塊時,可清除對應於該色塊的覆蓋率追蹤單元276中的位元。
在一實施例中,當被釋出的經處理資料的編碼狀態為非1SPP時,接合單元256構成用以分析該經處理資料。接合單元256構成用以比較每一多取樣像素或每一多取樣像素之一部分中不同取樣的經處理資料的數值,並且決定每一像素或一像素色塊的編碼狀態,以提供該編碼狀態給第二層快取265。當執行分析時,接合緩衝器259可構成用以儲存不同取樣的經處理資料。當分析該經處理資料時,接合緩衝器259亦可構成用以儲存每一多取樣像素或每一多取樣像素之一部分的編碼狀態。
當接合緩衝器259構成用以輸出一局部色塊時,倘若覆蓋率 追蹤單元276表示已經收到該局部色塊中所有多取樣像素的儲存運算時,該局部色塊的經處理資料便可釋出。當釋出該局部色塊時,用以儲存該局部色塊之資料的快取281中的登錄項可標記為空白,而且可清除對應於該局部色塊的覆蓋率追蹤單元276中的位元。
在特定情況下,一色塊可在該色塊中所有多取樣像素的經處理資料從處理單元250收到之前或當色塊並未「滿載」時由接合單元255釋出。一第一種情況係,收到一「新」色塊的經處理資料而快取281中的儲存體無法用以接合一新色塊。第二種情況係,該經處理資料係用於針對所要接合的色塊已先收到的多取樣像素(即是,有關該多取樣像素的位元設定在覆蓋率追蹤單元275中)。接合單元256可釋出先前儲存用於該色塊的經處理資料,用以再次開始使用該新的經處理資料接合該色塊。或者,接合單元256可以釋出該儲存的經處理資料所佔用的快取281中的一或多個登錄項,並且將該新的經處理資料儲存在該等一或多個登錄項中。
當一不完全色塊(即是,並未「滿載」的色塊)釋出時,載入/儲存單元290輸出已接收自處理單元250的多取樣像素的經處理資料。接合單元256可以使用追蹤單元276中所保留的色塊覆蓋率資訊來決定哪些多取樣像素會被釋出。該經處理的像素資料可在快取281中發生快取遺失時釋出。在一實施例中,處理單元250構成用以平行處理一色塊內取樣的資料,以讓載入/儲存單元290將取樣接合成可如同「滿載」色塊般而釋出至第二層快取265的色塊。
被釋出的多取樣像素的經處理資料可全部具有相同的編碼狀態,或者,每一多取樣像素的一編碼狀態可以儲存在接合緩衝器259或快取281。不完全色塊的經處理資料可以連同單一編碼狀態、或連同每一多取樣像素(每像素編碼狀態)或一多取樣像素之一部分的編碼狀態一起輸出。當所有多取樣像素具有相同編碼狀態時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素中哪些像素要併入該釋出中。當保留每一多取樣像素的一編碼狀態時,接合單元256可以構成用以檢查該色塊的每像素編碼狀態。當所有每像素編碼狀態皆相同時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素 中哪些像素要併入該釋出中。
當至少一多取樣像素的每像素編碼狀態不同時,有關1SPP編碼狀態的經處理資料可以針對該個別多取樣像素之每一取樣被複製,且所有經處理資料可以連同一色塊遮罩與一非1SPP的編碼狀態一起輸出。或者,該經處理資料可以採用兩子釋出方式輸出。第一子釋出可以包括有關1SPP編碼狀態的經處理資料及一對應的第一色塊遮罩。第二子釋出可以包括有關非1SPP編碼狀態的經處理資料及一對應的第二色塊遮罩。最後,該經處理資料可以連同每像素編碼狀態與一色塊遮罩一起輸出。
第三圖例示根據一實施例之用於處理多取樣資料之方法300的另一流程圖。方法300所示的步驟可由一著色器程式來實施,該著色器程式則是藉由一圖形處理器執行。在步驟301,載入/儲存單元290接收多取樣像素資料。在步驟305,載入/儲存單元290判定有關該多取樣像素資料的編碼狀態是否為1SPP,且若是,在步驟310,載入/儲存單元290提供每一多取樣像素、或一多取樣像素之一部分之一取樣的資料、與1SPP編碼狀態至處理單元250。
在一實施例中,載入/儲存單元290接收該等多取樣像素的編碼狀態與多取樣像素資料。在另一實施例中,如配合第四B圖的進一步詳細說明,載入/儲存單元290構成用以執行該多取樣像素資料的分析,以判定該多取樣像素資料是否可以使用1SPP格式來編碼。在步驟305,當載入/儲存單元290藉由分析該多取樣像素資料而判定該多取樣像素資料是否可以使用1SPP格式來編碼時,編碼狀態被設定為1SPP。在步驟330,該像素的該一取樣是由處理單元250處理,用以產生該像素之所有取樣的經處理資料。
在步驟305,倘若載入/儲存單元290判定有關該多取樣像素資料的編碼狀態為非1SPP,則在步驟315,載入/儲存單元290可以提供每一多取樣像素或每一多取樣像素部分之所有取樣的資料、與編碼狀態至處理單元250。在步驟315,編碼狀態設定為非1SPP且連同每一多取樣像素或每一多取樣像素部分之所有取樣的資料輸出至處理單元250。在步驟335,處理單元250處理每一多取樣像素或每一多取樣像素部分之所有取樣 的資料。
在步驟340,處理單元250基於該經處理資料之代表將編碼狀態設定為1SPP或非1SPP。在步驟345,處理單元250輸出每一多取樣像素或每一多取樣像素部分的經處理資料連同編碼狀態至載入/儲存單元290。該經處理資料可以包括該一取樣的資料、或一多取樣像素之所有取樣的資料、或一多取樣像素部分之所有取樣的資料。
第四A圖例示根據一實施例之用於接合處理多取樣資料之方法400的流程圖。第四A圖所示的步驟雖然描述由載入/儲存單元290來實施;不過,載入/儲存單元290、第二層快取265、或處理單元250之一或多者可以構成用以實施第四A圖所示的步驟。該等步驟是在第二C圖所示的載入/儲存單元290的背景中說明。該等步驟亦可由第二D圖所示的載入/儲存單元290來實施,使用快取281儲存該經處理資料,而不是接合緩衝器258。
在步驟405,載入/儲存單元290從處理單元250接收一多取樣像素的經處理資料。在步驟410,載入/儲存單元290使用該經處理資料來檢查處理單元250所提供的編碼狀態,且判定該編碼狀態是否為1SPP。當編碼狀態為非1SPP時,載入/儲存單元290則在步驟412輸出該經處理資料給第二層快取265。在另一實施例中,當編碼狀態為非1SPP時,載入/儲存單元290將所有取樣的經處理資料儲存在接合緩衝器258。當整個色塊從接合緩衝器258釋出時,載入/儲存單元290接著分析該經處理資料,用以判定整個色塊的經處理資料是否可以每一多取樣像素的單一取樣來表示。配合第四B圖所述的技術可以用來執行該分析。
在步驟410,倘若編碼狀態為1SPP,則在步驟415,載入/儲存單元290判定是否因為該多取樣像素不在已儲存於接合緩衝器258中的目前色塊內而需要一新色塊來儲存該經處理資料,而若否,載入/儲存單元290執行步驟420。倘若需要一新色塊,則在步驟418,在載入/儲存單元290執行步驟420之前,目前色塊的經處理資料會被釋出至第二層快取265,且該色塊覆蓋率會在覆蓋率追蹤單元275中被清除。在步驟415,倘若不需要一新色塊來儲存該經處理資料,則在步驟420,載入/儲存單元290 會將該多取樣像素的經處理資料儲存在接合緩衝器258中。在步驟422,載入/儲存單元290更新已儲存在覆蓋率追蹤單元275中的色塊覆蓋率,且載入/儲存單元290執行步驟430。
在步驟430,載入/儲存單元290判定儲存在接合緩衝器258中的色塊是否被完全覆蓋,且若是,該已完全覆蓋色塊的經處理資料會被釋出至第二層快取265,且該色塊覆蓋率會在覆蓋率追蹤單元275中被清除,且載入/儲存單元290結束處理在步驟405收到的經處理多取樣像素資料。當接合緩衝器258構成用以儲存一局部色塊而不是完整色塊時,配合第四A圖所述的步驟亦可於一局部色塊中執行。
第四B圖例示根據一實施例之用於執行第三圖所示方法300的步驟305之方法的流程圖。第四B圖所示的步驟雖然描述是由載入/儲存單元290來執行;不過,載入/儲存單元290、第二層快取265、或處理單元250之一或多者可以構成用以執行第四B圖所示的步驟。
在步驟440,載入/儲存單元290判定一1SPP的編碼狀態是否連同該多取樣像素資料收到,且若是,該載入/儲存單元290執行步驟310。否則,在步驟445,載入/儲存單元290分析該多取樣像素資料,用以判定該多取樣像素資料是否可以使用1SPP格式來編碼。在一實施例中,載入/儲存單元290比較每一多取樣像素或一多取樣像素之一部分中所有取樣的數值,用以在儲存像素資料於快取280之前,判定接收自第二層快取265的一像素資料色塊是否能夠由單一取樣來表示。在另一實施例中,載入/儲存單元290比較從快取280讀出用以輸出至處理單元250的每一多取樣像素中所有取樣的數值,用以在輸出該像素資料至處理單元250之前,判定該資料是否能夠由單一取樣來表示。在步驟450,倘若載入/儲存單元290判定該多取樣像素資料可以使用1SPP格式來編碼,則載入/儲存單元290執行步驟310。否則,載入/儲存單元290執行步驟315。
當一像素的每一取樣的資料皆相同時,該1SPP編碼狀態可以用來縮小用以儲存該多取樣像素資料的記憶體佔用區,並且還縮減用以讀取、寫入、及傳送該多取樣像素資料所消耗的頻寬。再者,在某些情況中,一處理單元(例如,處理單元250)還可構成用以處理該單一取樣以產生 該單一取樣之經處理多取樣像素資料,其代表一多取樣像素中的兩或多個取樣、或甚至所有取樣之經處理的多取樣像素資料。
使用取樣子集之多取樣表面處理
除了1SPP與非1SPP的編碼狀態之外,還可以提供或決定一編碼狀態,其允許一多取樣像素的取樣子集具有相同的資料數值,但卻不需要一多取樣像素中的所有取樣具有相同的資料數值。此一編碼狀態稱為一子集編碼狀態。換言之,當該編碼狀態為子集時,單一取樣的資料可儲存,其代表包括該單一取樣的一多取樣像素子集中所有取樣的多取樣像素資料。該多取樣像素資料會被分析用以找出一多取樣像素的取樣子集,該等取樣子集可在使用該子集編碼狀態時具有相同數值。
每一子集包括至少一取樣且該子集編碼狀態則表示哪些取樣要被併入一多取樣像素的一子集中。例如,子集編碼狀態可包括一每像素取樣遮罩,其表示被併入該子集中的多取樣像素的取樣。一般來說,子集編碼狀態係與個別的多取樣像素有關。然而,子集的編碼狀態亦可用於多取樣像素資料的整個色塊或局部色塊。
第五A圖例示根據一實施例顯示之顯示在第二B圖之載入/儲存單元290的另一圖式。如第五A圖所示,在一實施例中,載入/儲存單元290包括一快取580、一載入請求單元585、一接合單元555、及一覆蓋率追蹤單元575。快取580實質執行與前述快取280相同的功能;例外的係,儲存在快取之任何編碼狀態可以還包括該子集編碼狀態的每像素取樣遮罩。
載入請求單元585至少執行前述載入請求單元285的功能。載入請求單元585還包括一分析單元500,其可構成用以分析該多取樣像素資料,以判定該多取樣像素資料是否可使用1SPP格式來編碼,如前述。除此之外,分析單元500還可構成用以分析該多取樣像素資料,以判定該多取樣像素資料是否可以使用一子集編碼狀態來編碼。更具體地,分析單元500可以產生每一取樣子集的一每像素取樣遮罩,其中,一子集中的所有取樣能夠藉由該子集中的單一取樣來表示,即是,該子集中的取樣具有相同 的資料。分析單元500可以決定輸出至處理單元250的編碼狀態。在一實施例中,該編碼狀態會連同來自第二層快取265的資料一起接收,而載入請求單元585則提供該編碼狀態連同該資料給處理單元250。
接合單元555至少執行如前述之接合單元255的功能。接合單元555從處理單元250接收多取樣像素的經處理資料及對應該等多取樣像素的編碼狀態。接合單元555可以包括一接合緩衝器558,其中儲存該經處理資料。當編碼狀態為子集時,接合緩衝器558還可構成用以儲存取樣子集的每像素取樣遮罩。或者,該等每像素取樣遮罩可以儲存在覆蓋率追蹤單元575中,而且覆蓋率追蹤單元575可構成用以追蹤多取樣像素覆蓋率以及色塊(或局部色塊)覆蓋率。該等多取樣覆蓋遮罩可以利用逐位元式OR運算來合併。當設定用於一多取樣像素的已儲存多取樣覆蓋遮罩的所有位元時,該多取樣像素則被完全覆蓋。然而,倘若接合單元555構成用以輸出經處理多取樣像素資料與子集的編碼狀態,應分開儲存每一子集之個別的每像素覆蓋遮罩。在一實施例中,一每像素取樣遮罩連同每一子集之經處理多取樣像素資料儲存在接合緩衝器558中。
接合單元555可以還包括前述的分析單元500,其可構成用以分析該多取樣像素資料,用以判定該多取樣像素資料是否可以使用1SPP、非1SPP、或子集編碼狀態來編碼。分析單元500可以決定輸出至第二層快取265的編碼狀態。在一實施例中,該編碼狀態會連同來自處理單元250的資料一起接收,而接合單元555則提供該編碼狀態連同該經處理資料給第二層快取265。
當收到一多取樣像素的經處理多取樣資料(其已經接收用於一要接合的色塊)時(即是,有關該多取樣像素的至少一位元設定在儲存於該覆蓋率追蹤單元575中的每像素取樣覆蓋遮罩),倘若該新的經處理資料等於該已儲存的經處理資料,當該多取樣像素的編碼狀態為子集時,便可以合併該多取樣資料。否則,該新的經處理資料會與該已儲存的經處理資料分開儲存,而且已儲存在該覆蓋率追蹤單元575中的每像素取樣覆蓋遮罩會被更新,以合併該新的每像素取樣覆蓋遮罩與該已儲存的每像素取樣覆蓋遮罩。
當一色塊中的至少一多取樣像素的每像素編碼狀態不同時,有關1SPP編碼狀態的經處理資料可以針對該個別多取樣像素之每一取樣被複製,且有關一子集編碼狀態的經處理資料可以針對該個別子集之每一取樣被複製。接著,所有該經處理資料可以連同一色塊遮罩與一非1SPP的編碼狀態一起輸出。或者,該經處理資料可以在兩或三次子釋出中輸出。第一子釋出可以包括有關1SPP編碼狀態的經處理資料及一對應的第一色塊遮罩。第二子釋出可以包括有關非1SPP編碼狀態的經處理資料及一對應的第二色塊遮罩。第三子釋出可以包括有關子集(其包括每像素取樣遮罩)編碼狀態的經處理資料及一對應的第三色塊遮罩。最後,該經處理資料可以連同每像素編碼狀態與一色塊遮罩一起輸出,其中,每一像素的編碼狀態可以包括子集的編碼狀態,該子集包括多個每像素取樣遮罩之兩者。
在一實施例中,接合緩衝器558儲存該經處理多取樣像素資料為一像素數值清單(x、y、經處理資料、每像素取樣遮罩)。x、y座標可以為色塊相關。該等數值儲存為一元組陣列,其中,一新進的經處理資料係儲存在下一可用索引中,而非相對於該多取樣像素的x,y位置。這可以讓對應一多取樣像素中不同取樣的相同經處理資料數值被「合併」在該接合緩衝器558的相同登錄項內。在一實施例中,當兩數值落在彼此的臨界值內時,該等資料數值便可被合併。在一實施例中,可以針對每一屬性指定一不同的臨界值。所以,顏色數值可以使用供合併z數值的一不同臨界值來合併。在一實施例中,接合緩衝器558可實施為一內容可定址記憶體(CAM,Content-Addressable Memory)。當釋出接合緩衝器558時,該元組清單可輸出傳送至第二層快取265,或者,儲存在接合緩衝器558的經處理資料可擴充為非1SPP編碼狀態的格式。
第五B圖例示根據一實施例顯示之於第二B圖顯示之載入/儲存單元290的另一圖式。如第五B圖所示,在一實施例中,載入/儲存單元290包括一快取581、一載入請求單元586、一接合單元556、及一覆蓋率追蹤單元576。載入請求單元586與覆蓋率追蹤單元576實質執行與前述載入請求單元585與覆蓋率追蹤單元575相同的功能。快取581實質執行與前述快取580相同的功能。然而,快取581構成用以從處理單元250處 接收經處理多取樣像素資料。在一實施例中,當接收自處理單元250的經處理多取樣像素資料具有1SPP的編碼狀態時,該經處理多取樣像素資料會針對該多取樣像素或該多取樣像素之一部分中的所有取樣被複製且儲存在快取581中。同樣地,當接收自處理單元250的經處理多取樣像素資料具有子集編碼狀態時,該經處理多取樣像素資料會針對該多取樣像素子集中的所有取樣被複製且儲存在快取581中。當構成依此方式操作時,編碼狀態便不需要儲存在快取581中。
在一實施例中,接合單元556構成用以偵督接收自處理單元250而對快取581的寫入,並且更新覆蓋率追蹤單元576所保留的色塊覆蓋遮罩與每像素取樣覆蓋遮罩。當一色塊為「滿載」時,接合單元556從快取581讀取色塊資料。當釋出該色塊時,用以儲存該色塊之資料的快取581中的登錄項可被標記為空白,且可清除對應該色塊的覆蓋率追蹤單元576中的位元。
在一實施例中,當被釋出的經處理資料的編碼狀態為非1SPP時,接合單元256(接合單元256內的分析單元500)構成用以分析該經處理資料。分析單元500構成用以比較每一多取樣像素中不同取樣的經處理資料的數值,並且決定每一像素或一像素色塊的編碼狀態,以提供該編碼狀態給第二層快取265。當執行分析時,接合緩衝器559可構成用以儲存不同取樣的經處理資料。當分析該經處理資料時,接合緩衝器559亦可構成用以儲存每一多取樣像素或每一多取樣像素之一部分的編碼狀態。
當接合緩衝器559構成用以輸出一局部色塊時,當覆蓋率追蹤單元576表示已經收到該局部色塊中所有多取樣像素之所有取樣的儲存運算時,該局部色塊的經處理資料便可釋出。當釋出該局部色塊時,用以儲存該局部色塊之資料的快取581中的登錄項可標記為空白,且可清除對應該局部色塊的覆蓋率追蹤單元576中的位元。
在特定情況下,一色塊可在該色塊中所有多取樣像素的經處理資料從處理單元250收到之前或當色塊未「滿載」時被接合單元556釋出。一第一種情況係,收到一「新」色塊的經處理資料而快取581中的儲存體無法用以接合一新色塊。第二種情況係,該經處理資料係用於針對所 要接合的色塊已收到的多取樣像素的一取樣(即是,有關該多取樣像素的該取樣的位元設定在覆蓋率追蹤單元576中)。接合單元556可釋出先前儲存用於該色塊的經處理資料,用以開始再次接合該色塊與該新的經處理資料。或者,接合單元556可以釋出由該儲存的經處理資料所佔用的快取581中的一或多個登錄項,並且將該新的經處理資料儲存在該等一或多個登錄項中。
當一不完全色塊(即是,並未「滿載」的色塊)釋出時,載入/儲存單元290輸出已接收自處理單元250的多取樣像素的經處理資料。接合單元556可以使用追蹤單元576中所保留的色塊覆蓋率資訊來決定哪些多取樣像素會釋出。該經處理的像素資料可在快取581中發生快取遺失時被釋出。在一實施例中,處理單元250構成用以平行處理一色塊內取樣的資料,以讓載入/儲存單元290將取樣接合成色塊,其可以如同「滿載」色塊般被釋出至第二層快取265。
aaa被釋出的多取樣像素的經處理資料可全部具有相同的編碼狀態,或者,可以在接合緩衝器559或快取581中儲存每一多取樣像素或一多取樣像素之每一取樣子集的一編碼狀態。不完全色塊的經處理資料可以連同單一編碼狀態、或連同每一多取樣像素的編碼狀態(每像素編碼狀態)、或一多取樣像素之取樣子集一起輸出。當所有多取樣像素具有相同編碼狀態時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素中哪些像素要被併入該釋出中。當保留每一多取樣像素的編碼狀態時,接合單元556可以構成用以檢查該色塊的每像素編碼狀態或每子集編碼狀態。當所有每像素編碼狀態相同時,該經處理資料可以連同一色塊遮罩一起輸出,該色塊遮罩表示該等多取樣像素中哪些像素要被併入該釋出中。當編碼狀態為子集時,每像素取樣遮罩將被接合單元556輸出。
當一色塊中的至少一多取樣像素的每像素編碼狀態不同時,有關1SPP編碼狀態的經處理資料可以針對該個別多取樣像素之每一取樣被複製,而有關一子集編碼狀態的經處理資料可以針對該個別子集之每一取樣被複製。接著,所有經處理資料可以連同一色塊遮罩與一非1SPP的 編碼狀態一起輸出。當一色塊中的至少一多取樣像素的每像素編碼狀態不同時(即是,子集與1SPP),有關1SPP編碼狀態的經處理資料可以編碼成一取樣子集。或者,該經處理資料可以在兩或三次子釋出中輸出。一第一子釋出可以包括有關1SPP編碼狀態的經處理資料及一對應的第一色塊遮罩。一第二子釋出可以包括有關非1SPP編碼狀態的經處理資料及一對應的第二色塊遮罩。一第三子釋出可以包括有關子集(其包括每像素取樣遮罩)編碼狀態的經處理資料及一對應的第三色塊遮罩。最後,該經處理資料可以連同每像素編碼狀態與一色塊遮罩一起輸出,其中,每一像素的編碼狀態可以包括子集編碼狀態,該子集包含多個每像素取樣遮罩之兩者。
第五C圖例示根據一實施例之於多取樣處理期間所使用的各種處理單元與互連的圖式520。一第二層快取265執行第二層快取265的功能並且可以還包括一或多個分析單元500,以分析多取樣像素資料並叛定編碼狀態與該多取樣像素資料的關聯性。一處理單元550執行該處理單元250的功能並且可以還包括一分析單元500,其構成用以分析接收自載入/儲存單元290的多取樣像素資料,並且在處理該多取樣像素資料之前,判定編碼狀態與該多取樣像素資料的關聯性。
第六A圖例示根據一實施例之用於處理多取樣資料之方法600的另一流程圖。方法600所示的步驟可由一著色器程式執行,該著色器程式則是由一圖形處理器執行。在步驟601,載入/儲存單元290接收多取樣像素資料。在步驟603,載入/儲存單元290判定有關該多取樣像素資料的編碼狀態是否為1SPP,且若是,在步驟608,載入/儲存單元290提供每一多取樣像素之一取樣的資料、或一多取樣像素之一部分的資料、與1SPP的編碼狀態給處理單元250。
在一實施例中,載入/儲存單元290接收該等多取樣像素的編碼狀態與多取樣像素資料。在另一實施例中,載入/儲存單元290包括一分析單元500並且構成用以實施該多取樣像素資料的分析,以判定該多取樣像素資料是否可以有關1SPP或子集的編碼狀態。在步驟603,當載入/儲存單元290藉由分析該多取樣像素資料而判定該多取樣像素資料可以1SPP格式來編碼時,編碼狀態設定為1SPP。在步驟614,該像素的該一取 樣會由處理單元250處理用以產生該像素或像素部分之所有取樣的經處理資料。
在步驟603,倘若載入/儲存單元290判定有關該多取樣像素資料的編碼狀態非1SPP,則在步驟606,載入/儲存單元290判定該多取樣像素資料是否可以有關子集的編碼狀態。在步驟616,當載入/儲存單元290藉由分析該多取樣像素資料而判定該多取樣像素資料可以使用子集的編碼狀態來編碼時,編碼狀態設定為子集對應的每像素取樣遮罩被併入每一取樣子集的編碼狀態中。在步驟616,該編碼狀態會連同每一取樣子集之一取樣的資料一起輸出至處理單元250。在步驟618,該像素的該一取樣會由處理單元250理用以產生該取樣子集之所有取樣的經處理資料。
在步驟606,倘若載入/儲存單元290判定有關該多取樣像素資料的編碼狀態非子集,則在步驟623,載入/儲存單元290可以提供每一多取樣像素或每一多取樣像素部分的所有取樣的資料與該編碼狀態給處理單元250。在步驟623,編碼狀態設定為非1SPP且連同每一多取樣像素或每一多取樣像素部分的所有取樣的資料一起輸出給處理單元250。在步驟626,處理單元250處理每一多取樣像素或每一多取樣像素部分之所有取樣的資料。
在步驟632,處理單元250基於該經處理資料之表示將編碼狀態設定為1SPP、子集、或非1SPP。在步驟634,處理單元250輸出每一多取樣像素、每一多取樣像素部分、或每一取樣子集的經處理資料、連同編碼狀態至載入/儲存單元290。該經處理資料可以包括一多取樣像素的該一取樣或所有取樣的資料、每一取樣子集之一取樣的資料、一多取樣像素部分的所有取樣之一取樣的資料、或一多取樣像素之所有取樣的資料。
第六B圖例示根據一實施例之用於接合處理多取樣資料之方法635的流程圖。第六B圖所示的步驟雖然描述為由載入/儲存單元290來實施;不過,載入/儲存單元290、第二層快取265(或265)、或是處理單元250(或550)之一或多者可以構成用以實施第六B圖所示的步驟。該等步驟會在第五A圖所示的載入/儲存單元290的背景中說明。該等步驟亦可由第五B圖所示的載入/儲存單元290來實施,使用快取581來儲存該經處理 資料,而不是接合緩衝器558。
在步驟605,載入/儲存單元290從處理單元250接收一多取樣像素的經處理資料。在步驟607,載入/儲存單元290判定是否因為該多取樣像素不在已儲存於接合緩衝器558中的目前色塊內而需要一新色塊來儲存該經處理資料,而若否定,載入/儲存單元290執行往步驟610。倘若需要一新色塊,則在步驟609,在載入/儲存單元290執行步驟610之前,目前色塊的經處理資料會釋出至第二層快取265且清除在覆蓋率追蹤單元575中的該色塊覆蓋率。
在步驟610,載入/儲存單元290以該經處理資料來檢查處理單元250所提供的編碼狀態並且判定該編碼狀態是否為1SPP。當編碼狀態為非1SPP時,在步驟640,載入/儲存單元290判定該經處理資料是否能夠編碼成一或多個子集。載入/儲存單元290可以使用分析單元500來執行該經處理資料的分析,用以判定編碼狀態。倘若該經處理資料能夠編碼成一或多個子集,在步驟645,產生每一子集的每像素取樣遮罩。在步驟650,載入/儲存單元290會判定接合緩衝器558中的一登錄項是否符合該多取樣像素的x,y座標(或是其他獨特識別符)。在步驟650,倘若發現符合登錄項,則在步驟655,載入/儲存單元290將該經處理資料合併於該符合登錄項之中。否則,在步驟660,載入/儲存單元290將該經處理資料儲存在接合緩衝器558的一空白登錄項中。
在步驟640,倘若載入/儲存單元290判定一或多個子集無法編碼,那麼,在步驟660,載入/儲存單元290將該經處理資料儲存在接合緩衝器558的一空白登錄項中。當該經處理資料無法編碼成1SPP或子集時,編碼狀態為非1SPP並且每一取樣的經處理資料會針對該多取樣像素而儲存。在另一實施例中,當編碼狀態為非1SPP時,載入/儲存單元290輸出該經處理資料至第二層快取265。
在步驟610,倘若編碼狀態為1SPP,在步驟620,載入/儲存單元290儲存該多取樣像素的經處理資料於接合緩衝器558。在步驟665,載入/儲存單元290更新儲存在覆蓋率追蹤單元575中的色塊覆蓋率。在步驟670,載入/儲存單元290判定是否完全覆蓋儲存在接合緩衝器558 中的色塊,且若是,該已完全覆蓋色塊的經處理資料釋出至第二層快取265且清除在覆蓋率追蹤單元275中的該色塊覆蓋率。接著,載入/儲存單元290結束處理在步驟605收到的經處理多取樣像素資料。當接合緩衝器558構成用以儲存一局部色塊而非一完整色塊時,配合第六B圖所述的步驟亦可實施於一局部色塊中。
當一多取樣像素之一或多個取樣子集的資料相同時,該子集編碼狀態可用來縮小用以儲存該多取樣像素資料的記憶體佔用區並且還縮減用以讀取、寫入、及傳送該多取樣像素資料所消耗的頻寬。再者,在某些情況中,一處理單元(例如,處理單元250或550)還可構成用以處理該單一取樣,用以產生該單一取樣之經處理多取樣像素資料,其代表兩或多個取樣的經處理多取樣像素,甚至一多取樣像素的所有取樣。
多取樣載入與儲存指令
如前述,本發明可支援多取樣載入指令(SULD.MS),回傳一取樣遮罩來表示哪些取樣已知具有相同數值。該多取樣載入指令還指定一多取樣像素的位址或座標。在一實施例中,該多取樣載入指令回傳一判定,用以表示該多取樣像素是否具有非1SPP的編碼狀態(即是,一不同的數值儲存用於該多取樣像素之每一取樣)。在另一實施例中,該判定表示該多取樣像素的編碼狀態,例如,1SPP、非1SPP、或子集。
在一實施例中,該多取樣載入指令的輸入包括一像素位址及對應該多取樣像素之一取樣的取樣識別符。除了回傳該該一取樣的資料之外,該多取樣載入指令還回傳一整數取樣遮罩,用以表示該多取樣像素中哪些其他取樣已知具有與該一取樣相同的資料。該多取樣載入指令可加以定義,使得該取樣遮罩有機會計算。例如,倘若該多取樣像素已知為一具有1SPP編碼狀態的色塊之一部分,那麼,該取樣遮罩將表示該多取樣像素的所有取樣具有相同資料。當該多取樣像素的編碼狀態為子集時,該取樣遮罩將表示哪些取樣被併入在與對應該指定取樣識別符的取樣相同的子集中。載入/儲存單元290或第二層快取265可構成用以分析該多取樣像素資料並且產生對應該子集的每像素取樣遮罩,該子集包括對應該指定取樣識 別符之取樣。產生的每像素取樣遮罩可被該多取樣載入指令回傳當作取樣遮罩。在一實施例中,載入/儲存單元290或第二層快取265分析儲存在一快取線的其他取樣,用以產生該取樣遮罩,使得當所有該等取樣的資料無法儲存在單一快取線時,該取樣遮罩不可代表該子集中的所有取樣。
除此之外,本發明還可支援接受一取樣遮罩的多取樣儲存指令(SUST.MS),其中,一具有該多取樣儲存指令的數值會儲存於一多取樣像素中的每一取樣,且其致能則可以根據該指定取樣遮罩。在一實施例中,一取樣遮罩用以表示一完全覆蓋像素,則該取樣遮罩可以1SPP格式來儲存,如第六B圖所示。在另一實施例中,一取樣遮罩用於表示一局部覆蓋像素,則該取樣遮罩可以子集編碼來儲存。
下面表1例示SUST.MS指令與SULD.MS指令如何在著色器程式中用來計算及儲存一像素中被基元覆蓋的取樣數值函數。
像素覆蓋遮罩表示一新基元的取樣覆蓋,而不管針對每一取樣所儲存的數值(非一子集的取樣覆蓋,其中,所有取樣皆儲存相同資料)。在該迴圈的每次重複運算中,根據coverageMask所覆蓋的一取樣的數值係利用SULD.MS指令來載入。該SULD.MS指令會回傳每像素取樣遮罩(或 每快取線取樣遮罩)。被請求取樣的數值會被處理,用以產生一經處理數值。
一取樣的經處理資料會回傳且儲存至具有與該一取樣相同數值(根據每像素取樣遮罩)且被該新基元覆蓋的所有取樣。coverageMask會與該每像素取樣遮罩進行逐位元及(AND)運算,用以確保只寫入由該新基元覆蓋的取樣。coverageMask接著基於SUST.MS寫入的取樣進行更新。該迴圈只於每一取樣子集執行,而不是針對根據像素覆蓋遮罩所覆蓋的每一取樣來執行。
在一實施例中,分析單元500實施為固定函數電路系統,其構成用以實施比較運算,用以計算SULD.MS指令所回傳的每像素取樣遮罩。一範例實施方式使用32位元組快取線大小並且包括八個4位元組比較器。四位元組群被多工成該等比較器的輸入,此端視該多取樣像素的資料格式而定。例如,當資料格式為4BPP(例如,RGBA8)時,該等八個比較器執行8個dword(資料字組,其中,一資料字組為4個位元組)的比較:dword[i]==dword[0]
dword[i]==dword[1]
dword[i]==dword[2]
dword[i]==dword[3]
dword[i]==dword[4]
dword[i]==dword[5]
dword[i]==dword[6]
dword[i]==dword[7]
其中<i>為正所要擷取的取樣。適當的比較能夠合併至回傳的每像素取樣遮罩之中,此端視多取樣模式而定(即是,每一像素的取樣數量)。8xAA(每像素有8個取樣)的多取樣模式使用所有八個比較,4xAA(每像素有4個取樣)使用該等比較的一半,依此類推。
倘若該多取樣像素的資料格式為8BPP(例如,RGBA16F),該等比較可以配置如下: dword[2*i+0]==dword[0](取樣0的下半部)
dword[2*i+1]==dword[1](取樣0的上半部)
dword[2*i+0]==dword[2](取樣1的下半部)
dword[2*i+1]==dword[3](取樣1的上半部)
dword[2*i+0]==dword[4](取樣2的下半部)
dword[2*i+1]==dword[5](取樣2的上半部)
dword[2*i+0]==dword[6](取樣3的下半部)
dword[2*i+1]==dword[7](取樣3的上半部)
倘若多取樣模式為4xAA,那麼,上面所示的配置可比較一像素中的所有取樣。倘若多取樣模式為8xAA,那麼,上面所示的配置僅比較該像素中的一半取樣且該每像素取樣遮罩代表該多取樣像素的一部分,或執行另一組比較以產生整個多取樣像素的每像素取樣遮罩。
在一替代實施例中,濾波電路系統可以用來實施該等比較。例如,載入/儲存單元290可以實施MIN與MAX濾波模式,該等模式採用雙線性佔用區(四個圖紋元),而且並不計算加權平均且構成用以計算該等四個圖紋元數值的分量式(component-wise)最小值或最大值。在一實施例中,載入/儲存單元290包括一圖紋單元,其構成用以實施圖紋元運算。該圖紋單元可以包括至少四個圖紋元比較器,其構成用以實施均等比較運算、以及MIN與MAX濾波模式運算。同樣地,載入/儲存單元290可以支援深度(z)比較運算(即是,用以比較取樣的數值與一著色器器提供的「參考」數值),其可用來實施深度值的比較。
平行處理系統
第七圖例示根據一實施例之一平行處理單元(PPU,Parallel Processing Unit)700。本文中雖然提供一平行處理器作為平行處理單元700的範例;不過,應該強烈注意,所提出的此處理器僅係為解釋之目的,而且任何處理器可以用來增補及/或取代,而達到相同目的。在一實施例中, 平行處理單元700構成用以在兩或多個串流多處理器(SM,Streaming Multi-processor)750中同時執行複數個執行緒。在一實施例中,處理單元250、550實施為串流多處理器750。一執行緒(即是,一執行的線程)係在一特殊串流多處理器750中執行的一組指令的例證。每一串流多處理器750(下面將配合第八圖更詳細說明)可以包括(但未受限於)一或多個處理核、一或多個載入/儲存單元(LSU,Load/Store Unit)、一第一層(L1)快取、共用記憶體、及類似物。
在一實施例中,平行處理單元700包括一輸入/輸出(I/O,Input/Output)單元705,其構成用以在系統匯流排702上傳送通訊給一中央處理單元(CPU,Central Processing Unit)(未顯示)及從該中央處理單元接收通訊。輸入/輸出單元705可以實施高速周邊器件互連(PCIe,Peripheral Component Interconnect express)介面,用以在一高速周邊器件互連匯流排上通訊。在替代實施例中,輸入/輸出單元705可以實施其他類型眾所熟知的匯流排介面。
平行處理單元700還包括一主介面單元710,其會解碼命令且傳送該等命令給平行處理單元700(例如,記憶體介面780)的網格管理單元715或其他單元,當該等命令可以指定。主介面單元710構成用以在平行處理單元700的各種邏輯單元之間與之中傳送通訊。
在一實施例中,一被編碼成命令串的程式會被中央處理單元寫入一緩衝器。緩衝器為記憶體(例如,記憶體704或系統記憶體)中的一區域,其可被中央處理單元與平行處理單元700兩者存取(即是,讀取/寫入)。中央處理單元將該命令串寫至該緩衝器且接著傳送一指向該命令串之起點的指標給平行處理單元700。主介面單元710提供網格管理單元(GMU,Grid Management Unit)715,其具有指向一或多個串流的指標。網格管理單元715選擇一或多個串流並且構成用以將選定的串流組織成一群待用網格。該群待用網格可以包括尚未被選定用於執行的新網格及已部分執行且已經中止的網格。
一工作分配單元720係耦合在網格管理單元715與串流多處理器750之間,可以管理一群主動網格,從而選擇及派遣主動網格以讓該 等串流多處理器750執行。當適合執行一待用網格時,即是,沒有任何未解的資料相依性,待用網格便會被網格管理單元715傳輸至主動網格群。當一主動網格的執行因相依性而受到阻斷時,該主動網格便會傳輸至待用群。當一網格的執行完成時,該網格便會被工作分配單元720從主動網格群處移除。除了從主介面單元710與工作分配單元720接收網格之外,網格管理單元715還接收在一網格之執行期間由串流多處理器750動態產生的網格。這些動態產生的網格加入待用網格群中的其他待用網格。
在一實施例中,中央處理單元執行一驅動程式核心,其實施一應用程式介面(API,Application Programming Interface),讓在該中央處理單元上執行的一或多個應用程式排程用以在平行處理單元700上執行的運算。一應用程式可能包括一產生指令(即是,應用程式介面呼叫),用以讓該驅動程式核心產生用於執行的一或多個網格。在一實施例中,平行處理單元700實施一SIMD(單指令多資料)架構,其中,一網格之每一執行緒區塊(即是,線程束)會由該執行緒區塊中的不同執行緒同時在不同的資料集上執行。該驅動程式核心定義由k個相關執行緒構成的執行緒區塊,使得相同執行緒區塊中的執行緒可以經由共用的記憶體來交換資料。在一實施例中,一執行緒區塊包括32個相關執行緒,而一網格則係由執行相同串流的一或多個執行緒區塊組成的陣列,而且該等不同的執行緒區塊可以經由全域記憶體來交換資料。
在一實施例中,平行處理單元700包括X個串流多處理器750(X)。例如,平行處理單元700可能包括15個不同的串流多處理器750。每一串流多處理器750係多執行緒式且構成用以同時執行來自一特殊執行緒區塊的複數個執行緒(例如,32個執行緒)。該等串流多處理器750之每一者透過一載入/儲存單元290與一縱橫交叉網路260(或是其他類型的互連網路)連接至第二層(L2)快取265。
第二層快取265連接至一或多個記憶體介面780。記憶體介面780實施16、32、64、128位元資料匯流排或類似,用於高速資料傳輸。在一實施例中,平行處理單元700包括U個記憶體介面780(U),其中,每一記憶體介面780(U)連接至一對應的記憶體裝置704(U)。例如,平行處理單 元700可以連接至高達6個記憶體裝置704,例如,第五版本的圖形雙資料速率同步動態隨機存取記憶體(GDDR5 SDRAM,Graphics Double-Data-Rate,Version 5,Synchronous Dynamic Random Access Memory)。
在一實施例中,平行處理單元700實施一多層記憶體架構。記憶體704以晶片外的方式置放在耦合至平行處理單元700的同步動態隨機存取記憶體中。來自記憶體704的資料可被擷取及儲存在第二層快取265中,第二層快取265置放在晶片上且在不同的串流多處理器750之間共用。第二層快取265可以使用第二層快取565來替換。在一實施例中,串流多處理器750之每一者亦實施一第一層快取。第一層快取為專屬於一特殊串流多處理器750的私有記憶體。第一層快取之每一者耦合至共用的第二層快取265。來自第二層快取265的資料可擷取及儲存在第一層快取之每一者之中,以在串流多處理器750的功能單元中進行處理。
在一實施例中,平行處理單元700包括一圖形處理單元(GPU)。平行處理單元700構成用以接收指定著色器程式的命令,以處理圖形資料。圖形資料可定義為一組基元,例如,點、線條、三角形、四邊形、三角帶、及類似物。一般來說,一基元包括指定該基元的頂點數量(例如,在模型空間座標系統中)以及有關該基元的每一頂點的屬性的資料。平行處理單元700構成用以處理該等圖形基元,用以產生一訊框緩衝器(即是,顯示器的該等像素之每一者的像素資料)。驅動程式核心實施一圖形處理管線,例如,由OpenGL API所定義的圖形處理管線。
一應用程式將一畫面的模型資料(即是,大量的頂點與屬性)寫至記憶體。該模型資料定義可以在顯示器上看見的每一物體。該應用程式接著產生對驅動程式核心的一應用程式介面呼叫,以請求要描繪與顯示的模型資料。該驅動程式核心讀取該模型資料並且將命令寫至緩衝器,用以執行一或多個運算,以處理該模型資料。該等命令可以編碼包括下面一或多者的不同著色器程式:一頂點著色器器、外殼著色器器、幾何著色器器、像素著色器器、...等。
例如,網格管理單元715可以構成一或多個串流多處理器750, 用以執行頂點著色器程式,其處理由模型資料所定義的數個頂點。在一實施例中,網格管理單元715可以構成不同的串流多處理器750,用以同時執行不同的著色器程式。例如,串流多處理器750中的第一子集可以構成用以執行一頂點著色器程式,而串流多處理器750中的第二子集可以構成用以執行一像素著色器程式。串流多處理器750中的第一子集處理頂點資料,以產生經處理的頂點資料並且透過載入/儲存單元290與縱橫交叉網路260將該經處理的頂點資料寫至第二層快取265及/或記憶體704。在格柵化該經處理的頂點資料(即是,從三維資料轉換成螢幕空間的二維資料)而產生片段資料之後,串流多處理器750的第二子集執行一像素著色器器,以產生經處理的片段資料,該經處理的片段資料接著與其他經處理的片段資料混合並且寫至記憶體704中的訊框緩衝器。頂點著色器程式與像素著色器程式可以同時執行,以管線的方式處理來自相同畫面的不同資料,直到該畫面中的所有模型資料提供給訊框緩衝器為止。接著,訊框緩衝器的內容便傳送至顯示控制器,以顯示在一顯示器裝置上。
平行處理單元700可併入下列中:桌上型電腦、膝上型電腦、平板電腦、智慧型電話(例如,無線、手持裝置)、個人數位助理(PDA,Personal Digital Assistant)、數位相機、手持電子裝置、及類似物。在一實施例中,平行處理單元700係具體實施在單一半導體基板上。在另一實施例中,平行處理單元700連同一或多個其他邏輯單元(例如,精簡指令集電腦(RISC,Reduced Instruction Set Computer)中央處理單元、記憶體管理單元(MMU,Memory Management Unit)、數位至類比轉換器(DAC,Digital-to-Analog Converter)、及類似物)併入晶片系統(SoC,System-on-a-Chip)之中。
在一實施例中,平行處理單元700可以併入在包括一或多個記憶體裝置704(例如,第五版本的圖形雙資料速率同步動態隨機存取記憶體)的圖形卡上。圖形卡可以構成用以介接桌上型電腦的主機板上的高速周邊器件互連插槽,其包括例如北橋晶片組與南橋晶片組。在仍然另一實施例中,平行處理單元700可為併入該主機板之晶片組(即是,北橋)中的一整合式圖形處理單元(iGPU,integrated Graphics Processing Unit)。
第八圖例示根據一實施例之第五圖的串流多處理器750。如第 八圖所示,串流多處理器750包括一指令快取805、一或多個排程單元810、一暫存器檔620、一或多個處理核850、一或多個雙精確度單元(DPU,Double Precision Unit)851、一或多個特殊功能單元(SFU,Special Function Unit)852、一或多個載入/儲存單元(LSU)853、一互連網路880、及一共用記憶體/第一層快取870。串流多處理器750耦合至載入/儲存單元290。除了第二C圖中所示的單元之外,載入/儲存單元290還包括一或多個圖紋單元。
在一實施例中,串流多處理器750與載入/儲存單元290實施在一圖形處理單元內。在此實施例中,載入/儲存單元290包括一或多個圖紋單元,其構成用以從記憶體704載入圖紋映圖(即是,2D的圖紋陣列)並且取樣該等圖紋映圖,用以產生使用在著色器程式中的已取樣圖紋值。該等圖紋單元實施圖紋運算,例如,利用mip-map(即是,具有不同細節準位的圖紋映圖)的抗鋸齒運算。
如上述,工作分配單元720派遣主動網格,用以在平行處理單元700之一或多個串流多處理器750上執行。排程單元810從工作分配單元720接收該等網格並且管理每一主動網格之一或多個執行緒區塊所排程的指令。排程單元810排程用於在多群平行執行緒中執行的執行緒,其中,每一群組稱為一線程束。在一實施例中,每一線程束包括32個執行緒。排程單元810可以管理複數個不同執行緒區塊,分派該等執行緒區塊給線程束執行,並且接著在每一時脈循環期間排程來自各種功能單元(即是,核850、雙精確度單元851、特殊功能單元852、及載入/儲存單元853)上該等複數個不同線程束的指令。
在一實施例中,每一排程單元810包括一或多個指令派遣單元815。每一派遣單元815構成用以傳送指令至該等功能單元之一或多者。在第八圖所示的實施例中,排程單元810包括兩派遣單元815,其在每一時脈循環期間允許派遣來自相同線程束的兩不同指令。在替代實施例中,每一排程單元810可以包括單一派遣單元815或額外派遣單元815。
每一串流多處理器750包括一暫存器檔820,其提供一組暫存器供該串流多處理器750的功能單元使用。在一實施例中,暫存器檔820被分成在該等功能單元之每一者之間,使得每一功能單元分派該暫存器檔 820的一專屬部分。在另一實施例中,暫存器檔820被分成在串流多處理器750要執行的不同線程束之間。暫存器檔820提供連接該等功能單元的資料路徑的運算元的暫時儲存。
每一串流多處理器750包括L個處理核850。在一實施例中,串流多處理器750包括大量(例如,192個、...等)不同的處理核850。每一核850為一完全管線單精確度處理單元,其包括一浮點算術邏輯單元與一整數算術邏輯單元。在一實施例中,該浮點算術邏輯單元實施用於浮點算術的IEEE 754-2008標準。每一串流多處理器750還包括:M個雙精確度單元851,用以實施雙精確度浮點算術;N個特殊功能單元852,用以執行特殊功能(例如,複製矩形、像素混合操作、及類似功能);及P個載入/儲存單元853,用以實施在共用記憶體/第一層快取870與暫存器檔820之間的載入與儲存運算。在一實施例中,串流多處理器750包括64個雙精確度單元851、32個特殊功能單元852、及32個載入/儲存單元853。
每一串流多處理器750包括一互連網路880,其連接該等功能單元之每一者至暫存器檔820與共用記憶體/第一層快取870。在一實施例中,互連網路880係一縱橫交叉網路,其構成用以連接該等功能單元之任一者至暫存器檔820中的該等暫存器之任一者或共用記憶體/第一層快取870中的記憶體位置。
上述的平行處理單元700可以構成用以執行高度平行計算,遠快過習知中央處理單元。平行計算有利於圖形處理、資料壓縮、生物測定、串流處理演算法、及類似處理。
第九圖例示可實施各種前面實施例之各種架構及/或功能的示範性系統900。如圖所示,本發明提供的系統900包括至少一中央處理器901,其連接至一通訊匯流排902。通訊匯流排902可以利用任何適當協定實施,例如,PCI(周邊器件互連)、高速周邊器件互連、AGP(加速圖形埠)、HyperTransport、或任何其他匯流排或點對點通訊協定。系統900還包括一主記憶體904。控制邏輯(軟體)與資料儲存在該主記憶體904中,該主記憶體904的形式可以為隨機存取記憶體(RAM,Random Access Memory)。
系統900還包括:多個輸入裝置912;一圖形處理器906;及 一顯示器908,即是,習知的CRT(陰極射線管)、LCD(液晶顯示器)、LED(發光二極體)、電漿顯示器、或是類似物。使用者輸入可以接收自輸入裝置912,例如,鍵盤、滑鼠、觸控墊、麥克風、及類似物。在一實施例中,圖形處理器906可以包括複數個著色器模組、一格柵化模組、...等。前述模組之每一者甚至可位在單一半導體平台上,用以形成一圖形處理單元(GPU)。
在本說明中,單一半導體平台可以表示基於單一半導體的積體電路或晶片。應該注意,術語「單一半導體平台」亦可以表示具有增強連接性的多晶片模組,其模擬晶片上操作,並且有優於運用習知中央處理單元(CPU)及匯流排實施方式的實質改良。當然,該等各種模組亦可以依照使用者的需求而分開放置或是放置在各種組合的半導體平台中。
系統900可以還包括一輔助儲存體910。,輔助儲存體910包括(例如)硬碟機及/或抽取式儲存機,抽取式儲存機代表磁碟機、磁帶機、光碟機、數位多功能光碟(DVD,Digital Versatile Disk)機、記錄裝置、通用序列匯流排(USB,Universal Serial Bus)快閃記憶體。抽取式儲存機會以眾所熟知的方式從一抽取式儲存單元處進行讀取及/或寫入。
電腦程式或電腦控制邏輯演算法可以儲存在主記憶體904及/或輔助儲存體910中。執行此電腦程式時可讓系統900執行各種功能。編譯程式可由中央處理器901或圖形處理器906執行。主記憶體904、儲存體910、及/或任何其他儲存體都是電腦可讀媒體的可能範例。
在一實施例中,前面各圖的架構及/或功能可以實施於下列環境:中央處理器901;圖形處理器906;具有中央處理器901及圖形處理器906兩者之至少一部分能力的積體電路(未顯示);晶片組(即是,設計成作為用於實施相關功能之單元來工作及銷售的一群積體電路、...等);及/或用於該目的的任何其他積體電路。
然而,前面各圖的架構及/或功能亦可以實施於下列環境中:通用電腦系統;電路板系統;專用於娛樂用途的遊戲機系統;特定應用系統;及/或任何其他想要系統。例如,系統900的形式可以為桌上型電腦、膝上型電腦、伺服器、工作站、遊戲機、嵌入式系統、及/或任何其他類型 的邏輯。然而,系統900的形式可以為各種其他裝置,包括(但未受限於)個人數位助理(PDA)裝置、行動電話裝置、電視、...等。
此外,雖然並未顯示,不過,系統900可以耦合至一網路(例如,電信網路;區域網路(LAN,Local Area Network);無線網路;廣域網路(WAN,Wide Area Network),例如,網際網路;點對點網路;有線網路;或是類似網路),以達通訊之目的。
雖然上面已述各種實施例;不過,應該瞭解,其僅透過範例來表示,沒有任何限制。因此,較佳實施例的範圍與範疇不應受限於任何上述示範性實施例,而應該僅根據文後申請專利範圍及其等效範圍來定義。

Claims (20)

  1. 一種方法,其包括:接收從用以儲存多取樣像素資料的一記憶體所讀取的多取樣像素資料;藉由耦接於該記憶體及一處理單元之間的一分析單元,分析該多取樣像素資料,以找出一多取樣像素中具有相同資料的取樣子集,使得一子集中之一取樣的資料代表該子集中所有取樣的多取樣像素資料;產生一編碼狀態,其表示該多取樣像素中哪些取樣被併入該等子集的每一者之中;提供該編碼狀態及被包括在一第一子集內的僅用於一第一取樣的資料至該處理單元;藉由該處理單元,決定該狀態編碼表示該第一取樣並不代表該多取樣像素的全部取樣;及由多取樣像素資料中,要求該多取樣像素的一或多個額外取樣。
  2. 如申請專利範圍第1項之方法,其更包括處理該第一取樣的資料,用以產生該第一取樣之經處理資料,其代表該第一子集中所有取樣的經處理多取樣像素資料。
  3. 如申請專利範圍第2項之方法,其更包括儲存該第一取樣之經處理多取樣像素資料與該編碼狀態於一多取樣緩衝器中。
  4. 如申請專利範圍第1項之方法,其更包括:儲存該多取樣像素資料於一緩衝器登錄項中;及接收該多取樣像素的一第二取樣子集之一取樣的額外多取樣像素資料。
  5. 如申請專利範圍第4項之方法,其更包括:判定該第二多取樣像素資料是否等於已儲存在該緩衝器登錄項中的多取樣像素資料;及合併該第二多取樣像素資料至該緩衝器登錄項之中。
  6. 如申請專利範圍第4項之方法,其更包括:判定該第二多取樣像素資料是否落在已儲存在該緩衝器登錄項中 的該多取樣像素資料的一臨界值內;及合併該第二多取樣像素資料至該緩衝器登錄項之中。
  7. 如申請專利範圍第1項之方法,其更包括:儲存該多取樣像素資料於一緩衝器中;及儲存一每像素取樣遮罩,其表示被併入該等子集中的該多取樣像素的取樣。
  8. 如申請專利範圍第7項之方法,其更包括:判定一色塊中所有多取樣像素中所有取樣的資料是否儲存在該緩衝器中;及當該色塊中所有多取樣像素中所有取樣是儲存在該緩衝器時,從該緩衝器釋出該資料。
  9. 如申請專利範圍第1項之方法,其更包括:接收一多取樣儲存指令,其指定一多取樣像素之單一取樣的資料與一取樣遮罩;及儲存該單一取樣的資料至該多取樣像素之每一取樣,其致能則為根據該取樣遮罩。
  10. 如申請專利範圍第1項之方法,其更包括:接收指定該第一取樣的一多取樣載入指令;以及當該多取樣載入指令被執行時,回傳用於該第一取樣的該資料以及表示被包括在該第一子集內的該多取樣像素的至少一額外取樣的一取樣遮罩。
  11. 如申請專利範圍第1項之方法,其更包括:藉由一接合單元,儲存該多取像像素資料至一緩衝器登錄項中;合併用於該第一子集的一取樣覆蓋遮罩至一用於儲存該像素的一多取樣覆蓋遮罩;以及儲存用於該第一子集的一個別的每像素覆蓋遮罩。
  12. 一種用以儲存指令的非暫時性電腦可讀儲存媒體,當一處理器執行該等指令時,使該處理器執行下列步驟:接收從用以儲存多取樣像素資料的一記憶體所讀取的該多取樣像 素資料;藉由耦接於該記憶體及一處理單元之間的一分析單元,分析該多取樣像素資料,以找出一多取樣像素中具有相同資料的取樣子集,使得一子集之一取樣的資料代表該子集中所有取樣的多取樣像素資料;產生一編碼狀態,其表示該多取樣像素中哪些取樣被併入該等子集的每一者之中;提供該編碼狀態及被包括在一第一子集內的用於一第一取樣的為一資料至該處理單元,其中該編碼狀態表示被包括在該第一子集內的該多取樣像素該取樣;藉由該處理單元,決定該狀態編碼表示該第一取樣並不代表該多取樣像素的全部取樣;及要求多取樣像素資料用於該多取樣像素的一或多個額外去樣。
  13. 如申請專利範圍第12項之非暫時性電腦可讀儲存媒體,其更包括:接收指定該第一取樣的一多取樣載入指令;以及當該多取樣載入指令被執行時,回傳用於該第一取樣的該資料以及表示被包括在該第一子集內的該多取樣像素的至少一額外取樣的一取樣遮罩。
  14. 如申請專利範圍第12項之非暫時性電腦可讀儲存媒體,其更包括:藉由一接和單元,儲存該多取像像素資料至一緩衝器登錄項中;合併用於該第一子集的一取樣覆蓋遮罩至一用於儲存該像素的一多取樣覆蓋遮罩;以及儲存用於該第一子集的一個別的每像素覆蓋遮罩。
  15. 一種系統,其包括:一記憶體,用以儲存多取樣像素資料;及一分析單元,其耦合在該記憶體與一處理單元之間且構成用以:接收從該記憶體讀取的多取樣像素資料;分析該多取樣像素資料,以找出一多取樣像素中具有相同資料的取樣子集,使得一子集之一取樣的資料代表該子集中所有取樣的多取樣像素資料; 產生一編碼狀態,其表示該多取樣像素中哪些取樣被併入該等子集的每一者之中;提供該編碼狀態及被包括在一第一子集內的用於一第一取樣的為一資料至該處理單元,其中該編碼狀態表示被包括在該第一子集內的該多取樣像素該取樣;以及該處理單元是設置於:決定該狀態編碼表示該第一取樣並不代表該多取樣像素的全部取樣;及要求多取樣像素資料用於該多取樣像素的一或多個額外去樣。
  16. 如申請專利範圍第15項之系統,其中,該分析單元位在一載入/儲存單元、一快取、及一處理單元中的一或多者內。
  17. 如申請專利範圍第15項之系統,其中,該部分對應儲存在單一快取線中的該多取樣像素之取樣數量。
  18. 如申請專利範圍第15項之系統,更包括一載入/儲存單元,其構成用以:接收一多取樣儲存指令,其指定一多取樣像素之單一取樣的資料與一取樣遮罩;及在該記憶體中,儲存該單一取樣的資料至該多取樣像素之每一取樣,其致能則為根據該取樣遮罩。
  19. 如申請專利範圍第15項之系統,其更包括耦接於該記憶體與該處理單元之間的一載入請求單元,其被設置成:接收指定該第一取樣的一多取樣載入指令;以及當該多取樣載入指令被執行時,回傳用於該第一取樣的該資料以及表示被包括在該第一子集內的該多取樣像素的至少一額外取樣的一取樣遮罩。
  20. 如申請專利範圍第15項之系統,其更包括耦接於該記憶體與該處理單元之間的一載入請求單元,其被設置成:藉由一接合單元,儲存該多取像像素資料至一緩衝器登錄項中;合併用於該第一子集的一取樣覆蓋遮罩至一用於儲存該像素的一多取樣覆蓋遮罩;以及 儲存用於該第一子集的一個別的每像素覆蓋遮罩。
TW102142874A 2013-03-15 2013-11-25 使用取樣子集的多取樣表面處理 TWI533672B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/844,147 US9286659B2 (en) 2013-03-15 2013-03-15 Multi-sample surface processing using sample subsets

Publications (2)

Publication Number Publication Date
TW201440495A TW201440495A (zh) 2014-10-16
TWI533672B true TWI533672B (zh) 2016-05-11

Family

ID=51418670

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102142874A TWI533672B (zh) 2013-03-15 2013-11-25 使用取樣子集的多取樣表面處理

Country Status (4)

Country Link
US (1) US9286659B2 (zh)
CN (1) CN104050633A (zh)
DE (1) DE102013114286B4 (zh)
TW (1) TWI533672B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US9665958B2 (en) 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6614449B1 (en) * 1998-08-28 2003-09-02 Ati International Srl Method and apparatus for video graphics antialiasing using a single sample frame buffer and associated sample memory
US6720975B1 (en) 2001-10-17 2004-04-13 Nvidia Corporation Super-sampling and multi-sampling system and method for antialiasing
US6825847B1 (en) 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US7242400B2 (en) * 2002-11-13 2007-07-10 Ati Technologies Ulc Compression and decompression of data using plane equations
US7162092B2 (en) 2003-12-11 2007-01-09 Infocus Corporation System and method for processing image data
US7126615B2 (en) 2004-11-12 2006-10-24 Via Technologies, Inc. Color compression using multiple planes in a multi-sample anti-aliasing scheme
US7612783B2 (en) * 2006-05-08 2009-11-03 Ati Technologies Inc. Advanced anti-aliasing with multiple graphics processing units
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US7911480B2 (en) 2007-10-08 2011-03-22 Via Technologies, Inc. Compression of multiple-sample-anti-aliasing tile data in a graphics pipeline
US8086806B2 (en) 2008-03-24 2011-12-27 Nvidia Corporation Systems and methods for coalescing memory accesses of parallel threads
GB0922126D0 (en) * 2009-12-17 2010-02-03 Advanced Risc Mach Ltd Graphics processing systems
US20110285718A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US9665958B2 (en) 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads

Also Published As

Publication number Publication date
US9286659B2 (en) 2016-03-15
CN104050633A (zh) 2014-09-17
DE102013114286A1 (de) 2014-09-18
DE102013114286B4 (de) 2022-12-01
TW201440495A (zh) 2014-10-16
US20140267356A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
TWI512672B (zh) 使用一取樣之多取樣表面處理的方法、電腦可讀儲存媒體及系統
US9177413B2 (en) Unique primitive identifier generation
US9454843B2 (en) Modulated and blended anti-aliasing
US9355483B2 (en) Variable fragment shading with surface recasting
US9946666B2 (en) Coalescing texture access and load/store operations
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US9411715B2 (en) System, method, and computer program product for optimizing the management of thread stack memory
US9665958B2 (en) System, method, and computer program product for redistributing a multi-sample processing workload between threads
US9477482B2 (en) System, method, and computer program product for implementing multi-cycle register file bypass
US9305324B2 (en) System, method, and computer program product for tiled deferred shading
US9269179B2 (en) System, method, and computer program product for generating primitive specific attributes
US9905037B2 (en) System, method, and computer program product for rejecting small primitives
US9721381B2 (en) System, method, and computer program product for discarding pixel samples
TWI533672B (zh) 使用取樣子集的多取樣表面處理
US9235512B2 (en) System, method, and computer program product for graphics processing unit (GPU) demand paging
US10114755B2 (en) System, method, and computer program product for warming a cache for a task launch
US9214008B2 (en) Shader program attribute storage
US20150145871A1 (en) System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor
US9305388B2 (en) Bit-count texture format
US20140184616A1 (en) System, method, and computer program product for identifying a faulty processing unit
US9477480B2 (en) System and processor for implementing interruptible batches of instructions
US9471310B2 (en) Method, computer program product, and system for a multi-input bitwise logical operation

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees