亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于高吞吐量柵格器的方法和裝置與流程

文檔序號:11635693閱讀:255來源:國知局
用于高吞吐量柵格器的方法和裝置與流程

背景技術(shù)
:發(fā)明領(lǐng)域本發(fā)明總體上涉及計算機處理器領(lǐng)域。更具體地,本發(fā)明涉及一種用于高吞吐量柵格器的裝置和方法。相關(guān)技術(shù)的說明柵格化是圖形處理單元(gpu)的關(guān)鍵任務(wù),在所述圖形處理單元中,采用向量圖形格式描述的圖像被轉(zhuǎn)換成柵格器圖像(例如,像素)以用于輸出到顯示設(shè)備上。柵格化通常需要確定圖元(primitive)的一列點亮樣本,這是必須高效完成以消耗最小電量的周期性任務(wù)。圖形技術(shù)(諸如多樣本抗混疊(anti-aliasing)(msaa))需要處理相當(dāng)大量的圖形數(shù)據(jù),而不會影響渲染時間。技術(shù)已經(jīng)應(yīng)用于此問題,但是貫穿可用的技術(shù),使用當(dāng)前的解決方案不足以支持新的和未來的需要。附圖說明可結(jié)合以下附圖從以下詳細描述中獲得對本發(fā)明的更好的理解,在附圖中:圖1是具有處理器的計算機系統(tǒng)的實施例的框圖,所述處理器具有一個或多個處理器核以及圖形處理器;圖2是處理器的一個實施例的框圖,所述處理器具有一個或多個處理器核、集成存儲器控制器、以及集成圖形處理器;圖3是圖形處理器的一個實施例的框圖,所述圖形處理器可以是分立式圖形處理單元、或者可以是與多個處理核集成的圖形處理器;圖4是用于圖形處理器的圖形處理引擎的實施例的框圖;圖5是圖形處理器的另一實施例的框圖;圖6是包括處理元件陣列的線程執(zhí)行邏輯的框圖;圖7展示了根據(jù)實施例的圖形處理器執(zhí)行單元指令格式;圖8是圖形處理器的另一實施例的框圖,所述圖形處理器包括圖形流水線、媒體流水線、顯示引擎、線程執(zhí)行邏輯、以及渲染輸出流水線。圖9a是框圖,展示了根據(jù)實施例的圖形處理器命令格式;圖9b是框圖,展示了根據(jù)實施例的圖形處理器命令序列;圖10展示了根據(jù)實施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu);圖11展示了圖形處理架構(gòu),在所述圖形處理架構(gòu)內(nèi),可以采用高吞吐量柵格器的一個實施例。圖12至圖13展示了在柵格化過程中可以如何處理圖元以便確定邊緣;圖14展示了一種實現(xiàn)方式,在所述實現(xiàn)方式中,16×16像素被細分為跨多個處理階段的更小的塊;圖15展示了一個實施例,在所述實施例中,對圖元的每條邊緣執(zhí)行并行處理;圖16展示了一個實施例的附加細節(jié),在所述實施例中,對圖元的每條邊緣執(zhí)行并行處理;圖17展示了在本發(fā)明的一個實施例中用于執(zhí)行更高效的柵格化的對稱性;圖18a至圖18b展示了在本發(fā)明的一個實施例中采用的包括一組比較器的附加邏輯;圖19展示了在本發(fā)明的一個實施例中用于執(zhí)行更高效的柵格化的對稱性的附加層;圖20展示了在本發(fā)明的一個實施例中在像素級用于執(zhí)行更高效的柵格化的對稱性的附加層;以及圖21展示了一種根據(jù)本發(fā)明的一個實施例的方法。具體實施方式在以下描述中,出于解釋的目的,闡述了許多具體的細節(jié)以便提供對以下所述的本發(fā)明的實施例的透徹理解。然而,對于本領(lǐng)域技術(shù)人員而言,可以在不具有這些具體細節(jié)中的一些具體細節(jié)的情況下實踐本發(fā)明的實施例將是明顯的。在其他實例中,以框圖的形式示出了公知的結(jié)構(gòu)和設(shè)備以避免模糊本發(fā)明的實施例的基本原理。示例性圖形處理器架構(gòu)和數(shù)據(jù)類型系統(tǒng)概述圖1是根據(jù)實施例的數(shù)據(jù)處理系統(tǒng)100的框圖。數(shù)據(jù)處理系統(tǒng)100包括一個或多個處理器102以及一個或多個圖形處理器108,并且可以是單處理器桌面系統(tǒng)、多處理器工作站系統(tǒng)、或具有大量處理器102或處理器核107的服務(wù)器系統(tǒng)。在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是用于移動式、手持式、或嵌入式設(shè)備的片上系統(tǒng)(soc)集成電路。數(shù)據(jù)處理系統(tǒng)100的實施例可包括或并入基于服務(wù)器的游戲平臺、游戲控制臺,包括游戲與媒體控制臺、移動游戲控制臺、手持式游戲控制臺、或在線游戲控制臺。在一些實施例中,數(shù)據(jù)處理系統(tǒng)100是移動設(shè)備、智能電話、平板計算設(shè)備或移動互聯(lián)網(wǎng)設(shè)備。數(shù)據(jù)處理系統(tǒng)100還可包括可穿戴設(shè)備(諸如智能手表可穿戴設(shè)備、智能眼鏡設(shè)備、增強現(xiàn)實設(shè)備、或虛擬現(xiàn)實設(shè)備)、與所述可穿戴設(shè)備耦合、或者集成在所述可穿戴設(shè)備中。在一些實施例中,數(shù)據(jù)處理系統(tǒng)100是電視或機頂盒設(shè)備,所述電視或機頂盒設(shè)備具有一個或多個處理器102以及由一個或多個圖形處理器108生成的圖形界面。在一些實施例中,所述一個或多個處理器102各自包括用于處理指令的一個或多個處理器核107,所述指令在被執(zhí)行時執(zhí)行系統(tǒng)和用戶軟件的操作。在一些實施例中,所述一個或多個處理器核107中的每個處理器核被配置成用于處理特定的指令集109。在一些實施例中,指令集109可以促進復(fù)雜指令集計算(cisc)、精簡指令集計算(risc)、或經(jīng)由超長指令字(vliw)的計算。多個處理器核107可以各自處理不同的指令集109,所述指令集可以包括用于促進對其他指令集進行仿真的指令。處理器核107還可以包括其他處理設(shè)備,如數(shù)字信號處理器(dsp)。在一些實施例中,處理器102包括高速緩存存儲器104。取決于架構(gòu),處理器102可具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。在一些實施例中,在處理器102的各部件之間共享所述高速緩存存儲器。在一些實施例中,處理器102還使用外部高速緩存(例如,3級(l3)高速緩存或末級高速緩存(llc))(未示出),可以使用已知的高速緩存一致性技術(shù)在所述處理器核107之中共享所述外部高速緩存。寄存器文件106附加地包括在處理器102中,所述處理器可以包括用于存儲不同類型數(shù)據(jù)的不同類型的寄存器(例如,整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器、和指令指針寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以專用于處理器102的設(shè)計。在一些實施例中,處理器102耦合至處理器總線110,所述處理器總線用于在處理器102與系統(tǒng)100內(nèi)的其他部件之間傳輸數(shù)據(jù)信號。系統(tǒng)100使用示例性‘中樞’系統(tǒng)架構(gòu),包括存儲器控制器中樞116和輸入輸出(i/o)控制器中樞130。存儲器控制器中樞116促進存儲器設(shè)備與系統(tǒng)100的其他部件之間的通信,而i/o控制器中樞(ich)130經(jīng)由本地i/o總線提供與i/o設(shè)備的連接。存儲器設(shè)備120可以是動態(tài)隨機存取存儲器(dram)設(shè)備、靜態(tài)隨機存取存儲器(sram)設(shè)備、閃存設(shè)備、或具有合適的性能用作處理存儲器的某個其他存儲器設(shè)備。存儲器120可以存儲數(shù)據(jù)122和指令121,以供在處理器102執(zhí)行過程時使用。存儲器控制器中樞116還與可選的外部圖形處理器112耦合,所述可選的外部圖形處理器可以與處理器102中與所述一個或多個圖形處理器108通信,從而執(zhí)行圖形和媒體操作。在一些實施例中,ich130使得外圍部件經(jīng)由高速i/o總線連接至存儲器120和處理器102。i/o外圍部件包括音頻控制器146、固件接口128、無線收發(fā)器126(例如,wi-fi、藍牙)、數(shù)據(jù)存儲設(shè)備124(例如,硬盤驅(qū)動器、閃存等)、以及用于將傳統(tǒng)(例如,個人系統(tǒng)2(ps/2))設(shè)備耦合至所述系統(tǒng)的傳統(tǒng)i/o控制器。一個或多個通用串行總線(usb)控制器142連接輸入設(shè)備,比如鍵盤和鼠標(biāo)144組合。網(wǎng)絡(luò)控制器134還可以耦合至ich130。在一些實施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合至處理器總線110。圖2是處理器200的實施例的框圖,所述處理器具有一個或多個處理器核202a-n、集成存儲器控制器214、以及集成圖形處理器208。圖2的具有與此處任何其他附圖中的元件相同的參考號(或名稱)的那些元件可采用與在本文中其他地方描述的方式相類似的任何方式進行操作或起作用,但不限于這些。處理器200可包括多達且包括由虛線框表示的附加核202n的附加核。核202a-n中的每個核包括一個或多個內(nèi)部高速緩存單元204a-n。在一些實施例中,每個核還可訪問一個或多個共享高速緩存單元206。內(nèi)部高速緩存單元204a-n和共享高速緩存單元206表示處理器200內(nèi)部的高速緩存存儲器層級。高速緩存存儲器層級可以包括每個核內(nèi)的至少一級指令和數(shù)據(jù)高速緩存以及一級或多級共享中級高速緩存,諸如2級(l2)、3級(l3)、4級(l4)、或其他級的高速緩存,其中,最高級的高速緩存在外部存儲器之前被分類為llc。在一些實施例中,高速緩存一致性邏輯維持各高速緩存單元206與204a-n之間的一致性。在一些實施例中,處理器200還可以包括一組一個或多個總線控制器單元216和系統(tǒng)代理210。所述一個或多個總線控制器單元管理外圍總線集合,諸如一個或多個外圍組件互連總線(例如,pci總線、pci快速總線)。系統(tǒng)代理210提供對各處理器部件的管理功能。在一些實施例中,系統(tǒng)代理210包括一個或多個集成存儲器控制器214用于管理對各外部存儲器設(shè)備(未示出)的訪問。在一些實施例中,核202a-n中的一個或多個包括對同步多線程的支持。在這種實施例中,系統(tǒng)代理210包括用于在多線程處理過程中協(xié)調(diào)和操作核202a-n的部件。系統(tǒng)代理210可以附加地包括功率控制單元(pcu),所述功率控制單元包括用于調(diào)節(jié)核202a-n的功率狀態(tài)的邏輯和部件以及圖形處理器208。在一些實施例中,處理器200附加地包括用于執(zhí)行圖形處理操作的圖形處理器208。在一些實施例中,圖形處理器208耦合至共享高速緩存單元206集以及系統(tǒng)代理單元210,所述系統(tǒng)代理單元包括所述一個或多個集成存儲器控制器214。在一些實施例中,顯示控制器211與圖形處理器208耦合以便將圖形處理器輸出驅(qū)動到一個或多個耦合的顯示器。在一些實施例中,顯示控制器211可以是經(jīng)由至少一個互連與圖形處理器耦合的單獨模塊,或者可以集成在圖形處理器208或系統(tǒng)代理210內(nèi)。在一些實施例中,基于環(huán)的互連單元212用于耦合處理器200的內(nèi)部部件。然而,可以使用替代性互連單元,比如點到點互連、切換式互連、或其他技術(shù),包括本領(lǐng)域眾所周知的技術(shù)。在一些實施例中,圖形處理器208經(jīng)由i/o鏈路213與環(huán)形互連212耦合。示例性i/o鏈路213代表多個i/o互連中的至少一個,包括促進各處理器部件與高性能嵌入式存儲器模塊218(比如edram模塊)之間的通信的封裝體i/o互連。在一些實施例中,核202-n中的每個核以及圖形處理器208將嵌入式存儲器模塊218用作共享末級高速緩存。在一些實施例中,核202a-n是執(zhí)行相同指令集架構(gòu)的均質(zhì)核。在另一個實施例中,核202a-n就指令集架構(gòu)(isa)而言是同質(zhì)的,其中,核202a-n中的一個或多個核執(zhí)行第一指令集,而其他核中的至少一個核執(zhí)行所述第一指令集的子集或不同的指令集。在一些實施例中,處理器200是使用多種處理技術(shù)(例如,互補型金屬氧化物半導(dǎo)體(cmos)、雙極結(jié)型/互補型金屬氧化物半導(dǎo)體(bicmos)、或n型金屬氧化物半導(dǎo)體邏輯(nmos))中的任何處理技術(shù)的一個或多個襯底的一部分或者實現(xiàn)在所述一個或多個襯底上。另外,處理器200可以實現(xiàn)在一個或多個芯片上或者被實現(xiàn)為具有除其他部件之外的所展示的部件的soc集成電路。圖3是圖形處理器300的框圖,所述圖形處理器可以是分立式圖形處理單元、或者可以是與多個處理核集成的圖形處理器。在一些實施例中,圖形處理器經(jīng)由到圖形處理器上的寄存器的映射i/o接口并且利用被放置在處理器存儲器中的命令與存儲器進行通信。在一些實施例中,圖形處理器300包括用于訪問存儲器的存儲器接口314。存儲器接口314可以是到本地存儲器、一個或多個內(nèi)部高速緩存、一個或多個共享外部高速緩存、和/或到系統(tǒng)存儲器的接口。在一些實施例中,圖形處理器300還包括顯示控制器302,所述顯示控制器用于將顯示輸出數(shù)據(jù)驅(qū)動到顯示設(shè)備320。顯示控制器302包括用于顯示器的一個或多個重疊平面的硬件以及多層視頻或用戶接口元件的組成。在一些實施例中,圖形處理器300包括用于編碼、解碼、或者向、從或在一個或多個媒體編碼格式之間進行媒體代碼轉(zhuǎn)換的視頻編解碼器引擎306,包括但不限于:運動圖像專家組(mpeg)(諸如mpeg-2)、高級視頻編碼(avc)格式(諸如h.264/mpeg-4avc)、以及電影&電視工程師協(xié)會(smpte)421m/vc-1、和聯(lián)合圖像專家組(jpeg)格式(諸如jpeg、以及運動jpeg(mjpeg)格式)。在一些實施例中,圖形處理器300包括塊圖像轉(zhuǎn)移(blit)引擎304以便執(zhí)行二維(2d)柵格器操作,包括例如,位邊界塊轉(zhuǎn)移。然而,在一個實施例中,使用圖形處理引擎(gpe)310的一個或多個部件執(zhí)行2d圖形操作。在一些實施例中,圖形處理引擎310是用于執(zhí)行圖形操作的計算引擎,所述圖形操作包括三維(3d)圖形操作和媒體操作。在一些實施例中,gpe310包括用于執(zhí)行3d操作的3d流水線312,比如使用作用于3d圖元形狀(例如,矩形、三角形等)的處理功能來渲染三維圖像和場景。3d流水線312包括可編程且固定的功能元件,所述可編程且固定的功能元件在到3d/媒體子系統(tǒng)315的元件和/或生成的執(zhí)行線程內(nèi)執(zhí)行各種任務(wù)。雖然3d流水線312可以用于執(zhí)行媒體操作,但是gpe310的實施例還包括媒體流水線316,所述媒體流水線具體地用于執(zhí)行媒體操作,諸如視頻后處理和圖像增強。在一些實施例中,媒體流水線316包括固定功能或可編程邏輯單元以便代替、或代表視頻編解碼器引擎306來執(zhí)行一種或多種專門的媒體操作,比如視頻解碼加速、視頻去隔行、以及視頻編碼加速。在一些實施例中,媒體流水線316附加地包括線程生成單元以便生成用于在3d/媒體子系統(tǒng)315上執(zhí)行的線程。所生成的線程對3d/媒體子系統(tǒng)315中所包括的一個或多個圖形執(zhí)行單元執(zhí)行對媒體操作的計算。在一些實施例中,3d/媒體子系統(tǒng)315包括用于執(zhí)行3d流水線312和媒體流水線316生成的線程的邏輯。在一個實施例中,流水線向3d/媒體子系統(tǒng)315發(fā)送線程執(zhí)行請求,所述3d/媒體子系統(tǒng)包括用于仲裁并將各請求分派到可用的線程執(zhí)行資源的線程分派邏輯。所述執(zhí)行資源包括用于處理3d線程和媒體線程的圖形執(zhí)行單元陣列。在一些實施例中,3d/媒體子系統(tǒng)315包括用于線程指令和數(shù)據(jù)的一個或多個內(nèi)部高速緩存。在一些實施例中,所述子系統(tǒng)還包括共享存儲器(包括寄存器和可尋址存儲器)以便在線程之間共享數(shù)據(jù)并用于存儲輸出數(shù)據(jù)。3d/媒體處理圖4是根據(jù)一些實施例的圖形處理器的圖形處理引擎410的框圖。在一個實施例中,gpe410是圖3中示出的gpe310的版本。圖4的具有與此處任何其他附圖中的元件相同的參考號(或名稱)的那些元件可采用與在本文中其他地方描述的方式相類似的任何方式進行操作或起作用,但不限于這些。在一些實施例中,gpe410與命令流轉(zhuǎn)換器403耦合,所述命令流轉(zhuǎn)換器向gpe3d流水線412和媒體流水線416提供命令流。在一些實施例中,命令流轉(zhuǎn)換器403耦合至存儲器,所述存儲器可以是系統(tǒng)存儲器、或內(nèi)部高速緩存存儲器和共享高速緩存存儲器中的一個或多個高速緩存存儲器。在一些實施例中,命令流轉(zhuǎn)換器403從存儲器接收命令并將這些命令發(fā)送至3d流水線412和/或媒體流水線416。3d流水線和媒體流水線通過經(jīng)由各自流水線內(nèi)的邏輯執(zhí)行操作或者通過將一個或多個執(zhí)行線程分派至執(zhí)行單元陣列414來處理所述命令。在一些實施例中,執(zhí)行單元陣列414是可擴展的,從而使得所述陣列包括基于gpe410的目標(biāo)功率和性能水平的可變數(shù)量的執(zhí)行單元。在一些實施例中,采樣引擎430與存儲器(例如,高速緩存存儲器或系統(tǒng)存儲器)和執(zhí)行單元陣列414耦合。在一些實施例中,采樣引擎430為執(zhí)行單元陣列414提供存儲器訪問機制,所述存儲器訪問機制允許執(zhí)行陣列414從存儲器讀取圖形和媒體數(shù)據(jù)。在一些實施例中,采樣引擎430包括用于執(zhí)行針對媒體的專門圖像采樣操作的邏輯。在一些實施例中,采樣引擎430中的所述專門媒體采樣邏輯包括去噪/去隔行模塊432、運動估計模塊434、以及圖像縮放和濾波模塊436。在一些實施例中,去噪/去隔行模塊432包括用于對經(jīng)解碼的視頻數(shù)據(jù)執(zhí)行去噪或去隔行算法中的一項或多項的邏輯。去隔行邏輯將隔行的視頻內(nèi)容的交替字段組合為單個視頻幀。所述去噪邏輯從視頻和圖像數(shù)據(jù)減少或去除數(shù)據(jù)噪聲。在一些實施例中,所述去噪和去隔行邏輯是運動自適應(yīng)的并且使用基于在所述視頻數(shù)據(jù)中檢測到的運動量的空間或時間濾波。在一些實施例中,去噪/去隔行模塊432包括專門的運動檢測邏輯(例如,在運動估計引擎434內(nèi))。在一些實施例中,運動估計引擎434通過對視頻數(shù)據(jù)執(zhí)行視頻加速功能(比如運動向量估計和預(yù)測)來為視頻操作提供硬件加速。運動估計引擎確定運動向量,所述運動向量描述了連續(xù)視頻幀之間的圖像數(shù)據(jù)的變換。在一些實施例中,圖形處理器媒體編解碼器使用視頻運動估計引擎434來對宏塊級視頻執(zhí)行操作,對于其利用通用處理器來執(zhí)行可以另外地是太計算密集型的。在一些實施例中,運動估計引擎434通??捎糜趫D形處理器部件以便輔助視頻解碼和處理功能,所述視頻解碼和處理功能對于視頻數(shù)據(jù)內(nèi)的運動的方向或幅度是敏感或自適應(yīng)的。在一些實施例中,圖像縮放和濾波模塊436執(zhí)行圖像處理操作以便增強所生成的圖像和視頻的視覺質(zhì)量。在一些實施例中,縮放和濾波模塊436在向執(zhí)行單元陣列414提供數(shù)據(jù)之前在采樣操作過程中處理圖像和視頻數(shù)據(jù)。在一些實施例中,gpe410包括數(shù)據(jù)端口444,所述數(shù)據(jù)端口提供用于圖形子系統(tǒng)訪問存儲器的附加機制。在一些實施例中,數(shù)據(jù)端口444針對操作促進存儲器訪問,所述操作包括渲染目標(biāo)寫入、恒定緩沖器讀取、暫時存儲器空間讀區(qū)/寫入、和媒體表面訪問。在一些實施例中,數(shù)據(jù)端口444包括用于高速緩存對存儲器的訪問的高速緩存存儲器空間。所述高速緩存存儲器可以是單個數(shù)據(jù)高速緩存或者被分割為用于所述多個子系統(tǒng)的多個高速緩存,所述多個高速緩存經(jīng)由數(shù)據(jù)端口訪問存儲器(例如,渲染緩沖器高速緩存、恒定緩沖器高速緩存等)。在一些實施例中,在執(zhí)行單元陣列414中的執(zhí)行單元上執(zhí)行的線程通過經(jīng)由數(shù)據(jù)分配互連來交換消息而與所述數(shù)據(jù)端口進行通信,所述數(shù)據(jù)分配互連耦合gpe410的所述子系統(tǒng)中的每個子系統(tǒng)。執(zhí)行單元圖5是圖形處理器500的另一實施例的框圖。圖5的具有與此處任何其他附圖中的元件相同的參考號(或名稱)的那些元件可采用與在本文中其他地方描述的方式相類似的任何方式進行操作或起作用,但不限于這些。在一些實施例中,圖形處理器500包括環(huán)形互連502、流水線前端504、媒體引擎537、以及圖形核580a-n。在一些實施例中,環(huán)形互連502將所述圖形處理器耦合至其他處理單元,包括其他圖形處理器或者一個或多個通用處理器核。在一些實施例中,圖形處理器是集成在多核處理系統(tǒng)內(nèi)的多個處理器之一。在一些實施例中,圖形處理器500經(jīng)由環(huán)形互連502接收多批命令。傳入命令由流水線前端504中的命令流轉(zhuǎn)換器503來解譯。在一些實施例中,圖形處理器500包括用于經(jīng)由所述(多個)圖形核580a-n來執(zhí)行3d幾何處理和媒體處理的可擴展執(zhí)行邏輯。針對3d幾何處理命令,命令流轉(zhuǎn)換器503將所述命令供應(yīng)至幾何流水線536。針對至少一些媒體處理命令,命令流轉(zhuǎn)換器503將所述命令供應(yīng)至視頻前端534,所述視頻前端與媒體引擎537耦合。在一些實施例中,媒體引擎537包括用于視頻和圖像后處理的視頻質(zhì)量引擎(vqe)530以及用于提供硬件加速的媒體數(shù)據(jù)編碼和解碼的多格式編碼/解碼(mfx)533引擎。在一些實施例中,幾何流水線536和媒體引擎537各自生成執(zhí)行線程,所述執(zhí)行線程用于由至少一個圖形核580a提供的線程執(zhí)行資源。在一些實施例中,圖形處理器500包括可擴展線程執(zhí)行資源表征模塊核580a-n(有時被稱為核分片),各個可擴展線程執(zhí)行資源表征模塊核具有多個子核550a-n、560a-n(有時被稱為核子分片)。在一些實施例中,圖形處理器500可以具有任意數(shù)量的圖形核580a至580n。在一些實施例中,圖形處理器500包括圖形核580a,所述圖形核至少具有第一子核550a和第二子核560a。在其他實施例中,圖形處理器是具有單個子核(例如,550a)的低功率處理器。在一些實施例中,圖形處理器500包括多圖形核580a-n,每個圖形核包括第一子核550a-n的集合以及第二子核560a-n的集合。所述第一子核550a-n的集合中的每個子核至少包括執(zhí)行單元552a-n以及媒體/紋理采樣器554a-n的第一集合。所述第二子核560a-n的集合中的每個子核至少包括執(zhí)行單元562a-n以及采樣器564a-n的第二集合。在一些實施例中,每個子核550a-n、560a-n對共享資源570a-n的集合進行共享。在一些實施例中,所述共享資源包括共享高速緩存存儲器和像素操作邏輯。其他共享資源也可以包括在圖形處理器的各實施例中。圖6展示了線程執(zhí)行邏輯600,所述線程執(zhí)行邏輯包括在gpe的一些實施例中采用的處理元件陣列。圖6的具有與此處任何其他附圖中的元件相同的參考號(或名稱)的那些元件可采用與在本文中其他地方描述的方式相類似的任何方式進行操作或起作用,但不限于這些。在一些實施例中,線程執(zhí)行邏輯600包括像素著色器602、線程分派器604、指令高速緩存606、包括多個執(zhí)行單元608a-n的可擴展執(zhí)行單元陣列、采樣器610、數(shù)據(jù)高速緩存612、以及數(shù)據(jù)端口614。在一個實施例中,所包括的部件經(jīng)由互連結(jié)構(gòu)而互連,所述互連結(jié)構(gòu)鏈接至所述部件中的每個部件。在一些實施例中,線程執(zhí)行邏輯600包括通過指令高速緩存606、數(shù)據(jù)端口614、采樣器610、以及執(zhí)行單元陣列608a-n中的一項或多項與存儲器(諸如系統(tǒng)存儲器或高速緩存存儲器)的一個或多個連接。在一些實施例中,每個執(zhí)行單元(例如,608a)是單獨的向量處理器,所述向量處理器能夠執(zhí)行多個同步線程并且針對每個線程并行地處理多個數(shù)據(jù)元素。在一些實施例中,執(zhí)行單元陣列608a-n包括任意數(shù)量的單獨執(zhí)行單元。在一些實施例中,執(zhí)行單元陣列608a-n主要用于執(zhí)行“著色器”程序。在一些實施例中,陣列608a-n中的執(zhí)行單元執(zhí)行指令集(所述指令集包括對許多標(biāo)準(zhǔn)3d圖形著色器指令的本機支持),從而使得以最小的轉(zhuǎn)換執(zhí)行來自圖形庫(例如,direct3d和opengl)的著色器程序。執(zhí)行單元支持頂點和幾何處理(例如,頂點程序、幾何程序、頂點著色器)、像素處理(例如,像素著色器、碎片著色器)和通用處理(例如,計算和媒體著色器)。執(zhí)行單元陣列608a-n中的每個執(zhí)行單元在數(shù)據(jù)元素陣列上進行操作。數(shù)據(jù)元素的數(shù)量是“執(zhí)行大小”、或針對指令的通道數(shù)量。執(zhí)行通道是執(zhí)行數(shù)據(jù)元素訪問、掩蓋、和指令內(nèi)的流控制的邏輯單元。通道的數(shù)量可以與針對特定圖形處理器的物理算術(shù)邏輯單元(alu)或浮點單元(fpu)的數(shù)量無關(guān)。在一些實施例中,執(zhí)行單元608a-n支持整數(shù)和浮點數(shù)據(jù)類型。執(zhí)行單元指令集包括單指令多數(shù)據(jù)(simd)指令。所述各數(shù)據(jù)元素可作為壓縮數(shù)據(jù)類型存儲在寄存器中,并且所述執(zhí)行單元將基于所述元素的數(shù)據(jù)大小來處理所述各元素。例如,當(dāng)在256位寬的向量上進行操作時,所述256位的向量存儲在寄存器中,并且所述執(zhí)行單元作為四個單獨64位壓縮數(shù)據(jù)元素(四倍字長(qw)大小的數(shù)據(jù)元素)、八個單獨32位壓縮數(shù)據(jù)元素(雙倍字長(dw)大小的數(shù)據(jù)元素)、十六個單獨16位壓縮數(shù)據(jù)元素(字長(w)大小的數(shù)據(jù)元素)、或三十二個單獨8位數(shù)據(jù)元素(字節(jié)(b)大小的數(shù)據(jù)元素)在所述向量上進行操作。然而,不同的向量寬度和寄存器大小是可能的。一個或多個內(nèi)部指令高速緩存(例如,606)包括在所述線程執(zhí)行邏輯600中以便高速緩存所述執(zhí)行單元的線程指令。在一些實施例中,一個或多個數(shù)據(jù)高速緩存(例如,612)被包括用于高速緩存在線程執(zhí)行過程中的線程數(shù)據(jù)。在一些實施例中,采樣器610被包括用于為3d操作提供紋理采樣并且為媒體操作提供媒體采樣。在一些實施例中,采樣器610包括專門的紋理或媒體采樣功能,以便在向執(zhí)行單元提供采樣數(shù)據(jù)之前在采樣處理過程中處理紋理或媒體數(shù)據(jù)。在執(zhí)行過程中,所述圖形和媒體流水線經(jīng)由線程生成和分派邏輯向線程執(zhí)行邏輯600發(fā)送線程發(fā)起請求。在一些實施例中,線程執(zhí)行邏輯600包括本地線程分派器604,所述本地線程分派器對來自所述圖形和媒體流水線的線程發(fā)起請求進行仲裁并且在一個或多個執(zhí)行單元608a-n上實例化所述請求的線程。例如,所述幾何流水線(例如,圖5的536)將頂點處理、鑲嵌或幾何處理線程分派至所述線程執(zhí)行邏輯600(圖6)。在一些實施例中,線程分派器604還可處理來自執(zhí)行著色器程序的運行時間線程生成請求。一旦一組幾何對象已經(jīng)被處理并被柵格化成像素數(shù)據(jù),則像素著色器602被調(diào)用以便進一步計算輸出信息并且使得結(jié)果被寫入到輸出表面(例如,色彩緩沖器、深度緩沖器、模板緩沖器等)。在一些實施例中,像素著色器602計算各頂點屬性的值,所述各頂點屬性跨柵格化對象被內(nèi)插。在一些實施例中,像素著色器602然后執(zhí)行api供應(yīng)的像素著色器程序。為了執(zhí)行所述像素著色器程序,像素著色器602經(jīng)由線程分派器604將線程分派至執(zhí)行單元(例如,608a)。在一些實施例中,像素著色器602使用采樣器610中的紋理采樣邏輯來訪問存儲器中所存儲的紋理圖中的紋理數(shù)據(jù)。對紋理數(shù)據(jù)和輸入幾何數(shù)據(jù)的算術(shù)運算計算每個幾何碎片的像素顏色數(shù)據(jù),或丟棄一個或多個像素而不進行進一步處理。在一些實施例中,數(shù)據(jù)端口614提供存儲器訪問機制,供線程執(zhí)行邏輯600將經(jīng)處理的數(shù)據(jù)輸出至存儲器以便在圖形處理器輸出流水線上進行處理。在一些實施例中,數(shù)據(jù)端口614包括或耦合至一個或多個高速緩存存儲器(例如,數(shù)據(jù)高速緩存612)從而經(jīng)由數(shù)據(jù)端口高速緩存數(shù)據(jù)以供存儲器訪問。圖7是框圖,展示了根據(jù)一些實施例的圖形處理器指令格式700。在一個或多個實施例中,圖形處理器執(zhí)行單元支持具有多種格式的指令的指令集。實線框展示了通常包括在執(zhí)行單元指令中的部件,而虛線包括可選的部件或僅包括在指令子集中的部件。在一些實施例中,所描述和展示的指令格式700是宏指令,因為它們是供應(yīng)至執(zhí)行單元的指令,這與從指令解碼產(chǎn)生的微操作相反(一旦所述指令被處理)。在一些實施例中,圖形處理器執(zhí)行單元本機地支持采用128位格式710的指令。64位壓縮指令格式730可用于基于所選擇的指令、指令選項、以及操作數(shù)量的一些指令。本機128位格式710提供對所有指令選項的訪問,而一些選項和操作限制在64位格式730中。64位格式730中可用的本地指令根據(jù)實施例而不同。在一些實施例中,使用索引字段713中的一組索引值將指令部分地壓緊。所述執(zhí)行單元硬件基于索引值來參考一組壓縮表,并使用所述壓縮表輸出來重構(gòu)采用128位格式710的本地指令。針對每種格式,指令操作碼712限定了所述執(zhí)行單元要執(zhí)行的操作。所述執(zhí)行單元跨每個操作數(shù)的所述多個數(shù)據(jù)元素來并行地執(zhí)行每條指令。例如,響應(yīng)于添加指令,所述執(zhí)行單元跨每個顏色通道執(zhí)行同步添加操作,所述顏色通道表示紋理元素或圖片元素。默認(rèn)地,所述執(zhí)行單元跨所述操作數(shù)的所有數(shù)據(jù)通道執(zhí)行每條指令。在一些實施例中,指令控制字段712使能控制某些執(zhí)行選項,諸如通道選擇(例如,預(yù)測)以及數(shù)據(jù)通道排序(例如,重排)。針對128位的指令710,執(zhí)行大小字段716限制了將并行執(zhí)行的數(shù)據(jù)通道的數(shù)量。在一些實施例中,執(zhí)行大小字段716不可用于64位的壓緊指令格式730。一些執(zhí)行單元指令具有多達三個操作數(shù),包括兩個源操作數(shù)(src0722、src1722)和一個目的地718。在一些實施例中,執(zhí)行單元支持雙目的地指令,其中,這些目的地之一是隱式的。數(shù)據(jù)操控指令可以具有三個源操作數(shù)(例如,src2724),其中,指令操作碼712確定源操作數(shù)的數(shù)量。指令的最后一個源操作數(shù)可以是指令所傳遞的中間值(例如,硬編碼值)。在一些實施例中,128位的指令格式710包括訪問/尋址模式信息726,所述訪問/尋址模式信息例如限定了是使用直接寄存器尋址模式還是間接寄存器尋址模式。當(dāng)使用直接寄存器尋址模式時,直接由指令710中的位來提供一個或多個操作數(shù)的寄存器地址。當(dāng)使用間接寄存器尋址模式時,可以基于字段726來計算一個或多個操作數(shù)的寄存器地址,所述字段限定了指令中的地址寄存器值模式和/或地址立即字段。在一個實施例中,訪問/尋址模式信息726可以確定操作數(shù)模式以便限定針對指令的數(shù)據(jù)訪問對齊。例如,當(dāng)在第一模式中指令710可以使用字節(jié)對齊尋址以用于源操作數(shù)和目的地操作數(shù),并且當(dāng)在第二模式中指令710可以使用16字節(jié)對齊的訪問和1字節(jié)對齊的尋址模式模式以用于所有的源操作數(shù)和目的地操作數(shù),在訪問模式中,所述訪問模式的字節(jié)對齊確定指令操作數(shù)的訪問對齊。在一些實施例中,基于操作碼位字段對指令進行分組從而簡化操作碼解碼740。針對8位的操作碼,第4、5、和6位允許執(zhí)行單元確定操作碼的類型。所示出的精確操作碼分組僅是示例性的。在一些實施例中,移動和邏輯操作碼分組742包括數(shù)據(jù)移動和邏輯指令(例如,移動(mov)、比較(cmp))。在一些實施例中,移動和邏輯分組742共享五個最高有效位(msb),其中,移動(mov)指令采用0000xxxxb(例如,0x0x)形式,并且邏輯指令采用0001xxxxb(例如,0x01)形式。流控制指令分組744(例如,調(diào)用、跳躍(jmp))包括采用0010xxxxb(例如,0x20)形式的指令。雜項指令分組746包括指令的混合,包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待、發(fā)送)。并行數(shù)學(xué)指令分組748包括采用0100xxxxb形式(例如,0x40)的部件式的算術(shù)指令(例如,相加、相乘(mul))。并行數(shù)學(xué)分組748跨數(shù)據(jù)通道并行地執(zhí)行算術(shù)運算。向量數(shù)學(xué)分組750包括0101xxxxb(例如,0x50)形式的算術(shù)指令(例如,dp4)。向量數(shù)學(xué)分組對向量操作數(shù)執(zhí)行算術(shù)運算,比如點積運算。圖形流水線圖8是圖形處理器800的另一實施例的框圖。圖8的具有與此處任何其他附圖中的元件相同的參考號(或名稱)的那些元件可采用與在本文中其他地方描述的方式相類似的任何方式進行操作或起作用,但不限于這些。在一些實施例中,圖形處理器800包括圖形流水線820、媒體流水線830、顯示引擎840、線程執(zhí)行邏輯850、以及渲染輸出流水線870。在一些實施例中,圖形處理器800是包括一個或多個通用處理核的多核處理系統(tǒng)內(nèi)的圖形處理器。圖形處理器受到至一個或多個控制寄存器(未示出)的寄存器寫入的控制或者經(jīng)由環(huán)形互連802經(jīng)由下發(fā)至圖形處理器800的命令被控制。在一些實施例中,環(huán)形互連802將圖形處理器800耦合至其他處理部件,比如其他圖形處理器或通用處理器。來自環(huán)形互連802的命令通過命令流轉(zhuǎn)換器803被解譯,所述命令流轉(zhuǎn)換器將指令供應(yīng)至圖形流水線820或媒體流水線830的單獨部件。在一些實施例中,所述命令流轉(zhuǎn)換器803引導(dǎo)頂點拾取器805的操作,所述頂點拾取器從存儲器讀取頂點數(shù)據(jù)并執(zhí)行由命令流轉(zhuǎn)換器803所提供的頂點處理命令。在一些實施例中,頂點拾取器805將頂點數(shù)據(jù)提供給頂點著色器807,所述頂點著色器對每個頂點執(zhí)行坐標(biāo)空間轉(zhuǎn)換和照明操作。在一些實施例中,頂點拾取器805和頂點著色器807通過經(jīng)由線程分派器831向執(zhí)行單元852a、852b分派執(zhí)行線程來執(zhí)行頂點處理指令。在一些實施例中,執(zhí)行單元852a、852b是具有用于執(zhí)行圖形和媒體操作的指令集的向量處理器陣列。在一些實施例中,執(zhí)行單元852a、852b具有附接的l1高速緩存851,所述高速緩存對每個陣列是特定的或在陣列之間被共享。所述高速緩存可以被配置成數(shù)據(jù)高速緩存、指令高速緩存、或單個高速緩存,所述單個高速緩存被分區(qū)為包含不同分區(qū)中的數(shù)據(jù)和指令。在一些實施例中,圖形流水線820包括用于執(zhí)行3d對象的硬件加速鑲嵌的鑲嵌部件。在一些實施例中,可編程的外殼著色器811配置鑲嵌操作??删幊逃蛑?17提供對鑲嵌輸出的后端評估。鑲嵌器813在外殼著色器811的方向上進行操作并且包含專用邏輯,所述專用邏輯用于基于粗糙幾何模型來生成詳細的幾何對象集合,所述粗糙幾何模型作為輸入被提供至圖形流水線820。在一些實施例中,如果未使用鑲嵌,則可以對鑲嵌部件811、813、817進行旁路。在一些實施例中,完整的幾何對象可以由幾何著色器819經(jīng)由被分派至所述執(zhí)行單元852a、852b的一個或多個線程來處理、或者可以直接行進至剪裁器829。在一些實施例中,幾何著色器在整個幾何對象(而非頂點或者如圖形流水線的先前級中的頂點分片)上進行操作。如果禁用所述鑲嵌,則所述幾何著色器819從所述頂點著色器807接收輸入。在一些實施例中,幾何著色器819可由幾何著色器程序編程以便在鑲嵌單元被禁用時執(zhí)行幾何鑲嵌。在柵格化之前,剪裁器829處理頂點數(shù)據(jù)。剪裁器829可以是固定功能的剪裁器或者具有剪裁和幾何著色器功能的可編程剪裁器。在一些實施例中,渲染輸出流水線870中的柵格器873分派像素著色器以將幾何對象轉(zhuǎn)換成其每像素表示。在一些實施例中,像素著色器邏輯包括在線程執(zhí)行邏輯850中。在一些實施例中,應(yīng)用可對柵格器873進行旁路并且經(jīng)由流出單元823訪問未柵格化的頂點數(shù)據(jù)。圖形處理器800具有互連總線、互連結(jié)構(gòu)、或某個其他的互連機制,所述互連機制允許數(shù)據(jù)和消息在所述圖形處理器的主要部件之中傳遞。在一些實施例中,執(zhí)行單元852a、852b和(多個)相關(guān)聯(lián)的高速緩存851、紋理和媒體采樣器854、以及紋理/采樣器高速緩存858經(jīng)由數(shù)據(jù)端口856進行互連,以便執(zhí)行存儲器訪問并且與所述處理器的渲染輸出流水線部件進行通信。在一些實施例中,采樣器854、高速緩存851、858以及執(zhí)行單元852a、852b各自具有單獨的存儲器訪問路徑。在一些實施例中,渲染輸出流水線870包含柵格器和深度測試部件873,所述柵格器和深度測試部件將基于頂點的對象轉(zhuǎn)換為相關(guān)聯(lián)的基于像素的表示。在一些實施例中,柵格化邏輯包括用于執(zhí)行固定功能三角形和線柵格化的窗口器/掩蔽器單元。相關(guān)聯(lián)的渲染和深度緩沖器高速緩存878、879在一些實施例中也是可用的。像素操作部件877對所述數(shù)據(jù)執(zhí)行基于像素的操作,盡管在一些實例中,與2d操作(例如,利用混合的位塊圖像轉(zhuǎn)移)相關(guān)聯(lián)的像素操作由2d引擎841來執(zhí)行、或者在顯示時間由顯示控制器843使用重疊顯示平面來代替。在一些實施例中,共享的l3高速緩存875可用于所有的圖形部件,從而允許在無需使用主系統(tǒng)存儲器的情況下共享數(shù)據(jù)。在一些實施例中,圖形處理器媒體流水線830包括媒體引擎837和視頻前端834。在一些實施例中,視頻前端834從命令流轉(zhuǎn)換器803接收流水線命令。在一些實施例中,媒體流水線830包括單獨的命令流轉(zhuǎn)換器。在一些實施例中,視頻前端834在將所述命令發(fā)送至媒體引擎837之前處理媒體命令。在一些實施例中,媒體引擎337包括用于生成線程以用于經(jīng)由線程分派器831分派至線程執(zhí)行邏輯850的線程生成功能。在一些實施例中,圖形處理器800包括顯示引擎840。在一些實施例中,顯示引擎840在處理器800外部并且經(jīng)由環(huán)形互連802、或某個其他互連總線或機構(gòu)耦合至圖形處理器。在一些實施例中,顯示引擎840包括2d引擎841和顯示控制器843。在一些實施例中,顯示引擎840包含能夠獨立于3d流水線而操作的專用邏輯。在一些實施例中,顯示控制器843與顯示設(shè)備(未示出)耦合,所述顯示設(shè)備可以是系統(tǒng)集成顯示設(shè)備(如在膝上型計算機中)、或者經(jīng)由顯示設(shè)備連接器附接的外部顯示設(shè)備。在一些實施例中,圖形流水線820和媒體流水線830可配置成用于基于多個圖形和媒體編程接口執(zhí)行操作并且并非專用于任何一種應(yīng)用編程接口(api)。在一些實施例中,圖形處理器的驅(qū)動器軟件將專用于特定圖形或媒體庫的api調(diào)度轉(zhuǎn)換成可由圖形處理器處理的命令。在一些實施例中,為來自科納斯(khronos)集團的開放圖形庫(opengl)和開放計算語言(opencl)、來自微軟公司的direct3d庫提供支持、或者可以向opengl和d3d兩者提供支持。還可以為開源計算機視覺庫(opencv)提供支持。如果可做出從未來api的流水線到圖形處理器的流水線的映射,則具有兼容3d流水線的未來api也將受到支持。圖形流水線編程圖9a是框圖,展示了根據(jù)一些實施例的圖形處理器命令格式900。圖9b是框圖,展示了根據(jù)實施例的圖形處理器命令序列910。圖9a中的實線框展示了通常包括在圖形命令中的部件,而虛線包括是可選的或者僅包括在所述圖形命令的子集中的部件。圖9a的示例性圖形處理器命令格式900包括用于標(biāo)識所述命令的目標(biāo)客戶端902的數(shù)據(jù)字段、命令操作碼(opcode)904、以及用于所述命令的相關(guān)數(shù)據(jù)906。子操作碼905和命令大小908也包括在一些命令中。在一些實施例中,客戶端902限定了處理命令數(shù)據(jù)的圖形設(shè)備的客戶端單元。在一些實施例中,圖形處理器命令解析器檢查每個命令的客戶端字段以便調(diào)整對命令的進一步處理并將命令數(shù)據(jù)路由至合適的客戶端單元。在一些實施例中,圖形處理器客戶端單元包括存儲器接口單元、渲染單元、2d單元、3d單元、和媒體單元。每個客戶端單元具有對命令進行處理的相應(yīng)處理流水線。一旦命令被客戶端單元接收到,客戶端單元就讀取操作碼904以及子操作碼905(如果存在的話)從而確定要執(zhí)行的操作??蛻舳藛卧褂脭?shù)據(jù)字段906內(nèi)的信息來執(zhí)行命令。針對一些命令,期望明確的命令大小908來限定命令的大小。在一些實施例中,命令解析器基于命令操作碼自動地確定命令中的至少一些命令的大小。在一些實施例中,經(jīng)由雙倍字長的倍數(shù)對命令進行對齊。圖9b中的流程圖示出了示例性命令序列910。在一些實施例中,以圖形處理器的實施例為特征的數(shù)據(jù)處理系統(tǒng)的軟件或固件使用所示出的命令序列的版本來啟動、執(zhí)行并終止圖形操作集合。僅出于示例性目的示出并描述了樣本命令序列,如實施例并不限于這些特定命令或者此命令序列。而且,所述命令可以作為一批命令以命令序列被下發(fā),從而使得圖形處理器將以至少部分同時的方式處理命令序列。在一些實施例中,樣本命令序列910可以以流水線沖刷(flush)命令912開始以便使得任一活躍圖形流水線完成針對所述流水線的當(dāng)前未決命令。在一些實施例中,3d流水線922和媒體流水線924不同時進行操作。執(zhí)行流水線沖刷以使得所述活動圖形流水線完成任何未決命令。響應(yīng)于流水線沖刷,用于圖形處理器的命令解析器將停止命令處理直到活躍繪畫引擎完成未決操作并且使得相關(guān)的讀高速緩存失效??蛇x地,渲染高速緩存中被標(biāo)記為‘臟’的任何數(shù)據(jù)可以被沖刷到存儲器中。在一些實施例中,流水線沖刷命令912可以用于流水線同步或者用在將圖形處理器置于低功率狀態(tài)之前。在一些實施例中,當(dāng)命令序列需要圖形處理器在流水線之間明確地切換時,使用流水線選擇命令913。在一些實施例中,在下發(fā)流水線命令之前在執(zhí)行情境中僅需要一次流水線選擇命令913,除非所述情境要下發(fā)針對兩條流水線的命令。在一些實施例中,在經(jīng)由流水線選擇命令913的流水線切換之前正好需要流水線沖刷命令912。在一些實施例中,流水線控制命令914配置用于操作的圖形流水線并且用于對3d流水線922和媒體流水線924進行編程。在一些實施例中,流水線控制命令914配置活躍流水線的流水線狀態(tài)。在一個實施例中,流水線控制命令914用于流水線同步并且用于在處理一批命令之前清除來自活躍流水線內(nèi)的一個或多個高速緩存存儲器中的數(shù)據(jù)。在一些實施例中,返回緩沖器狀態(tài)命令916用于配置返回緩沖器的集合以供相應(yīng)的流水線寫入數(shù)據(jù)。一些流水線操作需要分配、選擇、或配置一個或多個返回緩沖器,在處理過程中所述操作將中間數(shù)據(jù)寫入所述一個或多個返回緩沖器中。在一些實施例中,圖形處理器還使用一個或多個返回緩沖器以便存儲輸出數(shù)據(jù)并且執(zhí)行跨線程通信。在一些實施例中,返回緩沖器狀態(tài)916包括選擇返回緩沖器的大小和數(shù)量以用于流水線操作集合。命令序列中的剩余命令基于用于操作的活躍流水線而不同。基于流水線判定920,所述命令序列被定制成用于以3d流水線狀態(tài)930開始的3d流水線922、或者在媒體流水線狀態(tài)940處開始的媒體流水線924。針對所述3d流水線狀態(tài)930的命令包括針對頂點緩沖器狀態(tài)、頂點元素狀態(tài)、恒定色彩狀態(tài)、深度緩沖器狀態(tài)、以及在處理3d圖元命令之前待配置的其他狀態(tài)變量的3d狀態(tài)設(shè)置命令。至少部分地基于使用中的特定3dapi來確定這些命令的值。在一些實施例中,3d流水線狀態(tài)930命令還能夠選擇性地禁用或旁路掉特定流水線元件(如果將不使用那些元件的話)。在一些實施例中,3d圖元932命令用于提交待由3d流水線處理的3d圖元。經(jīng)由3d圖元932命令被傳遞至圖形處理器的命令和相關(guān)聯(lián)的參數(shù)被轉(zhuǎn)發(fā)至圖形流水線中的頂點拾取函數(shù)中。所述頂點拾取函數(shù)使用3d圖元932命令數(shù)據(jù)來生成頂點數(shù)據(jù)結(jié)構(gòu)。所述頂點數(shù)據(jù)結(jié)構(gòu)存儲在一個或多個返回緩沖器中。在一些實施例中,3d圖元932命令用于經(jīng)由頂點著色器對3d圖元執(zhí)行頂點操作。為了處理頂點著色器,3d流水線922將著色器執(zhí)行線程分派至圖形處理器執(zhí)行單元。在一些實施例中,經(jīng)由執(zhí)行934命令或事件觸發(fā)3d流水線922。在一些實施例中,寄存器寫入觸發(fā)命令執(zhí)行。在一些實施例中,經(jīng)由命令序列中的‘go’或‘kick’命令來觸發(fā)執(zhí)行。在一個實施例中,使用流水線同步命令來觸發(fā)命令執(zhí)行以便通過圖形流水線沖刷命令序列。3d流水線將針對3d圖元來執(zhí)行幾何處理。一旦完成操作,則對所產(chǎn)生的幾何對象進行柵格化,并且像素引擎對所產(chǎn)生的像素進行著色。針對那些操作,還可以包括用于控制像素著色和像素后端操作的附加命令。在一些實施例中,當(dāng)執(zhí)行媒體操作時,樣本命令序列910跟隨在媒體流水線924路徑之后。通常,針對媒體流水線924進行編程的具體用途和方式取決于待執(zhí)行的媒體或計算操作。在媒體解碼過程中,具體的媒體解碼操作可以卸載至所述媒體流水線。在一些實施例中,還可對媒體流水線進行旁路,并且可使用由一個或多個通用處理核提供的資源來整體地或部分地執(zhí)行媒體解碼。在一個實施例中,媒體流水線還包括用于通用圖形處理器單元(gpgpu)操作的元件,其中,所述圖形處理器用于使用計算著色器程序來執(zhí)行simd向量運算,所述計算著色器程序與渲染圖形圖元不是明確相關(guān)的。在一些實施例中,以與3d流水線922相似的方式對媒體流水線924進行配置。媒體流水線狀態(tài)命令940的集合在所述媒體對象命令942之前被分派或放置于命令隊列中。在一些實施例中,媒體流水線狀態(tài)命令940包括用于配置媒體流水線元件的數(shù)據(jù),所述媒體流水線元件將用于處理媒體對象。這包括用于在媒體流水線內(nèi)配置視頻解碼和視頻編碼邏輯的數(shù)據(jù),諸如編碼或解碼格式。在一些實施例中,媒體流水線狀態(tài)命令940還支持將一個或多個指針用于包含一批狀態(tài)設(shè)置的“間接”狀態(tài)元件。在一些實施例中,媒體對象命令942將指針供應(yīng)至媒體對象以用于由媒體流水線進行處理。媒體對象包括存儲器緩沖器,所述存儲器緩沖器包含待處理的視頻數(shù)據(jù)。在一些實施例中,在下發(fā)媒體對象命令942之前,所有的媒體流水線狀態(tài)必須是有效的。一旦流水線狀態(tài)被配置并且媒體對象命令942被排隊,則經(jīng)由執(zhí)行944命令或等效的執(zhí)行事件(例如,寄存器寫入)來觸發(fā)媒體流水線924。然后可以通過由3d流水線922或媒體流水線924提供的操作對來自媒體流水線924的輸出進行后處理。在一些實施例中,以與媒體操作類似的方式來配置和執(zhí)行g(shù)pgpu操作。圖形軟件結(jié)構(gòu)圖10展示了根據(jù)一些實施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu)1000。在一些實施例中,軟件架構(gòu)包括3d圖形應(yīng)用1010、操作系統(tǒng)1020、以及至少一個處理器1030。在一些實施例中,處理器1030包括圖形處理器1032以及一個或多個通用處理器核1034。圖形應(yīng)用1010和操作系統(tǒng)1020各自在數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲器1050中執(zhí)行。在一些實施例中,3d圖形應(yīng)用1010包含一個或多個著色器程序,所述一個或多個著色器程序包括著色器指令1012。著色器語言指令可以采用高級著色器語言,諸如高級著色器語言(hlsl)或opengl著色器語言(glsl)。所述應(yīng)用還包括可執(zhí)行指令1014,所述可執(zhí)行指令采用適合用于由通用處理器核1034執(zhí)行的機器語言。所述應(yīng)用還包括由頂點數(shù)據(jù)限定的圖形對象1016。在一些實施例中,操作系統(tǒng)1020可以是來自微軟公司的操作系統(tǒng)、專用unix式操作系統(tǒng)、或使用linux內(nèi)核變體的開源unix式操作系統(tǒng)。當(dāng)在使用direct3dapi時,操作系統(tǒng)1020使用前端著色器編譯器1024以便將采用hlsl的任何著色器指令1012編譯成低級著色器語言。所述編譯可以是即時(jit)編譯,或者所述應(yīng)用可執(zhí)行著色器預(yù)編譯。在一些實施例中,在對3d圖形應(yīng)用1010進行編譯的過程中,將高級著色器編譯成低級著色器。在一些實施例中,用戶模式圖形驅(qū)動器1026包含后端著色器編譯器1027,所述后端著色器編譯器用于將著色器指令1012變換成硬件專用的表示。當(dāng)在使用openglapi時,將采用glsl高級語言的著色器指令1012傳遞至用戶模式圖形驅(qū)動器1026以用于編譯。在一些實施例中,用戶模式圖形驅(qū)動器1026使用操作系統(tǒng)內(nèi)核模式功能1028來與內(nèi)核模式圖形驅(qū)動器1029進行通信。在一些實施例中,內(nèi)核模式圖形驅(qū)動器1029與圖形處理器1032進行通信以便分派命令和指令。用于高吞吐量柵格器的裝置和方法可以在圖形流水線的柵格器內(nèi)實現(xiàn)本發(fā)明的實施例。圖11展示了示例性圖形架構(gòu),所述示例性圖形架構(gòu)包括渲染輸出流水線1170內(nèi)的高吞吐量柵格器1100以用于實現(xiàn)以下所述的技術(shù)。圖11中示出的圖形處理器架構(gòu)的其他部件包括圖形流水線820、媒體流水線830、顯示引擎840、以及線程執(zhí)行邏輯850,以上相對于圖8描述了這些部件的實施例。然而,應(yīng)當(dāng)注意的是,本發(fā)明的基本原則不限于任何特定的圖形處理器架構(gòu)。如以上所提及的,柵格化是gpu的重要任務(wù),在所述gpu中,采用向量圖形格式描述的圖像被轉(zhuǎn)換成柵格器圖像(例如,像素)以用于輸出到顯示設(shè)備上。柵格化通常需要確定圖元的一列點亮樣本,這是必須高效完成以消耗最小電量的周期性任務(wù)。圖形技術(shù)(諸如多樣本抗混疊(msaa))需要處理相當(dāng)大量的圖形數(shù)據(jù),而不會影響渲染時間。技術(shù)已經(jīng)應(yīng)用于此問題,但是貫穿可用的技術(shù),使用當(dāng)前的解決方案不足以支持當(dāng)前和未來的需要。在操作中,為了產(chǎn)生最終樣本掩模,將圖元分割為不同的邊緣。通過示例的方式,圖12示出了可以如何將三角形圖元1200分割為三條邊緣1201-1203。可以獨立地計算每條邊緣1201-1203,并且然后可以將結(jié)果進行合并以便產(chǎn)生最終掩模。如在此使用的,定界框(boundingbox)1205包括包含整個圖元1200的區(qū)域(即定界框外部的像素不包括圖元的任何部分)。通過另一示例的方式,圖13示出了可以如何將寬線圖元1300分割為四個不同的邊緣1301-1304。再次,通常獨立地計算每條邊緣1301-1304,之后將結(jié)果進行合并以便產(chǎn)生所述掩模。在圖12至圖13中的具體示例中并且在以下所描述的特定實施例中,在16×16塊內(nèi)對所述圖元和結(jié)果進行編碼。然而,本發(fā)明的基本原則不限于任何特定的塊大小。在一個實施例中,為了判定樣本是在圖元的內(nèi)部(“點亮”)還是外部(“未點亮”),使用以下等式:l0(x,y)=lo16x16+δlx+δly≥0。其中,lo16x16是當(dāng)前的16×16像素塊的中心的lo值,并且δlx和δly限定了從所述16×16塊的中心到所述樣本的距離(分別使用x坐標(biāo)和y坐標(biāo))。在一個實施例中,如果lo(x,y)為零或為正,則點亮所述樣本,并且如果其為負(fù),則不點亮所述樣本?,F(xiàn)有解決方案使用諸如圖14中示出的分治方式,其采用16×16像素塊1400并且在“超跨度”階段1401內(nèi)將其分割為8×8個塊。每個8×8塊在“跨度”階段1402內(nèi)進一步被分割為四個4×4塊,并且每個4×4塊在“子跨度”階段1403內(nèi)被分割為四個2×2塊。最終像素階段1404然后生成掩模1405。此方式的一個限制是其不易于擴展并且這樣遭受吞吐量問題。相較而言,以下所述的本發(fā)明的實施例使用并行方式并且同時計算所有的4×4塊(有時被稱為“跨度”)。這可以例如僅通過計算部分的4×4塊來完成。具體地,如果4×4塊內(nèi)的所有樣本被點亮(塊是“完全覆蓋的”)或者如果所有樣本未被點亮(塊是“空白的”),則忽略這些跨度。由于完全點亮的塊和空白塊不是邊緣的成因,因此這可以完成。此并行方式比本領(lǐng)域?qū)崿F(xiàn)方式更是可擴展的,因為可添加更多的跨度計算器。本發(fā)明的一個實施例采用跨度渲染方案來提高當(dāng)前窗口器吞吐量和功率管理。高吞吐量柵格器確定并行輸入的16×16個像素的所有16個跨度(4×4像素塊)的狀態(tài)。在此第一操作之后,柵格器確定部分跨度(一些樣本被點亮并且一些樣本未被點亮)、完全覆蓋跨度(所有的樣本被點亮)、以及空白跨度(沒有樣本被點亮)。由于完全覆蓋的和空白的跨度輸出值是已知的,因此然后將后續(xù)處理階段集中到部分跨度輸出值上,所述部分跨度輸出值用于確定圖元邊緣。在一個實施例中,每邊緣可能具有高達7個部分跨度。如以上所提及的,邊緣的數(shù)量取決于圖元(例如,三角形=3,矩形=4)。柵格器可以支持不同的msaa,包括1x、2x、4x、8x和16x。一個實施例的電路能夠計算256個樣本/時鐘?;谒鰉saa以及部分和完全覆蓋的跨度的列表,柵格器確定點亮和未點亮樣本的列表。在本發(fā)明的一個實施例中,窗口器僅分析部分跨度并且以并行方式進行。圖15展示了本發(fā)明的一個實施例的框圖。第一階段包括一組跨度選擇模塊1500-1503,所述一組跨度選擇模塊用于針對每條邊緣選擇一組不同的跨度。例如,跨度選擇模塊1500針對邊緣0選擇跨度;跨度選擇模塊1501針對邊緣1選擇跨度;跨度選擇模塊1502針對邊緣2選擇跨度;并且跨度選擇模塊1503針對邊緣3選擇跨度。在一個實施例中,每個跨度選擇模塊1500-1503選擇具有點亮和未點亮樣本兩者的所述組的部分跨度(例如,忽略完全點亮的跨度和空白的跨度)。在一個實施例中,所述跨度選擇模塊1500-1503并行評估所有的4×4跨度。一旦所述跨度選擇模塊1500-1503已經(jīng)選擇了所述跨度,則針對每條邊緣的跨度被分別傳遞至邊緣確定模塊1510-1513,所述邊緣確定模塊確定每條邊緣并且針對每條邊緣生成掩模。例如,邊緣確定模塊1510確定邊緣0并且生成掩模0;邊緣確定模塊1511確定邊緣1并且生成掩模1;邊緣確定模塊1512確定邊緣2并且生成掩模2;并且邊緣確定模塊1513確定邊緣3(如果存在邊緣3的話)并且生成掩模3。在一個實施例中,每條邊緣確定模塊1510-1513每時鐘在高達16跨度×16像素(256個樣本)上進行操作以便確定每條邊緣的位置。在一個實施例中,掩模確定模塊1510-1513可以實現(xiàn)不同的msaa技術(shù),包括1x、2x、4x、8x和16x(其中的每一個針對每條邊緣可能需要不同數(shù)量的像素)?;谒鰉saa以及部分和完全覆蓋的跨度的列表,邊緣確定模塊1510-1513確定針對每條邊緣的點亮和未點亮樣本的列表。最終掩模確定模塊1520然后在最后階段對所有掩模進行合并以便獲得最終掩模,在所述最終掩模中,所有的邊緣已經(jīng)被標(biāo)識(即其中,圖元的點亮樣本中的所有樣本是已知的)。以上所述的新技術(shù)使用7個流水線階段來產(chǎn)生最終掩模,而現(xiàn)有的算法需要21個流水線階段。表1示出了舊技術(shù)與新技術(shù)之間的性能上的提升,對使用每個msaa而處理的每時鐘像素進行高亮。所述表展示了針對一些情況新技術(shù)產(chǎn)生了64x提升。表1相對于功率使用,以下表2中展示了對16×16、8×8、和4×4像素的分布。16×16中的僅5%是空白或完全覆蓋的。在16×16部分中,8×8中的55%是部分的,并且然后在部分8×8中,4×4中的51%是部分的。這意味著平均三角形將具有部分16×16,然后將具有2個部分的8×8,并且在部分的8×8中的每個中將具有2個部分的4×4。平均來說,將具有4次迭代以便產(chǎn)生4×4結(jié)果?;诒?,不同階段的用途為:在時間的94%使用16×16,然后在時間的55%使用8×8并且在時間的51%使用4×4。16×168×84×4像素空白/完全5.15%44.24%48.27%89.32%部分94.85%55.76%51.73%10.68%1邊緣94.85%55.76%51.73%10.68%2邊緣82.39%51.44%49.43%10.58%3邊緣12.46%4.31%2.31%0.10%表2表3展示了使用在此描述的新并行技術(shù)的結(jié)果。其對所有的164×4跨度進行評估以便查看是否它們是完全覆蓋的、部分覆蓋的或者是空白的。完全覆蓋的情況和空白情況不需要進一步計算,并且掩模是已知的。僅部分的4×4需要更多的計算。表3示出了4×4跨度的平均分布;其使用表2的相同輸入。表3示出了4×4的72%中掩模是已知的;將需要10%來計算兩條邊緣;并且將僅需要1.2%來計算3條邊緣。因此,邊緣1在時間的28%上,邊緣2在10%上,并且邊緣3僅在時間的1.2%上。16×164×4空白/完全5.15%72.64%部分94.85%27.36%1邊緣94.85%27.36%2邊緣63.39%10.16%3邊緣12.46%1.22%表3圖16展示了包括以上所述的跨度選擇模塊1500-1503和邊緣確定模塊1510-1513的本發(fā)明的一個實施例的附加細節(jié)。此外,定界框邏輯1605包含定界框矩形的信息,所述定界框矩形包含圖元;定界框外部的任何事物均是空白的(圖12和圖13中分別展示了示例性定界框1205、1305)。在一個實施例中,定界框邏輯1605確定在定界框外部的并且將其標(biāo)記為空白的跨度??缍冗x擇模塊1500-1503確定部分的、空白的以及完全覆蓋跨度。在一個實施例中,它們使用相同的等式:lo(x,y)=lo16x16+δlx+δly≥0。在一個實施例中,跨度選擇模塊1500-1503檢查4×4跨度的4個拐角并且使用對稱性來減少柵格化所需的比較點亮的數(shù)量。跨度、邊緣和msaa控制邏輯1600實現(xiàn)跨度/像素中心計算器1602,所述跨度/像素中心計算器計算nlx+mly的值,并且模塊1606根據(jù)限定的msaa確定lo16x16+lo4x4+nlx+mly的值。模塊1606的輸出用于控制邊緣確定模塊1510-1513中的每條邊緣確定模塊。圖17展示了對稱性,所述對稱性存在于16×16塊中并且用于在本發(fā)明的一個實施例中提高效率。具體地,由于lo值之間的以下已知等式,每邊緣僅需要12個比較器以便評估整個16×16:lo0=-lo24=-8lx-8lylo1=-lo23=-4lx-8lylo2=-lo22=-8lylo3=-lo21=4lx-8lylo4=-lo20=8lx-8lylo5=-lo19=-8lx-4lylo6=-lo18=lo0/2lo7=-lo17=-4lylo8=-lo16=-lo4/2lo9=-lo15=8lx-4lylo10==-lo14=-8lxlo11=-lo13=-4lxl012=0因此,針對lo0和-lo24兩者,lo(x,y)=lo16x16-8lx-8ly≥0。-8lx和8ly的值可以為正或為負(fù)。如果兩者均為正,則點亮拐角,并且如果兩者均為負(fù),則不點亮拐角,并且無需進行比較。但是,互補拐角將具有不同的符號,并且這兩個值需要進行比較。這減少了一半的比較次數(shù)。然后,在一個實施例中,為了計算特定樣本的lo,等式為:lo(x,y)=lo16x16+lo4x4+δlmsaa+δlo像素>0。其中,lo16x16是塊的輸入并且是16×16塊的中心的lo值。lo4x4值是從16×16中心到4×4中心的lo。lo像素值是從4×4中心到像素中心的lo。lmsaa值是從像素中心到樣本的距離。圖18a至圖18b展示了用于執(zhí)行上述計算的電路的附加細節(jié)。具體地,電路塊1801執(zhí)行多次加法和乘法操作以得到nlx+mly的值。第一組加法器1802然后將這些結(jié)果與lo16x16相加以得到結(jié)果:lo16x16+nlx+mly。第二組加法器1803然后將這些結(jié)果與lo4x4相加以得到結(jié)果:lo16x16+lo4x4+nlx+mly。一組64計算器1804然后執(zhí)行與這些結(jié)果和lo像素值(lx+ly、lx+3ly、3lx+ly、lx-ly、lx-3ly、3lx-ly)之一進行比較以便判定lo16x16+lo4x4+lo像素+nlx+mly是否>0。圖19示出了lo4x4對稱性,所述對稱性用于減少計算全部16個值所需的乘法次數(shù)。具體地,由于對稱性,可以利用以下等式(其中,相對于lo16x16,lo4x4-i為4×4中心lo):lo4x4-o=-lo4x4-15=-6lx-6lylo4x4-1=-lo4x4-14=-2lx-6lylo4x4-2=-lo4x4-13=-6ly-2lylo4x4-3=-lo4x4-12=l4x4-o/2lo4x4-4=-lo4x4-11=2lx-6lylo4x4-5=-lo4x4-10=6lx-6lylo4x4-6=-lo4x4-9==l4x4-5/2lo4x4-7=-lo4x4-8=-6lx-2ly圖20示出了另一特性,所述特性為lo像素=lo4x4/4。圖18a展示了如何將這些值用于lo像素以作為到計算器1804的輸入。此外,這些值可以用于到等式lo16x16+δlo4x4+δlmsaa>δl0像素的加法器的輸入。用于第一階段中以便計算部分跨度的相同對稱性特性可以用于將比較器的數(shù)量降至8個。因此,圖18a展示了僅8列比較器1804可以用于得出16個像素值。注意的是,雖然圖18a中展示了64比較器1804,但是一組8比較器可以相繼使用8次以便執(zhí)行在此描述的計算。在一個實施例中,最終掩模計算塊1805執(zhí)行到全部輸出的邏輯與,并且生成可以存儲在如圖18a中所展示的寄存器1806中的最終掩模。圖21中展示了根據(jù)本發(fā)明的一個實施例的方法??梢越柚陨纤龅募軜?gòu)的上下文來實現(xiàn)所述方法,但不限于任何特定的架構(gòu)。在2101處,基于具有在圖元的內(nèi)部和外部兩者的樣本的像素塊來選擇與所述圖元的邊緣相關(guān)聯(lián)的多個像素塊。如以上所提及的,例如,在一個實施例中,可以標(biāo)識和忽略完全覆蓋的且空白的4×4跨度。在2102處,對每個所選擇的多個像素塊內(nèi)的樣本進行分析以便生成對所述圖元的每條邊緣進行標(biāo)識的數(shù)據(jù)。在以上所述的實施例中,例如,可以由邊緣確定邏輯1510-1513來確定每條邊緣的具體位置。最終,在2103處,對針對所述圖元的每條邊緣而確定的邊緣數(shù)據(jù)進行組合,并且生成表示所述圖元的最終掩模。本發(fā)明的實施例可以包括以上已經(jīng)描述的各步驟。這些步驟可以被具體化為機器可執(zhí)行指令,所述機器可執(zhí)行指令可以用于使通用或?qū)S锰幚砥鲌?zhí)行這些步驟??商娲?,這些步驟可以由包含用于執(zhí)行這些步驟的硬接線邏輯的特定硬件部件來執(zhí)行,或者由程序化計算機部件和自定義硬件部件的任意組合來執(zhí)行。如在此描述的,指令可以指硬件(諸如專用集成電路(asic))的特定配置,所述專用集成電路被配置成用于執(zhí)行某些操作或者具有預(yù)定功能或存儲在被具體化為非瞬態(tài)計算機可讀介質(zhì)的存儲器中的軟件指令。因此,可使用在一個或多個存儲設(shè)備(例如,端站、網(wǎng)絡(luò)元件等)上存儲并執(zhí)行的代碼和數(shù)據(jù)來實現(xiàn)附圖中示出的技術(shù)。這種電子設(shè)備使用計算機機器可讀介質(zhì)來存儲和傳送(在內(nèi)部和/或利用網(wǎng)絡(luò)上的其他電子設(shè)備)代碼和數(shù)據(jù),諸如非瞬態(tài)計算機機器可讀存儲介質(zhì)(例如,磁盤;光盤;隨機存取存儲器;只讀存儲器;閃存設(shè)備;相變存儲器)以及瞬態(tài)計算機機器可讀通信介質(zhì)(例如,電氣、光學(xué)、聲學(xué)或其他形式的傳播信號-諸如載波、紅外信號、數(shù)字信號等)。此外,這種電子設(shè)備典型地包括耦合至一個或多個其他部件的一組一個或多個處理器,諸如一個或多個存儲設(shè)備(非瞬態(tài)機器可讀存儲介質(zhì))、用戶輸入/輸出設(shè)備(例如,鍵盤、觸摸屏、和/或顯示器)、以及網(wǎng)絡(luò)連接。所述組的處理器與其他部件的耦合典型地是通過一個或多個總線和橋(亦被稱為總線控制器)。承載網(wǎng)絡(luò)通信量的存儲設(shè)備和信號分別表示一個或多個機器可讀存儲介質(zhì)和機器可讀通信介質(zhì)。因此,給定電子設(shè)備的存儲設(shè)備典型地存儲用于在那個電子設(shè)備的所述組的一個或多個處理器上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,可以使用軟件、固件、和/或硬件的不同組合來實現(xiàn)本發(fā)明的實施例的一個或多個部分。貫穿本詳細描述,出于解釋的目的,闡述了大量的具體細節(jié)以便提供對本發(fā)明的透徹理解。然而,對于本領(lǐng)域技術(shù)人員而言將明顯的是,可以在沒有這些特定細節(jié)中的一些的情況下實踐本發(fā)明。在某些實例中,未詳細描述公知結(jié)構(gòu)和功能以避免模糊本發(fā)明的主題。從而,本發(fā)明的范圍和精神應(yīng)根據(jù)以下權(quán)利要求來判定。當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1